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
Co-author of https://wasmgroundup.com — learn Wasm by building a simple compiler in JavaScript.
Prev: CDG/HARC, Google, BumpTop
Pinned
Patrick Dubroy
@dubroy.com
· Mar 10
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. 👇
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. 👇
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!!
If you bought it in early access, thanks for your support! 🙏
If you haven't bought it yet, please check it out!!
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)
"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
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)
"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)
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"
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
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"
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"
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
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
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
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
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...
github.com/microsoft/px...
Also described in a 2019 MPLR paper: www.microsoft.com/en-us/resear...
October 31, 2025 at 8:58 AM
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...
github.com/microsoft/px...
Also described in a 2019 MPLR paper: www.microsoft.com/en-us/resear...
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...
Bytecode VMs in surprising places
→ dubroy.com/blog/bytecod...
October 29, 2025 at 11:47 PM
jumpscared by my own research paper appearing halfway down this blog post
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!
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. 👇
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
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!
If you are interested in a hands-on way to learn #wasm, check out the book that @marianoguerra.org and I wrote together!
Working on a diagram for an upcoming @wasmgroundup.com blog post.
October 29, 2025 at 10:24 AM
Working on a diagram for an upcoming @wasmgroundup.com blog post.
A blog post from last year, which I never posted here —
Bytecode VMs in surprising places
→ dubroy.com/blog/bytecod...
Bytecode VMs in surprising places
→ dubroy.com/blog/bytecod...
October 29, 2025 at 7:19 AM
A blog post from last year, which I never posted here —
Bytecode VMs in surprising places
→ dubroy.com/blog/bytecod...
Bytecode VMs in surprising places
→ dubroy.com/blog/bytecod...
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!
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
Looking forward to this tomorrow!
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.
Covers details basically all the modern paradigms/toolkits: React, SwiftUI, Flutter, Compose, ImGui, etc.
October 25, 2025 at 6:26 AM
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.
Covers details basically all the modern paradigms/toolkits: React, SwiftUI, Flutter, Compose, ImGui, etc.
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.
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
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.
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.
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...
• 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
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...
• 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...
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.
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 @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
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.
You can watch it here, or find it wherever fine podcasts are sold.
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 @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
📢 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 @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-...
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.
Would love to see more libraries document their philosophy/approach and "what makes us different" like this.
October 20, 2025 at 5:12 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.
Would love to see more libraries document their philosophy/approach and "what makes us different" like this.
Thinking about fine-grained, reactive tree transformations…but *not* targeting the DOM.
Like @solidjs.com, but for arbitrary JSON output…does this exist already??
Like @solidjs.com, but for arbitrary JSON output…does this exist already??
October 20, 2025 at 1:53 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??
Like @solidjs.com, but for arbitrary JSON output…does this exist already??
This place is not a place of honor…
October 15, 2025 at 7:23 AM
This place is not a place of honor…
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...
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
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...
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...
TIL: [JS] Explicit resource management
→ github.com/pdubroy/til/...
Don't miss the getter trick! It's super helpful and not well-documented.
→ 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
TIL: [JS] Explicit resource management
→ github.com/pdubroy/til/...
Don't miss the getter trick! It's super helpful and not well-documented.
→ github.com/pdubroy/til/...
Don't miss the getter trick! It's super helpful and not well-documented.
I like this —
A case for learning GPU programming with a compute-first mindset: themaister.net/blog/2025/10...
A case for learning GPU programming with a compute-first mindset: themaister.net/blog/2025/10...
October 7, 2025 at 2:37 PM
I like this —
A case for learning GPU programming with a compute-first mindset: themaister.net/blog/2025/10...
A case for learning GPU programming with a compute-first mindset: themaister.net/blog/2025/10...
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...
mise.jdx.dev/tasks/task-c...
October 6, 2025 at 5:24 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...
mise.jdx.dev/tasks/task-c...
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
You can just make things on the web collaborative by adding a single HTML attribute...
TIL: WebAssembly library initialization patterns
→https://github.com/pdubroy/til/blob/main/js/2025-10-05-WebAssembly-library-initialization-patterns.md
→https://github.com/pdubroy/til/blob/main/js/2025-10-05-WebAssembly-library-initialization-patterns.md
October 5, 2025 at 2:51 PM
TIL: WebAssembly library initialization patterns
→https://github.com/pdubroy/til/blob/main/js/2025-10-05-WebAssembly-library-initialization-patterns.md
→https://github.com/pdubroy/til/blob/main/js/2025-10-05-WebAssembly-library-initialization-patterns.md
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?
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
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?
1️⃣ New major version (`doXyz` becomes async; add `doXyzSync`)
2️⃣ New major version, remove `doXyz`, add `doXyzSync` and `doXyzAsync`
3️⃣ Something else?