Wasm.builders Meetup: Fireside Chat with Brian Sletten

Recording

During last month's Wasm.builders Meetup, Connor and Ramón from Suborbital sat down with Brian Sletten to have a relaxed, fun and informative fireside chat, covering topics including Brian's history with Wasm, his book "WebAssembly, the Definitive Guide" (which is available), and more!

Transcript:

Note: The below is a complete unabridged transcript.

Connor: Hello everybody.

Ramón: Thank you. Hello.

Connor: Hello. This is the second WebAssembly fireside chat that we are doing for Wasm Builders, the WebAssembly community that we help run alongside a bunch of other great teams like Fermyon, Cosmonic Lunatic, Profian and others, and we're all trading off doing these, these webinars you know, live streams.

And this is our turn to host and I'm really glad that we get to do so. So I'm just here to you know, introduce and be a bit of an MC, but Ramón here from the Suborbital team is going to be running the show. Ramón, you want to introduce yourself?

Ramón: Thank you. Yeah, I'm a, I'm a developer advocate, a developer relations advocate here at at Suborbital.

I've been learning a lot about WebAssembly. Developing software for 12 years and yeah, just having a great time and I'm super excited to be here and help lead this, this fireside chat.

Connor: Awesome. And Ramón's going to be talking with Brian Sletten, he's the author of this wonderful book that I have in my hand here.

WebAssembly the definitive guide. Do you want to introduce yourself, Brian?

Brian: Sure. It's a pleasure to be here. The WebAssembly community is, is really inspiring and was, was what sort of motivated me to get the, the book going. So I'm, I'm honored to be here and to also reflect everything that you all are doing as well.

So I'm excited by what what's coming.

Connor: That's awesome. Yeah, I I have the page in your book bookmarked where you mentioned Suborbital. Cause I, you know, I have, once I finished reading it, I want it to be able to go back and find that so, you know, Suborbital right there. And I really enjoyed reading it when it first came out and yeah, I'm excited to hear more about it.

So I think I will say sayonara and let the two of you get to it. So welcome to the Suborbital Wasm builders, fireside

chat.

Brian: Thank you very much.

Ramón: Thank you. Thanks Connor. So yeah. Thank you again, Brian, for being here and thanks everybody for joining in. Since this is happening live, I really want to stress, this is an open conversation.

So please, you know, tell us your questions into the chat. We'll bring them on. In fact, for example, I've got a couple of folks here already saying hello Akhil is saying good evening. Good evening, Akhil. Good to see you. And I've got Flaki here also from Suborbital saying Eyo good to see you. Flaki thanks for joining.

Yeah. So tell us your questions in any questions you've got for Brian. If you've got a few questions for me, love very, like I'm still learning, but I'll try my best to answer, but yeah. Thank you so much for joining in Brian, you know, it was, it was really it was really a joy to read your book and find out about you. Connor

a very kindly introduced the two of us. And I'd love to get if I may ask you a little bit about your, your technical background, because it, it, I get the impression that you're quite, that you've got quite a varied and diverse you know, background in tech.

Brian: Yeah. So I got a computer science degree from the college of William and Mary in Southern Virginia.

By by U.S. Standards, it's very old, right? 1693. It was founded by, by European standards. That's what, I don't know, kind of a up-and-coming university. But it was a very theoretical computer science program. For example, you know, at the time our operating systems class was, would just assume that we knew C there was, there was no like class to teach us, see we lobbied and got a one credit symposium.

But overall it was, it was a fantastic experience. And I also loved the fact that William and Mary is a liberal arts college. And so I think the combination of the theoretical computer science and the exposure to philosophy and critical thinking and things like that really sort of Prepared me for this varied career.

And you know, I've done everything from user interface, stuff to security consulting, to 3d graphics. It was in the video game industry for awhile as well as just, you know, a variety of, of long-term projects with, with large companies just to kind of help them stop from stepping on themselves.

So you could, you could basically say about half of my career has been really, really fun stuff about 10 to 15 years ahead of the industry. And the other half has been sort of just more general business consulting. And I probably both very, very rewarding, but it's, it's been a nice mix.

Ramón: Yeah, and I bet that thank you.

And I, and I bet that mix is what's kind of helped you sort of cause I've had a bit of a, I mean, probably to a much smaller scale, had a bit of a similar experience, you know, doing some very theoretical university stuff here in Vienna and then going into more practical freelance work has kind of helped me.

I find it, I find it humbling in a way to be able to see, you know, how, how the relationship between what is expected of the theory of computer science versus how it's applied quite quite exciting, especially when it comes to emerging technologies, which is something that, that you're, you're, you're, you're quite involved in.

Brian: It is and. It was, it was not an intentional thing. Right. I just, I kinda found myself in these spaces, you know, 25 years ago, I was involved in what was the first whole earth visualization project at a company called the Autometric. And it was basically like Google earth, but quite a long time ago.

And you know, we were doing terabytes of digital terrain information hyperspectral imagery, satellite sensors, and modeling. We did we were pulling video frames off of predator drones and warping them to the earth. But at the same time, we're also innovating around the user interface. And like our entire application was driven by the command pattern a year before the gang of four book came out.

So. You could, you could open up like 10 windows and drop, you know, terabytes of information into display in those windows and then position the eye and start the clock. And all these sorts of things would happen because the commands would be macro'ed and replay them. And so, you know, just doing really hard, challenging, fun stuff like that kind of predisposed me to not want to do sort of typical business application sorts of things, as crucial as those things are.

I just didn't think that was going to be, you know, keep my attention or keep me interested. And yet at the same time, I have spent a long time helping teams grow and put together a team at best buy and designed their first e-commerce API. So, you know, it was, it was just a. Hypermedia based rest API for building or for interacting with our backend systems.

And in its first year, it became, you know, a ridiculously successful non cannibalizing revenue stream. So third parties like credit card companies could convert point conversions into purchases and, you know, even something like that is very satisfactory and satisfying to bring into account, particularly because they were originally told it would take two years.

And I took a team with no background in spring rests, agile testing or anything, and got the first version out in six months. And you know, it was, it was a good experience. So yeah, you touched upon, I think another interesting part, but I meant to follow up further with the discussion, my background, which was, I like to understand why things work and where they come come from.

And I think that's where the liberal arts. Part comes in. Right. And I find myself kind of increasingly not, not isolated, but it doesn't seem a lot of people these days spend that kind of time understanding where things come from and why particular choices make sense. And so, in, in my teaching and my training, obviously in the, in the shape of the book that was a big part of helping people understand why I think WebAssembly is, is one of many technologies that is quite literally going to transform our industry.

Ramón: I, I agree with you. I think, I think it's, I remember, I'm sorry. I don't want to, I don't want to take up too much time, but I remember a story that I used to teach kids to code. Right. And what I love about teaching kids is that they would, we were making games, right? Like two dimensional games. And one of my favorite things that they do is that they ask questions.

They question everything that I was in there. Like one of my favorite question was, you know, when we were doing. When we were coding when we were drawing characters on the screen, right. They would they would have you know, you needed to have your coordinates, right? You needed to have your X coordinate, your Y coordinate.

And the origin that is when both values are zero would be the top left of the screen. And one of the kids asked me, it's like, you know, when I was doing math in class and they asked me why, and one thing that I realized is I took for granted why I was just like, well, that's just how this framework works.

But so we went and investigated and we found out that this is because of the way old CRT monitors worked. Right? Yeah, yeah, yeah, exactly. So they would render super slowly from left to, right. But if somebody hadn't questioned that, I wouldn't have wondered because again, I was eager to get into the world of computer science and yeah, I I feel that, and I feel that, you know, that's something I want to start doing more of now in my work.

Yeah. So thank you for, thank you for putting that so well, sure. Oh, we've got some questions from mark. Is that a GameBoy pocket back there? Yes. Yes, it is. There's one right there. A second question. So Suborbital is obviously an all in, on Wasm as a viable foundation for a serverless platform, but wasm is still a pretty painful development target.

What things do you think are missing in order for Wasm to take off as a deployment target for people who aren't already Wasm and Rust enthusiasts, which of these things do you think are already starting to happen? So this is getting a little ahead of ourselves, but I would love Brian if I don't know if you have a, an answer to,

Brian: well, yeah, I mean, it's, it, it goes, it goes back to what was so ambitious about the book, right?

Which was, I didn't know who my audience was. When, when Riley first asked me about it, they said is who do you think is going to read this book? And I said, well, I think there's going to be a certain amount of JavaScript developers wondering, you know, what this WebAssembly stuff was and why people said it was going to kill JavaScript, which it's not.

I said, I think, you know, some of it is going to be C plus plus programmers who are suddenly finding themselves relevant on the web in ways that they hadn't been for a while, at least in the, the, the browser and non backend capabilities. Right. And then a third group was just sort of curious people wanting to learn something new.

But if you have only ever done JavaScript, you won't have backgrounds with compilers. You won't understand really like ahead of time optimization, sorts of things can, can happen. And so I was, I was really concerned that. You know, I could write a good book that was useless, right. If it didn't serve the needs of those, those reader basis.

So I think that's kind of to his point is that it's a painful process because it is an ambitious process, right? We're, we're trying to bring these different languages together. We're trying to merge platforms and make a code portable and tackle a wider, more heterogeneous distributed ecosystem.

And the reality is, I don't think there's anything else out there that does it better. Certainly, you know, JavaScript runs everywhere, but as a language, it has limitations in terms of certain kinds of projects and products that it's good for. It's fine for almost everything, but there are, there are these edge cases where a rust or C plus plus will be a better source or go, right.

And so there's a bit of a chicken and egg problem. Where do we spend our time adding development tools to make it easier for people until there's more demand, but there's also the other use case of let's just reuse existing code. In which case there doesn't need to be a whole lot of tooling, right?

As long as we can target a different backend. And then the back end can be absorbed into a node, a Deno or some larger platform, like a Suborbital. And the, the other companies in the Wasm builders space are, are pursuing. So I would say it's early days, right? In terms of where that support is going to come from where the tooling is going to come from, and what's going to help ease people into this, but.

The good news is we're seeing more and more of that, you know, with the emergence of Py script, with the emergence of tiny go and variations and the artichoke project and, and Zig and Wasm in the browser and in the cloud. So there's, there's this momentum behind the platform. And I think developers are good at scratching their own itches.

Right. And we will see things like wasm-bindgen and other tools evolve to support other languages and to become richer in the ecosystems around between them. That's, that's one of the things that impresses me the most is I have spent a lot of time in my career looking at cross-platform approaches to things, both from a user interface perspective and a component object, model perspective and, and whatnot.

And it just feels like this time we're not there yet, but we're getting it right. Right. We're we're being very judicious about. The approach, not trying to solve everything all at once, but you know, we've got the dream of Java write once, run anywhere. But now with 20 years of experience, 30 years of experience, and so we're not forcing everyone into a particular language, we're not, we're not forcing everyone to rewrite everything.

We're actually trying to say, like, let's, let's avoid doing things. And that way your existing tool chains and build chains and debugging environments and whatnot can still apply. It's just, we have sort of like this, this little side channel that we can then let your code escape and, and be used in new environments.

So I think, I think to the extent that you said we got a little bit ahead of ourselves with that question I think the value proposition that WebAssembly brings is beyond safe, fast and portable. It's we're able as producers of value to capture that value for a longer period of time and in more ways than we have been able to with traditional platforms and runtimes and tool chains.

So it's not in cases, always necessary to use a C or a rust or a go or something because some choice is not possible in JavaScript. It's just not going to be necessary. Right. So we can, we can take existing code, reuse it, rebuild it, retarget it. And that way we can focus on what needs to be written, not just rewriting everything all the time,

Ramón: Thank you for that answer.

That kind of. Led me sometimes to the sentiment that the best place for WebAssembly to be, and I'm going to get this wrong. So please feel free to disagree with me is kind of acting in the background, like the best, the best place for like, could it be argued that the best place for WebAssembly would be where, you know, people who are developing software in their, in their language say Python, don't notice WebAssembly because it works for them.

Brian: Yeah. No, I, I think there's, there's certainly something to that. Yeah, if you look at. Blazer. If you look at UNO UNO platform, if you look at as you said, you know, Python and PyScript, and a lot of those cases, you don't really care about WebAssembly, but it's just an implementation detail to facilitate being able to run .net in the browser or Python, Python in the browser.

And that certainly is an easy use case to, to absorb and adopt. And I think it's going to be a powerful one because you know, once people realize you can write pixel perfect applications that run in the browser as desktop applications, as windows applications, as Linux applications, as Android applications, as iOS applications or you can take conventional sort of approaches to internet software, sorry, enterprise.

And lose the pain of installation, gain the power of portability and yet not have to rely on crazy complicated JavaScript frameworks. I think that's going to be a compelling strategy for enterprises to adopt these, these ideas. And so I, again, I don't, I don't think there's a right way to use WebAssembly.

I think it should be thought of more as an enabling technology than something that forces you into a particular mold.

Ramón: I like that. And, and, you know, this is actually, I've been, I've been kind of curious to know Brian, cause I, you know, you were. Very keenly interested. You've written the book by, oh, before I forget folks here is the link to the book.

If you want it to, (oreilly.com/library/view/webassembly-the-de..) if you haven't checked it out yet, it is great. I read it myself. I've got a couple of things to say about it, but I want to, oh no, I lost my place. What was I saying? Oh yes. Well I'm curious to know what your, what your history with WebAssembly is how'd you come to know about it? Cause you're quite excited about it.

Brian: Yeah. So go, go back in time. I'm I'm young in my career. I'm doing really crazy cool stuff. You know, again, warping video frames from predator, drones, into three-dimensional scenes. You know, in, in basically real time some, you know, a couple of years later I'm doing machine learning stuff on idle computers, all over the world.

You know, these things were sort of like caught my eye. But that to me was real, javaScript was menu engineering.

That was, that was, that was the obnoxious phrase I used when one of my friends said that they wanted to learn JavaScript back in the day and I misunderstood its potential. And it, it, it, it became a serious language in a serious environment, both in the front end to end and the back end. And so I've always had my eye on the web as a deployment platform.

I'm very involved in also API design, the semantic web links, data, knowledge, graphs, things like that. That's using the web as a platform for machine processable information know to transcend silos and to do some crazy integration outside of particular data storage platforms and whatnot. But every time I looked at the user interface side of developing the web,

I'd rather eat glass. It's just, it was not, it was not fun. Back in the HTML four days, you know, things were, you know, quite literally quirky. And I never liked any of the alternatives, right? The, the Applet approach or the flash approach and Silverlight approach never really got the web. It was a plugin and it was separated from the platform.

So the platform was used to serve it up. But what was served up was not of the web, right? It was, it was sort of like indifference to being in the web. And so when Google first started playing around with native clients and PNaCl it caught my attention. I didn't like their approach, just like a lot of people thought they're throwing away the baby with the bath water by limiting it to Chrome and.

Not having it interact with the Dom and whatnot as is naturally. And so when asm.js emerged, that caught my attention as well. So that's, that's when I really started paying attention was in, in, in Mozilla's response to, to native clients and PNaCl. And I kind of lost the thread for awhile, but when I started hearing about WebAssembly again, I was able to recontextualize it as sort of part of that same initiative.

And it just felt like they finally were getting it right. And so I speak at this conference series called no fluff, just stuff. And it's a kind of a traveling conference, right. It moves around the U S and at the end of December, 2016, the the guy who runs it sort of sat me down and said, you know what you want to talk about next year?

And I said, I want to talk about web assembly. I said, it's, it's too soon. Right. This is back 2016 and it's going to be too long. And so I really appreciate his support. He's like, you know, he's, he's learned to trust me about like where there's interesting things happening. And that really sort of enforced me to start digging into it and the world of the ecosystem of WebAssembly, you know, from the beginning.

And you know, I've, I've been advocating for it ever since, but when we had that same conversation in 2018 I'd been doing a lot of machine learning stuff. And I had had clients that have taken me around the world to, to teach people about machine learning and I'm just getting a little tired of it.

I mean, it's, it's exciting stuff, but you know, I, I want it to talk about new things. And so I said, I would like to focus on. Less, what I think are forward-leaning technologies and focus more on like under appreciated success stories. And so I threw it under the umbrella of modern software development and in it, I threw things like LLVM right.

Which was the basis of why Apple's transitioned to arm was so easy. WebAssembly obviously for, for all the reasons we're discussing architecture as a tool for modernization. So microservices, serverless functions, like the kinds of things that Suborbital and Cosmonic, and everybody are like embracing as a way of reducing a lot of the infrastructure pain that we've had to manage ourselves to deploy functionality on the backend you know, link data and knowledge graphs as a way of solving data integration problems.

And I didn't really think that much about it until. The one show that we got off in 2019 before we shut down for the pandemic was in Minneapolis. And so I, I took each of those topics and put them together and I gave like seven or eight talks that weekend. And it was not until I was actually going through the process of giving the talks that I started to say, and then this talk that's coming up.

You'll see how this connects to that. And by the end of the weekend, I like had this beautiful mind sort of a psychotic break moment where I was like, it all makes sense. Right. You know, I had this like 12 dimensional synthesis. And I called it my friend, Matt Stein, and told him about it. And he's like, yeah, you should write a book about this.

And I just basically vomited my ideas into an email and sent it to Mike at O'Reilly we'd been spending a lot of time talking about emerging technologies and what was interesting and. I have suspect him to say like, okay, that's cute, but you know, no, but he was actually very thoughtful and, and the next morning I had an amazing response from him and we spent some time trying to tease it apart and eventually realized like, we just, we don't know how to turn this into a book, but he said, why don't you start with WebAssembly.

Right. And so that, that's how the book project got started. But I've come to think about the bigger picture, a little bit like the Marvel cinematic universe, right. Some friends of mine wrote for, and so I was aware that Marvel was making these movies way, way, way long time ago. And, but I didn't, I had no vision for what it was going to become.

And, and, but I realized what they did was they took a couple of tent pole characters right. Iron man, Hulk Thor, a well understood, well liked characters, but had a fan base, you know, in and of themselves. And they started to tell their stories and then they started to interact. Right? And then you got more and more of them involved.

And then that suddenly allowed the foundation to, to bring forth the larger narratives of like the, the Avenger arcs and, and spinning off into all these different other, other dimensions. And so that's kind of the approach that I'm taking now about these. I think like, you know, WebAssembly is my iron man and these other established technologies that have all proven themselves.

That's the thing is they're not, they're not speculative, right? LLVM is an amazing technology. That's driving a lot in our industry. And when you look at. The emergence of Apple's transition from x86 to arm. When you see the meteoric rise of risk five as an open-source ISA, when you see things like IT sovereignty driving what's happening in China and India and Europe prior to the pandemic supply chain interruption, but, you know, certainly amplified by like, we need to have our own capacity to do stuff like this.

And now we have open source hardware and we have this sort of like new drive towards doing that at the same time, our code is having to run on cloud devices, desktop devices, edge computing, environments, internet of things, devices, phones, tablets, watches. We need technologies that mediate the hardware differences that are becoming not only.

ubiquitous, but more ubiquitous. And that's exactly what things like LLVM and WebAssembly are doing it at that intersection. They allow us to smooth over the differences between the hardware so that we can just write our program once and then it'll, it'll run in any of these environments. So there, there really is a large story about security, about portability, about business value, about you know, where industries are going.

And I think one of the things that people underestimate is how important WebAssembly is to, to a lot of that.

Ramón: Thank you. Yeah. And that's, that's really cool actually. I wanna, I want to highlight a comment here, that flag, he said, you know, about the talks themselves. This is the real-time real-time version of conference driven development.

Seeing how that came about same goes for talking about code reuse, motivated by the browser. The improvements of the usability of image code from that effort is now powering command line tools, serverless image transforms, et cetera. And we've got a question and we, oh yeah, totally. And we got a question here from, from Akhil asking is there a recording of those talks,

Brian: Of some number of them that particular series Is is, is, has historically been more of like an in-person series, but because of the pandemic, we've worked realized a lot of the experience and we have kind of a hybrid mode now.

So if you go to no fluff, just stuff that come there are a variety of talks and things that are available, but other other my talks are available on YouTube.

Ramón: Fantastic. Thank you. I'm just going to drop a link here to no fluff. Just stuff, another comment from Flaki here saying LLVM itself having been a key enabler for a ton of technologies, we consider groundbreaking today, Russ being one of them and something, you know, if, if I may dive into the book you know, reading it, read it.

So I was, I was telling Brian, before we started this, I'm going to repeat myself. I was just going to come off as a little instance here, because I already told Brian, but he knows what. What I liked about this book is that it, it really, you know, the definitive guide, what I liked about it is that it did not skip anything, at least for me who's a relatively relative beginner to, to WebAssembly.

I felt that I was able to like, you know, everything got explained that needed to be explained. And I, and I very much appreciated that, you know, starting with, you know, explaining for example, why it is that you can't just printf from a C program in WebAssembly just like that. And that was that to me having that example.

And I think, I think I learned by, by, by tripping over things, because that example just made a whole bunch of stuff, click for me why it is that things like POSIX are so important for something like web assembly. So I, I, I really, I really appreciate that. I wanted to ask if I may, this is this, wasn't your first experience?

Authoring a book, right?

Brian: I've, I've contributed to several . O'Reilly's "Beautiful Architecture". I wrote a book called resource oriented architecture patterns. So applying web ideas to things you know, everyone's excited about graphQL, but that's a pattern I called the named query pattern, you know, nine years ago.

So there's nothing really new about .

It's a different experience writing kind of like a small sort of academic book that was intended to be part of like larger textbook, you know, sort of like dynamic textbook that assembles, you know, the, it was part of the synthesis lecture series on semantic web stuff versus something that's targeting kind of a more general technology audience, but yeah, I've, I've contributed and written a couple of things in the past.

Ramón: Awesome. Flaki writes, and this is true. I was texting him the other day from the other day, literally channeled Matrix's Neo "I know Kung Fu" the other day, reading the book, he messaged me "Flaki, I think POSIX finally clicked for me!". And this is something that this is something yeah. That I, that I. That I really appreciated about the book because it really was, you know, a full guide and something you've said that I also found really interesting is that this is a snapshot, isn't it?

A snapshot in time of where, WebAssembly is now, right?

Brian: Absolutely. I was gonna say, you said I didn't leave anything out. I left actually a lot of things out that I wanted to talk about like threading symphony and whatnot, but I just felt like there was already so much in it. And those things were not ubiquitous.

They were not widely supported yet. In, in all of the environments But I, I, it, it pained me to leave them out, but you know, I'm already starting to think about what, when what's the timing on the second edition, because so much has happened since the book finished. That was, that was the experience that I, that I learned with my first book, as well as books aren't published, when they're done books are done when they're published.

And if the world is changing around you so much you just have to draw a line in the sand at some point. Because I kept on thinking, oh, there's this, or there's this, or there's this. And you know, I wanted to spend so much more time talking about what Suborbital and the other one everyone else was doing, but, you know, it's, it's, there's only so much that you can fit into a schedule and I was already behind, and my editors were very patient with me.

So I had to, I had to cut. Cut.

Ramón: That's fair. I think maybe a better way to put it in that case would be, you know, you didn't, you didn't skip over the essentials for, for somebody who's, you know, getting started with it, to understand it and appreciate what it is that goes behind developing software with WebAssembly because not only does it, not only does it go straight into you, don't understanding how it is web WebAssembly works.

I really appreciated that, that at the beginning of you spent a lot of time also writing examples with with WAT with WebAssembly text format. And that was, that was cool because I felt like that was a way for me to start beginning to understand, you know, not beyond, beyond having that as something we can write.

I know this sounds silly, but bear with me please. Having it as a teaching tool felt, felt different with WAT with the way you used it in the.

Brian: And I, I honestly, I can't, I can't lay claim to that insight. The, the web community had, had done that a lot. And the first person who really ran with it was Kevin Hoffman and his Rust in WebAssembly book from the pragmatic programmers.

I was traveling, I was in London at the time and I had a couple of days to myself and I just took his book and was reading outside. And it just blew my mind because in the first chapter, he basically builds about 60% of a checkers game in what wow. And, and I couldn't believe he was actually doing this.

And, you know, he got about 60, 70% of the way there. But nobody would actually do this. So let's switch over to rust. I mean, he was, he was, he was maintaining, you know, positions and moving things around. And so, I mean, I really got the sense of, of kind of how to tell these stories from people like Kevin and Lin Clark has been a huge influence in terms of how I think about these things.

So the, the WebAssembly community is a tremendous community. And like I said, Wasm Builders is now capturing and reflecting that in a, in a very concentrated way. That's honestly, you know, even for somebody who wrote a book on the topic, it's almost impossible to keep track of everything that's happening in the space on a, on a daily basis.

Ramón: Totally. Totally. And I, and I think that's, what's tricky about writing a book I'll bet, but all the more appreciated of, you know, putting it there and being very, very upfront about saying, this is how it is now. We'll see how it is, you know, in, in a year, six months time, you know,

Brian: and I totally, I totally accept the criticism that it's too soon to have a definitive guide, but I wanted to use the term, maybe not so much, like it normally is used with the O'Reilly series, but to, to capture the scope of what I was trying to do.

Right. And nobody had told that whole story, right. There were several great books out there. Targeting like Kevin's book rust in WebAssembly or other ones where like C plus plus and WebAssembly and people like Robert Robert Abacha Lil's leveling up WebAssembly would walk you through things like converting existing C and C plus plus projects into these things.

So people would tackle part of it. But nobody was telling the whole story about this vision that I was seeing emerge. And, and that's, that's why I, I think stretched the title a little bit, given where we are in the, in the process. But some of the other feedback that I got that was really meaningful to me was the idea that they thought I had done a good job of taking something that was so dynamic and giving it enough legs that, you know, it came out in December.

It wasn't useless by January, right?

Ramón: A lot of what I read through it was, yeah, like you said, extremely relevant. And I, and I appreciated that a lot because you know, the, the theory for something that's very I think it would be fair to say a lot of, a lot of, you know, something that's very proposal driven that's going on right now with, with assembly can be tricky to write about.

But I think by, by, by doing so in a way that's honest and saying like, this is, you know, this is how it is, and this is what, this is how it works has been really, I don't know if stabilizing is the right word, but, but grounding perhaps.

Brian: Yeah. I, I like, I like that. And I think you've hit upon something about both why I think it works and why I think it's confusing.

Why, why this, this ecosystem is confusing is because we're so used to. Version numbers, right? Version one, 1.0 2.0 3.0. And we're like, okay, well what goes into each one of those things and that sort of forces you into an all-in mentality. Right. And that's not what the WebAssembly community has been doing.

They're basically saying, you know, you adopt the pieces of it that you want to adopt when and where you want to adopt them or need to adopt them. And so the proposal based process, like, okay, well, here's how we think about garbage collection or here's how we think about 64 bit integers or here's how we think about threading.

It allows them the time to think through these items in isolation and it allows wasmtime, wasmer, wasm3 platforms to adopt them incrementally and. That way you're not having to buy into like everything all at once and you can, you could do feature testing and say, okay, this, this platform has the combination of things that I need and therefore I can, I can use it for the time being, but it allows the whole thing to be a little bit more organic and, and grow.

I think meaningfully, as opposed to crap, everybody's got to support everything all at once. And that's just going to, I think, force people's hands and have partial implementations or, you know, things that are flaky. And so I, I appreciate the fact that that's how it's going, but it doesn't make it very confusing to keep track of what state everything is in

Ramón: all the more reason why I think having a book like this helps because like, for somebody like me, I remember, I remember, again, writing to, Flaki when when I was getting started with WebAssembly being like, I can't keep up with all these terms wasm, wasi, bundle, bindle, something else. I remember thinking like, gosh, where do I even begin? Having, having having a guide like that, that really like guide, you know, takes you step by step through it. And one thing I actually founded the book that I wanted to touch upon that I don't see in a lot of books was dedicating the last couple of chapters to two installation guides.

That was cool. I, I just wanted to say I appreciated that.

Brian: Thank you. It's again, it's one of those, those trade-offs, you know, the web is fantastic because it allows you to change something immediately. So if I had just put a link in there to say, okay, go to this website and find the instructions there.

Ramón: Yeah.

Brian: I wouldn't have, I wouldn't have had to spend so much time know. And I did it and in some cases, right. But I, for a lot of it, I wanted the book to stand on its own so that, you know, somebody's reading it, you know, out at lunch or something, you know, it doesn't have to go back to work to look something up.

You know, I wanted, I want most of it to be sort of self-contained and not force you to have to go look up a bunch of other things.

Ramón: So no, that was, and that was super cool because it was, it was grounded in, it was, it was grounded in reality. And I really appreciated that. And like you said, you know, you can just, you know, try it out while you're reading it on a, on a train or something.

Right. So that was, so that was really cool. Thank, you know, overall I can, I, I can say from my extremely unbiased point of view that it, that it is absolutely a fantastic read and to folks to check it out. Cause it's very helpful. Yeah and something, Flaki says here, I really liked as well, talking about writing things in WAT writing things by hand in Wasm is not unique to Wasm.

The same. Trade-offs apply for Wasm stack machine as they do for assembler and other real world architectures. And it's funny you say that because it reminds me of a, I think it's a book or a tutorial or a guide. I'm not sure what called I think it's called NAND2Tetris. I don't know if you've heard of this.

Brian: It sounds fascinating.

Ramón: Yeah. This is like a, it's like a guide to build your own Tetris out of NAND gates. Well from what I understand, a friend has been telling him being about it for years. I'll get a link to that. I'll I'll get it shortly.

Brian: I definitely definitely want to check that out because that's, that's, again, that's sort of reinforces back to grounding these things in, in what's actually happening.

Right. And, and that's, that's a technique that I've, I've used with some of my. Discussions and training and everything, people like, oh, this is so weird. And you know, nobody does this, or why do we do this? You know, if you look at the history of the development of the internet and the web, it's just about adopting some standards to create increasingly interlinked graphs of stuff, right?

Graphs of computers, graphs of documents. And now we're talking about graphs of data and when you could contextualize things that way, right? Well, what, why is WebAssembly happening now, right? It's not happening in isolation. It's been part of a 30 year attempt to improve the user experience of the web.

And in the side effect is we're now able to address all these other things that are happening in the industry, like new hardware, emerging new deployment platforms, you know, harder time being able to target those with a single language. I think part of the reason why. Like I thought rails Ruby on rails was going to take over everything.

And it, it obviously was a very successful platform, but I think the thing that stopped it was the runtime right now had had to go install another runtime and everyone had already just installed JVMs and whatnot. So the idea that we can adopt a new language that maybe bring something to the table, like a rust, like a Zig, like a clojure like a, you know, whatever, they bring something to the table in terms of our ability to express problems, more elegantly, more efficiently, but we can then use them as part of our larger solutions without having to care without having to install a new runtime.

Just for that one language. I think that's, that's part of, what's interesting here as well. So it's in, it's contextualized form. WebAssembly makes all the sense in the world. And it doesn't seem like that weird of a thing. Yeah. That's why I like this NAND2Tetris thing, because it sounds like you're, you're telling a story from first principles into what does it mean to have the capacity to additively build on success?

Right. And that's, that's what I think WebAssembly is doing is it's additively building on the success of the web. It's additively building on the success of various languages and runtimes and compiler architectures and you know, our experience with portable and secure code and coding environments.

And because it's not in your face because it doesn't require you to necessarily care. That's why I think it's it's it seems like it's slow going. And it seems like it's, you know, it's been a long time in coming, but when you stop and see like all the places it's got its fingers and its tightening, its grip in those places, It just seems almost inevitable that that it's going to be what we imagined it might be.

Ramón: Thank you. Yeah. I've got a question here from Flaki in today's era of computer purists, it's increasingly hard to stress the importance of the soft or human bits. Brian, how do you approach bringing cross disciplinary thoughts to people?

Brian: I think that's one of the most important things that we need to do in our industry.

And I've, I've glibly tweeted things like there's too much typing in our industry and not enough thinking we're just copying and pasting things from stack exchange and not thinking about what that means. And when you try to systematize unthinking marginal changes, right? There's all these emergent conflicts and behaviors and things like the supply chain attacks that are becoming more of a problem, right? If you just sort of like have no problem adding another NPM dependency on your node project, and that pulls in five other things and you never stop and think about what does that mean? Then this becomes a new attack vector that we're seeing all the time.

And that's why I'm bullish on environments like Deno, because it takes that stuff seriously. Right. Do you know, it takes, it takes the same approach of that WebAssembly does, which is you do not get to write to the disk and you don't get to read to the disk. You need to open up a network connection.

And when you combine those environments with the portability environments that WebAssembly brings to the table, I think we have a recipe for solving or at least materially improving our security posture around malware and phishing attacks and ransomware and whatnot, because if we can just arbitrarily run code naturally in sandbox environments, then they're not going to have the capacity to cause havoc in the way that they do now.

Ramón: Right. And this is something you cover in the book as well about, you know, Deno provides these, these security mechanisms and how these are reflected in WebAssembly as well. And we've got a follow up here from Flaki saying, oh, sorry.

Brian: I was just gonna say, I wasn't trying to, I probably had answered his question, but you know, I, when I do consulting, right, I try to bring that to the table.

Right. And as part of the narratives around. Design elements and things like that. When I, when I wrote the book, obviously I framed it in a way that tried to contextualize things and make it clear what the connection was and what the sequence was and how we're adding the capabilities, not jumping around in decontextualized sort of way.

So no, I don't, I don't have a specific, simple answer to his question about it, but I do it by talking about it. And, and when I, when I do training, I very much spend time. Like, for example, this week I did a four day architecture class day one introduced the terms, right? The ideas, the role of the architect, and then started to connect it to process and enterprise strategy and business value and managing market and technical uncertainty.

So it was all just sort of like here's architecture. The next day, I revisited those ideas from the interplay between say design patterns and architecture patterns. And like one is focusing on lower level things and one's focusing on higher level things, but like, again, just revisiting the ideas and how do we go back and forth between those, those two activities?

Day three was then a deep dive into the web as an architecture, as an application level innovation on the Internet's architecture, explaining why it works the way that it does explaining why a browser doesn't have to stop and read API documentation when it hits a new website and then extending it into linked data and other approaches and then day four was all right.

Let's look to the future. Like what's happening with hardware, what's happening with architecture, what's happening with decentralization. What's happening with, you know, I spent some time talking about WebAssembly, but revisiting those days, the topics from the previous day, You know, from historical, from contextual, from other perspectives.

And so that's just kind of how I go about doing training and writing and, and conference talks and things like that. So I try to help people see the value without sort of like beating them over the head with it.

Ramón: I really appreciate that. And I think, I think Flaki summarized it here quite well, where he said, you know, number one, build credibility that lends you ears, number two, talking to those ears.

Real good.

Brian: I appreciate that.

Ramón: Yeah, me too. And you mentioned consulting and training, so I, I guess that gives you, you know, a wide insight into what's going on in the, in different parts of the of, of tech. And I'm wondering has that. You know, helped bolster your belief.

That WebAssembly is a powerful contender for what's coming and how it's and what insights can you glean from? You know, how it's, how that's being applied right now.

Brian: Yeah. I will say that in the past couple of years, because of the pandemic, I haven't been doing a lot of my more conventional consulting, but I think to the extent that that I did for years the thing that absolutely floors me is how often times I'll come in as a consultant and, you know, there will be problems and I'll come up with solutions to those problems, but I find myself very often.

Being more in my client's best interests than their employees are. Right. The employees are worried about their careers. Their employees are worried about their resumes. Their employees are worried about political power and things like that. And sometimes that doesn't match to like, what's the actual way to solve a problem.

Most big companies are on this treadmill where they'll hire a new CIO, right, fire the old one bring in the new one. The new one has like some big ideas and they're given about a year of leeway and then the measurements start and nothing ever happens. And you know, a year later, Hey, we need a new CIO.

Right, right. And so people are, are definitely spending money, but I don't know that they're spending money in a marginal additive way. Right. I don't know that they're fixing problems. I think they're chasing shiny objects and big visions and. Been getting back to my technology Avengers, right? We have WebAssembly, LLVM, you know, ultimately I think what we need to do as an industry is to figure out how to minimize the cost of computation, right?

That's from a financial perspective, a time perspective, a latency perspective, and a power consumption perspective. And if you look at, you know, why Apple's moving to arm it's because the risk construction set hardware uses less power and therefore they can get better and better battery life out of it.

But that's not enough. Like they rewrote their operating system to take hold of how stuff gets scheduled at the threading level. And now they have custom hardware that's tuned for. Optimizing speed versus optimizing power. But we're seeing the same thing with researchers doing machine learning experiments with what order to apply LLVM optimizations to again.

So the same code is either tuned for speed or power consumption. And it's that interplay between hardware, software, environments, runtimes, how we break things up into problems that I think is ultimately going to help us decide. Does something make sense to run in the cloud? Does something makes sense to run on device?

Does something make sense to run somewhere in between there? Right. That's where edge computing environments come in. So I want to be able to run arbitrary software geographically, closer to where my customers are, but not actually on prem or on device. So then I need these environments. Like we're seeing Fastly and CloudFlare and other sorts of companies create that allow you to take arbitrary code and run it in a safe, fast sandboxed environment, which is then going to drive us towards environments like WebAssembly.

Right. Which is why they're so interested in that. So we can really take code and position it anywhere to optimize for speed, power consumption, latency, deal with regulatory compliance. Why do we push machine learning stuff to devices? Well, if you're doing like detecting, whether somebody has got an evidence of a stroke or something, you don't want to take the data off the sensor or the device, you want to push the logic to the device and avoid HIPAA, you know, issues and whatnot.

So in the grand scheme of things when I look at, in my consulting. What works and what doesn't and where, where can I add value? Well, beyond, you know, how I'm being compensated, and yet they'll just turn around and piss it away some other way. That's frustrating. But what I see in this collection of technology superheroes, right, is a way for you to say, what do you actually want to do?

I want to modernize my legacy systems. I want to improve my capacity to reduce costs, to solve certain kinds of problems. Like whatever your business problem is. We now have a technology story that helps you get there. And as I said, I think it largely comes down to capturing value for longer and to not throw stuff away as fast as we do it to not rewrite stuff, as often as we do.

And so it's not that we're not going to be spending less money it's that the money is going to move us forward. As opposed to, well, this CIO, his project didn't work. So let's try the next CIO project in which case you're just spending money and you're not necessarily getting any kind of return on investment on it.

Ramón: That's fascinating. Thank you. And I appreciate the sincerity there, because I think it's important for us to be honest with ourselves and say, you know, what's, what's not working and what can we do better with the technology that we have provided to us? So thank you for that, Brian.

Listen, I, I can see that we're coming up on the hour. I want to give folks one last opportunity to ask a question, but if not, I just want to say this has been super cool, Ryan. I really appreciate you taking the time I've learned loads and it's really, it's really, it's really cool to learn from somebody who's, you know, you can tell cares and, you know, A wealth of experience.

So thank you for that.

Brian: That's a polite way of saying I'm old, just kidding.

Ramón: No, that's not what I mean. No, it's, it's been really cool. Thank you. Brian before I, before I bring Connor back in to take us out how would you prefer folks get in touch with you?

Brian: Twitter's the easiest way you know, just reach out and put me there, but I mean, you know, find me on LinkedIn as well.

That's, that's a pretty straightforward approach.

Ramón: Cool. Thank you very much. So I'm going to bring a Connor back in. Thank you. Hey

Connor: Hello? How's that? How's it going as this was great.

Brian: Thank you for the opportunity to, yeah,

Connor: my my name tag like covers my chin. I feel like I need to move over here.

Ramón: I'll take off the banner. Okay.

Connor: That's all good. Yeah, no, this was great. I really appreciate all the different perspectives and all the different angles you both took on this conversation. So before we head out obviously thanks to both of you for doing this, but I also want everybody to know about Wasm Builders.

That is, you know, the, the community site that we are attaching this fireside chat to. So head on over to Wasm.Builders, it is a, a great place to learn about WebAssembly. There are now hundreds of posts. We've seen a really great group of people creating tutorials and walkthroughs and showcases of different things that they're using web assembly to do.

And The, the group of teams that are working together to curate and you know, be the administrators of that. We're all very passionate WebAssembly folks. And we're really quite excited that the community is growing at the rate that it is so definitely check out Wasm Builders thank you again to both of you.

Keep an eye on the Wasm builders, Twitter account for future fireside chats, we, we kind of trade off among the different companies that are involved with Wasm builders. And so the next one won't be on our YouTube channel, but it will be promoted no matter who's hosting it, it will be promoted on the Wasm builders, Twitter accounts.

So @WasmBuilders on Twitter. Give that a follow up to to be notified when the next ones are coming up. So thank you very much. And I think I think we can end it there.

Ramón: Thanks very much. Everybody take care.

Connor: Bye.

Photo by Robert Anasch on Unsplash