#NaBoMaMo: The First 15 Bots

Poetry, Rambles

I am, absurdly, trying to make 30 Twitterbots in 30 days, as part of the great collaborative endurance drafting celebration that is #NaXxXxMo. I’ll write at more length about it all, but here are some rough thoughts on the first 15 days, and details on the first 15 bots. These are all first or early drafts rather than complete works, but I’m happy.

Why I Love Twitterbots

1. Twitterbots are a wonderful form for sketching out artistic ideas. This is because procedural art makes sketching out a lot of results very quickly (this bot took under an hour to make), and also because Twitter is the sketchbook and commonplace book of the world. That is, it’s a social spae where everyone is sketching out very rough ideas, early thoughts, first drafts, messy poems, little doodles, and sharing them with each other. It allows process to exist in a casual social space. And it also allows that process to be infinite: you never stop sketching.

2. Twitterbots are the telos of a number of significant artistic movements’ ideas:
– Suprematism’s interest in objective relations between elements;
– Futurism’s obsession with technology, automation and obsolescence;
– The Oulipo’s keenness to write not poems but machines to generate poems and to implement processes to exhaust those machines;
– Modernism’s flirting with intertextuality, because a Twitterbot is incontrovertibly in a corrupt social space and defined by its relation to the elements around it;
– Flarf’s anti-poetry and internet fixation;
– Uncreative writing’s valorisation of process over product, because Twitterbots successfully remove the author from the individual product, remove any suggestion of authorial choice or agential production: you author the process only

3. That last point is the most essential. Because by automating and infininitising some artistic processes, you draw attentiomn to when human agency is actually important. Twitterbots are not the enemy of human poets, but a troublesome friend locked in dialectical relations. We show each other how we work. We see when automation matters and when agency matters. Massive exercises in uncreative writing or painting now take trivial or low effort, so when they are done by a human, the artistic value is found in the very pointlessness of the effort, how it expresses agency in a deterministic world. Individual insight can be simulated, but only badly and occasionally, so insight becomes both more clear and more suspect. We see the human in the robot and the robot in the human.

4. They are the best comedians: they repeat a joke until it isn’t funny, then until it is again, then until it isn’t again, then…

5. They are an awkward intervention into a hypercapitalist space. While they clearly contribute to the success of Twitter by making it more pleasurable to be there, they disrupt the smooth collection of data for the purpose of advertising sales. Their strange follower patterns and uninterpretable tweets gum up the algorithms which make lives valuable. Their wholly inappropriate affective stances are gentle disruptions of the emotional timeline. They do not destroy capital, but they do make awkward spaces of critique within it, sometimes complict, sometimes destructive.

6. I’ve now made around 20 bots, and I feel like a farmer, quietly tending to my herd, my crops, feeding them, giving them to feed you.

The First Fifteen

1. Bot Vaizey

Former UK Culture Secretary Ed Vaizey made a crashingly silly speech in which he demonstrated the same level of creative acumen that earned him the mockery of most artists in the UK. James Varney asked if I could respond with a bot. I hadn’t planned to start #NaBoMaMo with something fairly slight, but doing a snap response bot (see also: @HardBiscuitsUK) by request felt very much in the spirit of the month.

This was knocked together very quickly, and then later given an update to give it more variety and depth. I find that the easiest and most fun bit of making a CBDQ bot is coming up with pleasing syntax varieties: the hard long busywork is synonyms. The two things that quickly give a new bot depth are *long* wordlists for every variable term, and nested syntaxes generating tweet variety. Once my bot is sketched, the big job is going through it word by word and asking “Can this be randomised? Or expanded to a new syntax?”

Platform: Cheap Bots Done Quick (source)
Dev time:  1 hour to get a passable version, 45 more minutes to current completion level
To do: Rake a thesaurus to expand basic elements, add some more syntaxes

2. Orkney Bot o Wirds

This is an extremely simple bot programming-wise: it has a long list of words to pick from, and a 1/7 chance of tweeting a random book, resource or encouraging creative message instead. It involved a lot more actual writing than most of my bots, though, because I wanted to make an interesting usage example for each word. Usually the writing of a bot is a trial-and-error process of combining and recombining elements until you get the right feel (more like cookery than writing), but this involved switching back to a different type of thinking.

I think this bot has broad appeal: it picked up the most followes the most quickly. It’s interesting how little that’s related to programming depth! Often the bots that take me the most time to code have the least broad interest, though they’re often the more appealing ones to boteurs. It’s that difference between being interested in the process and being interested in the result.

Platform: Cheap Bots Done Quick (source)
Dev time:  30 minutes to release, 3-4 hours since getting the word list up to the end of F.
To do: Keep going to the end of the dictionary, tend indefinitely as more books and resources become available.

3. Jamie Jones, Urban Explorer

Inspired by @str_voyage and @spacetravelbot, I wanted to make a horror version of the infinite journey bot, so I came up with the scenario of an urban explorer trapped in an endless series of tunnels. Aesthetically, I decided to go for panicked and impressionistic rather than straightforwardly narrative. This led to a problem that the results seemed quite vague and uninterpretable, and then I realised it would work better with a clearer cultural context, so I set Jamie’s journey in tunnels beneath Detroit and packed the bot with relevant references. This got it to a decent level of consistency. There’s also a cast of four characters in there, but they’re not currently functioning well narratively. The source includes some good techniques for randomising number of lines and line length, as well as a nifty text-glitch-generator.

Platform: Cheap Bots Done Quick (source)
Dev time:  1.5 hours
To do: Introduce more running plot, so it’s more satisfying to read a sequence; make the characters work better by giving them more specifics; intelligent replies if you try to speak to JJ; more variety in possible speech; ev̵e͝n m̷͘͝o̷̸͢r̴̵͞e͘ ẗ́͟͠҉̯͉̱̟̲e̢͍͙͖͚̞̘̲̰̖̔̌̚͘͘xͩ͜҉̨͕̤̥̹̦t͚̟̽ ǧ͐̈͆ͭͤͨ͗ͬ̋͑͏̧̹͎̬̕l̤̜̫̼̫̫̯̫̥͓̦̰̠͖͇̬͎ͯ̓ͨ̒̋̓͛̊̑̑̃̇̔ͮ̅͆̀̀͘͝i̡͇̺͖͙̘̼̜̪͛́͑̊̑͐̃̿̽̏ͤt̶ͪͥ͗͂͆ͩ̒͒̍̑̅͋̾͠͏͖̜̜̝͍̬̹͙̦͇̲̹̬̙̦̱̤c̾̌̊ͪ̎̿ͥ̊̔ͨ̂̇̄̐̽͊̊͏̡̺͉̼̘̤͇̥͙̘̳̞̖̦̦̮̮̯͜͠͡h͊ͦ̈́͗̎͗͛ͫͧ̽̔ͬ͒̕͏̢͍̯̘̬̥̰͖̼̀͝ ́ͣ͏̶͈͇͞

4. Awful Emoji

This was my first SVG bot. I used w3schools to teach myself svg, and cribbed from @someboxes and @hashfacade to figure out how to use it in CBDQ. The concept is simple and self-explanatory! I wanted to generate emoji to express every possible emotion. I tried to tweak the results so that they ranged from obvious feelings to just-over-the-edge-of-ridiculousness, and also to use some positional randomness to ensure that every face was a little bit askew, just like every human.

Platform: Cheap Bots Done Quick (source)
Dev time:  3.5 hours
To do: I could add more different types of eyes and mouth, and introduce elements for hair, blushing, &c, but I might be totally happy with the conceptual clarity of the current result! Scrolling down the feed, it’s interesting how much variety there is in emotion there from so few elements, and I may want to preserve that variety-through-simplicity.

5. Be the Bot You Want to See in the World

A straightforward joke bot, using the classic bot form of “Taking a sentence and having a couple of elements be randomly selected [verbs] or [adjective] [nouns].” In this case having a dig at the inspiring quote industry. The source has a couple of useful lists of nouns, adjectives and present tense verbs I culled from various internet sources by googling “massive list of nouns” and similar (you can just cull them from me). Text Mechanic and Delim.Co were vital for parsing these lists into a format CBDQ could read; I used those tools for almost every other bot this month.

Platform: Cheap Bots Done Quick (source)
Dev time:  30 minutes
To do: Add more quotes to substitute; find more good word lists to add.

6. Plural Fan

The bot version of a running joke I once shared, appending blatantly incorrect latinate plural endings to ordinary words, to make fun of people who like to say “octopodes” and “rhinocerotes” (I am one of these people). I had a really bad and funny version of this bot running in 15 minutes, which just took a list of singular nouns and whacked a plural ending on. Then I realised that it was even funnier if you trimmed one, two or three characters off the end of the word first, and spend 2 more hours figuring out how to do that. This would, I know, be trivial in a bot written in javascript, which could do the processing one each word automatically, but CBDQ has no such functionality. So I had to work out how to use a spreadsheet to do the processing on the 4000+ nouns, and learning that CBDQ’s parent project Tracery could create persistent variables (so that calling one noun would call one of its abbreviations). This was a ridiculous thing to do for this joke bot, and a lot of laborious busywork that could have been done better in another programme, but it was useful to learn how to do these things for future projects where it might be more necessary. And doing it was the last straw for me deciding that I really, really needed to learn how to code a bot in javascript and host it myself.

Platform: Cheap Bots Done Quick (source)
Dev time:  2.5 hours
To do: She is perfect. She is written in the wrong programme but the results can’t be improved.

7. Quittr

Inspired by carebots like @hydratebot and @check_o_tron, I decided to make a more aggressive version that would put regular reminders in my timeline to quit twitter when I didn’t really want to be on it and was only being kept there by the addiction mechanics created by its designers. I also wanted to make a bot quickly because I was feeling the #NaXxXxMo burn. While the bot is simple, there’s some neat work in the code, with different syntaxes reusing different variables lists in subtly different ways, and employing Tracery’s .modifier system to do so. I learned making this bot that all strings in CBDQ are best off being written in lowercase, using #variable.capitalize# when you need it, for maximum flexibility.

Platform: Cheap Bots Done Quick (source)
Dev time:  30 mins
To do: Bot complete. He doesn’t need anything else.

8. failurebot

I was in the middle of touring and performing and too tired to make a good bot. So I made myself a bot in 15 minutes to remind me that failure is OK. Very appropriately, it got banned by Twitter because the code was so basic (just a single list of options to tweet) that it looked like spam to the algorithms. So I had to spend another 15 minutes adding a tin bit of variety to the code to prevent this from happening. There are now 144 possible tweets. I hope this is enough for Twitter to be kind.

Platform: Cheap Bots Done Quick (source)
Dev time:  30 mins
To do: I could add a lot more syntactical and word-choice variety and this would improve the bot, but wouldn’t that miss the point?

9. Daily Antifascism

This was my immediate creative response to My Arse’s election. I was also hosting a performance installation that night where people built buildings and then destroyed them, which felt appropriate. I ripped the idea direct from Henry Bell’s @Radical_Glasgow and then put a call out to my social media followers for good content. I think that, due to the current lack of diverse content, this is my worst bot of the month so far, but that it has the potential to be one of the best when I put the time in.

Platform: Cheap Bots Done Quick (source)
Dev time:  30 mins
To do: Much longer content lists; find a way to schedule historical tweets for their on-this-day day and repeat annually.

10. hg_ebooks

I needed to teach myself how to code bots in javascript and host my own bots, so I decided to make the most common sort of bot: an _ebooks warped mirror which generates markov chains based on your own Twitterfeed. Nothing original about this, but a very useful exercise for learning the necessary for future bots. I followed this tutorial because it was the most step-by-step, even though it uses python rather than js. By doing that, I started to learn how to use the command line, began to gain a vague and uncertain understanding of what words like “repo” and “stack” mean, and how to host a bot on Heroku. Alongside that tutorial, I had to google a lot more tutorials and questions like “How do I use GitHub?” and “What is a dyno?”, and regularly copy-pasted an error message into google and fished until I found a result I understood enough to copy-paste the right bit of the answer. I still don’t really understand any of it, but I can do it. Mostly.

Platform: Ruby and Python, Heroku (I’m not sharing the source (a) because it’s less useful to you than any of the tutorials online (b) because everything that’s my bit is bad code (c) I actually don’t know how to do this properly because I don’t understand GitHub yet). The same goes for Heroku-hosted bots below. But if you’re desparate to know how I did a thing, message me and I’ll try and share the relevant bit.)
Dev time:  1 hour (plus 4 hours preparatory time relearning js for free at CodeCademy)
To do: I might redo this using Mispy’s version, partly because it produces slightly more satisfying results by building a bigger corpus, and partly because doing so would teach me more useful things for future bots.

11. Bot Save the Queen

Inspired by the beautiful @f__lb_tt_r, I decided to push it a bit further and have fun with the Sex Pistols, based on a suggestion from @inky. The implementation is straightforward in CBDQ, with most of the time spent compiling good rhyming word lists from RhymeBrain. As with @PluralFan, this would be much quicker to programme in JS using an API from RhymeBrain to automatically select a rhyme, but on the other hand the bot is already so chaotic that I like the creative control of handpicking the wordlists. The creative work of this bot is in getting the balance right and the probabilities of each option right, so that the bot as a whole has the right amount of entropy, and distance from and connection to the original. This is harder than it sounds! Which rhyme is too far away to still be funny? How many syllables can I break a word down into before it becomes too much like nonsense? How frequently should Johnny sing a line from the original? This kind of tweaking is at the heart of satisfying procedural generation.

Platform: CBDQ (source)
Dev time:  1 hour to get the first two verses working, another 30 mins later to add a third
To do: Add the remaining 9 verses at my leisure, tweak to perfection.

12. Anarcoo

This was a pre-existing account I’d let lapse, so I decided to resurrect it as an automated propaganimal. I used this tutorial to learn how to make a picbot, mashing it up with the previous tutorial to host on Heroku. I also had to use more of the JS skills I’d picked up to write some of my own code. A lot went wrong. I didn’t know what a Procfile or a package.json were (I think I do now?) and apparently I needed both of those, and I have a vague sense of what git init and npm install do when I put them in the command line. It took three hours to hash through it all, but it was worth it. And the results make me very happy.

Platform: JS, Heroku
Dev time: 3 hours
To do: Reduce posting schedule through some math randomisation, vary the moos more.

13. 500 Dollar Words

Going back to making more original bots, this one is an automated tribute to Aram Saroyan’s beautiful poem “lighght“. It takes a random word and repeats two characters near the middle of it. I wrote the javascript to do that to a random word in 10 minutes. Then I spent four learning how to use the Wordnik API and wordnik-bb so that I could use much longer corpora for my bots, which involved a very lengthy detour learning that node-gyp and contextify were a thing that I didn’t understand but were not working properly, and trying out various things google told me to do to fix them, which I didn’t know what they were doing to my computer but I think it’s OK. I was originally going to try and have each word appear in colour on a pleasant cvg background, but (a) I was exhausted by the end of it, and (b) it turns out this is really hard for anyone to do in node.js on Windows and has made adults weep. So partly because of that, and partly because I aesthetically like the accessible directness of tweeting a single word, I think I’ll leave this bot as it is.

The good thing about spending 4 hours banging my head against what should be a simple thing is, next time I want to interact with the Wordnik API, I’ll be able to do it in around 15 minutes, and next time I want to interact with any API, I’ll have a much better sense of how to go about it. I love learning new skills.

14. 5×5

After an exhausting weekend of heavy coding, I wanted to do something light and easy. I didn’t need to learn anything new for this, but I did get to reprise what I’d learned about SVG and element randomisation. The bot has no deep meaning or artistic purpose: it’s a sketch, an experiment in seeing what happens when you define a set of parameters for randomising elements and put them in objective relation to each other. It will roll on experimenting forever. Instead of making a complicated bot, I wrote the thoughts I opened with in this post.

Platform: CBDQ (source)
Dev time: 30 minutes
To do: Nothing.


From an idea suggested by @ammonite, this is an automated tribute to Kurt Schwitters’ classic Ursonate. It was a total joy to make, with quite a fancy but neat source code. There’s a nice use of nested saved variables here, I think. And the whole thing is built out of elements of no more than two characters. As a method, I went through the whole of the Ursonate, and parsed the semantic structure of all of the stanzas and a good chunk of the words.

It did make me realise that the power of the Ursonate isn’t just in the playfulness of individual verses, but in the impressive intertwining of elements and patterns across the whole of the piece. This is worrying, because now I’ve got the method down, I may have to do a 50,000 word procedural version for #NaNoGenMo

Platform: CBDQ (source)
Dev time: 2 hours.
To do: Nothing.

Brief Feelings on the Halfway Mark

I am quite tired and I don’t know if I’m going to make it. This feels good. I like the obsessiveness of this project, the self-destructiveness of it. I am willing to fail, but I also like pushing myself past all sense. I also like giving myself permissionm to just make, regardless of quality, and I’m quite surprised by the quality of some of what’s come 0ut. I do need to pace myself a bit better, but I’m also happy.

I’ve learned a huge amount. Technically, obviously: I have way more skills and understanding than I started the month with, which was part of my reasoning for doing the month. I think it’s important to learn some of the languages and rituals our world is now built on. But I’m also learning a great deal about the aesthetics and mechanics of procedural generation: of what is satisfying and what is beautiful, of how to balance simplicty and complexity, of how generated texts can function as standalone objects or social interventions or both.  And this, in turn, is learning for poetry in general. What is the sonnet form if not a machine for producing poems? What is concrete poetry if not an exercise in manipulating elements? What is an artist if not a supremely complicated bot?


to my backers on Patreon, who give me the freedom to do very strange and free projects like this.

Some Strategies of Bot Poetics

Poetry, Rambles



I think that Twitterbots are the most important development in contemporary poetry. Twitterbots are combining avant-garde conceptual techniques, ethico-political intervention and high expressive potential, and they’re doing so in a popular social space: they are a popular and populist form of poetry. Twitterbots are published for free, and the culture of making them is an open, sharing culture: Twitterbots push poetic surprise into your social space, and their authors are encouraging and supporting you to join in the making.

So I want to do a little work outlining what I think Twitterbots are actually doing poetically. While there’s an open culture of sharing the technical structure of Twitterbots, and considerable discussion of the ethical and political purposes of Twitterbots, there hasn’t been as much attention to their texts as texts, to how the pleasures of Twitterbots are expressed. (For a notable exception, see the bot category at I <3 E-Poetry.)

I’ve made a few exclusions in this discussion to make the task simpler at this stage. First, I’m analysing Twitterbots which are wholly or primarily text-driven: there are a wealth of image-driven visual art bots which I’m not engaging with here. Second, I’m just analysing bots on Twitter: while bots do exist on other platforms, Twitter has seen the most extensive spread of bots so far, and constraining by platform helps to analyse how they function in this particular social space. Third, I’m analysing bots rather than procedurally-generated texts: while this field is also rich (see NaNoGenMo in particular) and much of the same analysis applies, I want to talk about texts which have sociality built into their making.

Below is a (definitely non-exhaustive) list of conceptual strategies in Twitterbots. Each comes with at least two bot examples, and at least two example of a printed text employing the same strategy. Many of these are drawn from Craig Dworkin and Kenneth Goldsmith’s anthology Against Expression. After a note on the poetic possibilities of different technical bases, I finish with a comparison between Twitterbots and printed texts, asking how the social space of Twitter changes and magnifies these established conceptual strategies.

The Strategies

1. Recontextualisation

@thewaybot (by @elibrody) curates a timeline of tweet fragments beginning with “I like it when”. The bot extracts diverse and copious texts from their original contexts and presents them as simple statements: “curating subtleties of human nuance”, it offers a picture of what humans like – or, rather, what English-speaking humans say they like on Twitter. The bot cannot distinguish between senses, and so straightforward statements (“I like it when a porn has a story, some background.”) are muddled together with sarcasm (“I like it when my nose bleeds bc of heat.”), statements lose their referents (“I like it when you wear those.”) and meaning is fragmented into nonsense (“I like it when people take care of.”) Whereas the foundational net- and data-art piece We Feel Fine offered a survey of human feeling that approached accuracy, @thewaybot is more a conceptual poem on the idea of liking: it is always incomplete, always reaching for new meanings.

@pentametron (by @ranjit) searches Twitter for tweets forming perfect pentameters (ten syllables in an unstressed-stressed pattern), sifts them for rhyme, then retweets rhyming pairs. The result is an ever-unfolding poem of poetic couplets, which are again recontextualised into sonnets on the bots Tumblr. Each source tweet thus has at least three contexts – its original authorship, its couplet, its sonnet – in addition to the context provided by the reader, and so the meanings of the source tweets multiply in possibility. The recontextualisation draws attention to the unintentional music of language of Twitter, and also creates unexpected jokes, critiques, aphorisms and nonsenses which have a pleasure of their own.

See also: @NoContextQueer; @wikisext; @VillanelleBot; @sixworderbot; @guardianhaiku; @a_travel_bot; @br0k3nw0rld; @HottestStartups; @nice_tips_bot


Sally Alatalo, Unforseen Alliances, which recontextualises the titles of mass-produced romance novels into new narrative poems.

Caroline Bergvall, VIA (36 Dante Translations), which collates 36 different versions of the openin to Dante’s Inferno.

2. Procedural Editing

@boy2bot (by @rainshapes) searches Twitter for tweets with the word “boy” in them, then transcribes them on its own timeline, replacing “boy” with “bot”. In part, the result is the equivalent of @thewaybot for the word “boy”, creating a collage of collective impressions of the word, but the editing also creates multiple science fiction futures: the future where “This bot just bit the shit out of my nipple”, the future where “my poor bot is sick”. Each tweet contains a new scenario, and the collective whole is a vertiginous and often pornographic robot u/dystopia. And, of course, the bot is an in-joke for bot culture, which frequently imagines its bots as autonomous entities with lives and personalities: @boy2bot imagines a world of fully-realised Twitterbots.

@scarequoter (by @inky) takes headlines from BBC news which included quotation marks and places new scare quotes around a random word or words, performing a critique of how meaning is produced by news editors. Generated tweet frequently cast doubt where you would expect none (“Cuba crowds gather for Stones ‘concert’”, making you question what is wrong with the concert; “Go wild to protect food ‘security’”, undermining the politicised jargon that is “food security”), and thus expose where the original headline-writer elected to place doubt or distance, a decision which is frequently politically-motivated. The bot is also often very funny as a result.

See also: @at_a_Blackbird; @BlackBoughBot; @Suxting; @JustToSayBot; @storyofglitch


Leevi Lehto, Paiva, which takes all news releases from the Finish News Agency on a single day and orders them alphabetically.

Audun Mortensen, Roman, which transcribes all the sentences from Nabokov’s Lolita in reverse order, with “Roman” replacing “Lolita” and “Sammy Sammy” replacing “Humbert Humbert”, with a picture of Roman Polanski on the cover.

3. Juxtaposition

@litpatches_txt (by @lizardengland) combines the names of famous literary works with the descriptions of videogame patch notes, juxtaposing two very specific artforms and jargons in a way that creates new imaginary books: “Nabokov’s Pale Fire but with dungeons with multiple difficulty settings”, “Marx and Engel’s The Communist Manifesto but with unique powerful artifacts that can be found throughout the world”. The result is a study of the specific found poetics of videogame patch notes – by recontextualising them into a literary sphere, their poetic quality becomes apparent – a study of the space between the worlds of “high art” and “videogames”. It is absurd to imagine “Pynchon’s V. but with a brand new character select screen”, but absurd in a way that exposes the limitations of both literature and videogames.

@TwoHeadlines (by @tinysubversions) recombines two news headlines into one, creating fantasy news: “Texas Will Be Low for Easter, but Don’t Get Used to It”; “Yoga sessions to be part of Brussels celebrations”. The resulting jokes frequently critique the political space of the news in question, as with the frightening and/or inspiring “F-35 washes feet of Muslim migrants, says ‘We are brothers’”, but the tweets also reinscribe the assumptions of news headlines as often as they undermine them. @TwoHeadlines is thus a slightly broken exploration of the space of the news headline: it tells the truth of headlines, but with enough of a slant to make that truth more apparent.

See also: @AndNowImagine


Marie Buck, Whole Foods, which combines texts from the supermarket’s corporate website, an anarchist zine, and online etymological dictionaries.

Brian Joseph Davis, Voice Over, which orders and combines taglines from Hollywood films.

4. Signal from Noise

@rom_txt (by @zachwhalen) searchs the source of videogame ROM files and transcribes the texts it finds. The result is frequently meaningless and uninterpretable, including seemingly random strings of letters and lists of names or inventory items, and frequently mundane, including poorly-written game dialogue, but even these tweets serve to explore the textual space of early videogames. However, the truncation of tweets and the presentation of texts not originally intended to be read in sequence sometimes leads to serendipitous poetry:

“You’re so kind!
You won’t forget me,
will you?
Your adventures must
be so exciting!
You’ll stay with me”

Reading ROM_TXT is thus often a process of looking for signals in the noise of the source.

@MOVIESCRIPTCAPS (by @thricedotted) performs a similar operation on film scripts, tweeting only those extracts that are in all caps. This is conceptually close to the Recontextualisation examples, particularly @thewaybot, but the poetic effect is different: whereas each @thewaybot tweet tends to be meaningfully complete in itself, @MOVIESCRIPTCAPS tweets tend to be commonplace and difficult to interpret out of their original context. Reading its feed is a process of trying to construct meaning from the sequence, or looking for tweets which have a particular quality: it is as if the bot is churning through data in the hopes of finding something interesting, the hilarious tweet that reads “THIS BEAR HAS LOST HIS MIND”, in the middle of a sequence that reads “CHAMPAGNE BOTTLE”, “PLATOON CP”, “CELLPHONE FACE PLATE” and “NOISE SUBSIDES”.

See also: @wikishoutouts; @TheStrangeLog


Harry Mathews & Alastair Brotchie, Oulipo Compendium: an anthology of techniques and texts, many of which involve the repetition of procedures which generate high noise-to-signal ration

Noah Eli Gordon, Inbox, which directly transcribes the author’s entire email inbox, creatin unreadable overwhelm the readers searches for a signal.

5. Space Exploration

@restartthevoid (by @NoraReed) combines apocalyptic and horror symbology with error message syntax. Each tweet imagines a malfunctioning universe, a twisted intepretation of current or future reality: “security certificate of heavens has expired.”, “egg sac is hatching; nature not found. no such snake exists. heavens is busy; crow with a thousand bones.” The bot’s source is bounded, though it can be expanded: it is not searching for lexis or syntax outside its own source. The totality of the bot is thus a complete exploration of its own aesthetic space, and it derives its poetic power from the power of those pre-written aesthetics – but its individual tweets are still beyond the ability of its author to fully predict; that is, its aesthetic space is big enough that it will continue to surprise.

@dronesweetie (by @the_log_lady) tweets a Deep Learning programme’s attempts to describe photographs of drones: it thus relentlessly explores the space of how this artificial intelligence understands drones. Because the computer does not understand drones, the results are deeply eerie, occasionally funny, and have an unfortunate beauty: “a man is flying a parachute that they can just get prepared to land in the sky”, “two butterflies that are sitting next to each other”. Unlike @restartthevoid, the possibility space of @dronesweetie is technically infinite, but like @restartthevoid, @dronesweetie’s poetry feels bounded, like a complete exploration of a specific aesthetic space. Interestingly, both bots can continue to have their possibility expanded: the former by its author adding to its source, the latter by the crowd continually training the bot.

@genderpronoun (by @tylercallich) tweets suggestions of new pronouns, including full grammatical declensions. The possibilities are, if not infinite, then very very very large, given that the bot appears to draw on a huge range of symbols and syllable combinations to suggest new pronouns. The results are aurally pleasurable, and the pleasure also comes through the surprise: each tweet contains an unexpected combination of sounds, and occasional serendipities with other languages allow for strange and allusive identifications.

@restartthevoid draws on a bounded corpus created by its author; @dronesweetie draws on expanded knowledge created by crowd-assisted machine learning; @genderpronoun takes as its source the full orthographic possibilities of the expanded Roman alphabet. For more on the poetic possibilities of these choices, see A Note on Sourcing below.

See also: Nora Reed’s complete list of bots; @spacetravelbot; @MagicRealismBot; @str_voyage; @contingencymsgs; @DUNSONnDRAGGAN; @ThanetGuide; @memorypoem; @wearerain; @MythologyBot; @portmanteau_bot; @fantasy_florist; @feelings_js


Katie Degentesh, The Anger Scale, which runs the questons of the Minesota Multiphasic Personality Inventory through a search engine and transcribes the results, creating a poem between the Inventory and the internet.

Fiona Baner, The Nam, which writes a continuous description of multiple Vietnam war films, exposing both their possibility space and the author’s interpretation.

6. Exhaustion

@everyword (by @aparrish ) is the original exhaustive bot: its aim was to tweet, one by one, every word in the English language – or at least in a given dictionary. The content of this rolling poem is not merely the dictionary, however, but also: the number of favourites and retweets each tweet received, giving preferential meaning to particular words; the replies each tweet received, creating an going dialogue around the English lexis; and the vast number of echoes and recontextualisations of each individual word. How a given tweet appeared in my timeline was different to how it appeared in yours, and so the poem was different for every reader. The strength of this concept is appealing enough to spawn numerous tributes and derivations: reimplementations like @everybird_ and the expansive @everysimile; many jokes like @everywordisgay; attempts at exhausting an infinity or near-infinity like @nondenotative and @everyadage; and, finally, spiralling self-reference by the original author in @libraryofevery.

@EuphemismBot (attribution unlisted) indicates the continuity between exhaustion and exploration: is a bot that explores a space always attempting to exhaust that space? Here we can imagine an end to all the possible euphemisms when every verb-noun pair in English has been tweeted, but is the poetry in the exhautiveness, as with @everyword, or in the humour of the possibility space, or, reaching back, in the signals in the noise? Where the space is infinite or potentially infinite, as with @MagicRealismBot, exhaustion is possible, but the attempt at exhaustion may still define the twitterbot’s effort; where the space is finite and bounded, as with @wearerain, exhaustion seems less important than the poetry of each individual tweet, but the aesthetics of exhaustion still loom behind the poetry. In the several bots which textually describe a space, such as @str_voyage, exhaustion matters less: repetition just means the voyage has circled back on itself, or is appearing to – here, the power is in the bot’s imagined extension forward into infinity.

See also: @YouNeverDidThe; @SnowballPoetry


Christian Bok, Eunoia, which creates prose-poems from almost every unvocalic word (words with only one type of vowel) in an English dictionary.

Clause Closky, The First Thousand Numbers Classified in Alphabetical Order, which is what it says.

“Exhaustion” is an Oulipian term: it was often said to be the Oulipo’s mission to fully exhaust the possibilities of any given constraint.

7. Imitation

@oliviataters impersonates teenage girls on the internet. It applies natural language processing – a form of analysis of language that models or imitates natural language – to internet texts, weighted towards certain linguistic features of teen-speak. Part of its pleasure comes, again, from finding beautiful signal in noise (“beneath the armour of skin and bone and mind, most of our colours are right”, she tweeted recently, but also “would have they did his name is tom brady”), and part of its pleasure comes from the imperfection of its imitation: @oliviataters dwells happily in the uncanny valley, where we can tell she is a bot, even though she is sometimes indistinguishable from a human, and we enjoy the fact that she is a bot along with the broken virtuosity of her impersonation. It is more poetic when she tweets “i was amazingly bad ?￰゚マᄐ ” than when my teenage cousin tweets it, because she is a bot.

@poem_exe writes haiku, very beautifully. I have deliberately avoided finding out how it works, though it seems likely that it involves some level of markov chaining applied to a corpus of haiku texts, plus some level of context-free grammar (the system used by bots like @restartthevoid, which involves creating a set of possible syntaxes into which words or nested syntaxes can be plugged) to structure the haiku. Again, there’s the pleasure of finding signal in noise, though the signal-to-noise ratio is high; again there’s the pleasure of observing the bot’s virtuosic impersonation of a haiku poet. In this case, however, the understanding of haiku seems complete enough to grant the bot full autonomy as a haiku author: imitation has achieved originality.

See also: @moonmurmur, and _ebooks bots which apply markov chains to owners timelines.


Paul Fournel’s “Canada Dry” texts, which are “texts which have the taste of a restriction but do not follow a restriction” – that is, they look as though they’ve been written procedurally, algorithmically, or through severe constraint, but haven’t. These texts have a similar uncanny valley effect to bots impersonating humans: you can tell something is wrong but you can’t place it. The exact bot analogue here is @horse_ebooks, which pretended to be a markov chain type bot but was written by a human.

8. Instruction

@tranquilbot (by @slimedaughter) is a rolling meditation: it gives absurd instructions for calm, imaginative visualisations and affirmations. As with @restartthevoid and similar Space Exploration bots, the poetry is more closely authored than many other bots: the full possibility space is predetermined, and the act of poetic authorship is in describing that possibility space. However, an extra layer is provided by @tranquilbot’s exension into social space: it can be read as a timeline to guide a meditation, and individual tweets might be a calming intervention into a busy timelines. Instructional bots are social by design.

@DOTHINGSBOT (by @norareed) foregrounds its interventionist style: it is specifically designed to appear dramatically a Twitter timeline and provide interruptions for people with executive function disorders. The bot is also, however, given a poetic frame: a robot character, an amusing style, a relationship to the reader, and enough variety of forms to continue providing interest. These poetic techniques both make the bot more interesting as a text and strengthen its psychological function in a fusion of aesthetics and purpose.

See also: @CalmingBot; @autoflaneur; @check_o_tron


Yoko Ono, Grapefruit

Gizmet, Game Poems

A Note on Text Sourcing

There are three main methods of generating a Twitterbot text:

  1.  Context-free grammars, in which authors create a syntax or set of syntaxes into which words and nested syntaxes can be plugged.
  2. Natural language processing (particularly through markov chains, a simple probabilistic analysis of language), which applies algorithms and sometimes machine learning to a corpus of texts, such as a Twitter timeline or the Project Gutenberg library.
  3. Various forms of appropriation, often using an API (application program interface), to extract texts and sources from news sites, Twitter trends, or libraries of synonyms and rhymes.

Each technique allows for different kinds of poetics. The first technique, context-free grammars, is suited to authors who want to define and explore their own possibility space: it is easier to tightly or loosely control the poetics of the results, while still allowing for strangeness and surprise. The second technique, natural language processing, is suited to authors who who want to play with or subvert a given style or means of writing, and also tends to generate a high noise-to-signal ratio unless the algorithm is sophisticated. The third technique, sourcing texts and fragments from outside the bot, is particularly suited to authors who want to apply specific and controlled manipulations to existing types of text. Often, twitterbots combine more than one of these techniques to achieve their effects, but it’s important to recognise that the technical basis of a bot often determines its aesthetics – new bases, we can surmise, will allow for new aesthetic possibilities, though there is much left to explore in our current tools.

Some Differences Between Twitterbot Poetry and Printed Poetry

It should be clear from the examples given that, conceptually speaking, there is not much that is necessarily new in Twitterbot poetry: poets have been authoring procedural systems, appropriating and recontextualising texts, and exhausting possibility spaces for a very long time. The exception, perhaps, is in the artificial pseudo-intelligence of natural language processing, but though the process is different the canon of conceptual poetry contains many texts that fruitful occupy the uncanny valley between the human and the non-human. However, computer processing and the specific social platform of Twitter allow for major differences in how those concepts are implemented, as does the creative context of the Twitterbot community – and these differences often reshape the concept entirely.

1. Magnitude

Procedures which are laborious to complete by hand can be accomplished quickly with a computer; corpora which took years to play with can now be analysed in minutes. The result is that Twitterbots often apply a concept several orders of magnitude beyond what was previously possible. Raymond Queneau’s 1961 achievement in Cent mille milliards de poèmes – which exhausts the full combination of 10 sonnets of 14 lines each – can now be replicated on a website in an afternoon, and @poem_exe, @Pentametreon and @VillanelleBot each contain vastly more poems than Queneau’s flipbook. Thus, where once the creation of a combinatorial poetry book was interesting in itself, now the poetic strength is in how that book is written and what that book has to say. Similarly, Kenneth Goldsmith’s 2003 work Day, a complete transcription of the New York Times of a specific day, is exceeded and rendered obsolete by text-scraping programmes which routinely create such corpora for a bot to play with. Because a computer can perform the concept with ease, the concept is now less interesting than what it can specifically express.

2. Infinity

Jorge Luis Borges described, in The Book of Sand, an infinite book – a book which, when you turn a page, grows more pages in either direction, and can never be exhausted. Such books now exist, and some of them are Twitterbots. Most Twitterbots are projected forward into infinity: whether or not they do continue infinitely (and Twitterbots fail, Twitter itself may one day close, and even the cloud is built on material architecture which can decay), each tweet is understood within the context that the tweets could continue being generated forever. Whereas a conceptual poetry book must eventually be printed and bound, so that even if it describes or pretends at infinity its boundedness is always apparent, a Twitterbot poem frequently comprehends infinity: infinite authorship is its baseline. The possibility space is always contained within the tweet. Relatedly, Borges non-infinite-but-very-large Library of Babel has been fully implemented online, and there are bots tweeting extracts.

3. Sociality

Every text has a social existence, but with printed texts that sociality is often hidden, assumed, forgotten or elided: we do not always think about what a book as book means when we read it, and too often a poetry book is confined to a shelf and rarely seen in public. A Twitterbot poem is always and incontrovertibly a social text: it can only ever be seen in a corporate social space. This gives extra power to instructional poems, because their instruction are always received at a point they can be performed; it gives extra disruptive potential to political poems, because there is a ready-made social space to disrupt; and it gives extra layers to conceptual poems, because their texts are dynamic and interactive rather than static and received. Notably, poetic strategies formally confined to the academic avant-garde firmly enter the popular sphere through Twitterbots: @everyword has been read by more people than most texts on UbuWeb.

4. Politics

For various historical reasons – the particular social groups which are furthering Twitterbot making and their interests in left-liberalism, the generation of internet architecture in cultures of technological utopianism, the open-source and open-culture tendency within independent programmers, the coming-of-age of Twitterbots in a specific sociopolitical moment – the culture of Twitterbot poetry has strong senses of ethics and politics. Many Twitterbot makers share their source codes and programming techniques freely; several Twitterbot makers have created platforms to make it easier for other people to write bots; the texts themselves are freely published; and at atmosphere of collaborative open discussion pervades the botspace. Meanwhile, alongside technical articles, articles on the ethics and politics of botmaking are the most common form of discussion around bots: the Twitterbots are always understand as social and political entities over which their makers must take ethical responsibility. This contrasts with the culture of conceptual poetry, which is frequently ethically bankrupt, taking the artistic defense too often: see, for example, Kenneth Goldsmith’s appropriation of the autopsy of Michael Brown. In the botsphere, conceptual poetic techniques are often turned to political ends.

5. Expressiveness

Threaded through all the above points is the idea of expression: to me, and filtered through my own political aesthetics, Twitterbots as a body of poetic work represent a turn away from uncreative writing and conceptualism-as-such. But rather than retreating from conceptualism into expressive lyric poetry, Twitterbots move through conceptualism into a new space: a space where the meaningful and the empty co-exist, where the signal and the noise are the same thing, where intelligence is artificial but ethically sculpted, where high concept processes are used to tell bad jokes, where the digital is rooted in social and bodily experience. That is, through an atmosphere of total linguistic saturation – frequently exhausting, frequently demeaning, frequently foreclosing of individual personal expression – Twitterbots are emerging as unruly personalities and disobedient poets.

Places to Learn and Make

Cover image by Duncan C, licensed under Creative Commons
Heartfelt thanks to my Patreon backers, whose contributions give me the time and freedom to work on my art and on essays like this. Join in from as little as $1 a month and get everything I make for free.

What Can Poets Do About Robots?

Poetry, Rambles


Robots have been writing poems for quite some time; indeed, robots have been writing fairly good poems since at least 1984. Conceptual poets and uncreative writers are either terrified or elated by the capacity of robots to outdo their most extensive combinatorial, processual and appropriative work; small advances are being made on automating formal metrical and rhyming schemes; and at least one robot is sufficiently good at the contemporary undergraduate Anglo-American lyric to pass unnoticed in its publications. However, thus far, the best robots are generally worse at impersonating human poets than the best (or worst) human poets are at impersonating robots, and so committed humanists might still be sceptical of robots’ capacity to truly write poetry.

One robot, however, has solved at least one poetic form: poem.exe is the greatest writer of haiku I have yet read. Combining the best of traditional insight and contemporary reference, poem.exe’s work consistently delivers the intuitively accurate observation and wisdom through juxtaposition central to the haiku form. The general problem of how to write haiku has been solved to perfection: all that remains to human poets is learning how to write specific haiku for specific moments, learning the discipline of haiku purely as a craft and a means of world- and self-understanding – innovation, newness and progress need no longer be a drive.

What does this success mean for human poets? Beyond combinatorial, processual and appropriative poetics (which were always imitations of roboticism in the first place), the haiku is the first poetic form to be solved; what this success means, however, is that more forms will soon fall before the robots. The general problems of the limerick, the  nonet, the ottava rima – these are only a matter of time. How can human poets defend their labour, and how can they find their reasons for writing? The answers will change as the robots march on:

1. Eke Out The Forms

It is not easy to solve a poetic form. This means that poets have a grace period, perhaps lasting a century or two, in which they are better at writing some poetic forms than robots. We should make the most of this while we can. Some truly lovely villanelles, homophonic translations, erasures and puSlogh vaghs are waiting be written before the robots master them, and indeed human mastery of these forms may be necessary in order to gain the skills required to write the robots that will master them. (The renegade reactionary poet will thus notice a further available strategy: to refuse to master forms, in order to slow the robots’ own mastery. In the end, this strategy leads only to refusing to write poetry at all, which, though it may be the preferred outcome for many, is likely not the intention of the renegade reactionary poet.) Running before the tidal wave has its pleasures, and the inevitability of defeat is grimly charming, but poets may desire more, and so must:

2. Invent New Forms

It has long been the pleasure of poets to invent new forms. In the age of robot poets, this task acquires new urgency. As the robots lag behind mastering the forms of yesteryear – the sonnet, the sestina – poets can proliferate new forms, inventing them, creating deeper understandings of the world through them, even exhausting them until they are rendered cliché, perhaps, before the robots catch up. But the robots will catch up. For a time, as artificial intelligence develops, new forms will proliferate faster than robots can solve them, but eventually the speed of the robot mind will be such that not only will forms be solved faster than they can be invented by humans, but also robots will learn how to author new forms themselves, rendering this area of human activity, like the authoring of poems, redundant. The only response can be to:

3. Write the Robots

Learning how to write robots is a task I have begun myself, and it is hugely satisfying. I can testify that the writing of robots is a poetic task: it requires learning how to manipulate a set of linguistic elements within a set of constraints to produce desired effects when performed for an audience. By writing robots, poets acquire, for a time, the satisfaction of being better than robots. Instead of running ahead of the robots, or fighting against the robots, we become the people furthering the cause of artificial poetic intelligence; instead of mastering the forms of poetry, we master the masters of form. Moreover, as with many current cases, the task of selection and curation will fall to humans: robots will write beautiful concrete poems before they will be able to tell that they have done so, and will require guidance to distinguish between poor, fair and perfect concrete poems before that form too is solved. This pleasure may, in its turn, last a good century or two. But, in the end, inevitably, someone will write a robot that is better than humans at writing new poetry robots, and this activity, too, will be taken away from us. Humans will thus:

4. Become Only Political

The problem of poetic form will be solved before the problem of life. Robots will master ghazals and sound poems before they can make all society loving, equal, joyous and just. That will remain the task of humans even when all the best poems are written by robots, and we must rise to it. We must perceive the inequities of the world, and write the poems that intervene in just the right way at just the right moment to make some small step towards something better. Poems that speak a truth, poems that crack a joke, poems that set off a bomb, poems that nurture a tired struggle, poems that rouse and rabble. Our poems may be awkward, they may be stumbling, they may be unsure, and they will certainly be less graceful and perfect than the poems the robots are writing, but they can advance the cause of the good in a way the robot poems cannot, because, for a time at least, the robots will not be able to perceive and construct the good. For a time. The skills require to write, select and curate perfect poems – and the resources to build the robots to acquire them – will surely lead to something better, won’t they? Once robots have bested us at poetry, I hope they will turn their attention to society, because we have done a fairly poor job of it so far. At that point, the character of the robot mind will be indistinguishable from that of a human mind, except faster, unless it engages a voluntary slow-down; indeed, humans may incorporate robot minds into their own flesh bodies, if only to write better poetry. Let the poetry robots manage our society for us, let them bring about post-scarcity, equality, community and care, because then we can:

5. Become Only Personal

With the task of a fairer society complete, and with the distinction between robot and human minds porous and enlivening, consciousness can turn itself fully towards self-care, self-expression and self-fulfilment. Freed from the imperative to always make poetry better and new, we can make poetry for ourselves again; freed from hierarchies of fame, success and labour, art for art’s sake might finally be possible; freed from scarcity, “everyone is already an artist” might finally be meaningful. All of this is to say: teenagers will write darkly gothic poetry without shame, will pour their feelings into dodgy rhymes because they need to, will discover ways to discover new things about themselves without mediating that process through editorial selection. It will no longer matter that there are hundred thousand poems about the quiet revelations of mediocre suburban lives, because there will be no need for anything else, and even the suburbs will be beautiful. The task of the poem will be only to care for the poet; the poem will be written because it needs to be written; the accuracy, immediacy and delight of self-expression will be celebrated in small, nurturing circles of poets and friends. This is more or less indistinguishable from poetry before robots began, but the world will be better, and so the poetry will in fact be completely different.