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

Michael Dirda.

Replace books where you found them. Don’t carry on loud or long conversations. Don’t boast to the owner or manager that the old paperback of Jack Vance’s “The Dying Earth” priced at $5 is actually its scarce Hillman first edition worth $100. Do look at the books themselves, not at a handheld device that indicates what they sell for online. Otherwise, prepare to be quietly and justly reviled by those around you.

See: Browsings.

Ross Douhat (NY Times).

The left-wing temperament is, by nature, unhappier than the moderate and conservative alternatives. The refusal of contentment is essential to radical politics; the desire to take the givens of the world and make something better out of them is always going to be linked to less relaxed gratitude, than to more of a discontented itch.
Apr 24 4 2024


Anna Gin writing on Telegram (in Russian). Nadin Brzezinski observes that, if you didn’t know this was written yesterday, you could easily think it was a diary from 1943. I took a stab at fixing up Deepl’s translation.

Today I stopped by my favorite flower store on Kharkov’s Avenue of Heroes. I was thinking that, if the electricity goes out during the day, I will tidy up the balcony. I will wash the windows, take out the flowers, and I’ll transplant the shoots because the roots are already kilometers long.
It's spring. No matter what.
The sales girl meets me on the doorstep. She says: “Oh no, what are you thinking? Begonias on the balcony this early? There might still be frost at night.”
And we stand in the amazing-smelling shop with the garden roses, and together we watch the weather. The siren squeals. We look at each other, and silently move away from the windows to the fertilizer section, and we talk about the dracaenas waking up from their winter hibernation.
God, I love my city.

Image: Kostiantyn Vierkieiev, Kyiv, via unsplash.

How we’re approaching theming with modern CSS, by

Based on Cube.css. More on cube here.

You have to make not just decisions about pixels, but also high-level organisation decisions which the design system helps to solve. Design system work is actually diplomacy work, a lot of the time.

Rebecca Solnit wants a joyous, inviting Left — not an angry, Puritanical one. Interview with Anand Giridharadas.

“There's a kind of absolutist idea that doesn't accept imperfect and interim victories, even though that's probably all we'll ever get because the total revolution, paradise on earth, is not in my view going to happen.”

Lessons from the experts, Ton Zylstra and Elmina Wijnia.

How To Unconference Your Birthday

Lessons from the experts, Ton Zylstra and Elmina Wijnia.

How To Unconference Your Birthday

From Madison House Chef. Tasty, and not too tricky.

The consensus is that these savory muffins are too sweet, and could use a bit more cheese.

by Patrick O'Brian

A very fine time at sea, revisiting part of what really was the great historical fiction series of the century. Wonderful characters, tons of detail, a very fine sense of place (and that place is often afloat), and a deft avoidance of perfunctory scenes.

by Stephanie Damrosch

Bourdain’s Kitchen Confidential, which transformed food writing, was modeled on Down and Out In Paris. Stephanie Danler’s wonderful novel of working the front of the house, Sweetbitter, follows the plan of The Naked and The Dead. This account of waiting tables at Per Se is clearly Two Years Before The Mast: we were not made for this job and we never completely belong to this world, but having taken the job we are going to do our level best to make it work.

by Diane Josefowicz

Zinnia Zompa is 13. She lives outside Providence with her sister Zenobia, who is a nuisance, and her parents, who are perplexing. Her father runs a factory that makes plastic beads. Dad’s accountant was Mr. Marfeo, who was recently murdered in the back seat of a yellow Mercury. “What it means to be thirteen: you scoff at your brokenhearted mother, and death just feels like a change in the weather.” Dazzling, haunting, and finely wrought, this is a short novel of wondrous shadows just slightly out of reach.

I greatly enjoyed Frederick Wiseman’s documentary, Menus-Plaisirs: Les Troisgros.

It’s not for everyone. First: it’s four hours! Second, it’s all found sound, and there’s no narrative: it’s strictly daily life in a Michelin 3-star restaurant in Roanne, France. (I was led here because I’m working on reading French, and was misled by the trailers into thinking you could get French subtitles. I’m never going to learn to hear French, not with my ears, but during the pandemic a colleague shamed me into working up a reading knowledge. I’m still pretty hopeless, but can manage a light novel and can plough through weightier things at need.). Still, there’s lots of interesting material:

  • It’s true: men don’t wear ties anymore.
  • The documentary is shot as chef Michel is gradually handing the reins to his son, César. It’s an interesting study of a transition in a significant family business.
  • We spend quite a lot of time in meetings, discussing a dish or a wine. It’s interesting how they work things out.
  • The balance in the documentary between the front and back of the house is very well done. It’s great to hear cooks discuss a dish and then hear servers describe it.
  • Michel gives a nice table side talk about kitchen visits, and how they like to have guests visit the kitchen early so the cooks can see the patrons and see who “table 2” really is. I’d sensed that it was an imposition to ask, but that if asked it should be done late, when things were less hectic.
  • Are any of the Troisgros books worthwhile?

For the past two weeks, I’ve been dividing a good deal of time to refactoring the classes that let Tinderbox parse actions. It’s been a long haul.

The Parser Class: 2001

The core of the Tinderbox action parser remains Parser, a utility class that dates to very early Tinderbox. Parser collects a bunch of functions that are useful for working with strings and character streams; for example, Parser::Trim() is a static function that trims whitespace from the front and back of a string. It’s used in more than a hundred places in Tinderbox. About half of the class is this bundle of static convenience functions, handy but not very consequential. The rest of the class deals with various chores involved in parsing a character stream. For example, there’s QuoteParser, which reads a quoted string up to the next quotation mark. This gets a little trickier than it sounds because there are questions like escaped quotes, quotes inside quotes, comments, and such.

The problem with Parser was that it was all built around a character stream — an istream — and every client knew it. That was OK in 2001, because there wasn’t a plausible alternative. Of course, actions will be written as characters! Remember, the original Tinderbox was written for System 9/Carbon; there was no other way to represent strings. It was reasonable, back then, to expect that attribute names would use ASCII. Chinese or Thai? No way.

Nowadays, you’d like the option to parse UTF-8 strings and streams. In particular, Tinderbox now recognizes \u2028 (Line Separator: ctrl-Return) as an alternative line break for use when [Return] is unwanted. Recognizing multibyte UTF-8 code points in a byte stream is an ugly mess, and that’s only going to get worse over time. It would be much cleaner, nowadays, to use a proper unicode string as the backing store.

Indecent Exposure

The problem was, dozens of classes — some of them complex — knew that Parser used an istream and felt free to manipulate that istream themselves. This is the problem of indecent exposure: Parser allowed its clients to know about Parser’s internals, and even to mess around with them. So that was the first part of the refactoring: replace the concrete istream with an abstract storage class ParserStorage. ParserStore needs to provide the same functionality as the istream, but it doesn't let anyone know what’s inside or how ParserStorage works. Then, class by class, I rewrote things to use a ParserStorage object.

Building Strings

Parser sometimes builds strings, such as lists of arguments. Those, too, had been built from characters. Now, though, ParserStorage offered ways to get unichars — full unicode characters. And you can’t just put a unichar into a character stream.

Here, again, we hide the implementation inside an abstract object, TbxStringBuilder, which does the things that we formerly did with the output streams. One by one, I replaced the old ostringstreams with TbxStringBuilder. Once again, hundreds of changes, but each isolated to one place. (The 2000-test unit test suite is fairly strong for the action language, both because actions are easy to test and because actions are so handy for testing the rest of Tinderbox: if something goes wrong with the action parser, a bunch of tests will fail right quick.

Keeping A Retreat Path Open

Of course, this was an opportunity to tidy and improve lots of code not immediately connected to the refactoring. I was not entirely sure the refactoring would work, but I would hate to lose all the other changes by simply reverting to the start. So, I took care that, if things went sour, I could return to the old implementation, now sheltered behind the new abstract classes. That was a huge help. It does mean that Tinderbox now carries along a few duplicate methods: several parsers have Token() to handle modern streams and LegacyToken() to handle character streams. The old methods do little harm, and we can jettison them once everything is happy.

Rick Perlstein traces the origins of Trump’s current nonsense to remembered moments in Hollywood movies of the 1970s and 1980s.

There was the time in the last year of his presidency, amid outbreaks of violence during Black Lives Matter protests, when he promised: "When the looting starts, the shooting starts." That was a memory he’d loosed from round about 1967, when it was a slogan of Miami’s racist police chief Walter E. Headley. His onstage panegyrics in the opening months of his 2016 presidential campaign cited the 1974 vigilante fantasy Death Wish. ("Today you can’t make that movie because it’s not politically correct," he lamented. Wrong as usual. It was remade in 2018.)
Mar 24 25 2024

Margin Notes

Jillian Hess on writing marginalia.

Margin Notes
For those less mathematically inclined, there are other ways to add to a text. I’ll leave you with this: a medieval reader added in a doomed duck’s final cry “queck” (or “quack”).

by Peter Englund

A fascinating group biography of the critical month in World War II, where the group is, basically, everyone. Englund describes details from the daily life of a fascinating range of people: a German junior officer stationed near Leningrad, an Italian junior officer adrift in the North African desert, a Liberty Ship under construction in Savannah, an Australian prisoner of war, an Auschwitz inmate, a Jewish family in Shanghai, a Malaysian sailor whose freighter has been sunk and who is adrift in the South Pacific. A few of the group are famous, but weren’t famous then: Sophie Scholl, Albert Camus. Most remain obscure. No one had a good month.

Mar 24 23 2024


What you can make with creme violette, besides an aviation.

How the Scallion Pancake Became the Most Versatile Bread in America. By Cathy Erway.

Scallion pancake breakfast sandwiches? Yes, please!

An email list I’m on (how quaint!) has been discussing moving the idea plane (e.g. the Tinderbox map) into three dimensions.

Bjørn Borud wrote:

I don't find graphs to be a particularly useful visual representation of knowledge. You can only meaningfully view them if they have few nodes. And no real-world graphs I've dealt with are small enough to view meaningfully. For those to be useful as a way to view the information you have to prune and abstract them. And even then, they do not lend themselves to rapid, intuitive understanding. Perhaps because automatic layout of graphs is a hard problem.

I have some thoughts.

1. Automatic layout of spatial hypertext graphs is usually a mistake. But there is no inherent need for automatic layout, as Storyspace showed 30 years ago.

Joyce, M. (1991). Storyspace as a hypertext system for writers and readers of varying ability. In Hypertext '91 Proceedings (pp. 381- 387). San Antonio: ACM.
Bernstein, M. (2002). Storyspace 1. In Proceedings of the 13th ACM Hypertext Conference, K. A. Stuart Moulthrop, and Jamie Blustein, eds. (pp. 172-181). College Park, Maryland: ACM.

2. Assistance in layout of spatial hypertext is certainly useful. Spatial parsers are one approach:

Marshall, C. C., & Shipman, III., Frank M. (1997). Spatial hypertext and the practice of information triage. In Proceedings of the eighth ACM conference on Hypertext (pp. 124-133). Southampton, United Kingdom New York, NY, USA: ACM.
Shipman, F., Hsieh, H., Airhart, R., Maloor, P., & Moore, J. M. (2001). The Visual Knowledge Builder: A Second Generation Spatial Hypertext. In Hypertext 2001: Proceedings of the 12th ACM Conference on Hypertext and Hypermedia, Hugh Davis, and David G. Durand eds. (pp. 113-122). Århus, Denmark: ACM.
Roßner, D., Atzenbeck, C., & Brooker, S. (2023). SPORE: A Storybreaking Machine. Proceedings of the 34th ACM Conference on Hypertext and Social Media, p. 1

An alternative approach, adopted in Tinderbox (, moves the spatial parser to the drag handler. Local geometries are induced on the fly, and suggestions expressed as “snap-to-alignment” forces.

3. There’s rather a lot of research on finding meaning in the knowledge plane cataloged under of “art: modernism.”

Thoughts On Graphs
Bernstein, M. (2023). The Indefinite Idea Plane Artistically Considered. International Journal of Design Sciences and Technology, 25(2), 1-10.

Information Architecture has predominantly followed Walter Gropius and Mies van der Rohe; I think we ought to be looking toward Louis Sullivan and Antoni Gaudí, El Lissitzky and Jackson Pollock.

Spuybroek, L. (2016). “The Digital Nature Of Gothic”, The Sympathy of Things. (London: Bloomsbury Publishing)

4. The goal of “rapid, intuitive understanding” is difficult to sustain. Computing is the last refuge of faith in structuralism, the conviction that all problems can be represented simply if we can discover the correct coordinate system. The universe might not work that way. Roman Jakobson and Claude Lévi-Strauss thought that perhaps it did, and that finding a good representation would lead to systems of human science as regular as group theory or statistical mechanics. If that is not in fact the case, we shall have to work with the universe we have, not with the one for which once we longed: see also the emptiness of our sky. Compare the early chapters of Red Plenty, which envision a breakthrough on operational programming discovered by a Soviet mathematician in the years immediately after WW2 and which led to a world in which the efficiency of planned economies outran the outmoded chaos of capital markets.

Spufford, F. (2010). Red plenty. (New York: Faber and Faber)

5. The intuition that three-dimensional representations will unlock The One True Representation Of Knowledge (TOTROK) is certainly attractive. What we can perceive, however, is a plane with some modest additional data from binocular vision. A surprising number of people don’t have effective binocular vision, and some don’t even know it. The difficulty of flying through information spaces was first discussed by Steve Poltrock and his colleagues at Boeing: it’s actually quite difficult to get student fighter pilots to think outside the plane. (I’m not sure I have the correct reference here.)

Fairchild, K. M., Poltrock, S. E., & Furnas, G. W. (1988). SemNet: three-dimensional graphic representation of large knowledge bases. in R. Guinon (ed.), Cognitive Science and its Applications for Human-Computer Interaction (pp. 201-233). Lawrence Erlbaum.

6. Some ancient certainties of interface design might be reconsidered. We assume that things will stay where we put them. We assume our boxes have edges and that edges are never lost. Few user interfaces make much allowance for multivalence, but multivalence is not a vice: it is necessary and ubiquitous. We have been saying that “everything is intertwingled!” since 1984, but it seems that we don’t want to believe it.

Bernstein, M. (in press) Thinking With Tinderbox, (Watertown: Eastgate Systems)

7. Though we might not be able to find simple representations for “everything known about computer science” or “the rights of man,” we must nonetheless, somehow, decide what we will work on next. That choice must be made, even though we cannot foresee all ends. Sartre’s student asks whether he should go overseas to join the Free French, or stay and fight in the resistance. We cannot know enough, and all courses may run ill, but despite it all we have to choose what to do with the time that is given us. Though grand totalizing structures might not exist, we can find meaning in the subgraphs of knowledge neighborhoods. That may be enough to let us decide: it may have to be.

Things Tinderbox thinks might be related:

By J. Kaiser. Tools for Thought in 1908. Via Chris Aldrich. Here’s a paper from a doctoral dissertation on the work of the author, Julius Otto Kaiser.

There’s going to be a total solar eclipse visible in New England on April 8. Here’s what you need for planning.