Comment by amluto

Comment by amluto 14 hours ago

29 replies

My personal peeve about Anki: I don’t like its data model. It seems to me that there ought to be collections of notes (which might be things one would download or generate with an LLM or make yourself or share with friends or students). On top of one or more collections of notes are the sets of cards to want to learn, and they can derive from the notes. This includes, roughly, templates plus some concept of which cards are enabled. On top of that is the spaced repetition history and model. There also ought to be a way to constrain what cards should be studied in a given session. (For example, if learning Chinese or Japanese, one might want to have a pencil and paper when practicing writing but not reading. When practicing without paper, one might want to skip the writing cards.)

Anki doesn’t seem to separate these layers at all. Everything is a monolithic database. Import is unpleasant. Export is unpleasant. Sharing is unpleasant. Doing anything other than practicing and editing in the UI is unpleasant. And, every time I try Anki, I get stuck when I can’t manipulate my own data outside Anki.

Is there any system out there that doesn’t have this issue?

TheDong 14 hours ago

> there ought to be collections of notes (which might be things one would download or generate with an LLM or make yourself or share with friends or students). On top of one or more collections of notes are the sets of cards to want to learn

Is that not what anki does? You have a collection of cards, each card can be in one or more decks derived from the cards.

> There also ought to be a way to constrain what cards should be studied in a given session

That's also decks. You can have your 'Japanese' deck, and then the 'Japanese::writing' subdeck for the subset which require you to have your writing materials handy.

You can also use "Better Tags" to tag cards, and then create a sub-deck with an ad-hoc tag query to only study a subset if you want.

Does creating more decks and then studying the subset you want to in a session not work for what you want?

> Anki doesn’t seem to separate these layers at all. Everything is a monolithic database.

Decks are separate files which can be shared, edited, created, studied, and reasoned about independently.

The "spaced repetition model" in anki is obviously separate from the fact that there are multiple (FSRS and the old one).

> Export is unpleasant. Sharing is unpleasant

It's just files (zip files really). What's unpleasant about it?

> And, every time I try Anki, I get stuck when I can’t manipulate my own data outside Anki.

There's libraries to manipulate anki decks outside of anki for practically every programming languages. There are literally dozens of tools that can generate and import anki cards, such as the large family of japanese "mining" tools which create anki cards from media, dictionary entries, etc etc.

It's open source, and the code has clean library abstractions you can work with, so it's trivial to nab any of the data out of it.

> Is there any system out there that doesn’t have this issue?

Every issue you described is something that I experienced in other software, but which anki solved for me, so for me "anki" is that system.

  • amluto 12 hours ago

    > Is that not what anki does? You have a collection of cards, each card can be in one or more decks derived from the cards.

    Kind of? As far as I can tell (and I haven't spent enormous amounts of time digging in), there are decks, and a deck contains the notes, the templates (and the cards, which may or may not have any sort of independent existence outside the notes and templates that generate them?), and a deck also contains the scheduling information.

    One can export the textual and markup contents of decks, but not the media, into a text file, and one can re-import it, supposedly losslessly. One can also export a deck minus scheduling information for sharing purposes. I'm not sure that one can re-import it.

    Then there is a collection, which is the whole world: decks along with their scheduling info.

    > That's also decks. You can have your 'Japanese' deck, and then the 'Japanese::writing' subdeck for the subset which require you to have your writing materials handy.

    I'm guessing that, if I start by importing a Japanese deck from some other source (because, for example, there's a source with high-quality notes), and then I split it into a writing subdeck, and then the original source adds new notes for new words or makes changes or whatever, that merging the results is basically unsupported.

    > > Anki doesn’t seem to separate these layers at all. Everything is a monolithic database.

    > Decks are separate files which can be shared, edited, created, studied, and reasoned about independently.

    Yes, but only as monoliths (again, as far as I can tell). I can export an "Anki Deck Package (.apkg)", but checking that into git would result in a bit of nonsense. I can't export my scheduling information and templates separately from the underlying notes (or, if I can, I failed to find this option).

    >> Export is unpleasant. Sharing is unpleasant

    > It's just files (zip files really). What's unpleasant about it?

    Excel and OpenDocument sheet files are also zip files. But the respective tools are less limiting and don't expect the users to unzip those zip files. (And their merging and text import/export facilities are also weak, and that's unfortunate.)

    I could be wrong about most of this. But Anki doesn't seem friendly to a decomposed workflow in the way that modern programming lanuages are.

    • jaredklewis 11 hours ago

      Maybe I misunderstood something, but I can't find anything in your comments that identifies a flaw with the underlying data model of Anki. It seems your issues are mostly about Anki's data management?

      So I would strongly suggest your check out anki-connect (https://git.sr.ht/~foosoft/anki-connect) which provides a REST API for CRUD operations on Anki notes, cards, decks, and media attachments.

      Or maybe if you can share in a little more detail on what you are studying, the format of the data, and the exact way that your attempted workflow is breaking down with Anki, I'd be surprised if no one had suggestions for making it work.

      Edit: also, to answer a question in your initial post, is there a better SRS tool out there? I've never found anything. For all its warts and flaws, Anki is good where it matters, extensible enough to support pretty much all use cases, and has excellent data portability.

      • amluto 8 hours ago

        Maybe "data model" is the wrong term.

        The last time I tried to use Anki for real, I wanted to set up some Chinese character cards, to be used by 2-3 different people. I found a couple apparently high-quality decks online and downloaded them, and they had lots of characters, including (mostly) ones that I didn't want to include for the users in question. Removing content from the decks seemed wrong. Trying to make an actual practicable system with just the specific templates I wanted seemed unnecessarily complex (these decks had lots of fields in the notes, which is great, but I didn't want to use all of them). And actually getting the result to work for multiple users seemed like an exercise in poor maintainability -- I wanted to maintain and curate the set of notes and be able to update what each user was studying as needed.

        As the very most basic failure, Anki barely separates the concept of a "deck" in the sense of a set of notes from a "deck" in the sense of that which a particular person is studying. And I found that to be quite limiting.

        What I think I wanted was a collection of notes, where each note would perhaps have an id and a bunch of fields and their associated media. That collection should be copyable and ideally version controlled. And I wanted to create study sets that would reference the notes, select a subset of them and a subset of the possible templated cards, and track the study statistics.

    • pastage 11 hours ago

      It is a hard problem with too many solutions. Excel most certainly is limiting since it is a scary format for sharing data. Sharing highly structured info is a hard problem, sharing collections of the same is even harder.

      Programming has a similar issue code, docs, resources, discussions and issue tracking are not handled easily.

uselesswords 13 hours ago

It’s amazing how every single point you’ve made here is wrong as the other commenter already dove into. On top of that Anki is one of the best documented pieces of open-source software I’ve messed with. If you’re able to program, ChatGPT can basically handle any task you want it too, I data mine the sqllite database regularly for my own insights.

  • lovestory 13 hours ago

    My personal workflow with memorizing with Anki using LLMs is as follows: Read textbook material first. It's important that you understand what you are learning.You cannot just breakdown information into atoms and expect to understand how it works together (for example: you can learn that there are monounsaturated fats, polyunsaturated fats, saturated fats and trans fats. But without reading beforehand about them from a textbook or other source, you will not understand how they differ (in chemical structure, biological function etc). After I understand the material, I feed LLM the documents (textbooks etc) and give it the following prompt: >I want to generate flashcards from the provided textbook document using the attached PDF. Each flashcard should contain a question and a corresponding answer formatted as pairs in plaintext code block. The structure should be: "Question","Answer" >Extract key concepts, definitions, and explanations from the textbook. If in the text imperial unit system is used, convert it to metric. For mathematical symbols and equations, format them using inline MathJax syntax because I will be importing the copied text to Anki. Ensure questions are clear and concise while answers provide a direct yet comprehensive response.

    After the text is generated, I check out the accuracy (in 95% of cases the cards are accurate) and I import them into my decks. The rest is good old school Anki memorizing.

    • hiq 12 hours ago

      I remember trying that a few months back but I was not convinced by the quality of the cards. It's also hard to convey what I think a good card is, I guess there's something about not getting lost in the details while missing the big picture.

      You only commented on accuracy, but what's your experience on relevance and how useful LLM-generated flashcards are?

      To be clear I've already found myself deleting some flashcards I made myself while reviewing them when I realized they were bad, so I guess one can do that for LLM-generated questions as well, as long as the irrelevance rate is somewhat similar.

      • lovestory 12 hours ago

        Well I can give you an output example. This was generated based on chapter from textbook about Vitamin (Vitamin D in this example)

        "Which nutrient can be synthesized by the body using sunlight?","Vitamin D" "What is the primary role of vitamin D in calcium regulation?","Raises blood calcium by enhancing absorption, mobilizing bone stores, and reducing kidney excretion" "How does vitamin D affect bones?","Supports bone mineralization and integrity" "What form does vitamin D take before activation?","Inactive precursor synthesized in the skin or consumed in diet" "Which organs activate vitamin D?","Liver and kidneys" "What are signs of vitamin D deficiency in children?","Bowed legs and bone deformities (rickets)" "What is osteomalacia?","Soft, weak bones in adults due to vitamin D deficiency" "What disease is caused by long-term vitamin D deficiency in adults?","Osteoporosis" "How does vitamin D deficiency affect older people?","Increases risk of fractures and joint pain" "What is the toxic effect of too much vitamin D?","Calcification of soft tissues"

        You get the idea. How would you rate it's usefulness is subjective but it gets the job done.

    • sn9 12 hours ago

      I have been looking for a workflow to do exactly this!

      Which LLM do you use?

      Do you do anything special to structure the deck by chapter or section?

      • lovestory 8 hours ago

        Yes I use tags and then I display the tag using CSS at the bottom of each question. You can find out how to do this from anki manual. EDIT: this is useful because sometimes different chapters will contain similar questions but with the focus on different answer (for example: when studying trigonometry and when studying derivative of a function, similar questions will be present so you will need tags to guide you towards the answer).

  • ilteris 13 hours ago

    Where does your SQLite db sit? I have been thinking about creating a local database to save and feed into LLM but i have no experience with it

  • pessimizer 9 hours ago

    Actually, every point was right and the data model is terrible. I've been using it for years. The other commenter just mentioned a list of things that the software does do and basically said "isn't that good enough for you" a bunch of times. No, it's not. Anki's concepts of flashcards, and how it stores and manipulates them, are horrible.

    It's hard to do many, many things in Anki that should be trivial, impossible to do many, many things that should be possible, and the things you can do involve the types of queries being run over your entire collection that causes the app to slow to a crawl after you add about a dozen decks. And in general: I can adjust far too many things that I don't even care to adjust and probably shouldn't be adjusting, and things that should be trivial to do are impossible.

    It's bad. Ankidroid is a little better, but they're also stuck with the data model.

    • uselesswords 4 hours ago

      That’s because the default model is designed for the general user. If you sat down and really worked with the documentation, you would realize you shouldn’t be using decks or collections for management you should be using tags. Decks and collections are a different abstraction for different purposes.

      I’m in medical school which has basically mastered Anki. The AnKing deck, used by over a million medical students, has over 35,000 cards, cross-tagged by numerous study resources that exists on a single “deck” which receives regular updates. I regularly run basically instant queries on over 40,000+ cards.

      Medical school Anki has basically mastered this workflow and the original commenters complaints are completely wrong/come from a misunderstanding of Anki’s data model.

      To be put simply, ignoring subdecks, filtered decks, cards vs notes, etc.: cards can only belong to one deck, but can have multiple tags. What exactly do you want to see differently in the data model?

  • ummonk 13 hours ago

    I think there is an argument to be made about the poor learning curve (ironic) for learning how to organize and use Anki

    • uselesswords 4 hours ago

      This is probably my biggest gripe. It’s so much information to digest at first, it’s a tough ask. And there’s so many rookie mistakes.

      I made the mistake of just jumping in and I would say I spent the first 6 months using Anki “wrong” in the sense I would make bad cards, try to make mc questions, not enabling or optimizing FSRS, capping reviews, doing Anki before I knew the material, etc.

      I’m someone who loves to learn from scratch/figure it out myself. I would never recommend watching a YouTube tutorial or following a guide for something you can figure out yourself, but I have to make an exception for Anki. Anki is one of those rare things where it’s simply just better to just copy what someone else is doing and figure out adjustments for your own workflow over time.

allenu 11 hours ago

You're right about the data model. I built my own flashcard app [1], so I've had to understand the database schema that Anki uses and a lot of it seems very inelegant, but on the other hand, I can see how it was purpose-built and probably grew over time and things were tacked on. (For instance, there's one table that has a single row, where several fields are simply JSON dictionaries.)

On the other hand, how templates work and how cloze deletions work are really nice. With the flashcard app I built, I didn't have templates, but did have a very basic cloze deletion system where you could mark text to be "hidden" on the front. It was very limited in that you'd only ever get one front/back combination. You could hide multiple bits of text, but they'd all be hidden at the same time. With Anki, you can create multiple groups of hidden text, so that you end up with multiple flashcards from the same note (i.e. you hid three separate groups of text, so you now have three different cards to test with).

I've been working on an update to my app to incorporate templates and cloze deletions like how Anki does it, so now I appreciate that aspect to it.

For my own database, at least in the new version I'm working on, I've ended up creating a schema where the individual attributes for each card are thrown into their own tables, but this is mostly because I needed to support updating individual attributes separately since I use a very simple journaling system to sync across devices. With Anki's schema, I can see why sync was complicated (at least in earlier versions) since it wasn't really built for it.

[1] https://www.freshcardsapp.com/

jamager 13 hours ago

For language learning only, but perhaps my own https://thehardway.app model suits you better (flashcards inside markdown-ish notes)

  • smnplk 9 hours ago

    How much will you be charging for the app? Is it using LLM ?

  • Tijdreiziger 12 hours ago

    Sorry, but your landing page is really awful. I’m not allowed to learn about your app because I’m on a tablet? And I have to give you my e-mail address, even though I know nothing about your app so far?

    Suggestion: Allow me to browse your site and learn about your application, and I’ll decide if it’s interesting enough for me to open it on my desktop later.

    • jamager 12 hours ago

      You are right, I will get around that. For what is worth, I do not keep the email address.

ape4 14 hours ago

Yeah, if you're learning a language, have a group of restaurant words and another group about air travel, etc. Then then user will associate them.

  • runarberg 13 hours ago

    For that I buy a vocabulary book, or a phrase book. As I read through it, and if I don‘t know a word or understand a sentence, I try to learn it using various methods, and create an Anki card to keep it in memory. Anki is just to retain the word.

    On a plus side, you can buy specialized vocab/phrase books, I have one just for onomonopias. Also my beginner vocab books come with recordings from actual native speaker voice actors, which I add to the deck. Much better quality than anything an LLM or speech synthesizers can give you.

Graziano_M 14 hours ago

What are you talking about? Anki explicitly has the concept of 'notes' from which one or more 'cards' are derived. You can absolutely easily make custom decks that only have certain card types.

  • Ajedi32 11 hours ago

    Yeah I'm confused too. "I don’t like its data model. I wish the data model was instead <perfectly describes Anki's data model>".

echelon 14 hours ago

Seems like a YC business in the making. There's demand for improvements, and you already have your pitch.

Sprinkle in AI and you'd be a shoe-in.