A Markdown Personal Knowledgebase
I spend a lot of time doing research - whether that is evaluating security products, or learning about the latest vulnerabilities. I also do a lot of training courses to keep my skills fresh.
It's really important to me to have notes which let me easily retrieve the information when I need it.
I initially heard about the Zettlekasten (Slip-box) method in a book called 'How To Take Smart Notes' by Sonke Ahrens - see https://takesmartnotes.com/tools/
Originally this was a set of index cards, each one holding a discrete piece of information and 'hyperlinked' to other relevant cards by way of a unique reference number on each card. In this way a large knowledgebase can be created - there are a couple of cards which serve as entry points and list the high-level topics and then you can drill into the cards to find information you need. Links can be added across subjects which allows for interesting discoveries to be made. Maybe finding the highest risk vulnerabilities on a network has analogues with panning for gold so a link could be made between those two subjects.
There are also digital options for doing this using text files written in Markdown. Tools which I have tried are Obsidian, Zettlr, and BearApp.
I had most success with Zettlr - it works well with Zotero for storing information about research sources and creating bibliograpies.
However, I spend a lot of my time using VS Code - it works well for writing scripts and for taking notes and means I don't need to switch between multiple applications.
Dendron is a VS Code extension which makes managing your notes as markdown very powerful and it is what I now use.
After installing the extension, and creating an empty 'vault' you can start taking notes. Each note is automatically given a unique reference number and can be linked to other notes just like a Zettlekasten.
Notes are not stored in subfolders, instead the name of each markdown file is used to create a hierarchy.
I have files named like:
book.security.<name of book>.<name of chapter>.md
book.programming.<name of book>.<name of chapter>.md
learn.conf.<year>.<name of conference>.<talk>.md
Each file can be written quickly - all the Markdown formatting can be done from the keyboard without having to reach for the mouse. Files can be linked to each other using the filename, and if you ever rename a file, the links in other files will automatically update.
Dendron gives you a graph view of all your notes so you can easily find orphaned notes and link to them. There is also a 'tree view' which shows the hierarchy and lets you easily navigate that way too.
The above files would look like:
I intend to keep growing this personal knowlegebase for some time so, to keep it safe, I manage it using git. I use a private Github repo as a remote so that I can access the notes from anywhere.
I take work and personal notes in the same knowledgebase, but there are obviously some things that need to stay only on my work computer, or on my personal computer. These files all have names starting with
local. and I have an entry in my
.gitignore file to ignore them.
I am investigating how I can keep these files in my local git repo, but not upload them to Github.