DHH: Future of Programming, AI, Ruby on Rails, Productivity & Parenting | Lex Fridman Podcast #474
Lex Fridman
0:00 No one anywhere who's serious believes
0:03 that cookie banners does anything good for anyone,
0:05 yet we've been unable to get rid of it.
0:07 This is the thing that really gets me about cookie banners too.
0:10 It's not just the EU.
0:12 It's the entire world.
0:13 You can't hide from cookie banners anywhere on this planet.
0:16 If you go to goddam Mars on one
0:18 of Elon's rockets and you try to access a webpage,
0:22 you'll still see a cookie banner.
0:23 No one in the universe is safe from this nonsense.
0:26 It sometimes feels like we're barely better off.
0:29 Like webpages aren't that different from what
0:32 they were in the late '90s, early 2000s.
0:34 They're still just forms.
0:35 They still just right to databases.
0:37 A lot of people, I think,
0:39 are very uncomfortable with the fact that they are essentially CRUD monkeys.
0:43 They just make systems that create read, update or delete row in a database,
0:49 and they have to compensate
0:51 for that existential dread by overcomplicating things.
0:56 That's a huge part of the satisfaction of driving a race car
0:59 is driving in at the edge of adhesion, as we call it.
1:02 Where you're essentially just a tiny movement away from spinning out.
1:06 Doesn't take much, then the car starts rotating.
1:08 Once it starts rotating, you lose grip and you're going for the wall.
1:13 That balance of danger and skill is what's so intoxicating.
1:21 The following is a conversation with David
1:24 Heinemeier Hansson, also known as DHH.
1:27 He is a legend in the programming and tech world,
1:31 brilliant and insightful, sometimes controversial, and always fun to talk to.
1:37 He's the creator of Ruby on Rails,
1:39 which is an influential web development framework
1:42 behind many websites used by millions of people,
1:44 including Shopify, GitHub, and Airbnb.
1:49 He is the co-owner and CTO of 37signals that created Basecamp, HEY and ONCE.
1:57 He is a "New York Times" bestselling author,
2:00 together with his co-author, Jason Fried of four books,
2:04 "Rework," "Remote," "Getting Real," and "It Doesn't Have to Be Crazy
2:09 at Work." And on top of that, he's also a race car driver,
2:13 including being a class winner at the legendary 24-hour Le Mans Race.
2:19 This is a Lex Fridman Podcast.
2:21 To support it, please check out our sponsors
2:23 in the description and consider subscribing to this channel.
2:27 And now, dear friends, here's DHH.
2:32 For someone who became a legendary programmer,
2:35 you officially got into programming late in life,
2:39 and I guess that's because you tried to learn
2:42 how to program a few times and you failed.
2:44 So can you tell me the the full story,
2:48 the saga of your failures to learn programming?
2:50 Was Commodore 64 involved?
2:53 Commodore 64 was the inspiration.
2:55 I really wanted a Commodore 64.
2:57 That was the first computer I ever sat down in front.
3:00 And the way I sat down in front of it was I was five years
3:03 old and there was this one kid on my street who had a Commodore 64.
3:07 No one else had a computer,
3:08 so we were all the kids just getting over there and we were
3:12 all playing "Yie Ar Kung-Fu." I dunno if you've ever seen that game.
3:14 It was one of the original fighting games.
3:16 It's really a great game.
3:17 And I was playing that for the first time at five years old.
3:20 And we were like seven kids sitting up in this one kid's bedroom,
3:24 all taking our turn to play the game.
3:27 And I just found that unbelievably interesting.
3:30 And I begged and I begged and I begged my dad, could I get a computer?
3:35 And he finally comes home.
3:37 He's like, "I got your computer." I was like, yes, my own Commodore 64.
3:42 And he pulls out this black green and blue keyboard.
3:47 That's an Amstrad 464.
3:49 I was like, dad, what's this?
3:54 The disappointment.
3:55 This is not a Commodore 64.
3:57 But it was a computer.
3:58 So I got my first computer at essentially six years old that Amstrad 464.
4:04 And of course, the first thing I wanted to do, I wanted to play video games.
4:07 And I think the computer, which he by the way,
4:10 had traded for TV and a stereo recorder or something like that.
4:15 Came with like two games.
4:16 One was this "Frogger" game where you had to escape from underground.
4:20 It was actually kind of dark.
4:22 Like this frog, you're trying to get it out from underground.
4:24 And I was pretty bad at it.
4:25 And I only had those two games.
4:27 And then I wanted more games.
4:29 And one way to get more games when you're a kid who don't have a lot of money,
4:33 I can't just buy a bunch of games, is to type them in yourself.
4:37 Back in '84, '85, magazines would literally print source code at the back
4:44 of their magazines and you could just sit and type it in.
4:46 So I tried to do that and it would take
4:48 like two hours to print this game into the Amstrad.
4:53 And of course I'd make some spelling
4:55 mistake along the way and something wouldn't work, and the whole thing.
4:58 I wasn't that good of English.
5:00 I was born in Denmark.
5:01 So I was really trying to get into it because I wanted all these games.
5:05 I didn't have the money to buy 'em.
5:07 And I tried quite hard for quite a while to get into it,
5:10 but it just never clicked.
5:11 And then I discovered the magic of piracy.
5:14 And after that I kind of basically just
5:16 took some time off from learning to program because,
5:19 well, now suddenly I had access to all sorts of games.
5:22 So that was the first attempt, like around six, seven years old.
5:26 And what's funny is I remember these fragments.
5:30 I remember not understanding the purpose of a variable.
5:34 If there's a thing and you sign something,
5:36 why would you assign another thing to it?
5:37 So for some reason, I understand it constants.
5:40 A constants made sense to me, but variables didn't.
5:43 Then maybe I'm 11 to 12, I've gotten into the Amiga at this point.
5:48 The Amiga, by the way, still perhaps my favorite computer of all time.
5:53 I mean, this is one of those things where you're like,
5:54 people get older and they're like, "Oh, the music from the '80s amazing." To me,
5:58 even as someone who loves computers, who loved new computers,
6:01 the Amiga was this magical machine that was made
6:07 by the same company that produced the Commodore 64.
6:10 And I got the Amiga 500, I think in '87.
6:16 Look at this sexy thing that is a sexy machine right there.
6:19 This is from an age by the way, where computing wasn't global in the same sense.
6:23 The different territories had different computers that were popular.
6:27 The Amiga was really popular in Europe,
6:29 but it wasn't very popular at all in the US as far as I understand it.
6:33 It wasn't popular in Japan.
6:34 There were just different machines.
6:35 The Apple II was a big thing in the US.
6:38 I'd never even heard of Apple in the '80s in Copenhagen.
6:42 But the Amiga 500 was the machine that brought me to want to try it again.
6:46 And you know what's funny?
6:47 The reason I wanted to try it again was I remembered the first time to learn.
6:51 And then there was this programming language that was literally called EasyAMOS,
6:57 like the easy version of AMOS.
6:59 I'm like, if it's EasyAMOS, how hard can it be?
7:01 I gotta be able to figure this out.
7:04 And this time I tried harder.
7:07 I got into conditionals, I got into loops,
7:09 I got into all these things and I still, I couldn't do it.
7:13 And on the second attempt, I really got to the point of like,
7:17 maybe I'm not smart enough,
7:19 maybe programming is just not for me, maybe it's too much math.
7:23 Like I like math in this sort of superficial way.
7:26 I don't like it in the deep way.
7:27 That's some on my perhaps slightly nerdier
7:29 friends did who I had tremendous respect for.
7:31 Like I'm not that person.
7:34 I'm not the math geek who's gonna figure it all out.
7:37 So after that attempt with EasyAMOS and failing to even get,
7:43 I don't even think I completed one even very basic game.
7:47 I thought the program's just not for me.
7:49 I'm gonna have to do something else.
7:50 I still love computers.
7:51 I still love video games.
7:53 I actually at that time had already begun
7:55 making friends with people who knew how to program,
7:57 who weren't even programming EasyAMOS.
7:59 They were programming freaking assembler.
8:02 And I would sit down and just go, how do you,
8:05 the moves and the memories and the copies, how do you even do this?
8:09 I don't even understand how you go from this to Amiga demos, for example.
8:14 That was the big thing with the Amiga.
8:16 It had this wonderful demo scene in Europe.
8:19 It's this really interesting period of time in Amiga's history where you had all
8:25 these programmers spread out mostly all over
8:27 Europe who would compete on graphic competitions,
8:32 where you could probably bring one of these different...
8:35 On that thing?
8:35 On this thing, they would make these little almost like music videos,
8:41 combining some midi music, combining some cool graphics.
8:44 And they would do all of it in like 4K, four kilobytes.
8:48 That is not 4Ks of revolution, four kilobytes of memory.
8:52 And I just thought that was such a cool scene.
8:54 This was obviously pre-internet.
8:56 It was even pre BBS, bulletin board systems to some extent.
9:02 It was you swap your demo software with someone else
9:05 by sending them a disk in the mail, like the 3.5s.
9:11 And I was enamored with that whole scene.
9:13 I was enamored with what they were able to create and I just wanted to be
9:16 a part of it even though I kind of didn't have any skills to contribute.
9:20 And that's how I got into running BBSs.
9:22 I didn't learn programming then and I
9:25 wouldn't learn programming until much later, until I was almost 20 years old.
9:29 The bulletin board systems existed in this funny
9:31 space where they were partly a service to the demo scenes allowing all
9:35 these demo groups to distribute their amazing demos.
9:40 And then it was also a place to trade piracy software, pirated software.
9:44 And I ended up starting one of those when I
9:47 was 14 years old in my tiny little bedroom in Copenhagen.
9:51 I had my, at that point, Amiga 4000.
9:54 I had three telephone lines coming in into my tiny room.
9:59 [Lex] Nice.
10:00 Which is funny because again, I'm 14 years old.
10:02 By the time I was in Sterling, my third line,
10:05 you had to get someone from the telephone company to come do it.
10:07 I get this guy and he's just looking around like, "What is this?
10:11 Why the hell is a 14-year-old having
10:13 three phone lines into their tiny little bedroom?
10:16 What's going on here?
10:18 Why are all these modems blinking red and black
10:22 and making funny sounds?"- Did your parents know?
10:25 They did and they didn't.
10:27 They knew I had the phone lines.
10:28 They knew I had the computer.
10:30 I don't think they really understood that I
10:32 was trading pirated software that was both illegal,
10:35 and whatever else was going on.
10:38 Oh, we should probably say that in Europe,
10:40 maybe you can comment on this in, especially in Eastern Europe,
10:43 but Europe in general,
10:44 piracy I think was more acceptable than it was in the United States.
10:48 I don't know there maybe it's just my upbringing.
10:51 Even that conversation wasn't present.
10:53 I never spoke to anyone growing up in Denmark.
10:56 The piracy is wrong.
10:57 Had any moral qualms whatsoever about piracy.
11:00 It was just completely accepted that you're a kid, you won a lot of games.
11:05 You don't have a lot of money, what do you do?
11:07 You trade.
11:08 Yeah.
11:09 Some people would occasionally buy a game.
11:10 I mean, I once bought a second Master System, and I bought one game.
11:16 Because that was what I could afford.
11:17 I got "After Burner II." I dunno if you've ever played that game.
11:20 It's pretty bad implementation on the second Master System,
11:25 but it was like 600 crowners.
11:27 And I was making money at that time doing newspaper delivery.
11:32 I had to do that for a month to afford one game.
11:36 I like video games way too much to wait a month just to get one game.
11:40 So piracy was just the way you did it.
11:42 And that was how I got into running this bulletin board system,
11:46 being part of the demo scene, being part of the piracy scene to some extent.
11:50 And then also at some point realizing, oh,
11:53 you can actually also make money on this and this can fund
11:56 buying more phone lines and buying more modems and buying more Amigas.
12:01 Oh yeah, that was one of the demo parties.
12:03 These were amazing things.
12:04 What am I looking at?
12:06 Isn't that amazing?
12:07 Look at all those CRT monitors.
12:08 All these CRT monitors.
12:09 Again, when I was 14, I don't understand fully why my parents allowed this.
12:15 But I traveled from Copenhagen,
12:18 the capital of Denmark to Aarhus this tiny little town in Jutland on the train
12:23 with a bunch of dudes who were like late teens and their 20s.
12:28 I'm 14 years old.
12:29 I'm lugging my 14-inch CRT monitor with my computer
12:32 in the back to go to the party.
12:35 That was what it was called.
12:36 That was the biggest demo scene party at that time.
12:38 And it was exactly as you see in that picture,
12:40 thousands of people just lining up with their computers,
12:43 programming demos all day long, and trading these things back and forth.
12:48 That's kind of awesome.
12:49 Not gonna lie.
12:50 It's a little ridiculous.
12:52 It's totally awesome.
12:53 And I miss it in ways where the internet has connected people in some ways,
12:58 but the connection you get from sitting right
13:00 next to someone else who has their own
13:02 CRT monitor who's lugged at halfway around
13:04 the country to get there is truly special.
13:07 Because it was also just this burst of creativity.
13:10 You're constantly running around.
13:11 You're constantly surrounded by people who are
13:13 really good at what they could do.
13:14 They're really good at programming computers.
13:15 It's infectious.
13:17 It was part of that pang I felt then going like,
13:20 oh man, why can't I figure this out?
13:22 I mean, why can't I even figure out EasyAMOS?
13:26 It's kind of frustrating.
13:28 But on your third attempt, you a little more successful?
13:31 So third attempt is when I start getting it,
13:33 this is when I start helping out, let's say build things for the internet.
13:39 So around '95, I think it is, or '96, I discovered the internet.
13:45 Actually, in ninth grade.
13:46 That was my first experience.
13:47 I went to some university in Denmark.
13:52 And in ninth grade, we had this excursion and they sat us
13:56 down in front of a computer and the computer had Netscape Navigator,
13:59 the first version, or maybe it was even the precursor to that.
14:03 And they had a text editor.
14:05 And us kids just got like, "Hey,
14:06 built something on the internet." And it was just
14:07 HTML and the first thing you do is like,
14:09 oh, I can make the text blink by just putting in this tag and saving it.
14:14 That moment, that was actually when I reawaken the urge
14:20 to wanna learn the program because I got a positive experience.
14:23 All the other experiences I had with programming was I'd spend
14:26 hours typing something in, I'd click Run and it wouldn't work.
14:30 And I'd get an error message that made no sense to me as a kid,
14:34 either at six or seven or at 12.
14:36 And here I am sitting in front of a computer
14:39 connected to the internet and I'm making text blink.
14:42 I'm making it larger.
14:43 I'm turning it into an h1 or an h2.
14:46 And these guys out here,
14:47 "We just did it for like an hour and a half." And suddenly I go, oh,
14:51 I can make things for the internet that someone
14:53 in Germany can be able to access and see,
14:56 and I don't have to ask anyone for permission.
14:59 This is super cool.
15:00 I gotta do more of this.
15:01 So I got into to the internet.
15:02 I got into working with HTML and I
15:05 still had all these friends from these demo parties.
15:07 And I started working with them on creating gaming websites.
15:11 I'd rather buy the video games, I'd review him.
15:13 This was another good way of getting new video games
15:15 was to walk down to some store and say like, hey, I'm a journalist.
15:19 I'm like this 15-year-old kid.
15:20 And they're looking at you,
15:22 "You're a journalist?" Yeah, can I borrow some games?
15:25 Because this was when games moved on to the PlayStation and these other things.
15:28 You couldn't just as easily pirate, at least not at first.
15:31 So I went down there,
15:33 did all that, and that started the journey of the internet for me.
15:37 It started working on these gaming websites, working with programmers,
15:40 figuring out that I could do something, I could work on the HTML part.
15:44 It's not really programming, but it kind of smells like it.
15:46 You're talking to a computer.
15:48 You're making it put text on the screen
15:50 and you're communicating with someone halfway around the world.
15:53 So that became my pathway back into programming.
15:56 And then slowly I picked up more and more of it.
15:59 First website I did with someone,
16:02 one of these programs from the demo scene that was dynamic was ASP.NET.
16:07 I wasn't even actually called .NET.
16:08 That was what we started on.
16:10 And then we moved on to PHP, and PHP was when I finally got it.
16:14 When it finally clicked.
16:15 When conditionals and loops and variables and all of that stuff started
16:21 to make sense enough to me that I thought I can do this.
16:26 So would it be fair to say that we wouldn't have DHH without PHP,
16:29 and therefore you owe all of your success to PHP?
16:33 100% that's true.
16:35 And it's even better than that because as PHP to me didn't
16:39 just give a start in terms of making my own web applications,
16:43 it actually gave me a bar.
16:44 In many ways, I think the pinnacle of developer,
16:48 web developer ergonomics is late '90s PHP,
16:52 you write this script, you FTP it to a server and instantly it's deployed.
16:58 Instantly it's available.
16:59 You change anything in that file and you reload.
17:02 Boom, it's right there.
17:03 There's no web servers, there's no setup.
17:06 There's just an Apache that runs mod PHP.
17:10 And it was essentially the easiest way to get a dynamic webpage up and going.
17:15 And this is one of the things I've been
17:17 chasing that high for basically the rest of my career.
17:20 That it was so easy to make things for the internet in the mid to late '90s.
17:26 How did we lose the sensibilities that allowed us to not just work this way
17:31 but get new people into the industry to give
17:34 them that was success experiences that I had.
17:37 Adding a freaking blink tag to an HTML page, FTPing a PHP page to an Apache
17:44 web server without knowing really anything about anything,
17:47 without knowing anything about frameworks, without knowing anything about setup.
17:51 All of that stuff have really taken us to a place
17:54 where it sometimes feels like we're barely better off.
17:58 Like webpages aren't that different from what
18:01 they were in the late '90s, early 2000s.
18:03 They're still just forms.
18:04 They still just write to databases.
18:06 A lot of people, I think are very uncomfortable
18:08 with the fact that they are essentially CRUD monkeys.
18:12 They just make systems that create read, update or delete row in a database,
18:18 and they have to compensate
18:20 for that existential dread by overcomplicating things.
18:25 Now that's a bit of a character.
18:26 There's more to it.
18:27 And there's things you can learn
18:28 from more sophisticated ways of thinking about this.
18:30 But there's still an ideal here, which is why I was so happy you had
18:34 Pieter Levels on, because he still basically works like this.
18:36 And I look at that and go like, man, that's amazing.
18:39 Yeah, you're chasing that high.
18:40 He's been high all along using PHP, jQuery and SQLite.
18:48 I think it's amazing because he's proving
18:50 that this isn't just a nostalgic dream.
18:53 He's actually doing it.
18:54 He's running all these businesses.
18:56 Now some of that is, as he would admit up first upfront,
19:00 is that he's just one guy.
19:02 And you could do different things when you just one guy.
19:04 When you're working in a team, when I started working on the team,
19:08 when I started working with Jason Fried on Basecamp,
19:11 we at first didn't use version control together.
19:16 I used version control for myself.
19:17 And then I thought, do you know what?
19:19 Designers, ah, they probably not smart enough to figure out CBS.
19:24 And therefore I just like, no, no, no, you just FTP it up.
19:27 You just FTP it.
19:28 I knew they knew how to do FTP.
19:30 And then after the third time I had overridden their changes.
19:33 I was like, goddammit.
19:34 I gotta teach Jason CBS to not do that again.
19:38 But I think there's still way more truth to the fact
19:43 that we can work the way we did in the '90s,
19:45 work the way Pieter works today, even in the team context.
19:49 And that we've been far too willing to hand over far
19:53 too much of our developer ergonomics to the merchants of complexity.
19:57 And you've been chasing that with Rails 8.
20:00 So how do you bring all the cool features
20:03 of a modern framework and make it no build,
20:06 make it as easy to create something and to ship
20:10 it as it was in the '90s with just PHP?
20:13 It's very difficult for me to beat the Pieter Levels approach.
20:19 It's so easy to just ship some PHP.
20:22 And it should be.
20:23 Why should it be harder than that?
20:25 Our computers today are almost infinitely faster
20:29 than what they were in the '90s.
20:30 So shouldn't we be able to work in even easier ways?
20:34 We should be looking back on the '90s ago,
20:36 like, oh, that was way too complicated.
20:38 Now we have more sophisticated technology that's way faster and it
20:41 allows us to work in these easier to use ways.
20:44 But that's not true.
20:46 But now you can see the line I draw in my work with Ruby on Rails,
20:50 and especially with Rails 8.
20:51 No build to me is reaching back to that '90s feeling and going,
20:57 now we can do some of those things without giving up on all the progress.
21:02 Because I do think you can get too nostalgic.
21:04 I do think you can start just
21:07 fantasizing that everything was better in the '90s.
21:09 It wasn't.
21:10 I mean, I was there.
21:11 There was a lot of things that sucked.
21:13 And if we can somehow find a way to combine the advantages and advances we've
21:18 had over the past 20 years with that ease of developer ergonomics, we can win.
21:24 No build is a rejection of the part of web
21:28 development I've hated the most in the past 10,
21:31 15 years, which is the JavaScript scene.
21:35 And I don't say that as someone who hate JavaScript.
21:38 I mean, I often joke that JavaScript.
21:39 It's my second favorite program language.
21:42 It's a very distant second.
21:43 Ruby is by far and away number one, but I actually like JavaScript.
21:47 I don't think it's a bad language.
21:49 It gets a lot of flack.
21:51 People add a string of two plus a one and it gives something nonsense.
21:55 And I just go like, yeah, but why would you do that?
21:58 Just don't do that.
21:59 The language is actually quite lovely, especially the modern version.
22:02 ES6 that really introduced a proper class syntax to it.
22:06 So I could work with JavaScript in many of the same
22:09 ways that I love working with Ruby made things so much better.
22:13 But in the early 2010s until quite recently,
22:19 all of that advancement happened in pre-processing, happened in built pipelines.
22:25 The browsers couldn't speak a dialect
22:27 of JavaScript that was pleasant to work with.
22:29 So everyone started to pre-filing their JavaScript to be able
22:33 to use more modern ways of programming with a browser
22:37 that was seen as stuck with an ancient version
22:40 of JavaScript that no one actually wanted to work with.
22:43 And that made sense to me, but it was also deeply unpleasant.
22:46 And I remember thinking during that time, the dark ages,
22:49 as I refer to them with JavaScript, that this cannot be the final destination.
22:56 There's no way that we have managed to turn
22:59 the internet into such an unpleasant place to work.
23:03 Where I would start working on a project
23:06 in JavaScript using webpack and all of these dependencies.
23:09 And I would put it down for literally
23:11 five minutes and the thing wouldn't compile anymore.
23:14 The amount of churn that the JavaScript community,
23:17 especially with its frameworks and its tooling went through
23:20 in the decade from 2010 to 2020 was absurd.
23:25 And you had to be trapped inside of that asylum to not
23:31 realize what an utterly perverse situation we had landed ourselves in.
23:38 Why does everything break all the time?
23:41 I mean, the joke wouldn't be just that the software would break,
23:44 that would annoy me personally.
23:45 But then I'd go on Hacker News and I'd see
23:48 some thread on the latest JavaScript release of some framework.
23:51 And the thread would be like, someone would ask, "Well,
23:55 aren't we using the thing we just used
23:57 three months ago?" And people would be like, "That thing is so outdated.
24:00 That's so three months ago.
24:02 You gotta get with the new program.
24:04 We're completely rewriting everything for the oomph-teen
24:07 time." And anything you've learned
24:09 in the framework you've been spending the last
24:12 amount of time on, it's all useless.
24:14 You gotta throw everything out and you gotta start over.
24:16 Why aren't you doing it, stupid idiot?
24:18 Is that a kind of mass hysteria
24:20 that took over the developer community you think?
24:22 Like where you have to keep creating new frameworks and new frameworks.
24:25 And are we past that dark age?
24:29 I think we're getting out of it,
24:31 and we're getting out of it because browsers have gotten so much better.
24:35 There was a stagnation in browser technology.
24:38 Some of it was an overhang all the way back from IE5.
24:42 So IE5 essentially put the whole
24:45 internet development experience into a deep freeze,
24:48 because Microsoft won the browser wars in the mid 2000s,
24:53 and then they basically disbanded their browser development team.
24:56 'Cause they're like, "All right, job done.
24:57 We don't need any more innovation on the internet.
25:00 Can we just go back to writing Windows forms or something now that we control
25:03 everything?" And it really wasn't until obviously Firefox
25:09 kind of kindled a little bit of something.
25:11 Then Chrome got into the scene and Google
25:14 got serious about moving to web forward.
25:16 That you had a kindling of maybe the browser could be better.
25:20 Maybe the browser wasn't frozen in time in 2005.
25:23 Maybe the browser could actually evolve like
25:27 at the development platform that it is.
25:30 But then what happened was you had a lot
25:32 of smart people who poured in to the web because the web turned out to be
25:38 the greatest application development platform of all time.
25:41 This was where all the money was being made.
25:43 This was where all the billionaires were being minted.
25:45 This was where the Facebooks and whatever of the world came to be.
25:49 So you had all of this brain power applied
25:53 to the problem of how to work with the web.
25:56 And there were some very smart people with some,
25:59 I'm sure very good ideas who did not
26:04 have programmer happiness as their motivation number one.
26:08 They had other priorities and those priorities allowed them
26:15 to discount and even rationalize the complexity they were injecting everywhere.
26:21 Some of that complexity came from organizational structure.
26:24 When you have a company like Facebook, for example,
26:26 that does depend on the web and wanna push it forward,
26:28 but have sliced the development role job into these tiny little niches.
26:35 I'm a front-end glob pipeline configurator.
26:41 Oh yeah, well, I'm a front-end whatever engineer.
26:44 And suddenly the web developer was no longer one person.
26:48 It was 15 different roles.
26:50 That in itself injected a ton of complexity.
26:52 But I also wanna give it the bold case here,
26:56 which was that some of that complexity was
26:58 necessary to get to where we are today.
27:01 That the complexity was a bridge.
27:04 It wasn't the destination,
27:05 but we had to cross that bridge to get to where we are today,
27:08 where browsers are frankly incredible.
27:11 The JavaScript you can write in a text file and then
27:14 serve on a web server for a browser to ingest is amazing.
27:18 It's actually a really good experience.
27:19 You don't need any pre-processing.
27:20 You could just write text files,
27:22 send them to a browser, and you have an incredible development.
27:25 And we should also say that it can kind of be broken, at least the HTML,
27:29 but even the JavaScript could be a little bit broken
27:31 and it kind of still works like maybe a half-ass works.
27:35 But like, just the amount of mess of smelly
27:40 code that a browser has to deal with is insane.
27:44 This is one of the hardest problems
27:46 in computing today is to parse the entire internet.
27:50 Because thankfully for us as web developers,
27:54 but perhaps not so much for the browser developers,
27:57 every webpage that has ever been created minus
28:00 the brief period with Flash still runs today.
28:03 The webpage I did in ninth grade would
28:06 render on a modern browser today, 30 years later.
28:10 That's crazy.
28:11 That is completely crazy.
28:12 When you think about the amount of evolution we've had with the web,
28:16 how much better we've made it, how many more standards browsers have adopted.
28:20 It's essentially an Apollo project today to create a new browser,
28:24 which is why it doesn't happen very often,
28:26 which is why even companies like Microsoft had to throw into towel and say,
28:30 "We can't do it." Now I actually don't think that's good for the web.
28:34 There is the danger of the monoculture if we
28:36 just get a single browser engine that runs everything,
28:38 and we are in danger of that.
28:40 I love the fact that the Ladybird project, for example,
28:42 is trying to make a new browser engine from scratch.
28:46 I've supported that project.
28:47 I would encourage people to look into that.
28:49 It's really a wonderful- Nice.
28:52 thing.
28:52 It's staffed by a bunch of people who
28:54 worked on other browser projects in the past.
28:57 Truly independent web browser.
28:59 We really need that.
29:01 But I can hold that thought in my head.
29:03 At the same time, I hold the thought in my head that Google's
29:08 Chrome was pivotal to the web surviving as the premier web development platform.
29:14 If it had not been for Google and their entire
29:18 business depending on a thriving open web, Apple, Microsoft,
29:24 I think would've been just as fine to see
29:27 the web go away to disappear into being something
29:30 that's just served native web applications or native mobile
29:34 applications and native desktop applications that they could completely control.
29:38 So I have all sorts of problems with Google, but it's not Chrome.
29:43 Chrome is a complete gift to web developers everywhere,
29:47 to the web as a development platform.
29:49 And they deserve an enormous amount of credit, I think for that.
29:54 Even if it's entangled with their business model and half
29:58 of Chrome is code that spies on you or informs targeted ads.
30:03 And a bunch of things, I'm not a big fan of.
30:06 I can divorce that from the fact that we need champions in the corner
30:09 of the web who have trillions of dollars
30:12 of market cap value riding on the open web.
30:16 We're gonna take tangents upon a tangents upon a tangents.
30:19 So let's go to Chrome.
30:20 I think Chrome positive impact on humanities
30:24 is immeasurable for reasons that you just described.
30:27 On the technology front, the features that present the competition they created,
30:31 it's spurred on this wonderful flourishing of web technologies.
30:35 But anyway, I have to ask you about the recent stuff with the DOJ,
30:40 trying to split up Chrome and Google.
30:43 Do you think this is a good idea?
30:45 Do you think this does harm?
30:47 It's a disaster.
30:49 And I say that as someone who's been very sympathetic to the antitrust fight,
30:54 because I do think we have antitrust problems in technology.
30:58 But the one place where we don't have them, by and large,
31:03 is with browsers, is with the tools we use to access the open web.
31:08 First of all, we have Firefox.
31:10 Now Firefox is not doing all that great.
31:13 And Firefox has been propped up by Google for many years to deter from exactly
31:18 what's going on with the DOJ that they were the only game in town.
31:22 Apple has Safari.
31:24 I have a bunch of problems with Apple too, but I love Safari.
31:27 I love the fact that we have a premier browser running on a premier
31:31 operating system that people can't turn the web into just a Chrome experience.
31:36 But I also think that the open web needs this trillion dollar champion,
31:42 or at least benefits from it.
31:44 Maybe it doesn't need it, but it certainly benefits from it.
31:47 And of all the things that are wrong with monopoly formation in technology,
31:52 Chrome is the last thing.
31:54 And this is why I get so frustrated sometimes about
31:56 the anti or the monopoly fight that there are real problems.
32:01 And we should be focusing on the premier problems first.
32:03 Like the toll booths on our mobile phones.
32:08 They're far bigger problems.
32:09 It's not the open web.
32:10 It's not the tools that we use to access the open web.
32:12 If I don't want to use Chrome, if my customers of my businesses that run
32:18 on the internet don't wanna use Chrome, they don't have to.
32:21 We're never forced to go through it.
32:23 The open internet is still open.
32:25 So I think it's a real shame that the DOJ
32:29 has chosen to pursue Google in this way.
32:32 I do think there are other things you
32:33 can nail Google for and their ad monopoly maybe,
32:36 or the shenanigans done in controlling both sides of the ad
32:41 ledger that they both controlled the supply and the demand.
32:45 There are problems.
32:46 Chrome, isn't it?
32:47 And you end up making the web much worse.
32:50 And this is the thing we always gotta remember when we think about legislation,
32:54 when we think about monopoly fights is you may not like how things look today.
32:59 And you may wanna do something about it, but you may also make it worse.
33:04 The good intentions behind the GDPR in Europe currently has amounted to what?
33:11 Cookie banners that everyone on the internet hates.
33:15 That helps no one do anything better,
33:17 anything more efficient that saves no privacy in any way,
33:21 shape or form has been a complete boondoggle
33:23 that has only enriched lawyers and accountants and bureaucrats.
33:30 Yeah, you said that the cookie banner is a monument for why
33:34 Europe is losing is doing the worst of all the regions in tech.
33:41 It's a monument to good intentions leading straight to hell.
33:47 And the Europe is actually world class
33:50 in good intentions leading straight to hell.
33:53 So hell is the cookie accept button that you have to accept all cookies.
33:58 That's what hell looks like over and over.
34:00 You don't actually ever get to the web page.
34:03 Just on a human scale,
34:04 try to imagine how many hours every day are wasted clicking that away.
34:10 And how much harm we've done to the web
34:13 as a platform that people enjoy because of them.
34:17 The internet is ugly in part because of cookie banners.
34:21 Cookie banners were supposed to save us from advertisement,
34:25 and advertisement can make the web ugly.
34:27 There's plenty of examples of that, but cookie banners
34:29 made the entire internet ugly in one felt swoop.
34:33 And that's a complete tragedy.
34:34 But what's even worse,
34:36 and this is why I call it out as a monument to everything the EU gets wrong,
34:40 is that we have known this for a decade.
34:42 No one anywhere who's serious believes
34:44 that cookie banners does anything good for anyone.
34:48 Yet we've been unable to get rid of it.
34:50 There's this one piece of legislation that's now I think 10 or 12 years old.
34:54 It's complete failure on every conceivable metric.
34:57 Everyone hates it universally, yet we can't seem to do anything about it.
35:01 That's a bankruptcy declaration for any body of bureaucrats who
35:07 pretend or pretend to make things better for not just citizens,
35:12 but people around the world.
35:14 This is the thing that really gets me about cookie banners too.
35:17 It's not just the EU.
35:19 It's the entire world.
35:20 You can't hide from cookie banners anywhere on this planet.
35:23 If you go to goddamn Mars on one
35:26 of Elon's rockets and you try to access a webpage,
35:29 you still see a cookie banner.
35:30 No one in the universe is safe from this nonsense.
35:34 Probably the interface on the rocket.
35:36 It'll be slower.
35:37 You'll have basically 150 second ping time.
35:42 So it'll take you 45 seconds just to get through the cookie banners from Mars.
35:47 All right, let's walk back up the stack
35:49 of this recursive tangents we've been taking.
35:51 So Chrome, we should say, at least in my opinion, is not winning unfairly.
35:58 It's winning in the fairway by just being better.
36:03 It is, if I was gonna steal man the other side just for a half second,
36:07 people would say, well, maybe yes,
36:10 most people do sort of begrudgingly agree that is a pretty good browser.
36:15 But then they'll say the reason it got dominance was distribution.
36:19 And the reason it got distribution was because Google also controls Android,
36:23 and therefore can make Chrome the default browser on all these phones.
36:27 Now I don't buy that.
36:29 And the reason I don't buy that is because on Android,
36:32 you are actually allowed to ship a different browser
36:36 that has a browser engine that's not the same as Chrome.
36:38 Unlike on iOS, where if you wanna ship a browser, Chrome, for example,
36:43 ships for iOS, but it's not Chrome, it's Safari wrapped in a dress.
36:47 And every single alternative browser on iOS have to use the Safari web engine.
36:54 That's not competition.
36:55 That's not what happened on Android.
36:57 Again, I think there are some nuances to it,
36:59 but if you zoom out and you look at all
37:02 the problems we have with big tech, Chrome is not it.
37:05 Chrome won on merits.
37:07 I begrudgingly have switched to Chrome on that realization alone.
37:12 As a web developer, I just prefer it.
37:14 I like Firefox in many ways.
37:16 I like the ethos of it, but Chrome is a better browser than Firefox full stop.
37:21 And by the way, we've never mentioned Edge.
37:23 Edge is also a good browser- Because it's also Chrome in a dress.
37:28 But it never gets to love.
37:29 I don't think I've ever used Bing, and I'm sure Bing is really nice.
37:34 Maybe you have, because you know what?
37:35 Is Bing in a dress?
37:37 What?
37:38 DuckDuckGo.
37:38 Which is actually- What?
37:39 the search engine that I use.
37:41 DuckDuckGo gets its search results from Bing, or at least it used to.
37:45 If they change that, that would be news to me.
37:48 Well, maybe everything is just a wrap or a dress.
37:52 Everything is wearing a dress underneath.
37:54 There's some other.
37:54 There's some of that.
37:56 Turtles, all the dress is all the way down.
37:57 Okay, what were we talking about?
37:58 They, we got there from JavaScript and from you learning how to program.
38:03 So eventually, the big success story is when you built a bunch
38:09 of stuff with PHP and you were like actually shipping things.
38:14 And that's when the Ruby story came.
38:17 So what your big love affair with programming began there?
38:23 So can you take me there?
38:24 What is Ruby?
38:25 Tell the story of Ruby.
38:27 Explain Ruby to me.
38:28 PHP was what converted me from just being able to fondle HTML and turn
38:34 out some web pages to actually being able to produce web applications myself.
38:40 So I owe a tremendous gratitude to PHP in that regard.
38:43 But I never thought of PHP as a calling.
38:47 I never thought, I'm a professional programmer who writes PHP,
38:51 that's who I am and that's what I do.
38:53 I thought of PHP as a tool I needed to smack
38:57 the computer with until it produced web applications I wanted.
39:01 It was very much a means to an end.
39:04 I didn't fall in love with PHP.
39:07 I'm very grateful that it taught me the basics of programming.
39:10 And I'm very grateful that it set the bar for the economics.
39:14 But it really wasn't until Ruby that I
39:18 started thinking of myself as a programmer.
39:20 And the way that came about was that the first time I ever
39:23 got hired as a professional programmer
39:26 to write code was actually by Jason Fried, my business partner still.
39:31 All the way back in 2001, I had been working on these gaming websites
39:36 in PHP for essentially 18 months at that point.
39:39 No one had been paying me to do code in that regard.
39:42 And I connect with Jason Fried over an email sent from Copenhagen,
39:49 Denmark to Chicago, Illinois to a person who didn't know who I was.
39:52 I was just offering solicited advice.
39:55 Jason had asked a question on the internet and I
39:58 had sent him the answer and he was asking in PHP.
40:00 And I'd sent him the answer to that question.
40:02 And we started talking and then we started working.
40:04 Which by the way, is a miracle of what the internet can allow.
40:07 How can a kid in Copenhagen who's never met this guy
40:11 in Chicago connect just over email and start working together?
40:15 And by the way, we're still working together now 24 years later.
40:20 That's incredible.
40:21 But we started working together and we
40:23 started working together on some client projects.
40:25 Jason would do the design, 37signals would do design,
40:28 I would bring the programming PHP.
40:30 And after we'd work on I think two or three client projects together in PHP,
40:36 we kept hitting the same problem.
40:38 That whenever you work with a client, you start that project off an email.
40:43 Oh yeah, let's work together.
40:44 Here's what we're building.
40:46 And you start trading more and more emails.
40:48 And before a few weeks have passed, you gotta add someone to the project.
40:53 They don't have the emails.
40:54 They don't have the context.
40:55 You send it, where's the latest file?
40:57 Oh, I've uploaded on the FTP.
40:59 It's like finalfinal_v06_2.0, right?
41:03 That's the one to get.
41:04 It's just a mess.
41:05 A beautiful mess in some ways,
41:06 a mess that still runs the vast majority of projects to this day.
41:10 Email is the lowest common denominator.
41:12 That's wonderful.
41:13 But we had dropped the ball a couple of times
41:16 in serious ways with customers and we thought we can do better.
41:20 We know how to make web applications.
41:22 Can't we just make a system that's better than email for managing projects?
41:27 It can't be that hard.
41:28 We've been doing blogs.
41:30 We've been doing to-do lists.
41:31 Let's put some of these together and just make a system where
41:34 everything that anyone involved in the project needs is on one page.
41:39 And it has to be simple enough that I'm not
41:41 gonna run a seminar teaching you how to use the system.
41:45 I'm just gonna give you the login code.
41:46 You're gonna jump into it.
41:47 So that's Basecamp.
41:49 And when we started working on Basecamp,
41:52 I for the first time in the experience I
41:56 had with Jason had the freedom of technology choice.
42:00 There was no client telling me, "Yeah, PHP, that sounds good.
42:04 We know PHP.
42:05 Can you build it in PHP?" I had free reigns.
42:08 And at that time I'd been reading IEEE magazine
42:13 and a couple of other magazines back from the early
42:16 2000s where Dave Thomas and Martin Fowler had been
42:22 writing about programming patterns and how to write better code.
42:27 And these two guys, in particular, were both using Ruby to explain
42:32 their concepts because Ruby looked like pseudo code.
42:37 Whether you were programming in C or Java or PHP,
42:40 all three constituencies could understand Ruby
42:42 because it basically just read link English.
42:45 So these guys were using Ruby to describe the concepts.
42:48 And first of all, I would read
42:50 these articles for just the concepts they were explaining.
42:52 And I'd be like, what is this programming language?
42:56 I mean, I like the concept you're explaining,
42:57 but I also wanna see the programming language.
43:00 Why haven't I heard of this?
43:02 So I started looking into Ruby and I realized at that time,
43:07 Ruby might not be known by anyone,
43:09 but it's actually been around for a long time.
43:11 Matz, the Japanese creator of Ruby had started working on Ruby back in '93.
43:17 Before the internet was even a thing.
43:19 And here I am in 2003, 10 years later,
43:25 picking up what seems like this hidden gem
43:28 that's just laying in obscurity in plain sight.
43:32 But Dave Thomas and Martin Fowler,
43:34 I think successfully put me and a handful of other people on the trail
43:41 of a programming language that hadn't been used much in the west, but could be.
43:47 So I picked up Ruby and I thought, this is very different.
43:52 First of all, where are all the semicolons?
43:55 I'd been programming in PHP, in ASP,
43:59 I'd even done some Pascal, I'd looked at some C.
44:01 There were semicolons everywhere.
44:04 And that was the first thing that struck me is where are the damn semicolons?
44:08 And I started thinking, actually, why do we have semicolons in programming?
44:13 They're to tell the interpreter that there's a new line of instructions,
44:18 but I don't need 'em as a human.
44:20 How?
44:21 Oh, someone is looking out for the human here, not for the machine.
44:26 So that really got me interested.
44:28 And then I thought to myself, do you know what?
44:31 I know PHP quite well.
44:32 I'm not an amazing programmer.
44:34 I haven't been working in programming for all that long,
44:38 but maybe I can figure it out.
44:41 I'm gonna give myself two weeks.
44:43 I'm gonna write a proof of concept where I talk to a database,
44:47 I pull some records, I format them a bit, and I display 'em on an HTML page.
44:51 Can I figure that out in a couple weeks?
44:54 It took about one weekend and I was completely mesmerized.
44:59 I was completely mind blown because Ruby was made for my brain
45:07 like a perfect tailored glove by someone I'd never met.
45:12 Like, how is this even possible?
45:14 We should say maybe like paint the picture
45:17 of the certain qualities that Ruby has, maybe even compared to PHP.
45:20 We should also say that there's a ridiculous thing that I'm
45:24 used to that I forget about that there's dollar signs everywhere.
45:27 PHP.
45:28 Yes, yes, there's line noise.
45:30 That's what I like to call.
45:32 There's line noise.
45:33 Line noise, that's such a beautiful phrase.
45:35 Yeah, so there's all these things that look like programs.
45:39 And with Ruby, I mean there's some similarities in Python there.
45:43 It just looks kind of like natural language.
45:45 You can read it normally.
45:47 Here's a wild loop that does a five iterations.
45:50 You can literally type the number five, dot,
45:55 now I'm calling a method under number five.
45:57 By the way, that's one of the beautiful aspects
45:59 of Ruby that primitives like integers are also objects.
46:04 And you can call 5.times, start brackets.
46:10 Now you're iterating over the code in that bracket five times, that's it.
46:15 [Lex] Okay, that's nice.
46:16 That's not just nice, that's exceptional.
46:18 There's literally no other programming language that I know
46:21 of that has managed to boil away the line noise
46:24 that almost every other programming language would inject into a five
46:29 time iteration over a block of code to that extent.
46:32 Wow, that's a really nice, well, thank you for giving that example.
46:35 That's a beautiful example.
46:37 Wow, I don't think I know what programming language that does that.
46:40 That's really nice.
46:41 Ruby is full of that.
46:43 So let me dive into a couple of examples.
46:44 Because I really think it helps paint the picture.
46:47 And let me preface this by saying I actually, I like the ethos of Python.
46:51 I think the Ruby and the Python community share a lot of similarities.
46:56 They're both dynamic interpreted languages.
46:59 They're both focused on immediacy and productivity
47:04 and ease of use in a bunch of ways.
47:05 But then they're also very different in many other ways.
47:08 And one of the one ways they're very different is aesthetically.
47:11 Python, to me, I hope I don't offend people too much.
47:15 I've said this before, it's ugly.
47:18 And it's ugly in its space, because it's full of superfluous instructions
47:25 that are necessary for legacy reasons
47:28 of when Guido made Python back in '87 that are still here in 2025.
47:35 And my brain can't cope with that.
47:37 Let me give you a basic example.
47:38 When you make a class in Python,
47:41 the initialize a method, the starting method is def.
47:44 Okay, fair enough.
47:45 That's actually the same as Ruby, D-E-F, definition of a method.
47:48 Then it is underscore, not one, underscore, two, init, underscore,
47:56 underscore, parentheses start, self, comma, and then the first argument.
48:03 [Lex] Yeah, the whole self thing.
48:06 I look at that and go, I'm sorry I'm out.
48:08 I can't do it.
48:10 It's everything about it offends my sensibilities to the core.
48:14 Here you have the most important method
48:17 that all new objects or classes have to implement.
48:21 And it is one of the most aesthetically offensive
48:24 ways of typing initialized that I've ever seen anywhere.
48:27 And you guys are okay with this?
48:29 Hey, you're making me, you know,
48:30 where you're like talking about my marriage or something like
48:33 this, and I'm not realizing I've been in a toxic relationship all along.
48:37 Yet, I just get used to it.
48:39 That to me, by the way, was the magic of Ruby.
48:41 It opened my eyes to help beautiful program could be.
48:46 I didn't know I'd been working in ASP.
48:49 I'd been working in PHP.
48:50 I didn't even have the concept that aesthetics
48:53 beautiful code was something we could optimize for that.
48:56 Something we could pursue.
48:58 And even more than that, that we could pursue it above other objectives.
49:02 That Ruby is as beautiful as it is.
49:05 It's not an accident and it's not easy.
49:08 Ruby itself is implemented in C.
49:10 It's very difficult to parse Ruby code,
49:14 because Ruby is written for humans and humans are messy creatures.
49:19 They like things in just the right way.
49:21 I can't fully explain why the __init___ make me repulse, but it does.
49:30 And when I look at the Ruby alternative, it's really instructive.
49:34 So it's def, same part, D-E-F, space, initialize, parentheses.
49:41 Not even parentheses.
49:41 If you don't need to call it within the arguments,
49:43 there's not even a parentheses.
49:44 That in itself is actually also a major part.
49:46 If the human doesn't need the additional characters,
49:49 we're not just gonna put them in because
49:51 it'd be nicer to parse for the computer.
49:54 We're gonna get rid of the semicolons.
49:55 We're gonna get rid of the parentheses.
49:57 We're gonna get rid of the underscores.
50:00 We're gonna get rid of all that ugliness,
50:02 all the line noise and boil it down to its pure essentials.
50:05 And at the same time, we're not gonna abbreviate.
50:09 This is a key difference in the aesthetics between Ruby and Python as well.
50:14 init, short of type, it's only five characters.
50:17 Initialize is a lot longer,
50:19 but it looks a lot better and you don't type it very often.
50:23 So you should look at something pretty.
50:24 If you don't have to do it all the time, it's okay that it's long.
50:29 Those kinds of aesthetic evaluations are rife all over the Ruby language.
50:34 But let me give you an even better example.
50:36 The if conditional.
50:38 That's the bedrock of all programming languages.
50:42 They have the if conditional.
50:44 If you take most programming languages, they all have if.
50:47 That's basically the same in almost every language.
50:49 Space, start parentheses, we all do that.
50:52 And then you have perhaps,
50:55 let's say you're calling a object called user.isadmin, close parentheses,
51:01 close parentheses, start brackets,
51:07 and here's what we're gonna do if the user is an admin, right?
51:11 That would be a normal programming language.
51:13 Ruby doesn't do it like that.
51:15 Ruby boils almost all of it away.
51:16 We start with the if.
51:17 Okay, that's the same.
51:19 No parenthesis necessary because there's no ambiguity for the human
51:23 to distinguish that the next part is just a single statement.
51:27 So you do if, space, user, dot, admin, question mark.
51:38 No open brackets, no parentheses, no nothing.
51:42 Next, open line.
51:44 Here's your conditional.
51:45 That question mark means nothing to the computer,
51:50 but it meets something to the human.
51:53 Ruby put in the predicate method style
51:58 purely as a communication tool between humans.
52:02 It's actually more work for the interpreter to be
52:06 able to see that this question mark is there.
52:08 Why is this question mark in here?
52:10 Because it just reads so nicely.
52:12 If user.admin?
52:15 That's a very human phrase, but it gets better.
52:20 You can turn this around.
52:22 You can have your statement you want to execute before the conditional.
52:27 You can do user.upgrade.
52:30 Say you're calling an upgrade method on a user.
52:33 Space, if, space, user.admin?.
52:38 We do the thing if the thing is true.
52:41 Instead of saying, if the thing is true, do the thing.
52:44 But it gets even better.
52:45 This is why I love this example with the conditional,
52:47 because you can keep diving into it.
52:48 So let's flip it around.
52:51 user.downgrade if !not user.admin, right?
52:59 That'd be a typical way of writing it.
53:02 Ruby goes, that exclamation point is light noise.
53:06 Why do we have if and then an exclamation point, that's ugly.
53:09 We could do user.downgrade unless user.admin?
53:17 That to me is an encapsulation of the incredible beauty that Ruby affords
53:24 the programmer through ambiguity that is only
53:28 to serve the human reader and writer.
53:31 All of these statements we've just discussed, they're the same for the computer.
53:34 It'll combine down to the same C code.
53:37 That'll compile down to the same assembly code.
53:39 It makes no difference whatsoever.
53:41 In fact, it just makes it harder to write an interpreter.
53:44 But for the human who gets to choose whether
53:47 the statement comes before the conditional or the predicate method has,
53:51 it's just incredible.
53:52 It reads like poetry at some point.
53:55 It's also incredible that, you know,
53:56 one language designer's creating that, you know, Guido van Rossum also,
54:01 it's like one person gets to make these extremely difficult decision
54:05 because you have to think about how does that all get parsed?
54:10 And you have to think about the thousands,
54:13 if it's a popular language that millions of people that end up using this.
54:17 And what they feel, what that question mark for the if statement,
54:21 what does that feel like for the user?
54:24 That's what Matz thought about because he started his entire mission off
54:28 a different premise than almost every
54:30 programming language designer that I'd heard, at least articulate the vision.
54:34 That his number one goal was programmer happiness.
54:38 That his number one goal was the affordances that would allow
54:43 programmers to articulate code in ways that not just execute it correctly,
54:49 but were a joy to write and were a joy to read.
54:54 And that vision is based on a fundamentally different view of humanity.
55:01 There's no greater contrast between Matz and James Gosling,
55:05 the designer of Java.
55:06 I wanted to listen to James talk about the design of Java.
55:11 Why was it the way it was?
55:12 Why was it so rigid?
55:14 And he was very blunt about it, which, by the way, I really appreciate.
55:17 And I think Gosling has done a tremendous job with Java.
55:20 But his view of humanity is rather dark.
55:24 His view of humanity was programmers at the average are stupid creatures.
55:30 They cannot be trusted,
55:33 which sophisticated programming languages because they're gonna
55:37 shoot their foot off or their handoff.
55:40 And that would be kind of inconvenient to the regional development office
55:45 of a mid-tier insurance company writing code that has to last for 20 years.
55:52 Now it's actually a very Thomas-Sowell view of constrained capacity
55:58 in humans that I've come to appreciate much later in life.
56:01 But it's also a very depressing view of programmers that there
56:04 are just certain programmers who are too dumb to appreciate code poetry.
56:11 There are too ignorant to learn how to write it well.
56:14 We need to give them a sandbox where they just won't hurt themselves too much.
56:20 Matz went the completely opposite direction.
56:23 He believes in humanity.
56:25 He believes in the unlimited capacity of programmers to learn and become better.
56:31 So much so that he's willing to put the stranger at his own level.
56:38 This is the second part I truly appreciate about Ruby.
56:42 Ruby allows you to extend base classes.
56:46 You know how we just talked about 5.times is
56:49 a way to iterate over a statement five times?
56:53 That five is obviously a base class.
56:56 It's a number.
56:57 Do you know what?
56:58 You can add your own methods to that.
57:01 I did, extensively.
57:03 In Rails, we have something called active support,
57:06 which is essentially my dialect of Ruby for programming web applications.
57:11 And I'll give you one example.
57:13 I've added a method called days to the Number.
57:17 So if you do 5.days, you get five days in seconds.
57:23 Because seconds is the way we set
57:25 cache expiration times and other things like that.
57:27 So you can say cache expires in 5.days.
57:32 And you're gonna get whatever's five times- That's nice.
57:37 24 times 60 times 60 is, or whatever the math is, right?
57:41 Very humanly readable.
57:43 In a novel programming language,
57:44 you would type out the seconds and then you would
57:47 have a little comment above it saying this represent five days.
57:51 In Ruby, you get to write five days.
57:53 But even better than that, Matz didn't come up with it.
57:56 Matz didn't need the five days.
57:58 I needed that because I needed to expire caches.
58:01 I was allowed by Matz to extend his story with my own chapters unequal footing,
58:10 such that a reader Ruby could not tell the difference
58:13 between the code Matz wrote and the code that I wrote.
58:16 He trusted me as a complete stranger from Denmark
58:20 who had never met to mess with his beautiful story.
58:24 That level of trust is essentially unheard of.
58:27 I know there are other program languages
58:29 that allow things with macros and so forth.
58:31 But none do it in a way like Ruby does it.
58:34 None does it with an articulated vision of humanity,
58:38 a trust in humanity like Matz does,
58:42 that is the opposite end of the spectrum of Java.
58:46 Yeah, I mean for my aesthetic sensibilities,
58:49 just the way you describe 5.days, that's really pleasant to me.
58:53 Like I could see myself sitting alone, sleep deprived, and just writing that.
59:01 It's just an easy thing.
59:02 You can write it in a long way with a comment.
59:04 You can write multiple lines.
59:05 You could do, and now with AI, I'm sure it's gonna generate it correctly,
59:09 but there's something really pleasant about the simplicity of that.
59:11 I'm not sure what that is.
59:13 But you're right, there is a good feeling there.
59:16 And I'm sure we'll talk about happiness from all kinds of philosophical angles,
59:20 but you know, that is what happiness is made of.
59:26 That little- Exactly.
59:27 good feeling there.
59:29 It's the good feeling that come out of a concept compressed to its pure essence.
59:35 There's nothing you can take away from that statement that's superfluous.
59:39 But see, I also wanna push back a little
59:41 bit 'cause I also a program named Perl a bunch.
59:46 Just be cool.
59:49 So like it's not all about compression.
59:51 No, you can compress it too far.
59:53 Perl golf is a thing where you can
59:56 turn programs into something that's unreadable for humans.
59:59 Now the great thing about Perl was that it came out before Ruby.
1:00:03 Matz was a great student of Wall, was a great student of Perl,
1:00:09 was a great student of Python and Smalltalk and Lisp.
1:00:12 He took inspiration from all of these prior attempts at creating good
1:00:17 programming languages and really edited down the very best bits into this.
1:00:21 So he was able to learn from his lessons.
1:00:24 But what I found incredible about Ruby is that here we are 2025,
1:00:29 Ruby has been worked on for over 30 years,
1:00:33 and essentially the first draft is 90% of what we're still using.
1:00:38 There was almost a sense of divine inspiration
1:00:41 possible in wherever Matz was writing that initial version
1:00:45 of Ruby that transcended time to such a degree
1:00:49 that no one has still even begun to reach it.
1:00:51 This is the other thing I always find fascinating.
1:00:54 I generally believe in the efficient market theory that if
1:00:58 someone comes up with a better mousetrap or better idea,
1:01:00 others will eventually copy them to such an extent
1:01:03 that perhaps the original mousetrap is no longer even remembered.
1:01:07 No one has been able to copy that essence of Ruby.
1:01:10 They borrowed elements, that's totally fine,
1:01:13 but Ruby still stands taller than everyone else on these metrics,
1:01:17 on this trust in humanity and programmers.
1:01:21 And we should also say like, you know,
1:01:23 maybe the perfect programming language that metric and then
1:01:27 there's the successful language and those are often different.
1:01:30 There's something wonderful about the Brendan Eich story of creating JavaScript.
1:01:36 There's something truly beautiful about the way JavaScript took over the world.
1:01:43 I've recently got to visit the Amazon jungle and just one of my favorite
1:01:46 things to do is just to watch the ants take over anything, everything.
1:01:50 And it's just like it's a nice distributor system.
1:01:52 It's a messy thing that doesn't seem to be ordered,
1:01:55 but it just works and the machinery of it.
1:01:58 Worse is Better.
1:01:58 Worse is Better.
1:01:59 I mean that's actually the name of a pattern in software
1:02:03 development and other ways of how do is the pattern of Linux.
1:02:07 Linux was quantifiably worse than I think it was Minx at the time.
1:02:11 Other ways of it that were more cathedral less bizarre and it's still
1:02:18 one that there's something to it
1:02:20 that the imperfections can help something go forward.
1:02:23 It's actually a trick I've studied to the degree that I
1:02:28 now incorporated in almost all open source that I do.
1:02:30 I make sure that when I release the first version
1:02:32 of any new thing I work on, it's a little broken.
1:02:35 It's a little busted in ways that invite people to come in and help me.
1:02:40 Because there's no easier way to get the collaboration of other programmers
1:02:46 than to put something out that they know how to fix and improve.
1:02:49 Yeah, that's awesome.
1:02:50 But Ruby is somehow, or was at least a little bit different in that regard.
1:02:54 Not in all regards.
1:02:55 Matz got the ethos of the language, the design of language just right.
1:03:00 But the first versions of Ruby were terribly slow.
1:03:03 It's taken, I mean hundreds of man years to get Ruby
1:03:09 to be both this beautiful yet also highly efficient and really fast.
1:03:15 And we should say that the thing that made you
1:03:17 fall in love with this particular programming language is metaprogramming?
1:03:21 Yes, so that takes all of these elements we've
1:03:24 just talked about and turned them up to 11.
1:03:27 I'll explain metaprogramming real quick.
1:03:28 Yeah, please.
1:03:29 Metaprogramming is essentially a version of the 5.days.
1:03:34 You get to add keywords to the language.
1:03:37 Active record is the part of Rails that communicates with the database.
1:03:43 This is a system where every table in the database is represented by a class.
1:03:50 So if we take the user example, again,
1:03:51 you do class user descends from active record base,
1:03:57 and then the first line you can write is this.
1:04:00 I want my users to have many posts or have many comments.
1:04:04 Let's do that.
1:04:05 We're making some system where users can make comments.
1:04:07 The very next line is has_many, space, colon comments.
1:04:15 Now you've set up a dependency between
1:04:17 users and comments that will give your whole
1:04:21 host of access and factory methods for users to be able to own comments,
1:04:25 to create comments, to update comments in that line
1:04:30 alone has many looks like a keyword.
1:04:33 It looks like it's part of the Ruby language.
1:04:35 That's metaprogramming.
1:04:36 When Rails is able to add these elements to how you define a class
1:04:42 and then that runs code that adds a bunch of methods to the use of class,
1:04:47 that's metaprogramming.
1:04:47 And when metaprogramming is used in this way,
1:04:51 we call it domain specific languages.
1:04:53 You take a generic language like Ruby and you tailor it
1:04:57 to a certain domain like describing relationships
1:05:00 in a database at a object level.
1:05:05 And this is one of those early examples where you can do,
1:05:09 user has many comments.
1:05:11 Belongs _two_ :account.
1:05:15 Now you've set up a one-to-one
1:05:18 relationship before we had a one-to-many relationship.
1:05:21 Rails is rife with all these kinds of domain specific
1:05:25 languages where at sometimes it doesn't even look like Ruby.
1:05:29 You can't identify Ruby keywords.
1:05:31 You can just identify what looks like keywords in its own programming language.
1:05:37 Now again, I know that Lisp and others also do this stuff.
1:05:41 They just do it with the maximum amount of line
1:05:44 noise that can ever be crammed into a programming language.
1:05:48 And Ruby does it at a level where you cannot
1:05:51 tell my metaprogramming from Matz's keywords and with zero line noise.
1:05:56 Yeah, I should say that my first love was Lisp.
1:05:58 So there's a slow tear that you can't see.
1:06:02 I've actually never written any real Lisp myself.
1:06:04 Well, how can you judge it so harshly then?
1:06:07 'Cause I have two eyes and I can look at code,
1:06:09 and my aesthetic sensibilities forbid me to even go much further.
1:06:13 Which is a limitation, I know.
1:06:15 I should actually dive into Lisp because I've found that I've
1:06:18 learned a lot just diving into, maybe I'm insulting Lisp again here,
1:06:22 but the past of programming languages with Smalltalk, for example.
1:06:26 I think Smalltalk is a incredible experiment that also
1:06:32 worked but isn't suitable for today's programming environments.
1:06:36 I love that we're talking about Ruby so much and what
1:06:38 beautiful code is and what a beautiful programming language is.
1:06:41 So one of the things that is I think implied maybe you made
1:06:46 explicit in your descriptions there is
1:06:49 that Ruby is dynamic typing versus strict typing.
1:06:52 And you have been not just saying that it's a nice thing,
1:06:57 but that you will defend dynamic typing to the death.
1:07:00 Like that freedom is a powerful freedom to preserve.
1:07:05 It's the essence of what makes Ruby Ruby.
1:07:07 This is why I don't fully understand when
1:07:09 people call for Ruby to add static typing.
1:07:12 'Cause to me, it's the bedrock of what this is.
1:07:15 Why would you wanna turn one
1:07:17 of the most beautiful languages into something far uglier?
1:07:21 This is one of my primary objections to static typing.
1:07:25 It's not just that it limits you in certain ways.
1:07:28 It makes metaprogramming harder.
1:07:30 I write a bunch of metaprogramming.
1:07:32 I've seen what it takes to do metaprogramming TypeScript.
1:07:35 That was actually one of the things that just really sent me on a tear
1:07:38 of getting meta or getting TypeScript out
1:07:40 of some of the projects that I'm involved with.
1:07:42 We pulled TypeScript out of turbo.
1:07:45 One of the front-end frameworks that we have,
1:07:48 because I tried to write to metaprogramming
1:07:51 in TypeScript and I was just infuriated.
1:07:52 I don't want that experience,
1:07:55 but I also don't want it from an aesthetic point of view.
1:07:57 I hate repetition.
1:07:59 We've just talked about how much I love that Ruby
1:08:02 boils all of these expressions down to its essence.
1:08:06 You can't remove one dot.
1:08:08 You can't remove one character without losing something.
1:08:11 This moment you go for static typing that you declare,
1:08:14 at least I know there are ways to do implied typing and so forth.
1:08:17 But let's just take the stereotypical case of a example, for example.
1:08:22 Capital U, user, I'm declaring the type of the variable; lowercase user,
1:08:29 I'm now naming my variable; equals uppercase user or new uppercase user.
1:08:35 I've repeated user three times.
1:08:37 I don't have time for this.
1:08:40 I don't have sensibilities for this.
1:08:42 I don't want my Ruby polluted with this.
1:08:45 Now I understand all the arguments for why people like static
1:08:49 typing when the primary arguments is that it makes tooling easier.
1:08:53 It makes it easier to do auto complete in editors, for example.
1:08:57 It makes it easier to find certain kinds
1:08:59 of bugs because maybe you're calling methods that don't
1:09:03 exist on an object and the editor can
1:09:06 actually catch that bug before you even run it.
1:09:09 I don't care.
1:09:11 First of all, I don't write code with tools.
1:09:15 I write them with text editors.
1:09:17 I chisel them out of the screen with my bare hands.
1:09:22 I don't auto complete.
1:09:23 And this is why I love Ruby so much, and this is why I continue to be
1:09:27 in love with the text editor rather than the IDE.
1:09:31 I don't want an IDE.
1:09:33 I want my fingers to have to individually type out every element of it
1:09:38 because it will force me to stay in the world where Ruby is beautiful.
1:09:43 Because as soon as it gets easy to type a lot of boilerplate, well guess what?
1:09:47 You can have a lot of boilerplate.
1:09:49 Every single language basically that has great tooling support has
1:09:54 a much higher tolerance for boilerplate because the thinking is,
1:09:58 well, you're not typing it anyway, you're just auto completing it.
1:10:01 I don't want that at all.
1:10:02 I want something where the fabric I'm working in, it's just a text file.
1:10:08 There's nothing else to it.
1:10:10 So these things play together.
1:10:12 There's the aesthetic part,
1:10:13 there's the tooling part, there's the metaprogramming part.
1:10:16 There's the fact that Ruby's ethos of duck typing,
1:10:21 I dunno if you've heard that term before.
1:10:23 It's essentially not about, can I call this method,
1:10:27 if a object is of a certain class.
1:10:30 It is, can I call this method if the method responds?
1:10:34 It's very out of Smalltalk in that regard.
1:10:37 You don't actually check of whether that class has the method,
1:10:41 which allows you to dynamically add methods at runtime and do all sorts
1:10:46 of really interesting things that underpin all
1:10:48 the beautiful metaprogramming that we do in Ruby.
1:10:51 I don't wanna lose any of that.
1:10:52 And I don't care for the benefits.
1:10:55 One of the benefits I see touted over and over
1:10:57 again is that it's much easier to write correct software.
1:11:01 You can have fewer bugs.
1:11:02 You're gonna have less null pointer exceptions.
1:11:06 You're gonna have less all of this stuff.
1:11:07 Yeah, I don't have any of that.
1:11:09 It's just not something that occurs in my standard mode of operation.
1:11:13 I'm not saying I don't have bugs, of course I do,
1:11:15 but I catch those bugs with unit testing, with integration testing.
1:11:19 Those are the kinds of precautions that will catch logical bugs.
1:11:25 Things that compile but are wrong along with the uncompilable stuff.
1:11:30 So I've never been drawn into this world,
1:11:33 and part of it is because I work on a certain class of systems.
1:11:36 I fully accept that.
1:11:37 If you're writing systems that have five,
1:11:40 10, 50 million lines of code with hundreds,
1:11:44 thousands, or tens of thousands of programmers,
1:11:47 I fully accept that you need different methods.
1:11:49 What I object to is the idea that what's right
1:11:52 for a code base of 10 million lines of code
1:11:55 with a hundred thousand programmers working on it is also the same
1:11:58 thing I should be using in my bedroom to create Basecamp,
1:12:01 because I'm just a single individual.
1:12:03 That's complete nonsense.
1:12:05 In the real world, we would know that that makes no sense at all.
1:12:08 That you don't, I don't know, use your Pagani to go pick up groceries at Costco.
1:12:14 It's a bad vehicle for that.
1:12:16 It just doesn't have the space.
1:12:17 You don't wanna muddy the beautiful seats.
1:12:19 You don't wanna do any of those things.
1:12:21 We know that certain things that are very
1:12:24 good in certain domains don't apply to all.
1:12:26 In programming languages, it seems like we forget that.
1:12:29 Now, to be fair, I also had a little
1:12:31 bit perhaps of a reputation of forgetting that.
1:12:33 When I first learned Ruby, I was so head over heels in love
1:12:36 with this programming language that I almost found
1:12:39 it unconceivable that anyone would choose any other
1:12:42 programming language at all to write web applications.
1:12:45 And I kind of engaged the evangelism of Ruby
1:12:47 on Rails in that spirit as a crusade, as I just need to teach you the gospel.
1:12:54 I just need to show you this conditional code that we just
1:12:57 talked about and you will convert at the point of a sharp argument.
1:13:01 Now, I learned that that's not the way.
1:13:03 And part of the reason it's not the way is the programmers think differently.
1:13:06 Our brains are configured differently.
1:13:10 My brain is configured perfectly for Ruby.
1:13:13 Perfectly for a dynamically duck typed language that I
1:13:19 can chisel code out of a text editor with.
1:13:21 And other people need the security of an IDE.
1:13:27 They want the security of classes that won't
1:13:31 compile unless you call the methods on it.
1:13:33 I have come to accept that, but most programmers don't.
1:13:36 They're still stuck in, essentially, I like static typing.
1:13:40 Therefore, static typing is the only way to create reliable correct systems,
1:13:45 which is just such a mind blowing,
1:13:48 to be blunt, idiotic thing to say in the face of evidence,
1:13:52 mountains of evidence to the contrary.
1:13:55 This is one of the reasons I'm so in love
1:13:58 with Shopify as the flagship application for Ruby on Rails.
1:14:03 Shopify exists at a scale that most programmers will never touch.
1:14:10 On Black Friday, I think Shopify did 1 million requests per second.
1:14:15 That's not 1 million requests of images.
1:14:18 That's of dynamic requests that are funneling through the pipeline of commerce.
1:14:22 I mean, Shopify runs something like 30%
1:14:25 of all e-commerce stores on the damn internet.
1:14:29 A huge portion of all commerce in total runs
1:14:33 through Shopify and that runs on Ruby on Rails.
1:14:35 So Ruby on Rails is able to scale up to that level
1:14:42 without using static typing in all of what it does.
1:14:45 Now I know they've done certain experiments in certain ways because they
1:14:48 are hitting some of the limits that you will hit with dynamic typing.
1:14:51 And some of those limits you hit with dynamic typing are actually,
1:14:55 by the way, just limits you hit when you write 5 million lines of code.
1:14:58 I think the Shopify monolith is about 5 million lines of code.
1:15:01 At that scale, everything breaks because you're at the frontier
1:15:06 of what humans are capable of doing with programming languages.
1:15:09 The difference in part is that Ruby is
1:15:12 such a succinct language that those 5 million,
1:15:14 if they had been written in, let's just say Go or Java would've been 50 or 25.
1:15:20 Now that might have alleviated some of the problems that you
1:15:24 have when you work on huge systems with many programmers.
1:15:27 But it certainly would also have compounded them
1:15:29 trying to understand 25 million lines of code.
1:15:33 So the thing does scale.
1:15:34 That's a persistent myth that it doesn't scale Shopify and others.
1:15:39 But Shopify thinks a great example.
1:15:41 By the way, I love Shopify and I love Tobi, amazing.
1:15:45 You gotta have Tobi on.
1:15:46 Yeah, for sure.
1:15:47 Just talking to him this morning.
1:15:47 For sure, he's a brilliant.
1:15:49 I got to hang out with him in the desert somewhere, I forget in Utah.
1:15:52 He's just a brilliant human.
1:15:55 And Shopify, shopify.com/lex has been supporting
1:15:59 this podcast for the longest time.
1:16:00 I don't think actually Tobi knows that they sponsor this podcast.
1:16:04 I mean this is a big company, right?
1:16:05 It's a huge company.
1:16:06 I think just under 10,000 employees, market cap of 120 billion,
1:16:13 GMV of a quarter of a trillion every quarter.
1:16:16 And he's involved with the details though.
1:16:18 He is, very much so.
1:16:19 Funny story about Tobi.
1:16:21 Tobi was on the Rails core team back in the mid 2000s.
1:16:26 Tobi himself wrote Active Merchant,
1:16:29 which is one of the frameworks for creating shops.
1:16:32 He wrote the Liquid templating language that Shopify still uses to this day.
1:16:37 He has a huge list of contributions to the Rails ecosystem,
1:16:41 and he's the CEO of the company.
1:16:43 Yeah, I think it's just...
1:16:45 It's very inspiring to me because it's such
1:16:47 at the opposite end of what I like to do.
1:16:50 I like to chisel code with my own hands most of the day.
1:16:53 He runs a company of almost 10,000 people
1:16:57 that is literally like world commerce depends on it.
1:17:01 A level of criticality I can't even begin to understand.
1:17:05 And yet we can see eye to eye on so
1:17:07 many of these fundamental questions in computer science and program development.
1:17:12 That is a dynamic range to be able to encompass Rails being a great tool
1:17:20 for the one developer who's just starting out
1:17:23 with an idea who don't even fully know everything.
1:17:25 Who is right at the level where PHP would've
1:17:28 been a good fit in those late '90s because yeah,
1:17:30 I could probably upload something to an FTP server, and so on.
1:17:33 Rails does have more complexity than
1:17:35 that, but it also has so much longer runway.
1:17:37 The runway goes all the way to goddamn Shopify.
1:17:40 That is about the most convincing argument I can make for sort
1:17:43 of dynamic range that we can do a lot of it.
1:17:46 And even having said that, Shopify is the outlier of course.
1:17:51 I don't think about Shopify as the primary target when I write Rails.
1:17:56 I think of the single developer.
1:17:58 Actually, I do think about Shopify.
1:17:59 But I don't think about Shopify now.
1:18:01 I think of Shopify when Tobi was writing Snow Devil,
1:18:04 which was the first e-commerce store to sell snowboards that he created,
1:18:08 that was the pre-Shopify Shopify.
1:18:10 He created all by himself.
1:18:12 And that was possible because Ruby on Rails isn't just about beautiful code.
1:18:17 It's just as much about productivity.
1:18:19 It's just as much about the impact
1:18:21 that an individual programmer is able to have.
1:18:23 That they can build system where they can keep the whole
1:18:26 thing in their head and be able to move it forward such
1:18:28 that you can go from one developer sitting and working on something
1:18:33 and that something is Shopify and it turns into what it is today.
1:18:37 When we talk about programming languages and we compare 'em,
1:18:40 we often compare 'em at a very late stage.
1:18:43 Like what is the better programming language for let's
1:18:45 say Twitter in 2009 when it's already a huge success.
1:18:49 Twitter was started on Ruby on Rails.
1:18:51 They then hit some scaling problems.
1:18:53 It was a big debacle at the time.
1:18:55 They end up then I think writing it in some other language,
1:19:01 which by the way I think is the best advertisement ever for Ruby on Rails,
1:19:03 because nothing fucking happened for 10 years after they switched over, right?
1:19:08 Essentially zero innovation.
1:19:10 Some of that was because they were doing a long conversion,
1:19:14 and all of the early success in part came because
1:19:17 they had the agility quickly change and adopt and so forth.
1:19:20 That's what startups needs.
1:19:22 That's what Shopify needed.
1:19:23 That's what Twitter needed.
1:19:24 That's what everyone needs.
1:19:26 And that's the number one priority for Ruby on Rails.
1:19:29 To make sure that we don't lose that.
1:19:30 Because what happens so often when development tools and program language
1:19:35 driven by huge companies is that they mirror their org chart.
1:19:39 React and everything else needed to use that is
1:19:44 in some ways a reflection of how Meta builds Facebook.
1:19:48 'Cause of course it is.
1:19:49 Because of course it's an destruction of that.
1:19:50 I'm not saying React isn't a great tool and that can't be used by smaller teams.
1:19:54 Of course it can.
1:19:55 But it's born in a very different context than something like Ruby on Rails.
1:20:00 Let me say this a small aside because I
1:20:02 think we might return to Shopify and celebrate it often.
1:20:05 Just a sort of personal note.
1:20:08 This particular podcast has way more sponsors and sponsors
1:20:12 that want to be sponsors than I could possibly ever have.
1:20:16 And it's really, really important for me to not give a shit,
1:20:21 and to be able to celebrate people.
1:20:24 Like I celebrate people.
1:20:25 I celebrate companies.
1:20:27 And I don't care that they're sponsoring.
1:20:30 I really don't care.
1:20:32 I just wanna make that very explicit 'cause
1:20:34 we're gonna continue saying positive things about Shopify.
1:20:36 I don't care.
1:20:37 Stop sponsoring.
1:20:39 It doesn't really matter to me.
1:20:40 But yeah, I just wanna make that explicit.
1:20:42 So, but to linger on the scaling thing with the Twitter and the Shopify,
1:20:46 can you just explain to me what Shopify is doing with the YJIT?
1:20:52 What did they have to try to do to scale this thing?
1:20:57 Because that's kind of an incredible story, right?
1:20:59 Yeah, so one of the great contributions
1:21:01 that Shopify has made to the entire Ruby ecosystem,
1:21:04 not just Rails but in particular Rails is YJIT.
1:21:07 So YJIT is their compiler for Ruby.
1:21:11 That just makes everything a lot more efficient
1:21:13 and at Shopify scale eking out even a five,
1:21:17 10% improvement in Ruby's overhead and execution time is a huge deal.
1:21:23 Now, Shopify didn't need YJIT.
1:21:27 Shopify was already running on the initial version of Ruby that was,
1:21:31 I think 10 times slower than what we have today.
1:21:34 If you look back upon the Ruby 186,
1:21:38 that Tobi probably started on just as I started on, and that was
1:21:42 enough to propel Shopify to the scale that it has today.
1:21:46 A lot of the scaling conversation in is
1:21:49 lost in a failure to distinguish two things.
1:21:54 Scale is kind of one package we talk about
1:21:57 when there are really multiple packages inside of it.
1:21:59 One is runtime performance, latency.
1:22:03 How fast can you execute a single request?
1:22:05 Can it happen fast enough that the user will not notice?
1:22:09 If your Rails request takes a second and a half to execute,
1:22:12 the user's gonna notice.
1:22:14 Your app is gonna feel slow and sluggish.
1:22:16 You have to get that response time down below,
1:22:20 let's say at least 300 milliseconds.
1:22:21 I like to target a hundred milliseconds as my latency.
1:22:25 That's kind of performance.
1:22:27 How much performance of that kind of latency
1:22:30 can you squeeze out of a single CPU core,
1:22:32 that tells you something about what the price of a single request will be.
1:22:36 But then whether you can deal with 1 million
1:22:40 requests a second like Shopify is doing right now.
1:22:43 If you have one box that can do a thousand requests a second,
1:22:47 you just need X boxes to get up to a million.
1:22:50 And what you'll actually find is that when it comes to programming languages,
1:22:53 they're all the same in this way.
1:22:55 They all scale largely beautifully horizontally.
1:22:59 You just add more boxes.
1:23:01 The hard parts of scaling a Shopify is typically the program language.
1:23:07 It's the database.
1:23:08 And that's actually one of the challenges that Shopify has now is
1:23:13 how do you deal with MySQL at the scale that they're operating at?
1:23:18 When do you need to move to other databases to get worldwide performance?
1:23:23 All of these things.
1:23:25 The questions about scaling Ruby are economic questions.
1:23:28 If we are spending so and so much on application servers,
1:23:32 if we can get just 5% more performance out of Ruby,
1:23:35 well we could save 5% of those servers
1:23:37 and that could filter down into the budget.
1:23:39 Now that analysis concludes into basically one thing.
1:23:43 Ruby is a luxury language.
1:23:47 It's a luxury, the highest luxury in my opinion.
1:23:51 It is the Coco Chanel of programming languages.
1:23:55 Something that not everyone can afford.
1:23:57 And I mean this in the best possible way.
1:23:59 There are some applications on the internet
1:24:01 where each request has so little value,
1:24:05 you can't afford to use a luxurious language like Ruby to program in it.
1:24:09 You simply have to slum it with a C
1:24:12 or a Go or some other low level language or Rust,
1:24:16 talk about line noise there for...
1:24:17 It's like the thrift store of languages.
1:24:20 Exactly, where you need kind of just...
1:24:22 you need a very low level to do it.
1:24:24 You can't afford to use a luxury language to use to build it with.
1:24:29 That's not true of Shopify.
1:24:30 It wasn't true of Basecamp even back in 2004.
1:24:33 It's not been true of 99% of all web applications ever
1:24:38 created because the main cost component of 99% of web applications,
1:24:42 it's not CPU course.
1:24:44 It's wet course.
1:24:46 It's human course.
1:24:47 It's human capacity to understand and involve systems.
1:24:52 It's their personal productivity.
1:24:54 I did a calculation once when someone had for the 400th time said that, "Oh,
1:24:58 if you switch from Ruby to some faster language,
1:25:02 you could save a bunch of money." And I calculated it out that at the time,
1:25:05 and I think the last time I did this calculation was almost a decade ago.
1:25:09 We were spending about 15% of our operating budget on Ruby application service.
1:25:15 So for me to improve my cost profile of the business by seven percentage points,
1:25:24 I'd have to pick something twice as fast.
1:25:26 That's quite hard.
1:25:27 Versus if Ruby and Ruby on Rails
1:25:30 was even 10% more productive than something else,
1:25:33 I would move the needle far more because making
1:25:36 individual programmers more productive actually matters a lot more.
1:25:39 This is why people are so excited about AI.
1:25:40 This is why they're freaking out over the fact
1:25:44 that a single programmer in Silicon Valley who
1:25:46 makes $300,000 a year can now do the work of three or five, at least in theory.
1:25:52 I haven't actually seen that fully in practice,
1:25:54 but let's just assume the theory is correct if not now, then in six months.
1:25:58 That's a huge deal.
1:26:00 That matters so much more than whether you can
1:26:03 squeeze a few more cycles out of the CPU,
1:26:06 when it comes to these kinds of business applications.
1:26:08 If you're making unreal engine rendering stuff like Tim Sweeney you had on.
1:26:14 Yeah, he needs to really sweat all those details.
1:26:16 The Nanite engine can't run on Ruby.
1:26:19 It's never going to.
1:26:20 It would not meant for that, fine.
1:26:22 These kinds of business applications absolutely can and everything
1:26:26 that people are excited about AI for right now,
1:26:30 that extra capacity to just do more.
1:26:33 That was why we were excited about Ruby back in the early 2000s.
1:26:36 That was be because I saw that if we could
1:26:39 even squeeze out a 10% improvement of the human programmer,
1:26:44 we'd be able to do so much more for so much less.
1:26:48 Probably argue about this, but I really like working together with AI,
1:26:54 collaborating with AI.
1:26:55 And I would argue that the kind of code
1:26:57 you want AI to generate is human readable, human interpretable.
1:27:00 If it's generating Perl golf code, it's not a collaboration.
1:27:07 So it has to be speaking the human.
1:27:09 It's not just you're writing the prompts in English.
1:27:11 You also want to read the responses
1:27:14 in the human interpretable language like Ruby, right?
1:27:17 So that's actually is beneficial for AI too.
1:27:19 'Cause you've kind of said that for you the sculptor,
1:27:23 the sort of the elitist Coco Chanel sculptor,
1:27:27 you want to on your fancy keyboard to type
1:27:30 every single letter yourself of your own fingers.
1:27:32 But it's also that the benefit of Ruby also applies in once some
1:27:38 of that is written by AI and you're
1:27:40 actually doing with your own fingers the editing.
1:27:43 Because you can interact with it because it's human interpretable.
1:27:47 The paradigm I really love with this was something Elon actually said
1:27:49 on one of your shows when you guys were talking about Neuralink,
1:27:52 that Neuralink allows the bandwidth between you and the machine to increase.
1:27:59 That language either spoken or written is very low bandwidth.
1:28:03 If you are to calculate just how many bits we
1:28:06 can exchange as we are sitting here, it's very slow.
1:28:11 Ruby has a much higher bandwidth of communication revealed conveys so
1:28:18 much more concept per character than most other programming languages do.
1:28:24 So when you are collaborating with AI, you want really high bandwidth.
1:28:29 You want it to be able to produce programs with you,
1:28:32 whether you're letting it write the code or not,
1:28:36 that both of you can actually understand really
1:28:39 quickly and that you could compress a grand concept,
1:28:44 a grand system into far fewer parts that both of you can understand.
1:28:49 Now, I actually love collaborating with AI too.
1:28:52 I love chiseling my code and the way I use AI is in a separate window.
1:28:57 I don't let it drive my code.
1:28:58 I've tried that.
1:28:59 I've tried the cursors and the wind surfaces
1:29:01 and I don't enjoy that way of writing.
1:29:03 And one of the reasons I don't enjoy that way of writing
1:29:07 is I can literally feel competence draining out of my fingers.
1:29:12 Like that level of immediacy with the material disappears.
1:29:17 And the where I felt this the most was I did
1:29:21 this remix of Ubuntu called Omakub when I switched to Linux,
1:29:25 and it's all written in Bash.
1:29:27 I'd never written any serious amount of code in Bash before.
1:29:31 So I was using AI to collaborate,
1:29:32 to write a bunch of Bash with me, 'cause I needed all this.
1:29:35 I knew what I wanted.
1:29:37 I could express it in Ruby.
1:29:39 But I thought it was an interesting challenge to filter through
1:29:41 Bash because what I was doing was setting up a Linux machine.
1:29:45 That's basically what Bash was designed for.
1:29:47 It's a great constraint.
1:29:49 But what I found myself doing was asking
1:29:52 AI for the same way of expressing a conditional,
1:29:55 for example, in Bash over and over again.
1:29:58 That by not typing it, I wasn't learning it.
1:30:01 I was using it, I was getting the expression I wanted, but I wasn't learning it.
1:30:06 And I got a little scared.
1:30:08 I got a little scared like, is this the end of learning?
1:30:11 Am I no longer learning if I'm not typing?
1:30:13 And the way I, for me, recast that was, I don't wanna give up on the AI.
1:30:18 It's such a better experience as a programmer to look up APIs,
1:30:23 to get a second opinion on something, to do a draft.
1:30:28 But I have to do the typing myself because you learn with your fingers.
1:30:32 If you're learning how to play the guitar,
1:30:34 you can watch as many YouTube videos as you want.
1:30:36 You're not gonna learn the guitar.
1:30:38 You have to put your fingers on the strings to actually learn the motions.
1:30:44 And I think there is a parallel here to programming where
1:30:46 programming has to be learned in part by the actual typing.
1:30:51 I'm just really, this is fascinating.
1:30:53 Listen, part of my brain agrees with you.
1:30:55 100% part doesn't.
1:30:59 I think AI should be in the loop of learning.
1:31:02 Now current systems don't do that, but I
1:31:06 think it's very possible for cursor to say,
1:31:09 to basically force you to type certain things.
1:31:12 So like if you set the mode of learning,
1:31:14 I don't want to be this sort of give up on AI.
1:31:20 I think vibe coding is a skill.
1:31:24 So for an experienced programmer it's too
1:31:28 easy to dismiss vibe coding as a thing.
1:31:31 [DHH] I agree, I wouldn't dismiss it.
1:31:32 But I think you need to start building that skill and start to figure
1:31:37 out how do you prevent the competency
1:31:40 from slipping away from your fingers and brain.
1:31:43 Like how do you develop that skill in parallel to the other skill?
1:31:47 I don't know.
1:31:48 I think it's a fascinating puzzle though.
1:31:51 I know too many really strong programmers that just kind of avoid AI,
1:31:54 'cause it's currently a little too dumb.
1:31:57 Yes, it's a little too slow.
1:31:58 It's actually my main problem.
1:32:00 It's a little too dumb in some ways, but it's a little too slow in other ways.
1:32:03 When I use Claude's code, the terminal version of a Claude,
1:32:10 which is actually my preferred way of using it, I get too impatient.
1:32:14 It feels like I'm going back to a time where code
1:32:16 had to compile and I had to go do something else.
1:32:19 A boil some tea while the code is compiling.
1:32:21 Well, I've been working in Ruby for 20 years.
1:32:24 I don't have compiled weight in me anymore.
1:32:28 So there's that aspect of it.
1:32:30 But I think the more crucial aspect
1:32:31 for me is I really care about the competence.
1:32:34 And I've seen what happens to even great
1:32:36 programmers the moment they put away the keyboard.
1:32:39 Because even before AI, this would happen as soon as people would get promoted.
1:32:44 Most great programmers who work in large businesses stop writing code
1:32:48 on a daily basis because they simply have too many meetings to attend to.
1:32:51 They have too many other things to do.
1:32:53 And invariably they lose touch with programming.
1:32:57 That doesn't mean they forget everything.
1:33:00 But if you don't have your fingers in the sauce,
1:33:05 source, you are going to lose touch with it.
1:33:08 There's just no other way.
1:33:09 I don't want that because I enjoy it too much.
1:33:12 This is not just about outcomes.
1:33:14 This is what's crucial to understand programming for programmers who like
1:33:19 to code is not just about the programs they get out of it.
1:33:23 That may be the economic value.
1:33:25 It's not the only human value.
1:33:27 The human value is just much in the expression.
1:33:31 When someone who sits down on a guitar and plays "Stairway
1:33:35 to Heaven," there's a perfect recording of that that will last in eternity.
1:33:40 You can just put it on Spotify.
1:33:41 You don't actually need to do it.
1:33:42 The joy is to command the guitar yourself.
1:33:46 The joy of a programmer, of me as a programmer, is to type the code myself.
1:33:51 If I elevate myself, if I promote myself out of programming,
1:33:55 I turn myself into a project manager.
1:33:57 A project manager of a murder of AI crows as I wrote the other day.
1:34:02 I could have been become a project manager my whole career.
1:34:05 I could have become a project manager 20 years
1:34:07 ago if I didn't care to write code myself.
1:34:09 And I just wanted outcomes.
1:34:11 That's how I got started in programming.
1:34:12 I just wanted outcomes.
1:34:14 Then I fell in love with programming
1:34:16 and now I'd rather retire than giving it up.
1:34:19 Now that doesn't mean you can't have your cake and needed to.
1:34:22 I've done some vibe coding where I didn't care that I wasn't playing myself.
1:34:28 I just wanted to see something.
1:34:30 There was an idea in my head.
1:34:31 I wanted to see something.
1:34:33 That's fine.
1:34:34 I also use AI all day long.
1:34:37 In fact, I'm already at the point where if you took it away from me,
1:34:40 I'd be like, oh my god, how do we even look things up on the internet anymore?
1:34:43 Is Stack Overflow still around?
1:34:46 Or I'm still a thing?
1:34:47 Like how do I even find answers to some of these questions I have all day long.
1:34:51 I don't wanna give up AI.
1:34:52 In fact, I'd say the way I like to use AI,
1:34:55 I'm getting smarter every because of AI.
1:34:58 Because I'm using AI to have it explain things to me.
1:35:02 Even stupid questions.
1:35:04 I would be a little embarrassed to even enter into Google.
1:35:07 AI is perfectly willing to give me the ELI5 explanation of some Unix command.
1:35:14 I should have known already, but I don't, I'm sorry,
1:35:17 can you just explain it to me and now I know the thing.
1:35:19 So at the end of the day of me working with AI all day long,
1:35:23 I'm a little bit smarter.
1:35:25 Like 5%, sorry, not 5%, half a percent maybe.
1:35:29 That compounds over time.
1:35:31 But what I've also seen,
1:35:32 when I worked on the Omakub project and I tried to let AI drive for me,
1:35:36 I felt I was maybe half a percent dumber at the end of the day.
1:35:41 Okay, you said a lot of interesting things.
1:35:42 First of all, let's just start at the very fact that asking dumb questions.
1:35:46 If you go to Stack Overflow and ask a dumb question
1:35:49 or read somebody else's dumb question and the answer to it,
1:35:52 there's a lot of judgment there.
1:35:54 AI sometimes to an excessive degree has no judgment.
1:35:58 It usually says, oh, that's a great question.
1:36:00 [DHH] To a fault.
1:36:02 Yeah, oh, that's wonderful.
1:36:05 Yeah, I mean, it's so conducive to learning.
1:36:10 It's such a wonderful tool of learning and I too would miss it.
1:36:13 And it's a great basically search engine into all
1:36:17 kinds of nuances of a particular programming language,
1:36:19 especially if you don't know it that well
1:36:22 or like APIs you can load in documentation.
1:36:24 It's just so great for learning.
1:36:26 I, for me personally...
1:36:30 I mean, on the happiness scale, it makes me more excited to program.
1:36:35 I don't know what that is exactly.
1:36:37 Part of that is the, I'm really sorry.
1:36:40 Stack Overflow is an incredible website, but there is a negativity there.
1:36:44 There's a judgment there.
1:36:45 It's just exciting to be out like with a hype man next to me,
1:36:51 just like saying, yeah, that's a great idea.
1:36:53 And I'll say, no, that's wrong.
1:36:55 I'll correct the AI, and the AI will say, "You're absolutely right.
1:37:00 How did I not think about that?" You know, rewrite the code.
1:37:03 I'm like, holy shit, I'm having, that's like a buddy.
1:37:06 That's like really being positive and is
1:37:09 very smart and is challenging me to think.
1:37:12 And even if I never use the code it generates, I'm already a better programmer.
1:37:16 But actually the deeper thing is for some reason I'm having more fun.
1:37:21 That's a really, really important thing.
1:37:23 I like to think of it as a pair programmer for exactly that reason.
1:37:26 Pair programming came a vogue in like the 2000s.
1:37:30 Where you'd have two programmers in front of one
1:37:32 machine and you'd push the keyboard between you.
1:37:35 One programmer would be driving, they'd be typing in.
1:37:38 The other programmer would essentially sit and watch the code,
1:37:41 suggest improvements, look something up.
1:37:43 That was a really interesting dynamic.
1:37:46 Now unfortunately, I'm an introvert,
1:37:47 so I can do that for about five minutes before I want to jump off a bridge.
1:37:51 So it doesn't work for me as a full-time occupation.
1:37:54 But AI allows me to have all the best of that experience all the time.
1:37:59 Now I think what's really interesting, what you said about it makes it more fun.
1:38:02 I hadn't actually thought about that, but what it's made
1:38:05 more fun to me is to be a beginner again.
1:38:09 It made it more fun to learn Bash successfully for the first time.
1:38:14 Now I had to do the detour where I let
1:38:16 it write all the code for me and I realized I
1:38:18 wasn't learning nearly as much as I hoped I would
1:38:21 and that I started doing once I typed it out myself.
1:38:24 But it gave me the confidence that, you know what?
1:38:27 If I need to do some iOS programming myself,
1:38:29 I haven't done that in probably six years was the last time I dabbled in it.
1:38:33 I never really built anything for real.
1:38:35 I feel highly confident now that I could sit down with AI and I
1:38:39 could have something in the app store by the end of the week.
1:38:41 I would not have that confidence unless I
1:38:44 had a pair of programming body like AI.
1:38:46 I don't actually use it very much for Ruby code.
1:38:49 I'm occasionally impressed whenever I try it,
1:38:51 they're like, oh, it got this one thing right.
1:38:53 That is truly remarkable and it's actually pretty good.
1:38:55 And then I'll ask you two more questions and I go like, oh yeah, okay.
1:38:59 If you were my junior programmer,
1:39:01 I'd start tapping my fingers and going like, you gotta shape up.
1:39:05 Now the great thing of course is we can just wait five minutes.
1:39:08 The Anthropic CEO seems to think that 90% of all code
1:39:12 by the end of the year is gonna be written by AI.
1:39:14 I am more than a little bit skeptical about that, but I'm open-minded
1:39:17 about the prospect that programming potentially will
1:39:22 turn into a horse when done manually.
1:39:25 Something we do recreationally is no longer
1:39:28 a mode of transportation to get around LA.
1:39:30 You're not gonna saddle up and go to the grocery
1:39:33 store and pick up stuff from whole foods in your saddlebacks.
1:39:35 That's just not a thing anymore.
1:39:37 That could be the future for programming,
1:39:40 for manual programming entirely possible.
1:39:44 I also don't care.
1:39:45 Like even though we have great renditions of all the best songs,
1:39:49 as I said, there are millions of people who love to play the guitar.
1:39:52 It may no longer have as much economic value as it once did.
1:39:55 I think that I'm quite convinced is true that we perhaps have seen the peak.
1:40:01 Now I understand the paradox, when the price of something goes down,
1:40:04 actually the overall usage goes up and total spend on that activity goes up.
1:40:09 That could also happen maybe.
1:40:10 But what we're seeing right now is that a lot of the big shops,
1:40:15 a lot of the big companies are not hiring like they were five years ago.
1:40:19 They're not anticipating they're gonna need tons more programmers.
1:40:23 Controversially, Tobi actually put out a memo inside of Shopify
1:40:28 asking everyone who's considering hiring someone to ask the question,
1:40:31 could this be done by AI?
1:40:33 Now, he's further ahead on this question than I am.
1:40:35 I look at some of the coding trenches and I go like, I'd love to use AI more,
1:40:39 and I see how it's making us more productive,
1:40:41 but it's not yet at the level where I just go like, oh, we have this project.
1:40:44 Let me just give it to the AI agent and it's gonna go off and do it.
1:40:47 But let's just be honest.
1:40:49 You're like a Clint-Eastwood type character cowboy and on a horse
1:40:52 seeing cars going around and you're like, well.
1:40:56 That's part of it.
1:40:57 And I think that's, it is important to have that humility
1:40:59 that what you are good at may no longer be what society values.
1:41:05 This has happened a million times in history that you
1:41:07 could have been exceptionally good at saddle making, for example.
1:41:10 That's something that a lot of people used
1:41:12 to care about because everyone rode a horse.
1:41:14 And then suddenly riding a horse became this niche
1:41:18 hobby that there's some people care about it, but not nearly as many.
1:41:22 That's okay.
1:41:22 Now the other thing of this is I've had the good fortune to...
1:41:27 I've been a programmer for nearly 30 years.
1:41:28 That was a great run.
1:41:30 I try to look at life in this way
1:41:33 that I've already been blessed with decades of economically viable,
1:41:38 highly valuable ways of translating what I like
1:41:43 best in the working world to write Ruby code.
1:41:47 That that was so valuable that I could
1:41:49 make millions and millions of dollars doing it.
1:41:51 And if that's over tomorrow, I shouldn't look at that with regret.
1:41:55 I should look at it with gratitude.
1:41:57 But you're also a highly experienced, brilliant and opinionated human being,
1:42:04 so it's really interesting to get your opinion
1:42:07 on the future of the horse because it, you know,
1:42:11 there's a lot of young people listening to this who love programming
1:42:13 or who are excited by the possibility of building stuff with software,
1:42:19 with Ruby on Rails, that kind of language.
1:42:22 This and now the possibility.
1:42:24 But is it a career?
1:42:27 Is it a career?
1:42:29 And if indeed a single person can build more
1:42:32 and more and more with the help of AI, like how do they learn that skill?
1:42:36 Is this a good skill to learn?
1:42:38 I mean, that to me is the real mystery here,
1:42:41 because I think it's still absolutely true that you
1:42:44 have to learn how to program from scratch currently.
1:42:47 But how do you balance those two skills?
1:42:50 Because I too, as I'm thinking now,
1:42:53 there is a scary slipping away of skill that happens.
1:42:57 In a matter of like really minutes on a particular piece of code.
1:43:03 It's scary.
1:43:04 Not the way driving, you know,
1:43:08 when you have a car drive for you doesn't quite slip away that fast.
1:43:14 So that really scares me.
1:43:16 So when somebody comes up to me and asks me like, how do I learn to program,
1:43:20 I don't know what the advice is because I think it's
1:43:23 not enough to just use cursor or copilot to generate code.
1:43:29 It's absolutely not enough.
1:43:30 Not if you wanna learn, none of you want to become better at it.
1:43:33 If you just become a tap monkey, maybe you're productive in a second.
1:43:37 But then you have to realize, well, can anyone just tap?
1:43:40 If that's all we're doing is just sitting around all day long tapping?
1:43:43 Yes, yes, yes, yes, yes.
1:43:44 That's not a marketable skill.
1:43:46 Now, I always preface this both to myself and when I speak to others,
1:43:51 it is rule number note one, nobody fucking knows anything.
1:43:55 No one can predict even six months ahead.
1:43:57 Right now, we're probably at peak AI future hype because we see all the promise,
1:44:03 because so much of it is real and so many people have experienced it themselves.
1:44:07 This mind boggling thing that the silicon is thinking
1:44:13 in some way that feels eerily reminiscent of humans.
1:44:17 I'd actually say the big thing for me wasn't even ChatGPT.
1:44:21 It wasn't even Claude.
1:44:22 It was DeepSeek.
1:44:23 Running DeepSeek locally and seeing the think box where
1:44:27 it converses with itself about how to formulate the response.
1:44:33 I almost wanted to think, is this a gimmick?
1:44:35 Is it doing this as a performance for my benefit?
1:44:38 But that's not actually how it thinks.
1:44:40 If this is how it actually thinks, okay, I'm a little scared.
1:44:43 This is incredibly human how it thinks in this way.
1:44:47 But where does that go?
1:44:49 So in '95, 1 of my favorite movies,
1:44:53 one of my favorite B movies came out, "The Lawnmower Man."- Great movie.
1:44:57 Incredible movie about virtual reality.
1:44:59 Being an avatar and living in VR, like the story was a mess.
1:45:03 But the aesthetics the world had built up was incredible.
1:45:06 And I thought, we're five years away.
1:45:09 I'm gonna be living in VR now.
1:45:11 I'm just gonna be floating around.
1:45:13 I'm gonna be an avatar.
1:45:15 This is where most humans can spend most of the day that didn't happen.
1:45:19 We're 30 years later, VR is still not here.
1:45:25 It's here for gaming.
1:45:26 It's here for some specialized applications.
1:45:29 My oldest loves playing Gorilla Tag.
1:45:32 I dunno if you've tried that.
1:45:33 That's basically the hottest VR game.
1:45:35 Wonderful, it's great.
1:45:37 It's really hard to predict the future 'cause we just don't know.
1:45:41 And then when you factor in AI and you have even the smartest people go like,
1:45:47 I don't think we fully understand how this works.
1:45:49 But then on the flip side,
1:45:50 you have Moore's Law that seems to have worked for many,
1:45:54 many, many years in decreasing the size of transistor, for example.
1:45:58 So like you know, Flash didn't take over the internet, but Moore's Law worked.
1:46:05 So we don't know which one AI is.
1:46:07 Which one it is.
1:46:08 And this is what I find so fascinating too.
1:46:10 I forget who did this presentation, but someone in the web community,
1:46:13 this great presentation on the history of the airplane.
1:46:17 So you go from the Wright brothers flying in, what?
1:46:20 1903 or something like that.
1:46:22 And 40 years later you have a jet flight.
1:46:27 Just an unbelievable amount of progress in four decades.
1:46:31 Then in '56, I think it was, the halt the sign for the Boeing 747 essentially
1:46:39 precursor was designed and basically nothing has happened since.
1:46:43 Just minor tweaks and improvements on the flying experience since the '50s.
1:46:48 Somehow, if you were to predict where flying was gonna go,
1:46:52 and you were sitting in 42 and you'd seen,
1:46:55 you'd remember the Wright brothers flying in '03,
1:46:58 and you were seeing that jet engines coming, you're like,
1:47:01 we're gonna fly to to the stars in another two decades.
1:47:04 We're gonna invent super mega hypersonic flights
1:47:08 that's gonna traverse the earth in two hours.
1:47:11 And then that didn't happen.
1:47:12 It tapped out.
1:47:13 This is what's so hard about predicting the future.
1:47:16 We can be so excited in the moment because
1:47:18 we're drawing a line through early dots on a chart,
1:47:22 and it looks like those early dots are just going up into the right,
1:47:24 and sometimes it's just flatten out.
1:47:26 This is also one of those things where we have so much critical infrastructure,
1:47:30 for example, that still runs on COBOL.
1:47:32 That about five humans around the world really understand truly,
1:47:35 deeply that there's a lot, it's possible for society to lose a competence.
1:47:40 It's still needs because it's chasing the future.
1:47:44 COBOL is still with us.
1:47:46 This is one of the things I think about with with programming.
1:47:49 Ruby on Rails is at such a level now that in 50 years from now,
1:47:53 it's exceedingly likely that there's still a ton
1:47:55 of Ruby on Rail systems running around.
1:47:57 And very hard to predict what that exact world is gonna be like.
1:48:00 But yesterday's weather tells us that if there's still
1:48:03 COBOL code from the '70s operating social security today,
1:48:07 and we haven't figured out a clean way to convert that, let alone understand it,
1:48:12 we should certainly be humble about predicting the future.
1:48:16 I don't think any of the programmers who wrote that COBOL
1:48:19 code back in the '70s had any damn idea that in 2025,
1:48:23 checks were still being cut off the business
1:48:25 logic that they had encoded back then.
1:48:27 But that just brings me to the conclusion
1:48:29 on the question for what should a young programmer do?
1:48:32 You're not gonna be able to predict the future.
1:48:34 No one's gonna be able to predict the future.
1:48:36 If you like programming, you should learn programming.
1:48:38 Now, is that gonna be a career forever?
1:48:40 I don't know, but what's gonna be a career forever?
1:48:42 Who knows?
1:48:44 Like a second ago, we thought that it was
1:48:47 the blue collar labor that was gonna be extracted first.
1:48:49 It was the robots that were gonna take over.
1:48:52 Then GenAI comes out, and then all the artists suddenly look like,
1:48:55 "Holy shit, is this gonna do all animation now?
1:48:58 Is gonna do all music now?" They get real scared.
1:49:00 And now I see the latest Tesla robot going like,
1:49:03 oh, maybe we're back now to blue collar being in trouble.
1:49:06 Because if it can dance like that, it can probably fix a toilet.
1:49:11 So no one knows anything, and you have to then position yourself for the future
1:49:17 in such a way that it doesn't matter that you pick a profession or path where if
1:49:24 it turns out that you have to retool and re-skill,
1:49:28 you're not gonna regret the path you took.
1:49:30 That's a general life principle.
1:49:32 For me, how I look at all endeavors I involve
1:49:35 myself in is I want to be content with all outcomes.
1:49:39 When we start working on a new product at 37signals,
1:49:42 I set up my mental model for its success.
1:49:45 And I go, do you know what?
1:49:47 If no one wants this, I will have
1:49:50 had another opportunity to write beautiful Ruby code,
1:49:53 to explore Greenfield domain,
1:49:55 to learn something new, to build a system I want, even if no one else wants it.
1:49:59 What a blessing.
1:50:01 What a privilege.
1:50:03 If a bunch of people want it, that's great.
1:50:06 We can pay some salaries, we can keep the business running,
1:50:09 and if it's a blow away success, wonderful.
1:50:12 I get to impact a bunch of people.
1:50:13 I think one of the big open questions to me
1:50:15 is how far you can get with vibe coding,
1:50:19 whether an approach for a young developer to invest most
1:50:23 of the time it's into vibe coding or into writing code from scratch.
1:50:28 So vibe coding, meaning, so I'm leaning into the meme a little bit,
1:50:32 but the vibe coding, meaning you generate code,
1:50:36 you have this idea of a thing you want to create,
1:50:38 you generate the code and then you fix it
1:50:41 with both natural language to the prompts and manually.
1:50:44 You learn enough to manually fix it.
1:50:46 So that's the learning process.
1:50:48 How you fix code that's generated,
1:50:50 or you write code from scratch and have the LMS kind of tab,
1:50:58 tab, tab, tab, add extra code.
1:51:00 Like which part do you lean on?
1:51:03 I think to be safe, you should find the beauty
1:51:07 and the artistry and the skill in both right from scratch.
1:51:12 So like there should be some percent of your time
1:51:14 just writing from scratch and some percent vibe coding.
1:51:16 There should be more of the time writing from scratch.
1:51:19 If you are interested in learning how to program,
1:51:22 unfortunately you're not gonna get fit by watching fitness videos.
1:51:25 You're not gonna learn how to play the guitar by watching YouTube guitar videos.
1:51:29 You have to actually play yourself.
1:51:31 You have to do the sit ups.
1:51:33 Programming, understanding, learning almost anything requires you to do.
1:51:37 Humans are not built to absorb information in a way
1:51:42 that transforms into skills by just watching others from afar.
1:51:45 Now ironically, it seems AI is actually quite good at that, but humans are not.
1:51:49 If you wanna learn how to become a competent programmer, you have to program.
1:51:55 It's really not that difficult to understand.
1:51:58 Now I understand the temptation.
1:52:00 And the temptation is there because vibe coding can produce things.
1:52:04 Perhaps in this moment, especially in a new domain you're not familiar
1:52:07 with, with tools you don't know perfectly well,
1:52:09 that's better than what you could do.
1:52:10 Or that you would take much longer
1:52:12 to get at, but you're not gonna learn anything.
1:52:15 You're gonna learn in this superficial way that feels like learning,
1:52:19 but is completely empty calories.
1:52:22 And secondly, if you can just vibe code it, you're not a programmer.
1:52:26 Then anyone could do it, which may be wonderful.
1:52:29 That's essentially what happened with the Access database.
1:52:31 That's what happened with Excel.
1:52:33 It took the capacity of accountants to become
1:52:38 software developers because the tools became so accessible
1:52:41 to them that they could build a model
1:52:43 for how the business was gonna do next week.
1:52:45 That required a programmer prior to Excel.
1:52:47 Now it didn't because they could do it themselves by coding enables
1:52:53 non-programmers to explore their ideas
1:52:56 in a way that I find absolutely wonderful.
1:52:59 But it doesn't make your a programmer.
1:53:02 I agree with you, but I wanna allow for room for both of us to be wrong.
1:53:06 For example, there could be, vibe coding could actually be a skill.
1:53:11 That if you train it, and by vibe coding,
1:53:14 let's include the step of correction, the iterative correction.
1:53:18 It's possible if you get really good
1:53:20 at that, that you're outperforming the people that run from scratch,
1:53:24 that you can come up with truly innovative things,
1:53:27 especially at this moment in history.
1:53:30 While the LLMs are a little bit too dumb
1:53:33 to create super novel things and a complete product,
1:53:36 but they're starting to creep close to that.
1:53:38 So if you are investing time now into becoming a really good vibe coder,
1:53:43 maybe this is the right thing to do as if it's indeed a skill,
1:53:48 we kind of meme about vibe coding, just like sitting back and it's in the name.
1:53:53 But if you treat it seriously,
1:53:55 a competitive vibe coder and get good at riding the wave of AI
1:54:00 and get good at the skill of editing code versus writing code from scratch,
1:54:07 it's possible that you can actually get farther in the long term.
1:54:12 Maybe editing is a fundamentally different task than writing from scratch
1:54:16 if you take that seriously as a skill that you develop.
1:54:19 To me that's an open question.
1:54:21 I just think, I personally, now you're on another level, but just me,
1:54:27 just personally, I'm not as good at editing the code that I didn't write.
1:54:35 No one is.
1:54:36 That's one different.
1:54:37 No one is of this generation, but maybe that's a skill.
1:54:42 Maybe if you get on the same page as the AI,
1:54:45 'cause there's a consistency to the AI.
1:54:47 It's like it really is a pair programmer
1:54:50 with a consistent style and structure and so on.
1:54:53 Plus with your own prompting, you can control the kind of wrote code you write.
1:54:56 I mean, it could generally be a skill like.
1:54:59 That's the dream of the prompt engineer.
1:55:01 I think it's complete pipe dream.
1:55:03 I don't think editors exist that aren't good at writing.
1:55:08 I've written a number of books.
1:55:10 I've had a number of professional editors.
1:55:12 Not all of them wrote their own great books,
1:55:15 but all of them were great writers in some regard.
1:55:17 You cannot give someone pointers if you don't know how to do it.
1:55:21 It's very difficult for an editor to be able to spot what's
1:55:26 wrong with a problem if you that it couldn't make the solution themselves.
1:55:31 Editing, in my opinion, is the reward,
1:55:34 the capacity to be a good editor is the reward you get from being a good doer.
1:55:39 You have to be a doer first.
1:55:40 Now that's not the same as saying that vibe coding,
1:55:45 prompt engineering won't be able to produce
1:55:48 fully formed amazing systems even shortly.
1:55:51 I think that's entirely possible, but then there's no skill left,
1:55:55 which maybe is the greatest payoff at all.
1:55:57 Wasn't that the whole promise of AI anyway,
1:55:59 that it was just all natural language that even my clumsy
1:56:02 way of formulating a question could result in a beautiful, succinct answer.
1:56:07 That actually to me is a much more
1:56:09 appealing vision that there's gonna be these special
1:56:11 prompt engineering wizards who know how to tickle
1:56:14 the AI just write to produce what they want.
1:56:17 The beauty of AI is to think that someone who doesn't know the first thing about
1:56:22 how AI actually works is able to formulate
1:56:25 their idea and their aspirations for what they want,
1:56:28 and the AI could somehow take that messy
1:56:31 clump of ideas and produce something that someone wants.
1:56:35 That's actually what programming has always been.
1:56:37 There's very often been people who didn't know how to program,
1:56:41 who wanted programs, who then hired programmers,
1:56:43 who gave them messy descriptions of what they wanted
1:56:46 and then when the programmers delivered that back said,
1:56:49 "Oh no, actually that's not what I meant.
1:56:50 I want something else." AI may be able to provide that cycle.
1:56:56 If that happens to the fullest extent of it,
1:56:58 yeah, there's not gonna be as many programmers around, right?
1:57:01 But hopefully presumably someone still, at least for the foreseeable future,
1:57:06 have to understand whether what the AI is producing actually works or not.
1:57:11 As a interesting case study, maybe a thought experiment.
1:57:14 If I wanted to vibe code Basecamp or HEY,
1:57:20 and some of the products you've built, like what would be the bottleneck?
1:57:26 Where would I fail along the way?
1:57:28 What I've seen when I've been trying to do this, trying to use
1:57:32 vibe coding to build something real is you actually failed really early.
1:57:36 The vibe coding is able to build a veneer at the current
1:57:40 present moment of something that looks like it works, right?
1:57:43 But it's flawed in all sorts of ways.
1:57:44 There are the obvious ways, the meme ways that it's leaking all your API keys,
1:57:49 it's storing your password in plain text.
1:57:52 I think that's ultimately solvable.
1:57:54 Like it's gonna figure that out or at least it's gonna get better
1:57:57 at that, but its capacity to get lost
1:58:00 in its own labyrinth is very great right now.
1:58:03 It code something and then you wanna change
1:58:06 something and it becomes a game of whack-a-mole.
1:58:08 Real quick, Pieter Levels who've been doing this wonderful flight
1:58:11 simulator was talking to that where at a certain scale,
1:58:14 the thing just keeps biting its own tail.
1:58:16 You wanna fix something and it breaks five other things,
1:58:20 which I think is actually uniquely human
1:58:21 because that's how most bad programmers are.
1:58:23 At the certain level of complexity with the domain,
1:58:25 they can't fix one thing without breaking three other things.
1:58:30 So in that way I'm actually in some way it's almost a positive signal
1:58:34 for that the AI is gonna figure this out
1:58:36 because it's done an extremely human trajectory right now.
1:58:39 The kind of mistakes it's making are the kind
1:58:41 of mistakes the junior programmers make all the time.
1:58:44 Yeah, can we zoom out and look at the vision,
1:58:48 the manifesto, the doctrine of Rails?
1:58:51 What are some of the things that make a programming language a framework great?
1:58:57 Especially for web development.
1:58:58 So we talked about happiness.
1:59:00 The underlying objective of Ruby.
1:59:03 What else?
1:59:05 So you're looking at the nine points I wrote out in I think 2012.
1:59:08 And first, before we dive into 'em, I wanna say the reason I wrote it down
1:59:12 is that if you want a community to endure,
1:59:17 you have to record its values and you have to record its practices.
1:59:21 If you don't, eventually you're gonna get enough new people come
1:59:24 in who have their own ideas of where this thing should go.
1:59:27 And if we don't have a a guiding light helping us to make decisions,
1:59:33 we're gonna start flailing.
1:59:34 We're gonna start actually falling apart.
1:59:36 I think this is one of the key
1:59:37 reasons that institutions of all kinds start falling apart.
1:59:40 We forget why Chesterton's Fence is there.
1:59:43 We just go like, why is that fence there?
1:59:45 Let's yank it out.
1:59:46 Oh, it was to keep the wolves out.
1:59:48 Now we're all dead, oops.
1:59:50 So I wanted to write these things down.
1:59:52 And if we just take them quick one by one,
1:59:54 you talked about optimizing for programmer happiness.
1:59:57 I put that at number one in homage of Matz,
1:59:59 and that's a lot about accepting that there is occasionally a trade
2:00:03 off between writing beautiful code and other things we want out of systems.
2:00:07 There could be a runtime trade off,
2:00:09 there can be a performance trade off, but we're gonna do it nonetheless.
2:00:13 We're also going to allow ambiguity in a way that many programmers,
2:00:18 by default, are uncomfortable with.
2:00:20 I give the example actually here of in the interactive Ruby shell where
2:00:26 you can play with the language or even interact with your domain model.
2:00:29 You can quit it in two ways, at least that I found.
2:00:33 You can write exit.
2:00:34 Boom, you're out of the program.
2:00:35 You can write quit.
2:00:37 Boom, you're out of the program.
2:00:38 They do the same thing.
2:00:39 We just wrote both exit or the people who built that wrote both exit
2:00:42 and quit because they knew humans were likely to pick one or the other.
2:00:45 Python is the perfect contrast to this.
2:00:49 In the Python interactive protocol, if you write exit, it won't exit.
2:00:53 It'll give you a lesson.
2:00:55 It'll basically tell you to read the fucking manual.
2:00:58 It says use exit parentheses or Ctrl-D i.e.
2:01:03 end of file to exit.
2:01:06 I'm like, one is very human and another is very engineer.
2:01:11 And I mean that both of them in the best possible way.
2:01:15 Python is pedantic.
2:01:16 Python is the value from the start stated is that there should
2:01:22 be preferably one and only one way to do a certain thing.
2:01:26 Ruby is the complete opposite.
2:01:28 No, we want the full expression that fits different human brains,
2:01:33 such that it seems like the language is guessing just what they want.
2:01:38 And part of that is also described the principle of least surprise,
2:01:41 which is a difficult thing to engineer into a language
2:01:44 because you have to kind of, it's a subjective thing.
2:01:47 Which is why you can't do it in one way,
2:01:48 which is why I used the example of both exit and quit.
2:01:50 The principle of least surprise for some people would be like, "Oh, exit.
2:01:54 That's how I get out of the prompt." For other people it'd be quit.
2:01:58 Why don't we just do both?
2:02:01 Okay, so what's the convention over configuration?
2:02:04 That's a big one.
2:02:05 That's a big one.
2:02:06 That's a huge one.
2:02:06 And it was born out of a frustration
2:02:09 I had in the early days with especially Java
2:02:12 frameworks where when you were setting up a web
2:02:14 application framework for Java back in the day,
2:02:15 it was not uncommon to literally write hundreds
2:02:18 if not thousands of lines of XML configuration files.
2:02:23 Oh, I need this.
2:02:23 I want the database to use the foreign keys as post_id.
2:02:29 No, no, no, I wanted as post capital ID.
2:02:33 Oh, no, no, no, you have to do it capital PID.
2:02:37 There are all these ways where you can configure how foreign
2:02:40 relation keys should work in a database and none of them matter.
2:02:43 We just need to pick one, and then that's fine.
2:02:46 And if we pick one and we can depend on it, it becomes a convention.
2:02:50 And if it's a convention, we don't have to configure it.
2:02:52 And if we don't have to configure it,
2:02:53 you can get started with you actually care about much quicker.
2:02:57 So convention over configuration is essentially to take
2:03:00 that idea that the system should come preassembled.
2:03:04 I'm not just handing you a box of fucking
2:03:06 Legos and asking you to build the Millennium Falcon.
2:03:08 I'm giving you a finished toy.
2:03:10 You can edit, you can change it, it's still build out a Legos.
2:03:13 You can still take some pieces off and put in some other pieces,
2:03:15 but I'm giving you the final product.
2:03:17 And this cuts against the grain of what most programmers love.
2:03:21 They love a box of Legos.
2:03:22 They love to put everything together from scratch.
2:03:24 They love to make all these detailed
2:03:26 little decisions that just don't matter at all.
2:03:28 And I want to elevate that up so that hey,
2:03:30 I'm not trying to take the decisions away from you.
2:03:32 I just want you to focus on decisions
2:03:34 that actually matter that you truly care about.
2:03:37 No one cares about whether it's post_id or post ID or PID.
2:03:41 Yeah, great defaults.
2:03:43 Yes.
2:03:43 It's just a wonderful thing.
2:03:45 You have all these aspirations, they're gonna do some kind of custom,
2:03:48 most beautiful Legos castle that nobody's ever built from these pieces.
2:03:52 But in reality to be productive in most situations,
2:03:56 you just need to build the basic thing.
2:04:00 And then on top of that is where your creativity comes.
2:04:03 Absolutely, and I think this is one of those, part of the doctrine that a lot
2:04:08 of programmers who get to use Ruby
2:04:10 on Rails begrudgingly will acknowledge it's a nice thing,
2:04:14 even if they don't really like it.
2:04:16 Like it's hard to beat the sort of attraction
2:04:21 to building with Legos from scratch out of programmers.
2:04:23 That's just what we like.
2:04:24 This is why we're programmers in the first place
2:04:26 because we'd like to put these little pieces together,
2:04:28 but we can direct that instinct towards a more productive end of the stack.
2:04:33 Okay, what are some of the other ones?
2:04:36 The menu is omakase.
2:04:37 It actually comes out of the same principle that great defaults really matter.
2:04:41 If you look at everything that's wrong with the JavaScript ecosystem right now,
2:04:45 for example, it is that no one is in charge of the menu.
2:04:49 There are a billion different dishes and you
2:04:52 can configure just your tailored specific configuration of it,
2:04:56 but no one done the work to make sure it all fits together.
2:04:59 So you have all these unique problems in the JavaScript ecosystem,
2:05:02 for example, there's probably 25 major ways of just doing the controller layer.
2:05:07 And then as many of how to talk to the database.
2:05:10 So you get this permutation of n times n
2:05:13 times n of no one is using the same thing.
2:05:16 And if they are using the same thing,
2:05:18 they're only using the same thing for about five minutes.
2:05:20 So we have no retained wisdom.
2:05:23 We build up no durable skills.
2:05:25 Rails goes the complete opposite way of saying, do you know what?
2:05:28 Rails is not just a white framework.
2:05:32 It's a complete attempt at solving the web problem.
2:05:36 It's a complete attempt at solving everything
2:05:38 you need to build a great web application.
2:05:40 And every piece of that puzzle should
2:05:44 ideally be in the box pre-configured, preassembled.
2:05:48 If you want to change some of those pieces later, that's wonderful.
2:05:51 But on day one you'll get a full menu designed by a chef
2:05:55 who really cared about every piece of ingredient and you're gonna enjoy it.
2:06:01 And that's again, one of those things
2:06:03 where many programmers think like I know better.
2:06:07 And they do in some hyper local sense of it.
2:06:10 Every programmer knows better.
2:06:12 This is what Ruby is built on.
2:06:13 That every programmer knows better in their specific situation.
2:06:16 Maybe they can do something dangerous.
2:06:19 Maybe they think they know better and then
2:06:20 they blow their foot off and then they
2:06:22 truly will know better because they've blown
2:06:24 their foot off once and won't do it again.
2:06:26 But the the menu of omakase is that.
2:06:29 So you in general see the value in the in the monolith?
2:06:33 Yes, the integrated system.
2:06:35 Integrated.
2:06:35 That someone thought of the whole problem.
2:06:37 This is one of the reasons why I've been
2:06:39 on a crusade against microservices since the term was coined.
2:06:43 Microservices was born out of essentially a good idea.
2:06:47 What do you do at Netflix scale when you have
2:06:50 thousands of engineers working on millions of lines of code?
2:06:53 No one can keep that entire system in their head at one time.
2:06:56 You have to break it down.
2:06:57 Microservices can be a reasonable way to do that.
2:06:59 When you're at Netflix scale,
2:07:01 when you apply that pattern to a team of 20 programmers working
2:07:05 on a code base of half a million lines of code, you're an idiot.
2:07:08 You just don't need to turn method invocations into network calls.
2:07:14 It is the first rule of distributed programming.
2:07:17 Do not distribute your programming.
2:07:20 It is makes everything harder.
2:07:22 All the failure conditions you have to consider as a programmer
2:07:25 just becomes infinitely harder when there's a network cable involved.
2:07:28 So I hate the idea of premature decomposition and microservices is exactly that.
2:07:35 The monolith says.
2:07:36 Let's try to focus on building a whole system that a single
2:07:40 human can actually understand and push that paradigm as far
2:07:43 as possible by compressing all the concepts such that more
2:07:47 of it will fit into memory of a single operating human.
2:07:50 And then we can have a system where I can actually understand all the Basecamp.
2:07:53 I can actually understand all of HEY.
2:07:55 Both of those systems are just over a hundred thousand lines of code.
2:07:59 I've seen people do this that maybe twice,
2:08:00 maybe three times that scale and then it starts breaking down.
2:08:03 Once you get north of certainly half a million lines of code,
2:08:06 no individual human can do it and that's when you
2:08:08 get into maybe some degree of microservices can make sense.
2:08:12 Basecamp and HEY are both a hundred thousand?
2:08:13 A hundred thousand lines of code thereabouts.
2:08:15 Wow, it's small.
2:08:16 It is.
2:08:17 Considering the fact that Basecamp I think has something like 420 screens,
2:08:21 different ways and configurations.
2:08:23 Ah, do you include the front end in that?
2:08:25 No, that's the Ruby code.
2:08:26 Well, it's front end in the sense that some of that Ruby codes.
2:08:29 It's beneficial to the front, but it's not JavaScript for example.
2:08:32 Now the other thing we might talk about later is
2:08:34 we write very little JavaScript actually for all of our applications.
2:08:38 HEY, which is a Gmail competitor.
2:08:40 Gmail ships I think 28 megabytes of uncompressed JavaScript.
2:08:44 If you compress it, I think it's about six megabytes, 28 megabytes.
2:08:47 Think about how many lines of code that is.
2:08:48 When HEY launched, we shipped 40 kilobytes.
2:08:53 It's trying to solve the same problem.
2:08:55 You can solve the email client problem with either 28 megabytes
2:08:59 of uncompressed JavaScript or with 40 kilobytes if you do things differently.
2:09:03 But that comes through the same problem essentially.
2:09:06 This is why I have fiercely fought splitting front end and back end apart.
2:09:12 That, in my opinion, this was one of the great crimes against web development.
2:09:16 That we are still atoning for.
2:09:20 That we separated and divided what was
2:09:23 and should be a unified problem solving mechanism.
2:09:27 When you are working both on front end and back end,
2:09:30 you understand the whole system.
2:09:31 And you're not going to get into these camps
2:09:34 that decompose and eventually you end up with like GraphQL.
2:09:39 Okay, let's fly through the rest of the doctrine.
2:09:43 No one paradigm.
2:09:44 No one paradigm goes to the fact that Ruby
2:09:46 is a fiercely object-oriented programming language at its core,
2:09:49 but it's also a functional program language.
2:09:52 This five times I told you about,
2:09:55 you can essentially do these anonymous function calls and you can chain 'em
2:10:00 together very much in the spirit
2:10:01 of how true functional programming languages worked.
2:10:04 Ruby has even moved closer towards the functional
2:10:06 programming and of the scale by making strings immutable.
2:10:11 There are ideas from all different disciplines and all
2:10:15 different paradigms of software development that can fit together.
2:10:18 Smalltalk, for example.
2:10:19 With only object oriented, and that was just it.
2:10:22 Ruby tries to be mainly object oriented,
2:10:25 but borrow a little bit of functional programming,
2:10:27 a little bit of imperative programming, be able to do all of that.
2:10:30 Rails tries to do the same thing.
2:10:32 We're not just gonna pick one paradigm and run it through everything.
2:10:35 Object orientation is at the center of it,
2:10:38 but it's okay to invite all these other
2:10:40 disciplines and it's okay to be inspired.
2:10:42 It's okay to remix it.
2:10:43 I actually think one of the main benefits of Rails is that it's a remix.
2:10:48 I didn't invent all these ideas.
2:10:50 I didn't come up with active record.
2:10:52 I didn't come up with the NBC way of dividing an application.
2:10:56 I took all the great ideas that I had learned
2:10:58 and picked up from every different camp and I put it together.
2:11:02 Not because there was gonna be just one single overarching theory of everything,
2:11:06 but I was gonna have a cohesive unit that incorporated the best from everywhere.
2:11:10 Is that idea a bit at tension with the beauty of the monolith system?
2:11:15 I think the monolith can be thought of as quite roomy,
2:11:20 quite as a big tent that the monolith needs actually to borrow
2:11:25 a little bit of functional programming
2:11:27 for the kinds of problems that that excels,
2:11:29 that discipline excels at solving, and that paradigm excels at solving.
2:11:33 If you also want object orientation at its core.
2:11:36 I actually think when I've looked at functional programming languages,
2:11:39 there's a lot to love.
2:11:40 And then I see some of the crazy contortions they have to go
2:11:44 through when part of the problem they're solving calls for mutating something.
2:11:49 And you go like, holy shit, this is a great paradigm from 90% of the problem.
2:11:56 And then you're twisting yourself completely out of shape
2:11:58 when you try to solve the last 10.
2:12:00 Ooh, exalt beautiful code is in the next one.
2:12:03 We've talked about that at length and here's
2:12:04 a great example that really summarizes the domain specific
2:12:07 language quality of Ruby on Rails that you
2:12:11 can make code actually pleasant to write and read.
2:12:16 Which is really funny to me because
2:12:17 as we talked about when I started learning programming,
2:12:20 it wasn't even a consideration.
2:12:21 I didn't even know that that could be part of the premise,
2:12:23 that could be part of the solution.
2:12:26 That writing code could feel as good as writing a poem.
2:12:31 class Project, ApplicationRecord belongs_to :account has many participants.
2:12:36 Class_name, Person, validates_presence_of :name.
2:12:41 See, you could read it out.
2:12:42 You didn't even change.
2:12:44 Anything like a haiku or something.
2:12:45 Right?
2:12:46 Isn't that beautiful?
2:12:47 Yeah, it's nice.
2:12:48 It's really nice.
2:12:50 There's an intuitive nature to it.
2:12:52 Okay, so I have specific questions there.
2:12:54 I mean ActiveRecord, just to take that tangent.
2:12:57 That has to be your favorite feature.
2:13:00 It's the crown jewel of Rails.
2:13:02 It really is.
2:13:04 It is the defining characteristic of how to work with Ruby on Rails.
2:13:07 And it's born in an interesting level of controversy,
2:13:12 because it actually uses a pattern that had
2:13:14 been described by Martin Fowler in the "Patterns
2:13:17 of Enterprise Application Architecture." One of the greatest
2:13:20 books for anyone working on business systems.
2:13:23 And if you had not read it, you must pick it up immediately.
2:13:26 "Patterns of Enterprise Application Architecture," I
2:13:29 think it was published in 2001.
2:13:30 It is one of the very few programming books that I have read many times over.
2:13:35 It's incredible.
2:13:36 In it, Martin describes a bunch of different
2:13:40 patterns of how to build business systems essentially.
2:13:42 And ActiveRecord is a little bit of a footnote in there.
2:13:45 The pattern is literally called active record.
2:13:47 You can look it up.
2:13:48 Nice.
2:13:48 It's called active record.
2:13:49 I wasn't even creative enough to come up with a name of my own.
2:13:52 But it allows the creation,
2:13:55 the marriage of database and object orientation in a way
2:13:59 that a lot of programmers find a little off-putting.
2:14:03 They don't actually want to pollute the beautiful
2:14:07 object-oriented nature of that kind of programming with SQL.
2:14:12 There was a rant by Uncle Bob the other
2:14:14 day about how SQL is the worst thing ever.
2:14:16 Baba, okay fine, whatever, I don't care.
2:14:20 This is practical.
2:14:22 We are making CRUD applications.
2:14:24 You're taking things out of an HTML form
2:14:26 and you're sticking 'em into a damn database.
2:14:28 It's not more complicated than that.
2:14:30 The more abstractions you put in between those two ends of the spectrum,
2:14:34 the more you're just fooling yourself.
2:14:36 This is what we're doing.
2:14:37 We're talking to SQL databases.
2:14:39 By the way, quick aside,
2:14:40 SQL was one of those things that have endured the onslaught of NoSQL databases
2:14:46 structured list data for a better part of a decade and still reign supreme.
2:14:50 SQL was a good thing to invest your time in learning.
2:14:53 Every program I'm working with the web should know SQL to a fair degree.
2:14:58 Even if they're working with an ORM,
2:15:00 an optic relational map or as active record.
2:15:02 You still need to understand SQL.
2:15:04 What Active record does is not so much try
2:15:07 to abstract the SQL away behind a different kind of paradigm.
2:15:10 It's just making it less cumbersome to write.
2:15:12 Making it more amenable to build domain models on top of other domain models
2:15:20 in a ways that you don't have to write every damn SQL statement by hand.
2:15:23 We'll just say the active record is an ORM,
2:15:26 which is a layer that makes it intuitive
2:15:30 and human interpretable to communicate with a database.
2:15:33 Even simpler than that.
2:15:34 It turns tables into classes and rows into objects.
2:15:40 I actually think SQL is very easy to understand most of it.
2:15:42 You can write some SQL golf too.
2:15:44 That's very hard to understand.
2:15:45 But SQL at its base,
2:15:47 and much of the criticism against SQL was it was written for human consumption.
2:15:51 It's actually quite verbose,
2:15:52 especially if you're doing things like inserts over and over again.
2:15:55 It's quite verbose insert into table parentheses,
2:15:59 enumerate every column you want to insert,
2:16:02 values, parentheses, every value that fits with that column.
2:16:05 It gets tedious to write SQL by hand, but it's actually very humanly readable.
2:16:11 Active record just takes that tedious away.
2:16:15 It makes it possible to combine things
2:16:17 in a way that a humanly describable language just doesn't.
2:16:21 It composes things into methods and you can combine
2:16:24 these methods and you can build structures around them.
2:16:25 So I don't dislike SQL, I dislike a lot of things in programming.
2:16:29 I try to get rid of them.
2:16:30 SQL wasn't really one of them.
2:16:32 It was just a sense of I don't wanna write the same thing over and over again.
2:16:35 It was a, can we be a little more succinct?
2:16:38 Can we match it just slightly better to the optic orientation without trying
2:16:42 to hide away the fact that we're persisting these objects into a database.
2:16:47 That's where I think a lot of ORMs went wrong.
2:16:50 They tried to live in the pure world of objects.
2:16:54 Never to consider that those objects had to be consistent into a SQL
2:16:57 database and then they came up
2:16:59 with convoluted way of translating back and forth.
2:17:02 Active record says, do you know what?
2:17:04 Just accept it.
2:17:05 This record, this object is not gonna get saved into some NoSQL database.
2:17:09 It's not gonna be saved.
2:17:11 It's gonna be saved into SQL database.
2:17:12 So it's just structure the whole thing around that.
2:17:14 It's gonna have attributes.
2:17:16 Those attributes are gonna respond to columns in the database.
2:17:19 It's not more complicated than that stuff making it so.
2:17:21 Yeah, but I should say, so I personally love SQL because I'm
2:17:25 an algorithms person and so I love optimization.
2:17:28 I love to know how the databases actually work so I can match
2:17:32 the SQL queries and the design of the table such that there is,
2:17:38 you know, optimal, squeeze the optimal performance out of the table.
2:17:42 Okay, based on the actual way that that table is used.
2:17:46 So I mean, I think that pushes to the point
2:17:48 that like there is value in learning in understanding SQL.
2:17:53 I wonder, because I started looking
2:17:56 at active record and it looks really awesome.
2:17:59 Does that make you lazy?
2:18:00 Not you, but a person that rolls in and starts using
2:18:04 Rails you can probably get away with never really learning SQL, right?
2:18:09 As long as you wanna stay at the entry level of competence.
2:18:13 And this is actually my overarching mission
2:18:15 with Rails is to lower the barrier of entry
2:18:18 so far down that someone can start seeing
2:18:22 stuff on their browser without basically understanding anything.
2:18:26 Yeah, they can run Rail's new blog, run a couple of generators,
2:18:31 they have a whole system, they don't understand anything.
2:18:34 But it's an invitation to learn more.
2:18:36 Where I get fired up, and this ties back to the AI discussion,
2:18:40 is when that's turned into this meme,
2:18:42 that programmers no longer have to be competent.
2:18:45 I mean the AI is gonna figure it out.
2:18:47 The generators is gonna figure it out.
2:18:49 I don't need to know SQL, active record is gonna abstract it away from me.
2:18:52 No, no, no dude, hold up.
2:18:54 The path here is competence.
2:18:56 I'm trying to teach you things.
2:18:58 I understand I can't teach you everything in five minutes.
2:19:01 No one who's ever become good at anything
2:19:04 worthwhile could be taught everything in five minutes.
2:19:06 If you wanna be a fully
2:19:07 well-rounded web application developer, that takes years.
2:19:12 But you can actually become somewhat productive in a few days.
2:19:16 You can have fun in a few days for sure.
2:19:18 You're gonna have fun in a a few minutes and a few hours.
2:19:20 And over time, I can teach you a little more.
2:19:23 Active record says like, yeah, yeah.
2:19:24 All right, start to here and then like next week we'll do a class on SQL.
2:19:30 And actually you have this beautiful expression
2:19:32 that I love that that a great programming language.
2:19:34 Like Ruby has a soft ramp, the ramp goes to infinity.
2:19:39 That's exactly right.
2:19:40 So yeah.
2:19:40 It's super accessible, super easy to get started.
2:19:43 And it never stops.
2:19:44 There's always more to learn.
2:19:46 This is one of the reasons I'm still having fun programming.
2:19:48 That I'm still learning new things.
2:19:50 I can still incorporate new things.
2:19:52 The web is deep enough as a domain.
2:19:53 You're never gonna learn all of it.
2:19:56 Provide sharp knives.
2:19:57 This is a good one, because another way of saying this, the opposite way
2:20:01 of saying this, the Java way of saying is do not provide foot guns, right?
2:20:05 I don't wanna give you sharp knives.
2:20:08 You're a child.
2:20:09 You can't handle a sharp knife.
2:20:10 Here's a dull butter knife.
2:20:12 Cut your damn steak, right?
2:20:13 That's a very frustrating experience.
2:20:15 You want a sharp knife even though you might be able to cut yourself.
2:20:18 I trust humans in the same way that Matz trust humans.
2:20:23 Maybe you cut off a finger.
2:20:25 All right, you're not gonna do that again.
2:20:26 Thankfully it was a virtual think finger.
2:20:28 It's gonna grow back out.
2:20:30 Your competence is gonna grow.
2:20:31 It's more fun to work with sharp tools.
2:20:35 And that actually contributes to the the ramp that goes to infinity.
2:20:38 Yes, to the learning- Value integrated systems.
2:20:40 We kind of hit on that one.
2:20:42 This is Rails is trying to solve the whole problem of the web,
2:20:45 not just one little component.
2:20:47 It's not leaving you a bunch of pieces.
2:20:48 You have to put together yourself.
2:20:51 Progress over stability.
2:20:52 You know what?
2:20:53 If there's one that's dated, it's probably that one.
2:20:55 At this stage, Rails has been incredibly stable over many, many generations.
2:21:01 The last major release Rails 8 was basically
2:21:05 a no upgrade for anyone running Rail 7.
2:21:08 Rail 7 was almost a no upgrade for anyone running Rail 6.
2:21:12 I used to think it required more churn to get
2:21:16 progress to stay on the leading edge of new stuff.
2:21:21 And I wrote this before I experienced
2:21:24 the indignity of the 2010s in the JavaScript community.
2:21:28 Where it seemed like stability was not just unvalued,
2:21:32 it was actually despised that churn in and of itself
2:21:36 was a value we should be pursuing.
2:21:38 If you were still working with the same
2:21:40 framework three months later you were an idiot.
2:21:43 And I saw that and I actually recoiled.
2:21:45 And if I was gonna write the doctrine today, I'd write that differently.
2:21:48 I wouldn't say progress over stability.
2:21:50 Well maybe it'd be a function of the age of the programming language also.
2:21:55 Maybe, or a deeper understanding of the problem.
2:21:59 I think part of what's so fascinating about technology is
2:22:02 that we have this perception that everything constantly moves so fast.
2:22:06 No, it doesn't.
2:22:07 Everything moves at a glacial pace.
2:22:10 There is occasionally a paradigm shift like what's happening with AI right now.
2:22:16 Like what happened with the introduction of the iPhone in 2007,
2:22:20 like what happened with the internet in '95.
2:22:22 That's basically the total sum of my career.
2:22:24 Three things changed.
2:22:26 Everything else in between was incremental small improvements.
2:22:31 You can recognize a Rails application written in 2003.
2:22:35 I know because the Basecamp I wrote back then is still operating,
2:22:39 making millions of dollars in ARR,
2:22:41 servings in customers on the initial version that was launched back then.
2:22:44 And it looks like the Rails code if I squint a little that I would write today.
2:22:48 So most things don't change even in computing.
2:22:51 And that's actually a good thing.
2:22:52 We saw with the JavaScript ecosystem.
2:22:55 What happens when everyone gets just mad about constant churn?
2:22:59 Things don't change that often.
2:23:00 By the way, on that small tangent.
2:23:02 You just sort of visibly,
2:23:04 verbally changed your mind with the you of 15 years ago.
2:23:10 Yes.
2:23:11 That's interesting.
2:23:11 Have you noticed yourself changing your mind quite a bit over the years?
2:23:17 I would say, oh yes.
2:23:20 And then also, oh no, in the sense that there are
2:23:23 absolutely fundamental things both about human nature,
2:23:25 about institutions, about programming,
2:23:27 about business that I've changed my mind on.
2:23:30 And then I've also had experiences that are almost even more interesting where
2:23:33 I thought I had changed my mind and I tried it a new way,
2:23:37 realized why I had the original opinion
2:23:39 in the first place and then gone back to it.
2:23:42 So it happens both ways.
2:23:44 An example of the later part, for example, was managers at 37signals.
2:23:48 For the longest time,
2:23:50 I would Rail against engineering managers as an unnecessary
2:23:55 burden on a small or even medium sized company.
2:23:58 And at one point I actually started doubting myself a little bit.
2:24:01 I started thinking like, do you know what?
2:24:03 Maybe all programmers do need a one-on-one therapy session every
2:24:07 week with their engineering manager to be a whole individual.
2:24:11 So we tried that for a couple years where we hired some very
2:24:14 good engineering managers who did engineering management
2:24:17 the way you're supposed to do it, the way it's done all over the place.
2:24:20 And after that I thought like, no, no, I was right.
2:24:24 This was correct.
2:24:25 We should not have had managers.
2:24:27 Not every programmer needs a therapy
2:24:29 session with an engineering manager every week.
2:24:31 We don't need these and least scheduled huddles.
2:24:35 We don't need all these meetings.
2:24:36 We just need to leave people the hell alone to work
2:24:39 on problems that they enjoy for long stretches of uninterrupted time.
2:24:43 That is where happiness is found.
2:24:45 That's where productivity is found.
2:24:47 And if you can get away with it, you absolutely should.
2:24:50 Engineering management is a necessary evil when that breaks down.
2:24:55 What's the case for managers then?
2:24:57 The case for managers is that if you do have a lot of people.
2:25:00 There's a bunch of work that kind of just crops up.
2:25:03 The one-on-one is one example that programmers need someone to check in with.
2:25:06 There's another idealized version that someone
2:25:08 needs to guide the career of juniors,
2:25:11 for example, to give them redirecting feedback and all this other stuff.
2:25:15 And it's not that in the abstract, I don't agree with some of those things,
2:25:20 but in practice I've found that they often create more problems that they solve.
2:25:25 And a good example here is can you get feedback
2:25:29 from someone who's not better at your job than you are?
2:25:33 You get some feedback.
2:25:34 You can get feedback on how you show up at work.
2:25:36 Are you being courteous to others?
2:25:39 Are you being a good communicator?
2:25:40 Okay, yes.
2:25:41 But you can't get feedback on your work and that's more important.
2:25:45 It's more important that you work under and with someone who's better
2:25:47 at your job than you are if you wish to progress in your career.
2:25:51 And every single programmer I've ever worked with was far
2:25:54 more interested in progressing in their career on that metric,
2:25:57 getting better at their craft than they were in picking
2:26:01 up pointers that a middle manager could teach them.
2:26:04 That's not saying that there isn't value in it.
2:26:06 It's not saying there isn't value in being
2:26:08 a better person or a better communicator.
2:26:09 Of course there is all those things.
2:26:10 But if I have to choose one or the other, I value competence higher.
2:26:15 Like that's again, I caveat this a million
2:26:18 times because I know what people sometimes hear.
2:26:21 They hear the genius asshole is just fine and that's great and you should
2:26:26 excuse all sorts of malicious behavior if
2:26:28 someone's just really good at what they do.
2:26:30 I'm not saying that at all.
2:26:31 What I am saying is that the history of competence is
2:26:35 a history of learning from people who are better than you,
2:26:37 and that relationship should take precedence over all else
2:26:41 and that relationship gets put aside a bit when engineering managers introduced.
2:26:47 Now the funny thing is this conversation ties
2:26:50 back to the earlier things we were talking about.
2:26:51 Most engineering managers are actually former programmers.
2:26:54 They at least no program to some extent,
2:26:56 but what I've seen time and again is that they lose their touch,
2:27:00 their feel with it very, very quickly and turn into pointy haired bosses very,
2:27:06 very quickly who are really good at checking for updates.
2:27:10 Just seeing where we are on project A here
2:27:13 if you need anything or we ready to deliver.
2:27:15 Okay, yes.
2:27:16 And also, no.
2:27:18 Shut up, leave me the hell alone.
2:27:20 Let me program and then I'll come up for error.
2:27:22 I'll talk with other programmers who I can
2:27:25 spar with that we can learn something with.
2:27:27 I can turn the problems over with and we can move forward.
2:27:30 If you look back on the history of computer industry,
2:27:33 all the great innovation that's happened,
2:27:35 it's all been done by tiny teams with no engineering managers.
2:27:40 Just full of highly skilled individuals.
2:27:43 You've had John Carmack on here.
2:27:46 I used to look up to its software so much.
2:27:49 Not just because I loved quick, not just because I loved what they were doing,
2:27:52 but because he shared a bit about how the company worked.
2:27:55 There were no managers or maybe they
2:27:56 had one business guy doing some business stuff, but that was just to get paid.
2:28:00 Everything else was basically just designers and programmers.
2:28:03 And there were about eight of them and they created goddamn
2:28:05 "Quake II." So why do you need all these people again?
2:28:08 Why do you need all these managers again?
2:28:11 I think, again, at a certain scale it does break down.
2:28:15 It's hard to just have a hundred thousand programmers running around
2:28:19 wild without any product mommies or daddies telling them what to do.
2:28:23 I understand that.
2:28:24 And then even as I say that, I also don't understand it.
2:28:26 Yeah, because if you look at something like Gmail, for example,
2:28:28 there was like a side project done by Buchheit at Google at the time.
2:28:33 So much of the enduring long-term value of even all
2:28:37 these huge companies were created by people who didn't have a manager.
2:28:41 And that's not an accident, that's a direct cause and effect.
2:28:45 So I've turned in some way even more
2:28:47 militant over the years against this notion of management,
2:28:49 at least for myself and knowing who I am and how I wanna work.
2:28:53 Because the other part of this is I don't want to be a manager,
2:28:56 and maybe this is just me projecting the fact that I'm an introvert
2:28:58 who don't like to talk to people on one-on-one calls every week.
2:29:03 But it also encapsulates how I was able to progress my career.
2:29:06 I did not really go to the next level with Ruby or otherwise until I
2:29:10 had a door I could close and no one could bother me for six hours straight.
2:29:14 So in companies probably one of the reasons is it's very easy to hire managers,
2:29:21 and managers also delegate responsibility from you.
2:29:27 So if you just have a bunch of programmers running around,
2:29:30 you're kind of response like it's work, it's intellectual work to have to deal
2:29:35 with the the first principles of every problem that's going on.
2:29:39 So managers like you can like relax, oh I'll be taken care of.
2:29:43 But they then hire their own managers
2:29:46 and it just multiplies and multiplies and multiplies.
2:29:49 I would love it if some of the great companies would have in the United States,
2:29:54 if there was like an extra side branch that we could always run,
2:29:59 maybe physicists can come up how to split
2:30:01 the simulation to where just all the managers are removed.
2:30:04 Also just in that branch, just the PR and the comms people also.
2:30:10 And even the lawyers,
2:30:12 just the engineers and let's just see and then we merge it back.
2:30:16 I've essentially run that branch at 37signals for 20 years.
2:30:19 And I've experimented with forking back on the other side.
2:30:22 I've experimented with having a full-time lawyer on staff.
2:30:25 I've experimented with having engineering managers.
2:30:27 And I can tell you life is much better at 50,
2:30:31 60 people when none of those individuals or none of those roles.
2:30:34 It's never about the individuals.
2:30:36 It's about the roles.
2:30:37 None of those roles are in your organization fulltime.
2:30:40 Occasionally you need a manager.
2:30:42 Occasionally you need a lawyer.
2:30:44 I can play the role of manager occasionally, fine.
2:30:49 And then I can set it back down to zero.
2:30:51 It's almost like a cloud surface.
2:30:53 I wanna a manager service I can call on for seven hours this week
2:30:58 and then I wanna take it down to zero for the next three months.
2:31:01 Yeah.
2:31:01 I read.
2:31:01 I don't know if this is still the case,
2:31:03 that Basecamp is an LLC and doesn't have a CFO, like a full-time accountant.
2:31:07 Was that upgrade?
2:31:08 So the funniest.
2:31:09 These days, we do have a head of finance.
2:31:11 We did not for the first 19 years of life, I think.
2:31:16 We got away with basically just an accountant do our books
2:31:21 in the same way you would do a small ice cream shop,
2:31:23 except we would over time have done hundreds of millions of dollars in revenue.
2:31:27 The scale seemed quirky.
2:31:29 And at some point, you can also fall in love
2:31:31 with your own quirkiness to a degree that isn't actually healthy.
2:31:34 And I've certainly done that over time and we should have had
2:31:37 someone mount or count the beans a little more diligently, a little earlier.
2:31:41 This was part of a blessing of just being
2:31:45 wildly profitable and selling software that can have infinite
2:31:48 margins basically that you kind of can get away
2:31:50 with a bunch of stuff that you perhaps shouldn't.
2:31:52 What partially taught me this lesson was when we realized we had
2:31:57 not been collecting sales tax in different US states where we had Nexus.
2:32:01 And it took us about two years and $5 million
2:32:04 in settlements and cleanups to get out of that mess.
2:32:07 And after that I went like, okay, fine, we can hire a finance person.
2:32:10 And we now have a wonderful finance person,
2:32:13 Ron, who actually ended up replacing something else.
2:32:16 We used to have a full-time data analytics person who would do all
2:32:20 sorts of insight mining for why are people signing up for this thing.
2:32:24 We ran that for 10 years and realized, you know what?
2:32:26 If I can have either a data analytics person or an accountant,
2:32:29 I'm picking the accountant.
2:32:30 I love this so much on so many levels.
2:32:33 Can we just linger on that advice that you've given that small teams are better?
2:32:38 I think that's really less.
2:32:41 Less is more.
2:32:43 What did you say before?
2:32:44 Worse is better.
2:32:46 Okay, I'm sorry.
2:32:47 Worse better on adoption with technology a lot of times.
2:32:50 And I think actually comes out at the same thing.
2:32:52 It comes out of the fact that many of the great
2:32:56 breakthroughs are created by not even just tiny teams but individuals.
2:33:00 Individuals writing something.
2:33:02 And an individual writing something on some parameter, what they do is worse.
2:33:07 Of course it's worse when one person has to make something that a huge company
2:33:12 have hundreds if not thousands of developers
2:33:14 that they can have work on that problem.
2:33:16 But in so many other parameters that worseness is the value,
2:33:20 that less is the value.
2:33:22 In getting real, which we wrote back in 2006.
2:33:25 We talk about this notion of less software.
2:33:28 When we first got started with Basecamp back in 2004,
2:33:31 people would ask us all the time, aren't you petrified of Microsoft?
2:33:35 They have so many more resources.
2:33:37 They have so many more programmers.
2:33:39 What if they take a liking to your little niche here and they
2:33:42 show up and they just throw a thousand programmers at the problem?
2:33:46 And my answer perhaps partly because I was like 24 was first of all,
2:33:52 no, no care in the world.
2:33:54 But the real answer was they're not gonna produce the same thing.
2:33:57 You cannot produce the kind of software that Basecamp
2:33:59 is with a team of a thousand people.
2:34:02 You will build the kind of software that a thousand people builds.
2:34:05 And that's not the same thing at all.
2:34:08 So much of the main breakthrough in both end user
2:34:13 systems but also in open source systems and fundamental systems,
2:34:16 they're done by individuals or very small teams.
2:34:19 Even all these classical histories of Apple has always been like,
2:34:23 well it was a big organization but then you
2:34:25 had the team that was actually working on the breakthrough.
2:34:28 It was four people.
2:34:29 It was eight people.
2:34:30 It was never 200.
2:34:32 And large teams seems to slow things down.
2:34:36 Yes.
2:34:37 It's so fascinating and part of it's the manager thing.
2:34:40 Because humans don't scale.
2:34:42 Communication between humans certainly don't scale.
2:34:45 You basically get the network cost effect every time you add a new node,
2:34:51 it goes up exponentially.
2:34:52 This is perhaps the key thing of why I get
2:34:56 to be so fond of having no managers at Basecamp,
2:35:00 because our default team size is two.
2:35:02 One programmer, one designer, one feature.
2:35:06 When you're operating at that level of scale, you don't need sophistication.
2:35:11 You don't need advanced methodologies.
2:35:14 You don't need multiple layers of management because you can just do.
2:35:18 The magic of small teams is that they just do.
2:35:21 They don't have to argue because we don't have to set direction,
2:35:24 we don't have to worry about the roadmap.
2:35:26 We can just sit down and make something and then see if it's good.
2:35:30 When you can get away with just making things, you don't have to plan.
2:35:33 And if you can get out of planning,
2:35:35 you can follow the truth that emerges from the code,
2:35:39 from the product, from the thing you're working on in the moment.
2:35:43 You know far more about what the great next step is,
2:35:47 when you're one step behind rather than if you try
2:35:50 18 months in advance to map out all the steps.
2:35:53 How do we get from here to very far away?
2:35:55 You know what?
2:35:56 That's difficult to imagine in advance because humans are very poor at that.
2:36:01 Maybe AI one day will be much better than us,
2:36:04 but humans can take one foot or put one foot in front of each other.
2:36:08 That's not that hard and that allows
2:36:11 you to get away with all that sophistication.
2:36:14 So the process has become much simpler.
2:36:16 You need far fewer people, it compounds.
2:36:18 You need much less process.
2:36:20 You need to waste less time in meetings.
2:36:22 You can just spend these long glorious days
2:36:25 and weeks of uninterrupted time solving real problems
2:36:28 you care about and that are valuable and you're
2:36:31 gonna find that's what the market actually wants.
2:36:33 No one is buying something because there's a huge company behind it.
2:36:37 Most of the time.
2:36:38 They're buying something because it's good.
2:36:40 And the way you get something good is you
2:36:42 don't sit around and have a meeting about it.
2:36:46 You try stuff.
2:36:47 You build stuff.
2:36:48 It really is kind of incredible what one person,
2:36:51 honestly one person can do in 100 hours of deep work of focused work, even less.
2:36:58 So I'll tell you this, I tracked exactly the number
2:37:01 of hours I spent on the first version of Basecamp.
2:37:03 And I was doing this because at the time
2:37:05 I was working on a contract basis for Jason,
2:37:09 he was paying me, I was gonna say $15 an hour.
2:37:12 That's what I got paid when we first got started.
2:37:13 I think he had bumped my pay to a glorious 25.
2:37:16 But I was billing him and I know that the invoice
2:37:20 for the first vision of Basecamp was 400 hours.
2:37:23 That's what it took for one sole individual
2:37:26 in 2004 to create an entire system that has
2:37:30 then gone on to gross hundreds of millions
2:37:31 of dollars and continues to do extremely well.
2:37:35 One person just me setting up everything.
2:37:38 Part of that story is Ruby.
2:37:40 Part of that story is Rails.
2:37:41 But a lot of it is also just me plus Jason, plus Ryan, plus Matt.
2:37:46 That was the entire company at the time.
2:37:48 And we could create something of sheer sustaining value with such a tiny team,
2:37:54 because we were a tiny team.
2:37:55 Not to spite off.
2:37:57 Small is not a stepping stone.
2:37:59 This is the other thing that people get into their head.
2:38:01 This is one of the big topics of "Rework." That it
2:38:05 gave entrepreneurs the permission to embrace being a small team.
2:38:09 Not as a way point, not as like I'm trying to become a thousand people.
2:38:13 No, I actually like being a small team.
2:38:16 Small teams are more fun.
2:38:17 If you ask almost anyone, I'm sure Tobi would say this too, even at his scale,
2:38:23 the sheer enjoyment of building something is
2:38:25 in the enjoyment of building it with a tiny team.
2:38:28 Now you can have impact at a different scale when you have a huge company.
2:38:32 I fully recognize that and I see the appeal of it.
2:38:35 But in the actual building of things, it's always small teams, always.
2:38:39 How do you protect the small team.
2:38:40 Basecamp has successfully stayed small.
2:38:44 Has been the dragon, and you had to fight off.
2:38:47 That like basically you make a lot of money.
2:38:50 There's a temptation to grow.
2:38:53 So how do you not grow?
2:38:55 Don't take venture capital.
2:38:57 Okay, that's step one.
2:38:58 That is point number one.
2:39:00 First of all,- Point number two everybody takes venture capital.
2:39:02 So you already went.
2:39:04 I mean that's been the answer for the longest time.
2:39:07 Because the problem isn't just venture capital, it's other people's money.
2:39:10 Once you take other people's money, completely understandably,
2:39:13 they want a return and they would prefer to have the largest return possible.
2:39:17 'Cause not them sitting in the code.
2:39:19 It's not them getting the daily satisfaction out of building something.
2:39:22 Chiseling beautiful code poems out of the editor, right?
2:39:26 They don't get that satisfaction.
2:39:27 They get the satisfaction maybe of seeing
2:39:29 something nice put into the world, that's fair.
2:39:31 But they certainly also get a satisfaction of a higher return.
2:39:34 And there is this sense certainly in venture capital,
2:39:37 stated in venture capital that the whole point of you taking
2:39:41 the money is to get to a billion dollars or more.
2:39:43 Now the path to that usually does go through
2:39:48 running established playbooks and then when it comes to software,
2:39:51 the enterprise sales playbook is that playbook.
2:39:54 If you're doing B2B software SaaS, you will try to find product market fit.
2:39:59 And the second you have it,
2:40:00 you will abandon your small and medium sized accounts to chase the big whales
2:40:05 with a huge sales force and by then you're a thousand people and life sucks.
2:40:10 That said, I mean people are just curious about this.
2:40:13 I've gotten a chance to get to know Jeff Bezos.
2:40:17 He invested in Basecamp, not controlling?
2:40:23 He bought secondaries.
2:40:24 So this was the funny thing is that when investing have these two dual meanings.
2:40:29 Normally when people think about investing,
2:40:31 they think you're putting in growth capital because you want the business
2:40:35 to hire more people to do more R&Ds so they can grow bigger.
2:40:39 Bezos didn't do that actually.
2:40:41 He bought a ownership stake directly from Jason and I,
2:40:44 and 100% of the proceeds of that purchase went into my and Jason's bank account,
2:40:51 personal bank account.
2:40:52 Not a single cent went into the account
2:40:54 of the company 'cause we didn't need the money to grow.
2:40:57 What we needed or what we certainly enjoyed
2:41:00 was to some extent maybe the vote of confidence,
2:41:04 but more so the security of taking a little bit off the table
2:41:10 is that we dare turn down the big bucks from venture capitals.
2:41:14 It was essentially a vaccine against wanting
2:41:17 to take a larger check from people who then
2:41:20 wanted to take the company to something enormous
2:41:22 that we didn't want to go with it.
2:41:24 So Jeff gave Jason and I just enough money that we were comfortable turning all
2:41:30 these people down in a way where if
2:41:32 it had turned belly up like six months later,
2:41:35 we wouldn't have been kicking ourselves and going,
2:41:37 we had something here that was worth millions and now we
2:41:41 have nothing and I have to worry about rent and groceries again.
2:41:44 It is a vote of confidence.
2:41:45 I wonder from, I'd love to hear Jeff's side of the story of like why,
2:41:51 'cause he doesn't need like the money.
2:41:55 So it's really, I think it probably is
2:41:58 just believing in people and wanting to have
2:42:00 cool stuff be created in the world and make money off of it, but not like.
2:42:05 100% the motivation for Jeff wasn't a return, because he actually has a team.
2:42:11 He's private office that runs these investments who did
2:42:15 the calculus on the investment pitch we gave him,
2:42:18 which was so ridiculous that Jason and I were laughing
2:42:21 our asses off when we were writing down our metrics.
2:42:24 I was like, no one's gonna pay this.
2:42:26 No one is gonna give us this multiple of this amount of revenue.
2:42:30 And that's fine.
2:42:31 I mean we took the call essentially out of kind of an awe
2:42:36 that Jeff Bezos even wanted to look at us and like, do you know what?
2:42:38 We don't want venture capital.
2:42:39 We don't need other people's money,
2:42:41 but like let's just give him a bullshit number
2:42:43 that no sane person would actually say yes to.
2:42:45 And then I mean, we can each go our own way.
2:42:48 And his investment team said like, "Jeff, no way.
2:42:50 This makes no economic sense at all.
2:42:52 They're asking for way too much money with way too
2:42:54 little revenue." And Jeff just went like, "I don't care.
2:42:57 I wanna invest in this guy." Because to him
2:42:58 at the time it was chump change, right?
2:43:00 Like Jason and I each got a few million dollars.
2:43:03 I mean whatever the currency swing between the yen and the dollar that day
2:43:08 probably moved 10 x that for his net worth than our investment did.
2:43:12 Jeff seemed genuinely interested in being around interesting people,
2:43:17 interesting companies, helping someone go to distance.
2:43:20 And I actually look back on that relationship with some degree of regret,
2:43:26 because I took that vote of confidence for granted in ways
2:43:30 that I'm a little bit ashamed of over the years
2:43:33 I've been more critical about some of the things that Amazon
2:43:36 had done that I feel now is sort of justified.
2:43:40 So that's just sort of part of that processing of it.
2:43:44 But on the economic sense, he gave us that confidence.
2:43:48 He gave us the economic confidence,
2:43:49 but then he also gave us the confidence of a CEO running
2:43:53 perhaps at the time the most important internet business in the US.
2:43:57 Showing up to our calls,
2:43:59 which we would have with him like once a year and basically just going like,
2:44:03 yeah, you guys are doing awesome stuff.
2:44:05 You should just keep doing awesome stuff.
2:44:06 I read your book, it's awesome.
2:44:08 You launched this thing, it's awesome.
2:44:09 You should just do more of that.
2:44:10 I don't actually know how to run your business.
2:44:12 You guys know it.
2:44:13 So the book goes out.
2:44:14 I'm just so, from a fan perspective,
2:44:15 I'm curious about how Jeff Bezos was able to see,
2:44:21 'cause to me, you and Jason, like especially humans in the space of tech.
2:44:25 And the fact that Jeff was able to see that, right?
2:44:27 How hard is it to see that?
2:44:29 He certainly saw it very early.
2:44:31 And I think this is something that Jeff does better than almost anyone else.
2:44:34 He spots that opportunity so far in advance
2:44:37 of anyone else even opened their eyes to it,
2:44:39 or certain he is willing to bet on it
2:44:42 far early and far harder than anyone else is.
2:44:45 And he's just right time and again.
2:44:47 I mean, we were not the only investment that he made.
2:44:49 And certainly Amazon had a extremely long-term vision.
2:44:55 So far longer than I have ever had the gumption to keep.
2:45:00 Like I think of myself as a long-term thinker.
2:45:02 I am playing a child's game compared to the game that Jeff is playing.
2:45:06 Like when I looked at Amazon's economics around the dot-com boom and bust,
2:45:11 they looked ridiculous.
2:45:12 Like they were losing so much money.
2:45:14 They were so hated by the market they were...
2:45:16 no one believed that it was gonna turn into what it is, but Jeff did.
2:45:19 In a way that that level of conviction I really aspire to.
2:45:23 And I think that's one of the main things I've taken away from that relationship
2:45:27 is that you can just believe in yourself to that degree against those odds.
2:45:33 That's ridiculous.
2:45:35 He did that at so many times
2:45:37 our level that it's pathetic if I'm doubting myself.
2:45:41 Yeah, I think Amazon is one of those companies.
2:45:46 I mean, it's come under a bunch of criticism over the years.
2:45:51 This is something about humans that don't
2:45:53 appreciate so much that we take for granted
2:45:55 the positive that a thing brings real quick
2:45:58 and then we just start criticizing the thing.
2:46:00 It's the Wi-Fi and the airplanes.
2:46:02 [DHH] That's exactly it.
2:46:04 But I think Amazon, there could be a case made that Amazon is
2:46:10 one of the greatest companies in the last a hundred years- For sure,
2:46:16 I think it's an easy case to make.
2:46:18 What I also think is that the price you pay to be one
2:46:22 of the greatest companies in the last a hundred years is a lot of detractors,
2:46:26 a lot of pushback, a lot of criticism
2:46:28 that this is actually order restored in the universe.
2:46:31 One of my favorite teachers in all the time
2:46:34 I've been on the internet is Kathy Sierra.
2:46:37 I don't know if you know her work, but she was actually Vern a few short
2:46:41 years before the cruel internet ran her off.
2:46:43 But she wrote a blog called Creating Passionate Users and she
2:46:47 carved into my brain this notion of balance in the universe.
2:46:51 If you are creating something of value that a lot of people love,
2:46:56 you must create an equal and opposite force of haters.
2:47:01 You cannot have people who love what you do
2:47:03 without also having people who hate what you do.
2:47:05 The only escape from that is mediocrity.
2:47:09 If you are so boring and so uninteresting that no
2:47:11 one gives a damn whether you exist or not, yeah, you don't get the haters,
2:47:15 but you also don't get the impact of people who really enjoy your work.
2:47:18 And I think Amazon is that just at the massive scale, right?
2:47:21 They brought so much value and change to technology to commerce
2:47:27 that they must simply have a black hole size of haters,
2:47:31 otherwise the universe is simply gonna tip over.
2:47:34 Let me ask you about small teams.
2:47:36 So you mentioned Jason a bunch of times, Jason Fried,
2:47:39 you have been partners for a long, long time.
2:47:41 Perhaps it's fair to say he's more on the sort
2:47:44 of the design business side and you're like the tech, the engineering wizard.
2:47:49 How have you guys over all these years creating so many amazing products,
2:47:54 not murder each other?
2:47:55 It's a great story of like partnership.
2:47:58 What can you say about collaboration?
2:48:00 What can you say that about Jason that you love that you've learned from?
2:48:06 Why does this work?
2:48:07 So first I'll say we have tried
2:48:09 to murder each other several times over the years,
2:48:11 but far less, I think in the last decade.
2:48:14 In the early days, our product discussions were so fierce that when
2:48:23 we were having them in the office and there were other employees around,
2:48:26 some of them were legitimately worried that the company was about to fall apart.
2:48:30 Because the volume coming out of the room
2:48:34 would be so high and sound so acrimonious,
2:48:38 that they were legitimately worried the whole thing was gonna fall apart.
2:48:42 But you know what's funny is that it never felt like that in the moment.
2:48:45 It always felt like just a peak vigorous search for something better.
2:48:53 And that we were able to stomach that level of adversity
2:48:59 on the merits of an idea because it was about the idea.
2:49:04 It wasn't about the person and it never really got personal.
2:49:10 Not even never really, it didn't get personal.
2:49:12 It wasn't like, Jason, you're an asshole.
2:49:14 It was like, Jason, you're an idiot.
2:49:16 And you're an idiot because you're looking at this problem the wrong way.
2:49:19 And let me tell you the right way to do it.
2:49:21 As a small tangent, let me say this.
2:49:23 Some people have said, oh,
2:49:24 probably return to this, that you're sometimes can have
2:49:29 flights of temper on the internet and so on.
2:49:34 I never take it that way because it is the same kind of ilk.
2:49:38 Maybe I haven't seen the right kind of traces of temper,
2:49:42 but usually it's about the idea and it's just excited, passionate human.
2:49:46 That's exactly what I like to think of it as.
2:49:48 It doesn't always come across as that.
2:49:50 And I can see why spectators in particular sometimes would see something
2:49:55 that looks like I'm going after the man rather than the ball.
2:49:59 And I do think I've tried to get better at that.
2:50:02 But in my relationship with Jason,
2:50:04 I think it's worked so well because we have our own
2:50:08 distinct areas of competence where we fully trust each other.
2:50:12 Jason trusts me to make the correct technical decisions.
2:50:15 I trust him to make the correct design and product direction decisions,
2:50:19 and then we can overlap and share on the business,
2:50:22 on marketing, on writing, on other aspects of it.
2:50:25 So that's one thing is that if you're starting a business with someone where you
2:50:30 do exactly the same as they do
2:50:32 and you're constantly contesting who's the more competent person,
2:50:37 I think that's far more difficult and far more volatile.
2:50:40 So if you're starting a business and you're both programmers and you
2:50:42 both work on the same kind of programming, ah, good luck.
2:50:48 I think that's hard.
2:50:49 I tried to pick an easier path working
2:50:51 with a designer where I knew that at least half
2:50:54 of the time I could just delegate to his experience
2:50:57 and competence and say like, do you know what?
2:50:59 I may have an opinion, I have an opinion all the time on design.
2:51:02 But I don't have to win the argument because I trust you.
2:51:06 Now occasionally we would have overlaps on business
2:51:09 or direction where we'd both feel like we had
2:51:12 a strong stake in the game and we both had a claim to competence in that area.
2:51:17 But then for whatever reason,
2:51:20 we also both had a long-term vision were I would go, do you know what?
2:51:24 I think we're wrong here.
2:51:25 But as I learned from Jeff Bezos, by the way, I'm gonna disagree and commit.
2:51:29 That was one of those early lessons he
2:51:31 gave us that was absolutely crucial and perhaps even
2:51:34 instrumental in ensuring that Jason and I have
2:51:36 been working together for a quarter of a century.
2:51:39 Disagree and commit is one of the old time Jeff Bezos greats.
2:51:42 I'm just surprised that Yoko Ono hasn't come along.
2:51:46 You know what I mean?
2:51:47 Like there's so many Yokos in this world.
2:51:51 It might have happened.
2:51:52 If not in part because we don't sit on each other's lap all the time.
2:51:57 Most of our careers, we haven't even lived in the same city.
2:52:01 Like I lived in Chicago for a couple of years while
2:52:04 we were getting going after I'd moved to the US in 2005.
2:52:07 But then I moved to Malibu and then I
2:52:09 lived in Spain and then I lived in Copenhagen.
2:52:11 And Jason and I from the foundation of our relationship learned how to work
2:52:17 together in a remarkably efficient way where
2:52:21 we didn't have to actually talk that much.
2:52:23 On any given week, I'd be surprised if Jason and I
2:52:27 spent more than two hours of direct exchange and communication.
2:52:33 Yeah, sometimes it's the basic human frictions that you just accumulate.
2:52:36 Yes, I think you rub up against another person,
2:52:39 that person well better be your spouse if it's too much for too long.
2:52:43 Yeah, but even there.
2:52:44 Even there.
2:52:45 COVID has really test the relationship.
2:52:46 It's fascinating to watch.
2:52:48 It has, and I do think that having some separation,
2:52:51 which is kind of counterintuitive because I think a lot
2:52:53 of people think the more collaboration you can have, the better.
2:52:56 The more ideas that can bounce back and forth, the better.
2:52:59 And both Jason and I, for whatever reason,
2:53:01 came to the conclusion early on in careers.
2:53:03 Absolutely not, that's complete baloney.
2:53:06 This is why we were huge proponents of remote work.
2:53:09 This is why I enjoy working in my home office where I can close
2:53:13 the door and not see another human for like six hours at the time.
2:53:17 I don't wanna bounce ideas off you all the time.
2:53:19 I wanna bounce ideas off you occasionally and then
2:53:22 I wanna go off and implement those ideas.
2:53:24 There's way too much bouncing going
2:53:26 on and not enough scoring, not enough dunking.
2:53:29 And I think this is one of the great traps of executive rule.
2:53:34 Once a founder elevates themselves all the way up to an executive
2:53:39 where what they're doing is just telling other people what to do,
2:53:42 that's the realm they live in 24/7.
2:53:44 They just live in the idea realm.
2:53:45 Oh, I can just tell more people more things
2:53:47 what to do and we can just see it happen.
2:53:49 If you actually have to be part of implementing that, you slow your horse.
2:53:52 You think like, do you know what?
2:53:53 I had a good idea last week.
2:53:55 I'm gonna save the rest of my good ideas until next month.
2:53:58 And there is a temptation for the managers
2:54:00 and for the people in the executive layer to do something,
2:54:06 which that's something usually means a meeting, right?
2:54:09 And so that's why you say...
2:54:11 Their job is telling other people what to do.
2:54:13 Yeah, and the meeting,
2:54:14 so this is one of the big things you're against is meeting...
2:54:17 Meetings are toxic.
2:54:19 And this really I think ties into this with Jason and I.
2:54:22 If I had to count out the total number of meetings we've had in 24 years
2:54:27 of collaborations where we in person sat
2:54:29 in front of each other and discussed a topic,
2:54:32 I probably it'd be less than whatever, three months at a fan company.
2:54:36 We just haven't done that that much.
2:54:38 We haven't worn it out.
2:54:39 One of this funny metaphors that Trump came up with at one point
2:54:44 was a human has like a limited number of steps in their life, right?
2:54:48 Like that's the longevity argument here.
2:54:50 You could do so much activity and then you run out.
2:54:53 There's some kernel in that idea that can be applied to relationship.
2:54:57 There's some amount of exchange we can have.
2:54:59 There's some amount of time we can spend together where you can wear it out.
2:55:03 Jason and I were diligent about not wearing each other out.
2:55:07 And I think that is absolutely key to the longevity
2:55:10 of the relationship combined with that level of trust.
2:55:14 And then just combining with the level that we really like the work itself.
2:55:18 We don't just like the brainstorming.
2:55:20 The say where we just come up with good ideas.
2:55:22 No, we like to do the ideas and we
2:55:25 like to be part of that process directly ourselves.
2:55:27 I like to program, he likes to do design.
2:55:29 We could go off and do our little things for long stretches of time.
2:55:32 In case you, come together and go like, hey, let's launch a great product.
2:55:35 This might sound like I'm asking you to do therapy,
2:55:40 but I find myself to sometimes want or long for a meeting because I'm lonely.
2:55:48 Like 'cause it remote work is just sitting by yourself.
2:55:53 I don't know, it can get really lonely for long stretches of time.
2:55:56 Let me give you a tip, get a wife.
2:56:01 Yes, oh, goddammit.
2:56:03 Get a couple kids.
2:56:04 [Lex] All right.
2:56:05 Like family really is the great antidote to loneliness.
2:56:08 And I mean that as sincerely as I can possibly say it.
2:56:11 I certainly had exactly that feeling you described early in my career when I
2:56:16 was working remotely and I was just a, like me living in an apartment.
2:56:21 A total stereotype where for the longest time when I first moved to Chicago,
2:56:24 all I had on the floor was a mattress and then
2:56:27 I bought this big TV and I didn't even mount it.
2:56:29 And then I had a stack of DVDs.
2:56:31 And I was basically,
2:56:33 I was working a lot of time and then I would just go home and do that.
2:56:37 And it wasn't great.
2:56:39 It really wasn't.
2:56:41 Like I do think that humans need humans.
2:56:43 And if you can't get them at work and I
2:56:45 actually sort of kind of don't want them at work,
2:56:47 at least I don't want 'em for 40 hours a week.
2:56:49 That's not what I prefer.
2:56:51 You need something else.
2:56:51 You need other relationships in your life,
2:56:53 and there's no greater depth of relationship if you can find
2:56:57 someone that you actually just wanna spend a lot of time with.
2:57:00 That's key to it.
2:57:01 And I think it's key for both Jason and I
2:57:02 that we've had families for quite a long time and it grounds
2:57:07 you two in a way where the sprint of a startup
2:57:12 can get traded in for the marathon of an enduring company.
2:57:17 And you get settled in a way.
2:57:19 We talked briefly about sometimes I get fired up.
2:57:22 I mean a lot of times, maybe even most of the times I get fired up about topics,
2:57:26 but I don't get fired up in the same way now as I used to when I was 24.
2:57:31 I'm still extremely passionate about ideas and trying to find the right things,
2:57:35 but having a family meeting, my wife, building a life around that has
2:57:43 just mellowed everything out in a completely cliche way.
2:57:48 But I think it's actually key.
2:57:50 I think if we could get more even younger people not to wait until
2:57:56 they were in the late goddamn 30s or early 40s to hitch up with someone,
2:58:01 we'd be better off and we'd have more stable business relationships
2:58:05 as well because folks would get that nurturing human relations somewhere else.
2:58:11 Now when I say all of that, I also accept that there are plenty
2:58:14 of great businesses that's been built over
2:58:16 the years that have not been built remote,
2:58:18 that have been built by a gang of hooligans
2:58:21 sitting in an office for immense hours of time.
2:58:23 I mean, both John Carmack and Tim Sweeney talked about
2:58:26 that in the '90s with their careers that that was just basically work,
2:58:30 sleep, hang out with the guys at the office, right?
2:58:33 A totally fair.
2:58:34 That never appealed to me.
2:58:36 Both Jason and I saw eye to eye on the idea
2:58:39 that 40 hours a week dedicated to work was enough that if we
2:58:43 were gonna go to distance for not just the five to seven
2:58:47 years it takes to build a VC case up to an exit.
2:58:51 But for potentially 10 years, 20 years or further,
2:58:55 we needed to become whole humans.
2:58:57 Because the only that whole humanness was gonna go to distance,
2:59:02 which included building up friendships outside of work,
2:59:06 having hobbies, finding a mate and having a family.
2:59:12 And that entire higher existence,
2:59:18 those legs of the stool that work is not the only thing in life
2:59:22 is completely related to the fact that we've been around for 25 years.
2:59:28 There's way too much, especially in America of false trade-offs.
2:59:33 Oh, you wanna build a successful business?
2:59:35 Well, you can either have money enjoyment or family or health pick one.
2:59:40 What?
2:59:40 Why do we have to give up all of this?
2:59:43 Now again, I'm not saying,
2:59:45 and there are moments of payers in life where you can sprint.
2:59:49 But I am saying if that sprint turns into a decade, you're gonna pay for it.
2:59:54 And you can pay for it in ways.
2:59:55 I've seen time and again seem like a very bad trade that even if it works.
3:00:01 And by the way, most of the time it does not.
3:00:03 Most of the time startups go bust.
3:00:04 Most of the time people spend five,
3:00:06 seven years or something that does not pan out and they don't
3:00:10 get the payout and then they just sit with regret of like,
3:00:13 what the fuck happened to my 20s?
3:00:16 Early on, Jason and I basically made the pact that working
3:00:20 together was not gonna lead to that kind of regret.
3:00:22 That we were gonna allow ourselves and each
3:00:24 other to build a whole life outside of work.
3:00:29 And the fact that that worked is
3:00:34 something I feel is almost like forbidden knowledge,
3:00:38 certainly in technology circles in the US.
3:00:40 It's something that we've tried to champion for 20 years and we still get slack.
3:00:43 For just two days ago, I had another Twitter beef with someone saying like,
3:00:48 "Oh, well okay, maybe it worked, but you didn't turn into Atlassian.
3:00:51 So you're a failure.
3:00:52 Basecamp isn't Jira,
3:00:53 so why are you even bothering?" And it's such a fascinating winner-takes-all
3:01:00 mentality that unless you dominate everyone else in all the ways you've lost.
3:01:06 When so much of life is far more open to multiple winners where we can
3:01:13 end up with a business that have made
3:01:15 hundreds of millions of dollars over the years,
3:01:17 and we've kept much of that to do whatever we want and that's enough.
3:01:24 That's good, that's great.
3:01:25 That's actually something worth aspiring to.
3:01:29 Certainly it should be a path for someone to consider choosing
3:01:34 rather than the VC unicorn of bust mentality that dominates everything.
3:01:39 Yeah, I'd love to ask you about this exchange
3:01:40 so you can explain to me the whole saga,
3:01:43 but so just to link on that a little bit is I think there's a notion
3:01:47 that success for a tech founder is like work
3:01:52 for a few years all out and then exit,
3:01:57 sort of sell your company for, I don't know, hundreds of millions of dollars.
3:02:01 That's success.
3:02:03 When it seems in reality, when you look at who the people like you,
3:02:08 like really smart, creative humans,
3:02:12 who they actually are and what happiness entails.
3:02:16 It actually entails working your whole life a little bit.
3:02:19 It's like because you actually love the programming, you love the building,
3:02:23 you love the designer and you don't want to exit.
3:02:27 And that's something you've talked about really eloquently about.
3:02:31 So like you actually want to create a life where you're always doing
3:02:35 the building and doing it in a way that's not completely taken over your life.
3:02:40 Mojito Island is a mirage.
3:02:41 It always was.
3:02:43 There is no retirement for ambitious people.
3:02:45 There is no just sitting back on the beach and sipping a mojito for what?
3:02:49 For two weeks before you go damn crazy and wanna get back into the action?
3:02:54 That's exactly what happens to most people who
3:02:57 have the capacity to build those kinds of exits.
3:03:00 I've never seen, I shouldn't say never.
3:03:02 I've almost never seen anyone be able to pull that off.
3:03:05 Yet so many think that that's why they're doing it.
3:03:08 That's why they're sacrificing everything.
3:03:10 Because once I get to the finish line, I'm golden.
3:03:13 I've won, I can retire, I can sit back, I can just relax.
3:03:17 And you find out that that kind of relaxation is actually hell.
3:03:22 It's hell for creative people to squander
3:03:26 their God-given creative juices and capacities.
3:03:30 And I was really lucky to read
3:03:34 the book "Flow" by Mihaly Csikszentmihalyi early on- Nice,
3:03:39 the pronunciations, spot on.
3:03:40 You know what?
3:03:40 I had to practice that with AI over the last few days because
3:03:43 I knew I was gonna cite him and I butchered his name several times.
3:03:47 So AI taught me how to pronounce that, at least somewhat correctly.
3:03:52 But his main work over his career was essentially the concept
3:03:57 of flow that came out of a search for understanding happiness.
3:04:04 Why are some people happy?
3:04:05 When are they happy?
3:04:07 And what he learned was quite illuminating.
3:04:09 He learned that people aren't happy when they sit on Mojito Island.
3:04:12 They're not happy when they're free of all obligations and responsibilities.
3:04:15 No, they're happy in these moments where they're reaching
3:04:20 and stretching their capacities just beyond what they can currently do.
3:04:25 In those moments of flow, they can forget time and space.
3:04:29 They can sit in front of the key board program a hard problem,
3:04:32 think 20 minutes have passed and suddenly it's been three hours.
3:04:36 They look back upon those moments with the greatest amount of joy.
3:04:40 And that is what peak happiness is.
3:04:42 If you take away the pursuit of those kinds of problems,
3:04:46 if you eliminate all the problems from your plate, you're gonna get depressed.
3:04:51 You're are not gonna have a good time.
3:04:53 Now there are people who can do that, but they're not
3:04:55 the same kind of people who built these kinds of companies.
3:04:58 So you have to accept the kind of individual you are.
3:05:01 If you are on this path, don't bullshit yourself.
3:05:04 Don't bullshit yourself into thinking, I'm just gonna sacrifice everything,
3:05:08 my health, my family, my hobbies, my friends,
3:05:11 but in 10 years I'm gonna make it all up because in 10 years I can do it.
3:05:15 It never works out like that.
3:05:16 It doesn't work out on both ends of it.
3:05:18 It does not work out if you're successful and you sell your company,
3:05:21 because you'll get bored out of your mind after two weeks on retirement.
3:05:24 It doesn't work out if the company is a failure
3:05:27 and you regret the last 10 years spent for nothing.
3:05:30 It doesn't work out if it all works and you
3:05:32 stay in the business because it never gets any easier.
3:05:35 So you're gonna fail on all metrics if you just go,
3:05:38 there's only work and nothing else.
3:05:40 And I didn't want that.
3:05:43 I wanted the happiness of flow.
3:05:45 I understood that insight was true, but I wanted to do it in a way where
3:05:50 I could sustain the journey for 40 or 50 years.
3:05:53 And there's another other interesting caveat that I've heard you
3:05:57 say is that if you do exit and you sell
3:05:59 your company and you wanna stay in, you wanna do
3:06:02 another company that's going to usually not be as fulfilling.
3:06:06 Because really your first baby, like.
3:06:09 You can't do it again or most people can't do it again.
3:06:12 A, because their second idea is not gonna be as good as the first one.
3:06:16 It is so rare to capture lightning in the bottle like we have,
3:06:20 for example, with Basecamp.
3:06:21 I know this from experience because I've been
3:06:22 trying to build a lot of other businesses since.
3:06:25 And some of them have been moderate successes,
3:06:27 even good successes, none of them have been Basecamp.
3:06:29 It's really difficult to do that twice.
3:06:31 But founders are arrogant pricks, including myself.
3:06:35 And we like to think that, do you know what?
3:06:36 We succeeded in large part because we're just awesome.
3:06:39 We're just so much better than everyone else.
3:06:41 And in some ways that's true some of the time.
3:06:44 But you can also be really good at something
3:06:46 that matters for a hot moment that door is open.
3:06:49 The door closes now you're still good at the thing, but it doesn't matter.
3:06:53 No one cares.
3:06:54 There's that part of it.
3:06:55 And then there's the part of it that going back
3:06:59 to experience things for the first time only happens the first time.
3:07:03 You can't do it again.
3:07:04 I don't know if I have it in me to go through the of the early days again.
3:07:09 And I say bullshit in the sense of the most endearing sense.
3:07:12 It's all great to do it.
3:07:13 I know too much.
3:07:15 This is one of the reasons why, whenever I'm asked the questions,
3:07:18 if you could tell your younger self something that would really,
3:07:21 what would you say to your younger self?
3:07:23 I would fuck not say a thing.
3:07:25 I would not rob my younger self of all the life experiences
3:07:28 that I've been blessed with due to the ignorance of how the world works.
3:07:33 Building up the wisdom about how the world works is a joy.
3:07:38 And you gotta build it one break at a time if you just handed all the results.
3:07:42 It's like, oh, should we watch your movie?
3:07:43 Here's how it ends.
3:07:45 I don't wanna fucking watch the movie now.
3:07:46 You spoiled it.
3:07:48 I don't want you to spoil my business experience.
3:07:51 I don't wanna spoil any of my ignorance.
3:07:53 The greatest blessing half the time when you're starting something
3:07:56 new is A, you don't know how hard it's gonna be;
3:07:59 B, you don't know what you don't know.
3:08:01 Like the adventure is to pay off, the responsibility is to pay off.
3:08:06 This is something Jordan Peterson has really taught me to articulate.
3:08:10 This notion that responsibility is actually key to me.
3:08:16 "Man's Search for Meaning," Viktor Frankl talks about this as well,
3:08:19 that we can endure any hardship if there's a reason why.
3:08:24 Now he talked about it in truly life altering concentration can't waste.
3:08:30 But you can also apply at a smaller scale
3:08:32 with less criticality of even just your daily life
3:08:35 that all that hardship in building the original business
3:08:39 that is responsibility you take upon yourself the appeal.
3:08:42 The reason you take that on you is
3:08:45 in part because you don't know fully what it entails.
3:08:47 If you had known upfront, if I had known upfront, how hard it would be?
3:08:50 How much frustration there'd be along the way?
3:08:53 If you just told me that in a narrative before I got started,
3:08:56 I would've been like, eh, maybe I should just go get a job.
3:09:00 You said so many smart things there.
3:09:02 Just to pick one.
3:09:04 It's funny that sometimes the advice givers,
3:09:08 the wisdom givers have gone through all the bullshit.
3:09:13 And so there is a degree to which you wanna make the mistake.
3:09:17 So I think I would still give the advice of you want
3:09:21 to have a stretch of your life where you work too hard,
3:09:25 including a thing that fails.
3:09:27 I don't think you can learn the lessons why that's
3:09:30 a bad idea in any other way except by doing it.
3:09:34 There is a degree like, but of course you don't.
3:09:37 I think you should stretch.
3:09:38 Should you have to stretch for a decade?
3:09:40 I'm not so sure.
3:09:41 Yeah, the decade thing is 20s is a special time.
3:09:43 It's a lot to trade.
3:09:45 You don't get your 20s back.
3:09:46 Yeah, you don't get your 30s back.
3:09:47 You don't get your 40s back.
3:09:48 You really, I would've regretted personally if I hadn't
3:09:52 done the other things I did in my 20s,
3:09:54 if I hadn't had the fun I had, if I hadn't had the friends I had,
3:09:57 if I hadn't built up the hobbies that I did,
3:09:59 if I hadn't started driving race cars at an early
3:10:03 enough age to actually get really good at it,
3:10:05 if I had just gone all in on business
3:10:07 because I would've got the same out in the end.
3:10:10 This is something Derek Sivers really taught me is he has
3:10:14 this great essay about how when he went for a bike ride,
3:10:17 he could go really hard all out and he
3:10:21 could do the ride I think in whatever 19 minutes.
3:10:24 Or he could enjoy the ride, go 5% slower,
3:10:27 do the ride in 21 minutes and realize there's only two minutes apart.
3:10:32 Either I go all in all the time,
3:10:34 there's nothing else, I'm completely exhausted at the alt.
3:10:37 Or I travel the same distance and I arrive maybe two minutes later,
3:10:42 but I got to enjoy the scenery, listen to the birds, smell the flowers.
3:10:46 That journey is also valuable.
3:10:50 Now I say that while accepting and celebrating that if
3:10:55 you wanna be the best at one thing in the world,
3:10:58 no, you have to sacrifice everything.
3:11:00 You have to be obsessed with just that thing.
3:11:03 There is no instant of someone who's the best
3:11:05 in the world at something who's not completely obsessed at.
3:11:08 I didn't need to be the best at anything.
3:11:10 This was a rare blessing of humility I had early on is like, do you know what?
3:11:16 I am not that smart.
3:11:17 I'm not that good.
3:11:18 I'm not that talented.
3:11:20 I can do interesting things by combining
3:11:22 different aspects and elements that I know,
3:11:24 but I'm not gonna be the best at anything.
3:11:26 And that released me from this singular obsession with just going,
3:11:32 I'm gonna be the best programmer in the world.
3:11:34 Eh, I know I'm not.
3:11:35 I failed at it twice before I even got how conditional it's worked.
3:11:39 I'm not smart enough to be the best at anything.
3:11:42 I'm not dedicated enough to do that.
3:11:44 That's a bit of a blessing.
3:11:46 And I think as a society, we have to straddle both celebrating peak excellence,
3:11:52 which we do all the time and celebrating
3:11:54 the peak intensity of mission it takes to become that.
3:11:58 And then also going like, do you know what?
3:12:00 We don't all need to be Michael Jordan.
3:12:03 There's only gonna be one of those.
3:12:05 Well, we should say that there's certain
3:12:06 pursuits where a singular obsession is required.
3:12:10 Basketball is one of them.
3:12:12 By the way, probably racing.
3:12:14 If you wanna be the best at F1 in the world...
3:12:17 If you wanna be Senna, you gotta be a maniac.
3:12:20 But I would argue that there's most disciplines
3:12:23 like programming allows if you want to be,
3:12:26 quote, unquote, "the best," whatever that means,
3:12:29 I think that's judged at the end of your life.
3:12:31 And usually if you look at that path, it's gonna be an nonlinear one.
3:12:35 It you're not gonna look like the life
3:12:37 of an Olympic athlete who's singular focus.
3:12:40 There's gonna be some acid there in the 20s
3:12:43 or there's going to be a several detours, which the true greats.
3:12:50 There's gonna be detours.
3:12:51 And sometimes they're not gonna be Steve Jobs asset type of situation.
3:12:55 There'll be just different companies you've worked for different careers
3:12:59 or different sort of efforts you allocated your life to.
3:13:06 But it's gonna be non-linear.
3:13:08 It's not gonna be a singular focus.
3:13:09 The way I think about this sometimes is I want a good bargain on learning.
3:13:14 I can become in the top 5% of whatever
3:13:18 I defined as good at something much, much easier.
3:13:23 Perhaps it's 20 times easier,
3:13:24 100 times easier to get into the top 5% than it is to get into the top 0.1%.
3:13:30 That's almost impossibly hard to get into that.
3:13:32 But if I'm content just being in the top 5%,
3:13:35 I can be in the top 5% on like five things at once.
3:13:38 I can get really good at writing.
3:13:41 I can get decent at driving a race car.
3:13:43 I can become pretty good at programming.
3:13:46 I can run a company.
3:13:47 I can have a family.
3:13:48 I can do a lot of things at the same time.
3:13:50 That gives me sort of that variety that almost
3:13:54 was idealized Karl Marx has this idea, "Oh,
3:13:57 I'm gonna fish in the morning and hammer
3:13:59 in the evening and paint on the weekends, right?" That there's a sense for me
3:14:04 at least where his diagnosis of alienation was true.
3:14:08 That just that tunnel vision.
3:14:09 There's just this one thing I'm just gonna focus
3:14:11 on that gives me a sense of alienation I can't stomach.
3:14:14 When I'm really deep on programming and sometimes I go deep for weeks,
3:14:18 maybe even in a few cases months,
3:14:21 I have to come up for air and I have to go do something else.
3:14:25 Like, all right, that was programming for this year.
3:14:27 I've done my part and I'm gonna go off riding or annoy
3:14:30 people on the internet or drive some race cars to do something else.
3:14:33 And then I can do the programming thing with full intensity again next year.
3:14:38 Speaking of annoying people on the internet, you gotta explain to me this drama.
3:14:41 Okay, so what is this guy that said,
3:14:44 imagine losing to Jira but boasting that you
3:14:47 have a couple million dollars per year.
3:14:49 So this had to do with this almost now a meme decision to leave the cloud.
3:14:55 DHH left the cloud.
3:14:57 I think that's literally a meme, but it's also a fascinating decision.
3:15:03 Can you talk through the full saga of DHH leaves the cloud?
3:15:08 Yes.
3:15:09 Of leaving AWS saving money.
3:15:11 And I guess the case this person is making now.
3:15:14 Is that we wasted our time optimizing a business that could've
3:15:17 been a hundred times bigger if we'd just gone for the moon.
3:15:20 And for the moon includes?
3:15:22 Venture capital.
3:15:23 But also...
3:15:24 And other things in not caring about cost.
3:15:27 But also because AGIs are on the corner,
3:15:29 you should have been investing into AI, right?
3:15:31 Is this just part of?
3:15:33 Sort of tank ginger?
3:15:33 I think it's a bit of a muddy argument,
3:15:35 but if we just take it at it's peak ideal,
3:15:38 which I actually think is a reasonable point,
3:15:41 is that you can get myopically focused on counting
3:15:46 pennies when you should be focused on getting, right?
3:15:49 That I've optimized our spend on infrastructure by getting out
3:15:55 of the cloud and that took some time and I could have taken
3:15:58 that time and spend it on making more features that would've attract
3:16:02 more customers or spend even more time with AI or done other things.
3:16:06 Opportunity cost is real.
3:16:07 I'm not denying that.
3:16:09 I'm pushing back on the idea that for a company
3:16:13 of our size saving $2 million a year on our infrastructure bill,
3:16:19 which is about somewhere between half to two
3:16:22 thirds goes directly to the bottom line,
3:16:25 which means it's return to Jason or I as owners
3:16:27 and our employees part of our profit sharing plan, is totally worth doing.
3:16:34 This idea that costs don't matter is
3:16:37 a very Silicon Valley way of thinking that again,
3:16:40 understand at the scale of something maybe,
3:16:43 but I also actually think it's aesthetically unpleasing.
3:16:49 I find an inefficient business as I find an inefficient program
3:16:54 full of line noise to just be a splinter in my brain.
3:16:58 I hate looking at an expense report and just seeing disproportionate waste.
3:17:04 And when I was looking at our spend at 37signals a while back,
3:17:08 a few years back, I saw bills that did not pass my smell test.
3:17:13 I remembered how much we used to spend on infrastructure before the cloud
3:17:18 and I saw numbers I could not recognize in proportion to what we needed.
3:17:22 The fact that computers had gotten so much faster over time,
3:17:24 shouldn't things be getting cheaper?
3:17:26 Why are we spending more and more money servicing more customers?
3:17:30 Yes, but with much faster computers,
3:17:33 Moore's Law should be lowering the costs and the opposite is happening.
3:17:38 Why is that happening?
3:17:39 And that started a journey of unwinding why the cloud isn't
3:17:45 as great as the deal as people like to think that.
3:17:49 Yeah, can we look at the specifics just for people who don't know the story
3:17:53 and then generalize to what it means about
3:17:57 the role of the cloud and the tech business.
3:17:59 So the specifics is you were using AWS S3 for...
3:18:03 We were using AWS for everything.
3:18:05 HEY.com launched as an entirely cloud app.
3:18:08 It was completely on AWS for compute, for databases, for all of it.
3:18:13 We were using all the systems as they're best prescribed that we should.
3:18:17 Our total cloud bill for Basecamp,
3:18:20 our total spend with AWS was I think 3.2 million or 3.4 million at its peak.
3:18:28 That's kind of a lot of money.
3:18:29 3.4 million, I mean we have a ton of users and customers,
3:18:33 but still that just struck me as unreasonable.
3:18:36 And the reason why it was so unreasonable was because
3:18:39 I had the pitch for the cloud ringing in my ears.
3:18:43 Hey, this is gonna be faster.
3:18:45 This is gonna be easier.
3:18:47 This is gonna be cheaper.
3:18:48 Why are you trying to produce your own power, right?
3:18:51 Like, do you have your own power plant?
3:18:52 Why would you do that?
3:18:53 Leave the computers to the hyperscalers.
3:18:56 They're much better at it anyway.
3:18:58 I actually thought that was a compelling pitch.
3:19:00 I bought in on that pitch for several years and thought, do you know what?
3:19:04 I'm done ever owning a server again.
3:19:06 We are just gonna render our capacity and Amazon is gonna be able to offer us
3:19:11 services much cheaper than we could buy 'em
3:19:14 themselves because they're gonna have these economies of scale.
3:19:17 And I was thinking Jeff's word ringing.
3:19:20 My competitors margin is my opportunity.
3:19:23 That was something he used to drive amazon.com with.
3:19:26 That if he could just make 2% when the other guy was trying to make 4%,
3:19:30 he would end up with all the money.
3:19:31 And on volume, he would still win.
3:19:34 So I thought that was the operating ethos for AWS.
3:19:38 It turns out that's not true at all.
3:19:39 AWS by the way operates its almost 40% margin.
3:19:42 So just in that, there's a clue that competitors are
3:19:46 not able to do the competitive thing we like about capitalism,
3:19:51 which is to lower costs and so forth.
3:19:53 So the cloud pitch in my optics, it's fundamentally false.
3:19:59 It did not get easier first of all.
3:20:02 I dunno if you've used AWS recently, it is hella complicated.
3:20:06 If you think Linux is hard,
3:20:07 you've never tried to set up IAM rules or access parameters or whatever for AWS.
3:20:12 AWS is always difficult.
3:20:14 It was always complicated.
3:20:15 Well, I think it's gotten even more difficult.
3:20:16 But yes, now some of that is it's difficult because it's
3:20:19 very capable and you have a bunch of capacity on tap.
3:20:21 And there are reasons I don't think they're good
3:20:24 enough to justify how complicated the whole jing-a-ma-jing has become.
3:20:29 But what's certainly true is that it's no longer easier.
3:20:32 It's not easier to use AWS than it is to run your own machines,
3:20:37 which we learned when we pulled out
3:20:38 the cloud and didn't hire a single extra person.
3:20:40 Even though we operate all our own hardware, the team stayed exactly the same.
3:20:45 So you have this three-way pitch, right?
3:20:47 It's gonna be easier, it's gonna be cheaper.
3:20:51 Certainly wasn't cheaper.
3:20:52 We've just proved that by cutting our spend
3:20:55 on infrastructure by half to two thirds.
3:20:57 And it's gonna be faster.
3:20:58 The last bit was true,
3:21:00 but way too many people overestimated the value of that speed.
3:21:05 If you need a thousand computers online in the next 15 minutes,
3:21:10 nothing beats the cloud.
3:21:11 How would you even procure that?
3:21:13 If we just need another 20 servers,
3:21:15 it's gonna take a week or two to get boxes shipped
3:21:18 on pallets delivered to a data center and unwrapped and racked,
3:21:22 and all that stuff, right?
3:21:23 But how often do we need to do that?
3:21:25 And how often do we need to do that if buying those servers is way,
3:21:29 way cheaper so we get vastly more compute for the same amount of money.
3:21:33 Could we just buy more servers and not even care about
3:21:36 the fact that we're not hyper optimized on the compute utility?
3:21:39 That we don't have to use things like automatic scaling
3:21:42 to figure things out because we have to reduce costs?
3:21:45 Yes, we can.
3:21:46 So we went through this journey over a realization in early
3:21:53 2023 when I had finally had enough with our bills.
3:21:57 I wanted to get rid of them.
3:21:58 I wanted to spend less money.
3:21:59 I wanted to keep more of the money ourselves.
3:22:02 And in just over six months,
3:22:04 we moved seven major applications out of the cloud in terms
3:22:08 of compute caching databases to works onto our own servers.
3:22:11 A glorious, beautiful new fleet bought from the king of servers,
3:22:17 Michael Dell, who really, by the way, is another icon on my, I
3:22:21 saw he just celebrated 41 years in business.
3:22:23 41 years this man has been selling awesome
3:22:28 servers that we've been using for our entire existence.
3:22:30 But anyway, these pallets arrive in a couple of weeks
3:22:34 and we rack 'em up and get everything going.
3:22:36 And we were out.
3:22:37 At least with the compute part.
3:22:39 We then had a long multi-year commitment to S3 because the only
3:22:44 way to get decent pricing in the cloud, by the way,
3:22:47 is not to buy on a day-to-day basis, not to rent on a database basis,
3:22:52 but to bind yourself up to multi-year contracts with computes often a year.
3:22:57 That was in our case and with storage is was four years.
3:23:00 We signed a four-year contract to store
3:23:03 our petabytes of customer files in the cloud,
3:23:06 to be able to get something just halfway decent affordable.
3:23:09 So all of these projects came together to the sense
3:23:12 that we're now saving literally millions of dollars,
3:23:16 projected about 10 million over five years.
3:23:19 It's always hard.
3:23:20 How do you do the accounting exactly, and TOC this, that and the other thing.
3:23:23 But it's millions of dollars.
3:23:25 But it's not just that.
3:23:27 It's also the fact that getting out of the cloud
3:23:30 meant returning to more of an original idea of the internet.
3:23:35 That the internet was not the sign
3:23:37 such that three computers should run everything.
3:23:40 It was a distributed network such that the individual nodes
3:23:43 could disappear and the whole thing would still carry on.
3:23:46 DARPA had designed this such that the Russians could take
3:23:49 out Washington and they could still fight back from New York,
3:23:52 that the entire communication infrastructure wouldn't disappear
3:23:54 because there was no hub and spoke.
3:23:57 It was a network.
3:23:58 I always found that an immensely beautiful vision.
3:24:01 That you could have this glorious internet
3:24:04 and no single node was in control of everything.
3:24:07 And we've returned to much more of a single
3:24:10 node controlling everything idea with these hyperscalers.
3:24:14 When US-East-1, the main and original region for AWS goes offline,
3:24:20 which has happened more than a few times over the years.
3:24:22 Seemingly a third of the internet is offline.
3:24:25 Like that in itself is just an insult to DARPA's design.
3:24:28 It just detract from the fact that what AWS built was marvelous.
3:24:33 I think the cloud has moved so many things so far forward,
3:24:37 especially around virtualization, automation setup.
3:24:40 It's all those giant forward for system administration that's
3:24:46 allowing us now to be able to run things
3:24:48 on-prem in a way that smells and feels much
3:24:51 like the cloud just at half the cost or less,
3:24:55 and with the autonomy and the satisfaction of owning hardware.
3:24:59 I don't know what the last time you looked at like
3:25:01 an actual server and took it apart and looked inside of it.
3:25:04 These things are gorgeous.
3:25:06 I mean, I posted a couple of pictures of our racks
3:25:09 out in the data center and people always go crazy for 'em
3:25:11 because we've gotten so abstracted from what the underlying metal looks
3:25:15 like in this cloud age that most people have no idea.
3:25:17 They've no idea how powerful a modern CPU is.
3:25:23 They have no idea how much RAM you can fit into a one U rack.
3:25:28 Progress in computing has been really exciting,
3:25:32 especially I'd say in the last four to five
3:25:34 years after TSMC with Apple's help really pushed the envelope.
3:25:38 I mean, we kind of sat still there
3:25:40 for a while while Intel was spinning their wheels going nowhere.
3:25:44 And then TSMC with Apple propelling them really moved things forward.
3:25:48 And now servers are exciting again.
3:25:50 Like you're getting jumps year over year and the 15,
3:25:54 20% rather than the single digit we were stuck with for a while.
3:25:57 And that all means that owning your own hardware
3:26:00 is a more feasible proposition than it's ever been.
3:26:02 That you need fewer machines to run ever more and that more people should do it.
3:26:07 Because as much as I love Jeff and Amazon,
3:26:12 like he doesn't need another whatever,
3:26:14 40% margin on all the tech stuff that I buy to run our business.
3:26:19 And this is just something I've been focused on.
3:26:23 Both because of the ideology around honoring DARPA's original design,
3:26:28 the practicality of running our own hardware, seeing how fast we can push things
3:26:34 with the latest machines and then saving the money.
3:26:38 And that has all been so enjoyable to do,
3:26:42 but also so counterintuitive for a lot of people because it seemed,
3:26:44 I think for a lot of people in the industry
3:26:46 that like we'd all decided that we were done buying computers,
3:26:49 that that was something we would just
3:26:51 delegate to AWS and Azure and Google Cloud,
3:26:55 that we didn't have to own these things anymore.
3:26:57 So I think there's a little bit of whiplash for some people that, "Oh,
3:27:01 I thought we agreed.
3:27:02 We were done with that." And then along come us and say, "Ah, do you know what?
3:27:06 Maybe you should have a computer."- Is there
3:27:08 some pain points to running your own servers?
3:27:10 Oh, plenty.
3:27:10 There's pain points to operating computers of all kind.
3:27:13 Have you tried just like using a personal computer these days?
3:27:16 Half the time when my kids or my wife have a problem,
3:27:19 I go like, have you tried turning it just off and on again.
3:27:22 Computers are inherently painful to humans.
3:27:25 Owning your own computer though kind of makes some of that pain worth it.
3:27:29 There's a responsibility that comes with actually
3:27:31 owning the hardware that to me, at least make the burden of operating
3:27:36 that hardware seem slightly more enjoyable.
3:27:38 Now there are things you have to learn, certainly at our scale too.
3:27:42 I mean, we're not just buying a single computer and plugging into an ethernet.
3:27:45 We have to have racks and racks with them
3:27:47 and you gotta set it up with network cabling
3:27:48 and there is some specialized expertise in that, but it's
3:27:51 not like that expertise is like building nuclear rockets.
3:27:56 It's not like it's not widely distributed.
3:27:58 Literally the entire internet was built on people knowing
3:28:01 how to plug in a computer to the internet, right?
3:28:04 Oh, ethernet cable goes here, power cable goes here, let's boot up Linux.
3:28:07 That's how everyone put anything online until 10,
3:28:11 12 years ago when the cloud sort of took over.
3:28:14 So the expertise is there and can be rediscovered.
3:28:17 You too can learn how to operate a Linux computer.
3:28:21 Yeah, and it's, you know, when you get a bunch of them,
3:28:23 there's a bunch of flashing LEDs and it's just so exciting.
3:28:26 Oh, they're beautiful, calming, amazing.
3:28:28 Computers are really fun.
3:28:29 This is actually something I've gotten into even
3:28:31 deeper after we moved out of the cloud.
3:28:33 Now my next kind of tingle is that if you could move out of the cloud,
3:28:39 can you also move out of the data center?
3:28:41 Personal servers have gotten really scarily
3:28:46 quick and efficient and personal internet connections
3:28:50 rival what we connected data centers with just a decade or two ago.
3:28:57 So there's a whole community around this concept of home lapping,
3:29:01 which is essentially installing server hardware in your own apartment,
3:29:05 connecting it to the internet, and exposing that directly to the internet.
3:29:09 That harks back to those glorious days of the '90s when people building
3:29:14 for the internet would host the actual
3:29:17 website on their actual computer in the closet.
3:29:20 And I'm pretty fired up about that.
3:29:22 I'm doing a bunch of experiments.
3:29:23 I've ordered a bunch of home servers from my own apartment.
3:29:26 I marvel at the fact that I can get a five gigabit,
3:29:29 five connection now, I think,
3:29:31 do you know what five gigabit that could have taken Basecamp
3:29:34 to multiple millions of MRR in the way that back then,
3:29:40 I ran the whole business on a single box
3:29:42 with 2004 technology or probably a hundred megabit cable.
3:29:48 Like the capacity we have access to both in terms
3:29:52 of compute and connectivity is something that people haven't readjusted to.
3:29:57 And this happens sometimes in technology where progress sneaks up on you.
3:30:01 This happened with SSDs.
3:30:03 I love that, by the way.
3:30:04 We designed so much of our technology and storage approach and database
3:30:08 design around spinning metal disks that had certain seek rate properties.
3:30:15 And then we went to NVMe and SSDs,
3:30:18 and it took quite a while for people to realize
3:30:22 that the systems had to be built fundamentally different now.
3:30:25 That the difference between memory and disk was now far smaller when you weren't
3:30:31 spinning these metal plates around with a little head that had to read off them.
3:30:34 You were essentially just dealing with another type of memory.
3:30:38 I think we're a little bit in that same phase when it comes
3:30:40 to the capacity of new businesses to be
3:30:42 launched literally out of your damn bedroom.
3:30:45 So you can get pretty far with a large user based with home labing?
3:30:50 Absolutely.
3:30:50 That's exciting.
3:30:51 That's like the old school.
3:30:53 That's really exciting, right?
3:30:55 It's bringing back the startup in the garage
3:30:57 in the literal physical sense of the word.
3:31:00 Now some of that is do we need to, you can
3:31:04 get relatively cheap cloud capacity if you don't need very much.
3:31:07 Hell yes, we need to.
3:31:08 I mean the feeling of doing that by yourself
3:31:11 of seeing LED lights in your own home.
3:31:16 I mean there's nothing like that.
3:31:17 There's just an aesthetic to it that I am completely
3:31:19 in love with and I wanna try to push on.
3:31:21 Now it's not gonna be the same thing as getting out of the cloud.
3:31:23 I'm not sure our exit out of the cloud was not the exit out of the data center.
3:31:27 We basically just bought hardware, shipped it to a professionally managed data
3:31:30 center that we didn't even actually touch.
3:31:33 This is the other misconception people have about moving out of the cloud.
3:31:36 That we have a bunch of people who are constantly driving
3:31:39 to a data center somewhere to rack new boxes and change dead RAM.
3:31:43 That's not how things happen in the modern world at all.
3:31:45 We have a company called Summit, previously Deft,
3:31:50 that is what we call white gloves.
3:31:52 They work in the data center when we need something like, "Hey Deft,
3:31:56 can you go down and swap the dead SSD in box number six?" They do it.
3:32:01 And what we see is akin to what someone working with the cloud would see.
3:32:05 You see IP addresses coming online.
3:32:07 You see drives coming online.
3:32:09 It's not that different,
3:32:10 but it is a whole heck of a lot cheaper when you are operating at our scale.
3:32:15 And of course it is.
3:32:16 Of course it's cheaper to own things if you need
3:32:19 those things for years rather than it is to rent it.
3:32:22 In no other domain would we confuse those two things that it's
3:32:26 cheaper to own for the long duration than it is to rent.
3:32:29 There is some gray area,
3:32:30 like I've gotten a chance to interact with the xAI team a bunch.
3:32:33 I'm probably going back out there in Memphis
3:32:36 to do a big podcast associated with the Grok release.
3:32:39 And those folks, in order to achieve the speed of building up the cluster
3:32:45 and to solve some of the novel aspects that have to do with the GPU,
3:32:49 with the training, they have to be a little bit more hands on.
3:32:52 It's a less white glove.
3:32:54 Oh, and I love that, right?
3:32:55 They're dealing with a frontier problem and they're dealing with it not
3:32:58 by renting a bunch of GPUs at a huge markup from their main competitor.
3:33:02 They're going like, "No, screw that.
3:33:04 We're gonna put a hundred thousand GPUs in our own tents," right?
3:33:07 And build it in absolute record time.
3:33:09 So I think if anything, this is testament to the idea that owning hardware
3:33:13 can give you an advantage both at the small scale,
3:33:16 at the medium scale and at the pioneer levels of computing.
3:33:19 By the way, you know, speaking of teams,
3:33:21 that those are xAI, Tesla are large companies, but all those folks,
3:33:30 I don't know what it is about,
3:33:31 you said Jeff is really good at finding good people,
3:33:36 at seeing strength in people.
3:33:39 Like Elon is also extremely, I don't know what that is.
3:33:42 Actually, I've never actually seen, maybe you could speak to that.
3:33:45 He's good at finding greatness.
3:33:48 I don't think he's finding as much as he's attracting.
3:33:51 He's attracting the talent because of the audacious
3:33:55 of his goals and his mission.
3:33:57 The clarity by which he states it.
3:34:00 He doesn't have to go scour the earth to find the best people.
3:34:03 The best people come to him because he is,
3:34:05 talking about Elon here, one of the singular most invigorating figures.
3:34:11 In both the same order of the universe here, haters and lovers, right?
3:34:15 Like he's having such an impact at such a scale
3:34:17 that of course he's gotta have literally millions of people think
3:34:20 he's the worst person in the world and he's also gonna
3:34:24 have millions of people thinking he's the greatest gift to humanity.
3:34:27 Depending on the day.
3:34:29 I'm somewhere in between.
3:34:29 But I'm more on the greatest gift to humanity end
3:34:32 of the scale than I'm on the other end of the scale.
3:34:34 And I think that really inspires people in a way that we've almost
3:34:40 forgotten that that level of audacity is so rare that when we see it,
3:34:46 we don't fully know how to analyze it.
3:34:48 We think of Elon as finding great talent and I'm sure he is also good at that.
3:34:52 But I also think that this beacon of the mission, we're going to fucking Mars.
3:34:58 We're gonna transform transportation into using electricity.
3:35:03 We're gonna cover the earth in internet is so grand
3:35:07 that there are days where I wake up and go like,
3:35:10 what the fuck am I doing with these to-do lists?
3:35:12 Like Jesus, should I go sign up for something like that?
3:35:16 Yeah, that sounds invigorating in a sense.
3:35:19 I can only imagine like a biking back in 10,
3:35:22 50 going like, should we go to Normandy?
3:35:25 You may die along the way, but oh boy,
3:35:28 does that sound like a journey and an adventure.
3:35:31 There's a few components.
3:35:31 There's one definitely this bigger than life mission and really believing it.
3:35:37 You know, every other sentence is about Mars, like really believing it.
3:35:41 It doesn't really matter what, like anybody else, the criticism, anything.
3:35:44 There's a very singular focused big mission.
3:35:49 But I think it also has to do a bunch of the other components.
3:35:53 Like being able to hire well once the people, once the beacon attracts.
3:35:58 And I've just seen people that don't necessarily
3:36:02 on paper have a resume with the track record.
3:36:05 I've seen really who now turned out to be like legendary people.
3:36:11 He basically like tosses 'em the ball of leadership.
3:36:13 Sees something in them and says like,
3:36:16 "You go." And gives them the ownership and they run with it.
3:36:19 And that happens at every scale.
3:36:21 That there's a real meritocracy.
3:36:23 And like there's something, there's just like,
3:36:28 you could see the flourishing of human intellect in these meetings,
3:36:31 in these group getting together where they're like, the energy is palpable.
3:36:37 It's like exciting for me to just be around that.
3:36:41 There's not many companies I've seen that in because
3:36:44 when a company becomes successful and larger, it somehow suffocates that energy.
3:36:50 I guess you see in startups at the early stages.
3:36:55 But like it's cool to see it at a large
3:36:58 company that's actually able to achieve scale, you know?
3:37:02 I think part of the secret there is that Elon actually knows things.
3:37:07 And when you know things, you can evaluate the quality of work products.
3:37:12 And when you can evaluate the quality of work products,
3:37:14 you can very quickly tell who's full of shit
3:37:17 and who will actually take you to Mars.
3:37:19 And you can fire the people who's full of shit
3:37:21 and you can bet on the people who get us to Mars.
3:37:23 That capacity to directly evaluate the competency of individuals,
3:37:30 it's actually a little bit rare.
3:37:32 It's not widely distributed amongst managers, hiring managers.
3:37:38 It's not something you can easily delegate to people
3:37:42 who are not very skilled at the work itself.
3:37:45 And Elon obviously knows a lot about a lot
3:37:47 and he can smell who knows stuff for real.
3:37:51 And is this at our tiny scale,
3:37:55 something I've tried to do in the same order where when we hire programmers,
3:37:59 for example, it's gonna be interesting now with AI as the new challenge.
3:38:03 But up until this point,
3:38:05 the main pivot point for getting hired was not your resume,
3:38:09 was not the schooling you've had, it was not your grades, was not your pedigree,
3:38:14 it was how well you did on two things.
3:38:17 A, your cover letter.
3:38:19 Because I can only work with people remotely if they're good writers.
3:38:22 So if you can't pen a proper capital letter and can't bother
3:38:25 to put in the effort to write it specifically for us, you're out.
3:38:29 Two, you have to be able to program really well
3:38:33 to the degree that I can look at your code and go like,
3:38:36 yeah, I wanna work with that person.
3:38:37 Not only I wanna work with that person,
3:38:39 I wanna work on that person's code when I have
3:38:41 to see it again in five years to fix some damn bug.
3:38:44 So we're gonna give you a programming test that simulates the way
3:38:48 we work for real and we're gonna see how you do.
3:38:51 And I've been surprised time and again where
3:38:53 I thought for sure this candidate is a shoe-in, they sound just right,
3:38:58 the CV is just right and then you see the code getting turned in.
3:39:02 I'm like, no way.
3:39:03 No way are we hiring this person.
3:39:05 And the other way has been true as well.
3:39:08 I've go like, I don't know about this guy or this woman.
3:39:11 Eh, I dunno.
3:39:13 And then they turn in their coach stuff and I'm like,
3:39:16 holy shit, can that person be on my team tomorrow, preferably?
3:39:19 The capacity to evaluate work product is a superpower when it comes to hiring.
3:39:24 There's a step that I've seen Elon do really well,
3:39:26 which is be able to show up and say, this can be done simpler.
3:39:31 [DHH] Yes.
3:39:32 But he knows what he's talking about.
3:39:33 And then the engineer, because Elon knows enough,
3:39:38 the engineer who's first reaction, you can kind of tell like,
3:39:42 it's almost like rolling your eyes if your parent tells you something.
3:39:46 This is not, no, we've I've been working on this for a month, you don't...
3:39:51 But then when you have that conversation a little more,
3:39:53 you realize no, it can be done simpler.
3:39:56 Find the way.
3:39:58 So there's a good, when two engineers are talking,
3:40:01 one might not have perfect information.
3:40:03 But if the senior engineer has like
3:40:07 good instinct that's like been battle earned, then you can say simplify.
3:40:13 And it actually will result in simplification.
3:40:17 And I think this is the hallmark of the true greats.
3:40:20 That they not only have the insight into what's required to do the work,
3:40:25 but they also have the transcendent vision
3:40:29 to go beyond what the engineer would do, the programmer would do.
3:40:34 I think if we are looking at these rarities,
3:40:36 obviously the myth of Steve Jobs was also this.
3:40:41 Even though perhaps he was less technical than Elon is in many ways,
3:40:46 he had the same capacity to show up to a product
3:40:49 team and really challenge them to look harder for the simplification
3:40:53 or for making things greater in a way that would
3:40:57 garner disbelief from the people who are supposed to do it.
3:41:00 Like this guy is full of shit.
3:41:01 Like this is crazy.
3:41:03 We can never, and then two months later it is.
3:41:05 So there is something of this where you need the vision,
3:41:10 you need it anchored by the reality of knowing enough about what's possible,
3:41:15 knowing enough about physics, knowing enough about software,
3:41:18 that you're not just building bullshit.
3:41:20 There are plenty of people who can tell a group of engineers.
3:41:22 No, just do it faster.
3:41:24 Like that's not a skill.
3:41:25 It's gotta be anchored in something real,
3:41:28 but it's also gonna be anchored in, it's a tired word,
3:41:33 but a passion for the outcome to a degree where
3:41:36 you get personally insulted if a bad job is done.
3:41:39 This is what I've been writing about lately with Apple.
3:41:42 They've lost that asshole who would show up
3:41:46 and tell engineers that what they did was not
3:41:49 good enough in ways that would actually perhaps
3:41:52 make them feel a little small in the moment,
3:41:55 but would spark that zest to really fix it.
3:42:00 Now they have a logistics person who's very good
3:42:04 at sourcing components and lining up production Gantt charts,
3:42:09 but you're not getting that magic.
3:42:12 Now what's interesting with that whole scenario
3:42:14 was I actually thought how well Tim Cook
3:42:17 ran things and has run things at Apple for so long that maybe we were wrong.
3:42:22 Maybe we were wrong about the criticality of Steve Jobs to the whole mission.
3:42:27 Maybe you could get away with not having it.
3:42:29 I think the bill was going to come later and now it has.
3:42:33 Apple is failing in all these ways that someone who would
3:42:37 blow up Steve's ghost and really insult him would say like, see?
3:42:42 This is what's happening now.
3:42:44 So the other thing here too, of course, is it's impossible to divorce.
3:42:47 Like your perception of what's a critical component of the system and the messy
3:42:53 reality of a million different moving parts in the reality of life.
3:42:57 And you should be skeptical about your own
3:42:59 analysis and your own thesis at all time.
3:43:02 Since you mentioned Apple,
3:43:03 I have to ask somebody in the internet submitted the question.
3:43:10 Does DHH still hate Apple?
3:43:12 I believe the question is.
3:43:14 So there was a time when Basecamp went to war with Apple over the 30%.
3:43:22 Can you tell the saga of that battle?
3:43:26 Yes, but first I'll tell you, I fell in love with Apple,
3:43:29 which was all the way back in also early 2000s when Microsoft was dominating
3:43:35 the industry in a way we now see Apple and Google dominate mobile phones.
3:43:43 Microsoft was just everything when it came to personal computers,
3:43:45 and I really did not like the Microsoft of the '90s.
3:43:48 The Microsoft of the '90s was the cutoff
3:43:51 the air supply to Netscape kind of characters was
3:43:55 the Bill Gates sitting defiant in an interview
3:43:58 with the DOJ asking about what the definition of what is.
3:44:03 And just overall unpleasant, I think.
3:44:06 You can have respect for what was achieved, but I certainly didn't like it.
3:44:10 And as we've talked about, I came begrudgingly to the PC after Commodore fell
3:44:15 apart and I couldn't continue to use the Amiga.
3:44:17 So I already had a bit of a bone to pick
3:44:21 with PCs just over the fact that I love my Amiga so much.
3:44:23 But then in the early 2000s,
3:44:25 Apple emerged as a credible alternative because they
3:44:29 bet the new generation of Macs on Unix underpinnings.
3:44:33 And that allowed me to escape from Microsoft,
3:44:37 and suddenly I became one of the biggest boosters of Apple.
3:44:41 I was in my graduating class at the Copenhagen Business School.
3:44:46 I started with the first white iBook, first person using Mac.
3:44:51 And by the time we were done in graduating,
3:44:52 I had basically converted half the class to using Apple computers,
3:44:57 'cause I would evangelize them so hard and demonstrate them
3:45:00 and do all the things that a super fan would do.
3:45:03 And I continued that work over many years.
3:45:07 Jason or I actually in I think 2004, 2005, did an ad for Apple that they posted
3:45:13 on the developer side where we were all about like Apple
3:45:15 is so integral to everything that we do and we
3:45:17 look up to them and we are inspired by them.
3:45:20 And that love relationship actually continued for a very long time.
3:45:24 I basically just became a Mac person for 20 years.
3:45:29 I didn't even care about looking at PCs.
3:45:32 It seemed irrelevant to me, whatever Microsoft was doing,
3:45:36 which felt like such a relief.
3:45:37 Because in the '90s,
3:45:39 I felt like I couldn't escape Microsoft and suddenly I had found my escape.
3:45:42 And now I was with Apple and it was glorious and they shared
3:45:45 so many of my sensibilities and my aesthetics
3:45:47 and they kept pushing the envelope,
3:45:48 and there was so much to be proud of, so much to look up to.
3:45:53 And then that sort of started to change with the iPhone,
3:45:56 which is weird because the iPhone is what made modern Apple.
3:46:00 It's what I lined up in 2007 together
3:46:03 with Jason for five hours to stand in the line
3:46:07 to buy a first generation product where Apple staff
3:46:11 would clap at you when you walked out the store.
3:46:14 I don't know if you remember that.
3:46:16 It was a whole ceremony and it was part
3:46:18 of that myth and mystique and awe of Apple.
3:46:22 So I wasn't in the market for other computers.
3:46:25 I wasn't in the market for other computer ideas.
3:46:27 I thought perhaps I'd be with the Mac until the end of days.
3:46:31 But as Apple discovered the gold mine,
3:46:35 it is to operate a toll booth where you don't have to innovate,
3:46:39 where you don't actually even have to make anything,
3:46:41 where you can just take 30% of other people's business.
3:46:44 There was a rot that crept into the foundation of Apple and that started
3:46:51 all the way back from the initial launch of the app store.
3:46:55 But I don't think we saw at the time, I didn't see at the time just how critical
3:46:59 the mobile phone would become to computing in general.
3:47:03 I thought when the iPhone came out that like, oh, it's like a mobile phone.
3:47:06 I've had a mobile phone since the early '90s.
3:47:08 Well, it wasn't a mobile phone.
3:47:09 It was a mobile computer.
3:47:11 And even more than that, it was the most important computer or it
3:47:15 would become the most important computer for most people around the world.
3:47:18 Which meant that if you liked to make software and wanted to sell it to people,
3:47:22 you had to go through that computer.
3:47:24 And if going through that computer meant going through Apple's
3:47:28 toll booth and not just having to ask them permission,
3:47:32 which in and of itself was just an dignity.
3:47:36 When you're used to the internet where you
3:47:37 don't have to ask anyone permission about anything,
3:47:39 you buy a domain and you launch a business and if customers show up,
3:47:44 boom, you're success.
3:47:45 And if they don't, well you're a failure.
3:47:47 Now suddenly before you could even launch,
3:47:50 you'd have to ask Apple for permission.
3:47:52 That always sat wrong with me.
3:47:54 But it wasn't until we launched HEY in 2001 that I saw
3:48:01 the full extent of the rot that has snug into Apple's apple.
3:48:05 For people who don't know and we'll talk about it,
3:48:07 HEY is this amazing email sort of attempt to solve the email problem.
3:48:14 Yes, I like to pitch it as what Gmail would've been with 20
3:48:19 years of lessons applied in a way where they could actually ship.
3:48:23 Gmail was incredible when it launched in 2004.
3:48:26 And it still is a great product but it's also trapped in its initial success.
3:48:32 You can't redesign Gmail today, it just has way too many users.
3:48:35 So if you want fresh thinking on email, I wanted fresh thinking on email.
3:48:40 I needed to build my own email system.
3:48:42 And not just my own email client.
3:48:44 That's what a lot of people have done over the years.
3:48:46 They build a client for Gmail,
3:48:47 but you're severely constrained if you don't control the email server as well.
3:48:52 If you really wanna move the ball forward with email,
3:48:54 you have to control both the server and the client.
3:48:56 And that was the audacious mission we set out to do with HEY.
3:49:00 And that was what's funny, I thought our main obstacle here would be Gmail.
3:49:05 It's the 800 pound gorilla in the email space.
3:49:08 Something like 70% of all email in the US is sent through Gmail.
3:49:14 I think their world rates are probably in that neighborhood as well.
3:49:17 They're just absolutely huge and trying to attack an enormous established
3:49:24 competitor like that who's so actually still loved by plenty of people.
3:49:31 And is free seems like a suicide mission.
3:49:34 And it was only a mission we signed up for because we had grown ambitious
3:49:38 enough after making Basecamp for 20 years
3:49:40 that we thought we could tackle that problem.
3:49:42 So I thought, hey, this is dumb.
3:49:45 I would not advise anyone to go head to head with Gmail.
3:49:49 That seems like a suicide mission.
3:49:51 We're gonna try anyway, because you know what?
3:49:53 If we fail it's gonna be fine.
3:49:54 We're just gonna build a better email experience for me
3:49:57 and Jason and the people at the company and our cat,
3:50:00 and that'll be okay 'cause we're gonna afford to do so.
3:50:03 But when we got ready to launch, after spending two years building this product,
3:50:08 millions of dollars in investment to it.
3:50:10 We obviously needed mobile apps.
3:50:12 You're not gonna be a serious contender with email if you're not
3:50:16 on a mobile phone and you need to be there with a native client.
3:50:18 So we had built a great native client for both iOS and for Android.
3:50:22 And as we were getting ready to launch,
3:50:24 we submitted both of them to the app stores,
3:50:26 got both of them approved on I think Friday afternoon for the iOS app.
3:50:31 And we then went live on Monday.
3:50:34 And we were so excited.
3:50:36 Hey world, we've been working on this new thing,
3:50:39 I'd love for you to check it out.
3:50:41 And of course as with anything,
3:50:43 when you launch a new product, there are some bugs.
3:50:44 So we quickly found a few in the iOS client and submitted a new build to Apple.
3:50:49 Hey, here's our bug faces, can you please update?
3:50:51 And that's when on help broke loose.
3:50:56 Not only were they not gonna prove our update, they said, oh wait a minute,
3:51:01 we gave you permission to be in the app store, but I'm sorry that was a mistake.
3:51:05 We see that you're not using our in-app payment system,
3:51:08 which means that we don't get 30% of your business.
3:51:12 You will have to rectify that or you can't be in the app store.
3:51:16 And first I thought like, well it got approved already.
3:51:19 We're running on the same model.
3:51:21 We've run Basecamp on in the app store for a decade.
3:51:24 If you're not signing up through the app and we're signing up our own customers
3:51:28 on our own website and they're just going
3:51:30 to the app store to download their companion app, we're gonna be fine.
3:51:34 That was the truth, right?
3:51:35 That was why I never got so fired up about the app store.
3:51:38 Even as Apple started tightening the screws was like my business was okay.
3:51:42 Now suddenly my business wasn't okay.
3:51:44 Apple was willing to destroy HEY if we did not agree to give
3:51:50 them 30% of all the signups that came through the iOS app.
3:51:54 And it wasn't just about the 30%.
3:51:56 It was also about splitting and not
3:51:59 longer having a direct relationship with our customers.
3:52:02 When you sell an app in the app store, you're not selling an app to a customer.
3:52:07 You're selling an app to inventory at Apple,
3:52:10 and then Apple sells an app to that customer.
3:52:12 That customer has a purchasing relationship with Apple.
3:52:16 So if you wanna give discounts or refunds or whatever, it's complete hell.
3:52:21 If you want to easily support multi-platform that's complete hell if someone
3:52:26 signs up for HEY on their iPhone and they wanna switch to Android.
3:52:30 But that billing relationship, it's tied to Apple, it's complete hell.
3:52:34 For a million reasons, I did not want to hand my business over to Apple.
3:52:38 I did not want to hand 30% of our revenue over to Apple.
3:52:41 So we decided to do something that seemingly Apple had never heard before.
3:52:45 We said no, we're not gonna add the in-app payment.
3:52:51 I don't care if you're threatening us.
3:52:54 this is not fair, this is not reasonable, please approve.
3:52:59 And of course they didn't and it escalated.
3:53:02 And after a couple of days we realized, you know what?
3:53:05 This isn't a mistake.
3:53:07 This isn't going away.
3:53:08 We're gonna be dead if they go through with this.
3:53:11 If we're not gonna yield and give them the 30%,
3:53:15 they're gonna kick us off unless we make such
3:53:19 a racket such noise that they will regret it.
3:53:24 And that's exactly what then happened.
3:53:26 We were blessed by the fact that we launched HEY one week before the WWDC,
3:53:32 their Worldwide Developer Conference.
3:53:34 Where Apple loves to get up on stage
3:53:36 and harp on how much they do for developers,
3:53:38 how much they love them and why you should bill
3:53:41 for their new devices and so on and so forth.
3:53:43 And then we also just happened to have a platform on the internet,
3:53:46 which is very convenient when you need to go to war with a $3 trillion company.
3:53:52 So I started kicking and screaming- Oh boy.
3:53:55 And essentially turning it up to 11 in terms of the fight
3:53:59 and going public with our or denial to be in the app store.
3:54:05 And that turned into a prolonged two week battle with Apple that essentially
3:54:09 ended in the best possible outcome we
3:54:12 could have gotten as David fighting Goliath, which was a bit of a truce.
3:54:16 We wouldn't hand 30% over to Apple.
3:54:19 They do wouldn't kick us out of the app store,
3:54:21 but we had to build some bullshit dummy account
3:54:25 such that the app did something when you downloaded it.
3:54:28 That was a rule that Phil Schiller seemingly made
3:54:31 up on the fly when pressed for the fifth time
3:54:34 by the media about why we couldn't be
3:54:35 in the app store when a million other companion apps could.
3:54:39 But we just happened to be able to create so much pain and noise for Apple
3:54:43 that it was easier for them to just let us be than to keep on fighting.
3:54:48 What do you think about Tim Sweeney's victory with Epic over Apple?
3:54:54 I think it is incredible and the entire developer ecosystem.
3:55:00 Not just on iOS but on Android as well, owe Epic, Tim Sweeney and Mark Rein,
3:55:07 an enormous debt of gratitude for taking on the only battle that has ever
3:55:14 inflicted a series wound on Apple
3:55:16 in this entire sorted campaign of monopoly enforcement.
3:55:20 And that is Epic's fight versus them.
3:55:24 Tim recently revealed that it has cost well over a hundred
3:55:28 million dollars in legal fees to carry on this battle against Apple.
3:55:33 We, for a hot moment,
3:55:34 considered suing Apple when they were threatening to kick us out.
3:55:37 We shopped the case around with a few law firms and perhaps
3:55:41 of course they would tell us you have a good case.
3:55:44 I mean they're trying to sell a product here, but they would also tell us.
3:55:48 It's gonna cost a minimum of $10 million and it's
3:55:51 gonna take five to seven years through all the appeals.
3:55:54 Now we now learned the actual price tag was 10 times higher, right?
3:55:58 Epic spend over 100 million.
3:56:00 It would've destroyed us to take on Apple in the legal realm.
3:56:04 Only a company like Epic could do it
3:56:07 and only a company run by founders Like Tim,
3:56:12 like Mark could risk the business in the way that they did,
3:56:17 the audacity they had to provoke the fight in the first place,
3:56:20 which I thought was just incredible.
3:56:22 And to stick with it for the long term,
3:56:25 no board would've signed off on this lawsuit
3:56:28 to a professional CEO, no freaking way.
3:56:31 So the fact that they've been able to beat
3:56:34 Apple in also the most hilarious way possible, I think it's just incredible.
3:56:40 'Cause remember their first victory in the case
3:56:43 was actually not much of a victory.
3:56:45 There were about 11 counts in the trial.
3:56:49 Apple basically won 10 of them and the judge
3:56:53 awarded Epic this one little win that Apple
3:56:57 couldn't tell 'em not to link out to the internet
3:57:01 to be able to do the payment processing.
3:57:04 So they won this one little thing.
3:57:05 And Apple, instead of just taking the 10 out of 11 wins and going fine,
3:57:10 you can have your little links but all these other rules stay in place decided
3:57:14 to essentially commit criminal contempt of court
3:57:18 as they've now been referred to for prosecution
3:57:23 and angered the judge to such a degree that the rule of law
3:57:28 in the US now is that you can launch an app in the app store.
3:57:32 And you don't have to use in-app payment,
3:57:34 but you can have a direct billing relationship
3:57:36 with a customer if you just link out
3:57:38 to the open internet when you take the credit
3:57:40 card and then hop back into the app.
3:57:42 And we owe all of that to Tim and Mark.
3:57:45 We owe all of that to Epic.
3:57:46 We're gonna launch new apps any minute now,
3:57:49 I hope actually next week to take advantage of this that revamp
3:57:53 the hey apps so that people who download the Hey app off the Apple
3:57:57 app store can sign up in the app and can then use the web
3:58:02 to put in their credit card so we don't have to pay 30%.
3:58:04 Instead we have a direct billing relationship and such
3:58:07 that they can take that subscription to Android,
3:58:10 to PCs, whatever without any hassle.
3:58:13 And we have Tim and Mark to thank for it.
3:58:16 Yeah, Tim, I mean, like you said founders but also specific kind of founders.
3:58:20 'Cause I think maybe you can educate me
3:58:22 on this, but Tim is somebody who maintains.
3:58:27 to this day sort of the unreasonableness of principles.
3:58:31 Yes, that's what I love.
3:58:33 I think sometimes maybe even with founders you can get worn down.
3:58:36 It's a large company.
3:58:38 There's a lot of smart, quote, unquote,
3:58:39 people around you lawyers and just whispering
3:58:42 your ear over time and you're like,
3:58:44 well just be reasonable being a, you know, this is a different thing.
3:58:47 And to be the sort of maintain, I mean Steve Jobs did this.
3:58:53 Still are the asshole.
3:58:56 Who' says, "No, I'll sink this whole fucking company over
3:59:02 this."- That's the exact language basically I used in our original campaign.
3:59:07 I will burn this business down before I hand over 30% of it to Apple.
3:59:13 And that sort of indignation,
3:59:14 that actual rage is something I try to be a little careful
3:59:18 about tapping into because it is a little bit of a volatile compound.
3:59:22 Because I mean I have a bunch of employees, we have a bunch of customers.
3:59:25 It would be pretty sad if the journey of 37
3:59:28 signals after 25 years would come to an end
3:59:30 because Apple would burn us down or I would
3:59:34 burn the business down over this fight with Apple.
3:59:36 But I think you also need that level of conviction
3:59:39 to be able to even drive the day-to-day decisions.
3:59:42 One of the other Apple examples,
3:59:43 and I know we're racking on Apple a little bit here,
3:59:45 and I don't actually hate them.
3:59:47 I really don't.
3:59:48 I am tremendously disappointed at the squandered relationship that did
3:59:53 not need to be sold away for so little.
3:59:58 Now I understand that the app store
4:00:00 toll booth is actually a pretty big business.
4:00:02 It's multiple billions, but Apple is a trillion dollar company.
4:00:06 And I think in the lens of history,
4:00:08 this is gonna come off as a tremendous mistake
4:00:10 and I think it's already coming off as a tremendous mistake.
4:00:13 The flop that was the Vision Pro was
4:00:16 partly because Apple had pissed off every other developer.
4:00:20 No one was eager to come build the kind of experiences
4:00:24 for their new hardware that would perhaps have made it a success.
4:00:27 So when you're on top and you have all the cards,
4:00:31 you can dilute yourself into thinking that you can dictate all
4:00:34 terms at all times and there are no long term consequences.
4:00:38 Apple is learning finally, the fact that there are long-term consequences
4:00:42 and that developers actually are important to Apple's business.
4:00:45 And the relationship is not entirely one sided.
4:00:47 We don't owe our existence to Apple and Apple alone.
4:00:51 We've built our own customer bases.
4:00:53 Apple has been beneficial to the industry.
4:00:56 I'm glad the iPhone exists, da da da da.
4:00:59 It's not that it doesn't go both ways, but Apple wants it only one way.
4:01:03 And I think that is a mistake, and it's a mistake that was avoidable.
4:01:09 And A, that's disappointing.
4:01:12 Certainly disappointing for me.
4:01:14 I've literally spent 20 years evangelizing this shit, right?
4:01:17 I've spent so much money buying Apple hardware,
4:01:21 excusing a bunch of things they've done over the years.
4:01:25 And then for what?
4:01:28 For the fact that you wanted 30% of something
4:01:31 that I created in the most unreasonable way possible?
4:01:34 Couldn't we have found a better way to do this?
4:01:37 I think they're going to get forced to do a better way.
4:01:39 But did you also have to go through the indignity
4:01:42 of having a criminal contempt charge
4:01:45 against you getting referred to prosecution?
4:01:48 It just seems so beneath Apple, but it also seems so in line with what
4:01:52 happens to huge companies who are run by, quote,
4:01:56 unquote, "professional managers" rather than founders and unreasonable people.
4:02:01 Well, we should probably also say that the thing you love about Apple,
4:02:05 the great spirit of Apple I think still persists and there's
4:02:09 a case to be made that this 30% thing is a slice,
4:02:12 a particular slice of a company, not a defining aspect of the company.
4:02:17 And that it Apple is still on top in the hardware
4:02:20 that it makes and a lot of things that it makes.
4:02:22 And you know this is, that could be just a hiccup in a long story
4:02:29 of a great company that does a lot of awesome stuff for humanity.
4:02:33 So like Apple is a truly special company.
4:02:36 We mentioned Amazon, there is no company like Apple.
4:02:40 I agree, this is why the disappointment is all greater.
4:02:44 Because we had such high aspirations and expectations
4:02:48 to Apple that they were the shining
4:02:51 city on the hill and they were guiding the industry in a million positive ways.
4:02:57 I think as we talked about earlier, hardware is exciting again in large part
4:03:02 because Apple bought PA Semi and pursued
4:03:06 a against all odds mission to get ARM up to the level it is today.
4:03:13 And we have these incredible M chips now because of it.
4:03:16 And the design sensibilities that Apple bring to the table are unparalleled.
4:03:23 No one has taste certainly at the hardware level like Apple does,
4:03:28 even at the software level.
4:03:29 I'd say there's a lot of taste left in Apple,
4:03:32 but there's also some real sour taste now.
4:03:34 So they have to wash that off first I think before they find their wear back.
4:03:38 But Apple's been in a mirage before,
4:03:41 I mean Wozniak and Steve Jobs started this thing in the garage,
4:03:45 has great success with the Apple II.
4:03:48 He hands the company over to a sugar
4:03:50 drink salesman who tanks the company into the '90s.
4:03:54 He doesn't learn the lesson,
4:03:56 spends the next 20 years building up this amazing company,
4:03:59 then hands the company over again to a logistics person who presumably
4:04:05 had more redeeming qualities than the first guy who put in charge,
4:04:09 but still ends up leading the company astray.
4:04:13 Now this is the norm.
4:04:16 The norm is that great companies don't last forever.
4:04:20 In the long arc of history, almost no company lasts forever.
4:04:24 There are very few companies around that was here 100 years ago,
4:04:28 even fewer 200 years ago.
4:04:30 And virtually nothing that are 1000 years old outside
4:04:32 of a handful of Japanese sorts makers or something like that, right?
4:04:36 So you can get diluted into thinking
4:04:39 that something is forever when you're in the moment.
4:04:41 And they seem so large.
4:04:43 Apple could absolutely stumble and I think they
4:04:46 have more reason to stumble now than ever.
4:04:49 They're behind on AI, terribly behind.
4:04:52 Their software quality is faltering in a bunch of ways.
4:04:56 The competition is catching up on the hardware game
4:04:59 in part because TSMC is not an Apple subsidiary,
4:05:03 but a foundry that services a MD and NVIDIA and others
4:05:07 who are now able to use the same kind of advanced processes.
4:05:10 This is something I learned after not
4:05:12 looking at PC hardware for the longest time,
4:05:14 that holy smokes, AMD actually makes CPUs that are just as fast,
4:05:19 if not faster than apples.
4:05:20 They're not quite as efficient yet because
4:05:22 ARM has some fundamental efficiencies over x86, but they're still pretty good.
4:05:27 So Apple should have reason to worry.
4:05:30 Apple's shareholders should have reason to be concerned.
4:05:33 Not just about all these stumbles,
4:05:36 but also by the fact that Apple is run by old people.
4:05:40 Apple's board has an average age of, I think, 75.
4:05:45 Their entire executive team is above 60.
4:05:48 Now that sounds horribly ageist.
4:05:52 And in some ways, it a little bit is.
4:05:54 In the same way, I'm ageist against myself.
4:05:57 Like I'm 45 now and I sort of kind of have
4:06:01 to force myself to really get into AI because it is such
4:06:04 a paradigm shift and a lot of people when they reach
4:06:07 a certain age are just happy to stay with what they know.
4:06:11 They don't wanna go back to being a beginner.
4:06:12 They don't wanna go back to having to relearn everything.
4:06:16 And I think like, ah, this is a little hard for me at 45.
4:06:19 How the hell do you do that at 75?
4:06:22 I have to come back to, you mentioned it earlier, you're a parent.
4:06:27 Can you speak to the impact that becoming a father has had on your life?
4:06:32 I think what's funny about fatherhood is that for me,
4:06:35 I wasn't even sure it's something I wanted.
4:06:38 It took meeting the right woman and letting her convince me
4:06:45 That this was the right idea before we even got started.
4:06:50 I didn't have starting my own family on the list
4:06:54 of priorities in my late 20s or even early 30s.
4:06:59 It was really the impetus of meeting my wife
4:07:03 Jamie and her telling me this is what I want.
4:07:07 I wanna have a family.
4:07:09 I wanna get married.
4:07:10 I wanna have kids.
4:07:11 I wanna have three.
4:07:12 And me going for a second like whoa, whoa, whoa.
4:07:19 And then eh, all right, let's do it.
4:07:24 And I think that's the kind of happy accident
4:07:28 where some parts of my life have been very driven,
4:07:31 where I knew exactly what I wanted and how to push
4:07:34 forward to it and what the payoff was going to be.
4:07:37 But when it comes to having a family,
4:07:40 that always felt like a very fuzzy abstract idea that sure, someday, maybe.
4:07:48 And then it became very concrete because I met a woman who knew what she wanted.
4:07:55 And looking back on it now, it almost seems crazy.
4:08:02 Like there's this fork in the road of reality.
4:08:05 Where if that hadn't happened and I had been sitting here now,
4:08:09 not being a father, not having a family,
4:08:13 the level of regret knowing what I know now about
4:08:18 the joys of having that family would've been existential, would've been...
4:08:27 I don't know if they would've been devastating.
4:08:29 I think men have a little bit of a longer
4:08:31 window to pursue these things than women do.
4:08:35 There are just certain biological facts.
4:08:38 But ending up with the family I have now,
4:08:42 ending up with my three boys have been just a transformative experience
4:08:48 in the sense that here's something that turned
4:08:50 out to be the most important thing.
4:08:53 And it was an open secret.
4:08:55 Not even an open secret.
4:08:56 It was an open truth through all of history.
4:08:59 You listen to anyone who's ever had children, they will all say,
4:09:02 "My children are the most important to me." Yet somehow
4:09:05 that wisdom couldn't sink in until you were in the situation yourself.
4:09:09 I find those truths fascinating when you can't actually relay them with words.
4:09:16 I can tell you, Hey Lex, what are you doing?
4:09:20 Get a wife, make some kids, get a move on it.
4:09:23 And these are just words.
4:09:25 They're not communicating the gravity of what
4:09:27 it actually feels to go through the experience.
4:09:29 And you can't really learn it without going through it.
4:09:32 Now of course you could be influenced and whatever,
4:09:35 we can all help contribute and little sparks and little
4:09:38 seeds can grow in your your mind about it.
4:09:40 But it still has to happen.
4:09:42 And now that I am in this situation and just the sheer joy on a daily
4:09:50 basis where you think your level of life
4:09:54 satisfaction is on a scale of one to 10,
4:09:56 and then the satisfaction of seeing your children understand something,
4:10:01 accomplish something, learn something, do something, just be.
4:10:07 Just goes like, oh my god, the scale doesn't go from one to 10.
4:10:10 It goes from one to 100.
4:10:12 And I've been playing down here in the one to 10 range all this time.
4:10:16 And there's a one to 100 that has been humbling
4:10:22 in a way that is impactful in and of itself.
4:10:26 This whole idea that I thought I had a fair
4:10:31 understanding of like the boundaries of life in my early 30s,
4:10:35 like what is this about?
4:10:36 I mean, I've been on this earth long enough now here to know something.
4:10:39 And you realize, I don't know, I did not know.
4:10:41 I did not know that the scale was much broader.
4:10:46 And I've often talked about joys of having kids and just seeing your own DNA,
4:10:53 which is remarkable to me because literally that's been
4:10:58 the pursuit of humans since the dawn of time.
4:11:00 I am here today because whatever, 30,000 years ago,
4:11:04 some Neanderthal had the same realization that I
4:11:08 should procreate and I should continue my bloodline.
4:11:11 And that that all amounts to me sitting here now.
4:11:15 But it didn't become a practical reality to me before meeting the right woman.
4:11:21 And I think that that's sometimes not
4:11:24 part of the conversation enough that there's
4:11:27 something broken at the moment about how people pair up in the western world.
4:11:33 And it's at the source of why we're
4:11:35 not having enough children because there's not enough couples,
4:11:38 there's not enough marriage.
4:11:40 There's not a lot of these...
4:11:41 There's not enough of all these traditional values that even 50,
4:11:45 60, 70 years ago was just taken for granted.
4:11:49 We're in this grand experiment of what happens
4:11:53 if we just remove a bunch of institutions?
4:11:56 What happens if we no longer value marriage as a something to aspire to?
4:12:02 What happened if parenthood is now seen in some camps?
4:12:07 It's almost something like weird or against your own self-expression.
4:12:11 It's a grand experiment that I'm kind of curious how it turns out.
4:12:17 I prefer to watch it as a movie like the "Children of Men," I'm like,
4:12:20 that was a good show.
4:12:21 I kind of wish that wasn't reality.
4:12:23 But we're seeing that reality play out while I'm sitting here
4:12:27 in a very traditional two parent loving household with three children,
4:12:33 and going, this is now at the top.
4:12:37 I've done a lot of things in my life.
4:12:39 I've built software, I've built companies,
4:12:43 I've raced cars, I've done all sorts of things,
4:12:45 and I would trade all of it in a heartbeat for my kids.
4:12:49 That's just a really fascinating human experience that the depth
4:12:54 of that bond is something you can't appreciate before you have it.
4:13:00 But I also think there is a role to play, to talk it up.
4:13:05 Because we're being bombarded constantly with reasons why not to.
4:13:11 Oh, it's too expensive.
4:13:14 Well, you could get divorced and then you might lose half.
4:13:17 There's all these voices constantly articulating the case against marriage,
4:13:22 the case against having children that those of us
4:13:27 who've chosen to do the traditional thing to get
4:13:31 married and to have children have an obligation
4:13:34 to kind of talk it up a little bit,
4:13:36 which would've seen ridiculous again 50 years ago that you'd
4:13:39 have to talk up something so fundamental of that.
4:13:42 But I have become kind of obligated in that sense to do just that.
4:13:48 To talk it up, to say, you know what?
4:13:51 You can look at everything that I've done and if you
4:13:54 like some of those parts realize that to me in this situation,
4:14:00 the kids, the family, the wife is more important than all of it.
4:14:03 And it sounds like a cliche because you've heard it a thousand times before.
4:14:07 And by becoming a cliche, maybe you start believing it's not true that it's
4:14:12 just something people say, but it is reality.
4:14:16 I know almost no parents that I have personal relationships with that don't
4:14:20 consider their children to be the most important thing in their life.
4:14:23 So there's a lot of interesting things you said.
4:14:25 So one, it does seem to be, I know a lot of parents, perhaps more interestingly,
4:14:33 I know a lot of super successful people who are parents who really love
4:14:40 their kids and who say that the kids even help them to be more successful.
4:14:46 Now the interesting thing,
4:14:48 speaking to what you're saying is it does seem for us humans,
4:14:52 it's easier to articulate the negatives because they're sort of concrete,
4:14:57 pragmatic, you know, it costs more, it takes some time,
4:15:01 you know, they can be, you know, crying all over the place.
4:15:03 They're, you know, tiny narcissists running around or whatever.
4:15:07 Which is all true.
4:15:08 Yeah, pooping everywhere, that kind of stuff.
4:15:10 But to articulate the thing you were speaking to of there's this little
4:15:16 creature that you love more than anything you've ever loved in your life.
4:15:19 It's hard to convert that into words.
4:15:22 You have to really experience it.
4:15:23 But I believe it and I want to experience
4:15:27 that, but I believe 'cause just from a scientific method,
4:15:31 have seen a lot of people who are not honestly not very capable of love,
4:15:36 fall completely in love with their kids.
4:15:39 Like, you know, very sort of...
4:15:41 let's just call it what it is, engineers that are very like boop bop.
4:15:46 They just fall in love.
4:15:48 And it's like, all right, people who just like you said, they don't really want,
4:15:53 they don't really care or don't really think about having
4:15:56 kids that kind of stuff once they do it changes everything.
4:15:59 So, you know, but it's hard to convert it into words.
4:16:03 One of the reasons I think is also difficult is, I mean, I like kids.
4:16:08 Not that I actively disliked them,
4:16:11 but when I was around other people's kids, I didn't have a emotional reaction.
4:16:15 Some women have, right?
4:16:17 They see a baby and they go, "Oh." I never had any emotion of that.
4:16:21 I mean, I could appreciate, I'm glad for you that you have children.
4:16:24 It did not provoke anything in me.
4:16:27 The emotions that are provoked in me when I look at my own children,
4:16:30 this doesn't exist in the same universe.
4:16:32 So you don't have something, you don't have a complete parallel,
4:16:34 or at least a lot of men, or at least me,
4:16:36 I didn't have sort of a framework to put it
4:16:39 into what would it be like to have my own child?
4:16:41 And then you experience it.
4:16:43 It's like the poof.
4:16:45 And it happens so quickly too.
4:16:47 This is what I found fascinating.
4:16:49 It happens before that little human is even able to return
4:16:53 any words to you that the love you develop to an infant,
4:16:59 it happens quite quickly.
4:17:01 Not necessarily immediately, I don't know,
4:17:04 different people have different experiences, but it took me a little bit.
4:17:07 But then once it hit, it just hit like kick of a horse.
4:17:12 And I love that it's also just such a universal experience.
4:17:17 That you can be the most successful person in the world.
4:17:20 You can be the poorest person in the world.
4:17:21 You can be somewhere in the middle.
4:17:23 And we share this experience that being a parent, for most of them,
4:17:30 turns out to be the most important thing in their life.
4:17:33 But you know, it is really nice to do
4:17:35 that kind of experience with the right partner.
4:17:38 But I think because I'm such an empath,
4:17:40 the cost of having the wrong partner is high for me.
4:17:43 But then I also like realized, man,
4:17:46 I have a friend of mine who's divorced happily
4:17:49 and he still loves the shit out of his kids.
4:17:51 And it's still beautiful.
4:17:53 It's a mess, but there's all of that love is still there and it's,
4:17:56 you know, you just have to make it work.
4:17:59 It's just that, I don't know, that kind of like divorce would destroy me.
4:18:03 You should listen to The School of Life.
4:18:05 He has this great bit on YouTube.
4:18:09 You'll marry the wrong person.
4:18:11 If you accept upfront that you will marry the wrong person,
4:18:14 that every potential person you can marry is
4:18:17 gonna be the wrong person on some dimension.
4:18:19 They're gonna annoy you.
4:18:20 They're gonna be not what you hoped in certain dimensions.
4:18:25 The romantic ideal that everything is just perfect all the time is
4:18:29 not very conducive to the reality of hitching up and get making babies.
4:18:35 Because I think as you just accounted, even when it turns to shit,
4:18:41 I find that most of the people I personally know
4:18:44 where things have fallen apart and have turned to shit,
4:18:47 never in a million years would they go like, "I regret it." "I would rather,
4:18:51 my children did not exist because a relationship turned sour." I mean,
4:18:57 I think you should try very hard.
4:18:59 And I think this is also one
4:19:00 of those things where we didn't fully understand those fences.
4:19:04 And when we pulled them up and celebrated how easy it is to get divorced,
4:19:08 for example, that that wasn't gonna have some negative consequences.
4:19:12 I'm not saying you shouldn't have divorces.
4:19:13 I'm not saying return to times past.
4:19:17 I'm saying though that civilization over thousands
4:19:20 of years developed certain technologies for ensuring
4:19:24 the continuation of its own institutions and its
4:19:28 own life that perhaps we didn't fully appreciate.
4:19:31 I mean, again, this is something Jordan Peterson
4:19:33 and others are far more articulate to speak about,
4:19:36 and that I've learned a lot to just analyze my own situation.
4:19:41 Why is it that this incredible burden,
4:19:43 it is to be responsible for someone else's life that you
4:19:47 brought into this world is also the most rewarding part of existence?
4:19:52 That's just curious.
4:19:54 Before I heard Peterson articulate the value of taking
4:19:58 on the greatest burden you know how to carry,
4:20:02 I always thought about burdens as a negative things.
4:20:05 Why would I want the burden of a child?
4:20:08 I might screw it up.
4:20:09 I might be a bad parent.
4:20:11 They might have bad...
4:20:12 all this stuff, right?
4:20:14 All the reasons why you shouldn't.
4:20:16 And so few voices articulating why you should.
4:20:21 Yeah, but there I should also add on top of that thing you mentioned currently,
4:20:24 perhaps in the west, the matchmaking process is broken.
4:20:28 Is broken and technology made it worse.
4:20:30 Yeah, it's fascinating.
4:20:31 This whole thing that that hasn't been solved.
4:20:35 So hiring great teams, that's probably been solved the best out of matchmaking.
4:20:41 Finding great people to hire.
4:20:44 Second, finding great friends.
4:20:47 That's like, that's also hasn't been solved.
4:20:50 And it's breaking down.
4:20:51 It's breaking down.
4:20:51 And third is matchmaking for like relationships.
4:20:54 That's like the worst.
4:20:56 And in fact, technology made it even worse.
4:20:58 It's fascinating.
4:20:59 It is.
4:21:00 It's a great example again of how all
4:21:03 the greatest intentions still led us straight to hell.
4:21:06 I really enjoyed Louis Perry's analysis
4:21:09 of the sexual revolution not being an unqualified good,
4:21:14 which was something I hadn't thought about at all before she articulated it.
4:21:18 That of course women should be able to have freedom
4:21:23 and self determination and abortions and all of these things.
4:21:26 And Louise Perry is not arguing against that either, of course.
4:21:30 But there are second order facts that we don't appreciate
4:21:34 at the time and we may not have ready-made solutions for.
4:21:38 And that's just interesting.
4:21:40 You make life better in a million different
4:21:43 ways and somehow we end up more miserable.
4:21:45 Why is that?
4:21:46 Why is it that humans find meaning in hardship?
4:21:51 And I think some of that is
4:21:57 that it's a difficult question to answers through science.
4:22:03 And again, Peterson articulates well this idea that you
4:22:06 have to find some of it through art,
4:22:08 some of it through authors, some of it through different...
4:22:14 I was just about to say modes of knowing before I stopped myself,
4:22:17 because that sounds like woo bullshit.
4:22:20 But there are different ways to acquire those deep
4:22:26 lessons that sort of paper is not gonna tell you.
4:22:33 I mean, this is really, the point also applies to religion, for example.
4:22:39 If you remove from society the software of religion,
4:22:43 you better have a good replacement.
4:22:45 And we've had a bunch of bad replacements, especially over the last few decades.
4:22:50 Religion is one of those things I've
4:22:52 struggled with a lot because I'm not religious.
4:22:55 I sort of wish I was.
4:22:57 I can now fully appreciate the enormous value having an operating
4:23:05 system like that brings not just at the individual level,
4:23:08 but rather at a societal level.
4:23:11 And it's not clear at all what the answer is.
4:23:13 I think we've tried a lot of dead ends when it came to replacements and people
4:23:18 have been filling that void in a million
4:23:20 different ways that seem worse than all the religions,
4:23:23 despite their faults in a myriad of ways have been able to deliver.
4:23:29 Yeah, religions like the cobalt code.
4:23:32 It's just...
4:23:33 Yes, it's the institutions where we don't fully understand the rules
4:23:37 and why they're there and what's gonna happen if we remove them.
4:23:40 Yeah, some of them seems obvious to me are just bullshit of the time.
4:23:45 Oh, you should need whatever shellfish, because in that region of the world.
4:23:49 There was something, something, something, okay, fine.
4:23:51 But there's a bunch of other things that are
4:23:54 pivotal to keeping society functioning for the long term,
4:23:57 and we don't fully understand which is which.
4:24:00 What's the bullshit and what's the load-bearing pillars of society.