Those who read the last few posts here, would know that I have been
experimenting with org-drill (a spaced repetition extension to Org mode). I
have been using the system (almost) religiously for the past 2 months, and I do
find that it has helped a great deal! (in some respects). I have also spent a
considerable amount of time trying to reduce the friction to put new stuff into
the system, and am constantly on the look out for further improvements.
Using this system has definitely helped with retention, and I find that I can
recall quite a few things I have read a few weeks ago, that I would normally
have been unable to. Though, I can recall a lot of information, I have been
having a feeling of "fragmentation": the feeling of just retaining individual
bits/fragments of information, while losing out on actually internalizing the
knowledge; not seeing the big picture, etc.
Wozniak (the author of super-memo) warns against learning without
understanding, and memorizing before actually learning stuff. I haven't
consciously added stuff into the system that I didn't understand (when I added
it), but, later it does feel like I have lost some connections or the
understanding, and am only holding onto the fragments of information.
The problems as explained in (read: as interpreted by me from) Make it Stick
appear to be:
- The understanding (if any) at the time of adding stuff into the
spaced-repetition system is untested. It may just be familiarity
masquerading as understanding.
- The lack of any spaced repetitions for the overall concept/understanding and
actual repetitions only for individual bits doesn't help retention of the
understanding (even if there was any, in the first place).
To work around this, I'm going to try adding questions that test understanding,
to the system. The Super-memo team strongly recommends keeping the drill items
small and easy to answer. This may be helpful in keeping each drill session
short, but I would really like to add conceptual questions to the system, and
see how it goes. I hacked
org-drill to allow me to type out answers, before
looking at the "correct" ones. This is an adaptation of a system that a fellow
Hacker Schooler uses, and shared. Also, hopefully forcing myself to type out
the answer will help me get around the problem of sometimes saying "yeah I know
that", then looking at the answer only to reaffirm the feeling of familiarity,
rather than actually testing myself. I'm still going to continue adding quick
and short questions that test "bits of information", though. But, hopefully the
additional conceptual questions are going to tie things together and help fill
in the gaps. Lets see how this goes!
For those interested, my hacks to
org-drill below. The code is really a
hack, and welcome any suggestions on cleaning up the code.
(advice-add 'org-drill-presentation-prompt :around 'pc/org-drill-presentation-prompt)
(defun pc/org-drill-presentation-prompt (old-fun &rest fmt-and-args)
"A presentation prompt that allows capturing answers."
(let ((cb (current-buffer))
(heading (nth 4 (org-heading-components)))
(entry-id (org-entry-get (point) "ID"))
(insert "# Hit C-c C-c once you are done answering!\\n")
(insert (format "Answer: %s" heading))
(org-entry-put (point) "QUESTION_ID" entry-id)
(insert " ")
(insert "\\n\\n ")
(while (not (and input (equal input "")))
(setq input (read-key-sequence nil)))
(apply old-fun fmt-and-args)))
(advice-add 'org-drill-reschedule :around 'pc/org-drill-reschedule)
(defun pc/org-drill-reschedule (old-fun)
"Calls the original reschedule, but also archives the answer"
(prog1 (funcall old-fun)
(let ((cb (current-buffer)))
(defun pc/org-refile-to-datetree (journal)
"Refile an entry to journal file's date-tree"
(interactive "fRefile to: ")
(let* ((journal (expand-file-name journal org-directory))
(date-string (or (org-entry-get (point) "TIMESTAMP_IA")
(org-entry-get (point) "TIMESTAMP")))
(dct (decode-time (or (and date-string (org-time-string-to-time date-string))
(date (list (nth 4 dct) (nth 3 dct) (nth 5 dct))))
(with-current-buffer (or (find-buffer-visiting journal)
(org-datetree-file-entry-under (current-kill 0) date)
(message "Refiled to %s" journal)))