As a specific counterpoint to one of your assertions, if highly-composed software actually worked like you say, bundle sizes wouldn't be such a problem on the web today. But in practice, there are massive amounts of duplication and bloat in a typical node_modules, which static analysis can't touch.
Posts by Ben Visness
No specific language or tech stack requirement, but we encourage people to avoid big frameworks, since they tend to obscure what the software actually needs to do. Using AI to generate code is strictly forbidden though.
b) npm is a dependency nightmare with increasingly negative ramifications. Bundle sizes are massive, supply chain attacks are rampant, and meanwhile standard APIs in the browser go unused. No one should be using thousands of tiny libraries written by strangers. bvisness.me/microlibrari...
a) There's literally no difference at runtime between using a package you got from npm vs. a package you vendored or wrote yourself. Because the language is the same on either side, there are no surprising costs at the boundaries, and static analysis (e.g. TS and bundlers) can work at full power.
npm is a poor comparison because a) npm uses the same language for all its packages, and b) npm is a plague on the software industry
Personally I strongly do NOT want the small-pieces world. If you build apps out of tons of tiny shared-nothing pieces, you inherit all kinds of microservice problems at the local development level, which is peak stupid. But, I do want a world where Wasm can actually call things on the host.
Next week we are hosting the Handmade Essentials Jam: a one-week jam where we build essential software from scratch, by hand.
If you like building simple software, or want to get better at coding without AI, then sign up and join us next week:
handmade.network/jam/essentials
We at Mozilla feel that WebAssembly has been a second-class citizen on the web for long enough. You shouldn't have to go through JS to do everything.
This is probably a lot of what I will be focusing on for work in 2026!
hacks.mozilla.org/2026/02/maki...
That’s part of it. See the console example near the end. If you work through the details of what such a thing would mean, you find that you need some kind of ABI to define the low-level details of each call, and then some kind of bindings to use it. That’s a big part of what components do today.
No, it is a bespoke tool and the layout algorithm is specifically designed for control flow graphs. There is no description language or whatever.
Inspiring words from the Handmade Network Discord today
the one time git asks for my permission first is the one time it absolutely does not matter
A larger write-up on the project can be found here, with background info about mDNS and DNS-SD: handmade.network/p/688/buongi...
Oh also I forgot to post my jam project here on Bluesky - here's Buongiorno, my tool for mapping out mDNS and DNS-SD services. It captures mDNS packets to show a graph of services being requested and advertised, e.g. printers, AirPlay, Handoff, and more.
The X-Ray Jam is complete! I had a great time and we have 10 lovely submissions you can look through: handmade.network/jam/x-ray-2025
We're planning a recap live show in the near future, so stay tuned for that.
Behold! A list of mDNS services in my house. (This is basically just the output of `avahi-browse`, so nothing too novel yet.)
The DNS-SD spec with the following highlighted: “a web server typically has multiple pages”
The things you learn from reading specs
Highlighted printouts of mDNS-related articles and specs.
The X-Ray Jam is underway (handmade.network/jam/x-ray-2025) and I am exploring mDNS.
First step: testing if mDNS works on my printer. It does.
I'm tackling mDNS, hopefully making a tool that maps out the state of all my network devices so I can see why devices only seem to show up like 60% of the time 😃
The X-Ray Jam is just a week away! If you are interested in tools that dig into software internals then you should participate or at least follow along.
handmade.network/jam/x-ray-2025
This is for a WASM record/replay tool I'm building for work. It instruments arbitrary WASM modules to record specific function calls to a log, then can recreate the module state to replay them.
"Very stupid RLE", where runs of zeroes are collapsed but individual letters are spaced out by four bytes each
"Slightly smarter RLE", where long runs of unique characters are contiguous
I have started to go down the compression rabbit hole. The compressor and decompressor are handwritten WASM.
Uncompressed: 52MB
Very stupid RLE: 182KB
Slightly smarter RLE: 65KB
Tweet from Fabian Giesen (@rygorous): look, I'm sorry, but the rule is simple: if you made something 2x faster, you might have done something smart if you made something 100x faster, you definitely just stopped doing something stupid
Spreadsheet showing results from a Flutter benchmark, showcasing a 15%+ performance improvement.
Sometimes you spend weeks on a performance optimization to get 0.5% faster. Other times you spend a day tweaking your GC code and get 15%+ faster.
You can subscribe on podcast platforms at handmade.network/podcast/, and video versions are available on both YouTube and Spotify. I'm so excited to be doing this again 😄
We're doing a Handmade podcast again!
Our first episode of 2025 is an interview with aolo2, a web dev turned CPU engineer, about several apps he has made from scratch: a collaborative whiteboard, a Handmade Slack alternative, and a CPU trace viewer.
www.youtube.com/watch?v=b74I...
A file explorer called File Pilot just released in open beta yesterday: filepilot.tech
It is so insanely fast that it makes you question how all other software is developed. The Handmade community does good work.
The point of my post was that optimizations to Memory64 will NEVER be able to fully eliminate bounds checks the same way we can for 32-bit wasm.