Writing on Rails, AI-assisted development, and what machines can't create.

Articles on code craft, architecture, and the human judgment that separates working software from software that lasts.

The Vibe Coder's Sound Check: 8 things that decide whether your app survives real users

For non-technical founders shipping software built with AI or no-code. Eight questions you can answer about your app before real users arrive, no code reading required: scope, adversarial review, readable proof, valuables, safe defaults, decay, backups that actually restore, and whether you can still draw your system on a napkin.

The Metaphysics of Vibe Coding (or the Absence of It)

Thoughts on how an old philosophical debate resurfaces in the agentic coding discussion. Is code really disposable or is it an essential artifact for thinking? How does the relationship we have to the coded representations shape our decision-making process?

What it actually costs to run a one-Rails-app SaaS in the EU per month

Real euro figures for an EU-only Rails stack: Hetzner, Scaleway, and OVH hosting, Mollie payments, EU-region email and monitoring, plus where your customer data actually lives. MVP through growing, with the Schrems II and Google Fonts angle no dollar breakdown covers.

The guardrails non-technical founders skip when building with AI

The mistakes founders make building software with AI cluster around four missing guardrails: the boundaries AI quietly crosses, code you cannot read, the happy path mistaken for the feature, and a stack that gets rewritten three times. Real failures, real quotes, and the rule to put in place for each.

How much of your codebase should AI write? A trust-zone breakdown

The names are the system's nouns. 70% of the Rails code I ship is AI-written; the 30% I keep is the part that names the system. Trust zones, the defensive-code creep that follows when naming collapses, and why architecture matters more than ever now that agents generate code faster than anyone can read it.

Building with Claude Code in Your Rails App

What working with me looks like when we build features in a Rails app with AI: spec, tests as a readable definition of done, "go" lock gate, implement, verify. The development loop for non-technical founders.

The Middle Loop

ThoughtWorks identified a new category of engineering work between coding and delivery. Nobody has named it yet. I've been doing it.

First Principles

Constraints as understanding — why working within limits produces the deepest insight.

Gambit

Strategic sacrifice — accepting complexity now for positional advantage later.

The Practice

Embodied mastery vs. pattern-matching — AI as collaborator, not replacement.

The Crumbling Codebase

Technical debt as physical decay — and the energy required to reverse it.