A Report on the Feminist Coding Workshop in p5.js

A five-hour feminist coding workshop took place in Aarhus last week, as part of the !null platform[1], which is organised by artist Anders Visti. We had 8 participants from diverse backgrounds, including an artist-graphic designer, a curator-researcher, a social scientist-researcher, a photographer-researcher, a media artist, and three digital design students from Aarhus University. It was my first time organising the so-called ‘crash coding workshop’ with the aims to introduce basic coding concepts, as well as to explore code as expressive and aesthetic materials to women, queers, LGBT, non-binaries and minorities who do not have any prior programming experience.

One of the major challenges of this kind of coding workshop is the balance between the practical and functional aspects of the code, as well as demonstrating and introducing how we may think of code culturally and aesthetically within a short timeframe. I consider planning, designing and implementing this feminist coding workshop is a way to explore and experiment with the possibility of teaching and learning code in a humanistic way.

I framed the whole workshop within the perspective of feminism, where the full title of the course is “Feminist Coding in p5.js | Can Software be Feminist?”. Inspired by Tara McPherson [2], a media studies scholar, how might we design for difference and how may I, as a scholar and artist, take code seriously and consider values, ethics and diversity in designing a tech-related workshop? I first introduced the background of p5.js, which is a Javascript library that we used for teaching and learning. Although Javascript is a fairly standardised and popular high-level programming language in the web genre, what interests me the most is the values behind p5.js. Artist Lauren McCarthy founded the project p5.js in 2014, with support from Processing Foundation, Interactive Telecommunications Program at New York University, as well as many other contributors. McCarthy observes that there is a lack of diversity in the open source environment, and the values behind p5.js are to prioritise community outreach and diversity [3]. She says, “thinking about community outreach and diversity is not a secondary goal of p5.js, it’s the foundation on which the platform is built.”  (2015) As a woman working in the technological sector, McCarthy organised and participated in many feminist groups and discussions, including but not limited to Scope Lab in the Centre for the Study of Women and VoidLab in the Design Media Arts Department at University of California, Los Angeles. Additionally, p5.js as a platform has a subdomain called “diversity.p5js.org”, which is a project created by Chelly Jin who promotes the visibility of various identities through organizing different activities, such as The Interactive Book Club and showing works and interviews by Asian women and gender non-conforming coders. By elaborating the background of p5.js, I advocate the importance of designing for difference that would cultivate a more inclusive and diverse environment, where the values behind p5.js are one of the important criteria to use this creative tool in the workshop.

Within the discussion of creative coding, I have developed an artwork/ e-literature/ digital poetry/ web art called Vocable Code, exploring code as expressive materials, and the project is regarded as an essential part of the feminist coding workshop. Vocable code examines the notion of queerness in computer coding. Through collecting voices and statements from others that help to complete the sentence that begins: “Queer is…”, the work is computationally and poetically composed where the texts and voices are repeated and disrupted by mathematical chaos, creating a dynamic audio-visual literature. Behind the executed web interface, the source code is deliberately written as a piece of Codework [4], mixing a computer programming language and human readable language that explores the tension between computational constraints and language poetry.

Indeed, the constraints regarding not only incorporating computer syntaxes and functions, such as for-loops and if-else statements, but also the resistance of binary logics that have been informed by Feminist Software Foundations, philosophers Sadie Plant [5] and Judith Butler [6]. Fundamentally and technically speaking, 0s and 1s are the basic binary digits that structure how a computer functions and how the code is executed. All the semantic layers of code are ultimately reduced to either 0 or 1 for machine execution and processing. Functionally, source code can be considered as written instructions that are translated into 0s and 1s for a computer to perform certain tasks. To talk about computer code, there is, essentially, another layer of interpretation from source code to machine code (also known as bytecode),  yet it is computationally impossible to escape binary logic.

From the invention of digital computers to contemporary computation, the design of computer infrastructure, programming languages and algorithmic decisions are technically structured and written in the spirit of absolute logics without any ambiguity. Provided that if there is a fulfilment of a clear and concise condition, then the computer will execute a pre-defined path and perform certain actions as stated basically. This is how an if/else conditional statement works in computation, and it promotes a particular style of writing and thinking as binary: on or off, true or false, yes or no, something or nothing, this or that, which is ideally nothing in between, or nothing can be undecided, or nothing as non-binary. This binary computational thinking is influential and powerful, forcing us to think in dualism, both implicitly and explicitly.

In view of this, the source code of Vocable Code is a written poetry, which is an attempt to think through the cultural implications of binary logics. Inspired by the feminist programming language C+=, Vocable code avoids the writing of source code with binary 0 or 1, a single x or y, and a single operator with < or >. Obviously, setting these rules does not mean that this is an attempt to avoid binary thinking entirely, which is computationally and conceptually impossible. However, as the author of the project, I decided to work with these struggles that express and make a point in the form of Codework by having written constraints and paying attention to the naming of computer syntaxes, such as the names of variables, arrays and functions. This is what I consider as a form of queer code, which is a constant unsettling and questioning on the binary thinking and logic, both culturally and technically.

Vocable code explores the voices of both human and nonhuman bodies, producing speeches by the author and other participants through computer and data processing.  There were various activities involved as part of the feminist coding workshop. The first activity was called “Decoding, Reading and Interpreting Code and Logics”, which is a reverse engineering of computational logics that is based on what one can see and hear, from visual representations to sequences of logics and things that have changed over time.

Participants were then required to map the identified items and logics with the source code. The source code is intentionally written in a format where one can possibly read, guess and interpret some of the functions and meaning. Incorporating reading is an essential part of coding practices, or what Annette Vee describes as “coding literacy” (2017). Code reading and interpretation hint at how a program is designed and how an algorithm is expressed and performed through time. While asking novices to write code, I consider reading and interpreting code as a pre-requisite to writing code.

After the first activity, I introduced some basic concepts of code, such as the structure and syntax of p5.js, and how functions and conditional statements are written. Given that there is a general understanding of Vocable Code, the basic code concepts become easier for participants to grasp and learn. They are able to do this via a concrete piece of software that has already been introduced.

Encountering errors is one of the most common experiences for coders and it is beneficial that errors could be traced, located and understood easily through the browser’s web console. Reading errors is also a way to understand how things work or not work, as well as revealing some of the underlying logics and infrastructure. The second activity is about working with errors. By tinkering code, it is an iterative process of trial-and-error by changing some of the code parameters and naming. Participants refresh their browsers after changing the code in a code editor, and the results give a closer sense of the meaning of some computational values and functions. They first started by focusing on changing numerical values, such as the color of text and background, size and speed of text, as well as values in random functions. It was then followed by exploring the semantic and poetic aspects of code by modifying some of the names, such as the font variable “withPride” and other variables and arrays such as “queers”, “WhoisQueer” and “whatisQueer”. The later activity is meant to highlight the discrepancy and conflation of both human and computer languages.

The whole feminist workshop was very hands-on on the one hand, but it was also very much driven by discussion on the other. Since we had few participants who are interested in poetry, literature and design, the environment is mobilised with active participation and reflexive discussion. We have discussed what poetry is, what constitutes poetry, and what might be the aesthetics of Codework. Under the bigger question of the title of the workshop: Can software be feminist? it opens up the thinking about what it means by feminist coding and feminist software.

We have considered performing the Codework by reading the source code aloud as a form of embodiment. One of the participants said that the explanation of some of the computational logics is indeed difficult to avoid the binary thinking. The Vocable Code is designed with a particular way of computational thinking, where things are broken down into blocks and discrete units that are structured in sequences as the program is run and unfolded. This step by step problem-solving technique has a wider consequence, from technical implementation to the cultural experience of Vocable Code. Similarly, binary thinking and logics are more than mere technical implementations, “they are the infrastructure to its superstructure: not another order of things, but another mode of operations altogether” (Plant, 1997:50). There might be a danger of simplifying the real-world phenomena with binary thinking and operations, where we may forget there are many other in-betweenness that cannot be simply regarded as oppositional binary, such as true or false, right or wrong, yes or no, female or male, feminine or masculine, science and humanities, technical and culture.

After reading and tinkering with code, the final activity was named “Writing, Thinking and Creating your own Vocable Code”. It was designed to incorporate the previous discussion about the aesthetic of code and poetry, allowing the participants to explore their own form of Codework. From the most basic level of adding their own voices and statements to sketching the whole new algorithm about Vocable Code, the workshop ended with the brief introduction of various further learning resources on coding and theoretical readings on code poetry and feminism. Running a crash coding workshop in 5 hours, balancing the functional/practical and the aesthetic/critical aspects was interesting but challenging. Nevertheless, this format of the workshop, at least, demonstrates some of the essential elements to approach coding practice, including both reading, writing and thinking with and through code. Importantly, the workshop was an attempt to introduce what I called Aesthetic Programming, which is a humanistic approach to coding that addresses both the cultural and aesthetic dimensions of code and coding practice.

[1] !null is a public forum, based in Aarhus, Denmark, for artists, developers and hackers using contemporary technology for creative expression and aesthetic inquiry.
[2] McPherson wrote the article titled ‘Designing for Difference’ for A Journal of Feminist Cultural Studies in 2014. Within the article, she asks, “Can software be Feminist?”. I think through this specific question whilst preparing the course and the related artistic materials.
[3] See: http://opentranscripts.org/transcript/p5js-diversity-floss-panel-introduction/
[4] See Rita Raley’s text on the practice of Codework: http://electronicbookreview.com/thread/electropoetics/net.writing
[5] See the book Zeroes and Ones: Digital Women and the New Technoculture (1997).


  • Butler, J, Gender Trouble: Feminism and the Subversion of Identity. Routledge, 1990.
  • Cox, G and McLean, A, Vocable Code in Speaking Code. MIT Press, 2014.
  • McPherson, T, “Designing for Difference,” A Journal of Feminist Cultural Studies, 25(1), 2014.
  • Plant, S,  Zeroes and Ones: Digital Women and the New Technoculture, 1997.
  • Rita, R, “Interferences: [Net.Writing] and the Practice of Codework,” Electronic Book Review, 2002.
  • Vee, A, Coding Literacy, MIT Press, 2017.