A CLI program for learning things through spaced repetition.
- CLI (ideal for
tmux
+ssh
) - Multiple decks
- No configuration needed
- Colorful tags
- JSON exports/imports for easy deck manipulation
- HTML reports
In the console run:
pip install drillsrs
...or, to install the latest version:
git clone https://github.com/rr-/drill
cd drill
pip install . --upgrade
Then run drill-srs
to see the available commands.
Flashcards are organized in decks, so that you can study multiple subjects at once. To start studying, first create a deck and populate it with cards manually or through an import.
Each "study session" will then display the cards to memorize. Following the study, you'll be invited to a "review session" of all cards shown so far, where your answers will affect how often a given card will be shown for re-evaluation. A correct answer increases the card's score by 1, while a mistake decreases its score by 1.
This is how the score translates into the re-evaluation delay:
Card score | Wait time |
---|---|
0 | none (just after the study session) |
1 | 1 hour |
2 | 3 hours |
3 | 8 hours |
4 | 1 day |
5 | 3 days |
6 | 1 week |
7 | 2 weeks |
8 | 1 month |
9 | 2 months |
10 | 4 months |
For example, if you answered the given card correctly thrice (score 3) and now made a mistake (score is 2 now), this card will re-appear after 8 hours. The score can't fall outside the range in the table.
Such review system reinforces the quality of the memorization.
Q: Why not anki?
A: I like anki, but there's no CLI version I could use remotely, so I decided
to roll my own simple program.
Q: Why not SuperMemo or other better algorithms?
A: These are cool, but I wanted drill
to stay simple. Additionally, the
system used by drill
is very similar to the one used by
wanikani.com, which I hold in very high regard.
Q: Why drill-srs
rather than just drill
?
A: There's already drill
package on Python Package Index and then there's
drill
, the DNS lookup tool. I chose the name drill
before considering
making the repository public and that name has sticked with me ever since, so
after I decided to publish the program, rather than changing it to something
completely different I added -srs
suffix (that stands for spaced repetition
software).