a sort of eulogy


GUT FLORA is a short collection of poems i composed from approximately august/september 2013 to approximately october 2014. both the cover and interior art were procedurally generated. those in the pdf were chosen from an infinite number of possible iterations. it was previously available as an ebook but i've since removed it from circulation. a run of physical copies of this book - each of which will be unique and procedurally generated - will be available sometime soon, probably.

↓↓↓ click here ↓↓↓ for a post-mortem on the technical aspects of gut flora
↓↓↓ click here ↓↓↓ for a post-mortem on the poetics of gut flora (originally published on my tumblr)


mostly by necessity, every tool used to create GUT FLORA is freely available and works on every major operating system. least interestingly, composing the poems themselves primarily took place on a google doc. the typesetting and layout - both of which were rather uncomplicated - were done using libreoffice. the cover and interior art were creating using the computer art framework and programming language, processing, which is what i will be focusing on here. this is written such that nontechnical people can at least mostly understand what is happening and why certain decisions were made so pls keep this in mind if you feel like you are being patronized ok!

a tiny plug: processing is one of the best pieces of software ever made imo!!! without it i wouldn't be making visual art, like, at all. i will write more about processing in depth later but if you are even in the slightest bit curious about how to use code to make art, please consider doing the hour of code by daniel shiffman. no experience required! very gentle introduction, i promise. anyone can do it because daniel shiffman is such a thoughtful goofball. i luv him.

so the front and back covers of gut flora consist of a background which is a gradient underneath a maze and a cube which is tilted such that three of its faces are visible. the general process goes like this:

  1. the previous cover is loaded into memory
  2. two colors are chosen at random using my own crummy Pretty Color Picker Algorithm (overstatement of its complexity tbh, the actual thing is v simple) for the background gradient
  3. the gradient is drawn
  4. a color is chosen at random using aforementioned algorithm and used as the color for the maze
  5. the maze is drawn
  6. a cube is drawn whose sides are textured using the previous cover which was loaded into memory
  7. the output is saved
  8. repeat
does this make sense? the recursive part is the previous cover is used as the sides of the current cube, so each cover contains all previous iterations "in" its cube (because that cube is textured using the cover before that, which contains a cube which is textured with the cover before that, ad infinitum, u get it).

the code for the gradient and the code for the geometry of the cube are slight tweaks of existing processing snippets that someone else wrote and i won't go into much detail regarding those. for now, i'll just go in depth re: how the maze works and how i picked colors. the code for the maze is my adaption of a classic commodore 64 oneliner known as "10 print chr$(205.5+rnd(1)) goto 10."

the way this works on the commodore 64 is the computer does the computer equivalent of flipping a coin to choose either a forward slash ("/") or a backslash ("\") to display as the next character, over and over again, forever. this provides the impression of a neverending maze, but if you pause the video at any point and look closely, there are empty pockets and dead ends and closed circuits and so on. there's no real entry and there's no real exit. it is a nifty, hacky illusion!

i learned about this oneliner from the very good book 10 print chr$(205.5+rnd(1)) goto 10" which is by a bunch of really great people. it's a multi-lens analysis/examination/whatever of creative computing which stretches into broader symbolic musings about mazes in general and lots of other stuff. it's a rly accessible text that offers a lot of rich, nourishing insight imo. what's better is that it's available for free online, legally!!!! nice!! you can find a link to the pdf at the previous link but in case you are lazy you can click here to download the pdf. i really really really recommend you at least read the introduction. i actually pulled from this book a little bit for the poems themselves. the symbolism of having an infinite maze which is unsolveable, just a series of deadends, an opaque mystery, etc., felt perfectly complementary to the "themes" of the book. the parts about knossos labyrinth and dances were especially potent to me and ended up being incorporated into the final poem.

so my goal was to somehow recreate this particular maze-like illusion using processing. to do this i again did the computer equivalent of flipping a coin but instead of drawing a forward slash or a backslash i subdivided the canvas into "cells" (i think the final grid is 30x30) which were either occupied by a line whose starting point is in the top left of the cell and terminates in the bottom right of the cell or whose starting point is in the bottom left of the cell and terminates in the top right of the cell. just diagonal lines. in code this looks pretty much like this:

          //this takes place in draw()

          int spacing = width / 30;
          for (int i = 0; i < width; i += spacing) {
            for (int j = 0; j < height; j += spacing) {
              int x1 = i;
              int x2 = i + spacing;
              int y1, y2;

              int coinFlip = round(random(0, 1));

              if (coinFlip == 1) {
                y1 = j + spacing;
                y2 = j;
              } else {
                y1 = j;
                y2 = j + spacing;

              color maze_color = color(0, 0, 0);

              line(x1, y1, x2, y2);

this is a simplified version intended to illustrate the underlying concepts and excludes a several tweaks to make it look clean and pretty at high resolutions and do all of the color stuff. but all in all the maze is a simple thing! so we have the skeleton of the maze, but making the colors of the background not only unique to each iteration but also pretty and interesting to look at was harder!

the pretty color picking algorithm is really hacky and also not even that good in retrospect! you might already know that on computers, colors are primarily written as red, green and blue values. this is closest to the way pixels actually work (as they mix these colors together), but more sensical ways to write colors exist which i would've used in retrospect (specifically the HSL color space make a lot of sense for this task and would've made my life a lot easier and probably made the end result more consistently good! maybe in the versions which get printed i will see if HSL makes things better). hindsight etc., etc...but here's how my pretty color picker works!

in plain english, what i do is i pick color values between 30 and 255 for the r, g, and b of a color, then check to see if they're all too low (under 65, in this case). if they are, i pick one of the color channels at random and then make that one a really high value! a very naive approach from when i was first learning how to do color stuff but the end result is actually pretty consistently pretty and strange! no complex complementary color algorithms, i just run this every time i need a bright color and this spits one out. if i ever do an HSV version i'll post that here, but the code for this one is like this:

          color random_color() {
            int low_color = 30;
            int high_color = 255;

            int r = int(random(low_color, high_color));
            int g = int(random(low_color, high_color));
            int b = int(random(low_color, high_color));

            int threshold = 65;

            if (r < threshold && g < threshold && b < threshold) {
              int coin_toss = floor(random(0, 3));
              if (coin_toss == 0) {
                r = int(random(200, 255));
              else if (coin_toss == 1) {
                g = int(random(200, 255));
              else if (coin_toss == 2) {
                b = int(random(200, 255));
            return color(r, g, b);

see! procedural generation is pretty simple and not that scary! if i run my processing sketch repeatedly i get covers like this.

if you want to generate the entire book on your own, or an entire run of books, or peruse the rest of the code etc etc etc, check out the git hub repo and clone it and so forth (ADVANCED USERS ONLY ok). a lot of it is really messy right now, may tidy in the future.

↑↑↑ back to intro ↑↑↑


[n.b. this was written as a more general survey of my feelings abt poetry around the time of this book's publication. i have edited it to better fit the intent and tone of this page, but only gently. i don't really agree with all of these points anymore but i'm going to honor the fact that i felt this way once.]

some highly reductive, completely subjective feelings re: poetics that have informed the way i write lately:

poetry which is primarily concerned with an ‘i’ speaker’s perceptions/feelings constitutes a lot of alt lit and contemporary lit, generally. i’m starting to feel like sometimes ppl are employing this rhetorical strategy not because the subject matter necessitates it but because it is a ‘cheap’ signifier. ‘cheap’ here not used pejoratively, but as a mechanical property of the method, a kind of efficiency which short circuits.

a first person narrator whose primary role in the poem is relaying events and perceptions grants a piece the context of shared experience, making it easier to convince the reader to become engage without much reservation in part because inhabiting a body is a familiar thing, inhabiting a train-of-thought is a familiar thing, etc. in alt lit this technique is especially common, so common that sometimes it seems it’s created a predominating voice that is co-opted/modified/added to as time goes on but still remains to some degree homogeneous: flatly affected, observational, feeling and perception based narration with some variation but almost always fundamentally concerned with an ‘i’ speaker or central protagonist whose perceptions/experiences constitute the whole of the poem (which is not to say i think alt lit as a whole is homogeneous, because it’s not, but it is endemic to certain mags/writers/etc). i don’t know how i feel about this. i think one of the central pillars of contemporary poetics is anything can be called literature, you know, anything can be poetry. which is good because the Academic Canon is terrible at pretty much everything except enforcing strictures which violently exclude certain voices (esp. marginalized ones). i feel like the dismantling of the existing canon should have allowed marginalized voices to relay experience which may not fit the dominating, canonical experience, but in practice i feel that a lot of alt lit upholds/enforces the existing narratives and rhetorical strategies of its own newly minted canon rather than diversifying voices. it’s rare that i feel like alt lit poetry/prose is experimenting with new ways to relay information which seems….odd.

(link to larger image)

this is a category-theory inspired map of the process of Art that i made. the idea is that if you create familiar syntactic data (bodily experiences, voices, etc.), the work of parsing that syntactic data into semantic data is easier for the reader. appropriating a common voice does a lot of heavy lifting w/r/t context and makes things more immediately evocative, immediately engages the sympathies and compassion of the reader through the process of obligatory identification of the self in the other. the straightforward pith of an unornamenal poetic compresses experience, making it more Optimal to deliver Feelings to the reader, cheaper. if a reader approaches a piece written in that familiar voice, one which is a part of a greater poetic lineage which overlaps with their own voice, the brunt of the work of connecting with that reader has already been done well in advance. in a lot of ways this can be really good because at that point, with the reader’s trust, you can subvert expectation and relay things that may have otherwise been a lot harder without that immediate trust. but as the syntactic data becomes more familiar the reader is going to derive less new semantic data. information is often lost in compression.

the constraint of a feelings-based/perceptual/experiential narration precludes poets from talking about things that can’t be ‘experienced’ in a conventional way. alt lit poems about loss are about the feelings of losing someone/something rather than the separate event of loss and what it is, alt lit poems about love are concerned with the feelings of loving another person rather than what love is, the process, etc...i’ve found myself increasingly interested in what things would look like if i stopped trying to identify them in relation to myself and what the removal of the human center can say about the fundamental/atomic nature of the Thing i'm trying to examine. mostly i’ve been trying to understand what it is rather than what it is to me. like, what if i tried to define things from scratch, not in relation to my own experiences? does that make sense?

[following: thematic spoilers of GUT FLORA, a book which is designed to be read almost like one would try to glue together a shattered vase, so if you’re interested in trying to understand without hints you should definitely read the book first. also yr interpretation takes precedence over mine so don’t let this affect yr reading either]

my goal with GUT FLORA was to write death poems that never say ‘dead’ or ‘death’ or ‘dying’ or anything explicitly about those things. death poems that are about relational experiences i typically find boring/sentimental and inaccurately portray the Thing itself. death can only be suggested. it cannot be seen or touched. phantom phenomena can’t really be portrayed relationally without losing information in the process. so i wanted to imitate the inapprehensibility of death structurally in the poems by ‘painting around’ it, by suggesting an absence at the center of Everything, something hidden away or encrypted or otherwise unknowable. this is hard to do if yr primary rhetorical strategy is to relay direct experience using a voice that has aesthetic baggage and existing associations. a first person speaker is suggested in the work (there are two i’s in the 12 poems that are written with alphabetic characters -- the one in binary is a little different and you can think abt why yrself) but the speaker’s presence in the narrative is deliberately ambiguous/puzzling/’distant.’ there is an amorphous ‘you’ referred to frequently whose identity is also obfuscated, ‘the witness.’ the images are ‘sensory,’ to some degree, but most are not based in an experiential reality. so the biggest questions i want the reader to be trying to answer while reading are ‘why is this here when it could not be here? what does its presence suggest?’ the answers exist in the text as an intricate web of connected images and concepts that can be untangled. but they can’t just be given away. they have to be revealed, confronted on an individual basis, or else information is lost in the process. something i realized in the process of trying to smartly obscure in my writing lately (and to some degree while writing GUT FLORA) is that if a sentence/line came to me naturally then it probably came from somewhere else. so my approach was to think of the way to write a given sentence/line that came intuitively and deciding not to write it that way, to pick the third or fourth or fifth iteration until i found something which was so new to me as to be alien.

↑↑↑ back to intro ↑↑↑