Lead for Chrome DevRel @ Google. Progressive Web Apps, Mr Web Intents. Dev of many things: Twollo, Twe2, FriendDeck and web.dev aifoc.us/

Ruthin, North Wales
Can the presence of a URL in an LLM prompt influence the output based on the content of that URL? I think, yes! But it took me weeks of experimentation and I learnt a lot about what User Agents do and what data is in the models aifoc.us/influencing-model-o…
1
5
2,285
👀
Generative UI is close to seeing its moment emerge – and I can't wait to show you all a new CF experience. Cloudflare's recent models make rendering near instant. Clef = Choose the best component Clairic = Populate props from image/text Rendering 5-10 components in ~1 second. Creating an amazing user experience has a lot of layers too it. It's not just about speed. Output needs to be exact. Styling needs to be consistent. Components need to be effortlessly composable. And none of that happens without an amazing context layer to glue it all together. It's more than just the models. And all of this can be complementary to any LLM output – not dependent upon it. Really excited with where things are at internally and when we can show more of what we're building to the world.
5
1,000
What should we ship in 2027? Rank your favourite features & create your wishlist: interop-rank.fxdx.dev/
3
4
27
2,693
Paul Kinlan retweeted
Announcing Project Scope 🎉 An OSS project we built to help teams find where AI coding agents struggle with their SDKs, APIs, and tools, then measure whether changes to docs and tooling help. opensource.microsoft.com/blo…
2
7
14
1,219
Paul Kinlan retweeted
I sometimes want to give up on progressive web apps. The obstruction by Apple, companies that only use PWAs to promote their native apps, fragmented browser support, developer ignorance, and half-baked examples that enforce the idea that web apps are inferior. It feels like an uphill battle that never ends, and I sometimes lose motivation to fight it. But what if this fight is not fought? We end up without this free distribution channel called the web, and apps will only be created inside walled gardens called app stores where Apple and Google decide the rules. Where they can extract heavy taxes and decide who gets in and who doesn't. Sure, we can still put our apps on the web, but as long as Apple is able to kneecap web apps in such a way that there's no level playing field, will they ever be viable? That is still a fight worth fighting, and I will continue to show what web apps are capable of with What PWA Can Do Today. That is my motivation. Even if certain things only work on Android or desktop. Even if Apple makes installing a PWA more cumbersome with every iOS release. Thankfully, we have people like the Open Web Advocacy fighting the legal battles. We, as developers, can and must show the world what web apps are capable of. Build great freaking web apps. Even if some features are only available in Chrome or on Android or desktop. Otherwise, the world will never know what web apps can do. The free, open web is at stake.
8
13
111
3,540
Paul Kinlan retweeted
Use a rewriting proxy. If you want short-lived keys and attribution, give out proxy keys. But nobody except the proxy sees the long-lived key. And if OAI could get its act together and provide better key management, nobody will complain either.
one of the amusing things about AI is that infra and security spent a decade getting everyone off long-lived static API keys and onto short-lived tokens then OPENAI_API_KEY happened and we collectively forgot all of it I get that managed identity and OAuth are harder but we really did speedrun back to secrets in .env
1
1
6
625
Paul Kinlan retweeted
When I was writing Unreal Engine 1, my time was divided as follows: - Around 30% went to seriously deep coding on hard problems: assembly language texture mappers, C++ BSP trees, data persistence, object oriented systems design, and networking. - Around 70% was just typing and refactoring large bodies of code needed for a complete engine feature set. This was not hard, and while I was doing it my mind was mostly on the deeper coding topics, thinking and planning for what's next. It didn't feel much different from vibe coding today, except that it was just me typing code on an IBM Model M keyboard rather than prompting it and reviewing the results. So, it has always seemed perfectly logical that we would rely on AI for that 70%, once the AI could do it with a similar quality standard as we could, which has never been perfection. It came as no surprise that, after a few years of AI model evolution, it was able to take the reigns on that 70% and free up programmers' time for more valuable tasks. What's more of a surprise is the emergence of AI as a sort of insta-Carmack able to solve hard technical problems quite cleverly and often cleanly, and that it's able to reason about and work in complex 3D scenes both by operating the tools and by directly understanding the raw data files. I abandoned assembly language in 1998 when out-of-order CPUs made much simpler C/C++ code faster, and never I missed it. If prompting through architectural documents, concept art, and design plans can transcend typing code and tweaking vertices, that will enable developers to spend their time on higher-level, higher value technical and creative tasks. What matters is the end product, whether it's a game or an engine. Anything developers can do to try out more ideas and make better software and games faster is a win for everyone.
974
1,640
18,747
1,579,584
Paul Kinlan retweeted
The games we've long wanted, which didn't exist because they'd cost several times more to make than they'd earn back, will soon become possible. As will the games developers wanted to build, but couldn't with the resources available. It'll be a new golden age of gaming.
2,153
1,301
17,611
5,663,910
Paul Kinlan retweeted
Two quotes from tonight's Agentic Web stream 😅 1. "It depends." - the honest answer to most WebMCP eval questions, start with understanding what users can realistically do on your website, evaluate journeys enough times to build a confidence! 💪 Understand what can go wrong and try different user prompts 😀 2. "You cannot eval the multiverse" - you can check every step an agent takes, but there can be many correct trajectories to the same result 💡, so the end state might be one thing you are looking for! Thanks @nartmadi and @andreban for the great chat!
2
1
6
575
Paul Kinlan retweeted
The `unload` event no longer fires in Chrome by default! With the rise of the mobile web this has become increasingly unreliable and we think that's a footgun for devs who think it works. We've spent the last 3 years carefully removing it from Chrome: developer.chrome.com/blog/un…
2
5
36
2,949
Paul Kinlan retweeted
Stream WebRTC is now generally available. You can go live from a browser without a native broadcast app. Deliver ultra-low latency video to thousands of viewers. developers.cloudflare.com/ch…
5
59
627
65,024
Paul Kinlan retweeted
Great pleasure to plant Sakura Cherry trees😄 at Ysgol Rhyd Y Grug Primary School! 🌸 In Japan, cherry blossoms symbolise the beauty and fragility of life, but also renewal and hope for the future. May these trees, donated by the Sakura Cherry Tree project, stand as enduring symbols of friendship between Wales and Japan!! 🇯🇵❤️🏴󠁧󠁢󠁷󠁬󠁳󠁿
54
465
7,181
62,713
One thing that I've been doing for nearly all my LLM based projects is getting runtime observability built in (or more importantly as a constraint in my initial prompt) - it feels like it's almost free to do now. It started with extensive console logs in the client and on the server that I could point my agent at to help me debug, but then I moved on to the reporting APIs in the browser and it's been a game changer. This developer.mozilla.org/en-US/… and developer.mozilla.org/en-US/… are something you point your agents at and ask them to either build a simple datastore of events or integrate it into your observability. Core Web Vitials, API Deprecation Reports, Crash Reports, CSP and Security violations, and Interventions (such as when Chrome might block heavy ads) all give your web app much needed information that you can either prompt them to fix or have them in a daily cron. Either point your tools at your RUM provider, or if you are small enough, get your tools to create a observability stack to see the difference in product quality and understand (and then upgrade as your product gets more use than you can manage)
10
1
13
1,421
Paul Kinlan retweeted
So, yeah, we didn't stop there. Built a custom build of Arch with custom gfx drivers and whatnot. Got it down to sub 5 seconds.
Another one to file under "just tell it to make it faster" Got an Anbernic RG DS+, a Nintendo DS clone running linux and their DS emulator. It's fantastic, but the stock OS takes 21secs to boot. There are are some alt OS's but I don't need that, just this without the slow boot. So, Claude, make it boot faster. Got it to 15secs. Bro, you can do better. 13 secs. Not good enough. So 'we' wrote a new (and _significantly_ better) rom launcher in rust. Down to 11.5secs. My dude is like, that's it, I've got nothing else. And I guess I'll give him a break. I think that's acceptable. For now.
1
1
324
Paul Kinlan retweeted
Did you know there's an easy way to streamline SMS OTP entry on your website? SMS one-time passwords (OTPs) are common for 2FA, but switching apps to type a 6-digit code causes drop-off and carries high phishing risks. Ideally you should adopt passkeys, but there are steps you can take improve your existing SMS OTP today. Combining `@​domain #​code` at the end of the SMS, `autocomplete="one-time-code"` on the input tag, and the WebOTP API enables one-tap autofill in Safari on iOS/macOS and Chrome on Android without switching to the SMS app. Because the domain is bound, it won't work on phishing sites. Also, "Modern Web Guidance", our collection of skills for coding agents, now supports these best practices so you can adopt them effortlessly. goo.gle/mwg Check out the SMS OTP form best practices article to learn more: web.dev/articles/sms-otp-for…
3
12
1,577
I was listening to a transcription of anthropic.com/research/self-… and it made me think about hardware os heterogeneity and the fact that so many hardware devices build upon the back of ASOP. I was thinking back to the Google IO demo of anti-gravity and how they built an OS and how people are now building ESP32 hardware products. We're probably only a year or so away from the mainatram consumer hardware products whose OSs are entirely built for the product it ships on. When this happens, I do wonder if it helps with the overall security posture of unmainted devices with 0 firmware or software updates from the manufacturer, with one devices exploits not being repeatable for another.
1
1
5
1,204
Fact
Synthetic perf testing was valuable for low-noise dev testing and regression detection but lost favor as RUM metrics improved. With AI, accurate, representative, low-noise lab testing is THE unlock to being able to have an agent hill-climb on perf improvements.
4
810
Paul Kinlan retweeted
WebGPU in Chrome 153 and 154 brings major WGSL language upgrades → goo.gle/4hGkYAU You can now write directly to vector swizzles like position.xy = vec2f(10.0, 20.0) with the new swizzle_assignment extension. Also included in this release: • WGSL buffer_view for reinterpreting buffer memory with built-in functions • Direct mapping improvements in Dawn to eliminate extra GPU buffer copies
6
23
179
13,803
Paul Kinlan retweeted
Guide your coding agent toward cleaner, best-practice based dialog code 🧵⤵️
6
9
58
6,515
Paul Kinlan retweeted
Haiku 5.5 with WebMCP takes first place in our updated benchmark, solving all 49 tasks. It finished 5.3× faster at 8.4× lower cost than our highest-ranked computer-use setup.
WebMCP benchmark update! with a surprising new winner: We added Haiku 5.5, Sonnet 5.5, GPT-6 Luna, GPT-6.1 Sol, Gemini 3.8 Flash, and Muse Wonder 🏆 Haiku 5.5 by @AnthropicAI using WebMCP takes #1 on our combined success, speed, and cost score, ahead of GPT-6 Luna (#2) and previous winner Jev. Haiku + WebMCP versus our highest-ranked computer-use configuration, GPT-6 Luna: - 49/49 tasks solved, versus 41/49 - 5.3× faster: 3.7s per task vs. 19.4s - 8.4× lower cost: 1/40 of a cent per task vs. 0.21 cents Thank you @alexatallah and @OpenRouter for sponsoring the tokens! webmcp.com/benchmark
2
5
290