Roam is my space for organized chaos

January 02, 2021

For the past six months, I have been using Roam as my primary application for note-taking and knowledge management. This article will share what drove me to start using Roam and what made me stick to it.

My road to Roam

From my interest and work, I read many articles, books or listen to podcasts. But, apart from highlighting some quotes, I didn’t extract much of it. Moreover, I struggled to remember where I could find the information afterward.

At the end of 2019, I stumbled upon the Zettelkasten method while reading the book How to Take Smart Notes. This method aims to write one idea per note and organize them using a keyword index to link them together. The goal is to synthesize what we learn for improving retention of information and connect ideas that could, in the first place, look unrelated.

Multiple members of the Zettelkasten’s community, including Sönke Ahrens, advised using Roam for implementing the method. So, I decided to give it a try and experiment with it.

Connecting the dots

Roam has a different approach than other applications that I used in the past—Evernote, Apple Notes, and Notion—because It doesn’t have a file or folder system. It only has pages that can be linked together using hyperlinks. One of Roam’s significant features is that linking is bidirectional; when adding a link from a page, it will create a backlink reference on the other page.

Backlinking in Roam Example of a backlink in my page Maggie Appleton

The backlink system reminds me of how I use my text editor for inspecting a codebase to build the program’s mental model or part of it. I mentally visualize a program as a graph—I go to different nodes by following where a function is implemented or checking where a function is referenced. The linking system in Roam allows me to do that in my notes. I can navigate to a page by following the hyperlink or find where I reference it by looking at the bottom of the page where Roam put the linked references.

Another key part of Roam is its blocks (they are like bullet points that compose a page). For me, that’s where Roam’s power lies compared to other applications. It assigns a unique ID to each block, so we can link them together or even embed them in different pages. Thus we can be more granular when linking ideas, quotes, or notes and put them in a different context.

At first, I created a new page for each note to follow the Principle of Atomicity. But, with the blocks, I can also apply this principle at their level. Now, most of my writing happens in the daily notes pages; I create pages for keywords to reference the content or my evergreen notes. The mix of backlinks and block references removed a lot of friction as I don’t need to overthink where a note should live. I know that I’ll be able to find it when searching for it using specific keywords.

Reference notes in my daily note page Screenshot of a daily note page containing reference notes

The needle in a haystack

The keywords are a central part of my workflow in Roam. I avoid using a metadata section where I will put down a list of tags. I prefer the verbosity of writing a sentence about why this note is related to a term. It brings more context that will help me identify if I need this specific note. I find the tagging system too disconnected from the content; it takes more time and energy to figure out what this note is about to tag and evaluate.

To find content in Roam, we can either use backlink reference, the search bar or use the query feature. Queries give us the possibility to ask Roam to surface all content that contains links to a given page. Their significant advantage is that we embed them in our pages so that they won’t disappear—unlike with the search bar—and they can live next to our contents. This feature is handy when we need to gather the references for an article or, for instance, if we want to have a page where we can find overdue tasks.

Query to gather reference notes about Roam and Organised Chaos Example of a query to gather notes for the article.

If you are interested to learn more about Roam’s queries, I recommend watching the video made by Rob Haisfield. It covers the different operators, use cases, and workarounds that you might need to improve the search results. The syntax might be a bit unsettling at first glance, but after one or two queries written, it quickly became my go-to search feature.

My messy room

Roam is my space for organized chaos: it’s not pretty, it doesn’t look ordered for someone else than me, but I have the confidence that I’ll find and won’t lose anything in there. And that’s something I have struggled with in the past with other applications.

Relying only on links and blocks brings a lot of flexibility. It allows me to change the structure over time without spending countless hours moving things around. From the beginning, my goal was to use it as a knowledge management tool. Although I recently started to follow the interstitial journaling workflow. It combines my note-taking, task management, and time tracking from the daily notes. That will be an excellent way to expand my use case and experiment with managing my day in Roam.

Roam is still rough on the edge, but I like how the team behind it experiments with new features. They also provide the possibility to inject JavaScript scripts and override CSS in the application, so it opens many options to improve the UX in a hacky way. I look forward to seeing how Roam will continue evolving. I can’t wait for the team to release a public API and see how the community could enhance the experience.

Feel free to send feedback or ask questions on Twitter.

Written by Antoine Lehurt (a.k.a kewah). Senior front-end engineer living in Stockholm and currently working at Acast.