Originally published 5/7/2019 by Gil Goldshlager
Spaced repetition is a powerful technique for committing almost anything to memory. Normally, to use spaced repetition, I’d need to download or even buy a pre-made app. With
, I made my own totally customizable spaced repetition app in just one day. You can check out my app
, and use it as is or customize it for your own purposes.
Wait, what’s Coda?
Coda is a new kind of document. It comes with powerful building blocks such as dynamic tables, programmable buttons, and automated workflows. Together, these building blocks allow anyone to make an app. You can learn more at
and see example docs in the
. Disclaimer: I work at Coda.
Spaced repetition: the basics
I first heard about spaced repetition when I came across this
by Jeremy Howard. After watching it, I became interested in the technique, and went down a bit of a rabbit hole learning about the history and practice of spaced repetition. There’s a lot to it, so if you’re curious, I’d highly recommend you watch the video or read
by Michael Nielsen.
Jeremy Howard on spaced repetition
For our purposes, you just need to know a few things.
Spaced repetition helps you
efficiently learn and retain large amounts of new information
To use it, you first
break things down into bite-sized pieces
and make a flashcard for each piece.
The heart of spaced repetition is that you space out your study of each card based on how solidly that card has been committed to memory.
As a result, you
study well-known cards infrequently while focusing frequent practice on cards you don’t know well yet.
By following these precepts, you can increase your learning speed, and, in the words of Michael Nielsen, make memory “a choice, rather than a haphazard event.”
Spaced repetition in Coda
Nowadays, a google search can turn up a plethora of apps all claiming to help you learn one thing or another using the magic of spaced repetition. That made me wonder: could I make my own spaced repetition app in Coda?
To get started, I wanted to have a concrete use case in mind. I chose learning German. I then put together a list of tasks I wanted the app to do:
Add new words by inputting a German word, the English translation, and a picture to represent the word
Study my words as flashcards
Use space repetition to decide which words I should study each day
Send me an email notification each morning letting me know how many words I had to study
Produce a chart to help me visualize my progress over time
With that all figured out, I started to make my doc. I first created a table for all of my flashcards. For my spaced repetition algorithm, I decided to use a variant of the
, since it captures the essence of the practice in a straightforward way. With that decided, I was able to build out my app over the course of a day. There were some challenges, but I got everything I wanted working. The core logic all lived in a few tables, some auxiliary buttons and canvas formulas, and two automations. It might look like a lot, but in comparison to what it would take to make a traditional app, it was really amazing.
The main table with all the words I wanted to learn.
The Leitner system is based on sorting the cards into buckets, with a different study interval for each bucket.
These buttons, canvas formulas, and settings support the more advanced features of the app.
The app in action
Here’s a study session (on mobile!):
Here’s an email notification reminding me to study:
Once I had studied for a few days, I could track my progress using this chart:
Finally, I added a settings page to make it feel like a real app:
Pretty cool, right? You can see the whole thing and try it out for yourself
Takeaways: To use Coda, or not to use Coda?
This was a fun exercise, but you might be wondering why you would use Coda instead of a traditional app for spaced repetition. Good question! There are definitely pros and cons to both approaches.
The main benefit of doing this in Coda is that it’s super configurable. Don’t like the layout of the flashcards? Change it! Want to add an audio clip for each word in addition to a picture? Just add a new column! Want to study your words in a table as well as with flashcards? Make a new view of the All Words table! If you’re the kind of person who’s excited by that kind of flexibility, Coda is the perfect tool for your spaced repetition study app.
On the other hand, the main drawback I’ve found is that Coda doesn’t yet support working offline. Coda does support mobile, and for me, that covers most of the times I’d want to study my flashcards. But if offline support is important to you, and you’re not that excited by the flexibility Coda provides, you may want to use a tool like Anki instead.
Thanks to Himanshu Vasishth.