Hashcards: A plain-text spaced repetition system

2 months ago (borretti.me)

I think that the real power of spaced repetition is not in flashcard applications like this. It is in behavior modification.

Let's take a real example to show how this works.

August 19, 2025. My wife called me in to help her decide what to do about a dentist that she thought was ripping her off. A couple of quick suggestions later, and she went to being mad at me about not having heard the problem through before trying to fix it badly. As soon as she was mad, I immediately connected with how stupid what I did was, and that this never goes well. But, of course, it was now too late.

Not a mistake I was going to make for a while. But, given my history, a mistake I was bound to make again.

I changed that. This time I stuck this into my spaced repetition system. Each time the prompt comes up, I remember that scene, holding in mind how it important it is to emotionally engage, not offer quick suggestions, and be sure to listen to the full problem in detail. It takes me less than 30 seconds. Reviewing this prompt, for my whole lifetime, will take less than 15 minutes of work. Just typing this up this time takes more work than I'll spend on it in the next several years.

This mistake hasn't happened since. Not once. And I believe it won't again in my life.

I have literally changed dozens of such behaviors. My wife says that it is like there is a whole new me. She can't believe the transformation.

All it took is looking at spaced repetition as general purpose structured reinforcement, and not as just a way to study flashcards.

  • I love this example because the correct, wise approach is so alien to my mind that I do not know how to respond to such situations. I am a professional problem solver, you described a problem, yet you do not want it solved? Just talk about it being annoying, like an immutable facet of the universe? Should I retort about my grievances with gravity making roof repairs a bear?

    • > I am a professional problem solver, you described a problem, yet you do not want it solved?

      This will be hard for you to believe, but I will easily wager good money that at times you yourself behave this way. You only become aware of it after both below are satisfied:

      1. You've encountered someone as annoying as yourself :-)

      2. You learn a bit more about the dynamics of conversations.

      If there's any time someone got mad at you and said "You just want to complain and not fix the problem!" chances are this dynamic was in play. Or "I've given you so many suggestions but you don't want to fix the problem and just complain!"

      Everyone acts that way to some extent. Some more than others.

      Here's a typical scenario (common amongst spouses, but even amongst friends). You're annoyed/down due to problem X. Your friend sees you that way and inquires why you're down. You tell them, and they spend all their time giving you suggestions. But you never asked for suggestions!

      It's not a big leap to go from there to someone simply telling you their problem because they want to get it out of their system.

      Some books I've read that made it easier to understand all of this:

      - Difficult Conversations

      - Nonviolent Communication[1]

      - Crucial Conversations

      All of these will emphasize the role emotions play in dialogue. And when you read them, chances are very high you'll find yourself in them (i.e. they will give examples that you can relate to - on both sides of the conversation).

      Once I read these, many, many "poor" conversations from my life earlier suddenly made sense to me. One nice outcome was learning that even though at times people were upset at me, it wasn't always "my fault". I had always taken for granted that because I didn't spend much time playing social games, that my social skills were poor and likely I did something wrong. Reading these made it clear how often the dysfunction was on the other side, and having good/poor conversations is not well correlated with "social skills".

      [1] HN has as strong knee jerk reaction when this book is mentioned, but in my experience, everyone who complained had not read the book, and almost all the complaints were semi-strawmen.

      2 replies →

    • In what way are you a professional problem solver such that it applies to random problems in peoples' lives?

      The thing that drives me nuts is when people start throwing out immediate ideas, sometimes before I've even given a full account of the problem. But even if they do wait, I don't feel like explaining why all your immediate ideas don't work - most of the time, I've also already thought of those things. Try asking questions instead.

      4 replies →

    • The way I approach these situations is by reminding myself that the speaker is implicitly making a request - a request for empathy or understanding. While it's tempting to try to solve their problems, what they really want is for their feelings to be heard.

      "Oh, that must have been frustrating."

      1 reply →

    • You may enjoy, It's not about the nail. https://www.youtube.com/watch?v=-4EDhdAHrOg

      What I was doing is very common. Trying to engage logically with what logic can engage with, while failing to recognize that the emotional challenge is what has to be dealt with first. And that once feelings are out of the way, the logical problem will be massively easier to solve.

    • > I do not know how to respond to such situations.

      >I am a professional problem solver.

      As it so happens, you can probably apply the latter to solve your knowledge gap re/ the former.

      Unless you don't actually consider it a problem, but a facet of your personality or something. Valid. But, if you are capable of applying that thinking to yourself, why are you not able to extend the same grace to others, and wait until you're asked for a solution?

    • It's important to remember there's no "right" or "wrong," it's all about connection.

      If a stranger says, "my bike tire is flat," in most western cultures, they might very well be asking for your help to reinflate their tire.

      If your loved one says the same, well you have a lot more context to fill in their subtext with. If they're displeased with your reasonable attempts to help them—like you'd help a stranger—it might mean that they were asking for something else. Finding out what that "something else" is, and adapting to each other's differences in "what was said" vs "what was heard," is part of what it means to build a connection with someone.

    • > I am a professional problem solver

      The question is, do you want to be anything more than that?

      Even as a problem solver you might ask yourself, what should I do in any given interaction to not become the additional secondary problem myself.

    • Yeah it's insulting. It would be very long and boring to list all the things I thought of and discarded, just to ward off such attempts at help. If someone doesn't ask your advice, don't give it.

    • I feel you, I totally do. I get wanting to vent and wanting to be heard but solutions should come first. Honestly, when I hear people annoyed about offering solutions I get their need to engage with them differently but I also kind of believe they have a dysfunction about how they relate to the world.

      18 replies →

    • It’s just like in programming interviews—sometimes you need to clarify your understanding before diving into potential solutions

  • I wanted to chime in to say: this is me, I do/have done this, and am also seeking to change this behaviour. It has never once occurred to me to try using spaced repetition for something like this, so thank you to putting the suggestion into my brain! I intend to put this into action as soon as I'm able to.

  • This is really inspiring. Doing whatever you gotta do to be a better support for your loved ones is commendable.

    Can you give an example of what you record in your SR system? Is it the anecdote itself? Do you generalize the pattern? Is there a "front" and "back?" A cloze?

    • My prompt for that is, When did I last dramatically fail Kate at decision support?

      Recalling the scene and the details is part of the exercise.

      I do the visualization while journaling about it. Here is an example of what that written record looks like.

      Aug 19, 2025. She was stressed because she thought that Phoenix’ dentist was ripping her off. A couple of quick suggestions later, and her meltdown was not about how bad I am at decision support!

      Kate is able to come to the right decision. She wants someone to listen to her, be there emotionally, and not offer suggestions unless they have a lot of context. But first, second, and third, make her feel listened to.

      Note. This is tied to a visualization that causes me to connect to the right emotion at the right time. So I not only won't do the wrong thing, but I'll also be doing the right thing.

      4 replies →

    • Definitely want to talk about this too. I've been thinking of my own daily learning through tools like Anki and trying to devise a sort of "life stack" where I'm adding stuff and refreshing myself on it and this top comment from OP just sort of crystalizes that.

  • Love this example. I started putting my Kindle highlights in the SRS—no prompt or anything, just the quoted text verbatim—and the effortless periodic review essentially burned the quotes in my memory for easy recall in moments when they were appropriate.

    • Did you know there is a limit on how many highlights you can record? It is a setting in the DRM of Kindle books.

      If you are reading a book with DRM, marking things and planning to load them into SRS later, take care as it silently stops saving the highlights as text.

  • Very interesting example. For me spaced repetition today looks very different than it used to till a few years ago.

    My "system" is now some google docs, some google sheets and some html hosted on my domain. I have no black box algorithm to offload to.

    I'm now curious if i could try applying it to everyday things i learn and want reinforcement on along with the technical stuff i want handy. Thanks for sharing.

  • So cool. Would love to hear more - What app do you use? How often do you clear your inbox and how long does it take?

  • And how did the dentist fare?

    • The dental work that was needed, negotiated in advance, and paid for, happened.

      The dentist's exorbitant rate on nitrous oxide (which we were not informed of in advance) was successfully renegotiated.

      Unsurprisingly, my initial suggestions were in no way helpful to discovering this solution to the problem.

  • > A couple of quick suggestions later, and she went to being mad at me about not having heard the problem through before trying to fix it badly

    Sounds like you're not the only one at fault lol.

    Do you get mad at your wife if she offers suggestions before emotionally connecting? And would it still be too late even if she realises how "stupid she was"?

    • Yes; well, I might not get "mad" at my wife, but I might emotionally disengage or feel like I lack closure were I to explain a situation to my wife and she responded with solutions before I even had the chance to finish.

      It took me a long time to realize this. Actually, I've just now realized it clearly. Our emotional expression and the scenario may be a bit different, but it's fundamentally the same concept.

    • Part of the reason offering suggestions is 'wrong' is because it implies that they haven't tried to think of solutions to their problem. You are unwittingly implying that you are smarter than they are, even if that is not your intention.

      4 replies →

    • So what? She isn't replying, and he* isn't talking about her faults. The story is about his introspection and self-correction.

      *Assuming poster's gender.

      1 reply →

I don't mind people comparing such projects against Anki, this is natural since Anki is quite dominant in this space, but I feel like every criticism of Anki on that list was either highly subjective, exaggerated, unfair, or outright wrong and unkind (in a "one does not climb a ladder by throwing others off it" manner). Not saying this is what Fernando intended to do here, but his sharp opinion does come across a bit like it here.

Personally, I find the interface is extremely functional; the ability to have deck hierarchies to be a massive feature, not a bug; the WYSIWYG being the default being obvious given the intended audience, but one can still easily edit a textfile and import it or edit in html mode directly if desired; converting something into latex math is as simple as enclosing it in "[$] ... [/$]" and hardly the nightmare it's portrayed as; and finally potentially hacky plugins is a feature, not a bug: occasionally you have a very specific problem and some kind soul creates a solution for you, which may be functional but not the most aesthetically pleasing. That's fine. Anki is a bazaar, not a cathedral, and plugins have ratings and reviews which you can consult if necessary.

I have tried many different flashcard solutions, including hacky text-based ones, and I always return to Anki. Despite the fact that most other tools in my stack that I swear by are terminal-based.

  • His list is a list of reasons why he was motivated to do something. It does not matter how subjective the list is, since its purpose is not to convince others. It just matters that it connects with him.

    If you're potentially interested in his project, you should evaluate your interest based on how much you think like him. If his complaints aren't yours, no skin off your back. Just ignore him. If they are, read farther.

    • Yes, like I said, I didn't think denigrating Anki was specifically Fernando's purpose here.

      However the reason I find it off-putting is because, as someone who generally lives in the terminal, and Anki is one of the few remaining GUI apps I rely on, I actually "would" have preferred a decent terminal alternative with similar features. But introducing the alternative by saying how much Anki sucks immediately puts me off when all that criticism doesn't resonate with me.

      It literally works as anti-promotion here: if Hashcards promotes itself as missing all those features of Anki which I think are great, and my time is limited, then I have much less of an incentive to invest the time to check it out. Which is ironic, because in reality it may be great (like most of his other work) and actually suit my use-case really well.

  • Using Anki every day for about half an hour (I'm a slow learner lol). Anki sucks, but it's good enough that there's no point looking for other apps.

    • I know a gazillion med students who used Anki as is to graduate. They routinely have decks with north of 10K cards.

      The people who hunt for alternatives are probably procrastinating, and the people who write their own apps are definitely yak shaving.

    • Anki is amazing, "anal_reactor" I think you're wrong on this.

      Also "half an hour" != "slow learner", everything depends on the quantity, the difficulty and the chosen desired retention.

I've been working on knowledge base + spaced repetition project, and I know how convenient markdown files are.

1. You can view them anywhere (Github renders them nicely) 2. You can edit them in your favorite editor 3. Formatting doesn't decrease the readability 4. Extensible (syntax highlighting, mermaid, mathjax, etc.) 5. Cross-linking which is a core for any knowledge system is free 6. You can use Git for versioning and backup, etc, etc.

https://github.com/odosui/mt

  • This looks really interesting! I am studying "knowledge-heavy" subjects with lots of facts I need to learn, and have been looking for software where I can write flashcards directly within my notes, and both review them when reading my notes, and globally across notes. I like to have my notes locally, so I didnt find any good solutions. But there are some parsers for anki that can process markdown documents and extract items within them

Curious what HN thinks about a spaced repetition social network.

You could mark items in the feed to space repeat for yourself. This would also function as a “retweet”, which would align incentives such that content that gets promoted is actually durably useful or interesting. The posts people make would repeat to themselves too, so the source content should be good.

  • I have no idea when I'll go on a cruise next. But if I do and make friends on the cruise, I'm going to call them afterwards on a spaced repetition schedule.

    I think that this should turn some of those temporary friendships into lifelong ones instead!

  • I have thought about this idea many times and think it would be amazing!

    Also could think of it a little like a “Wikipedia of flashcards”.

    Would you be interested in working on something like this?

> Cards are content-addressed, that is, identified by the hash of their text.

Wouldn't this invalidate card's review history if I am to fix a typo in the card's text?

> The thing that makes hashcards unique: it doesn’t use a database. […] Your performance and review history is stored in an SQLite database in the same directory as the cards.

Man I was really looking forward to seeing how they stored review history in plain text.

  • The OP says that he doesn't want _cards_ be stored in opaque format, because they are valuable. The review history he doesn't care about.

    But, yeah, phrasing could've been a bit more precise.

  • Absolutely the same here. It seems weird to have 'no database' as the selling option for the main system, but then use SQLite for that slice of it.

For the bar exam, I used a combination of an outliner and flashcards. Back then, I was usimg a PalmPilot. The idea was:

1. Turn the subject matter into a knowledge tree. 2. If a branch has more than 5 leaves, you split it up. 3. Flashcards are generated by traversing the tree. The parent node is the question, the child nodes are the answer.

The benefit of the tree is that it forces you to think about where in your structure a given piece of new information fits.

Allow me to plug Ankivalenz[1], my library that turns (structured) Markdown files into Anki decks, using a syntax like this:

  # Solar System
  
  ## Planets
  
  ### Color
  
  - Earth ?:: Blue
  - Mars ?:: Red

The best thing about it (for me) is that the header structure (and any parent list items) are added to the cards, e.g.:

  Path: Solar System > Planets > Color
  Front: Earth
  Back: Blue

This hierarchy makes it much easier to formulate succinct cards, in my experience.

The syntax also means that I can easily add cards from my regular Markdown notes, so regular notes and Anki cards live together.

[1] https://github.com/vangberg/ankivalenz/

Lots of comments about using your own systems etc so I'll say two things:

1. The biggest win is just doing spaced repetition. Period

You don't even need an algorithm. You can just have options for "remind me in 1 day, 7 days, 14 days". This is how people did with physical cards: they just put the card at the back of the deck, the middle or the front.

2. LLMs now make it trivial to just say "make me an Anki clone in python with these features" and it will come up with something pretty decent.

In closing, learning the things that LLMs can't do quickly and efficiently is basically what we should all be doing.

  • #2 is what I did.

    In addition to "make me a prompt to go with photos of the school book word list that will output <specific JSON> I can import to my tool"

    Works pretty well and a lot faster than typing it all in by hand.

W.r.t data entry I've resorted at times to using a Google spreadsheet with autogenerated row UUIDs (it's useful for content to have a persistent ID in case you have to correct a typo or add new fields).

I also often found myself wanting to make different flashcard decks from the same basic information (for Mandarin pinyin sentence --> character recognition, characters --> English translation).

If there was a sheets like data entry interface backed by a text format it would be great.l (I rolled things with streamlit but it's always cumbersome to get started).

  • Yes, the inability to edit cards due to the content-addressing seems like a majot drawback.

If you are an emacs user, you might be interested in org-drill, which of course is plain text and uses space repetition algorithm:

https://orgmode.org/worg/org-contrib/org-drill.html

Spaced repetitions only work if you use them every day with minimal or no breaks. If the algorithm actually does the recall probability very well like FSRS does, you will keep failing the cards if you don't do them consistently. I learned the hard way where I almost forgot like 80% of my spanish deck that I was certain that I will be able to retire and recall it. But nope, even that word that you felt was rock solid in your memory is gonna fade, so just trust the algorithm.

Self-plug. For anyone working in the terminal: https://github.com/krychu/lrn.

A very simple cli tool, consuming basic txt format. You can use it in a second window while waiting for your compilation to finish.

Recently I’ve been also experimenting with defining QA pairs in my note files (in a special section). I then use a custom function in emacs to extract these pairs and push to a file as well as Anki.

I am always intrigued by new SRS systems, though sadly most are just "simplified" Anki clones. I have always been tempted to throw my hat into the ring.

The biggest area for improvement is probably deck collaboration. Most SRS proponents often state that its bets to make cards yourself because the act of making the cards is a key part of the learning process. I don't disagree, but part of the reason that making cards your self is recommended is because the shared decks are, on average, terrible.

After that I would like to see more built in support for non front/back or cloze cards. There are a lot of other card types that you can make, but are difficult or impractical to do in anki. Things like "slow" cards, one sided cards, code/music/math/text cards. These can all be done in anki, but it's a pain.

Then support for card order/hierarchy/prerequisite an and encompassing graphs like what MathAcademy does.

And lastly, a web first experience. Anki is offline/local first. That has the benefit that you are always safe from being rug pulled. But there are a lot of places (like work) where local first does not work well.

Markdown is the final perfect form for every text (non-binary) content based system.

Every product will eventually use markdown as their content store.

  • One of the biggest benefits of LLMs is that products are incentivized to have a way to import and export from markdown.

    • And many sites have their documentation pages available as markdown just for this reason.

      If an LLM can use your product/API easily, it will get more users. If you make it hard, they'll choose something else.

This looks really cool. I thought in the past about implementing something like this myself.

I have use anki, and briefly mochi.

Having plain text cards that are simple to edit and manage with basic linux tools is really important.

I have used the genanki python library in the past to generate cards, but it's not great.

Going to give this a go.

I wish more people knew about GNU recutils instead of inventing new formats

  • I wish there were more/better tools for working with recutils. I had a phase of trying to use recutils wherever it made sense, a few years ago, but the format has a lot of redundancy (not a bad thing in itself), and editor support to make working with that easier was basically non-existent (perhaps it exists only for Emacs). Using the command-line interface for everything was way too cumbersome. Visidata claimed to support the format, which got me excited, but in my experience it mangled the file if you had anything more than a basic set of records, and the support for display too was overall very rudimentary.

  • People have invented so many things similar but not identical to recutils that I wonder why you think recutils is the solution that everyone should converge on.

Thank you, finally a SRS implementation I can use for my plain text files. Very nice! I had Gemini make a deck from https://github.com/eudoxia0/hashcards , hashcard_tutorial.md and after correcting my deck to account for escaping the < and > with \< and \>; on the second run ($ hashcards drill --card-limit=10 ./)dealt me all the correct cards, like a self QA I really like the keyboard shortcut of space and 1,2,3,4 for making deck reviewing quick work.

I'm happy to see others in the space, but I wish Anki competitors would implement a decent 'import from Anki' feature. Otherwise, I think most existing users of SRS are unlikely to switch (because we use Anki and have thousands of cards there already).

The data format of Anki is a bit complicated but at least it's SQLite. I've seen a ton of shared decks and resources on ankiweb, but it's true you can't easily put them on GitHub.

  • I wrote my own flashcard app and had a very basic import from Anki feature and I have to admit that I underestimated how Anki handles it. My first attempt at import was very naive and sort "flattened" the imported data into simple front/back content. It lost a lot of fidelity from the original Anki data.

    After investigating the way Anki represents its flashcards a bit more, I can really appreciate the way Anki uses notes, models, and templates to essentially create "virtual cards" (my term).

    I suspect other people creating their own flashcard apps underestimate the data model Anki uses and have a hard time matching their own data model with Anki's, which may be why decent import options are hard to find. If someone wants to support Anki deck import, they have to essentially use the same data model to represent notes and models (plus cloze deletions). I'm now adopting Anki's model for my flashcard app for better import fidelity.

    Regarding the SQLite data format, I was thinking it would be great if there were a text-based format instead for defining the deck and its contents as that would make it much easier to collaborate on shared decks on GitHub, like you suggest. It would be great to have a community work on essential flashcard decks together in an open format that encourages branching and collaboration. I know some groups do this with Anki decks, but I can't imagine the SQLite file format makes it easy to collaborate.

    I don't think it would be that hard to come up with a universal text file-based format for a flashcard deck that supports notes, models, templates, and assets. For instance, we could have each note placed in its own text file and have the filename encode the a unique ID of that particular note. Having unique identities for everything would make it easier to re-import updated decks to apply new updates if you had previously imported the deck. The note files could also be organized into sub-folders to make it easier to organize groups of info that should be learned together.

  • I think that many devs missed the fact that Anki went through major rewrite and all of its business logic/its brain/api are now contained in few rust crates. They're a pleasure to work with and it's very easy to write alternative frontends (just finished one). You don't have to import anything because you can just use the same db, and cards as Anki.

    • Wow, I haven't used Anki since... before they switched to date-based releases, but the new version is a big step improvement from versions I have used previously. When I updated, opening the app for the first time opened the terminal for a text-based installer, which didn't inspire confidence, but it's well improved. (This isn't really related to the backend changes you're mentioning, but this comment inspired me to take another look at Anki.)

      1 reply →

    • This feels as if it deserves a write up, did not know that they migrated from Python to a primarily Rust backend. Would love to know the why/what from the team.

      (Anecdotally, Anki has seen a huge quality increase in the past couple of years.)

      3 replies →

  • I’ve been writing my own flashcards (purely text-based, no SQLite like in this case) primarily because Anki never worked out for me (too hard to use, too hard to sync, everything too complicated). I have zero time or motivation to research how to import data from it.

    This needs to be contributed by folks coming from Anki. By folks who actually have interest in the feature.

> First, [Anki] is ugly to look at, particularly the review screen.

You can customise note types with CSS and Javascript, which means that you can make cards look however you want.

This was a super interesting article for me as I'm working on a prototype software aiming to promote spaced repetition and some newer wave learning science as a common approach to "leveling up" in an age where AI is pushing the competitiveness of human labor.

I've thought about posting to HN but I'm a little apprehensive of when and how to post.

Anyone interested in this and/or have some advice for posting my prototype online for feedback?

As someone who has used spaced repetition extensively I will just provide a few insights that might be helpful:

1. Decide on what's important. Just because you learn something doesn't mean that it should be logged to the system. I used to log a lot of minor details (like niche method signatures or command flags to the system). If you make cards for every detail like this then you will be trapped reviewing 100s of cards daily that you likely never use.

2. For the cards you deem are important, make sure you understand the concept. This often means making 2-5 cards for the concept that test your understanding from different angles (definition, pros, cons, how would I explain this to someone else, etc...). This helps to cement the concept at a foundational level.

3. Try to move from the existing flashcards to 2nd order flashcards or pure application after the first couple reviews. So your foundational cards are now set to review in 6 months or 1 year. At this timescale if you prioritized what was important and made sure that you understood the foundational concepts, then usually simply doing things related to the concepts will be the reviews (and sorry to say but if in 1 year you get a card related to what you are doing, but never used, chances are it probably wasn't that important). In addition to doing, you can also create 2nd order flashcards (which might compare 2 concepts). These types of cards test the foundational knowledge indirectly, and are helpful for higher order thinking.

In conclusion, I think spaced repetition is a very effective tool for efficient learning (especially in the first 60 days or so after learning something). I think the major pitfall is not prioritizing what cards get made and being stuck in review hell.

I think the overall idea is good.

If the cards are identified in the database as their hashes, wouldn’t editing the content reset all repetition data so far?

Anyone here has been using FSRS long enough to have comments about its effectiveness? I think it’s general consensus that moving from SM-2 to FSRS will show great improvement. I’m using SuperMemo 9 though, so it’s much harder to understand whether there will be an improvement or not.

  • I’ve been storing cards as markdown with a horizontal ruler separating the prompt from the response and another ruler separating historical data.

    That is: the historical data in on the same file as the card. This makes cards trivial to sync.

I also wanted a frictionless card creation experience, and I didn't want another (mobile) app for that. I'm only using SR for new vocabulary in a foreign language, so I created a multilingual AI-powered Telegram bot [1] that does just that.

Creating a flash card is as simple as sending a word (or expression) you want to learn. The bot takes care of the rest: generates the translation, pronunciation, and examples.

The bot also uses FSRS for SR.

[1] https://lexicorn.ai

>I have learned that the biggest bottleneck ... is just entering cards into the system.

Couldn't agree more. I think I would take this opinion and go even further -- we shouldn't be making cards fully by hand much, if at all, anymore. AI-assisted card creation is to me clearly the future, and already AIs are good enough for this to work well.

  • But making the card actually help in forging a memory of it.

    • I think it’s a matter of scale, you can create hundreds of cards in a few minutes with LLMs, and then delete a third later during learning.

      It depends on the nature of what’s being learned. For language learning for example this is very effective as you can create it directly from content so that you have context.

Does anyone outside of people in school or language learners use these type of tools in any interesting ways?

  • Know personally in real life? No. But there are plenty of examples of people using Anki/SRS tools for interesting things outside of school or 2nd language. I’m firmly in the camp that SRS is widely underrated and underused for working adults.

    Some examples would be Michael Nielsen, Gwern Branwen, Andy Matuschak and u/SigmaX (reddit - not sure his real name)

    * http://augmentingcognition.com/ltm.html * https://gwern.net/spaced-repetition * https://andymatuschak.org/prompts/ * https://imgur.com/a/anki-examples-math-engineering-eACA7QM * https://imgur.com/a/anki-practice-cards-language-music-mathe...

    • They'll always be "underrated" and underused because they're so damn unenjoyable.

      Sure, we all need to study and learn things in life here or there, but the flashcardification of the process makes it boring and painful.

      From my own personal experience trying it, I find the process to be too far removed from the practice of accomplishing what you are setting out to learn to do. An analogy might be like memorizing a recipe by using Anki cards and not physically cooking it versus doing cooking it a bunch of times without deliberately trying to memorize the recipe. For me, the latter is far more effective because you have your 6 senses of mnemonics to memorize what you are doing. I may not remember that I need 2 cups of flour, but I remember that I scooped my purple flour scoop twice and that the white contents felt powdery like flour and grainy like sugar. Even if I forgot the recipe my body would have smelled, seen, touched, weighed the material and I have all these physical clues to work with.

      Learning by doing, experiencing, immersing is more of a "repetition that you don't even know you're doing" while Anki/SRS has the feeling of a chore and an obligation.

  • I tried to use Anki learn chess openings. I think it is a decent usecase, however I quickly gave up because I had to get better at visualizing the moves from algebraic notation (a skill worthy of learning anyway if you want to become good at chess). However I never continued my chess improvement goals to the extent where I picked up Anki again for this purpose.

Rather than treating SRS as a learning tool for facts, I find it far more valuable as a system for recording and periodically revisiting past judgments, especially to reflect on whether a decision made in context was actually a good one.

  • I too would appreciate learning more about your implementation. This seems akin to Andy Matuschak's concept of "spaced everything".

    I presume you use FSRS. What do your card prompts look like? And how do you go about performing, evaluating, and scoring your review of each card?

  • This seems really interesting to me as I don’t often work in domains that require me to know a lot of facts, but I still feel like SRS could be useful. I just don’t quite know how to use it. Could you give me an example of what you mean here? What kind of decisions do you find meaningful to periodically reflect on?

Perfect timing. I just started to teach my wife Finnish so that she'll have easier time with real language lessons when she gets her paperwork sorted out to move here. And I've feverishly been looking for a self-hosted SRS system where I can feed new content to the "decks" and she can consume it on her schedule. Making micro decks that she'd import in Anki wouldn't be very convenient. This would seem perfect to me.

I'm happy to hear other suggestions too?

  • Loistavaa, what a perfectly tailored comment for me, I have like 80% the thing for you at https://finnish.andrew-quinn.me/ . Unfortunately I'm all in on Anki but maybe these will sway you nonetheless.

    Every 6 months I create around 5000 Anki cards out of the last 6 months for reading practice of the YLE Selkouutiset news, on a sentence by sentence basis: https://github.com/Selkouutiset-Archive/selkokortti

    For raw isolated vocabulary my finfreq10k Anki deck can't be beat! https://ankiweb.net/shared/info/1149950470

    But in your case, and for writing practice, you may also like https://github.com/hiAndrewQuinn/finyap , which is self-hosted in the sense that a new deck is just a CSV file in "scenarios".

    Tsemppiä vaimollesi!

    • Fantastic tools you've collected here! My rationale for building own decks for my wife is that I'm intending to start slow and easy, and I'll build new cards that are closely tied to days' lessons I'm giving her. I'm hopeful that after a while she gains confidence to start going through premade decks. With anki and similar tools it's important not to just memorize words without having some handle on how to build sentences etc. I spent a lot of time learning Japanese that way, only to find that I maybe memorized words but to build sentences with them...

  • I have something close to this, even a helpful bulk import. But it works on your own account not someone else’s.

    The feature

    https://learnalist.net/faq/add-a-list-overtime-for-spaced-le...

    Bulk import ui https://learnalist.net/toolbox/srs-add-overtime-v1.html

    You’re welcome to try it, it is not self-hosted.

    I also have a mobile app, and have been thinking of how to simplify the server etc.

    Equally been thinking about how to modify the mobile app to work better with a different backend but still maintain notifications (local instead of server).

    It used to be in the public domain but I moved it to a private repo. I am open to moving it back, there is just a small part of the code I want to keep private.

I’d like to have deck-wide variables/lookup tables and links.

The decks for studying Japanese that I’d like would have RTK/wanikani style elements used for mnemonics and I’d like them shown in the answer along with a full description and cross references.

Right now I’d have to build a templating system to prebuilt my deck and import it and it’s just a lot of work on top of the work of building the content, but mostly it makes it difficult to edit/update cards while studying.

Just gave it a whirl and it works pretty good. It doesn't seem like you can force hashcards to let you re-review your deck at anytime though as its on a scheduler. (Imagine this is by design of SRS, but a bit annoying can't override with a flag).

I think uploading a textbook to NotebookLM and getting it to build out a deck for each chapter will be a great study method.

> Your performance and review history is stored in an SQLite database in the same directory as the cards.

Do you use Syncthing or something else to sync your performance history between devices?

I've been doing spaced repetition in plain text (org files in Emacs) for 7 years now.

org-drill is the original main package, but the newer org-srs is probably better (and supports FSRS).

> The thing that makes hashcards unique: it doesn’t use a database.

> Your performance and review history is stored in an SQLite database in the same directory as the cards.

As Hinton said during an podcast, humans can only learn at the rate of few bits per second. Memory and natural language are of very limited bandwidth.

For anyone who prefers reviewing their cards via their phones, this appears to work very nicely on Termux

Obligatory mention of Obsidian’s most popular spaced repetition plugin: https://github.com/st3v3nmw/obsidian-spaced-repetition

It has the least friction for creating flashcards I’ve ever seen. You actually don’t even have to create flashcards - you can add any note to the review queue with one keystroke and record the ease of recall with another command.

I'm a little late to the party here but since Mochi was mentioned I want to take some time to address some of the criticism of it in the article.

With regards to cloze deletions the author writes:

> cloze deletions in Mochi are very verbose. [...] This is a lot of typing.

First, the numbering (1::) is optional. Secondly there are keyboard shortcuts, cmd+L to wrap in {{}} and cmd+1,2,3 to add numbering.

The point about note types is fair, and I may a similar function eventually, but I recommend most people to create no more than 10 cards a day. Any more and you risk getting overwhelmed with reviews. In the article the author shows an example of creating 4 (or more) cards for a single atomic element. This excessive card creation probably contributed more to the 1700 overdue cards than the algorithm (more on that later). If you really do want to create multiple cards like this you can use cloze groups. E.g. {{1::Helium}} (symbol: {{2::He}}) has atomic number {{3::2}}

Finally, the "biggest problem with Mochi". This is kind of a moot point now that Mochi has an FSRS option, but there are a lot of misconceptions in the article about the algorithm. First being that Mochi's algorithm is inferior to SM-2 because it is simpler, and that the rational for it being simpler is because "the user can reason about the algorithm more easily." I'm not sure where the author got that idea, maybe I mentioned it before as an advantage, but it's not the main reason. The main reason is that the additional complexity in SM-2 is actually detrimental in some subtle ways. [0] The author just assumed the algorithm was worse and gave up.

With regards to the forgetting multiplier the author states:

> If I forgot something after sixty days, I surely won’t have better recall in thirty.

But what is the evidence for this? The assumption here is that the knowledge was "completely lost". For the card to have gotten to 60 days in the first place, you must have remembered it previously after 30 days. Evidence show that reviews strengthen memory, not degrade it. Even FSRS does not completely reset the interval after a forget. I get that the author doesn't want to configure things, but lowering the multiplier to 0.2 for example seems a lot easier than building a brand new SRS flashcards app.

Criticisms aside I really do like the idea of hashcards. Plain text, offline, open source. It checks a lot of boxes that I personally look for in software and I'm happy to see more options in this space.

[0] https://web.archive.org/web/20200926103540/https://massimmer...