Reflections On A Year of Anki, Knowledge Management, Emacs & More
Today marks my 1-year streak with Anki. I want to share my thoughts on how I've been learning for the past 2+ years.
I hope for this post to serve as an inspiration for others and a way for me to reflect on all I've worked on in terms of meta-work. The target audience are people interested in learning and a younger me.
Background
Who am I?
I'm a data analyst with a Finance background. I have been interested in knowledge management and learning for a couple of years now.
I find myself learning about many topics in multiple fields such as computer science, finance, business and more. I wanted tools and frameworks to help me organize my learning and remember what I learn.
I sought a tool I can craft and morph to my liking. Emacs was the answer for that.
I sought a program that freed me from all the problems with SuperMemo. Anki was the answer for that.
I also sought frameworks that I could use to learn and I've found myself developing my own from the many ideas out there such as Zettelkasten and PARA.
Overview
How do I manage learning?
I mostly use a curriculum style approach to my learning. Whereby I declare a set of materials to learn over a 3-month (quarter) period and get to studying.
After choosing the material I get to studying along my college study. Going through various process which I'll describe below.
One problem I faced with a curriculum style are the interesting possible roads internet surfing shows me, looking back on my SuperMemo days I created a simple replica of incremental reading in Emacs-Lisp.
I block out time for learning. Either specific material (e.g. Read chapter 5 of Clojure for the Brave and True), subject such as Clojure or incremental reading.
Planned improvements
While I've been collecting many articles I have not blocked out time for reading them. I call this type of reading supplementary reading as it aids in my general learning but isn't a focus.
Tools
Anki & ankifier.el
Anki is a free and open-source flashcard program using spaced repetition. Mainly used by medical students and language learners.
Spaced repetition is "an evidence-based learning technique that is usually performed with flashcards. Newly introduced and more difficult flashcards are shown more frequently, while older and less difficult flashcards are shown less frequently in order to exploit the psychological spacing effect".
A lot of deserved praise goes to Anki, its developers and the community. With Anki I'm able to memorize many facts from formulas used in Financial Statement Analysis to Mathematics concepts from a course (Math For Economists) I watched a year ago.
What I Use Anki For
Programming
I have used Anki to learn Java, R and do a course in Algorithms. Although most of the Java cards are now suspended because I'm not actively working with Java anymore.
Poetry
Using Lyrics/Poetry Cloze Generator which is "An add-on for Anki for studying long passages of verbatim text, like poetry or song lyrics." I memorize poems for fun. Both in Arabic and English.
Finance
Financial terms, ratio, metrics and what they mean, how to measure them all have their detailed cards. This helps me in reading reports and moving into intermediate finance material (currently skimming Natenberg's "Option Volatility and Pricing").
Mathematic
Probably my favorite yet least studied topic, I'm learning about set theory and incrementally reading Hammack's "Book of Proof". I have exercises and proofs that I review. I use a notebook to answer and then reveal the answer.
College
I can attribute me being the top student in my class for the past 3 years to Anki, not much more can be said since the material is taught in Arabic.
Gregg shorthand
Probably the most interesting thing I'm memorizing is Gregg shorthand which is a form of shorthand that was invented by John Robert Gregg in 1888. Like cursive longhand, it is completely based on elliptical figures and lines that bisect them.
I use the reverse card type to and use the image of a word as the prompt and the word as the answer and because this is a reverse I also get the word as a prompt which I answer by writing the word on a notebook I keep in front of me.
What's ankifier.el?
It's an elisp package that aids in creating flashcards that get imported into
Anki using the anki-editor
package.
The basics is that the following form turns into an Anki card
Context: Question? Answer. Linux: What command lists directory contents? ~ls~.
Why create it?
I wanted to reduce the time it takes to process notes into flashcards, I wanted as little friction as possible between my notes and Anki, and figured I could use Anki only to review instead of create notes, this way I can leverage the editing environment of Emacs and org-mode and the spaced repetition algorithm of Anki.
The name was a suggestion by my friend.
Questions framework
I recently developed a small framework for questions
What? Why? How? When?
Where I break down information I want to memorize using these questions. An example would be.
An example would be the (comp) function in Clojure.
What?
Clojure: What's ~(comp)~? A function that allows the composition of one or more functions.
Why?
Clojure: Why use ~(comp)~? To write more is more elegant code Clojure: Why is ~(comp)~'s code more elegant? Because it uses less code to convey more meaning.
How?
Clojure: How to refactor ~(int (inc (/ (c-int char) 2)))~ to use ~(comp)~? ~(comp int inc #(/ % 2) c-int)~.
When?
Clojure: When should I use ~(comp)~? To refactor composing functions.
Emacs
Emacs is my main tool for learning at the moment.
Emacs and my journey in it has been one of the most fulfilling experiences I've undertaken. Coming from Notion and the Google suite (Calendar, Keep, etc) with it being slow and mouse-centric to the snappy and keyboard-driven experience of Emacs. It took some time to get used to it but I've gained a lot of speed and efficiency.
Along the way I discovered (or perhaps rediscovered) an old ambition of mine. To work with computers at the speed of thought. But that's a blog for another day.
Emacs gives me the ability to mold my environment to whatever I wish. To create the best workflow for my needs. Learning Elisp allowed me to expand and customize Emacs to my liking. I hope that one day in the future I get to contribute back to it and its community.
A case can be made that this will take a long time but such time invested in our tools pays dividends. How many time did an application you use change in ways that made it hard to use? With you having no way to revert back or restore the behavior that you once used?
ir.el & beyond
ir.el
is meant as a replica for incremental reading. To quote from What is
incremental reading?
Incremental reading is a learning technique that makes it possible to read thousands of articles at the same time without getting lost. Incremental reading begins with importing articles from electronic sources, e.g. the Internet. The student then extracts the most important fragments of individual articles for further review. Extracted fragments are then converted into questions and answers. These in turn become subject to systematic review and repetition that maximizes the long-term recall
The goal of this is to enable me to capture content I encounter and trust that I'll come back to reading/wathcing/listening to it at some point later. And that it won't just be added to an ever-growing list of links.
Interface
I want the process to be as simple as possible. The main two functions are
ir-add, ~ir-start-session
, ir-read-next
and ir-end-session
. These are the only
functions you need to bind to shortcuts.
I want to support various formats. At the moment ir.el
supports .pdf
, .mp4
,
.webm
, .epub
, .org
and web links. Each opens in a specific application. I want
to generalize this to enable working in any environment.
You add material to the queue with (ir-add)
and begin processing the queue with
(ir-start-session)
. The queue is endless and you decide when to stop reading.
I am yet to write a manual or make video tutorials but those are reserved for
version 1.0
. You're welcome to check out the repository with its main
and
development
branches here.
Beyond Emacs
I want to expand this project beyond Emacs. Perhaps a web application in
Clojure? Choosing Clojure for no reason other than wanting to learn it and
seeking a project that interests me. Codename OpenMemo
.
Workflow
How do I do it?
My learning workflow consists of a number of distinct processes with inputs and outputs. Each process has its own time-block.
Consumption
Sit down and study
The input is material in its various forms, web articles, videos, books. Output are transient notes.
Depending on factors such as the density of information and learning goals I might write notes as I consume or set a 15-10-5 minute loop, consume in the first 15 minutes, write notes for 10 minutes, take a break for 5.
Formulation
Transform your notes
During this I open notes tagged with inbox
and work through them. The input is
transient notes The outputs here are 1) Anki cards. 2) Formulated notes.
I try to have less than 3 notes tagged with inbox
but in practice I end up
having many notes with it that I trim through. The ideal is to have no reference
notes as they all get transformed into Anki cards and/or main notes.
Review
Review Anki cards every morning for a minimum of 25 minutes. Simple as that.
I want to add a process to return to old notes after some time (no less than 6 months) after writing them and reflect. This could be done in some form of incremental writing.
Zettelkasten & org-roam
How did adapting PKM systems benefit me?
I jumped on the PKM craze late 2020 seeking a solution for the question of "How to organize my notes and knowledge" and after many iterations I settled on my own style, mainly inspired by Jethro's How I Take Notes with Org-roam.
Reflection
I didn't find myself using backlinks as often as I thought I would but my note-taking skill has increased as I've exposed myself to these frameworks.
Mainly I now seek to consolidate information I gather from various sources (reference notes) into main notes and put them in my own wording if possible.
The biggest change I had is that I no longer use tags because tags are an ineffective association structure.
Although the separation of What I think against What others think is vital.
Directories
I organize my org-roam
notes into directories as follows:
Directory | Description |
---|---|
main | Notes written by me |
wiki | Meta notes |
public | Public content |
reference | Notes on material written by others |
bibliography | .bib files |
main/ contains notes I wrote. The output of Formulating transient notes.
wiki/ contains notes that are descriptions of my personal systems. An example would be my quarter planning system and its associated files (e.g. Q3:22).
public/ contains published content such as this blog.
reference/ contains transient notes on material. Example of a note title "MIT 18.01 - Single Variable Calculus".
bibliography/ simply contains my *.bib
files.
Filetags
I use filetags to indicate status or type. My main two are inbox
and
structure-note
.
inbox
indicates a note under processing.
structure-note
indicates a note that is the starting point of a network of
notes. An example would Statistics, Clojure and Business Analysis.
Issues
Minimum Context
Simple cards can become generic with time.
In formulating cards, there is the standard Twenty rules of formulating knowledge. I've started to struggle with Rule 4: Stick to the minimum information principle. While great to breakdown information. It can backfire in the sense of losing context.
I was formulating some notes from "Applied Statistics for Engineers and Scientists" by Devore in the summer of 2021. I now find these cards like broken twigs from a tree. Where I can recall the information but can not connect to other pieces of information.
I think moving forward I'll create more cards with context in addition to the "atomic" cards. Create more examples and even exercises.
Feeling lost
This feeling came up at various points, sometimes it comes after I finish formulating a whole bunch of notes. The feeling comes from the sensation that I've only thrown a pebble in the deep waters of the field I'm studying (e.g. Statistics).
I usually step away and trace back my resource gathering and try to simplify the curriculum.
What about SuperMemo?
Why I left SuperMemo
This comes from a near 9-month experience with SuperMemo. After which I left it and Windows behind. With many mixed feelings. I enjoy the small discord community but I fear they won't last after IE is deprecated.
Between 2017 and 2019 I was on and off on spaced repetition software. SuperMemo and its supporters claimed a superior algorithms so I used it for a while but its age showed in having no LaTeX or MathJax support. No easy way to import PDFs (Thankfully the Discord community provides these).
As long as SuperMemo relies on Internet Explorer it will die. As long as its supporters do not advertise or provide an easy on-boarding experience that isn't 1000+ word per article wiki (SuperMemopedia), people will not come. As long as you do not provide evidence that SuperMemo's algorithm is superior, you will not be taken seriously by knowledge workers.
Lastly, and this is very personal. I find the preaching of "Free Learning" while having non-Free software a bit disingenuous. At least an open source algorithm would allow for others to learn from and create free tools.
I want to see competition to Anki. For that results in a better tool for all learners.
What's next?
I'm finishing my Bachelor's in Finance and Banking next summer (around July of 2023). I'm open to opportunities in the fields of finance, business and technology with my eyes on Clojure, R and Python. Although I've yet to decide on a path. Reality will determie that.