Archive for June, 2019

Critérium du Dauphiné 2019

Thursday, June 20th, 2019 | Distractions

The Critérium du Dauphiné is considered the main warm-up event for the Tour de France. This was a write-off from start to finish for Team Chris.

I misread the stages. It looked like there were lots of mountains and not much for the sprinters. So, I didn’t even take a sprinter. Turns out this was not correct. The hilly days were not hilly enough to drop the sprinters and there were only a handful of mountain days, all of which were mopped up by the breakaway.

Froom suffered a horrendous crash, for which he is still in hospital. Kruijswijk also dropped out due to illness. That left Fuglsang, Pinot and Quintana. They managed the overall win, 5th and 9th between them that did a lot to boost my points, but the gap was way too big. Froome being out meant that Woet Poels would then race for himself, which helped the other teams.

Congratulations to Bogdan, who takes his first win in the de Mezzanine

Women’s Tour of Britain 2019

Wednesday, June 19th, 2019 | Distractions

The Women’s Tour of Britain is a 6-day stage race. It doesn’t receive the same level of coverage as the men’s events: you can’t watch it live on TV, for example, but it’s growing rapidly. Superstar Marianne Vos lead out my fantasy team.

It was all going so well. D’Hoore took the early sprint stages and Vos and Deignan were mopping up the GC points. After the first couple of stages, Team Chris had an 800 point lead, that at the time seemed unassailable.

Alas, it was not to be. Vos crashed, and despite Deignan taking the overall win, Team Chris was eventually relegated to last place.

World Triathlon Leeds 2019

Tuesday, June 18th, 2019 | Sport

The 2018 World Triathlon Leeds was the first standard distance triathlon I signed up for (although I actually completed Wetherby two weeks earlier) and was my target race for the year. I lost my timing chip in the lake and so technically registered a DNF. The swim was cut in half due to fog, so the 2:43:00 I registered on my Garmin would have been 3:03:00 with a full swim.

This year, I was hoping to improve, mostly by setting an official time.

The preparation could have gone better. Two days before, Venla handed me her cold. I could feel a little tickle, which by Saturday had turned into a full cold. It took me 28 minutes to complete parkrun and it rained all day, which made for a wet affair at registration. Thankfully, it dried up on Sunday for the race itself.

I was in the Yorkshire Championship. We didn’t start until 8:35, which made for a lice line-in compared to the 7:10 start I had last year. It also meant that almost everyone else in Hyde Park Harriers was in the same wave as me. They were all in their beautiful club tri suits. Alas, mine did not turn up in time.

The swim

The swim went well. I was just under 40 minutes, which is my useful benchmark. I had my family chasing me around the lake cheering me on which provided some extra speed boost. We were the second-to-last standard distance wave, so not many people swimming over the top of me.

Getting out, I remembered just how long transition is at this event. It goes on forever. There is probably a kilometre of running between the swim exit, finding my bike, and taking it to the mount line and then doing it all again in T2.

The bike

I took it steady on the bike. I always imagine that everyone will come flying past me on the descent down Stonegate Road but almost nobody did. On the second lap, I caught up with Dan from the club. The course was getting fairly quiet towards the end and Farhad was cheering us all on, and taking photos, at the turnaround point.

The run

As I exited T2 I took stock of my overall time. It was unlikely that I would be able to go under three hours, a goal that I missed by 15 seconds at Allerthorpe Classic last year. I would have to run a 49-minute 10km and that seemed to big an ask.

But I decided to run hard anyway. I suspected that the course was slightly shorter than 10km, at least as Garmin would measure it, and it was mostly downhill. So, I thought if I put myself in the position to be around that time, I would see what happened.

Once I made it to The Headrow there was lots of support: members of the club, my family and many people who were already turning out to watch the elite races. As I came down The Headrow at the 8km mark I realised I was at 2:50:00, giving me ten minutes to complete the final two kilometres. This was by no means in the bag because I had to run up The Headrow, and the distance on my watch could be inaccurate, but it was looking good.

It was only as I rounded the final corner that I knew I was going to go sub-3.

The result

My official time was:

2:58:00

Putting me 48th in the 57 that entered the Yorkshire Championship. Not quite a qualifying time yet! But there were four Harriers behind me, so not the lanterne rouge, either. That breaks down to:

Section Time
Swim 39:25
T1 8:32
Bike 1:19:04
T2 4:02
Run 46:59
Total 2:58:00

An eight-minute transition sounds awful. But even Naomi, who qualified for the European age-group championships last year, took five minutes due to the amount of running.

46:59 on the run is a superb time for me. My personal best 10km is 47:39, that I set at Wetherby triathlon last year. This could represent a new fastest time, then. That said, my Garmin measured it as 9.86km, which, if accurate, means a proper 10km would have taken me another minute. And it was mostly downhill.

As ever, my running outshines the other disciplines: I set the 26th fastest time on the run, which puts me on the top half.

I’m really pleased to have gone under three hours at the standard distance for the first time.

Well done to all of the other Hyde Park Harriers who raced, too. I know so many of you achieved huge PBs. And overall wins, too: Amy and Cat took first and second prize in the women’s Yorkshire Championship.

Giro d’Italia 2019

Thursday, June 13th, 2019 | Distractions

For cycling fans, May marks the arrival of the first two grand tours of the season: the Tour de Yorkshire and the Giro d’Italia.

It was a polarised race this year. The first week and a half had no hills in it. The route was made up of flat sprinter stage after sprinter stage. Then it went uphill and almost never stopped going uphill. It also had three time trials.

John thought his race was over when Dumoulin had to abandon early on. However, an amazing ride by Masnada kept him competitive for the entire race. Bogdan took the early lead scoring big points with Viviani. Viviani never won any stages, but as the only sprinter any of us had brought, some high-placed finishes did the job. Like many of the sprinters, though, Viviani then went home as soon as the race went uphill.

Team Chris was not without its troubles, either. López continued to have bad luck, including getting knocked off his bike by a spectator. The UCI concluded that the punch he threw at the guy was a “human reaction” and cleared him of any wrongdoing.

Mostly, it was plain-sailing though, as Carapaz spun to victory, becoming the first Ecuadorian to win a grand tour. It was so important in Equador that the government paid for the final stage to be moved from paid satellite TV onto a free-to-air channel.

Nobody can agree when Eid is and it’s hilarious

Monday, June 10th, 2019 | Religion & Politics

Earlier this month, Ramadan ended and was celebrated by Eid al-Fitr. The problem is that a lot of the Islamic community couldn’t agree when exactly that happened. It is a common problem and illustrates some of the interesting quirks of religion.

We’re used to religions splitting apart over hairs, of course. Is transubstantiation literal or metaphorical? Can King Henry have a divorce? Did Jesus visit America and tell men to take multiple wives?

But this article by BBC News illustrates the issues with Eid, where different parts of the Scottish Muslim community celebrated on different days.

Ramadan follows the lunar calendar, with a month of fasting that ends when the new moon arrives. You may think that science could easily answer this question. We know when the new moon appears because the movement of celestial bodies can be accurately predicted. In this case, in the UK, the new moon arrived on Tuesday, 4 June.

But no.

Some argue that they have to see it themselves. Presumably, in case it disappears or something.

Others argue that because other people have seen the moon, that should be acceptable “because that’s the same moon”.

Still others have argued that seeing in the UK does not matter because the UK is not an Islamic country. Therefore, it only counts when someone in Morocco sees the new moon because that is the nearest Islamic country.

Finally, others have said the whole thing is too complex and that it should be celebrated according to what can be seen from Mecca.

Champions League final 2019

Saturday, June 8th, 2019 | Sport

Britain won. Well done, Britain!

Writing tests at the API boundary isn’t as clever as you think

Friday, June 7th, 2019 | Programming

Back in the day, unit tests and code coverage were the in thing. You wrote a class, you wrote a unit test for that class. Everything was tested at an individual level and you built integration tests on top of that.

Then we realised that maintaining all of these unit tests was a massive pain in the neck, made it tedious to refactor the code and didn’t provide much value when the real business value was only concerned with everything working together so that the user being able to successfully complete a journey. So, we started writing tests to the API boundary.

Fine. Except it wasn’t fine. The problem is that per-class unit tests are really useful when it comes to understanding other people’s code.

Let’s say we have a component and it is composed of many different internal functions and classes. We write a test to the API boundary so that people can use the component and we know that it works when people use it. That is fine if you are the only person maintaining the component and you have a good memory.

But what if multiple people work on the component and somebody else needs to refactor it? You could try looking in the docs. There are unlikely to be any, though, because it is an internal function. You could try reading the code. This approach is probably the one we rely on most of the time and often works. But if often isn’t too obvious, especially in loosely typed languages with lots of callbacks (*ahem* javascript).

How do you know what goes in and comes out of a function without docs and without types? You don’t. But having a unit test demonstrating stuff being passed in and out is really useful for making an educated guess.

The Flat 100 2019

Thursday, June 6th, 2019 | Sport

The Flat 100, formerly known as the Flat n Fast 100, is a sportive that starts in South Yorkshire and takes in Lincolnshire and Nottinghamshire. Last year I achieved my longest ever ride when I rode the 100km (technically a 106km) route.

This year, I was aiming for the 100 miler, which would make it my equal longest ride with the one I completed just five days before.

It was a busy event: 1,300 people registered a time. This meant the queues were big, too. I arrived at Thorne shortly after 7am but between queuing for the car park, queuing to register (the S-W surnames line was way longer than all the others) and then queuing to cross the start line meant that I didn’t get on the road until nearly 9am, almost two hours after arriving.

It was colder than expected. Foolishly, when I checked the weather, I had put in “Thorpe” rather than “Thorne”, so was surprised when it started raining. Luckily, it did so just as we arrived at the feed stop and stopped just as we were leaving. After that, it brightened up and I had to re-apply suncream at the second feed stop.

I rode with Bogdan for the first 80km before he peeled off onto the medium route. After that, I surfed a few wheels. One group kept yelling “Chris, are you there?” until I was forced to answer “yes” before pulling alongside them and explaining that I probably wasn’t the Chris they were after.

I clocked in with an average speed of 26.7 kph, which is a good pace for me, especially as I rode fairly conservatively for the first 100 km or so. The whole thing took less than six hours of cycling and 6:39 including breaks, which bodes well for The Yorkshireman.

Sapiens: A Brief History of Humankind

Sunday, June 2nd, 2019 | Books

Sapiens: A Brief History of Humankind is a non-fiction book by Yuval Noah Harari.

It is the most interesting book I have read in a long time. I was ignorant of a lot of early human history. For example, I thought that homo erectus was an earlier stage of human evolution, rather than a different species of humans that sapiens killed off (or possibly interbred with).

Much of it I kind of had an idea about but it was fascinating to see it all laid out. Humans used to be in the middle of the food chain. But, 100,00 years ago, we began to hunt large game. Around 30,000-70,000 is what Harari calls the cognitive revolution. Language developed in humans alone, despite other species (parrots, whales, elephants) being able to make a large variety of sounds, too.

15,000 years ago we domesticated dogs, which is the only real evidence you need in the dogs vs cats debate. Dogs are our friends.

Whether sapiens went, we caused destruction. Australia and North America had a large variety of large mammals, for example. We killed and ate them all. This wasn’t modern man: this was the first peoples of these continents. In comparison, horses, which are often seen as an integral part of Native American life, were only introduced to America by European settlers.

The next milestone was the agricultural revolution. This wasn’t the first time we saw permanent settlements: fishing villages existed before this. But the change to agriculture meant an end of the hunter-gatherer way of life. It wasn’t a happy one: gathering is easy and produces a rich diet. Agriculture produces a poor monotonous diet and increases our workload from 30 hours per week to 40+. But it also supports more people and so the trap quickly closed shut.

Harari argues that much of culture is arbitrary: why did one religion win out, or one group of people come to dominate another? Luck, mostly. The only thing that seems to recur independently is patriarchy. We don’t know why this, but many of the reasons you may think of are deconstructed and thrown out in the book.

The author also argues that almost everything is a religion. Religions, of course, but also Humanism, and Communism, and Capitalism.

The third milestone was the scientific revolution. Although technology occasionally improved in the ancient and classical worlds, it was mostly by luck. The Romans did not have amazing technology: they were just better organised. It was only in the 16th century that the idea of experimentation and improving things just to see what was possible sprung up in Western Europe. For the first time, we started drawing maps with blank spaces in. Until then, it was assumed we already knew everything.

Until this point, Western Europe was entirely unimportant. The Middle East had been the centre of civilization for thousands of years and the economic powerhouses of the world were China and India. But embracing science and technology gave the West a huge leg up. In just a few hundred years, Western Europe came to dominate the world, and to become much richer than Asia.

Harari then turns his attention to capitalism, describing the way that states and markets have replaced families and communities. Arguably, capitalism has caused more depths than any other ideology: National Socialism and Communism killed people on purpose. But capitalism, with the slave trade, Bengal famine, etc, has killed far, far more people due to cold indifference.

All in all, this is a fascinating read. Drop what you are doing and go read it now.

Is it worth voting in the EU elections?

Saturday, June 1st, 2019 | Religion & Politics

I’ve previously written about why voting in a general election is pointless. One vote never makes a difference. It did in 1886. And again in 1910. But both of those occasions were before you, me, or even my gran was born.

One of the major problems is the first past the post system. But the EU elections are run under proportional representation. So, does that make it better? It certainly does! It allows a much fairer representation of parties at the table. However, as it is done by region, and because of the number of votes, your one vote still doesn’t really make a difference.

Let’s look at my region, for example, Yorkshire and the Humber. Here is the outcome:

  • Brexit Party, 470,351 votes, 3 MEPs
  • Labour, 210,516 votes, 1 MEP
  • Liberal Democrats, 200,180 votes, 1 MEP
  • Green, 166,980 votes, 1 MEP
  • Conservatives, 92,863 votes, 0 MEPs

One of the best things about PR is that it makes the votes per MP fairer. For example, in a general election, the Lib Dems and UKIP typically have a large share of the vote while only a handful of MPs, while the SNP have very few votes but loads of MPs.

It’s not quite even in PR, but it’s better. The Brexit Party has the best ratio of votes to MEPs with 156,784 votes per MEP. So, in order for someone else to gain an MEP, they would have to beat this number.

Let’s look at what that would mean:

  • Conservatives: 63,921
  • Labour: 103,052
  • Lib Dems: 113,388

Or, maybe you want the Brexit Party to take a fourth seat. That would require them to take an additional 156,785 votes.

All of those are big numbers. Way bigger than the 23,698 votes it would require for the Conservatives to take Leeds Central away from Labour in a general election. Which they haven’t done since 1923.

I also ran the numbers against London. The closest people were the Conservatives who could have taken one of the Brexit Party seats (200,129 votes per MEP) with an additional 22,165 votes. I looked at South East England, too, where the Greens could have taken Labour’s seat with an additional 26,107 votes.

None of these results was close. One vote does not make a difference.