Reporting
Time tracking would not be particularly useful without some way to report on the time you are
tracking. The rtimelog
program has a number of reports, each serving a different purpose.
Detail Report
The report I use the most looks like the following:
$ rtimelog report detail yesterday
This report shows the data for the given date grouped by project. Although the actual times are missing and the data is re-ordered, you can get a really good sense of where your time went with this report.
2013-07-01 8:08
Admin 0:19
Email 0:19
Bar 0:05
Help 0:05 (Emma questions)
Foo 7:45
Code 2:20 (database module)
Code 2:50 (processing module)
ConfCall 1:02 (Team Meeting)
Docs 1:03 (working on manual)
PerfTest 0:30 (processing module)
From this report, we can see that the part of the day we tracked was 8 hours and 8 minutes. Almost
all of that was spent on the Foo
project, on five separate tasks:
- Code work on the database module
- Code work on the processing module
- Performance testing on the processing module
- Documentation on the manual
- Team conference call
We also spent some incidental time on email and answering questions.
Where this report really shines are those days that seems to be one interrupt after another. That was really the origin of the program for me. I found that there were days when I left work tired, but didn’t feel like I had accomplished anything. Looking back at this report showed the day taken up by dozens of interruptions.
Summary Report
Sometimes, the normal report is still too much data. Let’s say I only care about the aggregate amount of time spent on each project. I would then use the following command:
$ rtimelog report summary yesterday
This report has no task information, it just reports the time on each project for the day.
2013-07-01 8:08
Admin 0:19
Bar 0:05
Foo 7:45
If you only work on one project at a time, this report will not be very useful. However, I have found this report handy for as few as two projects. For example, handing off one project to another team, while beginning a new project. During the beginning of the hand-off, there are usually a number of meetings and interruptions helping the other team take over. It’s not always easy to realize how much time is spent on this kind of activity.
This report is most useful for people who need to track multiple projects every day. If you use the Admin pseudo-project described earlier, this can still be useful for recognizing how much time you are spending on non-project tasks. Those kinds of time-stealers are easy to lose track of.
Hours Report
Finally, you may only want the amount of time you spent for the whole day. That report is generated by the following command:
$ rtimelog report hours yesterday
This just tells how long you were working. Sometimes, it is all you need.
2013-07-01 8:08
This report is particularly useful when you are looking at multiple days. Sometime just a report of the amount of time you have spent each day of the week is useful.
Chart
The report chart
command gives a graphical representation of the time spent during the day as an
HTML page. The data is displayed as a pie chart breaking down the projects worked during the day.
For each project, there is a smaller pie chart for the tasks applied to that project.
Finally, there is a hourly bar chart showing the time in each hour spent on the various projects. The chart report for the example shows the output of this command.
I created this report specifically as an exercise after seeing some of the output from other time tracking programs. Although I use it relatively rarely, someone who is more visually-oriented might find this version more useful.
This report was a result of someone showing really pretty charts from a fancy time-tracking app. I have usually resisted adding features that I don’t see myself using a lot. But, I built this mostly to show how much this simple tool could do. I still don’t use it much.
Task Listing
The most detailed report you might run is to list all of the entries for a given day. If you executed the following command the day after the example above, you would get a list of the entries for that day.
$ rtimelog ls yesterday
The output of this command (assuming only the commands from Example Usage) would look like this:
2013-07-01 08:02:15 +Admin @Email
2013-07-01 08:10:31 +Foo @Code processing module
2013-07-01 09:30:42 +Foo @PerfTest processing module
2013-07-01 10:00:38 +Foo @Code processing module
2013-07-01 11:30:22 +Foo @Code database module
2013-07-01 12:00:11 stop
2013-07-01 12:50:02 +Admin @Email
2013-07-01 13:00:21 +Foo @ConfCall Team Meeting
2013-07-01 14:02:43 +Foo @Docs working on manual
2013-07-01 14:22:03 +Bar @Help Emma questions
2013-07-01 14:27:06 +Foo @Docs working on manual
2013-07-01 15:10:20 +Foo @Code database module
2013-07-01 17:00:24 stop
This is the most detailed report, but it isn’t really useful for much. Usually, you want some form of summarized information. The other reporting commands take care of that.
Event Reports
If you are using the zero duration events feature of rtimelog
, you might want to generate reports
for those.
The report events
command lists your events and the time that they were added grouped by date.
$ rtimelog report events -p dog yesterday today
If you used events to track letting the dog out, the command could give a report of
2022-12-15
07:50 +dog Backyard
14:22 +dog Backyard
18:33 +dog Walk
2022-12-16
08:10 +dog Backyard
14:32 +dog Backyard
18:27 +dog Walk
This report is much like the ls
report for tasks. No summary or calculations, just a list of the
events.
The report intervals
command lists the interval between events. So if you track replacing a
battery in an outdoor camera, knowing the time since the last change would be useful.
$ rtimelog report intervals -p camera october today
The above command might report
2022-10-07 19:20 +camera Battery : 29d 12:03
2022-11-06 07:23 +camera Battery : 26d 11:03
2022-12-02 18:27 +camera Battery : 20d 23:51
This shows that we’ll want to check the battery about a week from now.