WEBVTT

00:00:12.060 --> 00:00:15.640
<v Scott>Welcome to the Bikeshed Podcast, where we talk about all things software engineering,

00:00:16.260 --> 00:00:19.680
<v Scott>the AI stock market bubble, and my new Breville Espresso machine.

00:00:20.680 --> 00:00:24.160
<v Scott>I'm your co-host, the acquirer of keyboards, Scott Kay.

00:00:24.740 --> 00:00:30.280
<v Scott>And alongside with me are my co-hosts, The Machine, The Myth, The Legend, MattGPT.

00:00:31.040 --> 00:00:33.840
<v Scott>Now, with 10% more sass, Matt Hamlin.

00:00:34.690 --> 00:00:39.140
<v Scott>And my other co-host, with Take So Spicy, The Language Gets a Little Dicey.

00:00:39.860 --> 00:00:42.000
<v Scott>Dillon, Spicy Take, Curry.

00:00:43.080 --> 00:00:45.160
<v Scott>Fellas, what are we cooking up today?

00:00:47.240 --> 00:00:48.140
<v Matt>Another great intro, Scott.

00:00:48.920 --> 00:00:51.240
<v Matt>Today, we're going to cover a few things.

00:00:51.460 --> 00:00:55.160
<v Matt>but our main segment, we want to focus in on this sort of Remix 3 demo

00:00:55.620 --> 00:00:58.700
<v Matt>that maybe some of us have seen all the way through.

00:00:59.080 --> 00:01:00.420
<v Matt>Maybe some of us haven't.

00:01:02.000 --> 00:01:05.400
<v Matt>I would say to the listener, if you're interested in Remix or React,

00:01:05.620 --> 00:01:08.000
<v Matt>like maybe pause the episode, go watch it, and then come back.

00:01:08.580 --> 00:01:09.720
<v Matt>But make sure you actually come back.

00:01:10.060 --> 00:01:10.980
<v Matt>Like, don't leave yet.

00:01:12.840 --> 00:01:15.260
<v Matt>But yeah, and then, yeah, I think we want to talk a little bit about that.

00:01:15.360 --> 00:01:18.100
<v Matt>And then we have some sort of side segments we want to dig into.

00:01:18.480 --> 00:01:23.100
<v Matt>Scott has some spicy takes on handling different,

00:01:23.350 --> 00:01:24.820
<v Matt>like null or undefined values than UI.

00:01:25.060 --> 00:01:26.700
<v Matt>So that'll be interesting for us to dig into as well.

00:01:28.520 --> 00:01:29.840
<v Matt>Yeah, so on the topic of Remix 3,

00:01:30.070 --> 00:01:33.780
<v Matt>so for people that aren't in the web ecosystem,

00:01:35.460 --> 00:01:37.140
<v Matt>the other week was pretty busy.

00:01:37.830 --> 00:01:41.600
<v Matt>They had, there was like ViteConf announced a lot of stuff,

00:01:42.040 --> 00:01:43.620
<v Matt>like VitePlus, things like that.

00:01:43.780 --> 00:01:44.660
<v Matt>We're not talking about that today.

00:01:44.770 --> 00:01:46.520
<v Matt>That would be interesting to talk about maybe next episode.

00:01:47.240 --> 00:01:53.780
<v Matt>There was a React Conf, which sort of snuck in there also somehow that most people didn't actually tune into, I think.

00:01:55.600 --> 00:01:57.280
<v Matt>And then there was also a remix.

00:01:58.260 --> 00:01:59.220
<v Dillon>This is my first time.

00:01:59.670 --> 00:02:00.840
<v Dillon>I didn't even know there was a React Conf.

00:02:02.420 --> 00:02:03.460
<v Matt>It is crazy.

00:02:03.510 --> 00:02:04.620
<v Matt>I think it passed.

00:02:04.740 --> 00:02:08.360
<v Matt>No, in past years, it was like, I feel like it was more topical.

00:02:09.030 --> 00:02:09.440
<v Matt>But I don't know.

00:02:09.470 --> 00:02:13.040
<v Matt>Yeah, this year, just like, just like right over me.

00:02:13.300 --> 00:02:14.000
<v Matt>You know, I don't know.

00:02:14.090 --> 00:02:16.040
<v Matt>I think it caught a lot of us by surprise, maybe.

00:02:17.580 --> 00:02:19.400
<v Matt>but yeah the third conference that happened

00:02:19.630 --> 00:02:21.520
<v Matt>I think last week was Remix Jam

00:02:22.400 --> 00:02:23.640
<v Matt>which was this I guess

00:02:23.820 --> 00:02:25.580
<v Matt>event in Toronto at the Shopify

00:02:25.840 --> 00:02:26.480
<v Matt>offices I think

00:02:27.740 --> 00:02:29.200
<v Matt>where Ryan Florence

00:02:29.640 --> 00:02:30.740
<v Matt>and Michael Jackson

00:02:31.330 --> 00:02:33.480
<v Matt>the Remix guys as we've referred

00:02:33.480 --> 00:02:34.940
<v Matt>to them in the past on this podcast

00:02:36.680 --> 00:02:37.200
<v Matt>showcased

00:02:37.250 --> 00:02:38.880
<v Matt>I think there were some other Remix related

00:02:39.470 --> 00:02:41.300
<v Matt>talks but the main

00:02:41.700 --> 00:02:43.400
<v Matt>sort of center stage was all about this Remix

00:02:43.470 --> 00:02:45.119
<v Matt>3 stuff that they've been cooking

00:02:45.140 --> 00:02:48.940
<v Matt>for the past couple months, maybe a year or so.

00:02:50.660 --> 00:02:51.800
<v Dillon>I remember him saying, like,

00:02:51.960 --> 00:02:53.700
<v Dillon>we've been working super hard for three months.

00:02:54.680 --> 00:02:56.060
<v Dillon>It's weird to see people again.

00:02:56.550 --> 00:02:56.760
<v Dillon>I don't know.

00:02:56.880 --> 00:02:57.480
<v Dillon>That's what he was acting like.

00:03:01.420 --> 00:03:04.240
<v Matt>Yeah, I think it's been interesting sort of following them.

00:03:04.690 --> 00:03:07.620
<v Matt>So, yeah, I mean, a couple episodes ago,

00:03:07.650 --> 00:03:08.440
<v Matt>we might have to dig it up,

00:03:08.680 --> 00:03:09.860
<v Matt>but we talked a little bit about,

00:03:10.230 --> 00:03:13.360
<v Matt>or I think I primarily slandered these guys saying,

00:03:13.510 --> 00:03:14.120
<v Matt>like, what are they doing?

00:03:14.280 --> 00:03:14.900
<v Matt>They're wasting their time.

00:03:15.020 --> 00:03:19.360
<v Matt>and they're talking about going back to old web development stuff

00:03:19.660 --> 00:03:21.960
<v Matt>and throwing out React and things like that.

00:03:22.100 --> 00:03:23.440
<v Matt>And I think I was giving them a hard time.

00:03:24.100 --> 00:03:27.160
<v Matt>I think after watching the demo, I think I've changed my mind.

00:03:27.400 --> 00:03:32.600
<v Matt>And I think maybe React has an end in sight, potentially,

00:03:33.270 --> 00:03:35.620
<v Matt>which is maybe a hot take, and maybe we talked a little bit about that.

00:03:37.060 --> 00:03:39.240
<v Matt>But also, I guess just to set the stage,

00:03:39.490 --> 00:03:44.240
<v Matt>Ryan Florence is probably the best demo giver in web development.

00:03:44.940 --> 00:03:49.200
<v Matt>Like, I can't think of anyone else that can get up on stage and showcase some code

00:03:49.820 --> 00:03:54.180
<v Matt>and just have you completely enthralled in, like, what is happening.

00:03:55.180 --> 00:03:56.940
<v Matt>So maybe that's why I'm, like, convinced,

00:03:57.400 --> 00:04:02.280
<v Matt>is that the demo was just actually pretty interesting and useful and insightful.

00:04:02.980 --> 00:04:05.460
<v Matt>But, yeah, anyway, I've been monologuing too long.

00:04:05.660 --> 00:04:09.340
<v Matt>What are your guys' initial thoughts on, like, you guys watch the videos

00:04:09.460 --> 00:04:12.360
<v Matt>or watch part of the videos, like, what are your initial thoughts on the demo

00:04:12.660 --> 00:04:14.040
<v Matt>or what was showcased?

00:04:14.380 --> 00:04:16.100
<v Matt>And we can talk about the specifics a little bit after also.

00:04:18.260 --> 00:04:24.220
<v Dillon>I don't think the demo was like super well done in terms of like the presentation.

00:04:26.020 --> 00:04:26.920
<v Dillon>Maybe that's a hot take.

00:04:27.440 --> 00:04:33.000
<v Dillon>But the actual like work that went into building the demo ahead of time, you could tell there

00:04:33.000 --> 00:04:39.620
<v Dillon>was a lot of like time spent on that to try to show the different concepts that were coming

00:04:39.760 --> 00:04:40.460
<v Dillon>to Remix V3.

00:04:41.100 --> 00:04:48.240
<v Dillon>I think he sort of like got to random parts in the presentation through chatting with Michael on the side.

00:04:48.250 --> 00:04:55.840
<v Dillon>It was almost like he was the host and Ryan Florence is like sort of just going through the demo at a random pace.

00:04:57.420 --> 00:04:57.680
<v Dillon>But yeah.

00:04:58.710 --> 00:04:59.380
<v Dillon>What about you, Scott?

00:04:59.580 --> 00:05:00.580
<v Dillon>How did you feel about it?

00:05:02.460 --> 00:05:05.740
<v Scott>Yeah, these guys really know how to get me excited about Remix.

00:05:07.160 --> 00:05:09.440
<v Scott>I don't want to be let down.

00:05:11.100 --> 00:05:12.160
<v Scott>I think we talked about it.

00:05:12.240 --> 00:05:16.100
<v Scott>Matt brought this up a couple of episodes ago.

00:05:16.200 --> 00:05:16.500
<v Scott>I don't know.

00:05:16.500 --> 00:05:17.360
<v Scott>It was like half a year ago.

00:05:17.460 --> 00:05:19.060
<v Scott>I really wanted to dig into Remix.

00:05:19.160 --> 00:05:20.100
<v Scott>And we talked about this.

00:05:20.140 --> 00:05:22.640
<v Scott>But then they kind of said, like, Remix is no more.

00:05:22.880 --> 00:05:26.680
<v Scott>And we're just using, like, React router packages.

00:05:26.960 --> 00:05:28.960
<v Scott>I do like this approach that they're taking.

00:05:30.300 --> 00:05:35.000
<v Scott>In the demo, they showed everything from many, just their own packages.

00:05:35.580 --> 00:05:36.520
<v Scott>Each thing was its own package.

00:05:36.640 --> 00:05:40.560
<v Scott>But the goal was that it would come all out of one main package when they were using,

00:05:40.700 --> 00:05:46.100
<v Scott>in full they just wanted to showcase some of the pieces individually um i thought that was really

00:05:46.260 --> 00:05:51.300
<v Scott>effective i actually thought it was a great demo like like matt said some of it there was some lulls

00:05:51.680 --> 00:05:57.900
<v Scott>but yeah ryan really captures an audience he really he talks a lot about some things that like

00:05:58.300 --> 00:06:04.839
<v Scott>he brought up like what a um was it a click event actually does all the things that happen

00:06:05.460 --> 00:06:12.440
<v Scott>when you do a click event and how it's like very over uh saturated with with like things it does

00:06:12.740 --> 00:06:18.060
<v Scott>which was great that kind of knowledge just made the demo more interesting to understand what they

00:06:18.060 --> 00:06:24.720
<v Scott>were building um and i think the there's so many things matt said that had me thinking and i don't

00:06:24.840 --> 00:06:31.260
<v Scott>guess i don't know how i feel yet um i would like to see remix maybe challenge react i know there

00:06:31.220 --> 00:06:38.680
<v Scott>other things out there like svelte um and they're not used too widely yet i i guess i i don't want

00:06:38.680 --> 00:06:44.460
<v Scott>to sound pessimistic but i i feel like um because react is is in so many code bases because there's

00:06:44.560 --> 00:06:51.020
<v Scott>such a large network of folks who know it already um it's going to be hard to pull it away and i'm

00:06:51.140 --> 00:06:57.679
<v Scott>not saying that react is the best solution um but i am really excited to see something else finally

00:06:57.700 --> 00:07:04.040
<v Scott>come out of this um i really want to use it it's like last year november of last year when i was

00:07:04.340 --> 00:07:09.760
<v Scott>super stoked to like try to learn it um but then now they're like we're going to rebuild the same

00:07:09.920 --> 00:07:16.600
<v Scott>thing but forget react we don't need this react um i guess i want to point out in in my long-winded

00:07:16.640 --> 00:07:22.079
<v Scott>monologue as well um one thing that i thought was interesting was you know so many times in react i

00:07:22.100 --> 00:07:30.940
<v Scott>try to separate uh the state from from the return of the jsx like i might have some state in there

00:07:31.260 --> 00:07:36.880
<v Scott>but over time uh as i'm building things is just as of recently like especially you know i have so

00:07:36.880 --> 00:07:43.880
<v Scott>many handlers there i have so much stuff that has to happen whether it's hooks or um just just events

00:07:44.800 --> 00:07:51.119
<v Scott>it it becomes unwieldy really easily and and what they were showing in this demo was was exciting

00:07:51.140 --> 00:07:57.260
<v Scott>from that standpoint all right that's enough for me i'm digging a little too deep

00:07:51.140 --> 00:07:57.260
<v Matt>yeah i guess like

00:07:57.360 --> 00:08:02.140
<v Matt>in terms of like structuring this conversation on it i think like one i think we should talk a little

00:08:02.140 --> 00:08:06.440
<v Matt>bit about like what was showcased for people that maybe maybe they have watched it but maybe it would

00:08:06.440 --> 00:08:12.480
<v Matt>be worthwhile refreshing it and then also like maybe two um you know after we talk a little bit

00:08:12.510 --> 00:08:17.839
<v Matt>about that maybe we talk a little bit about like what you know once it is ready for maybe even an

00:08:17.860 --> 00:08:22.460
<v Matt>initial alpha release or a beta release, like what, what do we think that will look like for

00:08:22.900 --> 00:08:27.360
<v Matt>teams, um, you know, teams that maybe choose to migrate to it or like, what, what does this mean

00:08:27.400 --> 00:08:33.440
<v Matt>for react long-term or things like that? Um, uh, yeah. So I guess like maybe, maybe digging into

00:08:33.479 --> 00:08:39.240
<v Matt>it a little bit, I think the way I've at least sort of distilled what remix three is, is it's

00:08:39.320 --> 00:08:46.780
<v Matt>effectively two concepts. One is like event handling or like event, um, you know, managing events,

00:08:47.760 --> 00:09:02.960
<v Matt>And when we talk about events, we're talking about like, you know, usually like DOM events or like things like, you know, adding like add event listener and having an event emitter sort of in your web application.

00:09:03.340 --> 00:09:10.020
<v Matt>Right. So, yeah, one of the things they demonstrated was, I think, an API that sounds like it might no longer be the case.

00:09:10.170 --> 00:09:17.780
<v Matt>I think I saw a tweet from Ryan, like, you know, a week after the demo or something saying, like, oh, we're actually, like, removing this create interaction concept.

00:09:18.030 --> 00:09:28.100
<v Matt>And it's just going to be plain old event handlers and, like, your event, like, sort of your interaction becomes this thing that looks like a component, I guess.

00:09:29.820 --> 00:09:34.860
<v Matt>I don't know. Anyway, so one of the core aspects I think they really focused on was like handling

00:09:35.120 --> 00:09:40.180
<v Matt>events or using events to manage state. The other aspect was on components, which they kind of like,

00:09:41.540 --> 00:09:45.720
<v Matt>they kind of talk about, but they basically like reduced a lot of maybe the complexity that a lot

00:09:45.720 --> 00:09:51.760
<v Matt>of people see when they see functional components in React. You know, like there's, they didn't show

00:09:51.810 --> 00:09:55.560
<v Matt>any hooks, you know, that I think you could replicate something that looks like hooks,

00:09:56.220 --> 00:10:00.640
<v Matt>but it's not using like an internal dispatcher that React uses to manage hook state, for example.

00:10:01.260 --> 00:10:02.400
<v Matt>And so that's kind of interesting.

00:10:02.840 --> 00:10:07.120
<v Matt>Maybe we talk a little bit about like concept hooks and like maybe how we've come from,

00:10:07.390 --> 00:10:10.600
<v Matt>what was it, 2018 when they introduced hooks or something?

00:10:12.540 --> 00:10:15.880
<v Matt>But yeah, so events was one core concept and these components.

00:10:15.990 --> 00:10:19.120
<v Matt>And the components are slightly different, but they look kind of similar also to React components

00:10:19.670 --> 00:10:21.100
<v Matt>just without hooks, I guess I'd say.

00:10:21.200 --> 00:10:27.740
<v Matt>So that's maybe the light 30-second distillation of what Remix 3 so far looks to be,

00:10:28.440 --> 00:10:31.000
<v Matt>is this framework around those two concepts.

00:10:33.920 --> 00:10:36.160
<v Matt>Am I missing anything with that rough summary?

00:10:36.300 --> 00:10:38.360
<v Matt>Or where do we want to dig in there?

00:10:39.520 --> 00:10:43.380
<v Dillon>One thing I thought of when you said that is how it's still changing.

00:10:44.060 --> 00:10:46.640
<v Dillon>That's kind of something that scares me about this.

00:10:47.260 --> 00:10:48.180
<v Dillon>It scares me.

00:10:48.650 --> 00:10:51.400
<v Dillon>It deflates my hype in a sense.

00:10:52.080 --> 00:10:53.820
<v Dillon>Like, oh, this looks really cool.

00:10:53.940 --> 00:10:55.780
<v Dillon>The things that he's doing with this code looks cool.

00:10:56.230 --> 00:10:57.960
<v Dillon>But it's not available yet.

00:10:58.130 --> 00:10:59.020
<v Dillon>I can't really use it.

00:10:59.840 --> 00:11:01.460
<v Dillon>I don't know if I'm going to be able to use it for six months.

00:11:02.160 --> 00:11:03.900
<v Dillon>And then the other thing, maybe we can get into this later,

00:11:04.010 --> 00:11:08.100
<v Dillon>is this is vastly different from the way we write code at work.

00:11:10.020 --> 00:11:11.980
<v Dillon>If I want to use this at work in my projects,

00:11:12.160 --> 00:11:14.000
<v Dillon>is it going to take me a year to migrate to it?

00:11:14.800 --> 00:11:16.260
<v Dillon>Or is there going to be an easy way?

00:11:17.120 --> 00:11:22.740
<v Dillon>that they're going to provide to do this migration. So I would be that maybe that's something I should

00:11:22.860 --> 00:11:28.160
<v Dillon>like create an issue for is like, Hey, I really like this, but there's no way, no way in hell

00:11:28.240 --> 00:11:31.720
<v Dillon>I'm going to use it unless there's like an automated automated way to migrate my app to this.

00:11:32.240 --> 00:11:35.740
<v Matt>Doubling down on your, like your first point Dillon is yes. The, the stuff they showcased

00:11:36.420 --> 00:11:41.959
<v Matt>is like even pre pre alpha or something like they're, they, they are publishing some packages

00:11:41.980 --> 00:11:48.360
<v Matt>under a jam version tag on npm so you could technically try to go and build something with it

00:11:48.370 --> 00:11:55.600
<v Matt>and in fact i've seen some people with repos that like set up like a vite based spa using it and you

00:11:55.600 --> 00:12:02.040
<v Matt>know they're they're a little bit clunky a little bit weird it's like not fully ready yet um so yeah

00:12:02.070 --> 00:12:06.420
<v Matt>i think yeah maybe that's a good uh thing we should sort of put a little asterisk on this episode is

00:12:06.480 --> 00:12:11.399
<v Matt>like we're talking about an api that doesn't really exist yet it's just like the concepts of an api

00:12:11.420 --> 00:12:16.760
<v Matt>um maybe that'll help ground our discussion or like you know ground the listener listening to us

00:12:17.220 --> 00:12:21.080
<v Scott>yeah especially like they they've been working on it like they said really hard for three months

00:12:21.280 --> 00:12:26.300
<v Scott>so like these guys are usually methodical and they don't release stuff forever so the fact that they

00:12:26.400 --> 00:12:32.480
<v Scott>like had an epiphany of an idea here and they they what they showed i bet you the majority of what

00:12:32.480 --> 00:12:38.439
<v Scott>they showed stays the same that these guys unless they they really think there's a there's an even

00:12:38.460 --> 00:12:47.560
<v Scott>easier way. Some other things I noticed was like some of the, what was it, create, one of their

00:12:47.650 --> 00:12:53.660
<v Scott>create interactions. There's create an interaction, there's create something with an E, I'm not

00:12:53.840 --> 00:13:00.600
<v Scott>remembering, but maybe it was create an interaction. It looked a lot like React State, however,

00:13:00.670 --> 00:13:07.379
<v Scott>it wasn't State. I found that to be very interesting. You could pull getters and setters out of it as

00:13:07.400 --> 00:13:13.680
<v Scott>an array. So that pattern felt familiar. To your point about migrating, one thing is like AI is

00:13:13.710 --> 00:13:19.640
<v Scott>great at migrating things. So I would imagine these guys would try to feed this into AI and how to make

00:13:19.820 --> 00:13:23.580
<v Scott>it migrate that fast. I know, Matt, you said to hold off on that, but I had that thought. I just

00:13:23.650 --> 00:13:28.420
<v Scott>really wanted to point it out there. That seems to be kind of the migrating path these days. And

00:13:29.110 --> 00:13:35.619
<v Scott>it also has context. And the context seemed pretty easy to use. And also they were really

00:13:35.640 --> 00:13:41.560
<v Scott>adamant to talk about how the context doesn't force re-renders and um that this paradigm isn't

00:13:42.380 --> 00:13:48.600
<v Scott>a react paradigm it doesn't consistently re-render uh so it's gonna be i think the hardest thing for

00:13:48.720 --> 00:13:57.400
<v Scott>people maybe who only know react is how this how to uh to live in this world where it's not about

00:13:57.560 --> 00:14:03.379
<v Scott>forcing renders and how that paradigm has changed that is a fundamentally huge shift in the way

00:14:04.160 --> 00:14:06.040
<v Scott>most people probably program these days.

00:14:07.700 --> 00:14:10.300
<v Matt>They've been really harping on having this be like sort of

00:14:11.670 --> 00:14:14.280
<v Matt>AI first or like model driven, which

00:14:14.820 --> 00:14:18.820
<v Matt>my original reads of it from their blog post, from other tweets and whatnot,

00:14:19.120 --> 00:14:21.020
<v Matt>it's like, I was like, all right, but what does that mean?

00:14:22.860 --> 00:14:26.380
<v Matt>It's hard to see what they mean exactly, but

00:14:27.080 --> 00:14:31.020
<v Matt>in many ways, like the three months that Ryan was like sitting in a cave hacking on this stuff,

00:14:31.240 --> 00:14:33.400
<v Matt>It's like, I think he was basically just working

00:14:33.490 --> 00:14:35.220
<v Matt>with like cursor or cloud code the whole time

00:14:35.400 --> 00:14:37.600
<v Matt>just to try to build out the framework using AI also,

00:14:38.380 --> 00:14:38.940
<v Matt>which is interesting.

00:14:39.340 --> 00:14:41.280
<v Matt>You know, how much benefit do you want to put in

00:14:41.320 --> 00:14:44.800
<v Matt>or like stock of trust do you put into something

00:14:44.910 --> 00:14:47.480
<v Matt>that AI is generating for you for a framework

00:14:47.770 --> 00:14:49.180
<v Matt>versus for a feature code.

00:14:50.660 --> 00:14:51.760
<v Matt>But anyway, yeah, I think Dillon,

00:14:51.900 --> 00:14:54.800
<v Matt>you have some like thoughts that I was going to also talk

00:14:54.940 --> 00:14:56.480
<v Matt>about so I'll let you just share those.

00:14:57.080 --> 00:14:58.979
<v Dillon>- Yeah, I was just, we have some show notes

00:14:59.000 --> 00:15:04.740
<v Dillon>of running and i'm throwing some some of like the main features that i remembered i mean one of you

00:15:04.840 --> 00:15:10.620
<v Dillon>just mentioned the context feature um and then another thing in the presentation that it was

00:15:10.760 --> 00:15:15.780
<v Dillon>using this again which i feel like was kind of a shocking moment in a weird way because we've i feel

00:15:15.780 --> 00:15:21.720
<v Dillon>like we've shied away from that in recent years with typescript and javascript um and another

00:15:22.100 --> 00:15:28.339
<v Dillon>another thing that's huge that i i liked a lot was the explicit updating i think scott sort of

00:15:28.400 --> 00:15:35.560
<v Dillon>touch on that no no more hidden re-renders i think that's sort of going to be a hard learning curve

00:15:36.120 --> 00:15:41.380
<v Dillon>for people that are so dependent on react in the way that it updates things but

00:15:42.860 --> 00:15:45.580
<v Dillon>it's going to force people to to really understand what's going on

00:15:47.330 --> 00:15:52.380
<v Dillon>and then another one in the top of mind that i was about to post was uh who knew that this was

00:15:52.410 --> 00:15:58.320
<v Dillon>like the first argument to a function in typescript i still haven't even like fully wrap my head around

00:15:58.360 --> 00:15:59.860
<v Dillon>that that was like a feature built in.

00:16:00.090 --> 00:16:01.060
<v Dillon>I thought that was so interesting.

00:16:01.690 --> 00:16:02.200
<v Dillon>I don't know why.

00:16:02.510 --> 00:16:05.600
<v Dillon>I don't even know that like it's going to change my day to day that much,

00:16:05.680 --> 00:16:07.720
<v Dillon>but I just was like, whoa, I didn't know that was a thing.

00:16:08.120 --> 00:16:12.320
<v Matt>That to me also is like crazy sort of mind blowing in a sense of like,

00:16:12.640 --> 00:16:15.740
<v Matt>I was like, what do you mean they're passing this like into the function?

00:16:15.850 --> 00:16:19.920
<v Matt>And I was like, it took me quite a bit of time to realize that this is just like

00:16:20.780 --> 00:16:23.900
<v Matt>that that syntax is only a TypeScript feature.

00:16:24.160 --> 00:16:28.380
<v Matt>Like it's a way to type the value of this for that function.

00:16:28.740 --> 00:16:32.280
<v Matt>And it's not like a, you know, when TypeScript compiles out that code,

00:16:32.440 --> 00:16:35.320
<v Matt>it's like you don't see an argument for your function called this.

00:16:36.820 --> 00:16:40.860
<v Matt>So it took me a while to like sort of understand what was going on

00:16:40.960 --> 00:16:42.260
<v Matt>and like what they're doing there.

00:16:42.320 --> 00:16:45.740
<v Matt>But it is a neat, maybe a slightly esoteric TypeScript feature.

00:16:45.800 --> 00:16:49.520
<v Matt>You know, obviously we've been, it's been so long since most

00:16:49.540 --> 00:16:54.420
<v Matt>web developers have had to use this, that it's like a feature that TypeScript didn't really,

00:16:55.400 --> 00:16:58.140
<v Matt>like most people probably didn't even know that it's a TypeScript feature potentially,

00:16:58.510 --> 00:17:02.240
<v Matt>or maybe I'm just like living in a cave or under a rock to know about that.

00:17:03.340 --> 00:17:10.360
<v Matt>I do think just like thinking about how people might react to it. I think maybe like people,

00:17:11.030 --> 00:17:16.580
<v Matt>maybe 90% of people really love the event abstractions that it's using. And then maybe

00:17:16.600 --> 00:17:22.140
<v Matt>10% of people will like really love the component abstractions and in terms of like manual updates

00:17:22.620 --> 00:17:27.900
<v Matt>and or you know using this to update and the context features and stuff like that but I feel

00:17:27.900 --> 00:17:31.400
<v Matt>like the bulk of people are just going to enjoy the event part and not necessarily the component

00:17:32.010 --> 00:17:34.880
<v Matt>aspect part but maybe I'm biased there.

00:17:45.480 --> 00:17:49.340
<v Matt>All right, we've hashed a little bit about the framework

00:17:49.919 --> 00:17:51.900
<v Matt>implementation-- or framework side of things, APIs,

00:17:52.160 --> 00:17:52.660
<v Matt>and stuff like that.

00:17:52.680 --> 00:17:55.240
<v Matt>And obviously, some of it could change before we see it.

00:17:56.860 --> 00:17:59.880
<v Matt>I guess maybe moving on to adoption,

00:18:00.580 --> 00:18:01.400
<v Matt>what this means for React.

00:18:03.700 --> 00:18:05.260
<v Matt>I think we probably said it.

00:18:05.340 --> 00:18:07.100
<v Matt>But just to be clear, Remix itself

00:18:07.460 --> 00:18:09.060
<v Matt>is not using React under the hood

00:18:09.240 --> 00:18:13.360
<v Matt>to handle diffing of the DOM or VDOM and things like that.

00:18:13.720 --> 00:18:17.600
<v Matt>It's using its own VDOM implementation that still supports JSX.

00:18:18.200 --> 00:18:22.100
<v Matt>So it looks a lot like React, but it doesn't have all the same features

00:18:22.240 --> 00:18:22.920
<v Matt>that React supports.

00:18:23.100 --> 00:18:26.300
<v Matt>So if you adopted Vue transition from React, for example,

00:18:27.200 --> 00:18:30.100
<v Matt>that's not an abstraction that currently exists with Remix.

00:18:30.180 --> 00:18:31.920
<v Matt>Maybe they add something that looks like it,

00:18:33.260 --> 00:18:36.200
<v Matt>or suspense or suspense list, if that's even still a thing in React.

00:18:37.220 --> 00:18:42.100
<v Matt>So those aren't concepts within Remix, at least at the moment.

00:18:43.460 --> 00:18:45.760
<v Matt>One of the other cool nuggets I saw, I guess,

00:18:46.000 --> 00:18:48.740
<v Matt>before we dig into migrations was basically

00:18:48.960 --> 00:18:51.280
<v Matt>the replacement for suspense that they called frames.

00:18:53.159 --> 00:18:55.020
<v Matt>Or it's a replacement for suspense slash

00:18:55.380 --> 00:18:57.940
<v Matt>a replacement for server components and client component

00:18:58.260 --> 00:19:00.260
<v Matt>abstractions, which was really neat.

00:19:00.340 --> 00:19:02.480
<v Matt>But I feel like they didn't spend that much time talking

00:19:02.600 --> 00:19:03.400
<v Matt>about how it works.

00:19:04.380 --> 00:19:05.720
<v Matt>Maybe that's just the part of me that just

00:19:05.860 --> 00:19:06.900
<v Matt>wants to dig deeper into it.

00:19:06.900 --> 00:19:11.780
<v Matt>I don't know if you guys remembered or saw much

00:19:11.980 --> 00:19:12.940
<v Matt>about the frame implementation.

00:19:13.220 --> 00:19:15.580
<v Matt>That was sort of-- during the demo, they showed--

00:19:15.710 --> 00:19:18.340
<v Matt>and this was later on in the back end part of the demo,

00:19:18.600 --> 00:19:18.880
<v Matt>I think.

00:19:19.420 --> 00:19:21.980
<v Matt>But they showed a bookstore, and they

00:19:22.120 --> 00:19:23.960
<v Matt>showed product cards of books.

00:19:24.820 --> 00:19:26.680
<v Matt>And each of those product cards was an individual-- what

00:19:26.710 --> 00:19:27.280
<v Matt>they called a frame.

00:19:27.520 --> 00:19:30.080
<v Matt>So it was a separate hydrated client component.

00:19:30.360 --> 00:19:31.720
<v Matt>So they'd server render the rest of the page,

00:19:32.480 --> 00:19:35.000
<v Matt>except for those frames, send it down,

00:19:35.260 --> 00:19:37.780
<v Matt>and then those frames were then hydrate on the client.

00:19:39.860 --> 00:19:46.540
<v Matt>At least my assumption is how server island architecture works with other frameworks.

00:19:49.000 --> 00:19:49.240
<v Matt>I don't know.

00:19:49.290 --> 00:19:52.680
<v Matt>That was pretty exciting to see that that abstraction exists.

00:19:54.420 --> 00:19:55.420
<v Matt>I missed that part of the demo.

00:19:55.530 --> 00:19:55.880
<v Matt>I'm sorry.

00:19:57.400 --> 00:19:59.080
<v Matt>I think it was very...

00:19:59.560 --> 00:20:02.160
<v Matt>Obviously, they spent a lot more time on the event stuff, I think.

00:20:02.550 --> 00:20:04.900
<v Matt>And then also more time on just standard...

00:20:05.340 --> 00:20:09.620
<v Matt>At least for the back-end part of it, more standard back-end server-y stuff.

00:20:10.240 --> 00:20:11.120
<v Matt>than digging into the frame.

00:20:11.190 --> 00:20:12.940
<v Matt>So it was, I think, kind of like a hidden nugget.

00:20:13.880 --> 00:20:15.140
<v Matt>I'm even now thinking about it,

00:20:15.140 --> 00:20:16.500
<v Matt>and that's like, I kind of want to go back

00:20:16.570 --> 00:20:18.300
<v Matt>and rewatch the demo just to understand it

00:20:18.300 --> 00:20:20.180
<v Matt>a little bit more and see what it looked like.

00:20:20.740 --> 00:20:22.840
<v Scott>I just looked for like 10 minutes

00:20:22.990 --> 00:20:24.120
<v Scott>to find out what I was talking about.

00:20:24.170 --> 00:20:25.620
<v Scott>It was create event type.

00:20:26.280 --> 00:20:28.920
<v Scott>Create event type was the API I was looking at.

00:20:29.940 --> 00:20:32.100
<v Scott>All right, not important, but we're back at it.

00:20:32.250 --> 00:20:32.540
<v Scott>Sorry, Matt.

00:20:35.340 --> 00:20:36.360
<v Dillon>Were you listening to Matt?

00:20:36.760 --> 00:20:37.120
<v Matt>Yeah.

00:20:38.360 --> 00:20:39.560
<v Scott>I was multitasking.

00:20:40.080 --> 00:20:59.180
<v Matt>Any other little nuggets that you guys want to talk about? Or before we dig into like, what does this mean for React or like migration? Or, you know, future or whatever? Like, if not, yeah, maybe we talk a little bit about like, okay, yeah, you know, you're working in a React code base that has thousands of components. What does it mean if you want to adopt Remix 3?

00:20:59.560 --> 00:21:01.980
<v Scott>I have like a couple of questions before we get to that.

00:21:02.220 --> 00:21:06.720
<v Scott>So some of the stuff I didn't get to was like, they were talking about async as well as

00:21:06.880 --> 00:21:10.240
<v Scott>like remix component library and bubbling custom events.

00:21:11.080 --> 00:21:13.760
<v Scott>Does anyone have any thoughts on those topics?

00:21:14.420 --> 00:21:19.640
<v Matt>I thought on the component library, which is like, it's interesting to see a framework

00:21:19.860 --> 00:21:23.880
<v Matt>like this sort of ship its own component library, but it also makes sense in the sense that like,

00:21:24.400 --> 00:21:27.600
<v Matt>you know, everyone else expects there to be a component library that exists for your web

00:21:27.620 --> 00:21:30.660
<v Matt>framework, whether it's some third party library, like,

00:21:30.850 --> 00:21:32.060
<v Matt>you know, ShadCN for React.

00:21:33.060 --> 00:21:35.620
<v Matt>I'm sure there's something equivalent for whatever

00:21:35.770 --> 00:21:36.740
<v Matt>other frameworks out there.

00:21:38.480 --> 00:21:39.940
<v Matt>So it kind of makes sense in a sense of,

00:21:39.970 --> 00:21:41.960
<v Matt>like, they need to bootstrap that for this framework.

00:21:42.860 --> 00:21:45.640
<v Matt>So that, to me, like, it's like, OK,

00:21:45.770 --> 00:21:47.640
<v Matt>that sort of clicked in my mind of, like, of course,

00:21:47.820 --> 00:21:49.320
<v Matt>like, if they want to encourage people to adopt it,

00:21:49.370 --> 00:21:52.360
<v Matt>they need to share some abstractions for them.

00:21:53.380 --> 00:21:54.560
<v Matt>But otherwise, it was kind of interesting.

00:21:54.670 --> 00:21:57.580
<v Matt>I feel like the React team obviously

00:21:57.600 --> 00:22:02.720
<v Matt>wanted to shy away from shipping a lot of these baked in features when they shipped react like you know

00:22:02.900 --> 00:22:07.900
<v Matt>custom router or other libraries they just didn't see that as an aspect that the react team needed

00:22:07.900 --> 00:22:13.300
<v Matt>to manage but um you know i think that this sort of points to like the remix guys have a different

00:22:13.560 --> 00:22:19.960
<v Matt>perspective on on what should be baked in or what should be available out of the box provided by the

00:22:20.160 --> 00:22:26.380
<v Matt>you know first party versus third party solutions

00:22:20.160 --> 00:22:26.380
<v Dillon>yeah i feel like they understand that moving to

00:22:26.400 --> 00:22:32.840
<v Dillon>this if you're currently in a react app with shad cn for instance it's going to be super hard

00:22:33.350 --> 00:22:38.980
<v Dillon>so they're trying to make it easier for people via providing those those tools so that makes sense to

00:22:38.980 --> 00:22:45.720
<v Dillon>me

00:22:38.980 --> 00:22:45.720
<v Matt>another another kind of aspect of that is like they baked in a css and js framework as part of

00:22:45.820 --> 00:22:52.860
<v Matt>remix 3 as well so this is um uh so they in their js they showcased a few different like custom props

00:22:52.980 --> 00:22:53.220
<v Matt>or whatever.

00:22:53.540 --> 00:22:55.880
<v Matt>It's like on was a custom prop to add multiple event

00:22:55.980 --> 00:22:56.620
<v Matt>listeners to an element.

00:22:57.140 --> 00:23:00.940
<v Matt>But they also support a CSS prop, which my understanding

00:23:01.120 --> 00:23:03.460
<v Matt>is that it basically works kind of like almost

00:23:03.600 --> 00:23:06.940
<v Matt>every other frameworks, custom JSX CSS prop.

00:23:07.440 --> 00:23:14.280
<v Matt>So you override the JSX factory that your bundler injects

00:23:14.360 --> 00:23:16.100
<v Matt>and it handles the CSS prop for you.

00:23:17.940 --> 00:23:22.880
<v Matt>So that was neat, but it's not that uncommon, I guess,

00:23:23.070 --> 00:23:23.560
<v Matt>in the space.

00:23:25.379 --> 00:23:27.420
<v Matt>Scott, you were talking a little bit about what

00:23:27.420 --> 00:23:31.340
<v Matt>were the other ones you caught up besides the component library?

00:23:32.580 --> 00:23:37.540
<v Scott>Yeah, event bubbling was one and async programming.

00:23:39.379 --> 00:23:41.140
<v Matt>The event bubbling is like--

00:23:42.210 --> 00:23:42.760
<v Matt>correct me if I'm wrong.

00:23:44.020 --> 00:23:46.540
<v Matt>I feel like they were selling a feature that already exists,

00:23:46.900 --> 00:23:52.580
<v Matt>And they were saying, like, look at this, this event, just like, like, I can move this, a listener up to, up to the form and it just works.

00:23:52.760 --> 00:23:54.260
<v Matt>And it's like, you can do that in React.

00:23:55.080 --> 00:23:57.400
<v Matt>So like, to me, that was like, like, what's different?

00:23:57.600 --> 00:23:58.540
<v Matt>What's unique about this?

00:23:58.700 --> 00:24:00.020
<v Matt>Like, I don't know.

00:24:00.380 --> 00:24:11.220
<v Matt>To me, it was just like, okay, and versus like, you know, I don't know, maybe I'm misunderstanding or like, maybe there was an aspect there that I missed when watching the video.

00:24:11.800 --> 00:24:16.460
<v Scott>I didn't get to that part, but I was just wondering if there was any excitement there.

00:24:16.600 --> 00:24:22.320
<v Scott>I really do think it was maybe front loaded with excitement, showing off kind of the context

00:24:22.860 --> 00:24:25.440
<v Scott>and like, it's clear it's not complete, right?

00:24:26.560 --> 00:24:34.180
<v Scott>The context might be there and like how custom events and the separation of events from the

00:24:34.220 --> 00:24:35.780
<v Scott>layout that looks really good.

00:24:35.980 --> 00:24:43.560
<v Scott>And that's like really the pro so far, the rest of it, we'll see how it, how it comes.

00:24:44.220 --> 00:24:50.860
<v Scott>again uh these guys are methodical i don't know how long it will probably take them a while but i

00:24:50.860 --> 00:24:55.780
<v Scott>do think if they approach this problem as like here's a bunch of little packages and when we

00:24:55.920 --> 00:25:01.540
<v Scott>have enough done um we'll create a large package they might be onto something with that approach

00:25:02.180 --> 00:25:10.019
<v Scott>basically the shadCN approach well a little different but similar

00:25:02.180 --> 00:25:10.019
another thing that sort of

00:25:10.400 --> 00:25:12.620
<v Matt>worries me a little bit in the back of my head is that

00:25:14.000 --> 00:25:17.860
<v Matt>these guys have known to release a change

00:25:17.980 --> 00:25:20.280
<v Matt>that has a pretty dramatic API change

00:25:21.100 --> 00:25:25.600
<v Matt>and then go back on that in the next major release.

00:25:27.000 --> 00:25:30.060
<v Matt>Which is not to say that you need to

00:25:30.300 --> 00:25:34.480
<v Matt>again, you need to FAFO a little bit to land on the right API

00:25:34.680 --> 00:25:38.280
<v Matt>or right abstraction. I don't know the exact versions.

00:25:38.460 --> 00:25:40.060
<v Matt>I should have looked it up, but I think React Router,

00:25:40.640 --> 00:25:42.260
<v Matt>it's like the change from V2 to V3,

00:25:42.550 --> 00:25:44.500
<v Matt>which is like, well, I say decades ago,

00:25:44.660 --> 00:25:45.800
<v Matt>but like years and years ago,

00:25:47.240 --> 00:25:49.920
<v Matt>was like a pretty dramatic shift, if I remember correctly,

00:25:50.120 --> 00:25:51.680
<v Matt>of like how you structure your routes,

00:25:51.830 --> 00:25:53.560
<v Matt>how you handle loading, stuff like that.

00:25:54.180 --> 00:25:54.820
<v Matt>And then they basically,

00:25:55.440 --> 00:25:58.400
<v Matt>there was maybe a decent amount of outcry in the community,

00:25:58.860 --> 00:26:00.480
<v Matt>and I think they sort of like flipped back

00:26:00.800 --> 00:26:03.780
<v Matt>from V3 to V4 of like going back to a more model

00:26:03.850 --> 00:26:05.280
<v Matt>that looked similar to previous APIs.

00:26:07.440 --> 00:26:08.360
<v Matt>And so to me, this is like,

00:26:08.940 --> 00:26:10.860
<v Matt>and kind of not necessarily the same

00:26:10.920 --> 00:26:11.960
<v Matt>in terms of like API change,

00:26:12.080 --> 00:26:13.480
<v Matt>but just in terms of like naming change

00:26:13.600 --> 00:26:15.960
<v Matt>of like migrating from React Router to Remix

00:26:16.020 --> 00:26:18.420
<v Matt>and then rebranding Remix back to React Router

00:26:18.960 --> 00:26:20.060
<v Matt>last year or whatever it was.

00:26:22.120 --> 00:26:24.240
<v Matt>So like, it gives me a little bit of a pause of like,

00:26:25.180 --> 00:26:27.500
<v Matt>like, you know, maybe I wait for Remix V4

00:26:27.920 --> 00:26:31.760
<v Matt>or Remix V3.1 or something until it's like fully baked

00:26:31.980 --> 00:26:34.260
<v Matt>and they've like figured out these abstractions.

00:26:36.080 --> 00:26:36.540
<v Matt>Yeah, I don't know.

00:26:38.080 --> 00:26:40.640
<v Matt>Again, we're talking about extremely early software here,

00:26:41.140 --> 00:26:42.620
<v Matt>extremely early patterns and concepts,

00:26:42.760 --> 00:26:44.820
<v Matt>and so some of it's likely to change.

00:26:45.100 --> 00:26:46.760
<v Dillon>Yeah, we're all looking at this from the lens of,

00:26:46.860 --> 00:26:50.040
<v Dillon>like, we've never really used Remix in production,

00:26:50.600 --> 00:26:52.900
<v Dillon>and it would be cool if we did,

00:26:53.240 --> 00:26:55.160
<v Dillon>if all these things came to light.

00:26:56.120 --> 00:26:57.440
<v Dillon>It just feels like...

00:26:58.800 --> 00:27:00.300
<v Dillon>At this point, I feel like they just need to, like,

00:27:01.279 --> 00:27:03.720
<v Dillon>rebrand V3 to, like, something completely different

00:27:05.140 --> 00:27:06.900
<v Dillon>and just call it something completely different.

00:27:07.280 --> 00:27:09.200
<v Dillon>Just remove Remix from it

00:27:09.380 --> 00:27:10.920
<v Dillon>because I feel like Remix is maybe

00:27:10.980 --> 00:27:13.300
<v Dillon>that branding is maybe tainted at this point.

00:27:14.020 --> 00:27:14.860
<v Dillon>Maybe that's a hot take.

00:27:15.400 --> 00:27:16.920
<v Matt>I feel like they landed on a great name

00:27:17.060 --> 00:27:17.780
<v Matt>a couple years ago

00:27:18.060 --> 00:27:19.240
<v Matt>and Remix is great.

00:27:20.300 --> 00:27:22.260
<v Matt>I feel like it's genuinely a good name

00:27:22.400 --> 00:27:23.820
<v Matt>and so they just want to keep using it

00:27:24.000 --> 00:27:25.360
<v Matt>but they just want to use it

00:27:25.480 --> 00:27:26.720
<v Matt>for their current latest project

00:27:26.860 --> 00:27:29.100
<v Matt>not like old stuff

00:27:29.200 --> 00:27:30.020
<v Matt>like find a new name.

00:27:30.820 --> 00:27:32.840
<v Matt>Maybe that's a bad take on it

00:27:32.840 --> 00:27:33.400
<v Matt>but yeah.

00:27:33.900 --> 00:27:34.860
<v Scott>you're both right.

00:27:35.220 --> 00:27:35.700
<v Scott>You're both right.

00:27:35.860 --> 00:27:37.480
<v Scott>Like it's an awesome name.

00:27:38.400 --> 00:27:39.880
<v Scott>And they never really made it,

00:27:40.640 --> 00:27:42.640
<v Scott>but like it is branding.

00:27:42.810 --> 00:27:44.220
<v Scott>I don't want to say it's branding one-on-one,

00:27:44.380 --> 00:27:47.500
<v Scott>but like have either of you guys watched The Wire?

00:27:49.380 --> 00:27:50.540
<v Scott>One of the best TV shows ever.

00:27:50.840 --> 00:27:52.460
<v Scott>I'm recommending it right now.

00:27:53.120 --> 00:27:54.060
<v Scott>Britt and I are watching it.

00:27:54.440 --> 00:27:54.540
<v Scott>Anyway.

00:27:54.640 --> 00:27:55.600
<v Matt>Did that come out in 1990?

00:27:56.900 --> 00:27:57.740
<v Scott>Oh my God.

00:27:57.860 --> 00:27:59.620
<v Scott>It came out in 2002.

00:28:00.660 --> 00:28:01.620
<v Scott>Still one of the best shows ever.

00:28:01.700 --> 00:28:02.140
<v Scott>All right.

00:28:02.260 --> 00:28:03.420
<v Scott>I don't want to derail us.

00:28:03.480 --> 00:28:11.160
<v Scott>too far here um well it's on hbo now uh okay but point is like uh one of the guys um you know he's

00:28:11.300 --> 00:28:17.800
<v Scott>he's like learning about selling things and whatnot but like just rebranding something um

00:28:18.500 --> 00:28:22.640
<v Scott>and giving it a different name and it could be the same product even though in this case obviously

00:28:22.750 --> 00:28:28.400
<v Scott>it's not the exact same can have a huge impact or effect so it is a little tough from that

00:28:28.380 --> 00:28:33.400
<v Scott>standpoint, if people associate remix with like feeling let down from the last couple iterations,

00:28:34.120 --> 00:28:39.220
<v Scott>um, it's going to be a little harder and I'm not, I'm not trying to put points against it,

00:28:39.440 --> 00:28:45.180
<v Scott>but psychologically, if you felt let down by it, it might make that harder to everyone to move to

00:28:45.400 --> 00:28:50.160
<v Scott>react. Like a good example is react, right? Everyone got on it and it worked well to start.

00:28:50.940 --> 00:28:55.660
<v Scott>And now it's kind of the standard because of it. Just, just a side thought there.

00:28:56.360 --> 00:29:03.660
<v Matt>I guess like zooming out a little bit, like, I think, I think the industry, well, I think the,

00:29:04.120 --> 00:29:09.440
<v Matt>the people that you, the React developers in the industry are starting to realize that they've been

00:29:09.620 --> 00:29:17.960
<v Matt>React-pilled for the past 10 years. And, uh, and, you know, I think it's really interesting also

00:29:17.960 --> 00:29:22.760
<v Matt>to think back that like Ryan Florence was one of the demos and like speakers when they announced

00:29:22.780 --> 00:29:27.680
<v Matt>React Hooks. And I feel like he was on stage selling them and people got bought in. They're

00:29:27.780 --> 00:29:31.200
<v Matt>like, what is this? This is crazy. But then actually said, actually, this is pretty cool.

00:29:33.380 --> 00:29:37.580
<v Matt>And then, you know, and then so like Hooks came out and people were like, it seems a little bit

00:29:37.740 --> 00:29:40.640
<v Matt>funky, but let's adopt it. And there were some people in the industry that were saying like,

00:29:40.780 --> 00:29:47.880
<v Matt>that's still really weird. Like, why come up with this thing? And then, you know, a couple of years

00:29:47.900 --> 00:29:53.440
<v Matt>zoom forward a couple years later and it's like suspense and server components and and people are

00:29:53.540 --> 00:29:58.720
<v Matt>like oh okay that seems interesting and there's like maybe a larger audience of that slight you

00:29:58.720 --> 00:30:03.900
<v Matt>know larger slice of the react ecosystem and saying like wait a minute this is weird i think that's

00:30:04.040 --> 00:30:08.280
<v Matt>what like that's what we're starting to see is like we're starting to see this that slice grow

00:30:08.450 --> 00:30:13.960
<v Matt>even larger to become a very either vocal minority or get close to a majority of the react ecosystem

00:30:13.980 --> 00:30:15.960
<v Matt>I'm saying like, actually some of these concepts

00:30:16.110 --> 00:30:16.820
<v Matt>are kind of funky.

00:30:18.500 --> 00:30:21.500
<v Matt>And what if we didn't do it this way?

00:30:21.660 --> 00:30:22.880
<v Matt>Like what if we did it a different way?

00:30:23.240 --> 00:30:25.560
<v Matt>So we've seen this with people moving from Next

00:30:25.800 --> 00:30:29.560
<v Matt>to Tanstack Start, for example, which as I understand it,

00:30:29.700 --> 00:30:33.540
<v Matt>exposes kind of a similar-ish API as the React Router Framework

00:30:33.660 --> 00:30:36.200
<v Matt>Mode or whatever it's called, Remix V2, or whatever it is.

00:30:37.900 --> 00:30:40.560
<v Matt>And so part of me is like, I think

00:30:40.680 --> 00:30:42.560
<v Matt>we're sort of like maybe catching a wave of like,

00:30:43.660 --> 00:30:45.400
<v Matt>actually, what if we didn't do it the React way,

00:30:45.640 --> 00:30:47.860
<v Matt>but we took the good parts of React

00:30:48.800 --> 00:30:50.880
<v Matt>and maybe a simpler programming model

00:30:51.100 --> 00:30:53.680
<v Matt>or a simpler abstraction around how you load data,

00:30:53.870 --> 00:30:55.540
<v Matt>how you handle events and manage state.

00:30:57.720 --> 00:31:00.780
<v Matt>And I think that ultimately is my summary

00:31:00.960 --> 00:31:03.140
<v Matt>of maybe what Remix 3 is trying to accomplish.

00:31:04.500 --> 00:31:06.540
<v Matt>From what I've seen so far, it looks pretty exciting,

00:31:07.270 --> 00:31:08.900
<v Matt>but again, yeah, some of it's going to change.

00:31:10.100 --> 00:31:12.480
<v Matt>Yeah, I feel like I was maybe summarizing that topic.

00:31:12.700 --> 00:31:15.340
<v Matt>I don't want to cut you guys off on further thoughts there.

00:31:16.620 --> 00:31:18.220
<v Matt>But yeah, it is interesting.

00:31:18.310 --> 00:31:19.800
<v Matt>I think that we've sort of...

00:31:19.800 --> 00:31:19.820
<v Scott>Yeah, definitely.

00:31:20.520 --> 00:31:21.740
<v Matt>I think we're starting to see,

00:31:22.170 --> 00:31:23.440
<v Matt>maybe not necessarily a downfall of React,

00:31:23.640 --> 00:31:27.720
<v Matt>but sort of, you know, we've hit the plateau of the adoption curve of React.

00:31:27.720 --> 00:31:29.160
<v Scott>I don't want to say it's silly not to,

00:31:29.280 --> 00:31:31.180
<v Scott>because there are good use cases not to,

00:31:31.530 --> 00:31:32.500
<v Scott>and there are good solutions.

00:31:34.160 --> 00:31:35.260
<v Scott>You know, I haven't used Astro,

00:31:35.460 --> 00:31:38.380
<v Scott>but for static sites, I've heard really good things about it.

00:31:39.200 --> 00:31:50.420
<v Scott>And I once touched Svelte, shout out Arty for a project, but they seem like good solutions.

00:31:51.360 --> 00:31:59.820
<v Scott>Really just more so when you have all these corporations and their giant code bases on this one platform that everyone agreed on.

00:31:59.820 --> 00:32:03.940
<v Scott>I feel like getting unstuck from that is going to be kind of a challenge.

00:32:04.340 --> 00:32:17.400
<v Scott>But if something presents itself as strong enough, and with AI being a great migration tool, we might finally see a change, which is honestly exciting in the world of JavaScript and front end.

00:32:18.160 --> 00:32:20.580
<v Dillon>Can I do one critique of the presentation?

00:32:20.930 --> 00:32:21.620
<v Dillon>Maybe a hot take.

00:32:22.440 --> 00:32:23.060
<v Dillon>Another one.

00:32:23.980 --> 00:32:24.860
<v Dillon>Maybe a couple at the beginning.

00:32:24.990 --> 00:32:30.480
<v Dillon>But there was a moment where, and I want to see how everyone feels about this.

00:32:30.860 --> 00:32:36.420
<v Dillon>Maybe it was sarcasm where he basically was like, oh, I just asked Cursor to build this part of it.

00:32:37.200 --> 00:32:40.420
<v Dillon>And I put that off to the side and I don't need to know what that's doing.

00:32:40.680 --> 00:32:41.240
<v Dillon>It just works.

00:32:43.420 --> 00:32:44.200
<v Dillon>What were you guys feeling?

00:32:44.480 --> 00:32:51.120
<v Dillon>Was that sarcasm or is that just like, is that the way that we're moving in development?

00:32:52.960 --> 00:32:54.760
<v Matt>That was kind of like what I was trying to get to.

00:32:54.960 --> 00:32:56.520
<v Matt>Also, earlier, what I was saying,

00:32:56.920 --> 00:32:59.140
<v Matt>it seems a lot like he was using AI

00:32:59.340 --> 00:33:02.440
<v Matt>to build the abstractions in this framework so far,

00:33:03.320 --> 00:33:06.540
<v Matt>which is like, and maybe I'm taking this a little bit

00:33:06.700 --> 00:33:07.940
<v Matt>tangential over your question, Dillon,

00:33:08.050 --> 00:33:10.760
<v Matt>but gives me a little bit of a pause also.

00:33:11.740 --> 00:33:15.480
<v Matt>I don't have full confidence that AI-generated code

00:33:15.680 --> 00:33:20.360
<v Matt>is as good yet as human-written code.

00:33:21.980 --> 00:33:32.380
<v Matt>And so part of me is a little bit hesitant of like, okay, like AI generated the code that handles the core abstraction for event handling within the framework, for example.

00:33:32.420 --> 00:33:39.020
<v Matt>And it's like, how trustworthy are we that that's like doing the right, making the right choices or whatnot?

00:33:39.180 --> 00:33:39.340
<v Dillon>Yeah.

00:33:39.780 --> 00:33:44.080
<v Dillon>I meant more like it was the moment where he was like, I generated that.

00:33:44.080 --> 00:33:45.080
<v Dillon>I'm not going to look at it.

00:33:45.180 --> 00:33:46.300
<v Dillon>It spits out what I need.

00:33:47.860 --> 00:33:52.760
<v Dillon>I'm okay with people using AI and closely reviewing it and iterating and iterating.

00:33:53.460 --> 00:33:54.160
<v Dillon>It was just that.

00:33:54.640 --> 00:33:56.080
<v Dillon>Maybe I'm reading into it too much.

00:33:57.900 --> 00:34:03.860
<v Scott>I think it was a joke only because later in the presentation, he made a comment about...

00:34:04.140 --> 00:34:05.480
<v Scott>Well, first off, I hope it was a joke.

00:34:05.580 --> 00:34:19.440
<v Scott>But I think it might have been because later on he made a comment about how he put in the Claude.md file the exact thing he needed for a solution for a specific part of the demo.

00:34:20.040 --> 00:34:24.899
<v Scott>So he actually had it like generate a whole part of the drum machine, I think.

00:34:26.620 --> 00:34:32.200
<v Scott>I'm trying to remember what part it was, but maybe it was the whole update method he basically ended up making.

00:34:32.980 --> 00:34:35.760
<v Scott>But basically he was like, yeah, I put the whole thing in the Claude.md file.

00:34:35.899 --> 00:34:37.700
<v Scott>That's how you know it does what you want it to do.

00:34:38.139 --> 00:34:39.240
<v Scott>He made a comment like that.

00:34:39.570 --> 00:34:42.679
<v Scott>So my assumption is it seemed like they prepped a lot.

00:34:42.790 --> 00:34:48.860
<v Scott>So maybe he just said that, I don't know, to kind of like keep the thing exciting, make

00:34:48.980 --> 00:34:51.500
<v Scott>it seem, make you think a little bit.

00:34:51.700 --> 00:34:58.620
<v Scott>But it's hard for me to believe that he wouldn't know what it's doing because like they broke

00:34:58.650 --> 00:35:01.080
<v Scott>down a lot of code and exactly what it did.

00:35:01.540 --> 00:35:07.460
<v Scott>And he kept talking about some really interesting things that what JavaScript does by default nature.

00:35:07.680 --> 00:35:12.360
<v Scott>I mean, with all his years in working on JavaScript, he knows a lot about some of these things.

00:35:12.780 --> 00:35:15.060
<v Scott>So my assumption is like he has to at some level know.

00:35:15.300 --> 00:35:25.040
<v Scott>But if they're just yeeting out solutions and not looking at it, I'd be really concerned because I'm 100% in agreement with what Matt said.

00:35:25.120 --> 00:35:27.460
<v Scott>Like, AI can write really good code.

00:35:27.720 --> 00:35:29.940
<v Scott>But, you know, I may probably have said this here.

00:35:30.220 --> 00:35:35.120
<v Scott>But it's better at things that are more common when you're building something that's more abstract.

00:35:35.500 --> 00:35:35.860
<v Scott>That's harder.

00:35:36.950 --> 00:35:40.900
<v Scott>Even though there's context bloat, if you give, we use Claude.

00:35:42.020 --> 00:35:43.540
<v Scott>There are Claude MD files everywhere.

00:35:44.780 --> 00:35:50.020
<v Scott>Like, a great example is you tell it not to use any type and it uses any type everywhere.

00:35:51.040 --> 00:35:54.240
<v Scott>So, like, there's things that it just, like, fails to do sometimes.

00:35:55.800 --> 00:36:07.280
<v Scott>You know, often I see it creating flags that can be used for multiple things or they just add a lot of extra bloat that just doesn't need to be there.

00:36:07.460 --> 00:36:13.400
<v Scott>So I would imagine he if he's serious about this, unless he was rushing just for demo, he knows what it's doing.

00:36:13.780 --> 00:36:16.760
<v Scott>Sorry, I'm being long winded about this, but I'm very hopeful.

00:36:18.300 --> 00:36:27.220
<v Dillon>yeah i i was less like call him out and just make sure that hopefully the the way that this industry

00:36:27.420 --> 00:36:34.200
<v Dillon>moves is we don't normalize like

00:36:27.420 --> 00:36:34.200
<v Scott>100 percent

00:36:27.420 --> 00:36:34.200
<v Dillon>like creating ai slop don't review it just like stick it in a

00:36:34.340 --> 00:36:40.860
<v Dillon>file and then reference some function and and it's sort of like encapsulated the ai slop i just don't

00:36:40.900 --> 00:36:46.520
<v Dillon>want that to be a thing that this industry becomes and i'm afraid it kind of maybe is already on that

00:36:46.500 --> 00:36:53.360
<v Dillon>path but yeah maybe that's another episode

00:36:46.500 --> 00:36:53.360
<v Scott>i agree with you on that

00:36:46.500 --> 00:36:53.360
<v Dillon>stop the slop

00:36:56.000 --> 00:37:00.940
<v Scott>oh man we got a campaign we got to start doing that with our tech signs we gotta stop the slop

00:37:01.400 --> 00:37:09.720
<v Matt>stop the slop

00:37:01.400 --> 00:37:09.720
<v Dillon>i have one co-worker as maybe one of one at the company who doesn't use ai at all

00:37:10.480 --> 00:37:13.039
<v Dillon>maybe we should like bring him on the podcast that'd be crazy

00:37:14.980 --> 00:37:18.980
<v Scott>we should we're still waiting on Rogin shout out Rogin

00:37:21.240 --> 00:37:24.400
<v Matt>well to be fair we're not waiting on him what he's waiting on us

00:37:27.080 --> 00:37:33.060
<v Scott>but yeah it's because we record the podcast at like eight to nine a.m eastern so we'd have to

00:37:33.220 --> 00:37:38.919
<v Dillon>wake up at five don't give away all our secrets yeah we'll have to take off a friday from work

00:37:38.940 --> 00:37:39.100
<v Dillon>altogether.

00:37:41.480 --> 00:37:42.520
<v Scott>I'm cutting this segment out.

00:37:42.790 --> 00:37:42.880
<v Scott>Sorry.

00:37:47.739 --> 00:37:49.440
<v Scott>We record at 6 a.m.

00:37:49.710 --> 00:37:49.800
<v Scott>Eastern.

00:37:49.970 --> 00:37:52.080
<v Scott>We don't want him to be up till 3 p.m.

00:37:53.060 --> 00:37:53.600
<v Scott>3 a.m.

00:37:53.650 --> 00:37:54.100
<v Scott>3 a.m.

00:37:54.240 --> 00:37:54.400
<v Scott>Jesus.

00:37:56.980 --> 00:37:57.160
<v Matt>All right.

00:37:57.220 --> 00:37:59.260
<v Matt>Yeah, I think we've talked a decent amount about Remix 3.

00:37:59.330 --> 00:38:00.860
<v Matt>I mean, again, it's still very early.

00:38:01.480 --> 00:38:03.680
<v Matt>Curious to hear everyone else's thoughts when you listen to the podcast.

00:38:04.720 --> 00:38:05.860
<v Matt>Let us know what we got wrong.

00:38:05.900 --> 00:38:10.260
<v Matt>how we, you know, there was some kerfuffle on Twitter about another podcast that covered it

00:38:10.460 --> 00:38:16.860
<v Matt>that got a lot of things wrong. So hopefully we're not as bad as that. Um, uh, yeah, I guess like

00:38:17.160 --> 00:38:23.420
<v Matt>let's transition to, we had a few side segments. Uh, first, first up, uh, we want to cover a new

00:38:23.600 --> 00:38:27.060
<v Matt>segment that we're maybe tentatively calling, maybe when you come up with a better name is

00:38:27.220 --> 00:38:32.780
<v Matt>Scott's style corner. Um, I just imagine like a little, like sort of a pre-kindergarten or

00:38:32.800 --> 00:38:36.860
<v Matt>kindergarten sort of room and there's a tiny little like corner in which there's a little desk and a

00:38:36.860 --> 00:38:40.300
<v Matt>little chair and Scott's sitting there and it's like he's painting or something but

00:38:43.880 --> 00:38:48.500
<v Matt>in today's session of Scott's style corner we're going to talk about handling null and undefined

00:38:48.600 --> 00:38:54.500
<v Matt>values within UIs and you know I'm like sort of paraphrasing Scott who shared the original

00:38:54.680 --> 00:38:59.120
<v Matt>concept or like shared some of his maybe pain points of the original concept so maybe we'd

00:38:59.320 --> 00:39:00.960
<v Matt>start there and talk about it.

00:39:09.880 --> 00:39:17.700
<v Scott>um often times what i've seen is when you have a null or undefined field we treat it as such we

00:39:17.940 --> 00:39:25.340
<v Scott>just say in the ui like this is null this is undefined this is not something and just as a like

00:39:25.360 --> 00:39:36.020
<v Scott>a ux suggestion uh if you have a let's say um list of uh filters or something that you can filter by

00:39:36.380 --> 00:39:46.000
<v Scott>and you want to have an undefined or null filter be um all filters or no filters or something

00:39:46.720 --> 00:39:53.020
<v Scott>um so you can see all the items in the list we want to represent that with it with an actual name

00:39:53.080 --> 00:39:57.600
<v Scott>So if this is like statuses, something could be in review, it could be reviewed.

00:39:58.740 --> 00:40:03.480
<v Scott>And then if it's null or undefined, we were just putting like empty on the page.

00:40:03.600 --> 00:40:05.940
<v Scott>And a better example would be to say not reviewed.

00:40:06.080 --> 00:40:11.860
<v Scott>We don't need to save that maybe everywhere as itself as an item.

00:40:12.240 --> 00:40:14.420
<v Scott>But we want to kind of look at these null or undefined fields.

00:40:15.220 --> 00:40:18.600
<v Scott>It doesn't always have to be a name that's in an enum and then we assign something to it.

00:40:18.900 --> 00:40:22.340
<v Scott>But look at null and undefined for the user and how the user might see that.

00:40:22.380 --> 00:40:25.820
<v Scott>So like when I saw this as an example, I was like empty.

00:40:26.420 --> 00:40:27.260
<v Scott>I was like, what does that mean?

00:40:27.340 --> 00:40:28.160
<v Scott>This looks like a bug.

00:40:29.240 --> 00:40:30.400
<v Scott>I was very confused.

00:40:30.580 --> 00:40:35.160
<v Scott>I'm not really the user base, but I was like, oh, okay, well, we just want to say like not

00:40:35.380 --> 00:40:35.660
<v Scott>reviewed yet.

00:40:35.840 --> 00:40:37.520
<v Scott>Like we're not in one of these things.

00:40:37.880 --> 00:40:42.760
<v Scott>Maybe that's not the perfect example solution of naming, but let's just always try to present

00:40:43.520 --> 00:40:46.680
<v Scott>in the UI how the user might need to read that.

00:40:46.930 --> 00:40:52.340
<v Scott>So to make sure we're not just saying spitting, I guess what I would call it leaking implementation

00:40:52.360 --> 00:40:58.700
<v Scott>implementation details onto the UX. We want to avoid that or the UI rather, uh, so that there

00:40:58.820 --> 00:41:03.460
<v Scott>is a better UX. So we want to make sure that we're naming things appropriately for how the user might

00:41:03.600 --> 00:41:08.320
<v Scott>interact with that. And I guess that more so comes with a team that doesn't have a designer. Um,

00:41:09.140 --> 00:41:13.620
<v Scott>but it's, it's a way of an engineer to think about what they're building. You know, sometimes we say

00:41:13.720 --> 00:41:17.940
<v Scott>like, there's a little bit of a rant, but sometimes we say like all this stuff on the front end is easy,

00:41:18.080 --> 00:41:23.500
<v Scott>but there are so many edge cases and they come up so often. And even if you use somebody's

00:41:24.740 --> 00:41:28.440
<v Scott>component library, you're not building the component yourself. A lot of these kinds of

00:41:28.600 --> 00:41:34.900
<v Scott>things pop up and, and this is what is the difference. Well, in my example, I'm talking

00:41:34.960 --> 00:41:39.960
<v Scott>about an internal tool, but this can be the, the difference in a user understanding what to do and

00:41:40.200 --> 00:41:44.320
<v Scott>converting for what they're trying to do here. So we just want to make sure that it's clear

00:41:44.680 --> 00:41:46.860
<v Scott>and concise what you do in all the scenarios.

00:41:47.440 --> 00:41:49.500
<v Scott>And working at startups with Matt,

00:41:50.680 --> 00:41:52.740
<v Scott>sometimes you're working on stuff that's really complex

00:41:53.640 --> 00:41:57.100
<v Scott>and it's hard to make clear what the choice should be

00:41:57.260 --> 00:41:58.580
<v Scott>or how to push somebody through a flow.

00:41:58.800 --> 00:42:01.160
<v Scott>So a lot of stuff that we've picked up

00:42:01.360 --> 00:42:03.720
<v Scott>from working on some difficult experience building.

00:42:04.860 --> 00:42:07.120
<v Matt>Yeah, I think to like summarize that point

00:42:07.130 --> 00:42:09.080
<v Matt>is like it's a little bit contextual, right?

00:42:09.240 --> 00:42:13.460
<v Matt>It's like where you're showing that in the UI

00:42:13.480 --> 00:42:15.800
<v Matt>as part of the experience, like you should, yeah.

00:42:16.100 --> 00:42:18.260
<v Matt>And again, to reiterate what Scott was saying is like,

00:42:18.500 --> 00:42:20.400
<v Matt>you should clearly communicate to the user

00:42:20.600 --> 00:42:23.200
<v Matt>like what this means and not try to leave it ambiguous

00:42:24.320 --> 00:42:27.860
<v Matt>or undefined without, you know, not trying to be,

00:42:30.340 --> 00:42:31.040
<v Matt>yeah, yeah.

00:42:31.680 --> 00:42:33.980
<v Matt>I think one thought that came to mind also is like,

00:42:34.660 --> 00:42:36.580
<v Matt>in your example of like status, it's like,

00:42:37.000 --> 00:42:40.380
<v Matt>I would argue maybe it's also a bug to consider status

00:42:40.600 --> 00:42:42.260
<v Matt>to not have a clearly defined value.

00:42:42.740 --> 00:42:44.480
<v Matt>of like, you know, at least based on the name,

00:42:44.530 --> 00:42:46.360
<v Matt>it seems like it should be an enum

00:42:46.500 --> 00:42:48.200
<v Matt>of a number of different things, right?

00:42:48.270 --> 00:42:49.940
<v Matt>Like reviewed and review, stuff like that.

00:42:49.940 --> 00:42:52.220
<v Matt>And it's like, maybe you have like a, you know,

00:42:53.220 --> 00:42:54.800
<v Matt>initializing status or something like that.

00:42:54.960 --> 00:42:59.120
<v Matt>And instead of a null or on the status, but again, yeah,

00:42:59.580 --> 00:43:01.200
<v Matt>I think that's, we're starting to dig into some ethics,

00:43:01.520 --> 00:43:02.000
<v Matt>but yeah.

00:43:02.719 --> 00:43:04.920
<v Scott>- I actually 100% agree with that.

00:43:04.970 --> 00:43:07.720
<v Scott>I think this, I should probably preference that this example,

00:43:09.000 --> 00:43:12.700
<v Scott>you know, is based on a code base that is really large

00:43:12.720 --> 00:43:18.660
<v Scott>was like the paradigm that had been created before

00:43:12.720 --> 00:43:18.660
<v Matt>all right stand-up update it's been a while since

00:43:18.800 --> 00:43:23.280
<v Matt>we've done stand-up based i feel like but uh Dillon what's what's up with you

00:43:27.720 --> 00:43:30.420
<v Dillon>i don't know matt i didn't think about this

00:43:32.420 --> 00:43:35.380
<v Matt>all right popcorn to the next one scott what's up with you

00:43:38.960 --> 00:43:42.680
<v Scott>i didn't really think about it either but i i got this i got this

00:43:43.540 --> 00:43:49.100
<v Scott>we haven't actually recorded for like a couple of months now right guys is that accurate

00:43:49.470 --> 00:43:57.360
<v Matt>uh it's i need to go back through my notes yeah maybe august august yeah we recorded like

00:43:58.030 --> 00:44:04.200
<v Scott>may or june and then once in july and once in august and now we're back to our regular cadence

00:44:05.260 --> 00:44:12.660
<v Scott>and it is september it is not september it's october it's the end of it it's almost november

00:44:13.220 --> 00:44:20.720
<v Scott>like next week we'll be able to eat out next next friday so we'll be able to do two episodes this

00:44:20.880 --> 00:44:28.540
<v Scott>month that's that's amazing i love it so all right so a lot has happened since then i got married in

00:44:28.660 --> 00:44:39.359
<v Scott>september i went on my honeymoon to iceland in september um nice that's awesome i've almost

00:44:39.380 --> 00:44:44.860
<v Scott>finished the feature I've been talking about since June. I've like, I've, I've finished it.

00:44:45.240 --> 00:44:50.000
<v Matt>I was doing show notes for, I think an episode that's coming out next week or maybe this week.

00:44:50.240 --> 00:44:54.980
<v Matt>Um, and in it, you're like, Oh yeah, I want to wrap up this feature in September or like early

00:44:55.140 --> 00:45:01.860
<v Matt>September. And you've still been working on the feature, but yeah.

00:44:55.140 --> 00:45:01.860
<v Scott>Oh, continue. Did you have more

00:45:01.860 --> 00:45:06.780
<v Scott>to say?

00:45:01.860 --> 00:45:06.780
<v Matt>No, I was just to say, it's like, you know, again, maybe most engineers are, you know,

00:45:06.860 --> 00:45:09.420
<v Matt>like overly optimistic in how fast we can deliver stuff.

00:45:10.800 --> 00:45:16.260
<v Scott>So I don't know if I, we said this in an episode, but like, um, we found out in the middle of me

00:45:16.440 --> 00:45:21.720
<v Scott>working on this, like all of August and maybe I had spent some time in July and whatnot. I had to

00:45:21.720 --> 00:45:26.540
<v Scott>do a migration of, I talked about it on some podcasts, a migration of, uh, Datadog to Grafana

00:45:27.180 --> 00:45:34.620
<v Scott>and, um, it became real pressing. So I basically switched gears all of August. Um, I, I completed

00:45:34.640 --> 00:45:41.740
<v Scott>what I thought would be enough in September before I went away for my honeymoon. And we ended up

00:45:42.400 --> 00:45:47.960
<v Scott>doing a dogfooding session with the team and found a whole series of bugs. And I fixed all those bugs.

00:45:48.980 --> 00:45:56.580
<v Scott>But this feature is so big and it can do so much. Admittedly, a few things I could have done better

00:45:58.390 --> 00:46:03.119
<v Scott>was add a whole month. This feature is so big, add a whole month for features that just might not be

00:46:03.120 --> 00:46:07.260
<v Scott>compatible with this feature. We have an auto save feature that like doesn't work with it. I had to,

00:46:07.660 --> 00:46:11.140
<v Scott>I'm like refactoring that whole thing. So there's all these things that you just

00:46:11.680 --> 00:46:17.280
<v Scott>didn't anticipate happening. I should have buffered time for that. Um, but I've also like added some UI

00:46:17.440 --> 00:46:22.340
<v Scott>enhancements to make it look nicer. Uh, I made it, put it under a query param. None of this stuff was

00:46:22.540 --> 00:46:26.700
<v Scott>asked for. I'm like, there's just so many more features I can build within this one feature

00:46:27.140 --> 00:46:31.880
<v Scott>that I was having a hard time finding an endpoint at this point.

00:46:32.400 --> 00:46:34.840
<v Scott>So today, actually, I'm going to blast out a message

00:46:34.900 --> 00:46:37.260
<v Scott>to get our pilot users to get people using it.

00:46:37.260 --> 00:46:38.780
<v Scott>But I'm still actively developing it.

00:46:39.540 --> 00:46:41.780
<v Scott>There's so many cool features to build on top of it.

00:46:42.660 --> 00:46:46.240
<v Scott>It's been an amazing experience, and I'm really excited about it.

00:46:47.000 --> 00:46:50.520
<v Scott>So it's technically like a month late, but I guess for good reason.

00:46:50.960 --> 00:46:54.440
<v Scott>And I did find out they didn't expect that it could be finished

00:46:54.640 --> 00:46:55.380
<v Scott>before the end of the year.

00:46:55.540 --> 00:46:59.360
<v Scott>So it's still done, I guess, two months faster than they anticipated.

00:46:59.600 --> 00:47:01.180
<v Scott>So we're in a good spot.

00:47:02.700 --> 00:47:03.600
<v Scott>All right, that's enough about me.

00:47:03.720 --> 00:47:04.220
<v Scott>Popcorn, Matt.

00:47:06.320 --> 00:47:06.660
<v Matt>Let's see.

00:47:08.920 --> 00:47:09.320
<v Matt>Yeah, at work.

00:47:09.360 --> 00:47:10.000
<v Scott>Are we doing popcorn?

00:47:10.660 --> 00:47:11.080
<v Matt>Yeah, yeah.

00:47:11.340 --> 00:47:12.020
<v Matt>We're saying popcorn.

00:47:12.440 --> 00:47:13.380
<v Scott>Okay, yeah, popcorn.

00:47:13.680 --> 00:47:14.400
<v Matt>We're starting this episode.

00:47:16.400 --> 00:47:19.360
<v Matt>At work, I've been doing a number of different things.

00:47:19.620 --> 00:47:24.540
<v Matt>But most recently, I've been trying to dig into a memory leak that we have within RSPack,

00:47:24.980 --> 00:47:26.000
<v Matt>which was a lot of fun.

00:47:27.340 --> 00:47:28.800
<v Matt>I'm digging through a lot of it,

00:47:28.840 --> 00:47:31.360
<v Matt>and I'm realizing that actually Joe, friend of the pod,

00:47:32.360 --> 00:47:34.540
<v Matt>did a very similar investigation into a memory leak

00:47:35.540 --> 00:47:39.400
<v Matt>with our webpack setup, maybe almost a year ago, exactly.

00:47:39.780 --> 00:47:40.820
<v Matt>So that's fun.

00:47:42.260 --> 00:47:45.360
<v Matt>Unfortunately, we're using his patch version of the library,

00:47:45.840 --> 00:47:46.940
<v Matt>or his fixed version of the library,

00:47:47.140 --> 00:47:48.460
<v Matt>so it's not the same leak.

00:47:50.500 --> 00:47:52.480
<v Matt>Outside of work, I don't know,

00:47:52.540 --> 00:47:53.280
<v Matt>a number of different things.

00:47:55.420 --> 00:48:00.260
<v Matt>let's see most recently i've been listening to this album from cameron winter cameron winters

00:48:00.860 --> 00:48:07.760
<v Matt>uh let me dig up the album name highly recommend it uh the album is called heavy metal uh he's like

00:48:07.760 --> 00:48:13.040
<v Matt>the lead singer i think of geese which also has a pretty good album out like i'm kind of late to the

00:48:13.820 --> 00:48:18.200
<v Matt>late to the news on this stuff this came out like a year ago but anyway highly recommend it um

00:48:18.920 --> 00:48:23.980
<v Matt>yeah i've just been jamming to that as of late i think that's about it Dillon have you uh

00:48:18.920 --> 00:48:23.980
<v Dillon>i've had

00:48:23.940 --> 00:48:30.780
<v Dillon>time while you guys are doing your updates uh another one big thing for me recently is i've

00:48:30.780 --> 00:48:36.800
<v Dillon>been trying to find consistency in my just like fitness and workouts and stuff so i've been doing

00:48:37.020 --> 00:48:44.020
<v Dillon>i've been two weeks into this like six days a week plan so that's like mondays is weights

00:48:45.340 --> 00:48:50.320
<v Dillon>and then the next day is cardio so i've been doing that for two weeks straight it's like

00:48:50.300 --> 00:48:57.200
<v Dillon>kind of the best i felt i don't know physically which is pretty cool

00:48:50.300 --> 00:48:57.200
<v Matt>you've been crushing it too

00:48:57.520 --> 00:49:02.540
<v Matt>like we're connected on uh like apple watch like fitness stuff and it's like maybe three times a

00:49:02.540 --> 00:49:05.540
<v Matt>day i get a notification saying that Dillon finished a workout and it's like god damn

00:49:06.280 --> 00:49:10.060
<v Matt>it's putting me to shame i'm like i only go for like a four mile walk in the morning and that's it

00:49:10.240 --> 00:49:15.760
<v Matt>i need to be i need to be doing some more

00:49:10.240 --> 00:49:15.760
<v Dillon>yeah

00:49:10.240 --> 00:49:15.760
<v Scott>i gotta get me a new apple watch join you guys yeah

00:49:15.780 --> 00:49:22.340
<v Dillon>It's just nice to be able to be like, I'm 36, I'm old, but I feel like better shaped than when I was 16 or something.

00:49:22.400 --> 00:49:24.620
<v Dillon>I don't know, maybe not, but close.

00:49:26.320 --> 00:49:27.140
<v Dillon>So humble brag.

00:49:29.180 --> 00:49:41.060
<v Dillon>And then at work, I worked on this pretty big feature where I built a reverse proxy to split traffic between an old site and a completely new Next.js re-platform site.

00:49:42.300 --> 00:49:44.620
<v Dillon>It's kind of a solo effort, so it's kind of daunting.

00:49:45.640 --> 00:49:49.380
<v Dillon>We ran into some issues with like the way our experiments were bucketing.

00:49:49.840 --> 00:49:51.740
<v Dillon>It wasn't like a perfect 50-50 split.

00:49:53.140 --> 00:49:57.300
<v Dillon>And we were able to like find a way beyond that.

00:49:57.400 --> 00:50:00.860
<v Dillon>I think some of it was like potentially bounce rate was higher on one.

00:50:00.960 --> 00:50:02.280
<v Dillon>So we weren't hitting like page view events.

00:50:03.140 --> 00:50:04.320
<v Dillon>So we're getting like mixed signals.

00:50:06.080 --> 00:50:09.480
<v Dillon>But one of the greatest parts of this project is when we were like,

00:50:10.360 --> 00:50:12.980
<v Dillon>okay, experiment successful, replatform app is good to go.

00:50:13.080 --> 00:50:14.100
<v Dillon>We can go 100%.

00:50:14.680 --> 00:50:21.360
<v Dillon>all we had to do was flip the DNS to no longer point at the proxy and point directly to the

00:50:21.840 --> 00:50:29.100
<v Dillon>the actual like hosted next app and like I was done like all that code doesn't matter anymore

00:50:29.820 --> 00:50:34.620
<v Dillon>it doesn't get hit anymore it also like saved 500 milliseconds because I no longer have to like hit

00:50:34.780 --> 00:50:41.760
<v Dillon>that and run experiment checks and feature flag checks so it was like kind of a sweet feeling at

00:50:41.780 --> 00:50:48.380
<v Dillon>the end of that project to just be like I'd get to delete all my code that I spent two months on

00:50:49.040 --> 00:50:56.140
<v Dillon>but now the site's way faster and we and we were able to like safely test things you know so like

00:50:56.340 --> 00:51:01.860
<v Dillon>along the the way like we had issues on both sides and we were able to like flip all all to one and

00:51:01.900 --> 00:51:09.060
<v Dillon>or flip all back to the other which was like a really nice experience so learned a ton on that

00:51:09.080 --> 00:51:15.560
<v Dillon>project i feel like i could write a little mini book on like how not to how not to create a

00:51:15.940 --> 00:51:19.860
<v Dillon>proxy for next js because there's a lot of like

00:51:15.940 --> 00:51:19.860
<v Matt>you should write a blog post at least

00:51:15.940 --> 00:51:19.860
<v Dillon>there's a

00:51:19.860 --> 00:51:28.500
<v Dillon>lot of like special details you need to to like fill in to make sure that request works correctly

00:51:29.100 --> 00:51:35.760
<v Dillon>because next does some things and passes specific headers and if you like don't properly forward

00:51:35.780 --> 00:51:39.480
<v Dillon>those along, like things can go crazy and blow up.

00:51:41.040 --> 00:51:45.220
<v Matt>I feel like that's always satisfying to like reach the culmination of a project.

00:51:47.359 --> 00:51:51.820
<v Matt>And where like, yeah, I feel like we were like a bleep fair, way fair.

00:51:52.000 --> 00:51:53.960
<v Matt>We, we like worked on a number of different things where it's like,

00:51:54.620 --> 00:51:57.160
<v Matt>you kind of get to an end of thing, but then it's like, oh,

00:51:57.180 --> 00:51:58.940
<v Matt>we got to keep that code around just in case,

00:51:59.200 --> 00:52:02.020
<v Matt>or like just in case we have to flip back. And I don't know.

00:52:02.120 --> 00:52:06.800
<v Matt>It just was never really, never really had that many satisfying sort of end of project

00:52:07.140 --> 00:52:07.240
<v Matt>moments.

00:52:08.520 --> 00:52:10.420
<v Dillon>Yeah, that was like the best feelings.

00:52:11.960 --> 00:52:16.960
<v Dillon>I was basically like, hey guys, once I do this change, it's sort of a no return moment.

00:52:17.680 --> 00:52:22.660
<v Dillon>Like I can still undo it, but it's like a multi-step process.

00:52:24.020 --> 00:52:26.040
<v Dillon>And thankfully we even haven't had to do that.

00:52:26.080 --> 00:52:26.700
<v Dillon>So it's been good.

00:52:28.040 --> 00:52:28.300
<v Matt>Nice.

00:52:29.680 --> 00:52:29.740
<v Matt>Cool.

00:52:30.100 --> 00:52:30.300
<v Matt>All right.

00:52:30.420 --> 00:52:31.640
<v Matt>I think we should wrap it up there.

00:52:33.600 --> 00:52:36.440
<v Matt>as always if you enjoyed listening to this podcast

00:52:36.740 --> 00:52:39.460
<v Matt>share it with someone that doesn't currently listen to it

00:52:40.090 --> 00:52:42.620
<v Matt>or even share it with them and remind them to listen to it again

00:52:42.790 --> 00:52:44.780
<v Matt>just so we boost those stats up

00:52:45.820 --> 00:52:47.740
<v Matt>leave us a review wherever you're listening to this

00:52:48.410 --> 00:52:51.340
<v Matt>we appreciate 6 out of 5 star ratings would be great

00:52:52.480 --> 00:52:53.640
<v Matt>you can send us tips

00:52:53.790 --> 00:52:55.660
<v Matt>just send them to Scott

00:52:56.180 --> 00:52:58.640
<v Matt>and he'll worry about distribution

00:53:00.240 --> 00:53:00.340
<v Matt>yeah

00:53:01.180 --> 00:53:02.680
<v Matt>otherwise yeah appreciate everyone for listening

00:53:02.800 --> 00:53:04.740
<v Matt>and tuning in hopefully we get back into the

00:53:04.880 --> 00:53:06.640
<v Matt>groove of releasing an episode weekly

00:53:07.680 --> 00:53:08.160
<v Matt>optimistically

00:53:08.600 --> 00:53:10.400
<v Matt>I think we should carry forward some momentum

00:53:11.060 --> 00:53:12.600
<v Matt>and keep releasing these

00:53:12.800 --> 00:53:14.360
<v Dillon>at least once per quarter Matt

00:53:17.080 --> 00:53:18.860
<v Scott>I think we should continue the weekly

00:53:19.160 --> 00:53:20.740
<v Matt>set the goal low and then when we

00:53:20.960 --> 00:53:22.720
<v Matt>exceed it then we put on a performance review

00:53:24.180 --> 00:53:24.920
<v Scott>I think

00:53:24.920 --> 00:53:26.920
<v Scott>what we're going to do is try to do weekly but try

00:53:26.880 --> 00:53:34.160
<v Scott>to shorten um the 30 minute max yeah i think that works really well for us yeah

00:53:26.880 --> 00:53:34.160
<v Matt>we are coming up on

00:53:34.620 --> 00:53:39.860
<v Matt>well we're still a couple months out but we're fast approaching when we had first originally

00:53:40.280 --> 00:53:43.380
<v Matt>started to record these but then we shelved the episodes because they were pretty bad

00:53:44.040 --> 00:53:49.960
<v Matt>um so we might have to do a year like a year-end performance review episode or something when we

00:53:49.960 --> 00:53:54.920
<v Scott>get to that point and see how we've you guys want to do a um i know that we're supposed to be done

00:53:54.940 --> 00:54:01.380
<v Scott>here but do you guys want to do a year-end review where uh we talk about uh tech related things the

00:54:01.420 --> 00:54:06.360
<v Scott>best things that happen this year but also like revisit episodes of the podcast and things we said

00:54:07.340 --> 00:54:14.400
<v Matt>we should do a yeah yearly recap or something all right yeah all right all right catch you guys uh

00:54:14.640 --> 00:54:21.340
<v Matt>next week next quarter next decade to be defined next week on halloween

00:54:23.120 --> 00:54:24.700
<v Dillon>later

00:54:23.120 --> 00:54:24.700
<v Matt>peace out

00:54:23.120 --> 00:54:24.700
<v Scott>later

