Skip navigation

The (pretty bad) poem below will execute in Processing. I tried (with my very limited capabilities) to illustrate an example of what I'm calling "supertext", where the source code is semantically coded and also executable. I'd be very happy to collaborate with some–more literate person than myself–on this. I could probably sling the code and conceptualize some visuals, if you could handle the wordsmithing.

// paste everything below into Processing and hit the run arrow or (OSX: cmd + r WIN: cntrl + r)

/* hunger
Ira Greenberg
original "puff" code October 22, 2005
revised "hunger" May 23, 2006

// head of the beast
float heaving;
float ascension;
float anxiety = .7;
float hope = .9;
int darkness = 0;
int heavens;
int dirt;

// body of the beast
int flesh = 2000;
float[]guts= new float[flesh];
float[]blood= new float[flesh];
float[]girth = new float[flesh];
float[]heft = new float[flesh];
float[]fate = new float[flesh];
float[]compulsivity = new float[flesh];
float[]tenderness = new float[flesh];
color[]phlegm = new color[flesh];

void setup(){
size(400, 400);
heavens = width;
dirt = height;
// begin in the center
heaving = heavens/2;
ascension = dirt/2;

//fill body
for (int i=0; i< flesh; i++){ girth[i] = random(-7, 7); heft[i] = random(-4, 4); compulsivity[i]= random(-9, 9); tenderness[i] = random(16, 40); phlegm[i] = color(255, 50+random(-70, 70), 30, 3); } framerate(30); }

void draw(){

// purpose
for (int i =0; i< flesh; i++){
if (i==0){
guts[i] = heaving+sin(radians(fate[i]))*girth[i];
blood[i] = ascension+cos(radians(fate[i]))*heft[i];
guts[i] = guts[i-1]+cos(radians(fate[i]))*girth[i];
blood[i] = blood[i-1]+sin(radians(fate[i]))*heft[i];

// wrenching
if (guts[i] >= heavens-tenderness[i]/2 || guts[i] <= tenderness[i]/2){
tenderness[i] = random(1, 40);
compulsivity[i]= random(-13, 13);
if (blood[i] >= dirt-tenderness[i]/2 || blood[i] <= tenderness[i]/2){
tenderness[i] = random(1, 40);
compulsivity[i]= random(-9, 9);
// creation
ellipse(guts[i], blood[i], tenderness[i], tenderness[i]);
// divinty

// mind wandering

// hopes edge
if (heaving >= heavens-tenderness[0]/2 || heaving <=tenderness[0]/2){
if (ascension >= dirt-tenderness[0]/2 || ascension <= tenderness[0]/2){


  1. Ira: we talked (while skating) about some of the surprises in this poem, especailly the overlap in "sin" (transgression) and sin(e) (as in trigonometry). This poem is semantically complex: but could executable poetry be written that involved syntactic complexity, both mathematical and linguistic? Do all the variables have to be nouns — could there be verbs? The only verbs here now are participles.  Instead, I am wondering if there could be verbs that involve transitivity, having capacity to transfer meanings between subjects and objects? Or is that not possible because JAVA is object-oriented, necessarily built up out of objects?

    When I think of language as nothing but nouns, I think of the completely reduced (and violent) versions of it such as the Lager Jargon described by Primo Levi in The Drowned and the Saved. The opening gambit in Wittgenstein's Philosophical Investions is to show how limited, how unlivable, would be a referential language, a language of objects such as Augustine imagines in City of God.

  2. Very amazing site! I wish I could do something as nice as you did…mary

Leave a Reply to Economy news and blog Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: