My Notetaking Setup

A quick update today because this tweet reminded me that I wanted to talk briefly about my notetaking setup. I recently streamlined my notetaking tools after living with them for about two years(!)

The problem statement I started from is:

  1. I primarily work in a terminal with a vim session inside,
  2. I have two laptops across which I wish to share notes,
  3. I experience process as friction (so Zettelkasten and Bullet Journaling are right out),
  4. I find myself needing to refer back to notes via distant memory,
  5. I write notes more often than I read them,

Given this, I want to keep searchable notes about work, life, and research with as little friction as possible.

The system I use is a slight refinement of a previously unregarded group of behaviors! I used to take notes in an editor in any directory I happened to be in. As a result, I had a pile of unordered, untitled notes files in my $HOME directory. Whenever I switched computers, I'd lose all of my notes. Even on a single computer, finding a note I had previously written was fairly impossible.

It wasn't all bad, though: the act of writing notes was valuable in and of itself in helping me retain thoughts, and -- maybe more importantly -- it was the seed of a habit which I could spin in a more useful direction. In a sense, I had handled the first point of my problem statement already!

Two years ago, I collected all of my notes, meticulously adding titles and modified times from the files themselves, then moved them into a ~/notes directory. I symlinked this directory to DropBox on both of my laptops. Success! I crossed off point 2. There was a little added process: note filenames now started with a YYYYMMDD- timestamp to give them an unambiguous sort order.

This, however, added process. The process was "look up the date, then run vim ~/notes/" to take a note. Even that amount of added process itched, so a couple of weeks ago, I wrote a little script to take notes. (I wrote it in Bash, to no-one's surprise.) This crossed off point 3. I integrated fzf and ag into the script so now I can run:

$ note search 'some term'

To bring up a fuzzyfinder window with just the matching notes. If only one note matches, it'll open in $EDITOR instead. Inside fuzzyfinder I can select multiple notes to open in vim tabs.

I can also run note last to open up the last note I took. Finally, running note with no arguments opens an $EDITOR window and lets me enter freeform text. It takes the first line, slugifies it, and places it in the ~/notes dir with an appropriate name. Combined, those features tackle points 4 and 5.

I've been fairly happy with the results: I've taken more notes and been less tempted to combine unrelated notes into a single document. The thing I'd want you to take away from this is not that you should use my note-taking system, but that having any note-taking system is useful. (Also, look for places in your life where you're experiencing friction and try to formulate a problem statement! You'll be happier with solutions that are tied to a tightly-defined problem!)