Someone asked/told me “What time tracker software do you use? I use hamster, and would recommend that”. This caused me to fall into a deep rabbit hole, looking into hamster and other time tracking software. I started documenting my journey, and I will compile it into three blog posts:

  • This blog post contains my general thoughts on time tracking.
  • Next blog post compares different time tracking software.
  • Last blog post will tell detailed experiences from using some of it, and my future time tracking plans.

Executive summary

Some of us needs to track time worked per project/task. Time tracking can be done in three manners:

  • Proactively planning ahead and sticking to the plan
  • Concurrently writing notes on how the time is spent
  • Retroactively create those notes after the work was done.

I strongly believe that rather than sticking to one of them, the best is to do all three: plan ahead, track the time spent throughout the day, look behind and amend the information at the end of the day.

There exists more than a handful of solutions allowing the user to “start” and “stop” activity timers concurrently throughout the day (basically, record timestamps), and little else than that. The start/stop-approach may be good, but it’s very optimistic to rely on such a solution over time - I strongly believe that at the end of the day it’s needed to reconciliate the manually recorded data with information from other sources. While most of them have some support for integrations, none of the solutions seems to be considering this kind of workflow - perhaps with the exception of Emacs org-mode.

Other tools may check activity patterns at the computer - it gives interesting statistics, but it’s useless for generating data for an accounting system.

I believe a time tracking system should be tightly integrated with whatever task system is being used as well as the calendar. Some of the solutions I looked into had some integrations towards specific task managers, some had possibilities for iCalendar export, and only one had possibilities for iCalendar import. None had integration with a standard calendar. I think it would make sense to be able to start/stop time tracking directly from calendar applications and task managers - though the iCalendar standard needs amendments to be able to track time across applications.

Why?

When working, I’m supposed to enter my activities into some accounting system. Since I’m working for external customers, I also need to enter billing information in the accounting system. I heard from some colleagues that needs to enter information both into our accounting system but also into the customers accounting system. For some of us it’s pretty easy, just to fill in 7.5 hours or 8 hours on some specific project on a specific day. In my department we often do work for multiple different customers every day, and we frequently face interruptions, it’s sometimes quite hard to keep track of what I’ve been working on during the day. Home office got very popular during and after the Covid pandemic and brings its own challenges - I don’t know how you do it, but at least I don’t reserve a continuous block of 7.5 hours a day for work, I swap between private and work tasks throughout the day.

I think that even without any reporting requirements, time tracking may be useful. Sometimes days passes and one sits at the end of the day without having done anything on the todo-list, wondering “what did I actually spend all those hours on?”. Perhaps usage of a good time tracking system may be a motivation for working more on the tasks that should be done rather than goofing off reading news, social media or other distractions?

I’ve had different routines over the time for doing time tracking. None of them have worked out perfectly - and I never managed to stick to any of them over time. Now I got suggested this hamster thing - could some existing software solution really solve my problems? Well, why not, it must be better than reinventing the wheel. I decided to spend some time doing research into what solutions there are out there and seeing if anything would fit for me.

Retroactive, concurrent and proactive time tracking

Proactive time tracking: Come up with a good plan and stick to it

There are three different models of doing time tracking:

  • Proactive time tracking - Make a plan and stick to it: “Tomorrow I will work three hours on project A, then eat lunch, and work on project B the rest of the day”. Some accounting systems even allows one to prefill activities for the upcoming weeks.
  • Concurrent time tracking - Record the time spent throughout the day: “08:17 - starting on project A. 11:55: oing for lunch. 12:32: Continue on project A. 12:45: Finished A, will be working on project B now” Some software offers using stopwatch timers to track the time, some people may file the information directly into the accounting system as the day goes on.
  • Retroactive time tracking - Look back at what you’ve achieved: “It’s already November, and the accounting department needs to know what I did in October. Let’s open up this blank timesheets in the accounting system and let’s try to fill it out as good as I can according to my memory”.

What strategy do you follow?

There is no silver bullet to time tracking

Both retroactive, concurrent and proactive time tracking comes with problems. Proactive time tracking fails because things never go according to the plans, and there will always be interruptions. Concurrent time tracking fails because one often fails to press that button. You may have been struck by a “train of thought” and needed to do some quick commit on another project, a telephone call, someone knocking, fire in the kitchen - there may not be time to enter any details in the time tracker system before dealing with the interruption, or most frequently one has simply forgotten it. Still, of all possible ways to do time tracking, probably the worst disaster of them all is to sit staring on the empty timesheet in the beginning of November and consider … what did I actually do in October?

I think the ideal is a combination of those approaches. Planning ahead. Starting and stopping the timer when remembering it. At least daily look through the report on “what did I plan spending my time on yesterday, what did I record that I spent time on, and what did I actually spend time on today?”, editing the tracking data to become closer to reality.

Time tracking will never be exact - it’s always an estimate

For quite some professions, the definition of being at work and not being at work may be crystal clear, but for me it isn’t.

Focus and thoughts moves and meanders all the way between one task and another and people frequently takes small breaks to drink coffee, see the toilet, read newspapers or personal messages. While eating lunch you may discuss work matters with your colleagues, or if eating solitary the thoughts may be on work tasks. And when sitting at the computer trying to concentrate on work, the train of thoughts may be disturbed by private problems.

Other times the context switching may be too intense for any reliable time tracking. I’m sitting there working on project A for customer B, but getting interruptions all the time - talking with customer C on the phone, getting some private messages that needs to be replied to, responding to an email from customer D, as my train of thoughts drifts to project E I fix up some small issue there, etc.

Try to get things near perfect, and one ends up spending excessive amount of time micro-managing the time tracking system.

At least for me as a system administrator, perfection is impossible, and I can live with that.

Time tracking may be a very personal thing

While investigating I found some time tracking software meant to be used by organizations or collaborators. I do agree that it may be useful to share information on what one is working on, as well as how much time one has spent so far on a task - and in the end of the day, the information should be sent into the accounting system.

While total numbers of hours spent per day by activity, my availability throughout the day, and to some extent what I’m working on right now is something my colleagues and managers may want to know, I consider the details to be personal. Particularly in a home-office setting when one may frequently swap between working on work-tasks and doing personal errands. Particularly when the time tracking is doing detailed automated data harvesting from my laptop. There may be very legitimate reasons for not wanting to share everything. Even if you’re fine sharing all the personal details, relevant laws like GDPR may cause legal problems for an employer being on the receiving end of this.

My conclusion is that a good time tracking tool may output data to corporate systems and collaboration systems, but detailed time tracking is a very personal thing.

Now, that’s based on my perspective and my work situation. Some managers may have a wish to monitor that the workers are doing what they are supposed to do. I did see some closed-source time tracking software that could take screenshots at various intervals as a “proof that work was being done”. I would not recommend time tracking systems to be used as this, but in such a scenario it makes sense to have a more “enterprise” time tracking system where all members of the organization utilizes the same solution, with centralized storage.

Personal time tracking vs work time tracking

The traditional line of thought is that “personal time” and “work time” are two very distinct things - so you need separate calendar systems for each of them and certainly also separate time tracking systems. Even before “home office” was a big thing, I did enjoy doing private things from the office and work things from home, as well as flexing the work hours - and while my private time tracking should not hit our corporate accounting system, it may be interesting to break down my private hours as well. It’s important to consider data security - potentially confidential work data should be handled as such, and with GDPR and such one should be very careful letting personal data spill into the corporate sphere as well. Time tracking is a more personal thing - except for the export to the accounting system the time tracking data may stay on your encrypted hard disk without anyone else needing to look into it - I don’t really see a problem of mixing personal and work related tracking in such a scenario.

Time tracking should not be in the way

Perhaps one is supposed to concurrently entering things manually into our accounting system throughout the day. For me it’s a no-go. Just having to go to the browser and find the right browser tab is a distraction, it takes time and focus. I believe I speak for most of my colleagues in my company when I say our accounting system is not made to be easy to use for people like us.

People are different. For me as a sysadmin, the easiest thing to do is to manage my time tracking through quick CLI commands. It works out for work done on my laptop - and for my ordinary day work everything is done on the laptop. To track time spent on other tasks - like dishwash and varnishing the boat - a cellphone app would probably be the best thing. The ultimate solution should have multiple interfaces so it can be used by different people and in different situations. And of course, whatever solution one goes for, it shouldn’t require too much time to use the system.

Don't spend too much time on the time tracking itself

A bird’s perspective on time tracking

I will stick to using the word inputs and outputs when comparing time tracking tools. After all, time tracking seems quite simple, it takes some inputs, typically timestamp logging, perhaps it does a little bit of processing before storing the information in some storage backend. It may have interfaces allowing the user to inspect and correct the information, and finally to output the data in nice-looking reports or (if one is lucky) as a direct export into the accounting system using it’s API.

Time tracking inputs

If a program expects you to press a button every time you start/end a task, the timestamp produced will be an input - for many of the solutions I’ve checked out, that’s the only input. If that’s the only input, then the tracking is done completely manually. At the extreme end of the scale there are programs checking what you’re actually doing at your computer, and I suppose it should be possible to ask some AI to generate a nice time tracking report based on this.

There are many other data points that can be used by a time tracking system:

  • Calendar. The calendar has useful information on planned events, and some calendars may also have a task-list - perhaps also an overview of tasks done during the day. This may give valuable inputs to a time tracking system.
  • Git commits. This has been useful when trying to figure out “what did I spend time on previous month”. However it may be automated a bit more. For instance, by utilizing local branches one may add commits frequently enough that it’s possible to automatically track time usage per git repository - it’s even allowed to have empty commits in a repository.
  • GitLab/GitHub - GitLab offers the possibility to add time tracking information to issues, GitHub doesn’t. Often quite much time is spent inside those web tools organizing issues, projects and such, documentation, comments, etc.
  • Tickets in the ticketing system. Our system even have a field for “time usage”. Since the billed time more often than not should reference to a ticket, I actually track most of my time in RT as of today.
  • Other communication. I’m sometimes going back checking my emails, Mattermost conversations and IRC when I’m uncertain what I’ve spent my time on.
    • Content: It’s possible to use specially crafted things in the content. I had an idea that we could flag on the IRC team channel what we were working with, like “!start acme” and “!end acme” when working on customer acme (I did this for a while on my own private channel, but of course quite often I forgot to log the work done). Today it’s of course also possible to use AI to make sense of the content
    • Metadata: What IRC/Mattermost channels have I been active on, what are the domains of the receivers of my emails, etc?
  • System logging - quite some events may give indications on start- and stop-times for work:
    • Laptop lid closed/opened or going into suspend mode
    • Screenlock enabled/disabled
    • Signals from USB or Bluetooth indicating my presence
    • Network traffic
  • Browser history.
  • GPS information from the cellphone

Also, different interfaces for manually starting/stopping time tracking and/or editing it can also be considered “inputs” in this regard - CLI, editor, web-interface, phone application.

Tracking information

A good time tracker should keep an overview on when you worked with what - though in the long term it’s often only the number of hours per activity per day that matters.

The “what”-part of it is not as trivial as it may seem. What is a “project”, a “task”, an “entry”, an “activity”? Some of the time tracking tools have user guides describing how the author thought it to be used - but in the end it’s up to each user to define what those words mean and how to use them. One of the tools also had a field “annotation”.

We have some extra bits that should go into our accounting system - working hours may be overtime (with different flavors of overtime) or normal, and the work may be billable or not, with different rates for overtime billing. I think there are no one-size-fits-all here, different companies, jurisdictions, people from different trades, may have different needs for different fields.

Some of the tracking solutions has a concept of tags - tags may cover basically everything and are a very flexible way to organize data - but it requires the user to be thoughtful and consistent, otherwise it will because a mess really fast.

Time tracking outputs

A good time tracking system should be able to …

  • produce nice reports, filtered in different ways
  • export data directly to different other time tracking systems and accounting systems
  • export time tracking data to other systems that can can keep tack of the “time worked”-attribute - like ticketing systems, GitLab issues, etc.
  • give information on what work task time time tracker is currently tracking - either to remind you what you’re supposed to be doing, or to remind you to update the tracking information.
  • possibly, give information on “what are person X working on now” as an API available by colleagues

Some of this can be generated on-demand as a report, other things may be exported directly when thing happens through triggers.

I’ve seen software with plugin for posting data to IRC. It may be useful to inform others on what one is working with. I once had the opposite idea, telling others what I was working on by IRC and use that as an input for the time tracker tool.

Standards

I believe it’s very important with standards - for one thing, it should be possible to take the data from one time tracking system and push it into another. For the other thing, it should be possible to make integrations into a time tracking system. There seems to be no standards for recording or transferring time tracking information.

I strongly believe this belongs to a good calendaring system. For calendars it’s particularly the iCalendar format (RFC 5545 with updates) that is relevant. Sadly, neither RFC5545 nor any of the updates says anything on how to track time spent. I strongly believe the standard should be extended to either have a binary property indicating if an event/task contains time tracking information, a new participant status ATTENDED, or to allow a journal entry to have a DTEND.

Final thoughts

“Time tracking” may seem like a very simple thing, but it isn’t. Anyone that has had the pleasure to fill out timesheets containing various work done for various customers for a whole month retroactively in an accounting system should know. For some people it probably works logging things directly into the accounting system throughout the day, but for me that involves too much pain and overhead. I’m very much convinced that the best solution for me - and probably for quite many other people as well - would be to both plan ahead, log things concurrently, consolidate information from various systems, and make an amendment at the end of the day (or, if not possible, by the beginning of next day).

You may ask “Why is this on the tech blog? This doesn’t look much technical?” - well, it gets more technical in the next post. I have looked through the software solutions that I could find and there will soon be a post on it. Does the software work at all, how easy is it to write integrations, is it actively maintained, but also quite important - what approach has been taken to the concept of “time tracking”? Is it in line with my ideas above, or completely not?

Image credits

xkcd strips Randall Munroe, https://xkcd.com/1658/ and https://xkcd.com/874/ - and I deem the usage to be within the license at https://xkcd.com/license.html.

Tobias Brox

Senior Systems Consultant at Redpill Linpro

Tobias started working as a developer when he finished his degree at The University of Tromsø. He joined Redpill Linpro as a system administrator a decade ago, and have embraced working with our customers, and maintaining/improving our internal tools.

Creating and using a script to Install Arch linux through wifi

There are many different ways to create a bootable USB flash drive. I will in this guide, not show you how to create a bootable USB flash drive.

After rebooting your computer from the USB flash drive and when the installation medium’s boot loader menu appears

archinstall

The default console key-map is US. You can change that using for example:

loadkeys sv-latin1 

Use iwctl to connect to a wireless network (If you ... [continue reading]

How to setup a Matrix homeserver

Published on April 08, 2025