Gap Year Updates #2: Introducing Flashcard Adder, and Thoughts on Notes

 

My gap year has allowed me to take a step back and experiment with growing habits, routines, and systems that have previously taken a backseat in favor of more ‘urgent’ tasks. These longer-term efforts have improved my current quality of life, and I hope will ease my transition into college life as well when the time comes. My last post describes improvements to my task management and habit tracking systems, and I’ve simplified my time-tracking in Toggl to work with principles formulated during my hackathon project Mindful.ly. I’ve also reworked my reading and file storage systems, reducing the tendency for a file to play hide-and-seek with me the moment I need them. Outside the realm of productivity, I’ve also learned to cook more foods, begun exercising every day, and found ways to be more social during this era of limited in-person interaction. Trickiest to refine, however, has been the interrelated tasks of note-taking and information retention.

A Book a Week, but Memory Leaks

I’ve read many new books in the past few years influential in shaping my thoughts1—at least while I was reading them. A few months after finishing a book, I typically remember little beyond the gist and at most a few specific takeaways2. When I wanted to reference Richard Rodriguez’s Hunger of Memory for a college essay, I found myself rereading the whole book. While I believe rereading can be an excellent use of time3, it’s not the most efficient method, and I’ve often wished to develop a better system for capturing key ideas and my thoughts about them. Unfortunately, my previous attempts at a ‘better’ system have always failed because I’ve habitually neglected maintainability. With time, I regress to highlights and brief notes within the book that I rarely revisit4.

Note-taking: What’s Missing?

Spurred on by discussion of note-taking in CGPGrey and Myke Hurley’s Cortex podcast, I’ve read Dr. Sonke Ahrens’ How To Take Smart Notes and have begun a zettelkasten system in Bear. I’ve found the guidelines laid out by Dr. Ahrens useful and this iteration of my notes system has been the best I’ve ever had5, but I’ve still had some problems with maintainability.

I’m currently retooling this system and catching up on a large pile of unsorted “temporary” notes. Part of this process has been identifying what notes have seemed out-of-place in the current iteration of my system, and what roadblocks are causing this build-up of notes in my inbox. Some problems are just related to how I’ve structured my notes in Bear, and something I might elaborate on in the future is the idea of “snippet notes,” which I’ve been storing haphazardly or not at all 6. The main problem I’ve found though is that note-taking doesn’t improve my memory, and while the idea of building a second brain is excellent, I still find it easier to see connections between ideas when my first brain remembers more.

I’ve found a zettelkasten-style note-system reduces the friction involved in getting started with writing and I like how it helps me remember how I’ve formulated certain thoughts, but the notes themselves have been no more helpful than highlights for retaining knowledge about the plethora of concepts, facts, and vocabulary introduced when reading informational texts. A zettelkasten is great for capturing and relating nuggets of original or captured ideas synthesizable into longer thoughts 7, but for the task of gaining an initial knowledge base to work from, flashcards seem superior.

Flashcards: A Do-Over

I recently began revisiting the idea of employing spaced repetition and flashcards in my own life. While I maintained a 500+ day-long review streak in the flashcard app Anki to study for quizbowl in my sophomore and junior years of high school, I burnt out in the summer of 2019 and studied only intermittently in my senior year. That summer, I decided instead to work on improving flashcards and spaced repetition algorithms through machine learning, collaborating with other researchers at the University of Maryland to create the flashcard app KAR³L for studying trivia. We’ve recently released a progress update from our first phase of experimentation and plan to transition into a new phase soon. So if you’re interested in both helping our research and studying for Jeopardy!, quizbowl, or other knowledge-based tournaments, now is a good time to try out KAR³L and be notified when we roll out our upcoming updates8.

I began using flashcards again personally after realizing how they could complement note-taking. My largest problem has been remembering old highlighted thoughts and ideas, and spaced repetition flashcards offer a potentially maintainable solution for resurfacing them. After deleting my old 20K+ flashcard collection in Anki a few months ago 9, I’ve begun using Anki to store key information from content I consume 10. In particular, I’ve been creating flashcards from textbooks like Matthew Salagnik’s Bit By Bit, Goodfellow et. al’s Deep Learning, Annette Lareau’s Unequal Childhoods, as well as various papers and articles. I’ve been using flashcards to remember terms and concepts that could come in handy in the future. Recently, I’ve also begun creating ‘quote’ flashcards, which works similarly to Readwise, resurfacing content that previously would have highlighted and forgotten. Both of these flashcard types provide our brains more material to work with when writing, facilitating the process of discovering connections and references in both our notes and essays.

Flashcard Adder

While I enjoy reviewing flashcards in the AnkiMobile iOS app, I don’t like adding new flashcards with it. I miss features available in desktop Anki through add-ons like Frozen Fields and GODMODE: faster shortcuts and cloze switching. I usually find AnkiMobile’s preservation of formatting more a hindrance than a help, and copying text from pdfs has always been tedious due to the weird formatting issues frequently present. I also want to quickly add cards through an action extension and have a place to park material for later use. As I create most flashcards on my iPad, where I do most of my reading, I’ve chosen to address my needs by taking advantage of AnkiMobile’s URL scheme support to develop an app specifically for creating flashcards. This project has taken longer than expected, but the flexibility afforded by my gap year has helped me see it through to release on the App Store (for free!).

Features

I’ve recorded a playlist of tutorials demonstrating various features in Flashcard Adder available here. Here’s a quick list of certain useful features available in Flashcard Adder not currently available in AnkiMobile, with some associated video tutorial links.

  • Action Extension: Quickly add flashcards or save work in progress flashcards from within other apps.
  • Sticky Fields: Easily preserve or clear fields after adding a card (persists to action extension as well).
  • Automatic Note Type Switching: Quickly transition between your default ‘normal’ note and your default cloze note types.
  • Text Clean-Up: Pasting text from PDFs often creates errant new lines, which can be quickly cleaned up in Flashcard Adder through a button tap or keyboard shortcut
  • Advanced Cloze Options: Flashcard Adder provides certain convenience buttons for creating different types of clozes (e.g sequential, repetitive, hint) and subsequently switches note type for you. The app also provides a dedicated add cloze view for quickly editing cloze text, hint, and number before creation.
  • Persistent Reference Space: Park useful reference material in this dedicated field not tied to a specific flashcard.

Drawbacks vs. AnkiMobile

I’m not aiming to replace AnkiMobile’s built-in Add Note screen for all use-cases with this app. Instead, I optimize for features that make creating flashcards on mobile easier for myself, and hopefully others as well. Features in the built-in adder that will likely never be supported in Flashcard Adder include attributed text, images/drawings/audio, and tags11. But while lacking these features cuts down on the possible types of flashcards, Flashcard Adder facilitates more maintainable workflows for adding flashcards through features like the action extension and dynamic note type switching.

What I learned

During the first half of quarantine, I brushed up on Swift fundamentals by going through Angela Yu’s Udemy iOS development source and reading Paul Hudson’s Swift Design Patterns and Pro Swift books. I finally got to put some of what I learned to practice with this app, and I also learned more about generics, building UI programmatically, and working with the new APIs for UICollectionView. Unlike with my first published app, QuizDB Mobile, I was more conscious of app architecture and strived to avoid certain mistakes that made that previous app harder to maintain. Despite this, the structure of Flashcard Adder is not pristine and I’ve likely still made some rookie mistakes. I’d love to receive comments from more experienced iOS app developers about how I can improve this code.

Open-Sourced Code

Source code for Flashcard Adder can be found on Github. If you find this project interesting, please give it a star!

  1. Somewhat surprisingly, given the general ineffectiveness I’ve come to associate with Youtube ‘productivity’ videos, John Fish’s Reading a Book a Week is Changing My Life video was highly influential in pushing me to develop this habit. 

  2. Andy Matuschak wrote a long essay about this issue titled Why books don’t work that I remember being interesting. It’s been a while since I read this and I didn’t take notes so unfortunately, I don’t remember much anymore (heh), but I believe Matuschak proposes developing new mediums for communication. Like what Cal Newport notes about personal task management in The Rise and Fall of Getting Things Done, the systems we develop are only bandaged fixes for wider structural problems. But while widespread change is ideal, workarounds like the flashcard system outlined may just be the best we can do for now. 

  3. I’ve been reliving my childhood through John Flanagan’s Ranger’s Apprentice series these past few weeks. 

  4. The lack of a standard, open annotation standard in the epub ebook format doesn’t help either. Marvin 3 began crashing after I updated to iPadOS 14.2, and I spent hours exporting my annotations out of the app after rolling back the update. Even then, I was only able to export to CSV format and Marvin 3 on my iPhone, as no other epub reader would be able to display these annotations inside the ebook anymore. Given the nature of my old highlights, I’m uncertain if these out-of-context highlights would even make sense at all. 

  5. Perhaps this doesn’t necessarily mean much, since all my previous ‘systems’ have been haphazardly unorganized, intermittently used, and spread out across an eclectic collection of apps. 

  6. To briefly expand on the idea of snippet notes, think of code snippets and text that might go into a program like TextExpander. These notes store fully developed sentences/paragraphs that I feel may have the potential to be recycled in a future use with at most slight variations. In my current makeshift-system in Bear, I’ve set up a certain repository for application essays I’ve written and have begun storing variations of my responses to an answer in the same note. 

  7. Dr. Ahrens advises in Chapter 5 of How to Take Smart Notes that one should be mindful of how your notes can be used in the future for writing. 

  8. You can follow development progress on our Github repository

  9. While the principles of the KAR³L scheduler should work with language learning, there are some unique considerations we haven’t figured out yet. KAR³L is currently evaluating the performance of different schedulers in the area of trivia and therefore using it for my personal aims risks diluting our current research focus. For this reason and a few others, I elected to stick with Anki instead of KAR³L, even though I believe our scheduling algorithm is superior. 

  10. Unrelated to note-taking, I’ve also started using an amazing Chinese flashcard deck made by Timo Horstschafer to finally learn how to read Chinese. 

  11. To me, tags are generally an unnecessary distraction. I used to religiously tag almost every note before I realized how doing so slowed me down without providing much benefit since I rarely used them afterward. Perhaps I’ll change my stance on tags in the future, but that’s why I haven’t added support yet. Implementing a simple tag field shouldn’t be that difficult though, and if someone wants to submit a pull request doing so, I’m happy to include it.