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 →
Displaying File Names for Multi-File Inputs with Stimulus
How to build a small Stimulus controller that displays individual file names when users select multiple files, replacing the browser's generic count.

How I Stopped Running out of Tokens
A practical rundown of tools, settings, and habits that reduce token consumption when using Claude Code as your daily AI coding assistant.

Audit a Rails Project with the Thoughtbot Audit Skill
Turning a Claude skill audit report into a labelled, severity-tiered GitHub backlog, and what the skill found in a small Rails 8 app.
Popular
archive →
CSS Refactoring with an AI Safety Net
How to safely refactor messy CSS using AI assistance and screenshot-based visual diffing as a regression safety net.

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.

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.
