You are currently browsing articles tagged text.

Lipstick Enygma by Janet Zweig is an amazing physical/electronic public text generator, made for the Harris Engineering Center at the University of Central Florida, Orlando. Watch the video below:

The page linked above has more examples of text that the piece is capable of generating (“Modemheads in nerdistan!”, “Hack into me mintily.”) I would love to know what algorithm underlies the text generation! (via today and tomorrow; see also Zweig’s Impersonator, a similar piece from 2002)

Tags: , ,

(update: I made each word in the list after the cut into a google search link, so you can see which -toberfests are -tobertaken. I can’t believe “molttoberfest” doesn’t exist!)

AUTUMN IS UPON US, and you know what that means: the sudden appearance of neologisms and portmanteaux designed to mimic the word “oktoberfest.” Rocktoberfest, Shacktoberfest, pop and lock-toberfest. It’s an annual profusion of textual creativity! And as readers of this blog should know, where there is a profusion of textual creativity, there is a text generator waiting to happen.

So I put it to myself to create a -toberfest portmanteaux generator with the tools most readily at hand: grep and awk. Here’s the command-line I ended up with:

egrep '^[^aeiouy]*(o|aw)[^aeiouy]?[cfhkptx]+$' sowpods.txt | awk '{print $0 "toberfest"}'

The source file sowpods.txt is my standby English word list for text generation tasks. The regular expression reads: “find me every word that has o or aw following zero or more non-vowel letters at the beginning of the word, perhaps followed by a single non-vowel letter, and ending with one or more of any of the following letters: c, f, h, k, p, t, or x.” The awk program appends the string toberfest to matching words and prints them out.

The full list of portmanteaux that this simple program generates (all 365!) is below the cut, but here are a few of my favorites:

  • Miami Heat fans! Start the NBA season out right with Boshtoberfest!
  • Spoonflower announces a two yards for one deal during Clothtoberfest!
  • Gather all ye dandies in your finest lederhosen as you celebrate Foptoberfest! (related: Tofftoberfest)
  • If your -toberfest has a seating capacity of 99 to 500, and you’re not in the “Broadway Box,” it’s technically an offtoberfest.
  • Why yes, there is a festival specifically for the nineteenth letter in many Semitic abjads. It’s Qophtoberfest!
  • When, oh when, during the year can we get together to sharpen and polish our razor blades? Why Stroptoberfest, of course!

Lochtoberfest is already exactly what you expect it would be.

In generating this list, I had two criteria: (a) that around 90% of the generated strings “feel right” and (b) that the string “scotchtoberfest” be included in the results.

Criterion (b) was easily met, but (a) was not so easy. What does it mean for a -toberfest portmanteau to “feel right”? It’s highly subjective. For me, the quality of the vowel sound is key: the initial vowel in the portmanteau must rhyme with the initial vowel in “october.” I also found that the length of the vowel is key: the shorter the better, which is why my algorithm selects only words ending with voiceless consonants. (More on allophonic vowel length in English.) I singled out monosyllabic words simply because they’re easier to grep for.

I’m pleased with the results. A few quick googles reveal that many of these words refer to existing festivals, but many return no results (“did you mean bocktoberfest?”). Let me know if this list inspires you to create your own -toberfest, or if you have suggestions to improve my greps and awks.

Here’s the full list:
Read the rest of this entry »

Tags: , , , , ,

Last Saturday, Socialbomb held its first Hack Day.

I had two goals for Hack Day: (1) get a PS/2 keyboard talking to an Arduino and (2) make something interesting with processing.py. Here’s the end result (make sure to click through to the full-screen version for maximum legibility):

Crazy Animal Stories Keyboard from Adam Parrish on Vimeo.

It’s the Unexpected Animal Stories Keyboard, a keyboard which intermittently replaces whatever you’re typing with an Unexpected Animal Story.

It turns out that the part of this project that I thought would be difficult turned out to be easy: getting a PS/2 keyboard talking to an Arduino was a piece of cake. I already had a bunch of mini-din connectors; I just soldered one up to a breadboard, hooked it up to my trusty Arduino Diecimila, put the excellent ps2keypolled library in my libraries folder, plugged in the keyboard and voila: keystrokes gettin’ read.

Here's what the setup looks like

globbiest solders since middle school

I’ve got big plans for the PS/2-to-Arduino data chain, involving a data logging chip and shoes made of keyboards and sledgehammers and/or yogurt. But for Hack Day, I just wanted to whip up something fun. So the next step was to get the keystrokes from the Arduino to my computer, preferably into a processing.py sketch. Much to my surprise, Processing’s serial communication libraries worked with processing.py without a hitch*, which left me free to write the tiny little generative text toy that you see in the video above.

The biggest unforeseen timesink: I spent a few hours trying to figure out the best way to send ps2keypolled’s 16-bit key codes from the Arduino to the computer, eventually settling on the stupidest possible ad-hoc protocol that could work (and porting a big chunk of C code to Python to translate the key codes to ASCII). See the source code for more details.

Most surprising happy discovery: processing.py is amazing. Being able to quickly write the text-munging code in Python while still retaining Processing’s built-in functions and easy-to-use libraries is just… a revelation. For a project that’s just a few weeks old, it feels surprisingly polished. If you’ve got Python and Processing expertise, I recommend you give it a go.

Source code for the whole shebang: crazy_animal_keyboard_source.zip

* Okay, there was a single hitch. Apparently, the serial communication library included with Processing (and, therefore, processing.py) doesn’t support 64-bit Snow Leopard (as documented e.g. here). I was able to get around this without problems by using the -d32 parameter to the java runner, i.e.

$ java -d32 -jar processing.py animal_keyboard.py

Tags: , , , , , ,

Text lathe prototype from Adam Parrish on Vimeo.

This is a little prototype for a textual interface that I came up with last week after receiving my nanoKONTROL. (I saw Jörg Piringer use one of these in a live electronic sound poetry performance last year at E-Poetry, and I knew I had to have one.) The idea is that two knobs on the controller determine how much text is cut from either side of a text fed to the program on standard input; another knob controls how fast lines of text are read in and displayed. It’s a very simple mapping, but I’m pleased with the results so far.

Tags: , , , ,

An experiment in interfaces for generative text from Jason Nelson (whom you may better know as the creator of i made this. you play this. we are enemies and game, game, game and again game).

The snippets of text are arranged in hierarchical menus, and seem to cohere both vertically (from top to bottom within the same level of hierarchy) and horizontally (from left to right, as you drill down deeper into the hierarchy). I would be interested to hear from Jason how the snippets were composed, and what his methodology was for arranging them.

I’m struck by the similarities between this piece and Nick Montfort’s ppg256 series. While Montfort and Nelson clearly have different stylistic aims, both are using computers to define procedures for combining snippets of text. The procedure in A Tree With Managers… relies more heavily on interactivity than the procedure in ppg256, but the underlying data structures, and the kinds of choices that can be made, are analogous.

(One method of more directly comparing the output of the two procedures might be to transcribe the snippets in A Tree With Managers…, along with their relationships, then create a program to randomly traverse them. Maybe a weekend project?)

(via, where you can also find comments and discussion)

Tags: ,


The procedure: scrape Twitter’s public timeline and find rhyming couplets. The effect is striking: even though the juxtaposition of tweets is essentially random, the presence of rhyme gives them a strange cohesion.

The only obvious weirdness comes when the procedure tries to rhyme emoticons, as in the following couplet:

Finished a paper for class and time to relax. Yay me!!
Showered and feeling good :) How are y’all smelling? :b

On second thought, I like that: it’s as though the procedure suggests you read the emoticon aloud in a cutesy way (“time to relax, yay me! / … how are y’all smelling? colon lowercase bee”).


Tags: , ,

Murmur Study

Murmur Study from Christopher Baker on Vimeo.

Murmur Study is a physicalized reading of Twitter, created by artists Christopher Baker and Márton András Juhász. (More details and photos.) The process, according to the artist’s site:

This installation consists of 30 thermal printers that continuously monitor Twitter for new messages containing variations on common emotional utterances. Messages containing hundreds of variations on words such as argh, meh, grrrr, oooo, ewww, and hmph, are printed as an endless waterfall of text accumulating in tangled piles below.

I’m not quite sure I understand the reason to single out tweets that match those particular text patterns—how is this format more appropriate for illustrating the mass of “emotional” tweets? (as opposed to tweets about kittens, tweet spam, tweets from political figures, tweets about thermal printers, etc.) Stunning in its scale, nevertheless.

See also: bitfall and Simanowski’s keynote from e-poetry 2009 (not linked, because I can’t find a link).

(via rhizome.org)

Tags: , ,