NOTE: An update to this post is available here.

Task lists are great! Need to do something eventually but don't have the time or motivation to do it now? Add it to a task list (think of it as procrastination management)!

When managing task lists on a computer, I prefer a file-based plain-text approach. As a software developer and avid Vim user, I have found this method to be the most flexible, reliable, and easy; your mileage may vary. Some benefits of a plain-text task list are the following:

  • Easily view and update lists with text editor of choice.
  • Text files are easy to synchronize between multiple devices.
  • Many markup syntaxes can be directly rendered to HTML. This allows lists to be published and viewed on the web or an intranet.

There are some established methods for maintaining a plain-text task list (Org Mode immediately comes to mind). My preferred method is to use AsciiDoc formatted files for managing the content. Vim (of course) is used for the editing and Dropbox (referral link) keeps everything synced. Here is a basic file template:

My Task List
============

  - '2014-02-01': Fix leaky plumbing.
  - '2014-02-02': Paint front porch.

The basic idea is to create a single bullet list entry for each open task. The task creation date is appended to the entry using a timestamp ('YYYY-MM-DD'); the single quotes around the timestamp are an aesthetic convention.

For some lists, it may be useful to organize tasks as either open (unfinished) or finished. Sections work well for this:

== Open Tasks
  - '2014-02-13': Order flowers.

== Finished Task
  - '2014-02-13': Make reservations at fancy restaurant.

Another option is to organize tasks as either Current, Planned, or Finished. Using this method, new tasks are added to the "Planned Tasks" section and moved into the "Current Tasks" section as they are addressed. When complete, tasks are moved into the "Finished Tasks" section and a sub-note can be added with addition information:

== Current Tasks
  - '2014-01-05': Write code.

== Planned Tasks
  - '2014-01-05': Write user manual.

== Finshed Tasks
  * '2014-01-05': Write design docs.
     ** '2014-01-10': Design docs have been written and baselined.

Note that I like using an asterisk to denote that a task is complete. There is no synatical difference between a bullet item with a hyphen or an asterisk; it is simply an aesthetic convention. Notes added to a finished task use the double asterisk syntax in order to make them a sub-bullet item.

If you are a Vim user and decide to employ this method of managing task lists, I highly recommend the excellent SnipMate plugin for quickly entering timestamps. This plugin is a huge timesaver when editing task files and is just awesome in general (so go get it).

There are several optional improvements that can be made to your list including tagging, referencing, and short-lists. These will be covered in future posts. Additionally, since AsciiDoc natively renders to a beautiful HTML format, it is very easy to publish a list for viewing from a web browser; we can explore some of the options for publishing task lists (either statically or dynamically). For now, happy tasking!

Hi, I am Jeff Rimko!
A computer engineer and software developer in the greater Pittsburgh, Pennsylvania area.