Your personal knowledge base with JupyterLab

Long long time ago I was using Evernote as a my personal knowledge base. I was collecting snippets of knowledge from my projects I was working on. One of the constant challenges was ensuring that I do not paste accidentally sensitive data as a part of the snippets. From other hand I was using only part of Evernote offering — mostly tree like notes organization and full text search to filter cards.

Since few years now I am having pet projects with extensive use of Jupyter notebooks. One day I asked myself — why not use Jupyter notebook as a fully owned personal knowledge base? One day it transformed into reality.

Nowadays I have jupyterlab environment integrated into my dotfiles: https://github.com/Voronenko/dotfiles/tree/master/notebook — on each of my working places I have virtual environment with JupyterLab up, and I can easily invoke it with shell shortcut

alias znotes=’workon project_notes && cd ${ZNOTES_PATH-~/z_personal_notes} && jupyter lab’

I was missing feature to quickly filter notebook when I know it name — and that’s successfully solved by jupyterlab extension https://github.com/parente/jupyterlab-quickopen

Another missing feature was support for templates — my notes usually follow specific pattern for easier search and analysis. This also can be resolved with custom plugin, this time https://github.com/timkpaine/jupyterlab_templates

One of the noticeable bonuses is possibility to embed diagrams related to my software projects as well as interactive code snippets.

PlantUML embedded into notes

The only missing feature now is full text search. I am mostly console guy, thus so far I am using workaround with nbgrep:

One batch searches for entries in code cells

and another shell script watches for entries in markdown cells

If you have better option to run full text search over set of JupyterLab notebooks — please comment under the article — I would be very grateful.

And, finally, the last opportunity: KeyBase. If you make use of https://keybase.io/ — you can put your knowledge base on a mounted keybase folder (either git baked or just file based) — in that way your knowledge base becomes fully portable.

In current setup — it covers my workflow for project notes, but I constantly looking for additional plugins that could improve usage experience.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store