Daniel Lockyer

Daniel Lockyer

Performance and scaling consultant who analyzes the full stack - frontend, backend and infrastructure - to generate more revenue and cut costs for businesses.

Remote • Available for monthly retainer and bespoke projects.

Book a Call

Archive

A collection of 69 issues

Latest Posts

Twenty-nine

Following on from my previous posts for my twenty-third, twenty-fourth, twenty-fifth, twenty-sixth, twenty-seventh and twenty-eighth birthdays, here is my recap of my twenty-ninth year on Earth. In the last year, I have: * come 2nd place in the Sri Chinmoy Self-Transcendence 50km * visited Vuurtoreneiland for Sanne's birthday * been to

1 min read

How to resend all failed Stripe webhooks

If you've had issues with your webhook endpoint, and Stripe failed to send webhooks to you, it'll automatically retry with an exponential backoff. However, you might want to manually trigger the events to be resent before the automatic attempt. Stripe allows you to do this via

1 min read

Running goals for 2024

* 5km: 17:00 (3:24 min/km) * 10km: 36:00 (3:36 min/km) ✅ * Half marathon: 1:20:00 (3:47 min/km) * Marathon: 2:45:00 (3:55 min/km)

Twenty-eight

Following on from my previous posts for my twenty-third, twenty-fourth, twenty-fifth, twenty-sixth and twenty-seventh birthdays, here is my recap of my twenty-eighth year on Earth. In the last year, I have: * spent Christmas + New Year in the Netherlands * been to Spain * received a Netherlands residency permit * moved to an apartment

Running goals for 2023

* 5km: 18:30 (3:42 min/km) → ✅ 17:44 (3:33 min/km) * 10km: 39:00 (3:54 min/km) → ✅ 36:55 (3:42 min/km) * Half marathon: 1:25:00 (4:02 min/km) → ✅ 1:21:30 (3:52 min/km) * Marathon: 2:59:59 (4:16 min/km)

Twenty-seven

Following on from my previous posts for my twenty-third, twenty-fourth, twenty-fifth and twenty-sixth birthdays, here is my recap of my twenty-seventh year on Earth. In the last year, I have: * lived in numerous countries and apartments * ran Ashby 20 (miles) in March * ran 31km for Sanne's birthday in

Running targets for 2022

A clone of my targets for 2020 because I haven't achieved them yet. * 5km: 18:30 (3:42 min/km) * 10km: 39:00 (3:54 min/km) * Half marathon: 1:25:00 (4:02 min/km) * Marathon: 2:59:59 (4:16 min/km)

Twenty-six

Following on from my previous posts for my twenty-third [https://daniellockyer.com/twenty-three/], twenty-fourth [https://daniellockyer.com/twenty-four/] and twenty-fifth [https://daniellockyer.com/twenty-five/] birthdays, here is my recap of my twenty-sixth year on Earth. In the last year, I have: * lived in York, UK for 1 year * ran a

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,

6 min read

Twenty-five

I've previously written my year-in-review for my twenty-third [https://daniellockyer.com/twenty-three] and twenty-fourth [https://daniellockyer.com/twenty-four/] 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

1 min read

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

How to solve low 4iiii Precision power meter readings

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

1 min read
Zone 2 training

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

2 min read

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:

1 min read

Twenty-four

Last year I wrote a year-in-review for my twenty-third [https://daniellockyer.com/twenty-three] 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

1 min read
Node.js memory flamegraphs

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

3 min read

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

Last October I made Upgrade your PHP [https://upgradeyourphp.com/], 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

3 min read

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

4 min read

DigitalOcean Spaces doesn't support HTTP/2

Earlier today I was looking at a couple of sites to see why they were much slower than I expected. I ran them through GTmetrix and saw the following in the waterfall tab. Straightaway I could see that this is the classic pattern produced by trying to load a bunch

2 min read

Flamegraphs for Ruby 2.6

I recently added support for Ruby 2.5.4, 2.5.5 and 2.6.0-2.6.3 to rbspy, the sampling profiler written in Rust. I have replaced the original Flamegraph library by Brendan Gregg with Inferno, a Rust port. I also updated and merged a PR for handling

1 min read