Skip to content

Commit ead0a1e

Browse files
authored
Add Awards & Honors page with timeline layout (#373)
1 parent bba181f commit ead0a1e

File tree

5 files changed

+309
-1
lines changed

5 files changed

+309
-1
lines changed

_config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,13 @@ theme_config:
206206
Research: /research || fa fa-code
207207
Publications: /publications || fa fa-book
208208
People: /people || fa fa-user
209+
Awards: /awards || fa fa-trophy
209210
Funding: /funding || fa fa-info
210211
#tags: /tags/ || fa fa-tags
211212
Open Source: /open-source || fab fa-github-alt
212213
#GitHub: https://github.com/SymbioticLab || fab fa-github-alt
213214
# Wiki: https://symbiotic.eecs.umich.edu/wiki || fab fa-wikipedia-w
214-
Join Us: https://forms.gle/L3Syau9dBzi8eLxQ7 || fa fa-user-plus
215+
#Join Us: https://forms.gle/L3Syau9dBzi8eLxQ7 || fa fa-user-plus
215216
# Collaboration: https://docs.google.com/document/d/1mVPqfnqLz_CXVz8XyDLcB1BIlUyezY2A-t5mV33JZHw/edit?usp=sharing || fa fa-user-plus
216217

217218
# Enable / Disable menu icons / item badges.

custom/layouts/awards.njk

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
{% extends '_layout.njk' %}
2+
{% import '_macro/sidebar.njk' as sidebar_template with context %}
3+
4+
{% block title %}{{ page.title }}{% endblock %}
5+
6+
{% block class %}archive posts-collapse{% endblock %}
7+
8+
{% block content %}
9+
10+
<style>
11+
.award-list {
12+
line-height: 1.5;
13+
}
14+
15+
.award-list section.year {
16+
position: relative;
17+
padding: 1em 0em 0em 0em;
18+
margin-left: 3.5em;
19+
display: flex;
20+
align-items: flex-start;
21+
}
22+
23+
/* The vertical line */
24+
.award-list section.year ul li {
25+
position: relative;
26+
}
27+
.award-list section.year ul li::before {
28+
content: ' ';
29+
background: rgba(.3, .3, .3, .3);
30+
z-index: -1;
31+
position: absolute;
32+
left: calc(-2em + -2px);
33+
width: 2px;
34+
top: -1px;
35+
bottom: 0px;
36+
}
37+
.award-list section.year ul li:first-child::before {
38+
top: calc(-1em + -1px);
39+
}
40+
.award-list section.year ul li:first-child ~ li::before {
41+
top: -1px;
42+
}
43+
.award-list section.year:last-child ul li:last-child::before {
44+
background: linear-gradient(to bottom, rgba(.3, .3, .3, .3) 60%, rgba(.3, .3, .3, 0));
45+
}
46+
47+
/* The circle and year */
48+
.award-list .year-mark-wrapper {
49+
display: flex;
50+
align-items: center;
51+
width: 0px;
52+
position: sticky;
53+
top: 5em;
54+
}
55+
.award-list .year-mark-wrapper::before {
56+
content: "A";
57+
width: 0px;
58+
visibility: hidden;
59+
}
60+
.award-list .year-mark {
61+
position: relative;
62+
left: -8px;
63+
display: flex;
64+
flex-direction: row;
65+
align-items: center;
66+
justify-content: flex-end;
67+
width: 10px;
68+
height: 10px;
69+
background: #C5C5C5;
70+
border: 2px solid #ffffff;
71+
border-radius: 10px;
72+
z-index: 2;
73+
}
74+
.award-list .year-mark::before {
75+
content: attr(data-year);
76+
font-size: 1rem;
77+
font-weight: bold;
78+
margin-right: 1em;
79+
}
80+
@media (min-width: 62em) {
81+
.award-list .year-mark::before {
82+
font-size: 1.1rem;
83+
}
84+
}
85+
86+
/* The styling of the list */
87+
.award-list section.year ul {
88+
padding: 0 0 0 2em;
89+
margin: 0em;
90+
font-size: 1em;
91+
width: 100%;
92+
}
93+
.award-list section.year ul li {
94+
list-style-type: none;
95+
padding: 0.6rem 0rem 0.8rem 0rem;
96+
border-bottom: 1px dashed #ccc;
97+
}
98+
.award-list section.year ul li:first-child {
99+
padding-top: 0rem;
100+
}
101+
.award-list section.year:last-child ul li:last-child {
102+
border-bottom: none;
103+
}
104+
105+
/* Award-specific content styling */
106+
.award-title {
107+
font-weight: 600;
108+
}
109+
.award-detail {
110+
font-size: 0.9em;
111+
color: #666;
112+
margin: 2px 0;
113+
}
114+
</style>
115+
116+
<h1>Awards & Honors</h1>
117+
118+
<div class="award-list">
119+
{% for group in page.awards %}
120+
<section class="year">
121+
<div class="year-mark-wrapper">
122+
<span class="year-mark" data-year="{{ group.year }}"></span>
123+
</div>
124+
<ul>
125+
{% for award in group.items %}
126+
<li>
127+
<div class="award-title">{{ award.title }}</div>
128+
{% if award.description %}
129+
<div class="award-detail">{{ award.description }}</div>
130+
{% endif %}
131+
{% if award.recipient %}
132+
<div class="award-detail">{{ award.recipient }}</div>
133+
{% endif %}
134+
</li>
135+
{% endfor %}
136+
</ul>
137+
</section>
138+
{% endfor %}
139+
</div>
140+
141+
{% endblock %}

scripts/awards.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
'use strict';
2+
3+
const path = require('path');
4+
const fs = require('fs');
5+
const yaml = require('js-yaml');
6+
7+
hexo.extend.filter.register('before_post_render', function (data) {
8+
if (data.layout !== 'awards') return data;
9+
10+
const awardsFile = path.join(path.dirname(data.full_source), 'awards.yml');
11+
if (!fs.existsSync(awardsFile)) return data;
12+
13+
const raw = yaml.load(fs.readFileSync(awardsFile, 'utf8'));
14+
15+
// Group flat list by year (descending)
16+
const byYear = {};
17+
raw.forEach(function (item) {
18+
if (!byYear[item.year]) byYear[item.year] = [];
19+
byYear[item.year].push(item);
20+
});
21+
data.awards = Object.keys(byYear)
22+
.sort(function (a, b) { return b - a; })
23+
.map(function (y) { return { year: y, items: byYear[y] }; });
24+
25+
return data;
26+
});

source/awards/awards.yml

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
- year: 2026
2+
title: Rackham Predoctoral Fellowship
3+
recipient: Jae-Won Chung
4+
5+
- year: 2026
6+
title: Arlen R. Hellwarth Award
7+
recipient: David McDermott
8+
9+
- year: 2026
10+
title: CoE Distinguished Academic Achievement Undergraduate Award
11+
recipient: David McDermott
12+
13+
- year: 2026
14+
title: EECS Outstanding Academic Achievement Award
15+
recipient: David McDermott
16+
17+
- year: 2025
18+
title: Laude Slingshot Award
19+
recipient: Zeus
20+
21+
- year: 2025
22+
title: GitHub Secure Open Source Fund
23+
recipient: Zeus
24+
25+
- year: 2025
26+
title: David Dewitt Undergraduate Scholarship
27+
recipient: Wenxuan Tan
28+
29+
- year: 2025
30+
title: David E. Liddle Research Excellence Award
31+
recipient: Mosharaf Chowdhury
32+
33+
- year: 2024
34+
title: Dennis M. Ritchie Doctoral Dissertation Award, Honorable Mention
35+
recipient: Fan Lai
36+
37+
- year: 2024
38+
title: UM CSE DEI Service Award
39+
recipient: Jiachen Liu
40+
41+
- year: 2024
42+
title: Mozilla Technology Fund AI and Environmental Justice Award
43+
recipient: Zeus
44+
45+
- year: 2024
46+
title: IEEE MICRO Top Picks, Honorable Mention
47+
description: "TPP: Transparent Page Placement for CXL-Enabled Tiered-Memory"
48+
recipient: Hasan Al Maruf, Hao Wang, Abhishek Dhanotia, Johannes Weiner, Niket Agarwal, Pallab Bhattacharya, Chris Petersen, Mosharaf Chowdhury, Shobhit Kanaujia, Prakash Chauhan
49+
50+
- year: 2023
51+
title: David J. Kuck CSE Dissertation Prize
52+
recipient: Fan Lai
53+
54+
- year: 2023
55+
title: Google Research Scholar Award
56+
recipient: Mosharaf Chowdhury
57+
58+
- year: 2023
59+
title: Richard and Eleanor Towner Prize
60+
recipient: Fan Lai
61+
62+
- year: 2023
63+
title: Machine Learning and Systems Rising Stars
64+
recipient: Fan Lai
65+
66+
- year: 2023
67+
title: Machine Learning and Systems Rising Stars
68+
recipient: Jiachen Liu
69+
70+
- year: 2022
71+
title: Meta Systems Research Award
72+
recipient: Mosharaf Chowdhury
73+
74+
- year: 2022
75+
title: Meta Networking Research Award
76+
recipient: Mosharaf Chowdhury
77+
78+
- year: 2022
79+
title: IEEE Access Featured Article
80+
description: "The Internet of Federated Things (IoFT)"
81+
recipient: Raed Kontar, Naichen Shi, Xubo Yue, Seokhyun Chung, Eunshin Byon, Mosharaf Chowdhury, Judy Jin, Wissam Kontar, Neda Masoud, Maher Noueihed, Chinedum E. Okwudire, Garvesh Raskutti, Romesh Saigal, Karandeep Singh, Zhisheng Ye
82+
83+
- year: 2022
84+
title: "Carbon Hack 22, Runner-up"
85+
recipient: Zeus
86+
87+
- year: 2022
88+
title: Meta Ph.D. Fellowship, Finalist
89+
recipient: Fan Lai
90+
91+
- year: 2022
92+
title: Meta Ph.D. Fellowship, Finalist
93+
recipient: Hasan Al Maruf
94+
95+
- year: 2021
96+
title: ACM SOSP ResilientFL Best Paper Award
97+
description: "FedScale: Benchmarking Model and System Performance of Federated Learning"
98+
recipient: Fan Lai, Yinwei Dai, Xiangfeng Zhu, Mosharaf Chowdhury
99+
100+
- year: 2021
101+
title: USENIX OSDI Distinguished Artifact Award
102+
description: "Oort: Efficient Federated Learning via Guided Participant Selection"
103+
recipient: Fan Lai, Xiangfeng Zhu, Harsha V. Madhyastha, Mosharaf Chowdhury
104+
105+
- year: 2021
106+
title: Morris Wellman Faculty Development Professorship
107+
recipient: Mosharaf Chowdhury
108+
109+
- year: 2020
110+
title: USENIX ATC Best Paper Award
111+
description: "Effectively Prefetching Remote Memory with Leap"
112+
recipient: Hasan Al Maruf, Mosharaf Chowdhury
113+
114+
- year: 2019
115+
title: NSF CAREER Award
116+
recipient: Mosharaf Chowdhury
117+
118+
- year: 2019
119+
title: VMware Early Career Faculty Award
120+
recipient: Mosharaf Chowdhury
121+
122+
- year: 2018
123+
title: ACM SIGMOD GRADES-NDA Best Paper Award
124+
description: "Bridging the GAP: Towards Approximate Graph Analytics"
125+
recipient: Anand Padmanabha Iyer, Aurojit Panda, Shivaram Venkataraman, Mosharaf Chowdhury, Aditya Akella, Scott Shenker, Ion Stoica
126+
127+
- year: 2017
128+
title: NSF Graduate Research Fellowship
129+
recipient: Jack Kosaian
130+
131+
- year: 2016
132+
title: Google Faculty Research Award
133+
recipient: Mosharaf Chowdhury

source/awards/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: Awards & Honors
3+
layout: awards
4+
date: 2026-03-18 12:00:00
5+
excerpt: "Selected awards & honors"
6+
---
7+

0 commit comments

Comments
 (0)