- Observe the Delightful Arrangements
160 Pages; Print, $21.00
The “Machine Writing” focus of ABR’s January/February 2014 issue (Volume 35, Number 2) introduced many of the journal’s readers to computational modes of literature. Nick Montfort’s #! (pronounced “shebang”) furthers public conversation about machine writing by shifting the question away from the introductory and abstract (“why should we teach machines how to write poems?”) to the specific and practical (“what kinds of poems can we teach machines to write?”) In this book, he invites the reader not merely to experience computational poetry, but also to look under the hood and see how the form works.
Montfort, who teaches in the Comparative Media Studies/Writing program at MIT, accomplishes this invitation through an act of translation: #! shows the code that produces the text on the pages that face the text which it produces. The idea of translation is essential to understanding machine poetry because translation stands at the center of its production: small variations in a program’s code can yield far broader differences in an output text than a similar variation in an analog poem. There is far less difference between Whitman’s:
Thou hast portray’d or hit thy theme entire: and the possible variantThou hast portray’d thy theme entire:than there is between Montfort’s:endings.insert(2, non_rhymes.sample)and the possible variant:endings.insert(2, rhymes.sample)
Since the variation in Montfort’s two lines would generate entirely different kinds of stanzas. With generative poetry, changes to code are akin to an alteration in DNA that could result, as we know from our own evolution, in species as different as chimpanzees and humans.
Seeing code side-by-side with the text it generates takes the reader inside the process of how language creates meaning by asking us to consider the poetry’s DNA directly. For me, the process of ingesting #! was akin to reading bilingual translations of foreign language poems. My eyes bounced back and forth repeatedly across the gutter of the book, trying to ascertain the patterns of what I saw (the generative poetry) so I could understand the tongue that it came from (the code). It reminded me of when I tried to better my German by reading Kafka in this way, or tried to explore Polish by reading Wisława Szymborska. I hunted and pecked for sense, for words and phrases and structures that I came with time to vaguely recognize, even though I didn’t understand the original.
The translation/DNA metaphors help non-coders like myself explore computational writing because they allow us to increase our understanding of the relationship between code and text in stages, without giving up our lives to learn several programming languages. This is the gift that #! offers its most inquisitive readers. My own “Aha!” moment came with “Ruby Yacht,” the poem quoted in the example above, which was first published in The Ill-Tempered Rubyist (2013), a collection of poems written in the coding language Ruby. My mind ping-ponged across the gutter, eventually recognizing the code as a recipe of sorts, a set of ingredients and the instructions for combining them. The code included value categories and instructions like:
a_phrasesb_phrasesrhymesnon_rhymesendings = rhymes.sample 3endings.insert(2, non_rhymes.sample)beginnings = a_phrases.sample 3beginnings.insert(2, b_phrases.sample)
A form-driven poem contains similar ingredients and instructions, and discovering the rules of “Ruby Yacht” was akin to figuring out the rhyme scheme of an experimental sonnet form. It was perhaps because of this personal discovery that the earlier sections of #! intrigued me most. The operations that the programs (Ruby and Python) performed felt the most detailed and had the most bearing on nuance and meaning. The fragmented, self-rearranging “Through the Park” depicts multiple remixes of an encounter between a girl who “turns to smile and wink” and a man who “dashes, leaving pretense behind.”
I latched onto the section “Concrete Perl” (written in the Perl language) less fully because the translational operations are very large scale. They felt less intricate, and I noticed fewer nuances of language...