Over the summer at RC, I spoke to andyc who mentioned that he’s been keeping a personal wiki for over 10 years. I was really inspired by how he uses his wiki to keep track of knowledge and research and realized I needed my own.

Filekasten is what I built - it is a personal wiki built in python that uses markdown for rendering.

There are two main portions to filekasten: the wiki and the journal. By default, my new tab opens up to the journal, where I can quickly jot notes down about how I’ve been spending my time or search for pages.

While andy’s wiki stores his data in sqlite, I wanted to have a format where I can edit files on disk, so the files are stored in plaintext and filekasten is given a list of directories to monitor. The file metadata is then ingested into sqlite and a search index is built. Every hour or so, all the content is exported to a directory and a git commit is made, so there is a history of all changes over time.

Since the files are stored on disk, I can edit the files in the terminal or I can edit them through the browser. When I edit a page through the browser, it actually causes my filekasten instance to launch an instance of vim on that file. When I am finished editing in vim, filekasten re-scans and re-displays the file.

So far, I have about 300 wiki pages in my filekasten and 800+ journal entries. I used to keep my journal entries in jrnl, a really cool tool, but eventually moved to just using plain text files with yaml frontmatter.

All in all, filekasten has been working out really well, but I still need to get in the habit of documenting the research I do - I find that I’ll spend hours looking into a topic but forget to take notes.