In this post I’m essentially publicizing my notes on spaced repetition software, and announcing that I’m working on gnosis, a spaced repetition learning extension/package for GNU Emacs.

I should also note that I consider Spaced Repetition to be a cheat code for learning, that should be used by every student.

What is Spaced Repetition Learning

Spaced Repetition is based on the following premise:

Repetitive exposure to information contributes to the elongation of memory retention.

Our cognitive faculties are inherently programmed to retain pertinent information while discarding extraneous details, a process contingent upon the frequency by which we encounter such information.

TL;DR: The more frequently you are exposed to information, the longer you retain it

My ‘gripes’ with spaced repetition software

I have chosen to develop my own SRS (Spaced Repetition Software/System) instead of relying on existing, well-established ones. Through my implementation called “gnosis” (GNOH-sis, meaning knowledge in Greek) I aim to address and overcome the challenges and limitations associated with current SRS solutions. With gnosis, I hope to resolve most, if not all, of these issues and provide a more refined and advanced learning experience.

Not libreware

This refers to proprietary software that implements spaced repetition, some of which are even guilty for removing the spaced repetition feature that their users paid for. I had a paid subscription with quizlet only to find out that they removed the spaced repetition feature I had already paid & was using, rendering my then workflow obsolete.

Do not depend on software you don’t own for your work. You don’t “own” proprietary software, despite paying for it.

You should strive to use only libreware for your workflow.

Lack of customization

Good software should fit your workflow like a glove, to do that it has to give a lot of room for user customization. Trivial changes such as color-scheme changes to more advanced feature customization like adding your own custom card types and changing the spaced repetition algorithm should be simple and easy to make. For example, a med student would use a longer time interval for his algorithm than, let’s say, someone trying to expand their Japanese vocabulary.

Since we already established the need for our ideal software to be libreware, making changes to the core components would be trivial. But it should be added that customization to fit different needs & learning styles should be a primary goal when designing a SRS.

Flashcards are an inferior learning method.

Flashcards are quite trivial to make, prototypical spaced repetition methods utilized physical flashcards. Today’s computers allows us for more sophisticated ‘review’ methods, such as using user input.

Utilizing user input to assess the effectiveness of a review is preferable to simply revealing an answer and asking whether it was known or not. This approach ensures not only the comprehension of the answer but also the accurate spelling of it. Moreover, it leads to more efficient retention compared to simply displaying the answer without any active engagement from the user.

Ideally with Gnosis I would also like to implement MCQ type to simulate the USMLEs exams which I will hopefully soon be undertaking. This will make it possible to simulate any other MCQ exam

No self-rating

It is recommended that users do not self-rate their answers. The review process should involve a binary assessment of success or failure, where users either recall the answer correctly or not. This success/failure rating will be used to determine the next interval for the specific note, optimizing the spaced repetition system for effective learning.


Most spaced repetition software relies on databases for storage, but the downside is that databases are not easily readable or editable by humans, hindering sharing and collaboration.

To address this limitation, I intend to incorporate exporting capabilities on gnosis. This feature would enable users to export a deck of notes in a user-friendly format, which can then be easily shared and collaborated on using tools like git repositories.

This collaborative approach would allow us to work together, share, and create valuable learning materials that can be used and modified by everyone involved.

Syncing between devices

Anki makes syncing between devices a breeze! But it gets terrible slow if you are syncing a new device when you have a lot of material in your account, plus you depend on Anki’s servers for it to work.

Since on gnosis I will be using sqlite as my database implementation, I would just be using git to keep my database in sync between different devices.


You can find gnosis on my git server here, read the about section for installation instructions.

It’s still not even in alpha version yet, but it has the fundamental functionality there already for you to test. Feel free to email me if you have any questions or requests for gnosis.