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 in all my working environments. Many people have written to-do lists, wiki, and knowledge base solutions over the years, and many 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 came up with involves using vimwiki for more extended documentation. I wrote a simple command-line program called buz that continues to append notes to a YAML file for single-line notes on specific subjects. 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 a robust personal wiki that I can edit in Vim, or 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. I can also utilize a daily diary and to-do list that is easily accessible with or without Vim. Vimwiki gives me a little more power over just managing text files by easily linking to documentation and daily diary pages that are created with just a few keystrokes rather than having to develop daily pages entirely on my own. After a few years of use, this tool has become indispensable, and I have it efficiently 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 topic is added along with the message. You can quickly grep any matter and find notes rapidly.

The vimwiki and the buz YAML files are saved to directories that I synchronize across devices using Syncthing, an open and decentralized replacement for things like Dropbox or SpiderOak. I was a massive fan of SpiderOak, but I did not need cloud storage; I already have 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.