Writing
Notes from building and running software: what things really cost, which shortcuts hold up, and the decisions that save a team from trouble later.
-
DHH's Campfire Benchmark Is Flawed, and Still Right
DHH had agents port Campfire to Elixir, Go and Rust. The Elixir numbers are wrong, the argument holds, and none of these languages is where this ends.
-
DHH at Rails World 2026: Agents, Rust and Why I Am Moving On
DHH's Rails World 2026 keynote put agents first and rebuilt HEY on Rust. What was claimed, what is unproven, and why my new work is moving to Rust and Elixir.
-
What a Product Engineering Lead Does, and When to Hire One
A product engineering lead owns a product from the first question to the running service. How it differs from a product manager and a tech lead.
-
Rebuild or Extend? Replacing a Charity's Platform After Years
When a charity platform has grown into a website, a blog, accounts and a separate competition app, when is a rebuild right? What I weighed, kept and cut.
-
Migrating Off InventoryBase Without Stopping the Business
How I moved a property inventory agency's 14 years of InventoryBase data, 60,000+ inspections and 4 TB of photos, to its own platform while staff kept working.
-
Twilio Flex for Charities: Lessons From a Coaching Contact Centre
Building a Twilio Flex contact centre for a UK children's charity: one configurable desk, conversations that survive, and Salesforce records that match.
-
How to Close a Charity App Responsibly
Closing an app people used for health information is product work. What to decide, who to tell and what to remove, from shutting down a breast cancer app.
-
Rails Engines as Products: Extract Only After Proof
A Rails engine should be extracted only after its boundary has survived production work. The Responsa case shows what moves out, what stays, and why now.
-
AI Automations Worth Building: Most Do Not Need AI
Which AI automations are worth paying for, when a scheduled job or scoring rule is better, and what evals, drift and review really cost in production.
-
Design Sprint vs Just Building: Decide Before Code
When structured design work saves a build, when it delays learning, and which product decisions must happen before code can honestly begin in a real product.
-
Rails MVP in Weeks: How Hotwire Holds Up in Production
A Rails MVP plan from a production operations workspace: where Hotwire makes server-rendered work fast, and where a frontend state layer earns its cost.
-
Technical Due Diligence Checklist Before Buying Software
A technical due diligence checklist for founders and investors who need to prove a codebase, its data, access and recovery story are real before a deal closes.
-
Native iOS Push Notifications: Permission and Restraint
How to design native iOS push notifications people keep enabled: ask at the right moment, choose local or remote delivery, and test state on real devices.
-
How to Hire an AI Engineer Who Can Verify the Work
How to hire an AI engineer in 2026: interview for evaluation, failure handling, cost and latency discipline, not model names, cheerful demos, or empty claims.
-
Freelancer vs Agency vs In-House: Cost, Speed and Risk
A fair comparison of freelancer, agency and in-house hiring costs, delivery speed, bus-factor risk and the practical handover work that makes any choice safer.
-
Compound Engineering With Codex: Keeping Agents Honest
How I keep AI-assisted engineering from becoming a pile of plausible diffs: committed instructions, bounded specs, tests, reviews, and records left behind.
-
RAG vs Fine-Tuning: Choose the Right System for Work
A practical RAG vs fine-tuning decision guide that covers retrieval quality, retraining costs, and when a prompt with structured extraction is enough.
-
Prototype Sprint vs MVP: When a Demo Must Be Deleted
Prototype sprint vs MVP is a decision about what may be faked, what must survive a real user, and when extending a demo becomes wasted spend for good.
-
Hosting Is a Trust Problem When Production Is Real
Hosting is a trust problem: how I judge queue isolation, storage migrations, observability and recovery before handing a production system to any host.
-
Tests as Contracts for AI Coding Agents in Production
Tests are the specification an AI coding agent can execute. Real import and audio-app examples show how narrow contracts make generated code stay honest.
-
OpenAI API Integration Checklist for Production Apps
A production checklist for OpenAI API features: strict response contracts, validation, failure paths, cost limits, versioned prompts and deploy-time evals.
-
Fractional CTO vs Full-Time CTO: Hire for the Work
A practical fractional CTO vs full-time CTO guide for founders who need to decide whether the next bottleneck is building, leadership, or coverage in practice.
-
MVP Development Cost in 2026: What Actually Drives It
Why MVP quotes vary by 5x, which parts of the build actually consume the budget, and how to write a brief that gets you a real number instead of a guess.
-
Passwordless Authentication: What It Fixes and Costs
Passwordless authentication removes a bad first barrier, but email delivery, shared inboxes and expiry rules still need product and security decisions.
-
React Native vs Native iOS: An Honest Decision Guide
A practical React Native versus native iOS decision guide from shipping food logging, travel, audio, image editing and WidgetKit apps in real production.
-
Rails SQLite Deployment: Single Server or Postgres?
A practical Rails SQLite deployment decision guide: when one server, Solid Queue and Solid Cache fit, and when managed PostgreSQL is safer in production.
-
Rails Stack 2026: Rails 8.1 for Production Systems
The Rails 8.1 stack I use for serious operational software: PostgreSQL, Phlex, Hotwire, Solid Queue and Active Storage, tested against real production data.