Scattered around the filesystem of every computer I’ve ever owned, in
/media/hdd and in
C:\User\David, I have a number of folders with the following names:
Inside each of these folders is a large assortment of files that I’ve either created or downloaded. When one of them fills up to the point of being difficult to navigate, I do one of two things:
- Create a subfolder called
Newand work in there from then on.
- Create a subfolder called
Archiveand put the current folder contents in there so I can have a clean slate in the main folder.
These subfolders can be nested as much as needed. When I get bored enough, I try to organise the content of these dumping grounds, meticulously working through each subfolder and moving its contents somewhere with an actually descriptive name. But usually I run into something that might fit equally well in two or three different places, and I don’t know where to put it. It’s at this point that I usually just give up and go do something even less productive.
For this and other reasons, I’m a big fan of wikis and organisation as an organically growing web of things that link to each other in arbitrary ways. Associative webs of thoughts and concepts arguably map better onto how our brains work than the rigid hierarchies forced on us by most file systems. In a web, you don’t have to choose which of three appropriate categories something fits into – you can just put it in all of them.
Roam is the internet’s most cult-like note-taking wiki, and it’s earned that status. What looks, at first glance, like a simple diary app soon reveals astonishing depths and a number of game-changing features that I guarantee you haven’t seen before. It is a revolution in knowledge management, but much of its brilliance comes through implementation of pre-internet ideas.
A brief history of networked thought
In The Freedom to Associate, Jimmy Maher covers the prehistory of hypertext, focusing on Vannevar Bush’s memex and Ted Nelson’s Xanadu.1 Both of these were intricate ideas about how an associative knowledge management system might work, conceptualised many decades before the birth of the world wide web.
The memex, having been dreamed up in the 1940s, was envisioned as a complex mechanical contraption consisting of projectors and microfilm reels. Users would call up different items – books, articles, notes – and join them together in trails of related ideas. Where necessary, the user would branch off into side trails for particular items or tangents, and in this way they would eventually construct an intricate maze of ideas.
Bush’s grand purpose for the memex was to provide a better way of sharing and contextualising the increasingly vast body of academic work being done in every field by increasingly specialised scientists. He was inspired by the worrying 35 year gap between the publication of a botanical study by Gregor Mendel in an obscure journal and the recognition of its incredible significance to the field. How many other Mendels may there have been, their contributions lost to the glut of academic publishing, unknown and uncorrelated?
A couple decades later, Ted Nelson discovered Bush’s ideas and expanded on them with his own ideas about how a memex-like system might be implemented on computers. He called his vision Xanadu, after the famous unfinished poem. The world of the 1960s wasn’t quite ready for Nelson’s ideas, and in many ways it still isn’t. Although we got a partial implementation in the 1990s with the world-wide web, the man himself has his reservations.
In the video below, Nelson demonstrates XanaduSpace, which represents documents in a 3D space with bidirectional links shown by coloured lines. It also features quote transclusion, in which quotes in one document are embeds from their original document rather than copied text. Change a transcluded quote in one place, and it updates everywhere.
Roam: the 2D Xanadu
Aside from its missing dimension, Roam is astonishingly similar to XanaduSpace. It’s got bidirectional links and it’s got transclusion. Relationships between pages are shown in a 2D graph view, and the sidebar allows you to view numerous documents at the same time. Most surprisingly, Roam tracks not only links between pages, but text that could be linked. More on that later.
The basic Roam workflow is that you open it up in the morning and it gives you a daily notes page. You start typing whatever you want as your notes for that day. In Roam, everything is a list of bullet points. At the most basic level, you can type a few paragraphs of markdown-formatted text and they’ll look pretty normal, just bulleted.2 You can also embed pictures, videos, and anything else you’d put in a normal note-taking program.
By pressing Tab or Shift-Tab, you can indent or deindent the current bullet, making it a child or sibling of the bullet above. Clicking on a bullet will zoom in on that item, displaying it as the heading of a page containg its children and hiding the rest in a breadcrumb menu at the top of the screen. You can do this as many times as you like. You can also collapse bullets you’re not interested in right now, or drag them to other parts of your document.
In addition to standard markdown and video embeds, you can embed other things like wordcounts, tables, movable sliders and even kanban boards! Some of these embeddables are discoverable from a dropdown menu that appears when you press
/, and others are a bit more hidden – easter eggs for long-time users and keen explorers.
These features on their own would make Roam a top-shelf note-taking app, and we haven’t even gotten to the linking stuff I spent the first part of this post babbling about yet!
Basic linking in Roam in is the same as linking in Vimwiki, Mediawiki or any number of other wiki systems. While typing, you put square brackets around
[[words you want to link]] and that creates a link to a page named “words you want to link”, which could be a new or existing page. Click the link to go there. Better yet, shift-click the link to open it in the Roam sidebar.
Now you can look at two documents at once, and drag items between them. Although the sidebar is a different colour, it is still editable.
I was initially disappointed by Roam’s single sidebar, which seemed to indicate that you could only work with two documents at a time. One of my favourite things about Vim that hasn’t really been implemented in modern graphical editors is the ability to have arbitrarily complex configurations of split panes. I often have between four and six files open at once in different panes, or use multiple panes to view the same document in different places – at times my screen resembles a Mondrian painting. A single sidebar didn’t seem like enough.
But at some point I shift-clicked the same link again and saw that my sidebar now displayed two copies of the same document. I took this for a strange bug but then noticed the
− symbol next to the document titles. This symbol turned out to be a collapse/expand toggle, indicating that any number of documents can be opened in the sidebar, collapsed and expanded at will.
Discovering this little feature was what cemented my appreciation for Roam. I adopted the following workflow for writing articles and organising my thoughts:
- Find and read articles and sources relevant to the current subject and make
[[links]]corresponding to their titles (self-editorialised or verbatim).
- Copy-paste the content into Roam documents. Formatting is automatically converted into Markdown, preserving links, headings and even image embeds.
- Write down my own thoughts and intersperse them with relevant quote transclusions from the articles I’d pasted in. This is a simple matter of typing
((and then some text from the block I want to transclude. As I type, options on a pop-up menu narrow down until I am left with only the block I want to transclude.
In this way, I’ve interlinked my own commentary and synthesis with a wide range of sources, which I have kept in full. Using transclusions rather than dead quotes creates an intricate maze of thought, all fully contextualised. And unlike my messy folders of stuff and other and miscellaneous, Roam’s web of associations and daily note structure will impose an intuitive organisational structure through use alone.
Manually copy-pasting things from the web is a bit of a pain, but an Evernote-style webclipper is on the Roam roadmap, which should make the process much smoother. It would also be useful to be able convert an external link into a Roam page directly from the Roam interface.
All this, and I’ve only scratched the surface of what’s possible in Roam. There’s functionality for todo lists, flowchart diagrams and probably some stuff I can’t even conceive of, being merely a lowly acolyte of the cult of Roam. Here’s Conor White-Sullivan, creator of Roam, with a 37-minute-long demo video.
Shortly after launching Trello, Joel Spolsky wrote a blog post about the philosophy behind the product. In this post, he tells an interesting story about Excel:
Everybody thought of Excel as a financial modeling application. It was used for creating calculation models with formulas and stuff. You would put in your assumptions and then calculate things like “if interest rates go up by 0.00001% next year, what percentage of Las Vegas homeowners will plunge into bankruptcy?” For example.
… we visited dozens of Excel customers, and did not see anyone using Excel to actually perform what you would call “calculations.” Almost all of them were using Excel because it was a convenient way to create a table.
The great horizontal killer applications are actually just fancy data structures.
Spreadsheets are not just tools for doing “what-if” analysis. They provide a specific data structure: a table. Most Excel users never enter a formula. They use Excel when they need a table. The gridlines are the most important feature of Excel, not recalc.
Word processors are not just tools for writing books, reports, and letters. They provide a specific data structure: lines of text which automatically wrap and split into pages.
PowerPoint is not just a tool for making boring meetings. It provides a specific data structure: an array of full-screen images.
Roam strikes me as a similar kind of a tool. It provides you with a pages of nested bullets that you can link between in a lot of different ways, and a slick interface for doing so. What you actually use it for is up to you. A scroll through RoamBrain on Twitter shows academics using it for research, infosec professionals using it for bug bounties, implementations of GTD and Zettelkasten, and people importing the whole of the King James Bible and Shakespeare’s plays into their databases.
If you’d like to try it out for yourself, you can request access from roamresearch.com to get on the waitlist. While it’s in beta, Roam is free to use, but will be paid in future. That’s a bit of a downer to end this post on, but go sign up for that waitlist. I promise it will be worth it.
Also the Apple program HyperCard, but you can read the article if you want to know about that. ↩︎
You can also put multiple paragraphs in a single block by spacing them with Shift-Enter. ↩︎