Fork me on GitHub
#cljs-dev
<
2023-08-01
>
Dustin Getz20:08:20

a reason to target wasm? https://www.golem.cloud/post/unveiling-golem-cloud > Golem Cloud provides a runtime for WebAssembly programs that, without introducing any proprietary extensions, frameworks, or SDKs, executes WebAssembly programs in a reactive, invincible, and immortal way, providing a powerful new foundation for cloud applications. > Combined with the WASI standard, WebAssembly provides a specification for a secure, capability-oriented virtual machine. A specification so constrained that it’s possible to provide new ways to execute WebAssembly programs.

πŸ‘€ 2
phronmophobic21:08:31

Afaik, unless their infrastructure is running in a part of the universe with different physical laws, they're claiming to provide guarantees that provably impossible. For example:

send_order_confirmation(user.email, fulfillment_order)?;
> The magic of Golem Cloud is that we can write simple, straightforward programs that clearly reflect underlying business logic, and they will run to completion, regardless of failure events. Emphasis mine. This is only possible if functions like send_order_confirmation are idempotent or inconsistencies are allowed. Based on their examples, this doesn't seem like the case. Their usage of marketing buzzwords rather than actual technical descriptions doesn't instill confidence either.

p-himik21:08:09

> will run to completion, regardless of failure events Can a crash be considered "running to completion"? :thinking_face: :D

πŸ’₯ 4
πŸ˜† 2
phronmophobic21:08:31

πŸ’₯ all done

phronmophobic21:08:06

Even faster than /dev/null!

p-himik21:08:48

Putting an old spin on "execution".

didibus04:08:59

They did say at the start: > execute them in a way that is resilient to hardware failures, upgrades, and updates So while it's not clear, pretty sure they scope failure to only hardware level failures.

didibus04:08:22

But, you know, while I'm skeptical, I think there's a good idea here somewhere. It seems to me, whenever they yield, what would say in Java cause a virtual thread to park, if they persisted all the related execution memory to some disk, and resumed it from disk when it resumed. And now, if you yield at every I/O, and Thread.sleep, and all that. Well, I think they claim that it means they can restart your app from like the last I/O and resume it

didibus04:08:04

Which explains there example. It seems if you sleep for 24 hours, they just "park" your worker, but they do so to disk.

phronmophobic04:08:21

PSA: If you want to read something worthwhile about "Making reliable distributed systems in the presence of software errors", read http://erlang.org/download/armstrong_thesis_2003.pdf

didibus05:08:56

Well, I was just thinking of Erlang. Because if Erlang persisted actor on disk, it could survive some level of hardware failure. And since Erlang even yield inside loops at some iteration count interval, it could resume from some iteration back

phronmophobic05:08:35

> So while it's not clear, pretty sure they scope failure to only hardware level failures. From a theoretical standpoint, it doesn't really matter what kind of failures (unless they're running programs in a magical data center without disk errors, network errors, hardware errors, software errors, power failures, clock skew, or any other type of failure).

didibus05:08:18

But ya, this would not cover application level failures. Though, to be honest, it maybe could? If they captured to disk the input from all IO, could they resume your code, where it could actually be new code that fixed some issue, and replay things from the last IO ?

didibus05:08:19

My guess is something like, they write to some RAID setup, obviously there could be a failure at that level. So ya, I don't deny they're exagerating when they say all hardware failures.

phronmophobic05:08:10

and that's just to make it even theoretically possible.

didibus05:08:59

Why? They're not claiming there's no system wide issues. Just that the single threaded worker will survive a hardware failure, OS update, hardware upgrade, etc.

didibus05:08:38

Which I can see being possible, if they parked the worker to some replicated disk on all I/O and yield points

phronmophobic05:08:37

ok, let's say there's an I/O call to send_email. the application initiates the network request and unfortunately, the server explodes. fortunately, the state was saved before the request was initiated and restarts. now, you've sent two emails.

phronmophobic05:08:44

maybe it's not a big deal to send duplicate emails, but it's the same problem for any non-idempotent action.

didibus05:08:08

Ya, but you don't get it better solving the same problem in application code

didibus05:08:35

So they're automating the best thing you can realistically achieve no?

phronmophobic05:08:35

not really. these aren't new ideas. I think the main reason this isn't normally done is there is a big efficiency cost.

phronmophobic05:08:56

There are solutions that can help in the space. In my experience, the solutions that are actually worthwhile don't use flashy marketing buzzwords.

didibus05:08:17

Ya, they've made no claim of performance or anything. So that's yet to be seen.

phronmophobic05:08:51

The marketing here sounds like a webscale database that will happily throw away your data that became popular not too long ago.

phronmophobic05:08:01

I feel like if you're solving hard problems, you can just say it without including stuff like "workers deployed to Golem Cloud are reactive, invincible, and immortal."

didibus05:08:20

I totally understand your skepticism here. And am also put off by marketing like that. But at least I saw an idea underneath that is interesting to explore. So I'll wait and see, maybe their marketing guy is just that kind of guy, and they have some other smart engineer.

didibus05:08:53

I would not rush to have a wasm target for cljs until they've got something to show though just cause of it πŸ˜‚

Dustin Getz10:08:13

this is from team behind Scala Zio functional effect system, deeply credible this is a top 5 software team in the world

p-himik11:08:31

That already makes it sound more than suspicious to me. I have worked with a "one of the most renown software development companies in the world" directly, it was abysmal. Mutual protection above all else, including their clients. > a top 5 software team in the world By which metrics?

nivekuil11:08:49

so golem is temporal but with some generated rpc stubs, only runs wasm and is proprietary? They mention temporal but then just describe stuff temporal already is capable of. Also I Ctrl f'd durable computing and they use it 6 times but never define it, just breathlessly fellate this idea.. google is trying to get me to buy some heavy laptops