Drop #363 (2023-10-30): I Have No Memory Of This Place

Anki; Other Flashcard Systems; General Flashcard Tips

Perhaps Gandalf would have done better in Moria if he had used flashcards to memorize which way to go at any given junction.

Fundamentally, flashcards are…cards. Each card in a deck has a question on one side and the answer on the flip side. They’re a classic tool for memorizing all kinds of information, from vocabulary, to historical dates, to formulas, or anything else that fits the Q&A format.

Physical flashcards have that tactile feel, and there’s something about the act of writing and organizing them that really cements the information in your brain. But, they can be a bit of a hassle if you’ve got a ton of them. On the other hand, digital flashcards are super convenient and easy to manage, especially when you’re dealing with a large volume of information. Plus, many digital flashcard systems have built-in algorithms for spaced repetition, which is a proven technique for efficient learning.

So today we feature one major player in the FOSS flashcard ecosystem, present a few alternatives, and close with some tips on making the most of flashcards.

No “AI summary” today, as the way this edition came together did not lend itself to the “three resources link summary” format.

Anki

Anki (GH) is a pretty spiffy Rust-based FOSS flashcard program designed to make remembering things easy. It uses active recall testing and spaced repetition, techniques from cognitive science for memorization. This program is more efficient than traditional study methods, enabling us humans to either greatly decrease our time spent studying or greatly increase the amount we learn.

Anki uses a file format with the .apkg extension for its flashcard decks. They contain HTML text to be loaded and displayed in the app and can additionally have images and sounds for visual and audible learning. The card styling is done using CSS. These files are super hackable. They’re essentially ZIP archives with media, a JSON index for the media and a SQLite database:

$ sqlite3 collection.anki2
SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
sqlite> .tables
cards   col     graves  notes   revlog
sqlite> .schema cards
CREATE TABLE cards (
    id              integer primary key,   /* 0 */
    nid             integer not null,      /* 1 */
    did             integer not null,      /* 2 */
    ord             integer not null,      /* 3 */
    mod             integer not null,      /* 4 */
    usn             integer not null,      /* 5 */
    type            integer not null,      /* 6 */
    queue           integer not null,      /* 7 */
    due             integer not null,      /* 8 */
    ivl             integer not null,      /* 9 */
    factor          integer not null,      /* 10 */
    reps            integer not null,      /* 11 */
    lapses          integer not null,      /* 12 */
    left            integer not null,      /* 13 */
    odue            integer not null,      /* 14 */
    odid            integer not null,      /* 15 */
    flags           integer not null,      /* 16 */
    data            text not null          /* 17 */
);
CREATE INDEX ix_cards_usn on cards (usn);
CREATE INDEX ix_cards_nid on cards (nid);
CREATE INDEX ix_cards_sched on cards (did, queue, due);

This means you can create flashcard decks in pretty much every programming language.

If you just want to use the tool, it works everywhere: Windows, macOS, Linux, mobile, and web.

Of course there’s a fun awesome list for it, where you can find all sorts of tools, utilities, and places to find apkg files, like this one for Stanford’s CS324 course on LLMs and security/privacy from Mark Nagelberg.

Other Flashcard Systems

It’s difficult to further wax poetic on other flashcard tools, since they’re all very similar to each other. Rather than blather for blather’s sake, I’ll drop some neat Anki alternatives, some of which are very purpose-built.

  • Create Flashcards of Terms and Definitions • flashr: this is a neat package by Jeffrey Stevens. It provides functions for creating flashcard decks of terms and definitions. This package creates HTML slides using RevealJS that can be viewed in a browser. You can create flashcards from either existing built-in decks or create their own from CSV files or vectors of function names. It has some pre-built R-centric decks.

  • Mochi is a freemium macOS and/or web app with some FOSS bits. It uses Markdown for decks and is very “pretty” (the section header is of Mochi). First Impressions of Mochi has a good overview of it.

  • Vocage is a minimal terminal-based flashcard program for learning vocabulary and other topics. It, too, uses a spaced repetition algorithm to present cards, showing well-known words less frequently and struggling words more. Users can quickly move cards between decks with different intervals. Comments start with # to disable cards without deleting them. It focuses on simplicity, with options to show cards individually or in minimal mode for scripting. And, it can import data files and features keyboard shortcuts for navigation, saving, and toggling presentation settings.

  • Mnemosyne is yet-another flashcard program with a pretty simple interface. It is customizable through plugins, and has a scripting API. The program supports various media types, including pictures, sounds, and movies, and can integrate with Latex for rendering formulas. It has full support for Unicode, Google Translate, and Google Text-to-Speech. Cards can be organized with tags, and Mnemosyne offers a few different learning modes. It also provides statistics to track learning progress and enables focusing on specific subsets of cards.

    Share

General Flashcard Tips

  1. Study The Source Material First: Flashcards are reinforcement tools, not a primary source of learning things. You’ll get the best results if you research first, then reinforce.

  2. Be Consistent: The single most important thing when designing a flashcard deck is to be consistent. Regularly reviewing your flashcards will help reinforce the information in your memory.

  3. Cards Should Be Challenging, But Not Impossible: Don’t make cards too easy or difficult. The goal is to challenge yourself, but not to the point of frustration.

  4. Combine Flashcard Tools With Other Resources: While your fav tool may be powerful, it should be used in conjunction with other study resources. This can help you connect concepts from separate cards and avoid memorizing cards without understanding them.

  5. Create Redundant Cards for Difficult Facts: For difficult facts, try to create redundant cards that prompt you on the information from multiple different angles. This can help reinforce the information in your memory.

  6. Use Flashcards During Commutes/Mindless Tasks: This can help you make the most of your time and get through a lot of cards. (It should go without saying that I’m assuming “commute” == “public transport”, but noting that just in case y’all thought I was trying to get you to wreck your vehicles.)

  7. Keep Cards Short and Simple: Short and simple cards are easier to remember. Try to keep the information on each card concise and to the point.

  8. Add Sources to Cards: This can help you remember where the information came from and provide a reference for further study.

  9. Tag/Mark All Duplicates and Revise Them as Soon as Possible: This can help you avoid studying the same information multiple times.

    Share

FIN

Then again, you could just drop $2.99 on a pack of 3x5s and call it a day ☮️

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.