Cambridge Folk Festival website design

Screenshot of the Cambridge Folk Festival website home page

I’m quite proud of the site I’ve just coded for the Cambridge Folk Festival (client: Cambridge City Council). This work was done as part of my day job at Cambridge University Press.

The original branding is done by Adrenaline Creative. Based on this, I created the website design for last year’s Festival but kept it quite basic as I only had a week from brief to hand-over. This year I had a slightly longer period to update the site to follow the new poster design and incorporate some other changes requested by the client.

The most obvious change was to convert the navigation from a static vertical list to a horizontal drop-down menu system. This was based on the excellent Suckerfish Dropdowns menu by Patrick Griffiths and Dan Webb at A List Apart. Behind the scenes the code had a complete overhaul to ensure it validated as XHTML Strict (validates as of 25/3/06) (all my sites are coded to this standard nowadays). It was also an opportunity to apply everything I’ve learnt about CSS and XHTML in the year since I last coded the site.

One of the requests from the client was to make the site easier to maintain, so I’ve placed greater emphasis on re-useable code in this version. Each page is made of five basic areas, four of which are the same on every page, so are pulled out of the code as separate files (Server Side Includes). This means that every page on the site can be updated just by editing a single file. The header, navigation bar, sponsor’s list and footer are all saved as these Includes.

One concern I had was that the navigation would be difficult for some people to use, so in the body of the Website Map page I used the same Include file used for the navigation, but added some new CSS rules to style it in a more straightforward way. I think this demonstrates the power of combining Includes and CSS.

March Updates

It’s been a while since I posted. Freelance work has been taking up all of my spare time, the last two weeks have been manic, thank goodness the particular job I was working on has now gone to press and I can, oh I don’t know, sleep a bit more.

So, what’s new?

Computer stuff

Well, I’ve started using a new RSS feed reader – endo. It’s written by Adriaan Tijsseling, the same person who makes ecto, the blogging client that I’m using right now to write this article, and 1001, a desktop client for flickr. I’ve used ecto for a while now and have been very happy with it so I immediately downloaded and tried endo.

Previously I was running Net News Wire and when you move from one piece of software to another that fulfills many of the same functions, it’s impossible not to compare the two. You find that many posts to endo’s forums are along the lines of “NNW did it like this but endo doesn’t, please fix this.” You have to accept that endo works differently and it’s a new set of keyboard shortcuts to learn (for instance), but, once you get over that, it does what it does pretty well.

Adriaan is really responsive to requests and comments and it’s interesting following his posts to the forums because it shows that he develops software from a very personal perspective. He needs an app to do something for him, and he has certain ideas about how he wants it to do that task, so that’s the way the app ends up.

Take notifications, for example. endo uses its own method for alerting the user that new articles have appeared. Now Growl provides a similar service but is available to any application that chooses to use it and has many more options for how those alerts appear. Some people have asked that endo provide the option to use Growl if it’s available, but Adriaan’s argument is that it doesn’t do what he needs it to do, so he’s decided not to use it.

That said, Adriaan is not immovable in his opinions. The groups bar provoked a fair amount of comment about it’s usability, and in the latest release (1.0.8) a new preference has been added to address these comments.

And that’s one of the reasons why I like Adriaan’s software – you get to see the development process of software up close. Over the last two weeks since I installed the software, I think there have been 4 point releases – fixing bugs, adjusting options and adding new features, many of these as a result of feedback on the forums. At this stage of a product’s life, that’s the sort of support that I like – it fosters a connection with the developer and gives you a sense of investment in the software.

Which is why I’ve paid my registration fee for endo and will be contributing to the forums wherever I can.

Art stuff

I recently found out about The Ruskin Gallery, which is tucked away in the Anglia Ruskin University here in Cambridge. The gallery is a large, double-height space which seems to be a converted connecting space between two parts of the University.

When I went they were showing the abstract paintings of Bruce Russell. The shows change roughly every two weeks and will be showing a lot of material from the courses and staff at the University.

It’s a funny place, I found it difficult to find as there was no sign-posting when you go to the site, and the room itself is good for displaying wall-mounted pieces but is in continual use as a corridor making it difficult to concentrate on the work. In a way this is good for the people at the University as they get to see the work as part of their daily movements through the site, but bad if you want to focus on the pieces.

On the whole it’s a good place to pop into when you have quarter of an hour free and you’re in that part of town.

Music stuff

Nathan Fake: Drowning in a sea of remixes

Smyglyssna: We can fix it remixes

Malcom Kipe: Lit

Wisp: Nrthndr

Find them all on Bleep.

blog troubles

Over the holidays I upgraded this blog to WordPress 2 and immediately found that all the accented characters in the posts ‘corrupted’.

The solution was to add this line to the file /wp-includes/wp-db.php after line 43. Here’s the code in context:



function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {

$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);

mysql_query(“SET NAMES ‘utf8’”); // unicode support on!

if (!$this->dbh) {

$this->bail(“

This article describes the problem and the solution.