Nano-NaNoGenMo or #NNNGM

Ah, distinctly I remember it was in the bleak November;
And each separate bit and pixel wrought a novel on GitHub.

April may be the cruelest month, and now the month associated with poetry, but November is the month associated with novel-writing, via NaNoWriMo, National Novel Writing Month. Now, thanks to an offhand comment by Darius Kazemi and the work of Hugo van Kemenade, November is also associated with the computer-generation of novels, broadly speaking. Any computer program and its 50,000 word+ output qualifies as an entry in NaNoGenMo, National Novel Generation Month.

NaNoGenMo does have a sort of barrier to entry: People often think they have to do something elaborate, despite anyone being explicitly allowed to produce a novel consisting entirely of meows. Those new to NaNoGenMo may look up to, for instance, the amazingly talented Ross Goodwin. In his own attempt to further climate change, he decided to code up an energy-intensive GPT-2 text generator while flying on a commercial jet. You’d think that for his next trick this guy might hop in a car, take a road trip, and generate a novel using a LSTM RNN! Those who look up so such efforts — and it’s hard not to, when they’re conducted at 30,000 feet and also quite clever — might end up thinking that computer-generated novels must use complex code and masses of data.

And yet, there is so much that can be done with simple programs that consume very little energy and can be fully understood by their programmers and others.

Because of this, I have recently announced Nano-NaNoGenMo. On Mastodon and Twitter (using #NNNGM) I have declared that November will also be the month in which people write computer programs that are at most 256 characters, and which generate 50,000 word or more novels. These can use Project Gutenberg files, as they are named on that site, as input. Or, they can run without using any input.

I have produced three Nano-NaNoGenMo (or #NNNGM) entries for 2019. In addition to being not very taxing computationally, one of these happens to have been written on an extremely energy-efficient electric train. Here they are. I won’t gloss each one, but I will provide a few comments on each, along with the full code for you to look at right in this blog post, and with links to both bash shell script files and the final output.

OB-DCK; or, THE (SELFLESS) WHALE


perl -0pe 's/.?K/**/s;s/MOBY(.)DI/OB$1D/g;s/D.r/Nick Montfort/;s/E W/E (SELFLESS) W/g;s/\b(I ?|me|my|myself|am|us|we|our|ourselves)\b//gi;s/\r\n\r\n/
/g;s/\r\n/ /g;s//\n\n/g;s/ +/ /g;s/(“?) ([,.;:]?)/$1$2/g;s/\nEnd .//s’ 2701-0.txt #NNNGM

WordPress has mangled this code despite it being in a code element; Use the following link to obtain a runnable version of it:

OB-DCK; or, THE (SELFLESS) WHALE code

OB DCK; or, THE (SELFLESS) WHALE, the novel

The program, performing a simple regular expression substitution, removes all first-person pronouns from Moby-Dick. Indeed, OB-DCK is “MOBY-DICK” with “MY” removed from MOBY and “I” from DICK. Chapter 1 begins:

Call Ishmael. Some years ago—never mind how long precisely—having little or no money in purse, and nothing particular to interest on shore, thought would sail about a little and see the watery part of the world. It is a way have of driving off the spleen and regulating the circulation. Whenever find growing grim about the mouth; whenever it is a damp, drizzly November in soul; whenever find involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral meet; and especially whenever hypos get such an upper hand of , that it requires a strong moral principle to prevent from deliberately stepping into the street, and methodically knocking people’s hats off—then, account it high time to get to sea as soon as can. This is substitute for pistol and ball. With a philosophical flourish Cato throws himself upon his sword; quietly take to the ship. There is nothing surprising in this. If they but knew it, almost all men in their degree, some time or other, cherish very nearly the same feelings towards the ocean with .

Because Ishmael is removed as the “I” of the story, on a grammatical level there is (spoiler alert!) no human at all left at the end of book.

consequence


perl -e 'sub n{(unpack"(A4)*","backbodybookcasedoorfacefacthandheadhomelifenamepartplayroomsidetimeweekwordworkyear")[rand 21]}print"consequence\nNick Montfort\n\na beginning";for(;$i<12500;$i++){print" & so a ".n;if(rand()<.6){print n}}print".\n"' #NNNGM

consequence code

consequence, the novel

Using compounding of the sort found in my computer-generated long poem The Truelist and my “ppg 256-3,” this presents a sequence of things — sometimes formed from a single very common four-letter word, sometimes from two combined — that, it is stated, somehow follow from each other:

a beginning & so a name & so a fact & so a case & so a bookdoor & so a head & so a factwork & so a sidelife & so a door & so a door & so a factback & so a backplay & so a name & so a facebook & so a lifecase & so a partpart & so a hand & so a bookname & so a face & so a homeyear & so a bookfact & so a book & so a hand & so a head & so a headhead & so a book & so a face & so a namename & so a life & so a hand & so a side & so a time & so a yearname & so a backface & so a headface & so a headweek & so a headside & so a bookface & so a bookhome & so a lifedoor & so a bookyear & so a workback & so a room & so a face & so a body & so a faceweek & so a sidecase & so a time & so a body & so a fact […]

Too Much Help at Once


python -c "help('topics')" | python -c "import sys;print('Too Much Help at Once\nNick Montfort');[i for i in sorted(''.join(sys.stdin.readlines()[3:]).split()) if print('\n'+i+'\n') or help(i)]" #NNNGM

Too Much Help at Once code

Too Much Help at Once, the novel

The program looks up all the help topics provided within the (usually interactive) help system inside Python itself. Then, it asks for help on everything, in alphabetical order, producing 70k+ words of text, according the GNU utility wc. The novel that results is, of course, an appropriation of text others have written; it arranges but doesn’t even transform that text. To me, however, it does have some meaning. Too Much Help at Once models one classic mistake that beginning programmers can make: Thinking that it’s somehow useful to read comprehensively about programming, or about a programming language, rather than actually using that programming language and writing some programs. Here’s the very beginning:

Too Much Help at Once
Nick Montfort

ASSERTION

The “assert” statement
**********************

Assert statements are a convenient way to insert debugging assertions
into a program:

assert_stmt ::= “assert” expression [“,” expression]

A plot

So far I have noted one other #NNNGM entry, A plot by Milton Läufer, which I am reproducing here in corrected form, according to the author’s note:


perl -e 'sub n{(split/ /,"wedding murder suspicion birth hunt jealousy death party tension banishment trial verdict treason fight crush friendship trip loss")[rand 17]}print"A plot\nMilton Läufer\n\n";for(;$i<12500;$i++){print" and then a ".n}print".\n"'

Related in structure to consequence, but with words of varying length that do not compound, Läufer’s novel winds through not four weddings and a funeral, but about, in expectation, 735 weddings and 735 murders in addition to 735 deaths, leaving us to ponder the meaning of “a crush” when it occurs in different contexts:

and then a wedding and then a murder and then a trip and then a hunt and then a crush and then a trip and then a death and then a murder and then a trip and then a fight and then a treason and then a fight and then a crush and then a fight and then a friendship and then a murder and then a wedding and then a friendship and then a suspicion and then a party and then a treason and then a birth and then a treason and then a tension and then a birth and then a hunt and then a friendship and then a trip and then a wedding and then a birth and then a death and then a death and then a wedding and then a treason and then a suspicion and then a birth and then a jealousy and then a trip and then a jealousy and then a party and then a tension and then a tension and then a trip and then a treason and then a crush and then a death and then a banishment […]

Share, enjoy, and please participate by adding your Nano-NaNoGenMo entries as NaNoGenMo entries (via the GitHub site) and by tooting & tweeting them!

Interactive Fiction Meetup at MIT, Again, Tomorrow

The People’s Republic of Interactive Fiction meets once again tomorrow (Monday 2014-11-24) in its regular meeting-place, the Trope Tank. We meet at 6:30 in MIT’s room 14N-233.

There is much to discuss and celebrate, such as the conclusion of the IF Comp – congrats to Sean M. Shore for his 1st place game Hunger Daemon, and to all the other winners. Besides that there’s the recent release of Hadean Lands by PR-IF stalwart Andew Plotkin. And, today there’s a front-page New York Times article about IF, and Twine games specifically. I’m sure I forgot some things we have to celebrate, so come by to see what those things are.

NaNoGenMo 3000!!!!

Er, sorry. I exaggerated a bit. It’s actually just
NaNoGenMo 2014. But that’s still really cool.

“Spend the month of November writing code that generates a novel of 50k+ words.” As is traditional, the event occurs on GitHub.

NaNoGenMo Wraps Up and Prints Out

There are some things I absolutely must mention at this point, to highlight certain of the many interesting outcomes from NaNoGenMo (National Novel Generation Month):

Alice’s Adventures in the Whale, one of two novels created by Leonard Richardson by computationally replacing all the dialog in one novel with the dialog in another:

>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “Can’t sell his head?–What sort of a bamboozingly story is this you are telling me?” thought Alice “Do you pretend to say, landlord, that this harpooneer is actually engaged this blessed Saturday night, or rather Sunday morning, in peddling his head around this town?”

>Presently she began again. “Ka-la! Koo-loo!” (she was rather glad there WAS no one listening, this time, as it didn’t sound at all the right word) “Stand up, Tashtego!–give it to him!” (and she tried to curtsey as she spoke–fancy CURTSEYING as you’re falling through the air! Do you think you could manage it?) “Stern all!”

>”My God! Mr. Chace, what is the matter?” said poor Alice, and her eyes filled with tears again as she went on, “we have been stove by a whale.” cried Alice, with a sudden burst of tears, “NARRATIVE OF THE SHIPWRECK OF THE WHALE SHIP ESSEX OF NANTUCKET, WHICH WAS ATTACKED AND FINALLY DESTROYED BY A LARGE SPERM WHALE IN THE PACIFIC OCEAN.”

>CHAPTER V. Advice from a Caterpillar
>
>The Caterpillar and Alice looked at each other for some time in silence: at last the Caterpillar took the hookah out of its mouth, and addressed her in a languid, sleepy voice.
>
>”I say, pull like god-dam,” said the Caterpillar.
>
>This was not an encouraging opening for a conversation. Alice replied, rather shyly, “There she slides, now! Hurrah for the white-ash breeze! Down with the Yarman! Sail over him!”

Leonard’s other submitted novel used Pride and Prejudice (and Through the Looking Glass). Along similar lines, you may be interested in seeing what Pride and Prejudice looks like without any dialog.

Early in the month, Zarf (Andrew Plotkin) submitted a generated novel that is entirely dialog: Redwreath and Goldstar Have Traveled to Deathsgate.

Ian Renton generated Doctor Who fan fiction using the technique of Bayseian poisoning, which is popular in spam generation. It’s only the only fanficlicious novel; see the generated Austenesque novels of jiko.

I was implicated in inspiring Nif, a palindromic 50,000-word+ novel, the second generated novel submitted (early in the month) by catseye. A remixed and extended version was done by Michael Paulukonis.

Don’t miss Aaron Reed’s Agressive Passive, which details conversation between six housemates about maintaining the cleanliness of their domicile.

And finally, my entry is World Clock, which briefly describes something happening, at some location around the world, at each minute of a day.

The overall “site” for NaNoGenMo, which was the fervent brainchild of Darius Kazemi, is, by the way, this humble GitHub repository.

The People’s Republic of Interactive Fiction … Today

Boston-Area IF group The People’s Republic of Interactive Fiction (PR-IF) is set to meet at 6:30pm today in my lab, The Trope Tank (MIT’s room 14N-233). We’ll check out some of the winners of the 2012 Interactive Fiction Competition, the 18th annual Comp, which recently concluded. Congratulations to Marco Innocenti for his 1st-place Andromeda Apocalypse, to the anonymous author of Eurydice (which took 2nd), and to Jim Munroe, for Guilded Youth, which was 3rd – and to all of the other winners!

Head Over to Overhead

I just saw an overhead projector demo, at a demo party, that simulated the Amiga boing ball demo using only transpaencies. And then another that, using pinwheels, simulated fire.

I regret that the overhead projector did not, in either case, produce the music.

Palindrome “Sagas”

Marty Markowitz, borough president of Brooklyn, said his borough was “the heart of America” in welcoming the 35th Annual American Crossword Puzzle Tournament. My heart was certainly in Brooklyn last weekend, both literally and figuratively. I was there to participate in the First Annual World Palindrome Championship on Friday and, on Saturday, to visit Big Reality, a wonderful, scruffy art show that included some of my work. More on Big Reality soon; here’s a belated note about the WPC.

I made into New York in time to meet at Jon Agee’s sister’s house in Brooklyn with him and several other palindromists who would be competing that evening. (Agee is a cartoonist whose books include Go Hang a Salami! I’m a Lasagna Hog! and Palindromania!) The other competitors included a fellow academic, John Connett, who is professor of Biostatistics at the University of Minnesota and an extremely prolific producer of sentence-length palindromes. Martin Clear, another author of many, many sentence-length palindromes, came from Australia. Barry Duncan, a Somerville resident and thus practically my neighbor, also joined us. Another competitor was Mark Saltveit, editor of The Palindromist and a stand-up comedian. And Douglas Fink, who won a celebrity palindrome contest with his now-famous entry “Lisa Bonet ate no basil,” was the audience contestant selected to join us.

I met Barry and Doug later that day, and had a great time sitting around and discussing palindromes with the others over lunch. We had plenty to talk about. It was interesting to see that we also had different perspectives, interests, and terms associated with the art. Jon thought “Er, eh – where?” was a good palindrome, probably in part because he was imagining how to illustrate it or frame it in a cartoon in a funny way. The others generally thought this one was bogus. A sentence was the desired outcome for most of us, while I was a fan (and writer) of longer palindromes. And, as we found out that night, the audience had their own tropisms and aesthetics when it comes to palindromes.

We had 75 minutes to write up to three palindromes that we’d read to the crowd, which was to vote for their two favorite. There were three possible constraints given: Use X and Z; Refer to events in the news in the past year; or refer to the crossword tournament itself. Here’s what I came up with, using the first constraint:

The Millennium Falcon Rescue

by Nick Montfort

Wow, sagas … Solo’s deed, civic deed.

Eye dewed, a doom-mood.

A pop.

Sis sees redder rotator.

Radar sees racecar X.

Oho! Ore-zero level sees reviver!

Solo’s deified!

Solo’s reviver sees level: ore-zero.

Oho: X, racecar, sees radar.

Rotator, redder, sees sis.

Pop a doom-mood!

A dewed eye.

Deed, civic deed.

Solo’s sagas: wow.

All of the results (and the text of the palindromes) are up on The Palindromist site – take a look!

Mark Saltveit became champ with a short palindrome about acrobatic Yak sex. John Connett got 2nd, Jon Agee 3rd, and yours truly 4th.

Which is the longest?

In mine, I count 54 words, 237 letters, and 327 characters. If “doom-mood” and the like are single words, we’d have 50 words. Mark says on The Palindromist site that it’s 57 words long; I’m not sure how the counting was done there.

In Barry’s, the only other possible contender, I count 70 words (as does Mark), 184 letters, and 311 characters. Some of those words are “7” and have no letters in them, as you’ll note if you check out the results page.

So, they’re both the longest: Barry’s has the most words, while mine has the most letters and characters.

It’s a sort of odd comparison, because the constraint I used (employ only palindromic words, counting things like “ore-zero” as words) let me reframe the problem as that of constructing a word palindrome with a restricted vocabulary. Of course, you should be very very impressed anyway, with my general cleverness and so on, but I think Barry chose a more difficult feat at the level of letter-by-letter construction.

Does length matter?

Yes. A palindrome should be the right length. 2002 words is a good length if you’re trying to write a palindromic postmodern novel. For a snappy statement, a short sentence is a good length. I think some of the best palindromes are longer than a sentence and much shorter than 2002. My last edits to “The Millennium Falcon Rescue” were to cut several words (an even number, of course), and maybe I should have cut more? And, should I revise this one, I might cut the word that was included for the sake of the Z.

What about those palindromists?

The most interesting thing about this event, for me, was a gathering focused on palindrome-writing. Kids know what palindromes are, the form of writing has been around for more than a thousand years, many people have palindromes memorized, and there are a handful of famous books … but as I see it there hasn’t even been a community of palindrome-writers, discussing writing methods, coming up with common terms and concepts, sharing poetic and aesthetic ideas.

Well, perhaps there has been, in the Bletchley Park codebreakers. But I only learned about them because I met Mark, who is one of the people researching the origins of famous palindromes. And that was, due to wartime security, a very secretive group.

It was great having the Championship hosted by Will Shortz at the American Crossword Puzzle Tournament, with many puzzle-solver and -constructors who are interested in formal engagements with language. Of course, palindrome events would fit will at other sorts of gatherings that are focused on poetry and writing, too.

Whether or not we have another championship (which would be great), it would be nice to have another summit of some sort and to build a community of practice around this longstanding practice. Particularly if we can get someone named Tim to join us: Tim must summit!

1st Annual World Palindrome Championship

It’s this Friday in Brooklyn, and I’ll be one of six competitors.

This Friday night I’ll be competing in the First Annual World Palindrome Championship. If you insist, you can call it the First or the Inaugural World Palindrome Championship, but that’s the name of the event.

Er, Eh – Where?

The event will take place in Brooklyn at the New York Marriott at the Brooklyn Bridge. The competition, with a 75-minute time for palindrome composition based on a prompt, will kick off the 35th Annual American Crossword Puzzle Tournament and will start at 8pm. (Those cruciverbalists like to stay up late.) It’s all run by Will Shortz, crossword puzzle editor for The New York Times. The championship is the first thing on the tournament schedule.

Name no one man!

Actually, one man is almost sure to be named. The five competitors already selected are Jon Agee, Martin Clear, John Connett, humble narrator Nick Montfort, and Mark Saltveit. Jon Agee has authored books of cartoons illustrating palindromes, including Palindromania! Martin Clear penned “Trade life defiled art” and is making a trip from Australia for the event. John Connett is a fellow academic whose wonderful palindromic quips include “Epic Erma has a ham recipe.” Mark Saltveit is a stand-up comedian and found and editor of The Palindromist, the only magazine specific to this form that I know. And I suppose I got into this by writing the 2002-word palindrome 2002: A Palindrome Story with William Gillespie. The whole list, with pictures and further links, is up on Saltveit’s page for the event.

A competitor will be selected from the audience on Friday based on a palindrome written and submitted that day. If this is a woman or a pair of identical twin collaborators, there is some chance that no one man will be named. Unless one of these miraculously appears and is selected, though, we will unfortunately miss the company of my collaborator William, Mike Maguire (author of Drawn Inward and Other Poems), Demetri Martin, Harry Mathews, and many other top practitioners of the art. For a first gathering of palindrome-writers, though, who can complain?

Take This Narrative Diction

I believe that Curveship and the example game Lost One may have just recieved their first roasting, thanks to the firepower of the S.S. Turgidity and the intrepid, enterprising player character Stiffy Makane. The “erotic adventures” that unfold in The Cavity of Time, released as part of the Indigo New Language Speed IF, allow you to jump everything within reach. And, just to be clear, to fuck all of those things. If you were offended just now, let me suggest that you don’t fire up this Choose-Your-Own-Adventure-style garden of fucking paths. Otherwise, this offering, written in the slick Undum system, may please you. Not like that. I mean it may amuse you.

Here’s a snippet from the beginning of the “Hip Curves” section:

The professor notices something about the device-shaped object.
That was immediately before a glass was refreshed.
The professor will be making a comment about focus.
A dial is being turned.
“Sorry about that,” he says. “What I was trying to say is that the tense shifts you are experiencing are the results of a local fluctuation in the field exerted by Hip Curves, my most diabolical erotic creation. Can I interest you in a mojito, by the way? There you go.”

I feel that in addition to commenting upon this reference, I must also invite you – if you are one of the non-offended – to plunge into the work in the question, if it doesn’t offend your morals. Please, drill Sam Kabo Ashwell’s Cavity.

Notes on the IF Community

I was a sort of “international observer” at the latest ELMCIP Seminar in Bergen, Norway. ELCMIP is a European project, funded by HERA, which looks at the ways electronic literature communities function and foster creativity. On the first day of the seminar (Monday, September 20) I presented about the IF community, supplementing that evening’s screening of Get Lamp at the Landmark Cafe. I offered some thoughts, summarized here, for those working in other types of electronic literature practices.

By “interactive fiction” (often abbreviated “IF”), I mean pretty much exactly what you will find if you Google for the term and starting looking through the first several pages of results. In my dissertation, I defined interactive fiction as: “A form of text-accepting, text-generating computer program that narrates what is happening in a simulated world in reply to input from a user, or interactor. Interactive fiction can have literary qualities and qualities of a game.” In recent decades, people have used the term in different ways, but this is how the interactive fiction community understands IF today and has understood it for a while. This means that IF is not defined by a particular platform, the way that Flash games are, but that people do expect something to work like a “text adventure,” with the simulation of space and objects and natural-language-like input, to be considered IF. Members of the interactive fiction community may find chatterbots, story generators, hypertext fiction, point-and-click graphical games, and other things very interesting, but these productions would not have a place in the annual Interactive Fiction Competition, for instance, because they aren’t interactive fiction.

I have to note at this point that I can’t offer any proper sort of study of the interactive fiction community, as I am not an anthropologist by training (or pretension) and I don’t understand the workings of community in the way that people with a better background would. What I can offer, as a member of this community, are some notes about my experiences and some pointers to ways I have seen the community working together. My hope is that may notes may be of some use in generating ideas about e-lit community or for someone undertaking a systematic study.

Also, I’ll explain at this point that what I and others call “the IF community” is not the only IF community, even for English-language work. One other community is that of authors and players of ADRIFT games. ADRIFT (Adventure Development & Runner – Interactive Fiction Toolkit) is an easy-to-use shareware system for IF development. Another locus of interactive fiction practice and playing is “adult interactive fiction” or AIF, which prominently depicts sexual activity. The AIF community has its own annual awards, the Erins, which are analogous to the IF community’s XYZZY Awards (discussed later). Beyond these communities, there are IF communities, or at least IF activity that involved several people and that I know about, in Spanish, German, Italian, French, and Russian language communities.

An important early resource for the IF community was the IF Archive, originally hosted in Germany thanks to Volker Blasius. The archive was announced on November 24, 1992 and is mirrored today on sites throughout the world, with the main site being ifarchive.org. The archive was originally accessed only by anonymous FTP and can still be reached by that method today, although there is a simple Web interface at the main site and a searchable interface at Baf’s Guide to the IF Archive. The “archive” is not a repository for an organizations old, inactive files; it a system for publishing and sharing new work, including the games for each year’s IF Competition.

The IF community communicated for many years on two USENET newsgroups – and some in the community still read these newsgroups. rec.arts.int-fiction and rec.games.int-fiction were not originally devoted to what we now call IF, but those discussions came to predominate. The “arts” and “games” groups do not argue for different perspectives on interactive fiction; they are simply for discussion of making games (“arts”) and playing them (“games”).

A central institution in the IF community – perhaps the central one – is the annual IF Competition, which began in 1994. Now in its 16th year and run by Stephen Granade, “the Comp,” as it is called, showcases a wide variety of short games, some poorly written and/or poorly programmed and others quite exemplary. While winning the Comp or placing well in it is certainly desirable, anyone who enters the comp can be sure that dozens, if not hundreds, of people will play the game submitted. Many will even write review of it, since it is a tradition among the most enthusiastic members of the IF community to review all of the Comp games. Competitions are central to many popular communities of digital practice – the demoscene as well as creators of Flash games, homebrew 8-bit games, and graphical games. These comps or compos usually do not involve substantial rewards for winners or agonistic competition; instead, they provide an event (in person in the case of the demoscene, online in other cases) that focuses the interest and energy of the community.

Recent years have seen other IF events of different sorts, including “minicomps” with different themes and the “Speed IF” sessions in which several participants each write a themed or constrained game in two hours. Some of the community’s events highlight the different metaphors that are in play, ones that work across literary and gaming concepts. Although works of interactive fiction are conventionally called “games” and the people who interact with them are called “players,” the person who writes a game (almost always the same person who programs it) is an “author.” The online “Interactive Fiction Book Club,” founded in 2001, brought together those who had played a particular game for conversation modeled on conversation about books. In 2009, “Interactive Fiction Writing Month,” with some in-person events that took place mainly at CMU, made an obvious connection to National Novel Writing Month. The annual XYZZY Awards for interactive fiction, on the other hand, are styled after the Oscars. Although they are awarded by popular nominations and popular vote, they are named in the manner of Academy Awards and presented at an online event. Many IF community members even virtually dress up for the award ceremony.

The XYZZY awards take place on ifMUD, a simple text-based MUD that serves almost entirely as a chat room. That is, role-playing and puzzle-construction and -solving have little place there and RPG-style combat has none. The people on ifMUD do use some of the unique MUD-like facilities to support their communications, however, and they also program new capabilities into the MUD for that purpose. There is a bot, Alex, who parrots things that he has been taught, allowing people to query him for the definition of terms and acroymns. An “automeeter” keeps track of which pairs of people have met in person. People use another bot, Floyd, to play IF together on ifMUD, participating in “Club Floyd” sessions. People also ask for programming, design, and writing help, and sometimes even discuss theoretical or critical ideas. Much of the discussion is not directly focused on IF, but when one does want to discuss IF in real time, ifMUD is a great place to do so.

There are now local groups that meet in person to discuss and play interactive fiction. The one I know most about is the one I host in Cambridge, Massachusetts, The People’s Republic of Interactive Fiction, organized by Kevin Jackson-Mead. PR-IF meets monthly, and had a hotel room with snacks and talks, thanks mainly to Andrew Plotkin, at Penny Arcade Expo East. They have also produced a card with instructions for first-time IF players. I organized the first meeting of the PR-IF writers’ group, Grue Street. And two successful events have been held in which the public was invited to play interactive fiction together: the early MIT version of Zork, in the first case, and Admiral Jota’s Comp-winning game Lost Pig in the second.

By now, most people who deal with electronic literature in some way seem inclined to accept that interactive fiction falls under this umbrella term. But even if some resist this, it’s hard to ignore that the community itself connects its meetings, events, roles, and practices to literary ones. Of course, simply importing the institutions of IF into other communities is unlikely to be helpful: Other e-lit communities may not need an FTP site, two USENET newsgroups, a MUD, and so on. But understanding how different structures, conventions, and tools have helped IF authors and players could have broader applicability. For instance, the IF Comp has worked to encourage the annual production of games, but it has also dominated IF production so that the best-known games are those short ones released for the IF Comp. (The community has responded with other comps and with projects to review other games, so the IF Comp is not too much of a victim of its own success.) Nevertheless, this situation can highlight the benefits and the dangers of a regular, central activity with its own format requirements. Considering the IF community may also point the way to other groups that are less obviously literary, but are creative communities of practice involved with computing.

Finally, Your 50 Character Reward!

After I presented poetry generators ppg256-1 through ppg256-5 at Banff in February, I shouted out, more or less spontaneously, “50 character reward to whoever gives us the best explanation of what ppg256 is!” Why did I say that? Childhood trauma, possibly, but the more immediate reason, as I mentioned earlier, is that the last of these, ppg256-5, is based on a section of Tristan Tzara’s February 1921 Dada Manifesto, one which ends with the phrase “50 francs reward to the person who finds the best way to explain DADA to us.”

I got some great answers, including “It does a lot with a little” (Chris Funkhouser) and “ppg combines atoms of language” (John Cayley). But at this point I’ll skip right to the one from Travis Kirton, who did the following without having any previous experience programming in Perl:

perl -le '@a=split/,/,"illmn,imgn,ltr,mut,pxl,popl,strlz,pnctu,typfc,poetc,glmr,idl,ion,cptl,cpsl,cvl,atom,pltc,txtul,erotc,rvl";sub f{pop if rand>.5}sub w{$a[rand@a]}{print f("de").f("over").w."izes ".w."ation".f("s")."\n".(" "x45)."IS WHAT ppg DOES!";sleep 5;redo}'

The program is a modification of ppg256-5, one that answers the questions that ppg256-5 generates. That’s not only clever; it showcases the expressive power of small programs and the many, if not arbitrary, uses to which a language generator can be put. This certainly earns the reward. Travis, here’s an base64-encoded version of a 32-byte DOS intro, matisse, by orbitaldecay. When you run it after decoding it with a base64 decoder, it should look like this. The base64-encoded string, you will notice, is exactly 50 characters in length:

sBPNEMUPHgeLFwmXQAEJVwFL4vSsQKq5ZQDkYEh16cM=

Okay, I lied. It’s only 44 characters long. Please accept base64 as the remaining part of the prize.

Now, I think Mark Markino’s explanation of ppg256, which I wrote about yesterday, is also great and will suffice. It’s a wide-ranging and deep study of the series of generators, similar programs I’ve discussed, and some relevant contexts of techneculture. I can’t really decide which of these explanations is best, as they both work excellently for what they are. So I am going to offer Mark Marino a 50-character generator, too. Mark, here is an ASCII encoding of a set of tools that, used properly, will allow you to draw any image:

())\_\_\_RED\_\_\_))\_> ())\_\_GREEN\_\_))\_> ())\_\_\_BLUE\_\_))\_>

Enjoy!

@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


IF Contests Everywhere

Hello from the People’s Republic of Interactive Fiction.

The TWIF Comp, a contest for interactive fiction with code of 140 characters or less, recently wrapped up. (We’re playing some of the games at the PR-IF meeting today.) Although it certainly had its in-joke aspects, the competition did bear amusing fruit, and it’s only one example of several recent competitions beyond the traditional big annual IF Comp. Given my interest in tiny literary systems, I certainly gave some thought to entering this one. However, I’ve pledged to spend all of my IF-writing time working on or in Curveship, and 140-character programs in the system weren’t at the top of my to-do list.

Before the TWIF Comp, there was the Jay Is Games interactive fiction competition, and after it there is the Second Annual MetaFilter Interactive Fiction Contest, which just started on Saturday. Those who read German will be delighted to know, if they don’t already, that the Grand Prix 2010 has just concluded. There’s also going to be an interactive fiction competition (for 30-minute-playtime games) at the Massachusetts demoparty @party. (Information will be posted on the site soon.) And Introcomp is gearing up: Interested parties should indicate their intention to enter by the end of the month. In case you’re new to online competitions, comps, or “compos” as they are sometimes called, these are not furious masculinist agons; they are mainly excuses for people to complete games and have them played by a bunch of people.

At the very least, you IF-interested parties should take a look at the games being proffered in recent contests – or, see if you want your IF to be part of one of these occasions.

Up Above Once Again

I’m back from a nice slice of summer in Sydney, Australia. I spoke at the University of New South Wales when I was there, gave two talks at the Powerhouse Museum in connection with their “The 80s Are Back” exhibit, and was one of the three judges of the Global Game Jam Sydney. The people who participated in that event did some incredible work – congratulations to all. Here’s some video of me, at the Powerhouse Museum, on interactive fiction and on indie and 80s videogames.

IGF Finalists Announced

The 2010 Independent Games Festival finalists have been announced. Especially interesting to me are the finalists and honorable mentions for the IGF Nuovo Award, an award intended to “honor abstract, shortform, and unconventional game development which advances the medium and the way we think about games.” My collaborator, Ian Bogost, has a game in the finals: A Slow Year, a suite of four 1k games for one of his, and my, favorite platforms … which means that he’ll be brining an Atari 2600 to GDC this year to display his wares.