poetics

You are currently browsing articles tagged poetics.

@everyword in context

Last week Adrian Chen conducted an e-mail interview with me about @everyword. Here’s the resulting article on Gawker. The @everyword account gained about a thousand new followers as a result of the article—not bad for an account that just tweets word after word every half hour!

It’s been interesting to read people’s reactions to @everyword (and yes, I have the Twitter search for @everyword in my RSS feed reader, because I am hopelessly narcissistic). For the most part, the reactions are positive! It’s satisfying when someone is amused by a word that they didn’t know existed (or that they hadn’t considered to be a “word”) or when someone finds unexpected synergy between a word that just got posted and something that is happening in their lives.

Some of the reactions are more critical. Here’s one reaction in particular that I wanted to respond to, from Twitter user @fran_b__:

@everyword They aren’t words unless they have meaning, which implies context. Stripped of context, they are simply (python) string arguments. (source)

This response baffled me, because in my mind @everyword is all about context. For example, here’s the way that I typically read @everyword:

everywordcontextThis is a screenshot of my Twitter client on a typical morning. You can see the tweets from @everyword interleaved in the feed. I don’t generally read the tweets in my feed like I would paragraphs or sentences in an essay or a piece of fiction (e.g., I skip tweets, I don’t necessarily expect cohesion from one tweet to the next), but I do tend to read them in sequence. It’s undeniable that the tweets exist in the same physical context here. Because of this, some interesting possibilities for creative reading crop up. It’s easy for one tweet to “color” how nearby tweets are read, for example. I’m not saying that @notch is prone to nutations, or that @factoryfactory and @daphaknee are nutcases, but that’s certainly a reading made possible by the tweets’ close proximity.

There’s also the context provided merely by being in sequence with other words in the @everyword feed. Here’s an example:

everywordcontext2

I find this endlessly fascinating. When you see these words juxtaposed like this, you can’t help but try to find some connection between them. In some cases, the connection is grammatical (nunnery is of course morphologically related to the word nuns). But nunsnuptials and nursemaid together like is almost like a little narrative. “Nuns can’t have nuptials, and they certainly can’t be nursemaids.” It seems ironic that the words would be juxtaposed like this, and that perception only emerges from seeing these words in this kind of unusual context.

It’s also a cultural practice of ours to consider individual words in the abstract: we pick out our favorite words, we decide which words are commonly misused, we decry our politicians for making up words or using words with a disagreeable frequency, etc. In some sense, a word carries with it a cultural context, no matter where it occurs. One of the intentions of @everyword was to play with this idea: every word has cultural baggage. What would happen if we systematically exposed ourselves to that baggage?

Even if I concede that the words in @everyword are “simply (python) string arguments,” isn’t that also a context? A computer program is a kind of writing, after all. It means something for a programmer to choose to put one string in a program, instead of some other string, or to feed some set of data to a program instead of some other set. Sure, the Python program that runs @everyword would also work with any other arbitrary data set—@everybaseballplayer, anyone?—but the fact that I chose words, and words in this particular order, is part of the context of the piece.

In the end, I think @fran_b__’s implication is that there are certain kinds of contexts that a word can occur in that “count” as meaningful (such as being in a sentence intentionally composed by an individual) and others that don’t. I suppose that for certain fields of study, this is a valid point of view: if you’re analyzing a novel, for example, you might not want to include in your analysis the novel sitting next to it on the shelf. As a writer and poet, however, I find that limitation pretty dull. There’s never been an era in history with such diverse practices for reading and writing text. Why not have as much fun with that as possible?

Tags: , , ,

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: , , , , ,

I love Google Scribe. It’s the ultimate achievement in oulipian writing tools; it’s the flarfist’s only typewriter. It’s the best thing I can imagine someone doing with Google’s resources. It could be an amazing performance tool. Who’s with me on this?

The most remarkable thing about Scribe is that what everyone does when they encounter it for the first time is use it for creative writing. The MetaFilter thread is a good place find examples. Twitter is already replete (1, 2, 3) with Scribe writing games.

Here’s me throwing my hat into the ring, with a version of William Carlos Williams’ “This Is Just To Say” where each line has three or four Scribe autocompletes tacked on:

This is just to say that they are

I have eaten here several times
the plums and their families
that were in their early
the icebox and then

and which are not
you were probably too young
saving the file to disk
for breakfast and lunch

Forgive me allahabad bank
they were delicious and they
so sweet and innocent
and so cold that they were

(bonus: Scribe is a prude, after the break)

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: , , , ,