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

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 every 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

Lavender

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 (https://www.eastgate.com/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.

Josh Marshall at Talking Point Memo:

Think of scale as a mix of morphine and trust fund. It let’s you ignore quite a bit.

by Mary Norris

Oh, this was fun! Mary Norris was the longtime comma queen of The New Yorker, the person responsible for ensuring that you and I agree and that people from Manchester can be Mancunians if they (and the writer) like. The English language is full of odd nooks and crannies, and Norris explores them with wit and humor.


An earlier version of this note misspelled “Mancunians,” which reminds us why comma queens are necessary.

by Bernard Dionysius Geoghegan

After the Second World War, American foundations worked with the CIA to rebuild the intellectual world of Western Europe. Code explores the intersections between big ideas and big money; structuralism, in particular, received crucial boosts from American grants, and returned the favor by favoring a technocratic, rather than strictly social, solution to France’s postwar crisis. Geoghegan tends to posit that all robber barons were alike and that the foundations that lived after them are mere extensions of their interests, and so we learn little about the foundations and even less about the CIA programs they supported. The impact in France was crucial, and this volume documents that impact with precision and finesse.

Mar 24 10 2024

Boeuf Bourg

In the process of picking up the roast beef, I was tempted — tempted — to grab some prime short ribs. Would I like them cut to 1.5 inches or 2 inches? 2 inches, of course. They made a lovely boeuf bourguignon. Honey in the braising liquid was a real boost. So was the light beef stock I made a couple of weeks ago!

I watched Les Saveurs du Palais for French practice while the meat was braising, so I did sear the mushrooms and exchange the braising vegetables with additional onions, carrots and celery.

Keza MacDonald in The Guardian says the industry must stand up to right-wing trolls. (The industry will not stand up to right-wing trolls.)

This week, a 16-person narrative design studio has found itself at the centre of a conspiracy theory that holds it responsible for the insidious prevalence of “wokery” in modern video games. A group with more than 200,000 followers on PC games storefront Steam, as well as thousands in a Discord chat channel, believes that Sweet Baby Inc is secretly forcing game developers to change the bodies, ethnicities and sexualities of video game characters to conform to “woke” ideology.

Early in the week, a few of us were discussing getting together for a visit and a game. We needed a dinner plan. Pizza? Sushi? I suggested roast beef.

Roast Beef

This was pretty easy. After the beef (Savenor’s) had warmed up with plenty of salt, pepper and coriander, I seared the it on the Weber grill. I gave it about ten minutes more of smoke on the cool part of the grill, then into a 250° oven for a couple of hours. (Thanks, Ruhlman!) It was delicious with Yorkshire pudding and salad.

Sure, it’s an expensive cut. But it’s not hard to spend as much on takeout, and it sure was a treat.

Mar 24 6 2024

Girl At War

by Sara Novic

A fine debut novel by the author of True Biz. Ana Jurić of Zagreb was ten when she discovered she was Croatian, or rather that the cigarettes her uncle sent he down the street to buy for him are Croatian cigarettes, and that this provokes ridicule from the Serbian shopkeeper. That was the beginning of Ana’s war. Ten years later, she sneaks away from her Columbia University roommates to testify about her years as a child soldier. Sara Novic does a terrific job of showing the line between these two girls.

Mar 24 5 2024

Badges

In Tinderbox, a badge is a small icon that you can display in the corner of a note. Tinderbox offers a collection of built-in badges, and you can easily add your own. Each badge has a name; to use a badge, you set the value of $Badge to the name of the image you want. There's a nice browser that lets you select the badge you want.

Badges

At a recent Tinderbox meetup, I noticed a speaker fumbling to find the badge he wanted: he knew he was looking for (say) the telephone badge, but where exactly is it? I made a note to myself, “Add a search field to the badge picker!”

I’m playing today with a new kind of fuzzy search. First, we look for badges that match the string you type, and badges that contain the string you typed. For this, we use “localized standard case-insensitive” comparison, so “Phone” matches “phone” and “Hueckel” matches “Hückel”. That gets a lot of what we need. But what if you aren’t sure about the name? Is the badge named “airplane” or a “jet” or “travel”?

So, experimentally, we take a word embedding for English (for now), feed it your search string, and ask for the ten words nearest to your search. We search those words as well. This works pleasantly because it’s easy to choose the image you want from a short list of related images. Occasionally, you might find a better match than the one you originally intended.

How to start a zettelkasten, from Writing Slowly. (For what it’s worth, I think that the word zettelkasten is plural, and I think it is should not be capitalized in English.)


NB: What it was worth was, not much: zettelkasten is singular, the plural is zettelkaesten. Ouch. I still think it ought not to be capitalized in English unless it’s part of a quotation.