# Boris Buliga

I grow under the sun. When I am not writing code, I am either drinking wine or drinking tea (with these little cups). Cheese is my bread and tracking everything in Emacs is my cheese.

P.S. d12frosted means dice with 12 sides from the Chessex™ frosted series. I used to play. Just a little bit.

# (tagged 'org-roam)

### Path to org-roam v2

June 11, 2021

In my opinion, org-roam is among the best things that happened to Emacs during the last 5 years. Forget Zettelkasten method, org-roam is a solution for non-hierarchical note-taking regardless of methodology you are worshiping. The most important and appealing feature of org-roam is its database! Just imagine, in less than a second I can filter a collection of 10000+ notes by tags, title, aliases, links and other things. This is what made my wine tracking solution usable with ever growing collection of tasting notes, and this is what I used to build various tools for presenting non-trivial views around my notes (example of a public one).

And now org-roam has released V2, the first major redesign affecting both users and authors of libraries extending org-roam. And while there are breaking changes requiring some effort from users, V2 is so amazing and is so much more stable than V1, that my advice is to drop the chains of old org-roam and embrace all the goodness V2 brings.

Unfortunately, major redesign means lots of breaking changes and in this post I am going to describe my migration experience, code I used to migrate my notes and share some thoughts after migrating a code base comparable to org-roam itself. Of course, it touches my precious vulpea library (the fox image is its icon), so expect some advertisement™.

NB. Migration process means adapting to and overcoming breaking changes. Since V2 is full of them, this article might look pessimistic or depressing. But don’t get fooled, I think that V2 is amazing. I am very happy to use it on a daily basis for several months and I never looked back. Jethro is doing amazing work! As well as all contributors (with extra kudos to Noboru Ota, because Noboru rocks).

Change Log:

### Task management with org-roam Vol. 7: Capture

May 21, 2021

Capturing is one of the most important activities in the task management process. Previously we talked about storing and querying tasks and now it’s time to cover capturing of tasks, meeting notes and inbox.

Please note that the goal is not to discuss GTD or any other methodology, but rather to discover how org-roam combined with everything we talked previously may help you to improve your capturing process regardless of methodology you are using.

### Task management with org-roam Vol. 6: Select a person and view related tasks

January 24, 2021

In one of the previous articles (Vol 3 to be precise) we talked about automatic setup of filetags, so each of the task in note related to a person is automatically tagged thanks to tag inheritance. Then, in Vol 4 we talked about automatic tagging of tasks whenever a person is mentioned either in the title or the body of some task. This all makes org-agenda matching capabilities really useful for when we want to see the list of all tasks related to specific person.

In this article, we are going to write a small utility function that asks user to select a person and then presents and org-agenda buffer with tasks related to selected person.

Believe me, intro is longer than the content!

Change Log:

• [2021-03-02 Tue]: Update naming convention to match personal configurations.
• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.

### Task management with org-roam Vol. 5: Dynamic and fast agenda

January 16, 2021

In previous articles (Vol 1 and Vol 2) we talked about moving tasks from regular org-mode files to org-roam notes. This relied upon adding all org-roam files to org-agenda-files, which doesn’t scale well, as when you build an agenda buffer, it needs to traverse each file. Once you have more than 1k notes, things become sluggish.

In my experience, once I reached 1200 note files, org-agenda constantly took more than 50 seconds to build, rendering this tool completely useless. But then I realised that only 3% of those files actually contain any TODO entries, so there is no need to traverse whole org-roam-directory!

In this article we are going to optimise org-agenda back to less than 1 second by dynamically building org-agenda-files list to include only files with TODO entries. All thanks to the power of org-roam and some hooks I am going to describe.

Change Log:

• [2021-03-02 Tue]: Update naming convention to match personal configurations.
• [2021-03-08 Mon]: Gustav shared that org-element-map has an optional parameter first-match that works like seq-find, meaning that vulpea-project-p can be optimised.
• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.
• [2021-08-19 Thu]: Gustav proposed to modify buffer only when tags have changed. Code was updated accordingly (both in the post and on GitHub Gist).
• [2021-09-07 Tue]: rngesus-wept proposed an interesting solution on how to make sure that any extra stuff in org-agenda-files are not wiped out.

### Task management with org-roam Vol. 4: Automatic tagging

July 7, 2020

In the previous article we covered automatic tagging of notes related to a specific person, and today we are going to cover automatic tagging of an org-mode heading upon insertion of link related to a person. To put it simple, when I mention someone in the task, I would love this task to be automatically tagged with that persons name. As they say, it’s better to see once, than imagine multiple times, so here is a screencast.

Change Log:

• [2021-01-24 Sun]: Since some of the functionality mentioned in the original article was merged to org-roam, all code is updated to reflect the current state of affairs.
• [2021-03-02 Tue]: Update naming convention to match personal configurations.
• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.
• [2021-11-19 Fri]: Update post to reflect inclusion of vulpea-insert function to vulpea library. You can find previous version of this article in git history.

### Task management with org-roam Vol. 3: FILETAGS

June 25, 2020

In the previous articles (vol1 and vol2) we walked the path to org-roam and solved the issue with garbage in the category column of agenda. Today we are going to explore meta projects dedicated to specific person, tag inheritance and moving such projects to separate org-roam files. As result, we will have code for automatic tagging based on the title.

Aside from regular meta projects (like personal blog) I also create meta projects for people and locations. This is helpful, because some of the tasks are really related to someone specifically. For example, when I need to return a borrowed book, I just create a task for this.

* Frodo Baggins                                               :@FrodoBaggins:

** TODO Return 'The Lord of the Rings' book

** TODO Farewell party                                             :PROJECT:

It feels like Mr. Frodo is about to live Shire. So we are going to setup a
farewell party for him.

*** TODO Talk to Samwise Gamgee                            :@SamwiseGamgee:

*** TODO Talk to Peregrin Took                              :@PeregrinTook:

*** TODO Tie a pair of wool socks

I am not sure where he is going, so a pair of warm wool socks should be good.
At least they can be used to protect bottles of wine during journey. That is in
case Frodo doesn't wear socks. But how could it be? Everyone does!


Change Log:

• [2021-01-24 Sun]: Since some of the functionality mentioned in the original article was merged to org-roam, all code is updated to reflect the current state of affairs.
• [2021-03-02 Tue]: Update naming convention to match personal configurations.
• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.

### Task management with org-roam Vol. 2: Categories

June 24, 2020

In the previous article we set a ground for moving tasks to org-roam, and encountered an issue with visual garbage in the agenda buffer. Namely, org-roam file id as part of the category. In this article, we are going to explore the means to overcome this issue.

Change Log:

• [2021-03-02 Tue]: Update category extraction function to use TITLE of the note and enforce length limit. Kudos to Tim Ruffing for the idea.
• [2021-03-02 Tue]: Update naming convention to match personal configurations.
• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.

### Task management with org-roam Vol. 1: Path to Roam

June 23, 2020

org-mode is a simple outliner for note taking and list management. It doesn’t impose any complex features on users. This is something users excel at by themselves. My suggestion is to continue this tradition and discover task management capabilities in org-roam, an org-mode extension for non-hierarchical notes management.

Change Log:

• [2021-05-10 Mon]: Update post to reflect changes in org-roam v2. Previous version of this article is available on GitHub.

### Org-roam tags

June 10, 2020

Org-roam is a note-taking tool built on top of Emacs and Org. Essentially, it’s a replica of Roam Research. These tools provide an easy way to create and manage non-hierarchical notes. If you wish to learn more, just take a look at the Org-roam manual or watch Making Connections in your Notes video by Matt Williams. Believe me, Org-roam and Roam Research are game-changers. Or even better, don’t believe me and validate my claim by yourself.

Since I am already addicted, it was only natural to prefer org-roam over some web application. Apart from being developed on top of mature Org ecosystem, Emacs brings many merits and extensibility is one of them. Once org-roam introduced tags system in v1.1.1 I felt the lack of functions to manage them. Adding and removing them by hand is not nice. So in this article I am sharing a snippet that I’ve forged to ease the unbearable lightness of being.

Change Log:

• [2020-10-12 Mon]: Functionality described in this post (and similar functionality to manage aliases) is merged to the upstream. Now simply use one of the following functions:
• org-roam-tag-add
• org-roam-tag-delete
• org-roam-alias-add
• org-roam-alias-delete
• [2021-07-31 Sat]: With release of org-roam v2 you should use the following functions:
• org-roam-tag-add
• org-roam-tag-remove
• org-roam-alias-add
• org-roam-alias-remove