Wasm for the rest of us

Issue #343.November 20, 2024.2 Minute read.
Bytes

Today’s issue: Node trauma bonding, JavaScript pumpkin patches, and you’ll finally learn how to use Wasm.

Welcome to #343.


Eyeballs logo

The Main Thing

MFW I backdoor Rust into our JS app via Extism

Extism is bringing Wasm to the unwashed masses

Remember the days before jQuery where you had to sniff out browser support to do basic things like make an XMLHttpRequest or manipulate a DOM node?

If you do, then that pain in your lower back is most likely due to a weakness in your hamstrings, and has nothing to do with your back – but also, you most likely remember how much of a PITA it was to build cross-browser apps that worked consistently.

In a way, WebAssembly (or as the cool kids call it, “Wasm”) is in a similar spot today.

You’ve likely heard of Wasm and may even know that it’s a portable compilation target that lets you use isolated, faster, lower-level languages like C++ and Rust to build web apps with near native performance – but have you used it?

Odds are, you haven’t – and Extism is here to change that.

You can think of Extism as being to WebAssembly what jQuery was to JavaScript. It smooths out all of the inconsistencies and rough edges of Wasm, providing a single, universal interface to build with.

And you’ll never guess how it does it – Plugins.

Now I know, “oooo, plugins gross”. First off, grow up.

With traditional plugin systems, you’re forced to make a choice between security and performance (or neither, if you’re WordPress). But both of those things, security and performance, are what Wasm is uniquely good at.

By building on top of Wasm, Extism allows you to create a Plugin system where plugins can be written and embedded in any language, can run in any environment, and can do so securely.

So yes, if you’ve been trying to sneak Rust or OCaml into your JavaScript application, Extism may be the way.

Bottom Line: Extism isn’t just simplifying WebAssembly — it’s democratizing it. Just like jQuery once opened up the world of DOM manipulation to the masses, Extism is making Wasm accessible to everyone.

        

Sanity logo

Our Friends
(With Benefits)

Wheezy the penguin from Toy Story looking sad

When your company's CMS is also an “all-in-one website builder"

Sanity isn’t just another CMS 🗣

While most CMS platforms have been building increasingly “drag-and-droppy” tools to help marketers spin up cookie cutter landing pages, Sanity is creating a true developer platform to help companies implement strategic content operations at scale.

And their brand new Winter Release introduced 4 major updates that make the platform more powerful than ever:

  • Live Content API makes it easy to build scalable apps that are live by default with just three-ish lines of code.

  • Visual editing for structured content lets you do fast and direct visual editing right in the page preview – but it keeps your content well-structured and reusable.

  • Automatic content mapping saves you from having to manually map all your team’s content.

  • Content Releases gives you a next-level release management system that supports scheduling site-wide changes or smaller, tactical edits.

Join Sanity’s engineers for a live deep dive tomorrow to get all the details – we’ve used Sanity for years and we love it.


Cool Bits logo

Cool Bits

  1. Steve (the CEO of dylibso, which created Extism) went on the WasmAssembly show to discuss building squishy Wasm apps using Extism.

  2. If you’re up for some light trauma bonding, Abdisalan Mohamud wrote about The Tragedy of Running an Old Node Project.

  3. Codecov just launched a new test analytics feature that separates flaky tests from legitimate failures and calls them out directly in the PR comment – so you know which tests to re-run locally or skip. [sponsored]

  4. Aapo Alasuutari wrote a JavaScript engine using Rust called Nova. Winters must be really cold in Finland.

  5. The Extism JS SDK lets you leverage Extism inside your JS apps and it works in all the major JS runtimes (Node, Deno, Bun, Cloudflare Workers).

  6. Vercel released v4 of their AI SDK.

  7. Instead of going to the pumpkin patch, Paul Hebert wrote an article about generating random mazes with Javascript. We all have our own ways of dealing with the big pumpkin industrial complex.

  8. CarbonQA gives your team high-quality QA services that scale, with US-based testers who work directly alongside you in your tools (Slack, GitHub, Jira, Asana, etc.). They’ll break your app repeatedly and find all the errors for you, so your devs can focus on writing code 🙏. [sponsored]

  9. If you enjoyed reading about Extism and want to join the charge to democratize Wasm, head over to their Github Repo and throw a star their way.

  10. Thomas Günther wrote about a botox-free way to create beautiful focus outlines.


one question interview logo

One Question Interview

Why is it important to make all software extensible?

The most successful products are actually platforms, where end-users can build their own extensions to a system and bring new, uniquely valuable capabilities on their own. First, the software needs a programmable interface, and that’s where Extism comes in.

Every software product faces the challenge to keep up with customer feature requests, and Extism makes it possible and practical to give end-users the ability to make your software more useful for them. End-users need to be able to bring their own code and run it in your app, and Extism streamlines this so users can deploy code into your app in practically any language they like.

The bottom line is engineering teams shouldn’t be held back from building innovative features because they need to support “downloading dashboard analytics in CSV vs. JSON”.. no one likes doing that kind of feature work. Empower your users to do these kinds of things for themselves!

Steve Manuel, CEO at dylibso