Whiskey Web and Whatnot

A whiskey fueled fireside chat with your favorite web developers.

Listen/Watch

97: Hot Takes, Remix, and Next.js with Chance Strickland


Show Notes

Chuck and Robbie catch up with Chance Strickland, Senior Software Engineer at Replo, at the RenderATL conference. Chance kicks off the conversation by sharing that he is now working at a small startup after leaving the Remix core team.

The trio discuss the benefits and drawbacks of using signals, a tool that helps manage asynchronous JavaScript. They explore how signals can enhance code readability and simplify complex workflows, but caution against potential performance issues and the learning curve involved. The conversation shifts to rebasing, with Chance providing insights into its usage and advantages. He explains how rebasing can help maintain a clean Git history and enable seamless collaboration in a team setting.

In this episode, Chance talks to Robbie and Chuck about his experiences with tools like Tailwind, rebasing in Git, and the pros and cons of using signals in web development.

Key Takeaways

  • [01:57] - Introduction to Chance Strickland.
  • [04:11] - A whiskey review: Chicken Cock Kentucky Straight Bourbon.
  • [12:25] - Tech hot takes.
  • [19:17] - Chance’s opinion on Tailwind CSS.
  • [37:07] - What Chance loves about Next.js.
  • [45:59] - Why Chance is skipping leg day.

Quotes

[18:55] - “You can’t just come in and swing a hammer at everything because you read someone somewhere said this. You have to think about all of that context and understand.” ~ Chance Strickland

[20:47] - “Tailwind really is just a tool built on a CSS Principle.” ~ Chance Strickland

[28:28] - “The thing that keeps me coming back is the very simple promise that React has always given, which is, your UI is a function of your state.” ~ Chance Strickland

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: [0:00:10] What's going on everybody? Welcome to Whiskey Web and whatnot. I'm your host, RobbieTheWagner, and my co-host, as always, Charles William Carpenter the third.

Chuck Carpenter: [0:00:20] My friends call me Chuck.

Robbie Wagner: [0:00:21] Thought they called you Trey?

Chuck Carpenter: [0:00:23] No, no, no, that's the trick nickname. That's not for real friends.

Robbie Wagner: [0:00:28] Okay, our guest today is Chance Strickland. What's going on, chance?

Chance Strickland: [0:00:32] Not too much, just hanging out having a good time. Trying to take a little recovery day today He's going to say too much.

Chuck Carpenter: [0:00:39] Good time is what you're saying.

Chance Strickland: [0:00:40] It's a tad bit. We got into it a little bit before we pressed record, but my voice might sound a little scratchy because I just had a lot of fun and I'm not 22 anymore, so I need to keep that in mind when I'm at events where they just throw drinks at you.

Robbie Wagner: [0:00:55] We've been having the same problem of having drinks and not being 22.

Chance Strickland: [0:00:59] And yet here I am at a drinking themed podcast too.

Chuck Carpenter: [0:01:03] I believe in hair of the dog as a recovery tool. As long as you exercise restraint in that,

Chance Strickland: [0:01:13] I can get behind that.

Chuck Carpenter: [0:01:14] Have we mentioned we're at Render ATL? I think we should make sure that's in there.

Robbie Wagner: [0:01:19] We have now. Okay, I mentioned that last time. I never know what I'm doing. Yes, we are live at Render ATL.

Chuck Carpenter: [0:01:24] Live, but two weeks later you'll hear this. Hot-Lanta, Georgia. But it's not that hot right now, so it was a real misnomer.

Chance Strickland: [0:01:29] It feels great, in which I'm from here and I was dreading the trip because I'm in San Diego now and I've adapted to dry and pleasant, although it's been a relatively cold and wet year relative to San Diego norms. Yes, but I got here and it feels great. Yeah, pleasantly surprised and happy.

Chuck Carpenter: [0:01:50] Yeah, great, I agree with that too. We're not going to talk about weather all podcast though. So, yeah, we could People like to do that. So Chance for those who don't know you and don't know what you do. Tell the people a little about yourself and what you got going on.

Chance Strickland: [0:02:01] Sure well, so my name is Chance Strickland and I'm a software engineer. I work for a company, a small startup called Replo, which is a brand new position for me. If anyone already knows me out there, it's probably because I worked on the Remix core team for a while. I started on that project I think it was employee one or two very early on with Michael and Ryan building remix, and before that I worked with them at React training and doing React workshops for people that needed to learn React, I guess for a lot of people.

I've taught a lot of workshops over the years and I've also worked on some pretty high profile open source projects Radex UI in the React ecosystem and Reach UI both comparable UI libraries, lower level accessibility focused UI libraries. So I worked on those for quite some time. So it's interesting to be back in the product world because I've been so far removed from that and it's very different building products for developers than it is for regular people who think about very different problems.

Chuck Carpenter: [0:03:06] Yeah, it's a whole different mindset to reframe your users from developers who are technically astute and getting into code and APIs versus using an actual product. So that's.

Chance Strickland: [0:03:21] Yeah, and it really shapes how you think about not only think about the code that you write, but how you prioritize your time and spend your time writing that code. Like. One of the challenges I'm learning in making this adjustment is I can no longer sit around and spend like half a day thinking about like a function API right, because my users don't care about that anymore. Right, like my users are not the developers who interface with through that function, they just use an application, and so now it's more about shipping the actual app than it is about perfecting the art of the code, so to speak. So, yeah, it's an interesting set of challenges and it's an adjustment to get there. It's a really like train your brain to not care about things anymore.

Chuck Carpenter: [0:04:02] Sometimes there are different things.

Chance Strickland: [0:04:04] Well, of course. Yeah, it's just the things that I've been, I've adapted to care about are no longer as important. Yeah.

Chuck Carpenter: [0:04:11] Yeah. I'm going to put a pin in that for a moment, and I think we should get to a little bit of whiskey first.

Robbie Wagner: [0:04:15] Sure, let's introduce that whiskey Chuck. What do we got today?

Chuck Carpenter: [0:04:19] Well, it's a brand that had been known as the famous old brand for quite some time, but more commonly to the Wagner household as Chicken Cock. So we're having the Chicken Cock bourbon. It's 90 proof. It's not age stated, but as Kentucky straight bourbon whiskey by law must be at least four years. The mash bill looks like a 70% corn, 21% rye, and 9% malted barley. The interesting thing about this brand is it's actually one of the oldest brands of bourbon in the United States was originally from Paris, Kentucky went through prohibition and then kind of died off post World War II and then recently a company in Bardstown has revived the brand and started doing like a bunch of different expressions of it. So it should be pretty interesting. I'm excited. So it actually not sourced yeah, it's actually distilled within Kentucky and bottled there. That's rare. Cool Yeah, sometimes.

Robbie Wagner: [0:05:15] Everyone sources. Yeah, everyone sources these days.

Chance Strickland: [0:05:19] When you introduced this to me earlier, you said this is the fun one to say and I appreciate that you had a lot of fun saying.

Chuck Carpenter: [0:05:25] I am an infant and I will continue to have fun saying Chicken Cock. As well as you should. Well, it's Robbie's nickname. Okay, all right, here we go.

Chance Strickland: [0:05:35] I do like the bottle as well. Yeah, it's nice. It's got kind of like a chicken wire.

Chuck Carpenter: [0:05:38] It's got a little bit of a chicken wire feel to it.

Chance Strickland: [0:05:40] Oh, I kind of went with honeycomb, but that makes more sense. More than I should have poured, here you go.

Robbie Wagner: [0:05:45] You're fine Thank you.

Chuck Carpenter: [0:05:46] I don't begrudge you that.

Chance Strickland: [0:05:48] All right, I just forgot for a moment. this is straight liquor and not, you know, a mixed drink.

Chuck Carpenter: [0:05:53] We'll add a little diet coke. Splash diet coke in there for you later. All righty.

Robbie Wagner: [0:05:59] I keep ending up with a bottle at the end with no cap and it makes me nervous. Okay, Who here. Pass this down. Can you pass me?

Chuck Carpenter: [0:06:04] the All right, i'm kind of like a brown sugar. It's very sweet. 70% corn is definitely going to do that. Very sweet.

Robbie Wagner: [0:06:14] It smells pineapple-y to me.

Chuck Carpenter: [0:06:16] Oh, okay. Yeah, I got a slight fruit tinge and a slight brown sugar kind of smell, but it does have like just a sweetness overall in the aroma.

Chance Strickland: [0:06:24] Yeah, I'm not trained in the art of....

Chuck Carpenter: [0:06:28] It's all bullshit. I mean, we make it up, don't worry about it Just think of like your favorite candy.

Chance Strickland: [0:06:32] I wasn't going to say that, but I was pretty sure you were all.

Chuck Carpenter: [0:06:34] I'm getting like a dried apricot flavor.

Robbie Wagner: [0:06:38] Oh, that's something you've never gotten before. Yeah, a dried apricot, a little brown sugar-y, tastes a bit like dirty sweatpants. I use the descriptor new Nikes a lot like new shoes.

Chuck Carpenter: [0:06:49] He has done that. Yeah, like the new rubber of shoes, specifically Nikes, new. Nike rubber. Yeah, I feel like I get a slight vanilla finish, with a little nutmeg too, but it does all like a lot of sweeter flavors.

Chance Strickland: [0:07:01] Tastes like sweet whiskey to me, and I'm not mad about it.

Chuck Carpenter: [0:07:03] No, no, it's not a bad thing No sugar added Federally regulated spirit here, of course.

Robbie Wagner: [0:07:05] Do you see some places that had. Well, I guess, like a flavored one would add sugar, yeah, sure.

Chuck Carpenter: [0:07:13] Remember that weird banana one you had us try. That one was good, though It actually was better than it sounds. Well, bourbon has rules right.

Chance Strickland: [0:07:19] Yes, Like there's specific. I mean obviously it has to be made in Kentucky, but like

Chuck Carpenter: [0:07:21] Oh, nope, That's not a true.

Chance Strickland: [0:07:22] Not a rule apparently, so I was wrong.

Robbie Wagner: [0:07:24] Kentucky Street Bourbon has to be made in.

Chuck Carpenter: [0:07:27] Kentucky. That's a misnomer that a lot of people think, though I thought that for the longest time.

Robbie Wagner: [0:07:31] I thought that too.

Chuck Carpenter: [0:07:32] Yeah, so bourbon can be made anywhere in the United States, but it has to be at least 51% corn in the mashbill. It has to be aged at least four years in brand new charred oak barrels. Okay, it has to go into the barrels at a maximum of, I think like 120, 125 proof Okay For the aging process and cannot have any artificial flavorings. It's basically the only thing that makes Jack Daniels not bourbon is the fact that they filter it in maple flavored charcoal.

Chance Strickland: [0:08:01] I learned so much just now. It's funny. I've been to the Jack Daniel's tour and you'd think they would have said something along those lines and I would have remembered, but I don't.

Chuck Carpenter: [0:08:09] Yeah, they don't care about being bourbon though? No, they don't. I was born in Kentucky, and so it was taught in like grade school, so no, not really.

Robbie Wagner: [0:08:17] They went through ABC and then went straight into that.

Chuck Carpenter: [0:08:19] Yeah, exactly, and then they're like oh, you got a toothache and B stands for bourbon, and today we're going to learn all about bourbon. Hey boy, you got a toothache there here, I got a little whiskey for you. I mean, they actually used to do that. That's a grandma's thing, but a little whiskey on your toothaches. Now I know, yeah, knowing's half the battle, that's what GI Joe used to say.

Yeah, alrighty. So we'll get into the rating portion of it, so cleverly, using our expert rating system, from the octopus one to eight tentacles, one tentacle being terrible, never giving this to me again. Eight tentacles being amazing. I never want to drink anything else. So it makes four pretty decent, still in the middle and just compared to whiskies that you like to drink in general, like how you would rate this.

Chance Strickland: [0:09:04] Oh, it's absolutely arbitrary. Oh yeah, if I had a row of whiskies and I was comparing them, i'd be all over this, but now I'm just like, oh, I liked it, I like it quite a bit, so I'm going to go on to the six, only because the two tentacles that I would reserve would be because of it. Maybe it's a touch too sweet for my taste, like I do want something a little bit drier, but overall I do like the flavor, I like the smell and I could imagine it making a pretty tasty Manhattan or something.

Chuck Carpenter: [0:09:35] Yeah, I think I'd agree with that for sure.

Robbie Wagner: [0:09:37] Yeah, I think for me it's how much did this cost you.

Chuck Carpenter: [0:09:42] So bear in mind. this came through like DoorDash, so there's always like a premium added onto that. But I want to say it was like 60, 65, something like that. I think like their basic offering is around $50. So this is like their intro one, and they have some age-stated ones and a few other varieties. But, yeah, I'm going to say let's give it $50, $60, something like that.

Robbie Wagner: [0:10:02] OK. With that in mind, I'm going to say I might say six, too. I think it's pretty good. It's maybe not super good for that price point, but everything's expensive these days. So you know, like comparing to the Buffalo Trace being really cheap, except for like that.

Chance Strickland: [0:10:16] There's that peanut butter whiskey, now that everyone drinks. I've tasted it once It's so bad.

Robbie Wagner: [0:10:21] I took the tiniest sip, and what is it called?

Chuck Carpenter: [0:10:23] Screwball.

Chuck Carpenter: [0:10:24] It's called stupid fucking decision.

Chance Strickland: [0:10:25] But it's also so incredibly cheap at least the one if the liquor store is near me. It's like you can get a handle for 20 bucks or something.

Robbie Wagner: [0:10:33] Yeah, yeah.

Chance Strickland: [0:10:34] In San Diego, which is right, ridiculous. Yeah, that's. yeah, I was like it can't be good. No it's not.

Robbie Wagner: [0:10:39] Yeah, it's not good. They include it free in a lot of the orders we do and I'm like nope trash.

Chuck Carpenter: [0:10:43] Yeah, I was going to say the only reason why I've tried it is because I was given a shot for free.

Chance Strickland: [0:10:47] Oh same.

Chuck Carpenter: [0:10:48] And I sipped some of that shot and threw it the rest out.

Chance Strickland: [0:10:51] I was watching the football game at a bar and they came out and it was like a touchdown thing where team scores. They bring out whiskeys for everyone and I was like sure I'll have a shot of whiskey. They did not tell us that it was the dreaded peanut butter whiskey.

Chuck Carpenter: [0:11:02] Yeah, you really got to worry about that As soon as you hear it, you're like no, come on.

Chance Strickland: [0:11:08] No, You didn't. Yeah, you did OK.

Chuck Carpenter: [0:11:12] I'm going to say screwball is a one tentacle for me just because we haven't included a zero on our scale, but I would probably cut off all the tentacles of that octopus rather than.

Robbie Wagner: [0:11:20] You would take the octopus and throw it in the trash.

Chuck Carpenter: [0:11:22] Yeah, just throw that trash.

Robbie Wagner: [0:11:24] Poor octopus. Yeah.

Chuck Carpenter: [0:11:25] I'd rather have fireball than that stuff, and that is saying something. That stuff is horrible too. Fireball has its time in place.

Chance Strickland: [0:11:30] Yeah, it was like 20 years ago. for me It's edible Just not after Yeah, I was about to say just not after the age of 30, I think.

Chuck Carpenter: [0:11:37] So that's reasonable. Well, I'm going to. Yeah, I'm feeling in the six-ish zone. I try not to go in the middles, I mean because this isn't Star Search or whatever. I think it's as a sweeter whiskey. It's good. You usually kind of think about something like Maker's Mark, a weeded whiskey that have the sweet side of it. I probably would like to try one at a higher proof. I think I'd like to balance it with a little more heat, like maybe 100 proof or so, and then maybe that would give something to it. So I'm going to give it six tentacles. It's good. I'd have it again. I think it might make some really decent lower ingredient, more alcohol-forward cocktails. I'm interested to try more Chicken Cock.

Robbie Wagner: [0:12:14] Yeah, you can't have too much Chicken Cock.

Chuck Carpenter: [0:12:17] They're small.

Robbie Wagner: [0:12:20] Yeah, the small batch man. Yeah, a small batch. Well, that's it for us, ladies, and gentlemen, we've been canceled.

Chuck Carpenter: [0:12:26] Maybe we should talk about a few technical things. We have a set of questions that we try to ask our guests and they're quote unquote hot button issues on tech Twitter. So obviously not that serious and it's really more about personal preference. Yeah, yeah, yeah, you know, let's knock these out, ok. So as far as type strip goes, yes, inferred types or explicit types.

Chance Strickland: [0:12:47] Depends. That's honestly going to be the answer to every question you ask, unfortunately, because I don't really do hot takes like that. But I will say we'll all take a side.

I can try and go into a little bit more detail. So I say it depends because, again, I spend a lot of time writing library code. Yeah, and in library code oftentimes you want explicit types because you need to expose those types to your users. But you want to type your functions and your utilities in a way that users can benefit from inferred types, Because in application code, in most of the code you write, being able to infer those types I think is really nice. When I was working on the remix team, this came up quite a bit Because are you familiar with the Remix? Yeah, OK, Yeah, We talked to Kent, OK, of course.

So one of the core ideas or one of the core models in remix is the route module, which is essentially just a file that exports a bunch of functions. and the challenge with that is when you have a module that has a very specific shape and all of the parts are interrelated from a types standpoint, type script can't really look at your file structure, your file tree, and figure out, based on the file name, that this parameter is supposed to exist. It doesn't know your file name conventions. It also doesn't know how to look at functions that are just standalone exports and understand that those things are related. If you wrap them up in a closure of some sort and you typed it as such, sure you could do that. But just as these single exports, you can't do that. So you have your loader export, your action, your default component, and all of those can use. Well, they can also use data from each other in one way or another. So in order to get any type information from, let's say, you return some data from your loader function and you want to know what the shape of that data is by the time it reaches your component and renders, You would need to access that through the use loader data hook, but you'd have to manually add the type information there. It's a generic function and you'd have to pass the type of the data to get that back right.

And so in the early days that's what we did and that was really your only option. You had to explicitly type that data if you wanted to share it between places, and we got some pushback for that and I was sort of on team let's not change anything because There's a danger in lying to people about types Right, and what I mean by that is it's really easy to get into a situation where you try and trick TypeScript into inferring something in a way that is TypeScript doesn't have the necessary context to guarantee that contract. But it satisfies you because now you have auto-complete in all of the things that we like about TypeScript right. So we kind of pushed back on some of the proposals because they felt like a little bit of lying or trying to trick the compiler and where we sort of landed on this I think is actually really interesting and nice solution for users, which is that As the generic parameter to use loader data, instead of typing the data, you can actually just look at the type of the loader function itself and if it takes that function instead of a data type, it can then infer the data from the shape of the returned object from the loader and so you no longer have to explicitly type your loader data in that case and you can infer it in that way even though you do still have to pass a generic Or an argument to that function.

So I guess that's a roundabout way of saying like I like inferred types as a user. As a user writing application code, it's really really nice. But when you're writing a library code sometimes you really do need to explicitly type things, and there's just certain cases too, where there's like different relationships between functions or libraries or modules, where sometimes it just makes sense and you want to explicitly guarantee that your type looks a certain way, Which is also something that we can. You can sort of have the best of both worlds. Now, with the satisfies keyword, which is a pretty new addition. Never works for me.

Robbie Wagner: [0:16:48] No, I don't understand why I love it. I try it and it's like no, you didn't do it right.

Chance Strickland: [0:16:55] So we found so many use cases for it. Basically, as soon as I started that Replo I was looking through and doing some work on a new feature and found some really good use cases where you can basically express a very broadly defined type and then narrow it down by just using type inference, but just making sure that you say this has to satisfy this larger type. So as soon as you break that contract, typescript will know when it'll yell at you. But when you go to use that type somewhere else of the actual declared variable or function, it knows a lot more information about that value. So it's much stronger type safety with the guarantee that you're always satisfying that contract that you established explicitly. Which I like.

Chuck Carpenter: [0:17:32] So I think that that's a great response in the sense too of what you were talking about earlier, like what your previous role into now and having this like diatomatically opposed context view as to creating the library, being the consumer of the library, your output being satisfying developer needs versus satisfying product and business logic needs around those things, right. So I think that when you said my answer is depends, I felt like it was very charged by well, what's the context that I'm making this decision in? Sure, and I think that's a really smart way to have opinions, right, that's every question in programming, absolutely, there's so much to think of.

Chance Strickland: [0:18:10] I mean, it's really easy, especially when you start a new job or you step into a new code base of any kind.

Really it's really easy to come in and see potential problems or bugs or things that you would have done differently, and feel that urge to go and like smash everything down, start over, fix it, you know, make it better. But then you learn the historical context about why decisions were made and when those sort of contextual details come into play, things start to make a little bit more sense and you're able to sort of step back and resist that urge. and I think it's really important sometimes to recognize that when you feel that way about code you've written or anyone else, think about that historical context and understand that because somebody wrote a blog over here that said this pattern is bad or this is an anti pattern, yeah, you can't just come in and swing a hammer at everything because you read someone somewhere said this right, like, you have to think about all of that context and understand and sometimes it does need to be rewritten. Sometimes things are bad and that's fine, but you know it's always a more complex, nuanced set of decisions that lead you there.

Chuck Carpenter: [0:19:14] Yeah, there's usually not one right answer, right.

Robbie Wagner: [0:19:17] Unless you're asking about Tailwind, so go ahead and ask about Tailwind, then.

Chance Strickland: [0:19:24] Can we not man. Well, I guess it's safer here than on Twitter, because if people want to rage, reply to this podcast, I'm never going to hear it. Yeah, you won't, that's fine, you know.

Robbie Wagner: [0:19:33] No, you can find Chance on Twitter at CinderhateMail2.

Chuck Carpenter: [0:19:38] No to Robbie at ShipShapeio.

Robbie Wagner: [0:19:42] No, that's only where Russians and Twitter...

Chance Strickland: [0:19:46] Literally to anyone else, because I don't care. No, I mean, we can talk about it.

Chuck Carpenter: [0:19:49] Yeah, and I think that's valid. You don't have to care, yeah, so let's talk about it.

Chance Strickland: [0:19:53] I have a very strong love for CSS. It was my, you know, I have a former life as a designer and CSS was my first way to express myself in terms of code in a way that connected with my design sensibilities and, like many people, I think, of my age who got their start in programming. We had MySpace and we wanted to make you know. I had bands in high school and I wanted to make our MySpace page look very punk rock.

Robbie Wagner: [0:20:19] Oh yeah. Div overlays for the win.

Chance Strickland: [0:20:21] Yeah yeah, of course of course. So you know, we got to style the world with CSS and it was awesome and I enjoyed it greatly and I really just fell in love from a very in the very early times, with CSS is a first entry point into programming, and I say all that because a lot of people think that you know, if you like Tailwind then you must not like CSS, or if you like CSS then you're not allowed to like Tailwind, which is all just incredibly silly. Tailwind really is just, it's a tool built on a CSS principle, right, the principle like utility first, CSS. and it is literally impossible to use Tailwind if you don't already know CSS, because they're shorthand CSS properties, right, and I mean, I think, when people say that what they mean is the part of CSS that people I guess either don't like or like is really I think it's the cascade, right, or just naming things. Those are sort of the two things that people get hung up on.

Robbie Wagner: [0:21:16] Yeah, the naming is the problem for me.

Chance Strickland: [0:21:19] Yeah, and it's a problem for a lot of folks. I totally get it.

Chuck Carpenter: [0:21:20] It's what I liked about BEM is they gave me a structure for naming.

Chance Strickland: [0:21:23] 100% and which, you know, if you gave me a green field project, told me to do it exactly how I wanted to do it today, I probably, honestly, I'd use like SAS with BEM naming structure, because that is that's where I'm most productive and I feel like that holds up for me over time. It's it's a battle tested methodology and it works really well. However, I totally understand how people get hung up on naming things, how they get hung up on cascading effects and how easy it is to shoot yourself in the foot If you're not careful, sticking to these conventions, and Tailwind then comes in and says you know, you don't have to think about any of that anymore, we're going to think about it for you, and now you can colocate that the CSS, the style declarations, alongside your markup, just by the way, as we tried to do with CSS and JavaScript. Right, it's sort of like meets both of those needs, I think, and I think it's a great tool.

It's would it be my first choice? Maybe not only because it's not what I'm most productive in. Yeah, so that's really like a personal taste thing. Yeah, but it's an excellent tool. It's as shortcomings, to be sure too, and sure, and you know who knows about the shortcomings more than anyone is Adam. The team is Adam. Yeah, people who build tailwind know the shortcomings, which is why they've built incredible tooling around it to compensate for that. So their VS Code extension is fantastic. Yeah, the plug-in ecosystem around the community has filled in. There is fantastic. There's utilities like Tailwind merge, so there are ways to to deal with their shortcomings in a way to reduce the impact of them and make the experience of using it much, much smoother. So, yeah, I think it's a great tool. We used it on the remix team. Everyone in the remix team loved it. So, yeah, i'd say for me personally maybe not, but that's just because I wrote CSS for so long and feel really productive in it and you enjoy it and I enjoy it.

Chuck Carpenter: [0:23:08] Yeah, I think that's probably a difference in it.

Chance Strickland: [0:23:10] And it's totally fine to admit that too To be, like this decision is not purely technical. I just love doing it this way and I'm going to do it this way.

Chuck Carpenter: [0:23:17] Yeah, like you're going to put passion into, like dialing it in and doing the right thing, and I think like that's great. I don't want to do that and I didn't even mind. I don't like either. You don't want any styles. I don't like either, to be honest.

Robbie Wagner: [0:23:29] But I mean black and white tech. Yeah.

Chuck Carpenter: [0:23:32] Yeah, just HTML.

Chance Strickland: [0:23:34] It's the way it's supposed to be The fastest website in the world is the one with no JavaScript and no CSS Right.

Chuck Carpenter: [0:23:39] Exactly, Astro knows, or you just don't even need that. I'm just going to FTP all of my sites from now on. Single index.html. Yeah, exactly. But I found like productivity in it when I'd have to go down that path and it was like, oh, I don't have to think so this is fine for me, but you know, I don't think it's a one size fits all. Yeah.

Chance Strickland: [0:24:00] And again, context. So like are you building for yourself or are you building for a team? What's going to? you know, if it makes you more productive but it slows your team down, that decision has to change a little bit, right? So, yeah, context is always going to matter. So, yeah, same answer as before It depends. Yeah, yeah, I like it Yeah.

Advertising: [0:24:18] Whiskey Web and whatnot is brought to you by EmberConf. Emberconf is back in person this year in Portland for a special celebration of 10 years since the 1.0 release of Ember. Been a long time. There are lots of great talks, as always, but I'm particularly excited about one walk the line convention in country music and development. That just sounds like a really interesting talk linking those two things together. and I'm, of course, excited for whatever magic Ed Faulkner drops in his keynote Always fun stuff there.

This year the workshops are a little different and they'll be included at no extra cost in a two hour block during the second day of the conference. There's a lot of cool options there. There's a deep dive into building V2 add-ons and intro to animations in Ember And, of course, a live recording of this podcast. That's right. Whiskey Web and whatnot will be live at EmberConf recording an episode in person. So if you're a fan, we would love to see you there. Space is limited for all of the workshops, so register soon to make sure you get space in your preferred one. I'm definitely excited to be back in person this year and hope to see Ember Friends, new and old, in Portland July 20th to 21st for one of the best conferences in the business. Get your tickets now at EmberConf.com.

Robbie Wagner: [0:25:32] What's our next one? Chuck, let's see.

Chuck Carpenter: [0:25:35] Well, I don't know if you wanted to keep doing hot takes, git rebased or git merged?

Chance Strickland: [0:25:40] I merged for a long time and recently jumped on the rebased training. I don't think I'd go back. Yeah, okay, there we go. Yeah, rebase is just one of those tools that felt so potentially scary. We're like when it worked really easily and well, I was like, okay, this was great. I get like the linear history. I love it. But especially early on, when I was still learning git, you get into a situation where there's a conflict or you have to pause in the middle of your rebase. Then it was always overwhelming like, oh shit, how was that Yeah?

What does this look like? How do I fix this? How do I get out of this scenario. and then I just basically said you know what, instead of learning this, i'm going to just run away from it. and you know what? I was still able to be pretty productive with that, and that's okay. But I eventually came around and, yeah, get rebased The linear history is quite nice.

Robbie Wagner: [0:26:28] You can have the best of both worlds now with like merge stuff, but then squash and merge when you merge the PR and it's like there we go, We got both.

Chance Strickland: [0:26:36] Yeah, there are some tradeoffs with that where sometimes you do want to preserve, you know, a few separate commits for the PR. It is kind of nice, especially for larger PRs, to be able to maintain smaller commits within that PR. So I don't like always squash merging huge PRs But yeah, for most PRs I do squash merge them anyway. So it's like but when. I pull down things in the process of keeping that PR up to date. I'm always rebasing.

Robbie Wagner: [0:27:01] Yeah, for me it's like so we have a bunch of people that are maybe not as experienced as like some others, So they'll merge a thing that has like 150 commits and I'm like, please don't do that. Yeah, Like, to me it's the lesser of the two evils. That just requires squash and merge and like then I don't have to worry about someone merging something with 150 commits.

Chance Strickland: [0:27:20] But well, yeah, the nice thing about that too is at least in GitHub, if you decided with one PR you wanted to preserve the commits, you just go change the settings, right, do it change them back. It's not that big a deal, but I generally agree.

Chance Strickland: [0:27:32] I think that's the better default.

Chuck Carpenter: [0:27:34] Yeah, how do you feel about signals?

Chance Strickland: [0:27:38] No opinion. Nothing. How do you feel about hooks? It depends. Signals are really useful. They're a really useful tool. They're not anyone's silver bullet for Perf, and you know, when people talk about signals, I often think about it. The same way I think about Tailwind, in the sense that you know who thinks most about the downside of signals, or the people who write them and who, like, implement them in their frameworks. Tools like MobX essentially gave you signals, and people who use it understand its benefits and his drawbacks really really clearly. So it's not this silver bullet for solving all of your performance problems or giving you fine-grained reactivity without a cost.

I think there's something to be said. One of the things that keeps me coming back to React this is a talk I'm going to be giving in a conference in a few months why I still choose React in 2023, despite all of the other options available today. The thing that keeps me coming back is the very simple promise that React has always given us, which is your UI is a function of your state. You don't have to worry about setting up and pulling down all of your event listeners through these imperative APIs. You just declare that your state looks like this and whatever happens as a result of that, in terms of rendering, it's always going to be up to date and accurate and signals sort of break that contract to a degree. So you have to be aware of that and you have to understand. Like I said, they're a great tool. I think it would be a really cool addition as a lower level lever that React could offer for certain scenarios. But yeah, would it be? the thing that I would want as my primary state primitive? Probably not.

Robbie Wagner: [0:29:15] It gets hairy too. It depends, like you say, if you're doing a very nested thing that you want to update the DOM based on, then it gets like OK, it's not as easy, as I set this.foo to bar and I want it to update, like that's a much easier signal. But yeah, I think there's pros and cons to both ways, depending on how complex your data is getting.

Chuck Carpenter: [0:29:36] I'd almost argue that it's not something that React per se should be concerned about and although maybe it's a contradictory statement, because I often say, like one of the most frustrating things throughout like the React ecosystem and I worked with React back in 2014 or I guess 2013, when it came out and we were just focused on the UI aspect of it and now I thought super awesome and whatever else, but then to make an application, you were just trying to piecemeal things and use good libraries and think about state and think about overarching and the router and all of these other things. You're trying to put together your thing and there were just so many opinions down there.

Robbie Wagner: [0:30:17] There's sagas and thunk and yeah, you mentioned mobbacks and yeah.

Chance Strickland: [0:30:21] Redux and you know just so many different ways.

Chuck Carpenter: [0:30:21] There was some chaos there for a little while in the ecosystem and really was, and it was just like choice overload and React didn't care about that part because everything else was handling it. I think they're starting to get more opinionated and expand out. I just almost wonder, like that's where some of the flaws and the fallacies of working with it come from me. Is that getting away from the original paradigm which was to give me an input and if it's different I'm going to re-render and if not I'm happy and that's all I need to know is my inputs? It's like almost dumb in that sense and still thinking about another meta framework.

Remix is more of a meta framework. It's thinking about these higher level things. So I think those are more the custodians of thinking about the state model and the trigger rather than React themselves. You know React goes into hooks and use state and things like that and I'm like, okay, it does solve a problem, but it's not a real singleton in terms of high level state right and memory. So I don't want to just say I wish they would stay out of this decision and it kind of happens outside of that and I can see like there are some libraries dealing with signals that are happening on a higher level that will do react integrations. What is the Yehuda's? I forget again.

Robbie Wagner: [0:31:42] Starbeam. No one uses it, I know, I know, Because you have to use classes and no one's going to do that. Right, but it's React signals, right? Sure Right.

Chance Strickland: [0:31:49] Yeah, yeah, I mean I think, yeah, honestly I don't, and this is a point where I just have to say I probably haven't thought deeply enough about it to know what the right answer is on this. So if you look at, Jason Miller has his Preact signals package he has a React adapter for that so that you can actually use preact signals with React really neat idea. except for that, if you look into the implementation, he had to dig into some really gnarly internals to implement it. So, and then you know that's dangerous because those are not contracts that are guaranteed, right, won't break at some point. So I think if that's what it takes to get there, you kind of need the React team to buy in and to do some sort of implementation or provide you the tools to implement them yourself. That said, I've never really needed them. Again, someone might, and there are use cases for them that I've heard. that make a lot of sense for me.

When I worked at modules, we used MobX and that's a very signals like. I don't know if it's technically considered, I don't even technically know what makes a signal signal, but it's just like an event List naming it a signal. Yeah, it's an event system like yeah, you send me something, I react to it right, right, that's it. So that's kind of like MobX, right?

Chuck Carpenter: [0:33:00] Yeah.

Chance Strickland: [0:33:01] Anyway, we use that at modules on the application itself. It's a very performance intensive application and so that was just one of those cases where re-renders being expensive actually was a problem. I think for most people, account renders is a performance metric or doing themselves a disservice Yeah, especially in the days of books, yeah. but there are some really performance intensive applications where you kind of need to think about that stuff a lot more. Right, and that was one of them, and those sort of tools are useful, but you have to step out of the React paradigm and as soon as you do that, you break that contract of UI as a function of your state, this not technically React state anymore. So I don't know, I don't know the right answer, but it depends. That's where we're going to go.

Chuck Carpenter: [0:33:42] Yeah, I think it depends all the time. Yeah, yeah, and that's it too, like when you think about your implementation and discussing it and justifying it to a user base of developers. Versus you have a product that has a promise to users and business objectives And, at the end of the day, like nobody cares whether you use React or Solid or Angular or whatever else, and you're able to probably write an application that meets those needs with any of those things.

Chance Strickland: [0:34:13] Yeah. It's a tool.

Chuck Carpenter: [0:34:14] At the end of the day, Users don't care about any of that stuff.

Chance Strickland: [0:34:18] They want to be able to use your app and not have 37 popups Yeah, the CEO doesn't care Throwing up before they touch anything, or they don't. You know, their scroll is janky, or just things don't work as expected or there's ads in every corner of the page, like that's what users care about.

Robbie Wagner: [0:34:30] Big thing I've hit a lot recently is like so I use Arc and it has a built-in like blocker for a lot of ad trackers and stuff.

Chance Strickland: [0:34:40] How are you liking that? Because I just started using it myself.

Robbie Wagner: [0:34:43] I love it. Yeah, if simply for auto closing all the tabs, because I'm a tab hoarder and I just like that they go away.

Chance Strickland: [0:34:49] It's me like, for some reason, I don't know why, but having them on the side, where they're always like you can see all the text, instead of them being compressed, yeah, it gives me more anxiety about them being open. So I'm more likely to still manually close them, right, and I would be if they just squish down at the top, and yeah, that's fair. I don't know When I can't see the text, I guess I forget about them.

Chuck Carpenter: [0:35:06] So then it's kind of still a win in a way. Yeah.

Robbie Wagner: [0:35:09] But yeah, a lot of places seem to be coding things with, like you know, it makes sense. They want to say you clicked this thing, I want to track it or whatever, but they make their code dependent on that track working to go to the next thing. So it's like track and then do this other thing and it goes block the track and then I can't do the thing Right. So people need to be thinking more about that and like do a try, catch or something, and like...

Chuck Carpenter: [0:35:32] Yeah, is tracking something you'd limit, you'd limit function to the user for?

Robbie Wagner: [0:35:35] Yeah.

Chuck Carpenter: [0:35:36] I'm sure marketing would have a response to that, but in reality, like if it impedes them from signing up or doing like a critical function, you would think we're going to let them do that at the end of the day, regardless.

Robbie Wagner: [0:35:48] Yeah, especially if it's the thing that's making them money. Like, if I want to book something and it costs money, you should let me do that, regardless of whether you can track that I did it or not. Take my money, right. Yeah, just a pet peeve that I've hit recently.

Chuck Carpenter: [0:36:01] So we're going to talk about a little more Remix things, but I don't want to overly focus on that.

Chance Strickland: [0:36:07] I taught a workshop on Remix yesterday, so I'm primed. Okay, how'd that go? It went pretty well. It was a little chaotic, just because logistics were. I think there was some miscommunication and ended up being actually two separate workshops, which I didn't realize until it came down to it. But there was one in the morning and one in the evening, So I planned material for like one six-hour workshop and it ended up being two three-hour workshops. So like kind of on the fly, I had to compress them down into three hours each Two separate ones, because it's not the same audience right.

But yeah, but no, I think it went really well. The folks in the workshop seemed to get a lot out of it. I got some good feedback. So unless the ones who hated it just didn't tell me, then I mean we're fine.

Chuck Carpenter: [0:36:46] They usually say that people who are unhappy are usually the loudest.

Chance Strickland: [0:36:49] So if you didn't get any like this sucked waste of my time.

Chuck Carpenter: [0:36:53] I doubt that.

Chance Strickland: [0:36:54] Most people are right there in the middle. They just don't say anything. Yeah, yeah.

Robbie Wagner: [0:36:58] They're just introverts. Yeah, if you didn't get any aggressive tweets about it sucking or something, then you're probably good.

Chance Strickland: [0:37:04] Yeah, but yeah, if you want to talk about Remix, we can talk about Remix.

Chuck Carpenter: [0:37:07] So tell me what you love about Nextjs.

Chance Strickland: [0:37:09] It's been around for a long time. It's battle tested, it's a solid framework for a lot of different. it's got a lot of great functionality, broad ecosystem around it. So you know, it's another one of those tools where it can be really easy to be productive because of the tooling around it. So, yeah, and it's nicely tightly integrated with Vercel. So if you're already shipping to Vercel , it makes that really really easy. They do a great job, I think of on the developer experience side of things like handling errors. I think it's always really nice. That's something that I definitely tried to work on a lot on the remix side and we learned a lot from Nextjs on that. So, yeah, there's lots to love about Nextjs.

Chuck Carpenter: [0:37:50] Yeah, I like that. It makes some decisions for you. Coming from Ember, at that time, I think was the first times I started working with Nextjs and, you know, deploying the Zite at the time.

Chance Strickland: [0:38:01] The fact that like yeah it was Now, wasn't they call it now? Now, yeah, Oh yeah Now.

Chuck Carpenter: [0:38:06] That was the CLI command right.

Chance Strickland: [0:38:08] That was one of my earliest pain points actually with Nextjs was deploying, because there was now v1 and they made some huge breaking changes of v2. Okay, that was the moment when I came to really hate breaking changes more than anything else in programming, because it just ruined my existence for the next six months.

Chuck Carpenter: [0:38:25] That's true. I feel like their versioning can be a little off or...

Chance Strickland: [0:38:30] Well, I think it's better now, that was like v1 to v2. That's a big jump, you know, and if you're ever going to break changes, I think it should be between v1 and v2, because you learn a lot after v1, right? Yeah, that's when you get users, if you're lucky, right?

So, you should learn a lot after a v1 of your software and you should react to that quickly so that you don't have to continue breaking things for v3, v4, v5, v6, you know Like yeah, everyone else coming in and as you're growing your community and stuff you want to be a good steward of them, minimize them but like yeah, get them out of the way early. So you know I it was some pain points in the early days, but it was the early days, I was an early adopter, so kind of my fault.

Chuck Carpenter: [0:39:06] Yeah, shame on you. Hey, they were in version one. That's production ready, as far as I heard.

Chance Strickland: [0:39:11] I like old battle, tested, tried and true software. At the end of the day Yeah, yeah, I'm gleaning that from you.

Robbie Wagner: [0:39:16] I use Ember, so I agree.

Chance Strickland: [0:39:17] You still use Ember? Yep, nice Okay.

Chuck Carpenter: [0:39:20] They just released version five, not too long ago, if you can believe it.

Chance Strickland: [0:39:24] Okay, i'm very much checked out of that world.

Chuck Carpenter: [0:39:27] Yeah.

Robbie Wagner: [0:39:27] Most people are.

Chance Strickland: [0:39:28] Right.

Chuck Carpenter: [0:39:29] Yeah, and I mean they're like what? 14 years old or something, something like a 13, 14 years old.

Robbie Wagner: [0:39:34] I don't know when the first commits happened, but I want to say 12 or 13 years old probably.

Chuck Carpenter: [0:39:38] Yeah, it's got to be. Sproutcore was even older than that, so oh, yeah, so like 15 or 16, if you count that, yeah, so there you go Yeah, and you can. You know you can make a productive business ready application or dashboard in Ember today too. Yeah, If you really wanted. You know, WordPress just turned 20 years old.

Chance Strickland: [0:39:55] Yeah.

Chuck Carpenter: [0:39:56] Yeah.

Robbie Wagner: [0:39:56] That's crazy. Yeah, powers like over half the internet or something, yeah.

Chuck Carpenter: [0:40:00] Yeah, 64% or something crazy was a stat that I heard in the last couple of years.

Chance Strickland: [0:40:06] It's wild, but yeah, just the sheer strength of that piece of software that drives so many developers insane. Yeah, yeah, it still becomes the de facto choice because users really enjoy editing content. Yeah, and there's again. It goes back to knowing who users are making them happy and they have a very serious commitment to not breaking things if they don't have to.

Chuck Carpenter: [0:40:29] And WordPress and I respect the hell out of that So yeah, yeah, I think JavaScript needs more of that. It's the plug in people that break all the shit, for WordPress.

Chance Strickland: [0:40:38] Although, honestly, like I've, I used to do WordPress stuff all the time and I would YOLO update things all the time on client production sites and very rarely had problems. Yeah.

Chuck Carpenter: [0:40:47] That's true, those were probably the last days I would FTP something or something, yeah. But I think they had a great time of like getting in bed with on-prem hosting providers and like making WordPress easy installs. Sure, that experience too for a user, where you could be a GoDaddy customer. You bought a domain name, they sell you something else and you're like easy install WordPress. Now go here.

Chance Strickland: [0:41:11] It's kind of next in Vercel, right Yeah.

Chuck Carpenter: [0:41:13] Same idea.

Chance Strickland: [0:41:14] Yeah, it's like the entry point, but it's the low barrier entry point for Vercel.

Chuck Carpenter: [0:41:17] Yeah, that's a big business model, I think, exactly Making things as easy as possible.

Chance Strickland: [0:41:22] Yeah.

Chuck Carpenter: [0:41:22] Basically saying AWS console is horrible and no normal human can navigate this. The CLI and CDK stuff makes it marginally better, but it's still very complicated. Let's just put a little overlay on that. Charge us like premium for getting your stuff deployed to AWS really easy. I think that's an amazing business model and that helps get people entrenched for the long run. Yeah.

Chance Strickland: [0:41:45] One of the things that I thought was really positive about the Shopify acquisition and for anyone who doesn't know, Remix was acquired several months ago by Shopify. One of the positives of that transaction to me is that there was never a clear funding model for Remix as a standalone company that we could think through long term that would meet the needs of high growth demands from investors and that sort of thing. That didn't involve launching some hosting platform. There's nothing wrong with a hosting platform, but as soon as you have a framework as an entry point to a hosting platform, your incentives change. From its very early days, Remix came out and said we have adapters for different runtimes.

You can ship a Remix app on your raw Node server. You can ship it to one of these platforms over here where we have these adapters ready made. You can ship to Deno. You can ship to Cloudflare workers. That was pretty novel at the time. You couldn't really do that with Nextjs or many of the other popular tools that I can think of. Really, because it's not a Vercel's incentive to make it easier to ship your Nextjs site on any other platform than Vercel, not to say that they are actively trying to keep people from doing it, but they're not going to make it easier, probably. Why should they?

Chuck Carpenter: [0:43:07] Definitely not going to make it easier and if they need to change something under the hood that you've latched onto, well, too bad.

Chance Strickland: [0:43:12] Exactly Why should they? From a business perspective, that makes total sense and I can't begrudge them for it. But I'm glad that Remix now doesn't have to put itself in that position because they have a different set of incentives being aligned with Shopify. Shopify has incentives for maintaining Remix as it is now leaning on it, for internal tooling and for user-facing software building hydrogen on top of Remix. It's in their interest to make Remix as robust and user-friendly as possible for many different platforms, because Shopify stores, especially third-party stores that build their own custom storefronts, can ship to any platform. Why would you tell your customers, hey, you actually can't ship your app here. You have to pick one of our servers over here.

Chuck Carpenter: [0:43:56] Yeah they're not going to do that. No, that makes a lot of sense. The Shopify acquisition actually made a lot of sense to me in terms of taking their custom in-house development package and language and all of that what it was, and say let's improve the accessibility to this and then skies the limit kind of thing, because it's approachable in a deeper pool. Otherwise you have developers having to have a very specialized set of experience and ideologies and learning and whatever else to do those things. That makes a lot of sense to me. It's an interesting business model to go out into the frameworks world and decide if you take VC money, then you're accountable to other folks. It can be a good and bad distraction, I think.

Robbie Wagner: [0:44:42] Yeah, if you don't, where do you make money though?

Chuck Carpenter: [0:44:45] You don't make money.

Chance Strickland: [0:44:48] You can but you make it very slowly. At that point you're probably building a lifestyle business more than you are shipping a product that is ready to compete with everything else that's out there and has more resources, which is also totally fine. By the way, there's a lot of really great Bootstrap companies. We talked about Tailwind and Tailwind's whole business model is all Bootstrap. As far as I know, they do great for what they're trying to build. They're able to do that at that scale because, with their market and who is a Tailwind competitor?

Chuck Carpenter: [0:45:20] There's a new one called UnoCSS. There's a few of them.

Chance Strickland: [0:45:21] Watch that from the business perspective. What do they sell? They sell the UI kits. Yeah, I guess any other really UI kits.

Robbie Wagner: [0:45:28] There's not one that's tied to the technology, like Tailwind. You can get templates for stuff elsewhere, but I shouldn't research that. I don't know how they make money Yeah.

Chuck Carpenter: [0:45:36] They have the UI stuff, and then you can buy the one-off templates or whatever. We're full on sites now Nextjs and Tailwind sites. We've been using them. Can't wait to see those everywhere, though. You know how this goes.

Chance Strickland: [0:45:50] What was the point I was trying to make, anyway? I don't remember. But anyway, business numbers, success, profits, VC.

Chuck Carpenter: [0:45:58] Yeah, exactly.

Robbie Wagner: [0:45:59] Yeah, I think the real hard-hitting question that we're here for is you have admitted publicly that you are skipping leg day on Twitter. I saw earlier.

Chance Strickland: [0:46:10] I was not expecting that, that was a curveball. I mean technically at the gym, yes, but I was also training for a half marathon and I'm just so. when you're training for a race like that, and it requires a pretty significant time commitment, you kind of have to start rationing somewhere right, like your workout or fitness routine, unless you're like The Rock and you make money by being in shape. Yeah right, yeah, I make money doing something that keeps me out of shape, so I need to, like you know, keep that in check, So you don't have a personal chef.

Oh God, I wish That would be pretty sweet.

I'd love not to think about food As much as I love food. But yeah, so I was running a lot and I do HIT workouts to sort of supplement that, just because when I run it's easy to just neglect everything here, like above the waist, and I just want to keep in like relative shape, even though I can't commit to like a gym schedule and all that. So I would do two days a week in the gym for upper body, but then for the rest of the week I'm basically running. So I'd be running five to six days a week doing arms and shoulders and such two days a week and then. But when I said I skipped leg day, I mean I wasn't going and doing like squats and lunges and stuff, cause I just it made running harder, it was a time crunch and you know, so I just didn't do it. and then after the race I went in the week after and just did a brutal routine with basically nothing but lunges and I cried every time I had to sit down or stand up for the next two days.

It was the worst, ooh Yeah.

Robbie Wagner: [0:47:35] I so infrequently work out that I get that every time I do leg day.

Chance Strickland: [0:47:38] And I go, oh my God, I need a walker, like in general. you're like, if I don't work out, or if I do work out, I just hurt Yeah.

Chuck Carpenter: [0:47:44] He's just when he's lifting french fries to his mouth. Yeah, sometimes too many curls like that. I don't do that.

Chance Strickland: [0:47:50] Yeah, how old are you guys?

Chuck Carpenter: [0:47:51] I'm 45. 45?

Robbie Wagner: [0:47:52] I'm 32?

Chuck Carpenter: [0:47:57] Yeah, 32. He looks much older than I do. I know.

Chance Strickland: [0:47:58] So I'm right there in the middle, Sort of I'll be 37 this year. But yeah, there's just like a certain point in your life and you're getting there, You're right around that age where things just hurt for no reason Yeah, my knees are gone and I haven't done anything with my knees, so I don't understand You wake up and you cough and suddenly your back hurts and you're like what happened, I don't know.

And so when you go to a chiropractor and you're like I, don't know, and you know at least for me, like fitness is important to me, I like to stay relatively healthy. But you know you can only fight father time so much and just try to keep them in bay as much as possible. It's all we're doing, Yeah.

Chuck Carpenter: [0:48:37] I'm just trying to keep up with my kids for as long as possible, yeah. I don't have kids, but that's a, I imagine, a huge motivator for a lot of folks Yeah, four and six, and they're getting fast and so I'm like oh my gosh, so that's been my big motivator this year. It's awesome.

I'm actually trying to recover from a couple of years of isolation and even switching to a home gym. It just was very unfrequently used and too many Shake Shack burgers ordered or I'm in Phoenix, so we have In 'N Out, you know Oh yeah, I know So, and it's hard to resist. and In 'N Out, double, double animal style. Now I just get a single patty still cheeseburger. No animal style, though. Okay, you know, it's the little things It is.

Chance Strickland: [0:49:16] And oh, I mean, it absolutely makes a difference. A lot of people go in, especially with dieting. people go into it with this all or nothing mindset and it's totally, it totally doesn't work.

And it doesn't work because it's all about forming habits, right, and if you're in the habit of eating double cheeseburgers and suddenly say I'm only going to eat salads, you're not going to only eat salads, so you're going to fail pretty quickly. Probably. You can generally get like, depending on your goals, you can generally do a lot better for yourself by eating the same foods that you eat today and just eating less of them. Yeah, yeah, so it's a totally underrated approach to, I say, dieting, but just like nutrition, you know, make sure you're getting a broad range of nutrients, but like, if you're trying to make incremental changes, those are going to be the ones that last the longest. and so, yeah, cutting from a double cheeseburger to a single hamburger without a ton of sauces totally reasonable thing to do. Yeah.

Chuck Carpenter: [0:50:05] I feel like every time I travel overseas I actually lose weight. Oh yeah, Because I move more and portions are smaller.

Robbie Wagner: [0:50:11] And they don't cook with totally fake oils everywhere.

Chuck Carpenter: [0:50:14] Yeah, it's all real stuff and I typically eat whatever. I mean. Go to Italy and I would eat pizza and gelato every single day and still lose weight. So you know there's something to be said for that too.

Robbie Wagner: [0:50:22] Helps if you go to a post-itano and you just have to go up and down the stairs all the way. Oh, up and down the hills.

Chance Strickland: [0:50:30] Now what happens when you go to Atlanta?

Chuck Carpenter: [0:50:31] Apparently I drink too much and I'm very tired from a three hour time. I have fried chicken.

Robbie Wagner: [0:50:38] And we're talking about going to Gus's later.

Chance Strickland: [0:50:40] Yeah, I don't know if we went yesterday Plug Gus's, but man love that place It's good.

Chuck Carpenter: [0:50:44] Yeah, we went yesterday. I got the greens and the slaw. I got the two piece dark. I wish I would have got a three piece. Yeah, I could have done a half chicken probably. Yeah, the chicken is really good. I like how, when it's not too much breading.

Chance Strickland: [0:50:57] Yeah, I grew up here. I have so much southern food in my blood, like literally I'm sure there's like oil just still just hanging out in my bloodstream from all of the Oh yeah, a lot of lard, all of the stuff that I've put in my body over the years. But that's the one thing I miss the most about when I'm like thinking about things I miss living in California. I just the ability to have delicious fried foods. Yeah, now we have like the people's guilty pleasures, like acai bowls.

Robbie Wagner: [0:51:28] Yeah, those are good though.

Chance Strickland: [0:51:30] See, I don't think they're that great. I mean, yeah, but stop pretending they're breakfast.

Robbie Wagner: [0:51:32] Yeah, like that's a dessert Right, exactly.

Chance Strickland: [0:51:35] People go into the coffee shop and get one at like seven in the morning, they'll go. Oh, it's fruit, yeah, like no that's a bowl of ice cream.

Robbie Wagner: [0:51:40] Exactly, My wife used to like to have them for lunch and I'm like, but then I can have lunch and like I like lunch. I don't want to like replace it with this Yeah, that is a giant dessert.

Chuck Carpenter: [0:51:51] Yeah, maybe it's like Yeah, it's like a yogurt parfait, you know.

Chance Strickland: [0:51:54] Yeah. Like that.

Chuck Carpenter: [0:51:55] Yeah, I have to agree with that. I do like the thing about the first time I was ever in San Diego I think it was in 2000, something like that and I was living in Cincinnati then. So it was the Midwest, without a lot of culture and diversity and food options really, but I ate a lot of Southern food. You know, I grew up in Kentucky.

Chance Strickland: [0:52:12] Yeah, Cincinnati is what like? it's like four hours from Nashville, I think. Yeah, I would do that drive from time to time.

Chuck Carpenter: [0:52:17] And Northern Kentucky is like right there.

Chance Strickland: [0:52:18] And now.

Chuck Carpenter: [0:52:19] My grandparents lived in Louisville for a while and you know so I got a lot of other than Southern food and everything too, but didn't try too much else. I remember the first time rolling into San Diego and seeing fish tacos and for me, like Taco Bell or, you know, like Chi-Chis, was the Mexican food option I was like what are they putting it? This is disgusting. Why would you eat fish in a taco? Oh no they're.

Chance Strickland: [0:52:43] it's the best, But it's amazing. Yeah, I eat some form of either fish, tacos or Mexican food of some variants at least four or five times a week.

Robbie Wagner: [0:52:52] Yeah, yeah, yeah, it's the best. I think Mexican food has enough variety that you could eat it daily and not get tired of Like if you had the same thing every time it might.

Chance Strickland: [0:53:00] But yeah, Sure, and it's definitely a healthier approach than eating fried chicken all the time. Sure, sure, Yeah, yeah.

Chuck Carpenter: [0:53:05] I mean, you can go that way too, you know, on that side of things. You know chimichanga, oh yeah, and with a big thing, a guac and sour cream, oh 100%.

Chance Strickland: [0:53:14] I just think it's easier to find healthier options at a it's like a taqueria or something.

Chuck Carpenter: [0:53:21] Yeah.

Chance Strickland: [0:53:21] Than it is to go to Gus'. Yeah, there's nothing.

Chuck Carpenter: [0:53:24] Gus' does not have an option. They're not interested in that.

Robbie Wagner: [0:53:27] There's a possibility of vegetables that haven't been fried.

Chance Strickland: [0:53:29] Yeah, even the vegetables haven't eaten them. Like you can't escape it. Yeah, yeah, I love greens, I know.

Chuck Carpenter: [0:53:35] Oh, that reminds the funniest thing when we were the first time. Well, so, when we were moving, it wasn't my wife at the time but my future wife, when we were moving from Arizona to DC way back in like 2011 or whatever driving cross country big moving truck, whatever else make a stop at a Cracker Barrel, cause you're like I used to work there in college. I love Cracker Barrel. You know some hash brown casserole like chicken and dumplings. I can do this Chicken and dumplings for sure. Yes, exactly, So you know it's just like It's taking me back. It's one of the better things you can get on the road too, you know in a pinch, and they're consistent too.

Yeah wherever you go, this is what they got, and so we go, and she loves green beans. She orders green beans, but she had never had Southern style green beans before. So she's like these are, they're like in water and they're like soft and there's like bacon in there. What the hell is this? and I'm like this is green beans. For me. That's how you have green beans. You know.

Chance Strickland: [0:54:24] She's like no, you saute them in like light sunflower oil. She wants sprinkled in salt.

Chuck Carpenter: [0:54:32] You know, almondine style, yeah, which is also delicious. Yeah, it is good.

Chance Strickland: [0:54:37] But I will say like of the Southern vegetables, that's the one I actually prefer. Fancy bougie style over Southern style. I don't like Southern style green beans, okay, but like collard greens, forget about it. Oh, yeah, yeah, we need to soak that stuff in in some pig fat and vinegar Yes, a lot of vinegar.

Chuck Carpenter: [0:54:52] And the one, though, like vinegar with the pepper, oh yeah, that's the best I love that too. So much corn, some of it like fried. I had fried corn in lard as a kid too, and grandparents had a quote unquote garden, oh, your parents hated you.

Chance Strickland: [0:55:04] They loved me.

Chuck Carpenter: [0:55:05] Fried corn, wow, okay. Well, you would like deep fried. No, not deep fried with breading, but you'd fry it in some like in a pan with some lard.

Chance Strickland: [0:55:12] Oh like, just okay, I see what you're saying.

Chuck Carpenter: [0:55:14] Yeah, yeah, just everything I had at lard for whatever you know, they make their own biscuits with the lard and stuff.

Chance Strickland: [0:55:18] Yeah, if I was doing like cream corn, that's not frying it, but it's essentially the same fat content, I imagine. Oh yeah, just loads of butter.

Chuck Carpenter: [0:55:25] Exactly all things with lard and butter. Lard and butter. Those are the life force. Well, it's about an hour, so should we wrap up and then we can.

Robbie Wagner: [0:55:33] Yeah, yeah you got anything to plug before we end?

Chance Strickland: [0:55:36] You know, it feels nice to say not really. Like I'm no longer working on a developer facing things, so I don't feel the need to talk about my work too much. I am slowly, very slowly, trying to build a course called front to back. So go to fronttoback.dev and see the very, very early beginnings of my attempt to teach front end developers how to become better back end developers and fill that void. Fill that void and so, yeah, that's something I'm working on and trying to. I'm probably gonna launch different pieces of it at a time instead of just like having a big rollout. I'll have different modules, we'll ship out and maybe do some workshops here and there and just try and keep some content coming while I work, because it's a big workshop and it's a pretty big commitment.

Chuck Carpenter: [0:56:15] So wait, that's the URL. That's not your Pornhub channel, well, front to back could be both.

Chance Strickland: [0:56:20] It might be both. I never said it wasn't both. Okay, fair enough, you know that's on you. if you're searching that, I'm not gonna tell you not to fair enough But yeah, fronttoback.dev, and that'll take you there.

Robbie Wagner: [0:56:31] Hopefully you already own it for someone buying it. I do own it.

Chance Strickland: [0:56:34] Excellent, and so, yeah, go there and you'll find me. You can follow me on Twitter at ChanceTheDev, not the rapper. I just I'm now on. You know well, I picked the handle because of the rapper, but I actually worked out in my favor very early on in my Twitter days, because when Chance the Rapper would come out with a new album, people would accidentally tag me all the time, and so I got all this exposure accidentally That's nice From random people and actually got a few followers. They probably didn't stick around very long, but nonetheless, that's what I was going for. So follow me on the bird site, you can. I just started using Blue Sky, so you can follow me there too. It's at Chance.dev and yeah, I guess that's about it. I don't have much else to promote.

Robbie Wagner: [0:57:18] All right Peace, love and happiness. Thanks everybody for listening. If you liked it, please subscribe. Leave us some ratings and reviews and we'll catch you next time. Boom, boom, boom, boom boom.

Chuck Carpenter: [0:57:29] Thanks for listening to Whiskey Web and whatnot. This podcast is brought to you by ShipShape and produced by Podcast Royale. If you liked this episode, consider sharing it with a friend or two and leave us a rating, and maybe a review. As long as it's good.

Robbie Wagner: [0:57:42] You can subscribe to future episodes on Apple, spotify or wherever you get your podcasts. For more info about ShipShape and this show, check out our website at shipshapeio. We'll see you next time.