←back to thread

679 points domenicd | 1 comments | | HN request time: 0s | source
Show context
amluto ◴[] No.44021294[source]
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?

replies(7): >>44021348 #>>44021383 #>>44021390 #>>44021396 #>>44021512 #>>44021785 #>>44022566 #
TheDong ◴[] No.44021396[source]
> 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.

replies(1): >>44021973 #
amluto ◴[] No.44021973[source]
> 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.

replies(2): >>44022336 #>>44022582 #
1. pastage ◴[] No.44022582[source]
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.