I have plenty of notes on Zettelkasten, but none describe how I actually cook it. Here I’ll try to capture my process.
Before we begin, I have to note that Zettelkasten is not merely about writing notes—it’s a much wider process for developing ideas that starts with reading and finishes with externalizing knowledge (writing posts, books, etc.). Note taking is only a tiny part of it.
Another warning: I do not follow “pure” Zettelkasten process (if there is such a thing). My process is tailored to my needs and has been evolving for years. You should not follow it word for word—read it as an overview and try parts that interest you. If you’re looking for a tutorial on how to start a Zettelkasten, that is not it.
Capturing literature notes
The process starts with an inflow of ideas: reading, watching, listening.
I mostly read books, research papers, and I watch talks. I read less and less articles online—I find most to be too shallow (compared to books), too narrow (dealing with specific technical issues rather than long-living ideas), and not worth taking notes on. (Though there are great ones!)
I read multiple books in parallel (≈10). Some are long and tedious, some are light and easy. Having multiple books allows me to pick whatever is interesting for me at the moment, instead of forcing myself through a book. Which means I enjoy reading, and read more as a result.
When I read, I focus—the reading and taking notes are the only things that I do at that moment. I do not read while commuting (unless that’s an easy read). I do not listen to audio books.
Focus is also a requirement for speed reading. When I am not focused, I don’t remember what I’m reading and have to re-read paragraphs.
While reading, I take notes on paper (small Moleskine notebook). I don’t highlight. The idea is to take non-verbatim notes—expressing notes in your own words instead of copying passages word by word. Taking non-verbatim notes improves conceptual understanding.
Laptop users tend to write verbatim notes, so I try to read off laptop (I use physical books or Kindle). When reading on laptop, I’ve caught myself copying or re-typing paragraphs and phrases (even though I know that’s a bad thing!). Copying paragraphs in longhand is more tedious, so I shorten and rephrase more instead (though that took some practice).
I also find it easier to speed read with physical books.
When reading/watching electronic resources, it helps sometimes to do two passes. On the first pass, I just read and don’t take notes. On a second pass, I skim or watch at 2x speed, searching for interesting ideas and taking notes. During the second pass, I usually have a good conceptual understanding, so I only search for prompts and I don’t read, so it becomes easier to describe an idea briefly in my own words rather than read the full paragraph and copy it.
Capturing fleeting notes
Another inflow source are random thoughts that happen during the day. I capture them on my phone using Orgzly and sync them to my laptop using Syncthing. When I am by laptop, I use org-capture and org-capture-extension for Firefox.
I use the same flow for virtually all inflow: random thoughts, articles to read, tasks to do, emails to answer.
Once a day I process my inbox: literature notes from notebook, fleeting notes, tasks, and articles from org file.
During the daily review, I retype literature notes from my notebook into digital files. (There are little notes per day, so retyping doesn’t bother me.) I maintain a file per resource (book/article/paper/talk).
Then I try to summarize each chapter or so—what the author is saying in a nutshell? I feel like this really helps me to ensure that I understand what I’ve read (crucial for heavy texts).
I manage my bibliography with org-ref, ivy-bibtex, and org-roam-bibtex. You can see it at § Bibliography Index. (§ Books, § Papers, and § Online pages are generated directly from BibTeX files.)
If I find a literature note interesting, I process it further and write a permanent note. Not all literature notes are converted into permanent notes immediately; sometimes they linger for a while until I find them useful; and sometimes this never happens.
Fleeting notes are transformed into permanent notes, added to other notes, or just deleted. I do not store original fleeting notes.
Articles to read go into my reading inbox (more on that later).
Tasks and emails are refiled into todo lists.
Permanent notes are the centerpiece of Zettelkasten. I try to keep notes focused, atomic, short, and in context.
a note describes one idea only. This makes notes reusable—focused ideas are easy to apply in different context. This also makes notes linkable—when developing an argument, I can link a specific idea (instead of extracting it from a wall of other ideas and arguments).
a note is self-contained. You can understand it without reading the rest of the notes.
I can open and work with 6 notes in split on my screen simultaneously. Also, longer notes are usually a sign that I cram multiple ideas into one note.
- In context
ideas are linked with other relevant ideas.
Structure notes are kind of a table of contents for Zettelkasten (some call them Map of Contents notes)—they help me group notes on a topic.
When the number of notes in a group is small, you don’t need structure notes—you can just cross-link all relevant notes. But when the number of notes grows, it stops being practical—it is useful to have an overview note.
My structure notes usually start with the
§ prefix. Examples are § Zettelkasten and § Architect role.
Sometimes I collect examples of something (for example, List of Programming Languages, List of Reification examples, or List of Projectional Editors). Until I separated the concept page from a list of examples, the backlinks were too crowded—the § Programming Language page linked all ideas about programming languages as well as all programming languages themselves.
I created “List of something” pages and aliased them to “#something.” Then I could tag programming languages with #programming-language and ideas about programming languages with § Programming Language.
This helps to keep the list of backlinks clean.
In Roam Research, there is a common practice of creating placeholder notes—empty pages for concepts that you’re likely to use in the future and that could be useful for cross-linking.
I don’t do that. I find placeholders quite useless. I rarely filled them, and most of them just kept living with a single link. So I deleted all placeholders I had.
Another practice common in Roam Research is linking every word that you happen to have a note on. Combined with placeholders, this could result in every second word being a link.
I try to be more deliberate with linking: I only link if the current note contributes something to the linked note. If I happen to write about programming, I don’t link every single “programming” word. I might not even link the programming note at all, unless the current note contributes something interesting to the programming in general.
I find it useful to separate my notes into multiple slip boxes (i.e., directories).
Currently, I have 5:
/: permanent “knowledge” notes (📝)
/biblio: bibliographic (literature) notes (📖)
/posts: posts intended for others (🖋)
/life: random notes about myself and my small side projects. Not published
/life/journal: a place for journaling and my daily notes
/<company-name>: work-related notes. To be deleted when I quit the job. Not published
It is useful to separate literature notes from permanent notes. Literature notes are mostly fleeting notes that come to my mind while I read. They still need to be processed further and transformed into permanent notes.
In general, it makes sense to create a slip box for every project you have (test: are these notes useful after the project is done?). Job is an example of such a project, and I treat my life as an ultimate project.
The split also helps with publishing as I can easily filter out my private notes.
Notes are good for developing ideas or looking something up, but sometimes I just need to remember something.
This usually happens when studying terminology-heavy fields as math (§ Category Theory)—it’s hard to grasp higher-level constructs if you don’t remember what specific terms mean. Another thing that I want to remember are escape hatches (How-to: Unfreeze Emacs or How-to: close locked ssh session).
I create cards sparingly—only for things that I know I need to remember. After a year, I only have about 300–400 cards and I review up to 3 cards daily—it’s very non-demanding. (Heavy users of spaced repetition have tens of thousands cards and spend ≈20 minutes in review daily.)
I also use spaced repetition for reading inbox:
I pile all interesting articles to read in one place
when I feel like reading, I use spaced repetition algorithm to remind me of articles I’ve bookmarked
If I postpone an article, spaced repetition applies exponential backoff and shows it less often. This allows having hundreds and thousands of articles bookmarked and actually read something.
This also allows me to practically postpone an article into infinity (like, “I’ll remind you about this article in a couple of years”) without actually deleting it.
To be honest, I find myself using the reading inbox less often. Mostly because I read less articles online.
I used a similar idea for writing inbox (having spaced repetition algorithm remind of notes I wanted to write), but it didn’t catch up.
Externalizing knowledge helps you learn and makes sure you understand the topic. This is the primary reason why I write posts nowadays. When I prepare a post, I often have to do more research (e.g., read research papers) and that helps me solidify my knowledge. Putting things in writing also helps me to crystallize my position and work out conflicts and tensions.
I keep a note with post ideas, and I write when I feel like it. I have multiple posts in progress. Many posts are abandoned because I found their premise to be flawed or plain wrong after more research and thinking—that’s still a good thing because I learn. (I don’t have a fixed schedule, so I do not care about releasing posts at a steady rate.)
I didn’t expect that, but after publishing my notes, I started visiting my braindump from the phone and I could revisit my old notes more often. This sparkled more new ideas.
When merging my websites, I moved all my finished posts into slip box directory. I was reluctant at first. But as a side effect of the merge, I can now write my posts in org-mode using org-roam, and that removed quite a lot of friction, so I write more now.
English is not my mother tongue, so you might wonder why I write notes in English?
The answer is that I read everything in English, so it’s easier for me to write notes in English rather than translate. Also, I’ve been taking longhand notes in English since forever, so that’s the language I am used to think in when I write.
At first, I used titles as filenames, but that made it harder to change titles. (Changing titles happens quite often if you develop ideas rather than collect them.)
Now I use timestamp-based filenames (e.g.,
20210613055225.org), and that’s what you can see in URLs.
Naming files in org-mode/org-roam is less of an issue, as you rarely see filenames—org-mode hides links’ URLs by default, so you only see link text (see image below).
Here is a sample of how this post looks inside Emacs (note that no URLs are shown):
☞: Org-roam v2 moves even further away from filenames. Notes are now referenced by globally-unique IDs, and you can store multiple notes in a file.
In Obsidian or Roam Research, where filename and title are almost the same thing, I would use a different scheme.