#!’s Code Poetics

the book cover for #!

In the acknowledgements to #! (pronounced “shebang”), Nick Montfort writes: “The poems in this book consist of computer programs followed by output from running these programs. Some of them use randomness…In these cases, running the program yourself will very likely produce different results.” Montfort goes on to specify that the computer programming languages used to create the outputs for this 2014 book of poetry include Python, Ruby, and Perl. #! is an example of what we might call “code poetics” or “database aesthetics,” which explores the politics of the appropriation of open-source code by putting code to use in new and unimagined contexts. Montfort recognizes as much: “You may type the programs in and run them if you like, or do whatever you want with them; all of them should be considered free software (offered entirely without any warranty of any sort).” Montfort’s poems thus have an indeterminate quality; they are intended to be appropriated and recontextualized, yielding new outputs—new poems—each time.

The scholar Mark Marino, in his book Critical Code Studies (2020), writes:

[Code’s] meaning is not determined only by the programmer’s intention or by the operations it triggers but also by how it is received and recirculated…That is not to argue that code can be removed from context (though portions of code are frequently recontextualized) or that code means whatever people say it means. Rather, the meaning of code is contingent upon and subject to the rhetorical triad of speaker, audience (both human and machine) and message.

The messages produced in each poem of #! contain at least two different kinds of reader information: one composed through computational thinking and the other as subject to poetic interpretation. This juxtaposition is reinforced by the book’s design and layout, which consists of black pages of computer programming language that resemble a computer terminal screen, and white pages of the poetic output when those programs are run.

While computer programs might seem completely unrelated to poetry, it is worth noting that as a non-inflected language, the meaning of an English sentence is primarily determined by grammatical word ordering. Sentences must be constructed with a series of constraints in mind in order for linguistic communication to occur. Grammar is a kind of fundamental metalanguage that allows for semantic meaning. Gertrude Stein knew this when she wrote in her famous lecture “Poetry and Grammar” (1935), “Sentences are not emotional but paragraphs are.” The sentence, as a unit of meaning, follows a pre-determined, “unemotional” system for communication. You can determine where a sentence ends by following the grammatical rules that govern it. Paragraphs, on the other hand, which are composed of these unemotional sentences, require a more intuitive sense of where its unit of meaning should end. Computer code follows its own metalanguage—some sort of governing rule that determines how bits of data and information should gear into one another in order to produce an output. As engines of meaning, formal “standardized” English and computer programs are fairly closed systems, meaning that to disrupt the governing metalanguage upon which these systems operate is to destroy (or at least make unintelligible) their outputs. Poetry offers a way to start to open some of the parameters of these closed, purely informational forms of communication. Poetic thinking allows us to play with some of their rules.

Montfort plays with permutations in #!: permutations of letters and non-alphabetic symbols, permutations of the phonetic structuring of words, permutations of a series of short words, and permutations of a series of longer, complete sentences. For example, in the poem “I AM THAT I AM,” a short Python script produces all the possible permutations of vowels: “AEIOU, EAIOU, EIAOU, EIOUA, AIEOU, IAEOU…” Similarly, in “ASCII Hegemony,” a two-line Perl program produces the output “! “ # $ % & ‘ ( ) * + , – . / 0 1 2 3…,” a never-ending arrangement and re-arrangement of the characters from the American Standard Code for Information Exchange. As forms of computational thinking, these outputs appear to us as pure or “raw” data—objective, quantifiable, and authoritative in their self-evident facticity. But Montfort has constructed a kind of frame through which to interpret them: the titles “I AM THAT I AM” and “ASCII Hegemony” act as a poetic lens for their respective outputs. “I am that I am,” for instance, is a reference to one of the responses given to Moses when he asks for God’s name in the book of Exodus. How then are we to interpret this allusion in relation to a list of vowel permutations? Are we meant to see that these words are unpronounceable much like the aleph, the first letter of the Hebrew alphabet, which compresses all sacred inscription and originally represented the onset of a vowel and a glottis? What are the linguistic and theological implications of this? What should we make of the word “hegemony” in the title “ASCII Hegemony,” and how does it relate to an infinite deluge of contextless informational data? Are we meant to understand that power reproduces itself through an appeal to “information”? Or is the information exchange here similar to a kind of cultural transmission and dissemination? The poet and scholar Craig Dworkin, in his introduction to #!, writes that Montfort “folds these technical contingences back into the thematics of his poems with brilliant wit.” Montfort is not only presenting his reader with computational permutations or conceptual literary productions, but he is also making implicit arguments about these outputs as well.

In The Cultural Logic of Computation (2009), the scholar David Golumbia investigates “the ways in which the rhetoric of computation, and the belief system associated with it, benefits and fits into established structures of institutional power.” Our contemporary moment could be defined as a fetishization of computational logic since computational logic seems to carry with it an air of objectivity and productivity. In our hyper-connected world, people are increasingly interested in how to optimally manage themselves and others through systems. This cybernetic milieu has often been couched as one of the democratizing effects of computation. Golumbia, however, warns that “too often, computers aide institutions in centralizing, demarcating, and concentrating power,” and “computerization tends to be aligned with relatively authority-seeking, hierarchical, and often politically conservative forces—the forces that justify existing forms of power.” For example, data collection, algorithms, and machine learning have played significant roles in policing and surveillance in recent years through “person-based predictive policing,” “focused deterrence,” and “intelligence-driven prosecution.” Concurrently, there has also been increasing attention paid to the ways the use of “bad” or biased data can foreground the outputs of certain models, and how human decisions and practices leveraged by these outputs can thereby reinforce structural oppression. Thus, the flawed foundations of some computational models reveal the limits of putting our faith completely in a “neutral,” disembodied technology.

This is why Martin Heidegger argues that the propositional statement, the basic unit of computational thinking—and in fact the basic unit of all specialized sciences derived from philosophical metaphysics—is not a form of thinking at all, since it often closes off methodological investigation into the underpinnings of its own logic once established. Poetry, as a form of thinking, is not reducible to mere linguistic information the way that computational logic is; poetry’s multi-valanced system of meaning is too open. In his essay “The End of Philosophy and the Task of Thinking” (1966), Heidegger writes, “Only this openness grants to the movement of speculative thinking the passage through what it thinks.” For Heidegger, thinking is constant movement or process without arriving. While science provides the grounds for our understanding in the form of true/false statements, poetry may provide a path or methodology for the act of thinking itself. Only in this way can thinking move beyond the opposition between what is “rational” and what is “irrational.”

Computer programs value concision, economy, optimization. These values sometimes overlap with the values of poetry, especially those poets who see poems as meaning-making “machines.” This is not, however, always the case—poetry can be discursive, recursive, redundant, expansive. One gets the sense while reading #! that Montfort is interested in the ways these contrasting ideas can merge together: the infinite within the finite; the minimal, optimized computer program and the intentionally expansive, pseudo-randomly generated poem it produces. In “All the Names of God,” for instance, a single line of code produces an infinite output—Montfort includes thirteen pages of text before indicating its endless continuation with ellipses. The poem “Alphabet Expanding” points to ideas of entropy and the limits of language, as a short program written in Perl produces a repetitive alphabet that gradually increases the space between letters ad infinitum. A reader can intuit that at a certain theoretical point, “Alphabet Expanding” will become mostly empty space, perhaps indicating a kind of reflective and meditative silence within and surrounding poetry.

“PPG256-3” and “PPG256-4” produce outputs that look closer to familiar poetic forms, with short lines of text broken into stanzas. Mark Marino writes, “The number 256 is the number of characters (letters, numbers, and punctuation marks) that constitute the software, written in the language Perl. The generator creates poems from what is essentially one line of code…The generator works by drawing from sets of syllables and combining them in a poetic structure.” “PPG256-3” plays with combinatoric permutations of short words to produce strange semantic fragments: “the_boyape / and / the_godman / ran_her…one_fat_apegod / and / the_wan_godman / met_up…the_dim_boygod / and / the_apenun / got_in.” “PPG256-4” experiments in a similar way with combination and permutation but is interested in manipulating phonetic fragments to produce neologisms: “premad on fapmot, bro / bepot on datson, man / missad a tradwap, guy.” These lines read almost like a form of inscrutable slang, since each line is seemingly addressed to some “buddy,” “dude,” “pal,” or “bro.”

#! may offer its readers a synthesis between computational and poetic thinking, since we cannot divorce these programming inputs from their outputs. Mark Marino writes, “I would like to consider not the poems generated by these programs, but poetry generators as forms of poetry…the algorithm becomes the poetry.” Since the computer programs in #! exist as open-source code, they can be appropriated and run to produce different results each time. Analyzing these various outputs in turn produces a method for poetic thinking, a path without arriving at a point that permanently closes off all outside possibility. The essence of anything lies in its temporal existence, and because everything is temporal, nothing is the same; the thing itself changes over time. Montfort encourages his readers to investigate and reinvestigate the poems in #! because the ground here is always shifting.