Harry Roberts

Harry Roberts

@csswizardry.com

🚀 Independent Web Performance Consultant • Speaker • Google Developer Expert, Web Performance • Accepting new clients • https://harry.is/for-hire

6.4K followers197 following437 posts

Pinned

Two of my favourite opening slides from my ongoing work with LEGO. Sometimes, site-speed really is a *them* problem. It’s a function of your work and your audience, and one, both, or neither can move the needle.

One of the healthiest things a developer can do when faced with a bug or regression is doubt themselves first, but sometimes it’s something completely out of your hands.

It’s a real shame that folk a decade ago weren’t warning developers against utterly insane things like CSS-in-J —  oh.

GitHub@github.com

GitHub.com has fully moved off CSS-in-JS to CSS Modules, resulting in 55% less server-side render time and 25% faster component init. https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/

I’ve always had a very good habit of `[TAGGING]` things like calendar events or Jira titles and the like — it makes it so much easier to find arbitrary topics with simple grep or search. It turns out it’s *incredibly* useful in this agentic world!

I’ve been using @talat.app for a few months now and it’s completely changed how I handle meetings. I’ll prime Codex for an upcoming call and what I need out of it, then point it at the Talat MCP and get it to extract the bits that are meaningful.

It solves my two biggest on-meeting problems: 1) being distracted in front of a client as I take notes, and 2) not taking good enough notes as I still need to be present.

Anyway. This is #notAnAd! I have a fully paid up license and I can literally show you receipts, but! I am also informally giving away one free lifetime license to ONE person. Follow me and @talat.app and quote-post this post with how it would help you.

Today, I walked around Costco snapping photos of meat labels. I slung them all into my own personal chef GPT, Pierre. 👈 This was my input and 👉 That is their output. For <£400 all in, I’m eating like a king five days a week up until 19 November.

I wrote this up a bit more formally: csswizardry.com/2026/08/how-...

csswizardry.comHow to Find an Exact Gmail Thread with Codex or Claude – CSS WizardryUse Gmail’s Message-ID to point Codex or Claude at one exact email and retrieve the complete conversation rather than a plausible result.
Harry Roberts@csswizardry.com

Instead of asking Codex to look in Gmail for ‘[subject]’ (risky and prone to duplicates or misinterpretation), head to ‘Show original’ and use the RFC 822 `MESSAGE-ID` (from 1982!) to target an exact specific message. From there, it can surface the entire visible thread.

Instead of asking Codex to look in Gmail for ‘[subject]’ (risky and prone to duplicates or misinterpretation), head to ‘Show original’ and use the RFC 822 `MESSAGE-ID` (from 1982!) to target an exact specific message. From there, it can surface the entire visible thread.

I’ve started including a `mission-statement.md` alongside my project-level `AGENTS.md`. It contains philosophical notes about the project: why it exists, what questions it exists to answer, what ‘good’ looks like, etc.

`AGENTS.md` is then told ‘where exact directions are unspecified or unclear, ensure the work aligns with `mission-statement.md`’ as a bit of a fallback/vibe-check. It’s not failsafe or bulletproof, but I have noticed it being invoked a few times recently and… it works!

The mission statement should never include instruction or implementation detail—it should be a guiding principle. The end that the means work around.

Has anyone written/built an `llms.txt` that they’re really happy with? And have you noticed it working/helping? I recently updated my research agent to check all websites for `/llms.txt` before diving straight into parsing pages of HTML and I’m looking forward to seeing if/how effective it is.

If you’re doing any reasonable amount of performance work, ensure you have a fresh browser profile with no ad blockers installed, and ensure this is unchecked (Chrome)! You’re only getting part of the picture otherwise.

For the last month or so, I’ve been playing Wordle against ChatGPT and keeping track of our scores. It’s incredibly close, but I’m just winning.

I solve the day’s puzzle myself, then when I’ve completed it, I walk ChatGPT through its game by playing on its behalf and pasting screenshots in. It’s fun!

Today, I spoke at the inaugural #DUNC26 in Hull—a real gem of a city. The conference packed so much diversity of content into a one-day, one-track event, BUT! My favourite takeaway is that every single speaker listed a personal site/blog in their slides. I visited every one of them. What a day.

An important update courtesy of @tunetheweb.com! csswizardry.com/2026/05/bett...

Harry Roberts@csswizardry.com

I’ve been working with a client who runs a lot of social media and ad campaigns, so we’ve been deploying the experimental `No-Vary-Search HTTP` header. It’s amazing to see it actually working! Read all about it here: csswizardry.com/2026/05/bett...