Disciplined use of Claude
The components of discipline are simple: plan, document, and test. The end result is that I can produce code of a higher quality and quicker with Claude than I could build by myself.
It’s just data
The components of discipline are simple: plan, document, and test. The end result is that I can produce code of a higher quality and quicker with Claude than I could build by myself.
Most tutorials teach Postgres + Redis + horizontal scaling as the default architecture for SaaS applications. But what if your tenants naturally partition? By embracing shared-nothing architecture with SQLite, TurboCable, and Navigator, we're running 350+ real-time applications across 8 countries on 4 continents for ~$100/month. Here's how aligned constraints create radical simplification.
TurboCable brings real-time Turbo Streams to Rails with 89% less memory than Action Cable and zero external dependencies. No Redis, no Solid Cable, no message queue—just in-process WebSockets via Rack hijack. Perfect for single-server deployments and multi-tenant applications where each tenant runs in isolation.
Sometimes the old ways are the best ways. By adding CGI support to Navigator, we're solving a critical deployment problem: eliminating downtime and delays when making simple configuration changes. Here's how a 1993 technology is helping us build a more responsive system in 2025.
When a user on macOS 10.12 couldn't access the showcase application due to browser compatibility issues, we discovered that our minimum browser requirements were too aggressive. Here's how we added conditional polyfill support to make the app work on older browsers without sacrificing performance for modern ones.
Following expert feedback, I ran a more statistically rigorous test of frozen string literals with thousands of requests. The results were surprising.
An experiment to reduce memory usage by enabling frozen string literals resulted in unexpected findings when tested in production.
Memory usage patterns in a multi-tenant Rails application with SQLite databases, where users are pinned to specific machines with hard memory limits.
This post walks through adding a new feature to an existing application using Claude Code.
ActiveRecord::Tenanted is a promising multi-tenancy solution for Rails, but its eager synchronous migration approach won't scale to geographically distributed deployments with Kamal Geo Proxy.
This post advocates for adding geo-aware lazy migrations to ActiveRecord::Tenanted, based on patterns battle-tested in Showcase across 70+ sites in 8 countries over 3+ years.
Five years ago, I migrated this blog to Eleventy v0.12.1. This week, Claude Code upgraded it to v3.1.2, handled configuration changes, made the site environment-aware, and completed the search functionality I'd started but never finished. Eleventy still embodies the "it's just data" philosophy that attracted me in the first place.
Three years ago, I unretired to join Fly.io as a Rails Specialist. As of last month, I've re-retired. What's changed for me? Not much.
If you don't get your hands slapped at least twice a year, you aren't pushing the boundaries hard enough.
I went looking for a place to host my ballroom showcase application. I ended up with a job. I start on Monday at Fly.io. as a Rails Specialist
I don't have a firm date yet, but expect to ship a beta in January.
The book will show you how you can largely stay with Rails defaults and can build an application that is roughly 50% HTML, 40% Ruby, 5% CSS, and 5% JS. The resulting application will have the look and feel of a single page web application complete with asynchronous updates.
For those who have not used WSL yet, it is frankly amazing, to this long time Linux user.
Consolidated instructions for running Windows 11 + WSLg + Ubuntu 20.04 + Genie.
Today I recieved a Absentee Ballot application from the Center of Voter Information. It appears legit.
After nearly 20 years away, I found it was surprisingly easy to set up a full development environment on a modern Windows 10 machine. Given a decent browser, terminal, shell, and IDE, the underlying desktop environment turns out not to be much of an impediment.
After nearly 20 years away, I found it was surprisingly easy to set up a full development environment on a modern Windows 10 machine. Given a decent browser, terminal, shell, and IDE, the underlying desktop environment turns out not to be much of an impediment.
I've migrated my site to 11ty, a static site generator. I've undoubtedly broken many things in the process.