LifeLab vs Tiddlywiki
LifeLab vs Tiddlywiki
The similar
Data and code married together
The main concept I enjoyed from tiddlywiki is the tiddlers (I can't say this out loud in public, who would name it like that?!). Each tiddler is a atomic unit of information, and can be both executable code and data, it is stored either directly in the single html file (elegant, but not scalable) or as individual json files hosted by a nodejs server. There is no other distinction, both get indexed together. You can link and compose tiddlers by searching, instantiating and pinning them, so you can create custom views of things you need. In LifeLab, there is equivalent text block, code block and data block. I strongly felt this is my favorite data schema and all apps that did not conform to this did not click with me.
Metadata
In tiddlywiki, each block has metadata (key-value pairs) that can be set. I directly took this in LifeLab. Each cell has a metadata table users (OR code cells!) can write anything to. In the interface we can select which metadata to show under cells (by default, everything is a clean interface)
Malleability
In tiddlywiki, you can have tiddlers create views of other tiddlers via transclusion. Even more extreme, each tiddler can have javascript which directly modifies the runtime. Everything is javascript and html so tiddlers can create custom input forms and any sort of visualization, provided you write the code. People created entire new apps from tiddlywiki, like tiddlyroam, just by adding code tiddlers. This is arguably a tighter integration of code and data, since in LifeLab you have code cells that have to be loaded by the rust backend, executed by a code interpreter, and the results are sent back to the frontend. LifeLab is but an imitation of the deep integration tiddlywiki has. Oh man!
The dissimilar
Non-linear!
In Tiddlywiki, there is a strict lack of hierarchy and ordering UNLESS user enforces it via tags. In LifeLab, there is a non-negotiable journal view to have a timeline of information as thing are added, it is more geared towards tracking and logging information rather than zettelkasten-like writing and linking. You create pages to organize your blocks, which also enforce grouping. In tiddlywiki, you can easily lose a block and you only summon in when needed. In LifeLab, everything needs to have a place (removing a block from todays view deletes it) and has to maintain social harmony.
The Syntax
One thing I did not enjoy about tiddlywiki, is the fact you need to learn tiddlywiki to get better at tiddlywiki. I did not enjoy the syntax at all! I am good at python, so I want to use python to make it better. This is fundamentally incompatible world view (and frankly, only being able to use python probably strictly limits the note taking apps I can ever use)
For example, I did not enjoy learning the syntax to do queries
{{MyTiddler}} transcludes a single tiddler
{{MyTiddler||TemplateTitle}} displays the tiddler through a specified TemplateTiddler
{{||TemplateTitle}} displays the specified template tiddler without altering the current tiddler
{{MyTiddler|Parameter}} transcludes a single tiddler with a single parameter
{{MyTiddler||TemplateTitle|Parameter|SecondParameter}} transcludes a single tiddler through a specified TemplateTiddler with two parameters
{{{ [tag[mechanism]] }}}
{{{ [tag[mechanism]]||TemplateTitle }}}
I managed to make some work but forgot how I did it right afterward and when I see triple brackets my mind just nopes out. The python api is significantly more verbose (since it's imperative not declarative), but it does allow me to understand it better.
blocks = nb.query_all()
nb.transclude([block['id'] for block in blocks])
Tiddlywiki also uses wiki syntax instead of markdown syntax. Now this is a minor point, because LifeLab only uses markdown for the text, it does not support linking via square brackets. I did not enjoy having to learn different ways to write lists, or make text bold in tiddlywiki compared to what I was used to.
Mobile almost-first
Tiddlywiki kinda works for mobile, but the UI is painful to use. It is consistent across both, just scaled down. For LifeLab, I painstakingly spent claude tokens to make a responsive interface that recognizes different levels of granularity between mobile and desktop. In mobile, you want to jot down quick notes and maybe upload an image or set a task. In desktop you want to organize, digest and have more breathing room to write. In LifeLab the views are distinct. and equal time was spent between both. However, as a major kudos to Tiddlywiki, it is probably possible to create a very similar mobile first view just by hammering it with sufficient LLM force.
