More about how I’ve been memorizing quotations

As I already mentioned, I’ve been working on memorizing some of my favorite quotations. One of the main motivations for this project was to play around with spaced repetition software. I’d heard of SuperMemo a while ago, probably from the Wired article, and I was definitely intrigued, really glad that Peter Wozniak had done all the research he had, and a little annoyed that I hadn’t known about it in high school and college when I was taking language classes. It occurred to me at the time to wonder if I should try to use it for something, since I like to try out new tools and am interested in learning, but I couldn’t think of anything I was all that interested in memorizing, and knew I wasn’t liable to stick with it unless I came up with something that would be either fun or useful.

Then, last spring, I decided I wanted to memorize some prose. Mostly just for fun, because I was curious about what it would be like to do it, and because I had been convinced that would be easier than I would have initially estimated. I started out by learning the first page or so of The Last Unicorn, which I enjoyed enough to make me want to learn more. So far I was just using two Emacs windows, putting the real text in one and typing what I could remember in the other, and doing ediff-windows-wordwise.

I did learn more. I learned one of my favorite Heinlein quotations, and my favorite death scene from a book, and then the whole page or so before that death scene. And I wanted to learn even more, but at that point I was getting worried about keeping track of all of them, mentally.

When I’d learned only one passage, I felt confident that I could retain it forever by simply saying it to myself from time to time, after all, being able to recite it in my mind was the reason I’d memorized it to begin with. But if I were going to tackle a bunch of passages, I wanted some sort of scheduled quizzing system, which of course made me think back to SuperMemo and spaced repetition.I did some research, decided that Anki was the SRS program that best fit my needs, and entered a bunch of quotations I wanted to learn. I knew I wanted the first letters of every word as a hint, and though I looked into various hint plugins, I just ended up taking one of the suggestions on their website and just using white text instead, so I could only see the letters when I selected them. Here’s an example of a card I made:

Whatever I’m memorizing, I break up into chunks of no greater than two hundred words or so. I also turned on the setting for my deck where you actually type in the answer, since that’s long enough that I can’t check it all otherwise, and I like to get punctuation marks right. I’m not sure exactly how Anki’s diff works, and sometimes it does slightly funky things like coloring it all red when I get a word wrong near the beginning, but it’s good enough for me.

When I started memorizing prose myself, I searched the internet for advice on the best ways to do so and didn’t find much, so in case anyone else is looking for the same thing I was, I figured I’d give as detailed a description of my process as I would have wanted (which is probably not of general interest). Once I enter the text and the hint and it comes up in Anki, I usually give it one try without having made a real effort to memorize it at all. I’m not totally sure this is a valuable use of time, since I don’t usually get much at all on this pass, but I find it kind of fun to see how much I can figure out. Names usually pop out at me, because they’re capitalized, and maybe a few other things. I don’t spend much time on this, but I think it helps focus my mind a little, anyway. Then, once I hit show and see the actual quotation, I highlight the hint again and try to really learn the thing. Usually I’ll read a smallish chunk, maybe ten words or so, of the quotation, then, while it’s still in short-term memory, look back at the hint and reconstruct the words from that. I’ll do this until I get to the end of the quotation, then try to see if I can remember the whole thing, just looking at the hint. Depending on the length of the quotation, that probably takes me a few tries.

I usually add more than one quotation at once, which I think helps because I can switch back and forth. So at this point I’ll usually move onto another quotation and do the same thing with that. Then, when it brings up the first one again (which it will very soon, since I’ve just told it i got the card wrong), I highlight the hint and try to type the thing out as best as I can remember. I usually get it mostly right, since the time I looked at it I was able to do this, but more often than not there I’ll mix at least a few words up. Even if I get it totally right, I’ll still click the button that says I got it wrong, since at this point I’m still using the hint. I’ll keep doing this when the card comes up until I can get it all right with the hint, though I make a conscious effort to look at the hint less and less, and try to chunk it more if possible. So, I might look at the hint for a sentence, look away and type the sentence, and then look back. Once I can get the whole thing right looking at the hint, I’ll make myself look at the hint only at the beginning, then unhighlight it and type the whole thing without looking at it. And if that works reasonably well, I won’t look at the hint at all the time after that.

I bet I could optimize this process a lot more than I have, but I’m already learning the text a lot faster than I was when I first started doing it. And one nice thing about my process is that it gets harder pretty gradually, so at no point do I feel overwhelmed. I’m still a little surprised at how well the first letters thing seems to work for me. It’s a lot easier for me to get the quotation right looking at the hint, but once I’ve done it even once or twice with, I find I know the thing almost perfectly (though punctuation is particular bugbear of mine, probably because it’s just not represented particularly well in my phonological loop).

If there’s a particular part I keep messing up, I’ll say it over and over again a bunch of times, with as distinctive an inflection as possible. Also, if I find that when I’m typing there’s a part where I keep starting to type the wrong thing, only to go delete it and go back, I try to go back further than is strictly necessary, to practice the transition. Maybe all these strategies sound obvious, but they didn’t occur to me right away, so I thought they might be worth recording.

Overall, I’d say Anki works very well for committing a bunch of different passages to memory. Using it, I don’t feel the need to practice them excessively, since I trust that it’ll remind me when it’s time to review them, so I can just say them in my head because they sound pretty, not because I’m worried I might forget them. But it’s definitely not an ideal setup, for a few reasons.

  1. I can’t figure out a way to enter the return character in the answer box without submitting the entire answer. Usually, I break things up into paragraph chunks anyway, so it doesn’t matter much, but sometimes I have dialogue or something with more line breaks, and then it’s annoying. I think I’d be a lot more inclined to add poetry too if I could figure this out. When I have a passage with line breaks in it, I end up just ignoring them when I type in the answer, but it looks sort of ugly that way and I don’t like it.
  2. As I said, the diff is kind of weird sometimes. 
  3. It seems like the algorithm just isn’t optimized for things longer than single words or facts. From what I’ve read about the algorithm, I’m supposed to be getting 90% of the cards right when they come up. I’m not. Here’s a graph of my ease of recall, where 1 is wrong, 2 is hard, 3 is good, and 4 is easy:


As you can see, I very rarely mark something as “easy”, but I’ve been only been doing this for a few months, and I think I’m just not there yet. Looking at this graph a few days ago also convinced me that I’m marking too many things as “normal” that I should be marking as “hard”, so I’ve tried to be better about that, and I think that’s been helping with my error rate.

Still though, I think the algorithm is optimized for much smaller chunks of information. And there’s also a lot of data being discarded. I’ll mark my answer as wrong whether I garble the whole thing or get it entirely correct except for one punctuation mark, and it seems like an optimal algorithm would take that into account somehow.

In support of this hypothesis, often my cards are marked as “leeches” and suspended, and when this happens Anki helpfully informs me that I should consider breaking up the information on the card into multiple cards.

And sometimes I do want it to just ask me the specific thing I keep getting wrong about a quotation instead of quizzing me on the whole thing. For example, there’s one passage where I keep putting a semicolon instead of a colon. I wish it would automatically make a flashcard with just that piece of information on it.

I think what I really want is a dedicated verbatim text memorization program that will do the right sort of chunking automatically. Because ideally, I want to be able to put in a passage of any length. My ideal program would divide the whole thing into bite-sized sections, and quiz me on those first. If I kept making the same specific mistakes, it could quiz me on exactly what I was getting wrong. Once I had the parts down, it could start to build the entire thing up, until eventually it was asking me for the entire passage. If I started getting it wrong, it could break it down again. I’m not sure exactly how this would work, but I wish something like what I’m describing existed. And since it I haven’t found an application that fits my needs all that well, I’m definitely more than a little tempted to try to program something myself… Rarely, however, do I find myself following through on these impulses. In case anyone is curious, I’ve attached my Anki deck.

Download this file

OS X Service for memorizing verbatim text
Download this file

Lately I’ve been somewhat into memorizing some of my favorite quotations from books. The most effective method I’ve found for doing so has been converting each word of whatever text I’m trying to memorize to just the first letter, and trying to reconstruct the passage from that. Here’s the theory behind why this is helpful:

This is the crucial concept of any type of memorization. The act of reading something you want to memorize fires different connections than the act of recalling. This means that simply reading a particular piece of text over and over again is going to be the long road to memorization. You need to let your brain practice recalling the data so it can strengthen the same pathways that will fire when you need to remember the information later on. You can’t practice recalling until the information is at least partially contained in your short term memory.
How to Memorize Verbatim Text

So, say I want to memorize this passage from Pawn in Frankincense by Dorothy Dunnett:

The woman sitting there, straight and still on the bright velvet cushions, was not young; nor was she less than beautiful. The black hair, loose and shining, and deep, fell back over her shoulder and forward down to her waist; her chin was high above the pure line of her neck, which you could have held in one hand. Her eyebrows were black, and arched in pride, or surprise, or over some deep, long-held thought; and below the black, silky lashes, the wide eyes were packed full of straw.

Here’s what it gets converted to:

T w s t, s a s o t b v c, w n y; n w s l t b. T b h, l a s, a d, f b o h s a f d t h w; h c w h a t p l o h n, w y c h h i o h. H e w b, a a i p, o s, o o s d, l-h t; a b t b, s l, t w e w p f o s.

The website that describes this method provides a helpful JavaScript tool for performing this conversion, but before too long I was finding copying text into the box on the website a little unwieldy. So, I grabbed the relevant regular expression from the JavaScript code (str.replace(/(w)w*/g,”$1″)) and turned it into an OS X Service, a transformation that, luckily for me, Snow Leopard has made very easy. All the service does is grab some text, run a simple sed replace command (sed ‘s/([a-zA-Z0-9])[a-zA-Z0-9]*/1/g’), and output it.

In case this tool I’ve created could be at all useful to anyone else, I figured I might as well upload it.  To install it, just put it in either /Library/Services or ~/Library/Services.

Using Quicksilver and Applescript to Keep a Stack of Safari URLs

My friend posted this question on Hacker News. I answered:

If you’re on a Mac and you’re using Safari you might like Urly ( It lets you make a pretty basic stack of browser links. If you don’t like that (and you’re a Quicksilver user), it might be worth writing some Quicksilver triggers to push and pop urls using a text file as a stack.

I decided I might as well code my solution. I’d never written any Applescript before, so what have is cobbled together from various examples I found online and very likely not the best way to do it.  I made two scripts.
tell application "Safari"
set theurl to URL of front document
end tell
set clipFil to (path to documents folder as text) & "tobrowse.txt"
close access file clipFil
end try
set filRef to open for access file clipFil with write permission
write (return & (theurl)) to filRef starting at eof
close access filRef
tell application "Safari" to activate

set clipFil to (path to documents folder as text) & "tobrowse.txt"
close access file clipFil
end try
set filRef to open for access file clipFil with write permission
set filetext to (read filRef)
set thelist to every paragraph of filetext
set theurl to item (length of thelist) of thelist
set item (length of thelist) of thelist to ""
set newtext to (thelist) as text
set eof of filRef to 0
write newtext to filRef
close access filRef
tell application "Safari"
set URL of document 1 to theurl
end tell

I can activate these by just typing bpush and bpop into Quicksilver. I’ve tried using this while browsing for the past hour or so and it’s definitely too soon to say for sure, but I think I might actually use these.