Thursday, November 22, 2007

Experiences with Chronoscope

The Chronoscope online documentation is a bit thin at the moment. I am sure the guys over at Timepedia are working on the documentation, so this is likely to be improved quite soon. Here is a list of things that stroked my attention while using Chronoscope, things that are not documented but one should be aware of. Note that the Traceurl Google Gadget is a plain JSP and I have not been using the GWT or JavaScript but the Microformats version of Chronoscope instead.

  • Apparently the missing IE support is issue number one. On the Chronoscope Group Ray Cromwell said that they are 'targeting IE support in the next month or so.'

  • Traceurl.com supports two languages (English and German) and the Traceurl Google Gadget even three languages (English, German and French), thus a proper solution for internationalization is very important for me. At the moment Chronoscope's I18N/L10N support is weak, respectively close to non existent. Ray Cromwell comment about I18N was 'We plan to support it. [..] I view I18N/L10N very important, and we will most likely be using GWT's builtin L10N features to do this efficiently.'.

  • Related to the currently missing internationalization support is the problem that the axis identifiers are not interpreted correctly. Using microformats the first row of the THEAD element specifies the axis labels. The label for the value label is set correctly, but the name of time axis is ignored. Setting the German word 'Zeit' instead of 'Time' the chart is still displaying 'Time.'

  • In the first attempt I used a HashMap to keep track of the number of accesses per day. With the effect that the generated TBODY element contained unsorted rows. That does not work, Chronoscope needs its input to be sorted by time.

  • The second thing I realized is that the input should not have gaps. The time line has to contain all dates, setting the value of the dates without accesses to zero. Otherwise Chronoscope kind of interpolates the missing values, which is obviously wrong for my accesses per day use case. For example, say we have the date 06/09/07 with 12 accesses and the date 06/11/07 with 6 accesses to a traceable URL, not setting the 10th to 0 will result in a wrong graph with an interpolated value of 9 accesses for the date 06/10/07. That is not necessarily an error, but just the way Chronoscope handles its input and something the developer needs to be aware of.


The latest release is a beta version and I am sure things will be improved with upcoming versions. The above list is not meant as criticism, but as assistance to people who want to get their hands dirty with the beta release. I am a programmer myself, so I am well aware of the tremendous amount of work that went into Chronoscope. Chronoscope rocks and I am going to use it further on. In one of the next post I will give you some insight into my implementation. A short cook-book style abstract to get you (in case you are a developer) up and running with your own Chronoscope time series chart.

2 comments:

Ray Cromwell said...

Thanks for the feedback, I think these are very important issues that need to be resolved for Chronoscope to be more widely applicable.

The issue with interpolated values is a complex one due to the zoomable nature of the chart. One of the current problems is that X axis values should be capable of being aligned on hard date intervals (monthly, daily, etc). The other issue is when zooming out, the lower detail levels need more flexibility. You should be able to specify whether you want a zoomed out view of say, daily data, to be aggregated by mean, median, sum, max, min, etc. That way, if you're looking at say, daily web traffic, you can specify "SUM", and the zoomed out view will display the monthly total.

I would appreciate it if you could help make sure I don't forget the issues you're brought up by inputing them into the issue tracker at http://code.google.com/p/gwt-chronoscope.

Thanks alot, and Happy Thanksgiving,
-Ray

a.buerki said...

Hi Ray!

Sure I can do that. I have just inputed the 'Interpolated values' issue into your issue traker.

Adrian