The Curious Engineer

All blogs / JavaScript / TypeScript

surma.dev

surma.dev

JavaScript / TypeScriptFrontend / CSS / browsersPerformance / optimizationGraphics

Posts
46 from 11 Nov 2015 to 17 Jun 2025
Posting
now and then
Kind
personal blog
Feed
https://surma.dev/index.xml

2025 1

  1. LangGraph for complex workflows

2024 1

  1. [Video] Nix explained from the ground up

2023 3

  1. Writing and debugging bare metal arm64
  2. Spawning a WASI Thread with raw WebAssembly
  3. Rust to WebAssembly the hard way

2022 5

  1. I turned JS into a compiled language (for fun and Wasm)
  2. PID Controller
  3. The cost of convenience
  4. WebGPU — All of the cores, none of the canvas
  5. My approach to coding interviews: Optimize for iteration

2021 6

  1. <video>, HTTP range requests & WHATWG streams
  2. Film & Developer comparison
  3. Is WebAssembly magic performance pixie dust?
  4. Why your phone’s portrait mode fakes the blur
  5. Ditherpunk — The article I wish I had about monochrome image dithering
  6. Ditherpunk

2020 2

  1. Case study: Moving a Three.js-based WebXR app off-main-thread
  2. Streams for reactive programming

2019 7

  1. React + Redux + Comlink = Off-main-thread
  2. Is postMessage slow?
  3. When should you be using Web Workers?
  4. Compiling C to WebAssembly without Emscripten
  5. Raw WebAssembly
  6. WhatWG Stream Visualizer
  7. Vinylizer

2018 7

  1. Less Snake Oil, More Context
  2. Headless Web Development
  3. Lights, Camera, Action!
  4. The 9am rush hour
  5. My most useful RegExp trick
  6. Layers and how to force them
  7. Deep-copying in JavaScript

2017 7

  1. “An Actor, a model and an architect walk onto the web...”
  2. 2018: 120fps and no jank
  3. Comlink + WebRTC — An Intro to WebRTC
  4. DOM2Texture: Abusing Arcane APIs
  5. DIY Web Animations: Promises + rAF + Transitions
  6. Chromium Bug Tracker: All bugs with >32 stars get fixed?
  7. DevDiary Underdash: Progressive Enhancement, Graceful Degradation and Accessibility

2016 6

  1. How to read web specs Part IIa – Or: ECMAScript Symbols
  2. How to read web specs Part I – Or: WebVR, how do you work?
  3. Compositor Worklet evolves into Animation Worklet!
  4. Lazyloading
  5. New ways to make your web app jank with Houdini – An introduction
  6. Setting up HTTP/2

2015 1

  1. Maelstrom Gaming and 12 fps