I was aware of the enthusiasm surrounding Obsidian, the note-taking app, as I follow some “personal knowledge management” (PKM) blogs and have a ton (nearly 5,000) of text file notes that I have accumulated over nearly 20 years, moving from plain text files to Evernote to Tiddlywiki to Nextcloud, resulting in a disorganised dump of possibly reusable code, thoughts, plans, lists, diary entries, reading notes, mementoes, articles etc etc in a mixture of formats. A lot of it is junk, but I found some of it useful recently when I was painfully writing a book chapter, and realised that there was some good stuff there, if it could be better organised - also that I need a less chaotic way to gather thoughts, notes etc for any future writing. I wondered if Obsidian would help, but wasn’t sure it would work with my specific complex arrangements.

I have used Nextcloud for a long time and it has been a pretty solid solution provided you can live within its limitations. I need to access my notes from work, home and various devices, and Nextcloud (via the Web or its mobile apps) seemed to be a reasonable solution. I can’t just install anything I like on my work machine. But I was talking to a colleague recently and he showed me some strategy work he was doing and I realised he was using Obsidian on his work laptop - it was allowed! And so I was also able to get it installed. So far I have been very impressed by its capabilities.

Obsidian is free but it is not an open source app, and if that is non-negotiable for you then there are similar but possibly less capable options like SilverBullet. Obsidian is very popular because it is very flexible and allows you to manage multiple things in one place, but with everything stored as text files so you are not tied into some peculiar format. The capabilities I needed were:

  • a dump for random text notes (in Markdown format) that I can easily search and one day possibly (let’s be realistic) might organise into a beautiful hierarchical structure representing the essence of decades of learning and wisdom
  • somewhere to plan projects, track tasks and organise notes in one place, ideally using mindmaps
  • somewhere to write, with minimal distractions and the confidence that nothing is lost
  • some form of integration with my blog would be ideal
  • it would be nice if it could replace other apps I use too, e.g. Anki, calendar (TBH I only realised this was a possibility later on)

Installation and synchronisation

I now have it installed on my work computer, my home computer running Pop!_OS Linux (as a Flatpak), my Android phone and my new cheapo Android tablet for reading articles and e-books. Obsidian does everything that Nextcloud can do, but has much more functionality for organising my notes, and search is faster than on my Nextcloud. It also has Vim key bindings and dark mode, which nerds like me predictably want.

The interface took a little while to get used to. There are various panes and menus, plus a menu called the “Command Palette” which you get with the keyboard combo Ctrl+p on desktop and by pulling the screen down on mobile. There is an “open a random note” button which can be interesting to use when you have tons of historical stuff. I have put all notes in the same main folder, with subfolders for attachments and templates.

Synchronisation is one of the first challenges a new Obsidian user will encounter. My work laptop backs everything up using OneDrive, and you can’t easily turn that off. My home box backs everything up using Nextcloud, and I want to keep doing that. Obsidian has an official sync service for a few quid a month, but there are also various DIY options. I started off synchronising via GitHub, and had an excellent refresher on managing merge conflicts on multiple devices simultaneously (and of using git stash and git reset --hard in anger), finally deciding there must be a simpler option.

Then I came across A Nextcloud-specific Obsidian Vault synchronization plugin., which would have been an excellent solution to synchronise via Nextcloud, except my Nextcloud is behind a Cloudflare tunnel which partly cripples WebDAV,1 leading to unreliable merging and duplication of content within notes. Also I have an undiagnosed electrical fault at home which still has the village electrician stumped, and so can’t rely entirely on my home server uptime at the moment.

So I have opted for the official sync on a monthly basis for the moment and I would recommend doing that if you want reliability and simplicity. To avoid issues with OneDrive follow this guidance: Switch to Obsidian Sync - Obsidian Help. There are some limitations to the official service (e.g. don’t expect it to like big files - this is not a solution for all your files) but it works well for text files. I haven’t moved all of my notes over to Obsidian yet, but hope to do so soon.

Obsidian plugins

Obsidian has thousands of plugins developed and shared by users. It is a good idea to only install any that are essential for you, and to check that they are actively developed and well documented. If someone last looked at the code years ago then stay away. I have only installed a few plugins so far.

With Tasks, tasks can be created in any text file, given due dates, made recurring, or filtered or sorted in various ways. One of my current tasks looks like this:

- [ ] #task Occupational health ⏫ 📅 2026-06-22 #tasks/gh/nexttrip

The #task tag flags it as a task (optional, but helpful if you have a ton of other things that look like tasks among your notes). This basically says: I need to contact occupational health for clearance before my next foreign jaunt, tomorrow, with high priority. The second (hierarchical) tag allows me to create a specific view of the tasks for this work area, ordered or filtered any way I like.

The format is reminiscent of todo.txt in some ways, except it uses emojis (there is an alternative purely text-based way if you prefer) to identify different fields - you enter the different elements using a dropdown menu. This works really well for me on my desktop computers. It works slightly less well on mobile (where I was using the fantastic Tasks.org, which can feasibly be synced, but alas via WebDAV), as you have to open a note and edit it to add a task, but I think I can live with that. Thanks to the Vim bindings I was able to edit my existing tasks into the required format in a couple of hours.

You can get really creative with the views you create - this is the source code for my main Tasks page, which firstly shows tasks for today, then (collapsed by default) an importance-weighted randomised list of today’s tasks (my anti-procrastination solution - uses another Obsidian plugin), then (collapsed by default) a list of tomorrow’s tasks. But such complexity is entirely optional.

>[!danger]+ Today
> 
> ---
>```tasks
>not done
>due before tomorrow
>sort by due reverse
>group by priority
>```

>[!question]- Random
> 
> ```dataviewjs
> const weightOf = (t) => {
>     const x = t.text;
>     if (x.includes("🔺")) return 16; // highest
>     if (x.includes("⏫")) return 8;  // high
>     if (x.includes("🔼")) return 4;  // medium
>     if (x.includes("🔽")) return 1;  // low
>     if (x.includes("⏬")) return 0.5; // lowest
>     return 2; // no priority marker
> };
> 
> const tasks = dv.pages("#Tasks").file.tasks
>     .where(t => !t.completed && t.due && t.due <= dv.date("today"))
>     .array()
>     .sort((a, b) =>
>         Math.pow(Math.random(), 1 / weightOf(b)) -
>         Math.pow(Math.random(), 1 / weightOf(a)));
> 
> dv.taskList(tasks, false);
> 
> const btn = dv.el("button", "📋 Copy list");
> btn.style.cursor = "pointer";
> btn.onclick = async () => {
>     const text = tasks.map(t => ` ${t.text}`).join("\n");
>     await navigator.clipboard.writeText(text);
>     btn.textContent = "✅ Copied!";
>     setTimeout(() => (btn.textContent = "📋 Copy list"), 1500);
> };
> ```

>[!hint]- Tomorrow
> 
> ```tasks
> not done
> due tomorrow
> sort by due reverse
> group by priority
> ``` 

To do the above I also installed the Dataview plugin which allows you to write queries on your notes, and enabled JavaScript queries. I am sure this plugin can do a lot more.

The next really useful plugin I installed was the Spaced Repetition plugin which has much of the capability of Anki for learning languages (foreign and programming). Using a fairly simple text format (and certain tags) you can create quite complex Q&A cards, bidirectional if required. It uses the same algorithm as Anki.

Python. How do you check if your program is being run from the command-line or imported? :: Check `__name__`.   Every program has a `__name__` variable. If the program is run from the command line, it evaluates to '__main__'. Else it evaluates by default to the name of the program.									

I am in the process of converting my Anki decks, and adding a new one to learn basic Bosnian (merhaba!). This plugin can also be used for incremental reading.

I have also installed the Excalidraw plugin, which allows me to create Excalidraw diagrams, but haven’t played with this one much yet. I am on the lookout for good plugins for mindmaps, calendars and recipe management, and also interested in a possible integration with Zotero where I keep track of the literature. There are some possible options for organising my notes, either by rationalising my tags or using AI, which I may try at some point. Finally I can draft blog posts like this in Obsidian, copy them over to my local copy of the blog repo and push it to GitHub, where a workflow will publish it. Obsidian is possibly the best “one app to rule them all” solution for nerds that I have ever seen.

Footnotes

  1. Another reason to stop using Cloudflare tunnels