kebsup
Including relevant columns in the index can massively improve the performance, because postgres does not need to read the randomly sorted tuple in the original table.
The web app is here: https://app.vocabuo.com (completely free) And the links for Android/iOS builds are here: https://vocabuo.com (soft paywall)
To an untrained eye who does not care about dropping a few frames, the web version is almost indistinguishable from the "native" build. Especially if you add it to homescreen from safari to hide the navigation bar.
The main difference between my app and anki/other generic flashcard apps is that it is for vocabulary only, which allows me to add features specific for language learning.
For example, you can set it up such that each word shows up with a different sentence and image each time you see it.
Learn languages with spaced-repetition flashcards from content such as ebooks, websites and videos.
Two main differences between this and other Anki-like apps: 1) The words you learn are from YT videos, websites and ebooks you import in the app. 2) The flashcards are optimized specifically for learning vocabulary - cards automatically get audio, images, multiple sentence examples, words definitions etc. It can also create fully monolingual flashcards with just definitions or the words in dialogs.
My biggest flex is that I have users who have done more swipes than me (over 100,000).
ios: https://apps.apple.com/us/app/vocabulary-flashcards-vocabuo/... android: https://play.google.com/store/apps/details?id=world.petr.vok...
I'm taking this to extreme with Vocabuo[1] for language learning. For a single word, I have cloze cards, reverse cloze, definition cards, dialogs, audio and a few more.
At some point, I'd like to take the card type into account when calculating the next repetition stage, but that's a bit far into the future.
So optimizing the algorithm such that every card comes at the exact right moment might cause all cards to feel too hard or too easy. I think having a mix of difficult and easy cards is actually a feature, not a bug.
App with dynamic/flexible spaced repetition flashcards for language learning.
Recently I've added dialog & definition cards, so I can learn German from short dialogs with images and audio.
My second reason is that I'm worried about the complexity - both from non-nerdy users perspective and me having to debug it.
a) better quality lectures were available online - it's much easier to learn linear algebra from top MIT Professor than a random one at my university
b) the text books were absolutely terrible compared to what was available online
I can understand that 20 years ago people were captivated with the physical lectures because it was the only way. Today however, professors are competing with 3blue1brown, Khan academy, pre recorded lectures from top universities and many more great resources. Standing in front of a blackboard slowly going through an unintuitive math proof is just not going to cut it and people will get bored.
The idea is to have srs flashcards, like Anki, but without the pain of creating example sentences, translations, images and audio.
As a bonus, I've added the option to add vocabulary from ebooks, YouTube videos and websites.
An example would be: you have a NxM grid. How many shapes of XYZ shape can you fit on it?
However, thinking of the transformer video games, AI can be trained to have a good representation of 2D/3D worlds. I wonder how it can be combined so that this graphical representation is used to compute text output.
My app [1] is basically a combination of SRS flashcards with an ebook/YouTube/Website reader. Unlike Anki though, AI creates example sentences, definitions, images and audio.
I find it interesting that you want to get inspired by Duolingo. My approach is to have the most efficient grind possible - no gamification. I've found Duolingo was wasting so much of my time with exercises that did not really teach me anything and took a long time to complete + the XP points/levels etc. were quite distracting.
It's better to check A x C before A x B if you know that A x C has less matching rows, because the final loop will be shorter.
Gifmemes - you can buy a 10 USD watermark removal Vocabuo - freemium and you can buy classic Appstore/Playstore subscription to unlock the other 80% of the features
https://gifmemes.io, haven't touched the code for years, makes between 100-300$ a month, depending on the season.
https://vocabuo.com - a side project I hope to turn into a business, so I work on it around two days a week, made around $3.5k in revenue last month but most of it went back into ads.