This post details my note-taking and review system that uses plaintext & markdown format and is hosted for free on Github. This system aids effective learning.
Here are the problems I am trying to help solve with this system:
Some additional side benefits:
Here’s a snapshot of my top-level notes folder. Folders containing notes on books or courses start with learn_
, and folders containing project notes start with project_
.
- books/
- epubs & pdfs for easy reference
- goals/
- various attempts of my inner visionary to direct the semi-random activities of my life
- journal/
- a collection of my daily one-sentence journal entries
- keep/
- export of all my Google Keep notes taken when I foolishly thought that a single tool could statisfy my note-taking needs
- learn_book_automate_the_boring_stuff/
- learn_book_Coding_Complete_2/
- learn_book_mythical_man_month/
- learn_book_theory_of_fun/
- learn_js/
- ... more learn_ folders
- my_scripts/
- various python scripts including note automation ones
- proj_blog
- proj_game/
- proj_landscape_game/
- proj_learning_and_productivity_system/
- ... more proj_ folders
- #a_review_schedule.md
- a daily review schedule, more details below
- all.py
- runs all of my note automation scripts
- journal_template.txt
- renamed & copied into my journal folder every day
- markdown_cheat_sheet.md
- todo.txt
I use Syncthing to sync my notes across my devices. After the finicky setup, it has worked perfectly.
I also push my notes up to Github so that I can access them from my work computer. This happens on my phone via a cron job running in Termux.
My markdown notes contain images and are hyperlinked together and so I need a markdown reader on each device.
Reviewing information is an important step in learning because it prevents forgetting! Forgetting is good and natural. For example, forgetting whatever nonsense you saw on Reddit clears space for useful information. Typically, useful information is repeated. Information required for work is repeated and so is remembered. However, some useful information is not repeated. Information in books, presented at a conference, or learned on a side project tends to be a one-time affair. Dedicated review time is required to prevent forgetting.
An effective review strategy:
To accomplish this I’ve built a python script that builds a spaced repetition review schedule from my notes (similar to Anki). Every day it presents up to 5 notes for review. I read each note, re-summarize it, and create a question for myself to answer on the next review. Reading and summarizing the note compresses the information so it is easier to recall the important bits and forget the details. Creating a question primes the information for recall.
Here’s my home screen with a shortcut to the review schedule.
Here’s the review schedule itself. Each link is clickable & will open up the related note.
Here’s a linked note. When I’m done reviewing I add a ‘d’ after the review tag. This tells the review schedule script to increment the last reviewed date and increment the review number. Any note containing a review tag will be added to the review schedule. Adding ‘rme’ to the top of a note will queue it up for review.
My review schedule code is very rough and personalized. Here it is if you’d like to adapt it for your use.
I use Termux cronjobs to:
Using a simple folder structure and Markdown format to keep notes in combination with Syncthing and Github makes it easy to access notes from many different devices. Writing scripts that parse the notes is a powerful time-saving tool.
A spaced repetition review schedule is a part of an effective learning system, and the reminders.py script can automatically create this review schedule.
Use Termux and a cron job to execute this script on your phone.
tags: