Writing
Notes on technologies, AI, system design and the craft of building software that lasts.
Latest
Server Components, layouts and streaming stop being confusing the moment you stop thinking in pages and start thinking in trees.
Cursor, Claude Code and friends don't replace engineering judgment — they move it earlier in the process. Here's what changed in mine.
Interview system design starts with a load balancer. Production system design starts with a question: what actually breaks first?
Types are a communication channel to the next engineer. These habits keep that channel honest when the repo passes 100k lines.
Tenant isolation looks like one architecture decision. In practice it is a hundred small ones — here are the ones that mattered.
Redux vs Zustand vs TanStack Query is the wrong first question. Ownership is the first question — the library follows from it.