Announcing Sea and Spar Between

Just published in Dear Navigator 1:2/3 is a new poetry generator, Sea and Spar Between, by Nick Montfort and Stephanie Strickland.

This has been a major project of mine and Stephanie’s over the past year. We started seriously working on this project on December 15, 2009, when we met for the first of a few days in New York to discuss and start developing it. I thought it might take only a few days to complete – not a completely outrageous idea, since I have been working on tiny poetry generators such as “The Two” those in the ppg256 series, which were not time-consuming to produce. As you might guess, since it was just published today (on December 16, 2010), I was wrong about the time it would take. But, I am delighted that the project is appearing now in wonderful company in Dear Navigator, a beautiful and appropriately-named journal.

If memory serves, Stephanie and I met at Digital Arts and Culture ’99 in Atlanta. I remember the conversation we had about innovative literature soon afterwards at Limbo, a long-gone coffeehouse on Avenue A in New York. Stephanie offered her advice as I was putting together my application to the Boston University poetry program – one way in which she’s long been a mentor as well as a friend. We’ve served the Electronic Literature Organization together; I had the chance to collaborate with her in editing the Electronic Literature Collection, volume 1; and I’ve gotten to read with her and present in the same session at conferences many times over the years. Sea and Spar Between, though, is our first collaboration as poets.

We have a short statement about the project on the “How to Read Sea and Spar Between page; the text also appears on the page of Dear Navigator that introduces and links to the piece. I won’t quote from that page here, but I’ll mention that the generator produces a navigable space of stanzas and draws on the vocabulary of and our readings of Dickinson and Melville.

A few words about our collaboration on Sea and Spar Between: I sketched in code as the two of us worked together; we looked at and ran many intermediate versions as we figured out how we wanted to generate lines. I wrote the early versions of the stanza generator in Python, because I find that a better language to think and sketch in than JavaScript. Although I was the one who did the programming, Stephanie and I worked closely on all aspects of the project together: The strings that serve as data, the way lines are assembled, the way stanzas are assembled, the overall interface, and beyond. She and I were even working together to properly comment the code as the new issue of Dear Navigator was preparing for launch.

Speaking of that code, as you can see for yourself in the file seaspar.js, Sea and Spar Between is licensed under a free software license. As the license says, anyone may copy it, modify it, or make use of it in some other way in creating another project. I hope the project proves pleasing to interact with and read from on the Web and pleasing for those who wish to turn to the code.

Book Arts and Broadsides Showcased

a photo (and not a very good one, sorry) of the Building 14 WHS Books Arts & Broadsides display case

MIT’s Building 14 has a great new display thanks to poet Amaranth Borsuk, who is a Mellon postdoctoral fellow in the Writing & Humanistic Studies program, where I also work. There are some wonderful pieces from many of my colleagues and their students, all of them displayed brilliantly. I’ll mention the digital tie-ins: The broadside “Love Letters,” done in one of my graduate CMS.950 Workshop classes, consists of computer-generated poems produced by a Manchester Mark I emulator. These were set on a letterpress by the class thanks to the Bow & Arrow Press’s John Pyper. And Peer Hofstra, who took my 21W.750 Experimental Writing class last semester, did an extraordinary untitled book for his final project. It’s made of punched cards, with the words are formed by alphabetically-arranged letters punched out from those pages. Each word is some are subsequence of the alphabet, so “APT” can occur, while “APE” cannot. Alex Corella’s Experimental Writing final project, which cuts up and rearranges the text on Cambridge historical plaques, is also on display. If you’re on campus, do stop by to see the case, which is by the elevator on the first floor of Building 14. It will be up for at least this month, December 2010.

Actions in Curveship

I’ve been working the past few days to change the way actions are represented in Curveship. The previous model for actions is described well in sections 5.1.3 and 5.1.4 of my dissertation. I won’t go into it in any detail here, but it involved two sorts of abstractions (one higher-level and associated with intention and narrating, the other lower-level and used directly in the simulation) and was considerably more complex than what I have in the current system.

I will mention something about why actions are represented in the system at all – that is, with first-order representations, objects. This is a departure from the way IF systems have worked up to now. In other IF systems, when you “get lamp,” you change the state of the world. The lamp object has a different parent when you are done with this action. But there is no object representing the action itself, the adventurer getting the lamp. As you can tell from playing IF, this works fine if you want to stick to one character and narrate what is happening exactly once, as it happens.

Having a representation of action, on the other hand, allows for much more flexibility in narrating. One can narrate an action in flashback (because it’s still there, represented as an object) and can easily maintain lists of actions for each character, to represent what each specific character is aware of. In Curveship, these are kept in “concepts” which are theories about the world that are almost always incomplete and can even be wrong. Since all actions are reversible, the representation of actions also provides an infinite “undo” capability.

So, the action representation now simply provides actions of four types:

  • Behave – Any action that doesn’t change the world, from speaking to jumping up and down.
  • Configure – An action that causes an item to be moved to a new place, or to be in a new relation, in the item tree. (“get lamp” is an example.)
  • Modify – An action that causes an item to change state, to have one of its features take on a new value. (“light lamp” is an example.)
  • Sense – A perception of the world which does not change the world but may update a character’s concept.

For instance, this is the code that maps the command “get lamp” (or “get” followed by anything) into a particular “take” action, which is a configure action:

def take(agent, tokens, concept):
    return Configure('take', agent,
                     template='[agent/s] [pick/v] [direct/o] up',
                     direct=tokens[1], new=('of', agent))

“take” is the verb and agent the agent; all Actions must have these two. The template is optional. It specifies the string-with-slots that is to be used in representing this action. All configure actions have a direct object, the item being configured, and need at least a “new” keyword specifying the link and parent that item will be in. Here, it’s “of” (indicating possession) and the agent (the one who is doing the taking.)

Curveship Analysis at Tufts

I just wanted to thank Norman Ramsey, Eddie Aftandilian, and Brad Larsen for the very productive day-long discussion of Curveship that we undertook on Friday. I’ve spent most of the weekend and much of today implementing just one of the ideas for changes that came out of this. The discussion certainly gives me more to do, but it also does a great amount to focus my efforts as I work toward a release of system.

Robot Prints and Binds Riddle & Bind

If you’re looking for my new book of poems, Riddle & Bind, and you happen to be near the MBTA’s Red Line or Harvard Square specifically, prepare for excitement. You can not only purchase the book in this venerable area of Cambridge; you can have the Harvard Book Store’s book-making robot, Paige M. Gutenborg, manufacture a copy of Riddle & Bind for you in about four minutes. The cost for the book and the bibliotronic display in which it is forged is simply the retail price, $16.

The Harvard Book Store's book-making robot.I have the feeling that someone must have put in a good word for me.

Update: As of August 14, 2012, Riddle & Bind is not available to be printed on the Espresso Book Machine at the Harvard Book Store. The book can be special ordered through the Harvard Book Store, however.

The MIT Press bookstore, down the red line at the MIT/Kendall stop, has copies of Riddle & Bind in the store and available for purchase.

This APC, For One, Welcomes…

APC: Thanks. It's a pleasure to serve you.

I was startled to discover these two things at the post office today, the immediate implications of this message:

  1. The US Postal Service has developed a kiosk/robot capable of experiencing pleasure.
  2. Said robot is stimulated pleasurably by selling me a stamp.

I wanted to somehow let the robot know that I also appreciated the necessary service it performed. I thought about getting one of these Priority Mail stickers, writing on it “It was a pleasure, also, to be served by you, robot!,” and then slapping it on the side of the Automatic Postal Center. But the robot wouldn’t be able to read that message, would it? Maybe I could hold up a note with a similar message to the camera that is used to surveil patrons of the APC. But then I’d have to wait in line again, and I doubt the robot is capable of handwritten character recognition – it wouldn’t have asked me to type in the zip code if it was.

I can only hope that this faithful servant is among the many robot readers of my blog.

Also, I feed certain there must be some applications outside of the mail system for pleasure-experiencing robots, although none come to mind right away. Any ideas?

(Obligatory self-reference: An Automated Postal Center appears in my 2005 interactive fiction Book and Volume.)