Harry Roberts
@csswizardry.com
🚀 Independent Web Performance Consultant • Speaker • Google Developer Expert, Web Performance • Accepting new clients • https://harry.is/for-hire
Not only is @jpamental.bsky.social a really good friend, he’s an exceptionally good MC. You should hire him for your event.
October 21, 2025 at 9:19 PM
Not only is @jpamental.bsky.social a really good friend, he’s an exceptionally good MC. You should hire him for your event.
I recently started instrumenting both @cloudflare.social and browser cache hits/misses and the numbers, while obvious, are compelling. The best request is the one that never happens. Check that 0ms TTFB 😍
℅ @speedcurve.com
℅ @speedcurve.com
September 20, 2025 at 1:07 PM
I recently started instrumenting both @cloudflare.social and browser cache hits/misses and the numbers, while obvious, are compelling. The best request is the one that never happens. Check that 0ms TTFB 😍
℅ @speedcurve.com
℅ @speedcurve.com
My little salt and oil station.
September 18, 2025 at 1:55 PM
My little salt and oil station.
I would wholeheartedly recommend this by the way. 2:1 salt:MSG used anywhere you’d use salt in a savoury context. Amazing on meat and green vegetables.
September 18, 2025 at 12:06 PM
I would wholeheartedly recommend this by the way. 2:1 salt:MSG used anywhere you’d use salt in a savoury context. Amazing on meat and green vegetables.
Create a Gist on the website, clone it to your machine, and you’re off. You can’t have branches or directories, but by that point you probably need a full GitHub repo anyway. They are so so so useful; you should definitely be using them more.
September 8, 2025 at 12:38 PM
Create a Gist on the website, clone it to your machine, and you’re off. You can’t have branches or directories, but by that point you probably need a full GitHub repo anyway. They are so so so useful; you should definitely be using them more.
I wanted to create a slightly tighter lockup for Obs.js’ logo and `h1` but I didn’t want the two to ever touch. Solution? A little dead-zone (coloured red) attached to `::after` which occupies the area overing the j’s descender.
September 1, 2025 at 3:24 PM
I wanted to create a slightly tighter lockup for Obs.js’ logo and `h1` but I didn’t want the two to ever touch. Solution? A little dead-zone (coloured red) attached to `::after` which occupies the area overing the j’s descender.
Binary code paths with /**//*//**/
August 30, 2025 at 10:21 AM
Binary code paths with /**//*//**/
Audio quality is dreadful but I promise I’ll rerecord it over the weekend. Too good not to share.
August 29, 2025 at 5:08 PM
Audio quality is dreadful but I promise I’ll rerecord it over the weekend. Too good not to share.
`--word-diff` and `--word-diff-regex` are your new favourite Git tips:
August 29, 2025 at 1:03 PM
`--word-diff` and `--word-diff-regex` are your new favourite Git tips:
🪄 Really neat trick for docs/demo pages. You can add `display: block` to `script` and `style` and show folk the actual, literal code you’re running. It’s what I do with Obs.js:
August 29, 2025 at 10:51 AM
🪄 Really neat trick for docs/demo pages. You can add `display: block` to `script` and `style` and show folk the actual, literal code you’re running. It’s what I do with Obs.js:
As a developer, I’ve always struggled with design. I know/appreciate what looks nice, but I can never get there myself. Anyway, I spent a few hours this morning working on a small logotype for Obs.js. Based on Gotham, I’m pretty happy with the results so far.
August 23, 2025 at 1:45 PM
As a developer, I’ve always struggled with design. I know/appreciate what looks nice, but I can never get there myself. Anyway, I spent a few hours this morning working on a small logotype for Obs.js. Based on Gotham, I’m pretty happy with the results so far.
Toying around with some silly things on my Friday evening.
August 22, 2025 at 8:13 PM
Toying around with some silly things on my Friday evening.
I used this to build a quick obfuscator. This will be great for anonymising @speedcurve.com dashboards before putting them in talks etc. Peep the address bar and tab name, too!
August 19, 2025 at 4:27 PM
I used this to build a quick obfuscator. This will be great for anonymising @speedcurve.com dashboards before putting them in talks etc. Peep the address bar and tab name, too!
Chrome DevTools snippets are incredibly powerful, but they don’t accept parameters. One crude way around it is to use `prompt()` to take input on the fly.
August 19, 2025 at 2:56 PM
Chrome DevTools snippets are incredibly powerful, but they don’t accept parameters. One crude way around it is to use `prompt()` to take input on the fly.
It finally happened!
August 13, 2025 at 12:38 PM
It finally happened!
What’s your favourite text editor and why is it Vim?
August 9, 2025 at 9:44 PM
What’s your favourite text editor and why is it Vim?
Same code, same infrastructure, different context. Web performance is sometimes an ‘us thing’ and sometimes a ‘them thing’. For better or worse, we have a responsibility to cater to both.
August 6, 2025 at 4:11 PM
Same code, same infrastructure, different context. Web performance is sometimes an ‘us thing’ and sometimes a ‘them thing’. For better or worse, we have a responsibility to cater to both.
🎞️ Here’s an example:
August 5, 2025 at 2:10 PM
🎞️ Here’s an example:
🎥 I spent a few hours recording a bunch of short-form web performance tips and tricks on Sunday. I plan to continue recording and releasing as I encounter fascinating real-life scenarios. Interested?
August 5, 2025 at 12:35 PM
🎥 I spent a few hours recording a bunch of short-form web performance tips and tricks on Sunday. I plan to continue recording and releasing as I encounter fascinating real-life scenarios. Interested?
I’m working with a client who has a very diverse (adverse?) customer base, so we’re sending off some more high fidelity Network and Device information to @speedcurve.com:
August 1, 2025 at 2:22 PM
I’m working with a client who has a very diverse (adverse?) customer base, so we’re sending off some more high fidelity Network and Device information to @speedcurve.com:
You can’t park there, mate.
July 30, 2025 at 6:23 PM
You can’t park there, mate.