this time for sure


One of the happier days of my life so far was when I left a job where I had to use MSWord every day - often with embedded MSExcel spreadsheets - and started one where I never had to use it at all.

I still make documents of various kinds, but I make them with markdown/pandoc or, if fancy maths symbols are required, Lyx.

WYSIWYG doesn’t work, and is one of the grossest errors in the history of computing.

Why doesn’t WYSIWYG work? Because there’s a mismatch between the grammar of interaction and the grammar of definition. Everything maddening about working with MSWord (or any other word processor that doesn’t let you get behind the what-you-see and edit its markup) comes from this mismatch.

By “grammar of interaction” I mean the ways you do things with a mouse and keyboard: pointing and clicking, highlighting regions of text, dragging and dropping. You see the changes happening as you make them; there’s a tight feedback loop between acting and having something to react to. This is thought to make human beings happier and more productive, and up to a point it does.

By “grammar of definition” I mean the way the content and layout of a document is specified in some symbolic language. The symbolic language determines in the last instance what the document is going to look like; everything you do when interacting with the graphical representation of the document is modifying its symbolic representation in some way.

The experience everyone has when using MSWord is that there is something in the symbolic representation of the document - the computer has got something into its head about what you want to see - that isn’t immediately visible or tractable through the user interface. You can’t see the thing that’s mucking up your layout, you can’t select it or delete it or do anything to it, and it looks like the only way to make it go away is to delete everything in the surrounding area and hope for the best. This is known to make human beings crabby and superstitious, and to play a significant role in inculcating the feelings of learned helplessness with which “non-techies” approach even their most amiable and well-loved computing devices.

With a bit of experience, you get to know the most common of these glitches, and the quickest ways to resolve them. But it still feels like a bit of a black art. You’re not dealing with the document at its most fundamental level of representation; you’re stage-whispering instructions through a thick, velvety curtain. The same curtain that felt so plush and inviting when you first brushed up against it…

I don’t want to fiddle directly with the program’s internal data structures; that would be silly. But I would like to work with a representation of those data structures that is complete, concise, and readable/editable by both human beings and machines. And that’s what a markup language is: simply the cleanest, clearest, most tractable and predictable way of controlling what the computer’s going to put on the screen or send to the printer.


Restarting this blog, mainly to clear away a bunch of old broken links, ancient parish gossip of no abiding interest and posts about long-dead programming projects. It all still exists, it just isn’t on the main blog any more - go here if there’s something you especially miss.

What Have Howards End and Game of Thrones Got in Common?

Fantasy images human invariants: even in this world with magic/elves/undead horsemen/feudalism, people are like this. So what does Game of Thrones have to say about what people are like?

It’s a collection of fables of individuation. George Martin sets up expectations with respect to characters’ individual destinies, and generates narrative energy by frustrating/fulfilling them (an awful lot of chapters end up with someone apparently getting killed, who later turns out not to have been).

Game of Thrones’s point-of-view chapters concern characters who have individual destinies (which may or may not be thwarted, derailed or violently curtailed). In the background are “non-player characters” who are basically survival machines with rather poor chances of survival. The separation is similar to that enforced (in an ironic fashion) by E. M. Forster in Howards End: “We are not concerned with the very poor. They are unthinkable and only to be approached by the statistician or the poet. This story deals with gentlefolk”. So, one of the invariants preserved within Martin’s fantasy world is that of the bourgeois novel.

Now, I love fables of individuation, stories about how so-and-so is separated from their social self and forced, through exile and hardship, to become their true self. Such fables are vectors for social investigation (suppose you can’t be “you”: what then?) and the pay-off - revelation of true-selfhood in crowning moment of awesomeness - is typically deeply rewarding. But fables of individuation require a background population of selves held to be identical with their social presentation: inert human material, typically divided up according to established social stereotypes. A world full of “players”, with no “non-player characters”, would be impossibly busy and complex and…well, non-fantasy-like.

Her Jazz

My dear F. has started a blog, The Red Deeps, with posts (so far) about Ballet Preljocaj’s recent (and rather rum) Snow White, and Gena Rowlands’s astounding performance in Cassavetes’s Opening Night. If you’re hungry for intellectual intrigue and sensual excitement, I suggest you go there forthwith.

In other news, there might be some new stuff here eventually; or there might not. I’ve been writing some poems - they’re over here.