A.B.
Aaron Brick
worksrésuméphotos
. . . . . . . . . . . . . . . . . . . . . . . . .
Task prioritizer
tasks graph
Graph subsection

tasks notes
Notes on graph construction

tasks list
Previous task list system

This project management tool prioritizes tasks based on their dependencies. It builds on the work I did in 1998 – 2000 on the scheduler dbdb.

The restoration of my car was so much complicated by enumerating preliminary jobs that I decided to seek an algorithmic guide. Ivy Lee famously suggested a list of tasks ordered by importance to Charles M. Schwab. Unlike Mr. Lee and Microsoft Project, I embrace context changes and multiple paths of execution. Rather than deciding upon a single critical path, I prioritize unblocked tasks for execution according to what depends upon them. Their order is calculated recursively according to the importance of what the tasks block, so a minor preliminary blocking a significant operation will become urgent.

The system currently has three views, in which nodes are cross-linked for traversal. I would like to integrate at least the graph and particular views in the interest of simplicity. Producing sufficiently attractive subgraphs dynamically has proven challenging: the text version lacks splined arrows, and the graphic one is very slow to render.

  • The graph, in which labelled tasks are color-coded and weighted
  • The catalog, which lists current tasks for the worker ranked by priority
  • The particular view, which interactively reveals task attributes

Most needed are inline actions for editing the set of tasks. Modifying the XML by hand, as I have done for several hundred tasks, does not scale well. The system is useful to me now, but I expect it to be much more so when I can reduce the incidental cost of adding, removing, and reorganizing tasks. Prioritizing those tasks with deadlines would be useful, but I have resisted adding this feature because comparing them would require time estimates for every single blocking task. Possible in further development are input transforms to model task data from other sources and output transforms to produce statistical analyses and graphs.

I experimented with Dijkstra's and Floyd's algorithms before settling on a depth-first recursive summing function to calculate the importance tallies. The data is stored in XML and repeatedly transformed with xsltproc. The system is divided into logic stages and output modules, some of which are procedural and some functional. For the graph, I used GraphViz's renderer dot and ImageMagick's utility convert.

tasks.php, last modified April 4, 2010 at 6:15 pm, was served for 38.107.191.119 by www.lithic.org over HTTP/1.0.