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.
> 1. You've encountered someone as annoying as yourself :-)
> 2. You learn a bit more about the dynamics of conversations.
This is the last thing I expected to find under a post about an SRS, but I think I’ve just gone through this over the course of this year. (I knew I was extremely annoying at times, but didn’t realize how much annoying I was, and what to do. I think I know now :’)
Love HN for weird tangents like this. Thanks for the reading list!
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.
There's value to anyone willing to listen to you talking about your problem. Otherwise rubber duck debugging wouldn't work.
Why don't you ask some questions about their obviously wrong solutions instead od spoiling the fun they have guessing? After all to are the one with a problem.
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.
THIS! And realizing this is a major step forward for many men in learning to better communicate with women (a stereotype, sure, but one that has many true instances IME).
> 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?
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.
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.
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.
This attitude reminds me of another phrase that I've internalized.
Choosing to be right, is choosing to be alone.
Whatever you choose to put above trying to get along with others, limits who can be part of your group. In the extreme, you will feel absolutely justified. And yet be absolutely alone.
As an example, language communities that focus on being able to find the ideal way to program (eg Lisp) tend to splinter. The languages that achieve broad acceptance (eg Python) do things that most people recognize as bad.
This doesn't mean that we should always choose to get along, rather than being right. But failing to address emotions up front has damaged so many parts of my life, that I firmly wish that I hadn't stood for so long on how right my behavior was.
I hope that your choices are working better for you than my past choices did for me.
I understand the need to engage people at the emotional level and meeting them where they're at. I just refuse to label this behavior as being constructive, desirable, something to cultivate and protect.
I see this "complainy" way of engaging as unproductive and i treat it the same way I would treat my kid when having a tantrum, I accept it, I listen to him, I am understanding of his state and his emotions, but I also nudge, coach and hope they develop healthier and more constructive ways of dealing with their problems.
For what it’s worth, I agree with you, and my partner has a similar outlook. There are people in the world who prefer to live life from a perspective of truth seeking and open inquiry. Don’t let anyone gaslight you into thinking that this is a flaw or that you should fundamentally change yourself for the sake of the average person!
It’s important to be able to navigate these conversations professionally, but there’s no reason to be overly close with people who you don’t naturally mesh with.
> I just refuse to label this behavior as being constructive, desirable, something to cultivate and protect.
> I see this "complainy" way of engaging as unproductive
You are merely defining "constructive" and "productive" to whatever suits you.
> I get wanting to vent and wanting to be heard but solutions should come first.
One thing I learned after learning all these skills (later in life), is to openly tell others "The word 'should' is not in my vocabulary."
should is usually a means to be lazy in explaining your thought process. Why should solutions come first? What problem are you trying to solve, and why that problem? Understand that addressing emotions is solving a problem - it's just a different one from what you're trying to address. Solving that problem (well) often results in fewer problems down the road. The one you're trying to solve likely won't.
To directly address the topic - solving the emotional problem first makes them more open to listening to your (other) solution.[1]
> but I also nudge, coach and hope they develop healthier and more constructive ways of dealing with their problems.
Tip for the future: Being judgmental is going to negate most of your efforts. There's nothing wrong with nudging people down a path you feel is right. There is a problem in labeling the behavior as "unconstructive".
And, as I said in another comment, I'd wager good money that your behavior is not particularly different. You may not do it as often as the people you speak of, but you do do it - and you won't recognize it until you dig deeper into understanding the bigger picture. Once you do (as I did), you'll find plenty of examples in your life - past and present - where you behaved in the same "unconstructive" way, and didn't realize it.
(And in the off chance you have realized it, and criticize yourself for those past trespasses, you are putting a barrier to improvement).
[1] And yes, that's true even for you! You merely have to go back to your life where someone told you something (that you later found to be correct) and you didn't follow it, and ask why. There are multiple reasons people don't, but this is one of them. Distrust, dislike, disdain, etc lead to devaluing things others say.
Are both invoking a false dichotomy. I phrase it differently:
"Put the focus on being useful, not on being right."
One often can be both right and useful. More importantly, being useful often means ignoring (minor) wrong things.
I had a coworker who focused on being right to the extreme. When someone would get stuck on a technical problem, he was masterful in being correct without helping the other person. He wouldn't look at the bigger picture, and wouldn't spend time trying to understand the other person's goals beyond the immediate problem he was facing.
Often, the person seeking help was phrasing things poorly (because of a poor understanding), and instead of diagnosing the problem, he'd just focus on what was said and provide a very correct and useless answer.
I was like that (perhaps I still am), just not to as extreme degree. The difference was that I wasn't as annoying in being correct, and people were comfortable in telling me "Yes, but none of what you said is helping me!" at which point I was forced to understand the bigger picture.
So: Before jumping to be right, focus on the real problem, and solve that (i.e. being useful). Forget the little minor incorrectness that was presented to you. Dwelling on correcting it is helping no one.
Interpreted literally, my version is clearly false. But when combined with my explanation of how I think about it, I don't believe it is false.
More importantly, to me, it engages me with the exact tradeoff that I have found myself choosing between. I find it helpful to make the choice explicit, rather than implicit and driven by emotion.
If your version works for you, then great. But for me, prioritizing useful over right, begs the question of what useful means, and who gets to define it. The answer to that situation isn't currently obvious to me. I've spent most of my life putting one foot in front of the other, chasing fairly clear goals. And now I'm trying to figure out what goals I should even be chasing at the moment.
It may be that your version might appeal to some future version of me. But for present me, my version is far more directly relevant.
> But for me, prioritizing useful over right, begs the question of what useful means, and who gets to define it.
The other party, generally. What I meant by "being useful" is to begin with finding out what the other person needs. What problem are they actually trying to solve? It could be a technical problem different from what they came to me with. It could be that they just wanted to vent and relate something (in which case it totally is not helpful to point out many of the (e.g. technical) mistakes they made in their narration). Being useful can be something different from all of the above.
My point was that when the focus is on being useful, you are more likely to ask yourself "How do I know my behavior/response is actually helping them?"
One can easily be right and yet not solve anyone's problem.
One of the reasons of my version is that it points my attention at the actual decision - would I prefer to be right, or to cut this person off? The answer isn't always to please others.
Who is the one choosing, though? I think it's the one who brings another person into the conversation with a problem begging for help that turns on that same person for trying to make the situation better. That is the person who needs to be empathetic when they are the one seeking help. But apparently we live in this bizarre world where emotions are always right.
It looks like you are passing judgement on the OP's situation.
As the OP, I can confidently tell you that you are absolutely in the wrong. You do not have sufficient information to pass this judgment.
I was emphatically not, "trying to make the situation better." Though that was the excuse that I would have made for myself. I was distracted, and wanting the problem to go away so I could get back to something else. (Which was rather less important.) I was throwing out suggestions before I had heard enough to say anything that had any chance of actually being useful. And if my mindset had been, "trying to make the situation better," I would have absolutely realized that.
And in this general scenario, you are assuming that you are being begged for help every time someone describes a problem to you. Literally, they are not. Maybe they are implying that request; maybe they are communicating something else instead.
I assure you that your general assumption is false, sometimes.
In the worst case you have some people who only want to transmit their own negative emotions to you. The don’t want to solve the problem (but will get angry if you don’t attempt it), they won’t accept empathy (or will use it as bait for subtle personal attacks), and they divert any and all conversations back to their own personal issues. The listener is not at fault in this situation!
> But apparently we live in this bizarre world where emotions are always right.
No, but we do live in a world where emotions are always important. So much so that highly productive and well-beloved people commit suicide sometimes, in the extreme cases.
Emotions matter, certainly, or at least yours do - to you. When others' emotions also matter to you, you move beyond infant-like narcissism, and become a potentially productive member of society. Not productive in the sense of number of lines of code written, but in the sense that you are treasured, looked after, and sought out by others simply for yourself.
If solutions always come first then you might never get a chance to vent. Maybe venting clears the annoyance from the brain enough to make it easier to understand any solutions that might be offered. Also sometimes I have been offered solutions that seem obvious to me, like did you really think I hadn’t thought of that? Which is especially piquing haha
> Also sometimes I have been offered solutions that seem obvious to me, like did you really think I hadn’t thought of that? Which is especially piquing haha
Yes, but that's still a solution minded thing. I sometimes complain as well, but, as mentioned, as sort of a rubber ducking method. I listen to the proposals again, I go, nah, tried that, It leads to X, that doesn't work because of Y, but, sometimes, even with these obvious solutions, there are tiny aspects I overlooked or bypasses I did not consider, so this is still potentially useful. And, yes, if we both can't find a solutin that is acceptable, then comiseration is in order. But I'd never manifest anger or disapproval about someone wanting to help.
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.
I simply space on a Fibonacci sequence, and the fact that it is overkill for being able to answer is a feature. Because my goal is to react the right way in similar situations, not to get an answer right on the written test.
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.
Looks really healthy to me. It’s unhealthy when a partner can’t recognize that they actually were at fault and try to change, but instead needs every fight to resolve with “we were both wrong”.
You sound like a terrific Significant Other: willing to look inwards to see how you contributed to the problems the couple is having, and working to improve in the future.
> 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.
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.
The default on iOS is pretty bad for example. Hidden hitpoints all over the card is obviously bad. And like the article states: no way to just go through all cards regardless of deck is kinda silly and annoying for no reason.
Anki IS amazing and DOES suck at the same time. I am very glad it exists and this is not meant as a dig at the maintainer for whom I am very grateful.
In particular, the UX is a mess. It is very hard for a beginner and frankly it feels like you are in an escape room whenever you want to do something new in terms of difficulty.
Once you are over that hump and just internalize its warts, it is AMAZING, but it IS a huge hurdle for a lot of people.
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.
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!
Fibonacci works well, and I'm sure that they'll remember me a week later.
So schedule a call for a week after the cruise. Then 2 weeks after that. Then 3 weeks after that. Then 5, 8, 13, 21, and so on.
Each call will bring back for both of us what it was like on that cruise, bring back that connection, and make both of us feel that any other call (say to meet on another cruise) would be welcome.
At least that's the theory. I won't know how well it would work until after I try it.
(My wife and I are doing something similar. Every week we pick a memory that we put into a system we have. The joint review of our memories each Sunday is a high point. So I'm sure from that, that this would bring back that sense of connection.)
Don't you just put tick "know this already" or whatever mechanism is used. It'll be asked a couple of times but it shouldn't be "relearned from scratch".
> 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.
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.
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.
org-drill has not been maintained in a long time. I would recommend org-srs[1], which admittedly may also one day not be maintained (single developer curse). However, I think it has some benefits over org-drill, the main one being it supports FSRS.
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.
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.
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.
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).
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.
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.
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.
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.
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?
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.)
The PyQt GUI is still meh but overall it's much better (and nowadays much much faster). I think it's still unnecessary crufty and unfriendly in places.
That being said I wrote both web and TUI front-ends and it can definitely be streamlined and cleaned up.
Interestingly, stripped of the GUI, running core (with old db and profile) uses just ~15MB.
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.)
Most def. It's ALL Rust underneath, the PyQT gui (on desktop) is basically a legacy compat layer, mostly because they need to support vast amount of add-ons, and the editor is quite complicated piece of UI.
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.
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.
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
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".
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 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 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.
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.
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.
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?
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.
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)
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.
Working on a Rails FSRS app, similar focus on healthy defaults, trying to find the 80/20 of what Anki does today: https://cadence.cards, free side project.
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.
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.
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. You learn a bit more about the dynamics of conversations.
This is the last thing I expected to find under a post about an SRS, but I think I’ve just gone through this over the course of this year. (I knew I was extremely annoying at times, but didn’t realize how much annoying I was, and what to do. I think I know now :’)
Love HN for weird tangents like this. Thanks for the reading list!
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.
Why don't you ask some questions about their obviously wrong solutions instead od spoiling the fun they have guessing? After all to are the one with a problem.
Please edit this so it says whatever you meant.
"Oh, that must have been frustrating."
>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?
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.
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.
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.
Choosing to be right, is choosing to be alone.
Whatever you choose to put above trying to get along with others, limits who can be part of your group. In the extreme, you will feel absolutely justified. And yet be absolutely alone.
As an example, language communities that focus on being able to find the ideal way to program (eg Lisp) tend to splinter. The languages that achieve broad acceptance (eg Python) do things that most people recognize as bad.
This doesn't mean that we should always choose to get along, rather than being right. But failing to address emotions up front has damaged so many parts of my life, that I firmly wish that I hadn't stood for so long on how right my behavior was.
I hope that your choices are working better for you than my past choices did for me.
I see this "complainy" way of engaging as unproductive and i treat it the same way I would treat my kid when having a tantrum, I accept it, I listen to him, I am understanding of his state and his emotions, but I also nudge, coach and hope they develop healthier and more constructive ways of dealing with their problems.
It’s important to be able to navigate these conversations professionally, but there’s no reason to be overly close with people who you don’t naturally mesh with.
> I see this "complainy" way of engaging as unproductive
You are merely defining "constructive" and "productive" to whatever suits you.
> I get wanting to vent and wanting to be heard but solutions should come first.
One thing I learned after learning all these skills (later in life), is to openly tell others "The word 'should' is not in my vocabulary."
should is usually a means to be lazy in explaining your thought process. Why should solutions come first? What problem are you trying to solve, and why that problem? Understand that addressing emotions is solving a problem - it's just a different one from what you're trying to address. Solving that problem (well) often results in fewer problems down the road. The one you're trying to solve likely won't.
To directly address the topic - solving the emotional problem first makes them more open to listening to your (other) solution.[1]
> but I also nudge, coach and hope they develop healthier and more constructive ways of dealing with their problems.
Tip for the future: Being judgmental is going to negate most of your efforts. There's nothing wrong with nudging people down a path you feel is right. There is a problem in labeling the behavior as "unconstructive".
And, as I said in another comment, I'd wager good money that your behavior is not particularly different. You may not do it as often as the people you speak of, but you do do it - and you won't recognize it until you dig deeper into understanding the bigger picture. Once you do (as I did), you'll find plenty of examples in your life - past and present - where you behaved in the same "unconstructive" way, and didn't realize it.
(And in the off chance you have realized it, and criticize yourself for those past trespasses, you are putting a barrier to improvement).
[1] And yes, that's true even for you! You merely have to go back to your life where someone told you something (that you later found to be correct) and you didn't follow it, and ask why. There are multiple reasons people don't, but this is one of them. Distrust, dislike, disdain, etc lead to devaluing things others say.
And as another commenter put it:
> You can be right, or you can be happy.
Are both invoking a false dichotomy. I phrase it differently:
"Put the focus on being useful, not on being right."
One often can be both right and useful. More importantly, being useful often means ignoring (minor) wrong things.
I had a coworker who focused on being right to the extreme. When someone would get stuck on a technical problem, he was masterful in being correct without helping the other person. He wouldn't look at the bigger picture, and wouldn't spend time trying to understand the other person's goals beyond the immediate problem he was facing.
Often, the person seeking help was phrasing things poorly (because of a poor understanding), and instead of diagnosing the problem, he'd just focus on what was said and provide a very correct and useless answer.
I was like that (perhaps I still am), just not to as extreme degree. The difference was that I wasn't as annoying in being correct, and people were comfortable in telling me "Yes, but none of what you said is helping me!" at which point I was forced to understand the bigger picture.
So: Before jumping to be right, focus on the real problem, and solve that (i.e. being useful). Forget the little minor incorrectness that was presented to you. Dwelling on correcting it is helping no one.
More importantly, to me, it engages me with the exact tradeoff that I have found myself choosing between. I find it helpful to make the choice explicit, rather than implicit and driven by emotion.
If your version works for you, then great. But for me, prioritizing useful over right, begs the question of what useful means, and who gets to define it. The answer to that situation isn't currently obvious to me. I've spent most of my life putting one foot in front of the other, chasing fairly clear goals. And now I'm trying to figure out what goals I should even be chasing at the moment.
It may be that your version might appeal to some future version of me. But for present me, my version is far more directly relevant.
I'm not sure that our versions differ.
> But for me, prioritizing useful over right, begs the question of what useful means, and who gets to define it.
The other party, generally. What I meant by "being useful" is to begin with finding out what the other person needs. What problem are they actually trying to solve? It could be a technical problem different from what they came to me with. It could be that they just wanted to vent and relate something (in which case it totally is not helpful to point out many of the (e.g. technical) mistakes they made in their narration). Being useful can be something different from all of the above.
My point was that when the focus is on being useful, you are more likely to ask yourself "How do I know my behavior/response is actually helping them?"
One can easily be right and yet not solve anyone's problem.
If you want to take it offline, my email is in my profile.
As the OP, I can confidently tell you that you are absolutely in the wrong. You do not have sufficient information to pass this judgment.
I was emphatically not, "trying to make the situation better." Though that was the excuse that I would have made for myself. I was distracted, and wanting the problem to go away so I could get back to something else. (Which was rather less important.) I was throwing out suggestions before I had heard enough to say anything that had any chance of actually being useful. And if my mindset had been, "trying to make the situation better," I would have absolutely realized that.
And in this general scenario, you are assuming that you are being begged for help every time someone describes a problem to you. Literally, they are not. Maybe they are implying that request; maybe they are communicating something else instead.
I assure you that your general assumption is false, sometimes.
> But apparently we live in this bizarre world where emotions are always right.
No, but we do live in a world where emotions are always important. So much so that highly productive and well-beloved people commit suicide sometimes, in the extreme cases.
Emotions matter, certainly, or at least yours do - to you. When others' emotions also matter to you, you move beyond infant-like narcissism, and become a potentially productive member of society. Not productive in the sense of number of lines of code written, but in the sense that you are treasured, looked after, and sought out by others simply for yourself.
Yes, but that's still a solution minded thing. I sometimes complain as well, but, as mentioned, as sort of a rubber ducking method. I listen to the proposals again, I go, nah, tried that, It leads to X, that doesn't work because of Y, but, sometimes, even with these obvious solutions, there are tiny aspects I overlooked or bypasses I did not consider, so this is still potentially useful. And, yes, if we both can't find a solutin that is acceptable, then comiseration is in order. But I'd never manifest anger or disapproval about someone wanting to help.
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?
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.
I simply space on a Fibonacci sequence, and the fact that it is overkill for being able to answer is a feature. Because my goal is to react the right way in similar situations, not to get an answer right on the written test.
> "Because my goal is to react the right way in similar situations, [...]."
Those reviews are generally conversations with my wife.
I'm happy to say that I've been passing with flying colors. (Mixed with some regrets that I didn't start this many years ago...)
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.
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.
However I'm also a work in progress. I spent a long time being significantly less than terrific...
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"?
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.
Smart people will even talk to a rubber duck to solve problems, because sometimes there's something obvious you missed.
*Assuming poster's gender.
Maybe you should take action if you think someone else is in the wrong? You did.
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.
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.
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.
In particular, the UX is a mess. It is very hard for a beginner and frankly it feels like you are in an escape room whenever you want to do something new in terms of difficulty.
Once you are over that hump and just internalize its warts, it is AMAZING, but it IS a huge hurdle for a lot of people.
The people who hunt for alternatives are probably procrastinating, and the people who write their own apps are definitely yak shaving.
Also "half an hour" != "slow learner", everything depends on the quantity, the difficulty and the chosen desired retention.
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
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.
Also could think of it a little like a “Wikipedia of flashcards”.
Would you be interested in working on something like this?
I think that this should turn some of those temporary friendships into lifelong ones instead!
So schedule a call for a week after the cruise. Then 2 weeks after that. Then 3 weeks after that. Then 5, 8, 13, 21, and so on.
Each call will bring back for both of us what it was like on that cruise, bring back that connection, and make both of us feel that any other call (say to meet on another cruise) would be welcome.
At least that's the theory. I won't know how well it would work until after I try it.
(My wife and I are doing something similar. Every week we pick a memory that we put into a system we have. The joint review of our memories each Sunday is a high point. So I'm sure from that, that this would bring back that sense of connection.)
Wouldn't this invalidate card's review history if I am to fix a typo in the card's text?
Kind of wish I had an SSH frontend though.
Not sure this needs to relearned from scratch
"Be kind. Don't be snarky."
Man I was really looking forward to seeing how they stored review history in plain text.
But, yeah, phrasing could've been a bit more precise.
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.
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.
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/
https://orgmode.org/worg/org-contrib/org-drill.html
[1] https://github.com/bohonghuang/org-srs
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 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).
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.
[1] https://www.zo.computer/prompts/hashcards-setup
[2] https://www.zo.computer/prompts/add-flashcards
Every product will eventually use markdown as their content store.
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.
Could you imagine adding support for this?
https://github.com/eudoxia0/hashcards?tab=readme-ov-file#aud...
Both are supported already
Not abandoned exactly, I just haven't been working on the project that I wanted it for in gosh has it been that long.
https://en.wikipedia.org/wiki/Recutils
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.
That is: the historical data in on the same file as the card. This makes cards trivial to sync.
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'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?
You can customise note types with CSS and Javascript, which means that you can make cards look however you want.
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.
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.
(Anecdotally, Anki has seen a huge quality increase in the past couple of years.)
This needs to be contributed by folks coming from Anki. By folks who actually have interest in the feature.
I'm happy to hear other suggestions too?
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!
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.
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.
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.
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.
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...
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.
org-drill is the original main package, but the newer org-srs is probably better (and supports FSRS).
Do you use Syncthing or something else to sync your performance history between devices?
> Your performance and review history is stored in an SQLite database in the same directory as the cards.
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.
Any way to use them, or do I have to go through markdown format?
https://github.com/eudoxia0/hashcards
https://github.com/eudoxia0/hashcards?tab=readme-ov-file#ima...