I wrote my first twitter bot in 2009: willsburroughs. Will made random searches on Yahoo, picked some random results, and slammed bits and pieces of them together as messily as possible.

Will was happy and so was I. It felt important and fun to be writing such a thing; in fact, the experience in part led me to my undergraduate thesis and its resulting software (prosaic).

My second bot was also named for a William: shakesbot. It tweeted plays by Shakespeare line by line, prefixing each with the current speaking character.

Both bots died when the Oauthpocalypse came. I was so distraught by this that, instead of simply re-adjusting the bots to work with the new API, I abandoned them. I don't know why I reacted so viscerally to this event. I think it amounted to a betrayal: Twitter had, until that point, felt like the early web for which I have so much nostalgia.

I didn't write another Twitter bot until some time in 2013. I didn't actually make one public until this month.

The Oauthpocalypse seemed to symbolize a transition away from anarchy and bot-love for Twitter. I just assumed that bots would be explicitly forbidden with the new API. I didn't bother risking more creations in the face of presumably draconic terms of service. I realize now that I was foolish. Bots have never been more popular, oauth or not.

Making a bot is certainly less convenient with oauth, but all the same possibilities exist. I've found that using Adam Wynne's twitter-api library for Clojure is great for coding up bots right there in a Clojure REPL.

I love Clojure but as bots are ultimately long-lived processes I'm wondering if it's the best choice (I'm not too fond of long-lived JVM containers all over my cheap cloud servers). Clojurescript compiled to work with v8 might be a good alternative, as might Hy or Chicken.

I'm happy to be returning to this art form.