February 20, 2009
MarkBernstein.org
 
Follow me on Twitter

Checking it twice

In my original vision of Tinderbox, notes referred to themselves. A note’s actions could move information within a note – for example, extracting information from the text to store it in an attribute – but notes didn’t refer to other notes.

A number of early power users convinced me that this was too restrictive. Sometimes, for example, a note wants to know where it is. But the change was gradual; Marc-Antoine Parent told me right at the start to go all the way to XPath (and I think Aaron Swartz did, too), but I didn’t grasp the need.

Tinderbox 4.6, comings soon, advances things in some interesting ways. First, while keywords “parent” normally refer to this note, we have a syntax to let them refer to other notes. For example:

randomChild(/config/lottery tickets)

chooses a random lottery ticket. This lets you do things like randomly-rotating ads on a Web page, or epigrams in your journal entries. The same syntax lets you navigate through complex relationships:

$Name(nextSibling(parent))

is the name of your parent’s younger sibling.

Finally, we’re experimenting with allowing expressions like

$Name($which)

where which name we want is stored in an attribute, or even

$Name("runCommand(myScript)")

where the name we want is computed by evaluating an expression. This opens the way to some headaches, of course, but gives you lots of flexibility as well.

Will all this in fact be implementable? I think so, but I don’t yet know. Is it all desirable? That’s why they call it research. I mention it here, in advance, because we’ve guessed wrong in this area in the past, and my readers are awfully clever.