Blog
Long-form writing on software, systems, and whatever else is on my mind.
2026
-
Jul 20
When Big-O Lies
Asymptotic complexity is a promise about behavior at infinity. Most of my code never runs there — it runs at n = 4,000 on a Tuesday, and the constants I dropped are the whole story.
-
Jun 30
The Quiet Cost of a Fast Loop
What branch prediction taught me about writing boring, predictable code on purpose.
-
Jun 11
Reading the Standard Library for Fun
A slow walk through sort.Slice, and why the obvious implementation isn't the one they shipped.
-
May 12
Cache Invalidation, Mostly Naming
The two hard problems collapse into one: if you can't name what a cache entry represents, you can't know when it's stale.
-
Apr 03
The Profiler Is Always Right
Every time I've argued with a profiler, I've been wrong. A short catalogue of my defeats.
2025
-
Dec 02
A Year of Reading Postmortems
Patterns in how large systems actually fail, drawn from a year of public incident writeups.
-
Sep 14
The Case for Boring Databases
Why my default is still Postgres, and the specific moments that justify anything else.