Create MVP for flashcard system
task id: flashcard-mvp2024-09-27 11:04: Thinking about flashcards... #flashcard-mvp #timelog:00:15:00
2024-09-30 12:19: Flashcards added to rust DZ parser #flashcard-mvp
I was trying to make some flashcards to test, and I realized making well-scoped and well organized flashcards from what I've been reading takes more work than making the MVP program that displays them. So, pausing on this until I figure that out more.
2024-10-05 16:33: Flashcard planning #flashcard-mvp #timelog:00:45:32
2024-10-06 20:57: Some boilerplate python code #flashcard-mvp #timelog:01:06:59
2024-10-15 15:05: Flashcards #flashcard-mvp #timelog:01:06:17
2024-10-15 15:23: Some lingering design questions #flashcard-mvp
How and when to make sure new cards get imported? This is important because there can be situations where there are just enough cards in the metadata to fill the cache which ends up making the same cards being re-used over and over again.
When to recycle cards from level 5 back to level 1?
2024-10-15 15:49: Trying to get the loading logic right #flashcard-mvp
My thinking is new cards should be loaded into the system automatically.
My current bucket system is flawed because it only kicks on when the cache is too small. I should have a pre-load before the caches are filled that update the database.
It's possible that flashcards can go missing if I delete a node. So far, this databse has been mostly append-only.
There's a lot of information I need to ingest, and I am starting to think having a system in place is going to be necessary.
I already have a data format figured out. It's built into my dagzet system. I'll need to get it working with the rust implementation, but that shouldn't take too long.
What I don't have figured out is a spaced repetition system. Something that allows me to go through a set flashcards and update their frequency depending on how I answer.
I imagine most of the heavy lifting will be done with SQLite. A small CLI (prototype in python?) could be used to present a set of (up to) N flashcards from a given set of namespaces, randomly selected from a weighted distribution based on priority.
Based on how I answer, priority for each flashcard gets updated.