My Heuristic For Notes and Tags In Obsidian
3/26/2023
A lot of people ask me about my Obsidian setup and one of the most often asked questions is: "Do you prefer notes or tags for everything?"
My answer has always been "it depends."
I decided that I'd share my "it depends" heuristic to give others insights into how I think about when to use which one and why (In my example).
The single heuristic I use for if something should be a note or a tag is "is this an abstract or concrete term?"
As an example, let's say I am doing a What Is a Remote Design Sprint? at Murmur Labs and I want to capture an insight for the retrospective, here's how I would go through the process of capturing if both the Sprint and the Retrospective are new concepts in my Personal Knowledge Management System.
Capture the insight as a list item in my daily page. As an example: "- The flow of capturing questions asynchronously was awkward."
This is a list item captured for the concrete sprint about its Retrospective.
This one is tricky, because at first blush, it seems like the retrospective should be concrete, but I only need to capture that it's for a retrospective that is specific to this sprint.
In this case, I would create a note for the Sprint ("Sprint WK12", for example) and tag it with #retro because I want to connect this specific Sprint with any notes about its Retrospective.
Now when I view the specific Sprint note, I can have a view that finds any items across my notes that references the note "Sprint WK12" and has a tag of #retro.
Heuristic
- Is it a concrete object/event? If it is, it should be a note. Things that satisfy this would be "My House", "A Meeting on Thursday", "Some Specific Sprint", "The Surprising Power of Liberating Structures (Book)"
- If it's not, it's probably abstract and should be a tag. Things that satisfy this would be "retro", "meeting", "book", "task".
Example of How This Heuristic Helps Me
The reason I find this useful is that I don't usually find myself writing queries for just abstractions of objects/events.
I usually refine a query for a concrete object or event with the abstraction ("Show me all items tagged #retro for this week's sprint.").
An example of the code for this DataView would be:
//```dataviewjs
dv.list(dv.pages().file.lists.where(t => t.text.includes("[[WK13 Sprint]]")).filter(t => t.text.includes("#retro")).map((t ) => t.text))
//```
I could take that even further and use a subtag for #retro, such as #retro/dislike.
This would allow me to organize my #retro notes by "like", "dislike", "change".
If I wanted to see all retro items in some other note, I could use the same DataView JS query without the initial includes for the sprint, then refine it as necessary.