DHH · 2025-07-12 · source ↗ · whole document (15)
Programming setup
`5:16:20`
And I had three days of annoyance and already the next week I was like, this is sweet. I'm not going anywhere. But I also had a bit of a head start about 20 years ago in early 2000s. I tried Vim for like a summer and it didn't stick. I didn't for whatever reason love it at the time. But Neovim is really good. The key to Neovim is to realize that you don't have to build the whole editor yourself. There's a lot of Neovim stans are like, here's how to write the conflict from scratch. Over 17 episodes, that's gonna take you three weeks. Ah, I don't care that much. I love a great editor. I love to tailor it a little bit, but not that much. So you have to pair Neovim with this thing called LazyVim. Lazyvim.org is a distribution for Neovim that takes all the drudgery out of getting an amazing editor experience right out of the box. — Ridiculous question, we talked about a bunch of programming languages. You told us how much you love JavaScript. It's your second favorite programming language.
`5:17:22`
Would TypeScript be the third then? — TypeScript wouldn't even be in this universe. I hate TypeScript as much as I like JavaScript. — So what you hate, oh man, I'm not smart enough to understand the math of that. Okay, before I ask about other programming languages, if you can encapsulate your hatred of TypeScript into something that could be human interpretable, what would be the reasoning? — The JavaScript smells a lot like Ruby when it comes to some aspects of its metaprogramming. And TypeScript just complicates that to an infuriating degree when you're trying to write that kind of code. And even when you're trying to write the normal kind of code, none of the benefits that accrue to people who like it. Like auto completion is something I care about. I don't care about auto completion because I'm not using an IDE. Now I understand that that is part of what separates it and why. I don't see the benefits. I only see the costs. I see the extra typing.
`5:18:23`
I see the type gymnastics that you sometimes have to do and where a bunch of people give up and just do any instead, right? Like that they don't actually use the type system because it's just too frustrating to use. So I've ever only felt the frustration of TypeScript and the obfuscation of TypeScript in the code that gave me no payoff. Again, I understand that there is a payoff. I don't want the payoff. So for my situation, I'm not willing to make the trade and I'm not willing to take a language that underneath is as dynamic of a language as rubious and then turn it into this pretend statically type language. I find that just intellectually insulting. — Do you think it will and do you think it should die TypeScript? — I don't wanna take something away from people who enjoy it. So if you like TypeScript, all the most part of you. If you using TypeScript because you think that's what a professional program is supposed to do, here's my permission, you don't have to use TypeScript.
`5:19:24`
— There's something deeply enjoyable about a brilliant programmer such as yourself, DHH is talking shit. It's like one of my favorite things in life. What are the top three programming languages everyone should learn if you're talking to a beginner? — I would 100% start with Ruby. It is magic for beginners in terms of just understanding the core concepts of conditionals and loops and whatever, because it makes it so easy. Even if you're just making a shell program that's outputting to the terminal, getting hello-world running in Ruby is basically puts, P-U-T-S, space, start quotes, hello world, end quotes, you're done, right? There's no fluff. There's nothing to wrap it into. There are other languages that does that, especially in the Perl or Python would be rather similar. But Go would not, Java would not. There's a lot of other languages that have a lot more ceremony and boilerplate. Ruby has none of it. So it's a wonderful starting language.