Today we're going to discuss the concept of Zettelkasten, who it's for, and how it might be applied in Emacs.
This isn't meant to be a tutorial. Even though I'll give an overview, this is primarily meant to be a discussion!
I've been reading the book How to Take Smart Notes by Sönke Ahrens - https://amzn.to/3rWzhHe (affiliate)
There has been a recurring note taking approach used in some form by writers and researchers since the 1500s where ideas and notes are stored on individual pieces of paper or note cards and organized in a way that enables the author to find them easily.
Zettelkasten, also known as the "slip box" method, is an approach developed by a sociologist named Niklas Luhmann who used it to write over 70 books and 400 research papers in his lifetime.
The system is designed to facilitate not only memory and reference, but the development of insight and ideas over time. The goal being that a written work can be constructed directly from the material that's been captured in the slip box after the author has been inspired to write on a topic.
Another good resource: https://zettelkasten.de/introduction/ Read Luhmann's own paper about it: https://luhmann.surge.sh/communicating-with-slip-boxes
The group who will derive the most value out of this approach are those who need to create new ideas and content out of their personal research.
What about programmers? Maybe not as helpful, but still useful.
The method is performed by capturing 3 kinds of notes:
Each of these has their own purpose and "lifetime" in the system.
These are the notes you will want to keep forever, and the ones that give you the most long-term value.
Each note will be focused on a single idea and written in full prose (but short!).
Permanent notes are given alphanumeric identifiers so that links can be made between them. The numbering system also introduces locality between notes:
This numbering helps to identify clusters of notes since related notes will have IDs that share the same prefix!
There are a few kinds of permanent notes:
These are the notes that help you organize your work on a particular project. Org Mode users should be quite familiar with this type of note!
This is the place where you store your TODOs for the project!
A project note is kept for the lifetime of the project it refers to and then either archived or discarded once the project is complete.
In the zettelkasten workflow, these notes are actually kept separately from the slip box in their own folder.
Capturing any ideas, notes, thoughts, during the day however is appropriate.
Fleeting notes are meant to be discarded after being processed!
This is where Org Roam shines! You can easily create and find notes with org-roam-node-find and create links between notes with org-roam-node-insert.
However, do backlinks give you the same visibility into "clustering" that the slip box does? Org Roam IDs are totally opaque UUIDs which don't follow Luhmann's numbering model.
Maybe org-roam-ui will help: https://github.com/org-roam/org-roam-ui
Also, will the infinite "space" of an Org document keep you from keeping notes short and single-topic?
Consider the follow note titles:
Being single-topic allows you to evolve ideas without source control!
Org Roam can also be great for this!
Can you archive project notes, though?
This is one place where Org Roam may deviate from the method. Since everything captured can easily be kept forever, will you actually discard notes that should be fleeting reminders?
Or should you even care about discarding them?
The "dailies" feature is very useful for capturing fleeting notes and linking them to your permanent notes, though I wonder if it won't encourage keeping the notes short and discardable.
It's great for journalling, but perhaps some journal entries should be permanent notes?
This is a question I was asked a few times after the first Org Roam video.
Why do I need Org Roam if I can quickly search across all of my Org files easily?
The answer is maybe you don't need it!
If all you want is a personal knowledgebase with notes that can be linked together, Org Mode gives you all the tools for it.
Org Roam removes the need for knowing where to put the notes, especially paired with a method like Zettelkasten. It also makes the process of linking much faster and gives you the opportunity.
The real benefit of Org Roam arises with the information stored in the database and how it can be efficiently queried. There's a huge opportunity for community package authors to build interesting functionality on top of this. You can also do it!