Off The Main Thread cover image

Off The Main Thread

Latest episodes

undefined
Jan 15, 2025 • 49min

New View Transition Stuff

Discover the latest advancements in the View Transition API, enhancing user experience with seamless animations. Dive into humorous struggles of assembling furniture, revealing the relatable chaos of modern living. Explore the emotional rollercoaster of navigating today's web technologies, with insights on CSS changes and document readiness. Learn about the intricacies of implementing view transitions in frameworks like React, addressing privacy and animation fluidity. Get ready for a blend of laughter and tech tips!
undefined
Dec 16, 2024 • 32min

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
undefined
Dec 3, 2024 • 31min

TC39 Roundup Drama Edition Part I: Shared Structs

In this episode, Surma talks about the Stage 2 proposal "JavaScript Struct", which introduces fixed-layout objects and the ability to share them between realms. Notes & Corrections from Shu: Surma was slightly wrong about why private fields were originally considered problematic for sharability. The problem occurs when a class can be evaluated multiple times: function makeClass() { return class MyClass { #priv; getPrivateField(instance) { return instance.#priv; } }; } const C1 = makeClass(); const C2 = makeClass(); const i1 = new C1(); const i2 = new C2(); // this throws! i1.getPrivateField(i2); This behavior makes it hard to compile private fields just as "slots" on an object, as clearly additional behavior is required. This is somewhat at odds with the goal of achieving a fixed layout. Also, launching is mid-2025 is very optimistic. Resources: SharedArrayBuffer Structs proposal Return overrides Records & Tuples proposal Surma’s buffer-backed-object library for SharedArrayBuffer
undefined
Oct 29, 2024 • 41min

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 A branch of Squoosh using Nix Nixpkgs manual Comparison of size and freshness of different package managers Home Manager Nix pills
undefined
Oct 8, 2024 • 45min

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" by Hidde de Vries and Scott O'Hara. The CSS anchor positioning API. The previous spatnav spec effort. The hidden attribute until-found value (sorry, I said if-found in the episode). The CSS element function. Timing of cloning for the  element. Animating to height auto. The new entry-exit animation feautres. The proposed command and commandfor attributes which give buttons declaritive activation behavior.
undefined
Aug 30, 2024 • 38min

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
undefined
Aug 6, 2024 • 30min

Chrome’s secretly installed extensions

Luca, who uncovered a hidden Chrome extension installed by default, shares his shocking find. Surma and Jake join in to dissect its implications for user privacy and trust. The conversation delves into the extension's role in system performance monitoring and raises concerns over how such secrets can affect corporate accountability. As they explore the potential security risks and ethical considerations surrounding these covert features, they challenge listeners to reflect on the balance between tech convenience and transparency.
undefined
Jun 12, 2024 • 43min

Are web components worth it?

In this lively podcast, Jake and Surma discuss the evolution and potential of web components. They cover everything from old specs to modern implementations, explore custom element behaviors, and compare web components with higher-level frameworks like React. The conversation also touches on challenges in web component development, differences between JSX and HTML processing, and the pros and cons of using web components independently.
undefined
Jun 3, 2024 • 43min

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 source-map-explorer Hacker News comment by Joseph Shorr on the origins of source maps The Source Map "specification" EvanW's source map visualizer Wikipedia: VLQ DWARF specification llvm-dwarfdump gimli addr2line bundlephobia Wasmphobia WebAssembly Debugging Chrome Extensions by Ingvar TC39 source maps spec Squoosh Animal Well .kkrieger: Gameplay video and Wikipedia article "C64 'fast loaders'" "Thank you for playing Wing Commander"
undefined
Apr 22, 2024 • 44min

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? - 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. Shizo Kanakuri's marathon record

Get the Snipd
podcast app

Unlock the knowledge in podcasts with the podcast player of the future.
App store bannerPlay store banner

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode

Save any
moment

Hear something you like? Tap your headphones to save it with AI-generated key takeaways

Share
& Export

Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode