Superintelligence CouncilСовет гения · sim.im

Search

to: 2025-12-31 ✕

534 passages, newest first · 32 ms

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:48:12`

offends my sensibilities to the core. Here you have the most important method that all new objects or classes have to implement. And it is one of the most aesthetically offensive ways of typing initialized that I've ever seen anywhere. And you guys are okay with this? — Hey, you're making me, you know, where you…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:49:14`

because Ruby is written for humans and humans are messy creatures. They like things in just the right way. I can't fully explain why the __init___ make me repulse, but it does. And when I look at the Ruby alternative, it's really instructive. So it's def, same part, D-E-F, space, initialize, parentheses…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:50:14`

init, short of type, it's only five characters. Initialize is a lot longer, but it looks a lot better and you don't type it very often. So you should look at something pretty. If you don't have to do it all the time, it's okay that it's long. Those kinds of aesthetic…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:51:15`

Ruby boils almost all of it away. We start with the if. Okay, that's the same. No parenthesis necessary because there's no ambiguity for the human to distinguish that the next part is just a single statement. So you do if, space, user, dot, admin, question mark. No open brackets, no parentheses, no nothing. Next…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:52:15`

That's a very human phrase, but it gets better. You can turn this around. You can have your statement you want to execute before the conditional. You can do user.upgrade. Say you're calling an upgrade method on a user. Space, if, space, user.admin?. We do the thing if the thing is true. Instead…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:53:17`

That to me is an encapsulation of the incredible beauty that Ruby affords the programmer through ambiguity that is only to serve the human reader and writer. All of these statements we've just discussed, they're the same for the computer. It'll combine down to the same C code. That'll compile down to the…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:54:17`

And what they feel, what that question mark for the if statement, what does that feel like for the user? — That's what Matz thought about because he started his entire mission off a different premise than almost every programming language designer that I'd heard, at least articulate the vision. That his number one goal was…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:55:20`

But his view of humanity is rather dark. His view of humanity was programmers at the average are stupid creatures. They cannot be trusted, which sophisticated programming languages because they're gonna shoot their foot off or their handoff. And that would be kind of inconvenient to the regional development office of a mid-tier insurance company…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:56:23`

He believes in humanity. He believes in the unlimited capacity of programmers to learn and become better. So much so that he's willing to put the stranger at his own level. This is the second part I truly appreciate about Ruby. Ruby allows you to extend base classes. You know how we just talked about 5…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:57:26`

and other things like that. So you can say cache expires in 5.days. And you're gonna get whatever's five times — That's nice. — 24 times 60 times 60 is, or whatever the math is, right? Very humanly readable. In a novel programming language, you would type out the seconds and then you would have…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:58:27`

I know there are other program languages that allow things with macros and so forth. But none do it in a way like Ruby does it. None does it with an articulated vision of humanity, a trust in humanity like Matz does, that is the opposite end of the spectrum of Java. — Yeah, I mean for my…

DHH2025-07-12transcript-lex-474-2025source ↗context

`0:59:28`

— It's the good feeling that come out of a concept compressed to its pure essence. There's nothing you can take away from that statement that's superfluous. — But see, I also wanna push back a little bit 'cause I also a program named Perl a bunch. Just be cool. So like it's not all…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:00:29`

Ruby has been worked on for over 30 years, and essentially the first draft is 90% of what we're still using. There was almost a sense of divine inspiration possible in wherever Matz was writing that initial version of Ruby that transcended time to such a degree that no one has still even begun to reach…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:01:30`

There's something wonderful about the Brendan Eich story of creating JavaScript. There's something truly beautiful about the way JavaScript took over the world. I've recently got to visit the Amazon jungle and just one of my favorite things to do is just to watch the ants take over anything, everything. And it's just…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:02:32`

of any new thing I work on, it's a little broken. It's a little busted in ways that invite people to come in and help me. Because there's no easier way to get the collaboration of other programmers than to put something out that they know how to fix and improve. — Yeah, that's…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:03:34`

You get to add keywords to the language. Active record is the part of Rails that communicates with the database. This is a system where every table in the database is represented by a class. So if we take the user example, again, you do class user descends from active record base, and then the first line…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:04:35`

That's metaprogramming. When Rails is able to add these elements to how you define a class and then that runs code that adds a bunch of methods to the use of class, that's metaprogramming. And when metaprogramming is used in this way, we call it domain specific languages. You take a generic language like Ruby…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:05:37`

Now again, I know that Lisp and others also do this stuff. They just do it with the maximum amount of line noise that can ever be crammed into a programming language. And Ruby does it at a level where you cannot tell my metaprogramming from Matz's keywords and with zero line noise. — Yeah, I should…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:06:38`

so much and what beautiful code is and what a beautiful programming language is. So one of the things that is I think implied maybe you made explicit in your descriptions there is that Ruby is dynamic typing versus strict typing. And you have been not just saying that it's a nice thing, but that you…

DHH2025-07-12transcript-lex-474-2025source ↗context

`1:07:39`

or getting TypeScript out of some of the projects that I'm involved with. We pulled TypeScript out of turbo. One of the front-end frameworks that we have, because I tried to write to metaprogramming in TypeScript and I was just infuriated. I don't want that experience, but I also don't want it from…

More