The Infinity

I made a new Twitter bot: @eventuallybot. It generates short, silent films in GIF format, based on randomly-selected snippets of YouTube videos. As of this writing, the bot has generated nearly 300 tiny films!

The code is written in Python and makes heavy use of Connor Mendenhall’s wgif program and ImageMagick. I used my new Python library, My Dinosaur, to generate an RSS feed for the bot (a first for me!), which you can subscribe to here.

I’ve had the idea for this bot for a while. I’ve been interested since my undergraduate linguistics days in the idea of textual cohesion—the methods and strategies that language speakers employ to make the units of the text (lines, sentences, stanzas, paragraphs, etc.) come together as a whole. In particular, I’m interested in how just mimicking the surface forms of cohesion (by, e.g., pronoun substitution, anaphoric/cataphoric demonstratives, or even just lexical repetition in the form of anaphora) can make generative text feel like it’s telling a story, even if the text doesn’t have any kind of underlying semantic model.

With @eventuallybot, I wanted to experiment with some of these concepts. The experiment, specifically, was this: if you take random bits of video, and splice them together with titles that suggest the contour of a story, how often will you get a result that feels at least sort of cohesive?

So I made a big list of transition words—essentially, conjunctions and phrases that function as conjunctions—and (inspired by Labov’s narrative analysis) lightly categorized them like so:

  • beginning phrases (phrases that start a story, like “once upon a time”)
  • “and-then” phrases (phrases that move the story along a bit in time, like “after that”)
  • continuing phrases (phrases that introduce a second situation or complicating factor, like “meanwhile” or “nearby”)
  • concluding phrases (phrases that introduce an explanation of how the story is resolved, like “therefore” or “to summarize…”)
  • ending phrases (like “The End”)

As Mark Sample pointed out on Twitter, filmmakers are already familiar with the “Kuleshov Effect,” which describes how viewers will tend to see two shots juxtaposed in montage as being narratively related. To be sure, the titles in @eventuallybot’s films are a bit less subtle than straight-up cuts between shots. But I kind of enjoy how @eventuallybot (at its most coherent) feels like it’s telling an anecdote with its clips, not just implying a narrative connection among them.

One reason I wanted to have an RSS feed for this bot is Twitter’s support for the .GIF format. Twitter “supports” GIFs, but transparently converts them after upload to a different video format, and (as far as I can tell) throws away the original GIF data. This is probably the right move on Twitter’s part, since GIFs aren’t (byte-for-byte) a very efficient format for storing video, but I wanted people to be able to save and share the GIFs as they were originally generated. So the RSS feed updates at the same time as the bot itself, and it links to the original GIFs.