Insights

Notes on Building Software That Lasts

Field notes from 15+ years shipping and modernizing production systems. Practical lessons for founders and teams who need software that holds up.

Your AI agent and your newest engineer are stuck on the same problem

Expert Opinion Oct 05, 2026

Your AI agent and your newest engineer are stuck on the same problem

A codebase that needs unwritten knowledge fails the engineer who joined last month and the AI agent you rolled out last quarter in exactly the same way. It is one problem, and it gets expensive fastest when a new team inherits a system somebody else built. Here is what I do when I inherit a system, and a thirty-minute test to measure the gap.

Read article
Migrating the heart of a live product in nine batches

Expert Opinion Sep 12, 2026

Migrating the heart of a live product in nine batches

I migrated the most used screen of a product I ran for ten years, in nine batches, with no downtime and no maintenance window. Here is why I refused the single cutover, the abstraction I could only see halfway through, and the blind spot my own migration plan was structurally unable to catch.

Read article
Why I still write PHP in 2026

Expert Opinion Sep 11, 2026

Why I still write PHP in 2026

PHP is the language I reach for most, by choice. The PHP I write has almost nothing in common with the code that gave the language its reputation. Here is what modern PHP actually looks like, the three criticisms I think are fair, and the rule I use to decide when it is the wrong tool.

Read article
What I stopped letting AI do after it cost me a day

Expert Opinion Aug 28, 2026

What I stopped letting AI do after it cost me a day

Writing code got cheap. Checking whether it is right did not. I lost most of a day to a change that was correct, reviewed, and built on a premise that was wrong from the first sentence. Here is the line I draw now and why it is about the premise, not the difficulty.

Read article
Your business logic is hiding in your database, and nobody can see it

Expert Opinion Aug 13, 2026

Your business logic is hiding in your database, and nobody can see it

A database trigger runs on the database host, in database syntax, with no application log and no stack trace. When it breaks you do not hear it from your monitoring, you hear it from a customer. I moved a live SaaS off ten of them in about four weeks, one domain at a time, with no downtime. Here is how I chose the order, and why I left ten running on purpose.

Read article
Ten years on one codebase, and what I would build differently

Expert Opinion Aug 04, 2026

Ten years on one codebase, and what I would build differently

I ran one product's codebase for ten years and decided not to migrate it to a framework. That call saved roughly a year of frozen feature work and cost me things I did not see at the time. Here is the architecture I built instead, the score I invented to track it, and the three decisions I would make differently.

Read article
What headless Chrome actually costs on a small server

DevOps Jul 21, 2026

What headless Chrome actually costs on a small server

One headless Chrome render costs about 250 MB for roughly one second. Measured on a 7.6 GB box with zero swap. Here is how to install it without pulling in snap or breaking a shared Node version, the flags that matter on a server, and why the queue design matters more than the memory number.

Read article
The ticket said use SVG. The real fix was one line somewhere else.

Expert Opinion Jul 21, 2026

The ticket said use SVG. The real fix was one line somewhere else.

A one-line ticket asked me to switch thumbnails from PNG to SVG for better quality. Following it would have opened a stored XSS hole to fix a problem SVG does not even cause. The real cause was resolution, and the fix was one option. Here is how I checked the guess, and why I then did not build the better architecture I had already designed.

Read article