Note "Gardening"
By Rob Coles
It is very easy to capture notes to Obsidian. With Kepano’s web clipper and a number of other quick-capture tools as well as porting my old notes from Evernote (which I had been using since 2007), I ended up with about 7000 notes in my vault. This is not a big number by any means - I have seen screenshots of vaults with factor of 10 more notes. It is enough, though, that without making an effort to revisit notes, I will likely have no memory of making them, and they will then have questionable value.
The metaphor often bandied around for the maintenance process is “gardening”, where you tend the good and help it grow, remove any bad or deadwood. This has been a useful framing for me. I don’t want my Obsidian vault to just be a hoard of stuff that is never re-visited or used. I don’t tend to generate any kind of output from my notes - it is mostly reference material and a workflow/Getting Things Done (GTD) system, but I still need it to be relevant.
To avoid the stagnation I have adopted a number of processes to try and make sure that the notes I do have are useful and up-to-date when I do need them. These are currently broken down to daily, weekly and monthly processes.
Daily
My daily note has a section that is automatically generated for me. There are 6 notes selected each day. The first 3 are random notes from my vault, the second 3 are the notes with the oldest last-modified date.
The random notes replaced my “From Evernote” process, which is completed now. I had imported all of my old Evernote notes with a “#ExEvernote” tag and just selected 3 of these each day. This made a manageable task of weeding out everything I had ported over without having to deal with a monster up-front effort. I cleared the “#ExEvernote” tag as I reviewed each note.
Today’s extract looks as below, and is in a callout so I can hide the detail when it’s done.
I don’t normally spend much time on each note as part of the daily process - it’s kind of a GTD “five minute rule” thing - if reviewing the note is going to take a significant amount of time, I’ll log it as a separate task, but for each note I’m reviewing I’ll:
- Consider if the note is still useful. If not I will delete it
- Check any external links to make sure they still go somewhere
- Read the contents - Should anything be added? Removed?
- Is there anything this reminds me of? Do the existing links make sense,
- Flag the record with a “Last reviewed” date of today. I have a hotkey for this.
Most of my notes are fairly short, so this process is typically quick. The aim is to try and improve the note each time it is touched. I don’t use progressive summarisation - I did experiment with it, but it didn’t help me at the time. I may re-visit this.
Weekly
I have a few weekly tasks that are scheduled on different days. I typically do them in the evening.
Oldest Modified
This is an expansion of the oldest modified section in the daily note. This uses the “bases” core plugin:
views:
- type: table
name: Oldest Modified Date
filters:
not:
- file.folder.contains("_")
order:
- file.name
- file.mtime
sort:
- property: file.mtime
direction: ASC
limit: 10
columnSize:
file.name: 690
and is just set to exclude my template and image folders (both start with an underscore).
I normally Control-click the notes to open them in a new tab, and stop when I can’t read the tabs - probably 10 or so a week.
I’m currently using the system last modified date. I’m aiming to switch that to my own last-modified date once I reach a critical mass of notes I’ve added it to. I occasionally do mass maintenance tasks, or other file system stuff or the sync interferes with the system date.
Random
I use the “Smart random note” plugin and a workspace to make it easy to switch and search. It uses a search query:
-path:daily -path:templates -path:attach -path:Journal
Similar to the “Oldest Modified” I’ll do 10 or so at a time.
Same process too.
Someday Maybe
I use the GTD Someday/Maybe approach. These are tasks I am committed to reviewing, but not necessarily doing. I split this between “Soon” and “Someday” and they are normally just odd ideas or things I fancy following up, but I’m not looking at doing this month. GTD suggests reviewing these all during the weekly review, but I have way too many to do this in a sensible amount of time. I sort the “Soons” and “Somedays” alphabetically and each week I’ll pick one of the two and review a couple of letters worth.
I track this with a table, and the notes are pulled out with a base:
I’m splitting out the first letter for future enhancement of bases. I used a dataview query before and had it grouping by first letter within the list.This made it a bit more readable. As of the time of writing, bases doesn’t support grouping, but I’m hopeful and there is a reference to grouping in the bases roadmap.
Validate Todos
I do this as part of my weekly review. It’s just a handy summary as part of my “get current” process. I have bases that will identify ToDo notes that are missing a next action, missing a “when” context, set to “Waiting” but with no scheduled date, and sitting in the inbox waiting to be processed.
Monthly
Orphan Notes
These are any notes other than ToDos where there are no links, and are pulled out with a base:
views:
- type: table
name: Table
filters:
and:
- file.links.isEmpty()
- '!file.path.startsWith("Journal")'
- '!file.path.startsWith("_")'
- '!file.path.startsWith("ToDo")'
- '!file.name.startsWith("Scratchpad")'
I have a special link called “NoLinkOk” or will self-reference the note if it makes sense, but I try to always link a note to something.
Validate Scheduled Date
I’m trying to automatically insert this, and the “Last reviewed date” below with hotkeys and validated prompts now, so these don’t often show issues, but when I was maintaining the date fields manually I did occasionally stuff them up.
I use a base that just sorts the scheduled date. Typically errors show up as the first entry. I check the oldest and the most recent, just toggling the sort sequence. The base makes this very easy and quick.
views:
- type: table
name: Table
filters:
and:
- "!Scheduled.isEmpty()"
order:
- file.name
- Scheduled
sort:
- property: Scheduled
direction: DESC
- property: file.name
direction: ASC
limit: 10
columnSize:
file.name: 735
note.Scheduled: 159
I also look at the oldest for any overdue tasks and make sure they are appearing on my daily task list.
Last Reviewed Errors
This process is the same as for scheduled date, but for the last reviewed errors. I am automating the addition of the Last Reviewed date via a QuickAdd macro and hotkey, so these are much more reliable now than when I was manually keying them. The macro will add or update the frontmatter for the last reviewed date, and add a string with a meta-bind display to the bottom of the note if it isn’t there already.
Future “oldest note” processing will use this date rather than the system last modified date.
These are all of the regular maintenance processes I use, and they help me to keep my notes evergreen and relevant.
Resources:
GTD Actions process
Progressive summarisation
QuickAdd
Meta Bind
My Obsidian-related code
Image from craiyon.com