cljs-dev

Dustin Getz (Hyperfiddle) 2023-08-01T20:34:20.875589Z

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.

πŸ‘€ 1
Dustin Getz (Hyperfiddle) 2023-08-02T10:31:13.326659Z

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

p-himik 2023-08-02T11:03:31.100159Z

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?

nivekuil 2023-08-02T11:59:49.242989Z

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

phronmophobic 2023-08-01T21:18:31.929219Z

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-himik 2023-08-01T21:25:09.414179Z

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

πŸ’₯ 2
πŸ˜† 1
phronmophobic 2023-08-01T21:25:31.521599Z

πŸ’₯ all done

phronmophobic 2023-08-01T21:26:06.666199Z

Even faster than /dev/null!

p-himik 2023-08-01T21:26:48.464519Z

Putting an old spin on "execution".

2023-08-02T04:53:59.519229Z

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.

2023-08-02T04:57:22.376319Z

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

2023-08-02T04:59:04.411549Z

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

phronmophobic 2023-08-02T04:59:21.952349Z

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

2023-08-02T05:00:56.164659Z

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

phronmophobic 2023-08-02T05:02:35.677349Z

> 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).

2023-08-02T05:03:18.806089Z

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 ?

2023-08-02T05:05:19.251359Z

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.

phronmophobic 2023-08-02T05:06:25.468429Z

You would have to somehow contend with the https://en.wikipedia.org/wiki/Two_Generals'_Problem or figure out how to have https://bravenewgeek.com/you-cannot-have-exactly-once-delivery/.

phronmophobic 2023-08-02T05:07:10.029029Z

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

2023-08-02T05:08:59.824179Z

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.

2023-08-02T05:09:38.246049Z

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

phronmophobic 2023-08-02T05:11:37.583949Z

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.

phronmophobic 2023-08-02T05:12:44.172359Z

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

2023-08-02T05:13:08.137379Z

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

2023-08-02T05:13:35.086379Z

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

phronmophobic 2023-08-02T05:15:35.631639Z

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

phronmophobic 2023-08-02T05:19:56.871039Z

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

2023-08-02T05:20:17.197429Z

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

phronmophobic 2023-08-02T05:20:51.463119Z

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

phronmophobic 2023-08-02T05:24:01.146769Z

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."

2023-08-02T05:25:20.467569Z

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.

phronmophobic 2023-08-02T05:26:01.710549Z

Fair enough.

2023-08-02T05:28:53.095119Z

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