Position 03
Throughout the past week I have endeavoured to develop interfaces that are not bound by the limits of usability but rather focus on the development of new kinds of interfaces through the direct combination of external information and aspects of algorithmic design. This has manifested itself in the form of clock interfaces which integrate time data with Perlin noise - a form of algorithmic quasi-randomness. The resulting works function more as time visualisers rather than actual reference tools, which (poetically) invite the viewer to spend time watching and interacting with them. This work has pushed my thinking further into investigating what new ways of interpreting information are made possible through coding. It has also highlighted certain aspects of this medium which I think should be explored more fully and on which I shall focus in this entry.
The importance of iteration
Previously I have highlighted the difference between coding within a developer (or traditional) setting and a creative setting. The pivotal role of this distinction has become increasingly clear, and it hinges on the presence or absence of a defined output. If an output is pre-defined then the aim of one’s labour is to produce that output. The process of writing a line of code and assessing its outcome amounts to what is essentially debugging - the process of removing unwanted errors, or rather products that deviate from the defined output. However if an output is not defined then this cyclical process of writing code and assessing results is allowed to lead the design in new, interesting, and unpredictable directions. This is the true meaning of my references to the role of randomness, and is the reason that iteration is such a central aspect to this way of designing.
Playing with constraints
I have found a strong methodological parallel in a group that has been sitting under my nose for a while - the Oulipo. Having read excerpts from George Perec and Raymond Queneau, I had not stopped to consider the broader thinking of this group of french writers and mathematicians. The Oulipo’s central thesis was defining, or leveraging, the role of constraints within their work. They believed that writing is always constrained by something, and to acknowledge those limitations, or even to self-impose new ones, leads to new perspectives and new forms of creative impetus. This was often carried out in the form of iteration, and many times algorithmically, until the boundaries for their work had been sufficiently tested (Gallix, 2013).
The parallels with creative coding are quite obvious. The use of different constraints to traditional graphic design practices acts as a moving of the goalposts, allowing the designer to test these new boundaries through exploration, iteration, and subversion. Much like Queneau’s Exercises in Style (1947), a sketch can produce tens (if not hundreds or thousands) of different results that can differ in subtle or in very overt ways, through very small changes within defined coding parameters.
The politics of code
In talking about constraints one inevitably must consider the politics of who decides what constraints should be imposed and why. Within the context of computational design this can be quite a vast and messy topic. Like all tools, coding allows the designer to formulate and present visual media in certain ways and not others. This statement is both true and untrue. Coding definitely has certain affordances and certain constraints. You can, for example, generate a grid of squares across an artboard moving as if they were alive and pulsating in different colours with relatively few lines of code. You can’t, however, format those colours in CMYK. This would mean that the politics of coding, as discussed by Tenen (2017), will push the computational designer to work in certain ways, to produce certain outcomes for certain formats. This is somewhat true. But it is not always true, and it is not always true forever.
This is because of two factors. The first is that coding, unlike many other visual tools, is a language whose grammar is based on the combination of instructions and mathematical formulae. What this means is that often even though something might not be easy to create directly, one can usually still accomplish the task through coding in more elaborate or unconventional ways. Because the language can be so readily re-combined and re-interpreted, it opens up the playing field to the extent that one can create almost anything they can imagine.
The second is that the tools around coding are open source and are surrounded by a community of people who are constantly furthering the field and often are very willing to help one another. Remember that example about exporting in CMYK? Someone created a third party library (essentially a pre-written string of code) that will allow you to output colours in CMYK. And now that library is hosted directly on the main library archive of the coding platform website. So even if something is very difficult to do now, someone might develop an extension that will allow that something to be done easily at a later point in time.
There are many other factors involved in the politics of coding which I have not mentioned here, but for now I will conclude with a new question - is the very concept of creative coding a subversion of the medium’s politics?
References
Gallix, A. (2013) Oulipo: freeing literature by tightening its rules. Available at: https://www.theguardian.com/books/booksblog/2013/jul/12/oulipo-freeing-literature-tightening-rules (Accessed 14 May 2021).
Queneau, R. (1947) Exercises in Style. London: John Calder, 1998.
Tenen, D. (2017) 'Literature down to a pixel', Plain Text: The Poetics of Computation. Stanford: Stanford University Press, pp. 165-195.