(2022-02-22) Brander Block Reference Mechanisms

Gordon Brander: Block reference mechanisms. Writing is linear, serial, and one side-effect of communicating serially is that you have to force ideas into some sort of order.

And so: stories. Authors flatten clouds of connected ideas into linear stories (lossy). Readers unbundle these linear stories, and stitch them into their own nonlinear cloud of connected ideas (lossy).

What if I want to take a detour?

Ted Nelson calls this “The Framing problem”. In what ways might we deconstruct stories into smaller thought legos that we can piece together into new ideas?

Actually, we do this all the time. In science and other academic research it’s called “citation”.

How to construct, deconstruct, and reconstruct thoughts into new thoughts? This was the original motivation behind hypertext, and there are a handful of software mechanisms that can help us do better than blue links. Here’s a roundup of approaches I’ve seen in the wild.

Break docs down into smaller thought legos

Most written documents are made up of something like a series of smaller “idea chunks”, usually paragraphs. What if we blew these documents apart?

you might save every block (paragraph) into it’s own separate file. If you’re using a database, you might save one database entry per block. (NodeWeb)

What is a document in this world? A list of block addresses.

A tradeoff: while individual blocks are useful ingredients, they are not always useful as standalone works. Blocks lack context, and may need to be stitched together into larger narratives before they make sense.

Purple numbers are unique IDs that are automatically generated and placed within paragraphs, making them uniquely addressable.

Obsidian uses Purple Numbers to implement block-based addressing

When you create a link to a paragraph in Obsidian, it generates a Purple Number, and literally sticks it at the end of the paragraph in question.

Offset links reference ranges in documents

What if you want to reference part of a work that spans less than a block, or spans just parts of two or more blocks?

Ted Nelson’s Project Xanadu uses a clever technique I’ll call offset linking

At the heart of Xanadu is a file called an EDL, or Edit Decision List. An EDL is a list of links, together with a range—a start position, plus length.

EDLs are a kind of standoff markup.

One challenge with offset links is that they are very brittle. If the document you are linking to changes, even a little, the link breaks.

the brittleness of offset links is due to mutability.

what if we paired offset linking with an immutable hypermedia protocol?

IPFS addresses files by hashing their contents

But there’s another way to mitigate the brittleness of offsets. The Web Platform Incubator Community Group recently introduced Text Fragment links. This is hands down my favorite web feature since the <a> tag.

Unlike Purple Numbers, text fragment links don’t require the cooperation of the document being pointed to.

A text fragment link will only break if the specific text fragment being referenced disappears from the document.

Even better, text fragments work in the web we already have. Here’s me creating a text fragment link in Chrome:


Edited:    |       |    Search Twitter for discussion