Critical Coding Cookbook
> text still needs to be edited
Screenshot of the Critical Coding Cookbook homepage.
Xin, you hosted a workshop during the H&D Summer Academy in 2020 together with Lark. I remember we (the H&D crew) were all very excited and energized by the workshop. It was called "Experimental Chatrooms". Your workshop inspired us using a chat platform (Zulip) as a design tool for our next publication. But I also recall being impressed by the way you and Lark prepared the workshop – almost like a "choose your own adventure” – a multiple paths workshop script! It was developed in a way that created an inspiring and welcoming learning environment for ALL participants regardless of their geo location, time zone or experiences with coding for instance. You also introduced participants to the concept of building consentful tech and prompted H&D to provide a code of conduct for the summer academy. Thinking back to that moment and also now having the privilege to read the Critical Coding Cookbook, it seems to me that your work as an educator and facilitator extends the usual requirements and formal boundaries of learning institutions. The Critical Coding Cookbook seems to me also an example of that. I am curious, could you both perhaps share a few experiences or considerations of what or who inspired you to become educators, and to create learning communities beyond or parallel to educational institutions. How has your practice evolved in and outside of institutionalized learning?
XX: Growing up in Taiwan, a geopolitically contentious island that lived through multiple blasts of colonizations, I have always had the tendency to question institutional knowledge. I have a vivid memory as an elementary school student in the 90’s, where our teacher walked into the classroom one day and asked us to question the history printed on textbooks. Over time I learned that there is a continuous debate on the official history of Taiwan, each version shaped by a different political actor in accordance to their own agenda. As an adult, I have found many parallels in the way US and German history is presented at the institutional level. My elementary school teacher told us that we needed to become independent thinkers by doing our own research, and in a way I’ve continued to pursue that spirit of self-education up to today.
Despite a number of inspirational moments inside the classrooms, overall I struggled greatly at school. Rules were often given without explanations, followed by disciplinary practices that only steered me further away from schooling. Upon completing my undergraduate degree, I, like many in their early 20s, aspired to address systemic injustice through a top-down and wide-spread approach. It wasn’t until I worked in the film industry for 6 years, I came to realize that I’d much rather make small but meaningful changes from the bottom-up, side-by-side with other people. This realization brought me back to graduate school to pursue a terminal degree that qualifies me for teaching.
My day job is in the university setting – it is how I make a living and it liberates me to do pro bono work such as the Critical Coding Cookbook. I am acutely aware of the way higher-eds in the US co-opt faculty research and play the murky game of representational politics while continuing to practice corporate logic. This means I have to be very intentional about everything I do, who I do it with and how I do it. For instance, I’d much rather volunteer my time helping local communities than fixing institutional problems. In an institutional context, I remind myself that I’m here to put most of my energy towards working with the students. I believe in direct engagements over bureaucratic maneuverings.
KM: I’ll be totally honest, for me I think becoming an educator in a formal setting, within the context of higher education, was entirely by chance. I did not aspire to have my current career path nor did I actively consider being an educator as a possible profession. If anything, my own personal relationship with formal learning environments when I was younger was always estranged. I remember as a younger person feeling alienated by learning in the classroom. It was always in pursuit of my own interests apart from the rubric of formal schooling that I flourished. My introduction to computers and technology was through a small community computer center where I grew up, where people taught each other through member lead workshops and interest driven self-education. Up until that point I did not consider myself someone who was “technical”, but the community, which was multi-generational and non-hierarchical, opened up possibilities and competencies I hadn’t been aware of. I guess that was a formative experience. Many of my projects, which are workshops and learning experiences, have sought to create that kind of “third place”, the kind of space where even for a few hours, people can “exchange ideas, have a good time, and build relationships.”
In an extractive capitalist society, opportunities to engage with others in ways that are non-transactional nor consumption driven presents a vital way in which we can embody and model alternative systems of value. Increasingly in an American context this is challenging to try to maintain in light of the ongoing corporatization of higher education. Still, I have been thankful for the dynamic learning community that manages to thrive at my current institution. That remains always a privilege.
The Critical Coding Cook Book takes an intersectional feminist approach to teaching and learning. Can you perhaps explain how you relate intersectional feminism to the practice of coding as well as learning with and about coding? and why is it important to you?
XX: Intersectional feminism is both a theory and a practice, originally coined by UCLA law professor Kimberlé Crenshaw in 1989 to address the institutional sexism and racism she had observed in courtrooms. Specifically, she pointed out how in the face of law, narratives of Black women were reductively framed within the confinements of racism or sexism, resulting in the dismissal of the compounded and exacerbating reality of being both Black and women at the same time. To counter this comparmentalization, Crenshaw proposed for an individual to be considered through their intersected identities, including but not limited to race, gender, class, sex, nationality, and abilities – as a vehicle to better articulate the overlapping systems of oppression they operate from within. As educators working within institutions that are founded on western-european tradition, which often inherits a narrow, exclusionary, and hierarchical relation to knowledge that historically benefits the dominant demographics in the society, an intersectional feminist approach breaks out of the grid-lock of a standardized, market-driven computer science curriculum by using alternate history and technique as our starting point.
The Critical Coding Cookbook recipes demonstrate multiple paths to intersectional computing. For instance, in Esolangs: Deprogramming the Language Divide, Echo Theohar describes the “linguistic inequality in computer programming” and searches for possible ways to disturb the dominance of English in computer programming. In Kolam in Code, Lavannya Suressh traces the procedural logic of pulli kolam, a folk practice originated in South India, and proposes the possiblity of building the algorithm into a 4-bit computer. In A School for Vernacular Algorithms, Tegan Bristow worked with a group of students in Johannesburg, South Africa to consider pre-colonial technology such as beadwork, palm/grass weaving, and lyrical practices from a mathematical and algorithmic perspective.
Examples of generated Kolams. Image credit: Lavannya Suressh.
Curriculum lead in the 2021 School of Vernacular Algorithms: Philisiwe Dube. Image Credit: Tegan Bristow. Photo Credit: Zivanai Matangi.
Although intersectional feminism is often used as a pedagogical tool to amplify marginalized histories and ways of knowing that live under constant threat of colonial and capitalist erasure, it is important to keep in mind that this tool is also good for addressing systems of privilege – a white woman in the U.S. may experience sexism but not the baggage of racism in their everyday life. It would be a mistake for an intersectional feminist to focus on oppressive narratives without integrated, comprehensive reflections on what it means to hold privilege.
In its conceptual framing – as a collection of recipes – the Critical Coding Cookbook aligns well with the common thread of this publication. The commonality of all contributions is that they somehow relate to some sort of 'pedagogical document'. Pedagogical documents are for instance workshop scripts, installation manuals, how-tos, scores or gameplays. On the one hand these documents propose a pragmatic approach. They are generous and activating, inviting other people to take for instance a recipe and run with it, make it their own. On the other hand it is perhaps too simple to expect such a document to be functioning or to be meaningful in any context in the same way. They emerged from a specific context and due to specific and sometimes peculiar practices. Can you perhaps reflect on your choice of the recipe analogy for the book and the editorial framework of a cookbook. What are the possibilities as well as challenges you encountered using this format?
XX: From the get go, we envisioned Critical Coding Cookbook as a repository for the learning community both in and outside of the institutional context. The question that follows then was what type of relationship do we want to propose between learners and the medium they study? We thought recipes might be a good analogy and a format that feels more welcoming than traditional academic textbooks or open-source documents. Recipes are instructions to be re-performed and are wonderfully kitschy and welcoming; they are meant to help someone make food for oneself or others – a gesture that directly impacts our sense of pleasure and well-being without layers of intellectual abstraction; they parallel with the notion of oral history and are meant to be passed down and shared with their intended community.
At the New School, Katherine and I have developed and taught Critical Computation with a number of faculty over the last three years. This course introduce programming concepts through an intersectional feminist lens, thereby situating the act of computing in a social-historical context. We unpack discriminatory practices embedded in pervasive technology by integrating readings such as Algorithms of Oppression by Safiya Umoja Noble, Race After Technology by Ruha Benjamin, Blockchain Chicken Farm by Xiaowei Wang, and Crip Technoscience Manifesto by Aimi Hamraie & Kelly Fritsch. Although some of these writings are published by academic presses, we really appreciated the accessible language they use and the readers that would reach. When it comes to expressive, critical, and community-centric ways of working with technology, we think that an intersectional approach replaces the canon by instigating a world of plurality. Recipes made sense as concise documents that can be modified and revised in practice.
Of course, recipes often carry a one-sided instructional quality and may be misinterpreted as strictly utilitarian. To work against this, we intentionally didn’t provide any standardizations or examples in our open call. As a result, we received multiple entries that troubled the notion of repeatability – for example, How to code human bodies for devouring and mutual enlightenment by Mario Guzman and terra firma by Sara Rivera.
Screen capture from the in progress-open source index. Image credit: Sara Rivera.
You worked with an open call for contributions. Can you say a bit about the process of compiling the book. Were there any surprises, contributions you did not anticipate? What were your criteria for selecting?
KM: One of the benefits we found of an open call format was the unpredictability of submissions. We wanted to encourage the broadest range of contributions possible, and an open call was the least restrictive pathway to achieve that. As for criteria for selection, it was important to us that the submissions reflected an intersectional perspective on computation. We were actively seeking work from practitioners who were questioning the epistemological framing of programming, researching alternative histories, and forging culturally situated pathways through this field.
XX: I was pleasantly surprised by the number of contributions that emphasized the virtue of uncertainty. How to contribute to open source software by sharing uncertainty by Evelyn Masso encourages new contributors of p5.js to turn uncertainty and vulnerability into a strength. Failing to CODE by Becca Rose connects ideas in The Queer Art of Failure by Jack Halberstam with computer education. These are such a lovely reminder of the fragility of human creation and the meaning of remaining humble with oneself and others.
Image credit: Becca Rose.
I understand the format of the recipes as it is interpreted in your publication also as a way to dismantle or trouble the status of a precious unquestionable art piece, something that functions as a self-contained object, something that can be comprehended and used easily, designed by an individual star artists. The recipe could be seen counter to that … emphasising the process of coding and the sharing of such a process, which makes it harder to distinguish. You also speak about messy histories of computation. Can you perhaps elaborate on the notion of a messy practice or history of coding? What does that entail to you?
KM: Typically in histories of computation the narrative presented is sequential, logical, and the result of an inevitable progression. The story moves from one great innovation to the next, each development presented as an improvement on what has come before. There may be disruptions to this forward movement, but these are seen in the context of an trajectory of optimization. We are left to assume that what was left behind, fixed in a historicized frame, was done so because the “better” ideas or invention won out. In these traditional histories the protagonists are clearly identifiable, homogenous, and driven by their vision for an objective betterment of humanity “for all.” In reality, however, the actual passage of events rarely conforms to this structure, which is undergirded with capitalist, eugenicist ideology. For example, author Clare L. Evans in her book Broadband profiled computer scientist Wendy Hall, who developed a specialized linkbase, Microcosm, which would automatically and dynamically update hyperlinks, creating a “messy” web of collaborative connections. This is in contrast to the embedded hyperlinking that became standard, wherein individual web pages, as a singular authority contained only outward links, which could be rendered with time potentially “dead” or obsolete. This represents two epistemological frames, one of inherent interdependence and collaboration, and one of rugged individualism and solitary enterprise. Likewise, in Black Radical Translation Shayna Robinson embraces Black cultural traditions, not as a means of optimization, but rather a complication and challenge to reimagine technological visions rendered through the frames of whiteness.
SQL Translation of June Jordan’s Black English Translation of Shakespeare’s 116th Sonnet
Shayna Robinson, 2021
CREATE TABLE love (instance TEXT,
value INTERGER, height INTERGER, provocation TEXT temporality TIME);
DELETE FROM love WHERE instance LIKE impediments
OR instance LIKE trouble OR instance LIKE doubt;
SELECT value FROM love ORDER BY height DSC;
SELECT COUNT provocation FROM love LIMIT 1;
SELECT * FROM love WHERE temporality IS NULL;
A “messy” practice and a “messy” history acknowledges the entanglement of interlocking systems of oppression in shaping historical record, attenuating the visibility of some people at the expense of others. Messiness acknowledges multiple timelines, multiple narratives, and multiple perspectives, which may sit in tension with each other, and may pose complicated and contentious questions about power and privilege. In practice this means thinking critically about the knowledge and labor we value. It means questioning the epistemological framing of the rational and scientific, and opening spaces for intuitive, folk, and embodied understandings of computational concepts. It might mean asking oneself what values and ideology are packed into what we think of as “good” code, or how we pedagogically approach programming organized around hierarchical “best practice.” It also means acknowledging the multiple ways in which knowledge and practice is exchanged, and recipes are an apt conceptual model for sharing, attribution, and growth within informal networks.
You are considering making a printed version of the publication. It seems not an immediately obvious choice as the subject matter deals with computer programming. What is the benefit in your opinion of a physical book over a digital publication, particularly a book about coding?
KM: I think that different media have affordances that allow for varied ways of contemplating ideas. Books are objectively concrete in a way that embodies and materializes knowledge which we then perceive in a distinct way. From a philosophical standpoint moving to a physical medium like a book aligns us with an approach that focuses on providing multiple entry points to the content, much in the same way web accessibility was an essential component of the website design. If the intent is to reach an audience that is not only confined to people who already identify with computer programming and/or computational technology, then a book remains a very enduring container for information, one that provides a physicality which is familiar and inviting to potential readers from a variety of backgrounds.