Callback Trace Listener

Reading Time: 2 minutes

lightSo you know about the Trace facility in System.Diagnostics, right? If not then you should because it’s really rather handy. It provides a set of static methods that you can call to write out trace information to any number of connected “Listeners” which you can define in code or in config.
The default trace listener writes to the Win32 OutputDebugString stream, you can view this in Visual Studio’s “Output” window or using a viewer such as Sysinternals DebugView.

Sure if you need more extensive logging and tracing then you should look to something like log4net, but if your requirements are simple then System.Diagnostics.Trace and System.Diagnostics.Debug are really handy.

Anyway, that’s not the point of this article.

Quite often I end up writing non-production apps – little gizmos for this or that – which could do with informing the user of what’s going on via some sort of rolling log on the UI.

So I wrote this tiny little class to help.

public class CallbackTraceListener : TraceListener
{
    public event Action<string> WriteToOutput;

    public override void Write(string message)
    {
        if (null != WriteToOutput)
            WriteToOutput(message);
    }

    public override void WriteLine(string message)
    {
        Write(message + Environment.NewLine);
    }
}

It’s a Trace Listener just like the one that writes to OutputDebugString. You need a little bit more code to make it work, in the initialisation of the your application you need to register an instance of it as a trace listener…

public MainWindow()
{
    var uiTracer = new CallbackTraceListener();
    uiTracer.WriteToOutput += UiTracer_WriteToOutput;
    uiTracer.Name = "UITraceListener";
    Trace.Listeners.Add(uiTracer);
    Trace.WriteLine("Debug window initialised");
    Trace.WriteLine("Ready...");
    InitializeComponent();
    ...
}

Now every time you use any of the Trace methods that write output, the UiTracer_WriteToOutput callback will be called with the string that’s written. You can add the strings to a ListBox, or put them through any other kind of processing you want.
It’s a really simple and useful way to subscribe to up your own Debug/Trace stream.

I Was Growled at by a Car Lion

Reading Time: 4 minutes
Samson Car Lion
Samson the Car Lion

Meet Samson, he’s a Car Lion. His job is protect the car he’s in against any unwanted attention. Currently he lives on the dash of our hauling, ferrying and carrying car – a Honda Jazz (aka Fit) called Delilah.

Samson is a very happy Car Lion, Delilah is very spacious inside, so he has a large territory. The Jazz/Fit also has a considerable amount of glass in the cabin and the cab-forward design means that he has a large and very prominent area to prowl and make sure that all is in order.
He also likes window stickers and we keep him well supplied with them.

Samson's Favourite Snack
Samson’s Favourite Snack

Now let me introduce you to another Car Lion with a less fortunate story. You see it came to pass that we needed to buy a second car. We didn’t really know what we needed or how long we’d need it for so we played it safe and bought a Ford Fiesta. We called the car “Rory” because he didn’t need a name, he was only “tempoRory” [sic].

It may surprise you to learn that Ford Fiestas are often supplied without a Car Lion to protect them. So we went to Africa Alive and came back with this gorgeous little fellow. It was clear that this Car Lion was far too big to live on Rory’s dash though, so we came to an arrangement that he would live on the back seat.

Rory's Car Lion
Rory’s Car Lion

He liked to sleep a lot when he wasn’t on duty so he liked it there – it was warm and soft. Being somewhat larger than Samson he wasn’t too worried about being on higher ground because he could easily jump up and growl at any potential miscreant. It’s true that Rory wasn’t as roomy as Delilah is, but it had some additional creature comforts such climate control and more importantly an MP3 player – because Car Lions have got to have their choonz.

I have to admit that we didn’t really think about the Car Lion in Rory. He was there, doing his job and he seemed to be happy enough. It didn’t occur to me that we might be neglecting him – we had after all given Rory a name and we weren’t intending to keep Rory long. The poor Car Lion didn’t even have a name.

It was when we sold Rory that it finally dawned on me. As I took him from the back seat the full horror hit me – the back seat. The car we replaced Rory with is a much more permanent affair, she’s called Mina and, well, the problem is rather obvious.

Mina
Mina

So there were two things I needed to make up to our sadly anonymous Car Lion. The first was easy for me – although Mina is very snug she’s a convertible which means that she makes an excellent home for a Car Lion. He can stay safe and warm when he needs to or go out and prowl as far as he likes. Being in the front seat however there was a problem – the car only has two seatbelts and he’s too big to have roaming around when we’re both in the car. So I made him a little seatbelt of his own.

Car Lion All Strapped In
Car Lion All Strapped In

The second problem is more difficult – the obvious name for a Car Lion that protects a car called Mina is Jonathan, but Mina wasn’t his first car so I think calling him Jonathan is unfair, we need to respect the very good work he did protecting Rory. So what do we call him?


It was somewhere in the region of 23 minutes before someone suggested Liony McLionface, which was rather longer than I expected. Other suggestions so far include:

  • Cecil (but I’d have to sew a bullet-hole through him somehow)
  • Cedric
  • Clarence (how rude!)
  • Denn (long story)
  • Don / Vito, as in Don Car Lione (badoom-tish!)
  • Kenneth
  • Kieran (another long story)
  • Leo
  • Lionel
  • Liono
  • McGrath
  • Numair  (Arabic – “panther”)
  • Simba
  • Roan Miry
  • Vlad

In the end we decided on a name, so meet Vito Car-Lione… He’d like to be your friend, and that’s an offer you can’t refuse.
Vito Car-Lione

Too Much Information!

Reading Time: 5 minutes

Broken Seat ClampWe, the cycling advocates, want more people to cycle. We dedicate our time to producing useful material for new cyclists and people who are thinking of taking up cycling. Are we barking up the wrong tree though?

Articles on how to get the right bike, what clothes to wear, how to pick the right helmet, how to ride in traffic, how to ride in the countryside, what tools to take, how to maintain a bicycle, what the best sub-miniature lightweight pump for mid-distance touring rides is…

It’s all meant well. It’s all meant to try to help people. If I put myself in the position of someone thinking of taking up cycling though I see something different. What I see is a lot of articles telling me how complicated cycling is. I need to make sure I have the right bike, the right clothing, the right helmet, the right tools. I need to remember how to ride in traffic, how to ride at a roundabout, when to take the lane and when not.

I recently cycled to an event where I met a lot of new people. We were all waiting around, talking about this and that and I started to become aware that there were a lot of people listening to me and I was being asked a lot of questions about how I came to cycle there.

No, I haven’t changed my clothes – I cycled here in this pair of smart trousers and shirt. No, I don’t have cycling shorts on underneath that would be really uncomfortable.

No they’re not special cycling trousers or a special cycling shirt. They’re just good quality, comfortable clothes.

No, there aren’t any showers and I don’t need a shower because I cycled here at a sensible pace. It wasn’t a workout.

About 37 years.

Actually I didn’t wear a helmet today. Yes they do help in certain types of crash but they’re not some kind of magic bullet that will save you if you’re run over by a train. They do reduce the risk, yes. Sometimes I do wear a helmet, I’m not quite sure how I decide when to and when not to.

No actually, most helmets have vents in them, vents large enough that you can lock the helmet to the bike to the bike rack.

I’m wearing a blue and white spotty shirt. That’s not a naturally occurring phenomenon in most environments.

It’s locked to the bike rack at the front of the building. No, it’s not an expensive bike. Yes it is actually covered by my house insurance.

It didn’t look like rain so I didn’t bring a coat. It’s not a freezing cold day so if it rains on the way home it’s no biggie. I’ll just change when I get there.

No, a couple of miles isn’t far.

No, it’s a couple of miles. That really isn’t far enough to cause any kind of problem that would need that sort of cream.

No I’m not super-fit.

No, I actually avoided that and took the cycle path that goes across the docks. I have cycled round there before though and it’s not as scary as you might think. Remember you’re higher up on a bike so you can generally see better than cars can.

No, actually most drivers are really good. There are always a few idiots and yes they’re far scarier when you’re on a bike. No actually, I’ve not had a serious crash on the road in all the 37 years I’ve been cycling.

No, I don’t have a spare tube or a puncture repair kit. I’m in town, there are cycle shops and even if there weren’t it’s a couple of miles. I can walk. Punctures are uncommon anyway, modern city [puncture resistant] tyres are pretty good at stopping them.

If I’m right and this was a representative sample of the public then we have a bit of an issue. The message that we want to get across is that cycling is fun, practical, cheap, easy, safe and something that anyone can do.

The message that we seem to be getting across is that it’s expensive, complicated, dangerous and requires a Lycra Licence.

So what can we do about it? I don’t think we should start un-publishing the articles that are out there – many of them are really good and contain a lot of useful information. I think the problem stems from the fact that most of us cycling advocates are sports and leisure cyclists. We invest time and money into cycling because it’s a hobby. We want to share that with other people and that’s great, but we’re bringing the wrong character. We’re bringing the person that loves to cycle 25 miles through the rolling hills to that great little café by the brook that does the proper tea and the millionaire shortbread with that really thick caramel layer.

It’s an intoxicating image, but distances like 25 miles are going to put the willies right up a potential new cyclist. The idea of being 25 miles from home with a machine they don’t understand and can’t maintain is pretty scary too. Group rides are terrifying because they’re afraid they’ll hold everyone up and Lycra – which many seem to believe is mandatory – requires way more (body) self confidence than most people have.

Yes we’re selling the dream, but it’s too big, too far away for most people to grasp. They will get there, if they want to get there, but we need to start smaller.

For instance, many of us aren’t just leisure or sports riders. We also use a bike to pop to shops or to commute to work. We don’t do that in Lycra riding a Santa Cruz Nomad. OK, so most of us don’t use a battered 2nd hand beater bike either, but we could do. We need to try to get across the the joy of just being able to grab the bike and go – the freedom that comes with not being strapped into a little metal stress box, even on short journeys. We need to place cycling as a part of everyday life, something that normal people can easily do and as a cheap, effective and safe way of enriching your existence.

For want of a better way of putting it, we need to humanise cycling. Make it normal, accessible, everyday. We need to place them in the saddle.

We need to talk about things like how social cycling is – and I don’t mean meeting other cyclists because the idea of a cafe full of people in cycle gear chatting about the latest carbon fibre seat clamp scares the hell out of most new cyclists. I mean things like my neighbour, the keen gardener who always waves and says “Hi” when I pass.

Cycling is about connecting with the environment, being part of life.

Climate control, cruise control, stereo, sat nav, cooped up in a little sound proof reinforced cage. That’s about isolating you from the environment, from the journey, from life. Driving is the nearest thing you can get to posting yourself somewhere, all wrapped up nicely in a neat package to be delivered. Sometimes that’s just how it has to be but when it doesn’t we have the opportunity to be part of something so much more fulfilling.

Out of bread? Just grab the bike and go, past the flowers in Mary’s garden that always smell so nice at this time of year, the fields we can see from the top of the hill that stretch for miles and miles all different colours, the little cottage that we’d definitely buy if we had the money and then play the game of can I make it down into the village without having to peddle again?
Walk into the village shop where Carol lets you know that they’ve just got in some of that bread you really like… Go past that cafe, it smells good so just turn round, lock the bike up outside and pop in for tea and a cake because… because it’s Tuesday!

You don’t need to ride 100 miles, you don’t need a £4000 bike, bib-shorts and a comprehensive track toolkit to do that, to be that person, to be that engaged with life.

You just need a bike.

That is the message we need to get across.

Connectorum Reseatorum

Reading Time: < 1 minute

Compact!
Compact!
Last time I talked about De Morgan’s law which I learnt in electronics but still use in computer science.

Today I want to talk about a revered piece of arcane wisdom, a ritual handed down from electronics master to apprentice according to the strictest laws of tradition. It’s called “Connectorum Reseatorum” and I just used it to raise my compact camera back from the dead.

What they don’t want you to know is that you don’t actually need any complex electronics expertise to perform the ritual. All you do is take the case off and then one-by-one take each connector apart, clean the contacts (surgical spirit / rubbing alcohol works quite well) and then put the connector back together again.

It’s surprising how many electronics faults are just down to a bad connection and can be fixed simply by cleaning contacts and removing dirt.

Break the Line, Change the Sign

Reading Time: 2 minutes
Ipswich Civic College [(c) EADT]
Ipswich Civic College [(c) EADT]

Shirt and tie, green tank top, brown jacket with leather patches on the elbows and horn rimmed spectacles. The image of my college maths tutor yelling “break the line, change the sign!” is still burnt into my brain.
Nevertheless De Morgans’s Law is one of those things from my days as an electronics research technician that’s still useful today – so it was worth it.

I needed to change an if statement around. Originally it was like this;

if (null == cert || !cert.HasPrivateKey)
doMainPart()
else
doElsePart()

But I wanted to switch the main and else part around, so I wanted to reverse the result of the condition. I could have done this…

if ( !(null == cert || !cert.HasPrivateKey))

But instead I employed De Morgan’s Law. To invert the meaning of the entire condition the first step is to invert the meaning of each individual term of the condition. So:

  • null == cert becomes null != cert
  • !cert.HasPrivateKey becomes cert.HasPrivateKey

The second step is to change the operators that combine the terms, so OR becomes AND and vice-versa.
Thus (null != cert && cert.HasPrivateKey) gives the exact opposite result to (null == cert || !cert.HasPrivateKey).

if (null != cert && cert.HasPrivateKey)
doElsePart()
else
doMainPart()

It’s really easy to tie yourself in knots with this kind of stuff, remembering De Morgan’s law can save a lot of heartache.


If you’re wondering why it’s “break the line, change the sign” this is because of the way boolean logic is written is electronics: if you want to invert the meaning of something you don’t put a ! in front of it, you draw a line over the top of it.
So our condition would have started as:

null == cert || cert.HasPrivateKey

We then want to invert the entire operation, so we draw a line right over the top…

null == cert || cert.HasPrivateKey

Now we apply De Morgans’s Law, we break the line and change the sign.

null == cert && cert.HasPrivateKey

Of course the two inversions on the right-hand side cancel each other out, so we finish with:

null == cert && cert.HasPrivateKey

Of in C#

null != cert && cert.HasPrivateKey

Social Personality

Reading Time: 2 minutes

Singapore
Singapore

I made a mistake when I joined The University of Hull back in 2008. I don’t mean that joining university was a mistake, it was one of the best career decisions I’ve made. I made a mistake with the way I used social media.
Part of the role at The University was to be an ambassador, to represent and promote the university and the field of computer science. “No problem,” I thought, “I’ll just use my existing social media accounts.” That was the mistake.

It led to two problems. The first is that my online persona changed. I suddenly became aware that I used the account for professional purposes. That changed the image of the account, it became my professional persona and it became very difficult for me to be the person that my friends know outside of the professional environment.
The second problem is that I started adding professional “friends” and followers.  That reinforced the first problem.
I went from someone who’d been very active on social media to someone who only posted the most carefully filtered content.

If you are a professional you have to be somewhat circumspect, once you’ve hit the “send” button you’ve lost an element of control – it’s out there. Even friend-locked posts and old blog articles can resurface at inopportune moments.

At the last interview I was at one of the interviewers let slip something that they couldn’t have known unless they’d read my blog – and not only that but it wasn’t in the most prominent article either. As a professional your online presence matters.

Fortunately the Victorian image of professionalism is now fading. I maintain however that a professional image is important. It’s about giving your clients and peers confidence that when you turn up to work you’re going to do a good job. For instance, if your social media streams contain a disproportionate amount of pictures and stories of you partying with your friends to all hours that’s going to damage your professional credibility.
A balance still needs to be maintained.

For myself however I no longer work for The University, in fact being an ambassador for computer science is no longer an official part of my job at all. So you’d think it would be easy for me to rectify those mistakes I made back when I joined The University and revert my social media personas back to being more like the real me. You’d think that. It appears to be proving more difficult than I thought, however.

Avoid Constructors that Throw Exceptions

Reading Time: 2 minutes

Even ones in the CLR itself…

It’s well know that throwing exceptions in constructors is a bit dodgy (mainly because of possible memory leaks), but things recently got a bit weird.

It worked fine on my machine, however on my colleague’s machine Visual Studio’s unhandled exception dialog kept popping up. After he hit the continue button everything seemed to work OK, but it was still unnerving.

To cut a long story short I’d written something a bit like this[1]

        private async static Task<TcpClient> GetConnectedClient()
        {
            try
            {
                return await Task.Run<TcpClient>(() =>
                {
                    return new TcpClient("127.0.0.1", 80);
                });
            }
            catch(SocketException ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

That particular overload of the TcpClient constructor tries to open a connection and throws a SocketException if it fails. The exception should be marshalled through the await to the catch, but it was all going a bit strange.

So I changed it to something a bit like this[1] and it all started to behave properly.

        private async static Task<TcpClient> GetConnectedClient()
        {
            try
            {
                var client = new TcpClient();
                await client.ConnectAsync();
                return client;
            }
            catch(SocketException ex)
            {
                Console.WriteLine(ex.ToString());
                return null;
            }
        }

Underneath the bonnet (or hood, if you’re not British) ConnectAsync starts a Task to manage the older BeginConnect asynchronous mechanism. Nevertheless, exceptions throw in this scenario are marshalled properly with no weirdness.

Now ultimately both versions of the code seem to work correctly, but what is clear is that there is something different about the exception handling in constructors. So I’d recommend avoiding not just avoiding throwing exceptions in your own constructors but if you can, avoid using constructor that throws an exception.


[1]In order to make the point clear I’ve simplified these examples to the point where, as code, they’re not terribly useful in their own right. I certainly wouldn’t recommend using these as any kind of template.

Mirror, mirror on the Pi…

Reading Time: < 1 minutePi2One of the beauties of the Raspberry Pi is that it’s so low power [in comparison to a PC] you can afford to leave one on all the time.  When I got my first Pi I tried using it as a mirror of this blog. It worked, but it was rather slow.

The Raspberry Pi 2B has got a lot more beans that the first version of the Pi. I got one for Xmas, so I thought I’d revisit the mirror idea. Assuming my little script is working properly, there should now be a mirror of this site on my Pi 2B.

Because Great Things Grow From Seeds…

Reading Time: 5 minutes

Way Back When...
Way Back When…

I’d been working for Seed Software for a few short weeks when the manager announced that he was going snowboarding for a week. “Who’s in charge whilst you’re away?” I inquired, “You are!” came the reply.

Over a year ago I posted the story of how I came to work for Seed Software, but the story didn’t end there. There’s the small matter of what happened between then and me leaving Seed in October 2015. It was quite an experience. I’m not sure if people take me entirely seriously when I say that I learnt as much in Seed as any of the interns or students but it is nevertheless true.

So I’d just about worked out where the stationary cupboard was and suddenly I was being asked to run the business. This was definitely not in the job description for a software developer but before I made that point I took a moment to think about it. I’d spent the past few years in my previous company trying to convince the senior management that some software developers understood more than just matters technical. I’d had some success, but here was an opportunity for me to prove it by stepping right into the front line of running a business, if only for week.

Nothing much happened, it was rather an uneventful week. I don’t know if I was more disappointed or relieved. Nevertheless it cemented my position as being very actively involved in the running of the business of Seed Software.

After that I started getting down to trying to learn WPF and WCF, neither of which I’d used before, and trying to build a Command and Control system. I’d got out on the road a bit too, the C&C was very much developed with the Fire Service which meant frequent visits to site with the latest developments to make sure we were all heading in the same direction. I’d also been to a few of the other sites because although the other products were managed by the Seed Manager there was only one of him and we needed some resilience.

It was that need for resilience that soon bit us, “Tom,” the Seed Manager said, “Erm… I’ve double-booked myself. I don’t suppose you could cover a sales presentation next week? I’ve got the slides and everything.”

This wasn’t entirely unexpected. I’d known before I joined Seed Software that it was just a software development team. There were no sales, marketing or operations staff. A business can’t survive without these functions though which left only one conclusion: the development team were doing them. This is actually one of the things I found exciting about Seed, if the business was going to work and I was going to be successful within it I knew that I was going to have to get involved in these functions to a much greater level than I ever had been before. Sure I’d been to sales presentations, I was actually a bit of a regular, but I’d always been the “technical expert” that answered the questions that the salesperson couldn’t. I’d never actually delivered a sales presentation before.

As it turned out Seed’s presentation was part of a much larger event where several suppliers were pitching their wares at a group of senior fire officers from many services across the country.

This was a great learning opportunity for me – I was on relatively late in the day which meant that I had a lot of time to watch what the others presenters did and tune my own performance. I was expecting swish, professional salespeople to glide in and deliver polished shows that would make mine seem shambolic and amateurish.

That is not what happened. They were all professional enough but there was no performance, no spark, no charisma.

By my slot half the audience had been struck down with a nasty case of…

.

This is where it struck me how just how different Seed Software really was in 2009, there was nobody else like us there. I had some Powerpoint slides, just to get across some of the key information, but most of our sales presentations were live demonstrations of the kit. This, it transpired, was a breath of fresh air. I was able to engage with the audience, sleepy heads popped up and started asking questions. I ran out of business cards and had to start writing my details on the back of potential customers’ ones.

I was beginning to settle in to Seed, I was a lead developer, software architect, product manager, deputy business manager and occasional sales guy. The phrase “can do attitude” crops up in a lot of places and generally it means something it’s not supposed to but in 2009 / 2010 Seed Software embodied it in its true sense. It didn’t seem like there was anything that we couldn’t make work somehow.

2011 was not so kind to us. The business was growing too fast for The University to react and we were all having to put in way too much work just to keep our heads above water. To make matters worse the Seed Manager ran into a spot of bad luck – a couple of serious accidents ruled him out for extended periods of time. I found myself trying to develop the Command and Control, project manage delivery to the first control rooms and the subsequent go-lives and manage the business of Seed itself.

It was insane, one day I looked at my timesheet and I’d accumulated 28 extra days of time-off-in-lieu. I had to offload the management of the business to the department’s Enterprise Director, or I would have burnt out.

Despite the workload Seed was still a hugely positive, exciting place to work. What we’d achieved was pretty amazing too, two industry professionals and a bunch of students had successfully developed and delivered a mobilising system – the single most important computer system in a fire service – into two live control rooms.

The workload however was still out of control. Even with the Seed Manager back full time it was clear that we needed to make big changes. The Seed Manager position was actually a hybrid position, half developer, half manager. It was obvious that managing the business alone had now become a full time job. The role was therefore split into two, a senior developer and a dedicated business manager.

Preferring to retain a technical role, the Seed Manager left. I had also planned to leave – I knew that a chapter in the development of Seed Software was coming to a close. Seed was going to change, it was going to become more established, less dynamic. I also wanted to move back here, to Suffolk.

I did move, but I didn’t leave Seed. The University rather unexpectedly offered me a remote working contract. This threw up a whole myriad of new challenges. When I first became a remote worker I thought I’d be knocking out a steady stream of blog articles on what the problems were and how we were trying to solve them.

That’s a subject for another time however. As for the story, In October 2015 Seed was about 3 times the size it was in 2011, had a lot more products than it did an had begun to offer a support function. Brigid Command and Control is was well established as the primary mobilising system in the control rooms of 3 of the UK’s Fire and Rescue Services.

That just about brings my story at Seed to a close. But what about the future of Seed? The changes I predicted have certainly happened: I believe that Seed Software will become a highly successful business.

 

 

My Hull Sustainable Travel Adventure

Reading Time: 6 minutesI knew when I accepted an invitation to visit Hull University‘s campus “to help with induction week” that my usual place in the university guest house would probably be booked. What I didn’t appreciate was that the entirety of North Hull would be booked.

Where some people see problems, I see opportunities. As a cyclist, a cycling advocate and indeed a sustainable travel advocate I was keen to see how far Hull had come since I left in 2011, so I booked a hotel near the bus station, about 2 miles from campus and started investigating bicycle hire.

Cycle Hub and Secure Storage

Initial impressions were great, Hull Cycle Hub provides secure, 24hr access cycle storage for £1 a day and it hires bikes for £3.50 a day. The service desk is open from 8am to 3pm every day – if you want access outside these hours you need to pick up a card. These hours are fine for people arriving in Hull but I can imagine it might be difficult for some people to return the bike or the card because they’ll be leaving Hull later than 3pm.

Nevertheless Hull Cycle Hub is a great facility, especially as it’s right in the train and bus station and that’s right in the centre of town.

Hull Cycle Hub
Hull Cycle Hub

I had a problem though – although you can get from Suffolk to Hull via train it’s cheaper and faster to hire a car (seriously). The university is the most convenient pick up and drop off point for hire cars and it’s 2 miles out of town. So it actually worked out most practical if I hired a bike from Hull University’s Bike Hub rather than the central Cycle Hub.

So on my way in to Hull I picked up a 24 hour access card (£10 refundable deposit) from the Cycle Hub then once I arrived in campus made my way to the Bike Hub.

University Campus, Bike Hub and Bicycle Hire

I happily bounded in and announced that I’d like to hire a bike for a week. “Oh,” replied the chap behind the desk, “We’re having to prioritise 3 month hires at the moment I’m afraid.” Now I can understand this in induction week, but it should have been mentioned on the web site and in their other publicity material. Once I explained that I was only in Hull for a week and that I needed the bike to get to and from the university however Adam – who runs the Bike Hub – dug me out a suitable bike.

The saddle was duly adjusted for me and Adam went though all the particulars of the bike, provided me with lights, a lock (and instructions on how to use it) and a helmet and then asked if I’d ridden in the UK much. This caught me by surprise a little, “I have to ask,” he explained, “because we can’t just let people who have no idea what they’re doing loose on the roads.”

So I handed over £70 cash (refundable deposit) plus the hire fee and we sorted some basic paperwork out and then I noticed a problem. It’s a problem that I actually find with a lot of sustainable travel but particularly cycle places, the opening hours. They’re not open on Fridays, so a week’s hire means Monday to Monday. Unfortunately I wasn’t going to be there on Monday, so if I wanted my deposit back I’d have to return the bike on Thursday.

Bike Hub Bike
Bike Hub Bike

I could deal with that – the bus service to and from the university is actually pretty good.

So I got the bike and rode off. Now, I have to say at this point that £5 per week is extremely cheap for bicycle hire (and £30 for 3 months is an absolute steal). So I was trying to manage my expectations with regard to the bike. It was OK. It was well enough maintained, but there were a few little niggles; the saddle wasn’t comfortable for me; the front brake was a bit jerky; the chain-ring shifter wasn’t indexed and the chain occasionally hopped off the top sprocket onto number 2 all by itself. Overall though, for a bike that was clearly 10% or less of the cost of the bikes I usually ride, it was acceptable. You do get what you pay for and I absolutely can’t fault the value for money. Overall it was a decent enough run-about, I was happy to ride it the 2 miles or so from Cycle Hub in town to the university and back. A change of saddle and a couple on minor upgrades and it would have made a perfectly serviceable commuter bike.

‘Ull Roads

I had quite forgotten what cycling in a city was like – so many cars all trying to get somewhere fast, so many that all they do is cause congestion. There was a great poster I saw in the Netherlands, it said “You are not in traffic, you are traffic”.
By day two I was used to it again and could relax. The cycle routes between town and the university don’t seem to have changed much, they still rank as pretty good. There are on road cycle lanes and bus lanes you can use for most of the way.

Thursday

So time came for me to give the bike back. This all went well until I had to get my deposit back. Now, for entirely understandable reasons Bike Hub doesn’t keep much cash, in order to get a refund you have to go to the university’s cash office. This itself isn’t a problem. The problem is that Bike Hub can’t authorise payments. So you have to fill in a form that then had to be signed by two people in the Estates office. That takes time and is not the sort of thing that most people would want to be running around trying to do on their last day of term. Surely there has to be a better way?

So now without a bike I hoped on a bus back to the city centre. This was entirely straightforward, the bus was clean, comfortable and quick.

At this point I have to mention Hull Paragon Interchange, the combined bus and rail station in the centre of Hull. This is a really good facility and works very efficiently. It’s easy to see the bus and train services at a glance and get to the right place without confusion. Every urban centre should have one of these.

Hull Paragon Interchange
Hull Paragon Interchange

Conclusion

Hull Cycle Hub has the potential to make a real impact to cycling in Hull, at the moment however it appears to be much under-used.

The Bike Hub at Hull University does very cheap bike hire, but you get what you pay for. The bikes could be better, the opening times are a bit limiting and the bureaucracy to get your deposit back is highly irritating. However, having said this it’s still exceptional value for money.

The buses are the real winner here – they’re clean, comfortable and efficient. If I were in exactly this situation again I’d probably buy a one week ticket and forget about bike hire.

Having said this, I think next time I would try to arrange to pick up and drop off the hire car in Hull City Centre. If I could do that then Cycle Hub could provide everything I needed. I’m fortunate in that I could return the bike on Friday before their 3pm closing time – that I think might be the sticking point for most people.

This is something I find with a lot of cycle facilities and it really irritates me – the service is good but the opening hours just aren’t practical for people with regular jobs. This is an area that we really need to work on.

You can read more about Hull University’s sustainable travel initiative on their web site.