Wikidly Taming the TMI Beast

12 July 2019

What's your favorite way to pack for a weekend trip? What has experience taught you about how to build AWS Lambda layers? What's the name of that you wanted to get at IKEA?

It's impossible for me to remember everything; there's just too much information (TMI!). Rather than resort to a drunkard's search, I want to organize my information, and make it optimally useful at minimal cost.

The Memory Palace

One of my primary organizing tools is a personal knowledgebase, a form of external memory.

Since it's a way for me to organize huge amounts of information, I think of it as a memory palace.

Kubernetes

Let's look at an example. I was recently building a Kubernetes replicaset, and had to remember details about network overlays, Vault secrets, and health checks. There were two ways for me to do this:

  1. Remember it, by using memory techniques
  2. Access it quickly, either via search, or by other methods of information retrieval.

I knew about the incredible effectiveness of checklists, so you can guess which option I went with...

Requirements

Knowledge bases have a few traits:

It was pretty clear that I needed a wiki, a common kind of transactive memory. There are other options...sort of.

I had some feature requirements for a wiki:

In addition, I had some technical requirements:

  1. All data is stored in files, and only in files. No backend database required
  2. Support for Markdown formatting
  3. Can run on OS X
  4. Free and open source.

After taking a look at dozens of different options, I had a shortlist: MDwiki and Wiki.js. Of these two, only MDwiki had all the features I wanted.

Unleash the Dev

Thankfully the installation and setup for MDwiki is very, very simple. I was able to get a basic setup working in about an hour.

I've published my installation instructions and basic on GitHub. There are also a suite of Layout and Gimmicks features I haven't experimented with yet.

Success!

The results were everything I could hope for...

A few features stand out:

  1. Simple design. My data is stored in Markdown files, and Dropbox syncs everything.
  2. Low power usage. The only service running is Nginx, which is famously efficient.
  3. Secure by default. None of the data being served leaves my computer, except via Dropbox sync. When I browse to my site, I am connecting to localhost:1138
  4. Easy to browse. I put in only the structure I need.
  5. Easy to change. All I need to do is edit a Markdown file. Doesn't get much simpler than that.

4 of the goals in my previous post, were relevant to this work:

  1. Ability - Enable me to do what I want to do at any time, with the minimum amount of structure or interruptions.
  2. Search - Enable me to find all the information I need, and only the information I need, in less than 10 seconds
  3. Additions - Be able to add new information or structures in less than 30 seconds
  4. Privacy - Serve only me. I want minimal risk that this information will be used against me in the future.

The only goal not natively supported is Search. Though I can still search the wiki contents using Spotlight.

I have one outstanding security bug, because browser CORS restrictions don't work for localhost.

This tool does exactly what I want it to.

In future posts I'll go over yet more tools, habits, and topics to scaffold my intellect. Stay tuned!