← Back to home

Blog

Notes on software architecture, AI, and building products.

managementteamsestimationprocess2026-10-14

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.

databasesarchitecturepostgresqlbackend2026-10-10

Who can write to your database

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?

performancefrontendproductengineering2026-10-09

Who pays for your bundle

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.

architectureengineeringmigrationtechnical decisions2026-08-25

The copy nobody tested is not a backup

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.

databasespostgresqlarchitecturetechnical decisions2026-08-25

Deleting Is an Architecture Decision

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.

developmentaiautomation2026-06-09

I Built a Blog Powered by Markdown and an AI Agent

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.