Happy New Year! My New Year’s poem for 2015 is a one-line BASIC program for the Commodore 64: “The Era Canto.”
GOTO80 tipped me off that the NYPL is experimenting with using PETSCII (the character set used on the Commodore 64 and other Commodore computers) to generate covers for e-books that don’t have them. There is also a cover generator under development that uses illustrations.
The PETSCII generator is specificaly inspired by 10 PRINT, and of course, it leads leads me to ask … will they use this system to generate a cover for the e-book version of 10 PRINT?
Martin Schemitsch (a.k.a. Martinland) has compiled and released a disk to accompany our book 10 PRINT CHR$(205.5+RND(1)); : GOTO 10, one that’s full of BASIC and assembly programs. These include the programs in the book and the later, more compact versions of our demo thread. The disk was just released at Commodore-Treffen Graz $14, and of course the disk image is available for download. It’s a nice companion to the 10 PRINT book and a Commodore 64 emulator, although, as you can see, it also works perfectly well on a vintage Commodore 64.
Dartmouth is celebrating the 50th anniversary of BASIC tomorrow with several events, including the premiere of a documentary on BASIC that I hope to see soon. I teach two classes tomorrow; those and my other meetings will make it impossible for me to stop by, even though Dartmouth is not very far away.
There’s also a celebratory Time article about BASIC, one that is packed with nice photos, scans, and GIFs showing how programs were listed and how they ran. The GIFs include a sped-up one of 10 PRINT running in an emulator, and there’s a link to 10 PRINT CHR$ (205.5 + RND (1)); : GOTO 10, our book (by Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, and Noah Vawter).
I do genuinely appreciate the link and the article overall – there’s excellent discussion of popular programming, recollections of personally writing BASIC, BASIC in books and magazines, and even David Brin’s 2006 Salon article – but it’s too bad our book is (twice) referred to as “a book of essays” when it is actually a single book-length academic study of the title program; quite in distinction to a book of essays, it was written by the ten of us in a single voice. The book, which among other things provides the major academic study of BASIC this century, is also available for free online and anyone can download/open it in seconds to check it out. And if such a glance entices a reader, he or she may, like the popular BASIC programmer of the late 1970s and 1980s, dive further in and learn about formal, material, cultural, historical, and other aspects of the title program, the Commodore 64, BASIC, and more.
Matthew Battles has a nice post about the “Programs at an Exhibition” show, up now on the metaLAB blog.
Here’s some documentation of “Programs at an Exhibition” by Nick Montfort & Páll Thayer, an exhibit of five Commodore 64 BASIC programs and five Perl programs at the Boston Cyberarts Gallery, March 6-16, 2014.
The front of the gallery hosts a Commodore 64 running Nick Montfort’s “After Jasper Johns” (left) and an Intel/Ubuntu computer running Páll Thayer’s “Flag” (right). These two pieces respond to and rework the famous 1954 painting, Flag, which is in the collection of the MoMA. Jasper Johns, we salute you.
Visitors are invited to take cards with all of the code to the five one-line BASIC programs and the five Perl programs that are running in the gallery. For you online visitors to this documentation, a disk image of the five C64 BASIC programs can be downloaded; VICE or another C64 emulator can be used to load, run, list, and modify the five programs on that image. (Except for “Zen for Commodore 64,” the programs do have to be retyped or broken into several lines to be modified.) Also, Páll Thayer’s entire Microcodes series, which includes the exhibited programs and which Thayer began in 2009, is online.
Páll Thayer’s “How to explain Perl to a dead hare,” based on the similarly-named 1965 performance by Joseph Beuys. The Perl program reads the Perl documentation aloud, one word at a time. The Perl documentation, incidentally, is really quite amusing to listen to.
Páll Thayer’s “Erased de Kooning” enacts (repeatedly, in this instance) the erasure of one of Willem de Kooning’s drawings by Robert Rauschenberg.
Not shown but also in the exhibit are Páll Thayer’s “Seedbed” and “Untitled composition.”
Nick Montfort’s five Commodore 64 programs running on five of the taupe keyboard-and-CPU units. Two of the monitors, the smaller ones, are NEC 12″ CRTs; the other three are Commodore 1702 CRT monitors. On the middle display, one of the zip paintings generated by “After Barnett Newman” can be seen.
On the left, Nick Montfort’s “After François Morellet,” which presents in one-character form all of the paintings that Morellet would have eventually painted if he continued to do other panels in his 1958 “6 répartitions aléatoires de 4 carrés noirs et blancs d’après les chiffres pairs et impairs du nombre Pi.” On the right, the instance of Nick Montfort’s “After Jasper Johns” that is running on a CRT monitor.
As with all of the programs, the complete code is presented along with the work’s title, the year of development, and the aritst’s name. The BASIC programs are also written out in a clearer form, with comments.
Not shown up close but also in the exhibit, in addition to “After Barnett Newman,” are Nick Montfort’s “Zen for Commodore 64″ and “After Damien Hirst.”
Or at least inspires a song and video…
The musical group Bedford Level Experiment writes of their song “Confounded to Corruption” and of the video for it:
We’ve been reading the book 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 and became very inspired by the section on procedurally generated art. All the footage in this video was generated by Commodore 64 programs written by us, including a 6502 assembly version of 10 PRINT. The lyrics were also generated algorithmically; Sonnet 64 and some commentary on it from Wikipedia were fed into an old Amiga program called NIALL, and the output was edited together into something resembling lyrics. The corruption the sonnet underwent became the theme of the song and video.
The line of verse the lyrics are based on,
Or state itself confounded to decay
is, quite aptly, line 10 of Shakespeare’s sonnet 64.
Nick Montfort & Páll Thayer
Programs at an Exhibition
At the Boston Cyberarts Gallery
141 Green Street, Jamaica Plain, MA 02130
Located in the Green Street T Station on the Orange Line
Phone number: 617-522-6710
The exhibit runs March 6 through March 16.
Opening: 6pm-9pm, Thursday March 6.
Part of the life of remarkable artworks is that they are appropriated, transformed, and made new. In Programs at an Exhibition, two artists who use code and computation as their medium continue the sort of work others have done by representing visual art as music, by recreating performance pieces in Second Life, and by painting a mustache and goatee on a reproduction of the Mona Lisa. Programs at an Exhibition presents computer programs, written in Perl and Commodore 64 BASIC, each running on its own dedicated computer. The 20th century artworks reenvisioned in these programs include some by painters and visual artists, but also include performances by Joseph Beuys and Vito Acconci. All of the underlying code is made available for gallery visitors to read; they are even welcome to take it home, type it in, and run or rework these programs themselves.
The programs (Commodore 64 BASIC by Nick Montfort, Perl by Páll Thayer) re-create aspects of the concepts and artistic processes that underlie well-known artworks, not just the visual appearance of those works. They participate in popular and “recreational” programming traditions of the sort that people have read about in magazines of the 1970s and 1980s, including Creative Computing. Programmers working in these traditions share code, and they also share an admiration for beautiful output. By celebrating such practices, the exhibit relates to the history of art as well as to the ideals of free software and to the productions of the demoscene. By encouraging gallery visitors to explore programming in the context of contemporary art and the work of specific artists, the exhibit offers a way to make connections between well-known art history and the vibrant, but less widely-known, creative programming practices that have been taken up in recent decades by popular computer users, professional programmers, and artists.
The Perl programs in the exhibit are from Microcodes, a series of very small code-based artworks that Páll Thayer began in 2009. Each one is a fully contained work of art. The conceptual meaning of each piece is revealed through the combination of the title, the code and the results of running them on a computer. Many contemporary programmers view Perl as a “dated” language that saw its heyday in the early ages of the World Wide Web as the primary language used to combine websites with databases. Perl was originally developed by Larry Wall, whose primary interest was to develop a language for parsing text. Because of his background in linguistics, he also wanted the language to have a certain degree of flexibility which has contributed to its motto, “There’s more than one way to do it.” “That motto, ‘TMTOWTDI,’ makes Perl challenging for professional programers who have to take over other’s people code and may struggle to make sense of it,” Thayer said. “But it’s one of the main reasons that Perl, a very expressive programming language, appealed to me in developing this project. This flexibility encouraged Perl programmers to explore individual creative expression in the writing of functional code.”
“Páll’s work in Microcodes engages explicitly with the way computer programs are read by people and hwo they have meanings to those trying to understand them, modify them, debug them, and develop them further,” Nick Montfort said. “The Perl programs in Microcodes are quite readerly when compared to my BASIC programs. I’ve tried to engage with a related, but different documented historical tradition — the one-line BASIC program — as it works in a particular computer, the Commodore 64, and to dive into what that particular computer can do using a very limited amount of code, given these many formal, material, and historical specifics. Because my programs are harder to understand, even though they are written in a more populist programming language, I’m including versions of the program that I have rewritten in a clearer form and that include comments.” Montfort’s related projects include a collaborative book, written with nine others in a single voice, that focuses on a particular Commodore 64 BASIC one-liner. The book, published in 2012, is named after the program that is its focus, 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. Montfort also writes short programs to generate poetry. These include two collections of Perl programs that are constrained in size: his ppg256 series of 256-character programs, and a set of 32-character concrete poetry generators, Concrete Perl. His book #! (pronounced “Shebang”) collects these and other poetry generators, along with their output, and is forthcoming from Counterpath Press.
Nick Montfort develops literary generators and other computational art and poetry, and has participated in dozens of collaborations. He is associate professor of digital media at MIT and faculty advisor for the Electronic Literature Organization, whose Electronic Literature Collection Volume 1 he co-edited. Montfort wrote the book of poems Riddle & Bind and co-wrote 2002: A Palindrome Story with William Gillespie. The MIT Press has published four of Montfort’s collaborative and individually-authored books: The New Media Reader (co-edited with Noah Wardrip-Fruin), Twisty Little Passages, Racing the Beam (co-authored with Ian Bogost), and most recently 10 PRINT CHR$(205.5+RND(1)); : GOTO 10, a collaboration with Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, and Noah Vawter that Montfort organized. Nick Montfort’s site, with his digital poems and a link to a free PDF of 10 PRINT: http://nickm.com
Páll Thayer is an Icelandic/American artist working primarily with computers and the Internet. He is a devout follower of open-source culture. His work is developed using open-source tools and source code for his projects is released under a GPL license. His work has been exhibited at galleries and festivals around the world with solo shows in Iceland, Sweden, and New York and notable group shows in the US, Canada, Finland, Germany, and Brazil. Páll Thayer has an MFA degree in visual arts from Concordia University in Montréal. He is an active member of Lorna, Iceland’s only organization devoted to electronic arts. He is also an alumni member of The Institute for Everyday Life, Concordia/Hexagram, Montréal. Páll Thayer currently works as a lecturer and technical support specialist at SUNY Purchase College, New York. Páll Thayer’s Microcodes site: http://pallthayer.dyndns.org/microcodes/
Ten programs will be exhibited, running on ten computers. Two of them, one in Perl by Páll Thayer and one in Commodore 64 BASIC by Nick Montfort, are based on the same artwork, Jasper Johns’s Flag:
Flag · Páll Thayer
Perl program · 2009
After Jasper Johns · Nick Montfort
one-line Commodore 64 BASIC program · 2013
My colleague Myke pointed out this New York Times column about the Commodore 64, which waxes nostalgic and also points out how the computer opened up possibilities for new programmers to explore and learn. Myke also pointed out, quite aptly, that the photo, which is supposed to be of a Commodore 64, is actually of a 1541 disk drive. Alas, the Grey Lady, in reference to the rainbow-logoed computer, nods…
I’ll post more on this soon, but for now, let me invite you to the opening of my & Páll Thayer’s show at the Boston Cyberarts Gallery: 141 Green Street, Jamaica Plain, MA 02130, located in the Green Street T Station on the Orange Line, 617-522-6710.
The opening is 6pm-9pm on Thursday March 6.
The exhibit (which will be up March 6-16) will feature ten programs (five in Commodore 64 BASIC by Nick Montfort, five in Perl by Páll Thayer), each running on its own computer. The programs re-create aspects of the concepts and artistic processes that underlie well-known artworks, not just the visual appearance of those works. They participate in popular and “recreational” programming traditions of the sort that people read about in magazines of the 1970s and 1980s, including Creative Computing. Programmers working in these traditions share code, and they also share an admiration for beautiful output. By celebrating such practices, the exhibit relates to the history of art as well as to the ideals of free software and to the productions of the demoscene. By encouraging gallery visitors to explore programming in the context of contemporary art and the work of specific artists, the exhibit offers a way to make connections between well-known art history and the vibrant, but less widely-known, creative programming practices that have been taken up in recent decades by popular computer users, professional programmers, and artists.
Flag · Páll Thayer
Perl program · 2009
After Jasper Johns · Nick Montfort
one-line Commodore 64 BASIC program · 2013
I am moved by the holiday spirit of MIT’s Independent Activities Period (IAP) to announce a Commodore 64 BASIC programming workshop using original hardware.
[Update: The workshop is now fully subscribed, but I will try to arrange for spectators who would like to join us around 4:30pm to see the results of our work.]
Beginning at 2pm on Wednesday January 29, we will spend about two and half hours working on short BASIC programs. Collaboration will be strongly encouraged; there will be one Commodore 64 provided for each pair of programmers. (If you negotiate with your partner, you may write something individually, however.) It is fine to proceed by modifying programs, and some will be provided for this exact purpose. Programs need not be interactive, but can be. Visual and textual effects will be our focus, but programmers are welcome to work with sound, to develop simple games, or even (gasp!) to write a program that does something useful.
No programming experience (in BASIC, on the Commodore 64, or otherwise) is required. Those who are new to programming can be paired with experienced programmers, if this is suitable to both people. Also, the essentials of BASIC on the Commodore 64 will be described during the workshop. Finally, new programmers can do very interesting work by modifying programs, changing data and parameters and then getting into changing and adding code.
At about 4:30pm we will have a presentation, screening, showcase, or compos of sorts for Commodore 64 BASIC programs in the following three categories:
- (max) 10-line program
- (max) 25-line program
After this workshop, the code developed will be presented and shared on the Web, where it can be run in emulation or by people who have Commodore 64s.
The time for the workshop, again, is:
January 29 (Wednesday)
I can accommodate 8-10 people, programming in pairs. Reserve a place by sending me an email. Because space is limited, please promise to come to the workshop if you write to reserve a space.
Just back from several travels, I’ve found that there’s a video record online of me, Patsy Baudoin, and John Bell presenting 10 PRINT at the University of Maine way back in April of this year. In our presentation, we answer questions and discuss the origin of the 10 PRINT project and the nature of our collaboration. And I do some livecoding. Pretty often, actually.
Please note that 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 is available as a beautiful MIT Press book, designed by our co-author Casey Reas, ans also as a free PDF.
Boston: No reaction.
Seattle: “No, for real?” “Yes, for real.” “That was my first computer!” “How old is that thing?” “It’s from 1982.” “Hey, that used to be state of the art! But now -” [TSA agent takes phone out of pocket, points to it.] “This has got more processing power!”
Los Angeles: “Sir, please come with me.” [TSA agent swabs power supply for explosives.] “Can you tell me what this is for?” “It’s a computer.” [Older TSA agent arrives.] “Hey! A Commodore 64! That’s a classic!”
Our first event for 10 PRINT is scheduled for:
November 12, 2012
Harvard Book Store
1256 Massachusetts Ave.
This means, of course, that the book will be printed and available for sale by then, which is less than a month from now.
The Harvard Book Store is an independent book store in Harvard Square, founded in 1932.
Of the ten authors of 10 PRINT, we’re planning to have at least me (Nick Montfort), Patsy Baudoin, and Noah Vawter there for some reading from the book, comments on the titular program and the writing of the book, and discussion. The reading is free and takes place at the bookstore itself, as the page on the event explains.
Local sound artist/electronic musician Keith Fullerton Whitman released an extraordinary piece on the b-side of his November 2009 cassette hallicrafters, inc. The piece is called 10 poke 54272+int(rnd(1)*25),int(rnd(1)*256) : goto 10 and is 18 minutes of sound produced by a Commodore 64 emulator running the BASIC program that is the title of the piece.
The memory locations beginning at 54272 are mapped on the Commodore 64 to the registers of the SID (Sound Interface Device). By POKEing random values into them, the SID, although it is a musical chip, is stimulated to produce sounds in what probably seems like a non-musical way: based on the effect of register settings and the sequence produced by the system’s random number generator, a polynomial counter.
I’m listening to the piece running on a hardware C64 now, which is soothing, although it seems like it shouldn’t be. Looking at the code, I note that the program
10 poke 54272+rnd(1)*25,rnd(1)*256 : goto 10
will put the same values into the same memory locations (and therefore SID registers) in the same order. The INT function is unnecessary because all arithmetic in C64 BASIC is done in floating point and then cast to integer whenever necessary. It’s possible that removing these functions will cause the piece to speed up, however, and I suspect it will, even though a BASIC interpreter could skip the unnecessary INT calls to begin with. There would be various ways of determining this, but the one I’d like to try involves getting two C64s, each with one version of the program, and seeing if they go out of phase.
By the way, I say that these two programs will put the same values in the same order because RND(1) returns a deterministic sequence. Any time either of these programs is invoked before other calls to RND are made, they will produce the same sequence. Using RND(0) would seed the random number generator on the jiffy clock, so would do different things depending upon how long the computer had been on before startup.
Thanks to sound artist and digital media scholar Kevin Driscoll, a.k.a. Lone Wolf, for letting me know about this.
Update: Hilariously, I overlooked that Whitman is not the author of this program – he credits Noah Vawter, a.k.a. Shifty, who is currently collaborating with me on a project about a one-line Commodore 64 BASIC program. I guess I was too distracted by that picture of an iPhone running a C64 emulator.