Cascading Style Sheets (CSS) have a reputation for being hard to learn and challenging to use well. One reason, I think, is that declarative languages like CSS seem to be hard to refactor.

Let's suppose, for example, that we're tweaking a layout to add a feature to a corporate home page. To make things fit right, we adjust some typography:

body#newFeature div.adbox h2 margin-bottom: 12px;}

Little ad hoc adjustments like this let designers put stuff where it belongs. Before you know it, you've got dozens of little adjustments.

Now, does this particular adjustment belong here? Or could it be moved up to adbox, or to newFeature? Perhaps instead of changing the bottom margin of H2 we should be looking at the top margin of something else. There are lots of places we could put the adjustment; which is right?

In practice, moving the rule is scary because you might break a layout in grotesque but unpredictable ways. Unit testing makes sense, but the layout you break might well be one you're planning to write tomorrow. When the layout does break, it can also be challenging to distinguish the cause:

the style you've written doesn't say what you think it says

a syntax error makes the style meaningless, so you've cascaded to some other style entirely

the browser you're using doesn't interpret the CSS correctly

you're looking at some cached CSS -- not what you wrote at all

I often have questions I'd like to ask the CSS interpreter. "Why isn't this floating?" "What makes you think that paragraph should be Verdana?" In a procedural language, I could fire up the debugger and set a breakpoint. In a declarative language like CSS, what can you do?

Update: Fazal Majid says the Mozilla/Firefox DOM browser 'makes debugging CSS a breeze. You can ask it to display the computed CSS style for a DOM node, or the style rules that were used to derive the effective style.'

by Stewart O'Nan and Stephen King

Two Red Sox fans, Stephen King and Stewart O'Nan, chronicle a year of fandom. They go to lots of games: King has great season tickets. They watch lots of games on television. They listen to the radio, they read the papers, they send each other lots of email. They are very careful to be fans, not journalists: they don't visit the clubhouse, they don't hang out with the guys. They're fans: they don't know stuff that you and I don't know, they just watch a lot of games.

It's a pleasant book about a pleasant season, the season the Red Sox won at last. At times, King and O'Nan seem dense: in the playoffs when the Sox were barely hanging on and their pitching was threadbare and everyone was wondering who could possibly throw tomorrow, they're still weirdly focused on the Yankees. Earlier, they seem completely unfocused when the Sox trade their Hall Of Fame shortstop for a pair of expendable fielders. It was a weird, fascinating transaction, but Faithful focuses on the disappointed grandkids.

Fannie Farmer (and, I think, Escoffier) are essentially about geography and motion. You know how to cook -- you learned in the kitchen -- but you're now called on to cook things that they didn't teach you to make back home. They're manuals for people who started on the farm, or in the old country.

Rombauer (The Joy of Cooking -- also, maybe, Julia Child) is essentially about technological and class mobility. Perhaps you don't know how to cook: you grew up in an urban boardinghouse. Or you grew up with servants. Or you only know how to make porridge and rice. Everything is explained, from etiquette to technique. These monuments of tech writing are, above all, about what to eat.

Alice Waters and Moosewood and the ethnic cuisine classics and the celebrity chef books are about ingredients and their use. You know how to look things up in the standard cookbooks; they're about teaching you the stuff that middle-class America has forgotten. It's a tradition that reaches back to MFK Fisher and really isn't about cooking, so much, as it is about the emotional life of food. These art books explore why you'd want to eat, especially since eating is bad for you.

I think there's something new in the air. Sally Schneider (A New Way To Cook) is new: it pretends to be a lot like Joy of Cooking or New Basics, but it isn't: it's not about recipes, it's about the ideas behind them. The Michael Ruhlman books (especially Making of a Chef) are about the ideas, too. I think Clotilde is really writing about ideas, too -- exploring the design space of food. I'm not sure what the new movement is yet or who is writing about it.

Friday night, I tried a fish recipe from the Cafe Pasquales cookbook. (Pasquales is a Santa Fe institution, and in recent years their cooking has been extremely interesting). It was an interesting dish because it has two sauces and uses them to really good effect.

On the plate, we have a crema that starts with 1T each of cumin and coriander seed, roasted in a very hot dry pan until brown and smoky and then mixed with 8oz yogurt, some lemon juice, and some cilantro. The book called for a couple of cloves of minced garlic; I went with six cloves of mexican-roasted garlic instead.

On top of the crema , we nestle a piece of mackerel, crusted with lots of oregano, salt, sugar, and pepper, and cooked 5 minutes/side in a very hot, oiled pan.

On the mackerel, we have a salsa -- essentially a home-made one-egg mayonnaise -- with lemon, a clove of garlic and some chipotle.

I expected this to be fussy, but it's really good. The salsa on the bottom with its toasted/burnt spices gives the fish a solid, smoky foundation, with hints of sweetness and smoke. The fish can be sauteed aggressively but doesn't need a lot of aggressive spice. The crema gives it bright notes and spice.

by Leigh Sauerwein

A quiet, graceful story of the minor nobility of 12th century France, the age of troubadours and crusades. Sauerwein deploys a very contemporary and sophisticated arsenal of writerly techniques -- present tense, timeshift, fragmented narrative, multiple points of view -- in the service of a delicate YA mission that lies somewhere between realism and historical romance.

It's very thoroughly considered and researched, though there's almost no description and absolutely no sign of the familiar "day in the life" trope. No characters spend time, for example, discovering that the 12th century was less clean than the 21st or that food and medical care weren't of a high standard. Indeed, since the word "troubadour" hasn't quite appeared in Eloise's time, Sauerwein lets her listen to the song of the trobar -- the French root for troubadour, so be sure, but perhaps it might be italicized in the English-language edition to warn us that it's a foreign word. (I know more about the 12th century than the average YA reader, and on first reading I thought a trobar might be a French bird, perhaps something like a trogon)

It's a brave book, a book in which young lovers remove their clothes (off-stage) and in which the all the protagonists know that the world does not revolve around them and that, if they are to have clothes or if there is to be magic, they must make their own.

The current assumption is that YA books should be plotful -- an assumption that has lately attracted a boatload of literary writers to visit the YA world. A Song for Eloise is not plotful; whether this will bother her readers or merely alarm the librarians may prove instructive.

My cooking has changed a lot this year. I'm using stock a lot more than I used to. I've got some adequate veal stock in the refrigerator now, for example, and some demi-glace left in the freezer.

Question: where do you keep your stock? I need a couple of good containers for storage. I suspect those Nalgene reagent bottles we used to use for dilute hydrochloric acid would be perfect, but what works for you?

The form’s literariness, then, is not a quality achieved by some weblogs and lacking in others. Nor is it a closely demarcated category 'that one must not cross,' serving to include some authors and projects while excluding others in the interest of a cleanly defined genre (Derrida, 1981). This literary nature of the weblog is instead the loose set of shared criteria that allows us to speak of a plurality of “weblogs” in the first place, and equally allows the form to continue expanding.

by David McCullough

I ordered this account of the first year of the American Revolution as soon as I read Joshua Micah Marshall's enthusiastic review in the New Yorker. McCullough crafts an exciting, readable, but scholarly account of Washington and his army, from the siege of Boston to disaster in Brooklyn and then, at the last moment, unlooked-for and redemptive success at Trenton and Princeton.

This is essentially the story of Washington and his army and a time when, for the first time, to be an American meant something new and important. Highly recommended reading for Independence Day.

The Witch's Yarn, by Keith Nemitz, is an intriguing exploration that lies between hypertext fiction and IF. It's a lot like Card Shark and Thespis; an episodic drama where the system puts the characters on stage and the reader decides which character or prop should act next.

The catch, I'm sorry to say, is that Nemitz tries to cram a lot of characters on stage (in pairs) in very little time. This means he has to establish character much too quickly and to paint characters with much too broad a brush.

But if you look at what both Murray and Pearce have to say, it can be boiled down to 'Let's have peace, and by the way, I'm right.' In other words, they are adopting a stated desire for peace as a rhetorical strategy to disarm opposition.

Experienced Tinderbox can benefit from an occasional dip into new Tinderbox features. Jon Buscall writes:

I'm leading a workshop for a client tomorrow. Whilst putting my notes and presentation together in Tinderbox I got into working with sticky adornments for the first time in Map View. What a sensible idea sticky adornments are.

Adornments are simply neighborhoods in the Tinderbox map -- they're usually colored and labeled, and they help organize the map. Adornments usually reside behind everything else, and you can move and resize them freely. When you move a sticky adornment, the notes and agents above the adornments stick to it; making it easier to expand a growing map.

Microsoft blogger tried to defend his company's decision to blog words like "Democracy" in Chinese weblog titles. That, after all, is his job: he's Microsoft's face to the blogosphere, and it's his job (where he can) to explain what Microsoft is trying to do. (Where he can't defend Microsoft, as in the recent gay discrimination ordinance flap, he's shown he can be strongly critical of his employer.)

Last time I looked, IBM had pretty much bet their farm on open source.

Bizarrely, they just emailed Eastgate (and, doubtless, lots of other vendors) with a demand that we certify that we don't use any open source software. If we do use any open source software, they want a pile of paperwork for each one. The email threatens that firms that don't comply will be dropped from the approved license database.

You'd think IBM would want to encourage people to use systems from companies like, well, IBM.

Last night as I left for home, I simply couldn't figure out what to cook for dinner. The wolf is nosing around the door these days, so it was of necessity scrappy affair.

Strozzapreti: I had about 1/3 of a bag of some very good dried pasta -- not enough, really, for dinner. And I had some leftover roast garlic from Saturday night. So, I very gently heated five cloves of roasted garlic in 2T olive oil and 1T oil infused with chilli peppers, and cooked up the strozzapreti for a primi. (Strozzapreti means "priest strangler". Who knew? Thanks to Antonio Deroma for the spelling correction and for proposing Tinderbox Weekend Italy.)

Grilled Tuna with mango chutney, pistachios, and coriander: We had half a bunch of fresh coriander on it last legs, and the fish counter was running a special on tuna. So I seasoned a hunk of tuna with kosher salt, some sugar, and some black pepper and dropped it on the Wolf grill for about ten minutes. Then I painted each side with magno chutney, dredged it in chopped unsalted pistachios I happened to have lying around, and finally dredged it in the chopped fresh coriander.

String beans: quickly sauteed in a nonstick pan with a small bit of butter, then finished with a bit of sherry vinegar.

Strawberry clafoutis: Last Friday, Linda went to the farm store for fruits and vegetables. It's a good time to buy strawberries. She did: she bought a whole box, six pints. So, I've been doing lots of things wit strawberries, and we're down to the last survivors. Linda picked them over, sliced them in halves and quarters, and splashed them with some triple sec. I whisked 3 eggs, then beat in 4T of sugar, and then added some vanilla and 4T of flour. Fold in the berries, turn into a couple of chilled, buttered ramekins that were lightly dusted with sugar, and then right into a 450° over for 40 minutes.

The best part: other than $10 for a hunk of tuna, everything was either an odd remnant or a leftover on its last legs. All improvised, but everything was OK. The tuna's a nice, if unexpected, combination.

Take the last twenty years of computer games -- the whole kit and kaboodle. Put them on a shelf. (Yeah, it's a big shelf) Now look over the shelf, and tell me everything we learn about, say, sexuality.

If I were a troll, of course, I'd have responded with force and vigor in their comments, and we'd all have an edifying flame war and everyone would have their teeth set on edge. But I'm not, and we won't. This is a really good example of why weblog comments are dangerous. Disagreement is essential to the progress of research. Keeping the disagreement within the realm of ideas, not persons, is essential -- the study of games is already too much like a club -- and the direct cut and thrust of comments emphasizes rhetoric at the cost of substance.

Raymond J. Barry, Amelia Campbell. Photo: Richard Feldman

Friday night at the American Repertory Theater, I saw a nice performance of Desire Under the Elms. Is there anything, anything, in the world of computer games that would lead you to say, "yes, that sort of reminds me of Eugene O'Neil?" That's Bernstein's challenge.

Is this an unfair question? Try some other arts. Painting? Sure. Music? I think so. Dance. No idea, but I betcha. Go ahead and play along at home.

"My Friend Hamlet" proposes a pair of different and more focused doubts about interactive fiction -- not about games in general.

If we let the a sane, sensible reader on stage, many dramas collapse.

If the reader is the hero, the reader will attack the boundaries of the system. That's what heros do. No system (and no human dungeon-master, for that matter) can consistently withstanding the stress.

Dramas depend on the specific natures of the characters. Lots of people with kids remarry, it happens all the time. Desire Under The Elms is about one specific, nasty, old man, Ephraim Cabot, who went out and got himself a fresh new wife. If you were his son, eager to inherit the farm and to see the last of the nasty old man who worked your sainted mother to death, you might handle the situation well or poorly but you probably wouldn't handle it quite as badly as Eugene O'Neil's Eben Cabot does. And if you were Abbie Putnam, you'd almost certainly make better choices about handling your stepson and your new baby.

It's all about the characters -- these specific people at this specific time. It always is. If young Eben were, say, Groucho Marx, we'd be off the rails in seconds. But shouldn't Groucho be entitled to read interactive fiction? (Memo: interactive dramas in which the reader-protagonist might tell really good jokes are a big headache.)

That's the first doubt. The second doubt: can any system (or a human dungeonmaster, for that matter) keep a work on the rails when the reader-protagonist might turn out to be Groucho, or Woody Allen, or my Uncle Lionel, or (for that matter) Hamlet? Someone so smart and witty that they do things unforseen? If you frustrate this ambition, you're left with....frustration.

Douglass is right in arguing that frustration is fine, we can use frustration. But is it enough? You take frustration and I'll take, say, passion -- I think we both know who's going to be in Scotland first.

Andrew Stern says, "I wrote a response in First Person." Yes, but this response rests heavily upon his long-awaited interactive drama Facade, and we still haven't see Facade and so no one is quite sure what his answer is. It's almost out -- and congratulation to Stern and Mateas! I hope they've got the answer; until they do, though, the question remains open.

Noah Wardrip-Fruin yawns.

It’s been aired in several high profile places, considered by many people in the field, and then left aside. Those are the characteristics of an argument that people don’t find interesting,

A redeeming response comes from Espen Aarseth, who cites important work by Selmer Bringsjord. Bringsjord is writing systems that compose very short stories derived from focused ontologies. But Bringsjord (in the article Aarseth mentions) is not discussing interactive fiction and he's rebutting a different objection entirely: can machines tell stories about people without known everything people know? It's an interesting question. I find Bringsjord's approach sensible and his preliminary results promising. It has nothing to do with "My Friend, Hamlet".

All of this discussion is over at GrandTextAuto, in the comments. I started to compose a comment, too. It was a gem: crushing, witty, vigorous. Now, that will show them!

No comment: I caught myself in time. Comments inspire acrimony, and we've got too much acrimony as it is.

First weekend back in Boston. Naturally, my perishable cooking components are exhausted -- I've been pretty much on the road for five weeks. So, up early and collected five or six pounds of veal bones for stock.

My pot isn't really big enough for this -- I could get by with fewer bones. But I'm hoping that more bones will prove to be better. If this is wrong and not just wasting $2.50, please let me know.

Tonight is the (very late) first grillage of the season. On the menu:

Margaritas (which I make with lots of fresh lime, not Rose's, and no sugar)

Jeremy Douglass wrestles with one of the apparent limitations of interactive fiction (IF, e.g. Adventure games) and identifies hypertext fiction as a notable counter-example. It's a useful, thoughtful post.

Douglass argues that the underlying puzzle nature of IF is an intrinsic limitation that can only be partly assuaged by careful hinting and skillful writing. Like other IF critics, he ignores the argument I made in "My Friend Hamlet" (Hypertext '01) and repeated with Diane Greco in First Person:

Tragedy requires that the characters be blind (as we ourselves, at times, are blind), and if you let a sane and sensible reader into the room, everything is bound to collapse. Take Hamlet: it's absolutely obvious that he should go back to school, get roaring drunk, get laid, and await his opportunity. He knows this. Horatio knows this, Ophelia knows this. Even Claudius and Gertrude know -- why else send for his college pals? Nobody can bring themselves to say the words -- that's the tragedy. But what's to stop the reader? Only brute force and error messages ("You can't do that") that call attention to the arbitrary boundaries of the world. If you make Hamlet a game, it has to be rigged.

Douglass points out that IF faces inherent mechanical difficulties that may prove intractable. Matteas and Stern have published a useful series of papers that illustrate the complexity of the underlying programming issues. (They've long said they had a solution and we'd see it real soon, and apparently we'll get a look shortly.) I'm arguing further that, even if we overcame all these problems, that we're still facing an apparently irreconciliable conflict:

Illusions that place the reader on stage necessarily founder: the promised freedom of action is inevitably contradicted by the limitations of the simulated environment. Interactive Fiction, whether the holodeck or Colossal Cave, asks us to find a creative, imaginative, and successful resolution to the dramatic problem. The imaginative reader is bound to think of things the creator never envisioned, and the reader's best thinking inevitably generates the dullest response: "I don't understand." The computational environment can never match our aspirations, and allusions to unlimited computing power of the future (the starship holodeck) can't rectify the fundamental problem: readers will always want to do things nobody (and no computer) could anticipate.

The hero will try to do things the author didn't think of: that's what heroes do. Card Shark and Thespis outlines some ways we could get the reader on stage, but they're closer to theater in the round than to IF.

Eastgate carries some nice 3x5 card briefcases. They're hand-made by a small firm outside Paris. This led to some extra headaches; it turns out that leather is seasonal (who knew?) and, when you're out of the nice light tan briefcases, that's all you'll be able to get until next year.

So, now we've got some nice red briefcases as well, and also some lovely, deep navy blue briefcases. We hadn't expected much, to be honest, but when the shipment arrived they evoked ooh's and ah's throughout the office. They're $45.

Amazon serves lots of images of book covers. Nat Gertler decodes the URL scheme, which could be useful for people designing web services. He provides thoughtful guidelines for using this service considerately.

For example, the Tinderbox macro ^do(amazonCover,ISBN) is easy enough:

The macro takes your ISBN number and plugs it into the URL, replacing the placeholder $1. Once you've typed the macro, you can forget about the mysteries of the URL scheme and retrieve a clean scan of almost book cover whenever you want.

by Gene Wolfe

A much-heralded and intriguing reconstruction of Arthurian romantic fantasy, The Knight is a resetting of heroic knightly adventure in the episodic vein of Mallory's earlier chapters. Percival, say, or Balan.

I didn't like The Knight all that much, but I must be mistaken. In February 2004, the New York Review of Science Fiction ran three pieces on this book. Neil Gaiman loved it. Lawrence Person adores it ("the sheer depth of his cleverness and hus absolutely masterful grasp of writing technique"). Dan'l Danehy-Oakes is "completely besotted" with The Knight, which he has already reread several times.

With the greatest sympathy, I can't see it. Wolfe's hero, Able of the High Heart, is a likable guy, a boy from the suburbs who cut down the wrong tree and winds up in faerie. And The Knight is a likable book. The style is clean but not showy. The talking animals are nicely drawn, the supporting characters are sometimes good (Idnn, a baron's daughter who would much rather be a milkmaid, for very good reason) but often not. Wolfe does some interesting play with letting the action fall between chapters, with lacunae and timeshifts, but none of it seems especially effective or drastically new.

In short, it's a pleasant book. It's not intended to be a page-turner, but it speeds along. I don't understand the fuss.

Going to a baseball game -- any baseball game -- without keeping score is incomprehensible to me. I'm always ready. When baseball season comes, I do not leave town without my cherished BBWAA scorebook. Hey, you never know when a baseball game will break out. That's why when I found myself in Phoenix covering the NBA's Western Conference finals in 1984, I was ready when the University of North Carolina rolled into nearby Tempe to play Arizona State on a convenient off day in the Suns-Lakers series. The Sun Devils beat the Tar Heels, 6-4, before 2,402, but that's not the half of it. I mean, do you have Barry Bonds in any of your scorebooks, batting third and playing left field for Arizona State? Well, I do.

This is another expression of the Tinderbox message: write it down, and look at it.

Baseball, for those of you following along at home in non-baseball lands, lends itself uniquely to a form of notetaking people call 'keeping score' that succinctly records what happens on each play or even each pitch. You can't really do that in football or basketball: too much is going on, the important things are often happening away from the ball, lots of things are happening at once. There's no time to stop and write stuff down. Baseball is easier; the pitcher throws, the batter swings and hits a sharp bouncer to the shortstop. He tosses the ball to second, forcing the runner, and relays to first to record the double play, and all the serious fans nod and write "6-4-3" in their books.

I don't think mere civilians can buy the BBWAA scorebook. I have a homemade scorebook somewhere, but I've never really liked it, and the scorebooks at amazon seem to have uniformly poor reviews from serious fans. Do you have a favorite? Let me know.

We're going to have to move a lot of code to yet another platform. But it'll be much less work than Tinderbox for Windows -- and a lot of the Tinderbox for Windows project infrastructure will help. We'll still have to cope with two frameworks, but it shouldn't be too terrible.

There are a lot of developers in the Metrowerks orbit, and the Apple explanations perhaps understate the trouble we're going to have. But I think it's going to be fine.

An entire day spent designing and implementing a pair of simple Tinderbox commands that help make maps easier to use. Expand horizontally expands a note until the whole title is visible; expand vertically does the same but adds more rows of text instead of widening the note.

by William Kotzwinkle

A failing, flailing university professor loses the manuscript of his novel in a fire. He takes a sabbatical in rural Maine, rewrites his book, and loses it when he leaves his briefcase outside and a wandering bear finds it.

The bear opens the briefcase, examines the novel, and sees that it has lots of sex and lots of fishing -- just about everything a bear would want in a novel. So, the bear steals some clothes and takes the novel to New York. Soon, the bear has an agent, a publicist, and a book tour.

All this may sound silly, but Kotzwinkle makes it work. A delightful book from start to end. (order
)