I’m delighted to announce the publication of10 PRINT CHR$(205.5+RND(1)); : GOTO 10 (MIT Press, 2013). My co-authors are Nick Montfort (who conceived the project), Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark Marino, Michael Mateas, Casey Reas, and Noah Vawter. Published in MIT Press’s Software Studies series, 10 PRINTis about a single line of code that generates a continuously scrolling random maze on the Commodore 64. 10 PRINT is aimed at people who want to better understand the cultural resonance of code. But it’s also about aesthetics, hardware, typography, randomness, and the birth of home computing. 10 PRINT has already attracted attention from Bruce Sterling (who jokes that the title “really rolls off the tongue”), Slate, and Boing Boing. And we want humanists (digital and otherwise) to pay attention to the book as well (after all, five of the co-authors hold Ph.D.’s in literature, not computer science).
Aside from its nearly unpronounceable title, 10 PRINT is an unconventional academic book in a number of ways:
10 PRINT was written by ten authors in one voice. That is, it’s not a collection with each chapter written by a different individual. Every page of every chapter was collaboratively produced, a mind-boggling fact to humanists mired in the model of the single-authored manuscript. A few months before I knew I was going to work on 10 PRINT, I speculated that the future of scholarly publishing was going to be loud, crowded, and out of control. My experience with 10 PRINT bore out that theory—though the end product does not reflect the messiness of the writing process itself, which I’ll address in an upcoming post.
10 PRINT is nominally about a single line of code—the eponymous BASIC program for the Commodore 64 that goes 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. But we use that one line of code as both a lens and a mirror to explore so much more. In his generous blurb for10 PRINT, Matt Kirschenbaum quotes William Blake’s line about seeing the world in a grain of sand. This short BASIC program is our grain of sand, and in it we see vast cultural, technological, social, and economic forces at work.
10 PRINT emerges at the same time that the digital humanities appear to be sweeping across colleges and universities, yet it stands in direct opposition to the primacy of “big data” and “distant reading”—two of the dominant features of the digital humanities. 10 PRINT is nothing if not a return to close reading, to small data. Instead of speaking in terms of terabytes and petabytes, we dwell in the realm of single bits. Instead of studying datasets of unimaginable size we circle iteratively around a single line of code, reading it again and again from different perspectives. Even single characters in that line of code—say, the semicolon—become subject to intense scrutiny and yield surprising finds.
10 PRINT practices making in order to theorize being. My co-author Ian Bogost calls it carpentry. I’ve called it deformative humanities. It’s the idea that we make new things in order to understand old things. In the case of 10 PRINT, my co-authors and I have written a number of ports of the original program that run on contemporaries of the C64, like the Atari VCS, the Apple IIe, and the TRS-80 Color Computer. One of the methodological premises of 10 PRINT is that porting—like the act of translation—reveals new facets of the original source. Porting—again, like translation—also makes visible the broader social context of the original.
In the upcoming days I’ll be posting more about 10 PRINT, discussing the writing process, the challenges of collaborative authorship, our methodological approaches, and of some of the rich history we uncovered by looking at a single line of code.
In the meantime, a gorgeous hardcover edition is available (beautifully designed by my co-author, Casey Reas). Or download a free PDF released under a Creative Commons BY-NC-SA license.
(This is the text of my five minute position statement on the role of computational literacy in computers and writing. I delivered this statement during a “town hall” meeting at the annual Computers and Writing Conference, hosted at North Carolina State University on May 19, 2012.)
I want to briefly run through five basic statements about computational literacy. These are literally 5 statements in BASIC, a programming language developed at Dartmouth in the 1960s. As some of you might know, BASIC is an acronym for Beginner’s All-Purpose Symbolic Instruction Code, and the language was designed in order to help all undergraduate students at Dartmouth—not just science and engineering students—use the college’s time-sharing computer system.
Each BASIC statement I present here is a fully functioning 1-line program. I want to use each as a kind of thesis—or a provocation of a thesis—about the role of computational literacy in computers and writing, and in the humanities more generally.
10 PRINT 2+3
I’m beginning with this statement because it’s a highly legible program that nonetheless highlights the mathematical, procedural nature of code. But this program is also a piece of history: it’s the first line of code in the user manual of the first commercially available version of BASIC, developed for the first commercially available home computer, the Altair 8800. The year was 1975 and this BASIC was developed by a young Bill Gates and Paul Allen. And of course, their BASIC would go on to be the foundation of Microsoft. It’s worth noting that although Microsoft BASIC was the official BASIC of the Altair 8800 (and many home computers to follow), an alternative version, called Tiny BASIC, was developed by a group of programmers in San Francisco. The 1976 release of Tiny BASIC included a “copyleft” software license, a kind of predecessor to contemporary open source software licenses. Copyleft emphasized sharing, an idea at the heart of the original Dartmouth BASIC.
10 PRINT “HELLO WORLD”
If BASIC itself was a program that invited collaboration, then this—customarily one of the first programs a beginner learns to write—highlights the way software looks outward. Hello, world. Computer code is writing in public, a social text. Or, what Jerry McGann calls a “social private text.” As McGann explains, “Texts are produced and reproduced under specific social and institutional conditions, and hence…every text, including those that may appear to be purely private, is a social text.”1
10 PRINT “GO TO STATEMENT CONSIDERED HARMFUL”: GOTO 10
My next program is a bit of an insider’s joke. It’s a reference to a famous 1968 diatribe by Edsger Dijkstra called “Go To Statement Considered Harmful.” Dijkstra argues against using the goto command, which leads to what critics call spaghetti code. I’m not interested in that specific debate, so much as I like how this famous injunction implies an evaluative audience, a set of norms, and even an aesthetic priority. Programming is a set of practices, with its own history and tensions. Any serious consideration of code—any serious consideration of computers—in the humanities must reckon with these social elements of code.
10 REM PRINT “GOODBYE CRUEL WORLD”
The late German media theorist Frederich Kittler has argued that, as Alexander Galloway put it, “code is the only language that does what it says.”2 Yes, code does what it says. But it also says things it does not do. Like this one-line program which begins with REM, short for remark, meaning this is a comment left by a programmer, which the computer will not execute. Comments in code exemplify what Mark Marino has called the “extra-functional significance” of code, meaning-making that goes beyond the purely utilitarian commands in the code.3
Without a doubt, there is much even non-programmers can learn not by studying what code does, but by studying what it says, and what it evokes.
10 PRINT CHR$(205.5+RND(1));:GOTO 10
Finally, here’s a program that highlights exactly how illegible code can be. Very few people could look at this program for the Commodore 64 and figure out what it does. This example suggests there’s a limit to the usefulness of the concept of literacy when talking about code. And yet, when we run the program, it’s revealed to be quite simple, though endlessly changing, as it creates a random maze across the screen.
So I’ll end with a caution about relying on the word literacy. It’s a word I’m deeply troubled by, loaded with historical and social baggage and it’s often misused as a gatekeeping concept, an either/or state; one is either literate or illiterate.
In my own teaching and research I’ve replaced my use of literacy with the idea of competency. I’m influenced here by the way teachers of a foreign language want their students to use language when they study abroad. They don’t use terms like literacy or fluency, they talk about competency. Because the thing with competency is, it’s highly contextualized, situated, and fluid. Competency means knowing the things that are required in order to do the other things you need to do. It’s not the same for everyone, and it varies by place, time, and circumstance.
Translating this experience to computers and writing, competency means reckoning with computation at the level appropriate for what you want to get out of it—or put into it.
McGann, Jerome. The Textual Condition. Princeton, NJ: Princeton University Press, 1991, p. 21. ↩
Galloway, Alexander R. Gaming: Essays on Algorithmic Culture. Minneapolis: University of Minnesota Press, 2006, p. 6 ↩
I’ve had a sneak preview of MIT Press’s Fall 2012 catalog, and I’m delighted that the boldest project I’ve ever worked on is in there. The title is 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 and it just gets crazier from there.
Working by wiki style collaboration.
Studying one line of code.
For a thirty-year-old computer.
I’ll say more about 10 Print in the coming weeks, but for now, I just want to admire my co-author Casey Reas’s brilliant cover.
Where Am I?
You are currently browsing entries tagged with critical code studies at