Network outages during live dance competitions turn scoring systems into paperweights. Web Components plus IndexedDB enable graceful offline operation while maintaining Rails as the source of truth. Here's a pattern for building resilient SPAs that work when the network doesn't.
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.
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.
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.
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.