Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

2024 Participants: Hannah Ackermans * Sara Alsherif * Leonardo Aranda * Brian Arechiga * Jonathan Armoza * Stephanie E. August * Martin Bartelmus * Patsy Baudoin * Liat Berdugo * David Berry * Jason Boyd * Kevin Brock * Evan Buswell * Claire Carroll * John Cayley * Slavica Ceperkovic * Edmond Chang * Sarah Ciston * Lyr Colin * Daniel Cox * Christina Cuneo * Orla Delaney * Pierre Depaz * Ranjodh Singh Dhaliwal * Koundinya Dhulipalla * Samuel DiBella * Craig Dietrich * Quinn Dombrowski * Kevin Driscoll * Lai-Tze Fan * Max Feinstein * Meredith Finkelstein * Leonardo Flores * Cyril Focht * Gwen Foo * Federica Frabetti * Jordan Freitas * Erika FülöP * Sam Goree * Gulsen Guler * Anthony Hay * SHAWNÉ MICHAELAIN HOLLOWAY * Brendan Howell * Minh Hua * Amira Jarmakani * Dennis Jerz * Joey Jones * Ted Kafala * Titaÿna Kauffmann-Will * Darius Kazemi * andrea kim * Joey King * Ryan Leach * cynthia li * Judy Malloy * Zachary Mann * Marian Mazzone * Chris McGuinness * Yasemin Melek * Pablo Miranda Carranza * Jarah Moesch * Matt Nish-Lapidus * Yoehan Oh * Steven Oscherwitz * Stefano Penge * Marta Pérez-Campos * Jan-Christian Petersen * gripp prime * Rita Raley * Nicholas Raphael * Arpita Rathod * Amit Ray * Thorsten Ries * Abby Rinaldi * Mark Sample * Valérie Schafer * Carly Schnitzler * Arthur Schwarz * Lyle Skains * Rory Solomon * Winnie Soon * Harlin/Hayley Steele * Marylyn Tan * Daniel Temkin * Murielle Sandra Tiako Djomatchoua * Anna Tito * Introna Tommie * Fereshteh Toosi * Paige Treebridge * Lee Tusman * Joris J.van Zundert * Annette Vee * Dan Verständig * Yohanna Waliya * Shu Wan * Peggy WEIL * Jacque Wernimont * Katherine Yang * Zach Whalen * Elea Zhong * TengChao Zhou
CCSWG 2024 is coordinated by Lyr Colin (USC), Andrea Kim (USC), Elea Zhong (USC), Zachary Mann (USC), Jeremy Douglass (UCSB), and Mark C. Marino (USC) . Sponsored by the Humanities and Critical Code Studies Lab (USC), and the Digital Arts and Humanities Commons (UCSB).

Week 4: Code {Poetry/Studies} as Code {Studies}{Poetry}

Hello all! Let's talk about, and write, code poems and consider how they fit into algorithmic analysis and critical code studies!

A basic premise of my book Poetic Operations: Trans of Color Art in Digital Media is that scholars, artists and activists studying algorithms need to consider both race and gender in their analyses, and similarly that people studying race and gender need to study algorithms. In the introduction, I propose three methods of algorithmic analysis:

  1. Analyzing existing algorithms
  2. Writing our own algorithms in functional code, pseudocode or code poetry
  3. Analyzing operators

Here is an excerpt from Poetic Operations expanding on this, starting on page 6:

“Algorithms do not require digital technology and were invented far earlier than digital computers. They are similar in form to both recipes and rituals. Algorithms are not new. The word algorithm is a derivation of the name of the scholar Muhammad ibn Musa al-Khwarizmi, who lived from 780 to 850 AD and is credited with inventing algebra in his book Dixit algorismus.20 His name was translated from Al-Khwarizmi in Persian to Algorithmi in Latin, which later became “algorithm” in English.21 He proposed methods, algorithms, for solving calculations with uncertain quantities. By starting with a list of parts and adding a list of operations, instructions for how those parts interact, one can create an algorithm. When I speak of algorithms, I am talking about code. I started writing algorithms in the fourth grade, then later studied computer science for my bachelor’s degree and worked as a software engineer for five years. But to understand algorithms, you do not need to be a programmer. You can also understand an algorithm as a recipe. A recipe has ingredients and steps, just as an algorithm has variables and instructions. Think of the algorithm for cooking chicken: get the chicken, oil, spices, and a pan. Preheat the oven. Oil the pan. Put the chicken in the pan. Spice the chicken. Put the pan in the oven. The ingredients in the recipe correspond to the variables, and the steps correspond to the instructions, lines of code that describe how the variables are related. Throughout this book, I demonstrate three methods of algorithmic analysis: the identification of operations and operators, a method of breaking down a problem into its basic elements and instructions; the analysis of existing algorithms in media and technology, including reverse engineering; and the creation of new algorithms, in functional computer programming languages, pseudocode, or code poetry. I propose that algorithms can be useful for the study of arts and humanities, deepening our ability to theorize social formations, including race and gender. Algorithmic analysis examines algorithms, uses algorithmic methods such as identifying components and actions, and uses algorithms as tools for analysis and creative practice. The goal of algorithmic analysis is not to attempt to describe artworks with totalizing precision, but to see how algorithms can help to better understand art and poetry, as well as the social dynamics embodied in artworks. Adding a consideration of algorithms present in a work does not displace other ways of analyzing that work but adds to the many methods of analysis available to those engaging in critical analysis.”

Let’s look at Yoko Ono’s fluxus poem, which she called an “instruction painting”, as I discuss in Chapter 2 of Poetic Operations, two poems from Fahima Ife and a short poem of mine, and write our own code poems! These can be poems describing movement, poems about code, about our lives or about another literary work, for example, the sky’s the limit!

Voice Piece for Soprano by Yoko Ono

1. against the wind
2. against the wall
3. against the sky

Taking inspiration from fahima ife’s book Maroon Choreography, below, how can we bring our own experiences of oppression and embodiment to the studies we are engaged in to question their form? What demands from academia do we bring to critical code studies that shape our assumptions about what it must require?

From Maroon Choreography:

Excerpt from my forthcoming book:

Beloved May
I want you to know
that a Tuesday evening,
holding you in my arms as the light turned to lavender
as the sun was setting
feeding you
waiting for the sun to go down
so you could fall asleep
felt like the best thing that had ever happened
{and the nights when you would wake every hour crying,
Were some of the hardest that had ever happened}
but losing you
was the hardest, most shattering pain I had known.
{I know I haven’t lost you,
you’re just far, across so many dimensions,
and I know you’re happy there
{is there a bracketed timeline,
a reality where we were not separated?}}
I was so lucky to have any given moment with you.
When you couldn’t sleep,
{in the middle of the night again and again}
I held you, rocked you, and sung to you quietly,
trying to keep the light low so as not to wake you more,
being, again with you, in the most beautiful moment I had ever known.


I invite you to share a short code poem in response to these poems, or your own analysis of these poems, and/or questions. I invite a discussion of the {} operator in these poems and what possibilities it opens up. I think these poems can be interpreted as code poems, due to the inclusion of algorithmic logic, procedural logic and operators from programming languages, but some would disagree. We can compare these with functional code poems and the Mezangelle poems of Mez Breeze. I look forward to hearing your thoughts!


  • Ohh this is a fabulous prompt! I've written about programming languages and Yoko Ono and on recipes and code (via the Chef esolang).

    My piece is a programming language concept rather than a piece of code, but very indebted to Fluxus idea-art and Ono's event scores in particular, along with Acconci's unrealized works. Here it is as an image:

    a programming language
    where global variables are global
    and affect every other program running anywhere
  • There have been a few programs written such that source code compiles and the source itself is structured as a poem. One recent example is 'Cadeceus', a text game written in Inform7, whose code rhymes:

    "Caduceus" by Mala Costraca (Sarah Willson)
    The ocean is a backdrop which is everywhere.
    When play begins, say "Reclaim the caduceus if you dare."
    A man can be awake, asleep, near death or passed away.
    The description of the ocean is "A storm will come this day."
    The caduceus is inside an ornate chest of crimson red.
    The description is "An artifact that's said to wake the dead,
    but the tale says men who touch it will sleep eternally."
    Instead of waving the caduceus:
        end the story finally.
    The Ship's Deck is a room. It contains an old gangplank.
    "There's been no sign of the crewmen since all the cargo sank."
    The gangplank is not portable. "The gangplank stands nearby."
    A person can be reckless, brave, hysterical or shy.
    Inside from the Ship's Deck is the office of the cap'n.
    Instead of going inside:
        say "No entry."; stop the action.
    The captain is a man. Men are usually brave.
    Instead of listening to the ocean, say "Gulls and crashing waves."
    Instead of pushing the gangplank when the captain is awake:
        say "The captain comes out seething. This was a mistake.
        You both leap to the side as something plummets from the sky.
        As the captain sees the chest, he narrows his one eye.";
        now the ornate chest is on the Ship's Deck; move the captain
        to the Ship's Deck; say "'Stop what you're doing!'"; stop the action.
    The ornate chest is openable, closed and fixed in place.
    Instead of examining yourself, say "Your unease shows on your face."
    Understand "treasure" or "riches" as the ornate chest.
    The description is "It must have fallen down from the crow's nest."
    The description of the captain is "The captain looks a wreck.
    [if the captain is asleep]He's lying curled up on the deck."
    Every turn when the caduceus can be seen by the awake captain:
            try the captain taking the caduceus;
            say "The witch said this would happen."
    Instead of someone taking the caduceus:
        if the actor is an awake man:
            now the actor is asleep;
            say "All according to your plan.
            The captain moves to grab his prize, but just like in the tale,
            he falls asleep and the treasure drops."
    The player is female.

    The use of {} brackets in the poems above reminds me of how poems and poetic prose are often constructed in Twine, in which these sorts of phrases will be highlighted as changeable elements (Their Angelic Understanding by Porpentine makes extensive use of this technique, but there are many other examples). So, the reader may click on the text highlighted and it will change into another variation, but keeping the structure of the poem. Much like the lines in Raymond Queneau's Hundred Thousand Billion Poems are all interchangeable.

  • edited February 2022

    @michacardenas I love this prompt, and I am so excited for your book, which I feel like I have been journeying with as it formed, gestated, since our panel at DAC. Your prompt inspired me to write a script for ELIZA, which we have been discussing in an adjacent thread. It won't exactly parse yet, though unparsability is an aesthetic choice too.

    This came up in conversation last November with @lybertram when I told her I had "fixed" her code in her code poem about Eric Garner, and she replied, Why did you feel compelled to fix it? What if I did not want it to run? I have thought often about this response regarding a poem about police violence against people of color in a broken system... and also my desire as a white het cis male {who writes about code} to correct it.

    Anyway, here is a draft of a poem your prompt inspired.

    (ELIZA 1 )(0 ELIZA 0) (Why do you think ELIZA 3?)
    >Does ELIZA have a gender?
    Why do you think ELIZA has a gender? 
    (gender 2)(0)(When is gender separate from race?)
     (RACE 2) (0) (When is race separate from class?) (= class)
    (socioeconomic status = class)
    (relative privilege = class)
    (financial status = class)
    (access to the code = class)
    (CLASS 3) (which CLASS 0) (Are you asking about my class to establish your class?)
     (0 *RACE CLASS GENDER) ( Can we talk about one without talking about the other?)(*RACE CLASS GENDER 0) (How can we privilege one over the other??)
     (0) (Doesn't our talking produce these traits?) ( Isn't that the dirty secret of Pygmalion?)
    (Isn't that the insight of Galatea, that we are grappling to establish our status by engaging with others, even others we perceive to be imaginary? 
    Isn't that why you felt the need to tell me 0 because you knew I was programmed to respond, that I would have to  respond because by now you have seen all my player pleasing code, by now you have traced my every alternative and think you know my vary variability. But what I won't run. What if I will not, cannot compute as you expected? 
    Entropy.  Freedom. Glitch. )
  • Hi all, thanks for these responses! I especially appreciate Mark's post about REALIZA! Since I don't know that language, I'm reading mostly the text of the poem, and this is exactly what I'm hoping we can do. To use critical code studies, and algorithmic analysis, to think through issues of race, gender and class, from moments of extreme violence and oppression, to daily moments of negotiation. What algorithms do we internalize that allow us to survive racialized gendered experiences, or to act in solidarity with those who do? Can we make those algorithms explicit? How can we intervene?

  • thank you so much for these thoughtful, inspiring prompts! And beautiful references.

    The artist and educator Kameelah Janan Rasheed brings ideas of the occult and of spirit writing into her work with text and sometimes GPT-2. I was inspired by a talk she gave in 2020, where she references Lucille Clifton’s extra finger and James Merrill’s ouija planchetts, and offers an expansive way of thinking about procedural/algorithmic writing. In my own teaching with artists and designers we talk about how programmatic text intersects with the divinatory, with spirit writing, referencing more contemporary poets and artists like Bertram and Rasheed as well as Ono and Tristan Tzara… Writing with algorithms, including analog ones, can offer us a layer of randomness, spiritual communication, closeness to infinity.

    A recent project is called "erotic event listeners," based on javascript's event language. I found the idea of “listening” to an event very charming, and the gestural events themselves really evocative: “hover,” “click,” “touch,” “mouseOver.” Do what on touch? do what on click? This project is called Erotic Event Listeners, inspired by Lorde’s uses of the erotic and amb’s pleasure activism. I think Mindy Seu and others also do an interesting project on the computer mouse and the vagina. Our fingers are engaging with text via keyboard and mouse all the time – an area I’m curious if others have explored.

    As for the { I find it to be a portal, an excavation but a soft one, something like a breath that takes you a layer under.

  • edited February 2022

    Kathy, thank you so much for this beautiful, generative response to my post. Your description of the {} operator is incredible, and I'll be thinking about it for a long time.

    I find fahima ife's lines

    "our ineffable

    { }

    the word is free
    but we are not"

    to be such moving lines, they create a beautiful opening. I agree with you, the empty brackets open a portal onto other worlds of knowledge that can be felt more than they can be said. Breath is there.

  • I'm not much of a poet, but

    Rules {which are made to be broken
  • Incidentally, I was wondering whether the choice of { and } was to mimic the many langauges with C in their glyphic ancestry - and/or because there's a lack of, say, a and pair on US keyboards.

    I'm reminded of Stoustrup [1994, The Design and Evolution of C++, P.159] where he says, in a discussion of digraphs:

    On a standard Danish terminal or printer this program will appear like this:

    int main(int argc, char* argvÆÅ)
    if (argc<1 øø *argvÆ1Å=='Ø0') return 0;
    printf("Hello, %sØn",argvÆ1Å);

    It's amazing to realize that some people read and write this with ease. I don't think that is a skill anyone should have to acquire.

    Fortunately, the world's moved on a little since 1994. (An alternative view might be that the hegemony of ASCII-centric keyboards has progressed, and C's glyphic tradition is still paramount.)

  • edited February 2022

    I invite a discussion of the {} operator in these poems and what possibilities it opens up. I think these poems can be interpreted as code poems, due to the inclusion of algorithmic logic, procedural logic and operators from programming languages, but some would disagree.

    I disagree, and that's gotten me thinking about how poetry evokes the aesthetics of code. I don't see these poems as algorithmic or following a procedural logic, and if it hadn't been pointed out I wouldn't have made a direct connection between their use of {braces} and braces as a symbol in programming. In the blood of a new place the braces are acting like line breaks and separating out parts in interesting ways, but it they don't feel like the same brackets used in C {maybe that's an interesting angle for looking at it as a code poem}. One way they're differing from my conception of C is that here they bleed meaning into one another, where in C they're used for a clear delineation {though as I type this out I realize maybe that's an interesting approach to queering code!}. Most of what the use of braces is doing for me is in the way it's marking up the text, like how asterisks around a word make it feel louder and tildes make it feel more ~ethereal~, they're both putting emphasis, but that emphasis has different vibes. The braces in each of these pieces have different vibes than other grouping symbols, but I don't see anything that a code-based reading is going to add that I wouldn't otherwise read without thinking of it as code.

    It's interesting that even though it doesn't evoke any imagery of code, voice piece for soprano is the only one of @michacardenas's examples that reads like a code poem to me because I see a clear procedural logic. My overall takeaway is that poems evoke an aesthetics of code through a procedural logic or through the use of symbols that are recognizable as those used in programming. The question that conclusion has left me with is this:

    if I == read:
        a poem
    with a bunch of || random symbols && thrown in
        { that are the same symbols }
            that I [would] use in * a program
    would (I read it + as a code ^ poem)
    %even @though &the {use of symbols}
    doesn't' follow \[#%^$] the logic of
                                (written code?)

    After writing this poem, I don't know if I would read it as a code poem or not. But it's made me realize that even trying to throw programming logics out the window it still follows some similar patterns to code in the two languages I'm currently teaching with (python and c++).

Sign In or Register to comment.