Making a spaced repetition study app in Coda

Gil Goldshlager
Coda Blog
Published in
5 min readMay 8, 2019

Summary

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 Coda, I made my own totally customizable spaced repetition app in just one day. You can check out my app here, 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 coda.io and see example docs in the template gallery. Disclaimer: I work at Coda.

Spaced repetition: the basics

I first heard about spaced repetition when I came across this fantastic talk 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 this essay by Michael Nielsen.

Jeremy Howard on spaced repetition

For our purposes, you just need to know a few things.

  1. Spaced repetition helps you efficiently learn and retain large amounts of new information.
  2. To use it, you first break things down into bite-sized pieces and make a flashcard for each piece.
  3. 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.
  4. 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.”

Hear Morpheus out!

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:

  1. Add new words by inputting a German word, the English translation, and a picture to represent the word
  2. Study my words as flashcards
  3. Use space repetition to decide which words I should study each day
  4. Send me an email notification each morning letting me know how many words I had to study
  5. 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 Leitner system, 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 me adding a word:

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 here.

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 no code 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.

--

--