Skip to main content

Exploring Obsidian: My Second First-Impressions

It has been roughly a year since I first came across Obsidian. After careful consideration trying out Tiddly Wiki, Obsidian, Roam and TheBrain, I opted for Roam. I chose Roam because of its friction-free, browser-based user interface, its product vision and the vibrant community which I was sure will drive significant innovation - and it has! After one year, I was curious to see how Obsidian has evolved. This post will walk you through my second first-impressions comparing Obsidian to Roam.

Even though I have used Obsidian for about a month a year ago, and I have now spent the past few days diving deep into its features, my experience and understanding of Obsidian is superficial. I can only offer first impressions and early thoughts on how I have attempted to set up an efficient, friction free process, mimicking my workflows in Roam. The video above is a timelaps of Obsidian loading the markdown archive of my Roam graph.

First Impressions

Obsidian feels very mature. Every aspect I looked at had depth and refinement to it. The install experience, the UI, the settings, the themes, the plugins, the development environment, the licensing model, the community. It even has a full-blown mobile app, which I hear is excellent. Unfortunately, I wasn’t able to try the mobile app as it is still in beta and not yet available through the Playstore. Since my phone is under enterprise mobile device management, I cannot install apps from unknown sources.

Next to all the good, there are also a few things that I found frustrating. I am not a fan of the editor in Obsidian. I prefer WYSIWYG. The switch between “raw” markdown and preview is very inefficient because things jump around as you switch views - e.g. a picture expanding into view. As a result, to avoid switching, you end up looking at everything in markdown most of the time. I wasn’t able to get Grammarly and/or ProWritingAid working in the editor. I am sure I can solve this eventually, but for now, this seems to be a gap. And I miss block references... and before you jump in to say, “But Obsidian has block references!”, let me assure you, I am aware, but the process around those is light-years from the efficiency and power of block references in Roam. Even as I was writing this article in Obsidian, I felt the painful lack of block references.

Paradigm shift

Roam is the “Excel of word processing”. It is built on the concept of blocks, where a block is a single paragraph of text. Similar to Excel, where a worksheet is a matrix of cells, in Roam a document is a chain of blocks linked to each other and the page via parent/child references. Roam provides an outliner to edit your blocks. You can reference blocks, you can move them, block have versions, you can embed them, transclude them, filter them, search them, etc. Roam uses the contextual information inherent to the outline structure, plus the page links, attributes, and tags within the blocks, to make your notes searchable and filterable. Through this approach Roam lowers the barrier to taking notes. You don’t have to deal with the mental burden of deciding where to place a certain note. You simply type whatever comes to mind on the daily notes page and use search and references later to find the information when you need it. This zero barrier approach to taking notes is a very important ingredient of the low friction experience in Roam.

Obsidian is a very sophisticated markdown file editor. Its unit of information is the markdown file. There are many tools in Obsidian to help you search and link markdown files. Heading levels 1..6 (sections) offer similar contextual information as outline levels in Roam. For example, you can limit search results to sections and subsections. Obsidian also recognizes the concept of block references, though some of the functionality, such as listing all the mentions of a block requires a bit of manual work, while these come out of the box in Roam. Since the unit of information in Obsidian is the document, you need to adopt a more atomic approach to note-taking. Plugins such as Note Refactor offer an efficient way to break monolith documents into more atomic notes.

Robert Haisfield’s post, Using Daily Notes as a convert from Roam provides a very helpful perspective on the paradigm shift required when moving your workflow from Roam to Obsidian.

Meeting workflow case study

One of my key use-cases is taking notes in meetings and tracking actions. To get a better feel for Obsidian, I experimented with porting my established workflow to Obsidian.

If you are interested in my existing Roam workflow, here are two blog posts with the details:

My proof-of-concept demonstration involves a simple scenario. First, I am in a meeting with Peter. We talk about Project A and I agree to discuss something with Joe because of our conversation. In the meeting with Joe I am reminded of the topic I wanted to discuss with him, and I take notes on the result of our conversation. My notes with Joe are also accessible in the meeting minutes with Peter. The next time I meet Peter, I can easily access those notes.

I will walk you through this scenario first showing my workflow in Roam, then mimicking it in Obsidian. To give you a measure of efficiency, I will count the number of keystrokes (not counting the actual detailed notes) and mouse clicks in both cases.

May the workflow with the lower number of clicks win!

Before we dive in, I want to remind you again that I am new to Obsidian. My workflow in Roam results from months of refinement, my workflow in Obsidian is an initial concept of how I would imitate Roam in Obsidian. I am probably stuck in the Roam paradigm, which is clearly not always efficient in Obsidian.

My workflow in Roam

Create meetings on the Daily Notes page

I use the Daily Notes page to capture my agenda for the day.

62 keystrokes: 6 keystrokes to type in ;;day + enter to run my daily notes template that will include the “Today’s meetings” block plus an empty block nested under it. Then 29+27 keystrokes to type 08:00-08:30 [[Zsolt - Peter + enter (to accept autocomplete that will print [[meeting/Zsolt-Peter]]) + enter (for new line). The process is very similar for the meeting with Joe, just two characters shorter (Peter vs. Joe).

Daily Notes page with Meetings

Open Peter’s meeting and add an action to discuss something with Joe

For standing meetings I keep the notes for each meeting on a single page with meeting notes for each meeting nested under the relevant date. To make notes searchable, I nest discussions under links to projects. In my vocabulary, everything that requires more than a single step to achieve is a project.

#discussWith #waitingFor and #promisedTo are my tags to capture actions. I use #discussWith when I agree to follow up on a topic with another person. I use #waitingFor when the person I am speaking to has promised to deliver something to me, and I use #promisedTo when I make a promise to the individual to provide him/her with something.

Notice how, for Project A I have recorded an action to discuss something with Joe.

1 click, 39 keystrokes: click at the last character of “Notes” then enter to get a new line. 6 keystrokes to type /toda + enter which will convert into a link with today’s date. enter + Tab + 11 keystrokes + enter (autocomplete) to get the nested link for [[Project A]]enter for new line. Tab, then ctrl+Enter to create a nested Todo. Type #disc + enter + space + [[Joe + enter (autocomplete) + :, to create the action item.

Peters MoM

Open Joe’s meeting page and his personal page

When I am preparing for the meeting with Joe, I first open my page with the meeting minutes, then I shift-click on Joe’s name to open his personal page in the right-hand sidebar. Notice how on Joe’s personal page I have three queries. This is part of my template and helps me see the actions I have recorded for Joe.

2 clicks, 1 keystroke: click on the meeting on the daily notes page to open it. shift + click to open Joe’s page in the sidebar.

Joes meeting minutes and personal page

Create a block reference in Joe’s MoM for the action in Peter’s MoM

I create a block reference to the action that I recorded on Peter’s Minutes of Meeting (MoM). I will nest my notes about the discussion with Joe under this block reference. This will allow me to see the notes I took during the meeting with Joe, also while I am viewing Peter’s MoM (see last step for explanation).

3 clicks, 24 keystrokes: I assume the template is already there, i.e. this is not our first meeting in the series. My process is very similar to the one described earlier. I click once, then execute 20 keystrokes to enter today’s date and create [[Project A]]. I then ctrl +click to drag the action from the right sidebar to the page on the left to create a block reference. Finally, I click at the last character of the newly created block reference, then press enter and tab to create a nested bullet under the reference, and type my notes related to the action item.

Creating a block reference in Roam

Block reference


Read the block references in Peter’s MoM

Finally, this is how Peter’s meeting page looks after my meeting with Joe. Notice how I can easily access all the discussions about the action item by clicking on the references.

1 click: to open references.

Block reference in Peters note

My workflow in Obsidian

Create meetings on the Daily Notes page

In Obsidian I have a template for Daily Notes. When I open Daily Notes with alt+D, it comes pre-populated with my template, containing the text “Today’s meetings” with a bullet nested under it.

64 keystrokes: I need one additional keystroke compared to Roam, even though I don’t need to run my daily template like I did in Roam. It takes 33+31 keystrokes to type 08:00 - 08:30 [[Zsolt - Peter]] (notice I have spaces between the numbers and the dash, as without these, numbers would look funny). I press enter (to accept autocomplete) + enter (for next line). I repeat the process for the meeting with Joe.

time range without spaces

Daily Notes Page Obsidian

Open Peter’s meeting and add an action to discuss something with Joe

1 click, 45 keystrokes: click at the last character of “Notes”. enter to get a new line. Type ## , then alt+E to bring up the list of templates, then 4 keystrokes to type toda, then hit enter which will insert a link with today’s date. enter + 15 keystrokes + enter (autocomplete) will create the nested section with a link ### [[Project A]]. I then press enter to get a new line. - to create a nested bullet and ctrl+Enter to create a to-do item. I type #disc + enter + space + [[Joe + enter (autocomplete) + :. I can then type in the topic I want to discuss with Joe.

Peters minutes of meeting

Open Joe’s meeting page and his personal page

2 clicks, 2 keystrokes: ctrl + click on the meeting on the daily notes page to open it. shift+ctrl + click to open Joe’s page in another column.

Joes meeting and personal page

Create a block reference in Joe’s MoM for the action in Peter’s MoM

4 clicks, 44 keystrokes: click and 26 keystrokes to link today’s date and nest ### [[Project A]]. Then enter + - to create a new nested bullet under Project A. click on the action on Joe’s personal page to open the source location in Peter’s MoM. ctrl+E to switch from preview mode to edit mode. click at the last character of the action I want to reference. alt+E to bring up templates. Type block + enter to run my block reference template. This template adds a UID block reference to the selected line, inserts a query under the referenced block, and copies an embed-link to the clipboard. shift+ctrl+back arrow to move back to Joe’s page (since I am still in Joe’s meeting). click on the empty bullet point we just created on Joe’s MoM page a moment ago. ctrl+v to paste the embed-code from the clipboard, then back arrow twice, followed by space + enter to select the proper link from the autocomplete pop-up (I can probably simplify this last part with a tweak of the template). Finally, enter + tab to start typing my notes about the action.

Block reference in Obsidian

Block reference in Obsidian

Read the block references in Peter’s MoM

1 keystroke: When Peter’s MoM is open, I just need to press ctrl+E to toggle between preview mode and edit mode. Query results are only visible in edit mode.

Viewing block references in "edit" mode

Viewing block references in preview mode

Comparing the two workflows

For sake of simplicity in the table below I will sum the clicks and keystrokes and combine them into “user actions”.

Activity Roam user actions Obsidian user actions
Create Meetings on the Daily Notes Page 62 64
Open Peter’s meeting and add an action to discuss with Joe 40 46
Open Joe’s meeting and his personal page 3 4
Create a block reference in Joe’s MoM for the action in Peter’s MoM 27 48
Read the block references in Peter’s MoM 1 1

Until the point of using block references, Roam and Obsidian were similar. My implementation of block references in Obsidian technically works, but I feel it is very messy and requires about double the amount of clicking and typing compared to Roam. I feel the reason is not necessarily inherent to how Obsidian works, but to the paradigm I am trying to force onto Obsidian.

Observing the look and feel of the two sets of screenshots, I find Roam’s outline view much easier to read. While every information is present on the Obsidian pages as well, it is harder to read because of the markup. The issue becomes a real blocker once block-references and image attachments come to play. While editing my notes in Joe’s MoM, I cannot read the action, but will only see a cryptic link.

If I hit ctrl+E to switch to preview mode, depending on the content of the page, things will jump around (e.g. if there is an image or other embedded text) and I can no longer edit.

block reference in edit view is cryptic

Costs and Licensing

Obsidian is very affordable. You can get away paying nothing, but even if you upgrade to catalyst ($25), supporter ($50), or VIP ($100), you can do it for the fraction of the cost of a Believer subscription in Roam. For $4 per month, Obsidian offers a secure sync service that also includes the full version history of your notes for one year back. Even without subscribing to sync, you can easily keep your data synchronized between devices by simply storing your vault on OneDrive, Google Drive, iCloud, etc.

Templates

There are multiple plugins offering templating features in Obsidian. I chose Templater because it allows me to execute shell scripts as part of the template. This practically means the ability to run PowerShell (on Windows), or Python, Perl, or any other application of your choosing.

Plugins

Obsidian comes with a very mature plugin ecosystem. They have nicely integrated plugins into the platform. Installation, settings, updates, documentation are all intuitive and easily accessible. You can develop plugins in TypeScript. There is a strong developer community and plenty of examples and boilerplates available for someone to get started at developing plugins for the missing features. The Checklist plugin for example offers an excellent starting point to solve the messy action referencing problem showed above.

Community

There are well over 2000 Obsidian users on Discord. Obsidian also hosts a forum at forum.obsidian.md.

Clinet

Obsidian comes with a thick client user interface supplemented with a mobile application. This means that on your desktop you need to download and install a binary executable.

Obsidian stores your data in markdown files. There is no central server that would handle your data. It stores your data either locally on your computer, or you may opt to host your data in the cloud using the storage service of your choice. With sync you can select which folders to sync between devices, meaning you may choose to only sync part of your vault to your mobile or tablet, or to other devices.

Obsidian vs. Roam

Overall Roam and Obsidian are similar and both powerful.

  • Roam with its data structure is definitely more innovative, but Obsidian with its tried and tested markdown approach is more mature and robust.

  • If browser based access is important, Obsidian might prove difficult. As a workaround you can probably host Obsidian for yourself on an application streaming service like AWS AppStream, but this will cost you dearly. Roam is fully web-based.

  • Obsidian offers you full control over your data. If privacy is your thing, I would definitely recommend Obsidian. Roam, on the other hand, offers you novel ways to collaborate in your research with others. If you want to collaborate in big multiplayer graphs, you’ll be definitely happier with Roam.

  • Obsidian is cheaper, you can start as low as free, and can get VIP service and sync for $100 once off and $4 per month. To compare this with Roam’s Believer plan, Obsidian in this setup would cost you $340 over five years, compared to Roam’s $500 price-tag.

  • Roam offers fantastic flexibility through Datalog queries and RoamAPI to manipulate blocks. Also Roam’s data model is clean, with everything handled as a block or a reference to a block. Obsidian’s out of the box search is also powerful, and if you want more, you can experiment with plugins like dataview to query the data in the YAML front matter of your markdown files. The untaped potential of Obsidian is more limited than Roam’s.

  • Obsidian provides some basic support for referencing at the block level, but this is far behind what Roam offers. Over the past year, I got very comfortable with block references concept in Roam, and find this the most painful gap when playing with Obsidian.

  • Obsidian requires a mindset shift, moving to more atomic notes and file based thinking as opposed to block based approach in Roam. I feel as if this puts an additional level of mental-burden on me when wanting to note something down. I really enjoy Roam’s freedom with nesting of information and the flexibility of its data structure.

Closing thoughts

Finally, I want to remind you once more that I am now reflecting on Obsidian after only a few days of experimenting with the system. My views are still premature and I haven’t yet mastered the paradigm shift from block to file. I am sure that as I continue to play with Obsidian, I will recognize different ways to achieve similar outcomes as in Roam, but more native to Obsidian. 

Like this post?
Show your support.

Comments

Popular posts from this blog

Showcasing Excalidraw

Conor ( @Conaw ) pointed me to Excalidraw last week, and I was blown away by the tool and especially about the opportunities it opens up for  Roam Research ! It is a full-featured, embeddable sketching component ready for web integration. This post will showcase key Excalidraw features and discusses some of the issues I still need to solve to complete its integration into Roam. I spent most of my free time during the week integrating Excalidraw into Roam. This article will introduce Excalidraw by showcasing its features.

Mind mapping with Excalidraw in Obsidian

Mind-mapping is a powerful tool. In this post I will show you how and when I mindmap with Excalidraw in Obsidian and why mindmapping is such a good tool for Personal Knowledge Management. Like this post? Show your support.

Evergreen Note on Note-taking Strategies and Their Practical Implementations

This is an evergreen note that I will be revisit regularly to develop a comprehensive list of note-taking approaches including their practical implementations in various software tools. This post will serve as an elaborate table of contents, including a brief introductory discussion on the importance of note-taking, followed by a high-level walkthrough of each method. Links to posts and videos with detailed examples and descriptions will follow over the coming weeks and months.

Deep Dive Into Roam's Data Structure - Why Roam is Much More Than a Note Taking App

Which are the longest paragraphs in your graph? Which pages did you edit or create last week? How many paragraphs of text do you have in your database in total? Which pages do you have under a given namesapece (e.g. meetings/)?

contact: info@zsolt.blog