jiacheng said:
You might have a point that facts retained for such a long interval may not need to be reiviewed anymore, and culling cards with a maximum score would be reasonable default behavior. However, by setting a maximum score, you are actually creating the opposiite effect by default. A card which reaches 204800 would continue to be reviewed once every 6 years. But if the score were not limited, then reviewing a card once every ~12 or ~24 years seems much preferable to reviewing it once every 6.
By limiting the score, you are forcing the user's hand to either add a filter, or continuing to review those cards once every 6 years unnecessarily by default. I think that the simplest and most intuitive way to achieve a cut off and take the card out of the pool completley, would be to have pleco set a default score filter. That way, users could raise, lower or remove it as they see fit. And if there is a need to set a maximum score, that can still be done using the "maximum score" prameter in the automatic algorithm.
The number of complaints we've gotten about "limit unlearned" being on by default (people don't understand why they're only seeing 200 cards) leaves me extremely wary of adding any more default filters - extending the intervals to a ridiculous duration probably would make more sense than that.
jiacheng said:
By the way, Is there some sort of technical reason that the maximum score in the db is 204800? seems odd that it's not an integer power of 2.
No hard technical reason, just some fudging to deal with integer overflow - there are a couple of places in our code (mostly in Frequency-adjusted card selection) where we have to add up all of the scores of all of the cards eligible to be included in a test, and since we're storing that value in an unsigned 32-bit integer, a maximum value of 204800 means that we can safely handle 20971 cards without any overflow. 20,000 is about the largest deck we've ever seen, and even if a few people's decks get bigger it's very unlikely that all of their cards would have maxed-out scores.
The choice of 204800 specifically was because it's a power-of-2 multiple of the default score of 100, but a flat 200,000 would work just as well - we just wanted something of around that order of magnitude. There was no particular reason other than tidiness to pick something that was an even power of 2, and 262144 felt a little high, 131072 a little low.
We would have just designed the system with 64-bit integers originally, but runtime support for those on Palm OS was
extremely buggy; that's no longer an issue on iOS and Android, but it's still some very dicey code rewriting so it doesn't really make sense to do it until we're already rewriting that part of our flashcard system for some other reason.
HW60 said:
If you change points/day in the Tweaks section of advanced settings to 10 instead of the default value of 100, you should be able to extend the time until a card is presented again (at maximum score) from 6 to 60 years - if that does not help, maybe a value of 5 points/ day does.
That's what I'd recommend for now - I'm pretty sure that by 2072 we'll have switched everything over to 64-bit
