Skip to content

Commit 04e19ed

Browse files
jeremymanningclaude
andcommitted
sort undergrad alumni by start year (reverse chronological)
Alumni are now sorted by start year descending to match CV order, with alphabetical secondary sort within each year. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 17c9b96 commit 04e19ed

2 files changed

Lines changed: 102 additions & 69 deletions

File tree

people.html

Lines changed: 68 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -252,119 +252,119 @@ <h3>Lab Managers</h3>
252252
<div>
253253
<h3>Undergraduate Researchers</h3>
254254
<p class="alumni-list">
255-
Chelsea Joe (2024-2026)<br>
256255
Annabelle Morrow (2025-2026)<br>
257256
Jackson C. Sandrich (2025-2026)<br>
258257
Luca Gandrud (2025-2026)<br>
259258
Owen Phillips (2025-2026)<br>
260259
Rodrigo Vega Ayllon (2025)<br>
260+
Abigayle McCusker (2024)<br>
261+
Andrew Cao (2024)<br>
262+
Ansh Motiani (2024)<br>
263+
Can Kam (2024)<br>
264+
Chelsea Joe (2024-2026)<br>
265+
Chloe Terestchenko (2024)<br>
266+
Everett Tai (2024)<br>
261267
Harrison Stropkay (2024-2025)<br>
262-
Jake McDermid (2023-2025)<br>
263-
Miel Wewerka (2024)<br>
268+
Kaitlyn Peng (2024)<br>
264269
Manraaj Singh (2024)<br>
265-
Can Kam (2024)<br>
270+
Miel Wewerka (2024)<br>
266271
Rohan Goyal (2024)<br>
267-
Abigayle McCusker (2024)<br>
268272
Torsha Chakraverty (2024)<br>
269-
Chloe Terestchenko (2024)<br>
270-
Ansh Motiani (2024)<br>
271-
Kaitlyn Peng (2024)<br>
272-
Everett Tai (2024)<br>
273-
Andrew Cao (2024)<br>
274-
Michael Chen (2023-2024)<br>
275-
Grady Redding (2023-2024)<br>
276-
DJ Matusz (2023-2024)<br>
277273
Aaryan Agarwal (2023-2024)<br>
278-
Maura Hough (2023-2024)<br>
279-
Emma Reeder (2023-2024)<br>
280-
Megan Liu (2023-2024)<br>
281-
Mira Chiruvolu (2023-2024)<br>
282-
Ansh Patel (2022-2024)<br>
283-
Kunal Jha (2021-2024)<br>
284-
Daniel Carstensen (2021-2024)<br>
285-
Safwan Rashid (2023)<br>
286-
Francisca Fadairo (2023)<br>
287274
Ameer Talha Yasser (2023)<br>
288-
Yue Zhuo (2023)<br>
289-
Charles Baker (2023)<br>
290275
Andrew Shi (2023)<br>
291276
Ash Chinta (2023)<br>
292-
Xueyao Zheng (2023)<br>
293-
Sergio Campos Legonia (2023)<br>
277+
Charles Baker (2023)<br>
278+
DJ Matusz (2023-2024)<br>
294279
Elias Emery (2023)<br>
295-
Yvonne Chen (2023)<br>
296-
William McCall (2023)<br>
280+
Emma Reeder (2023-2024)<br>
281+
Francisca Fadairo (2023)<br>
282+
Grace Wang (2023)<br>
283+
Grady Redding (2023-2024)<br>
284+
Jake McDermid (2023-2025)<br>
285+
Maura Hough (2023-2024)<br>
286+
Megan Liu (2023-2024)<br>
287+
Michael Chen (2023-2024)<br>
288+
Mira Chiruvolu (2023-2024)<br>
297289
Natalie Schreder (2023)<br>
298290
Raselas Dessalegn (2023)<br>
299-
Grace Wang (2023)<br>
300-
Ziyan Zhu (2022-2023)<br>
291+
Safwan Rashid (2023)<br>
292+
Sergio Campos Legonia (2023)<br>
293+
William McCall (2023)<br>
294+
Xueyao Zheng (2023)<br>
295+
Yue Zhuo (2023)<br>
296+
Yvonne Chen (2023)<br>
297+
Alexander Marcoux (2022)<br>
301298
Anna Mikhailova (2022)<br>
299+
Ansh Patel (2022-2024)<br>
302300
Benjamin Lehrburger (2022)<br>
303-
Thomas Corrado (2022)<br>
304-
Samuel Crombie (2022)<br>
305-
Alexander Marcoux (2022)<br>
301+
Dawson Haddox (2022)<br>
302+
Goutham Veeramachaneni (2022)<br>
306303
Jessna Brar (2022)<br>
307-
Wenhua Liang (2022)<br>
308304
Kevin Cao (2022)<br>
309-
Goutham Veeramachaneni (2022)<br>
310-
Zachary Somma (2022)<br>
311-
Dawson Haddox (2022)<br>
305+
Samuel Crombie (2022)<br>
312306
Swestha Jain (2022)<br>
313-
Brian Chiang (2021-2022)<br>
314-
Tyler Chen (2020-2022)<br>
315-
Chris Jun (2020-2022)<br>
316-
Ethan Adner (2020-2022)<br>
307+
Thomas Corrado (2022)<br>
308+
Wenhua Liang (2022)<br>
309+
Zachary Somma (2022)<br>
310+
Ziyan Zhu (2022-2023)<br>
317311
Aidan Adams (2021)<br>
312+
Brian Chiang (2021-2022)<br>
318313
Damini Kohli (2021)<br>
314+
Daniel Carstensen (2021-2024)<br>
319315
Daniel Ha (2021)<br>
320-
Darren Gu (2020-2021)<br>
321-
Tehut Biru (2020-2021)<br>
322-
Chris Suh (2020-2021)<br>
316+
Kunal Jha (2021-2024)<br>
317+
Austin Zhang (2020)<br>
318+
Chelsea Uddenberg (2020)<br>
319+
Chetan Palvuluri (2020)<br>
320+
Chris Jun (2020-2022)<br>
323321
Chris Long (2020-2021)<br>
322+
Chris Suh (2020-2021)<br>
323+
Darren Gu (2020-2021)<br>
324324
Esme Chen (2020-2021)<br>
325-
Tudor Muntianu (2019-2021)<br>
325+
Ethan Adner (2020-2022)<br>
326+
Greg Han (2020)<br>
326327
Helen Liu (2020)<br>
327328
Kelly Rutherford (2020)<br>
328329
Luca Lit (2020)<br>
329-
Vivian Tran (2020)<br>
330-
Greg Han (2020)<br>
331-
Austin Zhang (2020)<br>
332-
Chelsea Uddenberg (2020)<br>
333330
Shane Hewitt (2020)<br>
334-
Chetan Palvuluri (2020)<br>
331+
Tehut Biru (2020-2021)<br>
332+
Tyler Chen (2020-2022)<br>
333+
Vivian Tran (2020)<br>
335334
Aaron Lee (2019-2020)<br>
336335
Anne George (2019-2020)<br>
337336
Sarah Park (2019-2020)<br>
338337
Shane Park (2019-2020)<br>
338+
Tudor Muntianu (2019-2021)<br>
339339
William Chen (2019-2020)<br>
340340
Alejandro Martinez (2018-2020)<br>
341-
Madeline Lee (2016-2020)<br>
342-
William Baxley (2018-2019)<br>
343-
Paxton Fitzpatrick (2017-2019)<br>
344341
Ann Carpenter (2018)<br>
345-
Seung Ju Lee (2018)<br>
346-
Mustafa Nasir-Moin (2018)<br>
347-
Iain Sheerin (2018)<br>
348342
Darya Romanova (2018)<br>
349-
Rachael Chacko (2018)<br>
343+
Iain Sheerin (2018)<br>
350344
Kirsten Soh (2018)<br>
351-
Stephen Satterthwaite (2017-2018)<br>
345+
Mustafa Nasir-Moin (2018)<br>
346+
Rachael Chacko (2018)<br>
347+
Seung Ju Lee (2018)<br>
348+
William Baxley (2018-2019)<br>
349+
Armando Oritz (2017)<br>
352350
Bryan Bollinger (2017-2018)<br>
353-
Campbell Field (2016-2018)<br>
354351
Christina Lu (2017)<br>
355-
Armando Oritz (2017)<br>
356-
Wei Liang Samuel Ching (2016-2017)<br>
357-
Marisol Tracy (2016-2017)<br>
358-
Allison Frantz (2016-2017)<br>
352+
Paxton Fitzpatrick (2017-2019)<br>
353+
Stephen Satterthwaite (2017-2018)<br>
359354
Aamuktha Porika (2016-2017)<br>
360-
Jake Rost (2016)<br>
361-
Clara Silvanic (2016)<br>
355+
Allison Frantz (2016-2017)<br>
362356
Aman Agarwal (2016)<br>
357+
Campbell Field (2016-2018)<br>
358+
Clara Silvanic (2016)<br>
359+
Gal Perlman (2016)<br>
360+
Jake Rost (2016)<br>
361+
Jessica Tin (2016)<br>
363362
Joseph Finkelstein (2016)<br>
364-
Sheherzad Mohydin (2016)<br>
363+
Madeline Lee (2016-2020)<br>
364+
Marisol Tracy (2016-2017)<br>
365365
Peter Tran (2016)<br>
366-
Gal Perlman (2016)<br>
367-
Jessica Tin (2016)
366+
Sheherzad Mohydin (2016)<br>
367+
Wei Liang Samuel Ching (2016-2017)
368368
</p>
369369
</div>
370370
</div>

scripts/build_people.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,36 @@ def generate_undergrad_entry(alum: Dict[str, Any]) -> str:
326326
return f"{name}{paren_display}"
327327

328328

329+
def get_start_year(years_str: str) -> int:
330+
"""Extract start year from years string for sorting.
331+
332+
Args:
333+
years_str: Years string like '2024-2026', '2025', or '2023-2025'
334+
335+
Returns:
336+
Start year as integer (defaults to 0 if unparseable)
337+
"""
338+
if not years_str:
339+
return 0
340+
years_str = str(years_str).strip()
341+
# Handle "2024-2026" format - extract first year
342+
if "-" in years_str:
343+
try:
344+
return int(years_str.split("-")[0])
345+
except ValueError:
346+
return 0
347+
# Handle single year "2025"
348+
try:
349+
return int(years_str)
350+
except ValueError:
351+
return 0
352+
353+
329354
def generate_undergrad_list_content(alumni: List[Dict[str, Any]]) -> str:
330355
"""Generate HTML content for undergraduate alumni list.
331356
357+
Alumni are sorted by start year (descending), matching CV order.
358+
332359
Args:
333360
alumni: List of alumni dictionaries
334361
@@ -338,7 +365,13 @@ def generate_undergrad_list_content(alumni: List[Dict[str, Any]]) -> str:
338365
if not alumni:
339366
return ""
340367

341-
entries = [generate_undergrad_entry(a) for a in alumni]
368+
# Sort by start year descending (most recent first), then by name
369+
sorted_alumni = sorted(
370+
alumni,
371+
key=lambda a: (-get_start_year(a.get("years", "")), a.get("name", ""))
372+
)
373+
374+
entries = [generate_undergrad_entry(a) for a in sorted_alumni]
342375
return "<br>\n ".join(entries)
343376

344377

0 commit comments

Comments
 (0)