Whiskey Web and Whatnot

A whiskey fueled fireside chat with your favorite web developers.

Listen/Watch

83: PNPM, Algorithms, and Angular


Show Notes

It’s hard to find a good package manager, and even the most seasoned developers still struggle to figure them out. Robbie kicks off the tech talk by sharing his misadventures trying to figure out pnpm leading Chuck to ask the burning question “Would you wear a pnpm T-shirt?”
Despite Robbie’s struggles in pnpm, he still believes it is the better option compared to alternatives like npm, Yarn V1, or Yarn V3. The duo agree that pnpm fixes the biggest problem with traditional package managers like npm and Yarn V1, which is hoisting. The duo dive deep into the technical aspects of package management, discussing the challenges of installing and managing dependencies in a large-scale project, and how pnpm addresses these challenges. They cover topics like global caching, peer dependencies, and the correct way to define dependencies.
In this episode, Robbie and Chuck talk about the pros and cons of pnpm, the downsides of using algorithm tests to vet developers, and the exciting new changes coming to Angular.

Key Takeaways

  • [00:30] - Chuck and Robbie ask for feedback and suggestions from listeners.
  • [03:55] - A whiskey Review: Michter’s Kentucky Straight Rye.
  • [09:43] - Robbie talks about his pnpm adventure.
  • [25:34] - Chuck and Robbie’s thoughts on algorithms testing.
  • [28:51] - The big changes coming to Angular.
  • [38:05] - Robbie talks about his 1970 Ford Bronco.
  • [43:22] - Chuck talks about Ted Lasso season three and other TV shows.
  • [53:15] - Chuck and Robbie talk about upcoming video games.

Quotes

[21:35] - “The idea of having separate apps in a separate package and piecing those together, good idea. Ember Engines, bad idea.” ~ Robbie Wagner

[32:16] - “People who have been working with Angular or even, let's say, five years ago jumped into it, got it, loved it, they really love it. They’re passionate about it.” ~ Chuck Carpenter

[25:41] - “I can't do algorithms, and I'm against algorithm tests.” ~ Robbie Wagner

Links

Connect with our hosts

Subscribe and stay in touch

Top-Tier, Full-Stack Software Consultants

This show is brought to you by Ship Shape. Ship Shape’s software consultants solve complex software and app development problems with top-tier coding expertise, superior service, and speed. In a sea of choices, our senior-level development crew rises above the rest by delivering the best solutions for fintech, cybersecurity, and other fast-growing industries. Check us out at shipshape.io.

--- Send in a voice message: https://podcasters.spotify.com/pod/show/whiskey-web-and-whatnot/message

Transcript

Robbie Wagner: [00:09] What's going on, everybody? Welcome to Whiskey Web and Whatnot your favorite podcast about Whiskey Web and Whatnot with your host, RobbieTheWagner and Charles William Carpenter III.

Chuck Carpenter: [00:23] Because you just wanted to get the the in there with your title. I am the third, and you are the Wagner.

Robbie Wagner: [00:29] Yeah. So my problem is I wanted just Robbie Wagner. I wanted to keep it simple, like, just be known by my name across the Internet, but it's too generic of a name, so it's taken everywhere. There's, like, I think, a guy on Twitter that has, like, one follower and no post, so I could say he's impersonating me and take his, but then getting it on every platform would be difficult so.

Chuck Carpenter: [00:52] Yeah, that was the one downside, I think, of, like, rage quitting social media. Not really rage. I don't know. Kind of rage was something. Immediately my Twitter handle got picked up. So then years later, when I decided, oh, maybe I'll come back, obviously, it was gone, and obviously, no one's posted in, like, three years.

Robbie Wagner: [01:11] Yeah. And The Wagner was taken, I think, like, Wagner dev or something. Like a whole bunch of stuff was taken.

Chuck Carpenter: [01:18] A whole bunch of no.

Robbie Wagner: [01:19] So whatever. That's what I am now, RobbieTheWagner.

Chuck Carpenter: [01:23] I loved Braveheart, so I think that's fine. Anyway, what I was thinking is, as you were introducing the show, is I wonder if any true aficionados of, I mean, I guess there aren't any of what not right, but the other two topics are truly like, this is my favorite Whiskey podcast. And they're like, these guys don't know shit, and they stop listening. And then maybe that's what tech people think too. I don't know. It's hard to say.

Robbie Wagner: [01:47] Yeah.

Chuck Carpenter: [01:47] It's one of those things that crosses my mind from time to time.

Robbie Wagner: [01:51] We're getting more followers and listeners, so someone is listening, but it's like, I would love to hear from some people if you hear this, just like, do you hate that we do Whiskey? Would you prefer that we make it different segments? Because we could do try the Whiskey, cut that out as its own little whiskey-tasting ten-minute episode kind of thing, and just publish it alongside the other 40 minutes or whatever.

Chuck Carpenter: [02:17] I don't know. I will rage quit this podcast if we stop doing that so.

Robbie Wagner: [02:21] Well, no, we'll record the hour still, right? It'll be the same format. Then we just cut it up to where if you don't want to listen to the Whiskey part, we'll jump into after the Whiskey for the rest of it.

Chuck Carpenter: [02:33] I say anyone can go forward if it's like that's not for me, but I want to hear The Primeagen talk about things. I don't know. Plus, that's kind of like the niche, is that it is more casual, and we lubricate the conversation with that. So, again, if you don't want to hear the review, sure. Scrap ahead. Yeah, I think it's pretty easy.

Robbie Wagner: [02:50] Yeah. I think it's fun, though. I would personally want I mean I guess I'm biased because I record the podcast, but I would want to hear that because there could be funny reactions or whatever. And why not?

Chuck Carpenter: [03:03] I do think any suggestions, though, we're certainly into so, like, if there's a whiskey that you want us to try or a thing we haven't talked about or a person we haven't spoken to yet, which obviously there are many, and we will one day become bereft of ideas. So certainly appreciate feedback aspect of it.

Robbie Wagner: [03:22] Yeah.

Chuck Carpenter: [03:23] Anyway.

Robbie Wagner: [03:23] Yeah, if you're not using Twitter, I don't know how you would contact us at this point, but hopefully, most of you still are. So you can hit us up at Whiskey Web FM on Twitter or personally, I'm RobbieTheWagner, as I mentioned, and I think yours is what? Charles.

Chuck Carpenter: [03:40] W the third.

Robbie Wagner: [03:41] W the third, yeah.

Chuck Carpenter: [03:43] With the number three 'r' 'd'. There's that there's LinkedIn, which is basically, I think I'm just like Charles Carpenter on LinkedIn.

Robbie Wagner: [03:50] Oh, true.

Chuck Carpenter: [03:51] Yeah.

Robbie Wagner: [03:51] You can find us by real names on LinkedIn.

Chuck Carpenter: [03:53] Something like that. Yeah. So I'm not hiding from the government so I can get my real name out. Anyway, without further ado, for those many who are interested in the whiskey segment here today, we are having Michter's Kentucky Straight Rye. It's a ten-year expression, so it's one of their more popular ones. They do not disclose the mash bill, but I'm sure there's a bunch of rye in there. Michter's has been known, though, so it's an old whiskey label that was bought out by a family. And I don't know that they are distilling things themselves. They used to always source from NGP. That's where I assume this is from, bottled in Louisville but not necessarily distilled there. This one is 92.8 proof and ten years. I think I mentioned that.

Robbie Wagner: [04:38] Yeah, this is interesting. I was reading the little booklet about it. It's like this is from pre-Revolutionary War whatever in 1753, and it's been known as Shanks and Bomb Burgers and different names and whatever. It seems odd to me. So if they're not making it, and it's been known by a ton of different names, how can you even claim that? It's like, is it just in the same location or something? So they're claiming that they're the same?

Chuck Carpenter: [05:06] No, I don't think so. I think, well, they bought essentially the trademark, right? So then you're able to use that and say, where maybe we got a hold of the original recipe. Who knows? Maybe they bought a trademark and the original recipe, and then they had someone start making it for them. Can't really be certain there. I know it was controversial for a little bit for basically those reasons. Like I said, one of the nation's oldest whiskey producers and kind of taking that heritage and twisting it in those ways to make money. But that's what people are trying to do. So I've had a few of their things.

Robbie Wagner: [05:42] That's what we're all trying to do.

Chuck Carpenter: [05:43] Yeah, exactly. Get that hustle in.

Robbie Wagner: [05:47] I smell some shoe cleaner, like a leather cleaner, because they always kind of smell kind of leathery on purpose, I guess.

Chuck Carpenter: [05:55] Yeah, I was getting a little leathery to it. Yeah. So what comes first, the smell of the leather? Or is it the chemicals put into the leather? I mean, a cow doesn't smell like that. Right, but then, like, the tanning processor.

Robbie Wagner: [06:07] Have you gone and smelled a cow?

Chuck Carpenter: [06:09] I have. I don't own cows, and enough to smell them. I don't have to put my nose right on them.

Robbie Wagner: [06:14] Yeah, that's true.

Chuck Carpenter: [06:15] Fairly apparent. Yeah. I'm having a hard time, like, getting a little peppery. Like peppercorn and a little leather.

Robbie Wagner: [06:22] I smell a little bit of not fully ripe blueberries and, yes, lots of peppercorn. I agree with that.

Chuck Carpenter: [06:31] Not very ripe blueberries. That's interesting. You've ever had, like, wine grapes from the vine? You ever been able to taste them? No? They're not sweet at all. They're not fruit meant to be consumed in that form, for sure. And they have a little, like, bitter and tartness. I mean, I don't know. I've only had it a couple of times. Most wineries really aren't letting you vineyards, I guess, aren't letting you grab them straight from, but they did that in Argentina. That was super cool. I don't know. I'm getting a hint at that, like this weird kind of bittery juice in the beginning. Still feel the peppercorns and the flavor, but yeah, so you said unripened blueberries, which I don't think I've ever had, but I have tasted like I can't recall what they were. They weren't like Cabernets or something. Anyway, but it was just wine grapes.

Robbie Wagner: [07:20] Like a fruit you shouldn't eat. Like it's got some of that fruitiness, but it's like not in a good way. It's kind of like what you're saying.

Chuck Carpenter: [07:28] Yeah, exactly. Get a light, like caramel or caramel flavor on the finish. Actually very light, though. Not too sweet, but it has a slight sweetness to it. It's almost like.

Robbie Wagner: [07:39] Yeah.

Chuck Carpenter: [07:40] It's very dry too. It's almost like when you have a dry wine, and it ends up like drying the back of your tongue out a little.

Robbie Wagner: [07:45] Oh, yeah.

Chuck Carpenter: [07:45] Some of that to it.

Robbie Wagner: [07:47] Yeah. I'm getting a little bit of what is it? I want to say creme brulee, but not exactly something toasted. A toasted dessert, but it's not creamy or sweet enough to be like creme brulee. So it's just kind of toasted sugar, I guess.

Chuck Carpenter: [08:05] See, and that, to me, well, caramel is essentially like toasted.

Robbie Wagner:[08:10] I guess that's what it is.

Chuck Carpenter: [08:11] Milk. Right. Condensed milk kind of thing. But we each have our own feel for it. Now get a slight tinge of vanilla too. So like peppercorn, vanilla, and a weird bitter initial. Yeah. So there you go. So based on that ten-year hard-to-get rye, it's got unique flavors for me. I actually find it tasty. I'm enjoying it.

Robbie Wagner: [08:32] Yeah. You want to go first?

Chuck Carpenter: [08:35] Sure, I'll go first. I can't remember the price point, but I know that their ten and 20-year expressions are kind of hard to get. So it's on the high side of things.

Robbie Wagner: [08:42] I think it was like 150, something like that.

Chuck Carpenter: [08:44] Yeah.

Robbie Wagner: [08:45] Not cheap.

Chuck Carpenter: [08:45] So 150. Yeah. Not crazy. Considered some allocated bottles in a ten year, but given that, I think give it a seven. I think I like it. I'm actually going to try it. I finally remember to have some water here to add a few drops and see how it opens up as the episode continues. But in general, I would say, yeah, I'd recommend this. I think it's tasty. It's seven.

Robbie Wagner: [09:08] Yeah. I don't know. That's influenced me a little, maybe. But I agree that I like it. I think I'm going to say six because I think, for the price point, it's not blowing me away. I think it's very good, but I think for that much, I would rather get, like, four bottles of Sagamore, probably.

Chuck Carpenter: [09:25] Right.

Robbie Wagner: [09:26] So, yeah, I'm going to say six. Nothing wrong with it. Just a little pricey.

Chuck Carpenter: [09:31] But seven, seven is the magic number. Seven-minute ABS. Yeah. Not six, man. Anyway. Cool. Well and take that with what you will with a grain of salt.

Robbie Wagner: [09:43] Yeah. So I don't know how the past week has been going for you. For folks that are listening, these are published two weeks later. So if you want to do the math on what last week was, figure it out. Anyway, a bunch of bad shit happened. Like the Ohio cloud of smoke and terribleness.

Chuck Carpenter: [10:03] From the train accident.

Robbie Wagner:[10:04] Yeah.

Chuck Carpenter: [10:04] The railing.

Robbie Wagner: [10:06] I got my Bronco, and it broke down immediately. I couldn't get pnpm to work to save my life. I was fighting it for weeks and weeks. It just felt like everything was going wrong for a while.

Chuck Carpenter: [10:17] I see.

Robbie Wagner: [10:17] Yeah. So I talked to some other people who felt similarly about last week. I was like, oh, yeah, I don't know if it's like a Mercury retrograde shit or what's going on, but like, a bunch of bad shit is happening. Anyways, as part of that fighting with pnpm, I have much knowledge to share about my adventures into pnpm and the modern package management landscape.

Chuck Carpenter: [10:41] Yeah, okay. Well, I'm interested to hear because obviously there's a few of those. Like, the TLDR is, would you wear a pnpm T-shirt?

Robbie Wagner: [10:49] I would.

Chuck Carpenter: [10:50] Okay.

Robbie Wagner: [10:51] Well, it depends what it looks like, right? I'm okay with it being nerdy, but it has to be in a cool way. It can't be stupid. So yeah, I think pnpm I'm a believer for a few reasons. I actually wrote a big document, so for work, I have to write design documents as part of being like, I don't know, fancy higher, senior, front-end person or whatever, like lead. I guess. So I wrote this document about why Yarn V1 is not good and why pnpm fixes a lot of that. And alternatives. The only real alternative that kind of fixes those things is like Yarn V3. We'll get into that in a minute. So the problems that you have if you're on plane, Npm, or Yarn V1 are the biggest thing is everything gets hoisted to a global node modules. So say you have, what's, something common Lodash or something, right? Like probably thousands of things in your node modules have a dependency on something like London Utility Library, and maybe ten of them use version three, and 20 of them use version four. And what do you get in the end? Either you're shipping a whole bunch of duplicated stuff, or it's like Frankensteining a package which happens frequently, where it's like, oh yeah, these couple of things changed, let's just change that and still ship like three. But change some stuff, and you get some weird compatibility issues.

Chuck Carpenter: [12:19] And when you say global hoisting, you just mean to the project route.

Robbie Wagner: [12:23] Yes, sorry.

Chuck Carpenter: [12:23] Globally to your system, not to the system. Because I was like, does it wait?

Robbie Wagner: [12:28] No.

Chuck Carpenter: [12:28] There is no hoist directive. But I think like you're mentioning, that still ends up being like when you're compiling things, you're still going to be shipping a bunch of extra stuff there.

Robbie Wagner: [12:40] Yeah.

Chuck Carpenter: [12:41] Unless you do some sort of resolution and then you decide, I don't know. But good points.

Robbie Wagner: [12:46] Yeah. So that and the other big, I guess, selling point of pnpm is just to say what you were kind of alluding to there. I think there is a global machine-wide cache of your node modules with pnpm. So if you install loadash version four in any package, you're never installing that again because it's on your global cache. So that speeds up development a whole lot. Like once you've installed once in pretty much any project, a lot of the common stuff is there. So you're never installing that stuff again. So that speeds up your local development, it speeds up CI. If you're caching everything, well, it's just a good idea. So you do that, and also it gets rid of the hoisting. And the other big thing that Yarn V1 did wrong was peer dependencies. So Npm and Yarn install peer dependencies by default. So like, you have a package that says, oh, I don't actually want to specify my specific Lodash version. I just want to say your app needs to have load three or higher. So cool, that makes sense. But Npm would auto-install those, and then you would get that hoisting thing, and you would end up with a bunch of weird versions. Whereas also you wouldn't have to have it installed. So if it installs it behind the scenes, right, but your app didn't actually have a dependency on it, and it was just auto-installed, then it's like a fake peer dependency. It got installed for you versus you actually installing it as a dependency of your app. So it has strict peer dependencies where it says if this is a peer dependency, you must install it. And if you're importing things like import underscore from Lodash, that has to be either a dependency or a peer dependency, or it won't let you import it. Because theoretically, if everything did package management correctly, a dev dependency wouldn't work. So that would be gone from the build. So if you had no dependency or peer dependency on the thing, it wouldn't work. So like a lot of the problems we've had with and stuff, there'll be a thing that says import like component from Ember slash component, right? So there's a couple of problems there. One, there is no package called Ember component. So that's its own problem where there's a bunch of like turns out build weird shit. But once that is patched with a lot of magic, they didn't have dependencies on it. So it's like this add-on would import from component assuming your app is going to have it in this global hoisted Yarn world. But when you're not in that world, if you haven't declared it's a peer dependency, and you import from it in your package, it's not going to work. So basically, it's doing everything the correct way saying like get your shit actually right, don't rely on weird broken hoisted global version mismatched weirdness. You actually define what you want everywhere. So there is a lot of stuff, like a lot of things you have to do where you just basically start the app right. And then you get some kind of sometimes you get build errors. Those are nice. You don't have to wait for the whole build to finish. It's just like you're missing this dependency or whatever. Then if it's a runtime thing, you'll get a weird thing that's like a bunch of lines of crap. You didn't actually care about that. But if you look close enough, it'll be like pnpm slash, node module slash, whatever slash, this package. And then you can be like, oh, this package is importing from this thing that it doesn't actually have declared superior dependency. So then you have to go either do that upstream in GitHub, or you can patch it. So there's a lot of things in pnpm that make it good for compatibility with getting to the new world. So you have these options to say if you want to really kind of keep it exactly the same, you can say shamefully hoist, that's my favorite option. So then it's the same as Yarn V1. So it's like if you want to start using pnpm but you don't want to do all this complex stuff, just do that, and that's like a stepping stone.

Chuck Carpenter: [16:49] Let's say you do that. What's like your immediate benefit anyway? Is it based on the cache and how it gets things for your system?

Robbie Wagner: [16:56] Yeah, I guess there's not really a ton of benefit. It's still going to give you local stuff instead of linking it, I think. And it's like hoisting it all, I believe. I'm not sure, not totally sure, but there are 25 options around that kind of stuff. Different hoisting patterns, different strict peer dependencies, or not how you want your workspace packages to link, all kinds of different stuff. So that's how it shines compared to Yarn V3. From my understanding, Yarn V3 forces you into PNP, which I'm forgetting what that means now. It's not plug-and-play, but it's like.

Chuck Carpenter: [17:37] I was going to say.

Robbie Wagner: [17:38] I think it's basically a thing where there's not a local node modules or something. Like there's nothing telling it where the module is. It's like hooking directly to it somehow in the global sense or whatever. So I don't know how that works, but it causes its own issues. So like, pnpm is the good middle ground where it supports full that, which I will hopefully learn more about and not sound like a dummy next time I tell you about it. But it's got a lot of cool stuff there, so it reduces a lot of your weird errors that you might get with, say like, in a specific Ember case, you could have an Ember app and an Ember add-on, right? And you have your core components in your Ember add on and you want to link the two with like Yarn link, right? So that works. But what if they all have similar dependencies, but they're kind of different versions? Which ones are winning, right? So you link it like this is a problem we specifically had, which made me say like fuck all this, let's go to pnpm right now. Because it was resolving wrong versions specifically like for an engine, because there's like this weird stuff in Ember where you can have things that are basically like a workspace with like an in-repo engine, but it's not a real package. So it's like inheriting versions from somewhere. And when you Yarn link, it doesn't update those because it's not a real package. So that didn't work. So converting to pnpm using workspaces and making them real packages made the linking all work. So we can just do like pnpm link to this other add-on, and it will work everywhere like it's supposed to. So using pnpm fixes some of those weird stuff definitely makes your bundles smaller and overall just files smaller. I think it made our node modules folder like half the size or something like that. So like major improvement. And yeah, it has a lot of monorepo support out of the box. So I don't have a ton of experience on that aspect. But it's like, from what I understand, unless you're doing really complex stuff, you don't need like turbo repo or any of those tools. You just use pnpm out of the box, and it's kind of like a replacement for, I guess, Lerna was one of the old ones people would use, too.

Chuck Carpenter: [19:52] But yeah, managing. So those are vastly different tool sets in a way. So you're saying the pnpm can replace, not just like, Yarn workspaces. So Yarn workspaces, to the degree you mentioned something about turbo repo. So isn't turbo repo kind of got, like, a webpack component to it, though? I thought that was a relation there between webpack and that.

Robbie Wagner: [20:18] That's maybe not a great example.

Chuck Carpenter: [20:19] Okay.

Robbie Wagner: [20:20] But like Lerna, I guess, is more canonical to that use case. So it's like if you have 25 packages and you want to run the same command in all of them with, like, one pnpm command or whatever, you can do that kind of stuff. I never used Learna, but I think that's what it kind of did, where it's like, I want to run these commands across a ton of things at once and, like, sync the versions up and do all that kind of stuff.

Chuck Carpenter: [20:45] Yes, it's highly complex, does kind of all of those things.

Robbie Wagner: [20:48] That's why it's deprecated.

Chuck Carpenter: [20:50] Yeah. This is too hard. Let's move on.

Robbie Wagner: [20:52] Yeah, that's fair. That's basically my journey. I don't know if I missed anything. I should have taken better notes on this. I didn't bumble through all this, but.

Chuck Carpenter: [21:01] This is what we like about it. Yeah, the linking aspect could be pretty interesting, too, for, like, active development of packages within a monorepo. That kind of thing tends to get challenging, and testing that within the app itself and blah, blah, blah. And you said engines, so is that the whole thing where Ember engines used to be, like, basically separate routes or separate Ember apps? They get pulled together?

Robbie Wagner: [21:24] Yeah.

Chuck Carpenter: [21:26] Okay.

Robbie Wagner: [21:26] It was a bad idea.

Chuck Carpenter: [21:29] It's a micro front end.

Robbie Wagner: [21:31] Well, no. Okay, let me revert my statement. The idea of having separate apps in a separate package and kind of piecing those together good idea. Ember engine is a bad idea.

Chuck Carpenter: [21:43] Okay.

Robbie Wagner: [21:43] It doesn't do that well. And kind of the big selling point was, like, tree shaking. So before you had Embroider, it's like, all right, just put your dependencies that you want in this route on your app in this engine, and it'll just lazy load everything and whatever. I like that idea, but now you don't need that because, like, if you're fully pnpm, fully embroidered, turn on all the flags, it will tree shake all of your routes and everything. So you're only using.

Chuck Carpenter: [22:09] Yeah.

Robbie Wagner: [22:09] What you mean to be using at the time? So that aspect goes away.

Chuck Carpenter: [22:12] And I thought that it was, in a way, an organizational separation of concerns. Like, let's say you can have a team working on a portion of the app. That is all. I don't know. Say you have this massive management app, and part of it is like a POS engine, and part of it is like inventory management, and another part does, I don't know, something else altogether. And you could actually more physically separate those things, and teams could work independently within their app without having all this collision.

Robbie Wagner: [22:43] So yes, but that also goes away with monorepos. So you would just make that a separate package, and it could be a normal Ember add-on with no engine stuff, and then you can just import that as like the routes that you want and whatever.

Chuck Carpenter: [22:57] Yeah. I have to say that's probably, like, the thing that's the circumstance where I hate monorepos and maybe there are better solutions to that. But having worked in somewhere, you would have hundreds of people committing per day in sections of the app which might have nothing to do with your stuff, but then you pool multiple times per day, and this like deeply nested, more generic dependency of yours that you need also has been changed, and the API of it has been changed. And you're like, yeah, there's some really strange stuff there. And every time you pull, you're pulling hundreds of commits. It's like super weird.

Robbie Wagner: [23:35] Yeah, there are definitely downsides. I think the upside, and this was biting us a lot, is like, all right, so you have your core library. That's a separate package, right? All right, so I made some changes. If you're lucky, the developer knew they were breaking changes and marked it a breaking semver major version. If they didn't like, some developers would change maybe some text, right? Probably not a breaking change. I just changed a label on something. All right, cool. That's a minor or whatever. No, because a bunch of tests check that. They're like, does this contain this text? And it doesn't. So then you consume the core library in your main app, and all of a sudden, all of your tests are broken. No one can merge to core because someone changed that text. So that's something you get around. If you have a monorepo, you run the tests, and everything all linked together, and it's like going to catch that immediately. So that's another big benefit that we're looking forward to.

Chuck Carpenter: [24:35] Yeah, the integration testing I see would be highly improved, and I agree with that. And that's probably the win enough to make the other annoyances tolerable.

Robbie Wagner: [24:45] Yeah.

Chuck Carpenter: [24:46] But they are annoying.

Robbie Wagner: [24:47] We were using Git Submodules, which is gross.

Chuck Carpenter: [24:51] Wow. Yeah, that's bad.

Robbie Wagner: [24:53] And they weren't even really used for anything. It was used to make linking work because, like I had mentioned, if you ran Yarn Link, it didn't work. So there was this hack where if you use Submodules but didn't Yarn install in the Submodules, it would basically only whenever you did the global Yarn install, it would only do like the prod dependencies and not install the dev dependencies from those or something, which kind of made the dependency tree somehow work. But yeah, we've gotten rid of all of that now, and I am super happy.

Chuck Carpenter: [25:24] I wonder if you could, within this episode, reverse a binary tree for me?

Robbie Wagner: [25:30] I don't think so.

Chuck Carpenter: [25:31] No.

Robbie Wagner: [25:32] Since it's taken me two or three weeks just to install pnpm and get it to work, I'm going to say no.

Chuck Carpenter: [25:40] Fair enough.

Robbie Wagner: [25:41] Yeah, I can't do algorithms, and I'm against algorithm tests.

Chuck Carpenter: [25:45] Yeah.

Robbie Wagner: [25:46] You shouldn't need that.

Chuck Carpenter: [25:47] I think, for the most part, you don't need that. I do believe that there's probably times where it is necessary, I think, for like, I don't know, in a finance, possibly. There are a lot of interesting algorithms there around just going through the database aspect of that. And aside from calculations needed to display things correctly to a user, crunch them for the database, things like that. Those science explicit applications, definitely. But as a blanket, it's weird. Well, when a company is like, let's just say, for example, the company is selling like yoga pants, and you're just providing interface flow, good UX processing payments, very standard things that you would do on the Internet. And then the company's like, well, Google, they're pretty successful, so we should just do the things they do so that we're going to whiteboard people. I think that's probably what it's come down to, is, like, not really looking at context.

Robbie Wagner: [26:50] Yeah.

Chuck Carpenter: [26:50] And then testing people on that in order to create a shopping cart. It's like, ridiculous.

Robbie Wagner: [26:54] Yeah, a lot of it is gatekeeping, but it also seems stupid because, okay, so I can pass five rounds of algorithms. Cool. What is the job you're hiring me for? Is it front-end web development? Because if I don't know HTML and JavaScript, just because I passed all of these algorithms, things doesn't mean I'm going to do a good job. So I think that's kind of stupid.

Chuck Carpenter: [27:18] Yeah. When you talk about news and articles and things like that, where semantic HTML is important for the machines to read the documents too correctly, like me knowing a sorting algorithm has shit to do with any of that.

Robbie Wagner: [27:32] Yeah, and I guess this is true of all ecosystems, but I think especially in JavaScript, where everything is an Npm package, like, you want something really stupid. Like, I want to add a space that's a package. Right? It's like one line of JavaScript, but there's a package for it. So odds are someone, if I need, like, I go, oh, wow, I have 200 million records, and I actually need algorithms to parse and sort through this much data. Someone's probably written a package that does it better than I could do off the top of my head. In 30 minutes.

Chuck Carpenter: [28:09] Right, right.

Robbie Wagner: [28:09] I'm just going to npm install the thing that works, and you're done. I think the way what it should be is it should actually run the code, and you should be able to do that. So it's like, all right, I want you to do this thing. I want you to use some kind of sorting algorithm. Then I should be able to peruse Npm, install it, and the final thing. Should check, like, how long it took to sort to do my like how well I did instead of actually writing the algorithm. I think that would be a fair assessment.

Chuck Carpenter: [28:39] Finding the solutions. I think we've said this before. It's less about knowing the answer offhand but about the understanding and finding solutions. I agree with that.

Robbie Wagner: [28:50] Yeah.

Chuck Carpenter: [28:52] So I had another thing here. I was reading some things about changes, big changes coming to Angular, and I know that's an everyday subject that is near and dear to your heart. I mean, I will admit the tooling and everything has made massive leaps forward in improvements. The last time I saw it which is a few years ago, even. So, I saw this post Sarah Dresner mentioning that signals coming to Angular, and I was like, oh, that's kind of cool. Again, that's the concept out of Solid JS. I know that there's discourse back and forth around that.

Robbie Wagner: [29:26] And then use Starbeam.

Chuck Carpenter: [29:28] Yeah, right. Starbeam, which abstracting signals and allow you to apply it to libraries as a state management alternative, would say. Right. Because I feel like React is continuing to try and find its special purpose around state management. There's just been various alternatives in that. And we've been clear about hooks. We don't like hooks. We think they're stupid. But I can understand in context, getting state, and then managing a small state in context, too. Like, that's the intention there.

Robbie Wagner: [29:59] Okay.

Chuck Carpenter: [29:59] You know, there's it does the job. So signals he has signals being recognized as, like, a good pattern around state management, and Angular is going to do it now, too. So then I was like, oh, I'm curious. I haven't looked like I looked at the getting started docs for Angular. The problem is that started to hurt my eyes a little bit because they still have things like directives.

Robbie Wagner: [30:22] Isn't it.

Chuck Carpenter: [30:23] Property binding.

Robbie Wagner: [30:24] Class-based, though?

Chuck Carpenter: [30:25] It is class-based, though. So you would like that it still offers classes.

Robbie Wagner: [30:29] Well, what I mean is, so how do they do signals then? It would have to be decorator based, right? Or do they still do, like, a random hook outside of the class or something?

Chuck Carpenter: [30:37] So the signals are coming, so they're not in the official getting started docs? She did do, and perhaps it was just on me to not go through her. She created a little, like, one-off app to walk you through their implementation. But I just figured it was worth noting on, like, a high level. Yeah, like, oh, signals coming, signals being a pattern that people are embracing across frameworks and different ideologies. Right. In terms of setting up your app and all of that. So I found that interesting and decided to give Angular 15 minutes just to dig through their getting started.

Robbie Wagner: [31:13] Yeah. Angular is actually they've done a lot with incorporating the good parts of Ember. Like, when Ember CLI came out, they made Angular CLI. They make all your scaffolding very easy. They've been Typescript first for a long time. They've been on decorators since maybe even before Ember was. They're really into decorators, obviously, class-based. It feels like even more of a learning curve than classic Ember was, though. There's just so much that you have to learn to use it.

Chuck Carpenter: [31:44] I agree with that. Yeah. And I wonder, like, people coming to it now at this version. I don't know what the learning curve is there because I know that obviously, Ember suffered from that kind of feedback to a degree of, like, it's just so hard to get started, and I can create, React, app and have something in a couple of hours. So there's that trade-off. And so I don't know necessarily in that sense, but I know that people who do get Ember and do like it, right, we know how they are. And I feel like it is very similar in Angular. There's an overlap in that way. People who have been working with it, or even, let's say, five years ago, jumped into it and got it and loved it. They really love it. They're passionate about it. So there's a very solid, active community there. So you got to respect that.

Robbie Wagner: [32:30] The thing that's lacking, and maybe it's just because I'm not in that community and I don't know how to find examples, is, like, how to publish an add on or I guess it's not an add on package, whatever they call it. Library. I don't know. I guess they don't have a special term for it in Angular, but I want to write a few components and ship them as a package to you. So we have Angular Shepherd, and I always struggle through getting that thing shipped because Angular will put a new major version out every couple of months.

Chuck Carpenter: [33:01] Yeah.

Robbie Wagner: [33:01] And it's getting a little ridiculous. But they have no way of, like, Ember, would they have Ember Try? So it's like, check if it works with all the new versions, see what changed. There's nothing about that. There's no way to ship compatibility with previous stuff. So if you update any Angular packages to the next version, it is incompatible with the previous one just because of the nature of the way it does the bundling. So it bundles your project, and then it expects that version. There's no way to like it would if it weren't bundled and you were shipping just the components. Odds are they would still work.

Robbie Wagner: [33:33] So there's some magic you could probably do to make it work for a few versions. But I barely am able to publish it, and I'm just happy that I've still been able to publish it this long.

Chuck Carpenter: [33:43] Right, yeah, but, I mean, it's the philosophical question at a certain point, then, which is in the world of being able to take in more generic libraries and apply them easier into your applications, especially something like Shepherd, which requires the client. And so in this whole SSR world and all these other things, all of those thought processes around a benefit around a wrapper is like sort of why what is the library or framework API adding to this that we saw necessary or that we thought was a value add? I'm sorry, we're asking that question a whole bunch now. Like, okay, Shepherd does its thing independently on its own fairly well, and if you're bringing it into your app, the tools are there to do with it as you will. It's very under-opinionated for reasons. So, like, the React Shepherd wrapper, people complain about some different incompatibility issues because it utilizes the context provider pattern, which has its pluses and minuses anyway. And Next 13 had a little weird, like compile compile error. So like, oh, maybe we're just like over wrapping it anyway. We want to just get these things all the hell out of there, give them the library and let them implement. And maybe just the better suggestion is, oh, in a React app, this is the way you can set it up. This is one recipe, rather than maintaining a whole extra thing, that basically just adds one thing to the API and sets up that context provider pattern, which is pretty easy to replicate. If somebody's choosing that within their app, they might be able to do other things or just decide, well, this is just client side only. I'm going to dynamically load it and use it on its own there. And it's a global thing. I don't know. You could take a lot of choices around best way to apply it in that way. And I almost kind of think the same thing with Angular at this point. It's sort of like, what is Angular adding to that library that is necessary to even have a wrapper? I mean, it was kind of cool for a little while for us to say, oh, yeah, we have the React component. You just drop in and go.

Robbie Wagner: [35:58] Yeah. So I think two things or a few things, I don't know. So one is some people that's just kind of their mindset of like, I found this tool I want to use. It's called Shepherd. I'm going to look up view Shepherd, see if it exists. Someone's maybe already written a wrapper for me. I agree that our wrappers aren't doing a lot, but things that they do well. So the Ember one does because I don't know how to work the other frameworks as well. So the Ember one has a service, and it has a bunch of different methods on it, and it has tests for that service. So that's like taking some of that overhead away from your app. If you want to just use the service, you don't need to write tests for it because you can just assume it works based on our tests. Now, the other wrappers don't really have tests. They have, like, it boots up, and Shepherd runs, we're good. So they don't do much, and I agree. And those are kind of more modern packages, like Vue and React, kind of have that philosophy of just import the normal one and add it to your app and use it. And so that's probably what we should do, is deprecate those. The Angular one, I think, has some of the same stuff because they have a concept of services as well. So it has some extra methods, but it does not have the test coverage because it's like karma. I don't even know what you use. It's weird stuff. I don't know how to write tests in, so I don't.

Chuck Carpenter: [37:14] So it almost begs the question of, okay, if the community feels like a wrapper is useful, but we don't work in Angular, so we're just not the best shepherds for that particular repo. So it's sort of like if somebody wants to take it over and ask us questions when things change, which isn't very frequent. Awesome. Yeah, let's do that. But the effort and output isn't valuable, and people get disappointed and upset.

Robbie Wagner: [37:43] Yeah. Maybe we'll shop it around, see if there's a maintainer that wants it.

Chuck Carpenter: [37:47] Yeah. So if you're listening to this and you like Angular, kudos to you for somehow finding us, but otherwise, yeah, we're interested in your help and helping you and keeping it around, if that makes sense. But if it doesn't, then, see, you wouldn't want to be you.

Robbie Wagner: [38:05] That's enough tech stuff.

Chuck Carpenter: [38:07] Yes. Broncos arrived. Bronco broke down. Bronco's new, but Bronco old also still, somehow or another.

Robbie Wagner: [38:14] Yeah.

Chuck Carpenter:[38:14] What's their QA?

Robbie Wagner: [38:16] Yeah. So it's a 1970, but the way that it's a 1970 is just the frame. So, like, literally everything else is new.

Chuck Carpenter: [38:24] The frame broke down. Otherwise, no excuses.

Robbie Wagner: [38:27] No.

Chuck Carpenter: [38:27] There a warranty on this? There's so many questions.

Robbie Wagner: [38:30] Yes. So this is what happened. I got it. It was working fine. I drove it once. We went to the Salamander, had some dinner. It was nice. Put Finn in the back in his car seat. So that was fun.

Chuck Carpenter: [38:41] Nice. Very cool.

Robbie Wagner: [38:42] So that was cool. Then I drove it to work. Like, did the podcast, I guess. The last podcast. It's only been a week, I think since all this happened. It seems like longer. But then I was driving home, and it started popping a whole bunch, and I was like, all right, I don't know a lot about engines, but that's not good. Then it started to be like, the more gas you would give it, the more it would pop. And it wasn't accelerating. It just couldn't move. It would do a little. Like, you could kind of idle and move a little, but if you hit a hill at all, it would just stall out, and you would be, like, stuck.

Chuck Carpenter: [39:12] Is it carburated? Is it, like?

Robbie Wagner: [39:14] Yes.

Chuck Carpenter: [39:14] An old-school engine? Okay, so this sounds like a mix issue.

Robbie Wagner: [39:17] I wanted some of that pain of a classic vehicle. Right. Authenticity. Also, if you get a modern engine in it, it's, like, much more expensive. They have to do reinforcement of the frame and different stuff. Anyway.

Chuck Carpenter: [39:32] Got you. Okay. To say a crate engine is not that expensive, but I can see where fitting it and all of that.

Robbie Wagner: [39:40] The problem was, and they're actually really good, it is all under warranty for like a year or two, I think. So I texted them, and I was like, hey, this broke. And they were like, oh, okay, what's it doing? I was like. It's popping. I don't know a lot about engines. Like, here's a video. And they were like, okay, I don't know what that is from looking at that. So they drove down the next day, like six and a half hours from Ohio.

Chuck Carpenter: [40:07] Wow.

Robbie Wagner: [40:08] And, like, took a look at it and couldn't figure it out, put it on their trailer and took it back and, like, fixed it. Within a couple of days, it was some bolt on the engine. They weren't real specific about which one broke. And they're like, this bolt has never broken for us before, so it seems like a freak thing that they couldn't have known.

Chuck Carpenter: [40:26] Sure.

Robbie Wagner: [40:27] And they also, like, when I got it, it had a hydro boost steering and brake thing where it's like, I guess liquid hydraulic based stuff that, like, makes it break really well and.

Chuck Carpenter: [40:40] Hydro boost.

Robbie Wagner: [40:41] Yeah, they called it hydro boost. I don't know what, but the steering wheel was too good at steering to where when you hit bumps, you would be moving all over the place. So I was like, hey, I don't really like that. So they also took all of that out, put in, like, I guess, normal power steering and just some Brembo brakes.

Chuck Carpenter: [41:01] Okay.

Robbie Wagner: [41:02] So they were really responsive and quick and fixed all of that amazingly fast. And it's back now, so I was happy with that whole experience, despite being upset that it broke after two drives, right? Yeah.

Chuck Carpenter: [41:14] They realize it's like your primary vehicle also. I'm sure most people ordering are like, this is my fun car. And you're like, no, this is my car car.

Robbie Wagner: [41:23] Well, I mean, we don't need two cars, but yes, if Katelynn needs the car, that becomes my primary car, which Hagerty realizes when you go to get insurance because I did the quote, and it was like it was still expensive. I expected to be expensive, but then when I went to actually pay for it, it went up $1,000 more because they realized we just had one daily driver car. I guess they want you to have one per person, and then it's, like, cheaper.

Chuck Carpenter: [41:51] Oh, that's cool.

Robbie Wagner: [41:52] Because they're like, you still should be able to put, what if this breaks down? And yeah, I don't know.

Chuck Carpenter: [41:56] You should still be able to put mileage caps on, though, regardless.

Robbie Wagner: [41:59] Oh, I did. I put a cap on it. And.

Chuck Carpenter: [42:02] Weird.

Robbie Wagner: [42:02] It was stupid, but what can you do? You got to have insurance.

Chuck Carpenter: [42:06] Yeah, you got to. But don't use it.

Robbie Wagner: [42:09] Yeah, well, I have a GPS and cellular tracker on it, so if it gets stolen, I can track you down.

Chuck Carpenter: [42:16] No, perfect. You'll find me in the woods, four-wheel driving when I steal it, hoping it's, like, old school enough to where I can just in the movies where I get under and pull some wires and then put a couple together. And they're like.

Robbie Wagner: [42:31] That's why I have the tracker, because it is extremely easy to steal, like old cars. You just, like, pop a thing open and hit some wires, and yeah, it's good.

Chuck Carpenter: [42:39] Or, like, smash a screwdriver into the key turn thing.

Robbie Wagner: [42:45] That's what people said, too. They're like, yeah, my favorite way of stealing an old car is just with a screwdriver. I was reading forums about it because I was worried about, like, I want to get a tracker or whatever, and everyone's like, just get really good insurance. Because if someone wants to steal it, even if there's no wheels on it, they will hook it up to a tow truck and just pull the shadow of it until it's up on the truck. So you might as well not worry about it, have fun with it, and get good insurance.

Chuck Carpenter: [43:11] That's fair. That's reasonable. Well, I'll remember that when I, you know, have a Ferrari that I park outside here on the earth. I don't know. Probably not a massive thing. So I want to talk about this because this is top of mind for both me and you in a way that there's overlap, which is Ted Lasso season three coming March 15.

Robbie Wagner: [43:31] Did you see? There's a collaboration with Jeni's Ice Cream.

Chuck Carpenter: [43:36] No.

Robbie Wagner: [43:36] To make the biscuits into an ice cream.

Chuck Carpenter: [43:39] Oh, interesting. His biscuits into an ice cream? No, I did not. But we actually get Jeni's here. It's like, originally a Columbus place and then obviously used to be like more places in the East Coast. They have one in Nashville, too, actually, which is funny.

Robbie Wagner: [43:39] I think they have national distribution through Whole Foods.

Chuck Carpenter: [43:56] Oh, really? No. Okay. Yeah, I was going to say we have, like, a fancy grocery store where you can pay the ten or $15 of freaking pint for that stuff. It's nuts.

Robbie Wagner: [44:07] It's very good. It's overpriced, but it is delicious.

Chuck Carpenter: [44:10] It is quite good. And they have some unique flavors, so I will probably still try it.

Robbie Wagner: [44:14] Yeah.

Chuck Carpenter: [44:14] That's fine. If you just make it dinner, then it's cheaper.

Robbie Wagner: [44:17] Yeah, we'll just go get a couple of pints of that and watch the premiere and not eat dinner.

Chuck Carpenter: [44:22] Yeah.

Robbie Wagner: [44:23] There you go.

Chuck Carpenter: [44:23] I like where your head is at. Did you get your AFC Richmond jersey, then?

Robbie Wagner: [44:27] I did not know.

Chuck Carpenter: [44:28] Yeah, you can go online and buy those. I'm trying to think it's, like, through.

Robbie Wagner: [44:33] With the whatever the dating app sponsor is on it or whatever.

Chuck Carpenter: [44:37] Yeah, all the fake stuff or whatever. You can buy those. And they'll actually have Kent. I think he's number five or something on the back. Yeah. He's modeled after a real player named Roy Keane, who is like that and was just like one of the last old school break your legs because he literally broke a guy's knee with a tackle. And it was retribution to something that happened to him, like three or four years before.

Robbie Wagner: [45:05] Wow.

Chuck Carpenter: [45:05] And he'd been waiting years.

Robbie Wagner: [45:07] Dedication.

Chuck Carpenter: [45:08] Got that guy and then was like, just over top of the guy. Like, that's what you get. Fuck off. It's amazing. It's one of my favorite Manchester United players. Just because he's just, like, the original hard man. But kids don't break people's legs when you play soccer.

Robbie Wagner: [45:22] It's a bad idea. Yeah.

Chuck Carpenter: [45:23] Unless you're Roy Keane.

Robbie Wagner: [45:24] I think when you're in the professional leagues, it's different. Definitely don't do that before then. Maybe decide once you get there.

Chuck Carpenter: [45:32] Yeah. Plus, they're a lot more harsh on that kind of stuff now, so you got massive bans and whatever else. And it's also a nice dovetail into video games because FIFA 23 added AFC Richmond with Ted Lasso as the coach to FIFA, so you could play as them. So fun.

Robbie Wagner: [45:49] Does he have lines?

Chuck Carpenter: [45:52] No, not really. Unfortunately.

Robbie Wagner: [45:54] That would be fun.

Chuck Carpenter: [45:55] Yeah, that would be really cool. Just the fact that he's, like, there, and they would show that. And you can play with those players, too. Kind of funny.

Robbie Wagner: [46:02] Yeah. I'm a big fan. I heard a rumor that I don't know if you read up, like, after season two, that they were only going to do three seasons. Right?

Chuck Carpenter: [46:10] Right.

Robbie Wagner: [46:11] But I heard that they're thinking about continuing after three. So they only wrote, like, three seasons of content. It's like they wanted to wrap it up after three to make it clean. But I think they're considering adding on to that. I don't know how that will affect the ending, but of course, you should consider that. Like you're making money hand over fist. Just keep doing that. It's an amazing show.

Chuck Carpenter: [46:33] Right. But then, like, know when to hold them, know when to fold them, know when to walk away, know when to run.

Robbie Wagner: [46:38] Well, yeah, but if you can squeeze out ten seasons or something and get all the money from that.

Chuck Carpenter: [46:44] Seinfeld model.

Robbie Wagner: [46:45] Even if you don't end on a good note, you made a ton of money.

Chuck Carpenter: [46:51] In that sense of things. But as the art and as the show that I enjoy for it's, like.

Robbie Wagner: [46:56] That would be disappointing.

Chuck Carpenter: [46:57] Yeah, it's about soccer. It's about the American view of soccer, too. And then kind of campy romcomy kind of stuff, too. Like, all of those things. And on that note, too. I don't know. Do you watch Emily in Paris? I don't.

Robbie Wagner: [47:10] I watched an episode or two, and I found it a little cheesy.

Chuck Carpenter: [47:14] It's super cheesy, but it's also kind of rewarding in his cheesiness. I don't know. I like it. For one, it's a drama, not like some reality TV, but it has some of that cheesiness. So many things are so unrealistic about it. Right? Like she's going there, and she's like getting by in her little Paris apartment and apparently has tour of fashion every single day. So those two things don't really align. It's almost like friends, right? Like how did they have that Manhattan apartment? Impossible. Absolutely impossible. Right? Lord Jerry and is struggling Manhattan.

Robbie Wagner: [47:48] Yeah, chef.

Chuck Carpenter: [47:49] Yeah. Exactly. So it has those components, good production. And you start to embrace the characters a little bit and everything else. But I guess I won't give away. I mean, it's not ended, but like, man, they will end some episodes or end the season on a massive cliffhanger. Like, what the hell? I have to wait.

Robbie Wagner: [48:10] The worst with that is when it's a new show, and they end season one on a huge cliffhanger, and then it gets canceled.

Chuck Carpenter: [48:16] Yes.

Robbie Wagner: [48:17] And I'm like, fuck you guys. What am I supposed to do now? Just imagine what would happen. Like that happened with Resident Evil. I don't know if you watched that.

Chuck Carpenter: [48:26] That was a show.

Robbie Wagner: [48:27] Yeah.

Chuck Carpenter: [48:27] I remember it was a movie.

Robbie Wagner: [48:29] Every so often, they remember it's a thing and make a new movie or a show about it. And so yeah, there was a Netflix show, and it was very good, I thought. But I guess other people did not think so. Yeah, it was good. And I was like, oh, cool. Like nice cliffhanger ending. Let me look up when season two comes out.

Chuck Carpenter: [48:45] Never canceled. There was this HBO show, like, I don't know, like 15 years ago called Carnivale. And it was like set in the Great Depression. And it was about this traveling carnival but had all these mysticism, like crazy good and evil bits to it. And it was really well done. I think they had a couple of seasons. And then you were like, what is going to happen? And they're like, no, you'll never know because this costs a lot of money to make. And nobody watched it except for you, apparently.

Robbie Wagner: [49:20] Did you ever watch the Black Donnellys?

Chuck Carpenter: [49:22] I did not. No.

Robbie Wagner: [49:24] I think it was maybe my favorite show. It was just about like a bunch of Irish people just like kill it. Kind of Peaky Blinders vibes. But in like modern times. Killing a lot of people, stuffing them in barrels. It was on NBC or some shit on primetime. And they had one where he literally dismembers a guy and puts him in a barrel and gets blood all over himself and stuff. On primetime. NBC.

Chuck Carpenter: [49:49] Wow.

Robbie Wagner: [49:50] And it went off after that episode because I guess people got pissed off that that happened in network TV, and someone else picked it up for the rest of the time. So it had like another maybe ten episodes, and they put it out on DVD. So I was able to watch at least one season of it. But yeah, it was really good.

Chuck Carpenter: [50:11] That's why I can't watch network TV. I think network TV is so corny anymore. Anytime I like trying to watch a normal network TV show, I'm just like the limits you have. This is just not good anymore. How did we watch this?

Robbie Wagner: [50:25] Yeah, and all the sitcoms now are just super cheesy and shitty. And the acting is bad, the writing is bad.

Chuck Carpenter: [50:33] That's why I'd rather watch it on Netflix. Emily in Paris. Emily in Paris would be worse if it had to be on NBC.

Robbie Wagner: [50:41] Oh, yeah.

Chuck Carpenter: [50:41] Because they wouldn't be on location. That's ridiculous.

Robbie Wagner:[50:45] Yeah, I finished Witcher. And also, did you notice that what's the guy's name? The actor that's The Witcher guy?

Chuck Carpenter: [50:54] Henry Cavilll?

Robbie Wagner: [50:56] Yeah.

Chuck Carpenter: [50:56] Superman. No.

Robbie Wagner: [50:57] Did you see that? He's not going to be The Witcher after next season.

Chuck Carpenter: [51:01] I did not. So I watched The Witcher, like the original one. And I know there's like a newer series coming that came out recently.

Robbie Wagner: [51:09] There's like a spin-off that's like prequel or something.

Chuck Carpenter: [51:12] Yeah. So I watched The Witcher, and I was like, oh, that's awesome. And then they had the prequel thing or whatever. Recently I watched one episode, and I was like, this is a little weird. And they asked my brother like, oh, what did you think? And he's like, oh, it's terrible. Don't bother.

Robbie Wagner: [51:25] Yeah, I'm unlikely to bother because without The Witcher, why do I want to watch this? But yeah, so he's going to be stepping down. I think he also said he's stepping down from Superman. Like he's quitting all of his stuff. I don't know why.

Chuck Carpenter: [51:38] Going back to being a bartender at a bowling alley, I think, or something. Because, you know, that's where he was discovered.

Robbie Wagner: [51:44] Oh, really?

Chuck Carpenter: [51:44] Yeah.

Robbie Wagner: [51:46] So what's his name? Hemsworth. The younger Hemsworth is going to be the new Witcher. Yeah.

Chuck Carpenter: [51:54] Liam or Chris?

Robbie Wagner: [51:55] Not Chris. Liam, I think Liam. Chris is the old one.

Chuck Carpenter: [51:58] So Chris is Thor then, right?

Robbie Wagner: [52:00] Yeah. Okay, so Liam.

Chuck Carpenter: [52:02] Liam.

Robbie Wagner:[52:02] Yeah. So he's going to be the new one.

Chuck Carpenter: [52:04] Wait, one of them was with Miley Cyrus?

Robbie Wagner: [52:06] That was Liam?

Chuck Carpenter: [52:07]Yeah. Okay. And so he's going to become Superman?

Robbie Wagner: [52:10] No, no, not Superman, The Witcher.

Chuck Carpenter: [52:13] Witcher. Oh, I don't know. I might still watch it.

Robbie Wagner:[52:15] I'm still going to watch it because I think the writing is good. Or maybe it's just because I like the game, and it's like kind of true to how the game feels.

Chuck Carpenter: [52:23] But see, I did the opposite thing. I watched the show and was like, okay, this is fun. Now let me play the game.

Robbie Wagner: [52:30] Yeah.

Chuck Carpenter:[52:30] Since they had it on Switch and it was a natural like I had a little bit of like I needed a Skyrim replacement, and Witcher felt like, no, it's got something got similar.

Robbie Wagner: [52:43] Well, Starfield is coming out this year. Have you heard of that? So it's the next Bethesda game. Like the people that make Skyrim? They've been making it for like five years or more. And it's supposed to be like way bigger world than Skyrim. And Skyrim was already gigantic.

Chuck Carpenter: [53:00] Yeah, huge.

Robbie Wagner: [53:01] So that's the next thing I'm going to play.

Chuck Carpenter: [53:03] Is it going to go right to Switch or is it going to be a PC game?

Robbie Wagner: [53:06] I think it'll probably come out on everything but Switch. Switch seems to be five years, at least a month behind. No, they're getting better. They've called up, and now they're getting stuff. But it doesn't come direct to Switch on launch day. Usually, it's like a month or two later. No, it may be too big for a cartridge, though. I don't know if it's that big of a game.

Chuck Carpenter: [53:26] They have downloads too, though.

Robbie Wagner: [53:28] It's a digital game, so yeah, I'm excited for that. That and Diablo 4 and the new Zelda are all coming out this year.

Chuck Carpenter: [53:36] The new Zelda is basically all I have time for in my life. FIFA now.

Robbie Wagner: [53:39] Oh, I have time for none of these. I just aspirationally want to buy them all.

Chuck Carpenter: [53:44] Yeah, you can buy them.

Robbie Wagner: [53:46] Yeah.

Chuck Carpenter: [53:47] And you're still in a mode where like maybe at 02:00 a.m., you couldn't get back to sleep. You could play for an hour or so.

Robbie Wagner: [53:52] Yeah, I played some Xbox at 04:00 a.m. The other night because Finn got up then, and he's going to be up for at least an hour trying to go back to sleep. And then, by that time, it's almost time to wake up. So I'll just get up and have some fun before the work day.

Chuck Carpenter: [54:06] Yeah, makes sense. That's why the Switch is appealing because I can squeeze it in. You can pause something and then come back to it an hour or two or something. That makes the Steam Deck potentially appealing because you can PC stream games and have your PC games also on that.

Robbie Wagner: [54:25] Or you can play in your Tesla. We started, got the beta. You can download all the Steam games in the Tesla.

Chuck Carpenter: [54:32] It looks like a bad idea.

Robbie Wagner: [54:33] Well, while you're charging, you can play your game for like 30 minutes if you try to play it while driving. That would be a bad idea.

Chuck Carpenter: [54:40] Yeah. Or can your passenger do it while you're driving on a road trip? I don't know how that works.

Robbie Wagner: [54:47] Well, it goes onto the screen in the rear too. There's probably a way to say, like, just play in the back, but then also the front screen, I think, in the newer ones. Or maybe there's a way to unlock it. You can turn it, so just the passenger can see it. So possibly, people could play it while driving. We haven't actually played anything because we were waiting for games to download, so we don't know how it works, but we're going to try it soon.

Chuck Carpenter: [55:11] Steam Deck. I think Steam Deck is the win. Yeah. It's a mini Linux computer, so you can. Upgrade the SSD and some other stuff there too. So I find it interesting from like a hacky tech perspective, but at the end of the day, I know I don't have time for yet another thing.

Robbie Wagner: [55:27] Yeah, speaking of time, we are at time here, so whoa. We're going to end. Thanks, everyone, for listening. If you liked it, please subscribe. Please leave us some ratings, reviews, whatever you can do to help spread the word. Tweet about us, tweet at us, message us, do whatever, let's chat, and we'll catch you next time.

Chuck Carpenter: [55:52] Thanks for listening to Whiskey Web and Whatnot. This podcast is brought to you by Ship Shape and produced by Podcast Royale. If you like this episode, consider sharing it with a friend or two and leave us a rating, maybe a review, as long as it's good.

Robbie Wagner: [56:07] You can subscribe to future episodes on Apple, Spotify, or wherever you get your podcasts. For more info about Ship Shape and this show, check out our website at shipshape.io.