Customize Your Spaced Repetition Algorithm

Hi, my name is Allen and I’m an indie dev who makes the flashcard app called Fresh Cards. Today, I’m incredibly excited to share that version 1.16 of the app is out. This version of the app focuses on the core learning aspect of the app by adding two new features: Drills and custom Spaced Repetition algorithms.

Fresh Cards encouraging you to do a lesson

Drills

When I released the app nearly six months ago, I originally intended it to be a purely spaced repetition flashcard app. The app would let you review a set of cards per day, just how many would be configurable by you. Which cards to review would be a mix of “due” cards and “new” cards. The due cards would be cards scheduled for review using a spaced repetition algorithm. The new cards would be cards that have never been reviewed before. Each day, you’d come back to the app and review a small set.

After releasing the app, it became clear that spaced repetition wasn’t for everyone. Many users want to review cards whenever they like. Just as you would real flashcards, they want to pick up a set of cards and go through them as many times as needed. But the app wouldn’t let them do that! In fact, the only real negative review of the app so far has been from a user complaining the app chooses the review for them.

I’ve noticed a small number of users refunding the app as well. They don’t send feedback about what was wrong, but I speculate that they probably ran through a few lessons and found they couldn’t review any more. To them, the app probably felt broken. Even early beta testing revealed that many users wanted ad-hoc reviewing.

So, it was clear some adjustments were needed.

I still think spaced repetition is incredibly valuable, but I do understand the need to freshen up your memory here and there outside of the schedule. Additionally, if you’re prepping for an exam, it’s incredibly useful to go through the deck in its entirety to make sure you really know the material.

So, how to combine the power of spaced repetition with the need for ad-hoc reviews? Drills!

As of v1.16 of Fresh Cards, you can now do both. Do your lessons daily to learn new cards and refresh old ones that are becoming “forgotten”. Then, as needed, jump into Drills mode and review even more cards. You can think of lessons as your “in-class” material and the drills as “homework”.

If you want to cram for an exam or just make sure you remember all the material, try drilling through the entire deck!

I’m incredibly proud of the user experience on this new feature. The way it works is you pick a number of cards you want to drill on, then you’re presented with the lesson UI we know and love. Go over your cards as much as you’d like. When you finish the drill, the current “deck” for the drill will be updated so that the cards you just drilled are put into a discard pile. If you do another drill, the next set of cards from the top of the deck will be picked up and you can drill again.

A drill in session with a discard pile

If you drill the Hard Cards deck, whenever you pick from the top of the deck, you’ll get the most difficult cards based on your most recent scores. Within the drill itself, the cards will be shuffled.

This is the first version of drills, so expect even more customizability and ease of use in the future. I already have ideas of how to improve it!

Custom Spaced Repetition Algorithms

Okay, now let’s talk briefly about the other new feature: custom spaced repetition algorithms. Yes, you can absolutely provide your own spaced repetition algorithm with v1.16 of the app. Go into the app preferences and you can add new algorithms or view existing ones. I’ve even created a page to help you test out your algorithm. I call it the Spaced Repetition Schedule Simulator.

Want to learn more about writing your own algorithm? I’ve written up an article about how to do just that. It’s a complicated topic, so check out the article to learn more.

The spaced repetition algorithm viewer

After you’ve added a new algorithm, you can go into a specific deck’s settings to select it for that deck. This means you can custom fit the algorithm for the information you’re trying to learn.

Finally, on the topic of spaced repetition algorithms, version 1.16 of the app has beefed up the internal algorithm used for scheduling. Once I got deep into learning how other algorithms work, I improved the one that I wrote for the app. You can even check out the code for it within the app. If you have suggestions for improving it, please reach out and let me know!

So, that’s it for now. Fresh Cards 1.16 is a big release. I hope you enjoy it!

Let me close out by asking, what do you think about spaced repetition vs. ad-hoc drilling? Do you prefer one over the other? Let me know on twitter: @freshcardsapp