Obsidian

Obsidian is a markdown editor built on electron. It is not open source. However its merits include:

“offline-first” : meaning that it aims to keep all the files accessible as local markdown files - The main benefit of this being that it doesn’t store data in some server - You don’t need a reliable internet connection to access your notes - It’s easy to migrate away from obsidian if need (more on this later)

extensive plug-in library : most of these plug-ins are hosted in public repositories (potentially also being open source)

okay vim support1

There is potential to use emacs together with obsidian with the package obsidian.el

Migrating Experience

I was looking to migrate from notion which I was finding annoying because:

  1. Can only access my notes when I have a stable internet access
  2. Slow and poor search results
  3. Not as hackable as something like Emacs

Obsidian seemed to offer all of this. The reason I chose it was a recommendation from this video. I knew of the existence of obsidian from before but always put it off because it seemed inferior to the capabilities of something like org-roam within Emacs.

Migrating from notion was mostly fine, but some images refused to be imported so I manually imported them. Was able to use obsidian to take some notes and most was going well. The mobile applications were great with very much the same features as on desktop.

There were a few issues with making flashcards. I tried a few plugins, most didn’t work except for the flashcards-obsidian plugin. Even then I ended up having to use a particular fork of the plugin. I tried to edit some of the code for the plugin but it didn’t behave as I wanted afterwards.

I changed the following part:

// Parse frontmatter
const frontmatter = fileCachedMetadata.frontmatter;
let deckName = "";
if (this.settings.folderBasedDeck && activeFile.parent.path !== "/") {
    // If the current file is in the path "programming/java/strings.md" then the deck name is "programming::java"
    deckName = activeFile.parent.path.split("/").join("::")
} else {
    deckName = this.settings.deck;
}
if (frontmatter) {
    deckName =
        parseFrontMatterEntry(frontmatter, "cards-deck") || this.settings.deck;
}

Even then, this plugin didn’t work consistently (sometimes running the function to generate flashcards would work, other times it would just add duplicate cards). I also didn’t like that it added the note ID on the next line and changing this broke the plugin.

In the end I decided to abandon obsidian for the time being and trial Org Mode together with logseq.

Utility in the future

It still remains as a great note taking option for most people. I may consider using it in the future with a plugin that allows for reading of org-mode files (e.g. Obsidian Org-Mode with codemirror 6).

Footnotes

  1. To be honest happy it exists, but a quick read of the obsidian vimrc plugin github repository will highlight the negatives.