Mountain biking renaissance

Trek Antelope 830

The only way you can tell it's 19 years old is its lack of technology.

When I was sixteen my parents bought me a new mountain bike as a congratulations present for passing my GCSEs. It’s a Trek Antelope 830, an American design which was, so I’m told by the grease monkeys in Halfords, something of a classic model from the early 1990s. It’s seen little use since I learnt to drive and languished in the car park of the apartment building in Manchester for a full seven years before I moved to Sutton Coldfield, disused and neglected.

I’d been meaning to get it fixed up for some time ever since moving because almost on my doorstep I have the largest urban park in Europe, Sutton Park, and the place is perfect for spending an afternoon biking around. It has roads and bridleways and once you’re bored of those it has hundreds of square miles of terrain to explore. So after having earned a bit of overtime during a busy period at work recently I finally got around to taking it to the local branch of Halfords to get it fixed up. For £160 I secured the following:

  1. New gear shifters.
  2. New saddle and saddle column. The last one “went missing” years ago from the W3 car park.
  3. New rear inner tube. Surprised that it didn’t need both tubes replacing, actually.
  4. Full service, plus another free service in 12 months time.
  5. New cycle helmet.
  6. Front and rear LED lights.
  7. Bicycle pump. They look completely different these days to what they used to.

The original gear shifters were broken and the parts were no longer available. The staff at Halfords remarked on these because they remember when that particular model of shifter first came out as they were apparently one of the first 7×3 shifters. They have been replaced with modern equivalents. This is a shame because it means that the bike is no longer completely original, but they are of course a necessity if I want to actually use it.

So yesterday I took it for its first proper outing to Sutton Park and I had a fabulous time. The bike’s great to ride, despite having a distinct and noticeable lack of modern technology that seems to be ubiquitous on modern bikes, most notably suspension and shock absorbers. As a result it’s a bit of a bone shaker when compared to a modern bike. It also has the old fashioned rim brakes, whereby the brakes are rubber blocks applied to the rim of the wheel, as opposed to the more modern disc brakes, which look like and act on the same principle as car brakes. This means that the bike can be a little tricky to stop quickly in an emergency. However,  I never intend to have it in a situation so extreme that I cannot easily plan my way out of it. I know the bike has limitations compared to a modern equivalent and it’s just a case of taking them into account.

The bike rides fine, just like it used to, except the chain seems to slip quite frequently and it’s difficult to get it onto the third (largest) cog on the front sprocket. Indeed, at one point it failed so miserably to do this that the chain came off and became wrapped around the pedal shaft, which required half an hour with the bike up on end and some very oily hands to work out and sort out. I’m not sure what might be the solution to this. They didn’t replace the chain at Halfords so it may well be the case that it’s just a bit old and needs replacing. I am consulting friends who are more into mountain biking for advice on the matter.

Lessons I have immediately learned from this first expedition are as follows:

  1. Take more than a litre of water for an afternoon. You get thirsty really quickly.
  2. Take a pair or two of those medical rubber gloves. When the chain came off my hands got absolutely covered in oil fixing it and I had no way of getting it off until I reached the bistro where I had my late lunch.
  3. There is barely any mobile signal in Sutton Park and so it’s difficult to use Google Maps. Sutton Park is extremely large and will take some time to learn properly.
  4. Skiing sunglasses make perfectly good cycling glasses and don’t look absurd with a cycling helmet.
  5. Cycling helmets don’t look even a fraction as ridiculous as they used to in the early 1990s.
  6. If I ever become reasonably serious about mountain biking I do think that I might have to consider a new bike at some point as I have a very sore arse today and this would probably have been avoided had the bike had some form of shock absorption technology.

Today my legs are absolutely killing me, as is my arse, but I fully intend to do exactly the same trip next Saturday, weather permitting. Ahead of that, however, I want to by a trip meter of some sort and some sort of attachment to hold my phone onto the handlebars would also be beneficial. Some people have also recommended padded shorts to reduce the arse soreness problem, but I won’t be seen dead in cycling shorts, it would have to be something I can wear underneath normal cargo shorts. I’d also probably do well to get a pair of gloves as I remember mashing my hands up quite significantly when I came off the bike as a teenager.

Cows in Sutton Park

Sutton Park is a nature reserve and boasts much wildlife, including these cows which are free and have the run of the park. They are apparently quite used to being around humans.


Birmingham Pride 2011

I went to my first ever Birmingham Pride over the Spring Bank Holiday weekend. Last year I didn’t go because I had just moved to the area and was still out of work, so I simply couldn’t afford it, but this year was different and I had an absolutely fabulous time and I’m very glad that I went, even though after so many years of doing Manchester the setting and the people were largely unfamiliar to me.

Birmingham Pride operates under a similar format to Manchester Pride in that there is a parade through the city centre followed by a giant street party in the gay village that lasts several days, although in Birmingham it only lasts for two days instead of of the whole duration of the bank holiday as it does in Manchester. This was a good thing for this year at least because it absolutely plummeted down with rain on the Monday and so it would have been awful.

The other key difference between the two events is the ticket price. Manchester will relieve you of the best part of thirty quid for a wristband for entry into the village (if you don’t know the correct people), but in Birmingham there is no such requirement. It’s free, all weekend, indeed it’s apparently the UK’s largest free music festival. The payoff is that the acts on the main stage aren’t nearly so well known, but that’s fair enough, and frankly for me the pride events aren’t all about the main stage acts. I absolutely love the atmosphere and the noise experience there. Everybody is happy and it’s great. Just wish I had someone really special in my life to share it with.

Birmingham Pride is always early in the year and kicks off the pride season, with Manchester finishing it off on August bank holiday. I don’t like London Pride, it’s utterly up its own arse, so I never bother with it, but I do like Brighton Pride when I’m able to make it down there. That too is free, taking over the whole of Preston Park for a day in a format very similar to what London Pride used to be in the 1990s, before it became so heavily commercialised.

Many thanks to my friend and colleague James, who I spent most of the weekend with. We’ve been promising ourselves for ages a good night/weekend out and pride provided the perfect opportunity.


PHP Vacancy

We’re hiring for a Software Engineer at work to join our technical team based in Birmingham city centre (Jewellery Quarter). If you’re looking for a challenging PHP role and you think you might fit the bill, please do drop me a line with your current CV. Full job specification below. Please don’t be put off by the crappy website, we’re literally just about to launch its replacement :)

Glide is a rapidly growing energy and telecommunications company specialising in looking after tenants, landlords, letting agents and property investors across the UK. They supply gas, electricity, telephony and broadband services to residential and commercial customers.

About Glide

They believe in hard work in an informal atmosphere that encourages people to express their ideas. They look for talented people who want to work with technology and can tackle problems in a smart and creative way. Their employees enjoy working in a challenging environment that brings out the best in them. Customers and customer service are at the heart of everything they do – their business revolves around their customers.

They have their own in-house development, customer support and sales teams and remain focused on keeping their costs low through automation and keeping customers informed through good communication. As technology evolves, they aim to bring new and improved services to their customers as early as possible.

About The Role

They currently have an opportunity for a full-time senior software engineer, starting immediately, as part of their in-house software team.

The role will focus on developing their bespoke systems. Their systems are written in object-orientated PHP with a SQL database. You will need to be a highly competent programmer  in PHP, SQL, Javascript, AJAX, Smarty templates, Model-View-Controller and in documenting your work. Good familiarity with Ubuntu/Debian based systems is required. Experience with invoicing routines, SVN or accountancy systems would be useful.

The role will involve working on projects to develop existing products, launch new products and services, improve internal customer service systems, update and maintain accountancy systems and invoicing scripts, debugging and diagnosing problems with their existing code base and working closely with their customer service teams. The role also includes integrating their system with multiple third party suppliers, redeveloping customer portals and revamping their website.

You will be enthusiastic about new technology, eager to learn, and will hold a degree in Computer Science or equivalent. You will be capable of managing your own time.

Application Details

The company is a place where everyone can be heard. If you like the sound of this opportunity, they’d love to hear from you. Please direct your communication and correspondence through my team or direct to me. Please view the website at www.glide.uk.com for more background information to assist you with your response.


Technical Notebook

If I have any regular readers, they will have noticed that I’ve started to use my WordPress as a notebook as well as a blog. This site is more or less a general dumping ground for my online stuff that I’m willing to show the world. If you don’t understand it, then don’t worry about it.


Gracefully degrade HTML5 “number” form elements

Use Modernizr to replace the a “number” INPUT element with an normal text box and two control buttons in older browsers:

if (!Modernizr.inputtypes.number) {
	document.write("<button type='button' onclick='number_field.value = parseInt(number_field.value) - 1'>-</button>");
	document.write(" <input type='text' size='10' id='number_field' value='0' /> ");
	document.write("<button type='button' onclick='number_field.value = parseInt(number_field.value) + 1'>+</button>");
} else {
	document.write("<input type='number' size='10' id='number_field' value='0' />");


Ternary PHP short-hand if/else statement

Saves using a cumbersome multi-line control structure for simple conditions like this:

// normal control structure
if (statement) {
	$variable = true;
} else {
	$variable = false;

// short-hand equivalent
$var = (statement) ? true : false;

// useful return statements in functions
return (statement) ? true : false;


No to the Alternative Vote

On Thursday 5th May there is a referendum on whether or not the United Kingdom should adopt the instant-runoff (“Alternative Vote”) voting system in place of the “First Past The Post” (FPTP) system that’s currently in use. There are rigorous campaigns for and against this, both from various political parties and from other campaign groups.

Having carefully considered each argument I’ve come to a decision on how to vote on 5th May and I wil be voting “No”. Here are the reasons why I have reached this decision. You may wish to note that none of these reasons are political. I don’t care about any of the party positions. I will admit that the party that I’m a card-carrying member of has a consolidated “no” position, but this had no bearing on my decision.

  1. The instant-runoff system, whereby you “score” the entire list of candidates in order of preference, is the same system that Nominet and the British Computer Society use for various internal elections, so I am familiar with using it already. Here’s the blunt truth about using it in practise: After I’ve marked my second preference, I really don’t give a monkeys about the remaining six candidates and so I assign their numbers arbitrarily, almost randomly. I expect many people will do the same if this system is adopted for parliamentary elections.  Such “votes” that make up the numbers in this way are at best a waste of time and at worst could give a candidate or party more representation than people actually wanted.
  2. It makes what is currently a very simple voting system (marking a sheet of paper with a cross, even illiterates can do it as long as they have someone to tell them which candidate is which) with one that is much more complex and arguably inaccessible to a small handful. This will have a detrimental effect on voter turnout if people believe that the system is more complicated and therefore prone to error. Low voter turnout is one of the most crucial problems with elections these days and anything that threatens it further is unacceptable. I’ve always maintained that voting in parliamentary elections should be mandatory, like it is in Australia. At no point should it ever be possible to apportion the result of an election to any level of voter turnout.
  3. It has the potential to allow more extreme political parties to gain disproportionately more representation than they would otherwise gain. I’m actually very surprised that pro-AV groups, who are typically on the left of politics, are advocating a system that could give parties like the British National Party more power and influence.
  4. Lastly, given this country’s track record with IT projects, I have little to no confidence that the costly and complex vote counting system that will be required will be up to the job. Arguably a minor concern when compared to the others, but still valid.

I’m not saying for a minute that the existing FPTP system is by any means perfect, because it’s far from it. Indeed, I’ve often bemoaned its shortcomings following various general elections after watching in dismay as carefully planned constituency boundaries deliver election victories which they ought not to have and wouldn’t have under a “fairer” system. I just don’t think that AV is the answer to this.

So there it is, I have imparted my decision and the reasons for it. If you’re undecided at this stage I hope that the points I’ve raised help you to decide appropriately.


Google Chart API PHP classes

Following on from my recent release of AGCDR (Asterisk CDR Statistics), I thought I would make an important sub-set of that project available separately. As part of writing AGCDR I wrote a reasonably extensive set of PHP classes to interact with the Google Chart API. The following chart types are supported, although some do not support all the features that the API offers:

The download contains all the classes, both in separate files and in a combined file (which one you will use will likely depend on whether or not you use class auto-loaders) plus a page of example usages to get you going.

As with AGCDR, this is currently being released as a beta so it’s not perfect and I would welcome comments, suggestions and bug reports. Please submit any comments, suggestions or indeed any code you would like to contribute via the Google Code page in order that all information pertaining to it is kept in the same place.

Here’s a gallery of examples:

1 2 3 4 5 6 22