February 12, 2026
Every few years, a new framework promises to solve complexity by introducing more abstraction. I have spent two decades watching this cycle and have come to a heretical conclusion: the most productive codebases I have ever worked in were relentlessly dull.
January 28, 2026
Phil Karlton’s famous quip about naming and cache invalidation gets laughs, but it masks a deeper truth. A variable name is a micro-essay — it must compress intention, scope, and type into a handful of characters.
January 9, 2026
I wrote my first Express route handler in 2014, before npm had a lock file, before async/await, before anyone worried about supply-chain attacks. The landscape has changed; the fundamentals have not.
December 18, 2025
He is ten and wanted to build a game. I could have written it for him in an afternoon. Instead, I sat beside him and watched him struggle with off-by-one errors for a week. It was the hardest and best parenting decision I made this year.