I’ve been kicking the tires of TaskPaper lately. I’m intrigued by its minimalist, flexible, plain-text approach to managing a to-do list.
I have a lot of repeating tasks, some with strange intervals. For example, once per year, I download a free copy of my credit report. But I can’t just do it every year on January 1, because if I’m busy one year and don’t do it until the 4th, I have to wait until at least the 4th the following year. You see the problem. The solution is to give myself a buffer, and plan on downloading my credit report every 55 weeks.
Taskpaper has no built-in support for repeating tasks, but its plain-text format makes it easy to manipulate using external scripts. So, for example, I can keep my repeating tasks in an external file, and then once a month have them inserted into my to-do list.
The plain-text calendar tool when, which I also use to remember birthdays, seems like the perfect tool for the job. You store your calendar entries in a text file using a cron-like syntax. You can also do more complicated patterns. For example, I put this line in my file:
!(j%385-116), Transunion credit report
!(j%385-116) is true whenever the modified Julian day is
equal to 116 modulo 385. This happens every 385 days, starting today.
When I run
when with my new calendar file, I get this output:
today 2014 Feb 22 Transunion credit report
I wrote a quick Python script to translate this into TaskPaper syntax.
This takes the
when output, and translates it into something I can dump into
my TaskPaper file:
- Transunion credit report @start(2014-02-22)