My first 100km run

It's been long since I did this run and I originally wrote the bulk of this post in the week after, but recovery was tough and I lost the drive to continue writing after a couple of weeks. Having looked at this draft every time I log in, I figure…

Twenty-five

I've previously written my year-in-review for my twenty-third and twenty-fourth birthdays. And now for another! As well all know, this year has been a weird one. Things didn't go as expected for many but I've tried to make the most of it regardless. In the last year, I have: ran…

Find the largest unstaged files in Git

I was recently adding a bunch of files to a new Git repo, but I couldn't be sure if I was about to commit a 100MB file. The following bash command should print out a sorted list of unstaged files and their size, so you can check if you are…

April 2020 cycling challenge

Towards the end of March, my uncle sent our triathlon group a challenge he was thinking of doing; dubbed the "1000 challenge". There weren't any specifics and I assumed he was talking about 1000km of cycling. I called him later that day to ask him about it and he clarified…

How to solve low 4iiii Precision power meter readings

I recently managed to get a 4iiii Precision left-only crank power meter. I fitted it and did a 40 minute indoor session. I have a dumb trainer, but I've found the power curve online. It was showing that I could expect ~200W for 30km/h on a certain setting. Instead,…

Zone 2 training

I spent most of 2017 and 2018 running with little structure or knowledge of pacing. When I first started, I kept trying to PB my 5km time literally every single run. A lot of my time was spent injured from ramping up too quickly, and running too quickly. I bought…

Running targets for 2020

As of October 31st 2019, my current running PBs are the following: 5km: 19:49 (3:58 min/km - November 2018)10km: 42:13 (4:13 min/km - October 2019)Half marathon: 1:30:17 (4:17 min/km - October 2019)Marathon (unofficial): 3:39:46 (5:…

Twenty-four

Last year I wrote a year-in-review for my twenty-third birthday. And now it's time for another! In the last year, I have: visited Chiang Mai - Here for my birthday last year, until just after NYD. Came back here during summer to regain fitness after 3 months off, and now…

Automated GitHub releases for Rust projects using Actions

I've been using GitHub Actions more and more across the projects I maintain. It's a great offering and integrates well into GitHub. There are a few Rust projects I have where I wanted to automate the publishing of prebuilt binaries to the GitHub releases page. I've seen others do it…

A good standard for endurance sports

I was recently talking to my uncle about the sort of achievements that would be good to achieve as a semi-competitive age-grouper. That is, you're not new to the sport, but also not in an elite category. In the end, we decided a time 1.5x slower than the elite…

Node.js memory flamegraphs

If you read my blog or follow me on Twitter you may have noticed I'm a huge fan of flamegraphs. I've previously written about how I use them to profile PHP and Node.js applications, and I help maintain rbspy, a Rust profiler for Ruby, which outputs flamegraphs. Most of…

Avoiding double builds in GitHub Actions

I was recently setting up some CI on GitHub Actions and ran across double builds for pull requests. The official documentation is still a bit lacking and it's a problem because it burns 2x the credits. In the end, I made this diff: -on: [push, pull_request] +on: + pull_request:…

ULTRALONDON 55

Race InformationName: ULTRALONDON 55kmDate: October 5th 2019Distance: 55kmLocation: London, EnglandWebsite: https://www.ultralondon.co.uk/Time: 5:27:30 (about 6 min/km)GoalsA - Finish: YesB - Sub 6: YesC - Sub 5:30: YesSplits27.50km: 2:24:1755km: 5:27:30About the raceThe 55km race follows the Capital…

Using Apple AirPods When Running

I recently picked up a pair of Apple AirPods 2 whilst in Malaysia. It took me a while to find them because everywhere was out of stock. So far, I’ve had a pretty good experience with them for daily use (and I haven’t lost one yet!). It’s…

If you are still using PHP 5.6 or 7.0, you need to upgrade

Last October I made Upgrade your PHP, a site to let people know that PHP 5.6 and PHP 7.0 were about to reach their End of Life, and would no longer be officially supported. In the time since, I've been helping people upgrade their servers to recent, supported…

Profiling Node.js applications using flamegraphs

This post is a case study of how I profiled a Node.js application, and how using flamegraphs allowed me to make the boot time of Ghost 20% faster. I remember trying to profile Node.js many years ago and it was much harder than it is now. When researching…

Suggested settings for Cloudflare

I always recommend to my clients that they use a CDN on their website. These are my recommendations for people using the Cloudflare Free plan, along with some warnings to watch out for. DNSStatus: Orange Cloud - this will ensure the requests go through Cloudflare.CryptoSSL: Full (Strict) - if…