Skip to content

Podcast

#461 – ThePrimeagen- Programming, AI, ADHD, Productivity, Addiction, and God

Lex Fridman Podcast

Source ↗ ← All highlights
  • Linked List Epiphany
    • Michael Paulson’s love for programming sparked in college during a data structures class on linked lists.
    • The concept of a class containing itself, representing infinite possibilities, profoundly impacted him. Transcript: Lex Fridman What do you love most about programming? Michael Paulson What brings you joy when you program? I can tell you the first time that I ever felt love in programming or felt that joy or that excitement, which was in college. It was the second class data structures. And the teacher that was teaching Ray Babcock, he was talking about linked lists. Now, you have to learn Java at Montana State University when I went. And so he’s off there kind of explaining this whole linked list thing and all that. And then he shows code. And in the code, it’s like abstract class node or whatever it was. I can’t remember what it was. And then it had a private member and that private member was of type node. And I’ve never seen that before. It is a class that is called node with a member that is of itself. And for the first time ever, I was like, oh my gosh, like, there’s no end, there’s no way to iterate. This is not like a set of 10 items. This is a set of infinite items. And so like my mind kind of like exploded in that moment, like there’s actually you like the what you can express is huge, I can see what memory looks like. Like I can see this kind of hopping through space. And I just remember being just so blown away because up until that point, everything was just, all right, I have a list of 10 items. I have a list of 20 items, right? It was very rigid and small. And the things I built were really small and trivial. And all of a sudden, I felt like I could build like anything in that one moment. And it was so amazing. I just remember sitting in class for what I don’t even remember how long those classes were anything. But I just remember being just completely like profoundly impacted by this notion. And so I just sat there and I watched I had the exact same experience in Heaven’s Forbid by software engineering class when we talked about the decorator pattern where you can keep on Constructing these objects in this recursive way. Not that I think that’s actually a good idea to do. But just watching that and realizing like there’s so many weird and unique ways you can solve problems. And like you can just anything your mind can think of, you can just create that. And I just remember getting just so excited about the possibility that anything is possible. (Time 0:10:27)
  • Recursion Breakthrough
    • Paulson struggled with recursion until a maze-solving lab in college.
    • Applying recursion to a practical problem finally made the concept click for him. Transcript: Lex Fridman Oh, man. Michael Paulson Mine is, I have, well, first off, mine was in Java. So my first was a little bit more rigid, kind of a corporate, you know, a corporate experience. But. Cold, meaningless. Cold, yeah. I was in a lab. Everyone was using CentOS at that, or CentOS, or however you say. I always call that CentOS, the fresh maker. Yeah. And so it’s just like, I’m in this very cold. That’s nice. Thank you. I’m in like this cold rigid environment with my Microsoft keyboard, programming away in Java. And I still, I have just such this memory of despair because I love programming. This was after the linked list and I cannot figure out recursion. And so I go to, you know, the university store and I buy a book and it’s die, tell and die, tell learn Java. And it has a section recursion. So I opened it up and I start reading it and it just doesn’t hit home. And I’m like, I’m spiraling into this, like kind of, I, maybe I’m not a programmer. Maybe I’m not worthy enough to enter into this circle of people who can figure out what the heck recursion means. And so Dytale and Dytale is like, I still remember this. Their phrase, their exact phrase was every young budding developer solves this recursion program. And it was the Tower of Hanoi. And guess what? I don’t know if I can solve the Tower of Hanoi to this day. It’s like a very hard recursive problem. And I just sat there and thought, oh my gosh, I’m not going to make it. And I sat there in the lab for eight hours, 10 hours doing these things. So worried. It’s the week of recursion. We have to do a lab assignment. I’m not going to be able to do it. And I just remember being like genuinely worried about that. And then because I always my big problem was, is like, okay, do factorial, why not just use a for loop? Okay, what about Fibonacci sequence? Why not use a for loop? Or like, I don’t understand what’s the purpose of recursion? I don’t understand it yet. It’s so powerful. Why it looks like a really complicated for loop. And so I just could not understand it. And then lab came that day. And it was, I’m going to give you a 2D array. You have to read from a file. This is what a starting position looks like. This is what an ending position looks like. This is what a wall looks like. I want you to find me a path through the maze. And so I just sat there and I’m like, okay, well, I guess I can just go up and I can create like a visited grid that so I know not to visit these places anymore. And then all of a sudden just started clicking. I’m like, well, wait a second. I don’t know the maze, but if I just go up, right, down and left and hop back every time I’ve been to that square, don’t visit it. Like I can just, it will just go forever. And I realized in that moment, I’m like, I actually understand. I’ve understood recursion this whole time. I just never had a problem in which it actually made sense to use. And that was like my big downfall is that I was measuring my understanding with the problems that I had available, which were just, you know, list traversal, which is not a good use of Recursion. (Time 0:15:57)
  • Boredom of Certainty
    • Paulson finds the worst aspect of programming is the absence of uncertainty and challenge.
    • When he knows everything about a project, it becomes monotonous and unfulfilling. Transcript: Michael Paulson I would say the biggest one that i can really hold on to had to be one of two experiences the first experience was when i was at a place called schedulicity and am i not allowed to say the place I’m not sure if they’re even operating still at this point but they’re’re in both. There’s just something funny about the name. I’m sorry. Oh, Schedulicity. Yeah. They actually, the name was so bad that when you looked at their like paid for Google ad terms that they would make sure that they’re at the top of the list. The spellings were just insane because no one knew how to spell the word Schedulicity. And so it was just like the Google optimizing for that is just hilarious. But okay, go back to the thing. And the thing that kills me the most about programming, what I actually considered the worst aspect of programming is when you know everything. And so when I was at this job, it’s just every single day I’d come in, there were no surprises. There was no questions. I didn’t understand the code base. Sure, that’s fair. I didn’t understand all the things about the code base, but I knew I was going to go in. I was going to generate some sort of object from the database. I was going to take that object from the database, and I was just going to map it over and just display it on the web page. There’s no creativity. There’s nothing to it. It’s very like almost factory line kind of work. And that was a very kind of difficult moment for me, which is I didn’t enjoy programming because I knew everything about it. I already knew exactly what I was going to do that day. I knew all the hurdles I was going to have to go over. There was no unknown unknowns, if you will. It was just knowns at all times. And it’s just, that is, for me, that is the worst part about programming is when you already know the solution and it’s just a matter of how fast you can type and get it out from your head To your hands. (Time 0:20:12)
  • High School Advice
    • High school is a small, temporary part of life; don’t let it define you.
    • Try new things, take risks, and remember the people around you won’t always be so important. Transcript: Michael Paulson What advice would you give to them? The worst part about high school is that you’re surrounded by a bunch of people your age, and it feels eternal. You don’t think, like the people that are around you, you feel like are the people that will be there for the rest of your life. At least that’s what I kind of like, I thought, and I didn’t really even realize this until many years later, that they are going to be some of the least consequential people in your life, Which is very shocking to kind of think about, especially if you’re in it right now yeah right like right now they are the everything that you’re experiencing your whole reality and Then one day it all stops and then real life starts to begin yeah and it’s just that’s such a shocking thing and if i could just tell myself that maybe i would have been a bunch different Lex Fridman Person that’s so beautifully put i mean it is a it’s like a trial run know, like at the beginning of video games, there’s a little tutorial. That’s what that is. Yeah. And actually, that should be a chance to try shit out, to take risks, because real life will begin when there is more consequences after that. Yeah. Here you can, you know, if you like a girl, ask her out. Try. Try shit. If you get picked on, hit that guy back. Try shit out. Not gonna condone punching another person i will beat the shit out of him and uh take some jiu-jitsu and learn how to take him down and then and then and then that girl that rejected you Will be like hmm maybe i’ll give that guy a second chance be a bad motherfucker it’s a chance to try stuff out. Michael Paulson This is a very motivational speech for me, kicking ass. It is true there. I mean, there is something very true about that that I think, especially, I mean, I have no idea what the girls’ experience of high school would be like, but as a guy, there’s definitely A lot of physical requirements in high school. There’s a lot of physical measurement, at least where I grew up. I think that might not be true in all high schools, but if they’re filled with boys, it’s probably true. And so it’s just like, yeah, it probably does help to do those things, to go to BJJ, to do any of these activities. Because even if you don’t ever kick someone’s ass, just having some level of confidence in yourself is probably a very valuable thing. But just remembering that this is such a short, tiny moment in your life is just like a huge help. (Time 0:41:40)
  • Porn Addiction
    • Porn addiction is hard to quit due to societal acceptance and ease of access.
    • It devalues human connection, objectifies people, and distorts perceptions of women. Transcript: Michael Paulson Let me say it this way. Some addictions have a much bigger societal look and porn is just not one of them, which makes it super hard. None of your friends are going to cheer you on. If you go on Twitter and say, I quit porn, they’re going to be like, well, that’s good for you, but not everybody, you know, not every, you know, no one makes that argument with meth, right? No one’s gonna be like, well, not everyone has to quit meth. Okay. It’s actually a fine industry and people who, you know, are the ones producing it. They’re good also, right? Like no one’s going to make that kind of argument whereas with porn you’re going to have like a whole thing and friends friends are going to think you’re dumb for doing it or whatever it’s Like you have it’s a much more difficult one in just like that so it feels accepted and i think it’s also an addiction you can practice participate in, hide it from the world. Lex Fridman There’s certain addictions that are harder to hide from the world for prolonged periods of time. Yeah. And porn addiction is probably one you can just have for many years and then it can deepen. That’s probably like a serious issue. Boy, am I glad I grew up before the internet. Because porn is so accessible, so easy to go deep into that addiction. What can you speak about what impact it had on your life? Maybe some of the low points, but also how to overcome it. Michael Paulson I’d say, as far as impact goes, is that you will have such a long and broken look at women. By the very, like, I can, again, I’m only speaking from a male’s perspective, porn in it’s just like most basic thing is that you use another person for your own desire or your own want. It’s not something that is deeply needed. There’s no need. There’s no like need for porn. It’s purely a want based activity, or a lust, however you want, whatever word you can fill in there. And it is purely an objectifying activity. Like someone else is on display for your own enjoyment. And so I think you carry this around. Like I do think that the women that I dated during high school or the women after high school and college, like I looked at them as a means to an end. I think porn greatly kind of shifted that kind of perspective in my head that I did not give the value that was desired to another person. It really devalues humanity just in general, is my perspective of it. And that makes people into commodities. And I don’t think people are commodities. I think everyone has value. And so during that, for me, that’s kind of like the great effect of porn is that, you know, it’s just consumerism gone wild or materialism. Maybe you could ask, argue gone wild. And it’s extremely hard to quit, just like you said, because I can look at porn and then I can go out to lunch. You know, no one’s going to know. No one’s going to have any ideas. Like it’s a very private. It can be very short session. It doesn’t have to be something that takes like, you know, you can’t take acid, then go out to lunch, right? You’re going to be you’re going to your whole day is going to be a very different day. And so there’s, it’s very quick, easy, accessible. And then obviously, there’s like all the like the science and, you know, statistics, like men make worse decisions for some period of time after looking or being exposed to sexualized Images. There’s the whole dopamine effect. That’s just like you constantly need more and more dopamine. That’s why people typically don’t just watch five minutes of porn and call it a day. There’s like, you know, the hundred tab joke that’s always made on the internet. It’s because you, it’s just this, this constant dopamine cycle you’re constantly doing. And all that stuff is great to say. And I’m sure statistics and science and all that stuff is really great arguments for some amount of people. But for me, it just comes down to, like, is it really a good thing to do? Like, is it really actually something we want is to value people in such a profane or kind of just like disregarding way? Like, I just really think it’s just bad for the soul, even if all the stats said it was great for you i still say it’s actually bad (Time 0:47:28)
  • Finding God
    • At 19, Paulson had a profound experience where he felt God’s presence.
    • This led him to change his life, quit addictions, and try harder in school. Transcript: Lex Fridman We try to reverse engineer that moment of you finding god what is that 19 because it feels like that was a big leap for you to escape the pain, to escape the addiction or the beginning of That journey. What do you think happened there? Michael Paulson I think it just felt like there was no line that I wasn’t willing to cross. Everything was fine. Like, it just all of a sudden, just in that moment, it’s just like I had a, I guess, some sort of deep fear and understanding, like, I am going down a path. Is this really the path you want to go down? And I don’t know what the result of that path would be or anything like that. I don’t tend to speculate on things I don’t understand. I just know that in that moment, I had the option. And I just chose, I didn’t want it anymore, right? It’s kind of mixed in this whole thing where it’s just like, I had no value. I wrapped up all my meaning or value in having sex or getting laid. I had, you know, all that stuff, all the things we just talked about, like that was where all my worth was. And that is just such a like a terrible place to have your worth. And it’s just like, kind of all came to a point and I can’t tell you the day of the week. I can’t tell you anything other than it was nighttime. And I was in South hedges in Montana state university. Go Bobcats. That’s about, yeah, that’s the sign that we do at football games. Don’t worry about it. But like, that’s all I can really, that’s all I can really tell you because the night, that night was no more or less special than some other night. It’s just the specialness was, I got at least a (Time 0:57:02)
  • Work Hard, Not Smart
    • Work hard to gain experience; there are no shortcuts to mastery.
    • Consistent effort eventually leads to improvement and enjoyment of the process. Transcript: Lex Fridman At some point, the bill comes due, and that bill can be very, very large. The other moment you mentioned that I think is really inspiring is that you failed pre-calculus. You really struggle in school. You realize that school is really hard. Then eventually you’re able to sort of persevere and uh i don’t know break through that wall of struggle can you by way of advice figure out what happened and what kind of advice you can Michael Paulson Give to people who are struggling yeah i’ll paint it in kind of a more clear picture a very fast speed run of it is that i took pre-calculus failed i took pre-cal again, failed, took pre-calculus Again, and got a C. So I took it three times. Then I took calc over the summer, so calc one. In that one, at the end, the final, the final was a two-hour final. I finished it in 30 minutes, and that is the highest score in all of the school. And I proceeded to be the highest score in all calculus and Diffy Q. I was the only person out of 400 people to finish the Diffy Q final. And I got the highest grade. And so I was like, I got really good. So I somehow went from really bad to really good. And so my only, the thing that I did is that I had to win. It was not a option. It was not like, Oh, you know, this would be really great. It’s like, I will not graduate, I will not finish my stuff if I cannot do this. And so every single day, I got up, I went to my whatever, however many hour class it was. Right after that, I went straight to the math learning center, did those problems. When I got home, I just got the book, and it had the odd answers in the back. And I would try to walk through the problems over and over and over and over again until I absolutely got it. And it just became this thing where it’s just, I just simple rote memory took over and the ability to just effectively have the times table, but for calculus all stuck in my head, inverse Trig substitution, trig substitution, doing Taylor McLaren series, like all those things kind of just over and over and over and over again, eventually they became easy. They became very easy. It’s just that I had to cram it in there. And some people, you know, you hear these stories, whether they barely show up to class and they get A’s, I’ve never been that person. I’ve always been the person that has to sit down, read through everything. And I’m bad at abstract concepts. I like the concrete into the abstract, not the abstract into the concrete, very bad at talking about things theoretically, then trying to apply them. But if I can do it once, literally, then it’s really easy for me to go into the abstract. And so it’s just like for me, it just, I had, there’s no substitute for the hours. So if you, if I were to give advice, it’s just that you have to have time in the saddle. Hour after hour will make you slowly better. And at first, it’s crushing, it’s defeating, and it’s not fun because you are bad at it. But then at some point, you’re just not bad at it if you can just do it long enough. And you’ll start getting okay at it. And then at some point, you might even get good at it. And when you get good at something, it feels amazing. There’s like an exploratory thing. Like if you’ve ever played a musical instrument, you stop having to think about all the little teeny things you have to do to be able to play something correctly. And you start thinking about how you can explore that space. It’s like a completely different problem. And same with programming. Programming has an identical kind of feel to it. It’s just like you’ll cross that barrier and it becomes magical as opposed to a chore. (Time 1:12:40)
  • Netflix Beginnings
    • Paulson’s first task at Netflix was to learn the TV UI codebase on a PlayStation 3.
    • He became the go-to person for Groovy and fixed a bug that broke staging. Transcript: Lex Fridman Learning curve for you? You showed up in your plaid pants, like, dressed up? Yeah. And what was it? Well, what did you have to learn about the stack? Because Netflix, I imagine, is this incredible infrastructure that has to deliver just a huge amount of data. I’m just blown away by Netflix, but also like YouTube. Michael Paulson These companies that have to deliver, like serve a huge amount of like bits netflix has it easiest out of all the companies netflix by even though we have you could say maybe we have maybe We beat youtube in view hours i’m not sure if we do but let’s just pretend netflix has 5x more view hours than than youtube whatever it is netflix has a fundamentally easier problem than All other companies. And let’s get back to that. I’m going to first tell you about the stack, but I’ll tell you why it has a fundamentally easier problem. So when I first got there, they gave me my PlayStation 3. My boss said, go learn some code, come back to me in a couple days and tell me what you’ve learned, and then I’m going to start giving you bugs to fix. Wait, wait. PlayStation 3, what are you talking about? Well, I was on the TV team. I had to go plug in a PlayStation and start launching programs onto the PlayStation 3 and figure out how to work Netflix on a television device. Oh, so like you have different kinds of devices. Why PlayStation 3s? Other different… It’s just 2013. Any devices that plug into the TV. Okay, cool. Yeah, not as many TVs had Netflix, let alone what they called their Darwin app, which is their new application. So if you bought a Vizio earlier that year, you’d get their older one there. It’s called Plus UI. You get their older version. And so not many had the newer version. We no longer supported Plus, or we never actively developed on Plus. We only did stuff on Darwin. And so I had to learn that whole stack. The back end or the middle end, the middle layer between the actual back end and the front end was written in Groovy. And as I went around, Groovy is, if you’re not familiar with Jenkins, then you’ve probably never interacted with Groovy. But Groovy is a JVM language. It’s a very interesting language. But here’s how it got started at Netflix. Lex Fridman Oh, it’s Apache.ache groovy is a powerful object oriented programming language that runs on the java virtual machine released in 2007 it has evolved to become a versatile language Michael Paulson That combines both static and dynamic typing capabilities all right so the ai is kind of lying to you uh groovy is not a powerful great language nothing that statement makes it seem way Cooler than it actually is. You will meet one out of 100 people that have touched Groovy that said, oh yeah, Groovy’s great. The other 99 will be like, heavens forbid you ever have to touch that language. So when I got there, nobody, not a single soul at Netflix, there’s 40 some engineers had any idea how Groovy pretty much worked. Somehow people just hacked together these scripts and put them all on there and it worked. And it was all, this was before there was a Groovy RX port. We wrote our own version called WX. It was a nightmare. Observables, all these things. I remember one time they told me that, oh yeah, you know, with RX, it’s really easy. You just say what you need to do. It maps out and boom, boom, boom, boom. Everything will run multi-thread and all that. And I was like, oh wow, really? So all I did was go like observable.sleep1 because I just wanted to see it sleep and then do the next thing. And it turns out when a thread sleeps itself, no thread can wake it up. And I just turned off all of staging because I ran it like 10 times like, oh, it’s not responding. Oh, it’s not responding. Broke all of staging for everybody. So no developer could work for the rest of the afternoon because I locked up all the instances. Because it turns out no, it was in fact not multi threaded. Every assumption we’ve been told is a lie. No one had any idea what they were doing. It was a wild time. And so I just simply naturally gravitated towards that because I’m good at printf debugging. I’m good at doing those things. So I was like, here, I’ll just figure this out here. I will do this. So I had to rewrite how we do the data structure on the front end for the TV from what is called a LoloMo list of list of movies into LoloRomo, which is a list of list of recommendation objects For a movie. Why would we need to do that? Think about this. You have two lists. One has live free, die hard, Bruce Willis, because you love Bruce Willis. The other one has live free, die hard, because you want tough men doing tough jobs. Well, during those days, we’d only have one way we could show evidence why you wanted it. So we couldn’t say, oh, because you liked this other movie. You’d go to that one and say the same thing. So we had to kind of add one level of indirection where we could decorate the video with the recommendation information. So you can abstract away into the space of recommendation versus the space of movies yeah so you can’t hang it off the video because obviously then it would be the same for everything That shows that same video so that’s amazing i had to do all this and i wrote it in groovy and i was the i just did it and people were like how did you how did you write this in groovy and it’s Just like well I read the language reference for a day and then programmed it well. What do you mean? It was a very radical language, shall we say. And so I just simply became the person that knew these things. So they just give me more and more jobs at that. And so that’s kind of how I excelled, being the person that was willing to do the thing that no one else was. Yeah. (Time 1:35:10)
  • Repulsive Grizzly Attack
    • Paulson discovered and reported a critical security flaw in Netflix’s Falcor system.
    • This bug, named “Repulsive Grizzly Attack,” could have taken down the UI. Transcript: Lex Fridman How do you pronounce his name, by the way? Teej. Teej. Okay, Teej. Michael Paulson It’s TJ would be his name, but we call him Teej or Telescopic Johnson. Lex Fridman Oh, wow. So many names. You know, DDoS, distributed denial of service attacks. You apparently were able to accomplish the simplified version of that of just DOS. That’s a legend. So you basically broke down the system somehow. Michael Paulson Yeah. Yeah. So can you tell the story of that? I’d be glad to. So this Falcor. So there’s this Falcor business, right? And I kind of, A, I did discover the bug before anybody else, and I did report it to security, and it was so bad. It actually got its own name, Repulsive Grizzly Attack. And they even give examples of how to do it. Effectively what it means is that there is a request that targets both memory and CPU and will destroy it. There you go. Look at how Netflix, the next one down was the article that was actually written. I don’t get mentioned, which is a little bit upsetting considering I was the one that discovered it and told everybody how bad it was. Anyways, N had the right to fix for it, or the first fix. So this is how it works, is that you can do something pretty similar, I believe, with GraphQL as well. It has the same kind of danger. Any of these kind of RPC requests as much or as little of the data as you would like frameworks are vulnerable to this kind of attack. So with Falcor, what you do is you give it an array. This array is called a path, and that’s the path to the data. But sometimes you don’t want to have to write out, I want movie, I want row zero or list zero or row zero, column zero, title. I want, you know, row zero, column zero, description. I want, you know, you don’t want to have to write out all that. So instead you could just be like, I want rows zero through 10, columns zero through 10, titles and descriptions. So you can write in a very compact, nice little format. And it’ll give you all that data, it’ll go to the server, the server will fill that all in and give it to you. Oh, dang it. List three, it only had three videos in it. So what happens when I try to re request the data? Well, I need a way to be able to tell my system that you’d have requested the data, there’s nothing there. So this is called like a, call this like a boxed value. So it’s going to be like type something value. There’s nothing there. We’ve already requested it and there’s nothing there. They call, you know, it’s like a sentinel value, if you will, a boxed value. And we have this little special flag we’d pass called materialize, meaning that when you ask for a path, we will make sure we fill it out. So we don’t accidentally erase anything. And at the very end, we’ll say, Okay, the thing does the request you’ve made has already been made, and there’s nothing there. Well, what happens if I request rows zero through 10,000 columns through 10,000, one more item through 10,000, and then a whole bunch of properties, and then ask it to materialize. Well, I’m about to go create billions of objects in the JVM. And what happens to the machine? It stops running. And then we try to JSON, even if it could create them all, we then ask it to JSON serialize. It’s not going to do it. Like it’s impossible. And so that was the attack vector is a simple while loop would have taken down and held down Netflix for a very long time because one request would kill one machine on AWS. And so that means it would just turn it all off. And this was on the website. This was on TV. This was on mobile. Like this was profound. And here’s the worst part. It was in production for years. So we couldn’t even roll it back. There was no like, oh, crap, let’s just roll back to two weeks ago. And we’ll kind of fix forward and figure out no, it’s like, we could roll back to 2011. Like, that’s our option is 2011. And that’s it. So we had to figure out a way forward and all that. And so it’s like, the amount of problems that would have happened if someone would have discovered this is is unstatable. Just (Time 1:46:48)
  • Learn From Others
    • Learn from existing codebases instead of rewriting everything from scratch.
    • Understanding others’ work provides valuable insights and avoids repeating mistakes. Transcript: Lex Fridman Demanded that I ask you about the time you broke production. Is this related to Falkor? Did you break production? Michael Paulson I broke production quite a few times. I’ve broken productions for so many stupid reasons. One time I broke production because I came up in the PHP and PHP static means static for the lifetime of the PHP and PHP was the lifetime of every request, right? That’s why PHP was so inefficient was that every request was its own like instance. And therefore static memory was for the lifetime. I guess I never put that together. And so I had some objects that I made static because I was like, oh, I just need this for the lifetime of the request. And lo and behold, those weren’t lifetime. A whole bunch of bad data got all over the place. People were showing up saying they were from all these different countries and everything was all wrong because I just whoopsie daisies. I just made a whole conundrum with that. So that was one time I did it. Another time is I took down. You were on the home page on the website waiting for lady gaga’s video to come out and you are watching the countdown go down if it reached zero the billboard would freeze and it wouldn’t Work if you refreshed it would work but the reveal the big reveal i screwed that up and my boss got real upset and so did other people in hollywood got upset about that one that was like a My bad sorry jeff wagner again i remember that one i remember that one specifically one time i released a bug where again on the billboard if you pressed add to my list i accidentally programmed In an infinite loop and it just your whole web page would just freeze are some are some of these bugs difficult to discover until you sort of that one seems really easy looking back on it And there was we actually during those days we had manual qa that are supposed to go through everything so i didn’t feel as bad because my manual qa counterpart also missed it like we all Missed it but it was just so simple just press that button boom it just completely freezes the website polluting the code with sort of global variables that are holding values uh as php Lex Fridman I think allows you to do that’s a tricky one to discover because you rely on it but then there could be somebody else assigns a value to it yeah it erases everywhere and i just didn’t understand Michael Paulson Like in my head static was like oh this is for the life like i was just so locked into the php world at that time that i i just made a just a just such a like looking back on it it’s so obvious but Lex Fridman During the time it was it’s hard so in general pushing to production i talked to peter levels about this he i mean obviously he’s operating as a mostly a solo developer, but he often on The websites that thousands, not hundreds of thousands of people use, he often ships to production, pushes to production, meaning like just no testing, just like push to fix. What are the pros and cons of that approach in general to you? What do you think? Michael Paulson It’s obviously much easier the smaller your organization is. I think everyone, I think no one would argue that sentiment. If it’s just you working on a singular project, it is obviously much easier for you to push directly to production because you are the only one working, you know all the ins and outs, and If something were to break, you would discover it. So to me, that makes sense. I think the way he operates is perfect for what he does. You couldn’t take what he does and move it to say Microsoft or Netflix or Google, because that would obviously, it would just be a disaster, just due to the amount of people all pushing To production. And so I mean, I personally love that. I think that you have to, you have to gauge both the application you’re building, and its complexity and what you’re pushing, and how many people are working on it. I think those all go into how you can kind of do that. Because not all applications are created equal either. Like that application I was making was zooming and scrolling where we had all of our own everything. It was a very deep, like heavy logic app. And that was regardless of what was happening on the website. Most the code was library code. And that becomes way harder if you don’t have a good test suite and stuff to kind of run before you push it out. Because when you squeeze that ball, you know, different things come popping out in different areas. And that’s like, that’s very, that’s a very harder problem than, say, if you’re doing more of like a heavy visual one, because a heavy visual one, you’re you’re affecting just this one Area is visual stuff, and you can test it. And like, that’s normally the end of it. Whereas, you know, so it depends on like the coupling and everything. So I mean, I love his approach, by the way, I have such mad respect for anyone that operates that way, because it I think is a great way. It just is so good. Because it kind of breaks this notion that tech Twitter has that, oh, we got to use all these expensive services, you need to use all these kind of things. Because if you don’t use all this kind of stuff, if you’re not using the latest version of react, if you’re not using the latest version of this, you’re going to simply, you know, you’re Simply not going to make it as a startup, it’s impossible. And it’s just like, no, no, that’s not software. Like most of software isn’t the new stuff. Most of software is old, crappy software that someone has to maintain. And it actually is really, really great and has lots of really hard problems. And if you look at it differently, it’s actually fantastic. (Time 1:56:26)
  • Streaming Journey
    • Paulson’s streaming career began with a charity event at Netflix playing Fortnite.
    • He transitioned to programming streams, gained popularity, and eventually went full-time. Transcript: Lex Fridman Yep. Okay. Yes youtube and uh and twitch and netflix are doing an incredible job you eventually uh chose the madman you are to leave netflix and to start in the new journey of being a wolf pack of one Michael Paulson Start streaming what was that what was the story of that so i was streaming for almost seven years now it started actually at netflix we did a charity uh extra life shout out extra life For starting my streaming career effectively it’s just you stream and whatever money you raise it goes to kids with cancer research they are a great charity in the sense that they take No overhead and they raise their own donations for their website and everything. And so it’s like a very great straightforward charity really love like what they’ve done. It was super cool because I live in South Dakota now, but I actually could choose a hospital directly where the money goes to. So there’s like a direct impact from A to B. So it’s like it’s a pretty cool organization. And so my friend Guy Serino, nice try guy is what I like to call him. He was probably the single greatest engineer I’ve ever met in my lifetime. And he was just like, Hey, come do this, we’re gonna all do this. And so I played Fortnite. And so before I did that, I was like, I better learn how to stream first, I better get, you know, affiliated so I can like take subscriptions. And then if anyone gives me a subscription, I’ll also pay that forward. And so June 2018, or something like that, I start, I start streaming, and I start streaming some Fortnite, end up getting affiliated, end up doing the whole extra life thing, I end up Really enjoying it. I’m like, this is a lot of fun. I’m playing Fortnite at that point. Okay, so mind you, I’m a Fortnite streamer at that point. And I start really enjoying it, I keep doing it. And then one day I decide I’m going to do some programming, because I really love them. And I think I’m kind of fast at them. And maybe people think programming is kind of cool, because there was no really programming section at that point. And I did it. And I had like 30 people show up, which was just like, and it felt like incredible numbers at that point. So I was like, Oh, my gosh, there’s like 30 people watching me program. And so it just kept on going. And it kept on happening. And it just kept on growing. And I did it for year after year, I would do my job, I would come home, I’d eat dinner with the kiddos, I’d read them Lord of the Rings and the Hobbit during that time, I’d read to them for a Half an hour, then I’d set that down. And then three nights a week, I would program until like two in the morning, or play video games until two in the morning streaming and building up this like whole side thing. And I did this for a long, long time. And then eventually, it just kept working out so well. And I started making YouTube videos. And then that started getting better. And it was just like a long, long grind until April of last year, I went to the streamer awards, I got to like announce the programming category and pirate software one. It was awesome. It was a great time. And during that time, he gave me a challenge coin and just said like, you just got to go for it. Just go full time. And so I just sat there and my wife can attest to it. It was kind of like an emotional turmoil thing. And it just took a lot of, it was, was pretty awful, you know, because I didn’t, Netflix is very safe option. It was both very fun. It was challenging. I liked a lot of the people I worked with. It was overall a really great thing. I had a really great boss. Really appreciated him. I still have a text text him now and then he’s really great guy. So it’s just like, I’m leaving all these things for something that’s unsure. And the reality is, is that streaming and all these things, you know, people love you one day, they could hate you the next day. There’s like all this stuff that goes into being on the public side. And I had Netflix as the backing. So it’s like if public had me the next day, I’d be like, deuces, I’m out like, I don’t care. Now it’s like, now I’m going to do this as a job. And so there’s like a whole huge turmoil to this whole thing that kind of went through it. And eventually I just said, okay, I’m going to make this, it kind of, it resonated with me when I first made the decision to join Netflix. I’m getting older. There’s not a lot of chances to do something unusual like that, those chances go down constantly as you get older. This might be the last crazy thing I get to do. Let’s just try it. So in April, I went full time. And I have I guess I haven’t looked back, I’m only not even a year into doing this as a full time gig. And it’s just been a lot of fun. And the biggest thing is just being, you know, being able to really explore and do these things on stream where people really enjoy watching and engaging has just been it’s been a great Lex Fridman Hard fun amazing difficult experience i mean it’s a really inspiring leap it’s a really hard one to yeah to take for many reasons like you outlined but also like the loneliness of it i Think I think it’s a pretty lonely pursuit. It is. Yeah. Just you and the camera and the audience and the ups and downs of that. And it’s not, there’s not really a team. I do have one lucky thing. I’d say that my editor Flip, shout out Flip. Michael Paulson He was, it would mean the world to him if I said shout out Flip. Lex Fridman I love you, Flip. I love you, Flip. We all love you. Michael Paulson Oh man. He, he had, you know, as he would say, he had nothing going for him. He had a really hard growing up. A lot of rough life decisions have gone into his life. And he’s kind of crawling back out of it. And he just said, hey, I will edit full time for you. So I just said, all right, like 50-50, whatever I make on YouTube you get, we’re going to do this together. And we did that for years, making $0 a month pretty much, you know? And so it’s just like, that was an incredible jump. And now like we get to work together so that I do get that one team aspect that I think is really nice, but there’s, it’s not like it was at Netflix where I could hear about stuff people are Building. I don’t have a team. I don’t have like product or cycles. I don’t have a manager that I have to try to make happy. It’s just like, it is very lonely. And I don’t think a lot of people realize how lonely it actually can be. Yeah. (Time 2:15:16)
  • Learning Languages
    • To learn a programming language, build something and read the language reference.
    • This combines practical experience with deep understanding of features. Transcript: Lex Fridman So maybe one question I could ask is about learning. What’s your approach to learning a new programming language? And maybe what’s your advice on learning a new programming language when you begin that journey? Michael Paulson So I’ve kind of done a bunch of different ways to go through this learning process, and I’ve tried a lot of different ones. Something that is obviously successful is just start building something. Just put your hands on the keyboard. You know, like, especially if you already know how to program, you’re like, okay, I’m now using Zig. How do I do a main function so I can just run the program? Okay, now I know how to build. Okay, how do I do an if statement? What does it look like? Okay, how do I do declare my own functions? How do I do modules, right? You just kind of like Google your way through it, if you will, to get to the end product and build something. It’s a good, it’s a great way to do things, because I find that repetition, like rote learning is obviously the best way to do this. You have to kind of go over it a bunch, and you can, you can definitely get out and build a lot of stuff with that. I like that initial kind of get used to things. But on top of it, I find that by doing that, you also fall into like traps. You kind of Google and you try to solve a problem in the language based on all of your previous experience. And so you don’t have what makes that language special. You kind of have what all the other languages make special. And so you end up kind of not really being able to use it very effectively. But you can certainly kind of learn it and get kind of good at it. And so the second approach I’ve been doing lately, and this has been inspired by the creator of Ghosty, Mitchell Hashimoto is to just start by reading the language reference the whole Thing. And so lately, I’ve been just kind of going through and just reading the entire manual for these languages like Zig, I’m almost done with that one. You know, it’s like eight to 10 hours of just sitting down reading, and I’ll whip out my computer and kind of practice a couple of the things from the actual docs. And that way I can learn all the things. So then when I start building again, I remember, okay, I know there’s a thing over here. Let me go reread about it. Because now I have an index in my brain somewhere that will kind of remember. And so I don’t think there’s like a right or wrong way. I mean, at the end of the day, the right way is always that you have to build something eventually. You cannot just read about it. You have to put your hands on the keyboard. You have to build something out. And then once you do that, that’s where you really discover what makes it painful or what makes it great. And if you don’t have the breadth of what the language offers, you just may make it painful by simply being bad at it. What exactly are you reading? Like Like the language reference? The language reference. So it just goes through like every feature top to bottom, right? Yeah. Every way it’s described, all the different things. I think Ziggs is, you know, it’s a decent size, but it’s not just simply read the words. You want to internalize each concept as well. So it takes a long time. So I’m a slow reader. (Time 2:30:56)
  • Explore Languages
    • Explore various programming paradigms, including dynamic and strict languages.
    • Consider languages like Python, JavaScript, Rust, Go, Swift, Elixir, or OCaml. Transcript: Lex Fridman All right. Well, if I put a gun to your head, five top five languages, let’s list them all. Michael Paulson There’s a bright-eyed 20-year asking you what are the top five languages to learn um if i were to pick five languages that i think people should learn or at least how about let’s restate It this way i’m going to say a couple languages and you should at least explore some of them i think you should explore explore a lucy language so uh python slash javascript where there Is truly only one type which is a boxed value which is a multivariant different types underneath the hood right would you call it a loosey language a loosey goosey language right it’s A dynamic language okay um and so i think it’s really good to explore one of those two so i’d put python or javascript right there even lua throw lua in the bunch i think you should explore A strict language uh so i’d do something like rust go um i think those are both really really great c++ you can do c++ you can do some type erasure in c++ you can do it with go as well but it’s For the most part that’s it’s a great language to do that in um it can get a little wild new c++ seems great everyone keeps telling me new c++ is great um it has every feature you’ve ever wanted Lex Fridman And all the features you don’t want yeah exactly i mean there’s smart pointers, there’s dumb pointers, there’s all kinds of pointers. There’s no memory leaks. That’s not an issue. Michael Paulson Face guns, soft beds, there’s everything in there. Lex Fridman Unless you like memory leaks that it has that too. If you want that kind of thing is great. Okay. How about this one? Michael Paulson Languages that I actually want to really learn that at least sit in my curiosity bank. There’s three languages, which is going to be Swift, Elixir, OCaml. And then I’m going to throw Odin in there just because Gingerbill is great. But Elixir and OCaml, I don’t have a strong functional language underneath my belt. That’s something that I just genuinely lack. (Time 2:49:23)
  • Twitch Plays Doom
    • Paulson’s favorite project was enabling Twitch chat to control Doom ASCII in a browser.
    • He used techniques like quadtrees and run-length encoding for optimization. Transcript: Michael Paulson Most favorite sorry for interrupting you. So I’m getting, I’m really jazzed right now. Lex Fridman Let’s go. Okay. Michael Paulson So jazzed. Lex Fridman Jazz hands. Michael Paulson My most favorite project was the one I did last year. There, someone built a Doom ASCII port so you could play Doom with ASCII. So that means you could play it in your terminal. Very, very fun. Very excite. So I made a Go program that could spawn out the Doom ASCII. Then I took that Doom ASCII and I sent it to the browser so that people could play Doom ASCII in the browser. But then I made it so that Twitch chat could control that instance of Doom ASCII by piping in Twitch chat, taking the average of the movements over so much time and replaying it as if it Was a controller. And I had Twitch chat beat level one by spamming it. But the fun part was I used a bunch of fun encoding techniques. So I used like quad trees to be able to take smaller amounts to use run length and coding, try to create my own compression algorithm. Because if you’re sending out a bunch of ASCII stuff, it’s still pretty expensive because you have to represent color. Color is not cheap. On top of you have to represent what does it look like? What does the ASCII look like? Well, I realized, you know, there’s all these fun techniques you can do for compression. Like the shape of the ASCII you send down is in a lot of these engines are actually just proportional to the lumosity of that pixel. So like you’d use an eight to represent or a pound sign to represent like white, but black, you’re going to want to do like a period or a comma or a bar, you know, something smaller. So it’s like, I then developed all these different compression algorithms to turn a bunch of data, which would take, you know, I forget how much it would take. It’d take gigabytes upon gigabytes to be able to send out to thousands of people to all see the same image at the same time, to all be able to interact with doom at the same time i turned it From gigabytes into kilobytes by just trying to figure out how to like make it as small as possible and send it all out it was super fun absolutely had a great time so you’re actually sending Lex Fridman It to all the people in chat so where’s the that that pipe where that pipeline how chat is able to control the doom thing twitch chat yeah so they would go people would span w and if you said Michael Paulson W it would hold down w for 150 milliseconds if the majority of people during that time period said w nice okay so and then how are they getting the input of where you are on screen so originally I was going to send that through twitch but twitch is like five seconds behind so that’s why i piped it out to a website. So everybody could see from my computer to the website in typical leg was right around 70 milliseconds. So it’s like they could mostly see what was happening in that short period of time. It was pretty exciting. So we had a thousand people or I had somewhere between a thousand to fourteen hundred smashing Ws and pressing F to fire and turning, and we killed some zombies. Yeah, yeah. We blew up the barrel at the very end of level one to kill the imp. How are you getting the Ws from the Twitch chat? Is there an API? IRC. I was using IRC. So just a little TCP socket, and then you just parse out IRC. Okay. And there’s very little lag there. Okay. Yeah, I think it’s a couple hundred milliseconds, though. It’s enough that it actually made it a little bit difficult because people would often overturn and then go forward and, like, miss the door, and then they had to go back. That’s (Time 3:00:53)
  • Chat Communities
    • Twitch chat fosters a tighter community due to shared memes and culture.
    • YouTube chat is more disjointed due to diverse motivations and “swim” functionality. Transcript: Lex Fridman Inspired by FFmpeg and their awesomeness everything uh so can you speak to just the chat community in general like a big part of what you do in terms of streaming is the humans that are Communicating with you live can you uh can you talk to the uh the different chat communities first of all which is the best chat community uh youtube twitch or x this is where I feel bad Michael Paulson For YouTube, because I do think it’s technically the worst, but it’s not YouTube’s fault. And let me kind of explain why. Lex Fridman And then I will explain why you’re wrong, but go ahead. Michael Paulson I know you love YouTube, but let me explain why. You go to anyone’s channel, they have this like cultural human centipede thing that’s happening where as the memes flow in, all of Twitch kind of reacts and morphs to all those memes. So every channel you go to has this like same culture. There’s a lot of similar emotes and everything. So it’s very tight knit. So when I stream, I get all the same jokes that you would pretty much see if you saw, I don’t know, Soda Poppin or some big streamer, Asmongold, whoever, Portate Software streaming, all The same memes would all flow through the exact same kind of pipe. And so it’s a very holistic kind of community. So every time you’re making jokes, you’re making jokes that are like in the ether. Twitter kind of has that too. Tech Twitter kind of has like a set of jokes. And so you can kind of see it if the problem with Twitter chat is that there’s just nobody there right now. You know, typically, like just put it into perspective, I have somewhere between somewhere between like 1500 to 3000 people on Twitch, somewhere between 800 to 2000 on YouTube, and Like 50 people on Twitter. So it’s like the difference is massive. But they all kind of Twitter has that same thing that’s developing where there’s like memes that are constantly flowing through it. And so they’re very highly connected. YouTube just doesn’t seem to have that. They’re just a bunch of people and people go to YouTube for various reasons. I’m going to YouTube to learn. So they come in and they want to learn. So they’re not like on the meme train. They’re not in this like cultural zeitgeist train. They’re just like, but why would you use this if statement when a switch statement in this one particular case? And you’re just like, well, that’s not what I’m trying to do here. Lex Fridman Yeah, you want to captain the meme train or you want to ride on the meme train. Michael Paulson Yeah. Or you just want to be able to like create a culture on your chat because your chat’s gonna be some variation of the of that kind of zeitgeist that’s flowing through Twitch. And it kind of is very contiguous between x and Twitch, it just feels really out of sync with YouTube. And then YouTube particularly does a bad job. And some people would argue a good job, because you can swim swimming, you can actually change what timestamp you’re at. So all of a sudden, you’ll be like, Oh, yeah, you know i you know something about like driving to soccer in my minivan and then 20 minutes later you’ll be talking about zig and someone’s Like i personally use uh whatever to drive to soccer and you’re like what are we talking about like so youtube is a very disjointed chat as well because it depends on where they’re at within The video swim comes from netflix by the the way called swim swim the term yeah that’s that’s that we people said swim oh so you’re you’re okay swimming through the yeah so you’re not just Making up the term thank you wow yeah but it’s probably made up and probably only 10 people said at netflix and so no one’s gonna know it and they’re gonna be like yeah right that thought Happens on net. Lex Fridman So, guys, going back to projects, what projects on stream or in general? No, you need to answer why YouTube chat’s the best chat. Well, you kind of convinced me. Okay, why YouTube is the best chat. Well, I think I’m just a hater. That’s basically what it boils down to, and I’m just talking shit. I’m probably just like from the outside shooting you know shooting in because twitch is such a fun culture you know of memes and so it’s just fun to shoot from the outside to like i throw It to like egg the house of twitch and then i just sit back on my lawn chair and uh with the small community, just talking shit. No, you’re absolutely right. There’s a real sort of sense of community that Twitch can form. But I just like the openness of YouTube. It’s just better at opening to the world. It’s more accessible. It’s easier to share. It’s just a more established platform, that’s all. Fully on that team. For the non uh for the open world like i can send it to people that don’t usually watch video game streaming or that kind of stuff yeah if you send a twitch link they’re like i don’t like video Michael Paulson Games and you’re like well actually it’s not video like there’s that talk happens every single time you mention twitch because twitch does have a perspective about it that youtube Does not. Lex Fridman I was just on Rogan’s podcast, and I think it came up. He asked something like, is Twitch still a thing? So that just gives you an example. And then Jamie said, yeah, yeah, it’s definitely still a thing. It’s still like growing and so on. And so, yeah, there’s just a big slice of humans that don’t dissipate in the twitch uh twitch sphere yeah i just like talking shit so yeah that’s a beautiful answer but it’s cool that you Sort of make it accessible on all these different platforms and i have high hopes for x but yeah it’s feature wise it still has a lot of growing up to do. (Time 3:04:30)
  • ADHD and Programming
    • Maturity and emotional resilience are key to managing ADHD in programming.
    • Focus improves with practice and by minimizing distractions and side quests. Transcript: Lex Fridman Think this is more applicable for uh single systems like robots and so on you have struggled with adhd i think a lot of people are really inspired by the fact that you’re able to be productive And flourish while having ADHD. How’d you overcome it? Michael Paulson Well, there’s a lot of things that ADHD affects. And so I’ll start with some of the easiest things because there’s like directly applicable than like these kind of collateral damage applicable things that happen. So one thing that has really helped me with ADHD is maturity. I think that’s just like just a thing that everyone needs more of meaning that I found myself getting so wiggly and so out of control when I would try to sit down and read. And I just I just couldn’t handle it. I just felt like I’d read a page and didn’t read anything. The part of me that just went, Oh, my gosh, I just can’t even do this. I had to just simply quit listening to it and said, no, I’m rereading this page. I remember reading some pages in college like 18 times in a row, just like I’m going to force myself to just do this the correct way. And so there’s an aspect of maturity that really helps. No matter what, I will do the thing I’m going to do. And I’m going to do it well. And maybe it takes me a lot longer. And that’s okay. That’s not the point of it. It’s that I’m doing it. And that’s the point. And so that’s kind of like one thing I think just generally helps in it. ADHD, no ADHD, you know, the resilience, emotional resilience, is just like a really important aspect that just helps. And so I think that has been a large part that really helps me. There’s things that I still obviously struggle with, like, it’s clear where I’m really bad at stuff. And just trying to like think through all the different things that I’m bad at, there’s more things I’m bad at than I’m good at. And so programming obviously has something that just allows me to remain focused. And it’s like a strength of mine. And so I started off where I could just do it for a little bit. And then just through kind of that emotional resilience, I was able to start doing it more and more. And so now I can just do it for like 10, 12, 15 hours at a time. And I absolutely love it. And so it’s become kind of like a joy. It’s like playing a musical instrument. I’m really into it. But then if it came down to, hey, you need to go schedule your own, you know, dentistry and go do all these other things, or make sure the kids have this type of stuff ready for, you know, The meals you need to pack throughout the week. I’m historically very bad at that, and will probably continue to be very bad at that. And so I must say that one of the reasons why I excel so much is because I also have a wife who is so good to me. And she helps clear out a lot of the things in my life that cause a lot of like me kind of getting snowballed into a weird spot where I’m just like distracted getting nothing done. And so she’s really helped me. So it’d be foolish of me to claim that I’ve defeated ADHD by myself. But instead, I find that the places that I can really control, I’ve done a very good job at and the things that I obviously need to do much better at my wife has helped me a whole bunch. And so I’ve kind of cheated. Maybe I found a cheat code, loving wife, but that has been the thing that has really helped. Lex Fridman You said a lot of interesting things. So on the reading and the, for me, it’s also audiobook side. I do the same thing and I’ve gotten much better at it, which is like, you know, I tune out mentally and I, you know, I’ll, yeah, there’s, you know, read a page and you don’t understand anything On the page. You didn’t actually read it. And yeah, I forced myself to just reread it or re-listen to an audio book, which is much more common problem for me now. And forcing myself to really pay attention. Because I listen to audio books often when I run and it’s so easy to just tune out. Michael Paulson Yeah. Lex Fridman It’s a skill. Like I didn’t realize how much of a skill listening to an audio book is, especially when there’s other sensory inputs, like when you run. So I have to force myself to like really pay attention to every single word. And if I don’t like tune out and don’t remember what I just listened to in the past 30 seconds, I forced myself to re-listen to it. And sometimes that means like five times until I like, it’s like punishing myself to like, you’re going to listen to this boring shit over and over until you get good at that little skill Of like zoom in. And you’re like, yeah, there’s people that are like doing stuff. There’s nature. It doesn’t matter. You’re listening to every single word and loading it in and trying to stay focused. Even there’s just so many distractions all around you. Yeah. Michael Paulson It’s definitely a learned skill and it takes a lot of time. And when I say, you know, oh, I was able to do from here to here, I’m speaking over the course of like five years of doing this every day. Like it’s not some small, there’s no, you could, the nice part about that decision though, is you can make that decision today. You can make it right now. You’re gonna be like, from here on out, I’ll never make that mistake again. I will say I’m going to read 50 pages, I will sit down and read 50 pages. And when I get distracted, I’ll go back to the last place I remember, and I’ll start again. And like, that’s a decision you can make. That’s a mature, you know, non emotional decision to make. And you can do that, it just may be really painful for the first couple of years of making said decisions. And then it gets easier and then it gets easier. And then it just, it becomes more natural to change yourself. Yeah. And with (Time 3:23:21)
  • Optimal Setup
    • Optimize your programming setup for minimal distractions and maximum efficiency.
    • Use one monitor, keyboard shortcuts, and a good keyboard like the Kinesis Advantage. Transcript: Lex Fridman The perfect setup. What’s your perfect programming setup? Keyboard, operating system, how many screens, chair? All right. Michael Paulson I like all these. IDE. Let’s go. So keyboard, you’re using my favorite keyboard right there the kinesis advantage uh save my career beautiful keyboard uh concavity and thumb clusters are just so important because If you really think about it especially if you’re using qwerty when you’re pressing the symbols like on a standard keyboard you’re just doing this the whole time backspace enter symbols Like you’re just doing this and just screws up your wrist constantly doing this. And this one, you’re constantly doing like control and shift. And it’s just like messing you up. So it’s just like right here. That’s so much nicer in life. So keyboard, most important, I’d say, get that one done. Lex Fridman For people who don’t know, can use this keyboard. I think the thing that you experience the most is exactly the thing you just said now, which is the backspace is really easy to press versus what it is on normal keyboards. So backspace in general symbolizes like you’re deleting a thing. It symbolizes a mistake. It not symbolizes, it usually means a mistake. And so not only did you just make a mistake in what you were typing, you also have to take a physically painful action, annoying action to fix that mistake. And for most of us, we make a lot of mistakes. So kinesis just makes it pleasant and fast and easy physically to correct the mistake. That’s probably for me, the number one reason of kinesis. Everything else. Yeah. Super plus with the mackerels and the position, the concavity, like you mentioned, but their mistakes are pleasant. Yeah. Michael Paulson I’m on that team. That’s why, so that’s why I love that. So that’s, I would say that’s one of the most important things. The next thing that I find to be very, very important is that one monitor. I’m a one monitor kind of guy. What? Really? So when I program, when I do anything. Now, when I stream, I obviously have a second computer that runs the stream because, you know, I sometimes crash my computer at the restart or whatever. So I do have a second screen there that I put stuff up. But most of the time, you’ll notice that even when I’m streaming, you’ve been there, I have to physically switch to the streaming channel for me to read it. And that’s because I’m operating off of one screen. And so I have this whole style in which I like to navigate, inspired by StarCraft, is that I believe in the press one key go where you want to be mentality. And so everything about my setup is press one key. So when I want to go to Twitch chat, alt two, Twitch chat, when I go on and to my browser, alt one, that’s my browser. Alt three, that’s where I go to my programming. That’s power finger, obviously, a big middle finger right there. Just smash it down. Alt six is going to be GIMP. So my GNU image manipulation program. So if I want to draw, I go there. When I used to have Slack, it was all five. If I have a spare terminal where I need to run some extra things that’s all four i had all these kind of everything is perfectly mapped out to single key and then when it comes down to using Say tmux i have all my terminals into one single terminal and now i’m able to kind of switch between their uh prefix one goes to my vim editor whatever project i’m in it’s always the first Tmux tab if you will, not sure they call it a session, but I’m not sure how to describe it. If you’re not familiar with Tmux, a tab. Second one is like my spare terminal. Third one is my long running process terminal. My fourth one is a long running process terminal. So I have it all set up. So every project I go to automatically spawns session one, Vim, session two, spare terminal, session three, we’ll also open it. So it’s like everything’s just ready to rock everything has been optimized to where i do that if i want to go to a project it’s control f and any terminal will bring up a fuzzy find list of Every one of my folders on my operating system in which i can go to with just a couple keystrokes and boom i’m in that one now and so it’s like very oriented to find where i need to be as quickly As possible via keyboard via keyboard Then in Vim, I developed a plugin called Harpoon, which is I press one button and I can pin one of the files to like a temporary buffer. I think Projectile is potentially close to this in Emacs. I can’t remember Projectile. I think Projectile is closer to my sessionizing script. Anyways, so now I can I have four pinned files in which I can go to any of those pinned files with just a single keystroke. And so now it’s just like, because every time you develop a feature, usually you have like three files, you’re kind of primarily working in, and I can fuzzy find for the other files. And that’s that but usually I just have like these three power files that I’m always swapping in between. And so it’s like now everything is just, I wanna go to the browser, that’s one press. I wanna go to my workstation, that’s one press. I wanna go to a specific folder, I need to change folders. Sometimes you work between two different projects. So in TMUX, that’s prefix capital L will swap between your last two. So I have alternate projects, so I can even swap between projects and pretty much one key. So it’s just like, do, do, do, just trying to optimize it so I don’t think as much because I think search fatigue is a massive fail where you have to look for like when I see people on a mac Do this and then explode all the different ones that gives me anxiety I’m like why are you using your eyeballs to search for what you want to do like make it into a key press and never think About it again. (Time 3:36:00)
  • Master Your Editor
    • Learn your editor well and master its features for efficient text manipulation.
    • Vim motions offer a powerful way to navigate and edit code quickly. Transcript: Lex Fridman You have to kind of train your brain to know that you can navigate in the like spatially using keys yeah the neo vim by the way oh maybe it has everything to do with neo vim okay all right and Michael Paulson Then neo vim is obviously the next big one i love neo vim uh reason being is that i think you can make all the arguments you want about which editor is the best i do not think you can make an Lex Fridman Argument that vim motions aren’t superior here we go can you explain vim motions okay what is this so neo vim vim is a old school editor neo vim it’s a modern take on an old school editor Yeah and um what’s e-l what, what does it take to work with NeoVim? Michael Paulson Okay. I thought you were talking about a Vim motion there. That’s how, you know that, you know that, I know, but you know that meme that’s just like, hey, Jarvis, can I tell you about Vim motions? Because they can’t fit anything else in their head because they only have Vim motions. You said E-L like explain it like a five. Yeah. But in my head, it’s like, okay, E’s jumped to the end of the word, L’s one more. It’s like, dude, I’m so like broken. I’m like, okay, Vim motion when I hear letters. Yeah, so you can think of it like this, is that Vim has a language to describe movements in text because its primary mode of operation is manipulating or editing text. So it is a well thought through set of movements, deleting, yanking, pasting, copying, all that kind of stuff that goes in motions that are optimized for working with pretty much code. Good example, say you have three lines of code you want to delete. If you’re in VS code, take your little beautiful mouse, highlight those things, press the backspace. That’s lovely. Your hand left the keyboard. Very simple to do though. It’s very beginner friendly. I was a huge Vim hater, by the way. So I just want you to know that before we go into this, I was probably the biggest Vim hater. If there isn’t like Saul to Apostle Paul, I am like the Saul to Apostle Paul of Vim. So you can see how big the gap was. Or you can do something that’s like, I don’t know what the VS Code shortcut is, but I’m sure there’s some keys you can press to delete the current line you’re on. Delete, delete, delete. You can just do that. In Vim, I can go DAP, delete around paragraph. All contiguous code in that thing. I’m going to delete. So D. Then I can choose my motion I want to take, AP, around paragraph. Or maybe I want to D. F means jump up to the next character that matches the next character I’m going to press. So D, F, opening parenthesis, will delete everything from your cursor up to the first opening parenthesis. So you get to describe your motion in these little keystrokes. And as you get really good, you know, you’ve seen people that can master Fortnite. It’s the same thing with mastering Vim motions. When you get so good, you no longer think about each individual movement. Instead, you’re just like, get rid of the paragraph, jump here, jump this, highlight this, yank this, do this. You know, it becomes so fast that you can superiorly edit text at a very fast rate. And there comes a point where you when you know your language really well, you know, the problem you’re really working on really well, where editing text and getting code out actually Becomes one of the many bottlenecks. People always talk about, well, most of the time, I think most of the time, I’m not thinking I’m programming, I know what I want to do I want to go as fast as possible because I’ve been just Doing it for so long and I’m so familiar with kind of the general space that it becomes a huge problem for me I cannot tell you how many times that I’ve been purely bottlenecked by the fact That I just can’t type fast enough I just need to get the just need to get it out of my head onto the you know onto the text editor and so that’s why I think Vim motions are superior in all aspects. Keep your hands on the keyboard, on the home row, and you can manipulate text in very wide and fast ways. Lex Fridman So this is not just about writing text. This is about modifying text. It’s primarily about modifying text. Yes. And I’m sure that most editors, including Emacs, including VS Code, can do all those same things. But there is something that just don’t encourage you to discover those things. Yeah. That’s like an important thing about a lot of technologies and programming languages, that a lot of them can do a lot of the stuff. Yeah. But it’s something about whether it’s the community or the style of the language or anything like this that encourages you to not be lazy in the beginning and learn the fast way to edit Text in this particular example. Yeah. How to use the keyboard. That’s a fascinating sort of just reality of how technology is used. Michael Paulson You want to be encouraged to find the fast thing as quickly as possible so that long term it’s efficient fun to use it takes a long time for dividends like a long time but on top of that notice I didn’t say vim i’m not saying go use vim i’m saying vim motions um let me give you one more example okay i’m a big fan okay let’s say you have a line that can that contains some some variable Some function you’re calling something that takes in a string and you need to do that again. So you would typically copy that line, you’d paste that line below, you’d go into the string, and you’d change the string. Let’s say it’s calling some sort of configuration, you need to call it three times with three different configuring strings. In Vim, I like to do shift V to highlight the whole line, then Y. Some people do YY, but I don’t like to do double ones. I like to be able to do two different fingers because you can do that way faster than one finger twice. Just a little optimization for me because you can’t press that as fast. So anyways, very optimized in my approach. So I yank the line, paste the line, CI double quotes will delete everything inside the first occurring string. Then I can type the string, escape, save. And so it’s like so optimized that I can just jump so fast in between that whereas the copying and pasting line is probably the same speed but the navigating to the string deleting what’s Currently in the string and then you know like that’s such a fast motion in vim and i just do that all the time to backtrack really dumb question uh ci what’s the difference between typing Lex Fridman The letters and using the letters to navigate in that how do you switch between the two modes okay so insert mode means that you’re just putting in text yeah and then uh normal mode means Michael Paulson That you’re moving your cursor and how do you switch between the two uh escape escape goes from insert mode into normal mode and uh to go into insert mode press I to take your current cursor And go to the beginning. A to go to the end of the year cursor. Capital A to go to the end of the line. Capital I to go to the beginning of the line. O to put a new line below and then put your cursor at the proper intended for the language. Shift O to shift your current line down and then put a new line in. Like, you can see. Yeah, yeah. There’s like a lot. So you’re pressing escape a lot. Yeah, I mapped mine. I do Control-C. Control-C c does the same thing except for in one edge case people hate that i got used to it just due to the fact that i was using intellij and i really hate pressing the escape key so i just Lex Fridman Got used to pressing it that seems like an essential thing to do if you’re using new of m to map escape to something cap lock would be like your standard go-to oh yeah i map it too cool i got Michael Paulson You yeah so then it’s just really easy to press it and boom boom boom not a big deal at all uh but yeah i think that if you’re willing to learn it the emotions are superior but if you’re not Willing to learn it then they’re not superior you should just not do it right if you’re willing to endure pain it’s good if you… (Time 3:45:31)
  • AI’s Strengths and Weaknesses
    • AI excels at predictable tasks but struggles with complex or novel problems.
    • Be cautious of potential biases and prioritize learning fundamental skills. Transcript: Lex Fridman As it stands today, what do you think, what’s your general view about AI? What is it effective at? What is it not so good at? Michael Paulson Okay, so my general view is it comes down to something that’s pretty simple which is that if you’re doing something in which is very predictable ai is really nice when you’re doing something That is just not predictable ai is not very nice to use if you’re using anything that’s more cutting edge, AI will not be using it, or AI won’t be very good at doing stuff with it. Like it’s it’s not great at Zig, because Zig is just like, say less documented. It’s really great at TypeScript. I think there’s a lot of there’s a lot of interesting things that are going to come down through AI that I think a lot of people aren’t really prepared for or thinking through. TJ is kind of the genesis of this idea, but the idea that I think there’s going to be a lot of kind of market manipulation, if you will, through AI, meaning like, hey, you want to research, Say, best woodworking tools. Someone’s going to be buying an ad spot. Someone’s going to be buying premium training data. They’re the ones that get the big boost in the LLMs, but LLMs don’t really have to market as an advertisement because it’s not really directly an advertisement. They just had a more premium spot, per se, in the training data, a little bit extra learning to it. It’s like there’s a lot of things about AI that I fear upcoming. A lot of it just comes down to people not learning or making the trade-off where productivity is the only thing that matters. And I don’t think productivity is the only thing that matters. If you want to build something complex and difficult, productivity is not the only thing. You actually are going to have to do deep learning and kind of pursue it beyond the basics. And so I see AI as kind of like this really cool thing. It feels like a magic trick. I remember the first time I used it, I got early access to GitHub Copilot. In fact, Nat Friedman saw my Twitch clip of me asking GitHub for it. And he sent me early access himself. It was awesome. And when I used it, it predicted an if statement correct. And my mind was just absolutely blown because I had nothing before then. And now it’s just like first time ever. And I just remember thinking, man, this is going to change programming so much. And then the more I used it, the more I just, for me personally, I kept introducing bugs. And I couldn’t figure out why. And what I realized is that I kind of developed, I wasn’t co-piloting well. I was autopiloting much better. And my ability to read code versus my ability to critically think and write code they’re definitely different sets of skill levels i don’t consider as well when i just read code as opposed To when i write code and so i i struggled there i do think that’s the skill set yeah skill issue for sure skill issue but people who are not aware that’s like a hashtag thing sometimes used Lex Fridman Mockingly in this case, there’s like several layers, mockingly, but also seriously. Yeah. Meaning like the criticism is grounded in the fact that you lack the skill versus some kind of fundamental truth. Yes. I think that that’s the reason I use actually Copilot Cursor a lot. It’s for developing the skill of editing ai so i can just learn how to do that better and better because i think as i do that better and better i start to utilize ai better at this time it is A bit of a boilerplate code thing but you can do out of the box kind of novel design decisions or tricky design decisions from scratch, but fill out stuff using AI and then just learn the Skill of modifying. I personally just, it’s more fun to program with AI. Even when I delete a lot of the code, it’s more fun. It’s less lonely. It’s more, it’s what I imagined like pair programming to be, but I’ve never done it. But it just feels like that friction that you get when you’re like staring at an empty thing is not there. Like empty function, empty class. It’s just more fun, less lonely. And I do think that a lot of the easier type of coding, it really helps with. Like interacting with APIs, basic things that I would usually have to look up to Stack Overflow for. It’s just really fast at that. Like as an example, just interacting with the YouTube API. The YouTube API documentation is not very good and you can just load it all in there and ask it to generate a set of functions that access the api did all kinds of read and write operations And it figures it all out and then you could just well you do have to read you have to read and check everything and you start to develop the skill of understanding where it misinterpreted The task. So you’re, what is that skill? I don’t even know. You have to kind of be empathic about what the AI is, what its limitations are. A lot of the times that has to do with prompt engineering. You have to like, at the same time, understand what the AI is aware of. Like, what did you actually give it as data to be able to generate the code? A lot of times we don’t realize that we’re not giving it enough information yeah so you have to like actually okay okay all right you have to like be empathic be like okay these are the code The files it’s aware of this is the specifics of the question you asked it like you have to like imagine you’re an intern that doesn’t know anything else. Oftentimes we want the AI to figure out the things that’s left unspoken, but you can’t know those things. You have to specify those things. And so you have to actually be much more deliberate and rigorous in the things you specify. It’s to spell it out. And so I just have this sea of prompts that I have saved up. And I’m building these like library of different templates for prompts. And it’s a mess. And I’m sure there’s a lot of developers that have this similar kind of mess. So a lot of it has to do long term with the tooling that’s going to improve that. One, the systems are going to get much more intelligent. We don’t need the nuance. And two, there’s going to be the tooling that allows you to specify those things and load it in correctly and give all the context that the system needs in order to make the good decisions. And maybe the system asks you follow-up (Time 4:18:43)
  • AI and the Future of Programming
    • Don’t fear AI replacing programmers entirely, but expect job evolution.
    • Focus on complex problem-solving and deep understanding to remain valuable. Transcript: Lex Fridman That means the pool of people who can get programming jobs changes rapidly. So they’re really concerned. Michael Paulson To some extent, right? Because no matter how much we want to say how good AI is, there comes a point where there exists a bug, there exists a large piece of software in which to describe the change requires just Like pages and pages of description to the point where it is significantly just faster or easier for someone to just whip something out like there’s definitely a balance there it’s Not like a perfect trade-off and so i i still don’t i think people need to quit worrying and think about how they can integrate it and try, like prove it to themselves. Do they actually make themselves irrelevant? And if you truly make yourself irrelevant, I would challenge you that you’re already like, you’re just doing something that was just slightly too complicated to automate. Writing just straight up crud apps from back end to front end and like simple table displays like yeah maybe we just couldn’t quite automate that away and now we just have something that Can just do that a little bit better so now that’s automated away but that’s not really programming that’s almost like building legos at that point where the design’s already set you Just simply have to move piece from bag into correct position yeah (Time 4:44:39)
  • Advice for Young Programmers
    • Young programmers should prioritize developing passion and skills.
    • Maintain a work-life balance and don’t compromise your morals for success. Transcript: Lex Fridman Given all that, can you give advice to young programmers? Like this is another question from Reddit, the infinite wisdom of Reddit. What should a person in their early 20s do to move forward in the tech industry? And this is an interesting addition to the question. And by doing it, will this be walking on someone else’s path? Michael Paulson I am going to try to answer that question, I guess, the best I can. Which I think that if you’re entering into the tech world, one of the hardest pieces of advice that I took a long time to learn was I became enamored and addicted. Obviously, we talked about that program for way too many hours. Forgetting to spend the time I needed with my wife, with my friends, all that stuff, like totally wrapping myself up into one activity. I think, though it made me who I am, was probably an unhealthy activity and probably not a wise activity. And so the best advice I can give is that you got to develop the love, the skill, the desire for whether that’s just only using AI agents, programming yourself using Zig or programming JavaScript, whatever, you know, that flavor is, that’s going to get you coming back every single day, getting the reps in the gym, if you will, for programming, but also knowing how To value what is valuable, and not getting lost in the sauce where you’re just so stuck on trying to make the next greatest startup that you sacrifice your health, you sacrifice your Relationships, or even worse, you sacrifice your own morals to take certain shortcuts that you probably shouldn’t be taking in life to be able to achieve these things. Because, you know, I’m sure there’s hundreds of horror stories you could hear where people definitely shortcutted their morals for, you know, monetary success. Yeah, I mean, the golden handcuffs, comfort can destroy the soul in some sense. Lex Fridman Yeah, so that’s, yeah, I mean, that’s really important to remember. But would you, you know, there’s young people kind of thinking, do I even want to be a programmer now? (Time 5:01:17)
  • Parenthood and Work
    • Having kids changes your perspective on love and can increase productivity.
    • It shouldn’t be viewed as a trade-off against work but as a unique experience. Transcript: Michael Paulson Can be something very, very exciting about that in some sense, especially if you’re building your own thing. I can imagine would be very exciting. Like if I was Amazon, Jeff Bezos building Amazon, one could imagine that those early years were probably very rough. And the amount of hours he probably put in were very, very rough. But I will say that there’s this kind of unique aspect in our culture where we kind of make this as an equal trade off between family or work. Like, oh, you don’t, you do or you don’t have to have kids. And my only kind of real notion with that one is that you will never know your capacity for love until you have kids. Like, you just don’t know. And some people are like, oh, yeah, but I love my dog. It’s just like, I loved my dogs too. And then I had kids, and now my dogs are, they’re all right, like, I like them. I could come home and I pet Indy, and I’m like, oh, Indy. And then I’m just like, okay, bye Indy, right? Like it just, I can’t even describe the difference between the two. Yeah. Cause they’re not, it’s not even the same. And so it’s very, that trade off you’re making is no one can tell you what it’s like. Cause there’s a real reality that’s right now. And I’m sure I’m 100% positive this is with my wife as well. Where if right now we got news that said, you have some medical procedure where if we do this, you will die, but your kid will live. There’s not a question in my soul that I wouldn’t do that. Right? If I was given if I could look into the future, and if I had to die right now, knowing that my kids would have a better life, they would be happier, they’d be more fulfilled and all those things. I guarantee you either my wife or I would take that every single time. It’s just like, you will never be able to say that about most things. People jokingly say that until it’s actually on the line. But it’s like with that, you just have this ferociousness. I can break out and sweat thinking about somebody fictionally pushing my kid to the ground. Like actually get, you know, real adrenal responses flowing through my body. So it’s just like such a different world. And it’s hard to explain. And you could never have convinced me when I was young that it’d be this big. Yeah, yeah, I thought I knew. I didn’t know. But (Time 5:10:24)
  • Ligma
    • The term “Ligma” became a meme after a prank on streamer Ninja.
    • Paulson has been tricked by Ligma-related jokes multiple times on stream. Transcript: Michael Paulson You know, I’ve died by Ligma quite a few times. Ligma. So do you know the origin story of Ligma? No. So Ninja, famous streamer, someone got him with Ligma said like, Oh, something like, have you heard about Ligma? And he was like, no. And he’s like, Oh, Ligma balls. Right. And then after that, Ninja got like so hurt by getting had by that, that he started banning anyone in chat who said the word Ligma or something like that. And so then it’d be, you know, if you don’t embrace the meme, you get destroyed. Now, of course, gets destroyed. And so then the whole goal is that can people get me with Ligma? TJ did iLadies. He’s like, oh, did you hear that eGirls got renamed iLadies? And I just didn’t even see it coming. And I was just like, what? And he’s like, iLadies, on your face and then it’s just like oh my gosh and then a pirate software has also got me like oh have you heard about google SEMA which SEMA is a real product by google And I’m like oh yeah I’ve heard about this what is this again he’s like SEMA balls right it’s just like dang it how do I keep so I’ve just had it happen live on stream many many times I’ve died By Ligma the most Please ask (Time 5:17:10)
  • Dict Question
    • Paulson’s Stack Overflow question about measuring Python dicts in bytes was deleted.
    • The team complimented his innuendo-filled question but banned it for being inappropriate. Transcript: Michael Paulson Okay. So that’s D-I That’s dictionary in Python. Who doesn’t love dicts? Lex Fridman Yeah, that’s a great question. Michael Paulson Just a dict party when you use Python. Lex Fridman I love dicts. Michael Paulson That should be a t-shirt. That’s actually a hilarious t-shirt. But so on Stack Overflow, you can ask any question you want. And I decided to craft a question one day on Stack Overflow that says how to measure your dict in bytes. And then I proceeded to really go to town and like explain all the different things like, well, what about the cost of the strings and the references? And, you know, like when you really get both hands on your dick and really go after it, it’s like very hard done, like really threw in some innuendos. The Stack Overflow team deleted the question and then someone hand wrote me an email explaining why they deleted the question and complimented me on how thoroughly and thoughtful The question was just to weave in innuendos and that the entire team was impressed but it’s inappropriate and it had to be deleted and don’t do it again or we’re going to ban your account And so it’s like very funny moment and so i was like oh that’s funny you know that happened uh two that was about six years ago last year i was at a conference and there’s a guy wearing a stack Overflow uh name tag and i was like oh you work at stack overflow he’s like oh yeah i do i’m like do i got a story for you and he goes no wait a second are you the dict guy yeah like that was his Only question was that and i was just like let’s go i didn’t even say anything about me and he already knew immediately i was the dict guy i (Time 5:18:13)