DHH: Future of Programming, AI, Ruby on Rails, Productivity & Parenting | Lex Fridman Podcast #474

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.

Study with Looplines Download Captions Watch on YouTube