Episode 341·Deep read
Guido van Rossum: Python and the Future of Programming
This episode also has a Chinese deep read(中文精读).
Official audio00:00 / --:--
Resumed from where you left off ·
Transcript machine-generated on this site from the officially released audio; it may contain errors — for names and numbers, trust the audio.
Lex Fridman Podcast #341 – Guido van Rossum: Python and the Future of Programming
Machine transcription by Qwen3-ASR 0.6B (MLX, local, Apache-2.0). May contain recognition errors.
The following is a conversation with Guido van Rossum, his second time on this podcast. He is the creator of the Python programming language and is Python's Merida's BDFL, benevolent dictator for life. And now a quick few second mention of each sponsor. Check them out in the description. It's the best way to support this podcast. We got Give directly for philanthropy, Eight Sleep for naps, Fundrise for real estate investing, Inside Tracker for biodata and Athletic Greens for nutritional health. Choose wisely, my friends. And now onto the full ad reads. As always, no ads in the middle. I try to make these interesting, but if you skip them, please still check out our sponsors. I enjoy their stuff, maybe you will too. This show is brought to you by Give directly, a nonprofit that lets you send cash directly to the people that need it. Give directly donors include previous guests of this podcast, Jack Dorsey, Elon Musk, Vitalik Buterin, all of whom happen to be. Actually, not Jack. Jack only has been on once, but I am pretty sure he's going to be on again many more times. He's a fascinating human being. Anyway, Elon too. He'll be back on soon, and of course, Vitalik as well. After the merge, anyway, all of that to say that the idea of giving directly to the people that need it is actually a really powerful way to help people. There is a lot of science. There is a lot of studies behind that that showed that getting cash directly to the people that need it is actually the best way to help them. So I think a lot of philanthropy is based on the idea that you could have a lot of middlemen and you kind of fund that chain that's able to optimally redistribute the funding. And okay, there might be some interesting aspects to that idea, but what I think is especially interesting is that when you remove all of those middlemen and you give directly to the people that need it is actually really effective. I frankly love that idea. You can visit givedirectly dot org slash lex to learn more and send cash directly to someone living in extreme poverty. That's givedirectly dot org slash lex. This episode is also brought to you by Eight Sleep and its new Pod Three mattress. I love taking naps. I got very little sleep last night. I just had a crazy pile of tasks to finish, and I had a crazy busy day today. So after I am done recording these very words that I am speaking to you, I am going to go lay down on an eight sleep bed, cold mattress, warm blanket, and I am going to pass out. For twenty twenty five thirty minutes, and I am going to as opposed to feeling a little bit tired, a little bit mentally exhausted, you know, maybe a little bit not so motivated to do work. I am going to feel like a new human being, excited to get right back into the trenches of programming and taking on the rest of the day, just powering through, super productive. All of that. Thank you to a comfortable, enriching, joyful nap. Check it out and get special holiday savings of up to four hundred dollars when you go to eightsleep dot com slash lex. This episode is also brought to you by Fundrise, spelled F U N D R I S E. It's a platform that allows you to invest in private real estate. As you know, looking at different markets and investment opportunities and all the crazy financial stuff that's going out there in the world. I think it's a good idea to diversify, and that's why private real estate is an interesting place to diversify in. And of course, when you do that kind of diversification, you should be using the services that make it super easy. You don't need to be an expert in what it's required in this kind of investment. You don't need to go through super complicated paperwork and so on. They vet everything for you. They figure out what are good real estate projects to invest in and make it super easy for you to do so. Over one hundred and fifty thousand investors use it. Check it out. It takes just a few minutes to get started at fundrise dot com slash lex. This show is also brought to you by Inside Tracker, a service I use to track biological data that comes from my body is fed in as the raw signal into machine learning algorithms, the DNA data, fitness tracker data, blood data, all that kind of stuff. Goes into the machine learning algorithm and gives a prediction, a recommendation about what I should do with my diet and lifestyle changes. This is obviously the early steps in what will make the twenty first century incredible, which is the personalization, the deep personalization, both medicine, lifestyle, diet, everything, career choices, mentorship, everything. Should be coming from rich raw signal coming from your body, maybe one day coming from your brain if you have BCI, brain computer interfaces like Neuralink operating. This is such an exciting future. So I am a huge supporter of this kind of future if it's done right if it's done in a way that respects people's privacy and people's rights. This is really really a great way to help individuals optimize their life. And get special savings for a limited time when you go to insidetracker dot com slash lex. This show is also brought to you by Athletic Greens and its AG One drink, which is an all in one daily drink to support better health and peak performance. It's my Zen temple that I return to twice a day. After a cup of coffee, it's the first thing I drink every day. I also drink it after a long run, and it gives me a certainty that I have all my nutritional bases covered. So all the crazy kind of diet stuff I am doing if I am fasting, if I am doing one meal a day, if I am doing carnivore just a little carb, all that kind of stuff, or if I am fasting for multiple days, or if I am doing crazy stretches of work or exercise. So both the mental and the physical fatigue that everything I am doing to my body in terms of challenging it, I know I have that basis covered and so it's it's not it's like a multivitamin but amazing multivitamin. I highly highly recommend it, and plus it also tastes good. They'll give you one month supply of fish oil when you sign up at athleticgreens dot com slash lex. This is the lex Friedman podcast to support it. Please check out our sponsors in the description. And now dear friends, here is Guido van Rossum. Python three dot eleven is coming out very soon. In it, C Python claim to be ten to sixty percent faster. How do you pull that off? And what's C Python? C Python is the last Python implementation standing, also the first one that was ever created, the original Python implementation that I started over thirty years ago. So what does it mean that Python, the programming language, is implemented in another programming language called C? What kind of audience do you have in mind here? People who know programming. No, there is somebody on a boat that's into fishing and have never heard about programming, but also some world class programmers. You are going to have to speak to both. Imagine a boat with two people, one of them has not heard about programming is really into fishing and the other one is like an incredible Silicon Valley programmer that's programmed in everything. C C plus plus Python Rust Java knows the entire history of programming languages, so you are going to have to speak to both. I imagine that boat in the middle of the ocean. I am going to please the guy who knows how to fish first. Yes, please. He seems like the most useful in the middle of the ocean. You got, you got to make him happy. I am sure he has a cell phone, so he's probably very suspicious about what goes on in that cell phone, but he must have heard that inside a cell phone is a tiny computer and a programming language is computer code that tells the computer what to do. It's a very low level language. It's zeros and ones, and then there is assembly, and then. Oh, yeah, we don't talk about these really low levels because those just confuse people. I mean, when we're talking about human language, we're not usually talking about vocal tracts and how you position your tongue. I was talking yesterday about how when you have a Chinese person and they speak English, this is a bit of a stereotype. They often don't know or they can't can't seem to make the difference well between an L and an R. And I have a theory about that, and I've never checked this with linguists. That it probably has to do with the fact that in Chinese there is not really a difference, and it could be that there are regional variations in how native Chinese speakers pronounce that one sound that. Sounds to L to some like L to some of them like R to others. So it's both the sounds you produce with your mouth throughout the history of your life and what you are used to listening to. I mean every language has that Russian has. Exactly, the Slavic languages have sounds like the letter J. Like Americans or English speakers don't seem to know the sound J. They seem uncomfortable with that sound. Yeah, so I am. Oh yes, okay, so we're not we're not going to the shapes of tongues and the sounds that the mouth can make. Fine, words. Similarly, we're not going into the ones and zeros or machine language. I would say a programming language is a list of instructions like a cookbook recipe that sort of tells you how to do a certain thing, like make a sandwich. Well, acquire a loaf of bread, cut it in slices, take two slices, put mustard on one, put jelly on the other or something, then add the meat, then add the cheese. I've heard that science teachers can actually do great stuff with recipes like that and trying to interpret their students' instructions incorrectly until the students are completely unambiguous about it. With language, see that's the difference between natural languages and programming languages. I think ambiguity is a feature, not a bug in human spoken languages. Like that's the dance of communication between humans. Well, for lawyers, ambiguity certainly is a feature. For plenty of other cases, the ambiguity is is not much of a feature, but we work around it, of course. Well, what's more important is context. So with context, the precision of the statement becomes more and more concrete, right? But you know when you say, "I love you" to a person that matters a lot to you, the person doesn't try to compile that statement and return an error saying, "Please define love." Right? No, but I imagine that my wife and my son interpreted very differently. Yes, even though it's the same three words, but imprecisely still. Oh, for sure. Lawyers never a lot of follow up questions for you. Nevertheless, the context is already different different in that case. Yes, fair enough. So that that's a programming language is a ability to unambiguously state a recipe. Actually, let's go back. Let's go to Peppe. You go through in Peppe the style guy for Python code, some ideas of what this language should look like, feel like, read like, and the big idea there is that code readability counts. What does that mean to you? And how do we achieve it? So this recipe should be readable. That's a thing between programmers. Because on the one hand, we always explain the concept of programming language as computers need instructions and computers are very dumb and they need very precise instructions because they don't have much context in in fact they have lots of context but their their context is very different. But what we've seen emerge during the development of software starting in the probably in the late forties is that software is a very social activity. A software developer is not a mad scientist who sits alone in his lab writing brilliant code. A software is developed by teams of people. Even the mad scientist sitting alone in his lab can type fast enough to produce enough code so that by the time he's done with his coding, he still remembers what the first few lines he wrote mean. So even the mad scientist coding alone in his lab would would be sort of wise to. Adopt conventions on how to format the instructions that he gives to the computer so that the thing is there is a difference between a cookbook recipe and a computer program. The cookbook recipe, the the author of the cookbook writes it once and then it's printed in one hundred thousand copies and then lots of people in their kitchens try to recreate that recipe that that that particular. Pie or dish from the recipe, and so there the the goal of the cookbook author is to make it clear to the human reader of the recipe, the human amateur chef in most cases. When you are writing a computer program, you have two audiences at once. It needs to tell the computer what to do, but it also is useful if that program is readable by other programmers. Because computer software, unlike the typical recipe for a cherry pie, is so complex that you don't get all of it right at once. You end up with the activity of debugging, and you end up with the activity of so debugging is. Trying to figure out why your code doesn't run the way you thought it should run. That means broadly, it could be stupid little errors or it could be big logical errors. It could be anything. Spiritual. Yeah, it could be anything from a typo to a wrong choice of algorithm to building something that does what you tell it to do, but that's not useful. Yeah, it seems to work really well ninety nine percent of the time, but does weird things one percent of the time on some edge cases. That's pretty much all software nowadays. All good software, right? Well, yeah, for for bad software that ninety nine goes down a lot. So, but it's not just about the complexity of the program. It's like you said, it is a social endeavor in that you are constantly improving that recipe for the cherry pie. But you are sort of you are in a group of people improving that recipe, or the mad scientist is improving the recipe that he created a year ago and making it better. Or adding adding something, he decides that he wants a, I don't know, he wants some decoration on his pie or icing or. So there is broad philosophical things and there is specific advice on style. So first of all, the thing that people first experience when they look at Python, there is a it is very readable, but there is also like a spatial structure to it. Can you explain the indentation style of Python and what is the magic to it? Spaces are important for readability of any kind of text. If you take a cookbook recipe and you remove all the sort of all the bullets and other markup, and you just crunch all the text together, maybe you leave the spaces between the words, but that's all you leave. When you are in the kitchen trying to figure out, oh, what are the ingredients and what are the steps and where does this step end and the next step begin, you are going to have a hard time if it's if it's just one solid block of text. On the other hand, what what a typical cookbook does if the paper is not too expensive, each recipe starts on its own page. Maybe there is a picture next to it. The list of ingredients comes first. There is a standard notation. There is there is shortcuts so that you don't have to sort of write two sentences on how you have to cut the onion because there are only three ways that people ever cut onions in a kitchen: small, medium, and in slices or something like that. Right, none of my examples make any sense to real cooks, of course, but yeah, we're talking to programmers with the metaphor of cooking. I love it, but there is a strictness to the spacing that Python defines. So there is some looser things, some stricter things, but the four spaces for the for the indentation is really interesting. It it really it really defines what the language looks and feels like. Because indentation sort of taking a block of text and then having inside that block of text a smaller block of text that is indented further as sort of a group, it's it's it's like you have a bulleted list. In a complex business document, and inside some of the bullets are other bulleted lists. You will indent those too. If each bulleted list is indented several inches, then at two levels deep, there is no no space left on the page to put any of the words of the text. So you can't indent too far. On the other hand, if you don't indent at all, you can tell whether something is a top level bullet or a second level bullet or a third level bullet. So you have to have some compromise and based on ancient conventions and sort of the typical width of a computer screen in the eighties. And all sorts of things sort of. We we came up with sort of four spaces as a compromise. I mean there there are groups, there are large groups of people who code with two spaces per indent level. For example, the Google style guide, all the Google Python code, and I think also all the Google C plus plus code is indented with only two spaces per block. If you are not used to that, it's harder to at a glance. Understand the code because the the sort of the the high level structure is determined by the indentation. On the other hand, there are there are other programming languages where the indentation is eight spaces or a whole tab stop in in sort of classic Unix. And to me that looks weird because you you sort of after three indent levels you've you've got no room left. Well, there is some languages where the indentation is a recommendation, a stylistic one. The code compiles even without any indentation, and then Python really indentation is a fundamental part of the language, right? It doesn't have to be four spaces, so you you can code Python with two spaces per block or or or six spaces or twelve if you really want to go wild, but. Sort of everything that belongs to the same block needs to be indented the same way. In practice, in most other languages, people recommend doing that anyway. If you look at C or Rust or C plus plus, all those languages Java don't have a requirement of indentation. But except in extreme cases, they're just as anal about having their code properly indented. So any IDE that the syntax highlighting that works with Java or C plus plus they will yell at you aggressively if you don't do proper indentation. They suggest the proper indentation for you, like in C you type a few words and then you type curly brace which there is their notion of sort of begin an indented block. Then you hit return and then it automatically indents four or eight spaces depending on your your style preferences or how your editor is configured. Was there a possible universe in which you considered having braces in Python? Absolutely, yeah. What was the sixty forty seventy thirty in your head? What was the trade off? For a long time, I was actually convinced that the indentation was just better. Without context, I would still claim that indentation is better. It reduces clutter. However, as I started to say earlier, context is almost everything. And in the context of coding, most programmers are familiar with multiple languages even if they are only good at one or two. And apart from Python and maybe Fortran I don't know how that's written these days anymore but. All the other languages Java Rust C plus plus JavaScript TypeScript Perl are all using curly braces to sort of indicate blocks. And so Python is the odd one out. So it's a radical idea. Do you still as a radical renegade revolutionary do you still stand behind this idea of space of indentation versus braces? Like what what can you dig into it a little bit more? Why you still stand behind indentation? Because context is not the whole story. History in in a sense provides more context. So for Python. There is no chance that we can switch. Python is using curly braces for something else. Dictionary is mostly. We would get in trouble if we wanted to switch, just like you couldn't redefine C to use indentation even if you agree that that indentation sort of. In a greenfield environment would be better. You can't change that kind of thing in a language. It's hard enough to reach agreement over over much more minor details. Maybe I mean in the past in Python we did have a big debate about tabs versus spaces and four spaces versus fewer or more. And we sort of came up with a recommended standard and sort of options for people who want to be different. But yes, I guess the thought experiment I'd like you to consider is if you could travel back through time when the when the compatibility is not an issue. You start a Python all over again. Can you make the case for indentation still? Well, it frees up a pair of matched brackets of which there are never enough in the world for other purposes. Really makes the language slightly sort of easier to grasp for people who don't already know. Another programming language because the sort of one of the things and I I mostly got this from my mentors who. Taught me programming language design in the earlier eighties. When you are teaching programming for for the the total newbie who has not. Code it before in not in any other language. A whole bunch of concepts in programming are very alien or. Sort of new and and may be very interesting but also distracting and confusing and there are many different things you have to learn you have to sort of. In a typical thirteen week programming course, you have to if if it's like really. Learning to program from scratch, you have to cover algorithms, you have to cover data structures, you have to cover syntax, you have to cover variables, loops, functions, recursion, classes. Expressions operators. There are so many concepts if you you sort of if you can spend a little less time. Having to worry about the syntax, the classic example was often. Oh, the compiler complains every time I put a semi colon in the wrong place or I forget to put a semi colon. Python doesn't have semi colons in that sense, so you can't forget them and you are also not. Sort of misled into putting them where they don't belong because you don't learn about them in the first place. The flip side of that is forcing the strictness onto the beginning programmer to teach them that programming is. Values attention to details you don't get to just write the way you write in English. Plenty of other details that they have to pay attention to so I think they'll they'll still get the message about. Paying attention to detail. The interesting design choice. So I still program quite a bit in PHP and I am sure there is other languages like this but the dollar sign before a variable. That was that was an annoying thing for me. It didn't quite fit into my understanding of why this is good for a programming language. I am not sure if you ever thought about that one. That is a historical thing. There is a whole lineage of programming languages. PHP is one. Perl was one. The Unix shell is one of the oldest or or all the different shells. The dollar was invented for that purpose because the very earliest shells had a notion of scripting but they did not have a notion of parameterizing the scripting. Right and so a script is just a few lines of text where each line of text is a command that is read by a very primitive command processor that then sort of takes the first word on the line as the name of a program and passes all the all the rest. Of the line as text into the program for the program to figure out what to do with as arguments. And so by the time scripting was slightly more mature than the very first script. There was a convention that just like the first word on the line is the name of the program, the following words. Could be names of files, input dot text, output dot HTML things like that. The next thing that happens is oh it would actually be really nice if we could have variables and especially parameters for scripts. Parameters are usually what starts this process. But now you have a problem because you can't just say the parameters are x y and z. And so now we we call say let's say x is the input file and y is the output file and let forget about z for now. I have my program. And I write program x y well that already has a meaning because that presumably means. X itself is the file. It's a file name. It's not a variable name. And so the inventors of of things like the Unix shell and I am sure Job Command language in at IBM before that. Had to use something that made it clear to the script processor. Here is an X that is not actually the name of a file which you just pass through to the. To the program you are running, here is an X that is the name of a variable. And when you are writing a script processor, you try to keep it as simple as possible. Because as certainly in the the fifties and sixties. The thing that interprets the script was itself a very had to be a very small program because it had to fit in a very small part of memory. And so saying oh just look at each character and if you see a dollar sign you jump to another section of the code and then you gobble up characters or say until the next space or something. And you say that's the variable name. And so it was was sort of. Invented as a clever way to make parsing of things that contain both variable and fixed parts. Very easy in a very simple script processor. It also helps even then it also helps the human. Author and the human reader of the the script to quickly see oh twenty lines down in the script I see a reference to xyz oh it has a dollar in front of it so now we know that xyz must be one of the parameters of the script. Well this is fascinating several things to say which is. The leftovers from the simple script processor languages are now in code bases like behind Facebook or behind most of the backend I think PHP is probably still runs most of the backend of the internet. Oh yeah yeah I think there is a lot of it in Wikipedia too for example. It's funny that those decisions are not funny it's fascinating that those decisions permeate through time. Just like biological systems, right? I mean that the sort of the inner workings of DNA. Have been stable for well I don't know how long it was like three hundred million years half a billion years. And there there are all sorts of weird quirks there. That don't make a lot of sense if you were to design a system like self replicating molecules from scratch. Well that system has a lot of interesting resilience. It has redundancy that results like it messes up in interesting ways that still is resilient when you look at the system level of the organism. Code doesn't necessarily have that a program a computer programming code. You'd be surprised how much resilience modern code has. I mean if you if you look at the number of bugs per line of code. Even in in very well tested code that in practice works just fine, there are actually lots of things that don't work fine. And there are error correcting or self correcting mechanisms at many levels including probably the user of the code. Well in the end the user who sort of is told well you got to reboot your your PC is part of that system. And a slightly less drastic thing is reload page which we all know how to do without thinking about it when something weird happens you you try to reload a few times before you say oh there is something really weird. Okay or try to click the button again if the first time didn't work. Well yeah that that we should all have learned not to do that because that's probably just going to turn the light back off. Yeah true so do it three times that's the that's the right lesson so. And I wonder how many people actually like the dollar sign like you said it is documentation so to me it's whatever the opposite of syntactic sugar is syntactic poison. To me it is such a pain in the ass that I have to type in a dollar sign also super error prone. So it's not self documenting it's it's like a bug generating thing it is a kind of documentation that's the pro and the con is it's a source of a lot of bugs but actually I have to ask you um. This is a really interesting idea of bugs per line of code. If you look at all the computer systems out there from the code that runs nuclear weapons to the code that runs all the amazing companies that you've been involved with and not. The code that runs Twitter and Facebook and Dropbox and Google and Microsoft Windows and so on. And we like laid out. Wouldn't that be a cool like table bugs per line of code and what let's let's put like actual companies aside. Do you think we'd be surprised by the number we see there for all these companies? That depends on whether you've ever read about research that's been done in this area before. And I don't know the the the last time I I saw some research like that that was probably in the nineties and the research might have been done in the eighties. But the the conclusion was across a wide range of different software, different languages, different companies, different development styles. The number of bugs is always I think it's in the order of about one bug per thousand lines in sort of. Mature software that that is considered interesting as good as it gets. Can I give you some facts here? There is a lot of good papers. So you said mature software right so here is a. A report from a like programming analytics company. Now this is from a developer perspective. Let me just say what it says because this is very weird and surprising. On average, a developer creates seventy bugs per one thousand lines of code. Fifteen bugs per one thousand lines of code find their way to the customers. This is in software they've. Oh I was I was wrong by an order. I am going to order there. Fixing a bug takes thirty times longer than writing a line of code. That I can believe. Yeah. Seventy five percent of a developer's time is spent on debugging. That's for an average developer that they analyze is fifteen argue. Fifteen hundred hours a year in US alone one hundred and thirteen billion dollars to spend annually on identifying and fixing bugs. And I imagine this is marketing literature for someone who claims to have a golden bullet or a silver bullet that makes all that investment in fixing bugs go away but that that is usually not going to. Yeah that's not going to happen. Well they're I mean they're referencing a lot of stuff of course but it is a page that is you know there is a contact us button at the bottom presumably if you just. Spend a little bit less than one hundred billion dollars we're willing to solve the problem for you. Right and there is also a report on stock exchange it's Stack Overflow on the exact same topic but when I open it up at the moment the page says Stack Overflow is currently offline for maintenance. Oh that is ironic yes. By the way their error page is awesome anyway. I mean can you believe that number of bugs? Oh absolutely. Isn't that scary that seventy bugs per one thousand lines of code so even ten bugs per thousand lines. Well that's about one bug after every fifteen lines and that's when you are first typing it in. Yeah from a developer but like how many bugs are going to be found if you are if you are typing. Well the development process is extremely iterative. Typically you don't make a plan for what software you are going to release a year from now. Yeah and work out all the details because actually all the details themselves consist. They sort of compose a program and that that being a program all your plans will have bugs in them too. And inaccuracies. But what what you actually do is. You do a bunch of typing and I am I am actually really I am a really bad typist. That just I've never learned to type with ten fingers. How many do you use? Well I use all ten of them but not very well. But I I never I never took a typing class and I never sort of corrected that so the first time I I seriously learned I had to learn the layout of a of a QWERTY keyboard. Was actually in college in my first programming classes, where we used punch cards. And so, with my two fingers, I sort of pecked out my code. Watch anyone give you a little coding demonstration. They'll have to produce like four lines of code, and now see how many times they use the backspace key. Because they made a mistake, and and. And some people, especially when when someone else is looking, will will backspace over twenty, thirty, forty characters to fix a typo earlier in the line. If you're. If you're slightly more experienced, of course you use your arrow buttons to go or your mouse to, but the mouse is usually slower than than the arrows. But a lot of people, when they type a twenty character word, which is not unusual, and they realize they made a mistake at the start of the word, they backspace over the whole thing. And then retype it, and sometimes it takes three, four times to get it right. So. I don't know what your definition of bug is. Arguably, mistyping a word and then correcting it immediately is not a bug. On the other hand, you you already. Do sort of lose time, and every once in a while there's sort of a typo that you don't get in that process. And now you've you've you've typed like ten lines of code, and somewhere in the middle of it you don't know where yet is a typo or. Maybe a thing oh where you you forgot that you had to initialize a variable or something. But those are two different things, and I would say yes, you have to actually run the code to discover that typo, but forgetting to initialize a variable is a fundamentally different. Thing because that thing can go undiscovered. That depends on the language in Python. It will not. Right, and sort of modern compilers are usually pretty good at catching that even. Even foresee. So for that specific thing, but actually deeper, it might there might be another variable that has initialized, but logically speaking, the one you meant related. Yep. It's like name the same, but it's a different thing, and you forgot to initialize whatever some counter or some some basic variable they're using. I can tell that you've coded. Yes. By the way, I should mention that I use a Kinesis keyboard, which has the backspace under the thumb, and one of the biggest reasons. I use that keyboard is because you realize in order to use the backspace on a usual keyboard you have to stretch your pinky out. And like. The for most normal keyboards, the backspace is under the pinky, and so I don't know if people realize the pain they go through in their life. Because of the backspace key being so far away, so with the Kinesis it's right under the thumb, so you don't have to actually move your hands. The backspace in the delete. What do you do if you're ever not with your own keyboard and you have to use someone else's PC keyboard that has a standard layout? So first of all, it turns out that you can actually go your whole life always having a keyboard. With you, so this well except for that that little tablet that you're using sort of note taking right now, right? Yeah, so it's very inefficient note taking, but I'm not I'm just looking stuff up. But in most cases, I would be actually using the keyboard here. Right now, I just don't anticipate you have to calculate how much typing do you anticipate. If I anticipate quite a bit, then I'll just I have a keyboard. You pull it out. And same same with it. I mean. The embarrassing, I've accepted being the weirdo that I am, but you know when I go on an airplane and I anticipate to do programming or a lot of typing, I will have a laptop and I will pull out a Kinesis keyboard. In addition to the laptop, and it's just who I am. You have to you have to accept who you are. But also, it's you know for a lot of people, for me certainly there's a comfort space. Where there's certain kind of setups that are maximize productivity. And it's like some people have a warm blanket that they like when they watch a movie. I like the Kinesis keyboard. It takes me to a place of focus, and I still mostly. I I'm trying to make sure I use the state of the art IDEs for everything, but my comfort place just like the Kinesis keyboard is still Emacs. So I still use I still I mean that's one of some of the debates I have with myself about everything from a technology perspective. Is how much to hold on to the tools you're comfortable with versus how much to invest in using modern tools, and the signal that the communities provide you with. Is the noisy one because a lot of people year to year get excited about new tools and you have to make a prediction. Are these tools defining a new generation or something that will transform programming, or is this just a fad that will pass? Certainly with JavaScript frameworks and front end and back end of the web. There's a lot of different styles that came and went. I remember learning. What was it called? Action script. I remember for Flash, you know learning how to program in Flash, learning how to design doing graphic animation all that kind of stuff in Flash. Same with Java applets. I remember creating quite a lot of Java applets thinking that this potentially defines the future of the web. And it did not. Well, you know in most cases like that, the particular technology eventually gets replaced. But many of the concepts that the technology introduced or made accessible first. Are preserved, of course, because yeah we're not using Java applets anymore, but the notion of reactive web pages. That sort of contain little bits of code that respond directly to. Something you do, like pressing a button or a link or hovering, even is has certainly not gone away, and that those animations that were. Made painfully complicated with Flash. I mean, Flash was an innovation when it first came up, and when it was replaced by JavaScript equivalents stuff. It was a somewhat better way to do animations, but those animations are still there—not all of them, but but sort of. Again, there is an evolution, and often so often with technology. That the sort of the technology that was eventually thrown away or replaced. Was still essential to to sort of get started. There wouldn't be jet planes without propeller planes. I bet you. But from a user perspective, yes, from the feature set, yes, but I from a programmer perspective, it feels like. All the time I've spent with Action Script, all the time I've spent
Resources & sources
- VideoWatch on YouTube
- AudioOfficial MP3via the official lexfridman.com podcast RSS
- WebsiteEpisode page on lexfridman.com
- TranscriptPlain text on this site