The estimate that became a promise
The moment an estimate has to be defended in front of a customer, the team stops calculating and starts negotiating. The number looks the same. What it means has changed.
Notes on software architecture, AI, and building products.
The moment an estimate has to be defended in front of a customer, the team stops calculating and starts negotiating. The number looks the same. What it means has changed.
A gap in your ID sequence is almost never the problem. The problem is the question nobody asks: how many different paths can write to that table?
Performance walks into the meeting as a kilobyte and walks out as 'later'. The number isn't the problem. The problem is that the number has no owner.
Every migration reaches the moment when someone suggests keeping both sides running, just in case. It sounds prudent and it rarely is. The three costs that decision hides, and the question I use to settle it.
Every system reaches the day someone asks for a delete button. What looks like a two-hour task is a decision that defines what the database will allow from then on. The hidden costs, and the rule I use to choose.
How I set up an automated blog where an AI reads my daily conversations and turns them into posts — and why plain .md files were the right call.