Sign in

Ryan Townsend

@twnsnd.com
888 followers 268 following 402 posts

Principal Product Manager @ Cloudflare • Public Speaker • 20+ YOE in Tech, 10 as CTO • LessonsofaCTO.com

PostsRepliesMedia
Ryan Townsend @twnsnd.com · 03/09/2026
Can 2027 be the year we finally get all the Core Web Vitals in all browsers? 🙏 Work your magic folks: github.com/web-platform... #webperf
Bernie Sanders meme captioned “I am one again asking for CLS”
0174
Ryan Townsend @twnsnd.com · 09/07/2026
Cloudflare Real User Monitoring (aka Web Analytics) is the # analytics tool of 2025—with installs on 1.5% of all websites!—according to w3techs.com/blog/entry/w... Reminder you can use this completely for free, even if you don’t use Cloudflare as your CDN!
Screenshot from w3tech.com. Read Bluesky post for breakdown.
220
Ryan Townsend @twnsnd.com · 16/05/2026
I took a picture of @jeremias.codes taking a picture of @danielroe.dev taking a picture of his flat white.
A group of lovable idiots taking photos
4523
Ryan Townsend @twnsnd.com · 14/05/2026
“We’re going to animate the living shit out of this” — this phrase will now live in my head rent free forever. @cydstumpel.nl @jsheroes.io
Cyd presenting an example conference website with scroll driven animations
0142
Ryan Townsend @twnsnd.com · 14/05/2026
Pausing, slowing down and inspecting view-transitions in the DOM within DevTools is an absolute super power 👏🏻 @cydstumpel.nl @jsheroes.io
Cyd showing Chrome DevTools with animation paused and the view-transition pseudo element in the inspector
061
Ryan Townsend @twnsnd.com · 14/05/2026
@cydstumpel.nl is giving me so much slide design AND website design jealousy @jsheroes.io 😍
Cyd presenting her websiteCyd presenting with her slides showing a stylistic browser window design
0101
Ryan Townsend @twnsnd.com · 14/05/2026
Romania really pulled out all the stops on the weather for @jsheroes.io 😍
View of the hills surrounding Cluj with clear blue skies and lush greenery
0121
Ryan Townsend @twnsnd.com · 07/05/2026
End of an era 😭 #alldayhey
Everyman Cinema. All Day Hey 2026: The Last One
030
Ryan Townsend @twnsnd.com · 27/04/2026
Little bug with the green header on this table, looks like overlapping text:
A table of data
110
Ryan Townsend @twnsnd.com · 18/04/2026
I’ve said it a million times and I’ll say it a million more: Poland is so underrated. Thanks for having me @wrocloverb.com ❤️
Wroclaw city centre with churches and buildings on the riverPierogi covered in pickles, bacon and herbsAn “I love Wroclaw Airport” neon signA boat on the river with beautiful buildings behind
070
Ryan Townsend @twnsnd.com · 14/04/2026
"You can connect the Magic Mouse via a USB-to-Lightning cable to a USB switch that toggles between your two Macs." Yeah... about that, Claude 🙃
A Magic Mouse connected via cable attached to its underneath
020
Ryan Townsend @twnsnd.com · 02/03/2026
Super excited to announce today I joined @cloudflare.social as a Principal Product Manager to work on RUM & Web Analytics with the Speed team! 🏎️💨 Buzzing to be working with @tkadlec.bsky.social and @sergeyche.dev, among many other fantastic folk 🙌
I've joined Cloudflare to help build a better internet
14610
Ryan Townsend @twnsnd.com · 28/02/2026
“Performance is an underrated form of accessibility” YES @mikehall314.bsky.social 👏🏻
“Performance is accessibility” on Mike’s slide
1113
Ryan Townsend @twnsnd.com · 28/02/2026
“We’re just widening this gap” – @zachleat.com #SotB2026
Zach showing the impact of SPAs on the delay of interactivity
020
Ryan Townsend @twnsnd.com · 28/02/2026
@zachleat.com’s “interactivity dead zone” between rendering and interactivity is why I’ve always been so bullish on Progressive Enhancement, and more recently Invoker Commands and other declarative APIs.
Zach on stage describing the time between rendering and JavaScript arriving for interactivity
150
Ryan Townsend @twnsnd.com · 28/02/2026
It’s wild that (no longer necessary) JavaScript dating back to the Dreamweaver days is still being so widely-used today. @zachleat.com making me feel very old at #SotB2026
Zach on stage showing GitHub search results for ‘MM_swapImage’
1120
Ryan Townsend @twnsnd.com · 28/02/2026
If you’ve been confused by CSS anchor positioning, you really must watch @bram.us’s talk from #SotB2026 It’s demystified a lot for me and we’re only halfway through!
Bramus presenting on stage
1130
Ryan Townsend @twnsnd.com · 04/02/2026
For anyone attending #AllDayHey in May: brunch at Galleria is a must. Ditch your hotel breakfast, Chef Andy’s food is worth delaying your train home for. It’s a personal battle for me to not choose the shakshouka every time, but the whole menu is unreal.
Shakshouka with baked eggs, harissa and saffron spiced tomato, labneh, avo and flatbread. Plus an extra side of Cumberland sausage 😉
040
Ryan Townsend @twnsnd.com · 14/01/2026
It also came through pretty amusingly in Feedbin 😅
Article entry entitled "Introducing the HTML element"
000
Ryan Townsend @twnsnd.com · 14/01/2026
This looks great! FYI there's a broken Markdown link under the progressive enhancement section:
A paragraph from the article
100
Ryan Townsend @twnsnd.com · 11/01/2026
Love your new insights section! Mainly because it's glazing me more and more every week 😅
AI Insight. Executive summary for this report: Our website's Core Web Vitals show a strong positive trend, with LCP improving by 0.227 seconds to an excellent 0.981 seconds since the last report. This significant load speed enhancement directly improves user experience, bolstering engagement and conversion rates. Our CLS and TBT metrics remain perfectly optimized, maintaining an exceptional overall performance. Sustaining these top-tier speeds ensures a competitive advantage and reinforces user trust for continued business growth.
111
Ryan Townsend @twnsnd.com · 08/01/2026
This is very cool: the app you use to configure the keyboard (remap keys etc) is a web app 🎉 🎉 🎉 Sadly, it's Chromium-only as it relies on the USB API which is unsupported in Safari & Firefox 😔
Google Chrome screenshot showing the Keychron keyboard configuration application
130
Ryan Townsend @twnsnd.com · 08/01/2026
It came with some freebie custom keycaps... is this duck typing? 🤔
Custom keycaps including a duck, thumbs up, wave, fist bump and peace sign.The duck key cap mounted on the edge of the keyboard
130
Ryan Townsend @twnsnd.com · 08/01/2026
✅ First completely necessary purchase of the year: a ceramic keyboard
The box of the Keychron Q16 HE 8K keyboardThe keyboard itself, with it's ceramic keycaps glistening in the light
5160
Ryan Townsend @twnsnd.com · 18/12/2025
The only commit checks out.
Git commit with the message "wtf"
080
Ryan Townsend @twnsnd.com · 05/12/2025
Hello from 3200m, -15°c 📍Les Deux Alpes glacier
Ryan holding his snowboard on the Les Deux Alpes glacier with Mont Blanc in the backgroundView over Les Deux Alpes, with clouds covering some of the mountainsView of Les Deux Alpes town
030
Ryan Townsend @twnsnd.com · 20/11/2025
You’ve given me the curse too now 😭
Rise&Fall Instagram advert starting with “We’re Sorry”
120
Ryan Townsend @twnsnd.com · 03/11/2025
When you have poor signal, the Bluesky app becomes more true to its name.
An iPhone screenshot showing nothing more than a blue gradient.
271
Ryan Townsend @twnsnd.com · 31/10/2025
In my opinion, any SWE writing client-side JavaScript has a responsibility to understand the Event Loop. @jakearchibald.com’s ‘In The Loop’ talk is required watching: www.youtube.com/watch?v=cCOL... (cited by @andydavies.me at #perfnow)
Andy on stage with a slide reading “Need a refresher on the Event Loop” and citing Jake’s 2018 talk.
2316
Ryan Townsend @twnsnd.com · 31/10/2025
“~200 bytes of JavaScript that can wreck your performance” – @andydavies.me explaining download size doesn’t always correlate to runtime performance at #perfnow #webperf
Andy on stage with a slide showing JavaScript code that blocks the main thread for 500ms every time the mouse movesA slide that reads “Runtime costs are a hidden danger”
061
Ryan Townsend @twnsnd.com · 30/10/2025
“What happens when you want to center a div in Chrome?” — @michael-hladky.bsky.social at #perfnow This would make a great interview question that would give a variety of different answers. #webperf
Michael on stage at Perf Now 2025. His slide shows a workflow diagram of steps in the rendering process.
1203
Ryan Townsend @twnsnd.com · 16/10/2025
Northern UK developers: join us tonight in Manchester for a talk on scaling to support hundreds of millions in client transaction volume. It contains a lot of framework-agnostic advice, so non-Ruby developers stand to learn a thing or two too!
A presentation slide with the title "Millions on Rails: a two-decade retrospective on scaling with Rails"
010
Ryan Townsend @twnsnd.com · 09/10/2025
Exactly the response I had when I went last year, “holy shit, the photos don’t lie!” Unreal.
Me looking out over a Swiss mountain rangeA view looking down from Männlichen to GrindelwaldAn evening photograph of low cloud sweeping the mountains above Grindelwald
110
Ryan Townsend @twnsnd.com · 09/10/2025
Is this mob programming?
Two ragdolls resting on my right arm on my desk
010
Ryan Townsend @twnsnd.com · 17/09/2025
The #1 reason to upgrade to iOS 26… particularly in the UK, spam has been epidemic recently.
The “Screen Unknown Callers” settings in iOS 26, options being “Never”, “Ask Reason for Calling” and “Silence”
151
Ryan Townsend @twnsnd.com · 12/09/2025
At Goodwood, the Red Bull team did so many doughnuts in that electric Ford that the cabin filled with smoke and they had to open the door to let it out 😅
Red Bull liveried electric Ford with a smoke-filled cabin and the door open.
100
Ryan Townsend @twnsnd.com · 18/08/2025
I didn't ask, but... cool? Just generate the CLI command please.
A screenshot from VSCode showing Copilot responding to a prompt saying "My name is GitHub Copilot"
010
Ryan Townsend @twnsnd.com · 04/08/2025
My friends over at RUMvision.com have sent me a lovely gift. I think my boys love it as much as I do, though they are mostly interested in fighting over occupation of the box. Thank you @jordyscholing.bsky.social, @erwinhofman.bsky.social and @karlijnlowik.bsky.social ❤️
Blue point ragdoll cat (Sidney) sitting in a cardboard box
282
Ryan Townsend @twnsnd.com · 28/07/2025
HMU if you want any photos from Goodwood I have… a few.
Screenshot of Apple Photos albums, with Goodwood 2025 having 406 photos
100
Ryan Townsend @twnsnd.com · 25/07/2025
Don't make me point at the sign.
An edited XKCD cartoon based on https://xkcd.com/927/

The title is "How JavaScript Proliferates", with the first slide stating "Situation: there are 14 competing libraries", the middle slide saying "14?! I should definitely make a better one from scratch rather than putting in effort to patch an existing one" and the final slide stating "Soon: Situation: there are 15 competing libraries"
1285
Ryan Townsend @twnsnd.com · 15/07/2025
Dua Lipa took a passenger ride in her green & red liveried GT3RS. Definitely damaged my hearing spectating from the flint wall section behind the hay bales 🥲 Unfortunately I didn’t notice my shutter speed was too high so the cars in these photos look static except the Pagani.
Dua Lipa in her Porsche GT3RSPaganiKoenigsegg CC850Ferrari
000
Ryan Townsend @twnsnd.com · 15/07/2025
Fun to see a variant of my car ripping it up and down all day as the course car. Porsche had their 1 of 1 Sonderwunsch 911 (993) Speedster at the stand.
Porsche GT4 course car on the Goodwood hill climb track1 of 1 Porsche Speedster dashboardSide angle of the Porsche Speedster
100
Ryan Townsend @twnsnd.com · 15/07/2025
🏁 Any car nerds in my network? I just got back from my first Goodwood Festival of Speed. Witnessed some utterly incredible vehicles many of which worth more than my house.
Rear of the Pagani UtopiaFront of the Pagani UtopiaFront of the Singer 911 Carrera Coupe RestomodInterior of the Singer 911 Carrera Coupe Restomod
100
Ryan Townsend @twnsnd.com · 10/07/2025
“The holy trinity of boring” – @ichimnetz.com at #frontendnorth
Nils presenting a slide with a SpongeBob meme showing the text ‘Boring’, surrounded by the logos for Figma, Tailwind and ChatGPT
064
Ryan Townsend @twnsnd.com · 10/07/2025
Who knew @bell.bz was such a fantastic copywriter?! 👌 #frontendnorth
Andy Bell presenting a slide for an imaginary website. The copy reads “World class accounting, our accountants will help you avoid paying fair levels of tax.” and “we are a corporation, we’re not like the others, we promise.”
040
Ryan Townsend @twnsnd.com · 08/07/2025
Yes! Another believer! I used to compete with my barista over who could get the perfect separation 😅
Pouring an espresso tonic using a cocktail muddle to retain the separation
030
Ryan Townsend @twnsnd.com · 25/06/2025
Can't wait to add a 5th lanyard to my @perfnow.nl collection – no conference comes close to it's #webperf line-up each year, a privilege to learn from the absolute best.
Four performance.now lanyards laid on a wood table
040
Ryan Townsend @twnsnd.com · 27/05/2025
Imagine your website serving just 73mb of data across 152,000 requests... that an average of just 503 bytes! And yes, that included images! (sidenote: anyone want to buy some spacer gifs? I've got directories full of them!)
A web server report for traffic on a redacted domain name.A pie chart illustrating request extension, buckets include '.php', '.jpg', '.gif', 'directories', '.css' and 'Other' in order of popularity.
010
Ryan Townsend @twnsnd.com · 27/05/2025
Found my first ever USB stick yesterday (a whopping 12mb in capacity!). On it was a backup of one of my websites from 2004 which included some server stats. Imagine these being the buckets for HTTP response body size these days! #webperf #webdev
A pie chart illustrating HTTP response file sizes broken into buckets of 'Zero', '11-100 bytes', '101 bytes to 1 kilobyte', '1-10 kilobytes' and 'Other'.
171
Ryan Townsend @twnsnd.com · 02/04/2025
Another screenshot for my "we [as an industry] can do better" folder... scrolling down on a Forbes article consistently bricks the page. *checks console* yup, it's *that* JS framework. It's a fucking static article 🤦‍♂️
Forbes website in a browser, showing an error "Application error: a client-side exception has occurred (see the browser console for more information)."
1196