# xkcdbot First version 2022-11-29 Updated 2023-10-22 ![A Mastodon post with comic number, title, title text, xkcd.com URL and explainxkcd URL; a reply below reads "Heads-up for my subscribers:" then a bunch of users](img/xkcdbot/post.png) ## Birth Back in 2019, I signed up for a Mastodon account on mastodon.technology. Soon I began looking around for xkcd bots. There were several, but most of them were defunct. I would soon make up my mind to create my own. I have little memory, but per the [git log](https://github.com/fakefred/xkcdbot/commits/master) I finished it in 9 days. It ran on Node.js, which unfortunately was my favorite tech stack back then. I registered [@xkcdbot@botsin.space](https://botsin.space/@xkcdbot), then daemonized the bot on the same server I hosted my comics (which, for which I apologize, was also on a Node.js server). I wrote this bio: >I'm an xkcd bot who shows up at Randall's house at 3.3 millihertz and >asks "Hello, did you publish a new comic?" I occasionally dress like >a velociraptor just to freak him out. >If he admits he has drawn a new comic, I seize it and post it right here >before Randall shoots me down with a drone. ## Rise The bot account was created on 2019-08-19. On 2022-10-28, xkcdbot gained 1k followers. It took 1166 days. On 2022-11-23, the number grew to 2k. It only took 26 more days. Of course, the surge owes to Elon Musk for pissing off so many people off Twitter, but I'm sure there are two more reasons as well: ### Killer features - 5 minute polling interval - explainxkcd link - DM for "subscribers" - Comic thumbnail is focused on top left, so no spoilers ![Only the left-hand side of the comic is shown in the preview](img/xkcdbot/thumbnail.png) ### Administration The bot lives by a few simple rules. It: - does its damn job - has near-perfect uptime - never solicits followers - never interacts with people unless asked to - has no new features for three years ## Accidents My code broke in production exactly once. There were other accidents, but they were all due to botsin.space downtime or Randall uploading the wrong comic. ## Conclusion I believe this resolves all remaining questions on this topic. No further research is needed. ## Update (2023-10-22) It turns out this does not resolve all remaining questions on this topic, and further research is needed. The problem is accessibility. On xkcd.com, if you hover your mouse on the comic, a tooltip shows up. This is known as "hover text" or "title text", which uses the "title" HTML attribute. In 2019 I wanted to create a similar experience, so I put it in the alt text. However it wasn't the intended purpose. The alt text is meant for: - A replacement when the image cannot be displayed - Assistive technology such as screen readers On the fediverse it's mostly the latter. Right now, the awesome [Sam Levine](https://botsin.space/@SRLevine@urbanists.social) is doing the noble work of replying to every post with a captioned version of the same comic. But it is a workaround. Around my reluctance to touch my rotten codebase, my incompetence as a developer, and my lack of interest to caption the comics myself. Whenever I post on my main handle, I make sure to caption my images and audio. But sadly xkcdbot cannot do that right now. > Why not? Because Randall doesn't caption comics when they are posted. > Can't you fetch the caption from explainxkcd? That might take hours before it's ready. Plus, caption might be incomplete and susceptible to vandals. > Just delay the post until the caption is ready! We don't know how long it will take. Also, I created the bot in order to read xkcd as soon as possible. I cannot accept the delay. > Just edit the post! I made the bot in 2019, when "edit" wasn't a thing. I _could_ make this feature right now, but I haven't touched my codebase for 4 years, and I don't use Node.js anymore. ## Conclusion Accessibility for a bot is not an easy task. It's not a tech problem; it's a matter of community. I admit I cannot solve it by myself. Therefore, I am going to ask for the community for help. To be continued.