An ag(e)ing hacker, Luca Saiu's blog
2024-01-02 19:47 (last update: 2024-01-28 10:13) Luca Saiu

Languages and complexity, Part I: why I love Anki

Lately I have not been as active in GNU as I would have liked—which I plan to change. Apart from work I was busy with happy family life next to E.; and, I guess, with contemplating the dismal state of the West as it descends further and further into tyranny amid the general indifference.

Maybe in part seeking solace from the news I focused with renewed intensity on my hobby, studying the Russian language for no reason much more practical than my love for Nineteenth-Century novels.
I have heard more than one Russian teacher vocally disapproving of literature as a sufficient motivation for language learners; in fact Dr. Anna Larina, the author of the video courses I bought back in 2020, is no exception either.

While I am working on eventually proving her wrong on this specific point I do appreciate Dr. Larina’s work and in fact recommend her services: those who speak my first language and are curious about Russian should pay a visit to

Dr. Larina, whom I usually address the Russian way as Anna Aleksandrovna, hosts a Telegram channel in which she interacts with Russian learners, again in the language of the country I come from: Telegram being one of the slightly less terrible platforms with respect to free software support, privacy and freedom from surveillance I decided to join at some point in 2021 or 2022. The channel is always lively and pleasant.

Learning ten new Russian words per day?

By late 2022, even with a good grasp of basic grammar, my Russian vocabulary was still lagging behind at about 800 words—close to the level of a three-to-four-year-old, inadequate for any meaningful communication.

On December 31st Anna Aleksandrovna proposed a sort of motivational game: on request she would comment every participant’s new year resolutions and concrete plans about Russian learning, discuss whether they were realistic and give advice.

I wrote about my frustration with my limited vocabulary, and initially considered a rigid study routine of ten new words to learn every day: in one year that would give me 3650 new words, a very considerable boost.

Anna Aleksandrovna, while conceding that my plan was not impossible, considered it too heavy. Since I intended to follow my study routine seriously I listened to her and reduced my goal aiming at around 5 new words1 per day instead of 10, after I recovered from my backlog.

One year has now passed. I have studied every single day in 2023, and have now been at 6 new words per day for several months. As of January 1st 2024 I know 2440 words2, which definitely counts as progress. Starting from a baseline of 800 this makes 1640 new words, or 4.49 new words per day on average across the entire year.
While I cannot yet follow most Russian texts intended for natives and my command of the language does not allow much immersion without me getting frustrated, I am satisfied about my progress. I understand much more than before; I keep reading my simplified beginner books slowly, but with less difficulty and more pleasure; and I can write in Russian better, with less hesitation and less need to look up words than before.

I have studied with Anki; I mostly use the “computer” version running on GNU/Linux, and occasionally the AnkiDroid version on my Replicant phone when I am travelling. I recommend those two free-software versions3 of Anki.

Disclaimer: this is my opinion and language teachers may disagree

One’s motivation for learning Russian is not the only controversial point: the very idea behind Anki, the software I am discussing here, is also not without its detractors4.

Every time I mentioned Anki on Anna Aleksandrovna’s channel some fellow student reacted with interested curiosity, asking me for more information. Anna Aleksandrovna however never reacted herself, and seemed cold about the idea of studying “word lists”.
[January 4th update: Anna Aleksandrovna, replying to the email in which I asked her permission to quote her by name in this article, wrote me that she considers Anki useful “as one of many tools in addition to listening and conversation practice”. Her emphasis.]

I will repeat the disclaimer at the bottom of every page in this blog, just to be clear: this article contains my personal opinion and is not endorsed by anybody else.

I am a free-software hacker and a computer scientist specialised in programming languages5, working at p≡p on privacy-preserving network applications; I used to teach Computer Science; did a little scientific research years ago, again on Computer Science matters—By which I mean that I have no training and no qualifications whatsoever on natural-language learning. This of course will not stop me from having plenty of opinions6 and anecdotal data to report based on experimenting learning techniques on myself.

Anki is not a solution to everything. First of all one must also study grammar, particularly for a difficult fusional language like Russian. And then one’s listening comprehension matters; mine is in fact poor as I exercise it very little, which of course I should change.
Still, limited vocabulary size remains in my experience the biggest obstacle in both comprehension and expression. On that side Anki does help.

A concrete example from an Anki session

Anki is an interactive application, a study tool for memorising information.

Of course I can study multiple topics, which in my case means multiple languages. While Russian is the one I am studying seriously I am also trying not to lose my French, learning a little German, playing with Turkish; even learning the occasional rare English word.

The first thing to do when using Anki is choosing what to study:

Anki’s main “deck” selection interface as it looks at the beginning of a day when the number of studied cards is still zero. As I finish each deck its number of Due cards will change to 0.

The idea is studying a certain number of virtual “cards”: for each card the software shows me a word or phrase7, either in Russian or in my native language.


In my head I think of the card’s translation. When I am finished thinking and I have an answer I push the space key.

Anki immediately responds by displaying the correct answer, metaphorically written on the card’s “back”.


Was I correct? If so I push space again; if not I push a different key.

Anki responds by immediately showing me the next card to study, which might be a new card or some card I have studied again but I need to review now.


Again I think of the answer; push space; then, looking at the correct answer, I decide if my answer was correct. And so on.

Anki will show again the cards I did not translate correctly after a few minutes; in the mean time Anki keeps showing other cards I need to work with. When eventually I have replied well to every card and reached the set number of new cards for the day Anki tells me that I am done with that deck; I will study it again the following day.


After I am finished with Russian, or the language I was studying, I can switch to another of my decks.

How it works

Anki is based on the spaced repetition idea. Even if some point may still remain controversial there is good scientific evidence for spaced repetition. This basic studying method was developed by Sebastian Leitner in the 1970s, originally using physical cardboard boxes containing flash cards, each displaying a question on one side and its correct answer on the other.

Animation from Wikipedia, by Zirguezi, released under CC0 1.0.
In the 1970s paper-based Leitner system physical index cards were kept in physical boxes, some boxes being studied more frequently than others. The student needed to physically move each studied card from a box to another after each revision, choosing a different destination box according to the source box and to whether the answer was correct. In the software version “cards” remain as a metaphor, with the advantage of making the bookkeeping trivial: the user only needs to think of the answer to every question, while the software automatically keeps track of every card and its current “box”.

According to experimental studies memory decays exponentially, but at a slower rate each time a item has been refreshed by study. Spaced repetition attempts to schedule repeated study sessions optimally, in order to refresh a memory item that is just about to fade. In case of success each following repetition for the same item will be spaced further and further apart.

From Wikipedia: public-domain image by Icez with minor edits by Luca Saiu, also disclaiming copyright on this picture up to the extent of the applicable law.
The recall success ratio drops exponentially, until a review restores it. After each review the recall ratio drops at a slower rate.

In practice Anki will present more often the cards I have not learned, and more and more rarely those I know well, which is to say the cards I have translated correctly more times in a row.

The power of this idea is that I can study thousands of words, the software automatically keeping track of what I know and do not know, with a relatively small daily effort: the cards I have mastered already will be shown only rarely and cost me little time, while I concentrate on the cards I have not learned well yet or I have learned and then forgotten.

Customisation: my way of using Anki for Russian

Anki lends itself well to customisation. In my way of using it each note is a record containing three pieces of information:

  • Russian word or phrase;
  • its translation in my native language;
  • optional remarks showing inflection, any irregularities, false friends, synonyms, the occasional irregular pronunciation, and the like.

I like always having, for each “note”, exactly two “cards”:

  • from Russian, in which I have to translate from Russian to my native language;
  • to Russian, which is the opposite.

In both kinds of cards I want to show the optional remarks as part of the answer, on the bottom.

For example, the following card is from Russian:


When displaying its translation answer Anki also reveals the optional remarks, quite long for this complex note:


(“An apple a day keeps the doctor away”. It seems to rhyme and follow some reasonable metre in every language, even if maybe the Russian version does not flow quite as naturally, with that infinitive оставаться.)

From the same note Anki also generates a to Russian card, with question and answer swapped compared to the previous card but the same remarks:


Again the optional remarks appear as part of the answer at the bottom, and not as part of the question:


An obvious visual hint in my cards comes from the colour difference: I use blue to represent Russian, and light grey for everything else. This I consider a very useful convention8 but is not the default in Anki.

In fact the entire visual layout of cards, with Front, Back and Remarks was defined by me using an HTML template and CSS9. Anki allows this flexibility along with the more important and deeper feature letting users decide the number of items in each cards: I picked three, adding my optional remarks, instead of the default two.

Of course I can configure daily limits: how many new cards to show per day, and an absolute daily limit on how many cards to study per day. Daily limits may be different for each deck, which helps people like me who are seriously studying some topic while just toying with others.

As I became more experienced and understood Russian grammar better my notes became more complex, and I developed my own conventions. In my decks most of the complexity is in the optional remarks, and in a few conventional ways of mapping grammar features across languages when they do not exactly match. For example I use my native language’s past infinitive and indicative anterior future to render (respectively) Russian’s perfective-aspect infinitive and perfective-aspect indicative future. I do not claim novelty for any of these conventions: I might have copied this specific aspect-mood-tense mapping from some video class by Anna Aleksandrovna or maybe from some book, long ago.

When showing how a noun is inflected in the remarks field I show four grammatical cases: nominative singular, genitive singular, nominative plural and genitive plural. The other forms can usually be reconstructed from those; if not I list the special cases.

For example the noun глава́ “chapter” (plus a few other meanings) is inflected regularly, but its tonic accent pattern across grammatical cases and numbers is remarkable and needs to be memorised: we have the genitive singular главы́ and the nominative plural гла́вы only differing by where the tonic accent falls:


Seeing the remark at the bottom while reviewing is useful as a reminder. However a more reliable solution for remembering the two inflected forms главы́ and гла́вы is using one additional note for each.

First главы́, genitive singular:

Главы́, genitive singular of глава́, “of the chapter”

Then гла́вы, nominative plural:

Гла́вы, nominative plural of глава́, “chapters”

By studying each of these notes I will be forced to remember each inflected form, without confusing them. The downside being, of course, in the cost in terms of number of notes10.

Another noun with the same accent pattern is рука́ “hand”: рука́,руки́_ру́ки,рук, which also deserves additional notes. Other similar words, on the other hand, do not follow the same pattern: for example про́ба “test” (про́ба,про́бы_про́бы,проб) or суета́ “fuss” (суета́,суеты́_суеты́,суе́т) with the genitive singular and nominative plural cases being identical.

This is a common situation in Russian vocabulary, with respect to tonic accents and even declension or conjugation: each word follows one of a few possible patterns, with one pattern being more common than the others but the others still not quite rare enough to be considered “irregular”.
The only solution is memorising which words follow which pattern. We have to accept that it takes time; I certainly do. Russian is a difficult language. It is also beautiful.

Along the many possible patterns in nouns, some nouns are inflected as if they were adjective. One example is лёгкое “lung”, in fact indistinguishable from the adjective лёгкий “light” (having little weight) in the neuter gender:


Of course many verbs also exhibit unusual conjugated forms.

Within my notes remarks I use the “△” sign, usually postfix, to mark and irregular form; “□” to mark a regular form following some defined pattern, “◇” to mark a notable or counter-intuitive form; “◁” to mark a dated or obsolete form.

The following card is a good example:


Нашуме́ть means “to make noise” or “to cause a sensation” (difficult to render exactly in my native language) , in the perfective aspect.

Нашуме́ть is a second-group verb (II), an exception to the rule that verbs with an infinitive ending in -меть belong to the first group. Moreover the first-person form (perfective-aspect indicative future) has an unpredictable “л” (1л△) before its inflection ending : it happens to be нашумлю́ instead of нашумю́*. The translated version says (н-) because there are other alternative perfectives прошуме́ть and пошуме́ть. In fact this remark should be improved: the alternate meaning “to cause a sensation” exists for нашуме́ть but not for прошуме́ть and пошуме́ть, which are therefore only partial synonyms.

I normally demand of myself that I memorise the details as well, with the exception of those I also store in separate notes: I will study those notes separately anyway11.
For example I have a note for тут (in English “here”) with a remark mentioning the synonym здесь (in English “here”, again). The note for здесь mentions the synonym тут. For тут and здесь I have therefore two notes, which turn into four cards. The two translated versions will indicate the initial т- or з-, in order to be distinguishable when translating to Russian.

This is an example of a card for an inflected form of a verb — from ви́деть “to see”, imperfective aspect, which of course also has its own note in the infinitive:

Ви́дишь means “you (singular) see” — imperfective-aspect indicative present, second person singular. Of course I have another note for the infinitive ви́деть, but it is important to memorise some inflected forms for a verb so easy to conjugate incorrectly: judging only from the infinitive this conjugated form would be ви́дешь*.

Notice that ви́жу “I see” is special, but not ви́дишь, which follows the regular pattern. Still, it is important not to forget that ви́дишь is in fact not special.12

I am not entirely satisfied with any way of handling what Anki terms “leech cards”: after a certain (large) number of failures to remember a card the Anki default is setting the card aside and just giving up on it in the future: the reasoning is that one’s time is better spent with material on which one can progress, instead of insisting on mastering all of it.
I strongly dislike this default setting which clashes with my mentality, so I set up Anki to just mark leech cards as leeches, without changing their scheduling in any way: any note I insert I want to learn. On the other hand I do spend a long time on some very difficult cards, of course, which is frustrating.

Non-Anki software customisation

Of course I need to type a lot both using both the Cyrillic and the Latin alphabets when preparing notes or researching. I can easily commute my keyboard layout between Latin and Cyrillic with a keystroke.

I have memorised both layouts (both custom and non-standard) and now no longer need my old keyboard labels:


However as always, keyboard labels or not, customisation is important: for example I find it absolutely necessary to be able to mark tonic accents: ру́ки “of the hand” (genitive singular) is different from руки́ “hands” (nominative plural). Tonic accent positions are often unpredictable, affect pronunciation and serve to distinguish different inflected forms or different words—homographs up to accent signs, such as за́мок “castle” (nominative singular) and замо́к “lock” (again nominative singular). Such signs are marked in dictionaries but not in ordinary texts meant for native speakers who know how to pronounce Russian and usually have no difficulty with such ambiguities.
This is why even the standard Russian keyboard layout used in Russia provides no way of typing a tonic accent sign.
But “standard” layouts will certainly not stop me. If want tonic accents, and I do, I will set up my system the way it is convenient for me.

Once established that customisation is desirable it is easy to do more and make our way of using keyboards both more expressive and, where possible, even more consistent across layouts.

I defined a few Emacs key bindings for entering my special remark characters such as , and ; and I wrote a simple Emacs Lisp function to perform input validation and correction in my CSV file: for example, adding a missing semicolon at the end.

I wrote a Bash script to validate CSV files checking for the number of fields, and duplicates in the first and second column (since I study every note from-Russian and to-Russian both must be unique).

My custom code is relatively simple and probably not worth cleaning up and including here; I will publish it on request.

Customisation is important

What I have described here is my style of using Anki, which is my favourite way but certainly not the only one. Different students should certainly bend the tool to fit their own preferences.

There are a few features of Anki I am completely ignoring such as “Clozure cards”, or embedding pictures or sounds within cards. Russian has relatively simple pronunciation rules and there are no ideograms to memorise; students of other languages will set up their exercises according to the features of their chosen language.


In Russian the verb “to follow” is сле́довать:


Сле́довать is one of the verbs with infinitive -овать ending, a group of verbs following a particular conjugation pattern; even without a difficult inflection I found this root difficult to remember, until I figured out a mnemonics based on English: a sled “follows” the horses pulling it: and the verb is следовать — transliterated, “sledovat’”.

Another example I like is му́дрость “wisdom”:


It is easy to imagine that a very wise person has invented a new food item: a roast (рост*) made of mud (муд*). This particular mnemonics is based on spelling more than sound, and certainly not on meaning; other mnemonics I use may work differently, for example relying on French or on a different language. Imperfect as they are such mnemonic tricks work, with striking imagery—outlandish, silly, or obscene—being particularly memorable.

I have developed mnemonics for many difficult words; those make it possible, if slow, for me to reconstruct a word from memory which is not quite committed to memory yet. After a sufficient number of reviews I will start recalling the word by sound or spelling associations, without resorting to the mnemonic clutch any longer.

A few fun cards


Кислород means ”oxygen”; the word etymology in Russian is the same as in English: oxygen is the “origin” (род) of “acid” (кислота́, or ки́слы as an adjective).

The curious fact is oxygen is in fact not a component of every acid, but the people who named the element in France thought it was, back in the 1700. This historical naming mistake has been propagated to other languages, translating Greek roots into matching Slavic roots.

Some proverbs express a peculiarly Russian sense of humour:

“Every surgeon has his own small graveyard”.

These complex cards end up being difficult as study items, since I will not consider a reply correct unless every single word matches. I exploit these cards bearing longer phrases as opportunities for grammar exercises.

I am still unable to use language reference material written in Russian, except in very simple cases. It will take me a while to learn all the relevant grammatical terms, which tend to be long difficult words:

прилага́тельное “adjective”. The noun for “adjective” is itself inflected as an adjective, being (at least according to Wiktionary) a contraction of и́мя прилага́тельное “adjectival name”.

Making Anki notes

I import my notes into Anki from a Comma-Separated-Value text file I edit with GNU Emacs, which for me is much faster to use and more convenient than Anki’s graphical editor.

I enter words which look worth memorising or interesting as I encounter them or as I think of them; I validate translations through Wiktionary. I almost always search for Russian words on the English Wiktionay; see for example борода́ defined in English. It is still too slow and inconvenient for me to to use the Russian Wiktionary (see for example борода́ defined in Russian) unless it is the only option.

interface/import-1 interface/import-2 interface/import-3
Anki’s user interface for importing from a CSV text file.

I configured Anki to present cards from my notes in the order they were imported13: this means that, if I am faster at adding notes than at studying them, I will memorise my words more or less in the order I add them to the file, but after a certain delay—Currently around seven months.

Here are some excerpts from my input CSV text file 14 for Russian:

сли́шком;troppo;non confondere con почти́ quasi
то́лстый;massiccio / grasso (agg.) (т-);sin. по́лный
то́нкий;magro (agg.) / sottile, fine, delicato (т-н-);comp. тоньше△ sin.(1) худо́й, то́щий sin.(2): не́жный
тоньше;più magro (agg.) / più sottile, più fine, più delicato (т-н-);comp. di то́нкий
то́щий;magro (agg.) (т-щ-);sinonimi: худо́й, то́нкий
сказа́ть;aver detto;ж△ скажу́,ска́жешь..ска́жут imperativo скажи́△ passato сказа́л,сказа́ла solo perf., говори́ть□ usato come imperf.
скажи́;di' (verbo, perf.);imperativo forma di сказа́ть△ж aver detto (solo perf.) ж△ скажу́,ска́жешь..ска́жут imperativo скажи́△ passato сказа́л,сказа́ла solo perf., говори́ть□ usato come imperf.
рассма́тривать;osservare;□ рассма́триваю,рассма́триваешь..рассма́тривают imperativo рассма́тривай passato рассма́тривал,рассма́тривала perf. рассмотре́ть△II guardare: смотре́ть△II
рассма́триваю;osservo;voce di рассма́тривать osservare □ рассма́триваю,рассма́триваешь..рассма́тривают imperativo рассма́тривай passato рассма́тривал,рассма́тривала perf. рассмотре́ть△II guardare: смотре́ть△II
рассма́триваешь;osservi (ind.);voce di рассма́тривать osservare □ рассма́триваю,рассма́триваешь..рассма́тривают imperativo рассма́тривай passato рассма́тривал,рассма́тривала perf. рассмотре́ть△II guardare: смотре́ть△II
рассма́тривают;osservano;voce di рассма́тривать osservare □ рассма́триваю,рассма́триваешь...рассма́тривают imperativo рассма́тривай passato рассма́тривал,рассма́тривала perf. рассмотре́ть△II guardare: смотре́ть△II
рассмотре́ть;aver osservato;△II рассмотрю́,рассмо́тришь..рассмо́трите,рассмо́трят imperativo рассмотри́ passato рассмотре́л,рассмотре́ла perf. di рассма́тривать□ aver guardato: посмотре́ть△II
ча́стый;frequente / folto / rapido;sin. ре́дкий  contr.(1) неча́стый infrequente,raro  vedi частота́ frequenza (scienze) (частота́,частоты́_часто́ты,часто́т agg.rel. часто́тный)
неча́стый;infrequente, raro;contr. (anche altri significati) ча́стый frequente/folto/rapido  sin. ре́дкий
тере́ть;lucidare, sfregare;perde-е-,у,ё△ тру́,трёшь..тру́т imperativo три́□ passato тёр△,тёрла△,тёрло△,тёрли△ perf. потере́ть
тру;(io) lucido;voce di тере́ть△: perde-е-,у,ё△ тру́,трёшь..тру́т imperativo три́□ passato тёр△,тёрла△,тёрло△,тёрли△ perf. потере́ть
трёшь;(tu) lucidi (ind.);voce di тере́ть△: perde-е-,у,ё△ тру́,трёшь..тру́т imperativo три́□ passato тёр△,тёрла△,тёрло△,тёрли△ perf. потере́ть
шля́па;cappello con falda (con л);шля́па,шля́пы_шля́пы,шляп dim. шля́пка (шля́пка,шля́пки_шля́пки,шля́пок)  vedi ша́пка cappello (caldo, in genere senza falda) (ша́пка,ша́пки_ша́пки,ша́пок dim. ша́почка)
шля́пка;cappellino;шля́пка,шля́пки_шля́пки,шля́пок dim. di шля́па cappello con falda (шля́па,шля́пы_шля́пы,шляп)
ша́пка;cappello (caldo, in genere senza falda) (senza л);ша́пка,ша́пки_ша́пки,ша́пок dim. ша́почка vedi снима́ю шля́пу tanto di cappello “mi tolgo il cappello” снима́ть togliersi(vestiti)/fotografare/filmare (□ снима́ю,снима́ешь..снима́ют imperativo снима́й passato снима́л,снима́ла perf. снять△сним-)
снима́ю шля́пу;tanto di cappello;“mi tolgo il cappello”, снима́ть togliersi(vestiti)/fotografare/filmare/aver in affitto (□ снима́ю,снима́ешь..снима́ют imperativo снима́й passato снима́л,снима́ла perf. снять△сним-), снять essersi tolto(vestiti)/aver fotografato/aver filmato/aver avuto in affitto (△? radice сним- сниму́,сни́мешь..сни́мут imperativo сними́ passato сня́л, perf. di снима́ть□), шля́па cappello con falda (шля́па,шля́пы_шля́пы,шляп dim. шля́пка (шля́пка,шля́пки_шля́пки,шля́пок))
скро́мный;modesto, umile (с-);e non “silenzioso”* come avevo scritto per sbaglio  non confondere con гро́мкий rumoroso
скро́мно;modestamente, umilmente (с-);e non “silenziosamente”* come avevo scritto per sbaglio  non confondere con гро́мко rumorosamente
гру́ппа;gruppo;гру́ппа,гру́ппы_гру́ппы,групп agg.rel. группово́й dim. гру́ппка (гру́ппка,гру́ппки_гру́ппки,гру́ппок)
холо́дный;freddo (agg.);contr. горя́чий caldo, ardente non confondere con похо́жий simile
хо́лодно;freddamente / fa freddo (pred.);(2) anche +dat.: мне хо́лодно, contr. жа́рко
мне хо́лодно;ho freddo;“è freddo a me” хо́лодно freddamente / fa freddo (pred.) (2) anche +dat.: мне хо́лодно, contr. жа́рко
гость;ospite, persona ospitata;m. anche se riferito a una donna "guest" гость,го́стя_го́сти,госте́й f. го́стья (го́стья,го́стьи_го́стьи,го́стий) agg.rel. гостево́й o гости́ный

The file format is simple: one note per line, with the three fields (in order: Russian, other language, remarks) separated by ; characters. I can disable an entire line or introduce comments with a # character at the beginning of a line.

People have published list of words ready to import into Anki, for Russian and many other languages. I do not study notes written by others and encourage everybody to prepare their own material: again, I only study and memorise what I understand and am able to describe myself. Preparing my notes is also an exercise in itself.

Since my notes are custom-written of course many of them reflect my personal domains of interest.


AnkiDroid is a more or less full-featured version of Anki running on Android systems. I use it on my Replicant phone when travelling by train. AnkiDroid is also free software—I would not advertise it otherwise.

ankidroid/main ankidroid/идёт-снег-1 ankidroid/идёт-снег-2
AnkiDroid has similar functionality to the “Computer” version and works very well on Android systems, including Replicant. AnkiDroid is said to be less convenient for editing notes, but I have never even tried that functionality; in fact I hardly edit notes from Anki even in the “computer” version.
I even share the HTML template and CSS style describing how cards are displayed, between the “computer” version and AnkiDroid15.

When working on the same data on two devices it is important to be able to synchronise local states, making each local storage consistent with the other. Anki supports a network protocol to solve this problem.

I can synchronise data, including both deck contents and study progress, between devices. The client side of the synchronisation protocol is implemented in the interactive Anki software, on both “computer” Anki and AnkiDroid.

I always use a local server set up by me to temporarily host data, while synchronising between computer and phone. The server comes with the “computer” version of Anki and has a simple command-line interface. It is easy to use in practice as long as one can open a server with a public IP address or use IP masquerading to circumvent NAT restrictions.

The Anki web site recommends a specific centralised service for synchronisation, which I do not use. Even if one’s Anki cards and progress are usually not very critical with respect to privacy I try to warn users against disclosing their own personal information in exchange for a little convenience. Here I can use only my own resources quite easily, as long as I can make my devices communicate with each other.

Obeying Anki and working to satisfy the machine

By letting Anki determine our study schedule we grant it considerable power over us, which we should not do lightly.

A software telling a human what to do is always a cause for concern: one should exercise caution using Anki, and be sure to set the parameters to remain in control.

When a day’s work load is high I sometimes have the very unpleasant impression of needing to satisfy the machine, even if this exercise is entirely self-imposed. Every time one skips a day, with Anki, the cards to study the next day pile up, making the next session even heavier16.

A software is just one case of a particularly inflexible schedule or rule: Anna Aleksandrovna understood this danger when I presented her my new year resolution about vocabulary study, and in her response hinted at the “sense of guilt” of failing to meet a daily quota. That objection is reasonable, as is her suggestion of focusing on one’s progress or achievements rather than on the difference between what one is and what one would want to be.

Studying Russian lexicon hard for one full year

While I started playing with Anki in early 2020 I was not very constant over time until this long streak covering the entire 2023 year:

A heat map diagram showing how many cards I studied each day, as of January 1st 2024.
Here I edited together multiple heat maps from Anki’s statistics.

As an alternative to the heat map we can show a histogram:


It is nice to see how the cumulative number of studied cards grew over time, at a more or less linear and quite steep rate.

The large spike shows how hard it was to recover at the beginning after neglecting Anki for many months; that time of intense study happened during the first two weeks of 2023.

Focusing on the last year only is also interesting:


Apart from the initial spike the total number of cards studied every day kept slowly growing. That is a bad sign, as it shows that recent difficult cards17 kept accumulating so that every day I had to study more. This growing rate is not sustainable.

I can see this even more clearly by graphing my last year’s study time instead of the number of cards:

stats/russian-reviews--time--last-year stats/russian-today

By the end of 2023 my study routine had become harsh. Spending more than 45 minutes a day only on studying Russian cards, not including writing new material or working on grammar—or the other languages—has been unfortunately not unusual during the past few weeks.

I plan to continue studying Russian every day with the same consistency of 2023, but in a less intense way: in practice I am lowering the number of new cards per day, which will prevent difficult recent cards from accumulating too much; as a consequence I expect a more than linear drop in time.

Another sustainability problem comes from the rate at which I kept producing new notes, much faster than I could consume them by studying. The average of 12 cards or 6 notes per day is computed across the entire period of almost four years, including the long intervals in which I did not study.


Of my 17730 Russian cards 12166 (two thirds) are “new”, in the sense of not yet studied even once:


I will add fewer new notes in the future and mostly concentrate on studying the notes I already have, which tend to cover high-frequency words. This will also reduce preparation time, which is significant and not shown in the graphs above.


My Russian vocabulary comes more or less all from Anki; I believe I would have forgotten almost every word which is now marked as “mature”, had I not reviewed it with Anki multiple times.

As of January 1st 2024 I have 8865 notes, or 17730 cards for Russian, all carefully prepared by me over time—of course using cut-and-paste very often; this also includes a good number of inflected forms.

I have become a believer in spaced repetition, and in Anki as a practical tool for learning. I would recommend it to others.

Anki as a piece of software

I compile Anki snapshots on my GNU/Linux systems; the Anki build I am running now, as of early 2024, is close to version 23.10.
My AnkiDroid build comes from F-Droid.

This happens occasionally when Anki is idle: a minor bug of which I have no reason to complain, as I use random snapshots.

Anki, while inefficient, works quite reliably. I am grateful to its authors for this very useful piece of software.

I have something more to say about Anki from a technical point of view. That topic belongs in a separate article.

I am a lucky man

E., who differently from me is a practical person, uses Anki to improve her already good German. Every day she spends some time reviewing words on her computer on the desk next to mine, and as I do the same she endures my constant mumbling to myself in Russian.

By skipping revisions on some specific days in order to turn specific “pixels” off in her heat map, E. completed this pattern in time for my birthday.

The Anki heat map with some “pixels” off

E. was also the first person who mentioned Anki to me, I think in 2019, before the beginning of our relationship. I then proceeded to forget about her suggestion and re-discover Anki independently by myself, even recommending it back to her in 2020.

— Luca Saiu, 2024-01-02 19:47 (last update: 2024-01-28 10:13)

anki, bash, e, emacs, english, free-software, gnu, gnu-linux, hacking, keyboard, myself, natural-language, privacy, russian-language, software, tutorial

(this is the latest post) Previous post

You might want to go to the main blog index (Atom feedfeeds for every post: Atom 1.0, RSS 2.0) or to my web site

[my photo]
Luca Saiu

The opinions I express here are my own and do not necessarily reflect the beliefs or policies of my employer or for that matter of anyone else. In case you felt that the public statement of my thoughts threatened your warm sense of security and your emotional stability feel free to leave at any time.
The system does not support user comments and probably never will. Anyway you can contact me if you want to discuss some topic with me. I might update my posts if you provide interesting insights.

You might be interested in my web site

Copyright © 2009, 2011-2014, 2017, 2018, 2021-2024 Luca Saiu
Verbatim copying and redistribution of this entire page are permitted in any medium without royalties, provided this notice is preserved.
This page was generated by
trivialblog. trivialblog is free software, available under the GNU GPL.
Tag icon copyright information is available in this file.



Here and in the following I am blurring the distinction between word and Anki note. In this case I am speaking of each one Anki notes making two Anki cards, one front and one back, each card containing one “word” which may be a new root, or an inflected form. I tend to include most irregular inflected forms as separate notes; I also have a good number of regular inflected forms, which I find useful to exercise grammar and to remember which forms are in fact regular, particularly in imperfective/perfective verb pairs.


I am counting what Anki calls mature cards and dividing by two to convert from cards to notes; again ignoring the distinction between a word and an Anki note.


The version running on Apple devices is proprietary software and nobody should use it, ever.


Study practices based on immersion and comprehensible input, while they can be integrated with spaced repetition, are based on quite different principles.


Thinking about programming languages does in my opinion shape one’s view of natural languages as well.

I would say that we programming language people focus on grammar much more than the average person, and care about general rules for combining phrases with an eye to how patterns are extended and generalised; we are used to considering restrictions in combining individually correct phrases as language “flaws” (in principle even fixable, as programming languages are designed by humans), and would like to grasp every detail before composing a sentence. With natural language we have to unlearn some of these behaviours and accept working with incomplete knowledge.


Along with plenty of distrust for every established “authority”, be it in bad faith or not. If these last three years have taught us anything let it be that lesson.


The details will vary. There will be some kind of “question” to “answer” in some way: I use Anki for studying languages, but other people store different information on Anki “cards”: Anki is popular, for example, among Medicine students.


Some words may exist in both languages with different meanings, and even be visually identical or almost identical despite the different alphabets. For example “a” and “а”, “ho” and “но”. The problem becomes even more serious when the two languages share the same alphabet.


I love these customisation features of Anki; I love much less that they are based on conventions from the web, an over-complicated terrible design across the board.


The approximation equating the number of notes and the number of “words” breaks down if too many inflected forms are included. This distortion however is in part balanced by the inclusion of expressions and idiomatic phrases.


Ideally a good Anki card should contain one piece of information, which is easy to check against an answer. Then of course one can wax philosophical about the meaning of “one piece of information”.


With experience I now tend to predict much better which of these form will be “special”, as there are patterns to follow and justifications for these exceptions tied to how easy pronunciation is. If the exact rules are very complex some of these patterns are more easily acquired from repeated exposition to examples than studied.
Still, as a programming-language specialist I cannot help remaining uneasy when I find myself unable to clearly articulate a certain rule.


Actually the initial order for the cards presented in a day is:

  • The new cards for the day, extracted from the ones which have never been set in FIFO order and then shuffled;
  • cards to be reviewed, shuffled.

Cards not learned are re-inserted in the day’s schedule, with a delay of a few minutes if there are still cards left to study. Most of these details are tunable.


The # character at the beginning of a line opens a line-comment, which is unsurprising. A more interesting feature is the optional metadata header at the beginning of a CSV file. While technically optional the header is very useful to avoid making mistakes at import time:

# separator:semicolon
# notetype:Basic (and reversed card)
# html:false
# deck:090-Russian

Without this I would have to be careful, when importing data from text, to update the correct deck: one does not want to update the German deck by adding Russian words.

Notice also that the order notes were imported is not necessarily the same order as in the file: but rather the order in which new entries were added. Entries already present in Anki’s database are updated and merged from the file, following a quite sensible semantics.


Some CSS classes are only used in the AnkiDroid version, which makes it easy to specify different font sizes in the two versions while sharing the rest of the configuration. This is remarkably good design.


It is possible to at least spread such a recovery phase across multiple days by setting an upper limit to the number of total daily cards. It is very tiring to recover after neglecting Anki for a long time all in one session.


One can tell that the problem is with recent “young” cards, and not with mature cards, from the colours. The troubling parts are the light-green (young), and red (relearning). The orange part (learning) does not seem to grow, which is good.