What code can say

By

In my latest article, I talked about literacy and how understanding code makes you see the world in another way. There we uncovered how the ability to read and write code can make you see technology through a different perspective. Like when you learn to read and write, a new world opens to you. Code is a language and as it happens with all languages, there are people trying to get it to the limit. This limit can be technical / logical or poetic.

Continuing my readings of Soon’s and Cox’s Aesthetic Programming book, I was faced with the software artwork Vocable Code made by Winnie Soon, one of the book authors. In this work both the result of the code and the code itself are the final art, where the code functions as a sort of counterpoint to what we get if we run the code. Below you can see the full code and we'll break it and analyze each part of it and the meaning behind each name (the code is also available on Gitlab):

The code above is a js code made to run using p5js, a library whose focus is to help artists and devs trying to create digital art. On the code we can see some functions that the library makes available globally and uses to draw and load data on the browser. The ones that does that are preload, setup and draw. We won't be talking about them here, but you can read more on the links above.

Now, from what Soon created we have some global variables set on the beginning of the code: withPride, whatisQueer, queerRights, makingStatements, speak, voices, and queers. From these variables we already know that she wants to talk about queer pride, queer rights and voices. Other data available globally are the makeVisible, SpeakingCode, speakingNow and notNew functions. From this, one thing that gets attention is that although it's a function, SpeakingCode is written in pascal case, instead of camel case. Another thing is the notNew function that acts as a sort of constructor that has some attributes attached to it.

However, even if the deconstruction above helps to understand better the code, what we have here is also a poem and we'll understand it better if we also read it line by line (poems can be read in different ways, so there is no harm in breaking them, separating and doing your own thing). Now going by parts:

On the preload function, the code is loading the Type with pride font, a font created in honor of Gilbert Baker, the creator of the rainbow flag. It's also loading a json file with a list of statements. In here we see the repetition of the queer theme and a preamble of how it will be treated, by the pride and recognition point of view.

On the makeVisible part, that I cleaned from its comments to make it easier to read as a poetry, we see that making it visible is assigning the queers and make statements until the queer rights are visible and its accepted that there are at least as many genders as there are new queers. On it we can also see that the author avoided to use integers almost everytime a number apears, using float instead. The only case she does that is on the if (gender == abs(2)).

abs is a p5js function that gets the absolute value of a number. In this case the function isn't necessary, since 2 is already its own absolute value, but as the Aesthetic Programming authors says on their book, "Read aloud, the block of code might translate as: 'If gender equals absolute two, speaking code, queers, who is queer, I am, making statements.'". So what we have is that the abs function adds a new layer of meaning to this part of the code saying that while gender is considered absolute two (a.k.a. we only have two genders and nothing else is acceptable), queers need to speak and make statements.

The next part I want to call out is the draw function. This is where the visual part starts. The draw function is called 60 times per second by p5js, making the art piece works at 60 frames per second. It has a for loop the parses for every queerRights and an if statement that calls the makeVisible function that we read above in the case queerRights has less than two members.

Before going on this line by line, I want to call attention to the use of notFalse here and the use of 2.0. Both are here to avoid the use of binary values. In this case true, false, 0, 1, and 2. Since the author is talking about queer and queer rights, she is making another statement about existing more than a binary reality, evoking non-binary logic or many-valued logic, like Paraconsistent logic. However, the main meaning here is that there are more than two possible values and that we need to make them visible.

By the if statement, we also get that we'll never have more than three queerRights. Again, the author could have selected two rights, but decided to go with a number that goes against binary.

Now for the for loop, we get that "queer rights non binary world wide", "queer rights non binary acts", "let support equals queer rights non binary shows". By the text itself, we get that queer rights is something that needs to be thought about in a world wide setting, and to get that, we need to act and show support.

Another thing is that worldWide, act and shows are all functions that exist inside the notNew sort of class thing. If we go back to the makeVisible function we'll see that it instantiates new queers using the notNew function. The idea is to emphasize that, although it may look new to people outside of the queer movement, they aren't new at all, they are just finally making statements, fighting to make themselves visible.

There is more that can be said about this code. However, my focus here was just to show how code can be more than simple rules that a computer must follow. I would even say that code is always more than a set of steps. That is why programmers like to talk about code readability, clean code, coding languages that are easier to read or that it's verbose. A code poem only makes it more visible that there is more than a single layer on the languages that we use to create a digital landscape.