Third installment of the devlog for the new language practice tool I've been working on.
Last time I wrote about the pivot from writing practice to vocabulary building. Today I am going to expand on the latest updates since then.
First it is worth noting that I've been trying to dedicate two half days a week to work on this project. But the ability to work on it has been on and off, so the progress is a bit slower than what I would like.
With that said, since last time I have mainly worked on two things:
When generating sentences the main challenge has been to make sure that this is done and completed asynchronously to avoid having the user waiting for it. That has mostly worked so far with a combination of, first genenrating a number of cards upon onboarding the user and second, generating more when the number of fresh cards gets low.
This one has been quite fun to work out I decided to read up on the research behind spaced repetition systems, which is in itself quite interesting. After that, it was time to decide on a basic architecture. This is the kind of feature that is very easy to over engineer. So I opted for a simpler version in which I track the progress in each card and update the difficulty factor for the card based on the user performance. Also based on the user performance I calculate when the card needs to be shown again up against its difficulty and user's history.
So far it is working well. An idea I am playing with is to introduce a concept similar to ELO to track the user progress and to use the card's difficulty level as the benchmark for the progressive increase in difficulty, etc. Scenes for the next chapter.