 You are at Fipi's Field Guide to Web Assembly. I'm Matt Butcher. I'm the CEO of Fermion Technologies. I thought I'd kick it off with a little camping story. I live in Colorado, went camping. As one does, I had the makings for s'mores. When I went to bed, I accidentally left a box on the table that box had marshmallows in it. About three, four in the morning, I heard something rustling outside, I unzipped the tent and poked my head out and there was a very large bear eating my marshmallows. Hey everyone, I'm Karen. I also work with Matt at Fermion and I'm the head of our community there. And my random camping story is I once took my sourdough starter. It's name is Bert, camping with me. You should try this, because the idea is that you should bring your starter somewhere where it can pick up local microbes and influence the taste of your bread. So, and you're probably wondering why we're sharing a random camping story with you all. So today's story is a story in which Fippy goes on a camping adventure with her friends, with Zee and a new character that we're gonna introduce. But before we get started, I kind of wanted to just give some context around who or what Fippy is in case you don't know. So, this is a whole children's series book thing that we've been doing. This is actually our fourth book. But the first book started with the Illustrated Children's Guide to Kubernetes. So, this actually came out, I think, around early 2016 and the origin story is Matt had a presentation for us at our team offsite. This was super early, this was fall of 2015 and we were all supposed to learn about Kubernetes from Matt. And so, he went through this exercise of really simplifying Kubernetes for us in a way such that it would be as if he was explaining it to his daughter. So, that's kind of where the children's guide party came from. So, we took that and illustrated it into this little book that we passed out to try and get people to learn about Kubernetes. So, still super early on in the space. And so, then we came out with Fippy goes to the zoo. So, this was 2017, CNCF had an approach just about donating Fippy and friends to the CNCF. So, that's what we did in celebration of the donation. We did a second book and it's an expansion of the previous book and explains more terminology, kind of updated terms, things like that. We introduced the, which is the zebra character that was new then. And we used the zoo analogy to kind of capture the idea that there were so many concepts in Kubernetes and the variety there. Yeah. Then in 2019, we did a third book with Locky, Evan said, Locky works at Microsoft. He was one of our colleagues when we used to work there. And at the time, security was super, it was a very hot topic at the time, especially with regards to the secure supply chain. So, we did this new book that was a spy theme story using the previous characters dressed up as spies on a secret mission. Yeah, it's super huge, check it out. Yeah, so that was the third one we did. And so, like I said, we donated this to CNCF. So, if you've been around the conference, you've probably seen a bunch of little animal characters. If you were at the party last night, there was a bunch of blow-up dolls that were shaped like them. So, that's kind of where this all came from. We donated the characters and released it under Creative Commons. So, actually, anyone is welcome to use the characters as long as you credit CNCF. And so, there have been other books done by other community members that are focused on Prometheus. There's a pirate adventure storybook, one on recovery, a cloud-native transformation one. And if you go to fitby.io, that's kind of where everything lives, and we'll be sharing our book on there next week as well. And yeah, so for us, we work at a company that's focused on wealth assembly. So, it's kind of a new hot topic for us and for the community. So, we figured we could do some demystification on the topic. So, we decided to write the new book, Vivi's Field Guide to Wossom. So, we're gonna start the reading now. Hearing a knock, Zee swings open the door and shouts, ah, Fitby, Blossom the Wossom possum is here. With an excited grin, Blossom asks if everyone's ready for the big camping trip. As they get ready to load their camping gear, Blossom takes on the task of packing everything efficiently into the trailer. Zee tries to pack a lamp, but Blossom explains, let's not bring things that we can't use. The trailer should only contain things that we need. WebAssembly, or Wossom, is a binary format for applications. Like how Blossom's trailer holds all kinds of supplies, a WebAssembly binary can contain any kind of program. Driving up the winding switchback mountain roads, Fitby notices something familiar. Look at all the cars, they're so different but all the trailers are the same. Blossom nods and responds, indeed, this trailer is standardized, any car can tow it. A trailer hitch can be attached to lots of different cars. Similarly, WebAssembly can run on many operating systems including Windows, Linux, and macOS, as well as many different systems architectures such as Intel or ARM. Noticing Fitby and Zee's rather bare hooves, Blossom hands each of them a pair of hiking shoes. She explains, these will keep your feet dry, provide good traction, and give ankle support, so you're set for any environment. Zee passionately shouts, red, my favorite color. Wossom was originally designed for the browser. However, like a good set of hiking shoes, WebAssembly is versatile. It is not uncommon to find WebAssembly in serverless, plugins, embedded, and cloud environments. Struggling to set up their luxurious family-sized tent, Fitby grumbles, oh, why is this taking so long? Blossom reacts with a chuckle and tells Fitby, you don't actually need a big tent. A small one is faster to set up and can be perfectly sufficient. Like Blossom's tent, WebAssembly is fast to get going. While containers may take seconds to start, a WebAssembly binary can take under a millisecond. WebAssembly's low resource usage makes these binaries lighter and more portable as well. During dinner prep, Zee notices Blossom gathering rocks into a circle and is unsure what's going on. As she starts ravaging the firewood, Blossom explains, I'm building a fire pit. Fires can be dangerous and need to be contained. Only you can prevent forest fires. Wossom's security sandbox isolates code from the host and from other WebAssembly binaries. So like a fire pit, even if something bad happens inside, the danger doesn't escape. As the trio settles in to eat, Zee drops her knife in size. Looking just as overwhelmed herself, Fitby asks Blossom, how do you deal with having to hold so many things at once? Hanging from our branch, Blossom casually responds with, well, I've got everything I need in this multi-tool. The WebAssembly runtime can execute many different languages such as Rust, Go, JavaScript, C, and Python. Like a multi-tool, it's highly versatile. After dinner, Zee's craving dessert and notices a chocolate bar on the log. Seeing the longing in Zee's eyes, Blossom offers us more. Would you like to build your own? You take our roasted marshmallow and sandwich it between chocolate and graham crackers. It's so much better if you take three things you like and make them into one thing you love. The WebAssembly component model allows Blossom binaries to communicate with each other. For example, you can use a Python library from JavaScript. Like a s'more, you can compose an application from different kinds of components. As the evening falls, some familiar friends from the campsite up the trail arrive with a guitar. Captain Cube looks on eagerly and asks, care to join us for a campfire sing-along? Zee enthusiastically jumps up and requests, can we do everything is Blossom? Yeah, yeah, that's, that deserved a grown right there. Serverless WebAssembly functions are blazingly fast, but they're not designed to replace virtual machines or containers. Rather, the three together provide a breadth of functionality for creating cloud services. Tired from their adventures throughout the day, they settle into their respective tents for the night. Zee tries to doze off, but all she can think to herself is, how can someone so small snore so loudly? The end. So you notice we've got three different kinds of tents there, the white ones, the light blue ones, and the purple ones. And that was to sort of represent these kind of three different classes of cloud computing. So if we were to look at sort of like a quick brief overview of the advances of cloud computing, you know, we can all, many of us can remember like the pre-cloud environment where there's a one-to-one relationship between the piece of hardware you were using and the operating system. It was just you had one operating system per piece of hardware. And the virtual machine sort of revolution changed this because suddenly we could run multiple copies of different operating systems on the same piece of hardware. And that is ultimately the change that led to the rise of cloud computing. And a virtual machine really packages up the entire operating system from the kernel and the drivers all the way up through the low-level operating system libraries and so on and all the way up to the application that you supply and run in it. Now, virtual machines are sort of like the powerhouse of the cloud. But I as a developer and probably many of you as developers do not enjoy building virtual machine images because there's just too much stuff that you have to manage in one package. So when containers came along, they were lighter and they started up faster. But the real benefit of them was that they were much easier to take your application and encapsulate it not in an entire operating system but in sort of like a pie slice of the operating system. You just the file system you needed, the utilities you needed and your application code. So we had sort of the heavy weight virtual machine runtime and we added to that this sort of middleweight container ecosystem. But some kinds of things don't need to run for months or even years like a virtual machine or for hours, days, weeks like a container does, but they need to start up, run to completion and shut down very fast. We can think of things like Lambda functions, a lot of event-driven programming is done this way. As we looked at it, we said there's not really a cloud runtime that's specialized for that kind of environment. So one of the things we at Fermion did was try and find, is there a third kind of cloud computing that'll sit alongside virtual machines and containers? And that's where we started looking at WebAssembly. It starts up in sub one millisecond, you're really just packaging the application and you can ship a very small binary. So WebAssembly was originally created for the web browser. And many of the virtues for that came out of that web browser environment end up being just perfect for the cloud, right? You need a secure sandboxing layer in the browser because we all know we visit lots of websites and we definitely don't audit the JavaScript. If we're gonna have a binary format that runs in the browser, we want it to be very securely sandboxed and cordoned off from the rest of the browser as well as of course your operating system. That particular sandboxing layer is the foundation of basically all kinds of cloud computing, right? Virtual machines offer very good, strong sandboxing of an entire operating system. Containers, same thing for a file system. WebAssembly is the same thing, but just for an application binary. But there are other things that add on. As we saw with Blossom story here, cross-platform, cross-architecture is a feature of browsers, right? Same web page should be able to load on lots of different operating systems and have no difference of behavior if it's running on ARM, say, or Intel or something like that. So that kind of thing is great for the cloud as well because you, as a developer, can build something on Windows and on an Intel machine and deploy out to Linux on an ARM machine or build it on Mac and not have to know anything about the details. And then of course we've got this fast startup time. Humans are impatient. We don't like to wait for web pages to load and so when WebAssembly was designed for the browser it was designed to start very quickly. Now again, if we're doing this kind of function-driven or event-driven development we want the application to startup, run to completion, shut down as fast as possible. We want those bytes delivered to the user as fast as possible. And then ideally with WebAssembly we want every programming language to be supported because it's a compile target. So we wanna be able to take Python code and Ruby code and Java code and all of these things and compile them to a common binary format. So we at Fermion developed an open-source tool called Spin. We released Spin 2.0 on Friday at 5.30, right before KubeCon as one does when you're rushing for conference-driven development. But Spin is a WebAssembly development environment where you can build inside of VS Code or whatever your ID of choice is, build an application, compile it to WebAssembly, run it and test it locally and you can use a wide variety of languages. It also comes with a number of built-in features including key value storage, SQL database. Now we added serverless AI, secure config storage and SDKs for a number of languages such as Rust and Python and JavaScript and Go. So where can you run a WebAssembly application? Where can you run a Spin application? Well, you can do it in Spin itself. I can run it locally, you can deploy Spin somewhere and run it there. We built Fermion Cloud, which is an easy place for developers to deploy their code and instantly have a domain and be able to share it with your friends or host your websites or host your web applications. It's backed by Nomad, which is HashiCorp's scheduler. So of course we have Fermion platform, which will run in a Nomad and HashiCorp environment. On Monday, we released support for OpenShift. OpenShift is a variety of Kubernetes. We also have support in AKS, support in Civo Cloud and now I think at this point, we basically have all of the Kubernetes distributions set. So you should be able to run Spin applications and then there's a project called KWASM, K-W-A-S-M that is an excellent way to install this into the Kubernetes cluster of your choice. Docker desktop support Spin application, so you can run them there. And then at this conference, F5 Engine X announced that they too will support Spin applications inside of Engine X unit so you can stop by the F5 booth and I'm sure they'll be happy to tell you all about that. I thought I'd just show you how concise this kind of code can be when you're writing a serverless function. This is JavaScript, actually this is TypeScript code. So we import a couple of libraries. This one is actually doing an AI inference and it is based on the Monty Python Silly Walk demo. So I asked the LLM as a Monty Python character explain how to walk and you can run this little, what is it, about 12 lines of code. And what you do is when you do a Spin build, it'll take this TypeScript, it'll load in a JavaScript interpreter, it'll start the JavaScript interpreter, load in the script and then freeze all of that into a WebAssembly binary. So you have a single binary that has all your JavaScript code sort of preloaded inside of an interpreter and then when you execute it, it'll execute this code which we'll call out to Lama2, the large language model, and run the as a Monty Python character, tell me how to walk thing and you'll get back some kind of silly response. So that's just a good example of what this kind of serverless function looks like. I'm gonna skip this one. I'm running a little bit pine. I'm running a little bit pine. This is just kind of a quick diagram of all the different languages. So WebAssembly, if a technology like WebAssembly is going to take off, the one absolutely critical thing is that a breadth of different languages have to be able to support WebAssembly. And so I've been tracking, according to the Red Monk top 20 languages, how many of those languages have been moving toward WebAssembly. And at this point, about 17 of the 20 have at least begun an implementation of WebAssembly. Many of them already have released beta or production grade WebAssembly implementations. So for example, you can take a Rust program, you can compile it to WebAssembly. Python, Ruby, WebAssembly, JavaScript, TypeScript, WebAssembly, C-Sharp and the .NET ecosystem, they've been making great strides and so there are languages like that. Now on top of just being able to compile something to WebAssembly, it's nice to have some supporting features like LLMs or SQL databases or key value storage. So we wrote a spin SDK for some languages and we're adding more languages all the time but these give you kind of a lower level set of features. So Rust, JavaScript, TypeScript, Go and Python all have SDKs and got others like Swift in the works. Then finally, what I think is the most interesting thing that's happening in the WebAssembly ecosystem and as you know, you saw this a little bit in the book, you got some hints of this in the book with the S'mores example. The component model is this idea that we should be able to use WebAssembly binaries as if they were libraries. So from my JavaScript code, I can import the functions exported by another WebAssembly binary and I can use them just like that binary with JavaScript code. And likewise I can do it from Python. Now the interesting thing about this and really any of these WebAssembly component languages, but the interesting thing about this is that it creates sort of an environment for polyglot programming. So it doesn't matter to me anymore what the upstream language was that my component was created in. I can just import it and use it as if it were written in the language of my choice. So for example, Rust tends to be a good language to write some low level high performance code. So I might write a core piece or use somebody else's core piece that was written in Rust. And then Python tends to have a very good big data and AI set of libraries. So I can use that code and compile that into a component. And then I can write TypeScript which happens to be my favorite language and import both of those and use them as if the whole thing was written in TypeScript. It adds a lot of security on there as well. So it's a very exciting development and when we've released spin 2.0 we've released it in sort of conjunction with the standards that are happening in the component model space and you can try this out today. All right, so I'm going to share a little bit more about the WebAssembly ecosystem. So there are a few different community spaces. First is the W3C that stands or the World Wide Web Consortium which is also known as the W3C. And they handle standards for browsers and the web and so WebAssembly is one of their standards. Next we have the by code alliance or often abbreviated as BA. They handle working groups and reference implementations for Wasm beyond the browser. And then obviously they're CNCF which hosts conferences and projects for WebAssembly and cloud native technologies. So if some of you were here on Monday there was the cloud native Wasm Day event. And also earlier this year in September they started doing WasmCon which is a Wasm specific conference that is kind of its own conference not attached to KubeCon. And I believe they're going to start doing those yearly. And Matt mentioned some of these companies already but I just kind of wanted to share a non comprehensive list of other cloud native companies investing in WebAssembly. So like we said, Microsoft, Red Hat, IngenX, Fastly, VMware, Docker and many, many more. And yeah, there are lots of other WebAssembly startups here at this conference. So if you want to get started with WebAssembly and you want to try out Spin we have a QR code that will take you to the Spin quick start. We also have a Discord if you want to stay connected with us. A lot of our engineers are there always ready to help answer questions. So you can find us on fermion.com slash discord. Okay, making, all right. I see some people taking pictures. I'm going to wait a second. I can tell you. Oh, and that's a good time to pause and say. So we also brought some themed mugs and stickers and stuff like that from the books. We didn't necessarily want to give you all heavy and cumbersome things to take with you if you don't want them. But if you would like some they will be right up there in the front and after the presentation you can grab a mugs and stickers, a little field journal all to go with your book. Cool, and on that note we will be doing a book signing. If you'd like to come by you can also come by and just say hi. But the two of us will be at the fermion booth tomorrow morning at 1030. So after the morning keynotes and we'll be signing from 1030 to 11. We are at booth K10. Just look for the sign above that says aisle L to K and we're right under it. And then if you'd like to just read the book online there is a link to where it is. It's just fermion.com slash fibby. All right, that is it. Thanks everyone.