z icon indicating copy to clipboard operation
z copied to clipboard

🐢An incubator for a Zettlekasten Tool

#+TITLE: An incubator for a Zettlekasten Tool #+AUTHOR: Shivek Khurana #+URL: https://github.com/krimlabs/z

#+BEGIN_QUOTE The ultimate goal is to have an autocomplete for thoughts. #+END_QUOTE

After being introduced to Roam, I had multiple questions. The idea was powerful but I kept bumping into mental hurdles and improvement ideas. This document is my understanding of the Zettlekasten ecosystem. Hope you find it useful.

  • Introduction Wiki making software are as old as the internet, but a recently launched tool called Roam Research has infused fresh energy in this domain.

Roam Research uses a web based interface to make tree-shaped notes. Similar to S-Expressions.

It also allows you to make links between notes and paragraphs, similar to Luhmann’s Zettelkasten System.

** What is Luhmann's Zettlekasten? Zettlekasten is a German Word for Slip Box. Luhmann's system is an analog technique to link ideas using a special sequence.

** What is Roam?

For me, it seems to be a text editor with two special features:

  1. bi-directional links
  2. structured notes in shape of a list (tree/graph) and not free flow text

These added features lead to a personal knowledge graph. A Google for your brain if you'd call it.

Roam has a cult like following and was founded by [[https://www.linkedin.com/in/cwhitesullivan/][Conor White Sullivan]]. In a [[https://www.youtube.com/watch?v=Hw2kJF_kxjE][webinar]] in December 2019, he claimed that Roam was growin at 20% per week.

According to [[https://angel.co/company/roam-research/funding][AngelList]], Road raised an undisclosed amount of seed funding in January 2020.

  • Does Zettlekasten make sense? I take notes, a lot of them and I have tried a ton of products. If I see a notes app, I download it.

Over the years, my goto editors have changed from Google Docs to Google Keep to Markdown to Notion to iCloud Notes. As of now, I'm trying to switch to org-mode, because Emacs is my primary text editor.

The problem with all notes app is that the information exists in silos.

If I wrote something about a meditation on anger today, I might not be able to recall it afte two months, when I'm meditating on anger again.

Most note-taking apps are page based, however, our brain is a graph. Our brain links information but it's hard to link pages in a note taking app (that's perhaps the reason why we have only one search engine). Linking ideas makes it easy to generate new ones.

/I agree to the fact that linking is a trivial operation. But we need to consider the cognitive load of writing markup to link a note./

** Note taking is not a process of dumping information, but a process of organising it.

Feynman's ideas on note taking apply to everyone:

  • Writing gives us clearity
  • Writing helps identify gaps in our knowledge, this leads to things we need to do
  • Writing helps us share and teach, ie, lets us connect with brains of others

** Our brain is a graph But the current writing systems are just digital versions of paper. File names and folder structures impose meaningless heirarchy to concepts.

Analysing how our brain works, I believe that file and folder names don't matter.

*** Files should be treated like regions of the brain :protocol:

The prefrontal cortex is responsible for visual processing and the medula oblongata helps with instincts. But neurons in each of these region are connected to others. Similarly files should be treated like regions with connections to other regions. This representation is more true to how our brain operates.

*** Each file is a collection of neurons For example, I have a file named ~learning-emacs.org~. This file has information about Emacs and Org Mode. Over time as this knowledge becomes dense, I might want to publish a blog post. This blog post is a new region that refers to this existing region. Over time, a connected graph will emerge.

*** Lists and sub lists over paragraphs :protocol: Lists are like graphs. Paragraphs don't have any structure, this is something Roam gets right. Each list item should record temporal data and properties.

  • Problems with Zettlekasten Techniques ** Conceptual Problems *** Discipline It needs a certain discipline to write notes in a way that they can become nodes in a knowledge graphs. I have seen multiple people saying that, "I write while asking myself the question that in what context would I like to review this note in future".

**** Do we really need to learn this discipline? Don't we have mature enough NLP techniques to figure out these links automatically? Similar to what we do with logs, with something light weight like https://github.com/f-prime/fist.

*** Publishing Our thinking is non-linear but the process of consumption of information is linear. We learn using articles and tables. We learn by isolating the topic in context, ie. by removing connections.

Just like referring back to previous notes helps build context, publishing and getting feed back yields a new perspective. But Zettlekasten doesn't make a good fit for publishing. Unlike a paper, you need to deal with a graph of interconnected nodes. Where do you start?

*** Learning Curve I've developed a mental model of paper based writing. Shifting to another mental model will take some effort.

** Technical Problems *** The pr-org-reitory format Although org-mode is a plain text format, it cant't be used without emacs. Similarly, even if you are able to export your brain from a tool, you can't really use it. This gives a false sense of openness. And makes a great case for open source.

If your notes are objects in an s3 bucket, Roam is EC2, Just like emacs is EC2 for org. So a lockin is bound to happen.

*** IO There is no way to import my existing juice, ie just plain text notes which might not have links

It's hard if not impossible to take notes on Mobile. It's a fact that I don't have a computer all the time, that's probably the reason behind massive popularity of things like Google Keep.

*** Costs? I pay next to 0 USD for my current setup. Cost was one of the reasons I stopped using Notion.

*** Merging Entities What happens when I decide to rename an entity, or when I make a typo? Will the system notify me? Will the system rename all occurrences.

*** Open source and free? This is a tough question. It takes effort to create a software like this, so it should not be free, but I don't want to be locked in.

*** Security and Privacy This question is two fold, firstly should I have just one database for my personal and public life, because ideas and people overlap or should I have different databases for each, essentially bringing back the problems related to silos.

And if my life is in a graph, how do I ensure the security and privacy of nodes. Something like GPG will not be feasible because digital Zettlekasten essentially needs access to contents of a note, to make links.

Ideally, there should be a way to mark some nodes as private.

*** No emoji support I love Notion Emojis.

*** Native App An HN thread discussing [[https://news.ycombinator.com/item?id=23211851][Native Apps]] had a [[https://news.ycombinator.com/item?id=23216927][comment]] that caught my attention. [[https://news.ycombinator.com/user?id=djhaskin987][dhhaskin987]] said: #+begin_quote With Moore's law being dead, efficiency is going to get a lot more popular than it has been historically. I think we're going to start seeing an uptick in the popularity of more efficient GUI programs like the ones you describe.

We see new languages like Nim and Crystal with their only value proposition over Python being that they're more efficient.

Similarly, I predict we will see an uptick in popularity of actually native frameworks such as Qt over Electron for the same reason. We may even start seeing wrapper libraries that make these excellent but complicated frameworks more palatable to the Electron crowd, similar to how compiled languages that look like Python or Ruby are getting bigger. #+end_quote

This made sense to me. Desktop apps have gotten worse and it's considered OK if apps like Slack lag on 16gb MacBook Pros.

A notes app, is a tool, like Vim or Emacs or Photoshop. It has to be responsive. It has to be snappy.

  • Is Roam a monoply? No and yes. There are numerous Zettlekasten tools. But Roam seems to be the best in terms of implementation and ease of use. Other significant alternatives are: |---------------------+------------------------------------------+--------------+--------------------+---------------------------------------| | Tool | Website | Open Source? | Format | Notes | |---------------------+------------------------------------------+--------------+--------------------+---------------------------------------| | Workflowy | https://workflowy.com/ | No | Propreitory | | | TiddlyWiki | https://tiddlywiki.com/ | Yes | HTML | | | Athens | https://github.com/athensresearch/athens | Yes | Datoms/ Plain text | | | Neuron | https://neuron.zettel.page/ | Yes | Markdown | | | Org Roam | https://org-roam.readthedocs.io/ | Yes | Org | | | Zettledeft | https://github.com/EFLS/zetteldeft | Yes | Org | | | Dynalist | https://dynalist.io/ | No | ? | Exports to html and plain text | | Remnote | https://www.remnote.io/homepage | ? | ? | Built at MIT | | Drift | https://akhater.github.io/drift/ | Yes | HTML | A TW extension with neat UX | | Obsedian | https://obsidian.md/ | ? | MD | | | Notational Velocity | http://notational.net/ | Yes | ? | This was an inspiration for Deft mode | | Logseq | https://logseq.com/ | Yes | MD | Syncs to Github, runs in browser | |---------------------+------------------------------------------+--------------+--------------------+---------------------------------------|

This list is not comprehensive check this resource: https://www.reddit.com/r/Zettelkasten/wiki/softwarecomparison

  • Curiosity is the devil
  • Is there a Zettle equivalent for photos?
  • Inspirations |--------------------------------------------------------------------------------------------+---------------------------------------------------------------| | Notes | Site | |--------------------------------------------------------------------------------------------+---------------------------------------------------------------| | Wow! I like how the pages open on top of each other, also the rich previews are kinda neat | https://notes.andymatuschak.org/ | | This twitter thread talks about information in context | https://twitter.com/andy_matuschak/status/1202663202997170176 | | Transformational tools for thought | https://numinous.productions/ttft/ | | This person is trying something with python | https://beepb00p.xyz/exobrain/exobrain.html | | The term for linking paragraphs is "transclusion" | https://github.com/whacked/transclusion-minor-mode | | Emacs Freex | https://github.com/gregdetre/emacs-freex | | Semantic Syncrony | https://github.com/synchrony/smsn | |--------------------------------------------------------------------------------------------+---------------------------------------------------------------|

  • Will I build a tool? Maybe. I want to sit on this idea for a few months and wait for someone to build something. Athens and Org Roam look promising.

In the end, it's just not enought to make a clone. An high quality open source clone of a mature project is a value addition, according to Anand, but if Roam, or Athens or Org Roam end up doing well, I'll be happy to stick to one of them.

It's a better idea to draft a protocol to implement Zettlekasten. If multiple developers and companies can adopt a standard protocol, Zettlekasten will become ubiqious.

/Note: For Self: <2020-05-10 Sun 21:29> If you do decide to build a tool, check this please https://unifiedjs.com/ ./

  • TODO The Z-Protocol /Note: Make this more protocoly/ The Z-protocol is my attempt to iron out the details of the implementation.
  • I don't want date based notes or journal entries, our brains don't differentiate between time and space
    • The note taking system should also follow this convention
      • One single heirarch segregated by meta data
      • Just like regions of brain constitute a particular function, but indvidual neurons are indistinguishable, all notes should be written down in the same format and the magic should happen in links
    • However, I'd like the note to have a timestamp as meta
    • So a file name like .md
      • With the fields: CREATED_AT, TITLE and FILETAGS
  • Org mode is pretty cool, but it's nothing without emacs
    • Consider porting a subset of org to js?
  • Around the web |------------------+-------------------------------------------------------------+-----------------------------------------------+------| | Date | Title | Url | Ref. | |------------------+-------------------------------------------------------------+-----------------------------------------------+------| | <2020-06-09 Tue> | How Roam Research analyzes product design and team building | https://news.ycombinator.com/item?id=23117876 | 1 | | <2019-12-19 Thu> | Tiago Forte Interview | https://www.youtube.com/watch?v=Hw2kJF_kxjE | 2 | |------------------+-------------------------------------------------------------+-----------------------------------------------+------|

  • Thoughts and feedback chamber There is a lot of energy around the topic. Here's my attempt to collect what I consider relevant. ** Ref 1. *** infogulch #+BEGIN_QUOTE What I'm missing the most from it is self-hosting, large file support, full point-in-time history, and programmatic access. I want it to be self-hosted because I don't want to lose my "second brain" just because some company couldn't find a viable business model and went belly up 20 years from now. I want large file support so I can put everything in my life in it: pictures, videos, pdfs, web page archive files, source code etc and I don't want to pay uber-$$$ to store huge files in their cloud. And I'd like programmatic access so I can make my own additions. For example, every link/bookmark I add could download the webpage and cache it so I can search its content and so it's not lost when the website changes owners. #+END_QUOTE

*** gatleon #+BEGIN_QUOTE I've been using Roam daily for the last month. What I like about Roam is the markdown, the ease of creating bidirectional links, and the automatic daily notes. The daily notes feature particularly eliminates friction for me. I just start writing. What I don't like about Roam is its slow load time. Also writing does not feel snappy enough - if that makes any sense. I feel a slight delay at times between typing a key and seeing the character on screen. Every time that happens I like Roam a little less. I've never experienced that with an app like iaWriter, and as a result, even for all its lack of features, every time I use iaWriter I like it a little more.

I think what Roam is missing for me, besides improving the writing performance, is a weekly email digest somehow summarizing my notes. This could use the bidirectional links and give me a quick overview of what I wrote for the week. That would help improve my memory and be more introspective. #+END_QUOTE

*** iamben #+BEGIN_QUOTE I wish more of these note taking apps were fully encrypted. I know RR can encrypt parts of notes, but it's not the same.

It's probably paranoia, but if I'm journaling my life, business ideas, thoughts on contacts - I just want it to be encrypted on my devices before it goes into the cloud. I want each device to sync and decrypt locally. #+END_QUOTE

** Ref 2 *** Patrick Burridge #+BEGIN_QUOTE you cannot create meaningful strides in the furthering of human knowledge building upon a closed source tool written by a single opinionated developer. #+END_QUOTE