Patrick Dubroy
dubroy.com
Patrick Dubroy
@dubroy.com
Programmer & researcher, co-creator of https://ohmjs.org. 🇨🇦 🇩🇪 🇪🇺

Co-author of https://wasmgroundup.com — learn Wasm by building a simple compiler in JavaScript.

Prev: CDG/HARC, Google, BumpTop
Pinned
Here it is — very happy to officially release the book that @marianoguerra.org and I have been working on for the past 2½ years.

If you bought it in early access, thanks for your support! 🙏

If you haven't bought it yet, please check it out!!
Excited to announce the official launch of our online book, WebAssembly from the Ground Up! 🎉

It's the book we wish we'd had 3 years ago.

No messing with tools and frameworks. It's a hands-on guide to the core of Wasm: the instruction set and module format.

Link below. 👇
Somewhat surprising (to me) advice in Google's C++ style guide:

"Try to avoid unsigned types (except for representing bitfields or modular arithmetic). Do not use an unsigned type merely to assert that a variable is non-negative."

Example of a possible bug: abseil.io/tips/227

(via @wingolog.org)
November 11, 2025 at 3:45 PM
A cool paper from OOPSLA '25 —

An Empirical Evaluation of Property-Based Testing in Python
dl.acm.org/doi/pdf/10.1...

Some interesting findings:
- "Each property-based test finds about 50x as many mutations as the average unit test"
- "76% of mutations were found within the first 20 inputs"
November 8, 2025 at 7:31 PM
Reposted by Patrick Dubroy
Ever thought about writing #WebAssembly by hand? 🤔

Authors Patrick @dubroy.com and @marianoguerra.org think it's crucial for learning. They join #WasmAssembly host Thomas Steiner to discuss their ebook, "WebAssembly from the Ground Up" → goo.gle/3Ln67Pp
November 4, 2025 at 9:00 PM
Did you know that Microsoft MakeCode (a Scratch-like coding environment) supports a variant of TypeScript called "Static TypeScript"?

github.com/microsoft/px...

Also described in a 2019 MPLR paper: www.microsoft.com/en-us/resear...
October 31, 2025 at 8:58 AM
Reposted by Patrick Dubroy
jumpscared by my own research paper appearing halfway down this blog post
A blog post from last year, which I never posted here —

Bytecode VMs in surprising places
dubroy.com/blog/bytecod...
October 29, 2025 at 11:47 PM
Periodic reminder (since I apparently don't talk about it enough) —

If you are interested in a hands-on way to learn #wasm, check out the book that @marianoguerra.org and I wrote together!
Excited to announce the official launch of our online book, WebAssembly from the Ground Up! 🎉

It's the book we wish we'd had 3 years ago.

No messing with tools and frameworks. It's a hands-on guide to the core of Wasm: the instruction set and module format.

Link below. 👇
October 29, 2025 at 12:29 PM
Working on a diagram for an upcoming @wasmgroundup.com blog post.
October 29, 2025 at 10:24 AM
A blog post from last year, which I never posted here —

Bytecode VMs in surprising places
dubroy.com/blog/bytecod...
October 29, 2025 at 7:19 AM
Looking forward to this tomorrow!
This week the W3C WebAssembly Community Group is holding an in-person meeting in Munich.

We (@dubroy.com and @marianoguerra.org) are planning to be there. Patrick tomorrow, and both of us on Thursday for the Research Day.

If you see us, come say hi!
October 27, 2025 at 4:44 PM
If you're interested in UI frameworks/architectures, @raphlinus.bsky.social's writings on the evolution of Xilem (Rust UI toolkit) are an incredible resource: github.com/linebender/x...

Covers details basically all the modern paradigms/toolkits: React, SwiftUI, Flutter, Compose, ImGui, etc.
October 25, 2025 at 6:26 AM
I'm kinda surprised how hooks as a concept have taken off beyond React.

It's a clever solution with some nice properties, but…also kind of weird? Hidden state, and generally kind of hard to reason about and explain.
October 24, 2025 at 6:54 PM
An interesting development in the past 10–15 years is the co-evoluation of PLs and UI toolkits:

• JSX for React (then later other toolkits)
• Swift 5.1 added a bunch features for SwiftUI: www.swiftbysundell.com/articles/the...
• Kotlin's Composable functions: medium.com/androiddevel...
The Swift 5.1 features that power SwiftUI’s API | Swift by Sundell
SwiftUI brings a new, declarative way to build UIs for Apple’s platforms, and also pushes the Swift language itself to new limits — by making heavy use of a set of key new syntax features, that are be...
www.swiftbysundell.com
October 22, 2025 at 7:13 AM
ICYMI: @marianoguerra.org and I had a fun conversation with Thomas on the WasmAssembly podcast, all about our book @wasmgroundup.com.

You can watch it here, or find it wherever fine podcasts are sold.
📢 New #WasmAssembly podcast 🎙️ episode:
#WebAssembly from the Ground Up with @dubroy.com and @marianoguerra.org. Learn how they're teaching #Wasm by building a compiler in JavaScript and why writing Wasm by hand is crucial!

🍿 www.youtube.com/watch?v=dRdD...
🎧 wasmassembly.libsyn.com/webassembly-...
WebAssembly from the Ground Up with Patrick Dubroy and Mariano Guerra
YouTube video by Chrome for Developers
www.youtube.com
October 21, 2025 at 2:19 PM
Reposted by Patrick Dubroy
📢 New #WasmAssembly podcast 🎙️ episode:
#WebAssembly from the Ground Up with @dubroy.com and @marianoguerra.org. Learn how they're teaching #Wasm by building a compiler in JavaScript and why writing Wasm by hand is crucial!

🍿 www.youtube.com/watch?v=dRdD...
🎧 wasmassembly.libsyn.com/webassembly-...
WebAssembly from the Ground Up with Patrick Dubroy and Mariano Guerra
YouTube video by Chrome for Developers
www.youtube.com
October 20, 2025 at 6:22 PM
The "Inside Flutter" page from the @flutter.dev docs is a joy: docs.flutter.dev/resources/in....

Would love to see more libraries document their philosophy/approach and "what makes us different" like this.
October 20, 2025 at 5:12 PM
Thinking about fine-grained, reactive tree transformations…but *not* targeting the DOM.

Like @solidjs.com, but for arbitrary JSON output…does this exist already??
October 20, 2025 at 1:53 PM
🤔
October 16, 2025 at 6:21 PM
This place is not a place of honor…
October 15, 2025 at 7:23 AM
Reposted by Patrick Dubroy
I'm teaching 𝗪𝗿𝗶𝘁𝗲 𝘆𝗼𝘂𝗿 𝗼𝘄𝗻 𝘁𝗶𝗻𝘆 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴 𝘀𝘆𝘀𝘁𝗲𝗺(𝘀)! again. I'll be posting the videos & tasks on YouTube too.

In the first lecture, I explain what's a tiny system, why write one and show plenty of demos!

🎞️ Playlist: www.youtube.com/playlist?lis...
👉 More info: d3s.mff.cuni.cz/teaching/npr...
Write your own tiny programming system(s)! - YouTube
The goal of this course is to teach how fundamental programming language techniques, algorithms and systems work by writing their miniature versions. The cou...
www.youtube.com
October 7, 2025 at 9:18 PM
TIL: [JS] Explicit resource management
github.com/pdubroy/til/...

Don't miss the getter trick! It's super helpful and not well-documented.
October 9, 2025 at 12:22 PM
I like this —

A case for learning GPU programming with a compute-first mindset: themaister.net/blog/2025/10...
October 7, 2025 at 2:37 PM
Been a big fan of mise for a while now, but now I discovered that it can replace make? *swoon*

mise.jdx.dev/tasks/task-c...
October 6, 2025 at 5:24 PM
Reposted by Patrick Dubroy
You can just make things on the web collaborative by adding a single HTML attribute...
October 5, 2025 at 11:53 PM
TIL: WebAssembly library initialization patterns
→https://github.com/pdubroy/til/blob/main/js/2025-10-05-WebAssembly-library-initialization-patterns.md
October 5, 2025 at 2:51 PM
JS folks: best way to deal with a public API (in an NPM package) going from sync → async by default?

1️⃣ New major version (`doXyz` becomes async; add `doXyzSync`)
2️⃣ New major version, remove `doXyz`, add `doXyzSync` and `doXyzAsync`
3️⃣ Something else?
October 2, 2025 at 3:12 PM