< More Posts

Starting Anki

Published 31 October 2021 at Yours, Kewbish. 2394 words. Subscribe via RSS.


Introduction

Something that I’ve realized throughout my first month and a half at university, is the sheer volume of information and responsibility placed on a student’s shoulders. I love it. Being able to manage myself and have full(-ish) control of my courses, my performance, and the rest of my life has been great. I like being immersed in content that I truly don’t understand, and that challenges me a bit to actually understand and make sense of the material. However, there’s a balance: I like that there’s exciting and decently interesting information, but it’s, of course, annoying that there’s a lot of it. I’ve had to, and am still in the process of, figure out how to get through all of this material, and get through it decently well. My courses are very spread out in terms of specialization, and some are quite memorization focused. Improving and optimizing my recall and comprehension are now starting to become interests and priorities of mine.

Well, it’s Halloween, and I don’t know how spooky flashcards and memory management are, but here I am to discuss spaced repetition software and Anki in particular. (I won’t go into what these are right now, but go ahead and take a look at those resources if you’re interested.) I’ve been dabbling with a variation of SRS for a while now, and have recently even been working on a free-response version of the philosophy. I’ve tried both Quizlet and terminal UI versions of flashcard apps, like vocage and hascard. I’ve known about Anki for a long while now, but I’ve never really looked into it. I’d always discounted their SuperMemo2 algorithm, and thought its applications didn’t overlap with my needs.

However, what finally pushed me over the edge was taking ATSC113 at UBC. It’s a course about atmospheric sciences, and goes into the weather in relation to flying, snow sports, and sailing. It’s a course with lots of vocabulary and concepts that I’d never thought about or learned about before: plenty of memorization heavy work in areas that I’m completely unfamiliar with. I’d tried to review notes on a regular basis, and made my own flashcards in an attempt to test myself. However, I kept needing to schedule review sessions and assess my level of comprehension myself, which introduced a lot of mental friction. I knew that I was probably going to start looking for something new to try, so I decided to be proactive and take a look at Anki.

When I started looking into Anki, I was initially a bit turned away by the aesthetic. It’s very utilitarian, and I hadn’t really considered it as it looked so archaic and decidedly unaesthetic. Eventually, the power outweighed the cons. Anki abstracts away all the meta-work that I have to do, so I don’t have to worry about balancing my cards, or about the Leitner system. I figured out how to theme and make Anki look pretty and shiny anyways, so that’s fine. What matters is that I’ve decided that Anki is a good experiment to try, at least for the time being, and that it’s been quite comfortable and helpful to use.

In this post, I’d like to talk about a couple SRS-related things I’ve been thinking about at the moment. This might continue into a series as I continue to learn my way around Anki, but for now, here’re my thoughts.

The Glamourization of SRS

I’d like to inject a short interlude about SRS and the SRS community in general here - I think there’s a lot of comparisons to be drawn here between Anki and #roamcult, and maybe the knowledge management community too. There’s a lot of similarly passionate people, and people who’ve kind of attached a large part of their identity to the app. There’s absolutely nothing wrong with it - I guess people have an intrinsic desire to know and particularly magically know all the things they want to do. Anki is a bit of a stopgap to the be-all and end-all of understanding, and I think it has something to do with the idealization and romanticization of knowledge in general. Maybe this is because I’ve been spending a decent amount of time in circles where discussing knowledge management is a normal and interesting thing to do, but I see that people keep trying to reinvent themselves and keep searching for the one silver bullet to their knowledge needs. And I suppose I’ve succumbed to that a bit as well - look at my Zettelkasten series and the amount of time I spend tweaking my various configs in an attempt to become that student. However, I guess I’ll just leave this in here - SRS is lightly glamourized. There’s nothing wrong with that, but in my opinion, it is. Perhaps my opinion as to the magnitude of glorification will change as time goes on, and I, too, become An Anki User, but we’ll see.

A DIY Night Mode

Something interesting I’d like to also touch on is getting themes to work properly in Anki. One of the main issues I ran into when trying to set Anki up was getting my GTK theme to work with Anki night mode. I currently use Equilux as my GTK theme, which I really like for its flat grey design and nice integration with my boring, monochrome aesthetic. Anki, however, works on QT, which I’m not entirely familiar with, but it’s a different theming and development engine than GTK. Unfortunately, Anki night mode by default doesn’t take the GTK theme as a QT theme, so I apparently had to do some /etc/environment magic to set QT_QPA_PLATFORMTHEME to qt5ct and within that, gtk2. Spoiler alert: Don’t bother looking into that, because if your GTK theme is already a dark mode and you’d prefer a night mode within Anki, it won’t work out. It does work with light mode, but then the entire reviewing interface is by default light and blinding.

For example, below, that’s Anki with night mode enabled, and with the ‘wrong’ theme. Interface elements are light on dark as desired.

Figure 1. Anki: wrong GTK theme, right interface.

Figure 1. Anki: wrong GTK theme, right interface.

With night mode off (ignore that the Deck and New are white, I went and edited the CSS in /usr/lib/python3.9/site-packages/aqt/data/web/css/). Interface elements are dark on dark, but the correct theme applied.

Figure 2. Anki: right GTK theme, wrong interface.

Figure 2. Anki: right GTK theme, wrong interface.

What happens is that Anki uses their own QT theme when night mode is toggled, since “not all themes will work correctly with dark colors”. Entirely fair, but that meant I had to do some serious CSS styling edits in order to simulate night mode within ‘light mode’ Anki. To save you a lot of work, my edits to apply night mode colours (lightly edited to use Equilux colours where appropriate) to light mode Anki are available on my dotfiles, at kewbish/dotfiles. The key directories to look in are /usr/lib/python3.9/site-packages/aqt/data/web/, and ~/.local/share/Anki2/addons21, if you want to edit any addons. This might differ due to installation method (I used anki-bin from the AUR), but this is what worked for me.

A more universal fix is creating an addon in the ~/.local/share/Anki2/addons21 directory, which is as easy as making a directory and creating an __init__.py. Alternatively, edit an existing addon. As long as you include:

from aqt import mw
from PyQt5.Qt import QStyleFactory

mw.app.setStyle(QStyleFactory.create("gtk2"))

somewhere, you’ll correctly force the GTK theme into any theme of Anki. This way, you can switch to dark mode within the Anki settings, as well as using a proper GTK theme that integrates with the rest of your desktop environment.

My Settings

I don’t think I really did much research as to what settings were idea for use with Anki - my config at the moment is some mix of this Anki Leitner setup and the Lowkey Anki setup. The two things I knew going into configuration was that I somewhat unconventionally wanted to partially integrate the Leitner system in my learning steps, and that I wanted a Quizlet-like pass / fail option. Yes, people have gone on about how you should just trust the algorithm (à la the natural recursion), and how it’s not really that much cognitive friction and that it really helps with the ease settings and how cards are tuned to your level of memory. But I don’t like it - I now have to build a mental model of what differentiates hard from good cards, and likewise for good / easy, again / hard. This might be something I revisit later on in my SRS journey, but I’d rather keep things simple and close to the softwares I’ve used in the past for now.

I have my settings at 20 new cards a day - a bit much for now, but I’d like to quickly get back up to pace with some of my class cards. I’ve set my learning steps to 1d 2d 4d 8d 16d 32d, which might seem inordinately long for the quick 5m 25m 1440m people, but I’ve found the Leitner system works quite well for me, so I kept it. My graduating and easy intervals are both at 32d, and my insertion order’s random. Similarly to the ‘harsh’ Leitner system, I have my lapses at 1d with a minimum interval of 1d. My leech threshold’s at 8, and I’ve set this to tag only. It’ll be some time before I even get all my cards out of learning, but I hope that this’ll work well enough for me. I bury related siblings and review siblings, which reduces redundant review time. My maximum interval’s at 100 years, which is a bit long now that I think about it, but oh well. My starting ease is where it starts to get interesting - I’ve set it to 2.50, with my easy bonus, interval modifier, and hard interval all at 1.00. This essentially disables the easy and hard buttons, which is nice, since I can’t see them visually anyway.

Speaking of the pass / fail setup proposed by Refold’s Lowkey Anki, I use this Pass Fail addon, updated for use with Anki 2.1. I resonate with the goals of the addon, and so far, I’d say I definitely recommend it. Keep in mind that this all is just a snapshot for future reference, and that I’m still very much tweaking everything around.

Conclusion

With Anki, I’m looking forward to learning more fluently, and taking away the friction of review. I like that I have one place to return to and one place to manage all the things I should review now, and that that one place is something I can turn to daily. I think this daily habit, while much less focused than specific sprints every other couple days, is more sustainable in maintaining and always brushing up on knowledge. I’m still figuring out how to best use Anki to recall and more deeply learn new information. I’d like to find, for example, a way to review cards in advance without them piling up in the future. I know I can custom study and toggle off the ’re-date cards' or whatever, but I think my purpose right now is trying to get ahead of reviews, so I don’t think there’s really a way to review without pushing more cards together in the future. As well, I’d like to learn the card and note management windows better. As of now, I’ve just figured out how to do what I need to do (which, prior to Edit Field During Review (Cloze) was just editing cards and tagging them), and haven’t explored much else. Maybe that’s alright - maybe I shouldn’t overcomplicate things for myself before I’ve even gotten started.

In other news, I’m currently in the process of overly studying for midterm wave number two. I’m glad that I made it through the first wave, and while I’m not too ecstatic about some of what I’ve been able to do, I’ve learned a couple lessons that I’ll try to apply in the future. It is what it is. As well, I’ve been meaning to start looking into internships and applying to some, but I feel like I’ve hit a wall. The imposter syndrome, particularly with the interview side of things, is definitely kicking in. I don’t know how I feel describing myself as a ‘web developer’ while looking at some of those DSA questions, or even web framework questions, and not really having a clue with how to approach them. But it’s something that I’ve also decided that I need to work on, so I’m looking into that CS handbook1 and trying to figure out a way to systematically learn and improve.

As well, I’ve been working through Full Stack Open, which is an open source course about web development, and React / Typescript / Express / MongoDB in particular. I’ve realized that I’ve kind of let my Vue experience go a bit, and that, looking through interviews and such, people tend to look for React more. I’ve never really systematically learned any part of web development, and I think FSO has been a good introduction to this whole curriculum thing. It also helps that Typescript and the React design patterns are topics that I’ve never really covered before. Part of what makes me demotivated and pushes me to stop working on something is that I feel that I know half of whatever a course is teaching, but I don’t know the other half: I end up skimming most of the material, and retain not a lot of new information. I’m on the third module at the moment, and while I don’t have a lot of time to tackle their exercises, I do really enjoy the examples they’ve set up and how the problems apply the material super well. I’ve found working through the course really informative and honestly fun, and would recommend the course so far. I’m excited to see what the rest of the course ends up being like, and hopefully, I’ll report back with more progress soon.


  1. Ironically, I very vividly remember making fun of my friends for printing out their own copy and putting it together into a binder and reading it every chance they got in class. At this point, I’ve become that kid, but hey, maybe I should have listened to their CS fanboy ramblings the first time around. ↩︎

- Yours, Kewbish


< More Posts