Hello everyone,
After taking a look at other tool called Dendron I was hooked with the concept of hierarchies, because they fits perfectly with my workflow and the type of content I write, so I want to show you what I’ve been working lately.
Why?
In my experience, pure zettelkasten is awesome for academic information, taking notes on books, and articles that are full of abstract concepts that don’t belong to any category but are inter-linked with other ideas. I use that a lot.
However since I work in the IT industry, I take a lot of notes on software and software architecture. This kind of information has a clear structure, a structure that repeats between information that belongs to an specific context. And here zettelkasten in my opinion is not the perfect fit.
I ended up having lots of notes like: data types in Java, data types in c… Repeating information in the title to be able to find specific notes.
This namespaces helps grouping and branching notes that are strongly connected but leaves the concept of atomic note intact, a note that you can still link with others that are related. Also, makes finding this references faster among all your notes.
You can find more on this rationale in the blog of Dendron’s creator, and some of the conversation I had about this in Org roam’s Slack
Disclaimer
I’m not writing this to suggest a new feature set to include in org roam, I don’t even know if this is aligned with jethro’s plans for org roam, I just wanted to share what I’ve been working on.
I was thinking on this more like a plugin for me and my friends who like the approach. Something that could work with the base project without disturbing the development
Currently this is just a bunch of functions in my config file that take advantage of org-roam code. I’m just learning elisp, so probably the code is not perfect, any suggestions or recommendations are more than welcome!
Features
Hierarchies are just filenames separated by dots “.”, each subsequent hierarchy is child from the former. Something like:
org.refile
=> refile is child of org
org.refile.cfg
=> cfg is child of refile
Each child is a note, so we can have a folder-like structure, but much less rigid.
Finding and creating notes
org-roam-node-find
shows hierarchies in the minibuffer. If the note does not exists use the input to populate the hierarchy (embedded in the file name) and the title.
spaces are changed for hyphens in the file name. You can also create notes without any hierarchy, like org roam normaly do.
Refactor namespaces
Useful to move group of files to another namespace name:
Of course if you want just change the hierarchy of the current file you can do it with another function.
Time notes
This hierarchies help to create what I call Time notes, which is probably a bad name, let me know if you find something better
Time notes are sub-hierarchies of other notes that indicates the time, you might want this notes under different other notes, journal notes are a great example. In this case it is integrated with org-roam-dailies, so we can still using the current functions:
journal.daily.2021.04.21
journal.weekly.2021.04.40
Or hierarchy where you capture meetings:
project.customer1.meet.2021.04.21.123020
project.customer2.meet.2021.04.21.183020
This makes notes easy to sort and easy to find. You can create time notes under any other note as well
Scratch notes are other way of looking at time notes. This type of notes are just a dump bucket where you want to capture something on the fly. It is nothing more than a top-level hierarchy with time:
scratch.2021.04.21.183020
Take a look at the example:
Dailies:
Regular time notes:
And scratch notes:
This notes are possible using org-capture through org-roam new capture functions, so it is easy to creae new types of time notes.
For me this works perfectly and let me find the information I need really quickly. This is just a basic feature set borrowed from dendron, I plan to add more of it but for the moment this has all what I most use.
Here is the gist with the code:
Let me know what do you think!
PS: I would say this is kind of related to the find node UI thread.