Software that works, and writing about how it got that way.
Senior engineer with 15+ years of shipping. I write about the craft, the trade-offs, and the parts of the job that don't fit on a résumé. New posts monthly; opinions formed slowly and held loosely.
Recent
all writing →
A Vanilla Routing Experiment
Building client-side routing with vanilla JavaScript: What started as a simple experiment revealed the hidden complexity that SPA frameworks solve for you.

The Code-Adjacent Power of AI
AI coding assistants are obviously useful for writing code, but some of their most valuable contributions happen in the work that surrounds it.

Dynamic Ruby And Hidden Maintenance Costs
This post explores how dynamic dispatch and ActiveSupport's runtime constant resolution can make Rails code elegant but harder to maintain.
Popular
archive →
Migrating From Rails Secrets to Credentials
Exploring the evolution of Rails secrets to credentials, this post investigates the deprecation of Rails.application.secrets, explains its history, and provides step-by-step solutions to address the change in legacy Rails applications.

Slowing Down AI On Purpose
Why I deliberately slow AI down to reason about design, context, and incremental change before writing code.

Building an AI Blog Editor with Claude Skills
Creating an AI blog editor with Claude Skills—like having a code reviewer for your writing when you don't have a human editor.
