Last week, there was an insinuation that I had died. In a way, I made the insinuation myself. It was produced by a five year old script that runs continuously on its own. ("But wait, that linked blog post isn't five years old!" you might say. Actually, the script had been cooking for a couple of years before I wrote the post.)
So what happened? The script couldn't detect any online activity from me for three days, and so sent out preliminary notification that it was worried about me. This worked perfectly. … Well, perfectly for technology that'd been hibernating for five years (which is more like fifty years in Internet time) and tried to talk with entities in the new world into which it emerged.
What happened to my script, waking up to a changed world, reminds me of the home automation in There Will Come Soft Rains. (It's a great little story. Go ahead and find it and read it. I'll wait.)
The travails of my little Rip Van Winkle Dead Man's Switch presents us with an opportunity. Let's recount what really happens when you write a web app that's supposed to survive on its own for an indefinite number of years. There are a lot of moving parts, let's see how they tie together.
In 2008, WordPress's dashboard had taken a turn for the worse. Michael Heilemann published a handful of screencasts perfectly illustrating the bad UX decisions WordPress had made and had become an Emeritus Member of the Habari Project Management Committee. Habari was an ascendant 2nd generation blogging platform that had learned from its predecessors. Its native remote API was the similarly ascendant AtomPub. WordPress also supported AtomPub.
In 2010, I wrote my Dead Man's Switch (DMS), and used AtomPub to have it publish to my two blogs (one Habari, one WordPress). This was just one of many foundational decisions I made based on the trajectory of technologies at the time. I ensured the DMS worked, and then left it to do its work: watch over me.
In 2015, it triggered. And couldn't do its job..
While it was idling, the world was changing. Here are some things that had changed:
- DreamHost is migrating its shared hosting accounts to PHP 5.5 and 5.6. 5.6 is a breaking change for certain XMLRPC implementations. XMLRPC's MetaWeblog is the primary alternative to AtomPub. This would have broken XMLRPC if I had chosen it for my DMS. Lucky I chose AtomPub. Right?
- WordPress dropped support AtomPub in 2012, in version 3.5. Apparently it wasn't so ascendant. This did break compatibility with the DMS.
- Twitter changed from using basic authentication to OAuth. I caught this. But later it changed its API protocol from HTTP to HTTPS. Sensibly, the HTTP URLs did not forward to their new analogues. But this did break compatibility with the DMS.
- Netflix dropped support for their Disks at Home feed. Until I fixed it, this prevented the DMS from noticing that I was actively watching Netflix movies. I wrote a replacement and made it open source.
- last.fm scrobbling stopped working. This prevented my DMS from noticing which songs and podcasts I was listening to.
- YouTube dropped its awesome support for RSS. Once upon a time, they supported various custom feeds. It was super handy. Of course, without it, my DMS can no longer tell what I've been watching or favoriting.
- Amazon dropped support for its wishlist API. So my DMS wouldn't know if I've added something to my wishlist.
- DreamHost dropped support for SMTP port 25. This would've prevented my DMS from emailing had I not caught it.
Here are some things that remained the same, for better or for worse:
- Amazon's acquired Shelfari site never added support for RSS. Once upon a time, Amazon was going to web-API everything. How would my DMS know when I've read a book?
- Amazon's acquired IMDB never completed its official API, either.
- Google+ created a read-only API. There's still no API to post messages, so my DMS wouldn't be able to post on my behalf..
- DreamHost was still there, running my DMS, and it successfully woke up.
- Sites like Facebook and Twitter were still there to watch and post to.
- Python 2 still has some support and incremental updates did not break the DMS.
I can't say that watching these breaking changes occur is unexpected. But I think there's value in documenting a real use case of web software that's meant to last on its own for so long. With any luck, I'll be here in another five years to give another status update. If not, hopefully my DMS can fill you in for me.