Elektrine
Log in Register
Paige Chat Timeline Gallery Friends Email Drive DNS Private DNS Domains VPN Kairo Nerve
Remote

Thomas Steiner :chrome:

@tomayac@toot.cafe
mastodon 4.7.3
  • Open on toot.cafe

Developer Relations Engineer at Google, focused on Web AI, WebAssembly, and Project Fugu 🐡. Dad-of-3. Alum of Université de Lyon (Postdoc), Universitat Politècnica de Catalunya (PhD), Karlsruhe Institute of Technology (MA).

2291 Followers
420 Following
50 Posts
Joined April 23, 2018
Blog:
https://blog.tomayac.com
GitHub:
https://github.com/tomayac
LinkedIn:
https://www.linkedin.com/in/thomassteinerlinkedin/
Bluesky:
https://bsky.app/profile/tomayac.com
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

Cursed browser: A web browser with no rendering engine—the VLM reads the HTML and hallucinates the page: https://github.com/scosman/cursed_browser. 😂

The results according to the screenshots in the `README` are surprisingly close to the original.

github.com
25
2
12
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Under the hood of MDN's new frontend: https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/. How MDN switched from React to Lit.

Under the hood of MDN's new frontend | MDN Blog
MDN Web Docs

Under the hood of MDN's new frontend | MDN Blog

You may have spotted that MDN has a new frontend. There's plenty happening under the surface, so let's unpack the technologies we chose, the architectural decisions we made, and why we did a rebuild at all.

27
0
16
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

Introducing a new spam policy for "back button hijacking": https://developers.google.com/search/blog/2026/04/back-button-hijacking. If you mess with the back 🔙 button, it's not the growth hack you think it is. I've seen unnamed news sites do this when you navigate to an article page, want to go back to where you came from, but then the back history gets hijacked and you're suddenly on the news site's main landing page.

Introducing a new spam policy for "back button hijacking"  |  Google Search Central Blog  |  Google for Developers
Google for Developers

Introducing a new spam policy for "back button hijacking" | Google Search Central Blog | Google for Developers

23
4
13
2
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 4mo ago

Super useful CSS proposal: `flex-wrap: balance`: https://github.com/bfgeek/flex-wrap-balance/blob/main/README.md#flex-wrapbalance-explainer. (The images in the Explainer make immediately clear why you almost certainly want this.) TAG review: https://github.com/w3ctag/design-reviews/issues/1227. ⚖️

github.com
15
0
9
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

Better browser caching with the `No-Vary-Search` HTTP header:
https://csswizardry.com/2026/05/better-browser-caching-with-no-vary-search/. Fantastic article by @csswizardry@webperf.social.

csswizardry.com

Better Browser Caching with No-Vary-Search – CSS Wizardry

12
0
11
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

The Microsoft Edge team (and in extension the #PWA team at Google Chrome) is looking for feedback on developer preferences when it comes to Web Install:

- declaratively using the `` element (https://github.com/WICG/install-element)
- imperatively using the `navigator.install()` API (https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/WebInstall%2Fexplainer.md)

You can provide your feedback on the GitHub Issue: https://github.com/WICG/install-element/issues/23.

toot.cafe
10
7
7
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 3mo ago

Introducing the Safari MCP server for web developers: https://webkit.org/blog/18136/introducing-the-safari-mcp-server-for-web-developers/. This is a very welcome addition!

Introducing the Safari MCP server for web developers
WebKit

Introducing the Safari MCP server for web developers

Update: In Safari 27 and Safari Technology Preview 247, we’re introducing the Safari MCP server — a Model Context Protocol server for web developers that makes your web development and debugging workflow faster and more powerful.

3
0
5
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Adobe native apps modify your `hosts` file to see from the Web if its software is installed: https://www.osnews.com/story/144737/adobe-secretly-modifies-your-hosts-file-for-the-stupidest-reason/.

LinkedIn scans for traces of installed browser extensions: https://browsergate.eu/how-it-works/.

Regular people outside of our tech bubble here on Mastodon have no idea any of this is happening, or even technically feasible.

osnews.com

Adobe secretly modifies your hosts file for the stupidest reason – OSnews

9
0
6
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Base64 Is Fast Now, Actually: https://samthor.au/2026/base64-is-fast/. The tl;DR is that you should really use `{from, to}Base64()` (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/fromBase64, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/toBase64) if you can, and only deliver a polyfill for older browser.

samthor.au
8
2
2
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

`apfel`, the free AI already on your Mac: macOS Tahoe ships with a 3B parameter LLM. `apfel` gives you CLI access with one `brew install`. No model downloads, no API keys, no configuration needed, just works: https://apfel.franzai.com/. This is just using the Foundation Models framework: https://developer.apple.com/documentation/foundationmodels.

apfel.franzai.com
7
4
3
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 3mo ago

👀 Look, ma! The Cross-Origin Storage extension running on Firefox! If you dare, install it via `about:debugging` from https://github.com/web-ai-community/cross-origin-storage-extension. Else, just wait for it to be approved on the Firefox Add-on Store. More background on #CrossOriginStorage: https://github.com/WICG/cross-origin-storage. (FYI: @firefoxwebdevs@mastodon.social and @krosylight@fosstodon.org)

github.com
2
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

The Virtual Keyboard API ⌨️ Is broken where it matters most: https://zouhir.org/blog/virtual-keyboard-api/. Fantastic blog post by Zouhir Chahoud that goes into where it hurts: no support by Safari and Firefox, buggy support by Chrome, but Zouhir created very actionable bug reports that you should star ⭐ if you care. (I wrote about the API some years ago: https://developer.chrome.com/docs/web-platform/virtual-keyboard.)

zouhir.org
7
1
9
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 11mo ago

Interesting DOM localization proposal by Mozilla: https://github.com/mozilla/explainers/blob/main/dom-localization.md.

In your HTML:

``

In the `resource.mf` file:

`greeting = Welcome, {$userName}.`

In your: HTML:

``

Rendered DOM:

`Welcome, John`

github.com
18
1
7
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

🤗 Transformers.js v4 released: https://huggingface.co/blog/transformersjs-v4. See some of the amazing demos: https://huggingface.co/collections/webml-community/transformersjs-v4-demos. Congratulations to the entire team! 👏

huggingface.co
6
0
1
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

Fantastic tutorial with inline interactive demos for the `safe-area-inset-*` environment variables: https://polypane.app/blog/using-safe-area-inset-to-build-mobile-safe-layouts/. Never ever have your site content covered by a notch or camera hole.

Using safe-area-inset to build mobile-safe layouts | Polypane
polypane.app

Using safe-area-inset to build mobile-safe layouts | Polypane

Modern phones are not simple rectangles. They have rounded corners, camera cutouts, dynamic islands, and home indicators that double as gesture areas. Browsers…

4
0
2
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 7mo ago

😍 A fantastic introduction by @httptoolkit@mastodon.social to Dictionary Compression with examples and detailed background information: https://httptoolkit.com/blog/dictionary-compression-performance-zstd-brotli/.

httptoolkit.com
7
0
4
1
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Inside Googlebot: demystifying crawling, fetching, and the bytes we process: https://developers.google.com/search/blog/2026/03/crawler-blog-post. A great post that clarifies how #Googlebot does its business for people in the #SEO community.

developers.google.com
5
0
2
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Sendspin: Music Experience Protocol: https://www.sendspin-audio.com/. Listen, control, and see your music in every room with Sendspin, an open standard for the complete music listening experience. There's a demo on the page, and the spec (https://www.sendspin-audio.com/spec) is surprisingly readable. I was especially interested in how the syncing works. (via @balloob@fosstodon.org) #HomeAssistant #MusicAssistant

sendspin-audio.com
5
0
3
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 24mo ago

Know how sometimes the warning emoji ⚠️ renders black and white, and sometimes as a proper colored emoji? In theory, you can control this with the variation selectors `U+FE0E` or `U+FE0F`, but in practice, it often doesn't work.

As of Chrome 131, you can now _actually_ control the behavior thanks to the new `font-variant-emoji` CSS property!

Here's a demo that shows the effect of `normal` (the current unpredictable default), `emoji`, and `text`: https://font-variant-emoji.glitch.me/

font-variant-emoji.glitch.me
46
1
25
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Home Solar: https://xkcd.com/3226/ #xkcd

Home Solar
xkcd

Home Solar

4
1
2
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

You’re about to feel the AI money squeeze:
https://www.theverge.com/ai-artificial-intelligence/917380/ai-monetization-anthropic-openai-token-economics-revenue (💰 paywall). Very good article by The Verge on the AI free ride being over.

You’re about to feel the AI money squeeze
The Verge

You’re about to feel the AI money squeeze

The AI monetization cliff approaches.

3
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 3mo ago

Started an Awesome Cross-Origin Storage list: https://github.com/tomayac/awesome-cross-origin-storage/ 😎. Transformers.js, WebLLM, wllama, Flutter, Emscripten, Nuxt and Vite plugins, and a bunch of demos… #Awesome #CrossOriginStorage

github.com
1
0
1
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

If AI helps with rediscovering HTTP content negotiation (#conneg), I'm all here for it: https://cra.mr/optimizing-content-for-agents: "The implementation today is simple: content negotiation. When a request comes in with Accept: text/markdown, you can confidently assume you have an agent. That’s your hook, and now it’s just up to you how you optimize it."—blog post by David Cramer

Section 12 of HTTP: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-negotiation.

toot.cafe
3
0
2
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

The BlinkOn 21 conference is in the books. If you want to catch up on some of the amazing talks, check out the full playlist: https://youtube.com/playlist?list=PL9ioqAuyl6UIc-S8EuPjqkNvsMMmL1flZ&si=kNcz4wJi1MhWZX4N. I'm mostly involved in the work on Web AI https://youtu.be/q1iK35I9TPU?si=jiZdwoPXJAcha4tm myself.
#BlinkOn #BlinkOn21

youtube.com
2
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 7mo ago
Replying to
@webstandards_dev @11ty @pepelsbey Thanks so much for curating this publication! Really love the content, and the social images you create are beautiful! 🤩
3
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

Try the Built-in AI extension to get access to browser APIs like…

🧠`LanguageModel` (aka. Prompt API)
🗜️`Summarizer`
✍️`Writer`
📝`Rewriter`
💡`LanguageDetector`
🗯️`Translator`

If your browser supports an API natively, it will use it. Otherwise, the extension injects a polyfill into the page that either uses…

🤗 a local model using Transformers.js
☁️ or a cloud model using any of Gemini, Firebase AI Logic, or OpenAI

…as the AI backend.

🛍️ Install from the Chrome Web Store: https://chromewebstore.google.com/detail/built-in-ai/aekdeffgkjegkdbdnkllpaeakcapfjdb!

chromewebstore.google.com
2
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 4mo ago
Replying to
@slightlyoff@toot.cafe Fully agree with the message of course, but the "what Web apps can do" table column needs a Project Fugu 🐡 update.
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@floscholz@front-end.social It always depends on the feature teams how much of the origin trial feedback they want to make publicly available. It never hurts to ask in a friendly email to https://groups.google.com/a/chromium.org/g/blink-dev/c/iR6R7-nQeHI
groups.google.com
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@raymondcamden@mastodon.social Of course. We call it Wimpernschlagbrillenglasberührungsärgernis.
1
4
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago

How to Use Transformers.js in a Chrome Extension:
https://huggingface.co/blog/transformersjs-chrome-extension. Good technical report by Nico Martin from Hugging Face 🤗.

huggingface.co
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@mvsde @kdekooter This is specifically about messing with history and writing things in history that weren't there.
1
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 8mo ago
Replying to
@rgadellaa@mastodon.social @Lukew@toot.wales @brucelawson@social.vivaldi.net Last that I checked, Edge too! They have their own store, but also support the Chrome Web Store. Same for Opera.
2
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago
Replying to
@django Somewhat, yes, but this doesn't mean that there couldn't be an additional imperative way, maybe in the worst case limited to Chromium browsers.
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago
Replying to
@grishka I don't agree with this opinion, but acknowledge that you're not alone with it.
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago
Replying to
@jaffathecake That's pretty cool. And it even seems like a feature, not a bug 🎉. Great discovery!
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 12mo ago

On the Chrome team, we have an interesting new origin trial for you to try in your apps: the Proofreader API: https://developer.chrome.com/docs/ai/proofreader-api.

❌ tyop → ✅ typo

```js
const proofreader = await Proofreader.create({
expectedInputLanguages: ['en'],
});

const proofreadResult = await proofreader.proofread(
'PLease tryt his API and let us knwo how it foes!',
);
```

It's powered by Gemini Nano internally and part of Chrome's #BuiltInAI / #WebAI effort.

developer.chrome.com
3
1
4
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 7mo ago
Replying to
@TheRealNooshu@hachyderm.io I just realized I hadn't boosted the post, just commented on it, being taken away by my buzzing brain immediately. Fixed now :-)
1
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 7mo ago
Replying to

@TheRealNooshu@hachyderm.io Wow, that's a lot less additional time than I thought it would add. I was assuming it'd be a matter of several minutes. Anyway, yeah, my question was mostly inspired by patterns like in the stale-while-revalidate header value: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control#:~:text=to%20avoid%20revalidation.-,stale%2Dwhile%2Drevalidate,-The%20stale%2Dwhile Might be not worth it if your preprocessing doesn't noticeably impact your build. Thanks for the interesting article! 🙏

developer.mozilla.org
1
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 9mo ago
Replying to
@bodil@social.treehouse.systems For the local translation API point, there's a Mozilla Standards Position thread ongoing in https://github.com/mozilla/standards-positions/issues/1015 on the Translator API. Your voice about wanting such an API would be very welcome. Mozilla have an alternative proposal up on https://github.com/mozilla/explainers/blob/main/translation.md but I think this approach is not meeting the user demands for an imperative translation API, in contrast to the Translator API. (Full disclosure in case it wasn't clear: I work on the Chrome team at Google.)
github.com
1
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 12mo ago
Replying to
@hadleybeeman@w3c.social Congratulations on the new Chief Barcodes Officer job. Sounds like a really cool role with loads of responsibility! Fantastic!
1
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 13mo ago
Replying to
@TheRealNooshu@hachyderm.io Oh my God, what a terrible collection of memories, I haven't thought about sIFR in ages. Terrific post, thanks for documenting all those past horrors (and few delights, too).
1
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 7mo ago
Replying to
@TheRealNooshu@hachyderm.io Just out of curiosity: what's the from-zero build time of your blog now? Have you considered a more lazy approach where Cloudflare on-the-fly compresses with level 4, but in the background this then triggers a highest level compression in the worker for the next request?
0
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@steely_glint @moopet Not sure about the details, but the model was definitely already on my (beast of a) Mac, an M4 Pro on Tahoe 26.5 Beta (25F5053d). Not sure about other models or OS versions. So far it's been working as promised.
0
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

👀 There's an Intent to Ship for the Prompt API: https://groups.google.com/a/chromium.org/g/blink-dev/c/iR6R7-nQeHI/m/gN4iEGEdAQAJ. Learn what it does: https://developer.chrome.com/docs/ai/prompt-api. There's also a polyfill that falls back to local inference using Transformers.js 🤗 or to cloud inference using cloud APIs like Firebase AI Logic, the Gemini API, or the OpenAI API: https://www.npmjs.com/package/prompt-api-polyfill.

groups.google.com
0
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@raymondcamden@mastodon.social It's my hobby: https://youtu.be/-l2BUUdBDS8

Built-in AI: how Mastodon uses translation APIs

0
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 5mo ago
Replying to
@floscholz@front-end.social Some process questions answered here: https://www.chromium.org/blink/launching-features/#origin-trials
chromium.org
0
1
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 4mo ago
Replying to
@norbert@mastodon.online @BMDS@social.bund.de Bin ich auch sofort drüber gestolpert. Du hast es aber besser gesagt, als ich es je hätte sagen können. 😂
0
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 15mo ago
Replying to
@Edent@mastodon.social Super fascinating read, thanks for writing this. Now the actual question I have is: would this have changed the course of the war?
0
2
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago

I know many of you have been waiting for this: Intent to Ship: `SharedWorker` on Android: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69c49b14.050a0220.2ec94.0888.GAE%40google.com. The `SharedWorker` interface represents a specific kind of worker that can be *accessed* from several browsing contexts, such as multiple windows or iframes: https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker. Chrome on Android has been the odd one out, but it's finally joining Safari and Firefox. 👏

groups.google.com
0
0
0
0
Open post
Thomas Steiner :chrome: @tomayac@toot.cafe
· 6mo ago
Replying to
@dahukanna See this article for some of the features an installation enables: https://web.dev/case-studies/svgcode
web.dev
0
1
0
0
Back
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

I2P eepsite

j6b6cyk6gjmepjih7jjadxgxvvf3lzzujljuu2v4biemzpg3naya.b32.i2p

Platform

  • Email
  • Chat
  • Timeline
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ
  • Lite (no JS)

Legal

  • Terms of Service
  • Privacy Policy
  • Transparency Report
  • Report Abuse
  • Warrant Canary
  • VPN Policy

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 03:59:21 UTC