For the past few months I’ve been using a javascript timer on the front of each card, and rating cards as “hard” if the timer runs out, and I’ve found it pretty helpful. I would really like to try and automate this process—so that, for instance, when I press “enter” to rate the card (or swipe right on mobile), the card is rated based on how long I took to flip it—say, “hard” if over seven seconds, “easy” if less than a second, “good” if between one and seven seconds. Obviously, I can use the buttons—but the simplification of four buttons to two (or, on mobile, buttons and swipes to just swipes) would really streamline the review process. I would only have to worry about right or wrong (pass or fail), and could let Anki handle the ease.
It may already be possible to implement this through custom scheduling, but I have very limited coding experience, and from looking at the manual and snooping around the forum, I don’t think it currently is. (But if it is, please let me know! And if you would be so kind, maybe point me toward the functions/variables/objects(?) I would need to use to make it work!)
Other thoughts
I have tried implementing this myself in order to test it out through a desktop add-on. I found this add-on which changes the default ease based on time, but unfortunately it also auto-rates the card, and I was unable to reverse engineer it for my purposes. (In the end, a desktop add-on isn’t ideal anyway, because I do a significant amount of reviews on mobile.)
But from my experience with the timer, I genuinely think it’s helping—I don’t have to ask myself “Was that hard?” when I rate a card, but instead just “Did the timer run out?”, which has an easy-to-see visual representation. I almost never used the hard button before—I found that stopping and thinking about ease just interrupted my flow. But now that I have the timer, I find the hard button to be fairly effective in dealing with difficult cards. One downside is that I can see the intervals going down—but when I finally get the hang of a difficult card and answer it quickly, I forget to press the “easy” button (I haven’t really used that in the past, either), and the ease ends up staying the same.
I do like the buttons, by the way—if you were to get distracted while reviewing, for instance, you would still need them—but a way to automatically select ease would definitely speed things up, and hopefully increase focus as well.
Bonus: Code for the timer
If you’ve been looking for a Life Drain-esque timer that also works on mobile, here’s the code I’ve been using. It’s a red horizontal bar across the top of your card. It times how long you spend on the front side, and pauses when you flip the card to the back, so you can see how much time it took you to answer. It’s also a good visual indicator for when it’s time to move on from a card, without forcing you ahead in case the answer is on the tip of your tongue.
Front Template:
<div class="time-bar"></div>
[Your Card Info Here]
<script>
var ms = Date.now();
sessionStorage.setItem("time", ms);
</script>
Back Template:
<div class="time-bar"></div>
[Your Card Info Here]
<style id="timer"></style>
<script>
var end = Date.now();
var start = sessionStorage.getItem("time");
var timeElapsed = (end - start) / 1000;
var percentElapsed = timeElapsed / 7;
var barPercent = 1 - percentElapsed;
if (barPercent <= 0) {
document.getElementById("timer").innerHTML = ".time-bar {height: 5px; background: linear-gradient(to bottom, red, #900); animation-play-state: paused; transform: scaleX(0); transform-origin: left center;}";
}
if (barPercent > 0) {
document.getElementById("timer").innerHTML = ".time-bar {height: 5px; background: linear-gradient(to bottom, red, #900); animation-play-state: paused; transform: scaleX(" + barPercent + "); transform-origin: left center;}";
}
</script>
Styling:
.time-bar {
height: 5px;
background: linear-gradient(to bottom, red, #900);
animation: timebar 7s linear forwards;
transform-origin: left center;
}
@keyframes timebar {
to {
transform: scaleX(0);
}
}
Note that if you want to change the timer duration, in the styling section you will need to change the 7
in the line animation: timebar 7s linear forwards;
to your desired number of seconds; on the back template, you will also need to change the last number in the line var percentElapsed = timeElapsed / 7;
to that same number. To be honest, I don’t really know how this works because I made it through trial and error and stuff I found online, so I can’t help you if you have problems/want certain things changed. There are almost definitely better ways to implement this, but all I can say is that it works for me on both Anki desktop (Mac) and Anki mobile.