What I keep forgetting about timeouts
Sep 27
Caches solve a problem and create three new ones: invalidation, observability, and the slow drift between what the cache…
Why I went back to plain text
May 9
I used to add a layer of abstraction the first time I saw a pattern repeat. Now I wait for the third. The waiting is unc…
When to skip the abstraction
Sep 8
Most of the trouble I see in production comes from boundary cases someone promised would never happen. The code is fine.…
Things broken on purpose
Nov 11
Most retry logic I've removed turned out to be hiding a real bug. The retries made the failure invisible, and the bug co…
The minimum useful README
Aug 7
There's a kind of premature optimization that comes from imagining a future team. "What if someone needs to swap this ou…