Live data from Hacker News

Reaching the Unix philosophy's logical extreme with WebAssembly

xeiaso.net

61–70 of 142 posts

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#61
post #58

Earlier quoted context omitted.

They talk pretty extensively about everything is a file? They even mention the "everything is a file" description of that concept

Yeah seems the GP didn't watch the video.

At some point I need to make a really misleading title for my talks or articles just to catch people like the GP that don't read the article or watch the talk and only comment based on what the title makes them assume it's about.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#62
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

Author of the talk here. When I am doing conference talks to help explain abstract concepts or ideas, I typically prefer to employ a strategy called surrealist satire. This basically helps people understand where something fits into the stack by demonstrating how something fits into the mold and then by doing another completely impractical thing with that surrealist solution. The goal of this is to help people hook something into a greater set of context (due to the assumptions I made about the audience, I had to explain a bit more about the topic than I would have otherwise at say a WebAssembly conference) so that they can figure out how things that seem unrelated are actually quite related.

In terms of performance numbers though, I have quite intentionally NOT included performance benchmarks in this talk because getting stable performance information is nontrivial. I plan to write something in the future about WebAssembly vs native code as a subprocess (the differences with windows may surprise you!), but that is not a thing for today.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#63

Earlier quoted context omitted.

Nothing like reinventing COM :)

“COM but you can actually implement it from the docs” is surprisingly compelling, honestly. There is just an absurd number of obscure corners in the original, from DCE RPC all the way to the highest levels (although those are not the only source of COM grief—IDispatch is an abomination; IStream is needlessly annoying; IMarshal is awful to use but at the same time I don’t think actually has a convincing equivalent els…

Ah, the pain of getting a DCOM connection working shudder

COM was pretty reliable. Yes, it was needlessly annoying and gave CS folk the screaming ab-dabs, but it worked and was predictable.

I can see COM-in-WASM being really useful. Especially if we can dynamically load components. And not only for browser coding.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#64
Reminds me of that time I wrote a StringToExecutableFile() function for running [e.g. a Rust binary] from C++, but that depended on several layers of build system horror to embed the executable file as a string, and it wasn't cross-platform.

Imagine a utility function that dumps an embedded string to an unlinked temporary file, sets the +x permission, and returns a /proc/self/fd/N filename so you can exec() a subprocess. It's somewhat difficult because of write^execute limitations in Linux.

Running WASM in process seems like a much saner idea.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#65
post #62
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

Author of the talk here. When I am doing conference talks to help explain abstract concepts or ideas, I typically prefer to employ a strategy called surrealist satire. This basically helps people understand where something fits into the stack by demonstrating how something fits into the mold and then by doing another completely impractical thing with that surrealist solution. The goal of this is to help people hook s…

> I typically prefer to employ a strategy called surrealist satire

Ah, gotchya.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#66
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

> Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? I don't want to be the guy who explains the joke, but sometimes Xe creates elaborate shitposts that aren't entirely shitposts but contain a very fun element to them rather than being for fully practical sake. Shitposting being an anagram for top insights after all. That's the l…

Roger that o7

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#67
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

The current reference (only?) implementation of jpeg-xl is a c++ library, which I do not entirely trust to run in process in my go web server, and yet I would like to process images. Conveniently, the build system for jpeg-xl seems to support building to wasm, so if I can jam that into my process, I'd be a lot happier.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#68
post #57
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

This looks more than a bit like the Inferno OS, created by some of the same folks who created Unix. WASM allows to distribute cross-platform binary code written in memory-safe Rust, running on pretty compact VM. Think about a plugin architecture that could be built on top of that.

Java (like mentioned in the article) does the same though

IIRC Inferno OS is like Java in this regard.

How will WASM change what Java has already done?

Why would I compile Rust to WASM when I can compile Rust natively to any number of platforms? And use FFI?

I think WASM, while nice, doesn't bring much new to the table. It's been hyped for years, and I still only see it used here and there very sparingly.

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#69
post #56

Neat talk but like... doesn't it all seem convoluted? What is the function of a Rube Goldberg web service? To allow it be made of anything? The problem with using Rust in Go is that you entirely miss all the parts you don't use Rust; you get the VM overhead of WASM so it kills Rust perf; you most likely introduce problems at the boundaries of Rust/Go. Again it's a neat idea but why in all things sane would anyone int…

The current reference (only?) implementation of jpeg-xl is a c++ library, which I do not entirely trust to run in process in my go web server, and yet I would like to process images. Conveniently, the build system for jpeg-xl seems to support building to wasm, so if I can jam that into my process, I'd be a lot happier.

Ah, now THAT's an interesting aspect I wish someone would have brought up over the years I've seen WASM.

I guess WASM as a target and embeddable VM really helps with security in those cases. Couldn't we also do the same though with any number of arch/vm pairings?

I guess what WASM brings to the table is a compile target friendly enough for things like C and C++, i.e. low level code, and a reasonable VM implementation. It just has to be accepted by everything (both as an output format, and virtual machine impl in the language choice) to work, I think...

Edit: Like why arent we using https://stackoverflow.com/questions/4221605/compiling-c-for-...

Re: Reaching the Unix philosophy's logical extreme with WebAssembly

#70
post #58

Earlier quoted context omitted.

They talk pretty extensively about everything is a file? They even mention the "everything is a file" description of that concept

Yeah seems the GP didn't watch the video.

I did not watch the video. I assumed the blog post was a transcription since it contains parentheticals like "(audience laughs)".

My takeaway from the transcript was that the author was chaining together webassembly programs like a pipeline in a Unix shell. Is the video about something else entirely?

Post reply on HN