I’d like to solicit some feedback on a GUI mockup I’ve put together, for the deskop analytics project (click to enlarge):

Without any additional commentary on my part, what do you think of that design? I’ll answer questions in the comments section.
This entry was posted
on Friday, June 13th, 2008 at 6:54 am and is filed under 30daysprint, software.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
June 13th, 2008 at 9:49 am
I think from a graphic design point of view, it’s superb. I (genuinely) envy you your ability in this area.
From an end user POV, I think it might be too much. Am I right in thinking that the “doughnut” pie-charty thing in the bottom right essentially replicates the information in the list of operating systems beside it? If so, I would just take it out and make the horizontal bars bigger, because they do a better job of representing the relative weights.
(If you haven’t read it, I really liked a book called “Information Dashboard Design” which makes the point that humans are actually very bad at interpreting pie charts, despite their huge popularity.)
Best of luck – it’s a clever idea.
(Sorry if this appears twice, was defeated by your recaptcha challenge at the bottom..)
June 13th, 2008 at 10:23 am
If this is one “skin” or visualization on underlying data services, I think it’s would be a great way to show off both the graphical possibilities and the data flexibility. Having said that, the colors aren’t my style and like Richard S said, pie/circle charts don’t work as well as we think they should.
June 13th, 2008 at 5:08 pm
Hi Benji,
Graphically, very nice indeed. Polish like this helps sell, no question.
I see you allow annotations in the charts – excellent idea, especially where you have more than one person looking at the data (and you’ll be making that possible, right?)
Looking at the list of available charts, I don’t see any mention of comparing different features – I’d love to know how many people were using which features of my product. Maybe I’m investing too much time enhancing something that’s rarely used? Maybe people are using a crufty old feature when there’s a better way to do what it does, and I should blast out an email newsletter about that? Maybe that obscure feature I threw in one night thinking that only I would use it actually massively popular? Maybe I should promote a Basic feature into the Pro feature set? I realise it’s by no means easy for your system to quantify “a feature”, but if it just worked at the menu command / keyboard shortcut / dialog level, that would be very useful indeed.
June 13th, 2008 at 10:58 pm
Wow! Looks awesome Benji.
At first I thought the donut chart was superfluous, but it show the PC vs Mac vs Linux much better than just the bar graphs.
Not quite sure what these annotation circles are for though.
June 14th, 2008 at 8:42 am
What framework are you using?
June 15th, 2008 at 12:25 pm
Thanks, everybody, for the kind words about the graphic design. I actually started out in the software industry as a graphic designer. And to tell you the truth, I never intended to work in software at all. I studied playwrighting in college, and was an amateur artist. My planned career path at that time was to work at an advertising agency, designing layouts and writing copy for magazine ads. I thought, by combining my knack for computers with my artistic background and my education as a storyteller, that I’d eventually get involved in 3D animation, working primarily on TV commercials.
I spent some time working at a series of small web development shops, and I was VERY reluctant to get involved in the programming side of things, assuming that I’d hate it. But then I started a new company with a colleague (also an artist), and one of us had to figure out how to develop database-driven websites (which were just starting to become commonplace at the time). After a losing “paper, rock, scissors” tournament, I agreed to take on all the technical responsibilities, and I was **SHOCKED** to realize how much I enjoyed programming.
After a few years developing websites, and spending the majority of my time fighting with incompatible browser DOMs, I vowed never to do any web development again, and I switched my focus to algorithms, analytics, and machine-learning stuff.
It helped that I got a few lucky breaks working for some heavily research-oriented companies, where I was able to mentor under some incredibly clever programmers.
June 15th, 2008 at 12:37 pm
@Richard S:
I was a little hesitant about the donut chart too. I’ve read the criticism of pie charts in general, especially when you can present a bar chart instead.
I spent a lot of time brainstorming, trying to figure out how to display a hierarchical decomposition of OS users. I wanted a chart that could convey the proportion of Windows users, while simultaneously showing the proportion of those users on various Windows flavors. This chart shows that 75% of users are on a Windows platform, that about 63% of Windows users are using WinXP, and that about 41% of those users are on WinXP Pro SP2.
It’s also important to note that I think this chart would be very difficult to comprehend without the listbox and the bar chart. Also, there are interactive elements that I think provide a lot of clarification. For example, right now the GUI shows a selected slice from the outer ring, which causes one row of the listbox to be selected. Selecting a slice from one of the inner rings would cause multiple rows of the listbox to be simultaneously selected, with a tooltip displaying a tally of the percentages for all leaf-node children of that selected slice.
You can’t see the intended interactivity with this static screenshot, but I think it’ll work well once the implementation is complete.
Nevertheless, I’ll continue experimenting with other ways of presenting that data (something I’m calling “hierarchical membership decomposition”). I might find a successful implementation with a “hierarchical histogram”, but for right now, I’m pretty happy with the concentric-donut.
June 15th, 2008 at 12:58 pm
@Peter Christensen:
“If this is one “skin” or visualization on underlying data services, I think it’s would be a great way to show off both the graphical possibilities and the data flexibility.”
That’s exactly what I intend to do.
The embedded client library will report data about the local environment, the start & stop times of the software session, and sequences of events that occur during that session.
A server component will listen for those events and store them in an OLAP database.
Another server component will provide a query API, where the user specifies which client-side variable to tally, as well as an aggregation interval (one day vs one week), and the server returns a resultant data stream.
The reporting server will always return its results as either a “time-series stream” or a “value distribution set”. (Time-series data can be transformed into a value distribution set, by providing a “bucketing configuration”. A good example of this would be tallying up the total number of user sessions on each day of the week.)
After issuing a query to the report server and getting the resultant data set back from the web service, the charting client will send the data stream to a “chart renderer”. There will be multiple types of renderers for each type of data set (for example, in this GUI mockup, the “User Sessions” chart uses a VerticalBarRenderer, a SolidLineRenderer, and two ShadedRegionRenderers).
There will be two types of distribution data as well (QuantitativeDistribution and QualitativeDistribution), and although they’ll share a few renderers (like the HorizontalBarRenderer), they’ll also have some distinct renderers.
In version 1.0, I’m not planning on exposing any custom chart layout tools, but in subsequent versions, users should be able to create custom chart layouts (using existing renderers), and at some point in the future, they should also be able to add their own renderers using a plugin API.
June 15th, 2008 at 1:24 pm
@ColinM Says
“Not quite sure what these annotation circles are for though. “
@Richie Hindle Says
“I see you allow annotations in the charts – excellent idea, especially where you have more than one person looking at the data (and you’ll be making that possible, right?)”
Yeah, the annotations will be user-authored notes. You might add an annotation saying “New adsense campaign launched today” or “Launched version 3.2 today”. An annotation could be “global”, appearing on any chart whose time-series included the annotation timestamp. Or an annotation could be bound to a specific variable (like “browser version”), and then the annotation bubble would only show up on charts that consumed that variable.
I’ve also been thinking about the idea of “automatic annotations”, where the system would identify points of interest in the data sequence (for example, 30-day high, 30-day low, trend reversal, sudden increase/decrease in slope, etc). The concept is still a little fuzzy in my mind, but the icon for an “automatic annotation” would be distinct from the icon for a “user-authored annotation”.
And, yeah, the annotations would be stored on the server, in their own table of the OLAP database. So anyone logged in could retrieve the same annotations (via the web service) and display them in their own charts. Of course, that begs the question of having “private annotations”, which further begs the question of “sharing annotations”.
But those are all enhancements for a future version :o)
June 15th, 2008 at 1:26 pm
@Richie Hindle Says
“Looking at the list of available charts, I don’t see any mention of comparing different features”
I’m on exactly the same page as you, but it won’t be included in the first version.
Initially, the embedded client library will be a simple little thing that you’d invoke like this, at the beginning of your Main() method:
And then, upon application shutdown, you’d invoke:
With that minimal implementation (and no customization), it’ll be possible to report all sorts of interesting details about the local environment, session duration, start/end times, session frequency, etc.
In a future version, there will be something like this, allowing you to log feature usage:
Some of that code would have to be written by hand (since my library has no way of knowing the entry-points for each of your features), but some of it could be accomplished through bytecode instrumentation (depending on the platform of your host application). It’d certainly be possible to instrument every GUI OnFocus event to log the name of the GUI element.
The client library would, of course, buffer all those events, to minimize the number of HTTP requests made.
June 15th, 2008 at 1:53 pm
@Johan Says
“What framework are you using?”
Well, this particular mockup is purely a graphic-design artifact right now. Nearly everything you see here was designed in Adobe Illustrator, though the Vista frame, the reflection, and the shadow were all added in Adobe Photoshop.
Having said that, the actual application will use WPF/XAML in .Net 3.0 to deliver the GUI elements. I’ve done some preliminary GUI prototyping, just to get my feet wet with the framework, and I’m pretty confident that I’m operating within its realistic capabilities (download a prototype stock market charting application here).
Besides the WPF implementation, I’m not actually planning on using anyone else’s charting framework.
In my book, one of the most important principles of product development (software or otherwise) is “don’t outsource your core competencies”. And, since “gorgeous, detailed charts” is one of the most important differentiating factors of this software, all of the charting components will be the result of 100% in-house development.
June 16th, 2008 at 10:39 pm
1. Will your software be available for C++ applications or is it just for .NET and Java?
2. Are you planning to include some kind of a plug-in system which allows the developers to collect custom data based on their specific domains? For example, perhaps I have 3D design app and I want to know how many nodes my customers are creating per project or something weird (and unpredictable on your part) like that.
June 17th, 2008 at 11:14 am
1. Yeah, I plan on supporting C++ applications. But maybe not in the first version. We’ll see.
2. Absolutely. The ability to submit custom data is going to be a key feature. But…….again, not in the first version :)
November 10th, 2008 at 5:24 pm
Any news on this product, I am very interested in tracking usage to our C# app. Are you still actively working on this?
December 2nd, 2008 at 12:40 am
Well, I won’t pontificate on the word “actively” , but yes I’m still developing it.
It’s been a pretty big project (at least, much bigger than the original 30 to 90 days that I had planned).
Between the Java server, the embeddable client library (calling win32 functions, securely communicating with the server, and providing a seamless offline experience, buffering all data locally until the connection is restored), and the C# XAML charting GUI, it’s been a whole lot of work.
Also: economic conditions forced me back into the humdrum workforce from my previous candyland existence as a self-employed consultant. So my regular time commitment for this project has dwindled precipitously.
But I still believe in it, and I’m still working on it, though I can’t speculate about a delivery date right now :o(
Thanks for checking in on me!!
–benji