The Digital Rear-View Mirror

I’m at the intriguing and very sucessful third 2011 symposium of TILTS, the Texas Institute for Literary and Textual Studies. (Interestingly, TILTS can be spelled using only letter from “The X-Files.”) I might have written more about the event, but my computer has been identified by automated UT-Austin systems as being a rooted Windows machine (although it’s not a Windows machine at all) and is banned from the network. Desite my radio silence, though, the symposium has certainly been a space of lively discussion of digital media work, computational linguistics and its application to humanistic inquiry, and the representation of technology in media.

I’ll mention a bit about the talk I gave today, one entitled “The Digital Rear-View Mirror.” The title was based on the dictum of Marshall McLuhan: “We see the present through a rear-view mirror. We march backwards into the future.” The most obvious version of the digital rear-view mirror is the one on your Prius, but I started my comments about three specific topics (and one lament) by examining the nature of emulators, a type of rear-view mirror that’s been of great use to me.

I considered how emulators can be understood, via textual studies, as editions of computers, and how this helps us to better conceptualize the emulator and make more effective use of it in our work. This is a topic I wrote about recently here on Pole Position.

Then, I quickly introduced my current book project, which often involves emulators and is entitled “10 PRINT CHR$(205.5+RND(1);: GOTO 10”. I am writing a single-voice academic book with nine other authors; the book is about the one-line Commodore 64 BASIC program that is its title.

For the last of my three specific topics, I took my recent collaboration with Stephanie Strickland, Sea and Spar Between, a literary and aesthetic project which was based in part on consideration of the lexicon of Dickinson’s poems and of Moby Dick.

I wound up with some discussion of how the mainstream definition of the digital humanities, as effectively provided by funding agencies, does not clearly admit any of my specifics (building or using emulators, writing a book with nine others about a short program, collaborating on a poetry generator). None of these projects involve digitization or computational analysis of cultural heritage materials. Perhaps Sea and Spar Between, which involves computing on language but is not even a scholarly project, is actually closest to being a digital humanities project, but it isn’t that close.

Although people like our keynote speaker Johanna Drucker, Matt Kirschenbaum (who spoke on the panel with me), and Lev Manovich have done extremely significant work with contemporary objects of study and are also significant figures within the digital humanities, the exclusive fixation on the past means that we do not have major digital humanities projects about contemporary computational work – electronic literature, video games, computer music, digital installation art, etc.

So, I concluded with a plea to let there be some intersection between “digital media” and “the digital humanities” – to allow us a side-view mirror that would let us see what is happening alongside us, and in the recent past, as well.

10 PRINT Talks Galore

Two of my talks on this program:

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

have recently come online. I’m currently studying this program deeply and writing a single-voice book about it with many other authors.

My earlier talk, given jointly with coauthors Jeremy Douglass and Casey Reas on July 23 of last year, was “Studying Software by Porting and Reimplementation: A BASIC Case” at USC. As of yesterday, video of it is online with the rest of the conference proceedings from Critical Code Studies at USC.

More recently, on January 10, I spoke about the program at UC Santa Cruz. My talk “Line of Inquiry: Many Authors Explore Creative Computing through a Short Program” is available on video in six parts. Part 1 will let you link on to the rest.

Colloquium Past, Conference to Come in Mexico

I’ve recently returned from a great trip to Mexico City. I was at the 5th Mexican International Colloquium on Computational Creativity presenting alongside two other foreign guests, Graeme Ritchie and Dan Ventura, and two local researchers, Rafael Pérez y Pérez and Eduardo Peñaloza. There was a productive and lively roundtable on interdisciplinary work and collaboration the day before the talk, too. Rafael Pérez y Pérez, a collaborator of mine, arranged the colloquium and was a very gracious host, making sure that we got to and from the airport, to all of the colloquium events, and to several excellent meals.

Rafael presents the collaborative version of the plot generator MEXICA.
They must love George Perec's La Disparition in Mexico City.

I have a few things to mention about the 5th MICCC, but I’d like for this post to be mainly forward-looking rather than backward-looking. That’s because ICCC-11, the 2011 International Conference on Computational Creativity, is an event on the same topic as this recent colloquium, and it will be taking place in the same city thanks to the local organizing work of our wonderful host, Rafael. Although the colloquium was intellectually rich and I enjoyed visiting Mexico City for its own sake, I was also very pleased because I was anticipating this larger-scale academic gathering that will be taking place April 27-29. In part, I was reminded of the conference because I and the other organizers, Rafael, Graeme, and Dan, spent a good bit of the time working to make the remaining decisions and to prepare for ICCC-11. But even just walking around the city, I had in mind how much other computational creativity researchers would enjoy coming to México.

At the colloquium, I was the only one who didn’t discuss a large-scale system that is somehow related to the creative process. (I do have a such a system, Curveship, but I wanted to focus on something else in this talk.) I spoke about creative computing and the relationship that this area has to computational creativity. In creative computing, the computer is seen as a medium and platform for human creative work. There’s a strong relationship between this area and computational creativity, but there are some distinctions, too. I spoke about a very short, simple Commodore 64 BASIC program:

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

The C64 BASIC program executing.

This one-line program is the focus of a deep investigation that I am undertaking with nine other authors. We plan for this study to result in a single-voice academic book – not an edited collection, not a “chapter book” with separately authored segments, but something that reads like a single-author book but is written by ten people. We are still in the early stages of writing this book, but it’s our hope that 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 by Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark Marino, Michael Mateas, C. E. B. Reas, Mark Sample, and Noah Vawter will be published by the MIT Press in 2012. (Yes, the book’s title is the program itself.) Since the colloquium focused on interdisciplinary work and collaboration, this seemed like a nice project to discuss, even though the ten of us working on this project are not trying to model the creative process using computation. I described how the study of this program shed additional light on the relationship between platform and creativity, and how it suggested that computational creativity models try to take into account that relationship.

This poster was in the lobby of the auditorium where I did my presentation. Looks a bit like the output of 10 PRINT, no? It seems to show just that with two other characters (a horizontal line and a vertical line) thrown into the mix.

The other talks offered some excellent descriptions of and discussions of computational creativity systems: MEXICA, DARCI, and STANDUP (along with its predecessor, JAPE). These systems, and the things that have been done with them, are all great examples of creative computing, by the way, in addition to being computational investigations of creativity! I could do a post this long covering just the new thoughts that have come to me about these projects, each of which I knew about before. For now, I’ll refer you to the abstracts and links for more on those projects.

Coming up: The 2011 International Conference on Computational Creativity, April 27-29 in Mexico City

Interior of La Casa de Primera Imprenta.

I’ve been to Mexico City before, but this was my first trip to the city’s main square, the Zócalo. This is the area where ICCC-11 will take place. It’s an amazing sight. You can see that Mexico City is mind-bogglingly big as you fly in, but the Zócalo is massive in a different way. The plaza and the area is human-scale (designed for pedestrians and very walkable, with many shops and restaurants) while also being tremendous and impressive. On the north is the cathedral; the National Palace, where President Calderón works, is to the east. An enormous Mexican flag flies from the National Palace during the day. To the west are several buildings, including the Best Western Majestic Hotel, which will be offering a discounted rate for ICCC-11. Just off the plaza, between the Cathedral and the National Palace, is where ICCC-11 will be held – at La Casa de la Primera Imprenta. The first printing press in the Americas was installed in 1536 in this building. It now offers a conference facility of just the right size for ICCC-11 presentations and demos, several galleries, and a bookstore.

SHRDLU fans will note that the Linotype machine in La Casa de Primera Imprenta has a different layout than an English Linotype machine.

The Autonomous Metropolitan University, Cuajimalpa is the host institution for ICCC-11, which is also supported by UNAM’s postgraduate program in computer science and engineering. The colloquium that UAM-Cuajimalpa put on with UNAM was well-attended by students and faculty who had some good questions for us. I know that we will have great local arrangements for ICCC-11; the participation we had in the colloquium suggests that we will be part of some good conversations (and, no doubt, see some good presentations and demos) from local ICCC-11 attendees.

So, I hope to see you readers who work in computational creativity in Mexico City at the end of April. I’m the publicity chair for ICCC-11, but in addition to publicizing the conference, I’m glad to email with anyone who has questions about the conference or about visiting Mexico City. And, remember that the deadline for submissions (of short papers, long papers, or show-and-tell proposals) is December 13, less than a month away now: The call for papers has the details, and there is more information on other parts of the ICCC-11 site.

@party: Weaving thread

I spent this weekend at @party 2010, the first (and hopefully not last) demoparty of this name. The event was in the Town of Harvard, Massachusetts – a bit outside of Boston. I heard four live music performances, saw an early cut of Jason Scott’s almost-finished Get Lamp documentary, and saw and heard grafix, music, and demos (wild and windows) in the Saturday evening compos. There were great tunes, a truly excellent 4k windows demo, an incredible demo running on an Arduino, and much more. Many thanks to the organizer, Metoikos, and everyone who helped her out. And, a big thanks to the demoscene!

Working with two others and using the moniker “nom de nom,” I completed my first demoscene production: thread, a Commodore 64 demo that has fewer than 32 bytes of code. (There are no C64 demos this size or smaller on pouet.net, as far as I can tell.) This demo is a tribute to a BASIC program that generates random mazes, one that exists in one form in the C64 User’s Guide but has also circulated as a one-liner. Here’s a version of the program:

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

I developed thread working in person first with Le Colonial of Atlanta, a sometime co-author of mine who also writes Atari VCS games. (He’s also known as Ian Bogost.) At the party itself, I was fortunate to encounter C64 expert rv6502 of Montréal, who joined me and did the heavy lifting in the second phase of this project.

After working one evening with Le Colonial in Cambridge, we had a 32 byte program that wasn’t exactly like the original, but did something pretty cool. When I checked it out on my actual C64 right before I left for the party, however, it didn’t work. The SID was initialized differently in the emulators I’d used than it was on the box itself – as it happened – and there was something odd happening with my video display as well.

I brought my C64 to the event rather half-heartedly, without any way of getting programs onto it other than typing them in and without a display. Alas, I wasn’t going to get away from the program that easily: Dr. Claw brought me a monitor to use and NO CARRIER loaned me a flash cart – and, later, a physical copy of the Commodore 64 Programmer’s Guide. rv6502 and I sat down to work further on the program. It turned out my C64’s video was different that of the emulators I used, but also different from Ferris’s actual C64 (which matched the behavior of the emulators I tried). So it wasn’t just an emulator failing to match the metal; the two different C64s apparently have different KERNAL code in ROM. Dumping my machine’s ROM and used that with my emulator would have solved that part of the mismatch.

I won’t try to go into all the details of developing this demo, but there were two particularly great things about the process at a high level. First, I got to collaborate with and learn from two others at different points. Second, I got to learn a lot more about the C64, including many things I wouldn’t have run up against if I hadn’t been working on something like this. I’m not talking about small differences between emulation and the hardware, which were a minor part of this experience, in the end. I mean finding excellent facilities of the 6502 and the C64 to work around those which weren’t doing what we wanted.

We’ve released thread in three versions: The canonical one, which has 31 bytes of code but is in a 33-byte PRG file, because the beginning memory location is stored in the first two bytes of PRG files. If this bothers you, there is a 28-byte version which fits into a 30-byte PRG file and has all the same colors, but displayed in a way that we think is not as pretty. We also include a simple, straightforward reimplementation of the BASIC program above: A 20-byte program in a 22-byte PRG file. I’d love to get this uploaded to pouet.net at some point, but I don’t know how. For now, here’s a zipfile with source and PRGs.

thread got 4th place in the Oldschool category at @party. After you load a PRG file in your emulator (or on your C64), you can run it by typing “SYS 4096”.

Finally, these are the 31 bytes of thread:

A9 80 8D 0F D4 8D 12 D4 A8 B1 F9 8D 86 02 AD 1B D4 29 01 69 6D 20 D2 FF E8 D0 ED E6 F9 50 E9