Notes
Occasional write-ups on Rails, React, performance and the tooling I reach for. Subscribe via RSS.
Localebot: localization without touching your codebase11 Oct 2026
Localebot is a GitHub App that finds untranslated strings in a pull request, lets translators and an AI model fill them in, and opens a second PR with the result. It reads existing locale files and keeps almost no state of its own. Read →
All you need to know about Jev (typesafe.ai)19 Sept 2026
Jev has built up hype for its speed and classification approach. Here is what it does, what it doesn't, and how it performed on my task prefill test. Read →
Rails rate limiting without Rack::Attack19 Sept 2026
Action Controller has shipped a rate_limit filter since Rails 7.2. It's a before_action over a cache counter, and for login forms and password resets it covers what most apps pulled in a gem for. Read →
FireNotes: Building a distraction-free note extension with zero servers13 Sept 2026
Heavy note apps add friction. I built FireNotes as a minimal browser extension that syncs across devices using native WebExtension storage. Read →
Rebuilding my site on Vite+ to stay current13 Sept 2026
Introducing a new toolchain into a product I'm shipping adds nothing to that product, so I never get to evaluate anything at work. Personal projects are the only place I do, and this time the thing under evaluation was Vite+. Read →
Rails signed_id is underrated23 Aug 2026
Email verification and password resets get re-implemented in every codebase. Most approaches add schema clutter or JWT machinery when Rails has a built-in solution. Read →
Scrubfs: Effortless on-the-fly metadata cleaning26 Apr 2026
A VPN hides your location, but file metadata leaves fingerprints everywhere. I built scrubfs to strip metadata on read without modifying original files. Read →
WebSockets from a PWA to a Raspberry Pi on the local network19 Oct 2025
Browsers won't open an insecure WebSocket from an HTTPS page, and a secure one needs a certificate they already trust. Getting one onto a Pi at a private address came down to a single decision: the Pi runs its own Wi-Fi. Read →
Nested validation in Rails 8 without manual loops09 Feb 2025
Handling a three-tier model hierarchy in one request often leads to hand-rolled loops that get messy. Rails has solved this natively since version 2.3. Read →