/ domm

I hack Perl for fun and profit.

Follow me on twitter!
Atom Icom ... on Atom!
02.01.2017: Vienna.pm Meeting dates for 2017 (as calculated by Perl 6)
23.12.2016: Announcing Plack::Middleware::PrettyException
13.09.2016: Too dumb for TCP
04.09.2016: Alpine Perl Workshop 2016
26.08.2016: Things I learned at the European Perl Conference 2016 in Cluj
26.07.2016: App::TimeTracker::Command::TellSlack
18.06.2016: Announcing Plack::App::ServiceStatus
12.06.2016: Recent activity
24.04.2016: Announcing Alpine Perl Workshop 2016
30.01.2016: 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!


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:
    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...

Comments (via disqus)