Have review sort order "ascending intervals" also return cards by "ascending overdueness"

Hello,

I think it would be very helpful if the review sort order option “Ascending Intervals” also returned cards by ascending overdueness. This way, newer cards will always be returned first (even when there is a backlog), which is part of the reason I use the ascending intervals option in the first place. At the moment, I manually reschedule or suspend older cards, but an ascending overdueness option would really just perfect my workflow.

Some more details on how/why I think this would be helpful:

Summary

I tend to use Anki as a short to mid-term memorization tool, and in terms of my workflow, I pretty much always want to see newer cards before older ones, which is why the ascending intervals option is perfect for me (thank you to whoever decided to add that to the V3 scheduler, it’s incredible).

However, when life gets hectic and I step away from Anki, when I return I have a bit of a backlog. This is fine at first, but at higher intervals I start getting older cards before the newer ones, which are the priority for me. The bigger the backlog, the more of a problem this becomes. I usually have to search by interval and then manually reschedule or suspend older cards, so that I will instead see the newer cards that I am focused on. But if “ascending intervals” also sorted by ascending overdueness, then I could focus on the newer cards with higher priority, and have the added benefit of seeing the older cards if/when I have fully studied the newer cards.

To me, this kind of synergy between ascending intervals and ascending overdueness really makes sense, especially for learners who use Anki for short and mid-term learning, and learners who want to focus on newer cards. (But maybe it would also make sense as a separate option.)

If I’ve missed any settings I can change or something like that, please let me know. As a final word, thank you to the whole team who works on Anki, and whoever of you might read this—you guys do absolutely incredible work.

Would having a new option that reversed the order of the existing relative overdueness suffice?

Hmm, I haven’t used relative overdueness so I’m not sure, but I think that I would get a mixture of young and mature cards due on a particular day, if that’s correct?

Using the example given in the manual, where relative overdueness displays “a card with a current interval of 5 days overdue by 2 days … before a card with a current interval of 5 years overdue by a week”—I would definitely want to see the card with the five year interval last of all, so I’m not sure reversing the option would help. Essentially, the priority is to see the youngest cards first.

But actually, if an option could somehow combine increasing intervals and reversed relative overdueness (for each given interval), that seems functionally the same as to what I’m asking… I think.

You’re right, simply reversing it would not suffice. Could an ascending sort of interval*days overdue work?

Err, thought about this for a while, but I’ve just realized how long this response got. The short answer: no, I don’t think that would work (young overdue cards would appear after mature cards, more reasoning below if you’d like). I wonder how Anki currently sorts cards for each interval—randomly?


Summary

Had to think hard about this one. I did some simple calculations based off of hypothetical cards having intervals of one day, half a month, and a month; and being overdue by those same lengths. (Calculations in the spoilers.)

For interval * days overdue, I’m mainly dissatisfied with the sorting of young but overdue cards, which appear after mature cards. I also tried adding instead of multiplying, but the problem is pretty much the same.

interval * days overdue

1 * 0 = 0
15 * 0 = 0
30 * 0 = 0

1 * 15 = 15
1 * 30 = 30
15 * 15 = 225

15 * 30 = 450
30 * 15 = 450
30 * 30 = 900

interval + days overdue

1 + 0 = 1
15 + 0 = 15
1 + 15 = 16

15 + 15 = 30
30 + 0 = 30
1 + 30 = 31

15 + 30 = 45
30 + 15 = 45
30 + 30 = 60

The below is probably the simplest thing I could come up with in terms of what I was originally suggesting. In these cases, only if a card is egregiously overdue, will it appear with cards of another interval.

interval + days overdue / 100

1 + 0 / 100 = 1
1 + 15 / 100 = 1.15
1 + 30 / 100 = 1.3

15 + 0 / 100 = 15
15 + 15 / 100 = 15.15
15 + 30 / 100 = 15.3

30 + 0 / 100 = 30
30 + 15 / 100 = 30.15
30 + 30 / 100 = 30.3

A more precise version (without the arbitrary denominator) is:

interval + ( 1 - 1 / (days overdue + 1) )

1 + ( 1 - 1 / (0 + 1) ) = 1
1 + ( 1 - 1 / (15 + 1) ) = 1.9375
1 + ( 1 - 1 / (30 + 1) ) = 1.9677

15 + ( 1 - 1 / (0 + 1) ) = 15
15 + ( 1 - 1 / (15 + 1) ) = 15.9375
15 + ( 1 - 1 / (30 + 1) ) = 15.9677

30 + ( 1 - 1 / (0 + 1) ) = 30
30 + ( 1 - 1 / (15 + 1) ) = 30.9375
30 + ( 1 - 1 / (30 + 1) ) = 30.9677

Just for fun, one last example, where I tried combining your suggestion with the above. I started with the base interval, then added interval * days overdue as a fraction in order to give priority to the base interval, which resulted in the following:

interval + interval * days overdue / 100

1 + 1 * 0 / 100 = 1
1 + 1 * 15 / 100 = 1.15
1 + 1 * 30 / 100 = 1.3

15 + 15 * 0 / 100 = 15
15 + 15 * 15 / 100 = 17.25
15 + 15 * 30 / 100 = 19.5

30 + 30 * 0 / 100 = 30
30 + 30 * 15 / 100 = 34.5
30 + 30 * 30 / 100 = 39

As you can see, it prioritizes smaller intervals, while also leaving room for those cards which are most immediately due but have slightly bigger intervals, to appear before cards that have smaller intervals but are significantly overdue—but (hopefully) not too much room, which would defeat the purpose. I also wonder what a suitable, non-arbitrary denominator would be in this case. But, this may be overcomplicating things.

I mean, if we’re talking about completely different sort orders, my ideal would be something that

  1. displays all young cards before all mature cards, and
  2. displays the least overdue young cards before the more overdue young cards, but
  3. does the preceding without abandoning those cards at lower intervals which are significantly overdue, by prioritizing lower intervals in some way.

But the ascending interval sort is the current closest mode to this, aside from the behaviors which I’ve pointed out. It would come much closer if it sorted cards by ascending overdueness for each interval.

Thank you for the detailed thoughts.

If multiple cards have the same interval, they’re shown in a random order.

I went to log this issue on the issue tracker, and was going to title it “Consider a review sort option that prioritizes the most recent material”. Does that reflect what you’re trying to accomplish here? If so, could a simpler option that showed the most recently-added cards first work?

No problem. And thank you for taking the time to reply.

“A review sort option that prioritizes the most recent material” summarizes it really well, yes.

If by “recently-added,” you mean the date the card was created, I don’t think that would work (at least for me)—I tend to add cards in large batches. But if you mean something like the date of the first review, or the most recent graduation date, or something along those lines, I actually think that kind of thing would work splendidly, and would accomplish a lot of what I’m looking for.

The card-first-answered time can’t be computed efficiently, so that’s out I’m afraid. I’ve logged this on Consider a review sort order that prioritizes recent material · Issue #2570 · ankitects/anki · GitHub

Ack, unfortunate, I was liking the idea. Hopefully there’s something similar that will pop up. Well, I appreciate your time and patience. Many thanks!