Archive for the ‘Uncategorized’ Category


Hiking in the Alps

Here is a panorama of Walchensee in the German Alps (taken from the top of Jochberg).

Walchensee from the top of Jochberg


Happy Birthday ZX Spectrum

Sir Clive Sinclair’s ZX Spectrum is now 30 years old.

I have fond memories of playing Manic Miner and Jet Set Willy on this machine, as well as writing out computer programs from magazines.  This little box of circuits is probably what launched my interest in computing and inspired me to learn how to do programming.

Notice that the chiclet keyboard has come back into fashion, albeit without the rubbery keys that would sometimes get stuck, or just wouldn’t respond.

Look how things have changed over 30 years and imagine where we’ll be in 30 years time.

Anyway, enough reminiscing… happy birthday!


RESTful API Design

It seems that everybody loves REST and many people are quick to espouse the virtues of this light weight form of web services.  Implementing a good RESTful API isn’t, however, always as easy as it seems and there are many issues such as paging or supporting multiple versions of your API that can stump the avid developer.  This is an excellent video explaining pragmatic solutions to these and other problems when designing your own RESTful interface.


The Rise of Social Shopping

As more shoppers move to the Internet for their bargain hunting, we’re left (certainly in England) with quite a bit of vacant high street property. Many stores, even big chains, simply aren’t able to price their products competitively enough to compete with on-line stores that don’t pay inner city rents.

Once the shoppers are on-line, a wealth of information becomes available that helps the prospective buyer make their decisions. Price search engines help to find the best deals without the user even having to move from their seat (let alone hike around town). There are countless sites hosting professional and consumer reviews and opinions to help buyers find the potential pit falls of their chosen product. Other web sites help users find new and interesting products that the shopper perhaps did not even know about.



Ikea’s Thin Client Woes

Lots of people tout the benefits of web applications over old fashioned fat clients or desktop applications. Yes, I agree that it solves the problem of rolling out software upgrades and requires little or no installation effort because the user just needs a web browser. People do tend to ignore the disadvantages of thin clients however. With the advent of software as a service it might be worth looking at those disadvantages before jumping on the bandwagon.


Ubuntu Upgrade Breaks Screen Resolution

I had a couple of problems recently upgrading Ubuntu. I temporarily bricked my laptop after pressing the upgrade Ubuntu distribution button in Hardy Heron (8.04). It cost me quite a few hours or time and caused quite a bit of stress to get it fixed. Since then I’ve avoided pressing the same button on my desktop (same Ubuntu version) until I really have a lot of time to kill.

My Firefox was hopelessly out of date on my desktop so I thought I would upgrade the installed packages. Thinking that this would be less risky than a full blown distro upgrade I pressed ahead. I’ve just spent an hour fixing my graphics settings after my graphics card driver stopped working (or something like that) and I thought I should share the solution because I’m sure others will have the same problem.



Detecting HTML5 Features in Javascript

How can you detect if your browser supports HTML5 features in javascript?  Here’s how:

function isHTML5CanvasSupported() {
    return (typeof HTMLCanvasElement != 'undefined');

function isHTML5VideoSupported() {
    return (typeof HTMLVideoElement != 'undefined');

function isHTMLClientSideDBSupported() {
    return (window.openDatabase);

Have fun!


Using EasyMock to Create Stub Objects

There are two competing philosophies with regard to unit testing strategies; state based testing and behavior based testing. In state based testing we configure a starting state, execute a test method, and then examine the resultant state/returned result. In behavior driven testing we ensure that our test object collaborates with its dependencies in an expected way.



Free Money Management Tool


I am releasing for free a Windows application called TerMate developed while I was at Renaissance Laboratories Ltd. The company has since closed shop, but I have the rights to distribute this application in its place. The program is a personal money management tool designed to help people budget correctly and track their expenses.

Principally designed for students, it caters for term/semester based budgeting, but works equally well if we want to plan our expenditures over a fixed time period (e.g. over a month, or a year). For a full list of features, go to the TerMate page.

Anyway, I hope that you all enjoy it. I certainly enjoyed writing it. Lets hope that somebody somewhere will find it useful 🙂


Giant Hail Stones

We just had a very heavy hail shower. This is a picture of one of the hail stones that landed on my balcony.  Downstairs there were some larger ones, but I didn’t want to get hit on the head or damage my camera.  I don’t think I’ve ever seen hail like this before.
A very big hail stone