
I build software, write down what I learn, and race cars on the internet.
A working portfolio — projects I’ve shipped, notes from the workshop, and the occasional lap at Talladega. The interesting stuff is in the writing.

Recent writing
All posts →The App My Wife Opened First
What a few evenings of directing Claude Code on top of years of engineering taste buys: a custom progressive web app for my family's Disney World trip that my wife reached for first, every day.
Outrunning the Bear: A Realistic Guide to Starting Your Web Development Career
In the age of AI, developers don't need to outrun the bear (AI taking our jobs)—we just need to be harder to replace than others. While AI excels at writing code and debugging, it fails at navigating organizational dynamics, owning consequences, and understanding unwritten requirements. The developers who will thrive are those who master the "human layer"—leveraging AI as a tool while focusing on messy legacy systems, institutional knowledge, and unsexy but irreplaceable work like bug triage and team building. The key isn't coding better than AI, but providing value beyond writing functions: being accountable, bridging technical and non-technical worlds, and functioning effectively within an organization.
Don't Do Things The Hard Way, Just Do Hard Things: A Developer's Philosophy
This blog post explores the crucial distinction for developers between "doing hard things" and "doing things the hard way." It argues for a pragmatic approach grounded in values, emphasizing that while tackling genuinely challenging problems is essential for growth and delivering value ("doing hard things"), there's no inherent virtue in choosing unnecessarily complex or difficult methods ("doing things the hard way"). Instead, developers should prioritize efficiency, leverage sensible shortcuts, and focus on user needs, strategically applying their efforts to solve real problems and build robust, user-centric software. The ultimate goal is to achieve meaningful outcomes and build resilience by tackling necessary complexities effectively, rather than creating artificial difficulty for its own sake.
