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).

References:

  • 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.

net.art generator / generating discourse

I will be givng a talk and workshop together with Cornelia Sollfrank, Morgane Stricot and Matthieu Vlaminck @ ZKM on the 13-14 Dec, 2017.

/*In «net.art generator«, not only do the technical problems that are relevant to other digital works become apparent, moreover, it also shows the problems associated with data policies and their hegemonies. The podium discussion brings these technical as well as political-economical associations to the fore, and attempts to develop strategies and tactics for the growth and effective conservation of digital works. During the workshop, initial ideas will be experimented with, perhaps social hacking or the development of a completely new API. Together with the artist, we want to discuss how the problems of propriety software could be solved, why and what it actually consists of, and which political, art-theoretical implications are concealed behind it.*/

More details: http://zkm.de/en/event/2017/12/workshop-netart-generator-generating-discourse

Feminist Coding in p5.js | Can Software be Feminist?

Vocable Code (Work-in-Progress) by Winnie Soon | Medium: Software Art/Digital Poetry/Composition

I am going to organize a half day feminist coding workshop primarily for women, queers, LGBT, non-binaries and minorities who are interested in programming, exploring the intersection of art, language, technology and feminism. The workshop addresses computer code as a language that is designed for both human and machine reading. Participants will base on the artwork/digital poetry/composition ‘Vocable Code’ to learn basic coding concepts, and they will also explore code as expressive and aesthetic materials, such as computer code as poetic text that is performative and executable. Through thinking and discussing code and (non)binary logics, participants will incorporate textual materials, visual effects and recorded voices to produce their own web-based algorithmic vocable code.

– No prior programming experience is required
– Bring your own laptop with Firefox Browser installed + your smartphone.

*The workshop is free of charge

Date/Time: Saturday, Nov 25th, 2017 · 12.00–17.00
@ Høegh Guldbergs Gade 65B, DK-8000C, Denmark

Check !=null for latest update.

Why p5.js?
p5js is an open source Javascript library developed by the Processing Foundation and is founded by Lauren McCarthy to make coding more accessible to artists, designers, educators and beginners. Winnie shares the vision and goal of p5.js, which is to put community outreach and diversity as the priority.

What is coding in university in practice?

I am going to join a panel titled “Practising Research: Knowledge Creation Through Experimental Practices” as part of The Purpose of The Future University conference at Aarhus University in Nov, 2017.

My abstract:

What is coding in university in practice? Computer coding courses have increasingly been integrated into school curriculum, from primary schools to higher education beyond Computer Science and Engineering disciplines. One of the practical reasons is that IT-related jobs are in high demand across industries. Beyond tech companies, other sectors, such as medical health, toys and publishing, have been highly digitalized to support and facilitate new models of user engagement, as well as data capturing, processing and analytics. In other words, knowing how to code contributes to the economic value and growth of computational artifacts.

Despite aiming to develop new applications, platforms and solution, there is an increasing critical attention to the understanding, theorizing and analyzing of our digital environment through code studies (Chun, 2011; Berry, 2011). With the prevalence of technology today in contemporary culture, enormous quantities of data are generated and disseminated in real-time through a highly networked, programmable and distributed environment. The rise of so-called ‘big data’ in the 21st century has sparked unprecedented economic value through datafication—a phenomenon in which personal profiles and behavioral logs are stored on corporate server farms. Data is captured, processed, distributed and analyzed to generate new information and knowledge. The understanding of such systems through coding practice, the reading and writing of computer code, may offer opportunities for students to make inquires, create new modes of knowledge and raise different kinds of questions in the area of humanistic IT, including social, political and ethical ones.

The term ‘creative coding’ emphasizes code as an expressive material, exploring code concepts and producing creative works through experimentation (Maeda, 2004; Peppler & Kafai, 2009). In this presentation, we propose learning to code via exploration, reflexive thinking, critical making, artistic intervention and creative production in higher education. Instead of learning to code from a Computer Science perspective with a focus on technology as an instrument to tackle real world problems, the undergraduate course Aesthetic Programming has been introduced at the Department of Digital Design, Aarhus University, addressing coding as an aesthetic, creative and critical endeavor beyond its functional application.

Beyond learning basic concepts in computer programming and designing and developing computational artifacts, students in the course also explore coding as a practice of thinking with and in the world, and learn to understand the complex computational procedures that underwrite our experiences and realities in digital culture. In other words, the practice of coding is neither just focused on building functional applications; it is also a way to examine and reflect the increasing role of computation in our society and culture. More specifically, Aesthetic Programming can be seen as a practice-oriented exploration of the relationship between art, design, technology and culture, examining wider political, cultural, social and aesthetic phenomena. Through emphasizing programming as critical work in itself, the practice of coding and the production of concrete artifacts serve not only as creative expressions but also as a methodological vehicle to examine complex techno-cultural systems through the acts of creating. This presentation will discuss the methods of teaching, the structures, outcomes and challenges of the Aesthetic Programming course, which contributes to the discussion of the future university in the context of humanistic IT.

References

Berry, D. M (2011). The Philosophy of Software: Code and Mediation in the Digital Age. Palgrave macmillan.

Chun, W. H. K. (2011). Programmed Visions: Software and Memory. The MIT Press.

Maeda, J. (2004). Creative Code. London: Thames & Hudson.

Mortfort, N. (2016). Exploratory Programming: For the Arts and Humanities. The MIT Press.

Peppler, K. A., & Kafai, Y. B. (2009). Creative Coding: Programming for Personal Expression. The 8th International Conference on Computer Supported Collaborative Learning, Rhodes, Greece.

Why Code? Why Program? Why Create?

Code as both text and executable instructions, which is regarded as rich materials for interpretation and analysis. Winnie will talk about her creative (software related) works in order to unfold the importance of coding practice in her thinking and research, examining the infrastructure and implications of techno-cultural systems around us.

I am going to give a talk titled “Why Code? Why Program? Why Create?” at DLRC, Aarhus University on 4 Oct, 2017 | 14.00