enculturation

A Journal of Rhetoric, Writing, and Culture

BASIC Coding Cultures and Literacies

Review of 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
by Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Raes, Mark Sample, and Noah Vawter, 2012; MIT Press

Chris Lindgren, University of Minnesota-Twin Cities

Enculturation : http://enculturation.net/10-print
(Published: June 22, 2013)

In 10 PRINT, ten authors from a range of disciplines—literature, library sciences, game studies, visual arts, new media, and computer science—examine a single line of code that, until interrupted, generates an unending maze by randomly “printing” either the PETSCII character 205, ? or 206 ?. While the book examines computer code, the authors seek an audience of humanists, confronting the assumption that reading code is a “tedious, mathematical chore” (3). In the introduction, they outline some “core contributions” for humanists, arguing that code is a “cultural text” with rich histories borne out of social contexts (5). For scholars in rhetoric, composition, and cultural studies, these are familiar grounds. Through their analysis, the authors of 10 PRINT offer humanists a means to understand code as a “knowable” text that serves as a “cultural resource,” derived from a particular social and material context, but also dispersed and operating beyond its original intent and source context (6).

Figure 1

Unlike most scholarly books, the ten authors do not attribute sole authorship to any particular chapter in 10 PRINT. Instead, the authors collectively wrote the book, seeking to create a cohesive, united voice throughout the text. Yet, if a reader is familiar with any of the authors, s/he may be able to guess who initiated which topics addressed in the text. The authors begin with a synopsis of the program itself. From there, readers can expect a multitude of ways to examine this program, whether informed from a literary or visual arts perspective, or newer methods of analysis that involve porting, or rewriting, the program on different platforms with different programming languages. Perhaps, to accommodate these variant methodologies, the authors are inductive in their critical approach. Yet, this seems to feed into the values of learning and experimentation inherent in the hobbyist and home-computing cultures that emerged from the BASIC coding cultures. Even if this inductive approach wasn't a conscious decision, it certainly seems like a natural way to craft a book with 10 authors. Accordingly, through these methods, the authors expose and articulate new constraints and possibilities of 10 PRINT even 30 years after its creation. Rhetoric and writing scholars have long been familiar with the material, linguistic, and situational constraints surrounding texts, suggesting that 10 PRINT could serve as a springboard for scholars in rhetoric, composition, and cultural studies to explore code, code-writing processes, and the cultural influences undergirding such texts.

Firstly, it is worth noting that any reader experienced with the Commodore 64 computer and BASIC programming language(s) will immediately recognize how the book's design and organization embodies some of the textual and visual history behind the 10 PRINT program. Regarding its surface aesthetics, co-author Casey Raes designed the book by mirroring the output of 10 PRINT's maze-like features on both its inside sleeves and outside dust jacket. Furthermore, the texture of the inside sleeves also emulate the texture from the original manual for the Commodore 64 computer (circa 1982). Like the writing of the program itself, the authors also carefully explain each component of the one-liner in question: 10 PRINT CHR$(205.5+RND(1)); : GOTO 10.

The number 10 is a line number, which is a writing convention in BASIC on the Commodore 64. Instead of incrementing by 1, programs were written by 10, making it easier to add more lines of code. Line numbers served two purposes. They were organizational, and they enabled early "interactive editing" features for code-writing practices (9). The authors appropriately organized the book's chapters to emulate the line-numbering schemes of BASIC, where the major chapters are on “lines” 10, 20, 30 and so on, while remarks on preceding chapters, dubbed “REM,” are found in between each chapter on “lines” 5, 15, 25, and so on respectively—a case of intermedia organizational strategies. Everything from line numbers to the GOTO function are defined, summarized, and discussed throughout the book.

After this initial orientation to the program, the proceeding chapters weave in discussions about its aesthetics, its interplay between randomness and regularity, what insight can be gained from porting programs to different hardware and programming languages, as well as the growing culture of home computing in a time riddled with emerging copyright-copyleft issues surrounding software. The remainder of this review is by no means comprehensive, but it does survey some of the topics that I believe are portable to rhetoric and composition.

Chapter 20 opens by situating 10 PRINT's maze-like output within a diverse and somewhat diffuse range of associations. Some computers and writing scholars may appreciate the discussion of textual mazes and interactive fiction, recalling the MOO-based research of the 1990s. Unfortunately, the chapter may race through too many types of mazes, making the associations made between 10 PRINT and other computational artifacts tenuous in some instances. This is the case with a section called “Dancing a Complex Structure,” which discusses the Greek Knossos maze and the video game, Dance Dance Revolution alongside a novice programmer's first experience with 10 PRINT (38). However, overall, readers will come out of Chapter 20 with knowledge of the common denominator between the processes undergirding these various mazes: that each one relies on the careful interplay between “randomness” and “regularity” (49).

As the discussions of porting begin in chapter 25, it becomes clear how the book might become more readily relatable for most rhetoric and composition scholars. Porting, "an act of translation and adaptation...reveals what in a program is particular to its source context" (61). The authors compare the translation challenges for programmers to the translation process of literary texts, claiming that “the ethos of adaptation will vary from project to project and programmer to programmer” (52).1 From one platform to the next, the constraints of every new context become salient to the programmer, and the authors articulate such translations through numerous ports, some of which are their own texts. Through the process of porting, the authors reveal new insights about both the original and new source contexts, such as the “program's form and function,” the quality of a platform's random function, and even the quality and texture of the graphics (61). This focus on materials and textual symbolic form and function should resonate with scholars in rhetoric and composition, who have long discussed the importance for writers to critically engage the material constraints and affordances available to them.

Chapter 30, on regularity, and 40, on randomness, both build on the discussion of mazes by inquiring into the uses of both techniques in computing. From Truchet tiles to South African textiles to contemporary industrialized punch cards used to mass produce textiles, the authors argue that the techn? of repeated procedures, and the “orthogonal basis” of these works, map directly onto the Cartesian grid of the computer screen. For instance, the authors trace how regularity enables a vast diversity of patterns in analog textiles, but they also show how time and space come to affect the processes generating its output. Handmade needlework gave rise to “concise programs,” while the commercial-grade production of similar textiles required an assembly of thousands of punch cards—a difference of concision versus exhaustive definition (76). They weave insights into the materiality of the CRT screen, which, as they claim, enabled programmers to shift away from static templates to develop more nuanced and generative processes like 10 PRINT. Yet, such techniques required the counterpart to regularity: randomness.

To produce expressive systems with digital computers, which are “deterministic devices,” the authors remind readers that randomness is nothing more than the appearance of randomness, or what the author of The Art of Computer Programming (1968) and Literate Programming (1992), Donald Knuth, called “pseudorandom” (qtd. in 10 PRINT 131). “The RND command,” claim the 10, “acts as the algorithmic heart of 10 PRINT” (128). Pseudorandomness is part of any good programmer's techn?, and such built-in functions differ (sometimes greatly) across platforms (128). A computer's randomness is generated via the selection of a value from a pre-determined set of possible values, and to situate this discussion of appearances of chance, they discuss games of chance in ancient Greek cities, Borroughs' cut-up method, Duchamp's method of indeterminacy, and John Cage's random compositions. While these connections with such 20th century figures can be made, the authors explain the long-standing, negative association of computer art with neoliberalism and the military's use of computers, such as simulations to help develop the hydrogen bomb. Consequently, computer artists, such as Manfred Mohr, have long been accused of “degrading art [and] employing capitalistic instruments of war” (Mohr qtd in 10 PRINT 139). Yet, by exploring these tensions between art and war and demonstrating how randomness seems to be caught in the middle, the 10 conclude that despite this inextricable link, there is the possibility for “the transformation of this grim, military use of randomness into a thing of beauty” (146).

For anyone familiar with Annette Vee's work with proceduracy (2010), as well as her and other rhetoric and composition scholars' work with software copyright/patent laws,2 Chapter 50's exposition on the BASIC programming language will help fill in a part of computing culture that has yet to receive much attention in the humanities. BASIC, or Beginner's All-purpose Symbolic Instruction Code, was a high-level programming language developed in the 1960s by two professors at Dartmouth College: John Kemeny and Thomas Kurtz (158). After a short history of programming that begins at Ada Byron, the Countess of Lovelace, the 10 remark on how “Kemeny and Kurtz aimed for nothing less than a computing revolution, radically increasing access to computers and to computer programming” for, as Kemeny is quoted as saying, “millions of people” (163). From the outset, the two professors valued and encouraged the sharing of their work and, “by 1971, 90 percent of the seven most recent classes of freshmen [at Dartmouth] had received computer training” (165). This openness not only participated in the ecology of computer programmers prior to the home computing era in the 1980s but was also foundational for both the open-source software movement and rise of proprietary software.

The 10 trace these two computing cultures with very different values through two variations of the BASIC programming language: Microsoft's Altair Basic and the People’s Computer Company's (PCC) Tiny BASIC. The authors provide a well-executed survey of the flurry of activity surrounding these two versions of BASIC during the late 1970s as well as an explanation of how print publications and human memory played a key role in their complex developments. Indeed, it is interesting to learn how Bill Gates and Paul Allen developed the first bits of their empire with a free language in an open computer lab at Harvard and how Microsoft's success also fostered the growth of computing cultures throughout the 1980s.

In chapter 60, the 10 briefly survey the emergence of the microcomputing age during the 1970s, '80s, and into the '90s. Companies such as Apple, Atari, and Commodore International were able to produce smaller, lower-cost computers, thereby placing computers in homes and not just large university labs and offices, giving rise to personal and home-computing cultures. They focus mostly on the genealogy of the Commodore 64 (C64), tracing the Commodore's line of successful computers. For instance, they explain how the 8-bit PET computer included a graphical character set, which doubled ASCII's set of 128 characters, "informally dubbed PETSCII" (221). They also discuss the optimization of the VIC-II graphics chip, which handled on-screen sprites and sprite interaction, (i.e., graphics that move and are manipulated on-screen as a single unit). Overall, readers will gain material details behind the C64's performance and novel computer graphics, which heavily influenced its successful sales.

Despite the C64's arrival in homes and personal spaces, where programmer subcultures such as "demoscenes" (240) were born, the 10 also touch on how this initial massive push into the larger social sphere produced the initial material-discursive birth of the "digital divide" (213). Commodore "shrewdly positioned" the C64 as the low-cost, but high-performance alternative to the higher-cost Apple II, TRS-80 III, and IBM PC 64K (215). Yet, a gap materialized, and the 10 note how "Black and Hispanic families were far less likely to have a computer at home in the 1980s, and by 1997, this gap had translated into the digital divide online" (213). Furthermore, even though gender was not initially as prevalent an issue as race and socioeconomic status, advertisements reinscribed gender imbalances that eventually played out in undergraduate programs and the professional domain. While the 10 cover these issues within the context of 10 PRINT and the Commodore 64, their overall work to fashion all of these chapters together from different 10-PRINT angles may help some scholars in our field not only see the effects of the material and digital, but also their affect on and role in the formation, subsistence, and resistance of coding cultures.

These are but some of the topics addressed in 10 PRINT, where much of the text shares code, insights, and various other techniques for others to try themselves. The book is a rich example of what a possible fusion of theory and techn? might look like in future academic scholarship. In the conclusion, the 10 argue that “reading this one-liner also demonstrates that programming is culturally situated just as computers are culturally situated, which means that the study of code should be no more ahistorical than the study of any cultural text” (262). Code is a text, but, as the 10 indicate, it also operates and “can be representational” of cultural ideals, people, and things. “10 PRINT,” they conclude, “is not just a line of code; it defines a space of possible variations” (266). This insight is perhaps the most useful, since the 10 themselves produced this “assemblage of readings” from a cast of diverse scholars and scholarship. For me, as a rhetorician who is interested in literacy and the fostering of computing cultures, this assemblage also serves as a potential baseline blueprint for the means, processes, and types of cross-disciplinary relationships necessary to build an infrastructure in which Kemeny and Kurtz's BASIC vision can come to fruition.

Notes

1 Here are some links to 10 PRINT ports online: A forum on StackExchange dedicated to sharing 10 PRINT ports, an SVG version, and either my own glitchy 10 PRINT, or fellow rhetorician Kevin Brock's 10 PRINT port, written in the Processing language. (To note, Processing is a programming language and development environment that was co-developed by one of the 10 PRINT book authors, Casey Raes.)

2 See the special issue of Computers and Composition (27.3, 2010) as well as Vee's latest article on the rhetoric of software patents (2012).

Works Cited

Knuth, Donald. The Art of Programming, vol. 2. Boston, Mass: Addison-Wesley, 1968. Print.

---. Literate Programming. Center for the Study of Language and Information, 1992. Print.

Montfort, Nick, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Raes, Mark Sample, and Noah Vawter. 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. Cambridge, Mass: MIT Press, 2012. Print.

Vee, Annette. “Carving up the Commons: How Software Patent Law Impacts our Digital Composition Environments.” Computers and Composition 27.3 (2010): 179-192. Print.

---. “Text, Speech, Machine: Rhetorical Constructions of Computer Code in the Law.” Computational Culture: A Journal of Software Studies 2 (2012). Web.