Audax 2014 – 300k – Doesn’t seem so long this time (Norwich)

This year I was aiming for a Super Randonneur, but then at the critical time, I developed a long running cold, then incapacitated my back in a coughing fit. Despite not being fully fit, I figured it was getting late in the year for a big ride. So, seeing favourable winds, I took the snap decision to go for it and take on a flattish 300. My wife was not convinced by this plan and thought I would probably ruin myself.

This was exactly the same route I took last year. As you can see, I managed to shave 8 minutes off my effort one year ago!

It all started well, but my back started hurting a little more each mile, especially when putting power in. This meant I couldn’t keep up the pace I wanted up the hills. Around Milton Keynes, about half distance, I was contemplating abandoning. However, I knew that if I made it to my brother and sister in law’s in Ely, I could sit and wait for a pick up rather than have to deal with trains. That was only a 100k further, which wouldn’t be impossible. By the time I got to Ely, the pains had disappeared (maybe from the motivation of racing & beating a roadie) and I was flying again, so I pushed on. I’m glad I didn’t take an early chance of an easy way out.

WP_002058

I was abit disappointed by not having quite as high a moving average as the last time and to still have spent 2 hours not moving. This is in spite of only having two real 30 minute stops for lunch and early supper. I always seemed to be stopping to take clothes on and off, adjust equipment and of course the call of nature. Both shop stops I made, I seemed to end up behind multiple people doing things very slowly!

The great things about the ride, were that I didn’t end up a cripple and I didn’t get any saddle sores! The Brooks Swift / Thudbuster combination actually came through on a big ride. I think the fact that my sit bones aren’t as well supported as on other saddles means that it doesn’t feel as good over a short distance, but equally prevents sores under the sit bones that have plagued me. The Thudbuster makes the whole thing not un-bearable on the other areas of my underside.

I’m also continually amazed by my ability to recover on long rides. I’ll find myself flagging, sit down and eat a sandwich, then be back on form, even after 250k.

Anyway, more random ride pictures:

WP_002062 WP_002057 WP_002060

Audax 2014 – 400k – Weston-super-Mare Solstice

A few weeks ago, I suggested to one of my cycling buddies that we do a ride to celebrate the solstice. He’s usually tied up with work and family, so I was thinking we might squeeze in a 100 or even a 200 seeing the sunrise. Of course, he upped the ante, suggesting a 400k all day expedition. He had selected the target as Weston-super-Mare and I’ve been thinking about doing a 400 for a while, so it was time to commit!

The plan was to start just after midnight and try to complete the whole ride before the next midnight, taking full advantage of the longest day.

The route (http://connect.garmin.com/activity/526374734) was predominantly big A roads to start with to take advantage of the graveyard hours with no traffic. This worked well, with another sun worshipper joining us for the ride to Winchester before returning home. We put in big miles on deserted dual carriageways to Yeovil. The only downside was that not getting much sleep the day before left me feeling pretty odd until we got in a big breakfast at Yeovil. This wasn’t helped by the temperature dropping to 7 degrees through the countryside. I was really glad I’d gone for 3/4 length shorts and a long sleeve top option. Wish I’d had full gloves too!

Breakfast

Then, what should have been the easiest part of the ride, Yeovil to Weston on dead flat back roads. However, I found the rough surface (more washboard than pothole) hard going with a saddle sore (more on that later) and a mild headwind added to the exertion. By the time we got to Weston I was looking forward to a rest and big lunch. t

There was some sort of event going on at Weston, involving air displays, parachuting and mini tanks.

Tanks

At this point it was good to be on a bike, because the queue for the car park was huge and the roads gridlocked. We however had the freedom of the promenade.

Beach & Bikes

We must not have looked to respectable though because some scouts came round collecting money for charity and avoided us! Must have been told about odd men in Lycra.

The next stage from Weston to Bradford-on-Avon was the toughest on paper, with the afternoon heat and a fair bit of climbing. There was indeed much climbing, but only two hills were a big challenge, being > 15%. However, we picked up some good pace by racing roadies. We passed a lone rider on a stripped down carbon bike up a big hill, to find his friends waiting at the top for him. They preceded to give chase, but we managed to break the pursuit and they evidently decided to wait again. Almost immediately, another roadie appeared in our mirrors. We assumed this was a runner sent out from the group, but it turned out he was on his own. He almost caught us, but we managed a team TT to break him, only to make a navigation error and end up with him on our tail again. This was on a steep hill, so we had a chat and he disappeared up the road.

The roads on this section were a little rough, and rather busy for their size and gradient. We would quite often end up with a queue of cars behind us, especially crawling up a hill at 5mph. Most were very courteous, but it did mean that there was very little break in this section.

It was about this time that my friend started obsessing about getting an ice cream. I started obsessing too and from that point on every sign we saw looked like an ice cream parlour! This went on for 20k or so until we finally did make Bradford-on-Avon. There, we found a cycle friendly cafe that did indeed do ice cream (I can’t find the cafe on Google unfortunately, or I’d recommend them). They said they were closing up so couldn’t do hot food, but evidently took pity on us as said “we could do something simple like a baked potato with beans and cheese”. I took my second selfie so you can judge how haggard I look.

Selfie

The food boosted our spirits as we headed onto the A4. This was, as we had planned a nice high speed section, with Dave taking big fast turns on the front. So fast I could only barely hold onto his wheel. My knee had started to twinge at Weston and I was trying to be a little cautious without resorting to a crawl. The only interruption to our TT effort was the fact that several miles of the A4 had been torn up, leaving something akin to a strada bianco. Not only was this rough, but a few drivers passed us without slowing down, showering us with stones. Apart from this, the A4 was again excellent, so wide for the volume of traffic that someone was happy enough to cycle on it with their 5 year old!

The final section from Newbury to home I again found hard going. Newbury seems so close, but it’s still a 2 hour + ride to get home. The stand out moment was the setting of the sun heralding our descent to winter. I also somehow managed to get 2nd fastest personal time on one of my regular commute Strava sections. Not sure how I managed that.

Sunset

The colours in the photo don’t really do the sunset justice.

Yet again, I suffered with saddle sores. Things started hurting around Salisbury, only 100k in! Things didn’t get better, but they didn’t get much worse either. I was able to mitigate the problem somewhat by shifting my position on the saddle and hanging a buttock off the side. This may however have contributed to my knee twinges as my legs weren’t quite symmetric. I think I can rule out heat as a cause, because the problems started through the very coldest part of the ride where I was shivering uncontrollably! Time for more messing about, or recumbent training. Recovery has been excellent. I wasn’t able to walk down the stair the morning after, but I was able to cycle to work the day after that!

Despite all the discomfort, I’m very glad I celebrated the turning of the year by breaking myself physically and mentally.

Audax 2014 – 200k – Oxford countryside cyclequest

I’m trying to ramp up my Audaxing earlier this year and get some longer distances in before full summer. So, off on a 200km specially designed to avoid country lanes and taking in 3 British Cycle Quest locations.

It was very much a ride of two halves (though not that obvious from the speed graph): http://connect.garmin.com/activity/503388055

The first 100k or so, I had a nice tailwind and no problems. As you can guess, the second half was straight into the wind and I suffered saddle sores and dehydration!

The water problems were strange. I didn’t feel particularly thirsty for the first half and only drank about a quarter of a bottle of water, then the thirst hit me and I got through the rest of that bottle and the whole of the 1 litre bottle in about 40km. It was the point where I was dreaming of having a cold coke that I passed a petrol station and decided I had to go back to stock up. Good job I did as I drank all the bottle of coke and another bottle of water I bought and still ended up feeling rather thirsty by the time I got home. Must ave been the headwind and heat of the afternoon.

The Cycle Quest took me to some rather nice locations:

Streatley golf course, where, unfortunately, I couldn’t find the answer to the clue and no one there seemed to know anything about signs in the car park.

Streatley golf course

Then Great Coxwell tithe barn:

Great Coxwell

and finally, the monument outside Fawley (as well as some curious horses)

Fawley monument

Fawley horses

If I say so myself, the route was excellent with very few bad roads aside from excessive traffic between Aldershot and the A33 in both directions. The sections that particularly stood out for me were the A417 from Streatley and the A338 to Great Shefford. Both sections were wide, smooth, pretty much deserted and had brilliant scenery. The only problems were a couple of closed bridges that required diversions. The first a daring sprint along the A33 dual carriageway and the second more A4 time trialling. I don’t usually mind dual carriageway riding, but the speeds seemed very high on the A33 and I was glad to get off it despite having a small hard shoulder to ride on. On the return route I though I’d try the same bridge again, hoping that the work had been finished. They hadn’t and I was annoyed that diversion signs only appeared about 100 yards from the bridge. However, I saw some cyclists coming the other way and clambering across, so I thought I’d give it a go. I made it, after much lifting the (rather heavy) bike over railings and pushing it over mounds of rubble with a couple of nettle stings for my trouble.

At this point, about 30km from home, with saddle sores and facing heavy traffic into a headwind I was feeling quite low. However, I got a break and was caught by a roadie at the start of the B3011 near Wellington Country Park. I managed to take his wheel reasonably easily and had a good pull over 10km at a pretty good pace.

Saddle sores are still frustrating me, but with the new saddle etc, they are now in a more manageable place, bang under my sit bones. Hopefully, a slightly thicker short pad will help solve this. I was particularly happy being able to sit on the TT bars for a good 10 minute stretch 160k into the ride.

Still much work to be done before I can think of big distances.

Faithful steed

 

Audax 2014 – April – Raptobike Attack

The Raptobike has finally been blooded on an Audax distance. I didn’t want to go insane, so a “mere” 100km route.

The speed wasn’t bad, though a touch off what I’ve managed on the race bike. The moving speed is probably the most realistic reflection of the pace because I had a couple of stops that weren’t necessary last time. First was to adjust clothing after a cold start, the second was to take pictures. While the average was similar to previous rides, I did have the satisfaction of burning up about 5 roadies on flat and rolling sections. They would initially try to chase, but would inevitably dwindle to nothing in my mirror. I only caught one up hill, but no one ever caught me, so it can’t have been bad. There were a few hills reaching 15% gradient, which I managed to handle ok.

Putenham Rapto Rapto Putenham 2

My lack of recumbent legs is showing, in that I’ve been crippled for the remainder of the day. Also while the bent was fine for the majority of the ride, there were two weaknesses. A couple of road crossings, I only felt safe getting off and walking across. This was partly because I couldn’t stick my head out the front, like a normal bike to look round the corner and partly because uphill starts are still tricky if not impossible on a slippy surface due to the front wheel drive.

Even in a low gear on greasy tarmac, my initial plant on the pedal caused wheel slip, which meant I lost my speed and had to put my foot down. The front wheel drive didn’t seem to be a problem when actually in motion as as mentioned earlier handled 15% hills. I think it might be a problem if things got much steeper, but then I think my legs couldn’t take anything above 20%.

All in all though a fun ride, hopefully my knees will work again tomorrow!

 

Object Oriented musings

I’ve been in software development for a long time and most of that time has been spent using object oriented languages, including C++, Java and C#. I’ve made plenty of mistakes along the way and I think I have a good guide how to and how not to use some aspects of OO.

A classic OO introductory example I’ve seen is as follows:

class Car{
    const double ACCEL = 1.5;
    double Speed;
 
    void Accelerate(){
        Speed += ACCEL;
    }
}

All makes sense, then I want to add some “real world” logic involving things external to the car. Like, what if the car is going up hill, is running into something or on a slippy surface? I would inevitably end up passing global state to the “Accelerate” method:

class Car{
    const double ACCEL = 1.5;
    double Speed;
 
    void Accelerate(World world){
        // Funky logic involving the World
    }
}

At this point, things are getting confusing because logic is spread between the World and the Car. This gets even worse if inheritance is involved. Imagine a “Vehicle” base class that “Car” inherits from, then a “Motorbike” class that has slightly different acceleration logic involving wheelies etc. This could be sold as “extensible” because I can drop in some other kind of  vehicle without tinkering with the World class. However, this is a maintainability disaster with logic spread out everywhere and logical problems with ordering of calls (think 2 cars accelerating into the path of each other). This example may seem abit contrived, but I’ve seen numerous examples of a “Save” or “Draw” method on a class that embodies the thing to be saved or drawn. In these situations it’s actually worse. What happens if I want to use a different database or rendering engine?

I’ve found that the only way to avoid madness is to ensure that logic is grouped together aggressively. So in our simple example, you’d end up with something like this:

class World{
    List<Vehicle> Vehicles;
 
    void RunWorld(double tick){
        foreach(var vehicle in Vehicles){
            // Common logic incl crash detection
            if(vehicle is a Motorbike){
                // Wheelie logic
            }
        }
    }
}

Now, you might think that this is just moving the logic around. However, I’ve noticed that all the classes like “World” (or “Database” or “RenderingEngine”) are essentially either static, singletons or contexts that are used against static / singleton type classes. These are ideal candidates for an interface and some sort of IoC framework to load in the implementation at runtime.

Heuristics

As a form of guidance, I’ve come up with a set of heuristics to follow when defining a class model. . but it’s a decent starting point.

  1. Identify if a class is one that is static, singleton or a context / wrapper (e.g: Database, Graphics System or World) / wrapper or whether it’s one that carries data (Record, Car or Game Character).
  2. If it’s the former (maybe call these “modules”, borrowed from Javascript?), this is a good place to centralise “business” logic. There is usually little scope for inheritance in these type of classes and they end up implementing a collection of interfaces.
  3. If it’s the latter,
    • Limit methods to only those that affect the data within the object. So Sort(), Validate(), AddX() should all be ok.
    • Drive behaviour from data (via the  “modules”), not methods on the objects.
    • Subclass for common data (maybe all records have a timestamp?) not to add logic in methods.

There will of course be exceptions. For example, I’ve been part of developing an expert system and validation classes. In these cases the logic was intentionally tied to the data carrying objects to that they could be built into a tree (using the composite pattern) and chained (Jquery style) respectively. These cases worked really well, and at least armed with the heuristics described, we could consciously weigh up a different approach.

 

 

First Audax of 2014

I was originally going to kick off 2014 with a 200km ride to celebrate not having a cold any longer, but I decided to truncate it to a 150km to better fit around family.

The route was pretty much a straight shot from Aldershot to Bristol, exploring a few more of the roads north of the M4.

This was the first proper test of the Lynskey Sportive Disc (LSD), here posing while I ate lunch.

Sportive Disc

I still don’t like the height of the rear rack (who needs 6″ clearance from the wheel), but it was the only light one I could find that would also mount a light, which is essential because my rack top bag prevents me from using a seatpost mounted one.

I was a little disappointed by the total and moving average (not as good as my 300km last year!), given I had a mild tailwind all the way. The total average wasn’t helped by getting a puncture at 1/3 distance when I didn’t really gain anything by stopping, then having to stop about 4-5 times to put on and take off my rain jacket. The moving average I don’t think was helped by my foolish use of too many country lanes, many in a terrible condition (which also contributed to the puncture I think). The roads between the M3 and Overton, Whitchurch and the A4 and Broad Hinton to the M4 were particularly lousy. However, the section between Marlborough and Broad Hinton was particularly scenic and a pretty good surface. Also, Chipping Sodbury and Yate provided rather welcome cycle lanes and smooth roads. More A4 next time!

By the time I got to Chipping Sodbury, the weather had degenerated to 3 degrees and heavy sleet, a good test of my wet weather set-up. This came through with flying colours: Sealskinz gloves and socks, Specialized rain jacket and Gore “Windstopper Softshell” bib tights.

The bike / Rivet Diablo / Thudbuster  definitely absorbed the bumps better than the Sirrus, but I still had a little saddle soreness, partly from the non-integral  seatpad (old) and perhaps the saddle angle (I had a go on my mum’s bike with no soreness, but getting back on mine the next day was not so pleasant). Still some work to be done.

One thing that was a massive improvement with the LSD was the brakes (which was why I got it). I no longer had to fear building up any speed in the wet, because I could be confident I could actually slow the thing down. I also didn’t end up with aching hands at the bottom of every ugly descent. Disc brakes, yes.

Back in action

After a good three months of feeling ill or my wife being horribly ill, I’ve finally gotten a ride in. Also the first trip with the Raptobike tailbox. Unfortunately, because it was only 20 miles, I didn’t really need it to carry anything. I put a rain jacket in it anyway, just because I could.

The speed wan’t as good as it has been, but the wind was strong, so I probably couldn’t have done that time on the race bike. In fact, there was a good lowracer demonstration. A “team kit” type on a road bike followed me up a 5% hill. Then we turned into the wind and only a 1% hill and the poor fellow dwindled into a tiny dot, then disappeared.

Follow

Get every new post delivered to your Inbox.