Projects
2023
I built several prototypes of hypertext systems between 2019 and 2023, all focused on the idea of linking snippets of text implicitly and bidirectionally when they appear in different contexts/documents, instead of creating explicit jump-links like on the web.
The various experiments are attempts to reimagine and prototype a different vision of the web as connected and overlapping documents/pages/media. The resulting system works similar to a wiki and shares a few similarities with Ted Nelson's ZigZag. It grew out of a hypertext system for Wittgenstein's philosophical Nachlass, a philosophical corpus of 20.000 pages with a strikingly non-linear structure. It is also vaguely inspired by Deleuze and Guattari's rhizome and McLuhan's notion of acoustic space. One aim of the project was to explore how theoretical ideas about non-linear structure can be turned into software and used practically.
Asterion is an experimental app for non-linear reading and writing that links together similar snippets using a subway metaphor, where similar snippets form the stations and the documents they appear in form the lines that connect them. Whenever a snippet appears in different documents, Asterion automatically displays bidirectional branches to other documents.
The app is built with Tauri, the similarity search is a custom inverted index using n-grams, all data is stored in a simple log-structured KV store written in Rust.
AssemblageDB is a transactional high-level database for connected webs of pages, notes, texts and other media. Think of it like a personal web, but easily editable, with more connections and better navigation than the web. It is high-level in the sense that it defines a document model similar to HTML but vastly simpler and with graph-like 2-way links instead of tree-like 1-way jump links. The data model is both:
All data is automatically indexed and supports similarity search using an inverted index built on n-grams. This allows efficiently finding similar snippets, which are linked automatically.
The DB is built on top of AssemblageKV, a simple embedded key-value store with MVCC implemented in 100% safe Rust as a log-structured hash table similar to Bitcask. Writes of new or changed values never overwrite old entries, but are simply appended to the end of the storage. Old values are kept at earlier offsets in the storage and remain accessible. An in-memory hash table tracks the storage offsets of all keys and allows efficient reads directly from the relevant portions of the storage. A store can be merged, which discards old versions and builds a more compact representation containing only the latest value of each key.
I first started working on a hypertext system at the Wittgenstein Archives Bergen, built specifically for linking together similar documents and snippets in Ludwig Wittgenstein's philosophical corpus (consisting of about 20 000 pages).
The system isn't public available (because the XML sources of the Wittgenstein corpus unfortunately haven't been released under an open license), but I gave a short talk presenting a prototype to a philosophical audience.