Time Tracking with Project Hamster
In this article, Les Harris takes a look at Project Hamster, a recent addition to the GNOME Desktop that helps you track your activities over time.
Time Tracking with Project Hamster
According to their entry on GNOME Live, Project Hamster is “time tracking for [the] masses.” It aims to be a tool which enables users to quickly and accurately keep track of the amount of time they spend on their activities over time. Project Hamster is a relatively new module for GNOME, having been brought into GNOME officially for the 2.24 release. Now that GNOME 2.26 is upon us, it is an ideal time to take a closer look at this interesting project. This review will be covering hamster-applet 2.26.0.
Taking the Hamster Wheel for a Spin
Hamster is a panel applet, so it must be added to a panel in order to use it. Its interface is very streamlined. In the panel, it displays both the current activity that is being tracked, as well as the amount of time spent on the activity. The displayed information acts as a button; when clicked it stays depressed and Hamster’s user interface pops up.
The current activity can be selected in the text entry at the top. The entry includes a drop-down list of all defined activities along with their categories. If the user wants to start an activity that isn’t already defined, he simply enters a name for the new activity in this area. Hamster provides an overview of all the activities tracked for the current day. This allows the user to see what they have been doing at a glance. It’s possible to edit the start and end times for each activity in this list using a small edit icon that appears in each row. Under the overview list is a breakdown of the time spent on each category of tasks for that day, which could be a useful feature. Rounding out the main user interface are two buttons: the first lets one add an activity for any arbitrary date and time, and the second brings up the activity overview window, which is discussed later.
Hamster tucks away its minimal preferences in a contextual menu from its panel button. If users are familiar with searching for additional program options in such menus, then they will eventually find it. However, its discoverability is low, as there is no other way to access it.
The first batch of preferences involves creating categories and defining activities within those categories. Creating a category or activity will make a new item in the list appear which automatically prompts for the name. Renaming an entry involves clicking on it, and the text becomes editable—which is an enjoyable little touch. An idiosyncratic quirk of naming is that the text is automatically modified so that only the first letter is capitalized. In this version, there is no way in the user interface to disable this behavior. Activities can be moved to different categories with a drag-and-drop action. It isn’t immediately clear how to remove an activity or category after it is created, but after some exploration, I determined that a simple press of the Delete key will do the trick. I also could not find a way to create a category, or to assign activities to a category outside this window. This likely isn’t an issue for categories since their creation will occur less frequently, but it would be nice if there was an easy way to assign categories to activities from elsewhere.
There are only a few additional preferences for Hamster. You can control when Hamster should automatically stop tracking time. A possible use-case for not enabling this feature would be if the user routinely includes tasks that take the user away from the computer, and the user would like the tracking to continue while away. Also, the slider controls how often Hamster will display its unobtrusive notification, which serves as a visual way of informing the user they are still working on a particular task. Lastly, the global hotkey preference controls which key combination the user can use to activate the Hamster application without using the mouse.
The real power of Hamster comes into play with its aggregate display of tracked activities. The visual breakdown of time worked per day is useful, but having easily understood visualizations for total amount of time spent on a category and activity basis really helps to intuitively understand where the user’s time is spent.
The interface for the overview window is admirably simple. Tasks can be added, removed, and edited by selecting them and clicking the appropriate button. The next and previous arrows are smartly implemented. While in month mode they will move to the next or previous month respectively, and they continue to do the right thing in week and day modes as well. The home button is also implemented in this context-aware fashion and will return the user to the current day, week, or month depending on the view being shown. All in all, it is a good example of the principle of least surprise.
The final button in the overview window generates a nicely formatted HTML report of all your activities for the current day, week, or month that is easily sent out or archived.
As a whole, Project Hamster is a perfect example of the old UNIX philosophy of doing one thing and doing it well. The program is full of helpful little touches. This is the kind of polish that only love can bring to a project. The Project Hamster team should feel rightly proud of the work they have done.
In particular, I enjoy the global hotkey which enables me to stay on the keyboard and make quick activity updates without breaking my flow by moving to the mouse. The text entry in the main user interface includes a drop-down list that suggests activities based on what you type. The highly polished overview window is a joy to use, and the graphs it generates are both functional and good looking. I am also taken with the way Hamster displays the total time tracked per category in the main user interface on an on-going basis.
After using it, there are a few areas where I would love to see some additional attention. It would be nice if the user interface was a bit more discoverable. Many features are hidden in the interface, and only reading documentation will bring them to surface. Depending on how old-school you are, this may or may not be seen as a problem. In addition, Hamster only deals with a 24-hour clock rather than the AM/PM 12-hour clock. It would be nice if there was a user-settable way of choosing which mode in which to work.
The report generator function could be made more useful if there was a way to filter the results by category, activity, and time span. A possible use-case for this feature would be a contractor who only wants to send her client the logged hours for their particular project.
Integration work with programs like Evolution and Tasque would be an absolutely killer feature. A Hamster that can pull activities from Evolution’s calendar, and tasks from Tasque, would be an extremely powerful time tracking tool.
There is nothing really like Hamster out there right now. It fills a unique niche that many working professionals need filled, but in a friendly enough manner to enable anyone to track the amount of time they spend on things. It’s a great little program with a highly active development team. Interested parties are encouraged to check out the Project Hamster blog where Tom routinely writes about features and design work being done in Hamster.
Overall, it’s a great program, and if you can see a use for time tracking, you owe it to yourself to check it out. To learn more about Project Hamster, visit their wiki homepage or blog. Hamster is available for all major GNU/Linux distributions typically with the package name hamster-applet.
About the Author
Les Harris is a long time contributor to the GNOME Mud project, and was recently married.