Jake discusses the latest features of the View Transition API, including cross-document transitions, the blocking attribute, and nested view transitions, empowering developers to create seamless user experiences.
16 Dec 2024
TC39 Roundup Drama Edition Part II: JS0 and JSSugar
In this episode, Surma talks about a presenation-maybe-soon-to-be-a-proposal "JS0", which explores the idea of splitting JavaScript into two specifications: JS0, focusing on security, performance and capabilties, implemented by engines; and JSSugar, focussing on developer productivity and syntactic sugar features implemented by build tools.
Notes & Corrections:
Yes, I know, people still do have to step through assembler. But I stand behind the essence of my point: The debug symbols for compiled languages feel very reliable. We should be able to at least match that reliability in JavaScript.
Guy Bedford currently works at Fastly.
Resources:
Previous episode on Shared Structs
The infamous slide deck
OTMT episode on SourceMaps on source maps
3 Dec 2024
TC39 Roundup Drama Edition Part I: Shared Structs
Surma discusses the TC39 Roundup Drama Edition Part I, highlighting the challenges of implementing fixed-layout objects and shared structs in JavaScript, with key implications for compiler optimization and launch timelines.
29 Oct 2024
More build tools: Nix
After talking about Bazel in one of our previous episodes, we are now looking at Nix, a build system that has been getting increasing attention lately.
Resources:
OTMT Bazel episode
Surma's video on Nix
Eelco Dolstra's PhD Thesis
Nix & NixOS (https://nixos.org/)
A branch of Squoosh (https://squoosh.app/) using Nix
Nixpkgs manual (https://nixos.org/manual/nixpkgs/stable/)
Comparison of size and freshness of different package managers
Home Manager (https://nix-community.github.io/home-manager/)
Nix pills (https://nixos.org/guides/nix-pills/)
8 Oct 2024
The new stylable select element
We're finally getting a element we can fully control with CSS! A bunch of other stuff needed to be added to the platform to make it work, and the good news is we can use it a lot of them independently of .
Resources:
Chrome's article on the new , and how you can provide feedback.
The CSS appearance property. Nope, I still don't know what it does.
The Popover API.
"On popover accessibility: what the browser does and doesn’t do" (https://hidde.blog/popover-accessibility/) by Hidde de Vries and Scott O'Hara.
The CSS anchor positioning API.
The previous spatnav spec effort (https://github.com/WICG/spatial-navigation/).
The hidden attribute until-found value (sorry, I said if-found in the episode).
The CSS element function.
Timing of cloning for the element (https://github.com/whatwg/html/issues/10520).
Animating to height auto.
The new entry-exit animation feautres.
The proposed command and commandfor attributes (https://github.com/whatwg/html/pull/9841) which give buttons declaritive activation behavior.
30 Aug 2024
Chrome's new LLM AI API OMG
Chrome is experimenting with exposing an LLM to the web platform. Jake and Surma dig into how the API works, and whether something like this could work on the open web.
Resources:
The explainer
ChatGPT functions
Chrome's initial vague docs about the feature
Gemini terms of use
The EURion constellation
WebNN
6 Aug 2024
Chrome’s secretly installed extensions
Luca (https://x.com/lcasdev) found a hidden Chrome extension that is installed by default in Chrome and most Chromium derivatives. Surma and Jake dig into what this extensions does and how reasonable it is to get angry about it.
Resources:
Luca’s original tweet thread
The extension’s source code
Discussion on blink-dev
The original PR that introduced the extension
Brendan Eich’s response
Brave PR disabling the extension
12 Jun 2024
Are web components worth it?
In this episode, Jake and Surma chat about web components. Why they were invented, what they're useful for, and how they would improve.
Resources:
Surma showers his eyeball (https://photos.app.goo.gl/qowrP5i8ym5gE2V29).
The old custom elements 'v0' spec.
The old shadow DOM 'v0' spec.
The old HTML imports spec (https://www.w3.org/TR/html-imports/).
The initial version of Polymer.
Lit (https://lit.dev/docs/) (formally lit-html).
HTML attributes vs DOM properties.
Issue looking at ways custom elements could have behavior (https://github.com/whatwg/html/issues/10220).
The ElementInternals API, for making custom elements interact with forms.
The is attribute.
WebKit's position on the is attribute.
Programmatically assigning children to slots.
Issue looking at ways to slot children that aren't direct children of the shadow host (https://github.com/whatwg/html/issues/10273).
Declarative shadow DOM.
Custom element support in React 19.
pinch-zoom custom element.
3 Jun 2024
Why Source Maps don’t always work
In this episode, Surma shares with Jake all the things he learned reading up on source maps and DWARF.
Resources:
Jake's Jericho triangle (https://photos.app.goo.gl/GozzxmgDnJpBP2oM7)
source-map-explorer
Hacker News comment by Joseph Shorr on the origins of source maps (https://news.ycombinator.com/item?id=15705190)
The Source Map "specification"
EvanW's source map visualizer
Wikipedia: VLQ
DWARF specification (https://dwarfstd.org/)
llvm-dwarfdump
gimli (https://docs.rs/gimli/)
addr2line (https://docs.rs/addr2line/)
bundlephobia (https://bundlephobia.com/)
Wasmphobia
WebAssembly Debugging Chrome Extensions by Ingvar
TC39 source maps spec (https://github.com/tc39/source-map)
Squoosh (https://squoosh.app/)
Animal Well (https://www.animalwell.net/)
.kkrieger: Gameplay video and Wikipedia article
"C64 'fast loaders'" (https://en.wikipedia.org/wiki/Fast_loader)
"Thank you for playing Wing Commander"
22 Apr 2024
Putting React In The Browser
In this episode, Jake and Surma chat about the complexities of adding common framework patterns into the web platform, and work that has been done on that so far.
Resources:
Michael Jackson's tweet.
Is WebAssembly magic performance pixie dust? (https://surma.dev/things/js-to-asc/) - Surma's investigation into wasm performance.
defaultValue reflects the value attribute.
The value property is complicated.
HTML template instantiation.
DOM parts API.
DOM Parts Imperative API.
DOM Parts Declarative Template API.
Atomic move for elements (https://github.com/whatwg/dom/issues/1255).
Shizo Kanakuri's marathon record (https://en.wikipedia.org/wiki/Shizo_Kanakuri)
25 Mar 2024
Canvas-based Web Apps
In this episode, Surma talks about web apps that (partly) abandon the DOM and use canvas instead, to take rendering matters into their own hands. Figma is one popular app that uses this approach, while Flutter is an entire app platform that went with this technique to provide portability. Jake and Surma discuss the tradeoffs of building apps this way.
Resources:
AI text-to-speech having a stroke
ServiceWorker Static Routes
Targeting the browser with Bevy
Flutter’s “Showcase” section with a 6MB gif (https://flutter.dev/showcase)
Flutter’s Material 3 Demo w/o Wasm
Flutter’s Material 3 Demo w/ Wasm (https://flutterweb-wasm.web.app/)
Ian 'Hixie' Hickson’s “Towards a modern Web stack” document
HarfBuff (https://harfbuzz.github.io/)
1 Mar 2024
The Apple PWA Ban
In this episode, Jake chats about the latest EU ruling that requires Apple to allow other browser engines on iOS, and how Apple is reacting to it.
Resources:
Microsoft vs the EU
Microsoft vs the US
BrowserChoice.eu
IBrowse
Mobile operating system market share
Web platform tests dashboard (https://wpt.fyi/)
The internal Apple email about HTML5 (https://mastodon.social/@owa/111957132131782727)
The Open Web Advocacy group (https://open-web-advocacy.org/)
The EU digital markets act (https://en.wikipedia.org/wiki/Digital_Markets_Act)
Safari is "three browsers"
Same Safari, different device
Apple's "Using alternative browser engines in the European Union" docs
Apple is killing web apps in the EU
24 Jan 2024
TC39 Roundup and Bevy’s ECS
In this episode, Surma shares what he learned while getting started with the Bevy Game engine, Entity Component Systems and why they might be useful for the Web. Jake rounds up the newest JavaScript language features that landed in TC39’s Stage 3.
Resources:
Bevy Game Engine (https://bevyengine.org/)
Bevy Rendering Pipeline (https://bevy-cheatbook.github.io/gpu/intro.html)
Buffer-backed Objects, a library by Surma to store objects in ArrayBuffer
Surma built Boids with Bevy: Tweet 1, Tweet 2
When should your alarm go off when daylight savings time kicks in?
TC39 Stage 3 Proposals (https://github.com/tc39/proposals#stage-3)
ShadowRealm style API on workers
Our previous episode which covers JSON imports.
The JSON spec (https://www.json.org/json-en.html).
Pushing up the daisies (https://photos.app.goo.gl/dK5Lq577DkgYwNms6).
27 Dec 2023
The Big Build Bool Bonanaza II
In this episode, Jake investigates whether the existence of build tools is a symptom of the web being underpowered, or if they are part of the solution to make the web better. Surma shares his experience of learning about Bazel and how it can be used to build web projects.
Resources:
Touching cloth (https://www.youtube.com/watch?v=VoACQCJWx10).
Emirates silly class.
Yes, we have done "The big build tool bonanza" before.
Jake: Although "Terry's ringpull museum" isn't a real thing, the closest thing that comes to mind is a site I still use every time I buy a new pair of shoes, it's Ian's Shoelace Site.
Jake's 10 year old blog posts on progressive enhancement (https://jakearchibald.com/2013/progressive-enhancement-is-faster/).
NextJS server actions.
Rollup's docs (https://rollupjs.org/introduction/).
Jake and Surma’s talk (https://www.youtube.com/watch?v=TsTt7Tja30Q) on writing custom Rollup plugins.
Vite (https://vitejs.dev/).
Some of the issues with HTTP/2 push.
HTTP 203 episode on importing JSON (https://www.youtube.com/watch?v=jG7VfbqqTGw).
Using import attributes with build tools.
Improving TypeScript types for import attributes.
Silly view transition demo.
Jason Lengstorf (https://twitter.com/jlengstorf) video: 4 Web Devs, 1 App Idea.
Bazel (https://bazel.build/).
Aspect’s Bazel rules for JavaScript.
Bazel Remote Caching.
29 Nov 2023
WebGPU and Browser Ideologies
In this episode, Surma talks about the “GPU” in “WebGPU” and how this new web standard makes programming for the GPU more accessible. Jake talks about how different browsers approach standards and their perceived ideologies around what they prioritize.
Resources:
Surma’s blog post on WebGPU (https://surma.dev/things/webgpu/)
A 13-part blog post series on the architecture of GPUs.
The OpenGL internal state object explained
Dawn (https://dawn.googlesource.com/dawn/), a C++ library that brings the WebGPU API to C++
wgpu (https://wgpu.rs/), a Rust crate that brings the WebGPU API to Rust.
The extensible web manifesto (https://extensiblewebmanifesto.org/).
Edge 'injecting' content into the Chrome download page.
-webkit-box-reflect.
Is Safari the new IE? (https://http203.libsyn.com/is-safari-the-new-ie)
Stadia controller flash.
13 Nov 2023
From the Archive — Changing jobs, Deno, and optimizing animations
(This is an episode from our previous podcast HTTP 203, originally published on June 29th, 2022)
In this episode:
- Surma changed jobs.
- The Shopify interview process.
- Pair programming vs pair problem solving.
- Surma's also doing bits of work for Deno.
- The complexities of testing image codecs.
- Jake forgot to tell Ada how HTTP 203 filming ends, so it almost never did.
- Keeping animations fast but simple for page transitions.
Transcript: https://goo.gle/3ns4TTK
Reach and audience
Public platform figures. Ratings count people who left a rating, not total listeners.
Apple Podcasts (US)
5.0 / 5
10 ratings
Spotify
4.9 / 5
61 ratings
Podcast Authority Score: 35 / 100
A composite of feed quality, social presence, YouTube performance and engagement. Read the methodology.
Quality
49
Social presence
0
YouTube
0
Engagement
51
Contact Off The Main Thread
Guest appearances
Does not typically book guests
Based on episode analysis; this does not confirm that the show is currently accepting guests.
Host of Off The Main Thread?
Claim your podcast to manage its listing and keep your show details accurate.
Pod Engine is an independent podcast discovery and analytics service and is not affiliated with or endorsed by this podcast. Artwork and show content belong to their owners. Full legal notice.
Explore this show Podcast research with Pod Engine