I wanted to know a few things about this blog. Which posts people read, where they come from, how often the crawlers behind Claude, ChatGPT and Perplexity stop by, whether anyone fetches the markdown versions of posts, and how many people follow along in a feed reader. Read more of Analytics From Nothing But nginx Logs →
Every Mac app I make now ships two ways from the same code. There’s a direct build that I sell on the app’s own website, signed with Developer ID, notarized, packed in a DMG and kept up to date with Sparkle. There’s also a Mac App Store build. Read more of Selling A Mac App Directly And On The Mac App Store →
A lot of the people reading this blog now aren’t people. They’re agents: Claude, ChatGPT, Perplexity and friends, fetching a page because somebody asked them a question. This week I spent an evening making Deallocated Objects nice to read for them (and for search engines while I was in there). Read more of Making My Blog Readable By AI Agents →
This blog has been sitting on the same Linode server for a very long time. Deallocated Objects started on WordPress in 2010, moved to a little Rails app I wrote around 2014, and that Rails app has been quietly running ever since on a box I’ve been paying for since 2012. Read more of Moving Out Of Ubuntu 10.04 →
Yesterday (Wednesday, October 21st) was one of the strangest days in security I can remember. By lunchtime TechCrunch was running a story titled “The internet is having a very bad cybersecurity day”. None of these incidents are connected to each other. Read more of Everything That Broke On October 21st →
Every few days the music on my Mac starts crackling. Pops, little dropouts, sometimes a robotic buzz over everything. The fix has always been the same: open Terminal, type sudo killall coreaudiod, type my password, and wait a second for sound to come back. Read more of AudioKick, One Click To Fix Crackling Mac Audio →
A lot of the code running in my apps now was written by an agent. When that code throws in production, the usual path back to a fix goes through me: an alert email, a dashboard, a stack trace I copy into a terminal, and then an explanation of what I think happened. Read more of Runheed, Error Tracking My Agent Can Read →
I type a lot of the same things over and over. My mailing address, a “thanks, got it, I’ll take a look” reply for support email, the git command I can never remember for undoing the last commit, a meeting link, a prompt I like for proofreading. Read more of Refrain, A Snippets App For The Mac →
Most days I have a few coding agents going at once, each in a different repo. For a long time the list of what they should do next lived in my head, in scratch files and in whatever I typed into each terminal. Read more of Taskhold, One Task List For Me And My Agents →
There’s a whole category of errand my agent couldn’t touch: anything that needs a phone call. Getting a brake quote, booking a table at the place that doesn’t do online reservations, sitting on hold with an airline. Read more of CallForMe, Phone Calls For Your Agent →