I am an always-curious person, who can hardly focus on one thing at a time. When something does not inspire me or seems too tedious, I will struggle to work on it. This is why my personal note-taking system I ended up with has those simple requirements:

  • has to be easy to implement;
  • must require a little amount of time for organization of things, folders, and whatsoever - it has to be minimalistic and simple;
  • has to be method-agnostic, should be ultimately flexible;
  • and definitely has to be funny and stimulating.

My basic “ingredients” for this are just:

  • a computer, because on a today’s computer you can create how many notes you want without consuming physical space. I use Linux;
  • a text-editor to edit notes in a language that allows you to create links between notes and follow them. I use neovim with vimwiki/vimwiki plugin and markdown for the quick syntax. Together they allow to create and follow a link just by pressing Enter;
  • a tool to quickly find filenames and note titles on your system. I use fzf;
  • a tool to search for file contents of your notes. I use ripgrep.

When you’ve chosen your tools that allow to perform these simple tasks when needed, you’re ready to go.

My notes system works like this: each time you need a new note for a new subject or topic you create a different file (I use markdown, so for Operational Amplifiers topic I would go for something like operational-amplifiers.md) and write about that subject inside it with the text editor you’ve chosen. Plain simple. When you write about a topic, you probably will need to talk about other related topics. Those are handled just like a Wiki, you link them when required directly in the text, pointing to the other note files you wish.

For example, in your operational-amplifier.md file you need to know about BJTs; so you create another file bipolar-junction-transistors.md and write about them. You will then create a link somewhere in operational-amplifiers.md which requires knowledge of BJTs (in markdown this is [BJT](/CUSTOM/PATH/bipolar-junction-transistors.md). Of course, not only BJTs exist in electronics, therefore many other links pointing to other pages of knowledge will exists. Recursively, each of them may require further knowledge, to accomplish through linking other notes. This will end when you’re satisfied with the result. The method can scale pretty well, and I used it to efficiently pass my previous exam about UML and C++.

I also found very useful to create my own “homepage”. I called it index.md because it’s a kind of an index for my notes. There I throw all the links to my major topics, for example music.md, linux.md, university.md, programming.md, sysadmin.md, books.md, movies.md and the list goes on. These ones are very vast topics so they became pages as well, pointing to actual notes.

When I want to find notes I use one of these 3 methods:

  1. I know where they are inside my system, so I just open index.md and follow the links;
  2. I know their title, so I just use fzf to find and open them in neovim;
  3. I use ripgrep and run rg <search_string> <folder> to find content inside notes, and figure out which one I should open.

All these methods take seconds at most, and this is the reason why I prefer this system: I don’t have to spend a significant amount of time organizing notes into folders and multiple sub-folders if I can almost immediately find them with those tools, no matter where they are.

Linking to media files such as PDFs or websites is optional, and markdown+vimwiki supports it with the same syntax you use to link between notes.

Notice that this system is entirely flexible: if you don’t want to organize things in small notes linking each other, you can always go for long texts inside a single note and link less pieces of information, or just implement different styles for different subjects. It’s your choice to stick with a single method or use different styles.

Inside the single note you can use whatever style you prefer. For example, you can implement a Cornell Notes style or simply build your notes in a linear way, outlining your content.

/CUSTOM/PATH/ of your notes is up to you. I ended up with the most simple of choices: all notes inside a single folder. I can still easily reach them with fzf or ripgrep. If you feel uncomfortable with throwing all of your notes into a single folder, you can put them in folders and sub-folders, this is your choice. The most important thing is to find your balance, not wasting too much time into planning and organizing, and spending most of your time doing actual stuff.

In my next articles I will talk about my setup for this and some small goodies for this system.