The migration that never finished
Half-completed migrations are the most expensive state a system can be in, and the most common one.
tech, developers, and the code underneath
37 pieces tagged architecture,
from May 9, 2025 to September 21, 2026.
Half-completed migrations are the most expensive state a system can be in, and the most common one.
Integers, UUIDs, ULIDs, or something with meaning. The decision is permanent and it leaks into everything.
Your service dependency graph exists whether or not anyone has written it down. Writing it down takes an afternoon.
A request crosses a dozen components with a timeout each, and almost nobody has ever added them up.
Every fixed-size resource is a queue. Most of them are unmonitored, and that is where latency hides.
Internal interfaces get none of the care external ones do, and they are the ones you'll live with longest.
The innovation-token argument is a decade old and still right, with one amendment nobody makes.
A checklist for the moment before you create a new deployable, when saying no is still free.
Portability is not free and neither is dependence. A framework for deciding how much abstraction to buy.
Why your database has 400 connections, why that is bad, and how to size a pool without guessing.
When a fast producer meets a slow consumer, something has to give. Deciding what, in advance, is the whole discipline.
Write once, run anywhere, debug everywhere. The honest accounting of what each approach actually costs.