Primeagen === [00:00:00] Hi, and welcome to PodRocket, a web development podcast brought to you by LogRocket. LogRocket helps software teams improve user experience with session replay, error tracking, and product analytics. Try it free at logrocket. com. I'm Chris, and today we have the Primogen with us, best known for his content creation, Twitch streaming, and trolling. Welcome to the show, Prime. Thank you for having me. I feel like we know each other pretty good, but can you, let's tell the audience though, what does it feel like? to be the biggest troll in web development right now. I don't know if the biggest, but you are definitely there. Okay first off, there is a list of questions that you guys have provided me with, and it originally said the bad boy of web development, which Chris stated he refused to say before this podcast, so I'm a little offended about how does it feel to be the biggest role? So I actually like to think that I'm not a troll in the sense that I'm not trying to hurt anybody's feelings. I just feel like I don't necessarily fit in, but I've always been under the impression that things are [00:01:00] only awkward if both people agree to it. And I just refuse to agree to it. I grew up in a small town. I was always the outsider looking in when I was living in California. I did not necessarily feel, by the way, did you just hear a window sound? Okay, good. I came from a small town. I never necessarily felt like I fit in. And California, I always felt a little awkward because I didn't like traffic. I would rather be outside. I'd rather be, just like in a different environment. I didn't really like it. I liked cold weather, right? Again, it doesn't make any sense to be in the Bay area if you like cold weather. So it just made me always feel just like slightly just awkward in some sort of sense. And I realized that it's like a dance. There's a bunch of people dancing and you could wait for someone to ask you to dance. Or you could go and ask someone to dance. And so I was like, forget about it. I'm just going to be the person that just goes out there and I'm just going to try to make something happen because I can't just wait for someone to be like, Oh why don't you come on in? And so [00:02:00] with web development and all that, it's that it's not that I don't think a lot of technologies are super cool, I'm just old and I've done this for a long time and I've met, I've shot myself in the foot a bunch of times. And so when people get super excited about something new. It just worries me because, you work at Netflix trash, you've seen the code basis. There are new ideas that are now eight years old that everybody writes blogs about, about do not do not use class components. That was like three hype cycles ago. And we're still like inundated with class components. And so that's one of the dangers of constantly falling on the, the hype sword. And so I'm just out there. I just try to push like, Hey, Maybe we need to slow it down a little bit. I'm not trying to troll people though. I do making dumb statements. Okay. There's a difference between making dumb statements and trolling. Yeah. I can agree with that. And I do agree with you that especially like in these echo chambers that we are both part of, it does feel like it's like a different flavor of the week. And I feel like a lot of them don't [00:03:00] realize that. There's stuff that exists outside of that and they take it as gospel, which is super concerning. So I think it's like very important. It's like you said, Netflix, like it's an older code base. We're not going to rewrite our code base every time something new comes out. Flavor of the week became flavor of the decade for us. That's just what happens at big companies. And so picking and choosing what you do should not be because I said so, and I try to make that really clear don't listen to my if you ask me, what should I use? I'm going to say you figure it out, because I don't want you to listen to me, because listening to hype cycles, or what is the hottest thing, you will just often just have a decision you regret in a few years. And if you choose something you like, you'll probably still have a decision you regret. The truest answer is that everything you do will be crappy. In a few years, I don't know about you, but the next job I want, it better be Next. js, Prisma, and some cool stuff. All right. react server components, tail, wait, hold on. Stylex. Not tailwind. Nobody does tailwind. Okay. Everyone uses UNOC. Stylex, everyone uses shad, CN, everyone uses shad [00:04:00] UI or whatever it's called, Yeah, get it right, man. Get your acronyms right. All right. love grunt. Actually. I like a gulp it's web pack. It's parcel. It's snow pack. It's actually turbo build. I know we still use, do you see do you see the problem here? I just named my I, I wrote my own bundler in Java. Of course you didn't. Before Grunt was a thing. Before Grunt was a ago. That was a long time ago. Yeah, we had to figure out how to bundle files. And I was like, I could do a tree! And so I made my own little bundler. Yeah, you're dating yourself. Dating yourself for sure. Okay, we're getting, we are rambling, my friend. Anyway, so that's why I'm a bad boy of this is that I okay first off I'm not gonna say I'm a bad boy that you know when I say it I feel like the bad guy off of despicable me with the I didn't say it. And the balding spot I just gotta get some sweet dance moves on but yeah It's just that I just want to be something different and I don't want to just simply love everything that is currently there [00:05:00] Try to find what I like Yeah, I don't even think it's like loud about it I don't know, I don't even think it's like a matter of being different. It's just that we, or some people can just like, they like what they like and they just don't really follow bandwagon y type stuff, right? You know what I mean? I don't think you or some other people are being different for the sake of being different. It's just just who you are, right? And people have trouble with that sometimes. It's just fine. It's fine. Oh, but, okay. Let's go to the next question, because we just got through the first bullet point, halfway, and I think it's already been, like, We're already going off track. Yeah alright. I'm actually interested, I think I've heard you explain this before what is this, the primogen? I heard you say it's like from some movie. no, it's not from some movie. I Video game. Video game. Is it Turok or something? is a real problem among developers. So I, when I was young, there was a video game called Turok. It was the greatest game when I was a youngster. Okay. And the last leader specifically in Turok 2 was. The primogen, I thought it was super awesome. And when I was a kid and we had our [00:06:00] very first internet games one of them was called grail or grawl. I'm not really sure how to say it. I was in sixth grade and it has two A's in it. And I still don't know how to say words with two A's in a row. And so that game, you could pick your own name. So I had that as my name and it was fantastic. Yeah. I'm going to silence my phone really quickly. Hold on. I'm positive. You're picking up some of that. I 100 percent picked that up. I just picked up my phone. Wow. So I, I had that as a, like a young kid. That was the handle I used. And then I grew up and I never did anything again. And part of this, then I started writing Falco and I, I was un, I was underscore Michael Paulson on Twitter, and I was like, all nice and professional going to these conferences. This was during like the heyday of I, I guess the old guard of Twitter, and so I, wouldn't know. you were old. I don't know what you're trying to get away from here, Chris. You're certainly not getting away from time. I'll tell you that much. But I'm just making sure I'm in the right spot. This is a podcast. You can make dramatic We gotta start over from the first [00:07:00] greeting. it start all over. But I just wanted like at the fall out of Falcor and everything going downhill, I just realized I didn't want to be in this buttoned up professional scene. It never really was me to begin with. I was always the person that was probably going to say something, maybe a little too inappropriate at a conference, get in trouble, right? Like I just, I don't know where the boundary is. And I often like to figure out where a boundary is. By crossing it. And so that's like usually a problem. And so I just screwed. What was something I what was something I really liked as a kid? And I was like, ah, I really liked Primogen. That was like, I really liked that whole video game. Boom. That's the name. And during that time, I was really like, Someone who I always looked up to, especially even as a kid, not for bodybuilding, but because of who he was, Arnold he has this like thing that he talks about where he said that nobody wanted to hire him. Nobody wanted to work with him. His accent was strange. He was like, like culturally outside. Everyone thought he was weird looking. It was during the [00:08:00] day and age of being small, like trash small, not like Arnold big. And so it's like he completely broke all the mold. And then his last name was just super bizarre. Everyone couldn't, you couldn't say it. You will never make it in Hollywood if you don't change your name. And now his name is the strong suit. His name is the thing. And so I was like, that's like my spirit animal is to be the outsider. And I will have the strange name and it will go from being a weakness. To a strength. That was a lot deeper than I anticipated. That was a good answer. Okay, I thought you were gonna stop at just video game and then, call it a day. No. you brought in the big Arnold Schwarzenegger. Did I say that? I don't even know if I said, I don't even know if I said his name right. you did. Because his name is the strength. Is it? Okay. Oh wait, he's our chief action officer, isn't he? I Wait, we have a chief action officer. thought it was Arnold Schwarzenegger. Like it was like a, it was like a gimmick. Oh, I don't even know what you're talking about. Do you not go to the hall? Hey, okay. Apparently not. [00:09:00] Okay, anyways. Alright for the editors, cut this out real quick. Trash being a loser. I don't know anything about the Javascript Rising Stars. Let me be, I've read it a little bit. Okay. Just want to preface that. Okay. You ready? You ready? Okay. You recently you can ask me you can just be like, Hey, can you tell me a little bit about the JavaScript I'm gonna Hey, you can frame it. So you don't know. And I can tell you everything that's on it, I the way, Emily, do you ever get in on this? Why is your camera off? She's Sorry, it would, it did. I usually don't because I let everyone just run We want to see you too. Yeah. Okay. Like I'm being bamboozled a little bit because you were the reacher outer and now I have trash dev. Real I'm the best, I'm the best host of on PowerRocket. Okay. What do you mean? All right. I'm turning my camera off. This is BS. Okay, so private did tell us about JavaScript rising stars. Why did you what do you think of it? What were the standouts? [00:10:00] Yeah. So JavaScript Rising Stars, for those that aren't familiar, is that they take a couple metrics. I think some people are accusing it of vanity metrics, whatever. Doesn't really matter. Just some set of metrics that show what is going on GitHub and what is popular. So I think that the primary, the North Star, or maybe even the only metric was the change in stars. For the last year, so 2023, what libraries had the most change in stars positively? And those were the JavaScript rising stars. I'm pretty sure that's exactly what it is. I could be wrong on something. Maybe there's like forks were included or watchers, but in general, I believe it's just stars. And so it was just like showcasing where is the kind of the JavaScript zeitgeist, if you will, during this time. And it was very interesting because if you looked over the years, you could actually see Some things that were very popular at one point that now nobody would use. It was like a, almost stepping through history when you went back to 2016 and how hot and new and fresh, and those were the [00:11:00] future. And those would alleviate all the problems. And then you get all the way fast forward to today. And it's just a vastly different set view was on top for many years. And now views no longer on top. I forget who was on top at the time. Maybe bun or something like that as top projects, but, one of the cool things was, is that HTMX was actually on the list. It was in the top 10 most changed positively in absolute terms stars, which is pretty surprising because it is a kind of like the antithesis of modern web development library. And it itself is having its own Renaissance, even though it's been around for a decade. There's been white papers about it for about the last 40 years. And so it's not. It's none of the concepts are new, they're just now becoming popular. And so it's a very interesting kind of walkthrough to see what people consider to be popular or good in 2023. I'm curious. So like the whole like HTMX thing, like it's no, it's no secret that like they, the marketing, like the whole memeing. In our space, contributed to like [00:12:00] the awareness and the popularity of the library. So since we you mentioned that it's like the vanity metrics, right? It's just like stars and, stars don't necessarily tell everything. Do you think cause I'm looking at the stats now, it's like HTMX is like right behind react and react is obviously like the biggest framework, currently above development. Do you think. By lines of code. Got em. What was that? Do you think like the usage do you think like a lot of people using htmx? I see it everywhere I go. I see people like either memeing about htmx. I don't know if like people are necessarily using it. Are you like aware of the usage around there? Or is it do you think it's like on the up and up there? It is on the up and up. I've been seeing many jobs now being posted with like htmx. Requirements anytime I reach for an internal tool, like if I, if you'd said, Hey, could you build me an internal tool at Netflix to do this? We, you work there you've used jet pack, all about these kinds of things, right? If I were to start a jet pack app now, even though it's react to begin with, I would literally throw out, react, bring in a template system. And just use HTMX for almost all internal tools because I'm [00:13:00] going to move 10 times faster. It's really simple. I just end up, I end up having these, I, by the way, what, to what level can I curse on this podcast? You can curse as much as you want. I just might bleep it. Okay. Apple has like a one curse word rule per Okay. Okay. I was it up. There goes the quota. masturbation. Is that too much? I don't know if that's going to work. don't think I can leave that in. Okay. Okay. I was just checking you were going to say shit or something. No, dude, you got to be you got to be, you got to be at least clever with how you say things. If you're going to curse, you might as well curse in a fun way. Not, anyone can say shit. You want something that's but it brings the right mentality. Like, how do you say. Where you're just like pleasing yourself with design, but not actually doing the real thing, right? Because that's as close of a word as I can come with Self pleasure. Yeah, I know self pleasure somehow sounds actually worse. Like I don't know why that one sounds worse. Okay here. I'll just keep on going. The [00:14:00] problem is that if I were to use react, which I have, by the way, I built an internal tool using react is that I end up spending way more time thinking about and building up the structure and then when I need to refactor the refactors feel longer, the cycles just feel slower, whereas when I'm using just HTMX, I'm just focused on change and these small parts. And it's I can whip them in and out really fast and come back later to it. And with the coupling of V0 now that a Vercel tool to be able to just generate. Quick things. I look like I'm a freaking genius with UIs, even though I'm not a genius at all with UIs. They all look like I'm at least 50 percent or better with UIs, which is Pretty good for someone that doesn't write any UIs. And so it's, it, I've just really enjoyed it because it's simple. I can actually accomplish something quickly in an afternoon that's reasonably impressive. Interesting. I need to try it out. I was listening to a podcast with Carson on there and he was pretty much saying of course we can't get to the level of interactivity that React can get. But for your most cases. You [00:15:00] probably don't even need that much interaction, right? So it's like htmx is like that happy medium to get you there. And if you need more than maybe you can go reach for something else. But I think like for most cases, you're going to be fine. You find that to be true. So the not the television app. The television app is unique in its own way, and I can explain why later, but just take the website app. How much of it is actual, real, fully required client side interactivity? when you click something, yeah, there's like a CSS expander that expands stuff and there's some tabs and all that, but none of that's really needed to be fully cached client side experiences. It can be server driven actions. It's almost like you're playing a video game. And the video game instead of having a 60 FPS sending down of UDP packets, RTMP, blah, blah, blah, blah, and said, it's just driven by user interactions, like the lowest frame rate video game you've ever played. And that's it. And to me, just most apps fall into that category. Some of them, it is just too complicated. And a good example I use is [00:16:00] Conway's Game of Life, you would never Drive con Conway's game of life from the server. It would make no sense. You'd have to generate out, a thousand divs on your server, then send them all down. It would just be really dumb. So that seems like a really easy place to throw in a web component. A web component will live forever. You write a web component once. In 20 years, that same web component is going to work, and it's not going to be hard to understand. And it's going to be like 50 lines of code. You're not going to need some 100k library to make your thing run. You'll just be able to run that one little thing. And so that's how I look at it is that when I really do need to break out into interactivity and do something, I can write something that will last forever and is completely transferable. I make a new site. I literally copy pasta web component, boom, it's running. I'm not saying web components are great. They're actually not that great. They're a bad experience, but they're not as bad as having to recreate an environment at a specific point in time. I guess this is a good segue. So let's talk about, so we talked about htmx, why you think it's all [00:17:00] great. But let's talk about react. I feel like I've heard you in the past like ramble or rant about how you feel about react. And I think that's. That's something I would love to talk to you one on one about. let's talk about, let's talk it let's just one on one just me and you, nobody else, just you and I. All Emily, you're going to have to hang up now. No I would first like to say that React is an incredibly impressive piece of technology. I think that what they did with the classes was really awesome. The transition from jQuery to React was an incredible time. I think what they did was very impressive. I think functional components and how they're trying to attempt a new way to handle state and to be able to almost make it as if classes and State containers were like, they're almost like orthogonal lines on a graph. I thought it was really cool. I really did enjoy a lot of that stuff. I think that server components have a lot of potential and can solve a lot of kind of shitty problems that just simply exist. The problem I generally have with react isn't a react problem. I [00:18:00] think react is more like. It's if you broke your leg and you complained about pain, I wouldn't give you a painkiller to be like, and you're better now. It's no what's the actual problem here. It's, you need a splint. We need to actually get you better. And so what I see is that you have a server. It has a bunch of state you. Make a request. You say, give me your homepage. It goes to the homepage and says, okay, let me get, are you logged in? Oh, you are logged in. I don't need to display this button. I need to display an account button with these kinds of, flags, because you may be an editor. You may be a manager. You may be just a viewer, right? I have to ensure I send down all the proper ability for you to display a menu. And I'm going to translate that data from the database into a different format called JSON. There's other formats people use, but. Primarily it's JSON. So I codify all this business logic into a typeless container called JSON. Then hopefully you have typed everything correctly. We're just going to pretend typing is not a big deal, but nonetheless, you do all that. I'm going to stringify all that information, [00:19:00] send it down the wire. And then that on the other side, you will take it hydrated. Then you will get that state container, and then you will make decisions about what should be displayed. So in other words, the actual business data. Gets performed to business logic translations before it makes it into HTML. And to me, this is just like the amount of oopsie daisies that can go wrong in that pipeline Is just twice as large because you have to make the same decisions twice. It's like you should show the button Should I show the button? Oh, I should show the button. I will now show the button. When it's just like, why didn't you just make the button to begin with? I don't understand why we had to do this little dance. And then furthermore, is that now we have this secondary problem, which is you now took the JSON and your client now holds onto that state. And now you need to update it. How do you update it? And who needs to be informed of set updates? In comes Redux, right? Redux is an attempt at trying to simplify this problem, which it always [00:20:00] boils down to some sort of a global event bus. Or signals, right? Signals are the answer to global event buses in some sort of sense. They're trying to minimize that pathway. And these signal stores are just like trying to minimize that pathway. And I think they're really fantastic. There's a lot of really great ideas, but nonetheless, you're still doing the same thing. You're trying to reconcile something that has already reconciled once. And so it's just like reconciliation to more reconciliation than needing to update and then making sure that we dynamically reconcile again. There's just so many layers of things go wrong. And the final part is people always say what about offline? I'm going to be real with you. There's four apps in the universe that work well offline. The rest are horrible. So don't give me that. Oh, what about offline stuff? It's go ahead. Use Twitter offline. You know what you'll see? You'll see a couple of lines and a little cloud with the line through and a retry button. Like I could also probably come up with that with the web worker, right? I could also handle that one singular case that you are just [00:21:00] so dying to handle with 40 lines of JavaScript. It's not that complicated. Okay, there you go. So that's how I feel. And like I said, notice that everything I said wasn't react specific. It's just that what I see on the internet and you'll see a lot of people on Twitter and they're like super aggressive about it being like people who say you should learn, react, just hate new people. And you're like, no, that's not what I'm saying. I'm just saying. Maybe it's really complicated and it might be hurting new people. I'm saying the opposite. I'm trying to say maybe there's a simpler paradigm, one that actually makes people just understand request response models and basic like database to HTML transformations, not 9, 000 things at once. So you think like the problem right now is just like the abstraction, just it's too much abstraction, right? So you just don't even know what the platform is even capable of, or just dealing with the raw primitives, right? No one actually. Like some people just don't even know what the request response objects are. Cause it's just so far removed from you. Exactly. And it can be confusing. And this is where I think you get into bad request patterns. You [00:22:00] start seeing really chatty clients that just make 500 requests. It's because there's not like this strong notion of what's happening. And you're just trying, you're just breaking it up to what makes sense for you. And that's totally reasonable because you've never experienced anything else. There's been no need to experience anything else, but I don't think it's good. Generally for people. And the thing is that software is not. It is not a good thing to own. It's a liability almost exclusively for every company, unless if you build software really well, then it becomes a moat and that's like a danger. So all these little companies trying to get something off and they just get bogged down with these really tough things that start fast and then features become excessively slow. They're just creating liabilities. They're not creating moats. And it just worries me, and I want people to feel successful, feel like they understand things. It's there's all, I see this all the time. I fall into doing this and I feel stupid doing it. I'm trying not to do it all the time. I just saw one with Nix and NeoVim. If you don't know what Nix is, it's like a way to be able to create a state in your OS with all the dependencies and everything just by a simple script. [00:23:00] And then someone's Oh, I'll make it so that Nix will be able to drive your NeoVim configuration. So you can just have LSP and everything set up. You just Nix go. And it's just and just poops out this beautiful NeoVim experience. The problem is that once you start configuring plugins, you like inline a bunch of how you would do it in NeoVim, but in Nix, and it's slightly different. And so it's you have to learn an API that's interacting with another API. And that's like a lot of modern web is like we wrap an existing API with another API, but then you get into these problems where now you need to learn actually about the inner API to make sure that you actually make the outer API good. Because now you're being too, your performance suck. You're seeing these like half second chunks. What's going on? We'll actually need to learn about the inner API by manipulating the outer API. And it's just like this, these API abstractions. I don't think they solve anything. Yeah. I think like just like counter argument, I think the abstractions are there for like productivity sake. But when you do run into where you actually need to understand the [00:24:00] underlying layers is when it's like what you're addressing, right? It's Oh, now something actually is broken, maybe performance or what have you. I have literally no idea what's happening on the inside. And as I peel back this onion, I'm just even more confused. Cause all I. Because you're just, like you said, you're just maintaining like this facade, right? There's just between two things and that's all you know where that's really all you can go. Does that make sense? Yeah. Let me actually hit you with a counter argument to your counter argument. So with what you're saying, I, what I would personally say is that if your application isn't too complex to run into that problem, you're probably using, you're probably hunting a rabbit with a cannon to quote Mihawk, right? You're like using the wrong device, right? You're doing a simple marketing page using three megabytes of JavaScript when you could have just used. Almost nothing and it's just five requests like that's it. Why are you using so much stuff? Okay, so maybe you shouldn't use it Okay, let's go the other direction Let's say you get to that point and it is that complicated and you're really having to dive in and take apart the internals and Really? Maybe that is too not powerful enough of an abstraction that you're [00:25:00] using So maybe you shouldn't use it either Like I don't see it's hard for me to see these worlds where it makes a lot of sense to use them Other than when you're just simply super familiar with it And you can, it's just the benefit, the, what's the term I'm looking for? It's like the scale of familiarity. It's what people call development ergonomics. It's once you've used something enough times, your ability to build something gets faster and faster and faster. So I can see that as a really valid argument. It's just yeah, maybe it's not the best, but 10 years and I can build something pretty quick. I'm like, okay I can't argue that. That's an argument I can't defeat. Because that's not an argument on facts and logic. It's an argument on experience and that's your experience. And you should, that's probably the right tool for the job for you. I agree. I agree with that take. But it's at the same time, the counter to your counter argument, some people go to jobs and that stuff's already there and they can't, that's just what they got to do, absolutely. Take a company writing a library in JavaScript right now. I don't want to write the library in JavaScript, [00:26:00] but Netflix has decided that it's been a sentiment for back, especially back in the old day that UI engineers were incapable of writing anything but JavaScript. Hence the reason why we had Groovy. That was actually one of the arguments is that JavaScript engineers were not really able to write Java. That was a real sentiment, what a decade and a half ago. That's how we got Groovy. And now we're into just, and Groovy obviously is a terrible language. So now we have JavaScript because that's better than Groovy. Agreed. It's just. I am stuck writing something that I don't think is the best tool for the job, either for my ability or for the problem at hand, but it is what the company has decided. Therefore, I will do it and be a good team player. Exactly. I've seen you write some Rust at work. See I'm writing a little rust. I was exploring some logs using rust. I was down like, like I just got done downloading two gigabytes worth of logs and going through them and string manipulating, having to just do a bunch of string manipulation and I'm pegging my CPU at 400%. Just because I'm downloading enough. So it's like that job just would have taken me an hour and a half [00:27:00] a node to run, or it takes me like 10 minutes in. So it's yeah, I'm just going to choose the right language at this point for this particular job. Sorry. I have a interesting one. So I see you always it looks like you came around to JS docs. It seems. Yes. JS doc. Docs makes you sound, you sound like a boomer when you say JS docs. What am I supposed to say? JS doc. Oh, okay. Yeah, you're right. You're right. I apologize. Anyways, so let's talk about, let's talk about this. You, do you think framework should start ditching their TS files, like spelt? So I actually think JS doc is really cool and really not cool at the exact same time. Let me hit you. Let me hit you with the reasons why. One, it's a little bit more inconvenient to type, right? It's just not as, it's just not as nice. I totally am on that team. I have some nice little, there's a nice little library for Neovim that uses TreeSitter that will walk your function, grab how many arguments there are, and then like snip it, populate it out. So there's there's some things that kind of work. They've had this in NetBeans, a decade and a half [00:28:00] ago with Java. So it's not like the problem space isn't solved already, but nonetheless, there is that whole. That, that whole inconvenience there. But besides for that, once you type something with JSDoc and you have TS server installed, TypeScript server translate JSDoc into TypeScript types. So you get all of your TypeScript types, but the reality is you don't need types always. Meaning that you don't specify all your types. I'm sure you're Mr. Please infer everything, right? So you don't necessarily type everything. So you're already getting away with this to begin with. And anytime you run into a complex type, you can do a DTS file. And just be like, all right, here's, I'm going to, I need to break into some TypeScript and just really, type of key of, like really get in there and start, doing some complex TypeScript stuff. And then that just works in JS doc. And so then you have all the benefits, but you don't have to have yet another compile step. And this is particularly useful when you're building Anything to do [00:29:00] with small tools that you want someone to run or for you to run, you don't have to use bun, right? How annoying it is to go to your coworker and be like, Oh yeah, can you run the script? Oh yeah. Can you install bun first? It's just dude, nothing makes you look like more of a loser than trying to get someone to install an entire tool chain on their computer to run your 15 lines of JavaScript. Like you just look like a dummy. And I want the, I want a nice experience where I can have types. I can say, Hey, this is a string array. And then I can have my nice little methods pop up. So I don't actually use anything. Cause I always forget if it's contains or includes, depending on the language, one's contains one's includes. And so it's I need all those little things in there. And then boom, it works the same, I get the same thing and I can just say, node run. There's no extra steps. And I have these nice little scripts that run and then frameworks and libraries, they don't have to have nearly as complicated. Development, they can skip the steps they don't care about. And then they still generate DTS files at the end. All their public APIs are fully, TypeScripty compliant and no one using their libraries, none the wiser, they just don't have to have [00:30:00] TypeScript if they don't want it. And some people that's like a huge W if you can just run, like the whole no build revolution by DHH being able to not build anything and just run JavaScript. It's shockingly refreshing. It's just nice not to be like, ah we better have our build team, make us this new thing work. And then six months later, it finally works or you just never built it to begin with and it works right away. That's, there's something very nice about that. I'm dying right now because this past week I sent a TS file to my co worker and I was like, just use bun. He's I don't have bun. I was like, do you have Dino installed? I was like, try Dino. And he was just like, what do you do? And I was like, come on, man, just. I was like, I'm not going to give you like a TS config and set all this up. Just use the command. So as soon as you said that, I was like, huh, that's me. He's talking about me. Yeah. I'm sorry. I, you are a loser, but no We work at the same, I like trash and for anyone that's listening, I like but it's just like most of the things you needed in that TS file probably could have been easily just like [00:31:00] star type string because you're reading from a file. So you're like string. And then string when you do dot split, since it returns an array, like it already knows how to do all that. So now you have an array of strings, like it already knows what it's doing. So it does all of the inference for you from there on out. You just have to type just a couple little things in between. And then you don't have to be that guy that hands somebody a TypeScript file. And they're like, you want me to install TS node globally? What, why are you asking me to do this? Like you don't have to be that guy. It's true. I think I ended up just renaming it to js and remove some annotations called it a day. I was like, sorry about that. I'm new here. I just started on a new team this week. I was like, it was a good first impression. First good impression. Anyways, let's move on. So JSTOC really JSTOC. I think there's a lot of, I think there's a lot of really, I think it just makes JavaScript more bearable, right? Cause that's a huge barrier for me is when someone's Hey, you want to write me up a script to go get this data and do some stuff. And I'm just like, Oh gosh, do I really want to start a TypeScript project?[00:32:00] I would rather write Rust or go or OCaml. Or Java or just like anything at this point I don't want to have to go through all that and then you get everything just, it's just, then you have to get an artifact and then you got to publish it and point to the right font, like the amount of things that just go wrong. I go, I'm sitting there like setting up ESLint and prettier on some stupid repo. I have 11 nodes running for my LSP because I got tailwind. I got TS server. I got ESLint. I got prettier. I got all this it's just Holy cow. What have I just done? What did I just do to myself? Cause this is ridiculous. It should be like 10 minutes. Why am I doing this? Yeah, I've become pretty jaded and everything you're mentioning right now like definitely resonates with me And I remember when I tried like dino trying to it's go right? We're just has like everything so when I was like using go for a little bit I was like, it's like everything's just here for me. And then I was like, let me try dino I was like, this is nice But yeah, I you have to get that ecosystem to move. That's why I like on the JavaScript rising star questions. I did [00:33:00] pre read some of the questions you're going to, you're going to ask. One of them was, why don't you think buns going to be that popular in 2024? It's the same reason why Dino won't be that popular. It's this exact conversation. Hey bro, just download bun. No, I don't want to download bun. I don't want, I don't want to set up your system. I don't want Dino. I already have node. Why do I have to have three separate JavaScript run times? And the worst part is that, if like buns, at least trying to be like node compatible. So that's really nice because you can, it mostly just works. Now. I don't think there's any edge cases. There's I'm sure there's some edge cases that don't work, but for the most part, that's at least a good step in the right direction. But at the end of the day, you're just like, do you want to run node one or node two? Most people don't have no two. Just saying, but it's available. It's just no, I don't want node two. yeah, I think I somewhat disagree with you there. It's like you said, like with bun, they are trying to be fully node compatible. And I think that would give them like that edge to like for people to be easy to migrate. I don't think you have to jump through too many hoops to run bun, hopefully.[00:34:00] But anyways, I think Jared Sumner's dude's like an animal. Yeah. Poops out code like non stop. It's unreal. But anyways, I digress, but I do agree the ecosystem itself It's not I'll probably be dead before it actually gets any better to be honest can I say that? Can I say that I'll be dead? Is that okay? Yeah, that's it's cuz it's gonna take 50 years. But just like just take a moment and think about this Grunt the first attempt at some sort of universal build system is 13 years old 14 years old We're still talking about build systems today Yeah, it's It's not a solved problem. Just like that. So will you, will we be talking about this in five years? I'm pretty much confident that whatever you're doing today or whatever you think is to solve today there'll be something better soon. Roll downs coming up with rust, right? We're about to have ourselves some roll down. I completely forgot about world death. Oh But [00:35:00] yeah, but like anyways, so to like circle it back to just legacy you know All these other things are gonna exist still so even if there is something latest and greatest We're not going to see it Yeah. unless we like build like a brand new project. But even then, like you said, jet pack and all this stuff is jet pack about, ah, probably not. So let's just go on and just Yeah, right back in though it's a brand new project within Netflix, you won't be able to use server components probably. I think it'd be a really hard thing to try to figure out to make sure it actually works. Just because now you have to figure out, can you make it work within the Netflix ecosystem that's not designed for it? We already we even want it? Do we even want it? We don't know. Yeah, we don't even know if I'm not going to get into that whole conversation, but who knows? Yeah. It's the problem of being terminally online. Twitter's not a good representation of what the real world looks like. absolutely. And I just, I try to repeat that line so many times, just, especially like when you stream or I stream or someone else's streams, I'm just like. You can tell when someone's [00:36:00] new and like, all they know is like that environment. And you just have to be like it's not, it's I know plenty of people that don't even go near Twitter. They're brilliant. Or they just have no idea about the technologies we're talking about and they're leading big projects, pretty smart people. And it's just all this stuff exists outside. Like it's just not all HMX memes, triangle company, whatever, what have you. It's, there's free spirits outside. many million dollar companies. And the guy doesn't have types. That's like twi that's that is like Twitter scarlet lettering. Is typeless JavaScript. And the guy's out there building stuff with Ruby on Rails and typeless JavaScript. The man's a maverick compared to that, compared to Twitter. And yet, that happens, right? It just goes to show that, even though Twitter just hates that guy And every time he talks about types, he just gets dunked on. It's funny because it's he also, not gonna lie to you, the guy's much more successful than I am. So I, like whether you like my takes or not, he [00:37:00] built something that lots and lots of people use. So am I always the rightest one? Maybe I'm not. Maybe I've been wrong this whole time. I never even know. It's like some new person comes on, and he's what have you done? Why don't you like types? Directly, DHH. He's All of this. Oh, okay. It's interesting, cause I'll see people, cause you know that Levels guy, he does everything on Yeah. Levels IO. Yeah, you like PHP types? He's I'm like a millionaire, so I what you're talking about. There are people who drive Lambos because of PHP. It's not just a meme. It's actually a real thing. Yeah, so that's why, I'm trying I'm trying to enter a phase where it's just like I'm just going to just not care and just what I realize is that you can argue infinitely and I'm just so tired of our like I don't like drama. I know I've been in drama. I don't like being in drama. I actually try to avoid it the best I can. And so I am deeply trying to avoid it. And so my new thing is that I will just be talking about the things I am building and I'm just going to [00:38:00] avoid the conversation. Because honestly, it's all stupid anyways. People arguing about Tailwind or Stilex I just don't care. At the end of the day, I got a beautiful wife and four kids, and that's just way cooler than Stilex. Is it? that people really feel proud of Stilex, but man, I don't care. And so it's I can't waste that emotional energy. Anymore. And so I'm just going to here's the cool things I'm building. I really go, or I'm going to do that thing where the other thing I do on Twitter is I just say the first thing that pops into my mind. That's the other thing I do such as, I forget what I said. Something about, C sharp is better than Java. Just, just rustle some jimmies. People get all upset. And then right after I do that, I mute the thread and then I don't look at it again. I don't want to be a part of drama. VS Code sucks, mute! Yeah, no, that, yeah. I think that's funny. I like rustling some jimmies. I do appreciate boomers like us because we can we can unplug and focus our mental energy on other things, right? Versus, versus being like chronically online and like [00:39:00] always trying to be in the know or the topic of the week or something, right? Which is great. And it gives you like balanced takes and it allows you to take a step back and, see things for what they not to know everything. It's okay not to be on the latest of everything. Oh, 100 percent not on that. I don't know anything about anything. I did two years of Rust, now I'm gonna try some Go for a while. Oh, you're on the go arc right now? Yeah, I'm on a Go arc right now. Do you like it? Yeah every time, this is I think the best way to describe, if you're ready for it. Gosh, this is such a stupid language. Oh my goodness, the types are so primitive. If error equals nil. Gosh, I'm done. Man, that was so stupid. I guess I can do other things now. I don't know how to receive that. Did you like it or did you not like it? I don't know. I you just finish what you're doing and then you move on, whereas like with it's a very neutral language. Like with rust, I'm like this artisanal type, see, I need a lifetime right here, because I want to be able to [00:40:00] never copy. And this is going to be a stack only copy from here on out starting right here. And yeah, I guess we're gonna have to do it. We want to use an arc atomic counter. Let's not mutex this one. Okay, we're just gonna do an atomic in, You're just like over there with Go I'm just like, And this is so stupid, this language sucks, if error equals nil. And I'm done, okay, move on. Okay, is it's very easy. It's a very It's the simplest language in the universe. I program it for probably about 20 hours a year up until now. And every time I do it, I feel like an expert. Are you ready? Better than milky in it? No, I'm sure I'm not better than Melky. Melky breathes and eats Go. I'm not quite there, but I'm starting to get better at it. I did a little T, I did a little TCP server that I did my own custom packet format. Packets in and built out a web server now. And so I'm going to have a nice local experience with my own custom protocol. And then I'll be uploading that to a server here soon. Awesome. Awesome. We basically missed almost every single question that we were going to ask you, Do you have any let's end it. Let's end there any questions you want right now? Let's go. We're going to end it. We're going to at least [00:41:00] do. Last one. All right. What's the wishlist for the promo in 2024? Can you expound upon the wishlist? I don't know. It could be anything you want. Could it be tech? Could be personal. What would you like to see in WebDev in 2024? What would I like to see in web dev in 2024? I would like to see, if I could choose one thing, I would like to see more people get better at the tools they use. And I'm not talking about. Like react or libraries. I'm talking about their editor and their keyboard. I don't care if you don't type properly. You saw that one guy just like yesterday or whatever, that one meme of the person that's just like typing so incredibly fast with one hand and then the second hand will jump in and then he's dude, just do it. It's crazy. And he's actually doing real work. It's just I don't care. If you're out there looking like just a weirdo, just learn how to type, [00:42:00] learn how to use your editors. I would love to see people know their command line, what tools are available. If you ever have a log file filled with stuff and you wanted to find some stuff out about it, and your first thing you do is reach for a node program to parse out the log file, I think you should maybe take some time to get better at your tools because you can save literally hundreds of hours of not writing these dumb programs. Just knowing a little bit of said. And a little bit of JQ, you can just be like, boom, let's go. There you go. That's my hope for web dev is that people renaissance into what has already been. What's the ideal words per minute then? I would say that you should not be below 80. It's pretty fast. It's pretty fast. I would say that's pretty fast if you used your keyboard like once a week, but if you use it for say 40 hours a week, I don't think that's fast. Like I think people are generally super capable and extremely impressive. They just have to want to. Yeah. They just agree with that.[00:43:00] Anyone can become a great typer if they did it for 2, 000 hours. Everyone's on their phones. Everyone's on their phones. They don't know how to type with their thumbs. No. That's why you voice dictate. Trash Dev is Oh, gosh. Cool. Anyways, that wraps it up. Thank you for coming on Prime. Always a pleasure to talk to you, buddy. And I think that's it. Yeah. Hey, Emily. I'm sorry. You should have asked some more questions in there. Trash Dev is like I'd give him like a six out of seven. I don't know enough about tech to ask you good questions Didn't you type up those questions? yes, Yeah. Those were great questions. Did you hear trashes? I feel like you were You're out there dominating. thank you. Cause we were, we started rambling and I was like now we're just on this other topic. So let's just keep it going. Yeah. I'm not very good at staying on topic. It would be weird to be like, let's talk about this. And then all of a sudden switch, we could just go back to a completely different time. So it was like, it was managed. So I was trying to listen to what you're saying and I was like reading the script I was like, what can I ask next that even remotely makes sense to what Prime is saying right now? [00:44:00] not, I knew that coming into this, that would be the vibe. So we accomplished our mission. I think you said some good things. I think you said some great things. Yeah. Trash, do you want to close out, ask where people can find him? Oh, yeah. Yeah. Yeah. All right. You ready? I am ready. All right, Prime. All right, Prime. Where can people find you online? Sorry. My wife has asked me. Hold on. Hold on. Hold on. Hold on. You're like, are you on the other product podcast? Hurry up! And I'm going to another podcast directly afterwards. There we go. Okay. gonna respond. That's my little Andrew Tate. Oh, no, she will not. Where can people find me on the internets? I have that name and it's on Twitter. It's on YouTube. It's on Twitch. It's on Instagram, Tik Tok, all over the place. That is a lot. You also have your side channel too, right? Prime Time Yeah, I have the Prime Timeogen and I also have the Vimogen. I'm about to have my third channel, I think, cross [00:45:00] 100, 000 subs this year. Wait, is the Vimajin new? It's uploading me just raw coding for hours on it. I think I saw, you came over to my feed with some ASMR thing like two Yeah, I did the what is this? I did yeah, I just did an hour and a half of just typing. I thought that was like a fan uploading that. I was like, what am I looking at? I watched it for 20 minutes, not even kidding. You're a very fast typer. are there primogen fan cams? Yes. What's that? That's in it. That's you mean K pop fan cams? Yeah. Oh my Okay, I am not privy to whatever this thing is that you're talking about. Basically, people take like, all your VOD and stuff from Twitch and stitch it together and make it cute and pastel with sparkles and stuff. And I'm surprised no one has done that for That sounds incredible. I would be genuinely happy to have that happen. Make it happen everybody. Someone will make it happen after hearing this one. I'll make sure of it. Cool. All right. [00:46:00] Primagen. Sorry, I always get that wrong. Primagen, thank you for coming on. Chris, thank you for hosting. I'm gonna Hey, thanks, Chris. Thanks, Emily. You're Have fun on your next podcast. Try not to try to stay on topic, right? I'm not going to do it.