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.

The Engagements of Difference Machines

Insufficent Memory with two viewers/readers behind the hanging photos

It’s been a while since I stopped over in Buffalo, but I’m finally unfrozen, and I’m unfreezing my blog, too, to comment a bit on the exhibit I saw — this was the purpose of my brief wintry sojourn — Difference Machines: Technology and Identity in Contemporary Art at the Albright-Knox Northland. I visited the show with my spouse, Flourish; Tina Rivers Ryan (who curated the exhibit with Paul Vanouse) was kind enough to give us a big chunk of her day and provide a detailed tour.

When we speak of “identity,” we speak of difference. This is true whether we are philosophers like John Perry, who has interrogated what it is that makes objects identical to one another, or are focused on the social world. The works in Difference Machines explore how, in the context of computer and network technologies, people’s identities persist, rather than being erased as some imagined would have happened. This means that some can be grouped together and identified in stereotypical, harmful, even lethal ways — but there are also glimpses of how, more positively, people can identify with one another.

I got to see Difference Machines just before it closed on January 16, so I have to settle for telling you about what you missed. One of the more remarkable aspects of the exhibit is that it was light-flooded and in a space where sound could call out invitingly from some of the pieces without derailing one’s experience of artworks nearby. While I would exhaust myself (and you, dear reader) were I to try to thoroughly review the show and relate much of what was so compelling about it, I’ll at least write some about three of the works in it, to give an idea of what machines were running and how they engaged with shared themes.

Many of the artworks spoke against the concept of a flattened, egalitarian cyberspace (metaverse?), but the photos and texts by Sean Fader in his 2020 Insufficient Memory go beyond this. They document hate crimes against LGBTQ+ people, including many murders and instances where people have been provoked to kill themselves. As a viewer approaches, the low-res photos, taken on a very early consumer digital camera, have a beauty that inheres in the often natural scenes, is intensified by how they are framed, and becomes even more compelling because of the lossy, “cool” (McLuhan’s term) nature of these highly compressed images. Walking around to the back, the viewer, become reader, discovers how each photo is the scene of a brutal crime. The victims did not find positive community through common identity; they were marked as different and in most cases directly killed because of their difference.

‘Ye or Nay at Difference Machines, two computers set up with the game
‘Ye or Nay, A.M. Darky, 2020 (Photo by Tina Rivers Ryan)

To given an idea of the range of this show, turn to ‘Ye or Nay by A.M. Darky (2020). This artwork is a game for two that invites a chat as each player tries to pick out the card that is showing on the other’s screen. It’s not some antigame or disorientation machine, but an actual fun game with a compelling soundtrack, graphics, and interface. (Go play it online!) The cards all display portraits of Black male celebrities. Part of the concept is that some will be better equipped to play this game for various reasons — they will have a more extensive vocabulary to describe the hairstyles shown, for instance, or they will know more about who was born where. The game/artwork playfully tickles players to consider what they’re able to articulate (or not). My only critique is that the piece is already showing its age in one minor way: The apostrophe at the beginning should now be removed!

Level of Confidence’s face-recognition software finds a match for Flourish
Level of Confidence, Rafael Lozano-Hemmer, 2015 (Photo by Tina Rivers Ryan)

The last piece I’ll turn to is by a well-known digital media artist, Rafael Lozano-Hemmer. His Level of Confidence (2015) is a free and open source software project in which biometric software matches the face of the viewer (also the viewed, in this case) to one of 43 students who were kidnapped from the Ayotzinapa normalista school in Iguala, Guerrero, Mexico. The project memorializes this event and exposes the working of a face-recognition system which, it seems, is doomed to never make a match. As I read the piece, though, this artwork also uses computer technology to present the viewer with someone who looks like them, making the connection to this kidnapping more personal and acute. This does not result in some sort of naïve empathy machine. A museum visitor in Buffalo is not likely to suddenly feel, “ah! It could have been me being kidnapped!” But the piece is also not purely a slam on surveillance technology, as I see it. The face-recognition system that is central to this interactive artwork is used to invite a novel viewing and works to help keep an event alive in memory.

Well, I could go on! There were many other great works in the show. But I can’t write a catalogic discussion of them all, so I’ll have to let those three stand as examples of the different approaches artists in Difference Machines took.

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.

Amazing Quest Q&A

Amazing Quest should be completely open to the interpretation of players, to their appreciation of it, and, if they choose, to their rejection of it.

I refrained from discussing anything about the game during the IF Comp. Now that it’s over, I am glad to answer some questions that have arisen—with the earnest hope that my answers don’t preclude people from coming up with their own interpretations and responses.

These aren’t really frequently asked questions, but they are all actually questions that have been asked at least once. When I quote directly, the quotations are from anonymous feedback from IF Comp players. Whether quoted or in paraphrase, all of these are real questions or responses that I’ve gotten.

Q: Are you trolling? Making a joke? Playing a prank?

A: No.

Q: Why did you enter this thing, which isn’t very much like IF as we understand it, in the IF Comp?

A: Because I hoped some people would enjoy it and be provoked by it (in a positive way) when they encountered this game in the context of the Comp. That may have only happened twelve times, based on the ratings that were greater than 5, but perhaps I provided some interest and joy to these twelve players that outweighed the other players’ confusion and disappointment.

Q: As a computer program, what exactly is Amazing Quest?

A: A quasi-spoiler here, but: it is a 12-line Commodore 64 BASIC program, with each line being of the maximum length that can be typed in: 80 characters, using all keyword abbreviations and other shortcuts. That makes it the maximal Commodore 64 BASIC program that will fit on one screen. On the second half of the last logical line (line 11), which is the last physical line of the screen, I included a sort of informal all-permissive free software license.

Q: Is this an experiment?

A: I don’t find it interesting to produce any IF, other digital games, other digital literature, or other digital art, unless what I’m doing is an experiment. So, of course.

Q: Is this a parody?

A: I don’t consider it to be, since you’re asking me. If you have thoughtfully considered the game and that’s what you take away from it, I respect your view.

Q: What am I supposed to do when playing this?

A: Since you’ve asked me, I’ve tried to explain this quite explicitly in the introduction: “If you allow your imagination to help you elaborate each stop on your journey, and if you truly get into the mindset of the returning wanderer, Amazing Quest will offer you rewards as you play it again and again.” You can read that, and the game, however you want, but I’d say that Amazing Quest prompts you to imagine, from the standpoint of the main character. So, imagine.

Q: “Oh hey, it’s A Space Odyssey!”

A: For me at least, I did consider Amazing Quest to be a serious engagement with Homer’s Odyssey, and that was one of the things that motivated my work on the project. I’m glad that some people saw this aspect of the project. I hope that enriched some people’s experience of it.

Q: “I found the intro and strategy guide more compelling than the game itself.”

A: Personally I would have preferred that all elements of Amazing Quest (the introduction, the strategy guide, the BASIC game itself) had worked together to good effect for you, but I’m glad that you liked something about the project. My development of the short framing texts was meant to relate to the way that early games had similar supporting materials that were essential to the experience. In any case, I am glad someone liked these texts, because it took me a long time to type them up on my Smith Corona Classic 12 without making any mistakes.

Q: “I don’t suspect that you’re in it for the ratings.”

Only one of more than 100 games was going to win the Comp. (Well, this year it happens to be two, because of a tie—but you get my point.) I made this game for the IF Comp so that players would encounter Amazing Quest and play it in that context, in case they found it compelling in that context.

Q: “I guess the point was go ‘behind the scenes’ and read the program in BASIC? That isn’t a particularly interesting goal…”

A: It wasn’t interesting to you, but there are many people in the world. One player ported the game to BBC Micro BASIC, so it seems like the nature of this game as a BASIC program was somehow interesting to that person. Even apparently simple projects like this may have many complex aspects to them which aren’t evident at first. And perhaps only a very few people will be interested in particular aspects. So in this case, perhaps this “behind the scenes” aspect is important to the person who ported it to the BBC Micro, and maybe it will be interesting to people who know Commodore 64 BASIC very well. I’m frankly surprised that someone engaged with the BASIC program so thoroughly during the Comp. It easily could have taken a few decades for anyone to really become interested in the game’s code, if that was ever going to happen.

Q: SPOILER, select the following text to read: The player’s input has no effect on the outcome, and that’s stupid.

A: Although this isn’t a question, I’ll mention: If you understand a little more about Commodore 64 BASIC, you’d find that the user’s input does have an effect on the outcome.

Q: SPOILER, select the following text to read: Okay, but whether you answer yes or no has no effect on the outcome.

A: This, while also not a question, is true. So, let’s begin with whether this is fair to players of the game. Does that contradict anything said on the main page (“I must decide as if it all depends on me, trust as if it all depends on the gods”), within the game itself (“The gods grant victory”), in the introduction, or in the strategy guide? And in terms of how this game relates to the Odyssey, in which a character is fated to return home, alone, from the beginning, and is then brought home by the will of the gods—is there any contradiction there? To continue along these lines, even understanding this aspect of the game, if you decided to go on raids at every opportunity, plundering away, would that be any different than if you always declined to raid? Is your intentional choice irrelevant, even if the outcome is “random”? With all of this in mind, consider something more concrete and immediate. Let’s consider people who live in the United States who voted in the 2020 election. Why would they do that? Realistically, an individual’s vote had no more effect than any one particular Y/N response in Amazing Quest. Let’s heap one more thing on here, purely related to what one might call gameplay. If you want to imagine what’s going on—a journey home—why would this particular property of the game in any way stifle your imagination?

Q: Was this project motivated by anything besides the Odyssey?

A: Yes. I’ll be discussing this and other matters related to Amazing Quest at the Seattle area IF meetup, which will take place online on December 13, 2020 at 2pm PST. If you want to join, you’ll need to email the organizers; see the intfiction.org forum for more information. I hope this group doesn’t regret their plan to host the author of the 98th place IF Comp 2020 game! I’m certainly still looking forward to discussing Amazing Quest.

“Peaceful Protesters” but no “Peaceful Police”

About four million Google hits for “peaceful protesters,” only about 55,000 for “peaceful police.” Anyone who has been reading the news will have seen the phrase “peaceful protesters” again and again—and probably will not have seen this other phrase. Does that mean peaceful protesters outnumber peaceful police 80 to 1? Or at least that we think and speak as if this is the case?

Linguistics does not support this conclusion. In her 1949 book The Second Sex, Simone De Beauvoir gave us the basis for understanding how maleness is the norm in society and language. The phenomenon here is that of markedness, having a default form and a marked form. “Actor” can be a generic term for anyone who acts, but “actress” is used only for the special, marked case—women. As Edwin L. Battistella discusses in The Logic of Markedness, there are exceptions: “male nurse” is the marked case for this profession, because of “the social fact that nurses are most commonly female.”

“Peaceful protesters” is the marked case. It’s understood implicitly that “protesters” are not generally peaceful.

So when the news media speaks or writes about “peaceful protesters,” they are using the marked case. It’s understood implicitly that “protesters” are not generally peaceful. The exceptional ones are the peaceful ones, like the small percentage of male nurses. This is quite evidently false, but doesn’t prevent journalists from using the phrase again and again.

Amirite? Let’s check to see approximately how many Google search results there are for “violent protesters.” In my filter bubble, and admitting that these searches cover all English-language discussion of all protesters globally and historically, it’s 445,000 results, a tiny sliver compared to the “peaceful” ones.

I admit that there are other reasons people would use an adjective such as “peaceful.” It can be used for emphasis rather than to indicate the marked case. But if that’s what’s going on, that’s a huge amount of emphasis. And, I would expect such emphasis to often be accompanied by some sort of marker, an adverb such as “just” or “only” or something along those lines, which I seldom see in recent news.

Now, if you don’t buy my argument about markedness and that think “peaceful” and “violent” just represent how many protesters we think are peaceful and how many we think are violent, this still makes no sense at all. Watch the videos. Watch the livestreams. If you can, go out on the streets. One in ten protesters are not violent in any objective sense.

If you do agree that “peaceful protesters” is being used as the marked case, as if these protesters were in a slim minority, that is an extraordinary and bizarre confusion, truly unhinged from reality.

Why not just call the great mass of so-called peaceful protesters “protesters,” explaining—if for some reason it needs to be explained—that we are lawfully exercising our rights to speak and assemble?

Post Hoc, An Online Art Show

Please enjoy Post Hoc, a show I’ve put together with generous contributions from a baker’s dozen artists and eight writers. There was no pre-established theme for Post Hoc, which was prompted by our inability to get to IRL galleries and museums. Artists were simply asked for digital images, any digital image they considered an artwork. (Several works in the show do have other manifestations.) The work in the show is all from 2020. I solicited 1000–1200 character responses to each piece.

Agnieszka Kurant   response by Mary Flanagan

Christian Bök   response by Paul Stephens

Daniel Temkin   response by Craig Dworkin

Derek Beaulieu   response by Amaranth Borsuk

Forsyth Harmon   response by Simon Morris & Valérie Steunou

Lauren Lee McCarthy   response by Daniel Temkin

Lilla LoCurto & Bill Outcault   response by Fox Harrell

Olia Lialina   response by Mary Flanagan

Manfred Mohr   response by Craig Dworkin

Mark Klink   response by Daniel Temkin

Renée Green   response by Paul Stephens

Sly Watts   response by Fox Harrell

Susan Bee   response by Amaranth Borsuk

You can scroll through the entire Post Hoc show as a single page. However, you’ll only see the images at their original size, and be able to read the responses, if you go to each post individually.

WordHack Book Table

This May 21, 2020 at 7pm Eastern Time is another great WordHack!

A regular event at Babycastles here in New York City, this WordHack will be fully assumed into cyberspace, hosted as usual by Todd Anderson but this time with two featured readings (and open mic/open mouse) viewable on Twitch. Yes, this is the link to the Thursday May 21, 2020 WordHack!

There are pages for this event up on Facebook and withfriends.

I’m especially enthusiastic about this one because the two featured readers will be sharing their new, compelling, and extraordinary books of computer-generated poetry. This page is a virtual “book table” linking to where you can buy these books (published by two nonprofit presses) from their nonprofit distributor.

Travesty Generator coverLillian-Yvonne Bertram will present Travesty Generator, just published by Noemi Press. The publisher’s page for Travesty Generator has more information about how, as Cathy Park Hong describes, “Bertram uses open-source coding to generate haunting inquiring elegies to Trayvon Martin, and Eric Garner, and Emmett Till” and how the book represents “taking the baton from Harryette Mullen and the Oulipians and dashing with it to late 21st century black futurity.”

Data Poetry coverJörg Piringer will present Data Poetry, just published in his own English translation/recreation by Counterpath. The publisher’s page for Data Poetry offers more on how, as Allison Parrish describes it, Jörg’s book is a “wunderkammer of computational poetics” that “not only showcases his thrilling technical virtuosity, but also demonstrates a canny sensitivity to the material of language: how it looks, sounds, behaves and makes us feel.”

Don’t Venmo me! Buy Travesty Generator from Small Press Distribution ($18) and buy Data Poetry from Small Press Distribution ($25).

SPD is well equipped to send books to individuals, in addition to supplying them to bookstores. Purchasing a book helps SPD, the only nonprofit book distributor in the US. It also gives a larger share to the nonprofit publishers (Noemi Press and Counterpath) than if you were to get these books from, for instance, a megacorporation.

Because IRL independent bookstores are closed during the pandemic, SPD, although still operating, is suffering. You can also support SPD directly by donating.

I also suggest buying other books directly from SPD. Here are several that are likely to interest WordHack participants, blatantly including several of my own. The * indicates an author who has been a featured presenter at WordHack/Babycastles; the books next to those asterisks happen to all be computer-generated, too:

Thanks for those who want to dig into these books as avid readers, and thanks to everyone able to support nonprofit arts organizations such as Babycastles, Small Press Distribution, Noemi Press, and Counterpath.

Sonnet Corona

Sonnet Corona, detail from a particular generated poem in the browser

“Sonnet Corona” is a computer-generated sonnet, or if you look at it differently, a sonnet cycle or very extensive crown of sonnets. Click here to read some of the generated sonnets.

The sonnets generated are in monometer. That is, each line is of a single foot, and in this case, is of strictly two syllables.

They are linked not by the last line of one becoming the first line of the next, but by being generated from the same underlying code: A very short web page with a simple, embedded JavaScript program.

Because there are three options for each line, there are 314 = 4,782,969 possible sonnets.

I have released this (as always) as free software, so that anyone may share, study, modify, or make use of it in any way they wish. To be as clear as possible, you should feel free to right-click or Command-click on this link to “Sonnet Corona,” choose “Save link as…,” and then edit the file that you download in a text editor, using this file as a starting point for your own project.

This extra-small project has as its most direct antecedent the much more extensive and elaborate Cent mille milliards de poèmes by Raymond Queneau.

My thanks go to Stephanie Strickland, Christian Bök, and Amaranth Borsuk for discussing a draft of this project with me, thoroughly and on short notice.

Against “Epicenter”

New York City, we are continually told, is now the “epicenter” of the COVID-19 pandemic in the United States. Italy is the world’s “epicenter.” This term is used all the time in the news and was recently deployed by our mayor here in NYC.

I’m following up on a February 15 Language Log post by Mark Liberman about why this term is being used in this way. Rather than asking why people are using the term, I’m going to discuss how this word influences our thinking. “Epicenter” leads us to think about the current global pandemic in some unhelpful ways. Although less exciting, simply saying something like “New York City has the worst outbreak” would actually improve our conceptual understanding of this crisis.

“Epicenter” (on the center) literally means the point on the surface of the earth nearest to the focus of a (below-ground) earthquake. It can be used figuratively — Sam did not keep the apartment very tidy; Upon entering the kitchen, we found that it was the epicenter — but there’s only the one literal meaning.

One effect of the term is a sort of morphological pun: There’s a COVID-19 “epi-center” because this is an “epi-demic,” a disease which is “on the people.” But on March 11, the World Health Organization said that COVID-19 is worse than an epidemic, it’s a pandemic. Indeed, it is a global pandemic, spreading everywhere. So what might have been a useful pun back in February is now an understatement.

Beyond that, “epicenter” is metaphorical in the sense of directing us to a particular conceptual metaphor (see George Lakoff and Mark Johnson’s Metaphors We Live By, 1980, and Lakoff’s article “The Contemporary Theory of Metaphor,” 1993). This sort of metaphor is not just a rhetorical figure or flourish, not a surface feature of language like the “epi-” pun. It is a fundamental way of understanding a target domain (the pandemic) in terms of a source domain (an earthquake).

To give this complex metaphorical mapping a name, we can call it A HEALTH DISASTER IS A SEISMOLOGICAL DISASTER or more simply A PANDEMIC IS AN EARTHQUAKE. But these are just names; we’d need to explore what is being mapped from our earthquake-schema to our pandemic-schema to really think about what’s going on there.

I will note that this metaphor usefully emphasizes some things about the pandemic: its unexpected onset, the extensive devastation, and the cost to human life. While such mappings are always incomplete, if we try to make a more extensive mapping, we can find ourselves more confused than helped.

Earthquakes are localized to a certain place (unlike a global pandemic) and they occur during a short period of time (unlike a global pandemic). So the metaphor incorrectly suggests that our current disaster is happening once, in one place, and thus we will be able to clean up from this localized, short-term event with appropriate disaster relief.

The most critical aspect of our current crisis is not part of the earthquake metaphor at all. There is no entailment or suggestion from the earthquake metaphor that we are dealing with something that can be transmitted or is communicable. Instead of rallying to an earthquake meeting point, we now need to remain apart from each other to slow the spread of disease.

I’d going to go even deeper in thinking about the “epicenter” concept. Why does a global pandemic (a disease affecting “all the people”) have any sort of center at all?

Metaphor, as it is now understood, is based on ways of thinking that are grounded in bodily experience, including those cognitive structures called image schemas. One of these, detailed by Mark Johnson in The Body in the Mind, 1987 and also discussed by George Lakoff in Women, Fire, and Dangerous Things, 1987, is the CENTER-PERIPHERY image schema. It relates to body, and our recognition of the heart, for instance, as being central and one of our toes as being more peripheral. We worry less if we’ve cut a toe than if we’ve cut our heart. Even if lose a toe, we can keep living, which we can’t do without our heart.

So, since this pandemic has one or more CENTERS, does that mean that it’s not so important to worry about the PERIPHERIES of COVID-19? Do we need to be concerned about the center but, if we are somewhere on the margins, is it okay to have parties or get into other situations that may foster transmission of the virus? Is that the way to think about a global pandemic, where outbreaks are occurring everywhere? Obviously, I feel that it’s not best.

The alternative image schemas we can use to develop alternative metaphors are CONTAINMENT and LINER SCALE. “Outbreak” is pretty clearly based on the CONTAINMENT image schema. Some places do have outbreaks that are worse and more serious than other places. Hence, LINEAR SCALE. This would mean saying that, for instance:

Italy has the “worst outbreak of the global pandemic”
NYC has the “worst US outbreak of the global pandemic”

These statements indicate that COVID-19 is a global outbreak that must be CONTAINED, and the implication is that it must be contained everywhere. It isn’t something that hits one place at one time, and doesn’t have a CENTER people can simply flee from in order to be safe. It also admits that the various outbreaks around the world are on a SCALE and can be worse in some places, as of course they are.

I shouldn’t need to explain that I have no expertise or background in public health; What I know, and the information I trust, comes from reading official public health sources (the WHO and CDC). It may seem silly to some (even if you’ve read this far) that I’ve gone off at such length about a single word that’s in the current discourse. I’ve bothered to write this because I’m a poet and have been studying metaphor (in the sense of conceptual metaphor) for many years. I believe the metaphors we live by are very important.

In George Lakoff and Mark Turner’s More Than Cool Reason, 1989, they make the case that metaphor is not what it was assumed to be in poetry discussions for many centuries. It is completely different, certainly not restricted to literature, and indeed is central to everyday thinking. However, in their view, the role of poets is extremely important: “Poets are artists of the mind.” They argue that we (poets) can help to influence our culture and open up more productive and powerful ways of thinking about matters of crucial importance, via developing and inflecting metaphors. I believe this, and hope that other poets will, too.

Sea and Spar Between 1.0.2

When it rains, it pours, which matters even on the sea.

Thanks to bug reports by Barry Rountree and Jan Grant, via the 2020 Critical Code Studies Working Group (CCSWG), there is now another new version of Sea and Spar Between which includes additional bug fixes affecting the interface as well as the generation of language.

As before, all the files in this version 1.0.2.are available in a zipfile, for those who care to study or modify them.

Sea and Spar Between 1.0.1

Stephanie Strickland and I published the first version of Sea and Spar Between in 2010, in Dear Navigator, a journal no longer online. In 2013 The Winter Anthology republished it. That year we also provided another version of this poetry system for Digital Humanities Quarterly (DHQ), cut to fit the toolspun course, identical in terms of how it functions but including, in comments within the code, what is essentially a paper about the detailed workings of the system. In those comments, we wrote:

The following syllables, which were commonly used as words by either Melville or Dickinson, are combined by the generator into compound words.

However, due to a programming error, that was not the case. In what we will now have to call Sea and Spar Between 1, the line:

syllable.concat(melvilleSyllable);

does not accomplish the purpose of adding the Melville one-syllable words to the variable syllable. It should have been:

syllable = syllable.concat(melvilleSyllable);

I noticed this omission only years later. As a result, the compound or kenning “toolspun” never was actually produced in any existing version of Sea and Spar Between, including the one available here on nickm.com. This was a frustrating situation, but after Stephanie and I discussed it briefly, we decided that we would wait to consider an updated version until this defect was discovered by someone else, such as a critic or translator.

It took a while, but a close reading of Sea and Spar Between by Aaron Pinnix, who considered the system’s output rather than its code, has finally brought this to the surface. Pinnix is writing a critique of several ocean-based works in his Fordham dissertation. We express our gratitude to him.

The result of adding 11 characters to the code (obviously a minor sort of bug fix, from that perspective) makes a significant difference (to us, at least!) in the workings of the system and the text that is produced. It restores our intention to bring Dickinson’s and Melville’s language together in this aspect of text generation. We ask that everyone reading Sea and Spar Between use the current version.

Updated 2020-02-02: Version 1.0.2 is now out, as explained in this post.

We do not have the ability to change the system as it is published in The Winter Anthology or DHQ, so we are presenting Sea and Spar Between 1.0.1 1.0.2 here on nickm.com. The JavaScript and the “How to Read” page indicate that this version, which replaces the previous one, is 1.0.1 1.0.2.

Updated 2020-02-02: Version 1.0.2 is the current one now and the one which we endorse. If you wish to study or modify the code in Sea and Spar Between and would like the convenience of downloading a zipfile, please use this version 1.0.2.

Previous versions, not endorsed by us: Version 1 zipfile, and version 1.0.1 zipfile. These would be only of very specialized interest!

Incidentally, there was another mistake in the code that we discovered after the 2010 publication and before we finished the highly commented DHQ version. We decided not to alter this part of the program, as we still approved of the way the system functioned. Those interested are invited to read the comments beginning “While the previous function does produce such lines” in cut to fit the toolspun course.

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!

Gomringer’s Untitled Poem [“silencio”], an Unlikely Sonnet

The untitled poem by Eugen Gomringer that we can only call “silencio” is a classic, perhaps the classic, concrete poem. According to Marjorie Perloff’s Unoriginal Genius, the “silencio” version of the poem dates from 1953. In my 1968 edition of The Book of Hours and Constellations I find the German manifestation of this poem (with the word “schweigen”) and the English poem (with the word “silence”), on the same page at the very beginning of the book — but no “silencio.” The place where I do find “silencio” is An Anthology of Concrete Poetry from 1967, edited by Emmett Williams. My copy is the re-issue by Primary Information.

Williams mentions tendencies and tries not to too strongly characterize any particular poets in the anthologies when he writes, in the introduction:

The visual element of their poetry [the concrete poets’ poetry] tended to be structural, a consequence of the poem, a “picture” of the lines of force of the work itself, and not merely textural. It was poetry beyond paraphrase … the word, not words, words, words or expressionistic squiggles …

There are several essential points here about the project of concrete poetry and how it differs from, for instance, the shapes of “Easter Wings” and the other poems in George Herbert’s The Altar, as well as the way Lewis Carroll presented the image of a mouse’s tail in words that tell the mouse’s tale in Alice’s Adventures in Wonderland. However brilliant these two writers were, in these cases they were using language to make pictures; the concrete poets, beginning with Gomringer, worked to create structures. Their poems are not just verse (lineated language), but made from lines of force. In many cases, as with the unnamed poem I must call “silencio,” an entire concrete poem can be understood to cohere as a word.

There are other interpretations of Gomringer’s poem that situate it in history, but I will give a simple one that situates it within the project of concrete poetry — followed by another that places it in a different and much longer-lived poetic tradition.

The lines of force of this poem are, most obviously, those that allow for the gap in the middle where the ground (the absence of text, the absence of “silencio”) becomes figure. As ink declares silence, or, if we read the text aloud, as our voice declares silence, attentive readers can’t help but notice a truer silence in the middle of the page.

At the next stage, there is silence between each “silencio,” horizontally and vertically. We overlook this gap, which is seen even when text is not presented on a grid. It too will be represented if we read the poem aloud, however, between each spoken word.

We can go further, although ear and eye would not agree about the silences. There are spaces, and thus silences of a visual sort, between each of the letters in “silencio,” too.

Fascinating, isn’t it, that John Cage’s 4’33” was composed and presented in 1952, preceding this poem? This poem, too, seems to structurally show, through its lines of force, that silence can take center stage.

In any case, without offering more than a brief appreciation, I mean to make it clear that this is a quintessential concrete poem. One can read it out loud, but that does not provide the listener with the effect of apprehending the structure of the poem on the page. The poem is not a picture of anything. It is a structure. And it is not squiggles or simply a bunch of words, even if the single lexeme “silencio” is repeated fourteen times. It is fitting to apprehend and read the whole poem as a word, not a bunch of words.

Accepting this, I would like to offer an interpretation of this poem that may seem perverse, but which I believe shows this poem’s radical versatility: It can be seen in the light of a poetic tradition that long predates concrete poetry. This poem is not only a concrete poem, but also a sonnet. Specifically, I’ll argue that although the repeated word is a Spanish word, it fits into the English-language tradition of the sonnet. Because concrete poetry is a transnational phenomenon and Gomringer writes in English as well as German and Spanish, this disjunction may be less unusual that it otherwise would be.

Consider that the poem consists of fourteen occurrences of “silencio,” which despite their unusual arrangement on the page can be read aloud as fourteen lines. It would be hard not to read them this way.

Because each word is the same, the poem follows the rhyme scheme of a sonnet — any rhyme scheme, including the Petrarchan or Shakespearean in English, including those typical in Spanish.

If some reader finds it impossible for the same line to be repeated fourteen times in a sonnet, I refer this reader to the 2002 “Sonnet” by Terrance Hayes, which consists of fourteen repetitions of the line “We sliced the watermelon into smiles.”

But is it metrical? The word “silencio” pronounced by itself has two metrical feet ( x / | x / ) and is in perfectly regular iambic dimeter. This is also the meter of Elizabeth Bishop’s last poem, “Sonnet,” which begins:

Caught — the bubble
in the spirit level,
a creature divided;
and the compass needle

There’s much more variation in Bishop’s poem, but the metrical regularity of Gomringer’s poem shouldn’t preclude it from being in this particular form. While I don’t have an example of a sonnet with repeated lines (like the one by Hayes) from before 1953, there are earlier sonnets in dimeter, or one, at least: a piece of light verse by Arthur Guiterman, published in The New Yorker on July 7, 1939.

Sonnets can be about anything, although the form does have a heritage. Reading the poem as a sonnet allows us to make a connection to the sonnet tradition if we wish. We can, for instance, ask whether this sonnet has anything to do with love, whether in the most traditional sense of love for a woman or, in John Donne and Herbert’s senses, religious love. Could the silence of this sonnet be that of being understood, and of not needing to say anything aloud?

Seeing this Gomringer poem as a sonnet also allows us to put it into conversation with other one-word texts (those that have several tokens but repeat a single type) that can also be viewed as sonnets, because they have fourteen tokens.

The one I know of, and which fascinates me, is Dance, a typing by Christoper Knowles that I saw contextualized as visual art in his 2015 solo show at the Philadelphia ICA. The page of this work is blank except for a line at the top that repeats the word “DANCE” (in capital letters) fourteen times, with a space between each occurrence. This makes for 83 characters: 5 × 14 = 70 for the word DANCE, plus the 13 spaces that go between each pair of words. While a sheet of paper is typically thought to accommodate 80 typewritten characters across its width, Knowles found that by beginning at the extreme left edge of the page and typing to the extreme right edge, he could fit exactly 83 onto it.

The typing Dance can be read as a sonnet in hemimeter — a term used by George Starbuck for “half-feet,” and associated with light verse. Where “silencio” offers a more static and contemplative structure, I can’t help but imagine Knowles typing DANCE repeatedly, his hands dancing on the typewriter, as he also produced a text that is a score, instructing us to dance. Not so much a structure, it seems to me, but an exhortation and a trace of its making. And, of course, a text that can be read in the sonnet tradition, asking us to consider how dance, repeated, insistent, filling the width of the page completely, relates to love.