Making Progress

Progressio is a command-line utility to keep track of things to do.

In a number of projects I was keeping track of things to do with a todo.txt file. Sometimes, I also used a file ci.txt to enumerate things done and commit them with a version control system into a repository (I prefer mercurial where a commit command may be abbreviated as hg ci).

It was natural to systematize and improve this habit. Below is a list of inspirations and thoughts that guide the development.

Daniel Pink in his talk mentions:

Over the years they [Teresa M. Amabile and Steven J. Kramer] find that there is one motivator above all. One simple motivator stands well above anything else... [It is] making progress in one's work

Analysing my past experiences, I cannot help agreeing with this statement.

This is a rather modern research, yet thousands years ago Confucius observed that to reach a goal one has to make steps:

A journey of a thousand miles begins with a single step.

Currently, with the utility I am defining goals and tasks, based on which come up with steps, actions that I see how to complete within 15 minutes. When switching between projects I am making sure that a simple step is left for the future. This approach is left flexible and is subject to change.

Some time ago I have tried todo.txt approach promoted by Gina Trapani. And, even though I am a Linux user, ocasionally I find myself on Windows or Apple machines, so the bash-shell approach did not seem very universal. Hence, I decided to use some Gina's ideas as an inspiration and write my own tool with Python. Now I think, for anybody going to adopt text-file issue tracking system for personal use and familiar with some dynamic programming language, writing her own utility is a natural way.

The utility generates an html file. So far with no styling. In the plans is to include styling similar to Ned Batchelder's coverage tool. Also graphical visualization is planned. A source for inspiration may be the hamster project by Toms Bauń£is

One of the goals for the project was also to come up with universal human readable and editable markup for the text file where issues are stored. At the moment, YAML with some conventions is used. This approach seems to serve these purposes very well: the file is human readable and editable, and at the same time is easily readable with multiple libraries for various programming languages.

This note is evolving together with the project.