All Blog Posts

Oct 28, 2025
software-engineering ios android

Swift for Android Won't Amount to Anything

The Swift team just announced nightly builds of the Swift SDK for Android, complete with Java interoperability and a getting started guide. They’re pitching it as “opening new avenues for cross-platform development.” It won’t work. Not because the...

Oct 21, 2025
software-engineering management ios

Engineering Managers Should (Sometimes) Write Code

I spent the last few evenings polishing the trip planner feature that an intern built for the OneBusAway iOS app. Not reviewing the code, not providing architectural guidance, but actually writing Swift to handle edge cases in the UI and fixing la...

Oct 20, 2025
software-engineering ai productivity

Claude Code is unreasonably good at building MVPs

The most valuable code I’ve written in the past six months is code I fully intend to throw away. This isn’t some zen programming philosophy or agile methodology talking point. It’s the practical reality of using Claude Code to build prototypes and...

Oct 11, 2025
economics ai infrastructure

The Data Center Bubble

In the late 1990s, companies like Global Crossing spent tens of billions building fiber-optic networks that would supposedly revolutionize telecommunications. The infrastructure was real, the technology transformative, but the economics never work...

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...