In Defense of Text-Based GTD Methods

Okay, so the title of this post is not fair to Robert Talbert, who talked about why he is going away from a text-based approach to Getting Things Done and went back to using ToDoist. However, this is a post I have been meaning to write for a week, and it fits in perfectly with what Talbert wrote.

Basically, Talbert wrote that he is moving away from a text-based approach to organizing his life (Todo.txt) and back to the ToDoist app. He explicitly said that this is a personal decision, and he is just reporting what works for him. I am going to describe a way that I solved one of the issues he describes in his post.

Background: I organize my word by having a plain text file on my work computer with all of the things I need to do (in part so that I can use with it, which I love). I do not use the Todo.txt method, and I think that I have probably evolved far enough away from Getting Things Done that I should not be referring to my process as GTD at all. However, I evolved from GTD, so there will still be a lot of overlap.

In addition to my text-based ToDo file, I use

  1. I ssh into my work computer to write down things I need to do if I am on a computer.
  2. A hipster PDA to capture ideas when I am away from a computer.
  3. I use a tickler file to capture items that I do not need to work on now.

Talbert’s main problem with Todo.txt involved syncing, and it sounds like a real problem. However, I never expected my hipster PDA to sync, so this is not an issue for me.

Talbert also mentioned that there is no easy way to do recurring tasks in Todo.txt. He talked about looking into cron jobs to take care of this for him, and he decided that he would rather have an app that just works (as Todoist does—you just click a button or two to make it the task keep reappearing regularly).

I opted for the cron job approach, which I explain below.

First, I will describe the old way. I have lists of recurring tasks I need to do every day. For instance, here is a list of tasks that I need to remind myself to do every Monday/Wednesday/Friday, the days that I teach (the details are not important, although it is worth telling you that I teach Math 124 and Math 343 this fall):

343:
Check Canvas for pre-class work at 10 am
Change Dailywork in Canvas
Update Actual Plan
Grade (Daily Homework for sure, maybe other things)0 1 * * 1,3,5 /usr/bin/python Dropbox/HodgePodge/MWFToDo.py

Look at next class’s materials

124:
Collect Daily HW in class, give to TA
Change Dailywork in Canvas
Update Actual Plan
Look at next class’s materials

These are things I need to think about every day I teach. The old way was to print out this list at the beginning of the semester, put it in my tickler for the next MWF, read it, type all of the above items into my text-based ToDo list, put the paper list back into the tickler file corresponding to the next MWF, and then delete the items as I do them.

It occurred to me, though, that I could just have the computer write these tasks to my text-based ToDo list. So I wrote a Python script (called MWFToDo.py) that does it and set a cron job to schedule the Python script (cron is a scheduler for Linux machines).

First, here is my cron job code. I just typed “crontab -e” in a command line and added the following line of code:

0 1 * * 1,3,5 /usr/bin/python Dropbox/HodgePodge/MWFToDo.py

The initial “0 1” means to do “0 minutes after 1 am.” Then next “* *” means do any day of the month (1–31) and any month of the year. The final “1,3,5” means do the first, third, and fifth days of the week (MWF). So “0 1 * * 1,3,5” just means “do something at 1 am every MWF.” What should be done is to run Python (located at /usr/bin/python) on the file at “Dropbox/HodgePodge/MWFToDo.py).

That is it—the computer now runs that Python script every Monday, Wednesday, and Friday. The Python script is below:

with open(“Dropbox/ToDo”, “r+”) as f:
old = f.read() # read everything in the file
f.seek(0) # rewind
f.write( “343:\nCheck Canvas for pre-class work at 10 am\nChange Dailywork in Canvas\nUpdate Actual Plan\nGrade (Daily Homework for sure, maybe other things)\nLook at next class’s materials\n\n124:\nCollect Daily HW in class, give to Joe\nChange Dailywork in Canvas\nUpdate Actual Plan\nLook at next class’s materials\n\n” + old) # write the new line before

Basically, this code (which I stole from someone—probably someone from Stack Overflow) just copies what was already in the ToDo file, prepends my new items for Math 124 and Math 343, and overwrites the old file with both the new information and the old (so it effectively just adds some stuff to the beginning).

This has worked well—my to-do list is ready for me immediately when I get to work, saving me a couple of minutes. In addition to MWFToDo.py, I also have TuesadyToDo.py, WednesdayToDo.py, FridayToDo.py, and MonthlyToDo.py, which all have their own cron job. Notice that both MWFToDo.py and WednesdayToDo.py both run on Wednesdays—to be safe, I just schedule the WednesdayToDo.py at a different time (12:30 am, which is

30 0 * * 1,3,5 /usr/bin/python Dropbox/HodgePodge/WednesdayToDo.py

in crontab, where “12 am” corresponds to the first 0).

I agree with Talbert that this is all personal preference. However, I like my system, I just did this a week before Talbert posted, and this seems to have a nice harmony with what Talbert wrote.

Advertisements

Tags: , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


%d bloggers like this: