Building an Accessible Knowledge Base

2018-02-17

Over the last few years I have put some effort into making a modern knowledge base that is functional, all-text and available on all my working environments. Many people have written todo list, wiki and knowledge base solutions over the years and there are many that are available. My advice is to buy into a solution you are passionate about and perhaps build some of it yourself. The most important part, it has to be available in all-text. The solution I built involves using vimwiki for longer documentation, a simple command line program I wrote called buz that continues to append notes to a YAML file for single line notes on specific subjects and I use Syncthing to synchronize my data between my work and home computers while having simple and secure versioning without a third party having my data.

Vimwiki provides the powerful personal wiki that I can edit in Vim, or in a pinch the files are easily identifiable from any file viewer and can be edited in any text editor. The advantage I have with vimwiki is that the wiki index beautifully links to all my wiki pages and I can also utilize a daily diary and todo list that is easily accessible with or without Vim. Vimwiki gives me a little more power over just managing text files on my own, by easily linking to documentation and daily diary pages that are created with just a few keystrokes rather than having to create daily pages entirely on my own. After a few years of use, this tool has become indispensable and I have it easily working on Mac and Linux computers alike.

I wanted a simple minimalist approach for those one-liners, single commands or short notes that are helpful to bring up quickly, so I wrote a simple command line program I call buz. From the command line I can call buz and issue a subject, followed by the single line note I want to remember and this information is saved to a YAML file. All the program does is check if the subject has been entered before, if so the note is appended under that subject, if not the new subject is added along with the note. You can quickly grep any subject and find notes quickly.

The vimwiki and the buz YAML file are saved to directories that I synchronize across devices using Syncthing, which is an open and decentralized replacement for things like Dropbox or SpiderOak. I was a huge fan of SpiderOak but I did not need the cloud storage, I already have that with computers in multiple locations. While SpiderOak had my information encrypted, I did not want to pay for synchronizing files. Syncthing is secure and does not have any of my files on third party servers, there is no server where my data might be compromised legally or illegally, my files are on my machines only.