I’ve leaned into the trend of explicitly crafting a “digital brain”, and chose Org-roam in Emacs as an ultra-customaizable Lisp-based substrate. This post summarizes my experience so far.
Org-roam is one of several recent developments in “tools for thought”, most notably Roam Research. If you’re already familiar with Emacs and Org-mode, Org-roam is a must-try package. For everyone else, Gwern said it best:
“Friends don’t let friends use heroin or org-mode — are you ever really going to make back the time it takes to learn & customize org-mode?”
Well, Gwern, I’m working on it. If you happen go down this rabbit hole, you might find my configuration helpful.
What is Org-roam?
Org-roam is an Emacs package that augments Org-mode with features found in Roam Research. Specifically, Org-roam enables building and leveraging an emergent graph structure on top of Org-mode. Each node is an Org file, which (in my case) is an entity or concept like a person, place, company, book, paper, codebase, technology, etc… A bi-directional graph edge is generated whenever the contents of one node reference another node, enabling structure to form incrementally. Edges can also be pinned to specific sub-sections of a node, for more specificity. Critically, Org-roam enables generating nodes and links with minimal overhead, friction, or cognitive load. It’s joyfully streamlined.
My Use Cases
Here are some things I currently find useful to augment with this graph structure:
- Notes on my engineering work / personal research
- Notebooks with executable code blocks (see Org babel and emacs-jupyter)
- PDFs, references, and annotations (see my org-noter config and org-roam-bibtex config)
- Tasks (see my org-agenda config here)
- Daily journal entries
Example Flow
Here’s a realistic example how I leverage the graph structure:
- I create a journal entry describing my learnings about a computational method, which I recently used for a work task.
- The journal entry links to the task description.
- The task description links to the implementation in a computational notebook (via emacs-jupyter).
- The inline documentation of the notebook links to an equation in a paper (PDF) describing the computational method.
Much later, I go back to the same paper for a different project. Then, I immediately see the backlinks attached to the equation, which bring the past code, task, and journal entry to my fingertips.
This is the key purpose of the graph overlay: it enables resurfacing information when it’s most useful. Ideally, this augments the value of taking good notes, since they’re more likely to serve me in the future.
My Graph Structure
Here’s a bird’s-eye view of part of my graph, courtesy of org-roam-server:
Other Projects / Resources
Some interesting projects / resources in this space:
- Roam Research
- Athens
- Logseq
- Obsidian
- Neuron
- RoamBrain
- Exobrain
- Andy Matuschak’s Notes
- Jethro Kuan’s Braindump
- Jethro Kuan’s Post - How to Take Smart Notes
- Nikita Voloboev’s Wiki
- Textmind
- WorldBrain.io Vision
And don’t miss the classic “As We May Think”.