Gram’s Fairy Tales: Manual & Grimoire

Taper, an online literary magazine published twice yearly, is now in its 12th issue. An independent editorial collective (Kyle Booten, Angela Chang, Kavi Duvvoori, Leonardo Flores, Helen Shewolfe Tseng, and Andy Wallace, for this issue) makes all the decisions about selections, themes for forthcoming issues, and so on, and also handles all communication with authors. They do all the work! Editors are allowed to submit works, in which case they recuse themselves from the collective’s discussion. I’m proud to be publisher of this magazine — although it’s really the editorial collective that makes it happen.

My “Gram’s Fairy Tales” was selected for this issue, with “Tools” as its theme!

A story grammar in a textarea (below) and a generated story about a heroic lily, a villainous droplet, and a chanterelle who helps the hero.

For those who haven’t visited Taper, when you do, you’ll find that the poems are computational and are no more than 2KB (2048 bytes) in size. (Issue #1 hosted 1KB poems and issue #3 had ones that were 3KB, but Goldilocks found the ideal constraint in 2KB.) Issue #12 features a lot of general-purpose programs that are true tools, textual or otherwise, as well as dynamic text generators that speak to the theme. In fact, the issue is our largest yet, with 32 selections.

To read what the author/programmers say about their work, in their statements, you generally have to “View Page Source” (or choose the similar option in your browser) and look at a comment at the top of each page, which is licensed as free (libre) software so you can make use of it in any way you like. However, given the theme of this issue, I wrote “Gram’s Fairy Tales” to not only give access to the underlying HTML5, but also to let people write grammars that can be placed in a text area and used to generate stories. Given this, I’m going to pull a bit from my “author statement,” found in complete form in the comments, and post it here. I’ll also provide three novel story grammars written by others: Jhave Jhonston (author of ReRites), Kyle Booten (author of Salon des Fantômes), and Kavi Duvvoori (author of Common Is That They).

Inspirations, InstructionsJhave’sKyle’sKavi’s

Two Inspiring Systems, and Instructions

As I developed “Gram’s Fairy Tales,” I was thinking about two remarkable story generation systems, very different ones, both quite simple.

One is the mid-1980s Story Machine, which I’ve known about for a while in its Commodore 64 incarnation. It is a strangely animistic system in which any entity can perform any transitive or intransitive action. While there are multimedia elements and some notion of state, it essentially develops narratives one independent sentence at a time.

The other is a system by Joseph Grimes, operational in Mexico City in 1963. Only one text from this story generator is documented. It seems to have produced stories based on a story grammar, with formalist structures. So, a hero would be challenged in some way and overcome the challenge. The one-page magazine article about the system suggested that it could be called “Grimes’s Fairy Tales.”

“Gram’s Fairy Tales” uses a simple grammar to generate stories. There are special “hero” and “villain” tokens, which always refer to the same two entities, selected from the “entity” rule. You don’t have a pool of good guys and bad guys; any entities are equally likely to be heroes and villains.

Beyond those special tokens, the other nonterminal tokens (the lowercase ones) expand according to rules, with each represented as one line in the text field.

The “|” indicates alternatives; these are split apart first.

The “+” indicates a conjunction of elements; all of those will appear.

Tokens keep getting expanded until eventually there is a run of text which in my example grammars are in all caps. These are “terminals,” and ends up being presented as is, without any further transformation.

Your grammar needs to begin with a “story” rule, and it should have “adj” and “entity” rules so a hero and villain can be determined. Anything else is up to you. Indeed, you don’t actually have to refer to a hero or villain.

My terminals are in all caps (making for an all-caps story) simply because it’s tricky to get the capitalization of sentences right. It would make things harder for those who want to edit the grammar and create their own stories, and the grammar is already a bit tricky.

Spaces have to be included properly at the beginning and ending of terminals, for instance, except for the terminals that come at the very end of stories.

Also, if you have entities or adjectives that begin with a vowel sound, you’ll end up with grammatical mistakes. The solution in this simple tool (or toy) — simply use adjectives and entities that all begin with consonant sounds!

To get an idea of how to write your own grammar, you may want to start with an extremely simple one, such as:

story>hero+ FOUGHT +villain+.|hero+ TOOK A NAP.
adj>CLEVER|STRONG
entity>FOX|CHICKEN

Jhave’s Grammar: A Harmonious Moment

Here’s a striking project by Jhave Johnston, who is my colleague at the University of Bergen Center for Digital Narrative and winner of the Robert Coover Award. You’ll notice that Jhave wrote his grammar to enable proper capitalization, despite the difficulty of that. Although the right side of the text is hidden, you can select it all and paste it into “Gram’s Fairy Tales” to see how it works.

story>intro+conclusion
intro>In the heart of +emotion+, +entities+ +verb+ in +concept+|Abiding as  +emotion+, +entities+ +verb+ in +concept+|Before +emotion+, +entities+ +verb+ in +concept+|Imperturbable in +emotion+, +entities+ +verb+ in +concept+|Serendipitous as +emotion+, +entities+ +verb+ in +concept+|Surrounded by  +emotion+, +entities+ +verb+ in +concept+|Amidst +emotion+, +entities+ +verb+ in +concept+|Beyond +emotion+, +entities+ +verb+ in +concept+
emotion>serenity|peace|tranquility|joyousness|tenderness|compassion|love|radiance|integrity
entities>entities_nature+ and +entities_tech
entities_nature>brooks|forest|cascade|swamp|torrent|ravines|refugees|stars|orchards|plateaus|tendrils|alleyways|groves|mountains|rivers|fields|meadows|ridges|oceans|orchards|moons|blossoms|nebulae|subduction trenches
entities_tech>LEDs|torrents|media|villains|dollar-stores|ditches|pop-ups|server-farms|antennae|antagonists|satellites|philosophies|trinkets|video-walls|entrails|exiles|synapses|heroes|plastics
verb>merged|thrived|replenished|enjoyed|trembled|reveried|prospered
concept>precon+conce
precon>harmony, |wisdom's light, |exuberance, |cohesion, |unity, |solidarity, |changelessness, |insight, 
conce>seeking mutual actualization|observing mutual transcendence|flourishing with supple realization|witnessing collective discovery|imploding within perfect revelation|imploding within effortless actualization|observing ripe achievement|listening to shared success
conclusion>.

A custom grammar generates “Surrounded by peace, blossoms and antennae merged in solidarity, listening to shared success.”

Kyle Booten’s Grammar: How to Compose an Ode

Kyle is a longtime member of the Taper editorial collective — since issue #5 in fall 2020! — and has long been working to have computer text generation provoke his own (and others’) writing. His grammar produces instructions for writing odes of different sorts, and is the most elaborate by far, clocking in at 70 lines, with several that are essentially comments or blank. Again, you can select all of these and paste them into “Gram’s” without trouble, although some of the text on the right side is obscured.

Pindar Horace Hordar 
(An Ode-Gym)
Kyle Booten


story>HOW TO WRITE AN ODE: +ode_type
ode_type>pindaric|pindaric|pindaric|pindaric|horatian|horatian|horatian|horatian|blended



PINDARIC

pindaric> (TURN) +strophe+ (COUNTERTURN) +antistrophe+ (STAND) +epode
strophe>IN A STANZA OF +p_lines+ +short_or_long+ +meter1+ LINES, ADOPTING A +style1+ TENOR, DESCRIBE +hero+, WITH PARTICULAR ATTENTION TO THE +p_feature+ OF +hero+.
meter1>DACTYLLIC|DACTYLLIC|DACTYLLIC|QUASI-AEOLIC|LOGAOEDIC
meter2>meter_adjust+ +meter1|TROCHAIC|IAMBIC
meter_adjust>NOT|ANYTHING BUT|ONLY IMPERFECTLY
p_lines>6|8|8|10|12
short_or_long>BRIEF|BRIEF|BRIEF|LENGTHY|LENGTHY|LENGTHY|ABSURDLY LONG
p_feature>LAUREL|ORDER|VIRTUE|LAW|DECREE|STRENGTH|CRIME|FATE
style1>SOLEMN|MYSTICAL|GNOMIC|JAGGED|SUBLIME|MORALISTIC|GOVERNMENTAL|MUSCULAR|LAUDATORY|REVERENT|JUBILANT
antistrophe>USING THE SAME STANZAIC STRUCTURE BUT NOW +style_or_mentioning+, CONTRAPOSE +hero+ WITH ITS INVERSE AND ENEMY, +villain+.
style_or_mentioning>style2|MENTIONING +p_trait
style2>ZANY|PIXELATED|EUPHORIC|REVERENT|BLOODTHIRSTY|STERN|RECURSIVE|VITUPERATIVE|BRUTALIST|PARANOID|ANGUISHED
p_trait>THE STATE|A GOD|A WAR|A SPORT|A MORAL|A VIRTUE|A CONQUEST|A VICTORY|A NATURAL DISASTER
epode>NOW, WITH +subtract+ FEWER LINES, AND THESE +ep_style+, IMAGINE HOW +hero+ SHALL +do_to_villain+ +villain+.
ep_style>meter2|style1|style2|short_or_long|short_or_long+ AND +meter2|style1+ AND +style2|style2+ AND +meter2
subtract>2|2|2|3|3|3|4|4|5
do_to_villain>OVERCOME|OVERCOME|OVERCOME|REFORM|BANISH|DEMOTE|CENSURE|STEAL FROM|WED|WOUND|BECOME


HORATIAN

horatian>IN +stanzas+ STANZAS, EACH OF 4 LINES, DESCRIBE +hero+, +gradient+.|IN +stanzas+ STANZAS, EACH OF 4 LINES, DESCRIBE +hero+, +gradient+. +extra+.
gradient>PROGRESSING GENTLY FROM+ +concept_statement|PROGRESSING GENTLY FROM+ +concept_statement+ AND SIMULTANEOUSLY FROM +concept_statement2
concept_statement>concept+ TO +concept2
concept>THE +cognizing+ OF THE +abstraction+ OF +object|THE +cognizing2+ OF THE +abstraction2+ OF +object
concept2>THE +cognizing2+ OF THE +abstraction+ OF +object|THE +cognizing+ OF THE +abstraction2+ OF +object2
concept_statement2>GREEN TO BLUE|BLUE TO GREEN|WEALTH TO POVERTY|MORNING TO NIGHT|RAIN TO SLEEP|YOUTH TO OLD AGE|FALL TO SPRING|WINTER TO SUMMER
abstraction>PAIN|SADNESS|LOSS|HUMOR|FRAILTY|YEARNING
abstraction2>LOSS|GROWTH|MERCY|HISTORY|TIMELESSNESS|MORTALITY
cognizing>AWARENESS|FORGIVENESS|HATRED|NON-AWARENESS|APPRECIATION|MISUNDERSTANDING|SYMPATHY
cognizing2>ACCEPTANCE|PERCEPTION|REGRETTING|UNDERSTANDING
object>hero|hero|hero|hero|LIFE IN GENERAL
object2>hero|hero|hero|hero|villain|LIFE IN GENERAL
stanzas>3|4|4|6|6|8|10
extra>REMARK IN THE +count_line+ LINE UPON +extra_object|prosody
extra_object>THE +h_feature+ OF +hero|WINE|WINE|WINE|A MORSEL|A MORSEL|A FRIEND
h_feature>FLAVOR|SIZE|TEXTURE|FAMILY|POSITION|TEMPERATURE|ECHO|INTERIOR|FORM|TEMPERAMENT|HONOR|HUE
count_line>1ST|rel_num|rel_num+ TO LAST
prosody>MIMIC +poet+'S METER
poet>SAPPHO|ALCAEUS
rel_num>2ND|3RD|4TH


BLENDED

blended>bl1|bl2|bl3|bl4|bl5|bl6
bl1>[STANZA 1: +pindaric_bit+] [STANZA 2: +pindaric_bit+] [STANZA 3: +horatian_bit+]
bl2>[STANZA 1: +pindaric_bit+] [STANZA 2: +horatian_bit+] [STANZA 3: +pindaric_bit+]
bl3>[STANZA 1: +horatian_bit+] [STANZA 2: +pindaric_bit+] [STANZA 3: +pindaric_bit+]
bl4>[STANZA 1: +pindaric_bit+] [STANZA 2: +horatian_bit+] [STANZA 3: +horatian_bit+]
bl5>[STANZA 1: +horatian_bit+] [STANZA 2: +horatian_bit+] [STANZA 3: +pindaric_bit+]
bl6>[STANZA 1: +horatian_bit+] [STANZA 2: +pindaric_bit+] [STANZA 3: +horatian_bit+]
pindaric_bit>meter1|meter2|short_or_long|style1|style1|style_or_mentioning|strophe|ep_style
horatian_bit>gradient|gradient|extra|extra_object|cognizing|cognizing2|concept_statement|concept|concept2|concept_statement2|prosody


adj>VINTAGE|COMMON|CIVIC|BROKEN|HONEYED|PAINTED|SACRED|HUNGRY|VERNAL|FLEETING
entity>VASE|FRIEND|DOVE|DEER|FRUIT|LAKE|HOUSE|GAME|TUNE|STORM|GLEN|KNOT|VEIL|WRIT

Kavi Duvvoori’s Most Grammatical Grammar

Kavi joined the editorial collective of Taper for this issue (#12) and has really put their shoulder to the wheel! They (like Jhave & Kyle) have been producing serious computer-generated texts and adjacent projects, of course with particular twists. Their grammar uses story elements (hero, villain) and does tell a story — but one about grammars.

story>theory+.|theory+. +coda+.
theory>A +academic+ +critiqued+ +hero+, +noting+ +villain+ IS +really+ A +metaphor+|+villain+ WAS +endorsed+ BY A +academic+ WITH +hero+ USED AS A +vessel+ TO CATCH THE +metaphor|+villain+ IS ITSELF +really+ +surface+, ESPECIALLY +hero+|+hero+ BY A +academic+ IS +villain+ THAT DESCRIBES, FINALLY, THE +metaphor+
coda>+villain+ +ofthis+ IS THE +metaphor+ PUT IN A +vessel+ BY +hero+reversal+|+villain+ +ofthis+ IS +hero+reversal+
ofthis>OF THIS STORY|IN OUR TALE|FOR OUR PURPOSES HERE
reversal> (OR DO I HAVE IT BACKWARDS?)| (WAS IT REALLY THAT +coda+?)|
response>+critiqued+ THE +problem+ IN|+endorsed+
critiqued>FOUND A GAP IN|DISPUTED|ELABORATED TO APORIA
endorsed>REINFORCED|ELABORATED ON|SHOWN TO NOT POSSESS THE ALLEGED +problem+
academic>linguist|+specialty+ +linguist+|SOCIOLOGIST OF THE +academic+
specialty>COMPUTATIONAL|CRITICAL|CREATIVE|HISTORICAL
linguist>POET|LINGUIST|PHILOLOGIST|LITERARY THEORIST
problem>LACK OF RIGOUR|IDEALISM|CONTRADICTIONS|PROBLEMS
noting>NOTING THAT|SHOWING HOW|FOR
really>REALLY|IN FACT|IN TRUTH
metaphor>image+ ON +surface|churn+ +metaphor
image>SHADOW|REFLECTION|PICTURE
vessel>NET|SIEVE|DISPLAY CASE
churn>SHIFTING|FLOWING|CHURNING
surface>A BUILDING'S WALL|A PAGE|SKIN|+churn+ +flow
flow>CURRENTS|WATER|LEAVES|WIND|MUD
adj>CHOMSKYAN|PANINIAN|MOSTLY ADELE GOLDBERG-INSPIRED|PRIMARILY IRENE HEIM-DERIVED|MONTAGUE|LAKOFFIAN|CHARLES SANDERS PIERCE-ROOTED
entity>GRAMMAR|MODEL|LOGIC|FORMALISM

“A FORMALISM IS ITSELF IN TRUTH A PAGE, ESPECIALLY A LAKOFFIAN MODEL.” Plus a grammar.

Poetix

February 14 is Valentine’s Day for many; this year, it’s also Ash Wednesday for Western Christians, both Orthodox and unorthodox. Universally, it is Harry Mathews’s birthday. Harry, who would have been 94 today, was an amazing experimental writer. He’s known to many as the first American to join the Oulipo.

Given the occasion, I thought I’d write a blog post, which I do very rarely these days, to discuss my poetics — or, because mine is a poetics of concision, my “poetix.” Using that word saves one byte. The term may also suggest an underground poetix, as with comix, and this is great.

Why write poems of any sort?

Personally, I’m an explorer of language, using constraint, form, and computation to make poems that surface aspects of language. As unusual qualities emerge, everything that language is entangled with also rises up: Wars, invasions, colonialism, commerce and other sorts of exchange between language communities, and the development of specialized vocabularies, for instance.

While other poets have very different answers, which very often include personal expression, this is mine. Even if I’m an unusual conceptualist, and more specifically a computationalist, I believe my poetics have aspects that are widely shared by others. I’m still interested in composing poems that give readers pleasure, for instance, and that awaken new thoughts and feelings.

Why write computational poems?

Computation, along with language, is an essential medium of my art. Just as painters work with paint, I work with computation.

This allows me to investigate the intersection of computing, language, and poetry, much as composing poems allows me to explore language.

Why write tiny computational poems?

Often, although not always, I write small poems. I’ve even organized my computational poetry page by size.

Writing very small-scale computational poems allows me to learn more about computing and its intersection with language and poetry. Not computing in the abstract, but computing as embodied in particular platforms, which are intentionally designed and have platform imaginaries and communities of use and practice surrounding them.

For instance, consider the modern-day Web browser. Browsers can do pretty much anything that computers can. They’re general-purpose computing platforms and can run Unity games, mine Bitcoin, present climate change models, incorporate the effects of Bitcoin mining into climate change models, and so on and so on. But it takes a lot of code for browsers to do complex things. By paring down the code, limiting myself to using only a tiny bit, I’m working to see what is most native for the browser, what this computational platform can most **essentially* accomplish.

Is the browser best suited to let us configure a linked universe of documents? It’s easy to hook pages together, yes, although now, social media sites prohibit linking outside their walled gardens. Does it support prose better than anything else, even as flashy images and videos assail us? Well, the Web is predisposed to that: One essential HTML element is the paragraph, after all. When boiled down as much as possible, there might be something else that HTML5 and the browser is really equipped to accomplish. What if one of the browser’s most essential capabilities is that of … a poetry machine?

One can ask the same questions of other platforms. I co-authored a book about the Atari VCS (aka Atari 2600), and while one can develop all sorts of things for it (a BASIC interpreter, artgames, demos, etc.), and I think it’s an amazing platform for creative computing, I’m pretty sure it’s not inherently a poetry machine. The Atari VCS doesn’t even have built-in characters, a font in which to display text. On the other hand, the Commodore 64 allows programmers to easily manipulate characters; change the colors of them individually; make them move around the screen; replace the built-in font with one of their own; and mix letters, numbers, and punctuation with an set of other glyphs specific to Commodore. This system can do lots of other things — it’s a great music machine, for instance. But visual poetry, with potentially characters presented on a grid, is also a core capability of the platform, and very tiny programs can enact such poetry.

I’ve written at greater length about this in “A Platform Poetics / Computational Art, Material and Formal Specificities, and 101 BASIC POEMS.” In that article, I focus on a specific, ongoing project that involves the Commodore 64 and Apple II. More generally, these are the reasons I continue to pursue to composition of very small computational poems on several different platforms.

A 6 byte Commodore 64 Demo

What if I told you ... 7e 00 8d 20 d0 50 is a Commodore 64 demo

If you thought my last post about a 32 byte (plus 2 byte load address) Commodore 64 demo was esoteric, wait until you burrow into this one.

Back in March at Lovebyte I released a C64 demo that is a total of 6 bytes. I contrived this one so that the 4b of code ends up overwriting part of a zero-page routine that runs every time RETURN is pressed. The effect is a pulsing pattern on the border. (You can just as easily make the screen pulse, which I personally find less aesthetically pleasing because the pulsing in that case happens over any text that is on the screen. It’s also a bit more eye watering and more likely to trigger seizures.) While it’s a very simple effect, I don’t know of any demo at all for this platform that has this file size or any smaller one. Some extensive trickery was involved in injecting my code into existing memory contents to produce this effect.

You can download the demo, NONMONOCHROME.

For my several readers who enjoy reading 6502 assembly, here’s what I did:

; NONMONOCHROME
; 6b C64 demo (2b header + 4b)
; by nom de nom/TROPE

; RETURN to begin.
;
; This demo loops about every 1.45 seconds (on an NTSC
; machine).
;
; Holding down a key while this runs will produce an extra
; effect.
;
; RUN STOP - RESTORE will stop the program, but as soon as
; RETURN is pressed the demo will just start again. To
; restore normal function, it's necessary to power-cycle
; the C64.

.outfile    "nonmonochrome"

.word $007e  ; Wedge the code into CHRGET on the zero page.
.org  $007e  ; Note that CHRGET itself begins at $0073.

sta $d020    ; Set the border color with whatever's in the
; accumulator. The value varies as the code from $73
; through $7e runs. It oscillates between black and white
; for one phase and colorful for another phase. A detailed
; explanation of why is provided below.

.byte $50    ; This makes the next instruction bvc, clobbering
; $20. The following value in memory, $f0, had been used as
; beq. $50 $f0 = bvc $73, which (infinitely) takes us back to
; the beginning of CHRGET at $0073.

; A disassembly of CHRGET, left, and how it's been modified,
; right:
;
; .org  $0073                 .org  $0073
;
; chrget   inc txtptr         nonmono  inc txtptr
;          bne chrgot                  bne chrgot
;          inc txtptr+1                inc txtptr+1
; chrgot   lda                chrgot   lda
; txtptr   .word $0207        txtptr   .word $0207
; pointb   cmp #$3a                    cmp #$3a
;          bcs exit                    sta $d020
;          cmp #$20                    bvc nonmono
;          beq chrget
;          sec
;          sbc #$30
;          sec
;          sbc #$d0
; exit     rts

; CHRGET keeps increasing TXTPTR until it reaches the end of
; whatever BASIC input it's reading -- whether in immediate
; mode or when reading a BASIC program.
;
; NONMONO, however, loops forever and keeps increasing TXTPTR
; until it overflows past $ffff back to $0000.
;
; Because of the LDA TXTPTR, the accumulator is being
; consecutively loaded with each of the bytes in the C64's
; 64kb of accessible RAM and ROM. Then, after the CMP
; (which does nothing but slow the demo down by two cycles
; per loop), the contents of the accumulator are stored
; so as to set the border color.
;
; A large region of the C64's memory has $0 or $1 as the
; low nibble -- at least at power on, with no BASIC program
; loaded. Thus, black or white. Then, another large region
; (including ROM and the zeropage) has more "interesting"
; contents which manifest themselves as colors.

My demo was also taken up as an object of discussion in the first 7 minutes and 30 seconds of this YouTube video, where some of this explanation is provided as the demo runs on a C64c. This a later model of the Commodore 64, not the system I used in testing it, so the pulsing effect is slightly different. Among other things, my name for the demo, NONMONOCHROME, makes less sense when it’s running on this computer!

It could be an interesting challenge for others to try writing a Commodore 64 demo of only 6 bytes total, or of fewer bytes. For reasons I’d be glad to discuss, it seems to me that injecting the code into some productive context (an existing routine such as CHRGET or elsewhere in memory) is the only workable approach.

C64 Coding Under (Many) Constraints

Screenshot from Tyger Tyger; black and white border, scattering of orange and black characters on blue

Yesterday I wrote a little demoscene production, an intro, called “Tyger Tyger.” It’s a Commodore 64 machine language program with 32 bytes of code and the requisite 2 byte header, found on all C64 PRG files. It only garnered third place out of five entries in the 256b compos at @party 2021, behind two impressive entries that were for a different platform (DOS) and went to the limit of allowable code (eight times as much).

I wrote this intro under a formal constraint (32 bytes of machine language code) and several process constraints. Specifically, I wrote it all yesterday, mostly on a Amtrak train, finishing up the sound once I got to the party itself in Somverville. I also exclusively used a hardware Commodore 64 running Turbo Macro Pro v1.2, rather than cross-assembling the code on a contemporary computer and testing it on an emulator. To be specific, I used an unofficial hardware version of the Commodore 64 called the Ultimate 64, which is a modern FPGA implementation of Commodore’s hardware—not, however, an emulator. I placed a SID chip (a 6581) in the machine, so the only analog component that would otherwise need to be emulated was an authentic original.

Writing the code exclusively on the train provided me with some additional challenges, because the power kept cutting out and my system (which has to be plugged into AC power) shut off each time.

I’d never used any version of Turbo Macro Pro before, neither the C64 assembler nor TMPx, the cross-assembler. I figured out the basics of how to use the editor and learned the syntax the assembler used. It’s quite an excellent piece of software—thanks, Style!

And tremendous thanks to Dr. Claw, who put on a safe, responsible, demoparty—masks required when not eating, full vaccination required for all. It was a tiny one, yes, but it was a party! The event continues the important social and artistic traditions of the North American demoscene.

Golem and My Other Seven Computer-Generated Books in Print

Dead Alive Press has just published my Golem, much to my delight, and I am launching the book tonight in a few minutes at WordHack, a monthly event run by the NYC community gallery Babycastles.

This seems like a great time to credit the editors and presses I have worked with to publish several of these books, and to let you all know where they can be purchased, should you wish to indulge yourselves:

  • Golem, 2021, Dead Alive’s New Sight series. Thank you, Augusto Corvalan!
  • Hard West Turn, 2018, published by my Bad Quarto thanks to John Jenkins’s work on the Espresso Book Machine at the MIT Press Bookstore.
  • The Truelist, 2017, Counterpath. This book was the first in the Using Electricity series which I edit, and was selected and edited by Tim Roberts—thanks! Both Counterpath publications and my book from Les Figues are distributed by the nonprofit Small Press Distribution.
  • Autopia, 2016, Troll Thread. Thank you, Holly Melgard!
  • 2×6, 2016, Les Figues. This book is a collaboration between me and six others: Serge Bouchardon, Andrew Campana, Natalia Fedorova, Carlos León, Aleksandra Ma?ecka, and Piotr Marecki. Thank you, Teresa Carmody!
  • Megawatt, 2014, published by my Bad Quarto thanks to Jeff Mayersohn’s Espresso Book Machine at the Harvard Book Store.
  • #!, 2014, Counterpath. Thank you, Tim Roberts!
  • World Clock, 2013, published by my Bad Quarto thanks to Jeff Mayersohn’s Espresso Book Machine at the Harvard Book Store.

The code and text to these books are generally free, and can be found on nickm.com, my site. They are presented in print for the enjoyment of those who appreciate book objects, of course!

Generative Unfoldings, Opening April 1, 2021

Generative Unfoldings, 14 images from 14 generative artworks

Generative Unfoldings is an online exhibit of generative art that I’ve curated. The artworks run live in the browser and are entirely free/libre/open-source software. Sarah Rosalena Brady, D. Fox Harrell, Lauren Lee McCarthy, and Parag K. Mital worked with me to select fourteen artworks. The show features:

  • Can the Subaltern Speak? by Behnaz Farahi
  • Concrete by Matt DesLauriers
  • Curse of Dimensionality by Philipp Schmitt
  • Gender Generator by Encoder Rat Decoder Rat
  • Greed by Maja Kalogera
  • Hexells by Alexander Mordvintsev
  • Letter from C by Cho Hye Min
  • Pac Tracer by Andy Wallace
  • P.S.A.A. by Juan Manuel Escalante
  • Seedlings_: From Humus by Qianxun Chen & Mariana Roa Oliva
  • Self Doubting System by Lee Tusman
  • Someone Tell the Boyz by Arwa Mboya
  • Songlines by Ágoston Nagy
  • This Indignant Page: The Politics of the Paratextual by Karen ann Donnachie & Andy Simionato

There is a (Screen) manifestation of Generative Unfoldings, which lets people run the artworks in their browsers. In addition, a (Code) manifestation provides a repository of all of the free/libre/open-source source code for these client-side artworks. This exhibit is a project of MIT’s CAST (Center for Art, Science & Technology) and part of the Unfolding Intelligence symposium. The opening, remember, is April 1, 2021! See the symposium page, where you can register (at no cost) and find information about joining us.

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!

Concise Computational Literature is Now Online in Taper

I’m pleased to announce the release of the first issue of Taper, along with the call for works for issue #2.

Taper is a DIY literary magazine that hosts very short computational literary works — in the first issue, sonic, visual, animated, and generated poetry that is no more than 1KB, excluding comments and the standard header that all pages share. In the second issue, this constraint will be relaxed to 2KB.

The first issue has nine poems by six authors, which were selected by an editorial collective of four. Here is how this work looked when showcased today at our exhibit in the Trope Tank:

Weights and Measures and for the pool players at the Golden Shovel, Lillian Yvonne-Bertram
“Weights and Measures” and “for the pool players at the Golden Shovel,” Lillian Yvonne-Bertram

193 and ArcMaze, Sebastian Bartlett
“193” and “ArcMaze,” Sebastian Bartlett

Alpha Riddims, Pierre Tchetgen and Rise, Angela Chang
“Alpha Riddims,” Pierre Tchetgen and “Rise,” Angela Chang

US and Field, Nick Montfort
“US” and “Field,” Nick Montfort

God, Milton Läufer
“God,” Milton Läufer

This issue is tiny in size and contains only a small number of projects, but we think they are of very high quality and interestingly diverse. This first issue of Taper also lays the groundwork for fairly easy production of future issues.

The next issue will have two new editorial collective members, but not me, as I focus on my role as publisher of this magazine though my very small press, Bad Quarto.

Using Electricity readings, with video of one

I’m writing now from the middle of a four-city book tour which I’m on with Rafael Pérez y Pérez and Allison Parrish – we are the first three author/programmers to develop books (The Truelist, Mexica, and Articulations) in this Counterpath series, Using Electricity.

I’m taking the time now to post a link to video of a short reading that Allison and I did at the MLA Convention, from exactly a month ago. If you can’t join us at an upcoming reading (MIT Press Bookstore, 2018-02-06 6pm or Babycastles in NYC, 2018-02-07 7pm) and have 10 minutes, the video provides an introduction to two of the three projects.

Rafael wasn’t able to join us then; we are very glad he’s here from Mexico City with us this week, and has read with us in Philadelphia and Providence so far!

Author Function

The exhibit Author Function, featuring computer-generated literary art in print, is now up in MIT’s Rotch Library (77 Mass Ave, Building 7, 2nd Floor) and in my lab/studio, The Trope Tank (Room 14N-233, in building 14, the same building that houses the Hayden Library). Please contact me by email if you are interested in seeing the materials in the Trope Tank, as this part of the exhibit is accessible by appointment only.

There are three events associated with the exhibit happening in Cambridge, Mass:

February 7, 6pm-7pm, a reading and signing at the MIT Press bookstore. Nick Montfort, Rafael Pérez y Pérez, and Allison Parrish.

March 5, 4:30pm-6pm, a reception at the main part of the exhibit in the Rotch Library.

March 5, 7pm-8pm, a reading and signing at the Harvard Book Store. John Cayley, Liza Daly, Nick Montfort, and Allison Parrish.

In addition to a shelf of computer-generated books that is available for perusal, by appointment, in the Trope Tank, the following items of printed matter are displayed in the exhibit:

  • 2×6, Nick Montfort, Serge Bouchardon, Andrew Campana, Natalia Fedorova, Carlos León, Aleksandra Ma?ecka, and Piotr Marecki
  • A Slow Year: Game Poems, Ian Bogost
  • Action Score Generator, Nathan Walker
  • American Psycho, Mimi Cabell and Jason Huff
  • Anarchy, John Cage
  • Articulations, Allison Parrish
  • Autopia, Nick Montfort
  • Brute Force Manifesto: The Catalog of All Truth, Version 1.1, Series AAA-1, Vol 01, Brian James
  • Clear Skies All Week, Alison Knowles
  • Firmy, Piotr Puldzian P?ucienniczak
  • for the sleepers in that quiet earth., Sofian Audry
  • From the Library of Babel: Axaxaxas Mlo – The Combed Thunderclap LXUM,LKWC – MCV – The Plaster Cramp, Christian Bök
  • Generation[s], J.R. Carpenter
  • Google Volume 1, King Zog
  • How It Is In Common Tongues, Daniel C. Howe and John Cayley
  • Incandescent Beautifuls, Erica T. Carter [Jim Carpenter]
  • Irritant, Darby Larson
  • Love Letters, Letterpress Broadside, Output by a reimplementation of a program by Christopher Strachey
  • Mexica: 20 Years – 20 Stories / 20 años – 20 historias, Rafael Pérez y Pérez
  • My Buttons Are Blue: And Other Love Poems From the Digital Heart of an Electronic Computer, A Color Computer
  • My Molly [Departed], Talan Memmott
  • no people, Katie Rose Pipkin
  • Phaedrus Pron, Paul Chan
  • Puniverse, Volumes 32 and 38 of 57, Stephen Reid McLaughlin
  • Re-Writing Freud, Simon Morris
  • Seraphs, Liza Daly
  • The Appearances of the Letters of the Hollywood Sign in Increasing Amounts of Smog and at a Distance, Poster, David Gissen
  • The Poiceman’s Beard is Half Constructed: Computer prose and poetry by Racter
  • The Truelist, Nick Montfort
  • Tristano, Nanni Balestrini
  • Written Images, Eds. Matrin Fuchs and Peter Bichsel

Here are some photos documenting the exhibit:

Author Function Rotch main display case

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Author Function book displays and gallery walls

Salon 256 on May 1

SALON 256 is a forum for presentation and discussion of very small creative computer programs. Such programs have featured in digital art and poetry, electronic literature, computer music, and the demoscene.

YOU are invited to present a tiny program of yours:

Monday May 1 . 5pm-7pm . MIT’s 14E-304

Presenters already confirmed:

  • Mike “Dr.Claw” Piantedosi
  • Angela Chang
  • Sofian Audry
  • Nick Montfort
  • Chris Kerich
  • Willy Wu
  • Henry Lieberman
  • Doug Orleans

Programs in an interpreted language are fine, as long as the code is 256 bytes or less; compiled programs with an executable file of 256b or less are fine, too.

Building 14 also holds the Hayden Library and is not Building E14.
If you’d like to present, leave a comment or sign up at the event.

A Purple Blurb / The Trope Tank production.

Happy New Year 2017

My New Year’s poem for 2017 is Colors, a 1KB Web page, online at http://nickm.com/poems/colors.html and here it is, too:

<!DOCTYPE html>
<html style="overflow:hidden">
<head><meta charset=utf-8>
<!-- Copyright (c) 2016 Nick Montfort <nickm@nickm.com>   2016-12-31, 1KB

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without any warranty.

Click pauses, Add ?00f000 or similar to URL for the specified color.-->
<script type=text/javascript>
var c = 0, i;
function up() {
 if (c > 16581375) { c = 0; }
 document.body.style.background = "#"+("00000"+c.toString(16)).slice(-6);
 c += 1;
}
function pause(e) {
 if (i) { clearInterval(i); i = 0; } else { go(); }
}
function init() {
 var s = window.location.search;
 if (s.slice(0, 1) === '?') { c = parseInt(unescape(s.slice(1)), 16); }
 go();
}
function go() { i = window.setInterval(up, 5); };
</script>
<title>Colors</title></head>
<body onload=init() onmousedown=pause(event)>
<div style="width:100vw; height:100vh"></div>
</body>
</html>

As the code says, you can add an argument in the URL to start with a particular color, such as medium gray:

http://nickm.com/poems/colors.html?808080

Click to stop on a particular color that you especially like. Click again to continue moving through the colors. If you let it run, you’ll see all 16581375 colors in just over 23 hours.

Happy new year.

Language Hacking at SXSW Interactive

We had a great panel at SXSW Interactive on March 11, exploring several radical ways in which langauge and computing are intersecting. It was “Hacking Language: Bots, IF and Esolangs.” I moderated; the main speakers were Allison Parrish a.k.a. @aparrish; Daniel Temkin
DBA @rottytooth; and Emily Short, alias @emshort.

I kicked things off by showing some simple combinatorial text generators, including the modifiable “Stochastic Texts” from my Memory Slam reimplementation and my super-simple startup name generator, Upstart. No slides from me, just links and a bit of quick modification to show how easily one can work with literary langauge and a Web generator.

Allison Parrish, top bot maker, spoke about how the most interesting Twitter bots, rather than beign spammy and harmful or full of delightful utility, are enacing a critique of the banal corporate system that Twitter has carefully been shaped into by its makers (and compliant users). Allison showed her and other’s work; The theoretical basis for her discussion was Iain Borden’s “Another Pavement, Another Beach: Skateboarding and the Performative Critique of Architecture.” Read over Allison’s slides (with notes) to see the argument as she makes it:

Twitter Bots and the Performative Critique of Procedural Writing

Daniel Temkin introduced the group to esoteric programming languages, including several that he created and a few classics. He brought copies of a chapbook for people in the audience, too. We got a view of this programming-language creation activity generally – why people devise these projects, what they tell us about computing, and what they tell us about language – and learned some about Temkin’s own practice as an esolang developer. Take a look at Daniel’s slides and notes for the devious details:

Esolangs: A Guide to "Useless" Programming Languages

Finally, interactive fiction author Emily Short reviewed some of the classic problems of interactive fiction and how consideration has moved from the level of naïve physics to models of the social worlds – again, with reference to her own IF development and that of others. One example she presented early on was the challenge of responding to the IF command “look at my feet.” Although my first interactive fiction, Winchester’s Nightmare (1999) was not very remarkable generally, I’m pleased to note that it does at least offer a reasonable reply to this command:

Winchester's Nightmare excerpt

That was done by creating numerous objects of class “BodyPart” (or some similar name) which just generate error messages. Not sure if it was a tremendous breakthrough. But I think there is something to the idea of gently encouraging the interactor to o play within particular boundaries.

Emily’s slides (offering many other insights) may be posted in a bit – she is still traveling. I’ll link them here, if so.

Update! Emily’s slides are now online — please take a look.

I had a trio of questions for each pair of presenters, and we had time for questions from the audience, too. The three main presenters each had really great, compact presentations that gave a critical survey of these insurgent areas, and we managed to see a bit of how they speak to each other, too. This session, and getting to talk with these three during and outside of it, certainly made SXSW Interactive worth the trip for me.

There’s an audio recording of the event that’s available, too.

NaNoGenMo 2014: A Look Back & Back

There were so many excellent novel generators, and generated novels, last month for NaNaGenMo (National Novel Generation Month).

I thought a lot of them related to and carried on the work of wonderful existing literary projects — usually in the form of existing books. And this is in no way a backhanded complement. My own NaNoGenMo entry was the most rooted in an existing novel; I simply computationally re-implemented Samuel Beckett’s novel Watt (or at least the parts of it that were most illegible and computational), in my novel generator Megawatt (its PDF output is also available). For good measure, Megawatt is completely deterministic; although someone might choose to modify it and generate different things, as it stands it generates exactly one novel. So, for me to say that I was reminded of a great book when I saw a particular generator is pure praise.

Early in month, Liza Daly’s Seraphs set a high standard and must have discouraged many offhand generators! Liza’s generator seeks images and randomizes text to produce a lengthy book that is like the Voynich Manuscript, and certainly also like the Codex Seraphinianus.

Allison Parrish’s I Waded in Clear Water is a novel based on dream interpretations. Of course, it reminds me of 10,000 Dreams Interpreted (and I am pleased, thanks to my students from long ago, to have the leading site on the Web for that famous book) but it also reminds me of footnote-heavy novels such as Infinite Jest. Let me note that a Twine game has already been written based on this work: Fowl are Foul, by Jacqueline Lott.

I found Zarkonnen’s Moebius Tentacle; Or the Space-Octopus oddly compelling. It was created by simple substitution of strings from Moby-Dick (one novel it clearly reminded me of), freeing the story to be about the pursuit of an octopus by space amazons. It wasn’t as polished as I would have liked (just a text file for output), and didn’t render text flawlessly, but still, the result was amazing. Consider how the near-final text presents the (transformed) Tashtego in his final tumult:

A sky-hawk that
tauntingly had followed the main-truck downwards from its unnatural home
among the stars, pecking at the flag, and incommoding Lazerbot-9 there;
this spacebat now chanced to intercept its broad fluttering wing between the
hammer and the plasteel; and simultaneously feeling that etherial thrill,
the submerged robot beneath, in her death-gasp, kept her hammer frozen
there; and so the spacebat of heaven, with archangelic shrieks, and her
imperial beak thrust upwards, and her whole captive form folded in the
flag of Vixena, went away with her spaceship, which, like Satan, would not sink
to transwarp till she had dragged a living part of heaven along with her, and
helmeted herself with it.

Sean Barrett wrote two beautiful generators (at least) – the first of which was How Hannah Solved The Twelve-Disk Tower of Hanoi. Deliberate, progressing, intelligent, and keeping the reader on the edge of her seat – this one is great. But, that generator (drafted by November 9) wasn’t enough, and Barrett also contributed (only a day late) The Basketball Game, an opera generator that provides a score (with lyrics) and MIDI files. It’s as if “I got Philip Glass!” indicates that one is rebounding.

Eric Stayton’s I Sing Of takes the beginning of the Aeneid as grist, moving through alternate invocations using WordNet. I like the way different epics are invoked by the slight changes, and was reminded of Calvino’s If on a winter’s night a traveler.

Sam Coppini’s D’ksuban Dictionary, although also just a text file, is a simple but effective generator of a fictional language’s dictionary. Less like the Devil’s Dictionary, more like the (apparently unpublished) lexicon of Earth: Final Conflict. I’m sure literary works in D’ksuban will be forthcoming soon.

Ben Kybartas’s Something, Somewhere is wonderfully spare and evocative – more Madsen than Hemingway.

Finally, Thricedotted’s The Seeker is an extraordinary concrete novel in the tradition of Raymond Federman’s Double or Nothing. The text, based on wikiHow, is good and serves well to define a protagonist who always wishes to do right, but the typographical framework is really excellent.

These are just a few comments before NaNoGenMo goes as stale as a late-December pumpkin. I hope you enjoy tis work and other work that was done last month, and that you keep an eye peeled for further novel generators – next November and throughout the year.

Renderings (phase 1) Published

For the past six months I’ve been working with six collaborators,

– Patsy Baudoin
– Andrew Campana
– Qianxun (Sally) Chen
– Aleksandra Małecka
– Piotr Marecki
– Erik Stayton

To translate e-lit, and for the most part computational literature works such as poetry generators, into English from other languages.

Cura: The Renderings project, phase 1

After a great deal of work that extends from searching for other-langauge pieces, through technical and computing development that includes porting, and also extends into the more usual issues assocaited with literary translation, the first phase of the Renderings project (13 works translated from 6 languages) has just been published in Fordham University’s literary journal, Cura.

Please take a look and spread the word. Those of us rooted in English do not have much opportunity to experience the world-wide computational work with langague that is happening. Our project is an attempt to rectify that.

World Clock Punches in on The Verge

Some kind comments about World Clock and NaNoGenMo in the article “The Strange World of Computer-Generated Novels” by Josh Dzieza.

Nick Montfort’s World Clock was the breakout hit of last year. A poet and professor of digital media at MIT, Montfort used 165 lines of Python code to arrange a new sequence of characters, locations, and actions for each minute in a day. He gave readings, and the book was later printed by the Harvard Book Store’s press. Still, Kazemi says reading an entire generated novel is more a feat of endurance than a testament to the quality of the story, which tends to be choppy, flat, or incoherent by the standards of human writing.

“Even Nick expects you to maybe read a chapter of it or flip to a random page,” Kazemi says.

There were many great generated novels last year, and are already many great ones this year. I don’t think among this abundance that World Clock is a very good poster boy for NaNoGenMo. Still, my experience with the book does make a strong case for having your generated novel translated in (or originally written in) Polish.

#! in San Antonio Fri 11/21 – #! in Austin Sat 11/22

I’m doing two Central Texas readings from my book of programs and poems #! this weekend:


San Antonio: The Twig Book Shop

Friday, Nov 21 at 5pm
The Twig Book Shop
in The Pearl (306 Pearl Parkway, Suite 106)


Austin: Monkeywrench Books

Saturday, Nov 22 at 4pm
Monkeywrench Books
(110 N Loop Blvd E)


#! (pronounced “shebang”) consists of poetic texts that are presented alongside the short computer programs that generated them. The poems, in new and existing forms, are inquiries into the features that make poetry recognizable as such, into code and computation, into ellipsis, and into the alphabet. Computer-generated poems have been composed by Brion Gysin and Ian Sommerville, Alison Knowles and James Tenney, Hugh Kenner and Joseph P. O’Rourke, Charles O. Hartman, and others. The works in #! engage with this tradition of more than 50 years and with constrained and conceptual writing. The book’s source code is also offered as free software. All of the text-generating code is presented so that it, too, can be read; it is all also made freely available for use in anyone’s future poetic projects.

Nick Montfort’s digital writing projects include Sea and Spar Between (with Stephanie Strickland) and The Deletionist (with Amaranth Borsuk and Jesper Juul). He developed the interactive fiction system Curveship and (with international collaborators) the large-scale story generation system Slant; was part of the group blog Grand Text Auto; wrote Ream, a 500-page poem, on a single day; organized Mystery House Taken Over, a collaborative “occupation” of a classic game; wrote Implementation, a novel on stickers, with Scott Rettberg; and wrote and programmed the interactive fictions Winchester’s Nightmare, Ad Verbum, and Book and Volume.

Montfort wrote the book of poems Riddle & Bind and co-wrote 2002: A Palindrome Story with Willliam Gillespie. The MIT Press has published four of Montfort’s collaborative and individually-authored books: The New Media Reader, Twisty Little Passages, Racing the Beam, and most recently 10 PRINT CHR$(205.5+RND(1)); : GOTO 10, a collaboration with nine other authors that Montfort organized. He is faculty advisor for the Electronic Literature Organization, whose Electronic Literature Collection Volume 1 he co-edited, and is associate professor of digital media at MIT.

#!Nick Montfort