App::TimeTracker::Command::Category
A few days ago I released a new plugin for App::TimeTracker called App::TimeTracker::Command::Category.
If you don't know App::TimeTracker
(or tracker
, as the script is called), take a short look at the nice demo here (and if you've got a lot of time on your hand, you can read these (old) slides explaining the architecture and implementation).
Anyway, A:TT:Category
uses some nice Moose Metaprogramming and dynamic type constraints to implement a new command line option --category
(or --cat
for lazy and/or bad typists). The idea here is to specify a list of task categories (per project, job, or even global) like "bug", "feature", "meeting" etc, and when starting to work on a task reminding (or forcing..) you to choose which category the current task belongs to:
~/projects/some_job$ tracker start --rt 31420 --cat feature
Started working on some_job (RT31420, feature) at 21:30:59
Internally, the category is stored as a regular tag, but A:TT:Category
makes sure you stick to one of the valid categories.
For now, A:TT:Category
only alters start
and similar commands, but I plan to add some nice reporting tools. Which are the real reason I've added this feature: I want to know how much time I spend on "productive" task (like "feature"), and how much is wasted (at least from my perspective) by working on bugs, maintenance, support etc.
I also plan to split up the monolithic App::TimeTracker distribution into a small core, and extract various current features into plugins (eg "RT"). Currently you have to install RT::Client::REST even if you're not using RT at all. So stay tuned for some more App::TimeTracker
related updates!
Update
App::TimeTracker::Command::Category 1.001 now includes a statistic
command, which produces output like this:
domm@t430:~/projects$ tracker statistic --last day
From 2016-01-29T00:00:00 to 2016-01-29T23:59:59 you worked on:
07:27:46
10.1% bug 00:45:23
34.0% feature 02:32:21
29.0% maint 02:09:52
13.3% meeting 00:59:21
13.6% support 01:00:49
P.S.: And if I happen to come upon copious free time, I might port the beast to Perl 6...