Examining code through the humanities
...my three-week adventure in the 2020 Critical Code Studies Working Group
|Stephanie Morillo||Feb 9|
Welcome to the Tertulia newsletter. The word “tertulia” refers to informal social gatherings in Latin America, where topics like the arts and current events are discussed.
This past fall (fresh out of grad school and nurturing a kick to read academic literature that I had no time to read in my Master’s program) I found an essay by Mark C. Marino on something called Critical Code Studies (CCS). It’s an interdisciplinary field that examines computer science through the lens of the social sciences. For years, I’ve thought about questions like: “Why do we employ master/slave terminology in software?” and “Why are most programming languages used in an enterprise setting based on English?” I’ve always bristled against the notion that computer science—and programming specifically—were “logical”, “rational”, “neutral”; that they somehow existed outside of the ontological framework known as real life, which is “irrational”, “emotional”, “messy”, “subjective”.
Every two years, Mark Marino and other CCS scholars host a “working group” where technologist practitioners, academics, and social scientists are invited to participate in discussions related to three curated topics. Each discussion is moderated by someone whose work touches that topic. This year, our three topics were critical code studies, indigenous programming, and feminist AI. Participants are invited to ask questions and submit snippets of code for critique. All of this work is done to advance the field in a collaborative environment (and all online).
Ever since I got my Master’s over the summer, I’ve really missed being engrossed in an educational environment. As difficult as it was balancing grad school with a full-time job, I was constantly learning and reinforcing my skills acquisition with assignments and projects. The Working Group was a way of helping me dip my toes back into academic discourse.
So about “master/slave”…
Back in 2016, I edited the race section of a volume called the Responsible Communication Style Guide. It was then that I came across “master/slave” as used in computer science, which we added to our “Terms to Avoid” list. For years, I’d seen some open-source projects adopt new terminology (“primary/replica”, like Django and Drupal) while other projects held steadfast to “master/slave” terms (like MySQL and Redis). I submitted my first code critique on “master/slave” terminology as used in MySQL.
The relational database MySQL is among a few open-source projects that have retained “master/slave” terms. In MySQL, master/slave replication refers to configuring a database such that the contents of one database (a “master”) can be automatically copied to others (or “slaves”).
Here are the instructions for configuring the “master” database in a “slave” database:
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;
Once configured, one can start the “slave” by running the following:
mysql> START SLAVE;
From what I've gathered arguments for and against changing the terminology come down to context: one group argues that since these terms do not refer to the legacy of American slavery nor to an oppressive relationship between humans, these terms should not change (See: “On Redis master-slave terminology” by Redis creator Salvatore Sanfilippo). Another group argues that as our understanding of language evolves, so should the terms we use, especially when alternatives may be both inclusive and more accurate (See: “Let’s Stop Saying Master/Slave” by Mike Roberts).
With Django and Drupal, community-driven conversations helped precipitate the terminology change. I’ve searched for examples of community conversations from MySQL users where this has been debated, but have not found any as of yet.
In the ensuing discussion (read the original thread; the conversation is great), I learned that the earliest instance of “master/slave” in an engineering (not software) context was in 1904.
The second week’s focus was on “programming languages built on spoken and written indigenous languages”. A few years ago, I’d heard about a programming language built on Arabic, but had not heard of other instances of programming languages written in other languages.
We looked at Cree#, a programming language based on Cree, which is part of the Anishinaabe family of languages spoken among Native tribes in Northern Canada. Jon Corbett, the programming language’s creator, states his purpose in developing Cree# as follows:
In this instance Cree# is just a small part of a larger language revitalization project. I am using Cree, because that is my heritage, but as I am also concurrently creating an Indigenous Computing Framework for it to built upon, my basic model should/could be translated to other Indigenous languages.
This entire conversation brought forth one specific thought in my mind: what else could code do if we extended the mental models of coding beyond those more readily accessible to English speakers? This is what I shared in that week’s discussion group:
Given how code is English-based, how has that shaped their understanding of coding? What is "missing" in code or not easily addressed by existing code paradigms in any particular programming language? (For example: @joncorbett's Cree # has a smudge function that can be included in the beginning or end of a program to "reset"—it's culturally and programmatically significant.)
I was less active this last week than in previous weeks because of work. This week’s theme was feminist AI. Of particular interest to me was “Feminist Search” a collaboration between Safiya Umoja Noble, PhD (author of Algorithms of Oppression) and a group called Feminist.AI. The goal of “Feminist Search” is as follows:
Starting with a visual search prototype that uses community sourced images, Feminist.AI will build a larger visual search engine powered by community definitions and informed by library science and critical theory. With a belief in users as not only contributors, but also as owners of their experience and information, an editable, co-created search tool will be developed where users have control over access to their information and how it is used for development. Using this as inspiration, the Feminist.AI community proposes to create an alternative to private search engines with the working title Feminist Search.
Feminist Search seeks to add transparency to the search process and promote education about factors that determine how search results are created. The project creates multiple entry points for community members to learn about how information is classified, trained and accessed, making search more understandable and accessible.
(Check out the Feminist Search project.)
If you’re interested in critical code studies, Mark Marino’s book Critical Code Studies will be published later this month on MIT Press.
Book of the Month: February
This month I’m reading Distributed Blackness by André Brock Jr. The book offers deep, critical analysis of Blackness in digital media. I’m still in the beginning chapters, but here’s a quote from Chapter 2 that I find salient and relevant to critical code studies:
“Given the demographic composition of the tech industry, it is unsurprising how little attention has been paid on how whiteness structures application design. Reflexivity has never been a benchmark for information technology industries; instead, these institutions focus on instrumental outcomes of “improving” computers and code, burying their cultural influences behind technical protocols and limited imaginaries about users who are not themselves. How then does one locate Blackness, much less race, in the applications we use?”
And thank you!
Thanks to everyone who recently subscribed, and a special thanks goes to those of you who purchased The Developer’s Guide to Content Creation. I really appreciate the support. 🙂