← archive

My experience with switching apps for personal knowledge management

December 13, 2020

Personal knowledge management (PKM) is the best thing I discovered in 2019. I've since tried a couple of different approaches and too many (six) apps. In this article, I would like to share everything I've learned about it over that period.

Investment in knowledge pays the best interest.

Benjamin Franklin

Why bother?

Given that every PKM system requires a significant time investment, it's worth asking yourself what's the point. What's the benefit of spending all this time on writing notes? For me personally, it boils down to having a higher return of investment on reading itself.

I love reading and learning from the wins and mistakes of others since I can't live long enough to make them all by myself, in the words of Eleanor Roosevelt. I have noticed that I tend to forget ideas from the books by just reading and not taking notes. I've fallen to the fallacy of "transmissionism", as Andy Matuschak calls it in his great article about books. The belief that by just reading a book, I'm going to absorb the knowledge from it. In reality, I don't really learn much that way.

Taking notes fights this effect of forgetting ideas. Instead of just reading, your goal becomes a search for interesting ideas that you can feed into your system. As you feed more interesting ideas into your PKM system, it becomes more valuable. PKM enables network effects for ideas. Instead of observing the radioactive decay of ideas from the books you read, their value starts compounding. [1]

I've come to realize that reading is just one part of learning. The other part is writing. Or, as Sahil Livingia has said: "Reading is the inhale, writing is the exhale."

The benefits of PKM

Although I've tried using Building a Second Brain (BASB) as my PKM method, my current method is Zettelkasten (ZK). So, I'll try to explain its benefits.

Zettelkasten is easy and fun for me. It makes reading, writing, and thinking more fun.

Reading becomes fun since I'm on the hunt for new ideas. Instead of just going through the book for bragging rights and signaling purposes, I'm hunting for surprising. When I find it, I'm happy since I can put it into my notes and improve all notes' quality.

Writing becomes more fun since I do it in smaller increments. Instead of staring at a blank page when writing new essays, they write themselves from the bottom up. Every note is what Tiago Forte calls an "intermediate packet". The essay gets composed out of smaller, reusable packets that each make sense on its own. Topics start to emerge. And so do the ideas for essays.

Thinking becomes more fun too. Making connections between notes and seeing contradictory notes triggers interesting questions. Instead of thinking just inside of your head, you get a system and environment that fosters that. As "How To Take Smart Notes" writes, storing permanent notes is a form of dialogue with your past notes. And this kind of dialogue encourages thinking more about the ideas that you encounter while reading.

Just writing things down in my own words improves my thinking. As Niklas Luhmann, the Zettelkasten method's inventor has said, "It's not possible to think systematically without writing". By writing things down in your own words, you start realizing how much you understand (or don't understand) about the subject. You realize the holes in your arguments. Questions start arising. Questions that wouldn't otherwise be asked had you just done thinking inside of your head. Writing reveals questions and gaps in arguments.

BASB in Notion

My first encounter with PKM was learning about BASB from Maria Aldrey. She has used Notion to take notes and organize them into four categories in a system called PARA: - "Projects", which have to have a deadline - "Areas", which are your specific long-term areas of improvement - "Resources", which contain categorized notes and highlights from articles and books - "Archive", which contain archived projects, areas, and resources

Although I didn't take the official course from Tiago, I went through all of his articles about PARA. After adding many articles and book notes to it, I started categorizing them and going through the process of "progressive summarization", one of the most important lessons from Tiago.

It consists of adding layers of highlights to articles and books. Normally, bolding enables two layers of importance for content. Bolded text is important, while unbolded is unimportant.

The PARA method adds some additional layers of importance: - unbolded text - bolded text - highlighted (colored) text - summary - remix (original creation)

Not every piece of content needs to go through all five steps, but the most interesting pieces will go through all of them. The most interesting step is the remix, in which you try to connect the ideas expressed here with other notes in your system.

I gave this system a go for a couple of months, but it didn't stick in the end. I was too tired from deciding how to categorize every note and where to put it. I ended up thinking about the organization more than about the content I'm saving. It felt too heavy for my taste, and it wasn't a fun process. The distinction between "Areas" and "Resources" always confused me, and I never got used to it. My summarized notes, in the end, weren't connecting and ended up being isolated islands. I was unable to find relevant concepts with the search. So after a couple of months, I've stopped doing it.

No structure in Roam

This brings us to Roam. After totally cooling down from BASB and Notion, I've discovered Roam and marveled at the beauty of it. Instead of writing notes and categorizing them, I started connecting them. As I wrote in an article from that time, Roam has freed me from unnecessary compartmentalization and encouraged me to build networks of ideas, which is more like how my brain works. It's a network, not an archive.

However, I didn't follow any system for taking these notes. I've later realized that not being systematic comes with a huge drawback. It all becomes a "magical junkyard" that is hard to navigate. I ended up with many notes and connections, but nothing in it ended up being useful. Each note was either empty, contained one idea, or hundreds of ideas. There was no way to differentiate them, so I ended up not knowing what's useful. Searching was also difficult since I didn't follow any method for naming my notes.

That's why I've started to investigate other methods like BASB and found out about Zettelkasten.

Zettelkasten in Roam

I've decided to add some structure after realizing that my Roam database is turning into "the magical junkyard". And that's what Zettelkasten gave me. I've started keeping atomic notes, or notes that consisted of one idea only, and started being more careful with the note titles.

I've started thinking what the most useful title for each note is, considering my future searches. I've realized that note titles are like APIs. But, only viscerally since I've only later read Andy Matuschak's notes on the subject. I wasn't that good at naming my notes and started by using the Two Words approach that wasn't very useful for future searches.

Using Zettelkasten in Roam meant that I got to preserve the fun I get from taking notes in Roam in an unstructured way while still fighting the fear of building a castle of sand. As "How to Take Smart Notes" writes, "a standardized work environment is less taxing for our motivation" and "having a system we can rely on makes us reduce decisions we have to make during a work session". This standardized work environment is provided by BASB too, but with Zettelkasten, it's not as heavy and hierarchical. There are fewer decisions that have to be made when taking notes. The network is built organically, bottom-up and not top-down.

However, after using Roam for some time, I got concerned about having my notes stored in a proprietary format, so I've started experimenting with other apps. I am a software developer, and I spend most of the day in the terminal, manipulating text in Vim. The blog you're reading uses Jekyll, a static site generator that stores blog posts in Markdown.

I am a fan of Markdown since it's easy to read for humans in its raw form, and it's still very powerful with formatting. It's just text that doesn't need a special app to be read (unlike Roam). I would rather bet that 100 years from now, people will still be able to read Markdown than I would on people being able to read Roam notes at that time. Simply put, I wanted my Zettelkasten notes to survive a long period, and that's why I started experimenting with other apps.

Switching to Zettlr

My first experiment was switching to Zettlr. The most promising thing that pulled me to try it out was that it was built specifically for Zettelkasten and uses Markdown under the hood. However, this experiment lasted very briefly. After realizing that I can't create new notes by just surrounding the term with brackets, I've decided to quit.

Using Roam for a couple of months made me perceive this behavior as something very basic and essential. It's easy to forget that not every note-taking app supports creating new notes in such a low-friction way.

Switching to Vim

I loved reading this article about building a Zettelkasten system directly in Vim, with help from bash. Since I've been using Vim for more than a decade, I am biased for using it for every context that I can. Or at least try.

After some tweaking and playing around with Vim Wiki and fzf.vim, I've ended with a somewhat functional environment.

I loved how everything was just plain Markdown, enhanced with Wiki-style links a la Roam. Creating new notes was effortless and worked by just surrounding the terms, unlike Zettlr. I especially loved how easy it was to open multiple notes at once for a higher picture. The only limit on how many notes I can view simultaneously was imposed by the screen size.

However, backlinks were problematic and required hacks. I was not satisfied after installing note link janitor by Andy Matuschak, since it didn't come close to the power of backlinks in Roam. It was buggy, and often times the backlinks didn't provide enough context, but just the first line of the mention. Editing notes directly in backlinks, like in Roam, was not supported.

What also bugged me was the fact that all of this was stored only on my computer. I've added an auto-command in Vim that created an encrypted backup in the background every time I've changed something and uploaded it to the cloud. However, I still wanted to edit my notes from the phone from time to time. Some people create their knowledge base directly on Google Drive and Dropbox and then edit text files from their phones, but this didn't seem attractive.

I've decided to try something else since this environment felt too crude for me, and I had a fear of missing out. The thought that I could probably make more connections and think better had I used something else was always in the back of my mind.

Switching to Obsidian

After being somewhat skeptical when first seeing it, since I couldn't find the name of the company behind it, I've decided to give Obsidian a go. I liked the fact that everything is stored locally and that it used Markdown. It felt similar to using Vim, but since it was specifically made to create and manage a "second brain", it had some nice additional features.

One of the nicest was the support for backlinks out-of-the-box. However, the excitement with backlinks wore off pretty quickly since I was used to the more powerful version from Roam. They support customization with CSS, which allows some pretty fun stuff, like Andy Matuschak mode.

As with Vim, they support opening many notes simultaneously in the same window. This is perhaps the only thing regarding the user experience that is better than Roam. Although Roam offers the graph view for seeing connections between notes, I find it useful to look at the entire text from notes. It feels more like arranging physical notes on a table and then looking for connections.

The drawbacks of using Obsidian were similar to those of Vim. I couldn't read or edit anything on my phone, and I felt a lot of FOMO. That's why I've yet again decided to switch.

Switching to Bear

I've been using Bear for a long time, and I was happy with their UI and features. Still, I never considered using them for personal knowledge management. They also use Markdown for everything and store data locally in an SQLite database.

I love their emphasis on minimalism and how well-polished their mobile app is. The user experience on a computer, phone, and tablet is top-notch. There is no support for backlinks in Bear, although there's Andy Matuschak's hack for this too. I didn't use it this time and wanted to see how far I can go without them.

I've found that they are not super critical for Zettelkasten. I had to be more intentional with the links and decide what kind of connection I want to make between every pair of connected notes. I've found that not every connection needs to be two-sided, like with backlinks. Using fine-grained associations instead of just listing notes that have something in common with a particular note has proven to be pretty useful. The backlinks provide another kind of relationship between notes, an implicit one, useful for discovery but not critical. Intentional relationships that are built by direct links are much more important.

One thing that started bothering me after I've created ~1500 notes in Bear is how slow it gets when renaming notes. Renaming a note that's referenced a lot freezes Bear for some reason. It becomes unresponsive for 30 seconds, which is very annoying.

The benefit of opening multiple notes at the same time available in Vim and Obsidian is not present in Bear. To do so in Bear, each note has to be opened in a new window, which feels clunky and frictional.

Although I've been using some custom scripts for importing book highlights from Apple Books to Bear, which were useful to reference from my Zettelkasten, something was missing from my setup: the ability to save highlights from articles that I read online. Having all of the highlights in one place to connect, reference, and remix is a very powerful feature.

To try to work around this problem, I've tried using Bear's browser plugin for storing entire articles in Bear, but the results have been unsatisfactory. It doesn't come close to the quality of specialized read later apps like Instapaper and Pocket. What made it unusable is not that it couldn't store an article, but that it stored incomplete articles. It made me lose trust in using Bear's browser plugin and on the lookout for better solutions.

This brings us to...

Readwise, or why I'm back in Roam

Although it looked unpolished (at the time, they have since updated their design), Readwise was a very popular tool inside #roamcult, which is how I discovered it. It didn't take long to realize how useful it is. When connected with Instapaper, Kindle, and Apple Books, it really becomes one of the most useful tools in the PKM toolkit. By capturing highlights from absolutely everything I've read, it becomes storage of the best of the best from my inputs. And then it resurfaces these best chunks to fight the forgetting curve. Marvelous.

As I was still using Bear at the time, I was frustrated that it didn't have an automatic connection to Bear. Understandably, since Bear currently doesn't have a web app or an API. However, I've noticed that there is such a connection with Roam, which made me go back to it.

And now I'm back at step one. I have both my Zettelkasten and all the things I've highlighted in Roam, and I don't have to take action to make it happen. The only change I have to make is to read all the articles in Instapaper (I could use the browser extension for this, but I don't trust third-party plugins enough to share all my passwords with them).

Thoughts on coming back to Roam after a long time

Coming back to Roam after all of these switches has made me aware of other great features of Roam that are easy to get used to but which don't exist in other Markdown-based apps.

One of the most prominent ones is probably blocks and their transclusion abilities. Just as how everything is an object in Ruby, so everything is a block in Roam. This has proven to be very helpful when writing articles by following Nat Eliason's approach. This article was written following that approach, along with zooming in into the blocks that follow titles from the outline. Writing this article has been the most enjoyable experience with writing so far (which is why this is the longest article I've written). This is somewhat surprising for me, as I didn't think that the app I am using could greatly impact my writing experience.

Another surprising thing with Roam is how much easier it made writing a weekly newsletter. It feels like Roam was made to synthesize the best of content, which is the same goal of my newsletter. It's very easy to either link to the next edition from wherever or just put the blank page of the next edition of the newsletter in the sidebar and go on the hunt for juicy blocks. As with writing, this has surprised me since I didn't expect the app to make such a difference.

A couple of other worthy mentions missing from all the other apps I've tried are the sidebar and links in note titles. Sidebar enables exploration and makes transclusion easier, while links in note titles make linking even more effortless. With them, I can even create links from blank pages. I found it the most useful when linking to a concept that I've picked from another person (e.g., "How to think for yourself per [[Paul Graham]]").

Since coming back to Roam, I've also made some changes with how I do Zettelkasten. I no longer follow Shu Omi's approach for taking notes. The biggest flaw with that approach is that I've ended with many notes that express ideas from other authors in my own words and few ideas of my own. To fix that, I've added another layer of abstraction on top of what he calls permanent notes in his video. I'll share more about that in a future article since this one is too long as it is.

As I've discovered that Roam is a superior environment for writing, and therefore thinking, I'm glad to sacrifice the longevity of my notes that I might have gotten with Markdown. After all, longevity is less important than the impact on the quality and enjoyment of thinking. Without enjoyment and a supportive environment, the notes will never reach the quality required to have them preserved in the first place.


  1. The idea about radioactive decay is stolen from my co-rafter Nick Ang and his essay on personal knowledge management.
Want to talk more about this or any other topic? Email me. I welcome every email.