
Early designs; I started to work out the heirachy of information presented...
After a few versions of working and reworking the UI for the Hudson Global Dashboard, I quickly realised that it needed a rethink of how the UI elements were displayed.
The primary problem was priority: not every element of a build is as important to the others, and not every build as whole to the other builds.
After discussing it with my peers (the people who, ultimately, would be using it), I discovered that they were interested in achieving different goals than I originally anticipated.
- The title was the most important thing. Full stop. Also, it should be able to be read across the room (whilst being displayed on a 19″ monitor.
- The health of a build. Is it passing? And if not, how long for?
- Everything else is secondary.

I tried using the alignment to display health. Aligning right meant everything was all right...
I had the original breakdown of elements like this: a build could be green, blue or red (passing, testing, or failing respectively). This was the background colour. The stats of a build (it’s health over the last five builds, it’s IP address, it’s description) were displayed very small across the bottom of a build for those interested, but it wasn’t important to the passer by. Every build was the same size, and the builds as a whole expanded to fill the screen.
This worked, I guess, as it’s users could, at a glance whilst walking around the office, know which builds were failing.
Surely there had to be, however, a better way to mix elements of the build with it’s appearance. So I started looking.
Infographics are awesome things; they let a casual viewer glance at immense amounts of information, and immediately take in some information without having to read lots of text.
So what is really important when it comes to builds? I figured out, in descending order:
- Which build?
- Is that build passing?
- How healthy has that build been?
- Everything else: the IP address, it’s description, etc…
Which build?
This one is easy to tackle. The title. It has to be big, so it can be read across the room from a small monitor, so much larger font size than everything else. Also, colour schemes have to be contrast-y enough so it doesn’t blend.
Is that build passing?
Also easy to tackle. Colour. I decided a simple red – green – blue scheme, with it getting progressively less luminance as the importance of details decrease; A failing build is red, with the brightest red for the title, and less bright for the details as they go down in relevance.
How healthy has that build been?

I found a nice grid structure shows health nicely.
I had a bit of fun with a build’s health. I do show the build’s health in text (although it is of less importance to if the build is passing right now…), but instead had a think of what the health of a build actually means to the end user (a developer, or a business unit guy, etc…).
If a build isn’t healthy; as in, it hasn’t been consistently passing for a number of progressive builds, then there a problems that need addressing.
Be it lax attitudes of the developer’s part (committing untested code… naughty naughty), or problems with environment consistency (tests pass locally, but fail on the CI machine, or vice-versa), or fragile tests (those that need to be run in a certain order, or fail one-in-every-x-number-of-times), this is the stuff that directly impacts and hampers development velocity.
Hence, size. The larger a build (and hence, less healthy), the more devs and business units are going to be concerned with it. If it is getting larger, then that build needs an investment of time and energy to get it back on track. Hudson’s JSON API lovingly provides a description of a build’s health, in percentage (it is really out of five; 0 means a build has failed all of the last five runs, 1 means one of the last five, etc…)
So we ended up with some really large, red builds indicating neglect (as we have Hudson set to run a build every now and again; I think it runs them daily if no pushes occur). You can also have a moderately large green build (as it has finally passed a run!), but with luck (and work to keep it so) the build will decrease in size and stay green.
Ideally, you want small, green builds. If they are all small, the problems you have keeping them so is small. If you have big, red builds, then you have large problems.
But where it works is when you have multiple teams (or pairs, depending on your structure) showing multiple build sets. In this case, you’ll probably get a mix of healthy (small, green) builds interspersed with builds in need of some love (big and red). This I think would be especially useful for project managers; they can see what builds are in trouble, and send in those who are better at testing to help out and upskill. I’ve found in the teams that you’ll have one or two testing gurus, who can make tests sing and fix those pesky environment problem.
Caveats
Naturally, there are caveats. Some builds are just old and haven’t been removed. These naturally will decay over time and as their dependencies are altered, removed or decay themselves these builds will go red and get larger. I’ll be building in a selection option so you can opt out of displaying these builds when the time comes to cull them, without necessarily having to remove them from your Hudson builds.
Also, sometimes builds will go through rough patches… A flurry of commits to try and sort out a build may temporarily make it look a problem, but then get sorted within a few days. Keeping the business units calm during these periods would, hence, be necessary.
Environment problems are just a pain. They crop up from time to time, and can plague builds for ages until they are sorted, if at all.
How was it built?
I’d already rebuilt it on Padrino, so using that I reworked the templates to give it a semantic HTML5 layout.
I’ve been playing with David DeSandro‘s JQuery Masonry, which lets you build stronger grid layouts by absolutely positioning around floated objects. Have a look; this guy is a genius…
Colour scheme is a combination of four or five Adobe Kuler sets; ever a great combination of colour palettes for a designer.
Where to?
So it’s mostly done. Of course, it’s a prototype, and I’ve written no tests around the app that handles testing (I know! Horror!).
Depending on commitments, I’d like to rewrite it, and clean it up where I had a bit of code smell.
Also, I started to write in a TramTracker block that fits in the layout, so you can see when the next trams outside the office are coming. Of course, some of the guys I work with suggested not showing this block until every build is green…
…
I thought of that, but then we’d never get to go home.