An argument that we must read code for more than what it does—we must consider what it means.
Computer source code has become part of popular discourse. Code is read not only by programmers but by lawyers, artists, pundits, reporters, political activists, and literary scholars; it is used in political debate, works of art, popular entertainment, and historical accounts. In this book, Mark Marino argues that code means more than merely what it does; we must also consider what it means. We need to learn to read code critically. Marino presents a series of case studies—ranging from the Climategate scandal to a hactivist art project on the US-Mexico border—as lessons in critical code reading.
Marino shows how, in the process of its circulation, the meaning of code changes beyond its functional role to include connotations and implications, opening it up to interpretation and inference—and misinterpretation and reappropriation. The Climategate controversy, for example, stemmed from a misreading of a bit of placeholder code as a “smoking gun” that supposedly proved fabrication of climate data. A poetry generator created by Nick Montfort was remixed and reimagined by other poets, and subject to literary interpretation.
Each case study begins by presenting a small and self-contained passage of code—by coders as disparate as programming pioneer Grace Hopper and philosopher Friedrich Kittler—and an accessible explanation of its context and functioning. Marino then explores its extra-functional significance, demonstrating a variety of interpretive approaches.
Mark C. Marino is Professor of Writing at the University of Southern California, where he directs the Humanities and Critical Code Studies Lab. He is a coauthor of 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 (MIT Press).
This book was recommended to me by a colleague in the digital humanities after the topic of critical code studies (CCS) came up in conversation, due to the question that arises when someone trained in computer science (such as myself) hears about CCS: why? This is not to disparage digital humanities as a field, but to speak to the prevailing perception that source code has more in common with mathematical operations than the type of cultural products that are typically associated with close studies in the humanities (e.g., books, movies, poetry, etc.). In this sense the author does a commendable job of outlining how the field of CCS came about along with the theoretical underpinnings that support the close reading of code as cultural artifacts.
The book initially opens with Chapters 1 and 2 providing the aforementioned historical and theoretical underpinnings of CCS before moving into examples of CCS applied to various source code artifacts. These examples appear to be selected with an eye towards providing an example of the breadth of how CCS can be applied, and in one sense the author has succeeded in provided a compelling demonstration. However, as a reader outside of the humanities, the breadth of examples covered resulted in a breadth of humanitarian interpretations and analysis being applied to the selected examples and diminished the overall arguments in support of close reading of code. This is not to say that the points raised by the author are not important ones, but rather that the code examined was not always the best entry point to those arguments, effectively weakening the argument in favor of CCS. The crux of this point is dependent upon the extent of symbolic cultural products that are present in the code.
In a sense this is also a bit of a trap that the author even addresses in Chapter 2 in an assessment of the Quicksort algorithm (Wikipedia link) in which the pseudocode was read as a metaphor for social organization despite being presented as an algorithm devoid of context (p. 52 - 53). This trap is germane to many of the examples in the text since it raises a fundamental question of CCS: is the source code revealing a cultural meaning, or is the reader finding what they are looking for? In many ways I agree with the author's argument that the code is a product of the context that created it and occupies a liminal space in which its meaning is split between that of how humans understand it and how the machine understands it. Anyone that has programmed before is likely to appreciate the rigid understanding imposed by the computer (ex., syntax errors) in contrast to humans. This liminal space is further complicated by the training of humanitarian scholars (semiotics with the suggestion that deeper meaning is present) and programmers (logically oriented with the code typically lacking symbolic meaning). Thus, while programmers - and the broader community of software developers, engineers, and computer scientists - will likely concede that cultural artifacts are present in code, the prevailing perception is that much of it is formulaic (ex., Create, Read, Update, and Delete [Wikipedia link]) or mathematical in nature. This argument is reflected in the broader context of the social implication of artificial intelligence and how people respond to it (ex., Algorithms of Oppression: How Search Engines Reinforce Racism).
Thus, while the examples presented in the book are intended to support CCS through examples of its application, the support they offer are somewhat lacking due to most of the source code being constructed intentionally with symbolic meaning for humans reading it (i.e., they are intended to be art projects). In Chapters 3 and 7 the author examines the Transborder Immigrant Tool and Generative Code, respectively. In both cases the code produced was intended for examination and interpretation, thus weakening the argument that the code inherently contains symbology since the artifacts examined were intended to be symbolic in nature. In Chapter 6, the focus is on source code produced by literary scholar and media theorist Friedrich Kittler. As with the previous examples, the code examined is challenged by the possibility of symbolism inserted into the code by the author. Indeed, in some examples that is in fact the case. However, Chapters 4 and 5 addressing Climategate (Wikipedia link) and FLOW-MATIC, respectively, offer much more support for CCS. In Chapter 4, the author demonstrates how the code was viewed and interpreted by a broader audience, and how the various perspectives were applied in understanding the code in question. This occurred despite the code only being intended for limited use in the laboratory. Likewise, in Chapter 5 the author examines the FLOW-MATIC (or Business Language version 0 [B-o]) programming language - an early influencer of COBOL - and how the machine and human language shaped the programming language.
Overall, these points speak more towards the need for CCS to continue to define its scope and how it approaches source code. The author is likely correct that the need to examine code as cultural products is only likely to increase as time goes on; however, it also appears that the field might need to continue to build theoretical frameworks to delineate code with symbolic meaning from algorithmic usage to avoid criticism that CCS scholars are finding meaning because they expect it to be there. Readers with a strong background in the humanities are likely to find this book much more interesting than those from highly technical backgrounds, and the author does appear to expect the reader to be from said humanitarian background. However, there are some interesting points made for readers from all backgrounds.
---
As a coda, I would be remiss to not mention a side comment by the author on a speculative feminist programming language, C+=, which is attributed to Arielle Schlessinger (p. 203). Since the idea of a feminist programming language is interesting, I searched on Google for more information and came across a repository reporting to be the language (possibly pronounced C-plus-Equality, or See Equality) but is satirical in nature. This is supported by an article from December 19, 2013 in The Register, "Feminist Software Foundation gets grumpy with GitHub … or does it?" (The Register link), which was updated to note the repository is a result of a joke on 4chan. Thus, it appears that the language was purely speculative given a post on hastac on "Feminism and Programming Languages" (hastac link) dated November 26, 2013. Given the book is peer reviewed and published in 2020, it appears that this is simply something that was overlooked and may be addressed in a later editor or follow up work by the author. The response of 4chan to a discussion on feminism and programming languages is certainly an avenue for discussion that would be within the scope of CCS.