WEBVTT

1
00:00:01.080 --> 00:00:05.679
How'd you like to listen to dot
NetRocks with no ads? Easy? Become

2
00:00:05.679 --> 00:00:09.839
a patron for just five dollars a
month. You get access to a private

3
00:00:10.000 --> 00:00:14.240
RSS feed where all the shows have
no ads. Twenty dollars a month.

4
00:00:14.279 --> 00:00:18.640
We'll get you that and a special
dot net Rocks patron mug. Sign up

5
00:00:18.679 --> 00:00:36.039
now at Patreon dot dot NetRocks dot
com. Hey, guess what. It's

6
00:00:36.119 --> 00:00:40.600
dot net Rocks the Portuguese edition.
I'm Carl Franklin, I'm Richard Campbell.

7
00:00:40.679 --> 00:00:43.240
Yes, we are in Porto.
This is day two of the conference,

8
00:00:43.359 --> 00:00:48.280
and I just realized, you know, this morning that this episode is going

9
00:00:48.359 --> 00:00:52.719
to come out the week that dot
net eight drops right at dot com during

10
00:00:52.759 --> 00:00:55.719
dot net comf and also Ignite for
whatever reason they decided to do those in

11
00:00:55.759 --> 00:00:59.359
the same week. Yeah, yeah, so anyway, it's a it's a

12
00:00:59.439 --> 00:01:03.359
momentous week for dot developers. Yeah
yeah, well we've already got the show

13
00:01:03.479 --> 00:01:06.840
from Jeff Fritz about dot net comp
came out a couple of weeks before.

14
00:01:07.000 --> 00:01:11.079
Yeah, so now this is the
days you should be watching the stream and

15
00:01:11.239 --> 00:01:12.840
yeah, and here it comes this
show too, and here comes better no

16
00:01:12.920 --> 00:01:25.040
Framework and guess what it's all about
all right, man, tell me all

17
00:01:25.040 --> 00:01:29.159
about it. So, Jeff Fritz
and I have been doing this Blazer puzzle,

18
00:01:29.519 --> 00:01:34.040
right, and he was able to
finagle it so that we could do

19
00:01:34.079 --> 00:01:37.400
a Blazer puzzle during dot net comp. That's cool. Now, of course

20
00:01:38.000 --> 00:01:42.439
we're recording this October nineteenth, right, it's like fully a month before.

21
00:01:42.799 --> 00:01:47.640
Clearly yea months and I have I
have, No, we haven't done it.

22
00:01:47.680 --> 00:01:49.879
You haven't, Retten obviously, because
you've done a couple of Blazer puzzles

23
00:01:49.920 --> 00:01:53.599
with him now, oh several yeah
them. Yeah, okay, So if

24
00:01:53.640 --> 00:01:57.120
you remember the puzzler on Car Talk, right, basically they do these things

25
00:01:57.120 --> 00:02:01.319
people calling with their car cars making
this noise. Yeah. Well the puzzler

26
00:02:01.680 --> 00:02:07.200
was sometimes automotive, and it was
sometimes not you know, sometimes it was

27
00:02:07.239 --> 00:02:12.439
just a brain teaser, you know
about maybe people and their relations and whatever.

28
00:02:12.520 --> 00:02:15.520
It could be. Whire Man whole
covers round exactly. Yeah, so

29
00:02:15.680 --> 00:02:20.840
is the puzzler and they would have
the answer to last week's puzzler a winner,

30
00:02:21.240 --> 00:02:23.080
and then the new puzzler for next
week, right, and it was

31
00:02:23.120 --> 00:02:27.120
great fun. Yeah yeah, And
so that's what it is. It's basically,

32
00:02:27.159 --> 00:02:31.240
we give you a Blazer problem to
be solved, and we asked that

33
00:02:31.360 --> 00:02:36.400
you don't post the answer on social
media. We have an email alias Blazer

34
00:02:36.400 --> 00:02:40.840
Puzzle at afvnex dot com. You
send your answer and if you get the

35
00:02:40.879 --> 00:02:44.240
right answer, you go in to
pool. We pick a winner randomly,

36
00:02:44.400 --> 00:02:47.439
and then that person gets a Blazer
Puzzle mug, which is the only way

37
00:02:47.479 --> 00:02:51.199
you can get one, and a
Blazer Puzzle t shirt. Cool. So

38
00:02:51.280 --> 00:02:54.520
that's it the ten minutes long.
Yeah. Yeah, they're tasty little nuggets.

39
00:02:54.560 --> 00:02:59.520
Tasty little nuggets and you learn something
to so. So all I know

40
00:02:59.680 --> 00:03:05.159
is that by now the Blazer Puzzle
dot net COOMF version should be available at

41
00:03:05.159 --> 00:03:07.199
the dot net comf website. Right, so go check it out. You'll

42
00:03:07.199 --> 00:03:09.759
have done it by the time you
can hear this show. I will have.

43
00:03:10.199 --> 00:03:13.240
Yes. Cool, that's what I
got. Who's talking to us,

44
00:03:13.280 --> 00:03:15.960
Richard, I'm speaking of Jeff Fritz. We didn't plan this, No,

45
00:03:16.080 --> 00:03:20.479
we didn't plan this. I pulled
a comment from show seventeen to twenty five,

46
00:03:20.520 --> 00:03:23.439
the one we did with Jeff Fritz. I'm talking about Blazer static web

47
00:03:23.479 --> 00:03:28.759
apps. Yeah, and this comments
from Rod Gardner who says I've been teaching

48
00:03:28.800 --> 00:03:31.639
Blazer and it's so much easier than
the previous ways of building dot net websites.

49
00:03:31.759 --> 00:03:35.280
It's actually fun to get rid of
things I need to teach the student

50
00:03:35.319 --> 00:03:38.000
to be able to produce a product. So we can have one course that

51
00:03:38.080 --> 00:03:40.719
teaches all C sharp dot Net Blazer
web development, and then another course that

52
00:03:40.840 --> 00:03:46.759
teaches react or node and then the
student can mix and match the technologies very

53
00:03:46.759 --> 00:03:52.560
cool at their leisure and complete both. So now each course is focused in

54
00:03:52.599 --> 00:03:54.800
a wonderful way. Yeah. So, and it's just an important part of

55
00:03:54.800 --> 00:03:58.520
it is recognizing that as much as
Blazer is all the C sharp stuff,

56
00:03:58.520 --> 00:04:02.159
there's lots of room for react type
absolutely that kind of thing involved in as

57
00:04:02.199 --> 00:04:05.560
well. And that doesn't change in
dot net eight by the way, No,

58
00:04:05.759 --> 00:04:09.719
yeah no, but we're going to
talk about reactor server components. Yeah,

59
00:04:09.759 --> 00:04:12.800
and that might be different. So
Rob, thank you so much for

60
00:04:12.759 --> 00:04:14.800
your comment, and a copy of
music Coba is on its way to you.

61
00:04:14.840 --> 00:04:15.959
And if you'd like a copy of
Musico buy I write a comment on

62
00:04:15.959 --> 00:04:18.519
the website at dot net rocks dot
com or on the facebooks. We publish

63
00:04:18.560 --> 00:04:20.439
every show there, and if you
comment there and I reading the show,

64
00:04:20.600 --> 00:04:25.079
we'll send you a copy of music
Koba and you can follow us on Twitter

65
00:04:25.120 --> 00:04:28.040
if you like. But the real
cool kids are over on Masdon. I'm

66
00:04:28.040 --> 00:04:30.959
at Carl Franklin at tech Hub dot
Social, and I'm Rich Campbell at Masterdon

67
00:04:31.000 --> 00:04:35.319
do Rudy t toot? You get
smarter all the time? I get it.

68
00:04:35.360 --> 00:04:40.480
I know, actually the opposite is
true. Okay, let's bring on

69
00:04:40.519 --> 00:04:45.600
our guests who's been sitting here patiently
waiting to talk. Aurora Welberg is a

70
00:04:45.759 --> 00:04:50.360
full stack cloud developer from Norway.
She has skilled in multiple technologies and domains

71
00:04:50.399 --> 00:04:55.720
such as React, Angular, dot
net, and Azure. Anne has recently

72
00:04:55.720 --> 00:05:00.639
gained a great interest in web development
specifically. She holds a bachelor degree in

73
00:05:00.800 --> 00:05:04.879
Robotics and Intelligence Systems with knowledge of
engineering, mathematics, robotics, algorithms,

74
00:05:04.920 --> 00:05:10.480
data structures, and computer architecture.
After working for a couple of years at

75
00:05:10.480 --> 00:05:15.920
a financial technology startup, she continues
developing as a consultant at In Meta,

76
00:05:15.120 --> 00:05:18.839
Did I say that right? I
would say in Meta in Meta, yeah,

77
00:05:19.000 --> 00:05:23.199
but then people will think you work
for Meta, so I don't recommend

78
00:05:23.240 --> 00:05:27.560
that. In Meta yes, yes, emphasis on the Facebook changes their name

79
00:05:27.600 --> 00:05:30.199
and ruins. We had it first. We had it like year two thousand

80
00:05:30.319 --> 00:05:35.519
that was our name. It was
Grace to be in Feta. That's good.

81
00:05:35.639 --> 00:05:40.079
Okay, it's not good. That's
really all that at that. I

82
00:05:40.160 --> 00:05:46.160
apologize. Reacts server components. I've
never heard of this. What is this?

83
00:05:46.959 --> 00:05:53.079
So this is basically normal React components. You code them like normal,

84
00:05:53.160 --> 00:05:59.879
but their only run server side.
This lets you just pre render everything there

85
00:06:00.199 --> 00:06:02.160
and then when you open your browser, you don't have to wait for them

86
00:06:02.160 --> 00:06:05.279
to load. They're just prered So
they're actually prerenders sitting on the server and

87
00:06:05.279 --> 00:06:12.240
you're just downloading the finished the brows
So but it's just rendered you I.

88
00:06:12.600 --> 00:06:15.560
Yes, uh, there's a lot
to it, but that's what you can

89
00:06:15.680 --> 00:06:17.959
think of it when you're cotting with
it. Yes, so yeah, my

90
00:06:18.040 --> 00:06:23.480
first instinct is an e commerce guy
was making that landing page as fast as

91
00:06:23.519 --> 00:06:27.519
possible. Yeah, it's it's essentially
that. But the thing is you would

92
00:06:27.519 --> 00:06:31.240
already have this with for example,
service side rendering in like next JS.

93
00:06:31.519 --> 00:06:36.480
But what's different here is that you
don't have to add any JavaScript to these

94
00:06:36.720 --> 00:06:41.759
because you know that they're not going
to be ever like rendered on the client,

95
00:06:42.360 --> 00:06:45.680
so you can keep them static,
which is why they're different from and

96
00:06:45.759 --> 00:06:50.680
you can access your sensitive resources directly
without worrying about exposing them exactly. Yeah,

97
00:06:51.000 --> 00:06:55.040
that's basically it. And what what
makes them good is that you can,

98
00:06:55.519 --> 00:07:00.639
you know, work normally with your
React but then optimize it React front

99
00:07:00.680 --> 00:07:05.160
end developer, this is very attractive
to Yes, can you connect with your

100
00:07:05.360 --> 00:07:10.600
front end React components as well?
And yeah, obviously you can weave them

101
00:07:10.639 --> 00:07:15.360
together and mostly it's like straightforward,
but there are some things that you can't

102
00:07:15.360 --> 00:07:18.199
do, like, since this is
like client versus server side, you can't

103
00:07:18.240 --> 00:07:23.319
pass functions I see. Yeah,
since you know you're communicating across the network

104
00:07:23.319 --> 00:07:30.319
here, that's essentially the most important
limitation. And then to optimize your page

105
00:07:30.439 --> 00:07:34.480
you have to do some some new
patterns to for example, make sure if

106
00:07:34.519 --> 00:07:40.519
you have a server component inside like
a normal component, that it doesn't get

107
00:07:40.680 --> 00:07:44.000
rendered on the client side. Right, So you have some new patterns that

108
00:07:44.040 --> 00:07:46.720
you have to follow. Okay,
So let's say I have a server component

109
00:07:46.759 --> 00:07:50.120
that has a page with a button. The button is going to render on

110
00:07:50.199 --> 00:07:56.720
the client and then there's some React
stuff behind that button that connects back to

111
00:07:56.759 --> 00:08:00.920
the server and does a round trip
kind of thing. Yeah, there's many

112
00:08:00.959 --> 00:08:03.560
ways to do that. So since
you would be here communicating back to the

113
00:08:03.600 --> 00:08:07.720
server, you have to Well,
if it's a function you want to pass

114
00:08:07.759 --> 00:08:11.560
something, you can make an endpoint
back to the server, which from my

115
00:08:11.600 --> 00:08:16.560
impression is that that's very common for
the pages router. But one of the

116
00:08:16.680 --> 00:08:22.920
very exciting things about next JS thirteen
and React server components is that you have

117
00:08:22.000 --> 00:08:26.279
these server actions. I don't know
if you want to jump into this yet

118
00:08:26.600 --> 00:08:30.839
or I think yeah, I think
yes, I think our audience is following,

119
00:08:30.920 --> 00:08:33.279
right, Okay, yea good.
So basically what you can do is

120
00:08:33.320 --> 00:08:37.679
you can have next GAS make this
hidden NPA API end point for you that

121
00:08:37.840 --> 00:08:46.600
just lets you seamlessly just communicate with
the server like actions without doing anything fancy.

122
00:08:46.720 --> 00:08:50.360
Just make a function and then just
call it from anywhere like a client

123
00:08:50.399 --> 00:08:52.960
component. Yeah. So, I
mean I've just been grabbing links for like

124
00:08:54.080 --> 00:08:58.039
React server components, and then there's
the next jas yep, but those are

125
00:08:58.039 --> 00:09:03.639
really reacts over components. Anyway.
The thing is, it's it's very kind

126
00:09:03.639 --> 00:09:07.440
of complicated because you have the reserver
components, but then you have next gs

127
00:09:07.480 --> 00:09:13.080
but it's two different things. But
Rector components are built like together with the

128
00:09:13.080 --> 00:09:18.440
next years thirteen, so they verseill
and reacted or like collaborating here to build

129
00:09:18.480 --> 00:09:22.159
this because it's really hard to get
the proper setup for rc without this whole

130
00:09:22.720 --> 00:09:26.240
like Bungler routing set up that next
year to get along to make this work.

131
00:09:26.360 --> 00:09:31.240
So they've been community communicating and collaborating
to make this work in next years

132
00:09:31.279 --> 00:09:33.679
thirteen because next yas has been about
server rendering stuff for quite a while,

133
00:09:33.759 --> 00:09:37.519
right, Yeah, RCS is new. Yeah, Okay, that's because next

134
00:09:37.600 --> 00:09:43.159
year is old. Like it's r
s C. Yeah r I'm going to

135
00:09:43.240 --> 00:09:45.799
say that because it's faster, because
you say it a lot, So yeah,

136
00:09:45.840 --> 00:09:50.639
don't you Sean Weldermeath g RP g
P r C R. Well,

137
00:09:50.120 --> 00:09:54.279
I was just doing some space stuff. So RCS is Reaction Control Source Systems.

138
00:09:54.320 --> 00:09:56.960
So yeah, it's r s C
okay. And then r c's like

139
00:09:58.039 --> 00:10:03.240
rector A components. Oh no,
the plurals please. So there are multiple

140
00:10:03.240 --> 00:10:11.559
ways to go about doing a web
app now with r SC. Thank you.

141
00:10:11.559 --> 00:10:15.519
So I guess you would call these
rendering strategies. Yes, it's a

142
00:10:15.639 --> 00:10:20.039
very When I was doing my talk
here at NDC Portal, I was like

143
00:10:20.240 --> 00:10:24.360
going through the typical rendering strategies first, because it's very hard to wrap your

144
00:10:24.360 --> 00:10:28.279
head around this if you don't have
some kind of background knowledge of the rendering

145
00:10:28.360 --> 00:10:33.519
strategies of the web. Okay,
but aren't the choices client or server?

146
00:10:33.159 --> 00:10:39.000
Yes? Yeah, well in RC
or reacts next day is thirteen, you're

147
00:10:39.000 --> 00:10:41.080
going to pick between client server,
right, and can you a little mix

148
00:10:41.120 --> 00:10:45.360
and match, Like I've got some
static stuff I can pre render on the

149
00:10:45.399 --> 00:10:48.960
server and send it down and then
you've got islands of dynamic there. Yeah,

150
00:10:48.960 --> 00:10:52.279
you can fetch from services to render
on the client. Yeah, that's

151
00:10:52.279 --> 00:10:54.919
correct. Okay, And I don't
know because you're saying islands, what does

152
00:10:54.960 --> 00:10:58.360
that? Would you say that something
inside of us div tag? Okay?

153
00:11:00.000 --> 00:11:03.960
Interesting because there's this other framework that
has this, this has the rendering strategy.

154
00:11:03.039 --> 00:11:07.720
Okay, So this is not how
next Chafts would do it. It's

155
00:11:07.759 --> 00:11:11.440
a bit different because an island you
kind of think of as Okay, here

156
00:11:11.480 --> 00:11:16.519
there's some JavaScript code like inside this
tank inside this toge a call. Yeah,

157
00:11:16.559 --> 00:11:20.360
but you can also weave more server
stuff inside here, so it's not

158
00:11:20.600 --> 00:11:26.919
just like an island of client.
It's also server components inside if you would

159
00:11:26.960 --> 00:11:30.120
want that, right, So you
can pre render like multiple components and then

160
00:11:30.159 --> 00:11:33.240
put them inside the tree then programmatically
on the client decide where you're going to

161
00:11:33.279 --> 00:11:37.080
stick them. Yep. Okay,
that's a sing So that's difference based.

162
00:11:37.360 --> 00:11:39.840
I love this. I had a
server component to a client component that U

163
00:11:39.879 --> 00:11:45.080
is a server component yep, yeah, it's inception. Y yeah. I

164
00:11:45.120 --> 00:11:46.759
figured by the fourth or fifth duration
of this, you must be getting slower

165
00:11:46.840 --> 00:11:52.720
some Russian doll stuff going on.
I mean, I'm trying to relate this

166
00:11:52.759 --> 00:11:56.200
to you know, how Blazer eight
works, right, because Blazer eight,

167
00:11:56.200 --> 00:11:58.200
you've got a client model, you've
got a server model, and then you

168
00:11:58.279 --> 00:12:01.440
got this hybrid model that starts off
on the server and ends up on the

169
00:12:01.440 --> 00:12:07.559
client. Yeah, you know that
that's kind of where the complexity ends.

170
00:12:07.559 --> 00:12:11.120
I think, well, I could
have said zambal clients islands. That would

171
00:12:11.120 --> 00:12:13.279
have made everybody said, so I'm
going to say that. Yeah, but

172
00:12:13.600 --> 00:12:18.399
you know, I was definitely thinking
in terms of there's a tag. But

173
00:12:18.480 --> 00:12:22.600
you also, you know have post
processing code renders, so you know,

174
00:12:22.720 --> 00:12:26.039
page finishes rendering, and then on
the on finish, some code kicks off

175
00:12:26.039 --> 00:12:30.480
and that wants to do some populating
in places, and maybe there's some sposh

176
00:12:30.519 --> 00:12:33.159
behavior based on the Yeah, there's
some spoish behavior as well, but this

177
00:12:33.240 --> 00:12:37.200
will be for those components that are
client side, right, you don't need

178
00:12:37.240 --> 00:12:39.960
anything else. I'm really happy that
we all have the same glossary there that

179
00:12:41.000 --> 00:12:43.639
we like. We agree, well, it's a part of my glossary.

180
00:12:43.679 --> 00:12:48.519
Now, Yeah, things can be
sposh. You know, an interactive part

181
00:12:48.559 --> 00:12:52.840
of the code is going to fetch
data in a non rendered state and rendered

182
00:12:52.840 --> 00:12:56.720
on the clients. Yeah, but
most of the time you would want your

183
00:12:56.759 --> 00:12:58.519
data to be fetched on the server, so you don't need to fetch your

184
00:12:58.600 --> 00:13:03.279
data thems where I think when I
think about a spot, it's really you

185
00:13:03.320 --> 00:13:05.840
know, you're going you're making trips
to go get data and then de side

186
00:13:05.840 --> 00:13:09.399
what you want to do. But
I guess that's the interesting part about this

187
00:13:09.519 --> 00:13:11.600
is you you don't want to be
purely static that limits what you can do,

188
00:13:13.000 --> 00:13:16.320
but you want dynamic with this little
work happening on the client. So

189
00:13:16.360 --> 00:13:18.240
you literally I mean I always teasing
about the whole. Hey, the client

190
00:13:18.279 --> 00:13:22.960
called the server components, But that's
how you avoid the compute that is already

191
00:13:22.960 --> 00:13:26.720
rendered on the server. You're going
to if the user goes down this path

192
00:13:26.759 --> 00:13:30.440
and clicks on this part where they're
going to need this list. Well,

193
00:13:30.519 --> 00:13:33.159
now go get that server computed piece. That is the list. What are

194
00:13:33.159 --> 00:13:39.440
some of the use cases? Where
are s c You can say React components,

195
00:13:39.480 --> 00:13:45.639
it's okay, shine where they really
do their best. It's like,

196
00:13:46.679 --> 00:13:50.240
since this is like new React,
it's kind of built for anything. So

197
00:13:52.200 --> 00:13:54.879
typically if you have like a page
that has a lot of static data,

198
00:13:54.279 --> 00:13:58.240
that's great, or you need to
fetch a bunch of data on the server,

199
00:13:58.679 --> 00:14:01.320
and but then you can also weave
in the client kind of freely.

200
00:14:01.399 --> 00:14:05.000
There's not many limitations to how you
can weave these kind of components in.

201
00:14:05.919 --> 00:14:09.840
But you can even just have this
shell of Servey components and have like full

202
00:14:09.840 --> 00:14:16.159
spa spyish behavior inside if you want, and it doesn't really limit you in

203
00:14:16.919 --> 00:14:20.120
any way. That's that's okay.
So it's great for maybe low power mobile

204
00:14:20.120 --> 00:14:24.120
devices because it's fast to get down
and there is a lot of overhead and

205
00:14:24.159 --> 00:14:28.440
you can there is there a big
with React anywhere? Is there a big

206
00:14:28.519 --> 00:14:33.840
download for jobscript download with React?
Well, you do need the like the

207
00:14:33.879 --> 00:14:37.600
main React bundle like you would in
a SPA. So you could say that,

208
00:14:37.679 --> 00:14:41.039
okay, you're downloading a bunch of
React code anyway. But then once

209
00:14:41.080 --> 00:14:45.120
you have it, you can you
know, limit the extra job that is

210
00:14:45.279 --> 00:14:48.440
I don't remember in the numbers,
I don't know either. And it reacts

211
00:14:48.519 --> 00:14:52.519
reducts is like a meg a meg
but that's react reducts, which is not

212
00:14:52.600 --> 00:14:54.799
what we're doing. But you just
you need like the base react and next

213
00:14:54.840 --> 00:15:01.200
and then after that you're going to
be able to limit how much Okay,

214
00:15:01.039 --> 00:15:05.679
yeah, okay, so there's an
argument, Okay, you're doing this,

215
00:15:05.759 --> 00:15:07.960
but you're you're downloading it all this
anyway, but it's not once you have

216
00:15:09.039 --> 00:15:11.519
it a lot, no, and
you end up cashing it pretty quickly.

217
00:15:11.600 --> 00:15:13.960
I mean, actually, I feel
like a lot of what we're talking about

218
00:15:13.960 --> 00:15:18.799
is another kind of caching strategy.
Right You've you've pre reindered chunks of data.

219
00:15:18.039 --> 00:15:20.240
You're just really kind of building out
of cash on that. Like,

220
00:15:20.519 --> 00:15:24.480
yeah, you're building your cash when
you have this. I jump through a

221
00:15:24.480 --> 00:15:28.120
lot of hoops to make landing pages
on e commerce sites fast, where we

222
00:15:28.159 --> 00:15:33.440
would literally sprite the images as data
in the page so that you wouldn't go

223
00:15:33.519 --> 00:15:37.639
trip and get the image, like
anything we could do to just make this

224
00:15:37.679 --> 00:15:41.559
one page go wham, We're here. Thanks Point Rocks page, for example,

225
00:15:41.759 --> 00:15:46.399
uses a streaming to get the first
twenty episodes or whatever right, and

226
00:15:46.440 --> 00:15:52.519
then it's good the time you're down
to the last one and the other You

227
00:15:52.519 --> 00:15:56.279
can do this also with we have
other components like pick what parts are more

228
00:15:56.320 --> 00:15:58.080
important, like your twenty episodes,
and then stream the rest. The question

229
00:15:58.200 --> 00:16:03.240
with any cash is when do you
expire? How often do I refresh that?

230
00:16:03.480 --> 00:16:06.840
But I feel like on a server
side, that's not that scary that

231
00:16:06.919 --> 00:16:10.600
you know when to refresh that you
have events that can occur. Yeah,

232
00:16:10.600 --> 00:16:14.480
you can trigger so these serve actions
you can you can tell them to refresh

233
00:16:14.679 --> 00:16:19.480
your cash basically. Yeah, I
mean my my battered old soul in scaling,

234
00:16:19.559 --> 00:16:25.039
so in scaling websites over the years, like just just refresh at interval.

235
00:16:25.559 --> 00:16:30.720
It's like your desperate urge to do
logical refresh just causes you more grief

236
00:16:30.759 --> 00:16:33.639
than Hey, this doesn't change more
than once a day? How much refreshing

237
00:16:33.679 --> 00:16:37.279
you every day? That's fine if
the content is you know, if it's

238
00:16:37.279 --> 00:16:40.000
only going to change once a day, Yeah, react often do you get?

239
00:16:40.120 --> 00:16:44.120
You have a new episodes once a
right, like what you write on

240
00:16:44.159 --> 00:16:47.720
it, like a once a week. It's a pretty safe bet. Yeah.

241
00:16:47.840 --> 00:16:52.120
Do React server components maintain state for
each user? What do you mean

242
00:16:52.120 --> 00:16:56.639
by that? Okay, so do
I know things about the user that and

243
00:16:56.679 --> 00:17:03.080
I can keep variables and lists and
things just for them in between ground trips.

244
00:17:03.279 --> 00:17:06.920
I mean, if it's like saved
to the user, what do you

245
00:17:06.960 --> 00:17:10.559
mean? All right? So scoped
to the user. So let's say I've

246
00:17:10.599 --> 00:17:15.039
got some variables on the server that
are like, you know, your name,

247
00:17:15.119 --> 00:17:17.759
your address or whatever. I mean, those are dumb examples, but

248
00:17:18.039 --> 00:17:22.880
your email address, and I want
to keep those around between calls, you

249
00:17:22.880 --> 00:17:26.880
know, so I can build up
some state, right, maybe it's a

250
00:17:26.920 --> 00:17:30.599
list of things that are in my
shopping cart for example, or whatever.

251
00:17:30.759 --> 00:17:34.200
I mean. Okay, so this
RC they can they're render on the server,

252
00:17:34.319 --> 00:17:38.160
so you will you can do like
user specific stuff there and then you

253
00:17:38.240 --> 00:17:41.599
get this it's not HTML, but
you can think of it as like this

254
00:17:41.720 --> 00:17:45.039
tree. Then this will be cashed
on the next request. So you have

255
00:17:45.119 --> 00:17:48.359
this cashed and this is like per
user in the server. All right,

256
00:17:48.400 --> 00:17:52.880
So you do have a place where
you can stash things per user. That's

257
00:17:52.920 --> 00:17:56.480
good. Yeah, yeah, So
the shopping scenario is a good one,

258
00:17:56.599 --> 00:18:00.640
but I guess the cart's really living
on the server and you're justaring a token

259
00:18:00.680 --> 00:18:04.079
to having access to it. Yeah
uh yeah, well sorry, Like I'm

260
00:18:04.119 --> 00:18:07.279
just trying to figure out if I'm
filling in a shopping cart in this model.

261
00:18:07.599 --> 00:18:11.400
As I add an item, I
have an identifier for the session,

262
00:18:11.640 --> 00:18:15.079
right, probably a user cookie of
some kind, and that's how I'm tying

263
00:18:15.119 --> 00:18:21.319
it to previous interactions to build up
a shopping cart. What is the question?

264
00:18:21.759 --> 00:18:22.640
It's just like, am I thinking
that's the right way? Like,

265
00:18:22.680 --> 00:18:26.640
how do I know that I'm putting? Maybe these are the wrong questions?

266
00:18:26.720 --> 00:18:32.680
Yeah, I mean in the end, you're generating UI, you're generating static

267
00:18:32.960 --> 00:18:34.680
HTML right right, you can think
of it that way. Yeah, But

268
00:18:34.759 --> 00:18:38.599
obviously you have your cookies and everything
in the service. So this usual mechanism

269
00:18:40.279 --> 00:18:45.519
mechanisms normally a rettis cash or and
something else some other place. Yea.

270
00:18:45.640 --> 00:18:52.000
All that is server side, service
side goop. So what about integrating server

271
00:18:52.160 --> 00:18:59.039
components into an existing React application,
an existing like next g s Yeah yeah,

272
00:18:59.200 --> 00:19:02.519
existing next game okay, yeah,
so an existing next day as that

273
00:19:02.559 --> 00:19:07.440
would typically be like pages router.
And it's kind of hard because this is

274
00:19:07.599 --> 00:19:11.720
like a new cutting pattern and if
you're using lots of state or like state

275
00:19:11.759 --> 00:19:15.559
management, like context. You can't
use it the same way. But what

276
00:19:15.599 --> 00:19:18.720
you can do is you can use
the app router alongside the pages router and

277
00:19:18.759 --> 00:19:25.920
then move some routes, for example, to this new router well without messing

278
00:19:26.039 --> 00:19:27.240
up all the code that you have. And do you have to be on

279
00:19:27.279 --> 00:19:30.759
next JS thirteen? You do that? Yeah, so you want to make

280
00:19:30.799 --> 00:19:34.039
sure you're there. Yeah, but
when you make new next apps, now

281
00:19:34.119 --> 00:19:37.279
it's going to be thirteen and you
can pick like pages or apps. So

282
00:19:37.319 --> 00:19:41.839
if you have an older one,
yeah, I think I think you would

283
00:19:41.880 --> 00:19:45.319
be able to upgrade just next thirteen, keep the pages, don't do anything,

284
00:19:45.319 --> 00:19:48.599
and nothing changes, and then integrate
your app router, sure with the

285
00:19:48.640 --> 00:19:51.920
parts that will benefit the most from
it. Sure. Yeah, it's always

286
00:19:51.920 --> 00:19:55.480
a question of how much trouble it
is to upgrade to the latest. Oh

287
00:19:55.519 --> 00:19:57.880
yeah. But since it's like a
separate folder, it's like a pages folder

288
00:19:57.920 --> 00:20:00.440
on app folder, you don't have
to mix them. You can just pick.

289
00:20:00.480 --> 00:20:03.920
Okay, for example, this page
is like all static, I'll just

290
00:20:03.960 --> 00:20:07.240
put this, or this is like
benefiting from RC, I'll just put this

291
00:20:07.880 --> 00:20:11.000
in the new way of doing it, because it doesn't really they don't mix.

292
00:20:11.160 --> 00:20:14.519
Yeah, you don't need to mix
either. You use the old page

293
00:20:14.680 --> 00:20:15.720
as long as your feet in the
same back end, so they can get

294
00:20:15.720 --> 00:20:18.680
the data. You can render differently
on the new pans. So do you

295
00:20:18.759 --> 00:20:25.039
have any real world stories you can
share about? Yeah, I took kind

296
00:20:25.039 --> 00:20:29.640
of not a risk, but I
decided to use h r C in my

297
00:20:29.759 --> 00:20:34.839
project at my consultancy or my in
my consultancy project, and there were some

298
00:20:34.880 --> 00:20:38.319
things that I had to figure out
like I was like I was when I

299
00:20:38.359 --> 00:20:42.119
was researching this. So, for
example, since this is very new,

300
00:20:44.759 --> 00:20:52.039
things like testing and internationalization and custom
libraries they don't have support for. There's

301
00:20:52.079 --> 00:20:56.400
not that much support yet or resources
about it. So, for example,

302
00:20:56.000 --> 00:21:02.200
in my project, we have this
component library part of the design system of

303
00:21:02.240 --> 00:21:07.640
the customer and it's obviously not built
for RC, so it doesn't have this

304
00:21:07.839 --> 00:21:12.519
use client directive that you need to
define that something is client side, so

305
00:21:12.680 --> 00:21:18.559
to tell next days that this is
in fact containing state for example, you

306
00:21:18.640 --> 00:21:22.839
have to make a wrapper component around
it that just tells next years, Okay,

307
00:21:22.839 --> 00:21:26.480
this is going to be containing client
side logic. So that's like some

308
00:21:26.559 --> 00:21:30.599
extra work that you have to do. Yeah, it works really well,

309
00:21:30.599 --> 00:21:32.559
but you have to you know,
still do it. You have to think

310
00:21:32.599 --> 00:21:36.319
about that and think about it.
And also, if you're going to be

311
00:21:36.359 --> 00:21:41.640
rendering something service side inside these components
from the library, you have to make

312
00:21:41.640 --> 00:21:47.240
a wrapper so that you can slot
these other server components inside, because that's

313
00:21:47.240 --> 00:21:49.920
what you have to do. If
you want to have server code inside client

314
00:21:49.920 --> 00:21:53.640
code, you need to pass it
down as a React prop because that's when

315
00:21:53.680 --> 00:21:57.160
it becomes this reference that the client
component can say, oh, I have

316
00:21:57.240 --> 00:22:00.920
some kind of thing here, I
don't know it is. Make sure is

317
00:22:00.960 --> 00:22:03.880
it actually gonna be pre rendered on
the server to be fetched or is the

318
00:22:03.920 --> 00:22:07.759
call for it then going to render
it on the server, and just a

319
00:22:07.799 --> 00:22:10.920
reference so it has this already,
it's gonna it's gonna get it, but

320
00:22:11.079 --> 00:22:14.039
it's already rendered for you, right, So it's just oh, I have

321
00:22:14.079 --> 00:22:15.400
some code here, I don't know
what it is. Let me just request

322
00:22:15.440 --> 00:22:19.480
it requested by reference and then place
it on the sitch. Yeah, okay,

323
00:22:19.680 --> 00:22:26.319
and something else for example testing,
So React testing library doesn't have a

324
00:22:26.319 --> 00:22:30.720
built in method to test acin components, okay, and this is something that

325
00:22:30.799 --> 00:22:36.640
came with React Server components acin components, which is what you need to add

326
00:22:36.759 --> 00:22:41.720
to await data inside a component.
And as for now, you have to

327
00:22:41.839 --> 00:22:48.519
kind of make this work around to
await when you're testing. And I've seen

328
00:22:48.559 --> 00:22:52.079
a couple of different workarounds and some
of them work, some of them don't.

329
00:22:52.559 --> 00:22:55.759
It's kind of you have to be
like paying attention to the thread on

330
00:22:55.799 --> 00:22:57.519
GitHub. Okay, what can I
do? Is this better now? You

331
00:22:57.559 --> 00:23:02.680
know? So so when you put
your future glasses on, do you think

332
00:23:02.720 --> 00:23:07.039
that this will get it easier?
And it's version kind of thing. Oh

333
00:23:07.119 --> 00:23:10.319
yeah, for sure this people are
already working on fixes for this, and

334
00:23:10.960 --> 00:23:14.480
it's there's workarounds. You can just
have this workaround for now, but be

335
00:23:14.519 --> 00:23:17.519
aware that Okay, if you're going
to have testing, maybe you have to

336
00:23:17.519 --> 00:23:22.480
mix more grounds until it's new new
it's new, yeah yeah, and especially

337
00:23:22.559 --> 00:23:30.119
things like testing. It's it comes
later. And all the people who make

338
00:23:30.400 --> 00:23:38.920
example they don't add testing that yeah
thing. Is it easy to manage dependencies?

339
00:23:41.799 --> 00:23:47.480
Well, it depends. For example, if you're using like any library

340
00:23:47.559 --> 00:23:52.240
that like I was saying, like
you contain state you have to it has

341
00:23:52.240 --> 00:23:55.920
to be made like implemented for r
C. So if you're using like material

342
00:23:56.240 --> 00:24:00.079
U, I okay, it didn't
have support for this until of couple.

343
00:24:00.200 --> 00:24:04.400
I don't remember when, maybe a
month ago, some weeks ago. Yeah,

344
00:24:04.559 --> 00:24:08.000
depends on what else you mean by
managed dependencies. Yeah, this still

345
00:24:08.039 --> 00:24:11.680
feels like this is something you're gonna
search each time. It's like, how

346
00:24:11.720 --> 00:24:14.039
are where are you at? With
material? Oh? Support? That's great?

347
00:24:14.039 --> 00:24:17.759
Okay, but it's good now so
you can use it. I wonder

348
00:24:17.799 --> 00:24:21.400
how they did that because material surely
uses love. It's complicated. I don't

349
00:24:21.440 --> 00:24:23.440
know. I need to research that
more. Yeah, but yeah, different

350
00:24:23.440 --> 00:24:26.640
libry is going to come into play. Do you use standard JavaScript? Are

351
00:24:26.759 --> 00:24:30.880
handling techniques on the server? Or
I would say, like stand it for

352
00:24:30.960 --> 00:24:34.119
next JS? I'm for next JS? Yeah, yeah you can. You

353
00:24:34.160 --> 00:24:37.400
can ever handle there and send it
back to the client. Yep, all

354
00:24:37.480 --> 00:24:40.559
right, in a row. I'm
gonna interrupt for one moment for this very

355
00:24:40.559 --> 00:24:45.559
important message, or two or two
messages you never know, maybe even three,

356
00:24:48.720 --> 00:24:51.960
and we're back. It's done at
Rocks. I'm Richard Campbell, Let's

357
00:24:52.000 --> 00:24:56.920
Carl Franklin, and we're talking to
Aroa Wahlberg here in at NDC Porto with

358
00:24:57.079 --> 00:25:02.599
our view of Gaya on the cross
the river. A bit about reactor server

359
00:25:02.680 --> 00:25:06.759
components. Are SEC you notice how
the sun only shines when we're here recording

360
00:25:06.839 --> 00:25:11.880
in and they go outside it rains
on OI come inside side was bucketing to

361
00:25:11.880 --> 00:25:17.000
get here this morning. It's really
something. I mean, it's just this

362
00:25:17.119 --> 00:25:22.440
feels like early days for r C. Yes, but I think a lot

363
00:25:22.440 --> 00:25:25.960
of people are just scared to try
it because it's more complicated. Sure,

364
00:25:26.240 --> 00:25:30.759
but it's also turning. It's pushing
against this whole static websites. Like there's

365
00:25:30.759 --> 00:25:36.000
a reason these features are emerging because
they are efficient when done properly. But

366
00:25:36.039 --> 00:25:40.960
it's always a trade. I'm going
to add complexity right speed ultimately yep,

367
00:25:41.039 --> 00:25:44.519
So you got to balance those two
things exactly. But I would say if

368
00:25:44.559 --> 00:25:48.319
you kind of get through the complexity, then after you know it, you

369
00:25:48.400 --> 00:25:51.640
know it. So yeah, okay, you were learning to react and you

370
00:25:51.799 --> 00:25:55.440
it was complex to you know,
learn everything like effects in that in the

371
00:25:55.480 --> 00:25:57.359
beginning, but then you know it
and it's good and then everyone knows it

372
00:25:57.440 --> 00:26:00.480
and okay, this is the way
we do things now. So when you

373
00:26:00.559 --> 00:26:04.640
learn the patterns for RC, I
would say it's pretty efficient to just code

374
00:26:04.880 --> 00:26:08.039
that way instead. Yeah, and
you do get a bunch of bet offs

375
00:26:08.079 --> 00:26:11.920
like that. A lot the net
behavior for the server and the client are

376
00:26:11.920 --> 00:26:15.200
going to be pretty good. And
actually a lot of things are easier.

377
00:26:15.759 --> 00:26:18.920
For example, I fetching data,
you just fetch it and then it's there.

378
00:26:18.039 --> 00:26:22.759
You don't have to worry about it
at all, So things are easier

379
00:26:22.799 --> 00:26:25.359
as well. Yeah, there's a
lot that's just happening under the hood.

380
00:26:25.400 --> 00:26:27.599
As a server component, you don't
have to think about I've written that code

381
00:26:27.680 --> 00:26:32.799
like that's no fun. So yeah, great that it takes care of it.

382
00:26:32.839 --> 00:26:36.920
But what are you looking at for
what comes next for RC? Well,

383
00:26:36.960 --> 00:26:41.039
I'm using it, and I'm obviously
hoping that my testing is going to

384
00:26:41.039 --> 00:26:48.440
be easier. I just want to
see more like bigger products with it because

385
00:26:48.640 --> 00:26:53.599
I'm always looking for reference code and
there are some. But again, it's

386
00:26:53.640 --> 00:26:59.720
not like a production app. It's
just somebody's project that they're trying out things

387
00:27:00.000 --> 00:27:03.119
of people experimenting with a lot of
people experimenting. But you, like you

388
00:27:03.160 --> 00:27:06.559
said, material UI seems to have
put some effort into making it work properly.

389
00:27:07.279 --> 00:27:10.000
Yes, but it took them a
really long time. So there was

390
00:27:10.039 --> 00:27:17.279
this this discussion about that next US
should have let library authors start this before

391
00:27:17.319 --> 00:27:19.160
they were like, okay, this
is stable now because then they're saying it's

392
00:27:19.160 --> 00:27:22.599
stable, but then there's no support
for the things that people want to use,

393
00:27:22.799 --> 00:27:27.200
right, so it's kind of it's
crippled too. I think you were

394
00:27:27.200 --> 00:27:30.839
saying a long time in web terms, which is not that long a time.

395
00:27:33.759 --> 00:27:37.200
Do you have like a conversion web
to dog. They've seen we have

396
00:27:37.359 --> 00:27:44.359
web time and the physical time.
It hasn't been that long. But yeah,

397
00:27:44.799 --> 00:27:48.839
it's interesting that they would hold back, like discourage people from starting to

398
00:27:48.920 --> 00:27:52.119
adapt it while they were making the
initial version. And I think that has

399
00:27:52.200 --> 00:27:56.920
also contributed to people being hesitant because
Okay, it doesn't work with material.

400
00:27:56.119 --> 00:27:59.960
I guess there's probably more things you
can't do this. Yeah, yeah,

401
00:28:00.160 --> 00:28:03.119
so and then you can like catch
up. Okay, I don't know what's

402
00:28:03.160 --> 00:28:06.079
compatible and what's not, so I'll
just wait until I see that somebody else

403
00:28:06.119 --> 00:28:07.200
is ye it. Right, But
if nobody uses it, there's not a

404
00:28:07.200 --> 00:28:11.880
lot of incentive to put the effort
into making all these other libraries work with

405
00:28:11.920 --> 00:28:15.680
it. But I think, I
mean, this is react eighteen has a

406
00:28:15.720 --> 00:28:22.759
lot of features that is really only
usable or efficient in next jays, right,

407
00:28:22.160 --> 00:28:26.559
So you're gonna it's gonna get there
for sure, Like for example,

408
00:28:26.599 --> 00:28:32.960
this concurrency mode which is in React
eighteen, which lets you like define non

409
00:28:33.000 --> 00:28:37.799
blocking actions or state updates. There's
this used transition. You can like wrap

410
00:28:37.839 --> 00:28:41.359
it around for example server server call
and then do other things while it's or

411
00:28:41.359 --> 00:28:45.519
interrupted while you're while it's like calling. Right, So there's a lot of

412
00:28:45.519 --> 00:28:49.400
things that you're going to want that's
with React that you need to use server

413
00:28:49.839 --> 00:28:53.279
or recserver components to get the most
out of. But next JAS always plays

414
00:28:53.319 --> 00:28:57.079
a big role in this, Yeah, because they've been they've been developing this

415
00:28:57.160 --> 00:29:02.519
together because it's kind of you need
this framework. You can't just use them

416
00:29:02.519 --> 00:29:06.559
on your own. It's too complicated. But I mean, it's just realizing

417
00:29:06.680 --> 00:29:10.200
like other times we've talked about React
here, we've gone more like the React

418
00:29:10.240 --> 00:29:14.119
and reducts approach, which seems very
different from what you're describing. Yeah,

419
00:29:14.119 --> 00:29:17.000
because now you have all your data
on the server, right. Yeah.

420
00:29:17.039 --> 00:29:25.480
So apparently MUCKs dot com has upgraded
to use adopted React server components. It

421
00:29:25.599 --> 00:29:32.640
involved transitioning fifty thousand lines of code
to incorporate the use of our sc indicating

422
00:29:32.640 --> 00:29:37.920
a substantial adoption. They have about
five thousand customers. I wonder why they

423
00:29:37.960 --> 00:29:41.480
decided to do that because from what
I'm like, it doesn't look it doesn't

424
00:29:41.480 --> 00:29:45.759
seem like you would want to migrate
your app directly. No, they migrated

425
00:29:45.799 --> 00:29:51.759
their domains MUCKs dot com and doc
dot MUCKs dot com to utilize React server

426
00:29:51.799 --> 00:29:53.920
components. So it wasn't migration.
Yeah, that's a lot of work.

427
00:29:55.440 --> 00:29:57.119
I don't think that. I don't
think you should be considering Okay, I'm

428
00:29:57.119 --> 00:30:00.359
going to migrate all my apps.
Now, that's a lot of work because

429
00:30:00.359 --> 00:30:03.400
it's like a complete different pattern.
You have to think about these limitations.

430
00:30:03.440 --> 00:30:08.039
You can't just call your server from
anywhere, right, So that seems like

431
00:30:08.119 --> 00:30:11.640
something not anyone would want to do. Yeah, I'm surprised he did it.

432
00:30:11.960 --> 00:30:21.160
And this is the video online organization
must Yeah, so they apparently they

433
00:30:21.160 --> 00:30:26.279
wanted performance improvements architecture. That's fair. I'm looking for some metrics right now.

434
00:30:26.279 --> 00:30:29.799
But if I find something out that, you know, it's just yeah,

435
00:30:29.960 --> 00:30:30.640
you know, that's always interesting.
It's like, hey, if we

436
00:30:30.720 --> 00:30:34.279
just re engineered the whole site,
it'll go faster, which to me reads

437
00:30:34.359 --> 00:30:38.000
like, hey, leave us alone
for four months. Yeah, because we've

438
00:30:38.000 --> 00:30:41.720
got to re engineer this thing that
was your migration. Did you just update

439
00:30:41.799 --> 00:30:48.519
your side. Uh. Carl rewrote
this, the old SPA site into a

440
00:30:48.599 --> 00:30:51.799
laser site, right, right?
Is it is? It? Can I

441
00:30:51.880 --> 00:30:56.039
use your site? Sure rocks dot
com? I'm kidding? Could it be

442
00:30:56.079 --> 00:31:02.640
a server? Could it be your
React server component site? Probably not not

443
00:31:02.720 --> 00:31:07.000
if you want me to write it, you wouldn't want that. But I

444
00:31:07.039 --> 00:31:10.720
do plan on moving it to Blazer
eight. It's probably already there by now,

445
00:31:10.799 --> 00:31:15.839
but Blazer eight in automode, that's
what it's going to be. Yeah,

446
00:31:15.880 --> 00:31:18.000
so you have the choice. It's
client and server side renders, it

447
00:31:18.039 --> 00:31:22.200
is. It is interesting the amount
of convergence that's going on with these different

448
00:31:22.200 --> 00:31:30.160
web technologies around the mixing of client
execution and server execution. Like just we're

449
00:31:30.200 --> 00:31:33.599
all trying to do this now,
like it's the it's is it just a

450
00:31:33.720 --> 00:31:36.720
hip solution or is it really that
powerful? All right? So this is

451
00:31:36.759 --> 00:31:40.599
good? Let me answer before you
answer. I asked chat GPT was this

452
00:31:40.680 --> 00:31:44.839
migration a success? And it says
this is great. The documentation about mux's

453
00:31:44.920 --> 00:31:51.079
migration of rc RSC does not provide
specific metrics or explicitly state whether the migration

454
00:31:51.240 --> 00:31:55.359
was success. However, the art
this is great. However, the article

455
00:31:55.440 --> 00:32:05.440
mentions that moving to React server components
was quote probably worth it only probably probably

456
00:32:05.440 --> 00:32:16.960
worth it. Oh that's great.
So I don't know. I'm not recommending

457
00:32:17.000 --> 00:32:20.960
migrating, by the way, I'm
just recommending new projects, new projects.

458
00:32:21.000 --> 00:32:22.839
Yeah, projects, Yeah, I
just wanted to find out if there was

459
00:32:22.880 --> 00:32:27.720
somebody who went ahead and did it. Yeah, well it's it's interesting.

460
00:32:27.839 --> 00:32:30.680
And then they did the hard thing. They took existing working code and threw

461
00:32:30.680 --> 00:32:34.440
it into a new model. It's
a good way to make code that used

462
00:32:34.480 --> 00:32:38.119
to work not work. I mean
really, yeah, probably worth it.

463
00:32:38.200 --> 00:32:43.799
At the same time, like if
you've heavily optimized a site, especially talk

464
00:32:43.799 --> 00:32:45.720
about something like a video streaming site
like max, Like that's not a trivial

465
00:32:45.759 --> 00:32:51.680
problem. No, you're looking for
like, what's the performance game that lets

466
00:32:51.720 --> 00:32:53.759
you want to take that? Bet? I wonder the reasoning, Yeah,

467
00:32:53.799 --> 00:32:59.799
what's the game you're looking Well,
if I could into it what they mean

468
00:32:59.839 --> 00:33:05.319
by probably worth it is right now? Nah, you know, but in

469
00:33:05.359 --> 00:33:08.119
the future as things, yeah get
better and we get to version two or

470
00:33:08.160 --> 00:33:14.119
three, if they if they're like
I don't know, maybe they're like planning

471
00:33:14.119 --> 00:33:15.759
for the future kind of they want
to do it now so that when they

472
00:33:15.759 --> 00:33:19.640
add things it's not going to make
the sides slower. Yeah. Yeah,

473
00:33:19.759 --> 00:33:23.319
unless r s C r CS pulls
an angular, right better being an r

474
00:33:23.359 --> 00:33:28.359
SC no plete. Yeah, complete
the complete rewrite from one point one to

475
00:33:28.400 --> 00:33:30.160
two. Yeah. If they pull
an angular, these guys are screwed.

476
00:33:32.160 --> 00:33:35.720
Do it again, do it again. Let's go back to the old one.

477
00:33:36.200 --> 00:33:39.200
It'll be fine. Or have we
actually found a case where it's like,

478
00:33:39.200 --> 00:33:42.400
hey, we got we got to
wait to work on something and be

479
00:33:42.480 --> 00:33:45.759
left alone for a few months,
so we reached the whole site. As

480
00:33:45.799 --> 00:33:49.519
for this, you said it was
like trendy, this like server client.

481
00:33:49.680 --> 00:33:52.160
Mm hmm. I think it's just
everybody's just trying to find a solution because

482
00:33:52.160 --> 00:33:57.119
they're tired of pages not being interactive. Right. Well, the great old

483
00:33:57.119 --> 00:34:00.400
spat the SPA bunk, well not
only the SPA page, and it's just

484
00:34:00.400 --> 00:34:02.039
sort of sitting there for a while. Yep, you got a lot of

485
00:34:02.079 --> 00:34:07.480
spinners. Yeah. And then also
you click a button and doesn't more spinners

486
00:34:07.519 --> 00:34:10.719
and running around. It's like,
you know, there's a all you from

487
00:34:10.760 --> 00:34:14.800
a system in perspective, When you
want to see spas really happy, you

488
00:34:15.000 --> 00:34:20.400
just shut the DNS servers off and
watch them go. Ye, and the

489
00:34:20.440 --> 00:34:23.320
problem is that the page has no
way to cope with that, so suddenly

490
00:34:23.320 --> 00:34:27.719
it doesn't know where it's going,
and so it's just spinning like that's the

491
00:34:27.960 --> 00:34:30.639
problem. The thing that makes people
angry about spas is when it fails.

492
00:34:30.639 --> 00:34:37.079
It fails opaquely. You just don't
know what didn't render in that box or

493
00:34:37.119 --> 00:34:40.079
why it didn't render. It's hard
to make it feel like you know what's

494
00:34:40.119 --> 00:34:43.719
going on. But then again,
it is a good signal to the client

495
00:34:43.800 --> 00:34:45.840
that, oh, maybe my internet
went down the yeah, maybe my WiFi

496
00:34:46.159 --> 00:34:52.880
router is rebooting, or but my
browsers still open. Everything should be fine.

497
00:34:52.320 --> 00:34:58.679
Yeah, modal dialogue pops up.
You're screwed. Something bad has happened.

498
00:34:59.599 --> 00:35:05.480
Okay, okay, I mean it's
bad enough. You have to agree

499
00:35:05.519 --> 00:35:09.519
that it's bad. I'm not going
to do anything until you agree with me

500
00:35:10.320 --> 00:35:16.960
that it's bad. There's never a
not okay. You know it's not okay.

501
00:35:17.639 --> 00:35:23.159
Almost every okaybody would be better if
it said not okay. It's just

502
00:35:23.280 --> 00:35:29.000
thumbs down. But I'm sorry.
What we were talking about. We were

503
00:35:29.000 --> 00:35:34.760
talking about something about our You're going
to get it one of these days,

504
00:35:34.800 --> 00:35:38.000
for sure. Yeah. I just
want to hear about some more gotchas that

505
00:35:38.119 --> 00:35:43.280
you think will be evened out over
time, anything that we missed? What

506
00:35:43.320 --> 00:35:46.280
do you mean? Sorry? Gotchas? In other words, you know things

507
00:35:46.280 --> 00:35:52.400
that people who are going to get
started might fall into a trap or work

508
00:35:52.440 --> 00:35:57.960
around. Oh yeah, for example, this how your new cloning pattern?

509
00:35:58.199 --> 00:36:00.199
Did you have to think about?
Okay, if I want the server code

510
00:36:00.199 --> 00:36:05.000
inside this client code, if I
just put a component there, it's going

511
00:36:05.039 --> 00:36:07.960
to turn into client code and then
I'm just back at my normal starting visit.

512
00:36:08.039 --> 00:36:10.639
No, is it me? Or
is it kind of a mind you

513
00:36:10.719 --> 00:36:15.960
know what to have to figure out
a server with a client, a server

514
00:36:15.079 --> 00:36:19.079
with the two clients, and one
of those clients as a server. Does

515
00:36:19.119 --> 00:36:23.360
it really get that complicated? You
could say, But it's not complicated once

516
00:36:23.440 --> 00:36:28.079
you kind of once you have this
idea in your in your head or like

517
00:36:28.079 --> 00:36:31.400
a mental model as they say,
it's it just kind of goes naturally you

518
00:36:31.440 --> 00:36:35.440
know what to do. It doesn't. You don't have to have this entire

519
00:36:35.480 --> 00:36:38.239
tree in your head. You just
kind of so like once you get to

520
00:36:38.320 --> 00:36:42.039
a point where you need some interaction, you say, okay, well that's

521
00:36:42.079 --> 00:36:45.840
a client, that's a component,
and it becomes very organized because since all

522
00:36:45.880 --> 00:36:50.159
your code is like separated this way, it's very easy to kind of follow

523
00:36:50.239 --> 00:36:52.760
through. Like if you're looking at
code, okay, you can just click

524
00:36:52.800 --> 00:36:55.320
this. It's a component. It's
on the client. You know what type

525
00:36:55.360 --> 00:36:58.880
of logic it's going to contain.
The guardrails are in there, Like,

526
00:36:58.920 --> 00:37:01.519
there's no way that can write client
code that tries to, you know,

527
00:37:01.679 --> 00:37:06.679
use a database connection string to go
out and do something. I mean,

528
00:37:06.719 --> 00:37:08.320
it's not going to be a client
component, yes, unless you tell it

529
00:37:08.360 --> 00:37:10.639
to so, and if you have
the if you try to do that,

530
00:37:10.639 --> 00:37:14.880
I mean, it doesn't exist there. There's no connection string on the client.

531
00:37:15.039 --> 00:37:17.320
Sure, so it's going to be
hard, but it's still possible for

532
00:37:17.360 --> 00:37:21.960
me, as if I'm a dumb
computer programmer, to put secrets on the

533
00:37:21.960 --> 00:37:25.079
client. Nobody's keeping me from doing
that. You mean, you can hard

534
00:37:25.119 --> 00:37:29.639
to put it in there, but
that's very well done. If you're able

535
00:37:29.719 --> 00:37:35.320
to hard specifically into a client component, you're gonna get a call. The

536
00:37:35.360 --> 00:37:37.960
boss wants to see you. Now, what have you done? What did

537
00:37:38.039 --> 00:37:44.800
you do? Okay? So,
yes, it's complex, but it's no

538
00:37:44.880 --> 00:37:49.840
more complex than anything that you would
do in next JS. In fact,

539
00:37:49.880 --> 00:37:52.760
it sounds like it's simplifying next year, and for me it's it's been really

540
00:37:52.800 --> 00:37:55.159
good, Like, okay, it
was it was, you know, reading

541
00:37:55.159 --> 00:37:58.920
about in the beginning, Okay,
this is how it works, and then

542
00:37:58.960 --> 00:38:01.480
you get into it and then you
kind of unlock this new world and it's

543
00:38:01.599 --> 00:38:06.400
very natural to use it just kind
of code and it works the way you

544
00:38:06.480 --> 00:38:10.159
expected to. In my opinion,
would you recommend that people look at it

545
00:38:10.199 --> 00:38:14.000
now as a solution they can use
in production or would you wait, I

546
00:38:14.039 --> 00:38:16.599
would maybe. I mean, I'm
doing so, but I have yet to

547
00:38:16.639 --> 00:38:21.800
see kind of the results of this, so I would want to just have

548
00:38:21.880 --> 00:38:27.440
some more It's probably worth it.
It's probably worth it. Well, clearly

549
00:38:27.480 --> 00:38:31.440
the MUCKs people think that, I
don't know, I would have to have

550
00:38:31.480 --> 00:38:35.960
some more experience and some more data
points. So it's more like, you

551
00:38:36.000 --> 00:38:38.360
know, if you're a React client
programmer and you want to you want to

552
00:38:38.400 --> 00:38:43.000
keep your skills sharp, check it
out for sure, But then also like,

553
00:38:43.000 --> 00:38:45.280
why would you go back and use
the pages router if you have this?

554
00:38:45.639 --> 00:38:50.559
Yes, okay, that's kind of
what my justification was. Why would

555
00:38:50.559 --> 00:38:52.559
I pick the old one when there's
this new one that's simplifying things? And

556
00:38:52.639 --> 00:38:55.239
less clunky to use. Yeah,
yeah, yeah, I'm wondering about folks

557
00:38:55.239 --> 00:39:00.639
that are they're down the React path, they're running some performance and things like

558
00:39:00.679 --> 00:39:06.400
this, and they're thinking about jumping
to another server tech for sure. Definitely,

559
00:39:06.760 --> 00:39:08.920
we already know how to do React
and our and RC seems to be

560
00:39:08.960 --> 00:39:13.039
able to help us. So I'm
not saying we go whole hog yet,

561
00:39:13.079 --> 00:39:15.920
but this sounds like a spike,
like, yes, pick up problem page.

562
00:39:15.960 --> 00:39:20.480
It's fixing problems for sure, build
another version of just that page.

563
00:39:20.800 --> 00:39:22.199
Yeah, you know they want to
still be there, but let's try this

564
00:39:22.239 --> 00:39:25.159
one and see if it makes a
difference. And also if you're like considering

565
00:39:25.239 --> 00:39:29.480
this for your production apps or whatever, it could be good to do some

566
00:39:29.519 --> 00:39:34.280
research and maybe if you have a
specific specific requirements that you know you need,

567
00:39:34.280 --> 00:39:37.199
like mine was like internationalization and component
library, you know, try it

568
00:39:37.239 --> 00:39:40.440
out in like a prototype first,
see if you can solve it. How

569
00:39:40.519 --> 00:39:44.559
much work is it? You know, how much battle did we do to

570
00:39:44.599 --> 00:39:46.480
get that? And then bench them
together, like there's a lot you could

571
00:39:46.480 --> 00:39:50.639
do just spiking on a page like
that. You just check it out,

572
00:39:50.679 --> 00:39:53.360
see how it works. If you
have something that's you know, nonstandard and

573
00:39:53.599 --> 00:39:57.960
If it's not it, you may
bump into features you aren't ready yet,

574
00:39:58.000 --> 00:40:00.639
or you may have dependencies that are
problematic. If you don't beautiful, if

575
00:40:00.679 --> 00:40:05.760
you do, work around or shelve
it for a couple of months and look

576
00:40:05.760 --> 00:40:09.760
at it again as more of the
library start to or call Aurora dot com.

577
00:40:09.840 --> 00:40:15.519
Yes right, yeah, I put
something about testing there on my blog.

578
00:40:15.880 --> 00:40:21.840
Okay, that's that's my experience with
testing. We're going the sales pipeline

579
00:40:21.880 --> 00:40:25.639
for in meta. So how can
people get a hold of you Twitter?

580
00:40:25.760 --> 00:40:30.679
Twitter is good, it's Aurora underscore
Wahlburg. You can con me there.

581
00:40:30.840 --> 00:40:32.840
And I have a lot like I
have. I don't have any much public

582
00:40:32.840 --> 00:40:37.480
code, but anything that people want
to talk about about RC I really want

583
00:40:37.480 --> 00:40:42.360
to know available for consulting when somebody
wants to Oh yes, I don't want

584
00:40:42.360 --> 00:40:45.039
to go that far. All right, So what's next for you? What's

585
00:40:45.039 --> 00:40:51.800
in your inbox? Like, uh
like talks or all of those things.

586
00:40:51.960 --> 00:40:55.639
Anything. I'm well, I'm here. It's very exciting, and I'm going

587
00:40:55.679 --> 00:41:00.639
to Norwegian conference next week. Actually
it's it's yeah Monday. I'm going to

588
00:41:00.719 --> 00:41:05.280
talk about Astro. Those islands you
were mentioning by accident, they have this

589
00:41:05.400 --> 00:41:08.199
island architecture that they call it,
so I'm going to be talking about that

590
00:41:08.360 --> 00:41:13.480
there. It's another web framework,
very interesting also, well you're all the

591
00:41:13.519 --> 00:41:16.159
web framework then, and then you
know, I have to catch up some

592
00:41:16.239 --> 00:41:19.800
hours now that I've been here in
Portrait of Portugal. Yeah, you've been

593
00:41:19.800 --> 00:41:22.079
having too much fun. Now I
have to work for my project again.

594
00:41:22.679 --> 00:41:27.360
It's a billion hours done. Well, thank you very much. This has

595
00:41:27.400 --> 00:41:30.159
been an eye opener for me.
Like like I said, I don't really

596
00:41:30.239 --> 00:41:34.760
know much about reacting, and I
certainly don't really know about jobscript on this

597
00:41:34.880 --> 00:41:37.880
server all that much. But it's
been it's been really interesting. I'm going

598
00:41:37.960 --> 00:41:40.719
to keep watching this good and we
are. We'd like to have you back,

599
00:41:40.800 --> 00:41:44.920
you know, when it hits version
three. Great, I'll be there,

600
00:41:45.239 --> 00:41:49.920
I mean wednesday, all right,
thanks a lot, thank you.

601
00:41:50.039 --> 00:42:14.679
Then we'll see you next time on
dot net rocks. Dot net Rocks is

602
00:42:14.719 --> 00:42:19.679
brought to you by Franklin's Net and
produced by Pop Studios, a full service

603
00:42:19.760 --> 00:42:23.679
audio, video and post production facility
located physically in New London, Connecticut,

604
00:42:23.920 --> 00:42:30.800
and of course in the cloud online
at pwop dot com. Visit our website

605
00:42:30.800 --> 00:42:34.199
at d O T N e t
R O c k s dot com for

606
00:42:34.440 --> 00:42:38.239
RSS feeds, downloads, mobile apps, comments, and access to the full

607
00:42:38.360 --> 00:42:43.840
archives going back to show number one, recorded in September two thousand and two.

608
00:42:44.480 --> 00:42:46.679
And make sure you check out our
sponsors. They keep us in business.

609
00:42:47.079 --> 00:42:52.079
Now go write some code, see
you next time. You got tred

610
00:42:52.199 --> 00:43:01.719
metal vans and then of taxes redin
ball

