34:56 - your comment in the sidebar about NEVER running curl | bash just earned you a subscription. I HATE that that's so common these days!!! (Interesting video overall, too. A bit off target for what I was hoping to learn today, but super interesting!)
Huh, I was already fairly pleased with being able to run egui rust apps in the browser (I'm not really a web guy and still don't really know any js or html), but using it as a sort of intermediate language for plugins really blew my mind. I guess next is running a wasm runtime in wasm so that you can have multilanguage plugins in your wasm app, all client side.
@@nitsanbh and java byte code can be compiled into wasm. It truly is the compile once run everywhere. We are just counting on a good posix compliant runtime so we can use the standard library
WASMCLOUD got me interested in this idea of a k8s replacement or something like BEAMVM with any lang, then i realized it was NATS doing the heavy lifting with a 'wasm module' wrapper.
Thank you genuinely for making this video! I did a small amount of research into WASM and decided AGAINST pursuing it further due to my own misconceptions. Thank you for making this video. You've completely changed my mind about WASM. You probably literally changed my life by making this video. Thanks so much!
I literally just learned about Nginx and what it does - and now I'm here, somehow (thanks algorithm). This is all very intimidating. How does a person ever understand enough to build this stuff in the first place? Great video. Very impressive presentation. Thanks!
Thank you for the feedback! Nginx is an amazing piece of technology. Have you also checked openresty? Back in the day I've built a file sharing service with expiring download links using just openresty and lua. It was fun and performed really well.
by learning how to think and learn every single time there is either or both: a new attempt to get familiar with new theory, either in breadth or depth( 🤔 ) or *whilst in some fuge state drenched delusions of simplicity*, we experiment with, or attempt to, put theory into practice under new rules, conditions, or some other imaginary construct that makes what we are calling trying the out be unique or not-unique to what we understand our prior experience to be, in whole or in its parts, even if it absolutely is or is not or otherwise that's how. good luck!
same, mindblowing actually, just got my remote setup with zellij ready and this just opened way broader picture of what could be possible. thanks to author.
Absolutely superb content, well researched and very much appreciated. Haven't come across your channel before - needless to say, a very happy new subscriber. Thank you for the hype-less succinct and quality content and detailed explanations with examples.
I did not know I needed this. Then this 1hr novel made me check twice if I'm subsribed. Thx brother, a mountain of respect and kudos to you for your work.
I stable across your video at 2 am and here am I at the end of it: I learned so much with you and I will test some stuff out! You have my deepest gratitude and appreciate to all the resources and research you made! I'm subscribing and liked your video! Hope other people find your work! Amazing! Keep going!
They are working on a WASM GC. It's still young and unripe. It will be distilled once WASM APIs become the norm. And I'm pretty certain it will take over IOT, then mandatory HW vendor based dev env will only be relevant to implement the WASI standards.
Hello @The Art Of the Termina i like your video :), I am writing my Masters thesis about WebAssembly and have a question. (Minute 16:02 & 26:25) I developed a infrastucture that distributes webassembly to IOT devices. My IOT devices execute webbrowsers to execute webassembly, can you please explain why a wasm runtime (Wasm 3) is superior to a browser here? Edit: My goal is to do client-side/edege computing with WebAssembly
Thank you @philippzimmermann2546. Well, if your wasm application doesn't need a graphical interface, then you don't need a browser and in such a case wasm3 would be a better choice. Simply because without a browser there will be less overhead in terms of disk space and RAM. I also think that the deployment process of your app could become simpler without a browser.
@@TheArtOfTheTerminal Thank you very much for your response. I will give it a try. Did I understand correctly that using a wasm runtime instead of a browser could imporove performance at the edge?
@@philippzimmermann2546 Well, there IS a wasm runtime in a browser. But there's also a lot of other stuff that you probably don't need. So giving a try to a standalone wasm runtime makes sense.
you are writing a master thesis, yet you think this is not obvious? Have you used an IoT device before? Don't you know that they are usually really cheap and won't be able to run a whole ass browser? Have you never opened a resource monitor on your computer to see the memory hog named chrome/Firefox?
after watching the video I don't think Flash was killed because of security. I feel it was killed cause it wasn't able to be used in business settings. It was made as a tool for making cool things like games and animations. It was never made for the purpose that Adobe wanted to make it be. Creativity is being locked behind paywalls. This is similar to why Skype was killed it wasn't made for the purpose that Microsoft wanted it put it to. It was a quirky, fun messaging application.
Well, yes, I do agree there were other contributing factors like, say, HTML5 advancements. And of course, the financial dept at Adobe didn't see flash performing well. But I think that the bad rep caused by security issues hyperaccelerated all of that and eventually put this tech to sleep.
A capability is an unforgeable reference that can be used to access a resource. Unforgeable in the sense that the only way to get one is to be given a reference (here, via the configuration). Capability systems have easy to audit security properties - we've been using them in high assurance environments for nearly 60 years.
By "irreducible CFG." I gather you mean that web assembly does not allow creation of the kind of spaghetti code one can make with GOTO. On the face of it that sounds like a good idea and I'm sure the creators have good reasons for not allowing that. Please explain how this makes web assembly a "fancy toy"?
@Heater-v1.0.0 take a few small methods - nice, perfectly procedural CFG. They call each other. Oopsie, once you consider the global control flow it is already likely not procedural. Then try to inline the methods. You get irreducible CFG. And your high level compiler may have a lot more information on what to inline, so you cannot defer it to the webassembly engine to do it in the last moment. Second example - any sufficiently complex FSM is irreducible. Any bytecode engine. Any parser or even a regular expression. Want to implement them efficiently? You won't, unless your underlying engine supports irreducible control flow, or, even better, computed goto. Want a threaded code VM? No chance without a computed goto (i.e., indirect jumps).
I think I could have understood you, if you didn't speak in alien. Also, to express certain things you might need to write a blog post or a book, instead of a comment.
@nandoflorestan huh? Graph reducibility is a concept everyone must know from an introductory course on compilers. To explain it simpler: WebAssembly is limited to the constraints of procedural programming, and does not allow any control flow that cannot be expressed as a combination of if-then, for, while, do and such.
@@vitalyl1327 Everyone must know? Don't forget that 99.999% of all humans and precious few software engineers have taken an introductory course on compilers. You are right WebAssembly retracts itself to those structured blocks. Back in the day we called it "structured programming" rather than "procedural programming" but never mind. I suspect that this that designed WebAssembly have indeed taken introductory courses on compilers or otherwise know what they are doing. Seems to me likely that such restrictions are there on purpose so as to satisfy security considerations in the browser and other sandboxes. Far from being a "fancy toy".
Underrated presentation.
This is almost a few months of intense learning and a few years of passive reading and assimilation condensed into an hour. Thank you, I take a bow. 🙏
Seeing comments like yours really make all the efforts and the suffering (writer's blocks, self-doubt etc.) worth it. Thank you!
34:56 - your comment in the sidebar about NEVER running curl | bash just earned you a subscription. I HATE that that's so common these days!!!
(Interesting video overall, too. A bit off target for what I was hoping to learn today, but super interesting!)
Thank you for the feedback! Yeah, basic shell hygiene somehow got out of fashion lately.
Huh, I was already fairly pleased with being able to run egui rust apps in the browser (I'm not really a web guy and still don't really know any js or html), but using it as a sort of intermediate language for plugins really blew my mind. I guess next is running a wasm runtime in wasm so that you can have multilanguage plugins in your wasm app, all client side.
Wasm in a wasm runtime will definitely happen at some point.
to summarize, WebAssembly for server-side is basically a JVM for C/C++/Rust
In part, yes.
@@nitsanbh and java byte code can be compiled into wasm. It truly is the compile once run everywhere. We are just counting on a good posix compliant runtime so we can use the standard library
WASMCLOUD got me interested in this idea of a k8s replacement or something like BEAMVM with any lang, then i realized it was NATS doing the heavy lifting with a 'wasm module' wrapper.
Yes, it seems a lot of the "magic" in wasmcloud is done with NATS.
NATS is awesome
Thank you genuinely for making this video! I did a small amount of research into WASM and decided AGAINST pursuing it further due to my own misconceptions. Thank you for making this video. You've completely changed my mind about WASM. You probably literally changed my life by making this video. Thanks so much!
Thank you for the feedback! :)
I literally just learned about Nginx and what it does - and now I'm here, somehow (thanks algorithm).
This is all very intimidating. How does a person ever understand enough to build this stuff in the first place?
Great video. Very impressive presentation. Thanks!
Thank you for the feedback!
Nginx is an amazing piece of technology. Have you also checked openresty? Back in the day I've built a file sharing service with expiring download links using just openresty and lua. It was fun and performed really well.
by learning how to think and learn every single time there is either or both:
a new attempt to get familiar with new theory, either in breadth or depth( 🤔 )
or
*whilst in some fuge state drenched delusions of simplicity*, we experiment with, or attempt to, put theory into practice under new rules, conditions, or some other imaginary construct that makes what we are calling trying the out be unique or not-unique to what we understand our prior experience to be, in whole or in its parts, even if it absolutely is or is not or otherwise
that's how. good luck!
Subbed for this HIGH QUALITY CONTENT thank you!
Thank you :)
same, mindblowing actually, just got my remote setup with zellij ready and this just opened way broader picture of what could be possible. thanks to author.
Absolutely superb content, well researched and very much appreciated. Haven't come across your channel before - needless to say, a very happy new subscriber. Thank you for the hype-less succinct and quality content and detailed explanations with examples.
Thank you so much for the feedback!
Great video. I cannot wait for wasm ecosystem to mature.
I did not know I needed this. Then this 1hr novel made me check twice if I'm subsribed.
Thx brother, a mountain of respect and kudos to you for your work.
Thank you so much for your feedback :)
I stable across your video at 2 am and here am I at the end of it: I learned so much with you and I will test some stuff out! You have my deepest gratitude and appreciate to all the resources and research you made! I'm subscribing and liked your video! Hope other people find your work! Amazing! Keep going!
Thank you so much for the feedback! :)
This is the most concise, detailed and deep explanation of WebAssembly that I ever heard!
Thank you so much for the feedback! Glad you liked it :)
They are working on a WASM GC.
It's still young and unripe.
It will be distilled once WASM APIs become the norm.
And I'm pretty certain it will take over IOT, then mandatory HW vendor based dev env will only be relevant to implement the WASI standards.
Yeah, WASM GC will be a mega feature!
We all thought JS was gone. Plot twist: Webassembly is just a trojan horse for JS taking over servers once and for all
Haha, looks like it.
Who thought js was gone?
Why don't we use LLVM for this, I know LLVM is used to compile to machine code but we can still make a runtime for LLVM byte code
Good question for which I don't have an answer :).
41:52 Idioms mixed:
"Right off the bat."
"Right out of the box."
Yes, you're right, thanks for noticing!
Excellent explanation!
Whars the background music?
All music is AI-generated.
Read up on wasm gc. It's a newer extension only barely supported, but it will allow gc'd languages to use the host runtime's garbage collector.
It isn't really a virtual CPU or a virtual machine, as the JVM has described it... it is machine code for a virtual CPU architecture.
You can put it that way too, yes.
Hello @The Art Of the Termina i like your video :),
I am writing my Masters thesis about WebAssembly and have a question. (Minute 16:02 & 26:25)
I developed a infrastucture that distributes webassembly to IOT devices. My IOT devices execute webbrowsers to execute webassembly, can you please explain why a wasm runtime (Wasm 3) is superior to a browser here?
Edit: My goal is to do client-side/edege computing with WebAssembly
Thank you @philippzimmermann2546.
Well, if your wasm application doesn't need a graphical interface, then you don't need a browser and in such a case wasm3 would be a better choice. Simply because without a browser there will be less overhead in terms of disk space and RAM. I also think that the deployment process of your app could become simpler without a browser.
@@TheArtOfTheTerminal Thank you very much for your response. I will give it a try.
Did I understand correctly that using a wasm runtime instead of a browser could imporove performance at the edge?
@@philippzimmermann2546 Well, there IS a wasm runtime in a browser. But there's also a lot of other stuff that you probably don't need. So giving a try to a standalone wasm runtime makes sense.
you are writing a master thesis, yet you think this is not obvious?
Have you used an IoT device before?
Don't you know that they are usually really cheap and won't be able to run a whole ass browser?
Have you never opened a resource monitor on your computer to see the memory hog named chrome/Firefox?
Think a big truck, and it's engine,
This video is packed with info. 👍🏻
Needs to be a webassembly os
zellij is written in rust and supports webassembly plugins, wonder if it could act more like os than multiplexer?
Really great video appreciate your efforts to explore and show case the use cases.🎉
Thank you for the feedback!
Great video. Very thorough and educative. Thank you.
Thank you for the feedback!
tell me please, what font do you use
Terminal font is space mono.
after watching the video I don't think Flash was killed because of security. I feel it was killed cause it wasn't able to be used in business settings. It was made as a tool for making cool things like games and animations. It was never made for the purpose that Adobe wanted to make it be. Creativity is being locked behind paywalls.
This is similar to why Skype was killed it wasn't made for the purpose that Microsoft wanted it put it to. It was a quirky, fun messaging application.
Well, yes, I do agree there were other contributing factors like, say, HTML5 advancements. And of course, the financial dept at Adobe didn't see flash performing well. But I think that the bad rep caused by security issues hyperaccelerated all of that and eventually put this tech to sleep.
nice recommendation, subscribed to the channel. great content!
Thanks for the feedback!
font pls
Terminal font is space mono.
Fantastic video!
Glad you liked it. Thank you for the feedback!
This needs to go viral. What a good presentation.
Liked, subscribed and saved the video to my favorites.
A capability is an unforgeable reference that can be used to access a resource. Unforgeable in the sense that the only way to get one is to be given a reference (here, via the configuration). Capability systems have easy to audit security properties - we've been using them in high assurance environments for nearly 60 years.
Yes, good ideas never disappear, they resurface in their new "incarnations".
If you are confused, SMGS is asm.js
Right :)
еще одно легендарное видео
Спасибо :)
Excellent video
Thank you
i'll take anything that "replace" containers/K8S, but what kind of idiot think that wasm would ? wasm ain't bad though, it's just another VM.
probably the same idiots who thought that docker was a good idea ... (well, wasm is a good idea)
There is one fatal flaw in webassembly - it does not allow irreducible CFG. This alone renders it just a fancy toy.
By "irreducible CFG." I gather you mean that web assembly does not allow creation of the kind of spaghetti code one can make with GOTO. On the face of it that sounds like a good idea and I'm sure the creators have good reasons for not allowing that. Please explain how this makes web assembly a "fancy toy"?
@Heater-v1.0.0 take a few small methods - nice, perfectly procedural CFG. They call each other. Oopsie, once you consider the global control flow it is already likely not procedural. Then try to inline the methods. You get irreducible CFG. And your high level compiler may have a lot more information on what to inline, so you cannot defer it to the webassembly engine to do it in the last moment.
Second example - any sufficiently complex FSM is irreducible. Any bytecode engine. Any parser or even a regular expression. Want to implement them efficiently? You won't, unless your underlying engine supports irreducible control flow, or, even better, computed goto. Want a threaded code VM? No chance without a computed goto (i.e., indirect jumps).
I think I could have understood you, if you didn't speak in alien.
Also, to express certain things you might need to write a blog post or a book, instead of a comment.
@nandoflorestan huh? Graph reducibility is a concept everyone must know from an introductory course on compilers. To explain it simpler: WebAssembly is limited to the constraints of procedural programming, and does not allow any control flow that cannot be expressed as a combination of if-then, for, while, do and such.
@@vitalyl1327 Everyone must know? Don't forget that 99.999% of all humans and precious few software engineers have taken an introductory course on compilers. You are right WebAssembly retracts itself to those structured blocks. Back in the day we called it "structured programming" rather than "procedural programming" but never mind. I suspect that this that designed WebAssembly have indeed taken introductory courses on compilers or otherwise know what they are doing. Seems to me likely that such restrictions are there on purpose so as to satisfy security considerations in the browser and other sandboxes. Far from being a "fancy toy".
TLDR?
So it was exactly what i thought of it...clickbait title 😬
Maybe a bit :)