Archive for September, 2020

Edplx review

Tuesday, September 29th, 2020 | Life

I received an unsolicited email from Edplx telling me I should sell my courses on their platform. They claim that the average instructor earns £2,000 per month. Are they legitimate? I don’t have an inside view, but my guess is not and here are my reasons.

They claim to be a reputable company. But there is no such company registered in the UK.

Next, all of their courses seem to have 600 to 1,200 students. That seems odd. I would normally expect a wider distribution with newer courses only having a few sales and some high sellers having much higher numbers. But they all seem to fall into that band.

And yet, every single course I checked had 0 reviews.

Also, it’s weird they have so many students and yet only three people like their Facebook page.

That is three more people than follow them on Twitter which, at time of writing, has zero followers. They have links to Instagram and YouTube on their website, too, but these just link to the respective homepages and I couldn’t find any evidence they have an account on these platforms.

They claim to have millions of customers every day but I ran their website through SimilarWeb and they said they have insufficient traffic to even rank them.

It’s not possible to evaluate the courses as they do not provide video previews, in either a trailer format or letting you preview any of the lessons. Are the courses on there real? I have no way to tell.

Conclusion

I believe that Edplx is a scam.

How long do the Nike Vaporfly Next% shoes last?

Saturday, September 26th, 2020 | Sport

How durable are the Nike Vaporfly Next% running shoes? Some people have suggested they are only good for 100-200 kilometres, so I tested mine to destruction to find out.

After nine months and 915 kilometres of running (just under 570 miles), the upper tore away from the sole in the arch. I was two kilometres away from the finish line at Windermere Triathlon at the time but managed to finish the race.

How long will they last? Based on these figures, if you are doing two 10k runs per week, you will get 11 months out of them. If you are doing 30-40km per week (20-30 miles), you will get six months.

I’ve never had a shoe fail on me like this before, so it’s probably fair to say that the durability is not as high as other shoes. But I still got nearly 1,000 kilometres out of them with no noticeable drop off in performance so they are far from a race-day-only shoe that you need to replace after each marathon, either.

Voodoo Limba bike review

Thursday, September 24th, 2020 | Reviews, Sport

In this video, I’ll review the Voodoo Limba cyclocross (adventure) bike from Halfords. It’s an entry-level cross bike that is more affordable than other brands and got me through my first few sportives and triathlons.

Unfortunately, it has been plagued with problems for me. The back wheel has literally fallen off twice. How much user error can you get from a quick release skewer? Once maybe, but they are just not that complicated.

The front wheel jumps violently to the side when I brake. I’ve had multiple bike shops try to fix it with no luck. I think it’s a problem with the axle but the wheels are generic so there is no practical way to fix them.

Nor are the wheels balanced. The front wheel constantly veers to the left, making it harder to handle and impossible to run with in transition.

The groupset is Claris, which is Shimano’s cheapest road groupset and it is terrible. The rear cassette constantly deindexes and is impossible to get reindexed correctly. And every time I change gear on the front rings, the chain comes off.

I’ve done all the standard debugging, like adjusting the barrel adjuster and re-aligning the brake pads with no success. I’ve also taken it to multiple bike shops and they have had little success also.

As a result of the issues with the brakes, and the wheels, and the gears, I don’t ride the bike anymore because I’m genuinely scared that I’m going to die. In my opinion, it is worth paying more for a higher quality bike.

EpicMan Windermere Triathlon

Wednesday, September 23rd, 2020 | Sport

It’s been a challenging year for all of us. Thanks to a receding coronavirus, there has been a triathlon season, however. Albeit a short one. I signed up; for five races: Evolve quarter, sprint, Derby, Windermere and Goole. Goole was cancelled and I picked up a cold just before Evolve sprint so I wasn’t allowed to race. It lastest past Derby triathlon, meaning I only got to race two of the five races.

Still, two is better than none, and at least Windermere is one of the pretty ones. We made a long weekend of it, renting a converted barn in Crosthwaite and used the time to take in some of the lakes, including Venla beating us all up Gummer’s How.

The swim

I had a pretty terrible swim: it took nearly 50 minutes. I am a slow swimmer anyway, but I am usually under 40 minutes for 1,500 metres. I think a couple of factors contributed. I took it easy and decided to treat myself to breaststroke. That way I could look around at the beautiful scenary, especially looking up at the north end of the lake. It was also a slow start as you cross the timing mat, then run down into the water. But it’s pretty stoney and shallow, so it doesn’t lend itself to running and diving.

The course was also a little confusing. There were supposed to be eight buoys on the water, and the standard distance went around six of them. But, on the day, there were actually ten of them, of which we had to go around eight. This led to some confusion in the swim pack ahead of me on the way out, and me getting confused on the way back as extra buoys kept appearing.

I was second to last out of the water, although this isn’t really an accurate measure because it was a staggered start due to COVID and I was in the second-to-last wave, 25 minutes after the race started.

The bike

The bike course was a story of two halves. One of the issues with the Lake District is that there is a lot of cars and the first half of the bike course meant we were travelling down main roads with cars whizzing by, or on smaller roads, cars would get stuck behind slower cyclists (especially on hills) and I would get stuck behind the car.

The second half was on smaller roads and this was much nicer. It was reasonably flat for the Lake District: 450 metres of climbing over 37.5 km and only one steep climb that topped out at 13%.

The run

The run took place in the grounds of YMCA Lakeside. It was all trail, and some bits involved scrabbling down a few rocks. As I climbed down one of the little walls, the rock beneith my foot gave way and started rolling down the hill. I had to jump off it Super Mario style.

Given the sun was up and beating away by this point, I was pleased to be running through the trees most of the time, though. I had a small issue 2 kilometres from the finish when my running shoes ripped but luckily they stayed on for the remainder of the run!

I am very glad it was dry as it would be a challenging run course in the wet. Some parts were muddy and I slipped a couple of times. But I was wearing my road shoes.

The result

My official time was:

3:20:32

But the splits were initially bit of a mystery. Officially, my swim time was 12:30:45, my bike was 1:26:50, my run was 1:01:08 and my transition times were instant. On my watch, I clocked 49:20, 3:15, 1:26:52, 3:59 and 57:07.

But they later updated the results to be 49:19, 3:15, 1:26:50, 4:03, 57:05, which matches up with my watch.

The pictures are available for free, although heavily watermarked and to find them you have to manually search through the nearly 12,000 photos they have uploaded. As there were three distances going on at the same time, there was no indication where I might be in the pictures. I found my bike and run ones, and I don’t think there is a finish line one. Still, free, so no complaints.

Conclusion

Organising a COVID-secure event is a huge challenge and it’s not like triathlon events are a profitable industry in normal times (unless you’re Ironman, and even they are in financial trouble). So, a big thank you to Epic Events for getting it organised.

Some triathlons are fast, flat and great for PBs. Others are more about having a great experience in a beautiful location. This race is the latter.

Upgrading from Slim 3 to Slim 4

Friday, September 18th, 2020 | Programming

Slim is one of my favourite PHP microframeworks and many websites are built on Slim 3. I have recently moved to Slim 4 and thought I would document the upgrade process for anyone else looking to make the leap.

Dependencies

Slim 3 came with its own dependency injection container. This is no longer the case. Therefore, we need to bring one in, such as php-di that Slim supports out-of-the-box. We will also need a PSR-7 library and the Slim HTTP helpers.

"slim/slim": "4.*",
"slim/psr7": "1.*",
"slim/http": "1.*",
"php-di/php-di": "^6.1",

Creating the app

In Slim 3, we created the app and then accessed the container.

$app = new \Slim\App([
    'settings' => []
]);

$container = $app->getContainer();

In Slim 4, we create the container then attached it to the app.

$container = new \DI\Container();
\Slim\Factory\AppFactory::setContainer($container);
$app = \Slim\Factory\AppFactory::create();

You can still access the container in the old way and inject dependencies into it, but you need to manually pass it into the app as above.

Accessing dependencies

Now we are using our PSR-11 DI of choice, we need to change how we access our dependencies. Previously, wee could use the Slim shorthand.

$db = $this->ci->db;

Now we need to use the PSR-11 standard.

$db = $this->ci->get('db');

Exception handling

Previously, we could set error handling using the dependency injection container.

$container['notFoundHandler'] = function ($container) {
    return function ($request, $response) use ($container) {
        $controller = new \App\Controller\ExceptionController($container);
        return $controller->notFound($request, $response);
    };
};

In Slim 4, we need to use the bundled middleware.

$errorMiddleware = $app->addErrorMiddleware(true, true, true);

$errorMiddleware->setErrorHandler(
    Slim\Exception\HttpNotFoundException::class,
    function (Psr\Http\Message\ServerRequestInterface $request) use ($container) {
        $controller = new App\Controller\ExceptionController($container);
        return $controller->notFound($request);
    });

This also means changing the exception controller, too, if you use one. In Slim 3, we would still get a response object passed in.

    public function notFound(Request $request, Response $response)
    {
        return $this->render($response, 'not-found.html');
    }

With Slim 4, we need to create our own.

    public function notFound(Request $request)
    {
        $response = new \Slim\Psr7\Response;
        return $this->render($response, 'not-found.html');
    }

That should take care of most of the changes. If you run into anything else, let me know, and I’ll update this article.

Can you train for an Ironman in 6 weeks?

Thursday, September 3rd, 2020 | Sport, Video

Many athletes spend years preparing for a full distance (Ironman) triathlon. But what if you only have 6 weeks? In this video, I’ll give it a go. To be fair, I wasn’t going from a standing start. I spent the first three months of 2020 on my training plan. Then COVID-19 happened, all the races got cancelled, and I spent the next few months running the Great Virtual Race Across Tennessee.

Then, six weeks before the race, Dalesman announced they were going ahead with their full distance race. So, I thought I would give it a go. Is it enough time to get ready? Let’s find out!

Skip to 8:15 for the sexy training montage and 15:57 for some race day footage.