For this episode, we talked with Matt Butcher, CEO at Fermyon Technologies, about distributed computing, the long-term promise of WebAssembly, and the HR mix-up that switched his career from lawn care to computer programming.
Fermyon offers serverless cloud computing. Spin is their developer tool for building WebAssembly microservices and web applications; check it out on GitHub.
Like past podcast guest David Hsu of Retool (and yours truly), Matt earned a degree in the humanities before deciding to prioritize his “side gig” in tech.
Follow Fermyon on GitHub. Matt is on LinkedIn.
Shoutout to Lifeboat badge winner keineahnung2345 for saving Hamming distance between two strings in Python from the dustbin of time.
[intro music plays]
Ben Popper Listen to Season 2 of Crossing the Enterprise Chasm, hosted by WorkOS founder, Michael Grinich. Learn how top startups move upmarket and start selling to enterprises with features like single sign-on, directory sync, audit logs, and more. Visit workos.com/podcast. Make your app enterprise-ready today.
BP Hello, everybody. Welcome back to the Stack Overflow Podcast, a place to talk all things software and technology. I am your host, Ben Popper, Director of Content here at Stack Overflow, joined as I often am by my colleague and collaborator, the Editor of our blog and facilitator of our newsletter, Ryan Donovan. Hey, Ryan.
Ryan Donovan I think my title gets longer every time.
BP I have to come up with something new to say about you every time so we're going to keep adding to your nomenclatures. Today our guest will be Matt Butcher, who is the CEO of Fermyon, and he's going to talk a little bit about his journey into technology, how he got to know WebAssembly and why he's decided to work with that and build some stuff for the future. So Matt, welcome to the program.
Matt Butcher Thanks, it’s great to be here.
BP So tell us a little bit about yourself. How'd you get into the world of software and technology and what first brought you to WebAssembly?
BP Very nice.
RD Beats mowing the lawn, huh?
MB Oh, yeah. I mean, imagine where my career would be now if I had stuck with that job.
BP And so what did that company do? Did you end up building lots of websites for them and did those go into use with their consumers or their clients?
MB So it was actually a municipal utilities company so they did the electric, power, water for Colorado Springs, Colorado, and they were trying to build an intranet essentially to try and build a sort of internal way of communicating between teams. And so we did a lot of stuff with cameras and the ability to monitor the water supply in places with cameras. It was very fun. And to your question, in a way we were building experiments that kind of instantly went into production because there was nothing that they were replacing and no expectations around how they had to perform or what they did or what their uptime was. It was a great, great experience because we just got to try all these new exciting technologies and see them in use and get very quick feedback from a distinct class of user. People who were doing operations on waterworks at 2 AM would say, “Well, the camera went down for 45 minutes. Anything we can do about that?”
RD So do you want to talk about how you got from there into WebAssembly?
MB Yeah, so that kind of got me interested in programming more or less as a sort of side gig. I know I'm at least the second person on this podcast who is a philosopher. I actually have a PhD in Philosophy and taught academic philosophy, but all along the way software development was sort of my side passion then became sort of my overriding passion. I ended up working in content management systems. That got me into HP Cloud which got me interested in cloud computing which got me into virtual machines. And then from there I just kind of said, “All right, philosophy was fun and all, but philosophy should be the side project and software development should really be the thing I focus on for my career.” And I never think I've made the wrong decision. I mean, I liked teaching but the speed at which we can work here and the fact that we're in that kind of historical inflection point in which a few decades ago the idea of the computer was new. Rewind a few decades before that and everything was R&D. In our lifetime we've seen this thing go from toothpicks and marshmallows to the point where we have these amazing artifices of computational strength that have resulted in things like cloud computing and things that are unfathomable to my grandparents and what they would've experienced during their lifetime. And philosophy's nice and all, but this is something historically amazing that we get to be a part of, and so I love that about this career.
BP Very cool. Yes, it was David from Retool who said he was a dual major in Software and Philosophy, and I chided him for trying to do something where he could actually make money. But I guess you're a dual major, so it can be forgiven.
MB I have no excuse. I was philosophy all the way.
BP Tell us about some of the early things that you might have worked on with WebAssembly as the technology, and as you saw it evolving, what made you feel like it would be a good fit for this new world we live in full of microservices and containers, code as infrastructure, serverless. This is a very different world from what we were doing even five years ago.
RD So I'm curious, this is compiling to a binary format, but it's being sort of interpreted and produced on various different operating systems, different hardware. How is it different than virtual machines?
MB Okay, well, we can turn virtual machine into two kinds. We've got the operating system virtual machine like what we're used to using on AWS or in VMware. We also have language virtual machines like Java or .NET CLR. WebAssembly is in the tradition of those language virtual machines. The way that Luke Wagner, one of the core developers of the original WebAssembly specification, described it to me at one point, he said, “You know, Java has been around for 20 some years and we have learned a lot of really good lessons from Java about how to do JIT compiling, how to run more efficiently.” When I started WebAssembly he said it was like getting to start on top of 20 years of learning that the old team didn't have when they started. And I'm thinking about that and we in technology have this tendency to want to say each time we make a technological innovation, “Everything is new. The world is new. We've created something new and it's going to blow away everything that was old.” We want to tell these big grand narratives, and part of that is because we are in, like we talked about at the beginning, this ecosystem, this technology that's growing very, very rapidly and new is a virtue in our system. But really, WebAssembly is sort of yet another evolution of the kinds of patterns that programming language and language virtual machine runtime developers have been discovering and innovating in since Java and before. CLR is another, the .NET runtime is another great example of this. That said, there are a couple of virtues that WebAssembly has that make it uniquely suited to this, and I'll really just hit one. That's the security model. The Java virtual machine was built with the idea that you as a developer should be able to write code that can access the file system and you shouldn't have to know what operating system the file system was on, but you should be able to drop down there and read and write files and maybe manage the process table and do whatever you need, open network sockets and things like that. And that should be the sort of default posture of the virtual machine. WebAssembly started with the opposite security posture because it was for the browser, which is, “Hey, you should be able to run your binary here, but with all the guardrails on.” By default, you as the binary author don't get to make any decisions about what you're dealing with when it comes to file system, process table, environment variable, stuff like that, because we need to make sure that nobody downloads some nefarious code into their browser’s WebAssembly runtime and accidentally roots their system. So that security model incidentally, going to the other virtual machine model, operating system virtual machines have run using essentially that same kind of model, as have containers for the most part. And so that security model is what first raised our eyebrows and made us say, “Wait a minute. This is a candidate for a third kind of cloud computing.”
BP Interesting, yeah. You mentioned how many languages it now supports. I was doing a little research before this on Wikipedia and there it says it's up to 40, including all the most popular ones. And then getting towards what you were saying about its applicability to the cloud, there's a quote in here from Solomon Hykes, a co-founder of Docker, who wrote, “If this existed, WebAssembly, in 2008, we wouldn't have needed to create Docker. That's how important it is. WebAssembly on the server is the future of computing.” So expound on that a little bit where you see its role in this area.
MB Everybody should also read the tweet that Solomon said right after that one where he partly walks it back and says, “I see a future in which Docker and WebAssembly work together.” And I think his core intuition was right. A lot of the pain points that led to the creation of Docker really were related to the same problem space that WebAssembly was addressing, and the two streams didn't cross until years and years down the road. But again, I think Docker is great for these long running processes like databases. It works really well in a number of these cases. I think the intuition Solomon hit there was that there's more potential for WebAssembly to run in the same kinds of operating system contexts that containers and virtual machines run on, and that certainly is where we've gone for us. It's those areas where you need to be able to scale down to zero and up to tens of thousands, because another one of the real virtues of WebAssembly is it was built to be fast, and by that we're talking about seconds to start up a container. Even if we're talking about Lambda functions which are one of the fastest things you can do on AWS, we're talking about 2-300 milliseconds to start them up. With WebAssembly and our experimentation and if you play around with the Fermyon tools, you'll see this cold startup time at around one to two milliseconds. So we've really managed to get way down and that's really what we're excited about because that's the solution to the problem that we set out to solve– how do we manage this burdensome scaling problem that over time is going to mean lower cost for people who are using cloud and much less energy consumption for the people who are running clouds.
BP Right, right. I think I see what you're saying. We've had this conversation a few times recently, and Ryan and I just worked on a piece together about people who are migrating back from public cloud to private cloud or on-prem, and the question is always, “These days, how do you balance the cost of being in these large multifaceted cloud environments with the speed and reliability that your customers demand?” So I think what you're trying to say is that maybe here you can get a bit of the best of both worlds. If you are a big e-commerce company, you're not burning cycles and blowing up the climate for no reason. And then when you do want to, a couple milliseconds later, the customer can see how much that shirt is going to cost and choose to purchase it or not?
MB Yeah, exactly. The repatriation story is interesting, but the other answer is if we can cut cost and cut energy consumption down, then we're accomplishing that same kind of thing that those who have been saying, “Let's go back to our own data centers,” have been after as well.
RD It sounds like it runs almost like native code. So what's the ultimate implication? Is this going to be faster than serverless? Is this going to be the next way that you get as close to your user as possible?
MB I think the big narrative for me is, how do we do distributed computing well? And we're taking our baby steps toward this, and I think the baby step that WebAssembly is getting us to is if we can figure out a way to do the kind of serverless style workload ultra fast and make that really, really affordable and really, really performant, and then we can do it on a binary format that doesn't care about the architecture or the operating system, suddenly we have a compute unit that we can start moving around. We've talked about it with microservices, we didn't achieve it with microservices. Now suddenly we're in an environment where potentially over the long term the same executable can run in anything from a web browser to a server somewhere in a data center to maybe your watch or an IOT device or something like that. That's where I think the long term promise of WebAssembly is. But the step toward that for us, the baby step we're taking now is saying, if we can build a faster, easier to work with serverless functions platform à la Lambda or Azure Functions or something like that, we're taking the right step in the right direction. So that's been our focus for the last year and will continue to be our focus for this year.
BP Very cool.
BP All right, everybody. We want to say thanks for listening. As always this time of the show, we want to shout out someone who came onto Stack Overflow and helped spread a little knowledge around the community. A Lifeboat Badge was awarded to keineahnung2345 for providing an answer to the question, “How do I find the hamming distance between two strings in Python?” Thank you keine, and congrats on your badge. I am Ben Popper. I'm the Director of Content here at Stack Overflow. You can always find me on Twitter @BenPopper. If you have ideas for the program, suggestions, questions, email us: email@example.com. And if you like the show, do us a big favor and leave us a rating and a review. It really helps.
RD I'm Ryan Donovan. I edit the blog here at Stack Overflow. You can find the blog at stackoverflow.blog. And if you want to connect with me, you can reach out on Twitter. I'm @RThorDonovan.
MB I am Matt, the CEO of Fermyon. The easiest place to get in touch with me is @TechnoSophos on Twitter. Because I'm a philosopher and I like Greek words.
BP And if developers are listening and want to demo or play around, they should just go to your website? Can they try stuff there for free?
MB Website for us is fermyon.com. We've got a blog there that goes back and forth between deeply technical stuff and really kind of high-level more vision-y kind of stuff. If you want to try Fermyon out for yourself, the Spin open source project is probably the place to go, and that's at github.com/fermyon/spin, or you can find it at fermyon.com.
BP Very cool. All right, everybody. Thanks for listening, and we will talk to you soon.
[outro music plays]