Ian Miller discusses major league pitching in the format of a D&D expansion kit.

Mariano Rivera
Medium-Size Humanoid (Extra-Dimensional)
Hit Dice: 12d12+12
Special Attacks: Cutter (duh)
Alignment: Lawful Good

Jamie Moyer is Humanoid(Undead) with a withering gaze special attack.

But She’s A Girl describes her achievements file. It’s in Tinderbox, of course.

If you’re anything like me, when the time comes to update your CV or convince those above you that you do actually do some stuff, your mind goes frighteningly blank. “I know”, you think to yourself, “that I’ve done something this year, but what was it?”. Even if you do manage to remember a few things, you have to rummage around in your hard drive or filing cabinet to retrieve the details of that talk you gave or that cool thing you did. I’ve had this problem for a long time and vaguely thought I should do something about it. This weekend, I finally did it: I made an ‘achievements file’.

Last weekend, our local senate campaign support committee had something like a dozen volunteers, which was not by any means enough. Today, we have three rival committees, and fewer volunteers among them than we started with.

I think we’ll get this glued back together, but it’s amazing what a caricature of the Left the Left can be.

What's the best guide to grassroots nuts-and-bolts in the netroots era? Email me.

by Hilary Mantel

Mantel’s Booker-award winning Wolf Hall was intended as the first of a pair of books, but this second volume grew and now a third book will be needed to wrap up this wonderfully-imagine life of Thomas Cromwell, the infinitely versatile right hand of Henry VIIII. Mantel writes in first person present, and does it with such grace and dexterity that one these stylistic acrobatics soon fade into the background. The plotting is so dexterous that one never suspects a scene to a pretext for exposition or a ploy to justify what comes next. ad With great ease, Mantel places postmodern reflections on narrative, meaning, and memory into the context of Tudor political intrigue.

Jun 12 29 2012


by Juliet Nicolson

Vita Sackville-West’s granddaughter crafts a workmanlike tour of 1936, the year of the abdication of Edward VIII. This is a pleasant and agreeable book, and the character of May – a chauffeur from Barbados whose cousin married an East End Jew – is a walking personification of post-colonial Britain. Evangeline Nettlefold, a portly American schoolfriend of Wallis Simpson, gives us access to scenes to which even the endlessly resourceful May cannot gain access.

A lesbian subplot is clumsy and unsympathetic, and one of the central issues – the appeal of Mosely’s fascists – gets lost in sentiment. A writer who can acknowledge the assistance of a dowager duchess by thanking “Debo Devonshire” might find a way to explain what those fascists were thinking; they were wrong but they were not all idiots, and it does us little good to pretend that we ourselves are inherently too good for that. Debo’s sister killed herself for love of Hitler when war was declared, and there’s a lost opportunity here to try to understand what was happening. (For a better shot, see Jo Walton’s Farthing.)

Thorough editing would have helped here, both avoiding some apparent blunders (surely those risky jokes were risqué, and surely Vita Sackville-West’s granddaughter must be familiar with that word) and perhaps finding a better solution to all the exposition that surrounds May’s backstory. Nonetheless, a pleasant summer read.

Jun 12 27 2012


The Readercon program is out. Looks great. Registration is all of $70 — no idea how they do it. Some notables:

  • No Longer Lonely in the Cloud: Digital Collaboration for Readers (with Eastgate alumna Kathryn Cramer)
  • Om Nom Nom de Plume (on the uses of pseudonyms, with David Hartwell and Barry Malzberg)
  • Readercon Classic Nonfiction Book Club: How to Suppress Women's Writing. with Chip Delaney
  • Why I Stopped Writing (is it ever a good idea?)
  • What Writers Want (with Suzy McKee Charnas, John Crowley, and Peter Straub)
  • Samuel R. Delany's Golden Jubilee
  • Why Is Ancient Evil Ancient?
  • Queer/Were: Born This Way?

Times change, and with them the way we do things.

Ever since I started to program, the way you save stuff to disk has followed the same script:

  • Make a file object
  • Create the file (deleting the old file as necessary)
  • Open the file for writing
  • Write stuff
  • Close the file

I’m writing a cleaned-up File abstraction for Tinderbox 6, and for the first time I realized that nowadays this doesn't make sense.

  • Stream what you want to write into memory
  • Create the file with that stuff

In the old days, we had to write stuff into an open file because there was no place to save things beside the file. We don’t do that any more; you make some sort of logical stream or buffer in memory and you write stuff there. You do this before you touch the file system because if for some reason you can’t write stuff – because your realize the data is invalid or inconsistent or because something is unbaked – you want to find that out before you go messing with files and disks. Nowadays, there‘s plenty of memory.

I’m not sure that our file API needs open, close, or write. Just "create a file with these contents.

I kept this post in the penalty box for three months. It’s still right. It’s time.

Maybe Professor Emerson was right at MLA:

It is remarkable that in just ten years, since the publication of the first book on electronic literature (Loss Glazier’s Digital Poetics in 2001)...

Jill finds some older precedents through Google; I found a bunch more in about ten minutes lying around my desk. Books, dissertations, journal articles, newspaper stories, conference papers. In any case, "hypertext fiction" and "electronic literature" were synonyms until Aarseth’s Cybertext tried to build a richer taxonomy, which was useful, and a faction tried to exploit that taxonomy for essentially political ends, which was not.

Jill has some Moretti-influenced ethnographic theories about why some of the early hypertexts prospered most. One explanation she slights is, I think, the most powerful: they prospered because they were really good.

What is to be done? Perhaps we should add another line to our slender style manual.

Illiteracies and other terms to avoid:

  • hyperlink (prefer “link”)
  • Flash fiction (ambiguous)
  • hypermedia (use “hypertext”)
  • electronic literature (obsolete)

There: problem solved.

I’m disappointed with what called itself the #elit “community,” though I can’t say I’m surprised. Never mind: there’s a lot of work to do.

Just back from an exciting workshop on Narrative and Hypertext. Some fascinating work.

Geoffrey Draper from BYU-Hawaii led off with a discussion of hypertext fiction for mobile devices. They have interesting influences and they’re interested in Choose Your Own Adventure and they’ve built a clever mobile system called Jarnaby. And they’re using Little Red Riding Hood (Arne-Thomson 301) for their sample document.

Kevin McGee from NUS described HypeDyn, a Storyspace-inflected hypertext system which explored procedural links with elaborate guard fields. They’s identified some interesting problems familiar from Storyspace, especially visualizing and debugging complex networks of dynamic links.

From Southampton, Heather Packer described Memory Book, which attempts to make sense of “lifelogs” – continuous flows of text and image and biotelemetry generated during the course of a day — into narratives in order to make sense of the mass of information. An interesting side issue here is the narrator’s voice: is it a magisterial third person

Between 12:30 and 1:00 was spent in the company of Jon and Dave. The weather was fair.

or might we address the notional reader:

Then you spent a sunny half-hour outside with Jon and Dave.

I think of this as the Siri question: what sort of personality should our agents and robots project? Also central to the project are questions of what one includes and what one elides.

Carolyn Hill is looking into rhizomatic hypertext for self-presentation in social work and therapy. Reminscent of Pamela Taylor’s work on hypertext art portfolios. Also, nice connections to Theory, especially in these post-theoretical days.

Charlie Hargood and David Millard, both Southampton, are exploring hypertext documentary video as a way of using footage more extensively. Broadcast documentaries leave behind them vast quantities of film that was not used in the final cut; how can we take this material and automatically edit them into custom-made films that adapt to individual reader interests?

I spoke about Spuyboek’s idea of the Digital Gothic, based on a paper written as a dramatic dialogue in counterpoint to David Kolb’s important dialog Story/Story. In the talk, I teased out the economic argument a bit more emphatically than was possible in the dialog; designing a new media economy becomes more urgent, I think, in view of the ghastly and prolonged depression we may be facing.

Suw: Are you sure it’s safe? It’s past midnight. My guidebook warns travellers to be especially careful after dark.

Lou: The moon is full. Yes, there are some clouds, but...

Suw: It is a dark and stormy night. Try to remember: winter [25]. And if on a winter night a traveller... [11]. The book says specifically to stay out of the Hypertext Gardens [29] after dark.

Dru: Your guidebook was published in 1987.

Then Stacey Mason (Eastgate) wrapped up with a bravura discussion of glitch art and its connection to literature (through manipulation of image files) and narrative (through process). (RE)PRESENTATION AND RE(PRE)SENT(I)MENT and $/¢=>This is the way/The world ends: theory and practice. Not bad for a computer science conference.

One misgiving I do have about the workshop, or rather about the entire field, is that we’re no longer as familiar as I think we might be with existing work and theory. I wonder how much the shift from print Proceedings to those cute little USB sticks and the digital library play into this. It’s one thing to reject Narratology and its terminological tangles, but I fear we’re continually forgetting it and then rediscovering it with newly tangled terms. The discussion of systems is always great, but time could be saved if everyone were more familiar with the literature.

The Tinderbox wikipedia page is being trimmed way back, which is often the first move in deletionism. Attention from proficient Wikipedia editors could improve what’s left a lot.

Jun 12 21 2012

Open Source

Today I wrote a program. It is very artful.

They can hang its output in a gallery.

Remediated mashup

With lolcats and codewerk

And an artist’s statement. Look at me!

Waste no time on bloggers, amateurish drudges,

Twittering consumerist fantasy!

I’ve got postmodern theory,

Sabbaticals and tenure and

A quote on any topic: interview me!

Let’s build a Web site with interactive movies,

It doesn’t need to mean much if it’s got 3D.

Monetize it fast with

T-shirts and memberships and

Lots of pretty popups. Just pay me!

My working group standard is buzzword compliant,

Any other plan would be a travesty.

Kickstarter ready,

Github enabled,

All I ask is that you will commit to me.

I’ll predict an Apple setback if you need more eyeballs,

Always fun to aggravate the bourgeoisie.

Manipulating stocks like an

Internet rock star

You can be a biz-tech writer just like me!

In the 15 June 2012 issue of the Times Literary Supplement, Kate Hayles reviews a pair of books about new media: Mark Amerika’s Remix The Boox and Alex Goody’s Technology, Literature, and Culture. It’s vintage Hayles.

Just finished a miserable three day programming marathon, the sort of disaster that makes you question your compiler, your sanity, and whether mankind was intended to program. The explanation was a simple error – but one I’ve never made before.

I’m in the middle of a big project, refactoring the core of Tinderbox and moving it to a new platform. For the most part, this has gone swimmingly, and I think I’ll hit my August 1 milestone in June. Since I’m moving and testing things object by object, I occasionally need to make temporary test jigs and placeholder objects that do very little (or nothing) except stand where the real object would be.

I once went to a dress rehearsal in Göteborg. At one point, a fellow came on stage and explained that, tomorrow night, the King would say a few words, and so he stood in for the King and this would help prevent dancers from crashing into the Sovereign. These objects are just like that.

So, I have this complex family of objects called ExportElements that are made by the ExportElementParser. But I don’t have an ExportElementParser yet, or any actual ExportElements. But I’ve got things that expect to receive an ExportElement, and some of those can be tested without having an actual working ExportElements to give them. So I write up a little class that pretends to be an ExportElement, and if you need to use the test objects, you can

#include "ExportElementStub.h"

All this is canonical, by-the-book, test driven development. I wrote the dummy object weeks ago, used it in a few places, forgot all about it.

Last Friday, it was time to hook up ExportElementParser, the factory that makes various kinds of ExportElements. They come in about 28 flavors. I was expecting it to be tricky. It went better than I hoped. There were snags — file system issues, some old syntax questions, a few references to things that weren’t implemented yet and had to be patched up with their own imaginary objects. But soon it compiled. And the tests ran.

So, now it was time to test the whole thing. Crash! That’s not too bad: things had been going too well, it was time for a problem. So, I broke things down into smaller steps. They worked – and then Crash! So, I went back a bit. It still crashed! All sorts of things would crash occasionally. It looked like a corrupt heap. I did diagnostics. I did tests. It didn’t make sense.

At one point, I refactored code from ExportElementParser, where it crashed, to my test class, where it didn’t. That felt like a compiler error. Restart the machine: no help.

At one point, I fixed a crash by changing sequence of declarations in the .h file. That’s Twilight Zone stuff. I was getting very unhappy with LLVM, with XCode, with the world. My Mirra Chair broke. I spilled coffee on my notes. I lost a lot of sleep.

And then, Monday noon, I saw it:

#include "ExportElementStub.h"

The Parser was still using the fantasy version of ExportElement , while everything else was using the real version. And since the different versions have different sizes and layouts in memory, the parser would corrupt the heap every time it touched an ExportElement . Yet, the objects were legitimate objects — not the droids you’re looking for, but droids — and so all the wonderful safety netting of the modern OS was pretty much disarmed. “Don’t know why you’re doing that, fella,” says Mac OS X, “but it’s a free country!”

Moral: if your #include files are inconsistent, you’re going to be in a very bad place. Somehow, in — can it be? — 25 or 30 years of programming in C-style languages, I’ve never made this mistake before. I can’t imagine why not: I make all the other mistakes. Yikes.

Jun 12 16 2012

Obama Buns

In part of my work for the Elizabeth Warren senatorial campaign, I needed to go to a nifty neighborhood BBQ that our friends in the Obama campaign were throwing. I wanted to bring something — bad to come empty-handed — but of course we’re fellow-travelers and mustn’t upstage the main course.

So I made the potato-bread hamburger buns from the current issue of Cooks Illustrated. They were nifty!

It’s an odd recipe. Usually, bread is five parts flour and three parts water, plus salt and yeast. This bread is 3 parts flour, 4 parts mashed potato, and just a little (5T) of the mashed potato cooking water. Also ½part egg, a little butter. Makes a terrific hamburger bun.

Another nice thing is that, while it's a finicky recipe – you have to make the mashed potatoes, and I had to titrate lots of extra flour because I used red bliss potatoes and the recipe anticipated russets — the dough rises very quickly. First rise is 30 minutes, second rise is 20, 18 minutes in the oven.

by Patrick Rothfuss

A large and intriguing fantasy, the story of a hero named Kvothe (which rhymes with "Quoth"). The superhero origin story explains how our hero achieved greatness; here, we explore how our protagonist renounced greatness in trying to become an unsuccessful innkeeper. Engaging and cleanly written, though I’m not certain that this exploration of the nature of fairy stories takes us far beyond “On Fairy Stories” and “Neverwhere,” and there’s little sign of the sort of narrative play that animates A Visit From the Goon Squad.

I’ve been working deep in the basement of Tinderbox, remodeling the structure for Tinderbox 6. That’s still a long ways off — we’ve just finished Tinderbox 5.11, and we’ve got some interesting plans for Tinderbox 5.12, and there’s some cool iPad stuff on the way.

But Tinderbox 6 is really beginning to take shape.

Right now, though, a lot of the work involves things like class SRect (which does all sorts of things with rectangles) and class Valuable (which abstracts attribute-value lists) and class Lynx (which implements the Link Apprentice. In other words, lots of really important things that have to work right, but aren’t terribly interesting to write about.

But there’s a lot of interesting stuff coming down the pike.

by Donald E. Westlake

Fresh out of jail, Dortmunder lands an unexpected job when an old friend asks him to put together a team to liberate the Balabomo Emerald, which two small and impoverished African nations are eager to possess.

Deploring the influence of best-seller lists, Michael Dirda wrote that

The best books of a genre seldom make the list. The finest all-around American crime writer of the past forty years—I speak of Donald E. Westlake—never matched the sales of Elmore Leonard, let alone [James] Patterson. Reviewers praised his comic Dortmunder capers, readers ecstasized over his lean Richard Stark noirs. A novel like The Ax—as brilliant a black comedy as the film Kind Hearts and Coronets—should be famous.

This is the first Dortmunder, and it’s on a frolic of its own.