Ethan Thornberg
Currently building full-stack at First American.
Roblox
A network change used to be fatal mid-game. Wifi drops to cellular, every in-flight request dies with the old interface, and the only fix was restarting the app. I built Connectivity, the signal that fixes that: per-platform monitors feed one core manager that filters noise with debouncing, deduplication, and generation counters.
HTTP reconnects cleanly. QUIC migrates in place with no re-handshake. Roblox’s own UDP game transport re-authenticates a player on their new network path using a token issued ahead of time, so the game session just continues.
I scoped it for two consumers, and five more systems adopted it on their own. It reached 100% of iOS and Android, handling 18 million network transitions a day.
First American Financial
I spent twelve months here building internal tooling for the DMS2 Admin Workspace on React and TypeScript over C# and .NET. Along the way I ran a Copilot rollout for a hundred engineers that nobody assigned me. After a summer at Roblox, I’m back on the team part-time through the school year.
Full case study →On my own time
180 days teaching myself systems programming in C, unrelated to any job, one project deep enough to force the next.
Real-Time Networked Systems
Networking fundamentals to a chat server to a tick-based multiplayer movement server: authoritative at 60Hz, client-side prediction, server reconciliation, and a latency simulator I wrote just to break it on purpose.
Distributed Task Queue
Fire-and-forget clients, spawned worker processes, at-least-once delivery. Finishing it felt oddly empty, and that feeling is what pushed me toward the renderer.
Software Renderer
No graphics API. Model-view-projection, clipping, rasterization with a depth buffer, and per-triangle Phong lighting, every stage written by hand, then perspective-correct texture mapping and shadow mapping on top.
Now: Operating Systems
Threads, processes, and how the OS actually works. UCI coursework and personal study, running in parallel.
“I had spent three months learning how programs talk to each other. I hadn’t learned what to make them say.”
Most of what I build outside of work comes from wanting to understand something all the way down, the same reason I started weighing shots instead of eyeballing them.
Field Notes
A log of my first few months of systems work, written as it happened.