Show HN: Anki alternative with integrated notes and import/export
get21stnight.com
get21stnight.com
This is cool, but I will never base my learning on a closed-source product. I simply don't trust anyone with data / workflows this important to me.
Anki doesn't have great UX, but it is -dependable-. It works, day in, day out, and I've had zero issues with it. I trust that in 5-10 years, my anki decks will be there and work exactly the same.
edit: I'm not trying to be negative. I think there is a lack of spaced repetition-based flashcard apps with great UX. However I personally value stability and guarantee of longevity over nice UX. If the developer of Anki quits tomorrow, it being open source ensures that it'll live on with new maintainers (even if that's just me).
This is how I did it.
Usually when you start a language, you start with a textbook. It might be Genki Vol 1, or Nihongo So Matome 1, etc. I created two decks - a kanji deck, and a vocab deck. These decks were only for this single textbook. Every week when new kanji or vocab was introduced, I'd add those to the deck, and become familiar with them over the next week (while at the same time, reviewing existing vocab/kanji).
When that semester was over, and we started the next textbook in the new semester, I'd create two new decks. And so on and so on.
I think it's important to create the decks yourself. It gives you control, and makes you feel more invested in the process. For vocab, I'd always include example sentences. For Kanji, I'd actually have representations in two different fonts. One in the standard kanji font on your computer, but another in HonyaJi, a "hand-written" kanji font. For me, I just felt it helped when writing out the kanji to see how it looks handwritten.
The great thing about Ankidroid is the whiteboard feature. Use it!
If you're not studying a language with logographic characters like Chinese or Japanese, then great, you only need to worry about vocab!
(As for grammar, I never relied on Anki for that. Practice speaking, practice writing. Find local "conversation classes", where you meet up with native speakers. They can practice their English with you, and you can practice your new language with them. As for writing, check out a website called Lang-8. Native speakers look over your work for free, and in return you just take a few minutes to read over their stuff in English).
For me, I -hated- how long it took to input words into Anki, so for ~7 months I used Evita's Korean Deck which has about 5.5k words. I eventually burned out and got tired of the lack of context in the cards, but that helped me learn a lot of day-to-day vocabulary. I tried this a bit with a Japanese 2k deck but I think with logographic language it doesn't really work as well as slowly inputting words that you know the context/definition for.
Nowadays I write down words from books/movies/etc that I don't know in my journal, and every once in a while I collect those into a personal anki deck. I actually am working on a CLI program that helps automate the process of searching a word's definitions and creating a card. It outputs all of the selected definitions into a csv, which I can then bulk import into Anki. [0]
It's important to do it every day. Anki by default allots 20 new words per day, but this is quite a lot unless one plans to spend a while every day on anki. I find 5-10 words is more tenable, and simply 1/day is better than 0/day if one burns out.
[0]: https://andrewzah.com/posts/2019/better-anki-usage-guide/
Anki Vs. Input-Based Learning
https://m.youtube.com/watch?v=t26IPxExmzs
How to Learn a Language: INPUT (Why most methods don't work)
I definitely don't recommend anyone to try and learn a language from e.g. Anki only.
There just aren't big lists of things I need to memorize, like there once were. Also, I'm certain I'm learning slower than I did as a student. But that could again be good or bad -- maybe I stopped learning as fast because I picked all the low-hanging fruit and I'm busy using it.
I certainly don't see lots of low-hanging fruit like I used to. But I always wonder if that's a failure of imagination.
For programming: I'm quite happy saying "learn concepts, not terms/frameworks". There's obviously some value in things you use a ton daily, but you'll naturally remember those through use - for the rest, thankfully, programmers are great at making things searchable, and there are loads of tools to search even when not (e.g. grep). Terms can be useful for communication purposes, learn them as needed and meh beyond that. Frameworks though are basically the programming-world equivalent of fashion, they change with the weather / at the whims of popular tweets. Yolo - learn how it works instead of the API, that's waaaay more useful, and is probably transferrable to dozens of other frameworks.
But as an example: I routinely forget the argument order and finer details of the various "split a string" funcs in the 3 or 4 languages I use ~weekly. Because I only use them every few months. And in my next language, quickly-recall-able memory of those other-lang patterns won't help me in the least (if anything, they might slow me down). Splitting a string though, and choosing which end to start from, and how many times to split, and the various i18n complications, is a general concept that's applicable in all languages.
It's funny that society doesn't normally classify programmers as creatives. (Then again, it doesn't classify scientists that way either.)
But that said for learning a language these kind of tools are very useful.
Many very important results in math (that have become staples) are made up of extremely specific techniques that are very hard to reproduce even after 5 minutes one has read (and presumably understood) them. Even understanding in math comes in waves. To get a deeper understanding of an idea you'd need to have some preliminary grasp on it.
I often see the sentiment "in math if you understand something, you don't need to memorize it" on English speaking side of Internet. Contrast that with the old Soviet school (& modern Indian one?) philosophy which was "understand -> drill -> memorize". IMO, the former philosophy produces weaker, barely able mathematicians.
This vid below about Hitler learning topology echoes some of what's typed above.
I remember a math grad student friend who said "math is a young man's game". He compared it to cycling; nothing you do in your old age would compare to what you could do earlier.
In fact according to him math is worse than cycling, if I'm correct that cyclists peak in their early 40s. Contrast that to economics, which specifically offers the Clark Medal for the best work performed by someone under forty, because old-timers would otherwise snaffle up every prize.
I am revolted by that idea. And I'm certainly a better coder than I was in my thirties, and I was better then than I was in my twenties. (Not that I'm under the illusion that my work compares to PhD-level math.)
Recently though I've been learning to fly (in the UK). You have to take some theory exams. The "How the aircraft flies" exam works in the way it has in the past - read through the material a couple of times and because it's a coherent set of knowledge that fits in a framework I already understand (Engineering) I can remember everything. Air Law does not work like that though. There's lots of minutiae to learn (how much visibility do I need for VFR at 5000 feet as supposed to 1000 feet, what does the white ball above the T mean on a signal square). Anki let me learn all of that stuff over a few weeks for 15 mins a day (plus deck creation time - a couple of hours) and pass the exam with no mistakes.
Write all your notes to org-mode files in a git repo, sync these (selectively) to Anki. No need to depend on proprietary services.
Ironically though, the easiest way to get your cards to AnkiDroid/AnkiMobile is through ankiweb.net (a free service) then you could manually export/import cards and stats should that disappear. org-anki saves note ID within org-mode, so you can keep updating cards after an export/import.
things like deck syncing, card creation, and the general ui all seem like they can be implemented to be much more user centric and functional. For me personally and my girlfriend in med school have lost data due to anki's strange sync pattern.
I can't be the only software engineer that thinks they can think of an implementation in their head that would make anki as a product much easier to deal with, right? As far as I can tell, people are tied to anki due to Stockholm syndrome and lack of worth-it, well maintained alternatives.
I've thought about trying to create something better, but Anki itself is so entrenched in some communities that there's a strong network effect - both through shared decks and add-ons. (Also, I don't personally have an application for rote memorization, so someone who does would probably create something better.)
I'm not sure that most users can be expected to figure out things like "does this update include a database upgrade?" "which devices are running an old database?" and "what do I do when the software told me the database on disk is corrupt?"
And I think SyncThing would still suffer from the issue of needing to make sure only one device writes to the Anki sync at a time. I really think some sort of cloud service that handles multi-headed sync of cards/notes (and makes it hard to take permanently destructive actions) would be a real competitor in this space - if they can overcome the Anki network effect.
It's a lot of cognitive overhead to remember not to touch Anki on any other devices unless you've synced and closed it out on the most recently used one.
Since she has a ton of cards, syncing takes a while. And occasionally it just throws a random error.
Moreover, there's a sense of fear every time she uses Anki that she will hit the wrong button and lose her expected state.
I haven't had any issues after remembering to do that, but I only really use text-heavy decks and not ones with lots of media.
Only a couple times over my entire usage have I actually had to do a full resync, and it's pretty painless. I just reupload to ankiweb, or download from it, and it's done. This is usually because I've caused some incompatibility via add-ons, or anki versions. But it's always been easy to fix.
>what other apps do you do that for?
I'm not sure what other apps I've used nearly as much as anki. Probably just firefox/chrome and emacs. I've had issues with losing tabs in browsers far more often than losing info with anki. And losing data by not saving in an editor is pretty easily done as well. I'm actually surprised at how well anki will handle changes from multiple sources. Unless you modify the same card on different devices, it pretty much always seems to work as expected.
The lack of "worth-it" alternatives is due to the fact that there's no money in this market. Students are very unwilling to buy software, and if you use ads you end up like Quizlet. YC funded a startup in this area (Hickory) and they're... not doing well.
The main reason why everyone still uses Anki despite its issues is because it is still hands-down the best solution out there, despite all the bugs and clunkiness. There are a million and one spaced repetition systems out there, but Anki's plugin system and shared decks make for a very strong network effect.
If you're a med student, I don't recommend moving off Anki. The ecosystem there is too strong. If you're losing data, post in the /r/anki subreddit - Anki automatically generates backups and they'll walk you through restoring them.
You're definitely right about students being unwilling to buy software. They're already cash-strapped, so they're very unlikely to pay for an app, let alone a monthly subscription.
Unfortunately event sourcing means distributed systems... and I'm learning this on the fly on nights & weekends. Martin Kleppmann's "Designing Data Intensive Applications" has put the fear of god in me.
For my approach, I really just have each device append to its own journal file. I use iCloud's file storage, so I don't even have a service that I run. Each peer device just uploads the latest version of its journal to a shared folder and downloads its peers' journals and plays back the delta as needed.
I intentionally chose this architecture since I didn't want to run my own sync service. It keeps the sync system free, but iCloud can be slow. Unfortunately for me, if iCloud is slow, the app gets blamed for it.
I also hate that the anki shared decks web site does not encourage collaboration, or at least not the decks I see in their web site. There are a lot of shitty, outdated decks and instead of collaborating to fix them people just upload their own shitty deck. Perhaps the people studying medicine who create decks on their own don't have this problem, but it is something I see in the web site. It would be great to have a site integrated with git so people can collaborate on github.
Also, classification of decks by language is something I miss. When you search for a language, eg. Russian, you get decks for English->Russian, but also for Russian->English. It's hard to find the deck I want
(Just some suggestions, in case someone of working on anki clones)
If so, consider commuting via subway.
Offline first is simply a more reliable way to build systems than online-only. Specifics long forgotten, but a few years ago (perhaps 10+ now) a lot of people got, understandably, upset when they found out their single player games couldn't be played without an internet connection in order to authenticate. Oops, auth server went down, players can't play the thing they dropped $50+ on.
The idea of not having my personal decks stored on my own disk(s) is honestly much worse than the annoyance of sometimes (rarely) running into issues syncing. I've been working on various decks for literally years and have several thousands of cards made. Server-side stored only? Please no.
Dude, I'm building exactly this. I'm not basing it on git for various reasons, but I am using event sourcing, and git is basically event sourcing for code. My system will (eventually) allow pull requests, comments, upvotes/downvotes, and all kinds of community shenanigans on flash cards. It's months away from release... but here's the repo if you wanna have a look: https://github.com/dharmaturtle/cardoverflow
There's also a really interesting templating library that generates cards for Anki: https://closetengine.com/
i think their mistake is thinking memorization tools are only focused on students and not learners in general. I use anki for memorizing chess positions, learning languages, etc. I'm also a full time worker and have plenty of money to spend on a tools that will help my productivity/hobbies. id be more than happy to fork over cash for the anki system with better client apps. if they had a concern that the cost would put them out of reach of students (their iphone app is $20 so i doubt its a concern), then they should just implement student tier memberships for free while people who can pay will pay.
I'm curious what causes this, because I definitely have a different experience from you. Very few errors at all, and I have decks with thousands of cards and hundreds of megabytes of metadata (audio clips, images, etc)
I've written my own spaced repetition flashcard app (see my profile), so I've looked a little bit at how the data is stored in Anki and have a general idea of how sync works, and my impression is sync was bolted onto an existing system meant for a single device. I've seen posts from users in the sub-reddit about how if you do lessons on one device and then do lessons on another, there'll be a conflict in the data and you'll have to manually tell Anki to pick one over the other. (This may have been fixed since, of course.)
Interesting assessment. I use it almost daily, and I have no issue with it whatsoever (macOS <-> iOS <-> iPadOS). Sync works absolutely flawless. UI is not modern and it's a bit slow with Rosetta, but stable and fast enough to add and edit cards. Copy and paste of images works ... stats are okay. And, the most important part, the algorithm just works well for me.
tl;dr: I love it.
I suppose making it manual might not be ideal, but errors are very few and far between.
>general ui is dated
I don't really know what this means. Why change something that works just because it's stayed the same for a while?
Maybe I'm just tired of apps that get more and more bloated and slower year after year, while the ui gets changed to "simplify" things and become less usable as a result.
But anki has mostly stayed the same, it's fast, responsive, does what I need it to do, almost never crashes, etc. It's also been a daily routine to use for literally years, so it's sort of soothing. Yeah it has some rough edges, but they don't come up very often.
What I've noticed is that a lot of the power users and influencers are very much invested in Anki, which makes it difficult to get them to check out your alternative. And because these are the type of users that are promoting Anki, it has gained a lot of mindshare in this space.
That said, the people that have found my app are very grateful it exists as an alternative to Anki.
As far as the syncing, as another user said, it is actually quite difficult. There just are not a lot of options out there for this kind of use case. Anki's syncing is custom-built.
This seems to be the main thing that might differentiate this program from Anki (other than the specially made decks for particular subjects, which could also be a big thing). This seems to be done, based on the demo deck, with tagging? This being an important differentiating factor, if possible it might be good if the example decks had more detailed contextual links rather than having just "from textbook" (without indicating which textbook) or "from life".
If there was a more clean explanation of the differences between your software and other similar products it might be helpful.
Try creating a note, then highlighting a phrase from that note. You'll see that you have the ability to create a card from that phrase, which will then be attached to that note. The next time you pull up that note, you'll be able to see the card and vice-versa.
You can also see attached cards and notes side-by-side if you prefer working that way.
I'm really loving the proliferation of good new ideas for note-taking and memorization. I wish I had some of these tools when I was in school. Even if some of them are paid right now, it's only a matter of time before solid free and open-source competition emerges. I'd love to see some Anki-like tools for Athens [2].
[1] https://www.remnote.io/pricing/feature_chart [2] https://github.com/athensresearch/athens
TiddlyRemember is a plugin for TiddlyWiki with an associated plugin for Anki. TiddlyResearch is a version of TiddlyWiki that comes bundled with the TiddlyRemember TiddlyWiki plugin.
Like, the word 暗記 consists of two characters. I’d love to get my notes on each of those characters readily available and updateable when I review that word.
How do I run through the cards one by one (rather than view a whole deck)? How do I force it to re-show cards I've already solved today?
The thing I really like about Anki is I can create a separate profile to store cards related to say private confidential knowledge at workplace and I won't sync that profile so those cards stay just there encrypted on my office laptop. Hence offline storage is critical.
[1] https://www.idorecall.com/
(NB: I am not the creator, nor am I being paid to promote it. Just a regular user who found it particularly useful for my studies and personal knowledge.)
Google/Facebook/etc all provide amazing software to us for free. Because they had hundreds of millions raised from investors to give away value while the businesses figured out how to build a business.
Yes I agree that the unique value prop for this is a little muddy compared to other apps. But at the heart, if a student’s gpa is going to improve from use of this then yeh that’s clearly worth $5/mth, and should be a no brainer to purchase.
Revenue = Profit - Loss
It should be:
Revenue = Profit + Loss (as Profit = Revenue - Loss).
Otherwise, cool!
If not, then there are a dozen (also non-OSS) alternatives one could choose from.
And there are alternatives, but none of them work quite as well for the intended use case. It's possible to hack Anki for most of the functionality of 21st Night, but that gets tedious, especially for people who just want something that works out of the box.