neversaw.us
former Node.js TSC & NPM registry eng / systems eng (❤️ rust, bash, js, tf) / sometimes illustrator / pets cats; pronouns he/him
(@isntitvacant elsewhere)
91 posts
768 followers
298 following
Regular Contributor
Active Commenter
comment in response to
post
(this is to say, I agree with the goals — but I don’t know that wasm will act as a meaningful filter in service of those goals)
comment in response to
post
IMO, wasm is becoming the heavyweight, GC’d vm—or at least the substrate for those languages. (CM may also induce demand by making it easier to bundle up components with their own memories and cross-component copying.)
comment in response to
post
I find that I take more issue these days about the perceptions of capability & trustworthiness than I do the actual qualities of LLMs as a class of tool.
Like, I’ll reach for them now and again but I know they’re not gonna invalidate what Peter Naur wrote. But it feels like people expect them to?
comment in response to
post
ah, I see – it looks like a CORS issue that affects firefox specifically?
comment in response to
post
just confirmed it on the nodejs/node repo (look at src/node.cc)
I, uh, hope they roll that back because that's "look for a new code hosting platform immediately" behavior
comment in response to
post
Society isn’t in the habit of drawing a line connecting software engineering/product decisions to large-scale outcomes.
(The history is too fresh still, but I’d argue we’re living in our Tacoma Narrows incident after the pivot-to-video killed editorial media and we replaced it with algo feeds)
comment in response to
post
The flip side is that there’s stuff that doesn’t matter quite as much as the adoption: the transport story (jsonrpc over bidi streams) distracts a lot of folks coming in, as does some of the functionality (resources/prompts are underimplemented imo)
But big important parts are clicking, like authn.
comment in response to
post
I’m aware. Statefulness at that layer of the protocol is not necessarily 1:1 with the transport level. (See the HTTP transport. Mcp-session-id is ~a cookie, basically.)
Again, mcp’s transports aren’t the interesting part. It seems like you have the impression I am anti-SSE, when I’m saying “mu.”
comment in response to
post
I’m not saying they’re impossible or bad or anything— just an extra thing to navigate. Stateful things require extra care and feeding (and some awareness of statefulness at the cdn and ingress levels.)
I’m saying: it’s fine, really. The transport isn’t the thing driving the value anyway.
comment in response to
post
Long lived connections aren’t fun to support any way you slice it, and the newer http transport seems to acknowledge this. (Like, yeah, you *can* return SSE from the POST and GET calls, but… you don’t need to.)
The formalization of tool calling, resources, prompts & responses is the valuable bit.
comment in response to
post
Hm, having just had to implement a bunch of this for $dayjob, I wouldn’t say this article is being entirely, uh, fair. (It’s really focused on the transport— which can be swapped out, as we’ve seen.) The focus on oauth makes sense, as it’s the fastest path to interacting w/existing apis.
comment in response to
post
(but again, peter naur comes knocking on the door shortly after the code is generated.)
comment in response to
post
It excels at “first hour of the rails rumble/django dash” tasks— chewing through initial boilerplate. It doesn’t produce a program with any coherent theory and it really struggles to pick up existing theory.
(It’s also okay at taking RFC spec language and translating it into 1st draft code.)
comment in response to
post
The absolute best AI coding has done for me is to take an existing, stubbed-out file with comments along with a postgres schema, and produce a quick first draft set of handlers and tests (in Node and TS.)
In all cases, however, I spent significant time refactoring after the fact.
comment in response to
post
yes, and I would add: it's a feedback loop from your head to your arm to the medium and _back_ to your head through your senses – which presents a million little decisions, a million little mistakes, and a million ways to react to them and learn
if this loop doesn't exist, growth isn't possible
comment in response to
post
the video perfectly captured my reaction to watching the video
comment in response to
post
and ampersand is a ligature of et, so when you want to break out the fine china, throw a "&c" or "&al." in there (impress your friends! annoy your linters!)
comment in response to
post
The trick is to develop systems that allow for this continual rewriting– to have a jig where your team can move fast and develop a better understanding of the problem *without* breaking things.
comment in response to
post
That hurts. What if we don't do the thing that hurts?
One of the big lessons of illustration school is that you can't afford to be precious about your art– that each piece you produce is a set of lessons that you use to refine your practice.
comment in response to
post
You must always plan to rewrite programs. I don't know a better way to understand the details of the problem & solution.
The drift between problem statement and solution is the source of so much pain in programming. We layer on another level: adapting the last solution to the current problem.
comment in response to
post
I think that’s pretty accurate! It’s kind of a tunneling interface, in a sense— an interface that describes capabilities of a server that a client can use to call them
In MCP’s case there’s a flow that clients follow to discover tools/caps, then the client can use that info to build subsequent reqs
comment in response to
post
(I work on mcp.run w/ @nilslice.bsky.social and co; we take the mcp interface and “lower” it to wasm to safely run mcp servers locally & remotely.
we’ve gotten a lot of mileage out of mapping the MCP interface through wasm plugins to well-defined REST apis!)
comment in response to
post
mcp standardizes patterns for advertising tools to llms for use & for the llms to call into those tools. (or, put another way, it’s a specific application interface on top of jsonrpc encoding)
comment in response to
post
It strikes me that, once you support the Wasm GC extensions, you end up wanting to build a type registry (or canonicalizer, as v8 calls it).
Both for cheap type comparison and because the GC types themselves become a garbage-collectable type (potentially holding cycles.)
comment in response to
post
These collections map module-local type indices to vm-global type indices.
So if you're using a wasm instruction like "call_indirect" or "table.set", instead of structurally comparing the type, you can map down the two module-local type ids to the vm shared type index and do an integer comparison.
comment in response to
post
Specifically, it holds type information for GC types – which can be internal, user-defined structured and arrays in addition to function types. (See wasmtime's RFC: github.com/bytecodealli...)
Modules hold "collections" (via code objs) which keep individual types in the type registry alive.
comment in response to
post
But one interesting bit is the concept of a Type registry (github.com/bytecodealli..., github.com/v8/v8/blob/m...)
Not all runtimes appear to support this!
At a very high level it holds canonical type information for every type encountered by the engine.
comment in response to
post
You can learn a surprising amount just aping the greats– so I've been rooting around in Wasmtime, V8, Wazero, WAMR, and WEdge.
So, what does a Wasm engine hold onto?
There are a couple of "well, duh, *something* has to own this" things – configuration, for example.
comment in response to
post
(I'm parroting your point back at you, but: this is to say that there's a surprising amount of joy to be had *just* in taking back control of what you're consuming.)
comment in response to
post
You've crystallized something I've struggled to put a name to –thank you!
Anecdotally: I'm lucky enough to live near a thriving movie rental place. When I started going there, the experience of physically picking something was a shock– it restored an interest in movies I didn't know I had lost.
comment in response to
post
Just watched Sen King's speech on the Senate floor - thank you for that! Every American should hear this.
#CourageIsContagious
youtu.be/g2ptQFOi9Pg
comment in response to
post
I still remember showing a professor some work I was very proud of, noting how long I had stayed up inking fills of the piece.
He gave me a D and said “hm. I would have cut out black construction paper for the big fills instead”
useful advice! brutally delivered, but useful!
comment in response to
post
Whew, yes. I remember illustration critique as the harshest feedback delivered in the bluntest fashion. It softened later in the courses, thankfully.
(The bits from the (few!) linguistics courses I took– mostly intro level & Japanese– were interesting from a "how do languages evolve" perspective)
comment in response to
post
not-newbie question (apologies!), but: as someone with a background in linguistics, how do you think that discipline overlaps with programming?
comment in response to
post
and because you remembered your ear plugs – hey! you don't feel quite so bad the next day, actually
comment in response to
post
f
(also lmk if i can be of service. can you compile using the wasi-sdk buildroot?)