I read about the curve of forgetting and was inspired to whip up this little Python script to use with TaskWarrior.

The script

from taskw import TaskWarrior
from sys import argv
from datetime import datetime, timedelta

tw = TaskWarrior(marshal=True)
task_id = argv[1]

task = tw.get_task(id=task_id)[1]
Date = task['due']
desc = str(task['description'])

tw.task_add(desc, due=Date + timedelta(hours=1))
tw.task_add(desc, due=Date + timedelta(days=1))
tw.task_add(desc, due=Date + timedelta(days=2))
tw.task_add(desc, due=Date + timedelta(days=4))
tw.task_add(desc, due=Date + timedelta(days=7))
tw.task_add(desc, due=Date + timedelta(days=14))
tw.task_add(desc, due=Date + timedelta(days=30))
tw.task_add(desc, due=Date + timedelta(days=90))

Of course, you can edit the time intervals in the script to suit your learning style and workflow. :)

Usage

  1. Add what you’re trying to learn to TaskWarrior, with a due date. For example:
task add "revise chapter 3" due:sunday
  1. Pass the ID of this task to your script like so:
python3 curve_of_forgetting.py 72

And that’s it! Running task shows that the script was successful:

output of `task next` after running the script, showing the task due at various intervals

Hope this helps! It’s been pretty useful to me. :)