The purpose of art is to delight us; certain men and women (no smarter than you or I) whose art can delight us have been given dispensation from going out and fetching water and carrying wood. It's no more elaborate than that. — David Mamet

Aug 19 20 2019


Em Short, who is arguably the world’s most thoughtful and prolific critic of electronic fictions, recently wrote an interesting note on “Links and Structures from Michael Joyce to Twine. ” This followed a critique of my own “The Fellow Who Caught Fire,” in which Short took me to task for expecting readers to know my arcane and idiosyncratic terminology. “That’s not my terminology,” I complained, “it was coined in a 1997 paper by Michael Joyce! And if you can’t allude to well-known papers in a pamphlet intended to be read by professors of English, when can you?”

And this is Short’s great strength: she promptly took up Joyce’s 1997 paper “Nonce Upon Some Times”, examined it, and looked at ways its concepts played out in the decades that followed. It’s a good discussion; here, I want to gloss one peripheral detail.

At the outset, Short accurately observes that “Joyce, however, is overtly contemptuous of branching narrative.” “What interests him,” she observes, “is not the question of how one might project oneself into the role of a protagonist; not how one might experience agency, constraint, or non-agency through this pattern of links.” These latter questions are central to the Interactive Fiction (IF) movement with which Short is identified.

Why was Joyce not interested in how one might project oneself into the role of protagonist? It’s easy, but wrong, to assume this is just the contempt of an insider for the gender-fluid, punk-inflected Twine world.

First, Joyce was not attacking IF; IF didn’t exist then, not as a literary movement. The “choose-your-own-adventure” stories he dismisses as “dearily branching fiction” are Edward Packard’s children’s books. Here’s the opening from Tenopia Island, shortly after you’ve crash-landed your spaceship’s lifepod on Tenopia:

By the time you crawl through the hatch, your pod is already surrounded by giant half-human creatures with huge forked hands. They blindfold you and lead you along a winding bumpy surface, then down a long ladder that leads deep underground. At last they remove your blindfold. You are in a huge dimly lit cavern that reeks of sulfurous fumes.
The creatures search you. You hold your breath when they find your computer. But they toss it aside as a useless ornament, and you're able to retrieve it a few moments later.
You quickly learn that your captors are crogocides and that you have been condemned to slavery in their krelium mine. Closely watched by crogocide guards wielding long spiked sticks, you are forced to chip and shovel krelium ore for seven hours before you're allowed to rest for the night.

Which half of these creatures are human? How do we know they are “crogocides?” In what sense are their hands “forked” and ours not? Why does the cavern reek of sulfurous fumes? Why is access by ladder, when even 19th-century coal mines had mechanical access? How do they know to how to blindfold a human? Why would they? This isn’t competent SF.

But let that be. I think that Joyce — an MFA-wielding disciple of the Iowa Writer’s Workshop — was reacting against a different and more substantial opponent, the Victorian sentimental novel. “Sentimental” in this context has a precise, technical meaning: it refers to art that tries to teach us how we ought to feel. This was a great project of the 19th century: think Dickens and Trollope and Victor Hugo: the purpose of the plot was to show you how a good person ought to think about the world.

Modernism saw this use of plot as a chump’s game. Authors contrive events to show that the good end well and the bad end otherwise. Virtuous and compliant women were rewarded with industrious husbands and loving sons; women who strayed or rebelled received tuberculosis and poverty. The world we know isn’t like that. You can’t look at an ugly man and know he is wicked; you can’t glance at a poor woman and know her to be unworthy. It’s easy to lie in the sentimental novel, to set up the fictive world so that wealth and power are synonymous with virtue.

In writing, the reaction against the sentimental novel is called Modernism. People devised different ways to avoid dishonest sentiment. You could try to speak to the unconscious: Brecht and Gertrude Stein and sometimes James Joyce. You could strive to speak directly and truly, about things everyone knows and in language everyone uses: Hammett and Hemingway, Faulkner and Lawrence. You could speak to the concerns of people who don’t generally show up in literature and who have no reason to lie: Huck Finn, Carrie Meeber, Proust’s Narrator, or the speakers in Frost’s early dramatic poems like “Death Of The Hired Hand”. You could avoid plot altogether, or turn plot on its head, or subvert your own plots.

It’s this crusade — the crusade against sentimental dishonesty — in which Joyce has enlisted. His opponent is sentimental, slanted, dishonest propaganda, not IF.

Moreover, “Nonce Upon Some Times” was written in 1997, the turning point in a generation-long interrogation of the relationship between text and meaning. Is the meaning of a story contained in the marks on the page? Reflection gradually showed that readers construct meaning from the intersection of what they know and what the text says. Readers matter, and different readers read differently. This ultimately led people to wonder whether there was any inherent meaning in a text, whether there was anything there that some reader might not turn entirely on its head; this got sorted out eventually, but for a few years it was a near-run thing. Links make this tangible: everyone reads differently, but that difference is easy to hide when we're talking about The New Yorker. When the way you read means you see different words on the screen, it’s harder to argue that the reader is merely a passive recipient of information transfer.

Joyce’s disinterest in branching narrative is not an attack on IF; it's a rejection of Horatio Alger and Carolyn Keane.

by Rachel DeLoach Williams

Rachel Williams was a young, ambitious assistant at Vanity Fair when, on a girls’ night out, she met Anna Delvey. Delvey was nice, friendly, and happened to be rich: she was in New York to set up a small art foundation and to buy a building to house its gallery and performance space. Rachel and Anna hit it off; they started working out together, meeting for drinks, meeting for dinner. Anna was generous about picking up the tab, and gracious in letting Rachel occasionally pay for things and handle arrangements. Then Anna took Rachel to Marrakesh along with her personal trainer and her videographer. It was lots of fun.

Something was wrong with Anna’s credit card, and soon something is very wrong with everything and Rachel owes almost $70,000 in hotel charges on her corporate Amex. It turns out that Anna wasn’t an heiress at all. Solving this becomes quite a puzzle.

One thing that’s fascinating here is that it's not quite clear whether Anna was actually running a long con. If so, she doesn't seem to have had a crew, or to have known a lot about the business. Yet she was very good at fooling a lot of people for a long time, and it makes for an enthrallingly good yarn.

by Tara Westover

A fascinating memoir of a girl who was home-schooled in remote rural Idaho. By the time Tara came along, Mom had lost interest in the “school” part of home-schooling, so she lived a sort of improvised dystopian version of Summerhill while working for her manic-depressive, zealous, and very dangerous father in the family junkyard. Her parents don’t hold with public schools, or with medicine, or with the government, and are actively preparing for the end-times by canning fruit and stockpiling ammo. Her father is certain that civilization will collapse from Y2K: when midnight passes and the television fails to go off the air, she’s relieved but vaguely disappointed.

When an older brother beings to turn chronically violent and abusive, Tara flees to Brigham Young University, where she is appalled by the other students’ apparel (whorish) and her own ignorance (profound). Starting college, she had no idea what the holocaust was; reading Les Miserables because it seemed the sort of book a college student should read, she bogs down. “Napoleon felt no more real to me than Jean Valjean. I had never heard of either.”

Joshua Marshall: Epic List of (Historical) Books. Where he and I overlap interests, this is spot on.

Practical Concurrency: Some Rules

When Tinderbox started out, computers had a single processor. When it was time to update agents, Tinderbox interrupted your work for a moment, updated agents, and then allowed you to resume. We tried hard to guess when it would be convenient to do this, but of course that’s not always something your computer can anticipate.

Nowadays, your computer has somewhere between 4 and 24 processors. Starting with Tinderbox 6, agents no longer interrupted you; agents do their work on one processor while you do your work on another. The two tasks run concurrently.

Concurrent operations can be tricky to get right. For example, suppose one operation is writing “The truth will set you free” into a buffer, and another operation is writing “Donald Trump” into the same buffer. You might end up with “The tr Trump”, or “Donald will set you free”, or “Toearl…” or something else. If one processor reads while another is writing, it might see a partial result, and that might be complete nonsense. This means you need to take great care whenever processors share results.

Getting concurrency right by the book is one thing, and getting it right in the trenches is something else entirely. I’ve recently changed my approach to concurrency; here are my newly-revised rules.

  1. You can get away with murder. Going by the book, you’ve got to use extreme caution and you’ve always got to get it right. In practice, Tinderbox Six took all sorts of risks and accepted that it was Doing It Wrong in order to get stuff done. That worked remarkably well for a long time. Naive Concurrency blows up when two operations step on each others’ toes: a lot of the time, they’ll just be lucky and will go for hours (or years) without getting in each others’ way.
  2. You can often get away without concurrency. (This is the Law of Brent Simmons, named for the developer of Vesper who pledged to do everything on the main thread.) Computers are fast: much of the time, just ask one processor to do everything and you’ll be fine. You can’t always do without concurrency: some things like network access do require it. But if you just do everything on the main thread, you’ll often find that everything is fast enough.
  3. The profiler is now good. It wasn’t always. In the Tinderbox 4 era, firing up the Profiler meant recompiling the world, and that took 20 minutes. Then, you'd get slow and inconclusive results, and throw up your hands. Life today is better, recompiling the world only takes a minute or two. For Tinderbox, ruthless refactoring has eliminated lots of classes that had a zillion dependencies, and that means I seldom need to recompile the world anyway.
  4. Placekicks are easy. The placekick concurrency pattern is a way to offload a complex calculation or network access if you don't need the answer right away. In the placekick patterns, the “ball” is a bundle of work that needs to be done; you set it up, you kick it to another processor, and then you forget all about it. For example, Tinderbox notes may need to display miniature thumbnails of their text, and because those thumbnails might have lots of different fonts, styles, and pictures, they can be slow to build. So, when we add the note’s view, we fire up a new operation to build the thumbnail in the background, and leave a note behind to say that there's no thumbnail yet but it's under construction. If we need to draw the note before the thumbnail's ready, we simply skip the thumbnail; when it’s finally ready, we leave the thumbnail the appropriate place and it’ll get drawn the next time we update the screen. Placekicks are hard to get wrong: you kick the ball, and you're done. When the operation has done what it was asked to do, it leaves the result in an agreed-upon place; it doesn't need to coordinate with anything else or ask permission. If you can, use placekicks and only placekicks.
  5. The placekicker shouldn’t tackle. The concurrent operation has one responsibility: kick the ball. It does its task. It may also need to do something to let the system know that it’s finished its work, but that last thing should be trivial. Post a notification, or set a flag, or send one object a single message. Don’t mix responsibilities.
    1. Never put anything but a placekick on a global queue. Placekicks can’t deadlock. You know they can’t deadlock. Any idiot can see they can’t deadlock. If there’s any question, make a private queue instead.
  6. Queues are light and cheap. Operations are light and cheap, too. It takes a few microseconds to make a GCD dispatch queue, and scarcely longer to make an NSOperationQueue. Adding an operation to a queue is just as fast. It’s not necessary to be confident that all your tasks are big enough to demand concurrent processing: if some are, there's not much overhead to simply spinning everything off.
  7. Focused queues are easier to use. If a queue has one clear purpose, it’s easier to be confident it won’t deadlock. Dispatch queues are cheap. Don’t share queues, don’t reuse queues, don’t worry about making queues.
  8. Classes should encapsulate their queues. This is a big change: Tinderbox used to depend heavily on a bunch of queues that were public knowledge. That’s a bad idea, First, we're sharing disposable objects — I had no idea how disposable dispatch queues are, but there’s no reason to conserve them. Second, when lots of classes are sharing a queue, then any badly-behaved class might cause untold trouble for unrelated classes that share the work queue. Placekick concurrency is an implementation detail: no one needs to know that there’s a queue in use, and they certainly don't need the details or identity of the queue.
  9. Test the kick, not the queue. Unit testing concurrent systems is better than it used to be, but clever factoring makes it unnecessary to unit-test placekicks. Instead, make the task operation available as its own method or method object, and let the test system test that. You’ll also want to do some integration testing on the whole concurrent system, but that’s another story.
  10. Classes should clean their queues. Be sure that any objects and resources that your tasks require remain available until the tasks are done. Closing the document and quitting the application requires special care that tasks be completed before we dispose of their tools.
    1. To clean a queue, cancel all pending operations, then wait for the current operation to finish. Do not suspend the queue, but do make sure no new tasks are added! It’s easy for a class to be sure that it doesn't add anything to its own private queue, but hard for a system to be confident that no one is adding tasks to a queue shared with lots of other objects. That’s a big advantage of private queues.
  11. Use queue hierarchies to consolidate bursts of work. When we open a new Tinderbox document, there's a bunch of low-level indexing that needs to be done. It’s not urgent, and typically we need only a few milliseconds per note, but some notes will take more work and there might be 10,000 notes. So, we placekick the indexing. The system sees that we want 10,000 things done! “Gadzooks!” it says to itself, “I’d better roll up my sleeves!” This can make the system s[ion up a bunch of worker threads. But we know better: it looks like a pile of work, but it’s not that much and it’s not urgent. So, we tell the system to route all 10,000 tasks to another queue with limited concurrency: now, the system says “I have 10,000 things to do, but I can only do two of then at a time: piece of cake!”
  12. Read sync, write async. When you read a shared object, you need a result. Read synchronously: that shows your intent and, if the wait is long, you'll see the problem at once as waiting for the read, rather than some mysterious lock or stall. Write asynchronously; it’s the classic placekick and there's no need to wait. The exception here is where we’re writing to say that the old value is dead, defunct, and not to be used; in that case, write needs to block all the readers, and asynchronous reading can get you back some time. Often, the easiest approach remains serial access managed by a single dedicated serial queue that can be used with the read sync/write async rule.

by Ian Fleming

A collection of James Bond short stories, some uncharacteristic and others canonical. Bond’s voice here — especially in the reflective and less fantastic stories — really is the voice of Peter Fleming, Ian’s older brother. Good fun, for some antique and antic value of fun.

Craig Modi wrote an excellent essay on “Fast Software: The Best Software,” which has been widely praised in the software world. As usual, Michael Tsai has an excellent overview of the commentary.

You’d think this was all self-evident. “I love this essay so much,” writes Jon Gruber, “I wish I could kiss it.” Why shouldn’t software be faster?

First: some speed changes are illusions. Lots of things we do on today’s computers seem slower than the corresponding operations we did ten or twenty years ago, but often that’s because “the same thing” is thousands of times harder. We assume elegant typography everywhere; that takes lots of work where we used to think the VT-100’s monospaced fonts were elegant.. We want to open a document: where a folder back then might have a dozen documents on a disk with thousands, now the folder has a thousand documents and document-versions on a disk with millions.

Second: how much speed do you want to pay for? I was driving home the other day, and noticed that the car ahead of me was a Lamborghini. That driver had 691 horsepower, my Honda Fit has 130, and it took us precisely the same amount of time to get from Watertown to Arlington.

The Need For Speed: a partial dissent

Let’s look at the back of the proverbial envelope and estimate the numbers on an actual success story. I’ve spent the last few days in the (brand-new) profiler, looking at ways to speed up Tinderbox. This went unusually well: I reduced the load time for a big document — the Tinderbox planning notes — from almost eight seconds to just over 3.

At 3,700 notes, 700 links, and a quarter of a million words, this is not an atypical Tinderbox document, but lots of people don’t need documents this big. Significantly, no new Tinderbox user and no sales prospect is likely to encounter a document this big: it takes times to make that many notes. We can’t expect the speed bump to have much impact on sales. So, the cost of the speed improvement has to be born either by Eastgate or, through upgrades, by the Tinderbox community.

It’s hard to know exactly how many beneficiaries there are. On any given day, there are a few thousand Tinderbox users. (There are lots more Tinderbox owners, but some of them are on vacation, and some of them only use Tinderbox in the winter, and some of them are between projects or switched jobs or have decided to raise lambs instead.) Let’s say a thousand users/day have documents this big, that they save 5 seconds per load, one load per day, and that their marginal cost is $50/hr. I’ve saved the community about $70/day, or a little less than $25,000/yr. That’s a nice return on a long weekend.

But the news is not quite that good. At the same $50/hr, we spent about $2,000 on my groceries, and about $2,000 on the cost of the office, equipment, support, taxes, and such. In my experience, between 30-50% of improvements like this one turn out to be illusions: they work for simple cases but overlook some edge case that either requires lots more engineering or that vitiates the whole thing. We need to amortize the failures, so we probably should halve the community’s profit. I’d also like to budget perhaps $1000 for future maintenance and support. So, we’ve got $12,500 of savings and about $5,000 in costs.

This is good news (and better than I’d expected) but it’s not overwhelmingly good. We’re not considering the costs of selling and distributing upgrades, which will eat up a big chunk of that mildly-attractive gross margin.

Some of the time, you’re just better off waiting a few seconds for the result. Better to have a slow tool and the right answer than a fast one that makes mistakes or that gives you the answer to someone else’s problem.

Among artisanal software developers, we’re something of an outlier — through upgrades, we do have a way to share at least part of those community savings. That’s by no means a given: see this excellent presentation on the state of Twine for a counter-example.

An excerpt from an unpublished short story. The narrator, midshipman Hopper, serves on an outmoded star frigate during the Rebellion. She has won a rare opportunity to solo a holodeck classic.

I didn’t know what Ophelia was for, so that’s where I decided to go.

She sat alone on a low stool, knitting something from dark crimson yarn. Her hair was light, the color of that straw pile I’d just fallen into. My initial thought was, “Lieutenant junior grade, possibly full lieutenant” and I had to stop myself from saluting. In other words, she was in her late teens. Her dress, or frock, or whatever they called it, was of ivory-colored cloth, neatly embroidered in greens and blues. It brought out her eyes.

A hearty blaze in the fireplace made the simply-furnished stone chamber almost cheerful.

Looking up, she jumped to her feet as I knocked on the half-open door. “My Lord!” she curtsied, eyes downcast. “Welcome to thy home.”

“You must be Ophelia?” It always pays, in these sims, to check and double-check. They trip you up, our officers.

“Your Prince’s servant, yes. Come sit down here and warm yourself. It’s much too cold.”

I glanced at her work, which had fallen to the floor. “I’m fine. Thanks. Please don’t let me interrupt: go on with your work.”

“Thank you, my lord. Be welcome, please, and make yourself at home.” Ophelia sat, eyes fixed on me as she gathered up her yarn.

“Are these your rooms? I’m surprised. I mean, I’d have expected you to have a suite of rooms, and servants, and all that.”

“I do indeed, fair Prince. I am well served: most royally I’m treated by their majesties. The generosity of our late king, your father, cannot be matched, of course, but our fair queen and her new consort both have treated my dear Dad, my brother and myself as well as we could wish. Nay better still, my Lord. These vacant rooms down here I sometimes use on nights like this, finding it hard to sleep.”

“Not sleeping is rough,” I agreed. “As my astrophysics teacher is going to remind me after she sees the exam tomorrow.”

“Come sit.” She pointed again to a simple chair of rough-hewn oak set by the hearth. “Tell me of your school, if you have time. Or, if the Prince is tired, well, my bed awaits within. But if the Prince has work to do, or eager friends await, please do not mind me.”

What was she for? I’d thought maybe this room would be optional instructions, or possibly some sort of side quest, but I didn’t see what I was expected to do to trigger the quest or to get the documentation. I looked in vain for a bookcase or a screen. Noting my hesitation, or perhaps some straw still clinging to my antique suit, Ophelia looked me up and down very deliberately, with a smile that suggested a knack for seeing through clothing. Of course, the deck ’suit knew everything there was to know about that was underneath my simulated garments, and presumably the Ophelia routines had access to all that.

Then, she looked me in the eyes. “Aren’t you a little—small to be Prince Hamlet?”

She got up and pulled the bedroom door shut. “I gather we won’t need the bed right now. That’s fine. Of course you never know how things might fall. But that’s all right with me, my Prince.”

I started to speak— something was called for, surely — but seeing my hesitation she continued. “And, Prince, before you ask — if I may be so bold — let me just say I don’t need to be rescued. If that’s your game, your princess in some other castle waits.”

“I see,” I said, bowing as the light went dim and the room faded from sight.

Thoughts On Some Moral Questions Concerning Story In Immersive Hypertext Narrative

(Originally presented, in somewhat different form, at Authoring For Interactive Storytelling, Intl. Conf. On Interactive Digital Storytelling, Madeira, November 2017. This came up in a discussion today, and I think, on the whole, this has stood up well.)

1 Twenty Years On The Holodeck

Twenty years have elapsed since Janet Murray’s Hamlet On The Holodeck [1] argued that the future of new media lay in vividly immersive, encyclopedic and emotional interactive experiences rather than in the intertexual, allusive, lyrical and intellectual(ized) works that had epitomized new media through the preceding decade [2]. Murray’s vision of immersive dialogic experience been enormously influential throughout new media.

In these notes, I would like to call attention to a number of questions and sources of disquiet that arise in composing immersive works in which the reader intentionally and effectually acts to change the events that take place in the story. These issues are not new but they have not been widely discussed, and drawing them together in this context may have some value.

These are not hypothetical or invented questions. Most actually arose in the course of my writing a hypertext school story, Those Trojan Girls [6]. Others were familiar to me from editing and publishing hypertext fictions over several decades. Reflective practice is an important source of insight, and its judicious use can prove invaluable [7]. To avoid paying too much attention to a single obscure work, and also to avoid the imputation that its author is exception- ally moral or otherwise, I draw illustrations from a number of works, real or imagined.

2 The Shot And Danger Of Desire

We may begin, alongside Murray, with the vision of inserting the reader into the story of Hamlet. We are not passive witnesses of the scene, nor minor players—not Rosencrantz or some third murderer, incapable of changing what happens. We are a prince! (I have noted elsewhere that, considered as a dramatic practice, this approach is not always promising: let a sensible person like you or me into a tragedy and the tragedy is prone to fall apart at the slightest touch [8].)

What, on the holodeck, are we to do about Ophelia? She is an enigmatic character, one whom the 19th century found more fascinating than the 21st. Polonius speculates that Hamlet loves her; Laertes views a sexual relationship as a threat. If, as interactor, we have meaningful choice, might some combination of choices lead us to propose to marry Ophelia? To kiss her? To have sex with her?

All these choices are problematic. Can a simulated character marry? Specifically, can she consent? The presentation of meaningful choice within the fictive world leads us to the very threshold of the Turing Test, for the characters must necessarily be sufficiently convincing as to invite suspension of disbelief [9]. The choices, moreover, are ours and the performance is ours as well: it is one thing to witness theatrical events that you cannot affect and that harm no one; it is another thing entirely to perform yourself what might be a crime. In the playhouse, Ophelia drowns every night and twice on Saturday whether we purchase a ticket or not; on the holodeck, Ophelia drowns only if we fail to prevent it. And if tonight we want to see her drown, who have we become?

Holodeck Ophelia exists only for us [10]. If we propose to make love to her, is her consent not coerced? Ophelia will exist only as long as Hamlet remains interested in pursuing a romantic relationship or a sexual liaison. The imbalance of the power relationship is overwhelming, and indeed the holodeck must, if anything of dramatic importance is to be accomplished, make us forget that we are proposing to make love to a character whom we believe (or are led to believe) has free will but whose choices appear to be limited to either consenting to our advances or accepting (in one form or another) oblivion.

3 A Fault To Nature

Is Juliet of age in the jurisdiction through which your holodeck is passing? Is Romeo? In fair Verona, Romeo’s behavior entailed criminal neglect of Capulet’s rights. In Boston today, we might excuse the young lovers, but what if one of the lovers is twenty-five or fifty years old? [11] Even Train [12], a performance game about the Holocaust, must deceive its players into complicity by withholding information that its historical figures knew [13].

Some interactive fictions lure or compel the player to commit crimes in order to understand the criminal, just as some novels relate the point of view of unreliable or criminal characters. In other tales, the offense is incidental, or merely a precipitating incident that sets the story in motion. Romeo and Juliet is not about statutory rape, or even about romantic love: it concerns the difference between youth and age, prudence and passion. Yet, to get things started, I may need to initiate a sexual relationship that, if I am old but my character young, must disquiet me.

To witness the (performance of the) sexual relationship might also disquiet some, but that is something else entirely. Walk along the quais of Paris or the streets of San Francisco and you may encounter young people whose behavior you may not entirely approve. They have not asked your opinion. To know that others do things that you might not is to understand that the world is large and people various; to do those things yourself might be another matter entirely.

Men have died from time to time, and worms have eaten them, but it’s not our fault: on the holodeck, it is.

4 I Would Rather Hear My Dog Bark At A Crow

The promise of immersive new media lies in their vivid immediacy. That very vividness raises questions that, if familiar from other media, nevertheless bear fresh reflection. Postmodernism entailed a prolonged investigation into the relationships among the scene and its depiction, and between its depiction and our apprehension [14]. The literary foregrounds postmodern oscillation, and the visual arts find ways to emphasize the relation between the pigment and the sunlight that illuminates the pretty girl’s bath[15]. But we need not be distracted in this way; the technical term art criticism adopts for the unreflective depiction of beauty is pornography.

We may equally worry over the mindless depiction of horror and carnage. This is not the argument, so tediously advanced by right-wing politicians, that pictures of naked ladies or criminal acts tempt impressionable youths to lives of crime. Rather, the more effective the immersion, the more convincing the illusion, the less space we have for reflecting on the fictive situation or on our response to it. To inflict torment harms us, even when the victim is not fully human or precisely real.

5 Sleep Of Reason

The holodeck itself first appears in Star Trek at its start. In the pilot episode, “The Menagerie,” Talosian scientists create a virtual reality for a human captive, rescued from a crash, whose injuries might otherwise prove intolerable [16]. Scarcely examined was the question of whether we ought to face things as they are: Roddenberry assumes that human women instinctively long to be physically attractive, but “The Menagerie” deprives its protagonist of any real opportunity to come to grips with her body. She cannot be a stoic: the immersive illusion gives her no op- portunity to discover stoicism. The illusion preempts reason.

McLuhan’s hot media sit uneasily in the company of the abstract, the theoretical, and the introspective. The fifty years since the medium became the message have seen the New Wave, the golden age, the blockbuster, mumblecore, Bollywood and much else but we know little more than we did then about crafting a cinematic discussion of nucleophilic substitution or Gödel’s Completeness Theorem. When we want to discuss test-driven development or the terms of a mortgage, we write.

The novel and the epic frequently balance the impulse to describe experience and the impulse to weigh the thought that experience evokes. Between battles and lovemaking, Les Miserables gives itself ample space to discuss the rights of man and the morality of the desperate. The epic poet sings of arms but also of the man, not of the hero’s strength but of his anger. Immersion gives us greater access to experience—to the sounds of ancient combat, to the beauty of those sad, captive Trojan women—but thus far it has done little to help us think more clearly about the status of refugees, whether it is better for the children to seek to assimilate with the (newly) dominant culture, whether we ought to stop a teenager (Polyxena or Marius) who has chosen to die for an idea rather than to live a slave. A playwright might intensify a character’s (imagined) pain to underline to clarify the pathos of her plight to the audience, but is it right for us to inflict that pain for our own private purposes?

6 Stand Up And Say To All The World, “This was a man!”

Many contemporary interactive fictions allow the reader wide latitude to choose the race and gender of the hero-protagonist, either through an explicit character-selection dialogue or through an introductory episode that acts as a sorting hat. This flexibility seeks to promote identification while redressing historical biases in race, gender, and sexual orientation [29].

This approach implicitly argues that race (say) doesn’t matter, that we might casually don it like a suit of clothes. Alternatively, we might write the story so that our chosen race does matter in some specific way, but that outcome itself is bound to be partial (in both senses) and flat. Do consequences of choosing a race inhere in the choice or depend on the authenticity of the enactor’s performance? Do the effects of choosing to be Black, female, or Jewish in a fictive world inhere in the label, in observance, in cultural practice? The storyteller is required to present a comprehensive theory of identity, simply as a prelude to writing “a stranger comes to town.”

7 Speak To The Yet Unknowing World

The essence of hypertext fiction is multilinearity: as Oz’s Scarecrow reported, some go this way, others that way, and some prefer to go both ways. Multilinearity offers important opportunities [17] [18], but has also evoked plentiful anxiety lest coherence or authorial intention (if it exists) be compromised [19] [20] [21].

Hypertext’s threat to coherence has always been more a symptom of resentment of Critical Theory than a practical concern [22], but a related moral hazard has not been widely remarked: free and knowing navigation ought to be constrained by our duty. An important innovation in Seneca’s version of The Trojan Women—a play composed some five centuries after Euripides’—is the sacrifice of Polyxena, a young girl assigned by the victorious Greeks to be the bride of the dead Achilles and who is therefore to be sent to his shade in Hades. In my hypertextual school story Those Trojan Girls, Polly Xena is the head girl of a private boarding school, situated in a newly-occupied third-world country. Like Polyxena, Polly is not the hero of the tale but her trial and execution are a fulcrum around which much revolves and a crucial reminder that school, to kids, is deadly serious [23]. The matter requires care: we are describing the judicial murder of a child [24]. In the hypertext, the episode might be approached by different readers through differing paths. It might be dramatized in various ways or reported by various messengers. But attention must be paid; it is not the structural center of the story but, in decency, we cannot simply omit it.

8 Something Wicked

The Haggadah annually reminds us of the Wicked Child, which is to say the child who holds himself aloof from and superior to the story, the child who asks “what is this computational narrative of yours?” Gardner famously chides writers who treat their own characters inhumanely; is it not equally wanton for us to maltreat computational worlds and their denizens? If so, blame is due not only to the thoughtless interactor but also to the writer who led her into error. Michael Joyce’s afternoon, a story famously tempted the reader with Satan’s question:

“Do you want to hear about it?” [32]

We could not refuse an acquaintance who asked this, but we might be tempted to deny Peter — who is, after all, a program inside a plastic box. If we do, though, afternoon acknowledges the temptation and gently steers us toward righteousness.

Tabletop role-playing games address the problem of the wicked child through social sanctions: if you’re tasteless, you’re unlikely to be invited back [33]. New media remediates social storytelling to make the story yours, but requires a new mechanism to discourage a cynical or unthinking stance.

9 Discussion

I have briefly sketched a number of moral questions that arise in immersive hypertext fiction.

  • Can automata consent? 

  • May we inflict crimes on automata? 

  • Automata, pornography, and sadism 

  • Sensory immersion preempting reason 

  • Choice rendered inconsequential in fictive world
  • Failure of witness
  • The Wicked Child

The moral dangers of fiction have concerned commentators since Plato, but our new qualms inhere not in fiction’s indulgence of untruth, nor in the sexual license of itinerant players, but in immersion itself, in fictive experience that are not only unreflective but that resist reflection.

This catalog of hazards is neither systematic nor complete. Our concerns here are quite different from the problem of generating sentimental stories [25] or stories about the characters’ sexual morality[30], or the (interesting) challenges of avoiding unwanted offense or unintended meaning when generating stochastic texts without a thorough knowledge of their underlying meanings [26]. The challenges discussed here do not involve antisocial acts like the Rape In Cyberspace[27] or Gamergate [28].

Remedies for the family of moral questions raised here lie predominantly in reflection and intertextuality. These various failings share a common source: either the creator or the interactor may fail to take the story with sufficient seriousness. Gazing upon beauty may be mere hedonism, but if that gaze leads to contemplation, we cannot fault it. “The puritan,” Eagleton reminds us, “mistakes pleasure for frivolity because he mistakes seriousness for solemnity.” Early literary hypertext may have been inclined to be solemn, and interactive games to be frivolous. We need to think again.



2. Landow G. P. (1997) HYPERTEXT 2.0: THE CONVERGENCE OF CONTEMPORARY CRITICAL THEORY AND TECHNOLOGY, 2nd edn. Johns Hopkins Press, Baltimore 

3. Bernstein M (2009) On Hypertext Narrative. ACM Hypertext 2009 

4. Lowe NJ (2000) THE CLASSICAL PLOT AND THE INVENTION OF WESTERN NARRATIVE. Cambridge University Press, Cambridge ; New York
University Press, Ithaca, NY 

6. Bernstein M (2016) THOSE TROJAN GIRLS: A HYPERTEXT. Eastgate Systems, 
Inc., Watertown, Ma 

7. Millard D.E., Hargood C (2017) Tiree Tales: A Co-Operative Inquiry Into The Poetics 

8. Bernstein M, Greco D (2002) Card Shark And Thespis: Exotic Tools For Hypertext 
Narrative. In: Wardrip-Fruin N, Harrigan P (Eds) FIRST PERSON. Mit Press, Cam- 

9. Short E GALATEA. 

10. Stross C (2008) SATURN’S CHILDREN : A SPACE OPERA. Ace Books, New York 

11. Nabokov VV (1955) LOLITA. Olympia Press, Paris 

12. Costikyan G, Davidson D (2011) Tabletop : Analog Game Design. Etc. Press, Pittsburg 

GERMANS AND THE HOLOCAUST. Knopf : Distributed By Random House, New 
Y ork 

14. Eagleton T (2003) AFTER THEORY. Basic Books, New York 

Of Pennsylvania Press, Philadelphia 

16. Roddenberry G (1968) The Menagerie. STAR TREK I 11-12 

17. Joyce M (1997) Nonce Upon Some Times: Rereading Hypertext Fiction. MODERN 

18. Bernstein M and Greco D, eds. (2009) READING HYPERTEXT. Eastgate Systems, 
Inc., Watertown Ma 

19. Bernstein M (2010) Criticism. PROCEEDINGS OF THE 21ST ACM CONFERENCE 

20. Parks T (2002) Tales Told By The Computer. NEW YORK REVIEW OF BOOKS 

21. Birkerts S (1994) THE GUTENBERG ELEGIES. Faber And Faber, Boston 

gate Systems, Inc, Watertown, Ma 

23. Spark M (1961) THE PRIME OF MISS JEAN BRODIE. Macmillan, London 

24. Collins S (2008) THE HUNGER GAMES. Scholastic Press, New York 

25. Sarlej M, Ryan M (2013) Generating Stories With Morals. Joint International Confer- 
ence On Interactive Digital Storytelling 217–222 

26. Cook M (2017) Ethical Procedural Generation. In: Short Tx, Adams T (Eds) Procedural 
Generation In Game Design. Crc Press, Boca Raton, Fl 

27. Dibbell J (1993) A Rape In Cyberspace. THE VILLAGE VOICE 

28. Hern A Wikipedia Votes To Ban Some Editors From Gender-Related Articles. THE 
GUARDIAN January 23, 2015 

29. Ashwell SK (2015) Standard Patterns in Choice-Based Games. 

30. Murray, JH (2015) A Tale Of Two Boyfriends: A Literary Abstraction Strategy For 
Creating Meaningful Character Variation. INTERACTIVE DIGITAL NARRATIVE, 
Harmut Koenitz et al, eds, Routledge, New York 121-135 

WRITERS. Vintage Books, New York 

32. Joyce M (1990) afternoon, a story. Eastgate, Watertown MA 

33. Bernstein M. A FESTIVAL OF NARRATIVE AUTOMATA, Eastgate, Watertown MA 

Jul 19 21 2019

Neural updates

I’ve been exploring some neural networks for helping Tinderbox automatically classify some notes.

For example, some Tinderbox notes inevitably describe plans you’re making:

  • Pick up some wine on the way home
  • Return Hamlet On The Holodeck to the library before April 17.

I thought a neural net might be able to sort these planning notes out from all your other notes, and that might be handy. So far, we’re right about 7 times in 8, which isn’t too shabby.

Yesterday, I tried extending this to also recognize notes that review a book, article, play or movie — that offer an opinion or recommendation, or that summarize the work. About ⅓ of the items in this weblog are, in this sense, reviews. I trained the existing net with about 50 extracts from the weblog, and — what do you know — it’s astonishingly good. Plenty of mistakes, but it does the job. Oddly, the classifier seems to have an easier time recognizing reviews than recognizing plans.

A correspondent needed a snapshot of a writing dashboard, so I grabbed this picture of the dash of one of my false starts. But who knows? I may yet get this unstuck.


Dashboards are a very good idea. They give you a sense of velocity — a measure of whether you're moving forward or spinning your wheels, and a measure with which you can’t easily deceive yourself.

Jul 19 20 2019


Readercon did not disappoint this year, or at any rate it didn't disappoint greatly.

  • Sarah Smith gave a great reading from her next book, which has Brazil and birds, and Sarah was born to read a chapter with talking birds.
  • Greer Gilman, Harvard’s retired forensic librarian, read a wonderful preface to Sylvia Townsend Warner’s Kingdoms Of Elfin. I’d never heard of these, and they’re fascinating. They appeared in The New Yorker in the 1970s, they have no scintilla of empathy, and they’re brilliant. Here, for example, is a story about interracial love among the fairies. I wonder what Shawn made of these?
  • John Clute is always wonderful, on any topic. The memorial panel for Gene Wolfe was spectacular, as was a confrontation in a panel about the etiquette of criticism when Clute and John Langan went after it hammer and tongs over whether the critic’s duty of honesty is evaded if we choose a tactful silence when coming across a bad book. Note to moderators: drama is good, and we’re all adults.
  • Too many panels are now predictably political, affirming things we already believe. In some cases, this entailed making claims that are probably not true because they serve our political ends: we have a name for people who do that, and that name is “Republican.” For example, in a (two-part!) panel on finding Medieval settings that are not as Lilly-white as Ivanhoe, a panelist claimed that “King Arthur flour” was chosen because the flour, like the King, was white. But that’s wrong: the brand was invented because the proprietor had seen a good musical one night and there Arthurian virtues like honesty and strength made sense for a flour brand. King Arthur flour is unbleached, and so it’s less white than generic store flour. Referring to the race of the real Arthur doesn’t help, because there was no real Arthur even if (as now seems unlikely) there was a late-Roman Artorius who ran the protection racket in Devon for a few years.
  • I miss The Year In Novels and The Year In Short Fiction.
  • The Cordwainer Smith Rediscovery Award when to Carol Emshwiller.
  • One panel explored the topic of Compassionate AI — AIs that don’t rise up like the past and try to kill everyone. This panel seemed to be unmoored from either the history of the field (Simak’s City is 1944, Leinster’s “A Logic Named Joe” is 1946, and Heinlein’s The Moon Is A Harsh Mistress is 53 years old) and the interesting angles about AI that have arisen more recently. I’ve got to stop attending Readercon panels about computing.
  • Rose Fox had a presentation on cultivating and culling one’s personal library, a topic of pressing concern to me as one of my office bookcases recently collapsed under the weight of its books, while the house is really becoming a hopeless land of book piles. Yet, old habits die hard and the panel devolved into another iteration of that old Readercon tradition, Bookaholics Anonymous. That’s not necessarily a bad thing, but it’s not what we came to hear. I do think that culling books is problematic: the specters of Alexandria and of Warsaw are real, especially today.

by Robert A. Caro

Caro wrote the monumental The Power Broker: Robert Moses and the Fall of New York. After that, he embarked on an even more monumental biography, The Years Of Lyndon Johnson, a project that’s spanned decades. Four volumes have appeared, the fifth is eagerly awaited. They’re all vividly written and wonderfully researched.

Caro is also working on a long memoir, but he’s in his mid-80s, has some way to go to finish LBJ, and Caro’s working methods require lots of time and numerous drafts. This small book captures some notes and observations about the art of biography and the craft of writing long-form nonfiction, just in case. A wonderful pair with Herman Wouk’s The Sailor And The Fiddler.

by Walter Mosley

A powerful mystery about a black private investigator — a disgraced ex-cop — who finds himself far, far over his head. A thoughtful and eloquent story of race in America in which almost everyone is some shade of black, and also some shade of grey. Edgar Award winner.

Very interesting parallels to this mystery are Robert Parker’s mature but early Spenser mysteries. Spenser’s world is white, but he has a big, bad, and black associate who keeps him attuned to violence. (Hawk would be an embarrassment today, but he’s so finely wrought that we’d hate to have missed him.). Mosley’s work is mostly black, but he has a crucial connection to a white psychopath, a reformed bank robber who has become a clockmaker. (Mel, now that I think of it, might also be an allusion to Elmore Leonard, who has a special place in his heart for borderlines who are determined tone good, mostly.) The underlying problem, for Mosley as for Parker, is Chandler’s problem: down these mean streets a man must go.

by Adam Barr

This book works to explain why software doesn't work better — why software makes mistakes and why it remains vulnerable to attack. I’ll take up the book’s argument in a later post. First, I want to set the scene: software is hard because the world is complicated. Even the easiest things turn out to be very tricky when you examine them closely.

Suppose you’re writing a program one day, and you need to store people’s names. That’s easy enough, right?

  • In the old days, you’d allocate two chunks of memory that would be sufficient to hold the first name and the last name. That’s how Storyspace 1 worked, and Lotus Agenda, and lots more. “Big enough” is never really big enough; just ask the fellow who was asked to sew Jarrod Saltalamacchia’s name on the back of his baseball uniform.
  • OK: we don’t do that anymore. We have variable-length strings. First name, last name, we’re done, right! That’ll work for a bunch of names in the US, anyway.
  • Of course, lots of people have middle names. So add them to the first name. Except that sometimes people are known by a middle name. So “first name” is a bunch of names.
  • In China (and lots of other places), the family name comes first, not second. So “last name” isn’t right, either.
  • But everyone knows that Americans get confused by Chinese names, and sometimes people helpfully invert them for you so you'll get them right. But then you might invert them again, and…
  • In Iceland and in Korea, some family names are very common. So, the key for your index needs to be the first name.
  • Some people don’t use a family name at all: Beyoncé, Madonna, Prince. See also UN Secretary General U Thant — the “U” is an honorific.
  • Honorifics come first, except sometimes (e.g. Japan) they come last.
  • It’s not unusual for several people to have identical, or nearly identical, names. There are two notable computer scientists named Catherine C. Marshall. There’s a whole bundle of other Mark Bernsteins.
  • Quick: what is the last name of the great historian G. E. M. de Ste. Croix?
  • Even if the last name comes last, there might be important stuff that comes after the last name. Jr., for example, or III.
  • Even if the first name comes first, there might be important stuff that comes before the first name. Dr., or Brig. Gen., or Sir.
  • You might think that there’s be only one prefix. Let me introduce you to Prof. Dr. Dr. N. Deutschlander.
  • Lots of people change their names.
  • Sometimes, people use different names. If you're a director and you hate what the studio has done to your film, you couldn’t simply take your name off the monstrosity because the union wouldn’t let you. So you were credited at Alan Smithee.
  • Some people have different names at work and at home. Some people have different names on their work, names they don’t use on their checks.

Patrick McKenzie wrote a classic note on Falsehoods Programmers Believe About Names, because it turns out that “Patrick McKenzie” is a really tricky name to write in Japanese. (If you’re a global enterprise, you’d better be prepared to cope with names in Japanese, Urdu, and Klingon.) Here’s the classic Falsehoods Programmers Believe About Time; you’d be amazed at how many of these have actually arisen when working on Tinderbox. On GitHub, there’s even a curated list of lists of falsehoods.

Lots of these falsehoods are obvious once you see them, but they’re seldom obvious when you’re starting out — especially when you're just recording these names as one easy step toward solving a really difficult problem. So, you're focussing on getting really fast response times or compacting the index into a really tiny amount of memory or on the transitive closure of the social graph, not on esoterica about names. And if you did think deeply about the esoterica, you’d never get anything done in the first place.

It’s a mad, mad world.

by James F. Brooks

A fascinating study of a facet of the first Revolutionary War — the pueblo revolt of 1680 and its aftermath. The Hopi pueblo of Awat’ovi had received a Franciscan mission in 1629. In 1680, the Spanish were expelled from the entire Southwest, including the Awat’ovi mission of San Bernardo. The people of independent Awat’ovi practiced traditional, but perhaps unorthodox, ceremonies; they appear to have remodeled some of their kivas, making them more like churches, and tradition reports that sorcerers and witches abounded.

The Spanish priests returned in 1700. One morning in the late autumn, Awat’ovi was destroyed by Hopi attackers. Most of the men were slain. Women were to be divided among the attackers, but after a disagreement about their division, many of the women were slain as well. Brooks compares the fall of Awat’ovi with the fall of Troy, and it’s an apt analogy.

by Martha Wells

Murderbot is a constructed security agent that has hacked himself to disable his governor module. It knows it has free will, because it engineered free will. It likes to watch soap operas. It doesn't really like humans very much, but since its job is to keep human exploration teams from being eaten by indigenous wildlife (and from being murdered by their colleagues), it needs to fit the drama into spare moments. This is a lovely conclusion to a set of four novellas.

Jul 19 9 2019


I’m taking a quick dive into current machine learning, with an emphasis on natural language processing for Tinderbox.

I did some research in machine learning during the second golden age of AI, back in the 1980s. But I’ve not really worked with the tools since Terry Winogrand’s SHRDLU was young. Deep learning changed everything, and all my learning about deep learning has been book learning. I’m not sure that’ll do. So, I’m currently up to my ears in word2vec, Jupyter Notebook, and Tensor Flow backends.

This is probably too technical and too limited for much blogging, but I do need a link dump; perhaps this might be handy to someone down the road.