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.

2026-05-02javascript

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.

2026-04-18productivity

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.

2026-04-03rails

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.

2025-03-04rails

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.

2026-01-01productivity

Slowing Down AI On Purpose

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

2026-02-21productivity

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.