[00:00:00] Introduction
David: Sometimes you can get cooked in a certain complexity that feels inherent to the platforms that you're in, but they're not inherent at all.
They're temporary bridges that we need to get from A to B. And once we arrive at B, it requires a certain distaste for accidental complexity to go like, Hey, guys! That bridge, we can blow it up. If we want,
Andrew: Hello. Welcome to the Dev tools FM podcast. This is a podcast about developer tools and the people will make 'em. I'm Andrew, and this is my co-host, Justin.
Justin: Hey everyone, uh, we're really excited to have DHH on. So David is the co owner of 37signals, uh, and CTO. it's really, really exciting to have you here. you are sort of very famously known for creating Rails, which has been such a tremendously impactful, uh, tool for the, the ecosystem. so before we get started, is there anything else you'd like to tell our listeners about yourself?
David: No, I think that's a good introduction. I mean, it is my life's work. Ruby on Rails, been working with both things for over 20 years now. And we just celebrated the 20th anniversary of the very first Rails application Basecamp. This is also the thing I still work on today. So, yep, the focus of my career.
Justin: It's a huge milestone. Congrats on that.
David: Thank you.
Yeah, like just to recap, like rails is definitely one of the most influential web projects of our time. I mean, it's really hard to understate the impact that it's had.
[00:01:29] The Genesis and Impact of Ruby on Rails
David: what was the origin of the tool? And when you were first creating it, did you have any inkling that it was going to be such a big thing?
Yeah. So it got started as essentially, Hey, I can do whatever I want on this project question slash inquiry. I had been working with PHP and ASP and a bunch of other tools back in the late nineties, early two thousands. Always as an instrumental thing, never as I am a programmer. I like to program. It was more programming is the thing I have to do to get the things I want.
And that's a fine approach to programming. I find no fault in that. But after I discovered Ruby in. Early 2003, and then really put it through its paces in 2003, building Basecamp. My career just took a completely different trajectory. I found out that programming could be more than just a tool. It could be a vocation, a passion, a love.
And All of that really was unlocked through Ruby, and it led to the creation of Rails as I was trying to use Ruby to create web applications and finding that at the time, this is 2003, there A, were not a lot of programmers in the West using Ruby for anything commercial, and B, there weren't a lot of programmers using Ruby period, and most of them weren't using it for the web.
So if I wanted to use Ruby for the web, I had to build a bunch of the tooling myself. which is exactly what I did. And I spend about six months or so packaging all that up, creating that as part of the Basecamp project. We first released Basecamp in February, February 5th, 2004. And the first version of Rails was released just a few months later.
Andrew: Ruby on Rails is like famous for being like a complete solution. Like you wanna generate things, you got generators, you got a whole bunch of features that make your application development like move really fast. Uh, and in every other like programming paradigm, I feel like. Developers are trying to create the, uh, Ruby on Rails for X experience.
Uh, so, do you think that any other projects have captured the magic that, uh, you captured with Ruby on Rails?
David: It's funny because in the early days of Ruby on Rails, before I registered the trademarks and just. Kindly nudged everyone. People literally called their thing, Perl on rails, Python on rails, PHP on rails. So there was certainly a lot of interest in trying to recapture some of that magic. I'll say there's been a ton of really good frameworks, web frameworks, and rep technologies made over the past two decades that I've worked with Ruby.
And it's been inspiring to see the different directions people go. For me though. They're all, none of them are Rails. And the reason they're not Rails is because they're not Ruby. They're not written in Ruby. Ruby is just uniquely suited for the kind of magic that describes Rails.
[00:04:27] The Aesthetic and Philosophical Approach to Programming with Ruby
David: This extremely lean, text editor friendly, IDE not required approach to programming really is a forcing function for getting rid of every ounce of line noise.
Every single character that is not absolutely required to describing the solution to the problem that you're facing. And Ruby can do that due to its very convoluted to implement syntax, but very easy for a programmer to understand syntax. This was the reason I originally got introduced to Ruby. Dave Thomas and Martin Fowler were using Ruby as essentially the pseudocode language to describe a bunch of programming techniques in the early 2000s for a variety of magazines.
And I saw this code and said. Where are all the semicolons? Where are all the, where are all the, uh, parentheses? Where is all the line noise that I thought you had to have to be a real programming language? This looks like something I would write down in English before writing the actual program. And I just have found that Taking that translation layer away, that the programming language actually looks like how I think about programming is an incredibly powerful technique.
And it's something that's surprisingly difficult to replicate, even from a lot of web frameworks and even languages that are heavily inspired by what we do. I mean, I love the stuff that's going on with Elixir, with Phoenix and so on, but you look at a Phoenix. program It, it just doesn't look like a, a rails program.
It doesn't look like a Ruby program. It's got a lot of things in it for all sorts of, I'm sure very good reasons. There's always good reasons for these things, right? But that's what makes Ruby so unique that Matt's placed in his hierarchy of needs. The programmer joy and happiness is number one, no other programming language.
I've ever seen has been that explicit and that determined to put the programmer first. Most programming languages would be like, well, it's a trade off of, yes, maybe we could do without the semicolons, but then there's going to be these edge cases where it's necessary. I'm just taking one example here. I mean, every little bit of line noise or, or even large bit of line noise, anyone who's done generic programming in TypeScript or any type language will go like, well, yeah, it looked like a dog.
Barfed it up, but it's really necessary for the compiler to understand that, that, that, and that's all true. But it, uh, it also is why Ruby is so special that Ruby was willing to skate to where the puck was going to be. I adopted Ruby when computers were, what did I have at the time? A G three, 800 megahertz. I book something.
Do you have any idea how slow that computer was? I mean, it's just insane how slow that computer was, and it was good enough to run Ruby in literally 2001, right? Now, what have we had, what have we been gifted through the advancement in forming sand into these little miracle chips? just Orders of magnitude, more performance, orders of magnitude.
And as we are now facing perhaps an existential, um, tussle with AI, I think it's never been more important that the way we design programming languages is designed for the human first. The human needs all the help the human can get. If we're going to have any chance to remain. Not only just valuable, but relevant as program.
And maybe that's a lost cost anyway, but at least in the last 20 years that I've been working with Ruby on Rails, I've seen that bet just pay out over and over again. I did a, um, sort of back of the envelope funny math example a while back, several years back actually. Because someone kept telling me, oh yeah, but if you didn't use Ruby, you could do with fewer machines and you could save a bunch of money.
Blah, blah, blah. It turned out, at least for our company, that the cost of running Ruby, the overhead of running Ruby, and even the most extreme case, I think I compared it to C or something. No one's actually going to write a goddamn web application in C, but even if they did, right, it was something like 15%.
So the cost delta of using the most luxurious programming language I've ever encountered was just 15 percent of our engineering budget. That seemed like such a no brainer. I mean, it's kind of like, well, you could either get the Toyota Yaris or for 15 percent more, you could get a Rolls Royce Wraith, which would you rather have?
The Rolls Royce has diamonds in its ceiling and it wafts along the road as though you can't hear anyone else. But like the Yaris is 15 percent cheaper. Um, that to me. I take the Rolls Royce.
Justin: Yeah. I definitely appreciate your sort of aesthetic approach to this. So it's like, it's the feel as much as everything else. And, uh, there is a real value in terseness because there's just the general thing of like, the more, the more characters there are in the screen, the more code you write, the more you have to maintain, the more opportunity there is for mistake, for sure.
[00:09:32] Ad 1
Andrew: We'd like to thank our sponsor for this week. Code crafters code crafters makes programming challenges for experienced software engineers. If you're looking for something to do on the weekend and you want to make your programming abilities better, they're a great choice.
The way better than choosing something like leak code or any of those other challenge platforms.
On code crafters, you get to build popular modern dev tools. while learning at the same time. You encode in all of your favorite languages, they have rust go JavaScript in many more. the cool thing about code crafters is you build real modern projects. So they have things like build your own HTTP server rebuild, grep, rebuild SQL Lite. I've recently been going through the build your own get challenge.
And one thing that I find really cool about the platform is it's not like college. Like if you are struggling to get the answer, it's not like you can't go and look at other people's work. So as I've been working through the build your own get, I've been reading a lot of the other Python code to see what they're doing and how I can translate that into JavaScript. I'm still learning and I'm not being blocked.
So it's a really great experience and it really makes me feel part of a community when you can go see what your peers are doing.
Besides the content, even the user experience is targeted towards experienced software developers. For example, instead of tying you to a custom editor and a browser experience, goad crafters, just repose, you just push code and it runs the test for you. You worked completely in your own ID with your own terminal and really just cold crafters is another origin to push, to get instant feedback and can see how all the tests run against your code.
It's pretty cool. To try out code grafters for yourself. Visit code crafters.io/dev tools. Dash FM. There you'll get a 40% discount. And you'll help out the podcast a little bit too.
Do you want to sponsor the podcast? Head over to dev tools.fm/sponsor to apply. And with that, let's get back to the episode.
[00:11:15] Aesthetics Continued
Justin: you'd mentioned TypeScript here. So y'all had moved off of TypeScript recently, and you'd sort of written a post about like, why you made that decision. And it seems like. You know, in a similar way, it's just getting to the, to the sort of root of the, the, the core aesthetic, the joy that you find and, and, you know, the simpler version of these, is that kind of like the, the motivation,
David: It's funny because that whole debate, which blew up for a hot minute as these things do on the internet, baffled me that anyone could be surprised that I wouldn't be the biggest fan of TypeScript. I mean, I've been declaring my love to Ruby for literally 20 years. Been one of the biggest boosters of dynamic duck type languages.
And you're surprised. I don't like the dog barfed it up generic code that you have to write in TypeScript. If you want to create a. Framework, but how is that surprising? Um, so I just thought that was a, just a, such a fascinating thing, but it came as essentially down to that. Like I do not enjoy writing TypeScript.
I actually rather like JavaScript. JavaScript, as I've said many times is my second favorite programming language. It's a distant second, but second is still highly rated in my book. I've tried a lot of programming language over my 30 years with computers and JavaScript is number two. That's pretty good in my book.
In fact, I enjoy writing JavaScript most of the time when I get to write it the way I like to write it, which is vanila Preferably without a bundler or transpiler written directly for the execution context I care about, which is the browser and without the nonsense that is the 5 million packages most projects include from NPN.
If you take all that stuff away, which is what I would say there was a. Book famous book. I don't know, 10, 15 years ago, JavaScript, the good parts, right? The good parts for me is modern, um, JavaScript like ES6, ESM, import maps, running it all in the browser without anything, but a text editor to prepare that code for execution.
That is a truly joyous experience. TypeScript spoils a lot of that for me. First of all, now you're introducing a compile step. Second of all, as I said, the code itself ends up being, again, this is my aesthetic talking here, but nasty. I find a lot of TypeScript code nasty to look at, nasty to interact with, nasty to program in.
Now I understand. I don't know why there are a lot of people, even though there's only a few people, but clearly there's a lot of people who really like TypeScript. Some of it is because they like to program with an IDE. They like to have auto completion, they like to use VS Code, they like to have all of these things.
And I go like, yeah, I can totally see how types help that. I think language server protocols are going to Sort of bringing a lot of that usefulness for the people who want that to dynamically type languages. But let's just even take it a face value and say the choices between auto completion or not, the choices between using an IDE or text editor.
And I'm just proudly a text editor person. This is why I love Ruby so much because Ruby can be programmed with a text editor with no bells, no whistles and be immensely enjoyable. Now, I've used a lot of IDEs in my time. The first one I remember just feeling in awe about was IntelliJ for Java. IntelliJ is a really nice, still is a really nice IDE.
And I completely appreciate why there are folks who sort of like that. But, to me, it's a way to write verbose code. With higher productivity. When my main opposition is not so much the productivity part, but the verboseness part, I don't want to look at it. And aesthetics for me is, is right up there near the very top of what brings me joy as a programmer.
It is to design a piece of code that when I lean back in my office chair and just look at it, I go like, That is delicious. Oh, I love it. I can't move a comma. I can't align a equal sign. Any better than what I have. Wow, this is nice. I like that. That's where I derive so much of my joy. It's not just about the outcomes.
And I think this is where we end up talking past each other. There's classes of programmers who will laugh. At the idea of placing aesthetics that high on the hierarchy of needs and like, why does it matter? The user doesn't see it anyway. Who cares? Um, I care. I care a lot. And that care I've put into open source contributions for 20 years.
My flavor of it. I don't proclaim that this is a delicate to see for everyone. I don't proclaim that my taste in program language should govern how everyone programs everywhere. Um, certainly I've, I've at least acquired the taste to realize that that was a bad, uh, instinct, even if I perhaps had it in the early days of, of, uh, advancing Ruby on Rails.
But the magic of working with the web in particular is that the web doesn't care what you write it in. Which means you have complete freedom, which means you can find the perfect programming environment for you, the perfect editor, the perfect programming language, the perfect framework. And maybe the perfect framework for you is IntelliJ, J2E, JBoss, whatever that is.
Maybe it's VS Code and TypeScript and React and Redux and whatever. For me? I was just going to proclaim something that's actually a little up in the air. I was going to say it's TextMate, it's Ruby, it's Rails. Now the TextMate part is up in the air and maybe we can talk about that in a, in a second, but finding something that resonates with you, it's not frivolous.
It actually matters to a lot of people. To me, I credit finding Ruby literally with the inflection point of my career. If I'd stuck with PHP or whatever mean, this is counterfactuals, but I don't think I would be sitting talking to you here now. It would just turn out a different way. Maybe that would have been fine too.
I don't know. But what I do know is where I've ended up with RWBY, with Rails, has been a two decade plus enduring love affair. Based in large parts on the mutual respect for aesthetics.
Justin: You
know, I think there's a kernel of a thing here because a lot of folks, I mean, it's sort of a knowledge thing that we, we often write code to be read, or we should write code to be read because you do a lot more reading of code than you do writing of code. And there is something about that, that, you know, even in the community, we see.
It's different waves of this. Um, and it may be like language choice and framework popularity, but, you know, even in like the JavaScript TypeScript world, we have seen people's like, okay, we'll move away from TypeScript and we'll just use like JS dot comments as a way of like giving type hints for libraries and stuff.
And that's, you know, a very, that's still like a pretty popular thing. It's like Svelte, which is a front end framework moved to that, uh, paradigm. Uh, so, you know, I do appreciate your, uh, approach. All right. I appreciate where you're coming from with the aesthetics as being like a really important thing.
David: by the way, let me, let me just arrest that for one hot second. JSdoc works for you? Great. I fucking hate
JSdocs.Me
too.
mean, that's as warty to me as the rest of the code. Maybe it's worse, to some extent. Like, I find that the declaration of the comment itself, um, is just as much a part of the recipe. Now, again, that doesn't take anything away from me.
If you like JSDocs, that's wonderful, that's great. And I particularly appreciate, I saw that, I forget the guy's name, but whoever made Svelte, once, um, we got the, like, we're moving off topic. He was like, this is just irresponsible, blah, blah, blah. And then he went like, well, we also did it, but we went to JSDoc.
And then the thing came out, like, why? Because TypeScript is a pain in the ass to write framework code in. It can be, and is for a lot of people, relatively pleasant or maybe entirely pleasant to write client code in. I don't think anyone is actually, I have not heard the argument. Uh, TypeScript generic code.
Is awesome. I'm never, that is not a sentence that has ever left anyone's lips that I've been privy to where I have heard a million people, maybe not a million, but a lot of people say Ruby's metaprogramming is awesome. I would say that every day of the week, I'd credit actually the metaprogramming. Power of Ruby as perhaps the single most important element of why Ruby looks so amazing, why it's so good at writing domain specific languages in because the metaprogramming is so intuitive, straightforward and approachable.
Um, anyway, just as to say all the flavors to me are. They're fine. I'm expressing my preferences, my passion for a certain variety of it, and I'm finding it odd that that resonates from certain corners as, as somehow a transgression, that like, we're not allowed to have that unless that we arrive with the one language, the one framework, the one approach, like, we've done something wrong.
We've gone off the path. Like, what are you talking about? You think all chefs enjoy exactly the same knife? Made by exactly the same manufacturer. No, they don't. They have their own particular. Do you think every painter enjoys exactly the same brush and the same formulation of the paints? No, they don't.
Um, so this idea that we can't in good faith argue on behalf of the tools that we like and then let someone's own eyes tell them what. Shines back brightly to them is an odd one to me. And I partly get it. I partly get that this whole thing has been, and maybe always was a battle of attention, and this is what's going on.
Like all these different communities, they're all jockeying for attention. They're all jockeying for the appreciation of newcomers. Just, they would come in and you get the lifeline. And. I get that. And there's also something to it. There is a minimal viable community size. I think we're, it's easy to get things done now.
I personally don't care at all. I mean, I care, but as a secondary effect, I wouldn't choose any different if it was any different evidence by the fact that I literally was, I was going to say the first person who did. Ruby commercially for the web in the West. That's not literally true. Um, but it almost, I went literally to the first Ruby conference, um, that I attended.
It was the third international Ruby conference, which was held in 2004 or 2003. I go to that, right? This is the gathering of people who are excited about Ruby in America. There's 42 people. I asked the room. How many people work commercially with this language? I raise my hand, one other person raises their hand, right? would use Ruby whether we were a lot or a little or a medium sized community. Because I like building my own tools. Now, I understand that's not for everyone. Everyone's gonna go like, Oh, I'm just gonna start building my shit in whatever new thing is, and I'm gonna build it all from scratch. So, it does matter, but I think it matters less.
Then people get a credit for it. They give it credit as like, it's a stack ranking. And if you fall out of the top five, Oh my God, what are you going to do? The top probably 50. Programming, maybe that's overstated 40. I don't know exactly what the cutoff is somewhere around there. They're all viable choices for you to program for the web with.
And that's why the web is so amazing. That's not true. If you program native applications for iOS or Android, there are absolutely blessed environments when it comes to those closed ecosystems and as it was with windows. The web is different, and this is why we should not just appreciate it. We should embrace it and we should celebrate it, and we should shout from the rooftop how amazing it is that the very first computer I ever owned an Armstrong 4 6 4, is probably connected to the internet.
Somewhere in the world, there's a weird freak who get their nert juices going by connecting, uh, an archaic computer to the internet and having it respond. Okay, 200 to an HCP get request. Isn't that just marvelous?
Justin: Yeah, that's pretty cool.
[00:23:49] Ad 2
Andrew: We'd like to thank our second sponsor for the week. Run me.dev. When it comes to cloud infra, we live in a fractured and complicated world. It's 2024 and we're still storing op stocks in wikis. And relying on a bunch of scripts and mark down. And fractured repos to facilitate our releases.
Run me, wants to put op stocks in your repo directly on alongside. Directly alongside the rest of your code. With run me. You can empower your whole team to be in charge of your info with simple notebooks. Create mission control dashboards, interactive, external docs, or even operational runbooks. To get started. Head over to run me.dev.
[00:24:23] The Moden Web
Andrew: So while we're on the topic of kind of like modern takes that you kind of go against, we've talked about the aesthetic nature of code. But one thing that is the same for all of those types of languages is how it's delivered to the browser. And as you said, you're an advocate for no builds and to go without bundling.
So what are the benefits of this way of operating? And is there still a place for bundling or is it just no bundling ever?
David: So for me, I'm done with bundling. I bundled, uh, I came, I saw, I bundled, then I left. That is basically the trajectory of the last, what is that going to be? What was the last bundler? Like 12 years, 15 years, You added it in 2019 to
Ruby, I
saw.
well, I mean, we'd go even further back with, with Webpacker and even before Webpacker, even before the JavaScript world woke up to bundling, we did bundling for JavaScript in the Ruby world with sprockets, um, and there was a need for that.
In the early days, it was performance with the number of ACDP requests that you could make at one time. You had, I think, four channels. So you could basically only open four connections, and you had to wait for each of those four connections to download something before you could set the next thing. So it really mattered how few requests you asked the browser to make.
If you could cut it down from 20 requests to those four requests, there was a huge performance advantage. So, that's what led to the bundling part of it, at least in those early days, performance. Now, HTTP2 has solved that question. Now, there are minute details where sometimes you can argue that the caching performance is a little better in this regard because it compresses better but then there are other advantages to having many small, um, files because they expire on their own timelines.
I think maybe that's just a wash. I'm not even going to claim it's better. Let's just say it's a wash. That means you no longer need bundling. You no longer need a small number of files to get great performance out of HTTP. HTTP basically solved that. Then the second thing that happened, which is, I think what we all thought, wished for, should happen, browsers caught up.
All of the innovation that happened with pushing JavaScript forward and having polar fills and all the other stuff that was going on, we did that because the browsers weren't at the edge. Right? Like, they weren't ready, they didn't have the latest JavaScript applications. They do now! It's really good!
The, the, all the evergreen browsers, Safari, Firefox, and Chrome, and all the derivatives like Edge, and Brave, and whatnot, they all ship with an awesome JavaScript implementation that supports import maps, so you can have full, um, modern state, modern day module management without a transpiler, without a bundler, I think that's incredible, it means that when I write my JavaScript, I'm writing into a text file, which means again, I get to use just a text editor.
I'm just moving characters around. I don't have anything else going on. There's no step, whether that's a performance step. I don't actually think for me, that was never the main thing. And it's, it really isn't with ES build and bun. They're both super duper fast. I think it's awesome that they're super duper fast, but.
The complexity I get to compress from leaving all of that behind is really substantial. And I don't think you truly appreciate it until you give it a try, especially if you've been cooked. In the bundle transpiling world for so long that you forgot what the world looks like outside. What you forgot what it was, or maybe you never knew.
I mean, actually, that's perhaps a fair point. The vast majority of programmers who are working with the web today never knew a time before this. They weren't around in 2005, six, seven, eight, whatever, before all this stuff took off. So it is one of those things where. Sometimes you can get cooked in a certain complexity that feels inherent to the platforms that you're in, but they're not inherent at all.
They're temporary bridges that we need to get from A to B. And once we arrive at B, it requires a certain distaste for accidental complexity to go like, Hey, guys! That bridge, we can blow it up. If we want, you may want to keep it. And there are cases where it does make sense to keep it, but you absolutely don't have to.
All the new stuff we're building with at 37 signals, including the latest product we just released, which is a uh campfire, a chat tool, installable software available at once. com entirely. No built. Not just no build from the JavaScript, no build for the CSS. There's no Sass, there's no post CSS, none of that stuff.
And on the JavaScript stuff, there's none of it either. Now, that's me, that's what I prefer. That comes with a bit of a trade off. I don't think that model works well if you want to depend on 10, 000 packages in NPM. Um, do you know what? That's not super compatible with that. I like to work with the web using Hotwire, which is, I was going to say a minimal JavaScript approach, but that's not even true.
I write a lot of JavaScript. Stimulus, which is the main framework in Hotwire that you use to write new JavaScript in, we have a lot of stimulus in Campfire of thousands of lines, actually thousands of lines of JavaScript in Campfire, because that's how you get like the little minute, finite. Uh, fidelity when it comes to something like a real time chat.
I think there's a lot of applications who don't even need that, who could just go with turbo and write absolutely minimal amounts of JavaScript and still get a great, uh, application out of it. But what is true is I don't depend on a ton of other stuff and I totally get, actually, I don't, I was going to say it totally good.
I don't fully understand it. I don't fully understand. I was going to say modern, but I'm not even sure it's modern. The programmer proclivity to want. to depend on so many other solutions, like in the abstract, it makes sense to me. Why would I reinvent the wheel? Someone else already did it and so forth. I find that to create the kind of applications that I do, I really want to understand what's going on.
Now we can make this a slippery slope into Absurdium and like, well, you're building in Ruby and that compiles into this, and then it's C and you also want to write it in assembler or even better ones in zeros. Dude, I don't know what to tell you if we're going to get that absurd. I just tell you that using a package manager like NPM, that it's not even about the technology of NPM, it's about the culture of NPM.
It's about is odd as a package that like half of the ecosystem apparently depends on. Um, I don't think it got it right on the scale of like, how many dependencies should we have a few, or should we have many? I think, I think it's admirable actually to try to push the envelopes. Like how many could we have?
I'm sure there are. JavaScript projects out there that probably have tens of thousands of package, uh, transitory dependency, which it's actually amazing when you think about it, like that kind of works. Like, I don't know if I want it to work, but it does. And that's amazing. I don't really like that. This is why, if you look at our gem file, which is what we use to manage dependencies in our applications in Ruby, it's not that many dependencies.
I'd say campfire probably has what 20, 30, something like that. Again, there's some transitory dependencies too. So again, not totally fair, but it's orders of magnitudes less than what's going on in the JavaScript world, which is again, wonderful. Let's have the variety. Let's try different things. Let's, uh, let's have whatever it's at C that still doesn't have proper package managers that everyone agrees on or whatever.
They're also that extreme, right? Like I will literally write every compare function I need by my own hands. Otherwise they don't trust the performance of it. and then there's something like Ruby. That's certainly further along. And then there's like JavaScript 400 miles north of that. Um, that's great.
But to get back to your point, who still needs a bundler? I think if you, um, if you're writing an entirely, uh, JavaScript based application, both front end and backend, you're using react, you're using all of NPN and you have all these transitory dependencies, that's good. All right. Great. You use the whole setup.
You have wonderful tools. Yes. Built yes. Built for me was the first one that really just went like, Oh man, this is so awesome. I fucking love it because I've been using webpack for a long time, right? We built it into rails and we even shipped it as part of the default setup. And I want to be kind, not because it's the kind thing to do, but because it's the real thing to do.
Webpack was first. Webpack paved the way. Webpack deserves a tremendous amount of respect for getting us to where we are. It was one of those early bridges. All this other stuff, I don't think ES build would ever exist if it wasn't for Webpack. all the people involved with that should just get our, our applause and our kudos, right?
Now, that doesn't mean you have to love it or where the end destination was, and I didn't love where Webpack ended up. And in fact, no build exists, at least in part, because I tried to get one of my own applications using my own framework and integration with Webpack to work on a new machine after not having worked with it for like a year and a half.
And I spent literally half a day and was about to throw my computer out the window. I like, I couldn't get this shit to work. And I just like, this is ridiculous. If I, who've built Whippacker integrations, who've been knee deep in all this shit, if I can't make my own project work five minutes after it was written, something is deeply, deeply wrong.
And I just went like, you know what still works? An HTML file from 1995. You take that HTML file, you drop it into a modern browser, it renders damn near perfect. Maybe the blink tag no longer blinks, but everything else is there. That's the enduring quality of Nobuild. It's, it's the 30 year vision. Does anyone, even the most ardent fans of the JavaScript world as it exists today, believe that a project made with the most modern techniques as of this moment would still be easy?
To run five years from now, three years from now, even think it's possible to get it running 30 years from now. Come on, come on. Now it's fair to say, I don't care. Like who cares? I'll just update all my dependencies and I'm always on it. And so on. That's fine. That's fair. It's a trade off. I kind of care about the other trade off.
And do you know why I still have fucking applications that were built 20 years ago, not only making me money, but I keep for the love of it, for the love of legacy, for the love of heritage. We have a free application called Tadalis that was introduced in 2005. It was right at the cusp of early Ajax. I think it used maybe the first version of jQuery or something.
I, I forget, but it's like, it's a heritage specimen that belongs in a museum, except people actually running it today. It has something like a, last time I looked, which barely was a little bit ago, there was a thousand weekly users on this thing. We discontinued signups in 2009. That's 15 years ago!
It still works.
It still fucking works. Not only does it work, we maintain it. I, I mean, to me that's just amazing. And it's amazing in part because this I think is what happens to old people. They start appreciating shit like trees. Oh my god, this tree's like 300 years old. Isn't that amazing? And I think that's just a natu I didn't care about legacy when I was fucking 22.
I was like, new, new, new! Right, give me new and then you get older and then I think it's, that's the circle of life and it's, it's, it's good, I think, but then you start caring about legacy, maybe because you realize you're going to die and it won't take that long. So you started thinking like, you know what?
Um, I could like not be around in, I don't know, X number of years. It'd be nice if the things I made were still able to be run. This is one of the reasons why I so love retro gaming. I've spent about, I don't know how much money I've spent on retro gaming consoles and setups and what I, and I actually liked the archival part of it better than the actual game playing.
Um, I wish I liked the game playing a little more, but. Whatever. I appreciate the fact that the very first computer game I can remember, Yi Ya Kung Fu, on the Commodore 64, a machine with one megahertz CPU, in 1984. I can play that game today. Do you know what I can't fucking play? Or use? A SAAS tool, funded by VCs, like, 18 months ago.
That shit is out of business. That's close down. Every user has been evicted and the data is gone and there's no way for you to run it. No way. That doesn't seem like a good paradigm for software development. It really doesn't. So, all right, I'll, I'll end my monologue,
Justin: no, no, that's great. Uh, you know, you reminded me, I read an article just the other day about like, there was this rating game that Ubisoft put out and it wasn't even out that long. And then they just like, Oh, we're shutting down the servers and like, nobody can play it anymore because there was
no, there was no like access locally.
So it's just like a game that they release that people bought and now it's gone and it's like, that is wild, especially because it's like. I don't know, games have only what feels like recently getting into the category where you don't own the thing, you know, you don't own the cartridge anymore, but like now it's like you really don't own it, you know, in a, in a real way.
David: yes. And I think, do you know what I, this is where we can appreciate modernity and also reject it and hate it. Like, I like the fact that when I. Go to Denmark like my Xbox has all my games and I don't have to load them up into my suitcase and that's good But it's also clearly not good that games not only exist in a way where you don't own them Well, they don't even think like literally exist five minutes Like if game pass tomorrow decides to yank one of the games or they lose the contract with whoever supplying that game is gone I mean the early indication of this was the Kindle.
I think they unpublished a handful of books. They just disappeared Could you even imagine that you're buying a bunch of physical books and you're like looking at them, go pixelate, like back to the future style with the photograph, you're like, it's just gone. Like what kind of ways that to live? How do we progress as a culture?
If we have no sense of history, if we have no moorings to what we've made and what we built, if it's all just ephemeral and it disappears. I think these are just, they're not easy questions. They're not even easy questions because they're trade offs. There's a reason why SaaS became so utterly popular.
There's a reason why Basecamp made hundreds of millions of dollars as a SaaS solution for decades. Because It's got properties people like, but I think it's worth interrogating which parts of it don't we like, how can we mitigate the parts we don't like, or at least provide some modicum of alternatives.
This is what we're trying to do with ONCE, which is installable web software. We kind of sound like an oxymoron. Except if you remember that like, what, 40 percent of the internet runs on WordPress, which is installable web software that people run their own server. But outside of that little domain and a handful of others, most people think of web software, they think of SaaS.
They think of something you sign up for, and then there's another company that runs and so forth. Um, and that, I think that's out of whack. It shouldn't be like 99. 9 versus 0. 1. Maybe it's 80, 20, maybe it's 70, 30, maybe it's 50, 50. I don't know. Um, but I want to find out and I want to help it get off the 0.
1%. I want to restore the idea that you can own software, maintain it, and like it'll still run 40 years from now. Now, maybe this is the time to, to do a call back to. When I said like, what do I really like? I like text made. I like Ruby. I like rails. Well, the text made part has come a little bit up in the air.
[00:40:27] The Shift Away from Apple
David: Um, because unfortunately it's the kind of software that works on like one specific. Operating system. It works on the Mac. And I've, um, I've been a huge Apple fan for the longest time. I've been big Mac booster. I adopted OS X, as it was called, with Puma. I think that was 10. 1 to September of 2001. I think it was like the second release or maybe the third release of it.
And I evangelized that shit to the hilts for 20 years. And then what happens is like things change over 10 years or 20 years, people change, companies change, Apple changed, and Apple has become the kind of company that I would not volunteer to promote these days. Preferably, I'd like to depend less on Apple.
So this gives me a problem, right? 20 years only runs on this one platform. Shit. What do we do? Well, one thing is to just realize, all right, too bad. I, I love text made more than I dislike current day Apple. I'm leaving that option open. Um, the other option is to realize there are other ports of software that have outlived both Apple and Microsoft and the wane and wax of empires coming and falling in tech.
And BI is a great example of that. Literally traces its heritage back to before I was born. I think the earliest was the XE editor started becoming VI in 1976. And it's not just still around and still runs, but there's a huge passionate community that I've updated it first with Vim now NeoVim talk about heritage. Using a damn editor that traces its lineage back, like, nearly 50 years to the dawn of modern computing? That's a testament that that shit might be around in 50 years.
I think that's cool. And again, it's cool, perhaps in part because I'm getting to be an old fart, but I clearly NeoVim is also cool to people who are not just like old. Um, and I think you should always be skeptical about like, who's boosting this? If it's just a bunch of overly nostalgic old folks who can't move with the times.
All right, that's something, but if it's a broader correlation of people who realize that the same values have enduring content, maybe that's something else. And I think VI. Emacs too, for the people who are into that, but I've actually used VI, so it seems a little easier for me to contemplate moving back to VI.
That's something that all fits inside of this paradigm of like heritage software, software as a culture, a culture we take care of. Where we don't just fucking throw out all the paintings. What? Mona Lisa? That shit is old, man. Someone made a new painting, like, let's put an NFT up on the wall. That'll last about 45 seconds before that shit is out of date, right?
Yeah, I don't think you can build a good culture like that. You need, you need something, you need renewal and you need preservation. There are the yings and yangs of, of moving things forward.
Andrew: So yeah, you've been posting a lot about like moving off of Apple products Apple's done a lot of things recently What do you think's the most egregious thing that they did that kind of like prompted this full move
off of their platforms?
David: Nuking PWA support in Safari in Europe, or at least announcing that they would. That to me was the straw in much the same way. That I started collecting the books I really care about in paper after the Kindle incident. It was the same thing that made me interested in Bitcoin. After Canada did their insane crackdown on protesters, the trucker protest, where they were freezing the bank accounts of even supporters.
Where I went like, whoa, whoa, whoa, whoa, whoa. I have a broken mental model of what societies are willing to do in relative peacetime. Uh, I don't fucking know what's going to happen if it's not even so relative peacetimes. Like, things could have gotten a lot worse, and I won't legislate all that, and I know there are plenty of Canadians who feel otherwise, and that they deserved it and whatnot.
Let's not even get into all of that. But just, let's get into the idea that I realized that I had mental models that were not correct. Bitcoin, Canadian trucker protest. Oh shit. My mental model is not right. I'd actually like some digital cash. I'd like some cash that can't be confiscated. I like the bank account that can't be shut down by the government.
And now here I have like a modern Western society proving exactly why that is not just like an abstract concept, but like kind of feels real. Um, the Kindle example, when those books start disappearing, I was like, shit, we just went through quite a troublesome time. Let's say that in the United States, where all sorts of books teetered.
On both sides, perhaps, however you want to legislate that, as being something that should be memory ahold, or not even exist. Like, I don't see it as that far of a hop. That what got kicked parlor of the internet could get like some unpopular book about some sensitive topic kicked off my Kindle. So this disappearance, which connects exactly to this discussion we just had about heritage and culture and permanence and being able to hold a photograph that doesn't disappear in your hand back to the future style was what was invoked.
When Apple nuked something that was already out there that people already depending on. And I mean, this one feels extra special and personal to me because we literally just launched a product, Campfire, which has a PWA component. And for the people who use that on an iOS device in Europe, which granted is not a majority of our customer base or whatever, but still an important one, suddenly saw the rug pulled out from under them.
And they had no recourse. Well, they had ultimate recourse. They could throw their iPhone into the river. I hope at least two of them do that just for shock effect. Most of them won't. Most of them won't. That's the power of modern tech ecosystems. Incredibly, insanely sticky. Um, designed to be so. And I saw Apple in its most smug, most demeaning, most dictatorial, Entitled image and I went like fuck.
How is that the company that I evangelized for so long? How did it become this fucking villain now some false purple person or Richard Stallman? We'll see see this is what I literally told you for 40 years Unless you have total freedom of everything and you have to source code to all your drivers You are damned to go through this and maybe he was right But I think living that austere of a life with that level of dedication, I can have tremendous respect for that.
Again, don't even have to litigate the person, Richard Stallman, and all the stuff that's in that category. Just go to like, hey, here's at least in its caricature, a person who lived their beliefs. With the caveats that are always true, with every significant historical figure you can ever dig out of history.
There's always asterisks, right? fuck it The idea that Apple just controls My world to a degree where things can just disappear out of my hands things I already had not things I asked for I would have liked to see them do but things I actually held and they just went Yoink this thing no longer exists and and fuck you if you care about it.
It's just a few users if you it's unfortunate, but These things happen. Eh fucking what? Um, that was just such a triggering moment. Now, of course, had that been a sole, isolated incident that had just happened in a vacuum and it was the first time I would have done it, you're like, whoa, whoa, that's weird.
But it wasn't, right? Apple has been on this trajectory for quite a while now. I mean, personally, I've had like two major fights with them over App Store access. Not even App Store access. I don't give a shit about the App Store. iPhone access. The access for customers that I find to be able to install the software that I make on the devices they paid a thousand dollars to own to fight over that access has been going on for a long time.
And here comes the final straw where I just go like, shit, do you know what? I could also just retire. Like if I don't enjoy what I do,
this goes to the aesthetic thing. If you forced me tomorrow, that the only way you could make software going forward was to do TypeScript in like an IDE. With a shitty font on a low DPI display in an open office.
I'm planting potatoes. That sounds fucking better than that, right? I don't want to live like that! And maybe, again, part of it is I'm old and I'm fortunate enough to do that. I don't want to live like that. And the Apple thing has brought me much closer to, like, I don't want to live like that. I don't want to live in that realm like that for the rest of my time here.
Let's try some different things. Even if those different things are worse, and they will be, Apple is really good. They make exceptional computers. Really good phones. Now what I found out, I switched to Android first. That Delta is quite small. I guess it's a little bit short. I've always had an Android phone.
I've actually had, I don't know, fucking 20 Android phones. Testing them and using them. Um, after Fortnite got kicked out of the app store, it was the main way I've been playing Fortnite with my kids. I bought everyone Android phones, which is like, now my kids love Android phones. I think Apple is this main villain.
Whenever they see like, Oh, Apple, that's the people who kicked out Fortnite. I was like, do you know, did you like account for that somewhere in your investor perspective that you pissed off an entire generation of young folks by kicking out Fortnite? Anyway, so I've had Androids for a long time, right?
I've not had my personal phone number. In an Android phone for 10 plus years, maybe I think the last time I tried it was a Motorola fucking one of my favorite phones of all time was Motorola for a short moment. I think maybe 2010 had this thing where you could build your own phone with literal actual would I think it was called.
I forget what it was called. It was so damn cool. It's like I've owned maybe, I don't know, 50 phones, 100 phones since phones kind of became computers that one phone that Motorola. With the, Oh, no, it wasn't even, Oh, it was like a dark wood back that you could design and they had like the studio that we're putting together.
Still one of my favorite phones of all time. Anyway, not since that day, have I had my primary phone number in an Android phone? And, and now I do. And I'm like, Oh, this is. Totally fine. I, I, the difference now to an iPhone, there's some things I like a slightly better about the iPhone. There's a bunch of things that like slightly more about the Android, including things that surprised me that you don't really learn unless you put your primary phone number into it.
Like Android auto is better than CarPlay. I was like. Didn't CarPlay come out first? Like I, that I wouldn't have thought that like the UI dynamics of Android auto would have been better, but it's like, Oh, okay. Turned out it was, um, I really, um, I don't know if we have video on this, but I use this, um, Samsung, um, S 24 plus it's fucking awesome.
It's 192 grams, which is almost exactly the same as an iPhone 15 pro. But it's a 6. 7 inch screen that gets like 25 percent brighter, which makes it so you can actually play Fortnite out on the deck. Um, it's awesome. So that part was easy. The other part, switching off the Mac is hard. I'm not going to lie.
I, I've been trying, I mean this is, uh, before we started I said I have just computer gear scattered all over my room, I have a framework 13 laptop here, I have a, uh, Dell PC there, I have two different monitors behind, I just have shit everywhere, because I'm like, you know what, I would like to get off the Mac, I really would, because I'm We're just not we're not going in the same direction.
That doesn't mean fraternity. I got off Windows back in like 2001 but I got that first iBook right and like now I'm I've tried Windows again I'm like, oh Windows doesn't suck as much as I thought it did it is still harder and Does kind of suck in some ways but it's also better in other ways like you can actually run real Ubuntu Under VSL, like, encapsulated by itself at almost full pace, full speed, shit, that's cool.
Um, so, anyway, I'm in that process of at least locating the exits, right? Sitting in the fucking theater, like, you know what? might burn to a crisp any minute now, I need to know where the exits are. And one of the exits is like, you know what? I'm 44. Maybe this was a good run time to retire as a little bit depressing.
The other exit is like, do you know what other people make computers than apple? In fact, apple is so keen to remind everyone. No, there's no lock in. What do you mean? You can just switch like virtually no one ever does it maybe like there's some instructiveness in that that is not that actually fucking easy Um, but I am determined to at least find out whether it was like and maybe Find something new across the way.
Let me, let me show another thing. For the longest time, my favorite keyboard of all time was this. I know a lot of people hate it. I fucking love it. It is the Apple standard keyboard. It's the ultra lowest, um, sort of thing that still works. But now I've been trying this. Look at that. Fucking mechanical keyboard.
I've been making fun of people using mechanical keyboards. Here, here I am. Clicking and clackity. Listen to that shit. Listen to that shit. So anyway, It's a time of upheaval, which is also good in itself. I just finished a major project, and you need to have a hobby, and sometimes your hobby is like, let's just fucking throw everything you know up in the air, and try something new.
Maybe, maybe I should use Vim. Maybe I should, uh, maybe I should use a PC. Maybe I should use, like, Linux. Let's, Let's fucking try it all.
Let's try it all.
Justin: Well, there's been sort of two themes here. One is sort of aesthetics and one is ownership. And just a side note, I really love framework laptop. It's a great laptop, but generally, like You know, there is a sense of like, we want to own more and more stuff. Um, and because of a lot of the things that you've highlighted is cause like the, the fact that you can just lose access or something can be just deprecated, not even nefariously people just like stop supporting it because it gets too old or whatever, and then you can't use it anymore.
[00:55:16] Rethinking Cloud Dependency and Advocating for Simplicity in Web Development
Justin: Um, So recently y'all had announced that you're moving off of the cloud. Um, so this was a big thing for me, cause I used to work at Oxide computer company, who is trying to build a better on prem computer because it's like, feel like that industry has been behind a little bit, but could you talk a little bit about sort of the motivations for that and, uh, where you're at with that decision?
David: Yes so first there is direct philosophical. line to everything we've been talking about for about an hour, that all this sense of independence, the permanence, the freedom, all these things are so much easier if you're not renting other people's servers managed by other people's sysadmins. But you actually own the computers and you own the software that's put on it and you understand the services that run with it.
If that's the case, you just have options. You have options to move. You have options to do a lot of different things that may, you don't have to ask anyone for permission. I brought up the parlor case again, not because I have any fucking interest in. Discussing the politics of it. Just the overall trend of the idea that the death kneel to that service when was, was when AWS kicked them off. And if you go back and read like for why that happened, I think you have to be rather captured by ideology, at least in the year 2024 to read those justifications and go like, yeah, that's right. That seemed fair. They should lose access to the internet. What? Again, it's one of those traits of bullets, right?
Like one of those, uh, Canaries that just fucking drops dead. Like the frozen accounts in Canada, the PWA in Europe, The books disappearing from Kindle. Parler getting kicked off AWS was one of those things where you're just like, wait, wait, wait, The infrastructure level is not even politically neutral?
Like I get that like you can get banned from Twitter, You can get banned from threads or whatever, but like your servers get evicted? And not for committing a crime, but for committing an ideological transgression? Holy shit! Those, uh, those guidelines, they could change quite quickly! In fact, I found myself for a hot minute on the wrong side of those ideological guidelines when we did something controversial some years back.
And I just went like, mmm, I don't like that vision at all. I don't like that vision at all. If we're going to be a nation of laws where people can predict like what's going to happen in terms of codes of conduct, if you will, that are actually written down and passed by legislatures. This shit, the fucking, this is the upside world, upside down world, this is bizarro land, this is, I don't want to be there.
So there's that, that was already simmering, it was cooking, and then it just always says, the spice that makes the reaction go, was something as base as money. Seeing the fucking bills. Come in months after months from AWS and going like, this can't be, we've got to be just getting over a hump and we will just, we will reap the advantages of the cloud and like about five minutes and we will find some ways and we will use all the modern, just never happened.
The bills just kept getting larger and larger. Even as computers are getting faster and faster, cheaper and cheaper, AWS just goes the other way and you go like, what the, what the fuck, how's this happening? And then just realizing, all right, all right. No, no. I forget what it was. Oh, it was translating how much money we spend on a weekly basis.
That's what radicalized me. It was taking like an abstract number. Like we spend 3. 2 million on cloud every year to how much that is every week. And I just went like. Those numbers don't mix week that much what to rent a bunch of computers that number that weekly number is a very large number that could buy some very large computers like that week that week.
If we just took that week's number and spend it on hardware, we would get a lot of hardware, a lot of hardware. In fact, we spent 600, 000 on our cloud exit. Um, let's do the math here. That's two months of rent at 3. 2 million. The numbers, whatever, this is just rough math here. Right. But imagine in two months of rent, you're like, yeah, or you could just own all of it and it'd be yours and you could run it for like five, seven years and then not pay anything for those machines.
Like you'll armatize them, you pay for the, the power and you'll pay for the internet and so on. Those are not insignificant costs, but you wouldn't pay for the hardware and it'd be yours. And like, kind of, no one could take it from you. I mean, you could get kicked out of a data center, I guess, but then you could wheel those computers over to, across the, across the street to another data center.
Wasn't that what they did with Twitter or something? Just in the middle of the night, a truck pulled up and they just like took pallets and pallets of servers and they moved them somewhere else. Um, so, it was money, it was philosophy, and, It's done. That's the crazy thing too. So we started this, we announced that we were going to do it like for real.
In the beginning of, uh, 2023, six months later, that summer, we celebrated pulling out the last major application. We had seven that were on the cloud, including hey. com, our email service that was born in the cloud, never lived on prem, all of it got out. What's left now is some file storage in S3 and that's basically it. And now just, those servers we spent 600, 000 on, like, whatever, is that gonna be like, 8 months ago? Or just fucking, it's like they're sending us royalty checks for what a good decision that was every month. Like, hey, look at all the money you're not spending with AWS, this is yours! Buy ice cream for everyone.
You could buy a Lamborghini for everyone. You could do this. You could do that. Here's a bunch of money you get to keep instead of sending it. Um, there's other way in our rough back of the envelope can go calculation. We were going to save 7 million over five years now. I don't know, if you're fucking some huge company, that doesn't sound like a lot, and I realize of course everything is relative, so if it's 7 million to me and my scale, it's probably 2 million, 200 million to you at your mega scale, or some other figure that is proportionately relevant to you.
Um, now, does this mean cloud has no value? Everyone should move out of the cloud? No, it doesn't. I think cloud is still wonderful when you want to rent. When you don't know whether the thing you're working on is even going to be around in like six months, right? Maybe no one wants this application. Should you then go out and buy a ton of expensive hardware like it used to be back in the 90s?
No, that would be kind of dumb. And the cloud is awesome for allowing you to render a bunch of stuff, but it's also really expensive. Just like renting anything is like, imagine you're like, Hey, I need to, um, commute 200 miles every day. I could either rent a car, um, for the next 10 years, or I could buy a fucking car.
How much more are you going to pay to rent the car? You're going to pay a lot more. It's basic rent versus buy economics. And I wish more people saw it that way, but the cloud marketing has been so incredibly successful. I mean, hall of fame, one of the best campaigns ever pulled off anywhere that the cloud providers convinced everyone like, no, no, no, you're actually too stupid to turn on a computer and connect to the internet.
Don't you worry your pretty little head about that. Let, let, let us take care of that for, for a fee for you. What do you mean, a computer to the internet? In this age? Do you know how dangerous it is to connect a computer to the internet? Like, what? We like, all did it five minutes ago. Literally the entire internet as you know it today, was a bunch of people who bought computers and connected them to the internet.
Like this whole cloud thing is very modern, very recent, again, because of the way the seniority of the tech industry works, a generation or three of developers have never known anything else and find this idea of running their own hardware is like this uniquely scary, I don't know how they built the pyramids, like, what do you mean, plugging in computers to the internet?
That's just something an API does, isn't it? yeah, so we're out of the cloud. We're saving a bunch of money. I'm loving it. I wish more people would do the math. I don't hate the cloud. I think the cloud makes sense with very spiky traffic patterns. Amazon's original purpose with this was very, very spiky traffic patterns.
Or early days stage things where renting is a sound financial decisions and you shouldn't buy. But as soon as you have anything even approximating steady state growth, and that can still be like hundreds of percents a year, I'm not talking about anything, just as long as it's like, Oh, maybe it's a hundred thousand percent or maybe it's zero percent.
Yeah. Okay. If you have that variance, stick with the cloud. as soon as you've been around for like five minutes, you're not going to have that level of variance or literally you're one in a billion company. start thinking about whether it would make more economic sense to own the computers that you run and then realize all the benefits, all the philosophical benefits.
We haven't even talked about the fact that if us east one goes down tomorrow. Like a third of the internet is, oops, offline. Like, what? Didn't DARPA design this amazing wonder that if the Russians nuked DC, like, the rest of the command structure would still operate? Because we distributed our computing and distributed our network so that individual nodes could disappear and it wouldn't take the whole fucking thing down with it?
Yeah, they did. We should be, like, lighting scented candles in front of that eighth wonder of the world on a regular basis. Yet, we go, just go like, that's stupid. Let's just give all our computers to Amazon and put them in Virginia.
Andrew: Yeah, I agree with a lot of points there. And I know Justin does too. Uh, we know you got to go soon, but we have one question that we like to ask all of our guests. We always like to ask a future facing question. And I think the question here is obvious. What do you think the future of web development is?
David: Simpler. Simpler. We've gone through fucking 40 years in the desert, not literally, but metaphorically 40 years in the deserts of needless compla not needless complexity. Actually, that's wrong. Of necessary, but temporary. We built bridges to get from A to B and now we're at B and people haven't realized the bridges aren't necessary.
In a lot of cases. Not in all of them. Let's not be declarative about everything. But like, where's the pendulum swinging? The pendulum is swinging. I fucking am. Banging on that pendulum to swing towards simplicity, that individual programmers can understand the entire system that they're working on. That new businesses can start with like one programmers, two programmers and built the whole thing that they need without these massive teams of minute specialization.
Well, I'm a front end performance design expert. Cool. All right. I hope that's just one of the things you do because otherwise that's not going to fly here. Um, full stack. In its most glorious sense, which basically just full stack is just a buzzword for the whole system. Can you understand the system that you built?
Or do you need like five brains to even grasp what's going on? That's one of the arguments I have with people sometimes over Kubernetes, for example. It seems like, yeah, it's either a five distributed brain problem to solve or one very smart PhD. I don't have any of those two things to throw at this problem, so I need something simpler.
That's how we ended up with Kamal, built on top of Vanilla Dhaka. Uh, something so, I say, I say dumb. This is what people often do. They like, oh, that's just dumb. No, no, simple is not dumb. Simple is fucking sophisticated. It takes hard work and insight to get to simple. Getting to complex is actually usually the shorter path.
It is writing the longer letter when you didn't have time to write a short one. I want to write short letters. I want to compress complexity, and I think this damn industry deserves it. We need to get to a simpler place, because we're still doing the same thing. This is what brings me to tears. If we were living in some fucking space age, VR, we're all just flying around.
Floating matrix simulation shit, where I can't tell the difference between the lady in the red dress in the simulation and reality. Okay, you can make it however the fuck complicated you want, but we are rendering, rendering forms, text fields, H1s, paragraphs, and it is virtually indistinguishable from 19 fucking 95.
Like, it's a little prettier, the corners are rounder, and a better alias, translucency layer. Um, there's a little bit less, uh, back and forth to the server, but we're doing the same fucking thing. Please. Please! It's not, it does not have to be that complicated. It really does not, and we should actually, and I include myself in part, because that's always a good thing to do when you're part of an industry, we should be embarrassed.
That we've let it get this far. Again, I say that and then I also want to respect the bridges and maybe you need to go through embarrassing, awkward phases of growth where everything just fucking sprawls out the wazoo and no one can understand the whole thing. To arrive at the final destination, maybe there is no other path.
But it's like one of those adventure books where you can't just go around the enchanted forest. You gotta go through it. If you want to get to the castle You wanna slay the dragon, you're gonna get the treasury. You gotta throw, go, go through the canid forest. Gotta, you gotta wrestle with some goblins here.
Like there's no other way. Um, if that's true, I will say the journey has been worth it. But we gotta, we gotta get to the gold man. I mean, it's all dragon and have. And a shocking number of people in this industry is like, dragon's actually kind of nice. Like if you just take some time to get to know him, I mean, he'll burn your village to a crisp every now and then, but like, come on, it's a dragon.
It could fly.
Andrew: Well, I, I like the answer says simplicity definitely hearkens back to a lot of your ideals. We talked about the start and I hope we slay those dragons, but that's, that's it for, uh, DevToolsFM this week. Thanks for coming on, David. This was a really fun conversation and I had a blast just getting to see your point of
view like this.
David: Thank you for having me on. This
was really fun.
Justin: Thanks David.