Patrick Dubroy
mastodon 4.7.3Independent software engineer and researcher based in Munich, Germany. Co-creator and maintainer of Ohm (https://ohmjs.org).
Co-author of @wasmgroundup@hachyderm.io — an online book to learn Wasm by building a simple compiler in JavaScript.
One more time — I'm looking for new consulting clients.
Some ways I can help:
∙ Fractional tech leadership (tackling "leadership debt" in small eng orgs)
∙ Full-stack, 0 to 1 projects
∙ Language design & impl (eg with @ohmjs.org)
∙ All things #Wasm
∙ JavaScript/TypeScript perf
(🔁 appreciated)
New post on the @ohmjs@hachyderm.io blog —
Inside Ohm's PEG-to-Wasm compiler
→ https://ohmjs.org/blog/2026/03/12/peg-to-wasm
v18 is now more than 50x faster for real-world grammars while using about 10% of the memory 🔥
…this post goes into the details of how it's built.
TIL: Python signal handling
→ https://github.com/pdubroy/til/blob/main/python/2026-04-01-Python-signal-handling.md
Love this —
microui: A tiny, portable, immediate-mode UI library written in ANSI C
→ https://github.com/rxi/microui
Only around 1100 SLoC (!)
TIL: Multithreaded WebAssembly
→ https://github.com/pdubroy/til/blob/main/wasm/2026-03-05-Multithreaded-WebAssembly.md
Tomorrow at 17:20 CET / 12:20 EDT / 9:20 PDT, I'll be livestreaming at https://twitch.tv/jlengstorf, teaching @jlengstorf@hachyderm.io about WebAssembly!!
I'll do my best to condense the best parts of our #Wasm book (@wasmgroundup@hachyderm.io) into ~60 minutes. 😄
@chris@m.objc.io Yes, it varies but the general idea is —
For ASTs, CSTs, and intermediate representations (e.g. CFGs)…
They are many small objects, that all have the same lifetime, and that lifetime corresponds to a clearly-defined phase, so:
- avoid per-node memory management space overhead
- do bump allocation into some kind of arena/region, free them en masse at the end of the phase.
- use integer offsets rather than first-class pointers. (Memory savings, better cache locality, and — in GC'd environments — avoids GC overhead scanning a large object graph.
In many languages, you can do this effectively with a large array, but there are other approaches too.
See also what @adrian@discuss.systems wrote about it: https://www.cs.cornell.edu/~asampson/blog/flattening.html
Happy to chat about this sometime!
In just under 30 minutes now!