This post is a tour of my notebook system’s frontend. See Digitizing notes as a learning tool for a description of the project.

When I save my notebooks, I have a post_save_hook in the jupyter_notebook_config.py that also updates a search index. Then I have an Alfred workflow that runs my search script. For example, one command searches for bolded terms and headers:

And open selected notebooks in my browser:

Notes and flashcards

These are what my notes from Digitizing notes as a learning tool look like:

Example of notes

Separate flashcard page

On notebook save, another post_save_hook adds flashcard-notes to a little sqlite database. I use another Jupyter notebook to load cards from the database. I display flashcard buttons using ipywidgets and display the markdown using IPython.display.Markdown.

Example of flashcards

  • I don’t use answer-difficulty information yet, but the idea is that I can use it for some fun spaced repetition stuff!

Viewing notes as flashcards

Back in the notes themselves, I also have buttons defined using Jupyter’s custom.js which switch to this alternate flashcard-view:

Example of flashcards

This is not optimal, but I also have Jupyter buttons that map to the {easy, perfect, mixed, hard} choices:

Example of buttons