Writing
Two streams. Essays are long-form and hand-written, one subject at a time. The blog runs daily and covers the ground around them.
Migrating a hundred tenant databases off a platform we were shutting down
Database-per-tenant makes migration a hundred small problems instead of one big one. That is mostly good news, and the exceptions are where the damage lives.
Confidence scoring is what makes AI takeoff usable
A vision model that measures a construction drawing will be wrong sometimes. The product decision is not how to stop that — it is what the estimator sees when it happens.
An offline-first point of sale is a distributed systems problem
The internet goes down and the store does not close. Everything difficult about retail software follows from that one sentence.
Billing is the hardest part of SaaS and nobody demos it
Plans, proration, tax, dunning, and the customer who wants one card charged once. The demo takes four seconds. Getting there takes months.
What moving to the edge actually changed
Workers, D1 and R2 removed a category of operational work and added a category of constraints. Both were worth knowing about before we committed.
Durability is a feature, and deletes are the risk
Backups protect you from losing the disk. They do not protect you from your own code deleting the wrong object, which is the failure that actually happens.
Multi-Tenant RAG: Stop One Tenant's Documents Leaking Into Another's
In a shared retrieval system, the worst bug is a correct answer built from the wrong customer's file. Where tenant leaks hide and how to test for them.
Insurance Claims Software: Queues, Evidence and Moving Reserves
A claim is not a ticket. It carries money that changes, evidence that must be kept, and deadlines set by regulators. Where generic workflow tools fall short.
What SOC 2 and HIPAA Add to a Build: Time, Cost, Architecture
Compliance is mostly decisions you make in the first month of the build. What these two frameworks actually require, and which parts you can defer.
Trials, Downgrades and Dunning: The Billing States Apps Skip
Most billing code models paid and unpaid. Real subscriptions pass through a dozen states, and the missing ones are where support tickets come from.
Model Upgrades Break Prompts: Build the Regression Suite First
Changing a model version is a code change that no unit test covers. Here is how to build the suite that catches it before your customers do.
Which AI Features Should Run Overnight: The Case for Batch Inference
Not every AI feature needs an answer in two seconds. Moving the right ones to batch jobs can cut cost and smooth load. Here is how to pick them.
Fitness and Studio Booking: Capacity, No-Shows and Recurring Billing
Class booking looks like a calendar problem. It is really capacity, waitlists, late cancels and memberships that bill on a schedule. Here is what breaks.
Budgeting an AI Feature: Why an Honest Quote Is a Range
A fixed price for an AI feature before anyone has seen your data is a guess. Here is what widens the range and how to narrow it cheaply.