Sign in

Rowan Merewood

@rowan.fyi
851 followers 1.3K following 882 posts

It's rowan.fyi #DevRel with #Chrome at #Google We should improve the web somewhat. 🦣 mastodon.social/@rowan_m 🐙 github.com/rowan-m 👔 linkedin.com/in/rowanmerewood 🧵 threads.com/@rowan_m

PostsRepliesMedia
Reposted by Rowan Merewood
Sanho Tree @sanho.bsky.social · 8h
Google and Apple immediately update their maps.
291765404
Rowan Merewood @rowan.fyi · 1h
Always check your project name before launch! Anyway, ByeSky (at least my instance) is now #Nimbye. Same functionality, better pun, 100% fewer naming conflicts, and hopefully not offensive. 🤞 (Also my first solid use of @atproto.com `api` + `oauth-client-browser` for a real app!)
nimbye.web.app
Nimbye — Clean up who you follow on Bluesky
Spot inactive, muted, or one-way Bluesky accounts. Score by real interactions, lock favourites, and unfollow in bulk.
021
Reposted by Rowan Merewood
London Web Standards @londonwebstandards.org · 2h
There are still tickets available for this
015
Reposted by Rowan Merewood
Jhey ʕ·ᴥ· ʔ @jhey.dev · 18h
trans<form>er
71124
Reposted by Rowan Merewood
Josh W. Comeau @joshwcomeau.com · 19h
I was recently introduced to straw.page, a maximalist Geocities-inspired drag-and-drop website builder. Apparently it's most popular with Gen Z, and it makes me so glad to know this sort of spirit lives on. 😄 🧵 A few examples in-thread.
straw.page
Straw.Page
Straw.Page is the world's simplest website builder. Create unique websites from your mobile device.
48114
Reposted by Rowan Merewood
Rick Viscomi @rviscomi.dev · 29/09/2026
v0.0.191 of Modern Web Guidance is out and it's a big one! *16* new guides covering: web components by @castastrophe.bsky.social Cross-Origin Storage by @tomayac.com security by @rowan.fyi UI and PWA by @jamessw.com and @sturobson.com Wasm by @sbc100.bsky.social github.com/GoogleChrome...
accessible-web-components: Make custom elements accessible by default, setting roles and ARIA state via the ElementInternals ARIA mixin, managing focus with delegatesFocus, and keeping ARIA relationships within a single shadow root.
custom-elements: Define, register, and manage the lifecycle of autonomous custom elements, covering constructor rules, lifecycle callbacks, upgrade timing, attribute/property reflection, and naming conventions.
form-associated-custom-elements: Make a custom control participate natively in forms with formAssociated and ElementInternals, submitting its own value, integrating with constraint validation, and reacting to reset, disable, and state-restore.
prerendering-custom-elements: Server-render a custom element, then hydrate it in place without re-rendering or a flash of unstyled content.
shadow-dom: Encapsulate a component's DOM and styles with Shadow DOM, construct the tree efficiently with HTML templates, and project consumer content with slots.
styling-web-components: Style across the shadow boundary with :host selectors, inherited and custom properties for theming, ::slotted and ::part, and cascade layers and container queries inside components.
web-components: Orientation and cross-cutting principles for authoring and using Web Components, covering Custom Elements, Shadow DOM, templates and slots, Declarative Shadow DOM, styling across the shadow boundary, Form-Associated Custom Elements, and accessibility requirements. Use this guide when building reusable UI components, design systems, or server-rendered custom elements.
avoid-redundant-large-asset-downloads: Avoid re-downloading and re-storing large shared assets, such as AI models, Wasm modules, or fully-bundled JavaScript libraries, that a visitor's browser may already hold from an unrelated site.
load-shared-resources-declaratively: Serve popular, unmodified scripts, stylesheets, and JavaScript modules from a shared cross-origin cache using markup or import syntax alone, witho…New Guides
migrate-web-app-origin: Transfer an installed web app to a new origin while preserving user configuration and OS-level shortcuts.
local-network-access: Access resources on a user's local network or loopback interface from a public web application.
trusted-types: Help prevent DOM-based XSS attacks by ensuring all untrusted content is sanitized before being inserted into the page.
responsive-table: Build a data table that presents tabular data with proper header semantics, and remains readable and navigable on small screens and with assistive technologies.
spatial-navigation: Implement accessible spatial navigation using arrow keys that works correctly in different layout modes (grid etc)
cpp-on-the-web: Compile C/C++ to WebAssembly using Emscripten

Updated the animated-select-picker guide to advise using standard value attributes on <option> elements to ensure standard form submission behavior.
Updated the branded-select-styling guide to emphasize retaining standard value attributes on <option> elements to preserve default form submission behaviors.
Updated the custom-select-picker-layouts guide with guidance on using :open::picker(select) selectors, customizing the ::checkmark pseudo-element, wrapping <selectedcontent> in a <button>, and managing keyboard navigation and accessibility constraints for grid layouts.
Updated the rich-media-picker guide to clarify that standard value attributes should be maintained on <option> elements to preserve form submission functionality.
Updated the out-of-order-html-streaming guide to document the full suite of static and streaming DOM insertion methods, detailing built-in sanitizer behaviors, WritableStream integration, and processing instruction marker practices.
Updated the sanitize-untrusted-html guide to detail node manipulation patterns using Document.parseHTML() to avoid mutation XSS, explain child preservation rules via replaceWithChildrenElements, and provide aligned DOMPurify fallback configurations.
Updated…Removed the prevent-text-wrapping guide.

HTML processing instructions: Added Chrome 150 and Edge 150 support in out-of-order-html-streaming.

A four-column table titled "Benchmark Evaluations" comparing unguided versus guided pass rates across 132 tasks and 1,124 assertions.

Row 1: codex_cli (gpt-5.6-sol) achieved a 59% unguided pass rate and an 81% guided pass rate, an uplift of +22 percentage points.

Row 2: claude_code (claude-sonnet-5) achieved a 54% unguided pass rate and an 87% guided pass rate, an uplift of +33 percentage points.

Row 3: antigravity (gemini-3.8-flash-medium) achieved a 65% unguided pass rate and a 91% guided pass rate, an uplift of +26 percentage points.
12210
Rowan Merewood @rowan.fyi · 28/09/2026
Following way too many people on Bluesky? Want to clean that up? Of course you do. ByeSky gives you a whole heap of configurable options and an easily scannable interface for sorting and unfollowing. I'm calling this v1 so give me your feature requests, feedback, and bugs!
bye-sky.web.app
ByeSky — Clean up who you follow on Bluesky
Spot inactive, muted, or one-way Bluesky accounts. Score by real interactions, lock favourites, and unfollow in bulk.
021
Rowan Merewood @rowan.fyi · 27/09/2026
After all, why not? Why shouldn't I keep going back to old projects if I think they're neat? rowan.fyi/made/strange-attraction//…
Psychedelic snail shell. Acid house escargot.
1130
Rowan Merewood @rowan.fyi · 27/09/2026
You must post additional #fractals.
Neon green glowing crawling chaos extends dark tendrils down from the sky.
110
Rowan Merewood @rowan.fyi · 27/09/2026
Code red: read code!
020
Rowan Merewood @rowan.fyi · 25/09/2026
Thank you @feelingof.london for joining my enthusiastic exploration of the #Mandelbrot Set #fractal. You can see all the bonus locations linked in the deck here! What locations would you name? And let me know about bugs and feature requests.
docs.google.com
Let's get fractious
Let’s get Fractious It’s rowan.fyi
361
Reposted by Rowan Merewood
danielroe @danielroe.dev · 19/09/2026
don't be nice.
roe.dev
Don't be nice
Sometimes, it's more important to be good than it is to be nice.
41734244
Reposted by Rowan Merewood
Kieran Healy @kjhealy.co · 19/09/2026
I assume that when whoever is making it IPOs they will reveal the full lineup implied by the existence of Tilly Norwood.
Grid of logic gate options as Venn diagrams of Tilly Norwood, Tilly Orwood, Tilly Andwood, Tilly Xorwood, Tilly Nandwood, and Tilly Xnandwood
16627121
Rowan Merewood @rowan.fyi · 19/09/2026
I get to do a demo of #fractious at @feelingof.london this week which has me in an incredibly productive mood. So, I've fixed a major performance issue, cleaned up the UI, and spent the mandatory hour or so picking out a screenshot. Maybe see you on Friday?
Let's start with the standard part of the description, it's a web app - your standard window furniture, yadda yadda. However, the controls are somehow both slick and playful. Chunky Fisher-Price buttons on an Aston Martin. Very minimal though in order to save space for this ridiculous deep zoom into the Mandelbrot fractal. A weird glowing magenta Mandala, strange cosmic ropes wrapping a center point with the classic Mandelbrot outline just about visible.
130
Rowan Merewood @rowan.fyi · 19/09/2026
The plot thickens!
A photograph of a poster in what looks like some kind of bar or restaurant. It's been expertly edited, I mean you need a keen trained eye to spot this, to obscure some of the words on the poster. It now reads, "Due to recent events BIGFOOT no longer permitted on the Patio". And us, patio is in title case. Why I cannot say. Is patio actually some kind of brand name, like band aid or hoover? Anyway, I'm getting off track.
040
Reposted by Rowan Merewood
Otto Ojala @ottoojala.com · 04/09/2026
This has already brought me so much joy, thanks to everyone who's signed the guestbook so far <3 Or if it's just one person who's written all these, thank you! :'--)
2133
Reposted by Rowan Merewood
Ben Schwarz @benschwarz.bsky.social · 16/09/2026
Google started shipping ad metrics in CrUX overnight, so I’ve added them to Calibre's free Core Web Vitals tool. First look at the Independent: ads take up 20% of the screen, 7.25s of CPU and 5.1MB of data per page. 88% of their readers are on phones. calibreapp.com/tools/core-w...
Calibre's Core Web Vitals report for independent.co.uk showing new advertising metrics from Chrome User Experience Report. Total network usage by ads is 5.10 MB and total CPU usage by ads is 7.25 seconds at the 75th percentile, with the CPU figure trending upward over the last three months.
1104
Reposted by Rowan Merewood
Glenn Gabe @glenngabe.bsky.social · 15/09/2026
Every site owner running ads (especially a lot of ads) should run this TODAY :) -> Google debuts ‘ad detection tool,’ letting marketers better assess ad experiences in Chrome "We’ve all encountered overwhelming ad experiences on the web,”...
digiday.com
Google debuts 'ad detection tool,' letting marketers better assess ad experiences in Chrome
Google's new tool is geared to help paid-for media teams, both on the buy- and sell-side, better assess audiences' ad-load experiences.
183
Reposted by Rowan Merewood
Barry Pollard @tunetheweb.com · 15/09/2026
We just launched experimental ad metrics in the Chrome User Experience Report (CrUX): - Ad Count - Ad Density - Ad Weight: Network - Ad Weight: CPU These metrics are a set of ad-related measurements that provide transparency into sites' ad experiences. developer.chrome.com/blog/crux-ad... 1/8 🧵
developer.chrome.com
New ad metrics in Chrome User Experience Report  |  Blog  |  Chrome for Developers
Learn about the new ad metrics now available in the Chrome User Experience Report (CrUX)
23014
Reposted by Rowan Merewood
London Web Standards @londonwebstandards.org · 15/09/2026
Who will we be seeing tonight for #lwsSept2026 londonwebstandards.org/events/lws-s... Still time to grab a last minute ticket
londonwebstandards.org
LWS Sept 2026 | London Web Standards
Want to speak at our events, please get in touch organisers@londonwebstandards.org
023
Rowan Merewood @rowan.fyi · 15/09/2026
I hadn't tested in mobile and hoooooo boy, it is not mobile friendly. Still, that's some more tinkering for me to do. That and a preview image... and more tests, and help text, and a theme, perf improvements, architecture clean up, AND the first feature request! 🥳
030
Reposted by Rowan Merewood
Philip Walton @philipwalton.com · 15/09/2026
So that's what I did! I built a package that generates complete DOM and WebWorker libs with all available web features, which you can use as drop-in replacements in your TypeScript projects. You can read more about it here: philipwalton.com/articles/mod...
philipwalton.com
Modern Web Types
If you've ever written code against a new web API in TypeScript, you've probably seen an error telling you the thing you're using doesn't exist. Turns out, TypeScript intentionally doesn't support all...
1356
Rowan Merewood @rowan.fyi · 15/09/2026
I'm following way too many people and wanted to clean up the list. Couldn't find a tool I liked, so I built one! ByeSky takes your followers and lets you sort/filter by a heap of configurable filters. First public build, so send me feedback, bugs, feature requests, or let me know if it's useful!
bye-sky.web.app
ByeSky — Bluesky Followings Cleanup
271
Reposted by Rowan Merewood
Matt Henderson @matthen.com · 13/09/2026
Approximating the Lorenz attractor with a chaotic leaky water wheel. The orange dot is the centre of mass of the water. It traces (a projection of) the familiar attractor as the wheel spins seemingly randomly left and right.
14739150
Rowan Merewood @rowan.fyi · 13/09/2026
Make a band edible Nine Inch Snails
030
Rowan Merewood @rowan.fyi · 11/09/2026
Just slopping it at the moment, would this be useful for other people? Couldn't find an existing one that had criteria kinda like TwitCleaner did back in the day. If you think this would be helpful, then I'll clean it up to publish otherwise I'll stick to my incredibly affordable localhost provider.
An app that filters your following list based on configurable criteria like last posting time, if they've interacted with you, their follower count, etc.
130
Rowan Merewood @rowan.fyi · 11/09/2026
I 🫀 fry day.
God damn, just look at that widescreen plate. You got sausage, egg, mushrooms, tomatoes, baked beans, and, of course, fried bread. There's a cup of stomach-meltingly strong black coffee on the side. Cutlery steam wrapped in a paper napkin. All sat on top of a formica table top. Gorgeous.
030
Rowan Merewood @rowan.fyi · 10/09/2026
Miracle Max says, "Just so happens this passenger was only MOSTLY sucked out the window." I shouldn't need to tell you this is from The Princess Bride. If you didn't know that, then you need to close Bluesky and go immediately find and watch this film. It's better than any other way you could choose to spend your time.
040
Rowan Merewood @rowan.fyi · 10/09/2026
I have made a major mathematical breakthrough *without* AI: I definitively disproved Bayes Theorem. I just kept pulling an increasingly improbable number of mismatched socks out of the laundry.
030
Rowan Merewood @rowan.fyi · 10/09/2026
Stratford is over 100 miles away from Stratford-upon-Avon. Bradford is over 200 miles away from Bradford on Avon. What's going on here? Who approved this?
020
Rowan Merewood @rowan.fyi · 08/09/2026
Useful pointer from @vale.rocks that all those `<meta name="twitter:* ...>` tags are obsolete. So, that's a satisfying -317 lines trimmed in one go. github.com/rowan-m/rowan-fyi/commit…
github.com
Remove references to dead social network · rowan-m/rowan-fyi@350480f
"I don't think about you at all."
030
Rowan Merewood @rowan.fyi · 08/09/2026
One of my normal chores now is watering my robot...
120
Rowan Merewood @rowan.fyi · 07/09/2026
Discovered there's a @feelingof.london meet up this month and the previous sessions look lovely. It also looks completely full! So, submitted a demo and jumped on the waitlist just in case... 🤞
030
Reposted by Rowan Merewood
Goodnews @goodnews.computer · 04/09/2026
Take a break from being depressed that everything you love is being destroyed by slop for a moment and let me tell you about the beautiful symbiotic relationship between graffiti writers, train yard workers, and model train enthusiasts.
A hand holding a model train with a replica of the same graffiti on the full scale train car behind it.A model train with two graffiti pieces on opposite sides.
895493547
Rowan Merewood @rowan.fyi · 05/09/2026
Quite like the visualised history for this one because you can see several distinct popular branches that spawned from the original. rowan.fyi/made/linkage/?url=https%3…
000
Rowan Merewood @rowan.fyi · 05/09/2026
Describe your ideal date night with a photo.
041
Rowan Merewood @rowan.fyi · 05/09/2026
I fear I've become too unnecessarily privacy-brained to do the age and background checks in "Movie from when you were 20” or "Your US accent" quizzes. Where's "What egg are you?" or "Which wife of Henry VIII do you post like?"
010
Reposted by Rowan Merewood
Barry Pollard @tunetheweb.com · 03/09/2026
Interop 2027 is looking for proposals of what YOU think is important to get working interoperable across browsers: web.dev/blog/interop...
web.dev
Submit your proposals for Interop 2027  |  Blog  |  web.dev
It&#39;s time to let us know which web platform features should be part of Interop 2027.
0208
Reposted by Rowan Merewood
Phil Nash @philna.sh · 02/09/2026
Normally we verify email addresses by sending users an email, making them open their inbox, find the email, and click a link to return. Friction at every step. What if it could be this easy?
3317
Reposted by Rowan Merewood
Bramus @bram.us · 02/09/2026
Way back in 2005, I used a Flash PageFlip component to display a book on a website. Ever since, recreating a modern version has been on my backlog to investigate. With the arrival of HTML-in-Canvas (experimental), we can finally bring it back — this time using real HTML. → brm.us/hic-pageflip
5686
Reposted by Rowan Merewood
ppk 🇪🇺 @quirksmode.org · 02/09/2026
Fifteen years ago I helped popularise the meta viewport width=device-width,initial-scale=1. Today I found out the second bit is no longer necessary. A retrospective. quirksmode.org/quirksblog/2...
quirksmode.org
initial-scale no longer needed
Fifteen years ago I helped popularise the meta viewport width=device-width,initial-scale=1. Today I found out the second bit is no longer necessary. A retrospective.
16021
Reposted by Rowan Merewood
Sam Goto @sgo.to · 01/09/2026
@thisismissem.social @divy.zone and I recently went through an exploration of how the browser can help you login to websites with atproto accounts. We recently presented to the FedID CG and here is a sneak peek in case you couldn't join! This is early but we'd love your input before we go too far!
2227350
Rowan Merewood @rowan.fyi · 31/08/2026
Email Verification just landed in Chrome Canary on Android! If you collect email addresses on your site and you haven't signed up for the origin trial, then this gives you a few million potential testers if that helps motivate. New blog post incoming with even more goodies, existing links below...
Pop up notification in Chrome asking "Verify this email automatically?"Email input field with a blue check indicating Chrome has verified the email address.A toast showing "rowan.fyi verified your email" on successful form submission.
121
Reposted by Rowan Merewood
Rowan Merewood @rowan.fyi · 29/08/2026
Any time the smug little video instructions tell me this is a five minute DIY job...
I've never actually watched Full Metal Jacket, but I feel like I've heard the quote, "I am in a world of shit" in enough industrial songs to get the feeling. Anyway, I just screenshotted this from YouTube. I deliberately haven't learned too much context as I still want to watch the film some time. I suspect he's about to do something quite permanent to himself though.  There's a finality in how he says those words.
191
Rowan Merewood @rowan.fyi · 30/08/2026
Not vibing with your agent? Determined to embrace nondeterminism? Burn a candle for St Eval: patron saint of good prompts and loved language models.
Boxes of candles labelled St Eval. They actually melt properly too. Lots of modern candles have wax that just disappears into the ether as it burns. I've been searching for a while for a candle to stick in a Chianti bottle, and this is it!
050
Rowan Merewood @rowan.fyi · 29/08/2026
Any time the smug little video instructions tell me this is a five minute DIY job...
I've never actually watched Full Metal Jacket, but I feel like I've heard the quote, "I am in a world of shit" in enough industrial songs to get the feeling. Anyway, I just screenshotted this from YouTube. I deliberately haven't learned too much context as I still want to watch the film some time. I suspect he's about to do something quite permanent to himself though.  There's a finality in how he says those words.
191
Reposted by Rowan Merewood
dame @dame.is · 27/08/2026
I’ve long wondered why Bluesky hadn’t yet setup a hosted MCP for the Atmosphere to make it even more accessible to AI agents, so I decided to do it myself with @aturi.to! Give it a spin: aturi.to/mcp Covers the protocol, Bluesky, APIs, docs, and more!
1018228
Rowan Merewood @rowan.fyi · 27/08/2026
Fifteen minute talk at a high pace, but gives some really useful foundations on identity concepts and also a cool snapshot to see where we are 20 years later.
010
Rowan Merewood @rowan.fyi · 27/08/2026
Literally every single distance involved here is beyond my comprehension. The Great Red Spot is bigger than our entire planet. I'm just going to ponder some vastness of the cosmos for a minute.
000
Rowan Merewood @rowan.fyi · 26/08/2026
This song already made me cry. Goodbye, Tim Curry. This planet didn't deserve you. (I did though) youtu.be/j8bmjDoziaQ
youtu.be
The Rocky Horror Picture Show - I'm Going Home
YouTube video by THIRDPROJECT
050