Blog
August 28, 2026
Your Memory Is Not a System
A few years back I pushed a release to production and broke the whole site for about twenty minutes. The code was fine, and the tests passed. The problem was that our deploy had a specific order to...
Read
August 24, 2026
Weekly Digest - August 24, 2026
Happy Monday All! On August 17th GitHub went down for almost eight hours and took a ton of services out with it. The root cause was that the load balancers saturated, and Copilot's retry loops...
Read
August 21, 2026
Your Side Project Doesn't Need to Be Perfect to Ship
When I started building Unleashed Podcasts, I hardcoded a bunch of stuff that had no business being hardcoded. Values like XP for publishing an episode, streak rules, and the list of episode statuses...
Read
August 19, 2026
GitHub Goes Down for 8 Hours, and Your Whole Team Stoped. Here's My Fix.
Like most of you, on August 17th I sat down to review the code that my team had pushed to GitHub. I opened GitHub in a browser to see the Unicorn letting me know there was a problem. Occasionally,...
Read
August 17, 2026
Weekly Digest - August 17, 2026
Three posts this week: a way to make an AI agent fix its own duplicated code, a deep look at how PHP's loose comparisons can hand attackers a login, and the email templates I use to book podcast...
Read
August 14, 2026
The Complete Guide to PHP Type Juggling and Comparison Gotchas
Years ago I inherited a login system that checked passwords with something close to this: Most of the time it worked, but occasionally a user reported they could log in with the wrong password,...
Read
August 10, 2026
Weekly Digest - August 10, 2026
Three posts this week. One PHP function I wasted years reinventing, a podcast about spotting duplicated code, and a system for finding podcast guests when your show is small. I spent years writing...
Read
August 7, 2026
Stop Parsing URLs Manually in PHP
A few years ago, I was doing a code review and came across something that stopped me cold. A colleague had written about 12 lines of strstr(), explode(), and regex to pull...
August 3, 2026
Weekly Digest - August 3, 2026
Three this week: a lesson about feedback loops learned the hard way, a fast new static analysis tool for PHP, and a free tool for catching broken podcast feeds. Scott submitted a PR with a couple...
Read
July 31, 2026
The Importance of Small Feedback Loops
A few years ago I submitted a pull request that felt pretty solid. A couple hundred lines of changes, some new business logic, a refactor or two baked in because I was already in there. I was proud...
Read