Skip to content

Commit 70c708f

Browse files
jeremymanningclaude
andcommitted
Sort all alumni lists in reverse chronological order by start year
Added _parse_start_year() helper and applied reverse chronological sorting to all alumni categories (postdocs, grads, managers, undergrads). Previously only undergrads were sorted (by CV order); now all categories are consistent. Undergrads use start year as primary sort with CV order as tiebreaker. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7549160 commit 70c708f

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

people.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,17 @@ <h3>Undergraduate Researchers</h3>
267267
<p class="alumni-list">
268268
Evan Mcdermid (2025-2026)<br>
269269
Andrew Richardson (2025-2026)<br>
270-
Jacob Bacus (2024-2026)<br>
271270
Kevin Chang (2025-2026)<br>
272271
Jackson C. Sandrich (2025-2026)<br>
273272
Luca Gandrud (2025-2026)<br>
274273
Annabelle Morrow (2025-2026)<br>
275274
Owen Phillips (2025-2026)<br>
276275
Rodrigo Vega Ayllon (2025)<br>
276+
Keene Dampal (2025)<br>
277+
Jaysen Quan (2025)<br>
278+
Joy Maina (2025)<br>
279+
Emmy Thornton (2025)<br>
280+
Jacob Bacus (2024-2026)<br>
277281
Chelsea Joe (2024-2026)<br>
278282
Harrison Stropkay (2024-2025)<br>
279283
Miel Wewerka (2024)<br>
@@ -287,6 +291,7 @@ <h3>Undergraduate Researchers</h3>
287291
Kaitlyn Peng (2024)<br>
288292
Everett Tai (2024)<br>
289293
Andrew Cao (2024)<br>
294+
Matthew Givens (2024-2025)<br>
290295
Jake McDermid (2023-2025)<br>
291296
Michael Chen (2023-2024)<br>
292297
Grady Redding (2023-2024)<br>
@@ -325,6 +330,7 @@ <h3>Undergraduate Researchers</h3>
325330
Zachary Somma (2022)<br>
326331
Dawson Haddox (2022)<br>
327332
Swestha Jain (2022)<br>
333+
Molly McQuoid (2022)<br>
328334
Kunal Jha (2021-2024)<br>
329335
Daniel Carstensen (2021-2024)<br>
330336
Brian Chiang (2021-2022)<br>
@@ -381,13 +387,7 @@ <h3>Undergraduate Researchers</h3>
381387
Sheherzad Mohydin (2016)<br>
382388
Peter Tran (2016)<br>
383389
Gal Perlman (2016)<br>
384-
Jessica Tin (2016)<br>
385-
Matthew Givens (2024-2025)<br>
386-
Keene Dampal (2025)<br>
387-
Jaysen Quan (2025)<br>
388-
Molly McQuoid (2022)<br>
389-
Joy Maina (2025)<br>
390-
Emmy Thornton (2025)
390+
Jessica Tin (2016)
391391
</p>
392392
</div>
393393
</div>

scripts/build_people.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,18 @@ def generate_alumni_entry(alum: Dict[str, Any]) -> str:
350350
return f"{name_display}{paren_display}"
351351

352352

353+
def _parse_start_year(years_str: str) -> int:
354+
"""Extract start year from a years string like '2019-2021' or '2021'."""
355+
if not years_str:
356+
return 0
357+
return int(str(years_str).split('-')[0].strip())
358+
359+
353360
def generate_alumni_list_content(alumni: List[Dict[str, Any]]) -> str:
354361
"""Generate HTML content for an alumni list (postdocs, grads, managers).
355362
363+
Alumni are sorted in reverse chronological order by start year.
364+
356365
Args:
357366
alumni: List of alumni dictionaries
358367
@@ -362,7 +371,12 @@ def generate_alumni_list_content(alumni: List[Dict[str, Any]]) -> str:
362371
if not alumni:
363372
return ""
364373

365-
entries = [generate_alumni_entry(a) for a in alumni]
374+
sorted_alumni = sorted(
375+
alumni,
376+
key=lambda a: _parse_start_year(a.get('years', '')),
377+
reverse=True,
378+
)
379+
entries = [generate_alumni_entry(a) for a in sorted_alumni]
366380
return "<br>\n ".join(entries)
367381

368382

@@ -417,16 +431,19 @@ def generate_undergrad_list_content(
417431
if not alumni:
418432
return ""
419433

420-
# Create position map from CV order (lower = appears first)
434+
# Sort by start year descending (reverse chronological),
435+
# falling back to CV order for ties
421436
cv_position = {}
422437
if cv_order:
423438
for i, name in enumerate(cv_order):
424439
cv_position[name] = i
425440

426441
def sort_key(a):
442+
start_year = _parse_start_year(a.get("years", ""))
427443
name = a.get("name", "")
428-
# Use CV position if available, otherwise put at end
429-
return cv_position.get(name, 99999)
444+
cv_pos = cv_position.get(name, 99999)
445+
# Negate start_year for descending; use cv_pos as tiebreaker
446+
return (-start_year, cv_pos)
430447

431448
sorted_alumni = sorted(alumni, key=sort_key)
432449

0 commit comments

Comments
 (0)