Another time-tracking post

Following Steven Haryanto's post on how he tracks his time, I thought some people might be interested in the time tracking solution I'm currently using.

My colleagues and I are required to track our daily activities for billing purposes. Ultimately the information needs to end up in the company work-request management system ('WRMS') but that system's user interface for timesheeting is somewhat frustrating. In response to this, two colleagues (Martyn Smith and Nigel McNie) wrote a Perl script called TKS. This allowed people to enter their activities in a plain text file in a format similar to Steven's. Then they could run the TKS script periodically to sync the contents of the file into WRMS (a modular architecture allows different backend systems to be supported).

An example of a day's entries might look like this:

2014-01-08 # Wednesday
63778   09:00-10:30     Assist Cheryl with month-end reporting
64609   10:30-11:15     Analyse logs of picking report job failure
64613   11:15-12:30     Set up puppet config for memcache servers
64618   13:00-14:30     Work around IE rendering bug in date widget
64515   14:30-17:00     Initial implementation of order reversal function

Or if you wanted to take advantage of the work-request-aliasing function and simpler time entry format it might look like this:

2014-01-08 # Wednesday
billing   1.50    Assist Cheryl with month-end reporting
64609     0.75    Analyse logs of picking report job failure
puppet    1.25    Set up puppet config for memcache servers
64618     1.50    Work around IE rendering bug in date widget
64515     2.50    Initial implementation of order reversal function

The simplicity of tracking time in a plain text file opened up all sorts of possibilities. For example some people use a commit hook in git to extract work request numbers from commit messages and append entries to their TKS file for later manual editing.

While I definitely agreed that the TKS command-line front-end to our official time-keeping web app was an improvement, what I immediately desired was a web front-end to TKS. And thus TKS-Web was born.

TKS-Web screenshot

TKS-Web provides a calendar-style week view that you can use to enter and edit your timesheeting data. Activities can be created, copied, pasted, dragged, resized and deleted using hotkeys, mouse or touch gestures. The data is stored in a simple SQLite DB using a JSON/REST API provided via Dancer. A menu option (or API) allows you to export activity data in TKS format or you can ignore the TKS connection and extract the data directly from the DB. In my case, the mobile-friendly interface allows me to review and revise the day's activities during my commute home on the train.

Tracking time can be a chore but finding or building a tool that matches the way you work can reduce the drudgery.

Leave a comment

About Grant McLean

user-pic Perl hacker since 1995. Coordinator of Wellington.pm in New Zealand.