2.28
So the 2.28 is out. Seeing people viewing the site somewhat more actively these days, just wanted to give out shout, to find what you think of the new stable and what’s missing for you in this business.
Right now I’m conveying my coding spree to other, non-Gnome related areas, but knowing myself, some time soon I will be back for hamster.
I personally think that tool tips in overview would be nice, and some richer interactivity with graphs would be nice (like clicking in graph to zoom in or something). Also I plan to add end times for tasks, so you don’t have to do math trying to answer question “if i started at 1:19pm and spent 1h27 minutes on the task, when did i finish?”. And observing my own time tracking habits, will add a quick syntax to mark task as started from the end of the last one. That is – if you suddenly realized that since you stopped tracking the last task, all that time you have been doing something else, you will use zero delta, or simply “- other task”.
But those are really small details.
Oh, then there is the “Shh” thing (sssshhhelll). I hope it won’t loose it’s “s” during development. The hype around this redefining product waves me red flags. But I bet everything gonna be all right at the end. I’m just so damn fond of Metacity and how good it works. But back to topic – will see in what hole they decide to poke applets in. Can’t wait, really!
I’m somewhat concerned that the release notes do not mention Hamster, and use the translatable “Time Tracker” instead. Since distributions like Ubuntu don’t include hamster by default (but it is in the repository), I wonder how many will wonder what’s that Time Tracker thing release notes are talking about.
But then again – hey – who needs more users when we have You! And you have been quite kind to us
A word on statistics
Any visualization that abstracts data is a dialogue of trust between observer and creator. Statistics are used to expose and display information from angle that reveals new knowledge, that could not be seen just by looking on the whole haystack. Since we are now in the era of information overflow, they have become more essential than ever.
Now, that’s quite a mouthful, hahaha. However, you should always question the methodology used to produce results.
In open source we trust in masses of individuals – that somebody certainly has looked on the code of the program you are using to transfer sensible data, that somebody has made sure that your computer won’t fry up when carried in bag, because program suddenly decided to wake it up, or, at least, that somebody else has already been burned, and the bug has been fixed and your operating system contains it, and, that somebody has made sure that the visualizations don’t lie (at least not horribly).
Ok, i got carried away, but it’s all because i did some adjustments to show statistics more appropriately.
Before the recent commit by Patryk patrys Zawadski, we were splitting activities that overlap midnight in two. In the 2.27 cycle i made the split only happen virtually, but Patryk moved it further and now we have a concept called hamster_midnight, which corresponds to 5:30am. Activities before 5:30 fall into previous day, activities overlapping 5:30 tip to the end where the largest part of the activity is.
So, in the first iteration of stats, to just get things done, i did the same old midnight split. That certainly influenced average starts and ends. Now i just pushed to git master slightly better approach – we now can have 24h+ timespan in the starts and ends charts, and facts respect the hamster midnight.
Here is the resulting difference:
How could you possibly tell which is the new (on the left) and which is the previous (on the right) version (hint – compare week end days, also the hacking now has scooted more to the end of the day).
Truth is – unless the data is totally opposite from your gut feeling – you can’t.
Some numbers to look on
After two days of slow hacking, i present you the fruit of my work – the first iteration on statistics.
There are plenty of things to be added and polished here, but i think this is a nice little good start.
If you have nifty ideas for factoids (on the right), you are welcome to share. For now I tried to discern early birds (20% of days start between 6am and 9am) / owls (20% of days start between 11pm and 5am or something) and busy bees (20% of tasks are shorter than 15 minutes). I’m in none of the groups so you don’t see that in screen shot.
The chart thing on top should be redone properly with year and month tickers and better labels.
The “starts and ends” bits maybe should use statistical median or mode instead of simple averages.
Hmm, but all in all I’m satisfied.
Now, give it a go and give me some feedback – tomorrow is the day of 2.27.3 tarballs!
Give me a hug!
Hamster has become a tiny bit friendlier now in git master, by having better DBUS backend and a rudimentary XML, TSV(Tab Separated Values) and iCal export. The latter can be accessed via the save button in overview window.
DBUS interface, courtesy of John Carr and J. Félix Ontañón has following methods and signals that might be of interest:
Methods:
- GetCurrentFact()
- GetFactById(fact_id)
- GetActivities()
- GetCategories()
- AddFact(activity, start_time, end_time)
- AddActivity(activity, category)
- AddCategory(category)
- StopTracking()
- RemoveFact(fact_id)
- RemoveActivity(activity, category)
- RemoveCategory(category)
And signals:
- FactUpdated(fact_id)
- TrackingStopped()
DBUS API is also introspectible via d-feet and friends.
There is a hope now for a Gnome-Do plugin. Let’s hope it sees the daylight soon!
So humm, yes, those graphs in HTML report would be nice, and that analyze thing i was talking about before would be nice too, and stand alone window would be nice. But i’m kind of all “hey, summer!” and such, so let’s see how much of it we will cook until 2.28. It still will be a huge release compared to the previous one.
Ah, btw, i’ve put in support in syntax to add earlier activities on the fly. Here is a screenshot:

You can enter a negative number which will be treated as delta minutes (like in this case: 20 minutes ago, look in the clock). Or you can enter proper time, and even end time, for example”14:30-15:55″. Hamster will adjust the drop-down to show that it has understood your input. No fancy AM/PMs please. Patches for better parsing are always welcome.
Oh and one last thing, really, that has changed my whole desktop experience:
Install the Droid font from your distro’s repository (yes, it’s open source) and change default font in Appearance Preferences to Droid Sans 11 (except for the fixed width one). It is lifechanging!
Edit, Explore, Report!
Today i decided to give another stab to the whole reporting pain.
You see, hamster kind of knows how to count hours, but as with many things in the 21st century we are living, it doesn’t really make any sense out of it.
So after some lengthy contemplation (hamster says 01:27) i figured following:
Overview is fine for editing and reviewing activities, and a quick grasp on totals.
Instead of adding anything more to it, we could split out the rest of needed functionality into two tabs. Together i’ll call them “Edit, Explore, Report” (but that’s just codename).
“Edit” part is the overview – you check, you edit, you don’t look at it.
“Report” part will be all the nuts and bolts of filtering by date, activity, category, picking columns, and finally getting a HTML PDF of your liking. Or something close to it.
“Explore” part would be to get a general feeling on how are you doing and is the topic of this blog post.
Now, hold your pants – here comes the mockup:

Figure 1. “The mockup”
Now, before you start – we are talking functionality – what info to put in this “Explore” tab.
First is statistical average hours worked per day, then comes the same thing only in month view (might exclude days that are weakly populated, like sundays to avoid holes).
Then there is that graph which could show what type of bird are you – early or late one. And then i have idea of some human readable slur which could be nice to read.
It would be possible to drill data down by year and category, but no more.
Generally i’m looking for something in direction of dopplr anual report – something that would make you go “ooh, i see” and “aah, how insightful” or something like that.
I would love to go with a 3×3 grid to make it look smarter (or, alternatively, give more useful info) but i forgot what i would like to put in there.
So, errm, what did i wanted to ask… oh yes!
- Any ideas for interesting totals / averages or other figures?
- Any suggestions?
If you would like to stab my mockup, here cometh SVG: mockup.svg
How to let user know that there is a feature
In Project Hamster a little while ago we added ability to add description to activity on the fly, by typing it in after comma.
So, for example, if you would like to start doing handstands but with no hands this time, you maybe would type in:
“handstands, no hands this time!”

Figure 1. – You can add description to your activity after comma
Hamster will look on the magic comma (nothing magic about it) and figure, that everything that is after the comma, is a description. Descriptions appear in UI and in the HTML, errm, report thing. I think comma is good, because you could use it in a sentence “My friend is nice, a little stupid though” and mumble the last part and get happily away with it. This is exactly how the descriptions work here.
The approach “of the flying comma” is not quite discoverable by itself (unless you feel like experimenting, and most people really don’t, and we should not encourage them to break their data anyway), so my question is – how do we tell him/her about this terrific feature?
First i tried to put some text under the input box itself. But it didn’t look too good and was begging for way too much attention.
Then i thought – how about i put it, where somebody might be looking for it – under the description field in Edit Activity dialog:

Figure 2. – There is a Hint ‘on the dance floor’
What do you think? Maybe alternative wording? Maybe not bold? Maybe gray and proper size? Would it be enough? Any other ways? What do i, oooooh, do?!
Oh, and yes, happy egg hunts, egg squashing, egg fights or whatever you do with your eggs.
Update: This is how it looks now (Apr 14)

So, basically, if there is no current activity, a hint what to do is displayed under the textbox, and a “Tell me more” link leads to following alert.
What do you think?
Ubuntu Jaunty and the new notification sweetness
Just updated my desktop to the Jaunty beta and i’m really happy with how good everything works.
The extra eye-candy of the new notification system looks really impressive and does enhance the overall feeling.
What somewhat took me by surprise, is the path Ubuntu devs have taken with the notification boxes that had action buttons in them. Behold!
Old pre-jaunty version:

New, “sorted out” version:

What strikes me particularly, is why was it not possible to keep the old behavior for these cases. Especially since not every monkey is running bleeding edge.
Update: In TRUNK we now perform check for action support before trying to add them.
Pulling blanket
Ah, allmost forgot to roll tarball – we are getting so close to 2.26, yay! As for me, i’m waiting for ext4 support in all the next big distros. Anyway, back to topic.
So you see, i’ll be spending ridiculous amounts of my time, reinventing all kinds of wheels. And all that thanks to two terrific books. First one is Programming Collective Intelligence by Toby Segaran and the other one is Visualizing Data by Ben Fry. Both will let you start low and cover all kinds of little things and, if you are like me, leave you flying high in the air, thinking happy thoughts.
I knew some of both, but the little details – like always finding out minimal and maximal values of the dataset you are operating on, or the greatness of working in HLS (Hue Lightness Saturation) spectrum as opposed to RGB (Red Green Blue) – these little things make a difference (btw check out Python’s colorsys module to get funcs that do conversions).
Anyway, i feel like i’m done with Edit Activity dialog for a while – yes, i know, there are bits missing in the preview. But i think that currently we are in balance between “want” and “need”. And so, i’m moving on to overview window – how to make it more engaging and still simple to operate with.
So i was thinking how to change the interval i am currently viewing and came up with another mockup (if you count in previous one).
Behold, the blanket pulling approach:
Dotted line marks approximate middle of the graph
Imagine, that you are pulling from left side to center – that kind of does feel, like “give me more of the stuff you have on the left side” doesn’t it? So instead of scrolling it would pull addittional days from past. But when you pull it away from centre – it feels like wanting to get rid of it, and it would move them out.
The feeling should be something like what you get when you scale pictures in GIMP.
What do you think about this?
Can’t, won’t, don’t stop
I’ll share a crazy mockup i came up with today. Don’t worry, it’s just a mockup.
Since it is not perfectly clear, i’ll explain what is going on there.
Imagine, that time is like a thread – it is depicted by the solid line. Dotted line marks maximal size of bar. When using mouse you would pull either one or the other end, bars would fold and unfold, like when opening a zipper.
Heh, so i say it’s way cool. Just it will take me some time until i get there. Not code wise – mentally, i need to observe some more.
In other news, i updated edit activity some more. Now you can slide the scale and whatnot. Lines 42. – 48. in the activity editing code outline some TODO’s i’m planning get to in coming days – feel free to help in any of those, hehehe.
Editing activities
I mentioned some bits about “edit activity” dialog revamp in previous post.
Check out video to see it in action!
Click to jump to Vimeo video.
P.S. Have you heard of Gumby (search for it in the page)? Aahhahaha, so cool, had a major laugh yesterday.





33 comments