hamster 1.03 – bugfix release; affects fresh installs

grab the latest version from the tags page

  •  fix issue #61 – installation was missing initial database for fresh installs
  • desktop notification now once again correctly notifies of “No activity”
  • updated Bulgarian translation

apart from that i decoupled the sqlite backend even further, so say if you would like to create your own time tracking app, you can at least reuse the models. the project is available via pypi here: http://pypi.python.org/pypi/hamster-sqlite/

it’s being built from the same sources that hamster is, so it’s always fresh

hamster-time-tracker 1.02 out

Just tagged hamster 1.02, which is pretty much the extent of releasing hamster. You can grab a tarball from the tags page https://github.com/projecthamster/hamster/tags.

Please note: This release is not backwards compatible with GNOME 2.x (or rather it will work but there is no applet anymore)

The applet is dead, long live shell extension (available on extensions.gnome.org).


This release does not add any new features and just tries to cope with the loss of the applet. Also the organisational changes i made (moving away from gnome and into github) were done so to avoid extinction of the project (even if slightly dormant, hamster is not being abandoned).  There are a few bug fixes here and there and some improvements to the command line however.

This is also the first release targetting GNOME v3+. The applet has been removed and recommended hamster remote is the shell extension, available on extensions.gnome.org.

  • Project Hamster has detached from Gnome and thus we are resetting the versioning. The program name also has changed from hamster-applet to a more generic hamster-time-tracker
  • Improvements in the command line. hamster-cli has been renamed to simply “hamster” and without parameters launches the day view. Run “hamster –help” to get help on available commands. The executable also supports tab-completion to suggest actions as well as to look up activities and categories
  • desktop notifications are back
  • the notification tray interaction has been slightly improved (click to toggle)
  • ~20 bug fixes https://github.com/projecthamster/hamster/issues?state=closed

A small step for humanity and a huge leap for hamster.  Happy using and fork us on github!

Release on Dec 20 2012, call to packagers and translators!

On Dec 20 i’ll be shipping a stable(r) version of project hamster. By shipping i mean the github repository will be tagged and there will be a targzipped package in the downloads section.

One big thing that is going to happen, is the renaming of the package. It used to be “hamster-applet” and now it will be “hamster-time-tracker“. This also allows me to abandon the GNOME versioning scheme and we start numbering hamster-time-tracker at 1.2.

Translators – the strings have stabilized and i don’t expect them to change in the next two weeks, so your love will be appreciated a lot by the folks using hamster. To submit a translation, simply fork the hamster project in github, perform changes in your forked repo and then create a pull request.

Packagers – i hope this finally marks hamster packages going away from git-timestamp packages. Future releases will be anounced here as well as in the g+ page

Hamster git users – follow these instructions to clean up previous hamster paths to avoid any confusion.

I’ll be updating release notes shortly, but this version is essentially all about putting hamster back on track after the numerous changes in gnome and the whole ubuntu departure.

Apart from that the command line interface has gotten quite a bit of love. The “hamster-cli” command has been dropped in favor of simply “hamster”. When run without params it will open the today’s view. Run “hamster –help” to find out the params and goodies. It also supports tab-completion.

Check out issues open and closed – for what has been fixed between here and us moving to github and what’s still on the list

Comments are welcome, so are rants, sobs and courses – hit me!


Ah yes, also mad props to all the flatterers for reminding me to keep going!

Hamster moving to github

Hamster code has been moved to https://github.com/projecthamster

The app is under “hamster” (the name might change but i think it’s ok). And you can also see shell-extension there. If you happen to be hosting any of the hamster extensions for other targets, you are more than welcome to transfer the ownership and i’ll get you on the team as well 🙂

Right now it’s just the code, but i plan to move over also bugs and start releasing versions there.

I would like to thank the GNOME foundation for including hamster in gnome 5 years ago. It gave the project unprecedented exposure and the army of translators made sure it is available in all the major languages. A huge thanks for that!

As for the reasoning:

The gnome infrastructure is functioning perfectly fine. Just it doesn’t have the horsepower that is driving github and can’t possibly compete with all the development there. Apart from that, the hope that hamster will become core part of the desktop didn’t come true.

Also i think hamster will benefit from a more relaxed release pace and not having to comply to any of the freezes or dealing with any of the bureaucracy that simply doesn’t apply for a project code of which at the moment of writing 98%  consists of work done by 2 contributors.

At campus party Berlin

Hey – i’ll be attending all 4 days in campus party berlin (http://www.campus-party.eu/) – so give me a shout if any of you hamster friends are around and would enjoy a chat on ‘tings and ‘tings (not necessarily just hamster)

Extension now live on extensions.gnome.org



You still need to install hamster from sources but this is a big step forward.

Go get it!



After installing reload the page and you will get to prefs too, in case you don’t like hamster right in the middle of the panel or would like to just have the icon.

It’s still work in (slow) progress of course.

fighting unlinked references that lead to memory leaks

I was hunting down a problem with hamster dialogs. The problem was quite annoying – you open, for example, the overview window. You pick a good range, like 2 years or so that will make it think for a while (oh wow, just checked – i have 6 years of datas now in my install). After that you close the window and would expect it to be gone for good (with all the window.destroy and everything).

Turns out the window still is “somewhere out there” and whenever you make an update, that overview window, although not really accessible from the code anymore, is still listening to the events and doing it’s refreshes.

While tracking down the problem i found objgraph to be an immense help. This handy utility, using graphviz, can generate you a map of objects referencing the one you are trying to get rid of, like this one:

In the image above, all the __self__ backrefs most of the time are harmless, as they will fall off as soon as you have cut off the main variable (you can look at it as a dependency branch). The problem in the case described above was however the leftmost OneWindow instance that had an array of dialogs stored and because of which the object wouldn’t go away.

The utility can do much more, of course.
In the context of pygtk here is the few lines i ended up plugging in while debugging all the windows:

        import gc
        import objgraph
        objgraph.show_backrefs(objgraph.by_type('Window'), filename='sample-graph.png', refcounts=True)
        print objgraph.show_growth()

the first two lines import garbage and collect it so we make sure that we are not looking on obsolete links. The fourth line is generating the image that you see above.
And the show_growth is very handy as it shows you the growth of objects counts every time you call it. If an object does not get unreffed properly, there are good chances that it will just keep growing.