YTread Logo
YTread Logo

DHH - Ruby on Rails, 37signals, and the future of web development

Jul 02, 2024
Sometimes you can get caught up in a certain complexity that feels inherent to the platforms you're on, but they're not inherent at all, they're temporary bridges that we need to get from A to B and once we get to B, it requires a certain distaste for accidental complexity to say: Hey guys, we can blow up that bridge if we want. Hello, welcome to the Developer Tools FM podcast. This is a podcast about

development

tools and the people who create them. I'm Andrew and this is my co-host Justin Hi everyone, we are very excited to have DH hron, so David is the co-owner of 37 signs, and the CTO, it's really exciting to have them here, they are very famous for creating

rails

that have been It's a tremendously impactful tool for the ecosystem, so before we get started, is there anything else you'd like to tell our listeners about yourself?
dhh   ruby on rails 37signals and the future of web development
No, I think it's a good introduction. I mean, it's my life's work. Ruby and Rails have been working with both. things for over 20 years and we just celebrated the 20th anniversary of the first Rails application basecamp. This is also what I'm still working on today, so yeah, my career focus is a big milestone, congratulations on that, thank you, yeah, just. To sum it up, Rails is definitely one of the most influential web projects of our time. I mean, it's really hard to underestimate the impact it's had, what the origin of the tool was and when you first created it, did you have any idea what it was? it's going to be such a big thing, yeah, so it started essentially, hey, I can do whatever I want on this project, question, slash query.
dhh   ruby on rails 37signals and the future of web development

More Interesting Facts About,

dhh ruby on rails 37signals and the future of web development...

I had been working with PHP and ASP and a lot of other tools in the late 90s and early 2000s, always as never instrumental, since I am a programmer, I like to program, it was more like programming, it's what I have to do to get the things I want and that's a good approach to programming. I don't find any fault with that, but after I discovered Ruby in early 2003 and then really put it to the test in 2003 by building base camp. My career took a completely different trajectory. I discovered that programming could be more than just a tool: it could evoke a passion, a love, and all of that was really unlocked. through Ruby and it led me to creating Rails as I was trying to use Ruby to create web applications and I discovered that at the time, this is 2003, there weren't many programmers in the West using Ruby for anything commercial and B there weren't.
dhh   ruby on rails 37signals and the future of web development
There weren't many programmers using Ruby 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 tools myself, which is exactly what I did and spent. about six months packaging all of that up creating that, as part of the basecamp project, we first released basecamp in February on February 5, 2004 and the first version of Rails was released just a few months later. Ruby on Rails is famous for being like a complete solution like if you want to generate things, you have generators, you have a bunch of functions that make your application

development

move very fast, in any other programming paradigm.
dhh   ruby on rails 37signals and the future of web development
I feel like developers are trying to create Ruby on Rails for the X experience, so do you think any other project has captured the magic that you captured with Ruby on Rails? It's funny because in the early days of Ruby and Rails, before I registered trademarks and just kindly nudged everyone, people literally called their thing Pearl. Rails python on Rails PHP on Rails, so there was certainly a lot of interest in trying to recapture some of that magic. I will say that there have been a lot of really good web frameworks and technologies created over the last two decades.
I've worked with Ruby and it's been inspiring to see the different directions people take me, although none of them are

rails

and the reason they're not rails is because they're not Ruby, they're not built on Ruby Ruby is just unique. Suitable for the kind of magic that describes rails, this extremely simple, text editor-friendly IDE requires no programming approach; it's really a forced function to remove every ounce of line noise, every character that isn't absolutely necessary to describe the solution to the problem. that you are facing and Ruby can do it due to its very complicated syntax to implement, but it is very easy for the programmer to understand.
This was the reason I originally met 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 parentheses where is all the line noise I thought that you had to have To be a real programming language, it looks like something I would write in English before writing the real program and I found that removing that layer of translation to make the programming language really look like how I think about programming is a technique incredibly powerful and is something that is surprisingly difficult to replicate even from many web frameworks and even languages ​​that are heavily inspired by what we do.
I mean, I love the stuff that happens with elixir with Phoenix and stuff, but you watch a Phoenix show. it just doesn't look like a program Rails doesn't look like a program Ruby has a lot of things for all kinds of things. I'm sure there are very good reasons, there are always good reasons for these things to be right, but that's what makes Ruby so unique that Matt has placed the programmer's joy and happiness as number one in his hierarchy of needs. , no other programming language I've seen has been. So explicit and determined to put the programmer first, most programming languages ​​would like to trade off Yes, maybe we could do without the semicolon, but then there will be edge cases where it will be necessary.
Here I am just taking an example, I mean every little line noise or even a big line noise, anyone who has done generic programming in typescript or any kind of language will work, well, yeah, it seemed like a dog did it. I would have thrown up, but it's really necessary for the compiler to understand that da da and that's all true, but that's also why Ruby is so special that Ruby was willing. to skate to where the disk was going to be I adopted Ruby when computers were what did an 800 megahertz iBook G3 have at that time?
Do you have any idea how slow that computer was? I mean, it's crazy how slow that computer was and it was good enough to run Ruby in literally 2001 right now. That we have had? What have they given us through the advancement of sand formation into these miraculous little chips? Just orders of magnitude, more orders of magnitude of performance and how we are. Now that we are facing perhaps an existential fight with AI, I think it has 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. get if we want to have any chance of staying. it's not only valuable but relevant as a program and maybe that's a cost of loss anyway, but at least in the last 20 years that I've been working with Ruby and Rails, I've seen the bet pay off time and time again.
I made an um. kind of back to that funny math example a while back, several years ago, 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 ton of money, blah blah blah, it turned out. At least for our company, the cost of running Ruby is the additional cost of running Rubing and even in the most extreme case, I think I compared it to C or something, no one is going to write a damn web application in C , but even if they did.
True, it was something like 15%, so the cost to Delta of using the fanciest programming language I've ever found was only 15% of our engineering budget, which seemed like a no-brainer. I mean, it's like you can get it. the Toyota yarus or for 15% more you can get a Rolls Roy wraith. Would you rather have the Rolls-Royce that has diamonds on the roof and floats along the road like you can't hear anyone but the yarus? 15% cheaper. For me, I take the Rolls-Royce, yes. I definitely appreciate your kind of aesthetic approach to this, so it's like it's the feeling as much as everything else and there's a real value and tenderness because there's only the general. of likes the more characters there are on the screen, the more code you write, the more you have to maintain, the more chances there are of making mistakes, sure we would like to thank our sponsor for this week Cod Crafters Cod Crafters makes programming challenges for software engineers experienced, if you are looking for something to do on the weekend and want to improve your programming skills, they are a great option, they are much better than choosing something like code leak or any of those other challenge platforms in codec Crafters you can create tools modern and popular development while learning, at the same time, code in all your favorite languages, have rusted, use JavaScript and many more.
The nice thing about codec Crafters is that you can create real modern projects so they have things like build your own HTTP server rebuild grep rebuild sqlite I was recently going through the build your own git challenge and one thing I find really interesting about the platform is that it doesn't It's like college, if you're struggling to get the answer, it's not like you can't go and look at other people's work, so while I've been working on building your own git, I've been reading a lot of the other Python code to see. what they are doing and how I can translate it to JavaScript I'm still learning and they won't block me so it's a really cool experience and it really makes you feel part of a community when you can see what your peers are doing in addition to the content even the experience of the user is experience-oriented.
Software developers, for example, instead of tying it into a custom editor and browser experience code, Crafters simply stores, just pushes the code and runs the test for you, works completely in its own IDE with its own terminal and, actually only the Crafters codec is another origin. To push so you get instant feedback and can see how all the tests run on your code, it's great to try codec builders yourself, visit Codec Crafters. Developer Tools: FM there you will get a 40% discount and you will also help the podcast a little. If you want to sponsor the podcast, go to Developer Tools. fm/sponsor to apply and with that let's go back to the episode you guys mentioned typing here, so you guys had recently stopped typing and wrote a post about why you made that decision and it sounds like you know, similarly, it's about getting to the root of it. of the core aesthetic, the joy that you find and you know the simplest version of this is kind of like motivation, it's funny because that whole debate that blew up for a hot minute, as these things do on the Internet, it baffled me that anyone You might be surprised that I wasn't the biggest fan of typescript.
I mean, I've been professing my love for Ruby for literally 20 years and I've been one of the biggest proponents of dynamic duck-type languages ​​and it blows your mind. I don't like the generic Dog Bar it up code that you have to type if you want to create a framework, but how is that surprising? So I thought it was such a fascinating thing, but what it essentially boils down to is that I don't enjoy typing. I actually prefer JavaScript. JavaScript, as I have 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 many programming languages ​​over my 30 years with computers and JavaScript is number two, which is pretty good in my book. In fact, I enjoy writing JavaScript most of the time when I can write it the way I like. which is Manila, preferably without a packet transpiler written directly for the execution context. I care what the browser is and without the 5 million package nonsense that most projects include from npn if you remove all that, which is what I would say there. it was a book famous book I don't know 10 15 years ago JavaScript the good parts the good parts well the good parts for me are modern um JavaScript like es6 esm import maps running it all in the browser with nothing more than a text editor to prepare that code for running it, which is a truly enjoyable experience, typescript ruins a lot of that for me, firstly, you're now introducing a compile step, secondly, as I said, the code itself ends up being again, this is my aesthetic speaking here, but unpleasant.
I find a lot of typed code unsightly, unpleasantto interact with it, unpleasant to program now I understand why there are a lot of people. I'm a few people, but then again, there are a lot of people who really like typescript. it's because they like to program with an IDE, they like to have autocompletion, they like to use versus code, they like to have all these things and I'm like, yeah, I can totally see how types help, I think the language server protocols go a In some ways it brings a lot of utility to people who want two dynamically typed languages, but let's take it literally and say that the choice is between AutoComplete or not, the choice is between using an IDE or a text editor and i 'I'm proud to be a text editor, that's why I love Ruby so much, because Ruby can be programmed with a text editor without any bells or whistles and it's immensely fun.
I've used many IDs in my time, the first one I remember. I am simply amazed by the intelligence of Java. The intelligence is really nice, but it's a really nice IDE and I completely appreciate why there are people who like that, but for me it's a way to write Bose code more productively when my main opposition is not so much the productivity but the vibration part. I don't want to look at it. and aesthetics for me is near the top of what brings me joy as a programmer: designing a piece of code that when I sit back in my office chair and just look at it I say it's delicious, oh.
I love it I can't move a comma I can't line up an equal sign better than what I have wow this is cute I like that this is what I get a lot of my joy from it's not just about the results and I think this is where As we end up talking to each other, there are classes of programmers who will laugh at the idea of ​​placing aesthetics so high in the hierarchy of needs and ask why it matters, the user doesn't see it anyway, who cares? a lot and that care I've put into open source contributions for 20 years my taste I don't proclaim that this is a delicacy for everyone I don't proclaim that my taste and programming language should govern how everyone programs everywhere um certainly I At least I've acquired The Taste to realize that that was a bad Instinct, even if maybe I had it in the early days of Ruby unrails advancement, but the magic of working with the web in particular is that the web doesn't matter how you type it, 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 intellig j2e jbos, whatever whatever, maybe it's vs. code and typescript and react and Redux and whatever for me I was just going to claim something that's actually a little bit 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 I'll talk Of that in a second, but finding something that resonates with you isn't frivolous, it actually matters to a lot of people.
I give credit to finding Ruby literally the tipping point of my career if I had stuck with PHP or whatever. I want to say this is counterfactual, but I don't think I would be sitting here talking to you now, it would have just turned out differently, maybe that would have been okay too. I don't know, but what I do know is where I ended up. Up with Ruby with Rails has been a lasting love story spanning more than two decades based largely on mutual respect for aesthetics. You know, I think there's an essence here because for a lot of people, I mean, it's a kind of knowledge that we have. we often write code to be read or should we write code to be read because a lot more code is read than code is written and there's something about that you know even in the community we see different waves of this um and it can be like the choice of language and the popularity of the framework, but you know, even in the JavaScript typescript world we've seen people say okay, we'll move away from typescript and just use like js. comments as a way to give typographic suggestions for libraries and stuff, and that's something that's still pretty popular, it's like writing, which is a front-end movement and framework for that paradigm, so you know, I appreciate your approach. or I appreciate where you're coming from with aesthetics being something that's really important, by the way, let me let me pause that for a second.
The JS dog works for you great. I hate that JS bothers me too, I mean, that's just as warty. for me like the rest of the code it's maybe worse to some extent as I find the Comment Statement itself to be just another part of the recipe now again that doesn't take anything away from you if you like J Ducks. That's wonderful, that's great and I particularly appreciate it. I saw I forgot the guy's name, but who was cool once we got this L, we're getting off topic, he says this is just you responsible, blah, blah, blah, and then you said, well, us too.
We did, but we went to JS and then the question arose why, because typescript is a pain to write framework code in, it can be and is for many people relatively pleasant or perhaps completely pleasant to write framework code in. customer. I don't think anyone actually hasn't heard the argument. Generic typed code is awesome. Never, that's not a phrase that has ever left anyone's lips. I have been in contact with her and have heard a million. maybe not a million people, but a lot of people say that Ruby's meta-programming is amazing. I would say that every day of the week I would credit the metaprogramming power of Ruby as perhaps the most important element of why Ruby looks so amazing, why it is so good at writing domain-specific languages ​​because metaprogramming is very intuitive, simple and He comes up to um anyway, just to tell me that all the flavors are good.
I'm expressing my preferences, my passion for a certain variety and I'm finding it's strange that that resonates in certain corners as somehow a transgression that we're not allowed to have that unless we come up with a unique language, a unique framework, an approach like If we had done something wrong, we would have gone off the rails like what are you talking about? Do you think all chefs enjoy the exact same knife made by the exact same manufacturer? No, no, they have their own particular. Do you think that every painter enjoys exactly the same brush and the same paint formulation?
No, they don't, so this idea that we can't argue in good faith on behalf of the tools we like and then let our own eyes someone tell them what shines bright for them is strange to me and I partly understand, I partly understand that this whole thing has been and maybe always was a battle for attention and this is what's happening in all these different communities, they're all competing for attention, everyone is competing for the appreciation of the newcomers. you come in and you get the BL life and I get it and there's something to it too, there's a minimum viable community size.
I think it's easy to do things now. Personally, I don't care at all, I mean, I do, but as a side effect I wouldn't choose anything different if it were different, evidenced by the fact that I was literally, I was going to say the first person to make Ruby commercially for the web in the West, that's not literally true, but I almost did it literally. The first Ruby conference I attended was the third international Ruby conference that was held in 2004 or 2003. I'm going to the right. This is the gathering of people who were excited about Ruby in the United States.
There are 42 people. I asked the room how many people work commercially with this language. I raised my hand, another person raises his hand as if it were the right one. I would use Ruby whether we were a large, small or medium community because I like building my own tools, now I understand that it is not for everyone. to say, oh, I'm going to start building whatever is new and I'm going to build everything from scratch, so it does matter, but I think it matters less than the credit people give it. It's credit like it's a stack ranking and if you land in the top five, oh my god, what are you?
GNA, you probably do the top 50 programming stretch, maybe that's a stretch 40. I don't know exactly where the cut is somewhere out there. They are all viable options for programming for the web and that is why the web is so amazing. That's not true, if you program native apps for iOS or Android, there are absolutely blessed environments when it comes to those closed ecosystems and as was the case with Windows, the Web is different and that's why we should not only appreciate it, we should embrace it and celebrate it and we should shout from the rooftops how amazing it is that the first computer I ever owned, an Armstr 464, is probably connected to On the Internet, somewhere in the world, there is a strange monster that is put to work by connecting an arcade computer to the Internet and making it respond well 200 to an HTTP get request.
It's not just wonderful, yes, it's great, we would like it. to thank our second sponsor of the week runme dodev when it comes to cloud infrastructure, we live in a fractured and complicated world, it's 2024 and we're still storing trading stocks and wikis and relying on a bunch of scripts, markdowns and Fractured repositories to facilitate our releases runme want to place stocks of operations in their repository directly along with the rest of their code. With runme you can empower your entire team to be in charge of your infrastructure with simple notebooks, create mission control dashboards, interactive external documents, or even operational execution. books to get started, head over to runme dodev so while we're on the topic of modern takes going against the grain, we've talked about the aesthetic nature of code, but one thing is the same for all of them.
Language types is how it's delivered to the browser and as you said, you're a proponent of no compiling and no bundling, so what are the benefits of this way of operating? Is there still a place for grouping or just not? always grouping so for me I'm done with grouping. I bundled, uh, I came, I saw, I bundled and I left, that's basically the trajectory of the last one, what will it be, what was the last bundle, like 12 years, 15 years, you added it. in 2019 I saw Ruby, well I mean we go even further back with webpacker and even before webpacker, even before the JavaScript world woke up with bundling, we made packages for JavaScript in the Ruby world with sprockets um and there was a need for that in the beginning was performance with the number of HTTP requests you could make at the same time, I think you had four channels so basically you could only open four connections and you had to wait for each of those four connections will download something before it can.
That's next, so it really mattered how many requests you asked the browser to make. If you could reduce it from 20 requests to those four, there was a big performance advantage, so that's what led to bundling the part at least in those performance from the early days now hdp2 has solved that question. Now there are nitpicks where sometimes you can argue that the collection performance is a little bit better in this sense because it compresses better, but there are also other advantages to having a lot of small um files because they expire on their own schedules. I think maybe it's just A wash.
I'm not even going to say it's better, let's say it's a wash that means you no longer need bundling, you no longer need a small number of files to get great HTTP performance. We basically solved that and then the second thing that happened, which is I think what we all thought we wanted to happen, the browsers caught on to all the innovation that happened by pushing JavaScript forward and having polar fills and all the other things that were happening. , we did it. because the browsers weren't on the edge, like they weren't ready, they didn't have the latest JavaScript application that they have now, it's really good, all the Evergreen browsers, Safari Firefox and Chrome and all the derivatives like Edge and brave and all of that, they all ship with an awesome JavaScript implementation that supports map importing so you can have complete modern state module management without a transpiler without a package.
I think it's amazing, it means that when I write my JavaScript, I'm writing in text. file, which means I can again use just a text editor. I'm just moving characters. I dont have anything else to do. There is no step. It is a performance step. Actually, I don't think that was ever the main thing for me. and it's really not like that with es build and Bun, they are both super fast. I think it's amazing that they're super fast, but the complexity I can compress by leaving all that behind is really substantial and I don't think you'll really appreciate it until you try it, especially if you've been cooking in the package transpiling the world for so long. that you forgot what the world looks like outside when you forgot what it was or maybe you never knew.
I mean, actually, that's it. perhaps a fairer point: the vast majority of programmers working with the web today never knew amoment before this, they weren't around in 2005, six, seven, 8, whatever, before all this took off, so it's one of those things where sometimes you can get cooked into a certain complexity that is feels inherent to the platforms you're on, but they're not inherent at all, they're temporary bridges that we need to get from A to B and once we're driving, it would require some distaste for Accidental Complexity to go like Hey guys, that bridge, we can blow it up if we want, they might want to keep it and there are cases where it makes sense to keep it, but it's not necessary to do it at all with all the new stuff we have.
Building with 37 signals, including the latest product we just launched, which is a campfire, chat tool, installable software available on once.com. Completely no compilation, not just no compilation from JavaScript, no compilation for CSS, no SAS, no CSS publishing. Of those things and of JavaScript there is none of that either, that's me, that's what I prefer, that comes with a bit of compensation. I don't think that model works well if you want to rely on P10,000 packages on npm, you know? What is it not super compatible with? I like working with the web using Hotwire, which was going to say a minimal JavaScript approach, but that's not even true.
I write a lot of JavaScript stimuli, which is the main framework in Hotwire that you use to write new JavaScript in we have a lot of stimuli in the campfirethousands of lines actually thousands of lines of JavaScript in a campfire because that's how you become like the little final minute uh Fidelity when it comes to something like a real-time type. There are a lot of apps that don't even need that and I could just go with turbo and write absolutely minimal amounts of JavaScript and still get a great app, but what's true is that I'm not dependent on many other things and I actually totally understand that no, I was going to say I completely understand I don't completely understand I don't completely understand I was going to say modern but I'm not even sure modern is the programmer's propensity to want to depend on as many other solutions as it makes sense in the abstract Me, why would I reinvent the wheel?
Someone already did it, etc. I think to build the kind of apps that I make, I really want to understand what's going on. Now we can turn this into a slippery slope towards absum and, well, you. We're building in Ruby and that compiles into this and then it's C and do you also want to write it in assembly or even better with ones and zeros? I don't know what to tell you if we are going to be so absurd. Just telling you that using a package manager like npm isn't even about npm's technology, it's about npm's culture, is weird as a package that half the ecosystem apparently depends on, um, I don't think you're spot on. the scale of how many dependencies we should have some or we should have many.
I think it's admirable to try to go further and see how many we could have. I'm sure there are JavaScript projects out there that probably have tens of thousands of transient package dependencies, which is really amazing when you think about that kind of work, like I don't know if I want it to work, but it works, and that's amazing. I really don't like it like this. Why is it that if you look at our gem file, which is what we use to manage dependencies in our Ruby applications, there aren't that many dependencies? I'd say Campfire is probably 20 30 something like that.
Again, there are also some transient dependencies, so again it's not entirely fair. but they are orders of magnitude smaller than what is happening in the JavaScript world, which again is wonderful, let's have variety, let's try different things, let's have whatever C that doesn't yet have proper package managers that everyone agrees on or or whatever they are far right I will literally write every comparison function I need with my own hands otherwise I don't trust its performance and then there is something like Ruby which is certainly further down the line and then it is like JavaScript 400 miles down the line north.
From that, that's great, but going back to your PO, which still needs a package, I think if you're writing a completely JavaScript-based app, both front-end and back-end, you're using react, you're using all npn and you have all these transient dependencies, that's good, okay, great, you use all the configuration, you have wonderful tools. ESU is bu for me was the first one to really say oh man this is so awesome I love it because I've been using weback for a long time we integrate it into rails and we even ship it as part of the default configuration and I want to be nice no because it is the kindest thing to do, but because it is what really should be done. webpack was first paved with weback.
The way we came back deserves an enormous amount of respect for getting us to where we are, it was one of those first bridges and all these other things. I don't think I would have built what was once excessive if it weren't for all the people involved. with that we should get our kudos and congratulations right now, that doesn't mean you have to love it or where the final destination was and I didn't love where weback ended up and in fact no compilation exists, at least in part because I tried to make it one of my own apps using my own framework and integration with webpack worked on a new machine after not having worked with it for a year and a half and I spent literally half a day and was about to throw my computer away. out the window I like it, I couldn't get it to work and I just like it, this is ridiculous if I, who build whip Packer Integrations, who has been involved in all of this, if I can't get my own project working five minutes after was I wrote something that is deeply wrong and said, "You know what still works", an HTML file from 1995, you take that HTML file, put it in a modern browser and it becomes almost perfect, maybe the blink tag doesn't blink anymore , but everything else is there. that's the enduring quality of not building, it's the 30 year view, does anyone, even the most ardent fans of the JavaScript world as it exists today, believe that a project built with the most modern techniques at this point would still be easy to build? run five? years from now three years from now I even think it's possible to get it working in 30 years come on come on now it's fair to say I don't care who cares I'll just update all my dependencies and I'll always be active that and so on is fine , it's fair, it's compensation.
I care about other crafts and do you know why I still have apps that were created 20 years ago and not only do they make me money but I keep them for the love of them? love of heritage For the love of heritage, we have a free app called tadalis that was introduced in 2005. It was right on the cusp of early Ajax. I think he used maybe the first version of jQuery or something. I forgot, but it's like they're heritage specimens. that belongs in the museum, except people run it today, it has something like last time I looked, which was apparently a little bit ago, there were a thousand weekly users on this thing, we discontinued registrations in 2009, 15 years ago, still works. it works it doesn't just work we keep it I mean to me that's just amazing and it's amazing in part because I think this is what happens to older people who start to appreciate it like trees oh my god this tree is like 300 years old It is not like this? amazing and I think that's nature.
I didn't care about Legacy when I was 22. It was like new, new, new, right, give me something new and then you get older and then I think that's the circle of life and it's good. You think, but then you start worrying about Legacy, maybe because you realize that you're going to die and it won't take that long, so you started thinking you know what, um, I wish I wasn't around for I don't know X number of years. , it would be nice if the things I did could still run. This is one of the reasons why I love retro games so much.
I've spent I don't know how much money I've spent on retro game consoles. and settings and all that and I actually like the file part more than the actual gameplay. I wish I liked the gameplay a little more, but whatever, I appreciate the fact that the first computer game I remember, Yia Kung Fu on the Commodore 64. a 1 mahz CPU machine in 1984 or I can play that I play today you know what I can't play or use a shameless tool funded by VC like 18 months ago that is out of business that closed we all have been evicted and the data is gone and there is no way to run it.
No way that doesn't seem like a good paradigm for software development. It really isn't. Alright. I'll finish my monologue. No, no, that's great, you know? Remind me that I read an article the other day about a racing game that Ubisoft released that didn't even last that long and then they said, oh, we're shutting down the servers and no one can play it? There was no more local access, so it's like a game they released at People Ball and now it's gone and it's like it's crazy, especially because it's like I don't know, the games have only had what feels like recently. . getting into the category where you don't own what you know you don't own the cartridge anymore, but now it's like you don't really own it, you know in a real way, yeah, and I think you know what?
This is where we can appreciate modernity and also reject it and hate it, yes I like the fact that when I go to Denmark my Xbox has all my games and I don't have to carry them in my suitcase and that's good. but it's also not good that the games not only exist in a way where you don't own them, where they don't even like them, they literally exist five minutes late, as if Game Pass tomorrow decided to retire one of the games or they lost the contract. Whoever provided that game is gone, I mean the first hint of this was the Kindle.
I think they stopped publishing a handful of books and just disappeared. Could you even imagine that you're buying a bunch of physical books and you're like looking at them? look pixelated like Back to the Future style photography you're like it's just gone what kind of way is that to live? How do we progress as a culture if we have no sense of History if we have no ties to who we are? We have done and what we build if everything is ephemeral and disappears I think these are just not easy questions they are not even easy questions because there are tradeoffs there is a reason why SAS became so popular there is a reason why Bas cam earned hundreds of millions of dollars as a blatant solution for decades because it has properties that people like, but I think it's worth interrogating what parts we don't like, how we can mitigate the parts we don't like or at least provide some form of alternatives, this It's what we're trying to do with installable web software which sounds like an oxymoron, except if you remember that 40% of the internet runs on WordPress, which is installable web software that people run their own server, but outside of that small domain. and a handful of others, most people think of web software, they think of SAS, they think of something you sign up for and then there's another company that runs it, etc., and I think that's out of control shouldn't be like 99 .9 versus 0.1 maybe it's 8020 maybe it's 7030 maybe it's 5050 I don't know but I want to find out and I want to help you get out of the 0.1% that I want to restore. the idea that you can have software, maintain it and it will still work 40 years from now, maybe this is the time to call back when I said, what do I really like?
Like, text buddy. I like Ruby. I like it. Well, the text companion part has been left a bit up in the air, because unfortunately it's the kind of software that works like a specific operating system, it works on Macs and I've been a huge Apple fan for the longest time I've ever been a booster. from Big Mac I adopted OS X as it was called with Puma. I think it was 10.1 September 2, 2001. I think it was like the second version or maybe the third version and I evangelized it to the core. for 20 years and then what happens is things change for 10 years or 20 years people change companies change Apple changed and Apple has become the kind of company that I wouldn't volunteer to promote these days, preferably I I would like to depend less on Apple So this gives me a problem, right?
My favorite editor for literally 20 years only runs on this one platform. What do we do well? It's one thing to realize that it's okay, too bad. I love done text more than I don't like the current Apple. leave that option open, the other option is to realize that there are other software ports that have survived both Apple and Microsoft and Wayan and Wax of Empires coming and going intact and bi is a great example of that, literally, it tracks its inheritance until before. I was born, I think the first one was that the publisher that traces its lineage back almost 50 years to the dawn of modern computing, that'sa testimony that this could exist in 50 years.
I think that's cool, and again it's cool, maybe partly because I'm getting old, but I clearly knew Vim. it's also great for people who weren't just like the old guys um and I think you should always be skeptical about who's pushing this if it's just a bunch of overly nostalgic old guys who can't keep up with the times that's something but if it's a broader coalition of people who realize that the same values ​​have lasting content, maybe that's something else and I think VI emex 2 for people who were interested in that, but I've actually used VI, so I find it a little easier to contemplate the possibility of moving.
Going back to VI, that's something that fits within this paradigm of software like Heritage, software is a culture, a culture that we take care of, where we don't throw out all the P's, what a Mona Lisa, that's an old one, someone made a new painting . It's like we put an nft on the wall that will last about 45 seconds before it's outdated, 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. they are the yings and yangs of moving things forward, so yes, you've been posting a lot about moving away from Apple products.
Apple has done a lot recently. What do you think is the most egregious thing they did? this whole move off their platforms destroying pwa support on safari in europe or at least announcing that they would, for me that was the final straw the same way i started collecting the b that i really care about on paper after the Kindle incident, it was the same thing that got me interested in Bitcoin after Canada cracked down on protesters. the truckers protest where they were freezing the bank accounts of even their supporters, where I was like: whoa whoa whoa whoa I have a broken mental model of what societies are willing to do in times of relative peace uh, I don't know what's going to happen if it's not even times of relative peace that things could have gotten much worse and I won't legislate all that and I know there are a lot of Canadians who feel the opposite and that they deserved it and all that, let's not even get into all that, but let's just get into the idea that I realized that I had mental models that were not correct Bitcoin Canadian truckers protest oh my mental model is not correct um Actually I would like some digital cash I would like some cash that can't be confiscated I like the bank account that the government can't close and now here I have a modern Western society that demonstrates exactly why that's not just an abstract concept but it feels real in the Kindle example when those books start.
Going away, I thought we had just gone through a pretty problematic time, let's say in the United States there were all kinds of books floundering on both sides, perhaps, however, you want to legislate that as something that should be preserved in memory or not even exist as me. I don't see it as such a big leap that what was kicked out of the internet room could become an unpopular book on some sensitive topic released on my Kindle, so this disappearance connects exactly to this discussion we just had about heritage, culture and permanence. and being able to hold a photo that doesn't disappear in your hand Back to the Future style was what was invoked when Apple attacked something that already existed and that people already depended on and I mean this feels very special and personal to me. because we literally just launched a campfire product that has a pwa component and for people who use it on an iOS device in Europe, which is not the majority of our customer base or whatever, but it's still important, Suddenly we saw that the rug was being pulled away from us. underneath them and they didn't have any good recourse, they had the last resort: they could throw their iPhone in the river.
I hope at least two of them do it just for a shock effect. Most of them won't. Most of them won't. That's the power of Modern tech ecosystems are incredibly incredibly sticky, um, designed to be that way and I saw Apple in its image titled most smug, most degrading, most dictatorial and I thought: how come the company that I evangelized for so long how did this villain become now a purple Foss? person or Richard Stallman you see, this is what I literally told you for 40 years, unless you have complete freedom for everything and you have the source code for all your drivers, you are doomed to go through this and maybe I was right, but I think living that austere life with that level of dedication I can have tremendous respect for that again, I don't even have to litigate against the person Richard Stalman and all the things that are in that category, just say: "hey, here's at least in your car cartoon a person who lived his beliefs with the warnings that are always true with every important historical figure you can pull from History, there are always asterisks, right, the idea that Apple simply controls my world to a point where the things can disappear from my hands.
I no longer had things that I asked for that I would have liked to see done, but things that I actually had and they just left, this thing no longer exists and if you care, it's only a few years, it's unfortunate, but uh, these things happen, um, that was such a triggering moment, of course, if it had been an isolated soul incident that had just happened in the void and it was the first time I would have said it, it's strange, but I wasn't good. Apple has been on this trajectory for quite some time, I mean, personally, I've had two major fights with them over access to the App Store, not even access to the App Store.
I don't care about access to the App Store for iPhone, access for customers who I found out I can install the software I do on the devices, they paid $1,000 to own the fight over the fact that AIS has been going on for a long time time and here comes the straw that breaks the camel's back, where I simply say: you know what could? also just walk away like I don't enjoy what I do, this is for an aesthetic issue if tomorrow you forced me to say that the only way to make software in the

future

was to make typescript like an IDE with a shitty font at a low DPI. display in an open office I'm planting potatoes, that sounds better than that right, I don't want to live like that and maybe again, some of this is old and I'm lucky to do it.
I want to live like that and the Apple thing has brought me a lot closer to 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 at what it does, they make exceptional computers, really good phones. Now what I found out, I first switched to Android, which Delta is pretty small, kind of surprised me a little bit. I always had an Android phone. In fact, I have it.
I don't know. 20 Android phones testing and using them. After Fortnite got kicked out of the App Store, it was the main way I played Fortnite with my kids. I bought them all. Android phones, which is like now my kids love Android phones and they think Apple is the main villain every time they see like, oh Apple, those are the people kicked out of Fortnite. I thought, you know? Did you like factoring that in somewhere in your investor outlook that made you angry? Anyway, I've had Andrew for a long time. I haven't had my personal phone number on an Android phone for over 10 years, maybe I think the last time I tried it was a Motorola, one of my favorite phones of all time was Motorola for a brief moment.
I think maybe in 2010 there was something where you could literally build your own phone out of real wood. I think it was called. I forgot what it was called. It was so cool. it's like I've had maybe I don't know 50 phones 100 phones since phones became computers that phone that Motorola with the oak no it wasn't even Oak it was like a dark wood back that you could design and they had this studio which was putting together one of my favorite phones of all time, anyway, since that day I haven't had my main phone number on an Android phone and now I have it and I'm like, oh, this is totally fine. difference now with an iPhone there are a few things I like a little more about the iPhone there are a lot of things I like a little more about Android, including things that surprised me and that you don't really learn unless you enter your main phone number, As in Android auto it is better than carplay.
I thought that if carplay didn't come out first, I wouldn't have thought that the UI dynamics of Android auto would have been better, but well, it turned out to be um, really, um, no. I don't know if we have a video on this, but I use this amazing Samsung um s24 plus, it's 192 G, which is almost exactly the same as an iPhone 15 Pro, but it's a 6.7 inch screen that becomes 25% larger brilliant, which makes it so you can I actually play Fortnite on the platform. It's amazing, so that part was easy and the other part, turning off the charger is hard.
Yes, I'm not going to lie. I've been trying. I mean, this is before we started. I said I just did it. Computer equipment scattered all over my room. I have a Framework 13 laptop here. I have a Dell PC there. I have two different monitors behind me. I have them everywhere because I'm like, you know what I'd like to get out of the Mac? I really would. because we're just not going in the same directions, that doesn't mean that for eternity I left Windows back in 2001 when I got that first iBook right and now I'm and have tried Windows again.
I'm like, oh, Windows doesn't suck as much as I thought, it's even harder and it sucks in some ways, but it's also better in others, like you can run real Ubuntu under vsl as if it were encapsulated by itself. at almost full speed, full speed, that's cool, um, so anyway I'm in the process of at least placing the exits right in the theater, like you know what this could burn down at any moment. Now I need to know where the exits are and one. one of the exits is like you know I'm 44 maybe this was a good time to retire that's a little depressing the other exit is like do you know what other people make computers besides Apple?
In fact, Apple is very keen to remind everyone of this. No, there is no block, what do you mean? You can just change like practically no one does, maybe there's something instructive in that, that's not really that easy, but I'm determined to at least find out if it was or maybe find something. new across the way let me show you something else for a long time my favorite keyboard of all time was this one I know a lot of people hate it I love it it's the standard Apple keyboard it's the lowest um kind of thing that still works but now I've been trying this look at that mechanical keyboard.
I've been making fun of people who use the mechanical keyboard. In itself, I just finished a major project and you need to have a hobby and sometimes your hobby is just throwing everything you know into the air and trying something new maybe maybe I should use Vim maybe I should uh maybe I should use a PC, maybe I should use Linux, let's try everything, let's try everything right, there's been two issues here, one is kind of aesthetics and the other is ownership, and just a side note. I really love the frame laptop, it's great. laptop, but in general, as you know, there is a feeling that we want to own more of our things, because of a lot of the things that you have highlighted, like the fact that you can lose access or something can be just obsolete, not even nefariously, people just like to stop supporting it because it gets too old or whatever and then you can't use it anymore.
Recently, you all announced you were moving out of the cloud, so this was a big deal. For me, because I used to work at Oxide Computer Company, which is trying to build a better computer in Prim, because I feel like that industry has been left behind a little bit, but could you talk a little bit about the motivations for that and uh, where Are you with that decision? Yeah, first there's the direct philosophical line from everything we've been talking about for about an hour that all this sense of independence, permanence, freedom, all of these things are much easier if you're not renting other people's servers run by other people's administrators, but you actually own the computers and you own the software that is installed on them and you understand the services that run on them.
If that's the case, you just have options, you have options to move. options to do many different things that may not have to ask anyone's permission. I mentioned the Parlor case again, not because I have any interest in discussing the politics of it, just the general trend of the idea of ​​death kneeling to that service, when AWS started them, and if you go back and read why that happened , I think you have to be pretty captured by the ideology at least in the year 2024 to read those justifications and say, yes, that's true. It seemed fair, they should lose access toInternet.
Which again is one of those traits is the bullets, like one of those canaries that just lose debts like frozen accounts and Canada, the pwa in Europe, books that disappeared from Kindle and got kicked out of AWS. one of those things where you just like wait, wait, wait, the level of infrastructure isn't even politically neutral. I understand that you can be banned from Twitter, you can be banned for threats or whatever, but your servers are evicted and not for committing a crime. But for committing a holy ideological transgression, right? Those guidelines 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 a few years ago and I simply said: I don't like that Vision at all I don't like that Vision at all if we are going to be a nation of laws where people can predict what will happen in terms of codes of conduct, if you will, that are actually written down and approved by legislators this this is the world upside down world upside down this is Bizarre Earth this is I don't want to be there like this that there is that thing that was already simmering was being cooked and then, as he always says, the spice that makes the The reaction is to go with something as basic as money, see the bills arrive month after month from AWS and do this , it can't be that we are just overcoming a hurdle and we will just reap the benefits of the cloud in about 5 minutes and find some ways and use all the mods, but it never happened, the bills kept increasing higher and higher, even as computers become ever faster, ever cheaper, AWS just goes the other way and you say: like what?
What the hell is this happening and then I realized? Okay, no, no, I forgot what it was, oh, I was translating how much money we spend weekly, that's what radicalized me, I was taking as an abstract number like we spend $3.2 million on cloud every year to how much is each week and I just said that those numbers don't mix up so much that rent a bunch of computers that number that The weekly number is a very large number that could buy some very large computers like that week thatweek, if we took that week's number and spent it in hardware, we would get a lot of hardware, a lot of hardware, in fact, we spent $600,000 on our cloud exit, let's do the math here, that's two months of rent at 3.2 million, now the numbers.
Whatever, these are just estimates, but imagine that in two months of rent you say, yeah, or you could own everything and it would be yours and you could manage it for five seven years and then pay nothing. those machines like you're going to design them, you're going to pay for the power and you're going to pay for the internet, etc., those are not insignificant costs, but you wouldn't pay for the hardware and it would be yours and something like that. no one could take it away from you, I mean, they could kick you out of a data center I guess, but then you could take those computers across the street to another data center, wasn't that what they did with Twitter or something? in the middle of the night a truck pulled up and they just took pallets and pallets of servers and moved them to another location, so it was money, it was philosophy and that's it, that's crazy too, so we started this, we announced that we were going to do it to do for real in early 2023, six months later, that summer, we celebrated releasing the last major application we had, seven that were in the cloud, including hey.com, our email service that was born in the cloud and that never existed. in Prem everything is gone, what's left now is some file storage in S3 and that's basically it and now it's just those servers that we spent $600,000 on whatever it was eight months ago or it's just like they're sending us a check of royalties to see what a good decision each month was, hey, look at all the money you're not spending on AWS, this is yours, you could buy ice cream for everyone, you could buy a Lamborghini for everyone, you could do this, you could do that here's a lot of money you can keep instead of sending it this other way in our back of the envelope estimate C.
We were going to save $7 million over five years. I don't know if you are a big company. That doesn't seem like a lot, I realize of course that everything is relative, so if it's 7 million for me and my scale, it's probably two million 200 million for you on your megascale or some other figure that is proportionally relevant to you. This bad cloud is worthless, everyone should get out of the cloud, no, it's not like that. I think the cloud is still wonderful when you want to rent it and you don't know if what you're working on is going to exist in like six months, maybe no one wants this app.
If you then go out and buy a bunch of expensive hardware like it used to be in the '90s, you know, that would be a little silly and the cloud is amazing to allow you to rent a There are a lot of things, but it's also very expensive, as is renting. Anything, it's like imagining saying, Hey, I need to travel 200 miles every day. You could lease a car for the next 10 years or you could buy a car. How much more? Are you going to pay to rent the car? You're going to pay a lot more.
It's a B B rent versus buy economy and I wish more people saw it that way, but cloud marketing has been incredibly successful, I mean Hall of Fame, one of the best campaigns ever run anywhere and the cloud providers convince everyone like no, no, no, you are actually too stupid to turn on a computer and connect to the Internet, don't worry your pretty little head about it, let us take care of it. that for a fee to you, what do you mean by a computer to the Internet in this day and age? Do you know how dangerous it is to connect a computer to the Internet like we all did five minutes ago, literally the entire Internet as you know it?
Today, a bunch of people bought computers and connected them to the Internet as if this whole cloud thing was very modern, very recent again because of the way the tech industry lordship works. A generation or three of developers had never known anything else and had found an idea. running your own hardware is so scary. I don't know how they built the pyramids. What do you mean by connecting computers to the Internet? That's something an API does, isn't it? So we are out of the cloud. We are saving a lot of money. I love it. I wish more people did the math.
I don't hate the cloud. I think cloud makes sense with very spiky traffic patterns. Amazon's original purpose with this was very, very spiky traffic patterns. or in the early days of things where renting is a sensible financial decision and you shouldn't buy, but as soon as you have something that's even close to stable growth and that can still be like hundreds of percents a year, there's no talk you're welcome, as long as it's like, oh, maybe it's 100,000% or maybe zero percent, yeah, okay, if you have that variation, stick with the cloud as soon as you've been around for like five minutes, you're not going to have that level of variation or you literally are one. in a billion-dollar company, start thinking about whether it would make more economic sense to own the computers you run and then realize all the benefits, all the philosophical benefits, we haven't even talked about the fact that if in the United States, one sinks tomorrow like a third of the Internet is, wow, offline, like what DARPA didn't design.
It's amazing that if the Russians bombed DC like the rest of the command structure it would still work because we distributed our Computing and we distributed our Network so that individual nodes could disappear and disappear. We didn't bring everything down with this, yes, they did. We should be lighting scented candles in front of that Eighth Wonder of the World on a regular basis but we have to say that's stupid let's give all our computers to Amazon and put them in Virginia yes I agree with many points there and I know Justin does too it does. We know you have to leave soon, but we have a question we would like to ask all of our guests.
We always like to ask a question for the

future

. I think the question here is obvious: what do you think the future of web development will be? Simpler: We have gone through 40 years in the desert, not literally but metaphorically, 40 years in the deserts of unnecessary complexity, not of unnecessary complexity, in reality, that is wrong if it is necessary, but temporal complexity we build bridges to go from A to B and now we are at B and people haven't realized that bridges are not necessary in many cases, not all, let's not be declarative about everything, but where is the pendulum swinging the pendulum is swinging I'm hitting that pendulum to swing towards simplicity, that individual programmers can understand the entire system they are working on, that startups can start with a single programmer, two programmers and build everything they need without these massive teams of minute specialization, well , I'm a frontend performance design expert, cool, I hope that's just one of the things you do because otherwise that's not going to work here, um full St in its most glorious sense, which is basically full stack. just a buzzword for the whole system, can you understand the system you built or do you need five brains to understand what is happening?
That's one of the arguments I sometimes have with people about Kubernetes, for example, it seems like yes, it's a five distributed brain problems to solve for a very clever Ph.D. I don't have either of those things to solve this problem so I need something simpler this is how we ended up with Kamal built on vanilla duck uh something like that I say I could say silly this is what people usually do they like oh that's just silly no not simple that's not stupid simple it's sophisticated it requires a lot of work and knowledge to get to the simple getting to the complex is usually the shortest way is to write the longest letter when you did it I don't have time to write a short one .
I want to write short letters. I want to compress the 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 it brings. It would make me cry if we were living in a space age virtual reality we'd all just be flying around a floating Matrix simulation where I can't tell the difference between the lady in the red dress in the simulation and reality it's okay you can do it however more complicated. you want, but we're rendering text forms, fields, H1 paragraphs and it's pretty much indistinguishable from 19 95 like it's a little prettier, more rounded corners with a better alias translucency layer, there's a little less back and forth to the server, but we.
We're doing the same thing please, it's not, it doesn't have to be that complicated, it really isn't and we should do it, and I include myself partly because that's always a good thing when you're part of the industry, we should be ashamed. that we've let it go this far again I say that and then I also want to respect the bridges and maybe you have to go through embarrassing and awkward growth phases where everything just spills out and no one can understand the whole thing to get to the final destination, maybe Maybe there's no other way, it's like one of those adventure books where you can't just go around the Enchanted Forest, you have to go through it if you want to get to the castle, you want to kill the dragon. you want to get the treasure, you have to shoot, go through the enchanted forest, you have to fight with some goblins here as if there is no other way, if that is true, I will say that the trip has been worth it, but we have to reach the goal. man, I mean, everything is dragon and a surprising number of people in this industry are like the dragon is really nice, like you take the time to get to know it.
I mean, it will burn your village to ashes from time to time. but come on, it's a dragon, it could fly just fine. I like the answer. The simplicity is definitely reminiscent of a lot of your ideals that we talked about at the beginning and I hope we slay those dragons, but that's it for uh Dev tools FM this week, thanks. for coming to David, this was a really fun conversation and I had a lot of fun seeing your point of view this way, thanks for inviting me to this, it was really fun, yeah, thanks David.

If you have any copyright issue, please Contact