Interpreting Usage Data
There is an awful lot of money spent on user interface research, carefully tracking what users do with an application and trying to find ways to improve based on that. It’s a shame that so much of it is wasted because the captured data is misinterpreted.
The Office 2007 Ribbon is a classic example of this, it was clear that Microsoft had real world data to back up their decisions about the Ribbon, they’d spent millions on it. Yet somehow it just didn’t seem right to me. Turns out at least Damien agrees with me. It turns out that despite the fact that usage data shows that users work in different modes, designing an interface that reflects those modes isn’t ideal.
On Life At Ephox
Rob posted about his second month at Ephox and it made me realize it’s been a while since I’ve taken the time to reflect on how things are going for me. Warning, lots of rambling ahead with no attempt at editing.
Towards the end of last year it had gotten too long between holidays and I was getting stressed out and generally sick of work in general. Fortunately, if you haven’t taken holidays for a long time you also have a lot to take, so I took all of January off to recuperate. Since then I’ve been working on my own for the most part with the rest of the team tied up with other projects. I must admit, I quite enjoy going off and coding stuff on my own, still doing TDD and all the other XP practices except of course pairing. It does however tend to let the odd thing slip through and we’ve seen a few issues crop up that we’ve had to fix. Fortunately, since we run the latest builds internally the problems were caught before clients saw them. I’m really not sure if a pair would have picked them up anyway, but it may have helped.
Pimp Your Office
Nice article from the Chief Happiness Officer this morning on pimping your office. Most of the things listed are just over the top, but I really did like the look of Softwall. If Ephox winds up moving offices we should definitely think about using these – it’d let us have an open plan development environment with the flexibility to close off sections as needed.
Very cool.
Improving The Applet Startup Experience
We’ve been looking at ways to improve the experience for end users when applets first start up. It’s unfortunate that the worst experience with applets is always the first one since that’s when the JVM has to start up and the applet has to download. Once all that happens subsequent usage of applets tends to be lightning fast – particularly with the latest JVMs.
Sadly, that awful Java coffee cup graphic just doesn’t make users happy while they wait for the applet to download. Equally sadly, there’s no good option to get rid of it. You can specify an image of your own to load, but then it replaces the progress bar and it can’t be dynamically resized to fit the applet. Heck you can’t even center it. Worse yet, by the time the graphic downloads and displays the applet is just about ready so the user winds up seeing an empty box for a while then a brief flash of the image and then the applet’s ready.
Attempting To Try Out Mindquarry
I’ve been interested in Mindquarry for a while now, so when they finally released a version you could download I headed straight over and grabbed a copy. Sadly, the copy I grabbed, advertised as for OS X, is actually a generic package for which there are no installation instructions. The instructions that are provided for installing Mindquarry all talk about executing ./bin/mindquarry – which would be good if there were a ./bin in the generic package.
Auto-Updating Systems via Subversion
One technique that I’ve started to use a lot around the different systems here is to store everything in subversion. It’s a pretty commonly recommended technique and the nicest benefit is that if your changes don’t do what you wanted you can easily roll back to an earlier version.
I’ve found though, that my favorite benefit is that it makes it easy to set up automatic updates for systems. Generally I just add an ‘svn update’ as the first step in running the appropriate system. When that’s not suitable, a simple cron job does the job just as well. For our cruise control server we actually have a “config” project which builds every 30 minutes and all it does is update cruise control’s config files.
Java HTTP Caching Libraries?
So I need to improve out caching support and I really don’t want to got through all the pain myself if I can avoid it. Does anyone know of an existing library that just handles client-side caching with the appropriate If-None-Match and If-Not-Modified headers etc. We already have libraries for doing the actually HTTP stuff, I really just need something that knows how to store things on disk and tell me what headers to use to make the request conditional. Oh and we’re an applet so small and without dynamic loading or configuration files would be ideal.
Redemption 101 Movie Premiere
For those who are interested in science fiction, particularly the home-brew, long-tail kind, you probably want to check out the premiere of Redemption 101. It’s an added bonus if you are looking for an opportunity to poke fun at me – I feature as Klang the less than brilliant Aldaran pilot.
The premiere will be at the Schonell Theatre, St Lucia on March 24th. Drinks in the foyer start at 6:30 with the red carpet parade at 7pm. Tickets are $14 ($7 concession) and you can order them online from the Redemption 101 website (contact details for offline orders are there too). You can also preorder your copy of the DVD which will be released at the premiere.
VMWare Upgrades And Multiple Network Cards
If you happen to be running a VMWare Server instance on a machine with multiple network cards, make sure that when you upgrade you reconfigure which network cards your VMs should use, otherwise you may find that despite the fact that the network interface in the VM is up you have no network access. It usually reports “No route to host” or “Destination Host Unreachable”. Sadly, VMWare doesn’t seem to be too bright about how it picks network interfaces and will sometimes pick one that isn’t connected to anything.
Another WordPress Upgrade…
So WordPress let a nasty hacker modify their download and I’ve got to go around upgrading everything again. Now upgrading WordPress isn’t difficult except that every time you do, it puts back all the useless crap on the dashboard that I remove. I have a perfectly good feed reader, I don’t need my dashboard showing me old posts from the WordPress development blog and irrelevant posts from Planet WordPress.
With one blog that would be bearable, but I’m currently maintaining five WordPress installs and I’m sick of it. So after way too long I’ve cottoned on to the fact that the index-extra.php file that causes all the problems is unlikely to change very often and I can probably just store a patch file and then quickly reapply it. That patch is here if anyone else wants it. It simply replaces the downloading and parsing of the RSS feeds with creating an empty array and it removes the mysterious “partner=wordpress” from the end of the call to Technorati to get the incoming links. Why is that there? If there were an upfront and honest explanation of it I probably wouldn’t mind but I really don’t like secret partnering deals going on in software that I run locally1.
Beware The Unused Thread
Many people think that because Java has garbage collection, that memory leaks aren’t possible – this is totally and utterly wrong. One really good way to introduce leaks into Java programs without blatantly holding on to object references is to create a new thread and then not use it. Once you create a thread, it is added to the list of runnable threads. I’m not sure why, but even before the thread is actually started, Java treats it as a running thread and holds on to it. Obviously threads that are currently running shouldn’t be garbage collected, but it seems like an unfortunate side effect that newly created threads also can’t be garbage collected. Once you know about it, the solution is simple – only ever create a thread immediately before you call its start method.
How Our Editor Empowered Our Wiki
For a couple of years now, Ephox has been very successfully using a wiki to provide communication within the company and helping to bridge the gap between our two offices on opposite sides of the pacific. Central to the success of the wiki has been the successful integration and configuration of EditLive! as the editor. It certainly helped that we have a high quality editor with lots of attention to detail but the most important aspect was the amount of attention we paid to correctly configuring the editor.