Speaker 1: Hey, welcome back to another episode of JavaScript Jabber. This week,
Speaker 1: on our panel, we have Dan Shapier.
Speaker 2: Hello from still Cold tel Aviv. Cool.
Speaker 1: I just went for a walk in like thirty degree weather.
Speaker 2: So it's relatively cold. I mean it's a fifty degrees
Speaker 2: fahrenheit or so, so you know that's really cold.
Speaker 1: That's like cross what Okay, fine, all the snow hasn't melted.
Speaker 2: Here.
Speaker 1: I'm Charles Maxwood from Top End Depths and we have
Speaker 1: a special guest this week. We have Jack Harrington. Jack,
Speaker 1: it's been a while.
Speaker 3: Yeah right, wow, you know we used to do a
Speaker 3: podcast together and yeah, now've my own podcast and there
Speaker 3: you go.
Speaker 4: But it's great being here. It's so nice to see
Speaker 4: you guys again. And yeah, it's great, great to be here.
Speaker 4: And here it's weirdly very sunny. We've had a lot
Speaker 4: of rain lately where.
Speaker 3: I'm over in Portland and it's like fifty which to
Speaker 3: us is shorts weather. Right, yeah, that's like bombing.
Speaker 4: Let's go.
Speaker 1: Yeah, you can have humidity there too, so.
Speaker 3: Like crumbling my fingers and stuff.
Speaker 4: I moisturize all day.
Speaker 1: Well compared to hear it's humid. Yeah, we live in
Speaker 1: this desert anytimes. I don't know.
Speaker 4: The skiing is good, Yeah, there you go.
Speaker 1: But yeah, Dan Dan said that great react as going away?
Speaker 1: Is that right?
Speaker 2: Yeah, it's gone away. It's gone officially.
Speaker 3: Well we can still use it, but it gets a
Speaker 3: big warning about deprecations deprecated.
Speaker 1: So to me, that's going away.
Speaker 4: But oh no, it's definitely going I mean, yeah eventually.
Speaker 2: Well look things well stuff like that. I don't know,
Speaker 2: maybe one day it will be officially e weld. But
Speaker 2: from my perspective, when it's deprecated, you really shouldn't be
Speaker 2: using it for new stuff.
Speaker 1: Yeah, I agree.
Speaker 3: Yeah, there's been better alternatives for a while. But I
Speaker 3: think the big difference is that, like the problem with
Speaker 3: that they were we have is that there's a lot
Speaker 3: of old tutorials and stuff that use create react app.
Speaker 3: There's still as valid as they were back then. Now
Speaker 3: you know they're talking about like maybe you stay and
Speaker 3: basic hooks and stuff like that, and you know those
Speaker 3: are going to last for a while, and just because
Speaker 3: they use create react app in the demo doesn't like
Speaker 3: distract from that. So you know, that's kind of the
Speaker 3: problem that folks are having, which is they deprecated this
Speaker 3: thing into now learners, folks who just want to like
Speaker 3: try out stuff, you know, they what are their alternatives?
Speaker 3: And the alternatives they were given were like the next.
Speaker 2: Before we go to alternatives. Maybe it's worthwhile. I'm guessing
Speaker 2: everybody knows, probably our entire audience, but I still think
Speaker 2: it's worth while to mention what create react app was
Speaker 2: or is it still is, why it was actually needed,
Speaker 2: what it does for you.
Speaker 3: Sure, so create React ap is interesting, it won The
Speaker 3: most salient thing to me is that it creates React apps, right,
Speaker 3: and those are SPA applications.
Speaker 4: This was done in the very early days.
Speaker 3: I mean SSR was around, But this is not creating
Speaker 3: SSR applications. This is creating the kind of stuff that
Speaker 3: you'd build. You create a disc file, you put that
Speaker 3: off on S three or some CDN, and you'd have
Speaker 3: yourself a site and very simple stuff, you know, SPA
Speaker 3: single page application type stuff.
Speaker 4: And the other thing that.
Speaker 3: Interesting about create React app that I had actually forgotten
Speaker 3: was that it remains a dependency in your application. It
Speaker 3: doesn't just create the app. It actually like remains a
Speaker 3: dependency in your application.
Speaker 2: Yeah, gets injected into your package jsone.
Speaker 3: Oh yeah, and then it actually maintained like it will
Speaker 3: rev your React versions and everything like that going forward.
Speaker 3: And that was the original promise of Create React App
Speaker 3: was to give you like it was an actual platform,
Speaker 3: kind of like next JS. And the idea was you
Speaker 3: get on create React app and you can just keep
Speaker 3: reving that and you always keep up to date with React.
Speaker 3: And that kind of stumbled I don't know, like zero
Speaker 3: point or sixteen kind of that and that time.
Speaker 2: So it would literally whenever a new React version would
Speaker 2: come out, would automatically update your package Jason to use
Speaker 2: that you were version without even asking you.
Speaker 3: No, no, no, no, I mean it's it's dependencies. It
Speaker 3: would handle the React dependency for you, so you'd bump.
Speaker 2: Your I don't remember, I just I don't remember that.
Speaker 3: Yeah, that's that was what I believe it did. And
Speaker 3: that was what that was what folks were complaining about
Speaker 3: when we talked about like, oh, we we've got this
Speaker 3: drop in replacement, They're like, oh, well, are you actually
Speaker 3: replacing that that functionality in create React ap.
Speaker 4: Are you going to hand all of that? It's like, no, no, no,
Speaker 4: that we don't. They don't do that. We just make
Speaker 4: an app.
Speaker 2: It seems weird. I mean, NPM exists so that it
Speaker 2: does that stuff for you. Why would you need something
Speaker 2: else to do that for you on top of NPM.
Speaker 3: What's handling all the other things like Webpack and everything else.
Speaker 4: Oh yeah, no, I'm talking about consistencies right.
Speaker 2: No, No, I'm putting Webpack aside for a minute. I'm
Speaker 2: talking just about what you said about keeping you up
Speaker 2: to date with reacts.
Speaker 4: Yeah.
Speaker 1: I would imagine that it, you know, is things get
Speaker 1: released that it has some internal, you know, way of
Speaker 1: tracking dependencies. So it's not just React, it's all the
Speaker 1: other stuff.
Speaker 4: It's all theilary extra things.
Speaker 1: So when you update it, it's saying, we know this
Speaker 1: stuff plays nice together, and so it updates everything.
Speaker 2: Oh okay, yeah yeah, Still what seemed to be stuff
Speaker 2: that should be handled via the package manager rather than
Speaker 2: something ideally Yeah.
Speaker 3: Yeah, And I think that that's where it kind of like,
Speaker 3: that's I mean, this thing came out like a decade ago,
Speaker 3: and I think back then they were trying to compete
Speaker 3: against an Angular and Angular was starting to have that
Speaker 3: cl I, and the cl I was doing that kind
Speaker 3: of thing where it's taking care of all that that
Speaker 3: funky business for you.
Speaker 1: So it did a lot of other things for you too.
Speaker 3: But yeah, yeah, so this is a nice way, you know,
Speaker 3: for them to like kind of compete against that. But
Speaker 3: in the modern context, nobody, I mean, at least for me.
Speaker 3: I mean, nobody wants that. Everybody just wants to maintain
Speaker 3: their own package of stuff and do the reving themselves
Speaker 3: and have granio control over it.
Speaker 2: I always thought that it was primarily about getting the
Speaker 2: Webpex stuff right, that, you know, getting properly configuring webpack.
Speaker 4: Oh my god.
Speaker 2: Yeah, yeah, that's.
Speaker 3: Not trivial, right, And when you eject, well, that's the thing, right,
Speaker 3: there's this whole thing about ejecting from create react ap
Speaker 3: and so why do you need to eject from create
Speaker 3: react app unless it's actively maintaining stuff for you. Well,
Speaker 3: you know what you do when you eject from create
Speaker 3: react ap is it actually gives you access to all
Speaker 3: of the stuff that it's maintaining, including like the webpack
Speaker 3: and fig and everything else.
Speaker 4: And if you look at the whypack and fig, it's
Speaker 4: it's shockingly complex. It was, it was huge. It's crazy.
Speaker 1: I quit having nightmares about webpath and now you're bringing
Speaker 1: it back.
Speaker 2: So basically, we had this command line tool that people
Speaker 2: who wanted to start playing around with React and maybe
Speaker 2: didn't have a lot of experience in single page applications
Speaker 2: either way, Yeah, could get up to speed, and as
Speaker 2: you said, it would configure the bundling for you, that
Speaker 2: is webpack, It would download the necessary stuff. It might
Speaker 2: even keep you up to date on some of the things,
Speaker 2: and it would create a simple project for you. To
Speaker 2: be honest, it's been a very long time since I've
Speaker 2: actually used create and React ap myself. Most of the
Speaker 2: projects that I've been working on did that a while ago.
Speaker 4: Right, yeah, exactly. Yeah, but it was funny.
Speaker 3: I saw it again for the first time and I
Speaker 3: was like, oh, I remember this, the spinning React logo.
Speaker 4: On the homepage. You know, wow, that's what that was.
Speaker 3: And yeah, so we did kind of a riff on
Speaker 3: that when when we did our thing.
Speaker 2: Okay, so talking about your thing, so we said that
Speaker 2: it's going away.
Speaker 1: I guess here, I'm gonna pop a comment that somebody
Speaker 1: threw our way, he says the professor. His professor still
Speaker 1: uses create React app for teaching React, and he suggested
Speaker 1: vite And it sounds like you've got some other idea
Speaker 1: of what to.
Speaker 4: Do no, I agree.
Speaker 2: Actually, be honest, before we go there, I have to
Speaker 2: say that I'm kind of shocked that a professor teaches
Speaker 2: react really.
Speaker 3: I mean a couple of years ago, I wouldn't I
Speaker 3: would be shocked, But nowadays, like I my kid just
Speaker 3: went through Oregon State and yeah that the web the
Speaker 3: courses were has some you know, kind of recent stuff,
Speaker 3: and I think there was an actual course on web
Speaker 3: development in particular.
Speaker 4: And yeah, sure they react yeah money man, practical skills.
Speaker 1: In high school, we're doing web development. But I think
Speaker 1: they were teaching him just the general web APIs for JavaScript.
Speaker 4: That's a good idea.
Speaker 2: It's just the universities tend to be elitist in these
Speaker 2: sort of things, Ivory Tower and whatnot. And it's not
Speaker 2: about the practical skills. It's about expanding your mind. So
Speaker 2: they teach you Java. Yeah, because that expands your mind.
Speaker 1: When I went to college.
Speaker 2: I won't tell you what they talked when I went
Speaker 2: to university. Yeah. Anyway, we digress, Uh, going back to
Speaker 2: the topic at hand. So, like that commenter stated, isn't
Speaker 2: vat kind of a replacement for create react up these days?
Speaker 2: What's missing? Uh?
Speaker 4: Okay?
Speaker 3: So, as an educator, I think every little bump in
Speaker 3: the road from what I'm seeing in my tutorial versus
Speaker 3: what I'm actually like.
Speaker 4: Getting as as part of the setup is a problem.
Speaker 3: And because I'm seeing people people would say, oh, you know,
Speaker 3: your tutorial says change this one line and this one
Speaker 3: line is different from what I expect because it's now
Speaker 3: I do my great React app or whatever, and I
Speaker 3: get something else. Right, And so when I'm thinking about
Speaker 3: folks who are going to take those tutorials and would
Speaker 3: normally be doing, like create React app. If you say them, cool,
Speaker 3: just use VAT. Well one, what VAT command do you use?
Speaker 3: Because there, if you just run VAT, you'll actually create
Speaker 3: vat app or whatever it is you'll get, like I think,
Speaker 3: I don't even know if there is a default, but
Speaker 3: the defaults probably view and so you need to like
Speaker 3: specify a template and the temple would be React or
Speaker 3: React tosh ts and that will give you React or
Speaker 3: React typescript. And then once you get the app, I'm
Speaker 3: pretty sure the files are in different locations. Certainly the
Speaker 3: content is entirely different. And now, as a as a
Speaker 3: potential learner, right, I've got this huge disparity between where
Speaker 3: the tutorial is and where this this VAT app that
Speaker 3: I just created is. It looks like an entirely different thing,
Speaker 3: you know, And it only gets worse if you look
Speaker 3: at next jas because now next jas it's like it's
Speaker 3: not even really a SPA anymore. It's now an actual
Speaker 3: like SSR app and that's a whole thing.
Speaker 2: Yeah, it's a SPA.
Speaker 4: It's not though.
Speaker 3: I mean, you've got to use used client one and
Speaker 3: that's been in an old school tutorial.
Speaker 4: It's not going to tell you to do that.
Speaker 3: And even if you do use use client, well, it's
Speaker 3: going to render on both the server and the client,
Speaker 3: and so you're going to need to do stuff like
Speaker 3: checking against window and document and all the rest.
Speaker 2: It's a yeah, no, I agree, I was just nitpeaking.
Speaker 2: It's still a spot, it's not a it's not client rendered,
Speaker 2: it's not the side.
Speaker 4: Yeah.
Speaker 2: So so it's still a single page application because at
Speaker 2: the end of the day, even with the with next jays,
Speaker 2: you can, I guess, kind of make a multi page
Speaker 2: application out of next Gas, but it's not really meant
Speaker 2: for that. It's meant for single page applications. But it
Speaker 2: definitely involves a server yeah.
Speaker 3: By the way, and actually you can build next jas fairly,
Speaker 3: and you can build next jays and build it.
Speaker 4: To static and all that and that.
Speaker 3: In fact, it actually if you don't make any request
Speaker 3: to get service side props or in the app rout
Speaker 3: or if you don't make any fetches or any of
Speaker 3: that or do anything dynamic, it will actually just build
Speaker 3: you a static app.
Speaker 2: Right. So so yeah, we actually had Rob Lee from
Speaker 2: Versaill on Monday, Yeah Gus on the show, and I
Speaker 2: literally asked him, like, you know, creat react app is
Speaker 2: going away, what's in what's your answer when people don't
Speaker 2: want like the full stack experience? And he basically said,
Speaker 2: what you said, that you that that server that reacts
Speaker 2: server components can actually execute a bill time and then
Speaker 2: you can take the output of that build and deploy
Speaker 2: it to let's say an S free bucket and have
Speaker 2: it sthetically served that way. I'd be really surprised though,
Speaker 2: if if people are really using that style of set
Speaker 2: up in Anger with with next gs, I'd be I'd
Speaker 2: be really surprised. I mean, if you're buying into next JS,
Speaker 2: you're going to actually use the next JS way, I guess.
Speaker 3: Yeah, you're probably there for SSR to some degree more
Speaker 3: or less. I mean the cool thing with with the
Speaker 3: app writer, and I'm not dissing the app writer. I
Speaker 3: mean the ap riightter is an amazing piece of work.
Speaker 3: And I've got course on the app writer and it's
Speaker 3: it's incredible, right, But there's all kinds of options around it.
Speaker 3: You know, components can be dynamic, can be you know, static,
Speaker 3: and it can define route by route what's going to
Speaker 3: be static when it's going to be dynamic. And it
Speaker 3: is it's an amazing piece of work. But if you
Speaker 3: are somebody who's just trying to like learn React or
Speaker 3: just put together a SPA, like, it's a lot of
Speaker 3: stuff that's entirely different from what you've experienced in the past.
Speaker 3: Building out a SPA like it did.
Speaker 1: Yeah, it's crazy. I think I think a lot of
Speaker 1: this is is kind of where people are looking, right,
Speaker 1: because I think in a lot of cases, yeah, people
Speaker 1: are so as an experienced developer, right, Yeah, if I'm
Speaker 1: going to go and build something mission critical, yeah, I'm
Speaker 1: going to go evaluate and am I going to use next?
Speaker 1: Am I going to use this? Am I going to
Speaker 1: use that? Right? You know? Before just create React app,
Speaker 1: get me where I want to go or not. But
Speaker 1: for I think a lot of people where they're just
Speaker 1: trying to learn React or trying to pick something up,
Speaker 1: or you know, hey, I just want to build a
Speaker 1: web app. What they do is they go to their
Speaker 1: friend who looks like me, and they say what do
Speaker 1: I use? And so if I'm the guy that really
Speaker 1: likes next Jas, then I'm going to tell him to
Speaker 1: go pick that up because it's great and I love
Speaker 1: it and it does all the things. And so I
Speaker 1: think that's where the conversation is, is what are the
Speaker 1: trade offs now between picking next jas or something else.
Speaker 2: There's another point, so I'll give I've been talking to
Speaker 2: various people who are building organizational applications, and these are
Speaker 2: applications that don't get ranked because they are either wholly
Speaker 2: internal or maybe they are external, but they're behind some
Speaker 2: authentication so they're not scanned by Google. Now, if you're
Speaker 2: building a website that needs to rank, that needs to
Speaker 2: be indexed, you're going to need SSR. But for a
Speaker 2: lot of these internal applications, the guys working on the
Speaker 2: React stuff, they don't work, they don't necessarily do anything
Speaker 2: on the back end. They're connecting directly to RESTful end
Speaker 2: points implemented in Go or Java or whatever, and they're
Speaker 2: just building the front end and they don't care about
Speaker 2: SSR because it's, like I said, it's not that type
Speaker 2: of an application, and for them, next jes seems very
Speaker 2: much like overkill.
Speaker 3: Yeah, I'm writting down a note to myself because I
Speaker 3: just had an interesting ques A question this morning about
Speaker 3: using tan Sac start without SSR.
Speaker 2: Actually that's the interesting point. So when we had Tanner
Speaker 2: on the show and we had him as the first
Speaker 2: guest this year back in January, I literally asked him
Speaker 2: about that and what he conveyed to me or the
Speaker 2: way that I understood it that one of the biggest
Speaker 2: selling points of ten stack start versus next JS is
Speaker 2: that next JS is back end first. Everything starts on
Speaker 2: the back end and then some of the stuff happens
Speaker 2: on the front end, and ten stack Start, even though
Speaker 2: it supports that full stack configuration, the whole mindset is
Speaker 2: front end first, and you can reach out to the
Speaker 2: back end to get stuff to do stuff, but the
Speaker 2: but the architecture is first and foremost on the front end.
Speaker 2: So with a ten stack start, you might start with
Speaker 2: a totally front end type of application and then say, hey,
Speaker 2: I actually think I need to do some of the
Speaker 2: stuff on the back end, and then you can add
Speaker 2: that capability into that into the application. Whereas with next gys,
Speaker 2: that's where you start pun nothing.
Speaker 3: It's worse when you bring like solid starts. They but yeah,
Speaker 3: I know you mean. And the interesting thing was, so
Speaker 3: this guy was saying exactly that, but he was saying,
Speaker 3: I don't even need SSR. All I want from start
Speaker 3: is just API routes and server functions because I want
Speaker 3: to have my essentially my BFF. Right, you're saying you're
Speaker 3: connecting to go, Well, what if those things don't have cores? Right,
Speaker 3: You're gonna need some sort of BFF to go between
Speaker 3: your your UI and your your GO services on the
Speaker 3: back end, or clean up whatever. We've all done that
Speaker 3: sort of thing. It's basically middleware, right exactly. And so
Speaker 3: he wants the middleware ability but doesn't want SSR, which
Speaker 3: I thought was an interesting variant. So I gotta go
Speaker 3: check with the guys and see if there's some way.
Speaker 4: To like, you know, SSR falls.
Speaker 2: According to Tanner, that should be the basic approach. So
Speaker 2: for example, talking about and we're kind of digressing off
Speaker 2: of the original topic, but interesting so the way that
Speaker 2: so their their outlook or view on how to work
Speaker 2: with React server components. So for next thing, yes, everything
Speaker 2: starts at the React server component and the props flow
Speaker 2: down from their server, so the rendering always starts on
Speaker 2: the server and then at a certain point in time
Speaker 2: switches over to the client. What Tenner explained is that
Speaker 2: in his approach, you invoke server functions. The server functions
Speaker 2: can respond with some data which you render on the client,
Speaker 2: or they can actually respond with virtual dam with JSX
Speaker 2: as it were, and then that gets directly rendered.
Speaker 3: So as the approach is not I don't think one
Speaker 3: that I was going to have that, but it's going
Speaker 3: to be a fast hopefully a fast follow up to
Speaker 3: like a one point one where you can return our
Speaker 3: basically r sse uh and then you've got like something
Speaker 3: on the client to basically allows you to say, cool,
Speaker 3: I got an RC payload and then convert that into
Speaker 3: VIDAM just drop that in and that's really really cool.
Speaker 3: And I think that's actually like an interesting alternative to
Speaker 3: the next JAS model, and I believe that's what remix
Speaker 3: is going to do. At least that's what they demonstrated.
Speaker 2: Reactn Tanner indicated that he and the remix guys had
Speaker 2: similar a similar, apparently a similar take on how to
Speaker 2: do these things. Yeah, yeah, it'll be interesting to say.
Speaker 2: But going back to the topic at hand, So we
Speaker 2: so we were talking about the fact that you can
Speaker 2: use next gs as a replacement for Create React app.
Speaker 2: I'm just going to say CRA because yeah, you can't
Speaker 2: use next js as a replacement for CRA, but you
Speaker 2: probably won't, and that there are a lot of organs
Speaker 2: you're going to use next gs as a next GS yeah, uh,
Speaker 2: and which is fine, but you know, and that there
Speaker 2: are a lot of organizations and so first of all,
Speaker 2: and there are a lot of people for whom they
Speaker 2: just want to play with React and for them, next
Speaker 2: gs is too much, too soon. And there are a
Speaker 2: lot of organizations that just want to build a client
Speaker 2: rendered application, and for them, a full stack type of
Speaker 2: a framework is beyond an overkill. It's it's it's a
Speaker 2: it's detrimental to their needs. Yeah, they don't want to
Speaker 2: do stuff on the back end. They just want the
Speaker 2: JavaScript developers to do stuff on the front end.
Speaker 3: Yeah, And because if I'm here's a concrete example, if
Speaker 3: I'm building like a dashboard and I find some you know,
Speaker 3: I'm getting asked by product to put up some really
Speaker 3: cool graph and the only thing that I can find
Speaker 3: is this one obscure library that does this graph.
Speaker 4: And I'm like, yeah, great, awesome, right.
Speaker 3: And I drop it in my app in vat land
Speaker 3: or in create React app land. That's probably going to
Speaker 3: work hundred percent of the time. It's gonna it's gonna
Speaker 3: drop in there just fine. But if you drop that
Speaker 3: into a next app, and I've seen this quite a bit, actually,
Speaker 3: those kind of libraries might invoke or might hit document
Speaker 3: or window unconditionally as part of their setup, and those bang,
Speaker 3: those blow up an SSR because there's no document, there's
Speaker 3: no window on the server.
Speaker 4: And so now I've.
Speaker 3: Got this awesome thing that I can use, except that
Speaker 3: I can't because I'm a next JAS But I'm not
Speaker 3: using any of the features of next jas anyway, right,
Speaker 3: and so I any end up doing that lazy imports
Speaker 3: or craziness or whatever, or hacking your package.
Speaker 2: Or yeah, you can't assume just to say, you can't
Speaker 2: assume that the third party React up library supports SSR, right,
Speaker 2: you cannot assume.
Speaker 4: That even in twenty twenty five.
Speaker 1: Yes, true, So so I is, And I'm going to
Speaker 1: pull up another comment by our friend Burrott here who's
Speaker 1: on the live stream.
Speaker 2: But.
Speaker 1: He's saying, so, yeah, back end teams create the s
Speaker 1: APIs the front end and mobile, you know, so they
Speaker 1: don't want to deal with the server stuff, which makes sense.
Speaker 1: But is so is that the essential of what we're
Speaker 1: talking about here is whether or not people want to
Speaker 1: worry about SSR or deal with SSR or deal with
Speaker 1: the server on the back end. Is that the flexibility
Speaker 1: you lose with next JAS that you might get with
Speaker 1: something else.
Speaker 4: Well, next Das is going to push you to the
Speaker 4: ext to the end end game right away, which is here,
Speaker 4: you're going to do SSR, You're gonna have server functions,
Speaker 4: You're gonna have API stuff, even if you don't need
Speaker 4: or want them, you're going to have them, and you're
Speaker 4: going to have to play in a compatible you know,
Speaker 4: sandbox because of those decisions that we made. Whereas the
Speaker 4: unless a hard shift to.
Speaker 3: Tan stack here, So tan stack actually has a much
Speaker 3: smoother migration from going a full on just spa app
Speaker 3: that has a router in it. So you can have
Speaker 3: multiple pages, milk pages or routes whatever to a file
Speaker 3: based writer where you define those by file names and
Speaker 3: it gets a lot easier. And then into start where
Speaker 3: you can start to add API requests and AAPI endpoints
Speaker 3: and server functions, so you can actually kind of as
Speaker 3: you as your application grows up and starts to need
Speaker 3: that stuff, then you can start to bring those things in.
Speaker 3: And if and if we can disable SSR, it's even
Speaker 3: it's an even smoother ramp because you can still have
Speaker 3: those kind of funky libraries and stuff, but now you
Speaker 3: can also still have a p I, n points and
Speaker 3: server functions if you need to have those.
Speaker 4: So yeah, so, and I'll.
Speaker 2: Say it again. If you're building an e commerce website,
Speaker 2: you you must have SSR, yeah, because otherwise you won't
Speaker 2: rank well, you won't perform well, and overall it'll be
Speaker 2: a bad experience for everybody all around, your users, yourself
Speaker 2: and whatnot. If, on the other hand, you're building a
Speaker 2: dashboard in front that that say even requires authentication, and
Speaker 2: it's in front of all several back end services, there's
Speaker 2: a good chance that you just don't need a CISAR.
Speaker 2: You don't want a star a SESAR will just make
Speaker 2: your life harder and get in the way.
Speaker 4: Yeah, exactly.
Speaker 2: So and with next yes, you kind of don't have
Speaker 2: a choice. You can't just saw whether you like it
Speaker 2: or not.
Speaker 4: Yeah, exactly.
Speaker 3: And here, like I was working at Nike for a
Speaker 3: long time or three years, and yeah, our front end
Speaker 3: teams they all use next JAS. It was all SSR,
Speaker 3: and then our the teams would manage the CMS stuff,
Speaker 3: which we all we drove the whole product catalog as
Speaker 3: a content management system.
Speaker 1: Right, those are all one.
Speaker 3: Hundreds and SPA hundreds and SPA you know, all the authors, SPA,
Speaker 3: all the all clients side requests, they went through their
Speaker 3: own little BFF.
Speaker 1: But yeah, so just to clarify because I'm liking kind
Speaker 1: of the incremental Yeah, they we're going to add this feature.
Speaker 1: We're going to add that feature, you know, right, And
Speaker 1: so yeah, if you would never get to the place
Speaker 1: where I have to have SSR, right, it's not public
Speaker 1: on the web, it's not going to get indexed by Google,
Speaker 1: right then, Yeah, it's nice to have the option, But
Speaker 1: it also seems to me that if I'm starting a
Speaker 1: new application, a lot of times I don't want all
Speaker 1: of the bells and whistles in there. I want to
Speaker 1: just kind of explore and figure these things out, and
Speaker 1: then what you're saying is, then I can turn around
Speaker 1: and say, Okay, I know that this app does need SSR, right,
Speaker 1: it is going to be public facing. You know, maybe
Speaker 1: it backs up onto Shopify if you're doing e commerce,
Speaker 1: or it backs up onto and I've seen people do
Speaker 1: this right, or it backs up onto some headless cms, right.
Speaker 1: But I'm thinking, you know, I do need some of
Speaker 1: these other features. Then I can pull those in once
Speaker 1: I've kind of gotten the shape of the app figured out,
Speaker 1: and I can approach it from that end without complicating
Speaker 1: it with all the other things that, yes, something eventually need,
Speaker 1: but right today, I just need to figure out what
Speaker 1: this thing even looks like.
Speaker 3: Yeah, exactly, Yeah, totally yeah, And that's that's what we're
Speaker 3: trying to do with this create ts Router app. So
Speaker 3: we were saying to folks, cool, you know cra is
Speaker 3: now deprecated, and literally you know, that was on Friday
Speaker 3: from the team, and then on Monday we dropped this
Speaker 3: create ts rider app. And the idea is it'll give
Speaker 3: you exactly the same content in the exact same locations,
Speaker 3: except that it's built on top of VAT and tan
Speaker 3: sac router, so off out of the shelf you get
Speaker 3: a router built in, which is what a lot of
Speaker 3: people want to add almost right away to their application.
Speaker 2: So basically it's compatible with create React app in the
Speaker 2: sense that it's a CLI tool that it doesn't require
Speaker 2: anything on the back end. What's just totally front end.
Speaker 2: I think even much of the command line options and
Speaker 2: switches are the same.
Speaker 4: As exactly the same yep.
Speaker 2: Yeah, And it creates the essentially the same or very
Speaker 2: similar or as close as possible, the same file structure.
Speaker 3: Yeah, exactly exactly like the app like app dot jsx
Speaker 3: file that they tell you or app dot tsx file
Speaker 3: isn't exactly the same location. It has exactly the same contents.
Speaker 3: It just happens to be like the main. There's also
Speaker 3: like so the source app, which is your your component,
Speaker 3: and then there's source main, which in the original CRA
Speaker 3: was basically a little thing that did the you know,
Speaker 3: the render root and all that stuff. This one just
Speaker 3: adds in tansack rider into that and then makes that
Speaker 3: the app your home route.
Speaker 4: Yeah.
Speaker 2: And uh, also, instead of being built on top of
Speaker 2: what packet's built on top of VAT because we are
Speaker 2: in twenty twenty five.
Speaker 4: Right exactly, no more nightmares.
Speaker 3: Yeah, and everybody literally like that was a lot of
Speaker 3: the reaction to all the stuff that happened with the
Speaker 3: deprecation of Cray and then the follow up blog and
Speaker 3: the blog, and then also the documentation that basically says,
Speaker 3: you know, it kind of alludes to like you can
Speaker 3: use VT, but our recommended thing is you use a framework,
Speaker 3: and the frameworks include next Day, Yes and Remax.
Speaker 4: But I really felt bad.
Speaker 3: I knew that, like there would be a massive pain
Speaker 3: point here for folks that were trying to learn or
Speaker 3: just expecting that, you know, their workflow was, Hey, I'm
Speaker 3: going to spin up a SPA. I'm going to use
Speaker 3: create React app. I no, it's not the greatest, but
Speaker 3: like it works for me. I need a replacement and that.
Speaker 3: And there was nobody who is coming out with a
Speaker 3: replacement like that, and so I was like, cool, let's
Speaker 3: deal it with es Rader because it's.
Speaker 2: A good thing. We literally had this exact situation where
Speaker 2: I work. We were starting a new relatively small project
Speaker 2: React project that had these essential requirements, and I literally
Speaker 2: and I kind of told them, hey, you know, these
Speaker 2: are the technologies you need to use. You need to use, VT,
Speaker 2: you need to use and so forth. And I literally
Speaker 2: came to them and said, hey, there's this new tool
Speaker 2: that dropped. It's called create ts Router app CTA.
Speaker 4: Use that called action.
Speaker 2: Yeah, and literally, and you know why messed around because
Speaker 2: they were doing VAT directly and they ran into all
Speaker 2: sorts of issues. And of course they immediately ran into
Speaker 2: the problem of of hey, which router are we going
Speaker 2: to use and how are we going to configure it
Speaker 2: and whatnot. So I said, hey, you know, just use this.
Speaker 3: Yeah, so right away we supported multiple ways you could
Speaker 3: do routing. So there with CRA, you have this like
Speaker 3: you give it the name of the app that you want,
Speaker 3: you know, app, my app, my dash app order, and
Speaker 3: then you can optually give it a template and that
Speaker 3: temple would be either would generally be typescript that will
Speaker 3: give you the typescript flavor of CR And so what
Speaker 3: we did with CTA is we have it so a
Speaker 3: template you could say typescript and get exactly the same
Speaker 3: kind of deal. But you can also do template as
Speaker 3: file router, and we would give you a typescript app
Speaker 3: same thing, but defined using routes with a file router,
Speaker 3: So if you wanted to start moving towards a file
Speaker 3: routing setup, this is just a really nice segue into that.
Speaker 2: So the file router basically means that the router automatically
Speaker 2: matches your directory structure in terms of the pages that
Speaker 2: you're using.
Speaker 3: Right exactly, you get like a sourcelash slash sorts slash
Speaker 3: source slash routes, and then within that all the files
Speaker 3: and directories define the structure of your URLs, and different
Speaker 3: routers do it different ways. You know, next JS has
Speaker 3: their syntax for it. It varies between pages, Rider, nap Writer,
Speaker 3: Remax has like, I don't know, like three different ways
Speaker 3: you can do it, and TS writer has a couple
Speaker 3: of a couple of flavors, but they're they're fairly similar.
Speaker 2: So for those of our listeners who don't know, again,
Speaker 2: I highly recommend listening to our episode that we did
Speaker 2: with Tenor Lindsley at the beginning of the year where
Speaker 2: we talked that length about TS router and why it's
Speaker 2: so great. The thing that makes it so great is
Speaker 2: that it's type safe, yes, which means at the simplest
Speaker 2: level means that if you put in a wrong route,
Speaker 2: you'll get the reds quickly, yeah, telling you that, and
Speaker 2: you'll get automatic completion for routes and it just works
Speaker 2: and taking it to the next stage. It also gives
Speaker 2: you type safe URL parameters or querry parameters, so you
Speaker 2: can actually store states safely in the URL itself, which
Speaker 2: is I think awesome because that means you can actually
Speaker 2: copy the URL and send it to somebody and they
Speaker 2: will be in the same place in the app. That
Speaker 2: you don't just share the app, you share your state
Speaker 2: in the app, which is super useful.
Speaker 3: Yeah, And so one of the really really in kind
Speaker 3: of building on that, last week we released a tan
Speaker 3: sac rider for Solid that exactly yeah, exactly the same
Speaker 3: API surface between the two. Uh you know solidifide I guess,
Speaker 3: so I guess. And then this this week we actually
Speaker 3: released a CLI update, so create cus Rider app got better.
Speaker 3: So now you can actually give it framework Solid as
Speaker 3: part of the command line and it it'll actually build
Speaker 3: a Solid app with exactly the same contacts, except with
Speaker 3: a spinning React logo. It's now a spinning Solid logo,
Speaker 3: but pretty much the same thing. And then it also
Speaker 3: has two other really cool new features, ones called add
Speaker 3: ons that will allow you to add on things like
Speaker 3: centry and clerk and tan stack state to our store
Speaker 3: to manage the state management tandstack query everybody's favorite, React Query,
Speaker 3: a bunch of integrations which is really cool, and then
Speaker 3: also some really cool and a cool AI feature.
Speaker 2: By the way, I don't know if you do this
Speaker 2: or not, but you should when you give the people,
Speaker 2: when you give developers the option to install ten Sta
Speaker 2: query in parentheses, you should probably say React query because
Speaker 2: that's the way a lot of people still know it.
Speaker 4: Yeah, I know.
Speaker 3: Actually, like as a description when you're when you're going
Speaker 3: through the kind of there's you can either go uya
Speaker 3: the command line or you can just kind of just
Speaker 3: get it like a full on like experience or that
Speaker 3: we prompt you for the name and all that, and
Speaker 3: when you kind of glide over it in that section,
Speaker 3: it actually says, you know, it's reacting, it's rec query,
Speaker 3: So I.
Speaker 4: Know what you mean.
Speaker 3: Though it's weird things like tanzac query, but it makes
Speaker 3: more sense as you start to think about what Tanzak
Speaker 3: is trying to do, which is to have like a
Speaker 3: cross platform set of libraries that work across like react
Speaker 3: and solid and view and all that.
Speaker 4: It makes more sense to them for sure.
Speaker 2: By the way, you should add another option right now,
Speaker 2: which is react scan.
Speaker 3: I think, I know, I know, I was gonna I
Speaker 3: was gonna do a fast follow this morning and that reacts.
Speaker 4: It's really cool. Aiden's doing something aid.
Speaker 2: On the show recently as well. Yeah, if we're having
Speaker 2: all the cool people on the show, and we really
Speaker 2: need to get Ryan Carniato on the show again.
Speaker 1: Oh yeah, I need to get Ryan back for sure.
Speaker 2: I've been speaking with him. He's kind of busy, but
Speaker 2: I'm sure we'll find a way.
Speaker 3: I gotta say, we're getting a little bit of a
Speaker 3: PNW brain trust up here, got Aiden, you know, starting
Speaker 3: to get.
Speaker 4: Some some cool folks coming up with the PNW.
Speaker 1: Yeah right. Ryan's always busy, but he's always such a
Speaker 1: delight just to talk to.
Speaker 3: Oh my god, he knows everything like here't like gone
Speaker 3: into like every single framework, understands like in detail.
Speaker 2: Yeah, oh yeah, mister he's the CEO of Signals and
Speaker 2: mister Frameworks.
Speaker 1: Yeah. I did want to kind of ask about with create,
Speaker 1: tan Stack or ts router app man, I'm going to
Speaker 1: trip over that every time I.
Speaker 4: Say, I know, wish we could get that create tansec app, right.
Speaker 1: But so so just kind of walk me through. Okay,
Speaker 1: you know, looking at stuff, I decide this is what
Speaker 1: I want to use, Like, well, what's the experience it's
Speaker 1: like as I build my app? Right, So I just
Speaker 1: use the command line to to create the app and
Speaker 1: then you know, I advance. What does that look like?
Speaker 3: Yeah, so the command line at this point is a
Speaker 3: straight just builder, and then it's passive.
Speaker 4: It's gone.
Speaker 3: You know, you're you're on your own at that point
Speaker 3: to add new stuff if you haven't. So that's why
Speaker 3: I kind of added that ad on stuff is we
Speaker 3: wanted to just make it really easy to just like
Speaker 3: set if you're in a new shad CN for example, right,
Speaker 3: so many people want to do that. I just wanted
Speaker 3: to add an ability to say, hey, I want chatsy
Speaker 3: in and an automatically installs tail end automatically installs chatsy
Speaker 3: in and gets you up and running.
Speaker 2: And which you also need to say which set chatsand
Speaker 2: components you want to use?
Speaker 3: You do that later, you'd say, you know, and you
Speaker 3: use their CLI to add components. But the app that
Speaker 3: you create is compatible with their their gotcha, although it
Speaker 3: is the Canary build because the appzon Tailwind v four
Speaker 3: and only the Canary build of Shatsien is U currently
Speaker 3: supporting that.
Speaker 1: Yeah, that's another person we need to get on, and
Speaker 1: is we need to get what's his name from?
Speaker 4: Oh that?
Speaker 3: Oh yeah yeah yeah yeah yeah right. I feel bad
Speaker 3: I'm forgetting this is real fun. I talk with him
Speaker 3: over at rayt Comf's he's a hoot.
Speaker 1: Yeah yeah, but uh yeah so so so literally I
Speaker 1: it it kind of auto rejects you to use the parlor.
Speaker 3: Yeah yeahct A lot of a lot of folks are like, oh,
Speaker 3: it's by default ejected.
Speaker 4: I'm like yes, yes, so so.
Speaker 1: Then I decide I want these other things, right, So
Speaker 1: it's like I didn't put in tense dea query now
Speaker 1: and so now I want it. It's pretty easy to
Speaker 1: just add in and it just is happy.
Speaker 4: Yeah.
Speaker 3: I mean you could if you wanted to just see
Speaker 3: kind of how it's done, Like you can go and
Speaker 3: spin up another app and another dripory and add that
Speaker 3: in and be like, oh, okay, I see where it's
Speaker 3: It's basically two files. And then what we do is
Speaker 3: this is actually kind of it was driven my knee really.
Speaker 3: But when we install something like React sorry with reactquer
Speaker 3: or tanse querier, however we want to say it certainly,
Speaker 3: we do the INFRASTARFF, which is to go and build
Speaker 3: a provider, build a client, and then put the provider
Speaker 3: on it. But we also build a demo page so
Speaker 3: you can see how it's used in either you know,
Speaker 3: React or Solid. But everything that we do that's a demo.
Speaker 3: Anything will go and put demo in the file name
Speaker 3: and that way. Later on if you're just like, hey,
Speaker 3: I would just want to sweep it out of my
Speaker 3: app because I don't need that, then you can just
Speaker 3: literally like do a fine demo star x r XRM
Speaker 3: and it's gone, and you know you could you have
Speaker 3: to like, you know, change it to the routes are
Speaker 3: you know, like header just room from a head or two.
Speaker 3: But it's very very clean. I want to make sure
Speaker 3: that like as we added like boilerplate code in it
Speaker 3: was it was identified solidly as like this is boilerplate.
Speaker 2: Oh yeah, that's that's awesome.
Speaker 4: Yeah.
Speaker 3: I hate it when boiler plates are like the kind
Speaker 3: of integrated all over the place and it's like the mass.
Speaker 2: By the way, one more point about ten stack router.
Speaker 2: I believe that in most cases you will want to
Speaker 2: use the file bass file based routing. Is that correct?
Speaker 3: Yeah, it does auto splitting of bundle splitting, so that's
Speaker 3: a nice advantage right there.
Speaker 2: So unless you have a good reason, that's the way
Speaker 2: that you should probably want to go.
Speaker 4: Yeah.
Speaker 3: Cool, it's not the default because of the CRA connection,
Speaker 3: and that's wanting to like really give you that CRA
Speaker 3: experience out of the box. But I would strongly recommend
Speaker 3: starting with a fire Runner. But it's not a hard
Speaker 3: migration literally it is, you know, it's a couple of
Speaker 3: lines that can fig and then just moving some files around.
Speaker 2: Yeah, but why not start the right place? Yah?
Speaker 4: Yeah, for sure.
Speaker 3: But I'm just saying, like, it's not like you're stuck
Speaker 3: if you if you create like a code runner app,
Speaker 3: you're not stuck at that. You can you can actually
Speaker 3: work your way up the chain, which is not going
Speaker 3: back to that jazz thying. That is not an option there.
Speaker 3: It's like you kind of you start at the end
Speaker 3: and to start the most most advanced setup for sure.
Speaker 1: So one thing I'm wondering is it seems like you know,
Speaker 1: you're talking about it like you're contributing to create a
Speaker 1: ct I'm just going to say CTA, and then I
Speaker 1: market lost. You know, you're you're contributing to CTA. You're
Speaker 1: pretty involved. You know, you've got some courses. So what's
Speaker 1: your relationship with with tan Stack? Are you working for
Speaker 1: them or you just a fanboy or you know, I
Speaker 1: contribute to whatever or yeah, I'm just curious, like where
Speaker 1: where do you land here?
Speaker 3: It was a new Year's resolution of mind to get
Speaker 3: more intimately involved in open source. Like I was noticing
Speaker 3: as I was going from a conference conference and you
Speaker 3: kind of get like the influencer folks and the talkers,
Speaker 3: and then there was the OSS folks, and I'm like,
Speaker 3: I kind of groove vibe more with the SS folks
Speaker 3: and I want to be part of a project like that.
Speaker 3: And the one the project that spoke to me was
Speaker 3: was tan Stack. So I started, I guess, yeah, really
Speaker 3: just in beginning of the month, it'd be kind of like, hey, Tanner,
Speaker 3: you know, can I can I contribute on this? And
Speaker 3: He's like cool, yeah, you know, we got some docs.
Speaker 3: So I went through the docks and all that, and
Speaker 3: then it really picked up when on I Guess Friday
Speaker 3: a couple of weeks ago, I was like, Okay, we
Speaker 3: need a replacement for a CRA that gives you a
Speaker 3: CRA style experience.
Speaker 4: And I pitched it to Tanner and I'm like he's like, okay, yeah,
Speaker 4: build it.
Speaker 3: And so literally I built it in like one dot
Speaker 3: O or it was zero dot one in like three
Speaker 3: hours and then he's like, that's awesome, let's go and
Speaker 3: and that that's it. I mean basically I was working
Speaker 3: on it pretty much almost full time last week, which
Speaker 3: is probably not great because I don't really get paid
Speaker 3: all that much. But yeah, like adding the it was
Speaker 3: really fun. Adding in that add on stuff, the AI integration,
Speaker 3: that was really fun.
Speaker 4: You know, our kids out of school, she's you.
Speaker 3: Know, they're off on their own, you know, an apartment
Speaker 3: or whatever, and you know, she's got shows to watch
Speaker 3: and everything. I can just like hang out code and
Speaker 3: I actually I'll code a lot when we're watching TV.
Speaker 4: And I was like, wait, a suit are these people again?
Speaker 3: Like you have been you have been paying attention, you
Speaker 3: have no idea who cares?
Speaker 2: Like whatever, Now what does Cita built on?
Speaker 4: By the way, what do you mean?
Speaker 2: Like like you quoted it. What did you code it in?
Speaker 3: Well, it's typescript, it's a node package. It's it uses
Speaker 3: Commander for the art processing. It uses uh clark for prompts.
Speaker 3: It seems to be the new hotness, and I agree
Speaker 3: because it is.
Speaker 4: It is really cool. Actually, it's really great. It uses
Speaker 4: e j s for a lot of the templating.
Speaker 3: So we we have a lot of like templates where
Speaker 3: our files like depending on the combinatorics of what you've
Speaker 3: asked for code router, file, router, you know this and that,
Speaker 3: tailwind versus not versus.
Speaker 4: You know, all that kind of stuff.
Speaker 3: We need like special like changes in the actual like
Speaker 3: code that we write, so we use EJS for that.
Speaker 3: And then just recently I added the MCP stuff, so
Speaker 3: the MCP server and then also express.
Speaker 2: So yeah, so you mentioned MCP, and I think that's
Speaker 2: a really cool thing to talk about.
Speaker 4: Yeah, I'm really psyched about it.
Speaker 2: So I don't think you know what that is chuck.
Speaker 3: Nope, Okay, Well remember TRON it's the Master control program,
Speaker 3: not just Actually I thought that was one is when
Speaker 3: I first heard it, because I remember like way back,
Speaker 3: I don't know, like late twenty twenty four Anthropic came
Speaker 3: up with this idea of this model context provider. So
Speaker 3: it's a standard that you can write to and there's
Speaker 3: two different protocols and I'll get to that in a second,
Speaker 3: that you can then give claw. At the time, the
Speaker 3: Claude desktop was the only thing that supported this.
Speaker 4: But you could tell.
Speaker 3: Claude Desktop, hey, cool, I've got this MCP server over here,
Speaker 3: and that MCP server will give you a set of
Speaker 3: tools and then anytime then they're self identifying tools, and
Speaker 3: then anytime it wants to do something like you maybe
Speaker 3: give it a tool for like change the hue lighting
Speaker 3: my house, or you know, make coffee or go through
Speaker 3: this file system. Actually, most of it was like database
Speaker 3: integrations early on was like kind of okay, here's here's
Speaker 3: a bunch of tools for a Postcrest database. Yeah, I
Speaker 3: can list tables, I can run a query all that.
Speaker 1: Yeah, and playing with building tools. I just didn't know that.
Speaker 4: Yeah.
Speaker 3: So the packages up those tools as well as resources
Speaker 3: and a really nice interface.
Speaker 2: So a question about that, So is MCP mostly about
Speaker 2: exposing capabilities or is it mostly about expanding the model itself,
Speaker 2: like with domain specific knowledge that might not be contained
Speaker 2: within the model B.
Speaker 3: The latter, I would say, yeah, so expanding the reach
Speaker 3: of the model usually into your own Yeah, your own space,
Speaker 3: because you're running the server like literally on your own machine,
Speaker 3: and so it's actually like it has access to everything
Speaker 3: inside of your intrenest So the.
Speaker 4: Model, maybe not Claude would have access to obviously.
Speaker 2: So the model was original. Sorry Chuck, just one second
Speaker 2: because I need to I want to better understand this.
Speaker 2: So the model was essentially trained on some global data whatever.
Speaker 2: But you want to ask questions that are pertinent to
Speaker 2: your data. But obviously your data is not part of
Speaker 2: the model. So MCP helps you do that by you
Speaker 2: expose your data to the model through this API. Obviously
Speaker 2: it's totally private because your data doesn't become part of
Speaker 2: the actual model. It's just an extension to that.
Speaker 3: Exactly, yes, one hundred percent. And the way that you
Speaker 3: do that is you give it tools, which are really
Speaker 3: just functions. Those functions can take parameters, right, and so
Speaker 3: you had two different ways of doing this in the past.
Speaker 3: You had the used to be that you just create
Speaker 3: a massive system prompt like hey, I want you to
Speaker 3: give product recommendations for our products, like you're an e
Speaker 3: commerce company. You take literally all your products and drop
Speaker 3: them into the system context and be like, here are
Speaker 3: our products when you recommend them.
Speaker 4: Here they are.
Speaker 3: But let's just say that you've got a massive product catalog,
Speaker 3: Like how do you handle that?
Speaker 4: Like, so what you're doing. You could give the AI
Speaker 4: a search tool.
Speaker 3: Hey, given these parameters, you know, uh sneak your size
Speaker 3: or whatever, you know, give me back a list of products,
Speaker 3: and then it's it's a much better communication with the AI.
Speaker 3: The AI can then go, oh, okay, I see if
Speaker 3: the person wants like size eleven shoes for running, I'm
Speaker 3: going to run your search tool, and you're going to
Speaker 3: give me back, Jason with a list of products, and
Speaker 3: then I'll be able to get then go and give
Speaker 3: them recommendations.
Speaker 1: Yeah, it's in the AI parlance, what you're talking about
Speaker 1: is retrieval augmented generation, and so essentially, yeah, it's smart
Speaker 1: enough to be able to retrieve the data and then
Speaker 1: essentially augment its own response with what it got or
Speaker 1: what it retrieved from from the other end. But when
Speaker 1: you're talking about tools, a lot of times too, it's
Speaker 1: here's a function to update my Google calendar, or here's
Speaker 1: a function to send an email or and so it's both.
Speaker 3: You can make when you're talkings and you can also
Speaker 3: do queries right right.
Speaker 1: And so yeah, I mean, you know, and there are
Speaker 1: other RAG tools, you know, but yeah, this is one
Speaker 1: way of doing RAG. But it does both. You can
Speaker 1: add capabilities as well. So if it can touch an
Speaker 1: API somewhere, it can make things happen. And that's what
Speaker 1: you're talking about, like with your hue lights or your
Speaker 1: your other home automation stuff or you know, stuff over
Speaker 1: the internet where you need to make things happen. It's
Speaker 1: not retrieving data necessarily anymore. It's actually causing an effect
Speaker 1: somewhere and doing anything.
Speaker 2: And MCP is basically a standard way to achieve this functionality.
Speaker 3: Right, So there's two different methods that you can use
Speaker 3: for building MCP server or communicating the protocol underneath it
Speaker 3: would be two different kind of transports.
Speaker 4: One is.
Speaker 3: Standard io, so basically you run this app and then
Speaker 3: you start you know, literally standard in. You give a
Speaker 3: Jason Blob saying this is my request for a tool
Speaker 3: or whatever, and then standard out it responds with whatever
Speaker 3: the data is, which is cool up to the point
Speaker 3: where you're like, wait a second, how do I actually,
Speaker 3: if I'm writing my MCP server on standard Io, how
Speaker 3: do I debug this thing? Like I usually use standard
Speaker 3: in Standard out for my debugging. Like so you know,
Speaker 3: I guess you you know you're limited to standard or something.
Speaker 3: But like, I just find that kind of Jankye I've
Speaker 3: never been, like you a huge fan.
Speaker 4: Yeah, all right exactly.
Speaker 3: And then the other way, what I think is actually
Speaker 3: a little bit cleaner is they have an SSE transport
Speaker 3: or service service set Events transport, where you're basically running
Speaker 3: a server. Now you have a ur L and the
Speaker 3: well clawed desktop if that's the MCP agent that you
Speaker 3: choose to use, would then connect to that URL and
Speaker 3: then you can talk via a continuous connection using service
Speaker 3: set events.
Speaker 4: Yeah.
Speaker 3: I that one a little bit better, but I think
Speaker 3: for a lot of folks, the standard Io version it
Speaker 3: is nicer because then, like claude to be just it
Speaker 3: will just run your app or your little command line
Speaker 3: app for you handle all that and then kill it
Speaker 3: when it's done, that kind of thing, Whereas if you
Speaker 3: use the SEC approach, you actually have to run a
Speaker 3: server and then you give it to you r L.
Speaker 2: It's basically you're building a note you're using note.
Speaker 4: Yeah yeah, yeah yeah.
Speaker 3: So in this case, So the the fun thing we
Speaker 3: did with create ts writer app was now you can
Speaker 3: put dashdash MCP or now even this morning damage dash
Speaker 3: MCP Dash SZ and it will run an MCP server
Speaker 3: and then the tools that it gives the the MCP
Speaker 3: agent the thing using MCP are things like create a
Speaker 3: tansec writerer app and list all my ons and all that.
Speaker 3: And so if you've got an ID that is integrated,
Speaker 3: that has MCP integration, and nowadays wind Surf and z
Speaker 3: and Cursor among amongst them, all have MCP integration. Cursor
Speaker 3: in particular has integration for both sc and also standard Io.
Speaker 3: I think winsurfhone supports standard Io, and I don't even
Speaker 3: know what Zed does. I don't mean whatever they get
Speaker 3: to like a rust thing for it. I'm like, I
Speaker 3: don't need I ain't got time for that.
Speaker 4: But it works conceptually, it works, but it's really cool.
Speaker 3: So basically what what what you can do now is
Speaker 3: you can go into your Cursor, bring up the agent
Speaker 3: mode panel and say I want to create a TAN
Speaker 3: sac ruder app and it should you know, do tic
Speaker 3: tecto or whatever, and you can literally see it, like
Speaker 3: it makes the calls to ask for you know, what
Speaker 3: are my capabilities, and makes the call to make the app,
Speaker 3: and then it starts editing the files in place, and
Speaker 3: you're like, dang, this is like v zero but like
Speaker 3: in my cursor, like it's just right.
Speaker 4: I don't even have to leave. I can just go
Speaker 4: make apps right away.
Speaker 3: And it's funny because like, yes, it is teaching it
Speaker 3: like new tricks, like the old Claud doesn't know about
Speaker 3: tan stak, the old Claud doesn't know like mpx A.
Speaker 3: Like when you try it up add shad cyn components,
Speaker 3: it still tries to use shaddy and dash y because
Speaker 3: that's what it is trained on, even though now we
Speaker 3: use shaddzy n.
Speaker 4: Thank you for that, even though you might say same command,
Speaker 4: but whatever.
Speaker 2: So within let's say cursor, you might say, give me
Speaker 2: a new React application called such and such that has
Speaker 2: these pages using tailwind using shad c N. I also
Speaker 2: need a single sign on and I want to deploy
Speaker 2: it there. Yeah, and enter and it.
Speaker 4: And start building it out. Yeah, it's really cool.
Speaker 2: And it opens within cursor and you're ready to go.
Speaker 3: Yeah, it might even work. I mean you're already in cursors. So, yeah,
Speaker 3: you created an app within within your exacting with your system. Yeah,
Speaker 3: and it actually it has a decent chance.
Speaker 4: Will work it.
Speaker 1: Yeah, I've just found the AI models. They're getting better,
Speaker 1: but they're still kind of hit, hit or miss sometimes.
Speaker 1: So but it'll get you a waist down the road
Speaker 1: at the very least. Right.
Speaker 2: Yeah, But in this case, well, you can either tell
Speaker 2: it and have the app do this such and such,
Speaker 2: in which case it will start writing the app. Or
Speaker 2: you can just get the basic skeleton and you've avoided
Speaker 2: dealing with command line switches.
Speaker 4: Right, and then you can continue on.
Speaker 3: You can create another session with the agent and say, well,
Speaker 3: now that my apps set up, now go and add
Speaker 3: this and that and the other thing, and it'll it'll
Speaker 3: start doing that.
Speaker 2: Cool.
Speaker 4: Ye, it's really cool.
Speaker 2: It's very cool. Yeah.
Speaker 4: And I was kind of surprised by that one too.
Speaker 3: It's like there's been two things where they've done stuff
Speaker 3: that I was surprised that other people haven't. The one was,
Speaker 3: you know, CRA being deport Like, why didn't VAT come
Speaker 3: up with a template that was a CRA template?
Speaker 2: I don't even know, Like, well, I think I told
Speaker 2: you I think we talked about it. I think the
Speaker 2: main issue that people forget is that VAT was created
Speaker 2: by uh Avenue evenue and avenues about view.
Speaker 4: Yeah, but you.
Speaker 3: Know there's marketing, right. I think that a marketing is
Speaker 3: underplayed in our place. So particularly when folks who are
Speaker 3: building their own libraries and stuff, they kind of think
Speaker 3: that like the tech is everything, Like I'm going to
Speaker 3: make this awesome library and it's going to do some
Speaker 3: amazing stuff, and people are just if you build it,
Speaker 3: they will come kind of thing, and no, you actually
Speaker 3: have to market stuff, and so understanding marketing opportunities is
Speaker 3: really important. And when I saw like that cra deprecation,
Speaker 3: I'm like this and in fact, this is the words
Speaker 3: that I told Tanner. I'm like, this is a moment.
Speaker 3: You you've got to get after it. In that moment.
Speaker 3: And when people are starting to talk about what do
Speaker 3: we do, it's like, Okay, instead of just saying use
Speaker 3: an extras, which is kind of loomy tunes, no.
Speaker 4: Here you go.
Speaker 3: Here's here's a viable solution that has exactly All you
Speaker 3: need to do is change one word. Instead of create
Speaker 3: react app, you just say create tst router app and
Speaker 3: you're good to go.
Speaker 2: And are you seeing adoption?
Speaker 1: Oh?
Speaker 3: Yeah, yeah, we saw. I think the original solid router
Speaker 3: create module is at ten stack slash create router, and
Speaker 3: I think it had when I looked last time, it
Speaker 3: was like fifteen hundred downloads per week was its average.
Speaker 4: And this tool.
Speaker 3: Create test Router app in its first week had about
Speaker 3: eighteen hundred.
Speaker 4: So that's great adoption. That's that's like right off the bat,
Speaker 4: right there.
Speaker 2: So right off the bat you more than doubled it download.
Speaker 4: Yeah.
Speaker 3: And now the cool thing is because we added Solid
Speaker 3: and Ryan Carneado came in and said that now this
Speaker 3: is his like he this is the builder that he's
Speaker 3: been waiting for, Like now we're going to pick up
Speaker 3: the Solid folks too.
Speaker 4: And I'm digging it. I think this is really great.
Speaker 2: Yeah, for sure, that's really awesome. What I wanted to
Speaker 2: ask something some one of the.
Speaker 4: Most popular open source things I've ever been involved in.
Speaker 4: So I'm really.
Speaker 3: Happy that like the first time I went to the plate,
Speaker 3: you know, I swung and got a yeah, maybe a
Speaker 3: double or.
Speaker 2: It's all about it's all about the timing.
Speaker 4: It is, it really is.
Speaker 3: I think the last time I hit something like this
Speaker 3: was the compiler. The React compiler came out. The team
Speaker 3: gave me access about a week before it came out,
Speaker 3: and I spent that week like actually like trying it out,
Speaker 3: building a video around it, and that that video did
Speaker 3: super well because it was kind of like it dropped
Speaker 3: on the day that it was released and folks are like, oh,
Speaker 3: this is my In fact, I think even Prime was like,
Speaker 3: this is the official release React video.
Speaker 4: Like no, it's not, but like whatever.
Speaker 2: Let's also you know, you just make awesome video. Excited
Speaker 2: before I said it again, I really enjoy watching your content.
Speaker 3: I released one about reac scan first thing this morning,
Speaker 3: so go check that out. Because Aidan's doing some amazing stuff.
Speaker 2: Oh yeah, like I said, we actually had him on
Speaker 2: the show.
Speaker 1: Is that on the YouTube channel?
Speaker 3: That's not like, yeah, that's on the Blue Collar car
Speaker 3: or Jack Harrington YouTube channel. And yeah, actually just yesterday
Speaker 3: he released a news zero dot two version that has
Speaker 3: some really cool stuff in it.
Speaker 4: It's got able to.
Speaker 2: Do, like it's funny. So I was speaking with him
Speaker 2: on the show and I was telling him you should
Speaker 2: do this, you should do that, and he was like,
Speaker 2: well let me. I'm taking notes. So I'm wondering if
Speaker 2: some of my suggestions actually made it into this new version.
Speaker 2: I need to go and check it.
Speaker 3: Possibly one of the more intriguing ones, and maybe this
Speaker 3: was a you thing, was that now it will actually
Speaker 3: build a prompt that has all the information that it
Speaker 3: has about like why this is re rendering or whatever,
Speaker 3: and then you can literally take that there's a copy button,
Speaker 3: paste that into a claud or chat GBT and maybe.
Speaker 4: Claude will help you figure it out, like why that's happening.
Speaker 2: I didn't suggest that, I just basically anyway. I basically
Speaker 2: suggested that within the tool you could click on things
Speaker 2: and get additional information.
Speaker 4: Oh yeah, no, you can never do that.
Speaker 2: Yeah, so previously you couldn't.
Speaker 4: Well there you go.
Speaker 3: Yeah, now you can like lock into a component and
Speaker 3: see why is that and then force a whatever whatever
Speaker 3: it is, to force a renderer that you don't want,
Speaker 3: and it'll tell you, oh, the reason that particular component
Speaker 3: is re rendering is because this hook you know in
Speaker 3: there fired and that is just super cuock, super handy.
Speaker 4: Yeah.
Speaker 2: Yeah. Well, to be fair, this information was previously already
Speaker 2: available within the React tool developer tools, so it's not
Speaker 2: like you couldn't get at this information before. It's just
Speaker 2: that Aiden is making this information much much more accessible
Speaker 2: and more actionable as a result.
Speaker 3: Yeah, and now it's also he's into slower components as well,
Speaker 3: so it's not just avoiding excessive rerenders or unnecessary rerenders,
Speaker 3: it's also hey, your FPS dropped, and now we can
Speaker 3: actually tell you why it was this component it was
Speaker 3: taking It was really you know, taking too long.
Speaker 4: And yeah, that's it's just great.
Speaker 2: Very cool. Like I said, we had him on the show.
Speaker 2: I recommend our listeners checking that episode out as well
Speaker 2: and also looking at your video. Yeah, uh, I wanted
Speaker 2: I wanted, Oh I wanted to ask you. I now
Speaker 2: remember what I wanted to ask you. I'm just curious,
Speaker 2: what's your own personal idea of choice these days.
Speaker 3: I've just recently switched back from Windsurf to Curser and
Speaker 3: that was primary around the MCP integration. The MCP integration
Speaker 3: into Windsurf just was a little kind of janky, like
Speaker 3: it is just like literally if you got the config
Speaker 3: file wrong or your server or your MCP server fell over,
Speaker 3: you just get this like blank white panel that was like.
Speaker 4: Boom, couldn't couldn't you couldn't deal, you.
Speaker 3: Know kind of thing, and the MCP integration into a
Speaker 3: cursor is at least marginally more robust. But you know,
Speaker 3: I gotta tell you, like, I've been talking to the
Speaker 3: other folks about this, and it's like I just don't get,
Speaker 3: Like I understand as an investor why these companies.
Speaker 4: Would want their own IDEs.
Speaker 3: But from a technical perspective, these could just be plugins
Speaker 3: and the codium was just a plug in. Everything is there,
Speaker 3: But like, is it just that your investors are like,
Speaker 3: come on, man, I'm going to give you one hundred
Speaker 3: and fifty million dollars if you're not going to build
Speaker 3: an app.
Speaker 4: Well, yeah, do you really need to fort real coe?
Speaker 2: Yeah, that's that's an interesting question. Whether there's anything that
Speaker 2: they do which could not have been done.
Speaker 4: Which I actually think yeah, and I actually think the
Speaker 4: integration is poor.
Speaker 3: Like, as an example, like the whole setting system in
Speaker 3: PS code I believe is extensible, and yet if I
Speaker 3: go in a cursor, they've got their own additional setting
Speaker 3: system which is totally non standard. It doesn't actually show
Speaker 3: up in the command panel. You can't like say bring
Speaker 3: up command shift P and then say like add an
Speaker 3: MTP server they don't integrate at that level. It's just
Speaker 3: kind of like this kind of like not particularly well
Speaker 3: integrated integration, and yet they've forked vs code to add it.
Speaker 4: I'm like, good.
Speaker 2: Well, to be honest, I'm still I'm still using vs
Speaker 2: code and I'm hardly even using co pilot.
Speaker 3: Wow, okay, I'm old school. Yeah, i'd us lately and
Speaker 3: I've been pretty happy with it. Yeah, the tab stuff,
Speaker 3: the tab when then when when Curser came out with
Speaker 3: the tab completion, that was.
Speaker 4: Like, whoa, that's next level. That's what.
Speaker 3: Well, So as you're as you're editing, it's trying to
Speaker 3: figure out what you're doing, and then it just literally says, oh,
Speaker 3: I got.
Speaker 4: A completion for you. Hear it.
Speaker 3: Here's kind of a preview of it. Hit tab and
Speaker 3: you'll get it. And it just seems me like spookly
Speaker 3: good and understanding what I'm trying to do, Like if
Speaker 3: I'm changing I don't know, some like I'm adding some
Speaker 3: demo data or something like that. I'll add like one
Speaker 3: example and it'll be like, oh, here's five more.
Speaker 2: You're like, I wish, I wish, I wish I was
Speaker 2: writing that amount of code right now I'm the current
Speaker 2: I think I told you that the current project that
Speaker 2: I'm struggling with is trying to add Typescript into a
Speaker 2: huge legacy web application and it's really tough going for me.
Speaker 3: Well yeah, but you beave a surprise like if you're
Speaker 3: if you actually, like you mentioned in this and I
Speaker 3: mentioned that, like you probably want to extricate the code
Speaker 3: into its own package and then upgrade it. But like
Speaker 3: if you're doing that, that kind of work of like, oh,
Speaker 3: I've got these fifteen functions. They all take the first
Speaker 3: you know, they all take a parameter which is I
Speaker 3: don't know, whatever options or whatever is their first parameter.
Speaker 3: You fix it on the first one, and it's like, hey,
Speaker 3: if you hit tab, I'll just fix all other furs
Speaker 3: for you.
Speaker 4: Do you want me to do that?
Speaker 3: And you're like hmm, well yeah, I guess, like just
Speaker 3: do for me what you've got.
Speaker 4: Yeah, exactly. Yeah, that's the thing.
Speaker 1: The other the other thing I've seen is like if
Speaker 1: I'm changing the name of a function or a method
Speaker 1: or yeah, change the signature or anything like that, it
Speaker 1: goes in and it says you want me to fix
Speaker 1: like everything that uses this. I mean, it's like hmm.
Speaker 3: Let me think about that second. Yeah, well, yes, yes,
Speaker 3: you could do that for me. And it's just it's
Speaker 3: like it is, it is the co pilot that you wanted. Yeah,
Speaker 3: it's just really good for that, really really good. Yeah,
Speaker 3: and it is fast, like I was actually talking to
Speaker 3: behind this. And so there's the side panel that uses
Speaker 3: like clawed or deep sea or whatever and does my
Speaker 3: almost ever touch that, to be honest, rights, that's when
Speaker 3: you actually like the long sort of things. And then
Speaker 3: then there's a tab integration, which is at least on
Speaker 3: Windsurf it was their own custom l M, and I'm
Speaker 3: guessing that it's probably the same for Cursor and it
Speaker 3: is wild fast.
Speaker 2: Yeah, well there's a reason. And VideA is worth what
Speaker 2: it's worth.
Speaker 4: Yeah. I think it's running locally, I guess hmmm yeah,
Speaker 4: probably not.
Speaker 2: Yeah, but you still got to train the models.
Speaker 4: Yeah, that's true, that's true.
Speaker 3: Yeah, And as we saw deep Seek right on, one
Speaker 3: thing is training and another thing is actually you know,
Speaker 3: running it and being hyperperforming or cacheing and things like that,
Speaker 3: and so there's a lot of a lot of ground
Speaker 3: be made up to run it locally.
Speaker 1: Yeah. Well, and that's the chink in the armor the
Speaker 1: deep Seek exposed. I mean, if if they're what we've
Speaker 1: been told about it is honest, is that they didn't
Speaker 1: need the big fat GPU to do it or the
Speaker 1: set of GPUs. I don't know. But at the same time,
Speaker 1: if we can get away with training models without yeah,
Speaker 1: without that, then you know, maybe in NVIDIA isn't as valuable.
Speaker 1: But still, I mean, the things that we can do
Speaker 1: with AI these days is just.
Speaker 2: No, it's beyond it's beyond that. You know, we are
Speaker 2: Chinese attack away from AI being delayed by a decade.
Speaker 2: What I mean is if if China decides to go
Speaker 2: for Taiwan, oh yeah, there goes AI. Yeah, unless indeed
Speaker 2: something like deep Seek can work around the GPU shortage
Speaker 2: that will arise.
Speaker 3: Yeah, that's why we needed the Chips Act was to
Speaker 3: go in. But the probably, yeah, the fabs are the issue.
Speaker 3: And then a fantastic book that I read last year
Speaker 3: I think called chip Wars, which is all about like
Speaker 3: the evolution of the chip and the fact that we
Speaker 3: now live in this amazingly fragile ecosystem where there's literally
Speaker 3: one country in the world. I think it's like Denmark
Speaker 3: where they build the uh the machines that are capable
Speaker 3: of actually like doing the printing on and the lithography.
Speaker 3: And it's literally that one company like nobody else in
Speaker 3: the when the world mixed up.
Speaker 2: You know, we're totally digressing. But yeah, you know, it's
Speaker 2: shades of the Bronze Age collapse. And you know about
Speaker 2: that what the Bronze Age collapse was. No, so back
Speaker 2: in like the twelfth century BC, the entire they had
Speaker 2: this very sophisticated ancient world. You had Egypt, and you
Speaker 2: had the Assyrian empires and Babylonia and the Hittites and whatnot,
Speaker 2: and then it all collapsed within within uh something like
Speaker 2: a century, the whole world more or less came crumbling down.
Speaker 2: The Minoa, the Mycenean me know, and Mycenian cultures for
Speaker 2: example in Greece they died. It took four hundred years
Speaker 2: for them to get writing again.
Speaker 4: Wow.
Speaker 2: So yeah, it's like the full.
Speaker 4: Copper.
Speaker 2: No, it had to do with the sophisticated network of
Speaker 2: commerce that when when they started to fall, they felt
Speaker 2: like dominoes. So so basically, you know, you think about
Speaker 2: the modern world where everything is interconnected, where like a
Speaker 2: pencil gets made in like parts with five different countries
Speaker 2: or something like that. You're thinking, if you pull one
Speaker 2: country or one domino, one falls. If it's sufficiently large
Speaker 2: domino at least the entire system, can you know, collapse.
Speaker 4: Yeah.
Speaker 2: Anyway, we totally digressed going back to CT are You're
Speaker 2: still You're you're still So we talked about this fantastic
Speaker 2: AI integration that's built in. So now if you're using
Speaker 2: an AI by the way, you can't get this functionality
Speaker 2: within VS code with the Copilot. They don't have support
Speaker 2: for that.
Speaker 4: Yet, I don't think. So.
Speaker 3: I googled around for Copilot and MCP, and I didn't
Speaker 3: find that they had any integration currently. But I wouldn't
Speaker 3: I would expect. I mean, this is like an arms
Speaker 3: race here. You know, you got Microsoft going and they're
Speaker 3: they're constantly adding new stuff on a Copilot and kind
Speaker 3: of compete, so I would I think, Actually, Copilot does
Speaker 3: have now the tab completion and stuff, so I would
Speaker 3: expect that MCP wouldn't be far behind.
Speaker 2: Cool.
Speaker 3: I'm glad that it's actually like there's an awesome MCP
Speaker 3: GitHub as you usually have for this sort of thing,
Speaker 3: like with the list of all the potential servers and
Speaker 3: it's growing fast.
Speaker 1: The MCP environment. I did just quick Google search and
Speaker 1: I did find a vs code MCP server extension.
Speaker 4: Oh there you go.
Speaker 1: Well, so I don't know, I don't know how far
Speaker 1: that gets you down the road, but.
Speaker 3: Right because co pilot itself had extension has extensions, which
Speaker 3: was good, which was Microsoft's original answer pre MCP. So
Speaker 3: I wonder if they're putting this is like a shim
Speaker 3: to basically connect the githubs the co pilot extension mechanism
Speaker 3: to an m CP server could.
Speaker 4: Be Yeah, so good luck a bugging that one.
Speaker 2: What's what's the so, what's the version of ct A
Speaker 2: is it? Is it like it's well obviously or we
Speaker 2: were talking about downloads, so it's officially released, but what's
Speaker 2: the version around it?
Speaker 4: It's currently zero four two so yeah.
Speaker 2: So that counts as alpha beta.
Speaker 3: I would say that the I mean, the main part
Speaker 3: of it, like what just build an app is is
Speaker 3: fully released. That's that's cool. But the add ons and
Speaker 3: the AI stuff, I'm still getting some bugger I'm getting
Speaker 3: bug reports, which is great. Some folks are finding that
Speaker 3: there's issues. I was running into one just this morning
Speaker 3: where folks are one part the chassy En add on
Speaker 3: actually runs the shadzy En in it as part of
Speaker 3: the setup process, and folks are seeing some issues of that,
Speaker 3: and I think it was primarily around like older node
Speaker 3: versions things like that.
Speaker 2: So you know, you know what, you know, what might
Speaker 2: be awesome if maybe it's already in your plans, if
Speaker 2: people could add add ons without having to involve you.
Speaker 3: Yes, yeah, So the long range thing here, there's two
Speaker 3: big things that I want to do that I want
Speaker 3: to go after, and I don't know if it's going
Speaker 3: to fit in to create ts rout or app or
Speaker 3: it's just going to be part of like something that's different.
Speaker 3: But the idea is to kind of work on the
Speaker 3: shadzy En model where shadzy En now has this thing
Speaker 3: called blocks and I've actually talked with the chazy and
Speaker 3: guy and he's totally had more to this. But if
Speaker 3: you go to if you like, take a shadzy En
Speaker 3: app and or an app that has shedsy in it,
Speaker 3: and you say like mpx shedsy En at latest ad.
Speaker 4: And then you give it you could.
Speaker 3: Normally do like button or input or one of those,
Speaker 3: but you could you can give it a URL and
Speaker 3: that URL points to a Jason blob that has like
Speaker 3: all of the information, here's the files that you need
Speaker 3: to put in where they need to go, here's the
Speaker 3: package you need to add all that stuff. And I
Speaker 3: actually built an app that makes it really easy to
Speaker 3: build these these Jason Delta files. But the idea is like,
Speaker 3: if I'm a clerk or whatever, I can just go
Speaker 3: and build like a start setup dot Jason file and
Speaker 3: then you just do MPX Chad cy N, here's my
Speaker 3: UL start set up blah blah blah, and it goes
Speaker 3: and bo drops all those files down. It'll tell you
Speaker 3: if it's going to overwrite files, it'll add all the
Speaker 3: package of Jason stuff, it'll change all the CSS variables
Speaker 3: and everything, and now you've got an integration for I
Speaker 3: don't know, clerk or whatever it is, right, And I
Speaker 3: thought that, man, that's cool.
Speaker 4: That's really cool and.
Speaker 3: Does exactly what Dan was saying, which is basically it
Speaker 3: it opens up the door for anybody to go and
Speaker 3: make these add on templates, and that that was fascinating.
Speaker 2: So scary to an extent, you don't know where your
Speaker 2: template is coming from.
Speaker 3: Yeah, but I mean how many times I maybe you
Speaker 3: don't do this but like, how many times have you
Speaker 3: gotten instructions for installation that are like curl this ur
Speaker 3: l into my in my shell And it's like, ill,
Speaker 3: I don't know, right, right's a pseudo curl And you're like,
Speaker 3: I don't know what you're doing, but I trust you
Speaker 3: and it totally gives me malware. But you know, at
Speaker 3: the end of the day, if you use get just
Speaker 3: you know, if you're going to do that, if you're
Speaker 3: going to say mpx chancy, and just make sure that
Speaker 3: you're on a clean branch right, like you're not, like
Speaker 3: there's no existing work or anything, and then you can
Speaker 3: just be like, well get status, like what.
Speaker 4: What did you change? And you can literally see like
Speaker 4: here I added this file here.
Speaker 2: That sand is a huge topic that's beyond the scope
Speaker 2: certainly of the time we have left, because I do
Speaker 2: have look, I really like the on the one hand,
Speaker 2: I really love the headless approach, oh yeah, But on
Speaker 2: the other hand, I'm really wary about the fact that
Speaker 2: it's literally embedding code in your project rather than taking
Speaker 2: the package approach, because then I keep thinking, what if
Speaker 2: a new version comes out?
Speaker 3: Yeah, have you looked at well one? They do have
Speaker 3: kind of a song for that. But two, have you
Speaker 3: actually looked at the code that it's putting in.
Speaker 2: No, to be honest, I have done.
Speaker 3: I think you'll be a lot better if you look
Speaker 3: at the code, because the code is really like in
Speaker 3: most cases, it is a very light wrapper around a
Speaker 3: rad x component that basically just says, here, use this
Speaker 3: rad ex component which is headless, and here are the
Speaker 3: classes that you want to put on it.
Speaker 2: And so the red x component itself is still an external.
Speaker 3: Component exactly, and it is and it is big, and
Speaker 3: it's doing all the work of all the ITN and
Speaker 3: or the accessibility and all the rest of it it.
Speaker 3: So it really is if you were to go and
Speaker 3: use like a rat X in your app, you'd probably
Speaker 3: be building these files this way. That's how I look
Speaker 3: at it. And you know, again like so cool, like
Speaker 3: that whole infrastructure of blocks is so cool for like
Speaker 3: an infrastructure like I always look at like my past
Speaker 3: experience and like what would I do if I was
Speaker 3: using this at Nike right or at Walmart labs where
Speaker 3: we're working the past, and I've been on in for
Speaker 3: teams at those companies, and it is so cool that
Speaker 3: as in like a Nike can go and create like
Speaker 3: an internal GitHub repo that has those Jason files for
Speaker 3: like our version of a button and our version of
Speaker 3: an input, and then instead of just doing you know,
Speaker 3: shad see in add button, you use shad c in
Speaker 3: add a r L for our button and you get
Speaker 3: all of our styling and all of our stuff as
Speaker 3: opposed to that, which I think is just super cool.
Speaker 4: Yeah, all right, so that's that's one thing we want
Speaker 4: to do.
Speaker 1: Sorry, I was just gonna I have one more question
Speaker 1: than I think when you to get a picks, but
Speaker 1: go ahead and finish with Okay, well.
Speaker 3: That that ability to have external templates and then also
Speaker 3: to do those add ons. That's what we'd be looking
Speaker 3: to do next when it comes to this tis routter stuff.
Speaker 1: So yeah, so you know related to that, and you
Speaker 1: know the things that you would like to do. So
Speaker 1: is version one dot ZHO just going to be a
Speaker 1: stable version of what you have now or is it
Speaker 1: going to include some of this stuff or there are
Speaker 1: other things that you want to see in it.
Speaker 4: I don't know, you know, I think it's stable as is.
Speaker 3: I know that like I guess one we could we
Speaker 3: could bump into one dot oh it's fine, but I
Speaker 3: I'm just enjoying getting feedback from folks.
Speaker 4: I think that's one of the cool things.
Speaker 3: We were kind of like before this happened, we were
Speaker 3: talking about that that Chadsia M block system and just
Speaker 3: kind of hypothesizing about it, and having done this has
Speaker 3: really helped inform what that needs to be, and it
Speaker 3: needs to be, unfortunately a lot more complex because you know,
Speaker 3: there's multiple ways that you can build an app in
Speaker 3: multiple places that code can go, and so it's it's
Speaker 3: really helping, like the existence of great test writer app
Speaker 3: is kind of helping inform the next generation of test
Speaker 3: writer app that will allow this ability to create like
Speaker 3: public integrations or your own custom integrations, your own custom templates.
Speaker 4: I really want for people to be able.
Speaker 3: To say, hey, I've built my app, I've set it
Speaker 3: up the way that I want it. It's got all
Speaker 3: the stuff that I need in it. For any time
Speaker 3: I want to literally go and just like frost this
Speaker 3: as a template, and then next time I want to
Speaker 3: build an app, I just want to use that and
Speaker 3: the but it would be an active template where where
Speaker 3: the versions would change and that sort of stuff. So
Speaker 3: that's where I kind of want to get.
Speaker 2: To have we has Jack frozen for YouTube?
Speaker 1: Yes?
Speaker 2: Sorry, No, I do have one final question on my
Speaker 2: end before we go to picks Picks. By the way,
Speaker 2: just so you know, I remind you, I don't know
Speaker 2: if you had it when you were on on the
Speaker 2: on you know, the react ground up round. It's basically
Speaker 2: shouting out your whatever you want to shout out.
Speaker 4: Okay, cool, all right.
Speaker 2: So my question is about the deployment story. Uh, is
Speaker 2: there a deployment store, Like if if I want to
Speaker 2: employ deploy to Netlify or to versell or to a
Speaker 2: WS is that part of ct A or do I
Speaker 2: need the ten sax start for that? Like? What's the
Speaker 2: story around deployment.
Speaker 3: So Netlifi is a partner with Tansac and we have
Speaker 3: a pretty early days add on for Netlify in the
Speaker 3: package that basically just goes and kind of sets up
Speaker 3: adds a little bit of deployment information to the REMDIA.
Speaker 3: We didn't do all that much, but that's one thing
Speaker 3: I definitely want to do is start working with Netlifhi
Speaker 3: to see if we can strengthen that to the place
Speaker 3: where if you build a straight SPA that can be
Speaker 3: just statically deployed. Then we'll set it up that way.
Speaker 3: And if you build a start app and then we'll
Speaker 3: go and set up your netle file so that it'll
Speaker 3: actually go and run a server and give you all that.
Speaker 2: Start kind of has it built built in, doesn't it?
Speaker 4: I don't think, though maybe it does.
Speaker 2: I think it does. I would check with tenor. I
Speaker 2: think one of the key things about meta frameworks or
Speaker 2: full stack frameworks is the deployment story. Oh for sure,
Speaker 2: you expect like three things from a full stack app,
Speaker 2: or maybe four things, depending how you count. You expect bundling,
Speaker 2: you expect routing, and you expect deployments.
Speaker 4: That's three things.
Speaker 2: Here four well fourth I was hesitant about the fourth.
Speaker 3: Yeah, okay, but I mean there's really two different things,
Speaker 3: right if you if you're building a static app, then
Speaker 3: and that is one type of deployment you can go
Speaker 3: and deploy out to S three or CDNs or whatever,
Speaker 3: and then there's another level of deployment when it comes.
Speaker 2: To That's why about SSR, because SSR is on the
Speaker 2: is like half of it is part of the bundling
Speaker 2: story and half of it is part of the deployment story,
Speaker 2: and half of it is part of the routing story.
Speaker 2: So there are three halves to SSR.
Speaker 3: But you know, I don't want to bag on again.
Speaker 3: I haven't a course for next JS. We would, you know,
Speaker 3: go check it out here into that and and it's great,
Speaker 3: and we do talk about deployments, but I guess say,
Speaker 3: the easiest way to deploy next JS is and probably
Speaker 3: always will be Brissel. And yeah, and if you try
Speaker 3: to deploy it on like a Docker or an s.
Speaker 4: ST, I mean it is, it's it's not easy.
Speaker 3: It's not easy, particularly if you want to really use
Speaker 3: the really like cutting edge features like the ISR stuff
Speaker 3: or any of that.
Speaker 4: It's it's a lot.
Speaker 3: Rom had a really good like video going through it,
Speaker 3: and it's it's not trivial.
Speaker 2: Yeah. Cool, Well I'm done on my end.
Speaker 1: Cool, Well let's do picks. Awesome, Dan, do you want
Speaker 1: to get a start with the picks.
Speaker 2: I'm really hesitant about my pick today. I'll be intentionally brief.
Speaker 2: I thought about talking more at length, but I'll be
Speaker 2: intentionally brief. Today was a really sad day in Israel.
Speaker 2: The country kind of stood still because today the was
Speaker 2: the funeral of the Bebas family. I don't know if
Speaker 2: you've heard about the story. I again, I don't want
Speaker 2: to go into the details because they're there. I don't
Speaker 2: think it's appropriate in this context. I'll just mentioned that
Speaker 2: the mother and the two babies were murdered while in captivity,
Speaker 2: and the bodies were finally returned and today they were buried. Uh,
Speaker 2: and everybody. Basically a lot of people wore orange because
Speaker 2: the two babies wore redheads, and so they kind of
Speaker 2: were known for that, and the whole country just came
Speaker 2: out and you know, paid the respects and so forth. Yeah. Sorry,
Speaker 2: that's that's my unfortunate pick for today.
Speaker 1: All Right. I don't want to follow that, but I'm gonna.
Speaker 2: This is not this is not the first time I've
Speaker 2: been doing it recently. This has not been this is
Speaker 2: not we talked about this, Jack. This has not been
Speaker 2: a good year.
Speaker 4: Yeah no, yeah, I feel.
Speaker 2: Well, twenty twenty four was a really unfortunate year.
Speaker 1: Yeah. Yeah, I'm gonna go ahead with the card game
Speaker 1: first it. I need to just make a list so
Speaker 1: I know whether or not I picked these games, because
Speaker 1: I do a board game pick every time, and I'm
Speaker 1: not I'm not sure if I picked this one or not.
Speaker 1: But it's one that I played recently with some friends,
Speaker 1: and I might have picked it last week and if
Speaker 1: I did, or the last episode, and if I did,
Speaker 1: I'm sorry. It is the groundhog Day game. So if
Speaker 1: you've seen the movie groundhog Day, you know he who hasn't, Yeah,
Speaker 1: yeah right.
Speaker 4: My sister was born on your birthday. Was was a friend.
Speaker 2: We see it and then we go to bed, then
Speaker 2: we wake up and we see it again.
Speaker 1: Right, So, so the card game is based on the movie,
Speaker 1: and the idea is that you go through each day
Speaker 1: and you're trying to have that perfect day, right so
Speaker 1: that you can get out of the time loop. And
Speaker 1: the way that the way that the game is played,
Speaker 1: so Board game Geek waits it at one point too, too,
Speaker 1: which means it's a pretty simple game that you know,
Speaker 1: you kind of pick up and play. I could play
Speaker 1: with this with my you know, with my nine year
Speaker 1: old and she'd be fine playing it. But you are
Speaker 1: out a hand of cards and then it's kind of
Speaker 1: everybody jumps in and plays when they think it's appropriate.
Speaker 1: So you know, there are no turns, they're just rounds,
Speaker 1: and you have gray cards which are worth zero herds.
Speaker 1: You have blue cards which are worth one heart. You
Speaker 1: have orange cards which are worth two, Yellow is worth three,
Speaker 1: and red is worth four.
Speaker 4: I'm guessing you get all the hearts to win and
Speaker 4: get a lot of hard Yeah.
Speaker 1: So to have the perfect day, you have to have
Speaker 1: all red cards on your day, and they're all numbered,
Speaker 1: and so you can only play a number that is
Speaker 1: higher than the last number played in the day. And
Speaker 1: there's seven cards in a day or six cards in
Speaker 1: a day, and so you deal out the cards and
Speaker 1: then everybody starts. So initially you're starting, you're playing all
Speaker 1: your gray cards or blue cards because each day has
Speaker 1: to be better than the last day in hearts, and
Speaker 1: so you know, and you can't talk at all about
Speaker 1: what you've got in your hand. So we're ribbing each other,
Speaker 1: but we're not you know, we're not discussing the game.
Speaker 1: We're playing, me and my buddies. But anyway, so yeah,
Speaker 1: so that, I mean, that's essentially the game. Some of
Speaker 1: the yellow cards unlock red cards that get then get
Speaker 1: shuffled into the deck each round, and you get fewer
Speaker 1: cards each round. And so you know, every time we've
Speaker 1: played it, we've it's taken us five or six rounds
Speaker 1: to beat it. I don't think we ever lost, but
Speaker 1: we're all experienced board game people, so you know, we
Speaker 1: did kind of discuss strategy before we started playing, but
Speaker 1: that was it. And anyway, it's a fun game.
Speaker 4: You're kind of guessing, you're.
Speaker 1: Trying, you're basically guessing, especially on the round where you
Speaker 1: want to start playing red cards, because you just don't
Speaker 1: play them until you you know, you think you have
Speaker 1: enough among all of you to play it out, but
Speaker 1: then somebody has to guess that everybody has enough and
Speaker 1: play that first red card. And so anyway, it was fun,
Speaker 1: very fun. It takes about twenty minutes. Yeah, so you
Speaker 1: just you know, if you're playing those those quick hit games,
Speaker 1: you know you're sitting in an airport and you're not
Speaker 1: sure when you're gonna be done. It's a fun game.
Speaker 1: Or for us, you're right, we were just you know,
Speaker 1: we played like four or five times. It was really fun.
Speaker 4: Nice.
Speaker 2: By the way, speaking about the movie Groundhog Day, it's
Speaker 2: it's funny how many movies were inspired by that movie.
Speaker 2: Oh yeah, and and and you know, not a lot
Speaker 2: of them were necessarily good movies. But actually, actually one
Speaker 2: that was is Edge of Tomorrow.
Speaker 3: Is great yeah, thank you asking those two if they're
Speaker 3: going to ever make an Edge of Tomorrow Too, it
Speaker 3: was just such a oh I love that movie, and.
Speaker 1: Yeah, just just don't make a sequel. That's terrible that
Speaker 1: you're just cashing in on, because yeah, the movie studios
Speaker 1: do that all the time. And it's like, it's like,
Speaker 1: you had such a good thing and it wouldn't have
Speaker 1: been that hard to make another good thing based on it.
Speaker 3: Yeah, you know, the same be said of Done Too,
Speaker 3: though Two is phenomenal.
Speaker 4: I love that movie.
Speaker 2: Yeah, I don't know it was. I didn't get it two.
Speaker 4: Yeah, all right, part three when it comes out.
Speaker 2: Look, I tried to three. Yeah, yeah, I tried to
Speaker 2: watch the prequel series. Yeah, and I couldn't make it.
Speaker 4: The first Yeah.
Speaker 3: We went all the day throughism that it wasn't great.
Speaker 4: I'm doing freak man. I loved doing even I read
Speaker 4: I read the book.
Speaker 2: I read the books years ago and I loved them
Speaker 2: as well. I reread the book like a few years
Speaker 2: ago as well. So I really liked the lore. It's
Speaker 2: just that for some reason, by the end of I
Speaker 2: had few To be honest, I had like two problems
Speaker 2: with doing two. First of all, they deviated from the
Speaker 2: books and and that was hard for me. And the
Speaker 2: second thing was kind of, well, what was the point
Speaker 2: of all this?
Speaker 1: Yeah, that's where my wife came down on it too,
Speaker 1: but she hasn't read the books or anything.
Speaker 4: Yeah. I think three.
Speaker 3: Will pay it off, because what both Deni and also
Speaker 3: Frank Herbert were trying to say was don't fall in
Speaker 3: love with one of these these you know, kind of
Speaker 3: charismatic profit types, right that to that way.
Speaker 4: Lines doom and so don't do that. Yeah yeah, all right,
Speaker 4: but you throw down on some picks.
Speaker 3: I got too, and I think it can be real fast.
Speaker 3: So the first one is ghost t t Y. It's
Speaker 3: a replacement for the terminal on Mac.
Speaker 4: It's it's really good.
Speaker 3: It's really fast, and I think just recently they added
Speaker 3: support for shaters so you can put in a custom shader.
Speaker 3: It can be really fun. I was playing around. I
Speaker 3: added like a Matrix inspired shater.
Speaker 4: You know. It was really cute. So that was that
Speaker 4: was really fun. I'm really enjoying Ghosty.
Speaker 1: Is this a Mitchell hat your motto?
Speaker 4: Yeah?
Speaker 3: Yeah, yeah, yeah, yeah yeah. I just got a lot
Speaker 3: of money that guy. Chill out make make a terminal
Speaker 3: was my second pick.
Speaker 2: My second Oh man, so it's a replacement for it
Speaker 2: term and whatnot.
Speaker 4: Yeah, yeah, I mean, to be honest, I.
Speaker 2: Mostly run the terminal inside PS.
Speaker 4: I'm with you, I'm with you.
Speaker 3: Yeah, so I've heavily altered my my terminal with you know,
Speaker 3: the prompt and all that sort of stuff. There's actually
Speaker 3: I'll make that my second pick. There's another thing that
Speaker 3: you can do called I think it's like a transient
Speaker 3: prompt or something like that.
Speaker 4: I'll find it.
Speaker 3: But it's basically a switch where if you turn it on,
Speaker 3: then if you have one of those elaborate prompts that
Speaker 3: gives you like the path name and all that sort
Speaker 3: of stuff, what it'll do is as you enter a
Speaker 3: command and then go, it will essentially remove that and
Speaker 3: so you don't see that in your history, just repeated
Speaker 3: over and over and over again. You just see command response,
Speaker 3: Man responseman response, and then you're a big ass prompt
Speaker 3: and then you know what you're currently working on, and
Speaker 3: at the moment that you hit enter, that big ass
Speaker 3: propt will go away and you'll.
Speaker 4: Just see like LS or whatever.
Speaker 2: It is.
Speaker 3: Interesting, Yeah, transitive transient basically yeah, essentially.
Speaker 1: Yeah, and that's in ghost or is that no.
Speaker 3: For me, that's in ZSH So that's in okay, Yeah.
Speaker 4: I don't know.
Speaker 1: Oh my the s h.
Speaker 3: Yeah yeah, and I use like I think, oh my
Speaker 3: posh to go and do my prompt.
Speaker 2: Yeah, I'm the same.
Speaker 4: Yeah all right.
Speaker 1: Cool. Well Jack, if people want to connect with you,
Speaker 1: find you on the internet, watch your courses they're.
Speaker 3: In there with go through the tubes. Well you can
Speaker 3: find me, uh primarily on YouTube. That's a great spot
Speaker 3: to go and check out all my content. And then
Speaker 3: of course I'm on blue Sky and X and LinkedIn.
Speaker 2: Blue Color Coder. How are you still using that Moniker
Speaker 2: kind of?
Speaker 3: I mean I like the Moniker but actually I was
Speaker 3: just throwing it around just recently, like should I get rid.
Speaker 4: Of it or what?
Speaker 3: And people are like, yeah, it's okay, but I mean
Speaker 3: it's in like the banner graphics and stuff like that.
Speaker 3: But I don't really it's not the name of the channel,
Speaker 3: but I think if you if you do Google for it,
Speaker 3: you will find it anyway. I'm also Jhard at dev
Speaker 3: that's you know whatever. Yeah, I'm around and you know fairly.
Speaker 2: I said it before, said it again. You know your
Speaker 2: stuff is awesome and everybody should be watching it. I've
Speaker 2: learned every time I watched one of your videos, I've
Speaker 2: learned something.
Speaker 4: There you go, thank you.
Speaker 1: All right, well we're gonna go ahead and wrap it
Speaker 1: up here.
Speaker 4: It's been a real pleasure, guys. Thank you. It's good.
Speaker 4: It's been great to be back.
Speaker 1: Max Out