Gregory Paciga

Gregory Paciga

Scientist by training, Tester by trade
Ph.D., Astronomy & Astrophysics

Email: gregory [at] paciga.com

Todo.py

Todo.py is a script that manages a daily to-do list. The to-do list itself is just a plain text file, with some special notations. Todo.py automatically compares today's todo list with yesterday's to determine how much progress you have made. It has the following basic functionality:

The top of the script describes the functionality, some command line functions, and the files created that you can use to keep track of your progress.

CLICK HERE TO DOWNLOAD TODO.PY

Installation

The todo.py script should be put in its own directory, where it can create folders and store archives of your todo lists. The variable TODODIR must be set appropriately. After that, just set a cron job to run "todo.py archive" each night sometime after midnight. The default to-do list is a text file called "TODO" in that same directory.

Example Usage

At its most basic, your to-do list is just a list of things to do, one per line. Write new lines when you add things, delete the lines when you've completed that task. Each night when todo.py runs, it'll tally up how many items you completed, how many new ones you added, and what the total number of items left to do is.

Throughout the day, you can run "todo.py progress" or "todo.py details" to get a running tally of how productive you're being.

A more complicated example to-do list might look like this:

# Personal
# ===============================
Pick up the dry cleaning
Take out the trash

# Work
# ===============================
Finish this month's TPS report
Schedule a group meeting
Check the break room coffee supplies
Volunteer for the annual review committee

This person has divided their list into two categories using comment lines. Let's say this person takes out the trash (and so deletes that line), and also decides they need to get groceries today. A little later in the day the list will look like this:

# Personal
# ===============================
Pick up the dry cleaning
!Get groceries

# Work
# ===============================
Finish this month's TPS report
Schedule a group meeting
&Check the break room coffee supplies
@Volunteer for the annual review committee

Not only did they decide to get groceries today, they've already done it, so it's marked with an exclamation mark. This month at work they have the responsibility of making sure there is enough coffee in the break room. They've done that today but must remember to do it again tomorrow, so instead of deleting the line it's marked with an &. They've also given up on the idea of volunteering for that extra committee.

Tomorrow, after "todo.py archive" is run in a cron job, the list will look like this:

# Personal
# ===============================
Pick up the dry cleaning

# Work
# ===============================
Finish this month's TPS report
Schedule a group meeting
Check the break room coffee supplies