summaryrefslogtreecommitdiff
path: root/docs/random/xkcdbot.md
blob: 47ea2c0d3fb55d85432ff8727264022470238e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# xkcdbot

![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.