Doctorow owns his feeds now. They're still a firehose.
Cory Doctorow's Bluesky account is 227 days old and has 17,374 posts in it. That's 76 a day, on a server he runs himself, under a bio that reads "I post long threads." His Mastodon account has been…
10 min read
Hashtags are the algorithm you can see
Last night I posted a question on technomusicology.club, a social network I run for people interested in the science of musical sound. The server has 20 users. My account has 176 followers. The post…
8 min read
Counting contact-form leads with self-hosted Matomo, no cookies
I launched a small services site this week, care.joehahn.dev, and I wanted exactly one number out of it: how many people sent the contact form. Not a funnel. Not a heatmap. One count, from my own…
5 min read
Session 0: where your SSH terminal sessions go to hide
**TL;DR.** Windows runs SSH sessions in a separate, invisible place called Session 0. Terminal sessions you start over SSH keep running there, but your desktop can't see them and will tell you…
5 min read
The cat printer in CTP-500 clothing
I got an F in handwriting in second grade. Part of that was the tri-colored-lead pencil (a C was the honest grade), but the trajectory held. Decades later my handwriting is still bad enough that my…
7 min read
Code-signing a Windows app with Azure Trusted Signing, end to end
I had a freshly published single-file .NET desktop `.exe` that ran fine and looked the part — and tripped SmartScreen's "Windows protected your PC / unknown publisher" wall the moment anyone but me…
6 min read
A one-line timezone bug in Webform Booking
A Drupal 11 site running Webform Booking showed an empty calendar — "No slots available" — to some visitors and a working one to others. The variable was the visitor's browser timezone. West of UTC,…
5 min read
From Spreadsheet to Planner: Automating Project Kickoffs with Power Automate
Anyone who has managed a major digital project—from a headless CMS migration to a responsive site redesign—knows the drill: the work-back schedule. It starts in a beautiful, logical Excel sheet,…
5 min read
Pondering Large-Scale Redirects: Moving from Blackbaud Luminate to GiveCampus
If you’ve ever managed a CRM or digital fundraising platform transition, you know the anxiety of ensuring every old link still works. I recently navigated this exact challenge: migrating giving pages…
5 min read
Error Handling for Humans: My Algorithm for Avoiding the Flu
If you look at our company chat channel lately, it looks like a triage unit. Between school-aged kids bringing home the plague and the start of the annual 'indoor germ-swapping season,' multiple team…
4 min read

