House Vandy 2022
SOFTWARE ENGINEER — NEW YORK
Full-stack engineer in New York. I draft with a designer's eye, build with an engineer's hand — and refuse to lose a pixel in between.
SHEET 02
05 FEATURED · 04 IN THE FLAT FILE
PRIVATE DEPLOY — TEXT SHEET
"Replaced paper and spreadsheets for an anti-trafficking nonprofit — led five engineers to ship it."
REV A — 2021
DESIGNED & BUILT FROM SCRATCH — 2026
THE FLAT FILE — EARLIER DRAWINGS
| NO. | PROJECT | STACK | YEAR | LINKS |
|---|---|---|---|---|
| 006 | United Front Against Riverblindness | REACT NATIVE · OFFLINE-FIRST | 2022 | GitHub ↗ |
| 007 | Plasmid Visualizer | REACT · PYTHON · POSTGRES | 2021 | ABBVIE INTERNAL |
| 008 | Mass Spectrometry Toolkit 2.0 | FLASK · JQUERY · DOCKER | 2020 | ABBVIE INTERNAL |
| 009 | Playlist Bridge | FLASK · JINJA2 · TIDAL ⇄ APPLE MUSIC | 2020 | GitHub ↗ |
SHEET 03
SHEET 04
SHEET 05
I grew up in Newton, MA, studied computer science at Vanderbilt, and now build software in New York — the whole stack, with particular joy in the parts people touch.
Before that: nonprofit platforms with Change++ (leading a team of five), two summers in AbbVie's Bioresearch Center, and a student government app that made it to the App Store.
Off the clock I shoot film, draw letterforms, and keep this site pixel-perfect out of principle.
ON RECORD
14 ON FILE — SHEET 1 / 3
“Ships like an engineer; sweats pixels like a designer. The bar for 'done' moved when he joined.”
“Pull requests that read like documentation — screenshots, edge cases, the why. Reviewing them was the easy part.”
“Half engineer, half art director — he'll argue kerning and query plans in the same standup.”
“Led five of us through a real production launch while still a student. The nonprofit still shows it off.”
“Five engineers, one semester, zero drama. He ran it like he'd shipped for years.”
“The scraper broke every August. Ethan's rewrite hasn't — ask how many leases it found us.”
“Asked him to 'just tweak the logo.' Received a full identity system with usage notes. Kept all of it.”
“I've taught a lot of capstones. Very few students leave the client planning around their availability after graduation.”
“The demo crashed four minutes before judging. He fixed it in three and still narrated the slides like nothing happened.”
“Gave him the vaguest brief of my career — 'make it feel less like a spreadsheet' — and he came back with exactly that.”
“Every review he left made the codebase a little easier to walk into. That's rarer than shipping fast.”
“He asked for the gnarliest data cleanup we had, then automated himself out of the assignment by July.”
“Our club site went from a shared doc of broken links to something we still brag about at the involvement fair.”
“Took the messiest ticket in the backlog and came back with a diagram, three questions, and a fix. First-year students don't usually do that.”
APPENDIX A
SUMMER 2026 ● IN PLAY 6–1–4 · 11+ G · 3 A
| DATE | TEAM | LEAGUE · DIV · FORMAT | RESULT | SCORE | G | A |
|---|---|---|---|---|---|---|
| JUL 15 | Charlie Cheers FC NYC FOOTY | NYC FOOTY | drew | 3–3 | — | 1 |
| JUL 13 | Salmon Roe United NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 8–0 | 2 † | 1 |
| JUL 12 | FA Blast from the Past NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | lost | 0–2 | — | — |
| JUL 08 | Charlie Cheers FC NYC FOOTY · P2/P3 · 6V6 OUT | NYC FOOTY · P2/P3 · 6V6 OUT | lost | 2–6 | 1 | — |
| JUL 06 | Salmon Roe United NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | lost | 0–3 | — | — |
| JUL 05 | FA Blast from the Past NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 6–1 | 3 | — |
| JUL 01 | Charlie Cheers FC NYC FOOTY · P2/P3 · 6V6 OUT | NYC FOOTY · P2/P3 · 6V6 OUT | won | 2–0 | 2 | — |
| JUN 29 | Salmon Roe United NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 8–2 | 2 † | — |
| JUN 28 | FA Blast from the Past NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–1 | 1 | — |
| JUN 24 | Charlie Cheers FC NYC FOOTY · P2/P3 · 6V6 OUT | NYC FOOTY · P2/P3 · 6V6 OUT | lost | 1–3 | — | 1 |
| JUN 17 | Charlie Cheers FC NYC FOOTY · P2/P3 · 6V6 OUT | NYC FOOTY · P2/P3 · 6V6 OUT | won | 5–4 | — | — |
| JUN 14 | Real Sosobad SUB NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 7–1 | 1 | 1 |
| JUN 01 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | lost | 1–8 | — | — |
| MAY 31 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–0 | — | — |
| MAY 26 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | lost | 2–4 | — | — |
| MAY 19 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 5–2 | — | — |
| MAY 18 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | lost | 0–4 | — | — |
| MAY 17 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–0 | — | — |
| MAY 12 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 6–2 | 2 | — |
| MAY 11 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | won | 4–2 | 1 | — |
| MAY 10 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–1 | 1 | — |
| MAY 05 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | lost | 2–3 | 1 | — |
| MAY 04 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | lost | 2–7 | — | — |
| MAY 03 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–1 | 1 | — |
| APR 28 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 2–0 | 1 | — |
| APR 27 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | lost | 1–2 | — | — |
| APR 26 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 4–1 | 1 | — |
| APR 21 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 8–0 | 1 | — |
| APR 14 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 6–2 | — | — |
| APR 13 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | lost | 2–4 | 1 | — |
| APR 12 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | won | 2–0 | — | — |
| APR 07 | Charlie Cheers FC VOLO · 7V7 OUT | VOLO · 7V7 OUT | won | 8–1 | 2 | — |
| APR 06 | FA Seven Wonders of the Goal NYC FOOTY · P3/P4 · 7V7 OUT | NYC FOOTY · P3/P4 · 7V7 OUT | won | 2–0 | — | — |
| APR 05 | ABCDE FC NYC FOOTY · P3 · 7V7 OUT | NYC FOOTY · P3 · 7V7 OUT | drew | 1–1 | — | — |
| FEB 18 | Charlie Cheers FC VOLO · 7V7 INDOOR | VOLO · 7V7 INDOOR | won | 17–2 | 2 † | — |
| FEB 16 | FA Goalmates NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 10–5 | 1 | — |
| FEB 11 | Charlie Cheers FC VOLO · 7V7 INDOOR | VOLO · 7V7 INDOOR | won | 10–4 | 3 † | — |
| FEB 09 | FA Goalmates NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 7–19 | — | — |
| FEB 04 | Charlie Cheers FC VOLO · 7V7 INDOOR | VOLO · 7V7 INDOOR | won | 7–6 | 1 | — |
| FEB 02 | FA Goalmates NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 11–3 | 3 † | — |
| FEB 02 | Formerly Fate NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 17–0 | 2 † | — |
| JAN 26 | FA Goalmates NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 7–11 | 2 | — |
| JAN 21 | Charlie Cheers FC VOLO · 7V7 INDOOR | VOLO · 7V7 INDOOR | won | 15–5 | 3 | — |
| JAN 19 | FA Goalmates NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 13–1 | 5 † | — |
| JAN 19 | Formerly Fate NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 9–12 | — | — |
| JAN 14 | Charlie Cheers FC VOLO · 7V7 INDOOR | VOLO · 7V7 INDOOR | won | 13–5 | 1 | — |
| JAN 12 | Formerly Fate NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 11–5 | — | — |
| DEC 15 | Formerly Fate NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 11–4 | 3 | 2 |
| DEC 14 | FA Pretty in Pink NYC FOOTY · P4 · 7V7 INDOOR | NYC FOOTY · P4 · 7V7 INDOOR | lost | 5–7 | — | — |
| DEC 08 | Formerly Fate NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 5–16 | — | — |
| DEC 07 | FA Pretty in Pink NYC FOOTY · P4 · 7V7 INDOOR | NYC FOOTY · P4 · 7V7 INDOOR | won | 9–6 | — | — |
| DEC 01 | FA Orange Julius NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 9–11 | — | — |
| DEC 01 | FA Rapinoe Grigio NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 7–8 | — | — |
| NOV 17 | FA Orange Julius NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 5–12 | — | — |
| NOV 16 | FA Pretty in Pink NYC FOOTY · P4 · 7V7 INDOOR | NYC FOOTY · P4 · 7V7 INDOOR | won | 10–5 | — | — |
| NOV 10 | FA Rapinoe Grigio NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | lost | 5–6 | — | — |
| NOV 10 | FA Orange Julius NYC FOOTY · P3 · 5V5 INDOOR | NYC FOOTY · P3 · 5V5 INDOOR | won | 12–6 | — | — |
FIG. A3 — GOALS & ASSISTS
SCALESTEPS UP AT EACH MATCH — FLAT SPELLS ARE MATCHES WITHOUT A GOAL, OR WEEKS WITHOUT A MATCH † COUNT UNCERTAIN — CURVE DRAWN AT MINIMUM
SEASON TOTALS — CURRENT SEASON STILL ACCRUING † COUNT UNCERTAIN — DRAWN AT MINIMUM
AMBER — GOALS · GREY — ASSISTSAMBER — ASSISTS · GREY — GOALS · TICKS ON THE LINE — PLAYED, BLANK † COUNT UNCERTAIN — DRAWN AT MINIMUM
FIG. A4 — FORM, EVERY MATCH
CURRENT STREAK
D1
LONGEST W STREAK
W4
UNBEATEN RUN
7 MATCHES
† MINIMUM — LOST COUNT MID-CELEBRATION.
TILES SWITCH THE LEDGER — GOALS & RECORD OPEN FIGS. A3 / A4
SHEET 06