How to move a live status field onto a new model without a big-bang migration
We moved lifecycle state to a new model without rewriting every query. The trick was keeping the old status column as a mirror and migrating the writers first.
Read →Field notes, guides, and ideas on speed, AI search, design, and what actually grows a small business online.

We moved lifecycle state to a new model without rewriting every query. The trick was keeping the old status column as a mirror and migrating the writers first.
Read →
If your ads open a WhatsApp chat, the conversion happens off your site and won't show in standard web analytics. Here's what actually links ad spend to sales.
Read →
Hand-written changelogs create merge conflicts because every branch edits the same lines. We stopped maintaining one and generate it from commit messages instead.
Read →
A kanban tells you each card's status, not whether you're on track. We generate the board's insight offline with an LLM, commit it, and serve the dashboard static — no runtime LLM call, no API key on the box.
Read →
A lot of "optimize for AI search" advice is theater. Here's what we deliberately skipped — and what actually got small-business sites cited.
Read →
A hand-maintained TODOS.md always drifts from reality. So we deleted it — the issue tracker is the single source of truth, and the repo only holds views generated from it.
Read →
Running several AI coding agents in one git checkout corrupts your history, collides your test databases, and tangles your branches. The fix is the same move every time — isolate the shared state — and here's every place we had to do it.
Read →
The simplest way to get your website onto yourbusiness.com — what the www version changes, the three ways to do it, and the ownership question to ask before anyone sets it up.
Read →
Re-enqueueing a dropped message is easy. The real work is knowing when silence is intentional — opt-outs, human handoffs, races, and WhatsApp's 24-hour window.
Read →