« Nothing to hide?The helpful thing about Linux.. »

Thu, Jun 06, 2013

[Icon][Icon]Learning, interrupted

The trouble with the human brain is, like Haskell, it makes a virtue out of laziness.

It doesn't want to put any effort into remembering boring, unnecessary things. So if something seems unimportant, it gets lost. And if it's easier to remember where to look something up than it is to just remember it, then that's what your brain will do.

Seriously - look up "memory offloading"

I'll bet there's loads of things people could ask you that you'd answer "I don't remember, but I know it's in this book/wiki page/google search"

This is all well and good for many things, but it's a PITA when you actually do want things to stay in your brain instead of just filing a reference to it.

I find this to be a big problem with learning new programming languages. I can get so far into a book, but then life interferes and it's a while before I can get back to it, and in the meantime I've forgotten damn near everything other than "It's explained in that book"

Haskell, C, Perl, Zsh, Javascript.. I have books on all of them. I've lost count of how many times I've started reading LYAH, I have to restart it every time I come back to it because the syntax just doesn't stay in my head. What does foo . bar . baz $ boo mean? When I come back after a month away, I have no more idea than my cat.

This makes it very hard to make progress - life means interruptions, and interruptions means forgetting.

I needed to find a way to stop forgetting if I wanted to get anywhere.

I tried taking copious notes. But if you don't keep reviewing the notes, you forget them - your brain just remembers "Oh yeah, I made a note about that". And if you DO review them, you get bored of them and stop bothering. And then you forget them.

I tried mind maps, coding exercises, code examples.. nothing worked.

And then I tried a flashcard program.


It's exactly the same process as making notes, only instead of writing them on paper, you write them on your computer in Q&A format.

And then every day, you run through them.

Still sounds like notes, right?

The advantage is, you only get prompted with the questions you're likely to need reminding of - each time you get a question, you get to say how easy to remember it was. And the better you remember, the longer you go without a prompt. So instead of pages and pages of notes where you have to wade through all the stuff you know to find the nuggets of useful stuff you've forgotten, you just get a few questions to refresh your memory each day.

And if you miss a day, you just catch up the next day.


I went with Anki - runs on Linux, and has a free app for Android. Which meant I could read my ebooks on my PC and make the new cards with a decent keyboard, then sync to the cloud and review on my phone or tablet.

And it works really well. I didn't realize how well until I skipped ahead on my book about C to read about threads, and realized a few days later that I couldn't remember a single thing about it. And then remembered that I had skim-read instead of doing it properly, and had not made any cards yet. I could remember everything else in the book - signals, forking, sockets, pointers - without issue. But threads? Nothing. Not one single fact could I tell you about threads, other than "They're covered at the end of the book."

Flashcards make it so quick & easy to learn that I almost fail to notice I'm using them; but the difference between stuff I've read and stuff I've made cards about is night & day.

Even though I haven't had a chance to look at LYAH in a fortnight, courtesy of the prompts from Anki I can easily tell you that the . does function composition and the $ does function application with the lowest precedence. Which means when I next get time to read some more pages, I don't have to revisit the stuff I've already read to relearn it - I can just get on and learn the new stuff.

If (like me) you've suffered too many times from the pain of "I used to know this.. but I can't remember it any more" or "I wrote this down somewhere, let me drop the task whilst I go hunting through my notes for the vital clue" then I thoroughly recommend giving something like Anki a try.

It's free, and it makes your brain infinitely better at handling interrupts.


Comment from: hari [Visitor]
The only aid to memory is practical application of knowledge. Once you apply a particular piece of theory in practice, it stays long with you.

The problem with Haskell is that you seldom write actual everyday useful software with it. So much of the Haskell exercises seem like they are theory puzzles. If you get down and actually write a non-trivial app in Haskell, I bet your knowledge would grow rapidly and you won't find yourself needed to memorize things.

Also, that's how I learnt Python. Not theoritically but writing actual programs. Without practical application of knowledge, theory tends to fade away from the deep recesses of memory and you need to keep re-learning.

I'm finding that true of most things, actually. As a lawyer, I can tell you memorizing statute books are tough unless you keep practising in that area of law regularly enough.
07/06/13 @ 10:31
Comment from: Terv [Visitor]
Out of curiosity, what book on C was that?
07/06/13 @ 12:06
Comment from: oneandoneis2 [Member] · http://geekblog.oneandoneis2.org/
@Hari - The theory was always fine, it was applying it by remembering the syntax and remembering the gotchas etc. that was the problem. Flashcards are almost as good as practical application, which makes them really good for situations where it's hard to do regular practical application.

@Terv - in this particular instance, it was the Head First book from O'Reilly, which I found to be a pretty good "C basics" book. I'm also partway through 21st Century C, K&R C, and one or two others.

It's possible that I may need to reduce the number of books I have in play at a given time, now I come to think of it :)
07/06/13 @ 12:16

[Links][icon] My links

[Icon][Icon]About Me

[Icon][Icon]About this blog

[Icon][Icon]My /. profile

[Icon][Icon]My Wishlist


[FSF Associate Member]

February 2018
Mon Tue Wed Thu Fri Sat Sun
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        


User tools

XML Feeds

eXTReMe Tracker

Valid XHTML 1.0 Transitional

Valid CSS!

[Valid RSS feed]

powered by b2evolution