How do you annotate an experience? Stephanie Boluk and Patrick LeMieux grapple with competing logics of computer code at the intersection of Adventure, nostalgia and new media scholarship.
Annotating Adventure
It is pitch black. One wrong move and you will likely fall into a pit, break your neck, or be eaten by a grue.Mirroring Crowther's original warning, "IT IS NOW PITCH BLACK. IF YOU PROCEED YOU WILL LIKELY FALL INTO A PIT," Infocom's Zork Trilogy (1980-84) cautions "It is pitch black. You are likely to be eaten by a grue" when a player attempts to explore its caverns without a light.The impatient adventurer might charge forward blindly, relying on quick reflexes (or dumb luck) to guide her footfalls. But since time is not of the essence and this adventure requires a certain amount of precision, the best initial course of action may be inaction - a momentary pause necessary to take stock of the situation and plan the next move. How often has the befuddled explorer peered into the darkness and strained her senses, reaching out in the hopes of discovering a clue to further guide her actions? Whether exploring vast cave systems, playing text-based computer games, or cracking the code of a "black box," it is prudent to take notes, make maps, and get plenty of lamps for your journey into dark places.
When Pat and Will Crowther explored Kentucky's Colossal Cave with the Cave Research Foundation (CRF) in the early seventies, they avidly mapped its twisty little passages, constructing 3D line plots and computer models from the organization's collection of hand-measured survey data (Jerz 58). Out of these Kentucky caves, a generation of computer game players would be inspired to undertake similarly elaborate mappings of a labyrinthine digital space: Will Crowther's inaugural interactive fiction (IF), Colossal Cave Adventure (1975-76), a groundbreaking game which features complex mazes of textual architecture. It is in this spirit of archeology and archivy that Dennis Jerz unearthed Crowther's original source code in 2005 The discovery of this code is a feat of serious spelunking considering the earliest, unaltered version of Colossal Cave Adventure was "recovered from a backup of [Don] Woods's student account at Stanford" (Jerz 1). In less than two weeks after getting his hands on Crowther's game, Woods would begin adding minor tweaks before dedicating himself to polishing, updating, and expanding the project (Jerz 90-91). and produced its first annotations shortly thereafter. Published alongside photo documentation of Jerz's expedition to the original "source cave," the annotated excerpts of Crowther's source code serve as the point of departure for the third week of the Critical Code Studies Working Group.
In this week, Jerz led a new team on a second expedition to map the original source code of Colossal Cave Adventure. The project differed slightly from the previous two weeks in that the group attempted to collaboratively annotate Crowther's original source code in conjunction with the usual discussion. Their contributions, following the ethos of Critical Code Studies, highlighted extra-functional content and offered historical, political, aesthetic, technical, and anecdotal observations.
About thirty-five years ago, when Colossal Cave Adventure was first released, time-sharing mainframe computers like the PDP-10 were busy for weeks on end as the first adventurers feverishly inputted commands via Teletype and anxiously awaited the output of line printers in computer science labs across the world. Given the extent of technological innovation since the seventies, can we imagine the future of computers thirty-five years from now? Three hundred fifty years from now? Apart from technological obsolescence barring our access to many early milestones in the history of computing, memories fade and yesterday's cultures grow foreign as they recede into history. The annotations produced by the contributors of the Critical Code Studies Working Group include personal experiences, historical parallels, and biographical details surrounding the production of Adventure as well as observations regarding the nature of the FORTRAN language with which the game was programmed. These glosses will only increase in value as the twentieth century and cultural memories of early programming languages like FORTRAN fade away.
Whether reading Beowulf, Burroughs, or the King James Bible, annotations provide a vital entry point to literary works and this week's project extends that same logic to software. The Critical Code Studies Working Group's task of annotating computer code (as distinct from the comments commonly authored by programmers), led first to reflection on the general project of Critical Code Studies.Typically, computer code already contains annotations embedded via the programmer's "comments." Comments are distinguished from executable code by special symbols (such as two forward slashes) that instruct the compiler to ignore any following text. Despite opening pockets of potential that allow unconventional symbols, syntax, and natural language to seep into the code, comments are almost always functional notes. Authored by programmers for programmers, comments are typically intended to increase the legibility of code by specifying the author's intention via embedded documentation, pseudocode translations, or ASCII diagrams of algorithms. Comments can also render certain lines (or blocks) of code non-executable, a valuable function when programming.In the discussion, Mark Sample, Mark Marino, and other commentators opt for a bricolage approach which facilitates a multi-modal form of humanist inquiry and literary analysis adapted to the computer sciences, whereas Stephen Ramsay moves towards a more restricted definition of code in terms of use value and, following this, a definition of critical code studies based on an ethic of making ("On Building"). Where Marino argues for a media-specific analysis of code, Ramsay takes a polemical position arguing instead for a media-specific practice of code criticism. He provocatively suggests that a close reading of code can only be undertaken through the process of writing code. As an example, Jerz offers modding and hacking as potential models of critical code in which theory and practice are fused in the same medium. Engaging with this problematic, Federica Frabetti and Rosemarie Coste bring their valuable knowledge of FORTRAN to the conversation surrounding Crowther's source code. Despite the discussion of programming as a critical operation in and of itself, an understanding of the limitations and affordances of FORTRAN are a necessary entry point for making sense of the material, historical, and social aspects of Adventure's code.
Other participants attempted to carve out an alternative space for Critical Code Studies. Ramsay, following Wittgenstein, suggests "the meaning of code is what it does," while other commentators test the possibilities beyond the realm of code's executability to address the ideological, aesthetic and cultural connotations that are also at play. Nostalgia and memory figure prominently in the contributors' commentary and annotations, with Mark Sample defending the place of nostalgia as productive for Critical Code Studies. In addition to the inclusion of many of the contributors' own personal memories of their earliest experiences with the game, Jerz argues that nostalgia functions more broadly as an index of processes and rituals, demonstrating the specific ways in which knowledge moves beyond the text to a more distributed field of memory and cultural practice. The rituals and processes of nostalgia are areas that exceed, yet are inextricably bound to, the executable operations of code. A significant aspect of this nostalgia for Adventure is rooted in the fact that it stands as a monumental example of a game produced, as Mark Marino describes, "before the pixel curtain." The fantasy of the game's output being somehow more connected the code on account of this textual interface leads Marino to ask if nostalgia for this golden age of the command-line may itself function as a different form of obfuscation.
For many contributors, the material and tactile sensorium that structures their memory of the game is what informs the sense of taboo surrounding the code and the transgressive thrill generated by gaining access this once-arcane text. The collaborative project of annotation, for many, echoes the collaborative engagement with Adventure that occurred in its early years. Despite the fact that a single set of instructions were typed into the keyboard, many report experiences of mapping the virtual space and solving the puzzles in large groups. Adventure operated as a multiplayer game to the extent that it could accommodate many minds working together to navigate its challenges.
Jeff Nyhoff eloquently evokes the materiality and spatiality of the code being studied, based on his own experiences and memory of Teletype machines and printers streaming "roll[s] of continuous paper." He observes the crucial ways in which the latency and physicality of early computing were integral aspects of the computing process. Moreover, he notes that programming languages had a visual logic that extended beyond the cartographic mental maps required by a player to navigate the game to the level of programming itself. Nyhoff describes how these early models had a logic similar to the flowchart, a logic that was abandoned with the rise of object-oriented languages, but that "flowcharting as programming" has since been resurrected in more recent programs such as Max/MSP, Pure Data, and Quartz Composer. Meanwhile, Jeremy Douglass tracks down other versions of Adventure's source code, observing some of their more curious differences, and researches tools for annotating code. Though the Ning social network and Google Documents provided a temporary platform for the group's activity, it is imperative that Critical Code Studies discovers (or invents) reliable tools for performing and archiving their collective annotations.
Following these various threads, the contributors analyzed the maze of twisty little feedback loops between the source code and game content. Spelunking the code, they unearthed new treasures rivaling Colossal Cave Adventure's bars of silver, precious jewelry, and many coins buried in the darkness of the black box. For example, the GOTO command, now obsolete in most object oriented programming languages, operates not unlike the famous "XYZZY," a magic word that could teleport the adventurer to and from various in-game locations. In this way, both player and programmer must engage the cave spatially. Dennis Jerz further observes that this game's version of "abracadabra!" may be part of Crowther's "sourcery,"See Wendy Chun's concept of "sourcery" further discussed in the fourth week of the Critical Code Studies Working Group.pointing to a peculiar line of code reading "SUBROUTINE YES(X,Y,Z,YEA)." But do these formal parallels teleport us out of the maze of code, or are we, as Crowther writes, "STILL IN THE FOREST?"
When "mapping" a cave system, computer program, or commentary, one traces Crowther's algorithmic architectures, following the trail of causal connections. The code connects tunnel to tunnel just as graphically mapping those passages outlines Adventure's algorithms. Thus player and programmer mirror one another's movements, stalking each other in the dark. When lost in the dark, the annotations assembled in Week Three of the Critical Code Studies Working Group become a guide for bridging the divide between various readers. This work of annotation is unfinished; there are many more lines to explore and paths to map. The cursor blinks anxiously, inviting us to continue. As Mark Marino writes:
>You are standing before the Colossal Code of Adventure. You see INSERT FOOTNOTES, a keyboard, a Google Doc.
Works Cited
Jerz, Dennis. "Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original 'Adventure' in Code and in Kenucky." Digital Humanities Quarterly 1.2 (2007). Web.
Ramsay, Stephen. "On Building." Stephen Ramsay. 11 January 2011. http://lenz.unl.edu/wordpress/?p=340