All Blog Posts

Aug 15, 2025
software-engineering mac-os-x irooster

A retrospective on iRooster, my first Mac OS X app

Looking back on iRooster, my first commercial Mac OS X application from 2003, fills me with nostalgia and gratitude. What started as a desperate solution to oversleeping through morning classes became a formative experience that shaped my entire...

Aug 12, 2025
software-engineering ai security enterprise

The Coming LOB App Renaissance (And Security Nightmare)

There’s a revolution brewing in enterprise software development, and it’s happening in the least expected place: line of business (LOB) applications. You know, those unglamorous internal tools that run payroll, track inventory, manage customer rec...

Aug 08, 2025
ruby-on-rails performance development assets

Propshaft Performance Issues on Rails 8

Upgraded to Rails 8 and swapped out Sprockets for the shiny new Propshaft gem? Great choice. Got a lot of assets? You might be in for a nasty surprise. I recently migrated a Rails app with what I thought was a relatively small number of JS and CS...

Aug 05, 2025
claude-code automation hooks development

Demystifying Claude Code Hooks

Claude Code hooks are incredibly powerful but can be frustratingly opaque when you’re trying to actually implement them. Even though I’ve been writing software for 20 years, I found the official documentation to be confusing—it didn’t lay out a fe...

Aug 03, 2025
software-engineering ai tools productivity

Orchestrating Agentic Coding

I had a conversation with a friend recently that crystalized something I’ve been thinking about for months. He was frustrated with agentic coding tools - expected them to excel at straightforward tasks like reorganizing files and fixing imports, b...

Jul 30, 2025
software development ai technology

Choose Boring Technology, Revisited

Ten years ago, I wrote about Dan McKinley’s classic blog post Choose Boring Technology and its resonance with my own development philosophy. My conclusion then was simple: when spinning up a new project, I consider whether I’m using it as an excus...

Jul 29, 2025
politics government infrastructure seattle

State Capacity and Eight Parking Spaces

Ezra Klein and Derek Thompson’s book, Abundance, makes a compelling case that American government has systematically eroded its own capacity to build things. Through decades of well-intentioned regulations, environmental reviews, and bureaucratic ...

Jul 27, 2025
Software Development AI Visual Studio

The Visual Studio Skeptic

Twenty years ago, I was working on Visual Studio at Microsoft when I had an encounter that still sticks with me today. I was manning a booth at a trade show, demonstrating new IDE features in Visual Studio 2005, when a developer approached me with...

Jul 02, 2025
software-engineering ai tools productivity

Agentic Coding Tools - Not Skynet, Not a Stochastic Parrot

I’ve been using agentic coding tools like Claude Code for a few months now, and I keep thinking about how to explain what this feels like to other developers. It’s not the stochastic parrot that critics dismiss it as, but it’s also not the Skynet ...

Aug 18, 2024
software-engineering craft trade

Software is a Skilled Trade

Software engineers have a unique opportunity: we can build things that millions of people use daily. This isn’t about ego or chasing the next big tech trend. It’s about recognizing our potential impact and using it wisely. Think about other skill...