Start with a modular monolith. Earn your microservices.
Most teams adopt services to fix a code problem and inherit an operations problem. Here is the boundary test I use instead.
Blog
No listicles. Things I learned while something was on fire, written down so you don't have to learn them the same way.
Most teams adopt services to fix a code problem and inherit an operations problem. Here is the boundary test I use instead.
Build the evaluation harness before the prompt. A practical rubric-first workflow that survives model upgrades.
The three patterns that separate a queue that works in staging from one that survives Black Friday.
Scope is not a list of features. It is a list of things you have agreed to be bad at, for now.
How to size partitions and rollups for event-heavy workloads without over-engineering day one.
Cache key design decided our unit economics. A breakdown of serving millions of runs for tens of dollars.
Not a roadmap. A risk register, a hiring plan, and one architectural decision the team has been avoiding.
Server state, URL state, and component state have different lifetimes. Treating them the same is why apps rot.
Taking on 2 new partnerships for Q4
Occasional, long-form, and only when I have something worth your time. Send a note to subscribe or book a call to skip straight to the conversation.