Universal Digital Notetaking Format
In this post, I will be describing the notetaking format I've settled for after a year of writing posts to this website.
First of all, here are the guiding principles:
- Plain-text-oriented: I want my notes to be platform-independent and for them to not be reliant on any proprietary format.
- Simple-as-possible: If the system gets in the way, I won't be using it as much. Strive for simplicity.
- Searchable: A system that relies on manual organization takes a lot of effort to work right. Leveraging search gets the same result (being able to find and retrieve what you are looking for) with a fraction of the effort.
How it is implemented in a higher level:
- A single directory with a collection of plain-text files with UTF8 encoding.
gitfor version-control and backing up to a remote machine.
grepfor seaching within the body of notes.
vimas the text editor (or VS Code, if I feel the need).
The simple trick, though, is how the notes are written:
- The file name of the note starts with the ISO date of when it was created. For example, this file is named
- The first line of the text file the title of the note. This allows
head -1to reliably get the titles of any of the notes (or of all the notes of the whole directory).
- The second line of the text file is the date when the note was creating in ISO format “YYYY-MM-DD”. (Note: I'm experimenting with adding the dates when I modified the note in this same line, separating each with a space.)
- The third line of the text file are the tags I want to attach to the note to be able to find it later. Each tag starts with a “#” and does not contain spaces. A single space separates multiple tags in this same line.
- Two consecutive empty lines separate this initial metadata about the note of the contents of the note itself.
Putting it all toghether, it might look something like this:
Universal Digital Notetaking Format 2022-09-25 #post #git #grep #vim #plain-text #notetaking #notes #text In this posts, I will be describing [... the contents which you're reading now ...]
This organization pattern allows me to do the following flows:
lswill list all notes in chronological order with regards to their creation date.
grep -R '#tag'will list all the notes which match a particular tag.