WEBVTT

1
00:00:05.120 --> 00:00:09.199
<v Speaker 1>Hey, folks, welcome back to another episode of JavaScript Jabber.

2
00:00:09.599 --> 00:00:12.679
<v Speaker 2>This week, on our panel, we have Steve Edwards.

3
00:00:13.000 --> 00:00:14.240
<v Speaker 3>You had to think about which one you were going

4
00:00:14.320 --> 00:00:15.560
<v Speaker 3>to go to their first second, didn't you.

5
00:00:16.440 --> 00:00:19.160
<v Speaker 1>Well, I didn't want to say dad Joker. Oh sorry

6
00:00:19.160 --> 00:00:20.199
<v Speaker 1>what my brain said?

7
00:00:20.399 --> 00:00:22.679
<v Speaker 3>Oh well that's what most people think. I'll do my

8
00:00:22.760 --> 00:00:25.000
<v Speaker 3>age as yo yo yo, come in at you live

9
00:00:25.039 --> 00:00:26.920
<v Speaker 3>from cold and rainy Portland.

10
00:00:28.120 --> 00:00:29.839
<v Speaker 2>We also have Dan Shapier.

11
00:00:30.359 --> 00:00:33.799
<v Speaker 4>Hi from a freezy tel Aviv at fifty degrees fahrenheit

12
00:00:34.240 --> 00:00:38.119
<v Speaker 4>nine degrees celsius, which is, you know, literally freezing for us.

13
00:00:38.359 --> 00:00:40.920
<v Speaker 3>That's freezing. That would be that's above where I'm at

14
00:00:40.920 --> 00:00:42.000
<v Speaker 3>now in the middle of the day.

15
00:00:43.039 --> 00:00:45.759
<v Speaker 2>Yeah. I'm Charles Maxwood from top Ed Devson. Yeah.

16
00:00:45.799 --> 00:00:48.880
<v Speaker 1>It's it's forty some degrees here. Yeah, and I went

17
00:00:48.920 --> 00:00:50.320
<v Speaker 1>for a walk, so.

18
00:00:50.759 --> 00:00:52.240
<v Speaker 3>Yeah, I know it's far better for us.

19
00:00:52.439 --> 00:00:52.640
<v Speaker 2>Man.

20
00:00:53.039 --> 00:00:54.600
<v Speaker 3>Yeah.

21
00:00:54.640 --> 00:00:57.479
<v Speaker 2>We also have Lee Robinson. Lee, welcome back.

22
00:00:58.439 --> 00:01:01.840
<v Speaker 5>It's good to be here. It's fifty eight degrees fahrenheit here,

23
00:01:01.920 --> 00:01:05.359
<v Speaker 5>which is like a sauna because it was negative fahrenheit

24
00:01:05.519 --> 00:01:06.400
<v Speaker 5>like last week.

25
00:01:06.680 --> 00:01:11.079
<v Speaker 1>So yeah, I was gonna say when I come out there,

26
00:01:11.120 --> 00:01:12.719
<v Speaker 1>but if you're getting negatives, forget it.

27
00:01:13.239 --> 00:01:16.200
<v Speaker 5>Yeah, that's classic Midwest. It's very cold.

28
00:01:17.120 --> 00:01:17.560
<v Speaker 2>Yeah.

29
00:01:17.599 --> 00:01:20.159
<v Speaker 1>So it's been what a year or so since we

30
00:01:20.200 --> 00:01:21.879
<v Speaker 1>had you on What's New.

31
00:01:23.000 --> 00:01:26.000
<v Speaker 5>A lot, there's lots we can talk about through next Yes,

32
00:01:26.159 --> 00:01:29.599
<v Speaker 5>per Sell, V zero and AI, all sorts of fun stuff.

33
00:01:30.319 --> 00:01:32.280
<v Speaker 1>Yeah, sounds like you're mostly doing the same kind of

34
00:01:32.280 --> 00:01:33.519
<v Speaker 1>thing that you were doing last time.

35
00:01:34.480 --> 00:01:35.920
<v Speaker 5>Yes, Yes, definitely.

36
00:01:36.760 --> 00:01:39.840
<v Speaker 4>I was saying before we started that it's pretty amazing

37
00:01:40.079 --> 00:01:43.959
<v Speaker 4>to me that such a small company relatively speaking, of course,

38
00:01:44.040 --> 00:01:46.640
<v Speaker 4>because you're a multi billion dollar company with a few

39
00:01:46.719 --> 00:01:51.439
<v Speaker 4>hundred employees, but it's still relatively small, is able to

40
00:01:51.480 --> 00:01:54.920
<v Speaker 4>have such a huge impact on web development. Like it

41
00:01:55.000 --> 00:01:58.040
<v Speaker 4>seems like everything is kind of revolving around you these

42
00:01:58.120 --> 00:01:59.599
<v Speaker 4>days in one way or another.

43
00:02:01.280 --> 00:02:03.040
<v Speaker 5>One thing that I think has worked well for us

44
00:02:03.239 --> 00:02:06.400
<v Speaker 5>that Ghermo likes to call recursive founder mode, which I

45
00:02:06.400 --> 00:02:08.120
<v Speaker 5>think is kind of funny if you've see in all

46
00:02:08.159 --> 00:02:11.280
<v Speaker 5>the discourse about founder mode, is trying to hire former

47
00:02:11.319 --> 00:02:14.639
<v Speaker 5>founders or people who have that energy and then giving

48
00:02:14.680 --> 00:02:18.039
<v Speaker 5>them ownership and agency over a domain and letting them

49
00:02:18.319 --> 00:02:20.719
<v Speaker 5>kind of run with it. So a good example of

50
00:02:20.759 --> 00:02:24.000
<v Speaker 5>this is just last week we released a flags SDK

51
00:02:24.240 --> 00:02:27.240
<v Speaker 5>for feature flags, an open source toolkit you can use

52
00:02:27.319 --> 00:02:30.719
<v Speaker 5>to implement feature flags correctly in your app using the server,

53
00:02:30.919 --> 00:02:34.080
<v Speaker 5>preventing layout shift with any feature flag provider that you want.

54
00:02:34.479 --> 00:02:36.719
<v Speaker 5>And this is kind of a founder led thing. We

55
00:02:36.759 --> 00:02:39.439
<v Speaker 5>have Dominic who is really owning this project from end

56
00:02:39.439 --> 00:02:41.639
<v Speaker 5>to end. It's a very small team working on this,

57
00:02:41.759 --> 00:02:45.000
<v Speaker 5>but small teams can do amazing things when empowered and

58
00:02:45.080 --> 00:02:46.960
<v Speaker 5>given the right direction and resources.

59
00:02:47.360 --> 00:02:50.599
<v Speaker 4>I was curious if it's based on edge computing.

60
00:02:51.479 --> 00:02:56.479
<v Speaker 5>So we do really recommend people to use the server

61
00:02:56.680 --> 00:03:01.479
<v Speaker 5>in general because most of the jank that you see

62
00:03:01.479 --> 00:03:04.360
<v Speaker 5>in websites that have feature flags is because they wait

63
00:03:04.400 --> 00:03:06.639
<v Speaker 5>for the initial document to get on the page, the

64
00:03:06.680 --> 00:03:10.080
<v Speaker 5>first bundle of JS to load, and then they're evaluating

65
00:03:10.159 --> 00:03:12.520
<v Speaker 5>what feature flags are on and you get that weird

66
00:03:12.840 --> 00:03:16.039
<v Speaker 5>shift of maybe one experiment and then the other. Or

67
00:03:16.319 --> 00:03:18.719
<v Speaker 5>you also see this with authentication, like the logged out

68
00:03:18.759 --> 00:03:20.919
<v Speaker 5>state and then it switches to the logged in state.

69
00:03:21.000 --> 00:03:25.039
<v Speaker 5>So we are strongly pushing for server side experimentation server

70
00:03:25.199 --> 00:03:28.840
<v Speaker 5>side flagging, and to do that, generally you want to

71
00:03:28.840 --> 00:03:32.319
<v Speaker 5>put your flags close to where your database is, so

72
00:03:32.360 --> 00:03:34.759
<v Speaker 5>it's not necessarily that the flags need to live at

73
00:03:34.800 --> 00:03:37.680
<v Speaker 5>the edge. Generally, they'd live at origin by your database,

74
00:03:38.080 --> 00:03:41.159
<v Speaker 5>but you can still do some things early in the

75
00:03:41.240 --> 00:03:44.159
<v Speaker 5>routing layer at the edge. Maybe that's redirects or rewrites.

76
00:03:45.240 --> 00:03:48.759
<v Speaker 5>Maybe that's pre computing multiple different variants of the page

77
00:03:49.039 --> 00:03:51.840
<v Speaker 5>and putting the static shells of those pages at the edge,

78
00:03:51.879 --> 00:03:54.479
<v Speaker 5>like at a CDN layer, so you can fetch those early.

79
00:03:54.800 --> 00:03:56.400
<v Speaker 5>So it's kind of a bit of both. We want

80
00:03:56.439 --> 00:04:00.639
<v Speaker 5>to use the edge layer for the static assets, uh,

81
00:04:00.759 --> 00:04:04.759
<v Speaker 5>and then put your data next to your compute at origin.

82
00:04:05.599 --> 00:04:09.319
<v Speaker 4>Yeah. What some people actually do to reduce shift in

83
00:04:09.400 --> 00:04:13.199
<v Speaker 4>these scenarios when they use client side is to actually

84
00:04:13.400 --> 00:04:17.319
<v Speaker 4>intentionally put render blocking scripts at the very top of

85
00:04:17.360 --> 00:04:20.639
<v Speaker 4>the page. But that obviously comes at a very high

86
00:04:20.680 --> 00:04:24.560
<v Speaker 4>cost for coor vitals Totally.

87
00:04:24.720 --> 00:04:29.160
<v Speaker 5>I think the biggest offender that I see is teams

88
00:04:29.240 --> 00:04:32.360
<v Speaker 5>who don't realize that they're actually leaking all of their

89
00:04:32.399 --> 00:04:35.600
<v Speaker 5>flags on the client side. They're using client side experimentation.

90
00:04:35.759 --> 00:04:38.399
<v Speaker 5>But if you inspect the dom or you you know,

91
00:04:38.439 --> 00:04:41.000
<v Speaker 5>do some magic in your deb tools, you can actually

92
00:04:41.079 --> 00:04:44.600
<v Speaker 5>see every single experiment or every single flag, and you know,

93
00:04:45.079 --> 00:04:46.120
<v Speaker 5>for the you.

94
00:04:46.160 --> 00:04:48.000
<v Speaker 4>Know, it's not necessarily bad.

95
00:04:48.680 --> 00:04:52.639
<v Speaker 5>It's not it's not necessarily bad. Although sometimes I think

96
00:04:53.720 --> 00:04:56.480
<v Speaker 5>maybe on a large enough team. The developer thinks that

97
00:04:56.680 --> 00:04:59.360
<v Speaker 5>is a secret value, and in reality it is not.

98
00:05:00.040 --> 00:05:02.160
<v Speaker 5>They don't realize that they're actually exposing that to the

99
00:05:02.439 --> 00:05:05.040
<v Speaker 5>client side. So it can be fine if you know

100
00:05:05.079 --> 00:05:08.879
<v Speaker 5>what you're doing. I've just seen it misused a few times.

101
00:05:09.759 --> 00:05:12.319
<v Speaker 4>Don't put credentials in feature flex.

102
00:05:12.519 --> 00:05:18.120
<v Speaker 1>Yes, yes, definitely, don't put credentials in your source code

103
00:05:18.160 --> 00:05:18.480
<v Speaker 1>at all.

104
00:05:19.240 --> 00:05:19.839
<v Speaker 5>Yeah.

105
00:05:20.000 --> 00:05:21.959
<v Speaker 1>One thing that I want to just touch on here

106
00:05:22.000 --> 00:05:26.839
<v Speaker 1>because I love the idea of kind of the internal entrepreneur.

107
00:05:28.480 --> 00:05:31.560
<v Speaker 1>I have to say that when I've worked like contracts

108
00:05:31.720 --> 00:05:34.920
<v Speaker 1>or full time jobs, a lot of times it's we're

109
00:05:34.920 --> 00:05:36.639
<v Speaker 1>going to give you features and then you're just going

110
00:05:36.720 --> 00:05:41.000
<v Speaker 1>to implement them. And I really like that open feeling

111
00:05:41.120 --> 00:05:46.720
<v Speaker 1>of hey, we need this solution, go make it like that.

112
00:05:46.720 --> 00:05:49.079
<v Speaker 1>That would kind of be if I didn't want to

113
00:05:49.120 --> 00:05:52.439
<v Speaker 1>take the entrepreneurial risk, that would be my ideal job.

114
00:05:53.160 --> 00:05:57.560
<v Speaker 5>So Yeah, we like to think about empowering startups within

115
00:05:57.560 --> 00:06:00.759
<v Speaker 5>a startup. So another good example of this is our

116
00:06:00.759 --> 00:06:04.639
<v Speaker 5>productvzero dot dev, which allows you to very quickly build

117
00:06:04.680 --> 00:06:08.319
<v Speaker 5>websites and web applications with AI or just better understand

118
00:06:08.399 --> 00:06:11.120
<v Speaker 5>how to use web tools like next yess and react

119
00:06:11.240 --> 00:06:15.319
<v Speaker 5>through AI, and that team is very small and it's

120
00:06:15.399 --> 00:06:19.000
<v Speaker 5>led by a former founder who really understands how to

121
00:06:19.000 --> 00:06:21.720
<v Speaker 5>build great products and has been given you know, a

122
00:06:21.759 --> 00:06:25.360
<v Speaker 5>budget autonomy to build this product into end and really

123
00:06:25.399 --> 00:06:29.240
<v Speaker 5>monitor success and own their numbers. And it's it's working

124
00:06:29.279 --> 00:06:29.759
<v Speaker 5>pretty well.

125
00:06:30.360 --> 00:06:35.319
<v Speaker 4>So, since you didn't mention, V zero and AI seems

126
00:06:35.360 --> 00:06:37.040
<v Speaker 4>to be a fairly popular topic.

127
00:06:37.720 --> 00:06:39.639
<v Speaker 2>Yeah, not around here.

128
00:06:40.279 --> 00:06:41.639
<v Speaker 5>Yeah, what does AI stand for?

129
00:06:42.480 --> 00:06:48.040
<v Speaker 4>Okay, Apple Intelligence? I think there you go. Yeah, anyway, anyway,

130
00:06:49.439 --> 00:06:53.519
<v Speaker 4>what can you tell us about V zero? I mean

131
00:06:54.040 --> 00:06:57.439
<v Speaker 4>I've seen it, I played with it. It's really cool,

132
00:06:57.639 --> 00:07:01.120
<v Speaker 4>but you know what, what can you tell us about it?

133
00:07:01.800 --> 00:07:05.839
<v Speaker 5>Yeah? So we've been working on vzo for over a

134
00:07:05.920 --> 00:07:09.800
<v Speaker 5>year now. The first version that we released was kind

135
00:07:09.800 --> 00:07:14.680
<v Speaker 5>of our first experimentation into the generative UI space, taking

136
00:07:14.720 --> 00:07:16.800
<v Speaker 5>these new large language models. At the time that we're

137
00:07:16.839 --> 00:07:19.639
<v Speaker 5>getting really really good at being able to produce code

138
00:07:19.839 --> 00:07:22.879
<v Speaker 5>and figure out how we could help them better craft

139
00:07:23.439 --> 00:07:27.240
<v Speaker 5>the front end, you know, do animations, do CSS. And

140
00:07:27.439 --> 00:07:30.839
<v Speaker 5>over time we've just been slowly and slowly adding more functionality.

141
00:07:31.160 --> 00:07:34.680
<v Speaker 5>So vzero now supports building full stack applications. You can

142
00:07:34.759 --> 00:07:39.600
<v Speaker 5>integrate through databases through Purcell, you can add secrets or

143
00:07:39.720 --> 00:07:42.920
<v Speaker 5>environment variables through for sell to connect to any external services,

144
00:07:43.199 --> 00:07:46.319
<v Speaker 5>maybe some AWSQ service you want to use, could be

145
00:07:46.360 --> 00:07:49.680
<v Speaker 5>really anything. And we've also launched a community that has

146
00:07:49.720 --> 00:07:53.439
<v Speaker 5>published many different VZO generations that you can fork and

147
00:07:53.519 --> 00:07:57.040
<v Speaker 5>get started with. So what once started as a very

148
00:07:57.079 --> 00:07:59.879
<v Speaker 5>small tool to allow you to quickly build some UIs

149
00:08:00.319 --> 00:08:03.959
<v Speaker 5>is now this kind of full featured prototyping and app

150
00:08:04.040 --> 00:08:07.680
<v Speaker 5>building platform that allows devs to take an idea, whether

151
00:08:07.800 --> 00:08:09.959
<v Speaker 5>something they want to build from a screenshot or a

152
00:08:09.959 --> 00:08:13.920
<v Speaker 5>prompt or a pre existing kind of template, take it,

153
00:08:14.079 --> 00:08:17.720
<v Speaker 5>fork it, prompt it, turn it into something that they

154
00:08:17.879 --> 00:08:19.800
<v Speaker 5>would like to build or they would like to use,

155
00:08:20.199 --> 00:08:21.959
<v Speaker 5>and then deployed to purcell and just a couple of

156
00:08:22.000 --> 00:08:24.800
<v Speaker 5>clicks and have that thing actually live on the internet

157
00:08:24.839 --> 00:08:27.279
<v Speaker 5>to share. And since we've been slowly adding more of

158
00:08:27.279 --> 00:08:31.000
<v Speaker 5>these features, the growth trajectory of Vizerra has been it's

159
00:08:31.040 --> 00:08:34.039
<v Speaker 5>been really wild to see. Obviously, AI is very popular

160
00:08:34.080 --> 00:08:36.360
<v Speaker 5>right now and lots of people are interested in getting

161
00:08:36.399 --> 00:08:39.039
<v Speaker 5>excited in how these tools can help them kind of

162
00:08:39.159 --> 00:08:42.279
<v Speaker 5>level up their careers as developers. But I think more

163
00:08:42.360 --> 00:08:47.320
<v Speaker 5>interestingly bring in a whole new group of people into

164
00:08:47.519 --> 00:08:49.960
<v Speaker 5>what it means to be a developer. It's less about

165
00:08:49.960 --> 00:08:52.919
<v Speaker 5>writing the code for these people. It's more about they

166
00:08:52.919 --> 00:08:56.039
<v Speaker 5>have great ideas and they now have tools that actually

167
00:08:56.080 --> 00:08:59.120
<v Speaker 5>allow them to build those ideas. So think about, for example,

168
00:08:59.159 --> 00:09:02.159
<v Speaker 5>the product market is the product managers, maybe some of

169
00:09:02.159 --> 00:09:05.879
<v Speaker 5>the designers who don't have as much coding experience, A

170
00:09:05.879 --> 00:09:08.240
<v Speaker 5>lot of them are being able to use tools like

171
00:09:08.279 --> 00:09:11.039
<v Speaker 5>the Zero and actually build and publish their ideas.

172
00:09:11.519 --> 00:09:13.639
<v Speaker 4>So I have a ton of questions about that. So

173
00:09:13.720 --> 00:09:16.200
<v Speaker 4>first of all, do you want to start?

174
00:09:16.919 --> 00:09:19.720
<v Speaker 2>No, go ahead, Actually let me.

175
00:09:20.919 --> 00:09:23.600
<v Speaker 3>I'm gonna get in. So I don't worship at the

176
00:09:23.600 --> 00:09:27.840
<v Speaker 3>react alter myself. I'm a view DV myself, and so

177
00:09:28.200 --> 00:09:29.879
<v Speaker 3>I tend to work more with you and Laura Vellen,

178
00:09:29.919 --> 00:09:33.919
<v Speaker 3>Nursha and stuff. So I've heard Burssell talked a lot

179
00:09:33.919 --> 00:09:38.080
<v Speaker 3>about but I don't really know it, and I suspect

180
00:09:38.080 --> 00:09:39.639
<v Speaker 3>there's a lot of people listening who might not know

181
00:09:39.720 --> 00:09:40.279
<v Speaker 3>it as well.

182
00:09:40.840 --> 00:09:41.519
<v Speaker 5>So before you.

183
00:09:41.519 --> 00:09:45.159
<v Speaker 3>Dive anymore into Dan's question that I was wondering if

184
00:09:45.200 --> 00:09:48.360
<v Speaker 3>you could just give an overview on what Brossell is

185
00:09:48.840 --> 00:09:51.759
<v Speaker 3>and who it's target audience is, I guess.

186
00:09:51.639 --> 00:09:55.399
<v Speaker 5>Yeah, absolutely, Bricell is a developer cloud. So we're trying

187
00:09:55.440 --> 00:09:58.200
<v Speaker 5>to give you, as a developer all the tools you

188
00:09:58.240 --> 00:10:03.240
<v Speaker 5>need to build websites and applications, from hosting and managing

189
00:10:03.320 --> 00:10:08.879
<v Speaker 5>your react or view or Spelt applications, to having observability

190
00:10:08.919 --> 00:10:14.200
<v Speaker 5>into your production infrastructure usage, integrating with databases or other

191
00:10:14.279 --> 00:10:18.120
<v Speaker 5>back end services and other cloud providers or hyperscalers, bringing

192
00:10:18.159 --> 00:10:20.600
<v Speaker 5>all of these tools into kind of one place that

193
00:10:20.639 --> 00:10:22.720
<v Speaker 5>you can use as you know, you put all your

194
00:10:22.759 --> 00:10:25.120
<v Speaker 5>lego bricks together to actually be able to build your

195
00:10:25.720 --> 00:10:29.639
<v Speaker 5>your amazing piece of art. And that's that's Brissell at

196
00:10:29.679 --> 00:10:30.840
<v Speaker 5>a fifty thousand foot view.

197
00:10:31.120 --> 00:10:34.600
<v Speaker 3>So now you just mentioned VT. I'm sorry you mentioned View,

198
00:10:34.679 --> 00:10:37.759
<v Speaker 3>but I'm looking at your supported frameworks docs and I

199
00:10:37.759 --> 00:10:39.120
<v Speaker 3>don't see you listed anywhere.

200
00:10:39.759 --> 00:10:44.559
<v Speaker 5>Yeah, we Next and Sevelt. I see Next, and now

201
00:10:44.559 --> 00:10:48.799
<v Speaker 5>we support Next is the primary way we see people

202
00:10:48.799 --> 00:10:52.039
<v Speaker 5>deploying view applications to Rosell, but we also support doing

203
00:10:52.279 --> 00:10:55.240
<v Speaker 5>a more traditional just client only view application as well.

204
00:10:55.639 --> 00:10:58.840
<v Speaker 5>Generally we like to recommend NEXT. I think they're building

205
00:10:58.840 --> 00:11:01.240
<v Speaker 5>something really great with the framework. But also if you

206
00:11:01.279 --> 00:11:05.600
<v Speaker 5>want to use a like VT and view application for example,

207
00:11:05.600 --> 00:11:06.519
<v Speaker 5>that's also supported.

208
00:11:07.519 --> 00:11:12.600
<v Speaker 4>Okay, So going back to V zero, first of all,

209
00:11:13.120 --> 00:11:16.639
<v Speaker 4>V zero V one.

210
00:11:16.240 --> 00:11:18.960
<v Speaker 5>Yeah, right, it's like, Okay, as we continue to iterate

211
00:11:19.039 --> 00:11:22.159
<v Speaker 5>on it, do we bump above the version number? No,

212
00:11:22.600 --> 00:11:25.399
<v Speaker 5>the naming it's it's kind of funny.

213
00:11:27.320 --> 00:11:27.440
<v Speaker 2>One.

214
00:11:28.159 --> 00:11:30.879
<v Speaker 5>Yeah, yeah, yeah, I didn't expect this to happen, but

215
00:11:31.080 --> 00:11:33.639
<v Speaker 5>we've seen a lot of people have a play on

216
00:11:34.399 --> 00:11:37.120
<v Speaker 5>the name of V zero. So we saw an email zero.

217
00:11:37.840 --> 00:11:41.320
<v Speaker 5>I think there's a YC company now doing a zero

218
00:11:41.679 --> 00:11:43.840
<v Speaker 5>or something like that. So it's been fun to see

219
00:11:43.879 --> 00:11:47.000
<v Speaker 5>other people take this idea of gen ui and apply

220
00:11:47.000 --> 00:11:50.879
<v Speaker 5>it to other domains, emails, mobile apps, et cetera. But really,

221
00:11:50.919 --> 00:11:54.159
<v Speaker 5>the whole intention behind the name was you can get

222
00:11:54.240 --> 00:11:58.120
<v Speaker 5>started here. It's not necessarily saying it's gonna replace your

223
00:11:58.240 --> 00:12:04.039
<v Speaker 5>production code. It's not going to, you know, prevent the

224
00:12:04.080 --> 00:12:06.559
<v Speaker 5>need from still writing a lot of code. It's helping

225
00:12:06.600 --> 00:12:08.639
<v Speaker 5>you get started quickly and building something great.

226
00:12:09.519 --> 00:12:13.320
<v Speaker 4>By the way, there's the void zero that's even us

227
00:12:13.399 --> 00:12:14.080
<v Speaker 4>in your company.

228
00:12:14.519 --> 00:12:18.200
<v Speaker 5>Yeah, yeah, it was funny. I think that name was

229
00:12:18.279 --> 00:12:21.559
<v Speaker 5>after V zero, but then it's pretty pretty similarly named,

230
00:12:21.559 --> 00:12:22.399
<v Speaker 5>which is kind of funny.

231
00:12:22.639 --> 00:12:23.000
<v Speaker 2>Yeah.

232
00:12:23.080 --> 00:12:27.840
<v Speaker 4>So the fact that it's V zero kind of and

233
00:12:27.919 --> 00:12:30.440
<v Speaker 4>also looking at the demos that you primarily show, it

234
00:12:30.480 --> 00:12:33.519
<v Speaker 4>seems to indicate that what you're building is literally version

235
00:12:33.679 --> 00:12:40.480
<v Speaker 4>zero of a product that it's taking either an idea,

236
00:12:40.799 --> 00:12:44.720
<v Speaker 4>a concept like you said, maybe an image or a screenshot.

237
00:12:46.080 --> 00:12:48.960
<v Speaker 4>Does it also support Figma or something like that.

238
00:12:49.679 --> 00:12:52.279
<v Speaker 5>Yeah. Yeah, you can paste in a Figma link and

239
00:12:52.840 --> 00:12:55.559
<v Speaker 5>it can understand your design system, colors and what's on

240
00:12:55.600 --> 00:12:58.360
<v Speaker 5>the page and then start building an UI from there.

241
00:12:58.879 --> 00:13:04.600
<v Speaker 4>Yeah. And basically it turns that into code that interactively

242
00:13:04.679 --> 00:13:07.639
<v Speaker 4>replicates the design that you gave to it, correct.

243
00:13:08.240 --> 00:13:11.759
<v Speaker 5>Yeah. Yeah. And the big difference in the way to

244
00:13:11.840 --> 00:13:15.559
<v Speaker 5>think about this versus a no code or a low

245
00:13:15.600 --> 00:13:18.919
<v Speaker 5>code tool is generally with the previous generation of tools

246
00:13:18.960 --> 00:13:23.039
<v Speaker 5>kind of pre AI was the code that you got

247
00:13:23.080 --> 00:13:25.759
<v Speaker 5>out from the low code or no code tool was

248
00:13:25.799 --> 00:13:29.559
<v Speaker 5>not necessarily production quality code. It was not code that

249
00:13:29.720 --> 00:13:32.039
<v Speaker 5>was using the popular frameworks of the world that you

250
00:13:32.080 --> 00:13:34.919
<v Speaker 5>could then take and kind of eject and actually start

251
00:13:34.919 --> 00:13:38.399
<v Speaker 5>building your application into something that was a real app.

252
00:13:38.440 --> 00:13:41.720
<v Speaker 5>It was more so like maybe just a big blob

253
00:13:41.759 --> 00:13:45.440
<v Speaker 5>of HTML with some JS in there. It wasn't using

254
00:13:45.480 --> 00:13:48.679
<v Speaker 5>the ecosystem of the MPM libraries that we have today

255
00:13:49.039 --> 00:13:52.080
<v Speaker 5>versus kind of rebuilding everything from scratch, and it wasn't

256
00:13:52.120 --> 00:13:56.519
<v Speaker 5>also built on top of reusable accessible component primitives, which

257
00:13:56.559 --> 00:13:59.840
<v Speaker 5>is something that zero does use. Which is a component

258
00:14:00.000 --> 00:14:03.440
<v Speaker 5>distribution system called chad cyn ui M.

259
00:14:04.240 --> 00:14:09.879
<v Speaker 4>Yeah, I'm familiar of course with chat CN. Chats chad CN.

260
00:14:11.080 --> 00:14:15.519
<v Speaker 4>It's a component library UI component library popular one, probably

261
00:14:15.879 --> 00:14:16.679
<v Speaker 4>popular one.

262
00:14:17.279 --> 00:14:19.840
<v Speaker 5>It's a it has a unique approach because the traditional

263
00:14:19.879 --> 00:14:23.480
<v Speaker 5>way of distributing component libraries, you know, think about maybe

264
00:14:24.159 --> 00:14:26.600
<v Speaker 5>material UI is a very popular one, for example, from

265
00:14:26.720 --> 00:14:30.960
<v Speaker 5>from Google. They build these abstractions that are very good.

266
00:14:31.480 --> 00:14:34.240
<v Speaker 5>They get published as MPM packages, and then you pull

267
00:14:34.279 --> 00:14:36.159
<v Speaker 5>them down and you use them in your app. But

268
00:14:36.240 --> 00:14:38.440
<v Speaker 5>what happens when you want to take that and kind

269
00:14:38.440 --> 00:14:42.240
<v Speaker 5>of transform it to your own design system, your own brand. Well,

270
00:14:42.279 --> 00:14:45.480
<v Speaker 5>you can extend them to an amount, but you don't

271
00:14:45.519 --> 00:14:49.080
<v Speaker 5>control the code. You're using the substraction through MPM, and

272
00:14:49.120 --> 00:14:51.240
<v Speaker 5>you can't go in and actually modify the source code

273
00:14:51.639 --> 00:14:54.840
<v Speaker 5>very easily. Of course, there's hacks, right. What chadzyen is

274
00:14:54.840 --> 00:14:56.960
<v Speaker 5>trying to do is it's more of a component library

275
00:14:57.759 --> 00:15:00.679
<v Speaker 5>distribution system or a way for you to build your

276
00:15:00.720 --> 00:15:03.879
<v Speaker 5>own component library. So it gives you all of the code.

277
00:15:03.960 --> 00:15:06.600
<v Speaker 5>You can effectively copy paste it into your you know,

278
00:15:06.639 --> 00:15:09.600
<v Speaker 5>into your editor, into your project tweak all the tokens

279
00:15:09.639 --> 00:15:13.200
<v Speaker 5>and the design system colors, and install packages, delete packages,

280
00:15:13.720 --> 00:15:15.720
<v Speaker 5>and then there's a nice CLI that helps you add

281
00:15:15.759 --> 00:15:17.440
<v Speaker 5>new components as as you need them.

282
00:15:18.720 --> 00:15:20.440
<v Speaker 2>I gotcha, I have to say.

283
00:15:20.480 --> 00:15:22.600
<v Speaker 1>I went on there and I mashed the button for

284
00:15:22.639 --> 00:15:27.360
<v Speaker 1>a landing page, and uh, it gave me a next

285
00:15:27.399 --> 00:15:31.840
<v Speaker 1>st app and then I clicked preview and it said

286
00:15:31.840 --> 00:15:34.159
<v Speaker 1>it couldn't load because I could find the CSS file.

287
00:15:34.600 --> 00:15:38.240
<v Speaker 1>But I mean, the code looks good. Is Yeah, it's

288
00:15:38.320 --> 00:15:41.720
<v Speaker 1>just a little but it's a I and it generates

289
00:15:41.759 --> 00:15:43.519
<v Speaker 1>and sometimes misses things I've seen.

290
00:15:43.799 --> 00:15:45.559
<v Speaker 5>Yeah, you should try the Is there a fixed button

291
00:15:45.600 --> 00:15:50.480
<v Speaker 5>in the bottom left. Ideally if there's an air thrown,

292
00:15:50.519 --> 00:15:52.159
<v Speaker 5>there will be a little fixed button. Which is a

293
00:15:52.159 --> 00:15:54.919
<v Speaker 5>good time to talk about the general philosophy of these tools,

294
00:15:55.080 --> 00:15:56.759
<v Speaker 5>part of the reason why we called it V zero two.

295
00:15:56.799 --> 00:16:01.639
<v Speaker 5>With with these you know, non determinis AI systems, they're

296
00:16:01.639 --> 00:16:03.960
<v Speaker 5>going to get things wrong right there. It's never going

297
00:16:04.039 --> 00:16:04.639
<v Speaker 5>to be perfect.

298
00:16:05.360 --> 00:16:09.679
<v Speaker 1>And our generative it predicts the next word or in

299
00:16:09.720 --> 00:16:11.600
<v Speaker 1>this case, the next token of your code.

300
00:16:12.039 --> 00:16:13.399
<v Speaker 2>Yep, and so it'll miss stuff.

301
00:16:13.480 --> 00:16:16.679
<v Speaker 5>Yeah, totally. So one thing we've tried to do from

302
00:16:16.799 --> 00:16:20.639
<v Speaker 5>the unbounded space of you can generate any code in

303
00:16:20.679 --> 00:16:23.759
<v Speaker 5>the world. To try to narrow that down into something

304
00:16:23.799 --> 00:16:28.000
<v Speaker 5>that's predictably outputting consistent UI is we try to add

305
00:16:28.039 --> 00:16:30.759
<v Speaker 5>a lot of systems and pieces in place to narrow

306
00:16:30.799 --> 00:16:34.039
<v Speaker 5>in and improve the quality ratio, because ideally, at the

307
00:16:34.080 --> 00:16:35.799
<v Speaker 5>end of the day, as a consumer of this product,

308
00:16:35.840 --> 00:16:39.240
<v Speaker 5>you want quality generations, both in the UI itself but

309
00:16:39.279 --> 00:16:42.679
<v Speaker 5>in getting working functional code. And the biggest lever that

310
00:16:42.679 --> 00:16:45.240
<v Speaker 5>we've done to do that is really focusing in on

311
00:16:45.279 --> 00:16:48.960
<v Speaker 5>our niche, which is React applications. That's the pipeline where

312
00:16:49.000 --> 00:16:52.000
<v Speaker 5>we're reviewing and ensuring that the data that goes into

313
00:16:52.039 --> 00:16:54.519
<v Speaker 5>the system is really high quality, and also reviewing the

314
00:16:54.519 --> 00:16:57.519
<v Speaker 5>output if somebody has a bad time. So, yeah, I'm

315
00:16:57.519 --> 00:16:58.360
<v Speaker 5>curious if that works for you.

316
00:16:58.840 --> 00:17:03.519
<v Speaker 4>So questions about that, First of all, which model are

317
00:17:03.559 --> 00:17:04.039
<v Speaker 4>you using?

318
00:17:04.880 --> 00:17:07.799
<v Speaker 5>There's a bunch. Actually, generally you can think about it

319
00:17:08.200 --> 00:17:12.799
<v Speaker 5>as a big decision tree. Because the user puts in

320
00:17:12.799 --> 00:17:15.480
<v Speaker 5>a prompt. That prompt, we first kind of have to

321
00:17:15.480 --> 00:17:17.920
<v Speaker 5>classify what they were even trying to do. Were they

322
00:17:17.960 --> 00:17:21.079
<v Speaker 5>trying to just ask a knowledge question, were they wanting

323
00:17:21.119 --> 00:17:23.880
<v Speaker 5>to generate some code. There's a lot of branches that

324
00:17:23.960 --> 00:17:25.880
<v Speaker 5>can go down and then even as it goes down

325
00:17:25.960 --> 00:17:28.880
<v Speaker 5>the branches, we might want to flip between models on

326
00:17:28.920 --> 00:17:32.759
<v Speaker 5>the fly depending on the quality of one model, or

327
00:17:32.799 --> 00:17:34.799
<v Speaker 5>maybe a new model comes out. I think the new

328
00:17:35.200 --> 00:17:38.559
<v Speaker 5>claud model was just released today, for example. So we

329
00:17:38.680 --> 00:17:42.000
<v Speaker 5>try to make this system that helps us get the

330
00:17:42.000 --> 00:17:45.200
<v Speaker 5>best quality output, and then we abstract away everything else

331
00:17:45.200 --> 00:17:47.599
<v Speaker 5>in the middle and just focus on having really high

332
00:17:47.680 --> 00:17:51.079
<v Speaker 5>quality data in and evals or tests to ensure that

333
00:17:51.319 --> 00:17:52.480
<v Speaker 5>the quality is predictable.

334
00:17:53.400 --> 00:17:55.880
<v Speaker 4>Or you could use deep sick if you don't mind

335
00:17:55.920 --> 00:17:58.839
<v Speaker 4>a bit of Chinese propaganda on your page.

336
00:18:00.079 --> 00:18:04.079
<v Speaker 1>Well maybe, but you can also run deep seek. I

337
00:18:04.079 --> 00:18:09.599
<v Speaker 1>think it's unbiased on like a lama or something, and

338
00:18:09.640 --> 00:18:11.680
<v Speaker 1>then you don't have all the filters in front of it.

339
00:18:11.720 --> 00:18:14.440
<v Speaker 1>I mean, they still trained it on their own data,

340
00:18:14.519 --> 00:18:16.960
<v Speaker 1>and so if you ask it questions about.

341
00:18:17.640 --> 00:18:19.160
<v Speaker 2>History that are inconvenient, it.

342
00:18:19.240 --> 00:18:21.759
<v Speaker 1>Just doesn't give you a correct answer because it has

343
00:18:21.799 --> 00:18:22.599
<v Speaker 1>no idea.

344
00:18:22.799 --> 00:18:25.880
<v Speaker 5>But yeah, I think a lot of the enforced were

345
00:18:25.920 --> 00:18:29.960
<v Speaker 5>coming at the inference time compute. The test time compute

346
00:18:30.000 --> 00:18:32.480
<v Speaker 5>was where they were doing a lot of the cloud

347
00:18:32.480 --> 00:18:34.160
<v Speaker 5>hosted version of deep seq was where they were doing

348
00:18:34.240 --> 00:18:37.359
<v Speaker 5>a lot of the biasing towards the answers that they

349
00:18:37.400 --> 00:18:40.519
<v Speaker 5>didn't want to answer. So the open source models definitely

350
00:18:40.519 --> 00:18:42.400
<v Speaker 5>in the training data, they are still biased in a

351
00:18:42.400 --> 00:18:45.960
<v Speaker 5>certain direction, but you can get you can get better

352
00:18:46.000 --> 00:18:47.960
<v Speaker 5>results by doing it that way. Which I've already seen

353
00:18:48.000 --> 00:18:50.559
<v Speaker 5>a few models on hugging Face, and I think there's

354
00:18:50.599 --> 00:18:52.799
<v Speaker 5>like a Lama distilled version as well.

355
00:18:53.599 --> 00:18:55.799
<v Speaker 1>So yeah, I've played with I've played with deep Seek,

356
00:18:55.839 --> 00:18:57.119
<v Speaker 1>and I've played with some of the other ones and

357
00:18:57.440 --> 00:18:59.880
<v Speaker 1>it is really it's really good in a lot.

358
00:18:59.720 --> 00:19:04.319
<v Speaker 4>Of So the name v zero seems to indicate that

359
00:19:04.400 --> 00:19:07.440
<v Speaker 4>the focus on the product is on the initial generation

360
00:19:07.880 --> 00:19:13.880
<v Speaker 4>and less so about taking an existing app and modifying

361
00:19:13.960 --> 00:19:17.480
<v Speaker 4>it or adding capabilities into it. Is that correct or

362
00:19:17.599 --> 00:19:19.039
<v Speaker 4>is that just my interpretation?

363
00:19:19.960 --> 00:19:22.400
<v Speaker 5>That was definitely where we got started. As we've added

364
00:19:22.480 --> 00:19:25.000
<v Speaker 5>more functionality to the product, we're now getting to a

365
00:19:25.000 --> 00:19:27.519
<v Speaker 5>point where you know, in the future you'll be able

366
00:19:27.599 --> 00:19:30.680
<v Speaker 5>to connect to a get repo and bring in the

367
00:19:30.680 --> 00:19:34.000
<v Speaker 5>code you already have in your application and make changes

368
00:19:34.200 --> 00:19:37.519
<v Speaker 5>from there. So I think in the future V zero

369
00:19:37.599 --> 00:19:40.920
<v Speaker 5>will evolve to be more of your general purpose AI

370
00:19:40.960 --> 00:19:43.880
<v Speaker 5>assistant that you can use for many different things, or

371
00:19:44.000 --> 00:19:47.480
<v Speaker 5>is trying to incrementally get there as we tackle one

372
00:19:47.519 --> 00:19:49.880
<v Speaker 5>problem and hopefully do it well before kind of moving

373
00:19:49.920 --> 00:19:51.519
<v Speaker 5>on and expanding scope.

374
00:19:52.039 --> 00:19:54.680
<v Speaker 4>So if that's the case, how is it different from

375
00:19:54.720 --> 00:19:59.440
<v Speaker 4>something like Cursor or co pilot or or something like that.

376
00:19:59.799 --> 00:20:04.039
<v Speaker 5>Yeah, totally. I think of Cursor and Windsurf and some

377
00:20:04.200 --> 00:20:09.200
<v Speaker 5>of the AI enabled IDEs as tools for I'll call

378
00:20:09.240 --> 00:20:14.319
<v Speaker 5>them professional programmers or professional coders who are primarily you know,

379
00:20:14.400 --> 00:20:17.519
<v Speaker 5>in their ide in their editor all day. You know,

380
00:20:18.079 --> 00:20:21.400
<v Speaker 5>they're fantastic at that. And I use z personally, which

381
00:20:21.440 --> 00:20:26.680
<v Speaker 5>also has AI tools, but they're all incredibly good at this. Versus,

382
00:20:26.680 --> 00:20:29.200
<v Speaker 5>I think the market for v zero and other tools

383
00:20:29.200 --> 00:20:33.079
<v Speaker 5>doing more of the generative UI space is more so

384
00:20:33.160 --> 00:20:36.720
<v Speaker 5>I think for the kind of adjacent folks who are

385
00:20:36.799 --> 00:20:41.279
<v Speaker 5>now getting into development. Certainly, obviously I'm a professional programmer

386
00:20:41.279 --> 00:20:43.240
<v Speaker 5>and I still use v zero, but I've seen a

387
00:20:43.279 --> 00:20:47.200
<v Speaker 5>lot of people either learning to build products through v zero,

388
00:20:47.759 --> 00:20:49.440
<v Speaker 5>or maybe they had an idea and they weren't really

389
00:20:49.480 --> 00:20:52.240
<v Speaker 5>sure how to build it yet, all using v zero

390
00:20:52.319 --> 00:20:54.160
<v Speaker 5>as a starting point to kind of kick off that

391
00:20:54.279 --> 00:20:58.799
<v Speaker 5>knowledge where it's more about the design and the ideas

392
00:20:58.799 --> 00:21:01.759
<v Speaker 5>and the product experience is just the code itself, and

393
00:21:01.759 --> 00:21:03.519
<v Speaker 5>of course you can still view the code It's still

394
00:21:03.559 --> 00:21:06.680
<v Speaker 5>important that you can observe the code and modify the code,

395
00:21:06.880 --> 00:21:09.440
<v Speaker 5>but first and foremost is the actual thing that you're building,

396
00:21:09.440 --> 00:21:12.279
<v Speaker 5>which is kind of just a different model than the

397
00:21:13.000 --> 00:21:19.240
<v Speaker 5>professional programmers the IDEs, just a different different model.

398
00:21:19.599 --> 00:21:21.680
<v Speaker 4>So I'll challenge you a bit about this, if you

399
00:21:21.720 --> 00:21:25.559
<v Speaker 4>don't mind. I've been told that I sometimes ask tough

400
00:21:25.640 --> 00:21:31.680
<v Speaker 4>questions and hopefully you're you're fine with it. Yeah, okay,

401
00:21:33.799 --> 00:21:37.000
<v Speaker 4>if that's the case, if that's your target audience, the

402
00:21:37.039 --> 00:21:42.839
<v Speaker 4>way that you're presenting it isn't React potentially too low

403
00:21:42.920 --> 00:21:50.160
<v Speaker 4>of a level of abstraction, because you know, if I'm

404
00:21:50.279 --> 00:21:53.559
<v Speaker 4>more of a designed person, you know, it's great that

405
00:21:53.599 --> 00:21:56.160
<v Speaker 4>I can give my code to a developer later on,

406
00:21:57.119 --> 00:22:00.640
<v Speaker 4>but if i'm playing with it, maybe I would like

407
00:22:00.720 --> 00:22:05.079
<v Speaker 4>to play with, you know, at the higher level of abstraction,

408
00:22:05.319 --> 00:22:10.160
<v Speaker 4>with more sophisticated box but less complicated boxes.

409
00:22:12.079 --> 00:22:15.559
<v Speaker 5>Yeah. So, while we do use React, the default for

410
00:22:15.839 --> 00:22:18.440
<v Speaker 5>v zero generally is going to be an XTGS application,

411
00:22:18.599 --> 00:22:21.839
<v Speaker 5>so it is a higher level abstraction on the underlying

412
00:22:21.960 --> 00:22:26.160
<v Speaker 5>React primitives generally. Though, the reason why I think React

413
00:22:26.240 --> 00:22:28.559
<v Speaker 5>is a good fit for this type of model is

414
00:22:30.000 --> 00:22:33.359
<v Speaker 5>when people are getting started with building their first application

415
00:22:33.400 --> 00:22:35.759
<v Speaker 5>and they don't have a lot of experience. The mental

416
00:22:35.799 --> 00:22:39.200
<v Speaker 5>model of components actually makes a lot of sense to people,

417
00:22:39.519 --> 00:22:43.599
<v Speaker 5>more so than a vanilla HTML or a vanilla JavaScript file.

418
00:22:43.839 --> 00:22:46.680
<v Speaker 5>Like if we go back to jQuery days and you

419
00:22:46.759 --> 00:22:49.279
<v Speaker 5>have a thousand line j Query file, this is totally

420
00:22:49.279 --> 00:22:51.640
<v Speaker 5>fine and it totally works. But you know, looking at

421
00:22:51.680 --> 00:22:54.559
<v Speaker 5>specific query selectors, they're looking up an element by ID

422
00:22:54.720 --> 00:22:56.880
<v Speaker 5>and then swapping out you know, the data from there,

423
00:22:56.960 --> 00:23:00.559
<v Speaker 5>the styling from there is it as in two for

424
00:23:00.640 --> 00:23:04.000
<v Speaker 5>the first time user, I think as looking at some

425
00:23:04.160 --> 00:23:06.799
<v Speaker 5>React code, maybe not at first, but I think you

426
00:23:06.839 --> 00:23:09.759
<v Speaker 5>pick it up a little bit more conceptually as you

427
00:23:09.880 --> 00:23:12.480
<v Speaker 5>kind of get into the code a bit. At least

428
00:23:12.519 --> 00:23:14.680
<v Speaker 5>that's been my experience talking with folks who are kind

429
00:23:14.680 --> 00:23:17.279
<v Speaker 5>of learning or looking at React code for the first time.

430
00:23:17.720 --> 00:23:20.480
<v Speaker 5>And secondly, the nice thing about the component model and

431
00:23:20.519 --> 00:23:24.200
<v Speaker 5>composition of React is an LLM generates a bunch of stuff.

432
00:23:24.480 --> 00:23:27.240
<v Speaker 5>You know, maybe there's ten different files, fifteen different files.

433
00:23:27.599 --> 00:23:30.039
<v Speaker 5>You want to be able to place those into different

434
00:23:30.359 --> 00:23:32.759
<v Speaker 5>you know, spots in your application without there being these

435
00:23:32.799 --> 00:23:35.839
<v Speaker 5>global side effects. And that's one really nice thing that

436
00:23:35.880 --> 00:23:38.920
<v Speaker 5>the React model does pretty well. Now, I will say

437
00:23:38.920 --> 00:23:41.160
<v Speaker 5>if you are a little bit more uh maybe not

438
00:23:41.279 --> 00:23:44.119
<v Speaker 5>super beginner, but maybe intermediate, and you kind of know

439
00:23:44.480 --> 00:23:46.119
<v Speaker 5>a little bit. You know that you want to just

440
00:23:46.160 --> 00:23:49.519
<v Speaker 5>work with HTML and male JavaScript. You can explicitly prompt

441
00:23:49.519 --> 00:23:51.079
<v Speaker 5>the zero to say like, hey, I know what I'm

442
00:23:51.079 --> 00:23:53.480
<v Speaker 5>doing here, Like, give me more of that low level

443
00:23:53.519 --> 00:23:55.359
<v Speaker 5>primitive and I can kind of build from there.

444
00:23:56.160 --> 00:23:57.640
<v Speaker 2>Cool, I want.

445
00:23:57.519 --> 00:23:59.400
<v Speaker 4>Will it be just one more thing?

446
00:24:00.240 --> 00:24:00.839
<v Speaker 2>Oh, go ahead.

447
00:24:01.680 --> 00:24:04.960
<v Speaker 4>Will it be able to also generate let's say, stuff

448
00:24:04.960 --> 00:24:05.519
<v Speaker 4>for Svelt.

449
00:24:06.839 --> 00:24:10.240
<v Speaker 5>Yeah, I think right now it can do. It can

450
00:24:10.480 --> 00:24:14.119
<v Speaker 5>answer spelt questions, and it can help you build Svelt applications.

451
00:24:14.480 --> 00:24:18.599
<v Speaker 5>In terms of the completely dynamic running of SVELT applications

452
00:24:18.640 --> 00:24:20.839
<v Speaker 5>in the browser, we don't have support for that yet,

453
00:24:20.839 --> 00:24:22.400
<v Speaker 5>but I would like to get there in the future

454
00:24:22.440 --> 00:24:24.880
<v Speaker 5>for sure. It kind of goes back to that quality

455
00:24:25.000 --> 00:24:29.440
<v Speaker 5>of the unbounded space of next token prediction is already

456
00:24:30.160 --> 00:24:33.119
<v Speaker 5>tough enough. So we're trying to slowly, you know, build

457
00:24:33.160 --> 00:24:37.599
<v Speaker 5>a system that helps us get predictable, repeatable success and

458
00:24:37.599 --> 00:24:39.440
<v Speaker 5>then we can consider expanding up further.

459
00:24:40.680 --> 00:24:41.960
<v Speaker 2>Yeah, just related to that.

460
00:24:43.039 --> 00:24:47.119
<v Speaker 1>So I told it what my error was in here,

461
00:24:47.160 --> 00:24:49.480
<v Speaker 1>and it fixed it, just gave me a global CSS.

462
00:24:49.519 --> 00:24:51.160
<v Speaker 1>But then the next thing I did is I said,

463
00:24:51.680 --> 00:24:55.039
<v Speaker 1>can you give this to me as a next app

464
00:24:55.079 --> 00:24:57.839
<v Speaker 1>instead of a next app? And of course then what

465
00:24:57.880 --> 00:25:00.960
<v Speaker 1>it did is it gave me a next app with

466
00:25:01.240 --> 00:25:04.440
<v Speaker 1>the source folder for the next step still in it,

467
00:25:05.200 --> 00:25:07.519
<v Speaker 1>you know, but you know, and so you know, you

468
00:25:07.920 --> 00:25:10.359
<v Speaker 1>figure this stuff out with your prompt engineering and things.

469
00:25:10.440 --> 00:25:15.599
<v Speaker 1>But I think it's just fascinating how far you can get.

470
00:25:15.680 --> 00:25:18.519
<v Speaker 1>And I've done this with other projects with AI, where

471
00:25:18.559 --> 00:25:21.599
<v Speaker 1>I've essentially said, Okay, give me an app, you know,

472
00:25:21.680 --> 00:25:23.640
<v Speaker 1>this kind of an app, you know, with chat, GPT

473
00:25:23.839 --> 00:25:25.480
<v Speaker 1>or some of the other ones. Give me this kind

474
00:25:25.480 --> 00:25:27.319
<v Speaker 1>of an app with these kind of features and these

475
00:25:27.400 --> 00:25:28.880
<v Speaker 1>kinds of you know, deals.

476
00:25:28.880 --> 00:25:32.039
<v Speaker 2>And I'm using tailwind and and and it'll do it.

477
00:25:32.119 --> 00:25:34.240
<v Speaker 1>And then if I go and run it, I can

478
00:25:34.240 --> 00:25:36.359
<v Speaker 1>come back and tell it I got this error and

479
00:25:36.599 --> 00:25:39.839
<v Speaker 1>it will generally fix it within in one go.

480
00:25:40.079 --> 00:25:43.519
<v Speaker 2>Sometimes it just it can't quite figure it out.

481
00:25:43.559 --> 00:25:46.200
<v Speaker 1>And that's, you know, that makes me feel good because

482
00:25:46.200 --> 00:25:48.359
<v Speaker 1>I'm never gonna not be able to get a job

483
00:25:48.400 --> 00:25:52.279
<v Speaker 1>as a programmer. But yeah, it's it's pretty interesting to

484
00:25:52.279 --> 00:25:53.799
<v Speaker 1>see how far you can get on this stuff.

485
00:25:54.759 --> 00:26:00.480
<v Speaker 4>And yeah, how manytainable is the code that rates?

486
00:26:02.519 --> 00:26:05.640
<v Speaker 5>How maintainable. Is the code mm hmm, I mean this

487
00:26:05.720 --> 00:26:08.319
<v Speaker 5>is This is one of the biggest advantages, in my opinion,

488
00:26:08.440 --> 00:26:13.000
<v Speaker 5>of building on foundations like existing popular open source frameworks,

489
00:26:13.079 --> 00:26:16.839
<v Speaker 5>is that you're ejecting the code out into a system

490
00:26:17.319 --> 00:26:20.240
<v Speaker 5>that is an open standard. It can be deployed to

491
00:26:20.279 --> 00:26:23.000
<v Speaker 5>any infrastructure in the world, whether it's a S three

492
00:26:23.039 --> 00:26:25.880
<v Speaker 5>bucket or deployed to something like Versell. And there's this

493
00:26:25.960 --> 00:26:29.720
<v Speaker 5>thriving community of developers who are you know, consistently with

494
00:26:29.839 --> 00:26:32.359
<v Speaker 5>every release, making the docks a little bit better, making

495
00:26:32.400 --> 00:26:34.559
<v Speaker 5>the examples a little bit better, building all these templates

496
00:26:34.599 --> 00:26:37.799
<v Speaker 5>in the community, you know, fixing bugs, making improvements, and

497
00:26:37.839 --> 00:26:40.160
<v Speaker 5>it has the backing of a you know, a decently

498
00:26:40.200 --> 00:26:42.799
<v Speaker 5>sized staff team in the next ys team who is

499
00:26:42.839 --> 00:26:44.200
<v Speaker 5>helping make it better every day.

500
00:26:45.880 --> 00:26:48.079
<v Speaker 2>Yep, I did run into a rate limit.

501
00:26:48.200 --> 00:26:50.440
<v Speaker 1>I asked too many questions and then I said, you

502
00:26:50.480 --> 00:26:51.960
<v Speaker 1>have to sign up for Versille to keep using.

503
00:26:52.480 --> 00:26:54.920
<v Speaker 5>Yeah, yeah, sign up twenty dollars a month more.

504
00:26:54.920 --> 00:26:55.119
<v Speaker 4>I know.

505
00:26:56.680 --> 00:26:58.680
<v Speaker 2>Yeah, no, I've I've used Forversell in the past and

506
00:26:58.720 --> 00:27:01.240
<v Speaker 2>I like it. Edit things going on there.

507
00:27:02.119 --> 00:27:05.440
<v Speaker 4>I saw relatively new capability in it. I guess I'm

508
00:27:05.960 --> 00:27:09.400
<v Speaker 4>guessing that you can select a component and ask it

509
00:27:09.519 --> 00:27:14.319
<v Speaker 4>to modify just that component RRECT. That's a relatively new feature,

510
00:27:14.359 --> 00:27:19.920
<v Speaker 4>I think. M I think the next step would be

511
00:27:20.000 --> 00:27:23.359
<v Speaker 4>to add some sort of dragon drop capabilities or something.

512
00:27:24.359 --> 00:27:28.559
<v Speaker 5>Yeah, we'd love to find a good way to you know,

513
00:27:28.680 --> 00:27:34.319
<v Speaker 5>bridge the gap of a little more visual editing, you know,

514
00:27:34.400 --> 00:27:38.039
<v Speaker 5>tooling that helps you think about the UI from a

515
00:27:38.119 --> 00:27:41.039
<v Speaker 5>higher level of abstraction versus just prompting. Of course, you

516
00:27:41.079 --> 00:27:43.839
<v Speaker 5>can get very far with prompting, but sometimes you like

517
00:27:43.920 --> 00:27:47.240
<v Speaker 5>the tools that you know, things like a figma might have.

518
00:27:47.680 --> 00:27:49.039
<v Speaker 5>There's some pretty helpful stuff in there.

519
00:27:49.839 --> 00:27:54.359
<v Speaker 4>Yeah, okay, So anything else you want to say about

520
00:27:54.440 --> 00:27:57.640
<v Speaker 4>V zero before moving on to the next one. Yeah,

521
00:27:57.640 --> 00:28:00.319
<v Speaker 4>you've got one, the whole bunch of tools.

522
00:28:00.720 --> 00:28:02.680
<v Speaker 1>Yeah, I just wanted to jump in on V zero.

523
00:28:02.759 --> 00:28:06.839
<v Speaker 1>So it's targeted at people who maybe don't have a

524
00:28:06.839 --> 00:28:10.279
<v Speaker 1>ton of coding experience or you know, I could see this,

525
00:28:10.880 --> 00:28:13.920
<v Speaker 1>you know, it gave me a nice enough layout on

526
00:28:14.079 --> 00:28:17.559
<v Speaker 1>the thing that I clicked on that I could see

527
00:28:17.559 --> 00:28:19.039
<v Speaker 1>this as just kind of a hey, this is a

528
00:28:19.119 --> 00:28:22.039
<v Speaker 1>kickoff point for me, and I'm confident at this stuff.

529
00:28:23.119 --> 00:28:24.119
<v Speaker 2>Are you seeing this.

530
00:28:24.200 --> 00:28:29.000
<v Speaker 1>As something that could conceivably become a proper dev tool

531
00:28:29.279 --> 00:28:32.880
<v Speaker 1>or are you looking to go in that direction with

532
00:28:32.920 --> 00:28:35.400
<v Speaker 1>something else, or where do you land on that?

533
00:28:36.160 --> 00:28:39.079
<v Speaker 5>Yeah, at least for me in my experience, I already

534
00:28:39.119 --> 00:28:41.759
<v Speaker 5>consider it a proper dev tool. It's something that I

535
00:28:41.839 --> 00:28:45.640
<v Speaker 5>use to build a lot of applications that or ideas

536
00:28:45.640 --> 00:28:48.039
<v Speaker 5>that I have that maybe I want to almost run

537
00:28:48.079 --> 00:28:49.960
<v Speaker 5>in parallel. But you can try out a couple different

538
00:28:50.000 --> 00:28:52.200
<v Speaker 5>ideas and like, Okay, I like this version better. I'm

539
00:28:52.200 --> 00:28:54.279
<v Speaker 5>going to prompt this one and go a little bit further.

540
00:28:54.640 --> 00:28:57.759
<v Speaker 5>I recently wrote a blog post about this called personal software.

541
00:28:58.319 --> 00:29:01.640
<v Speaker 5>I think other people have called it vibe vading, whichld

542
00:29:01.640 --> 00:29:06.000
<v Speaker 5>I like the name of. Basically, it's it's not necessarily

543
00:29:06.000 --> 00:29:09.480
<v Speaker 5>saying this is, you know, production software used by the government.

544
00:29:09.559 --> 00:29:12.359
<v Speaker 5>But there's lots of software and applications to be built,

545
00:29:12.559 --> 00:29:14.839
<v Speaker 5>and it can be very fun to do it in

546
00:29:14.880 --> 00:29:16.880
<v Speaker 5>that way. So I think we're seeing a lot of

547
00:29:16.920 --> 00:29:20.319
<v Speaker 5>adoption for those type of use cases. The only other

548
00:29:20.359 --> 00:29:22.960
<v Speaker 5>thing I'll mention on v zero is if you're really

549
00:29:23.000 --> 00:29:27.000
<v Speaker 5>curious about how it's built, everything that powers V zero,

550
00:29:27.079 --> 00:29:31.160
<v Speaker 5>we have open sourced a chat GPT like application doing

551
00:29:31.240 --> 00:29:33.920
<v Speaker 5>very similar things, so it's kind of build your own

552
00:29:34.000 --> 00:29:37.640
<v Speaker 5>chat GPT chatbot that can you know, generate code and

553
00:29:37.720 --> 00:29:40.559
<v Speaker 5>run code in the browser. It can generate spreadsheets and

554
00:29:40.680 --> 00:29:44.640
<v Speaker 5>create images, and you know have the canvas or artifacts

555
00:29:44.720 --> 00:29:48.680
<v Speaker 5>like features that claude and chatcheeps you have. And that's

556
00:29:48.799 --> 00:29:51.000
<v Speaker 5>part of our AI s d K, which is another

557
00:29:51.039 --> 00:29:53.799
<v Speaker 5>framework that we maintain. It's like lower level primitives to

558
00:29:53.799 --> 00:29:57.039
<v Speaker 5>help you build AI applications. So chatt for cell dot

559
00:29:57.039 --> 00:29:59.319
<v Speaker 5>ais that template if you want to try it out,

560
00:29:59.359 --> 00:30:01.559
<v Speaker 5>and it's all open source so you can fork it

561
00:30:01.559 --> 00:30:02.200
<v Speaker 5>and build your own.

562
00:30:03.359 --> 00:30:03.799
<v Speaker 2>Awesome.

563
00:30:04.599 --> 00:30:07.680
<v Speaker 4>I just want to mention that my connection has become

564
00:30:07.680 --> 00:30:11.000
<v Speaker 4>a bit spotty all of a sudden. So if I

565
00:30:11.079 --> 00:30:15.440
<v Speaker 4>drop off for anything, that's hopefully that won't happen, but.

566
00:30:15.640 --> 00:30:19.240
<v Speaker 5>You know, no worries.

567
00:30:20.440 --> 00:30:23.599
<v Speaker 1>If it happens, then people will miss you because I'll

568
00:30:23.599 --> 00:30:24.720
<v Speaker 1>ask all my dumb questions.

569
00:30:27.599 --> 00:30:29.359
<v Speaker 4>So anything else about v zero.

570
00:30:30.599 --> 00:30:33.680
<v Speaker 5>No. I think that's that's the majority of it. If

571
00:30:33.680 --> 00:30:35.599
<v Speaker 5>you haven't given a shot, please do, and I'd love

572
00:30:35.680 --> 00:30:38.319
<v Speaker 5>to hear feedback. For anybody listening, feel free to shoot

573
00:30:38.319 --> 00:30:38.920
<v Speaker 5>me a message.

574
00:30:40.039 --> 00:30:40.359
<v Speaker 2>Nice.

575
00:30:41.799 --> 00:30:45.039
<v Speaker 4>So, of course, I think versall is best known for

576
00:30:45.240 --> 00:30:49.480
<v Speaker 4>next JS. I think, although it's important to note that

577
00:30:49.559 --> 00:30:51.640
<v Speaker 4>for Cell and next JS are not the same thing,

578
00:30:54.400 --> 00:30:58.920
<v Speaker 4>So maybe that's actually something worth talking about, like the

579
00:30:59.000 --> 00:31:01.599
<v Speaker 4>relationship between selling next js.

580
00:31:01.920 --> 00:31:06.920
<v Speaker 5>Yeah. Yeah, So going back to twenty sixteen, kind of

581
00:31:06.920 --> 00:31:12.559
<v Speaker 5>a ways away, when Vercell was getting started, Germa was

582
00:31:12.559 --> 00:31:15.599
<v Speaker 5>trying to build a really high quality front end, a

583
00:31:15.599 --> 00:31:19.160
<v Speaker 5>really high quality application, and at the time wasn't very

584
00:31:19.160 --> 00:31:22.079
<v Speaker 5>satisfied with the state of tooling and like you know,

585
00:31:22.160 --> 00:31:25.519
<v Speaker 5>every engineer, well, rather than building my product, I'm going

586
00:31:25.559 --> 00:31:28.200
<v Speaker 5>to build the tooling for the product. Instead, I spent

587
00:31:28.720 --> 00:31:31.119
<v Speaker 5>you know, a decent chunk of time building out what

588
00:31:31.400 --> 00:31:33.680
<v Speaker 5>was you know, the first version of next js back

589
00:31:33.720 --> 00:31:36.079
<v Speaker 5>in twenty sixteen, and the idea at the time was

590
00:31:36.559 --> 00:31:39.799
<v Speaker 5>putting together a React application is kind of hard, and

591
00:31:40.400 --> 00:31:42.680
<v Speaker 5>he wanted to build a server first or a server

592
00:31:42.759 --> 00:31:46.160
<v Speaker 5>side rendered React framework that would make that easy to create,

593
00:31:46.799 --> 00:31:52.160
<v Speaker 5>you know, application UI marketing pages, dashboards, e commerce sites,

594
00:31:52.200 --> 00:31:54.960
<v Speaker 5>and so on. And this was really about the same

595
00:31:54.960 --> 00:31:56.759
<v Speaker 5>time that Create React App came out, so only a

596
00:31:56.759 --> 00:32:00.400
<v Speaker 5>few months apart, and they both kind of served unique purposes.

597
00:32:00.440 --> 00:32:04.039
<v Speaker 5>Over the years since then, nextgs has grown to add

598
00:32:04.039 --> 00:32:06.920
<v Speaker 5>a lot more functionality. The community has grown to be

599
00:32:07.200 --> 00:32:10.720
<v Speaker 5>a React framework that can build pretty much any type

600
00:32:10.720 --> 00:32:13.640
<v Speaker 5>of application, If you want to build an interactive dashboard

601
00:32:13.799 --> 00:32:16.519
<v Speaker 5>like some kind of single page app, that's totally doable.

602
00:32:16.559 --> 00:32:20.640
<v Speaker 5>If you want to build SEO optimized marketing pages or

603
00:32:21.480 --> 00:32:25.000
<v Speaker 5>logged out e commerce experiences, that's also possible. If you

604
00:32:25.039 --> 00:32:27.079
<v Speaker 5>want to build new AI chatbots where you can stream

605
00:32:27.119 --> 00:32:30.400
<v Speaker 5>in responses from the server, that's another prominent use case

606
00:32:30.480 --> 00:32:33.079
<v Speaker 5>of NEXTGS. So it all kind of sits on the

607
00:32:33.079 --> 00:32:37.519
<v Speaker 5>foundation of react as the UI rendering layer, the UI

608
00:32:37.599 --> 00:32:41.119
<v Speaker 5>engine for your components, and then we add some nice

609
00:32:41.200 --> 00:32:44.400
<v Speaker 5>views in the middle to simplify working with images and

610
00:32:44.440 --> 00:32:49.079
<v Speaker 5>optimizing fonts and optimizing third party scripts and streaming content

611
00:32:49.079 --> 00:32:51.440
<v Speaker 5>from the server and building out your API layer and

612
00:32:51.480 --> 00:32:53.920
<v Speaker 5>so on and so forth. So going back to your

613
00:32:53.960 --> 00:32:57.039
<v Speaker 5>original question on the relationship, over the years, we've just

614
00:32:57.079 --> 00:33:01.160
<v Speaker 5>continuously been investing in this MIT license open source framework

615
00:33:02.000 --> 00:33:03.759
<v Speaker 5>to a point now where we have one point three

616
00:33:03.920 --> 00:33:08.640
<v Speaker 5>million monthly active developers on NEXTGS and I think we're

617
00:33:08.680 --> 00:33:14.039
<v Speaker 5>at eight point five million weekly downloads on MPM. So

618
00:33:14.559 --> 00:33:17.680
<v Speaker 5>really the trajectory has been great for folks picking up

619
00:33:17.680 --> 00:33:21.599
<v Speaker 5>and adopting and putting next gs in production for both

620
00:33:21.759 --> 00:33:25.359
<v Speaker 5>you know, personal sites, small startups and really large enterprises.

621
00:33:26.440 --> 00:33:27.039
<v Speaker 5>For sell.

622
00:33:28.519 --> 00:33:32.759
<v Speaker 4>I would just like to interject there an interesting statistics

623
00:33:32.920 --> 00:33:38.519
<v Speaker 4>the statistic that I saw. So, there's the Google Crux database.

624
00:33:38.559 --> 00:33:42.119
<v Speaker 4>Are you familiar with it? Yes, so, they obviously so

625
00:33:42.240 --> 00:33:46.759
<v Speaker 4>they Mostly it's used for looking at the performance of

626
00:33:47.000 --> 00:33:52.039
<v Speaker 4>production websites that Google scans, but it also analyzes the

627
00:33:52.079 --> 00:33:55.279
<v Speaker 4>technologies with which those sites are constructed. So you can

628
00:33:55.359 --> 00:33:58.359
<v Speaker 4>actually ask it, you know, show me the performance of

629
00:33:58.400 --> 00:34:02.200
<v Speaker 4>all the reacts sites, so show me the overall performance

630
00:34:02.240 --> 00:34:05.240
<v Speaker 4>of all the view sites and so forth. But you

631
00:34:05.279 --> 00:34:08.320
<v Speaker 4>can also just basically ask it a simple question like

632
00:34:09.039 --> 00:34:12.039
<v Speaker 4>how many sites do you see that use React? How

633
00:34:12.119 --> 00:34:15.599
<v Speaker 4>many sites do you see that use Next? And it

634
00:34:15.719 --> 00:34:19.320
<v Speaker 4>seems to me, looking at the numbers, it seems to

635
00:34:19.400 --> 00:34:24.199
<v Speaker 4>me that if you're building a new website using React,

636
00:34:24.960 --> 00:34:31.840
<v Speaker 4>you're probably it's probably being built with Next because looking

637
00:34:32.039 --> 00:34:36.320
<v Speaker 4>at this again, at the statistics from from twenty twenty

638
00:34:36.360 --> 00:34:42.639
<v Speaker 4>two up to now, the numbers seem to indicate that

639
00:34:42.639 --> 00:34:48.400
<v Speaker 4>that that period of time, React websites that Crux analysis

640
00:34:48.480 --> 00:34:52.239
<v Speaker 4>have grown by something like ten percent, but the next

641
00:34:52.320 --> 00:34:56.639
<v Speaker 4>GS websites have like tripled or something along these lines.

642
00:34:56.719 --> 00:35:02.639
<v Speaker 4>So effectively, it means that if you're building a React website,

643
00:35:02.960 --> 00:35:07.079
<v Speaker 4>then it's probably being built with NEXTGS. Is that does

644
00:35:07.119 --> 00:35:08.719
<v Speaker 4>that kind of match what you're saying.

645
00:35:09.719 --> 00:35:12.719
<v Speaker 5>So, the last time I checked out the http archive

646
00:35:12.840 --> 00:35:18.440
<v Speaker 5>data which backs the crux report, was in the December

647
00:35:18.440 --> 00:35:21.239
<v Speaker 5>of last year of twenty twenty four, and at the

648
00:35:21.320 --> 00:35:25.000
<v Speaker 5>time there were twenty eight thousand of the top million

649
00:35:25.039 --> 00:35:27.639
<v Speaker 5>sites that we're using NEXTGS, which is pretty good. I'm

650
00:35:27.639 --> 00:35:31.079
<v Speaker 5>pretty happy with that. And of those twenty eight thousand,

651
00:35:31.440 --> 00:35:35.440
<v Speaker 5>fifty percent of them were using the new routing system

652
00:35:35.480 --> 00:35:38.000
<v Speaker 5>inside of NEXTGS called the app router, which under the

653
00:35:38.000 --> 00:35:40.280
<v Speaker 5>hood uses some of these new React features like React

654
00:35:40.280 --> 00:35:43.840
<v Speaker 5>server components and server actions, and some of the lower

655
00:35:43.920 --> 00:35:46.960
<v Speaker 5>level things like streaming that overall helped get better core

656
00:35:47.000 --> 00:35:50.519
<v Speaker 5>web vitals. So it's been awesome to see on two fronts. One,

657
00:35:50.719 --> 00:35:55.440
<v Speaker 5>just the general adoption of folks building React sites too,

658
00:35:55.800 --> 00:35:57.880
<v Speaker 5>those who are choosing to pick next gs as their

659
00:35:57.920 --> 00:36:00.800
<v Speaker 5>React framework of choice. But then three, those who are

660
00:36:00.840 --> 00:36:03.119
<v Speaker 5>now starting to build with the app router or incrementally

661
00:36:03.239 --> 00:36:05.880
<v Speaker 5>migrating over to the app router are generally seeing better

662
00:36:05.920 --> 00:36:09.159
<v Speaker 5>COREBA vitals across pretty much all dimensions versus kind of

663
00:36:09.159 --> 00:36:11.639
<v Speaker 5>the previous model of next Yes, that still exists, but

664
00:36:12.000 --> 00:36:14.519
<v Speaker 5>we're kind of investing in this on ramp over time

665
00:36:14.559 --> 00:36:17.480
<v Speaker 5>for people to take better advantage of the server for

666
00:36:17.519 --> 00:36:20.079
<v Speaker 5>some things and better advantage of the client for other things.

667
00:36:20.239 --> 00:36:26.159
<v Speaker 4>So GTP Archive actually identifies websites that use the new

668
00:36:26.199 --> 00:36:26.679
<v Speaker 4>app router.

669
00:36:27.360 --> 00:36:31.400
<v Speaker 5>Yeah, yeah, by looking at the different tags in the body.

670
00:36:32.000 --> 00:36:34.000
<v Speaker 4>Oh that's cool. I didn't know that. I knew that

671
00:36:34.039 --> 00:36:36.559
<v Speaker 4>it identifies next. Yes, I didn't know that it actually

672
00:36:36.599 --> 00:36:39.920
<v Speaker 4>is able to distinguish between the patriarter and the app router.

673
00:36:41.599 --> 00:36:46.679
<v Speaker 4>That's really cool. But conversely, what I'm also saying so

674
00:36:48.079 --> 00:36:53.960
<v Speaker 4>about well over half a year ago, I switched jobs,

675
00:36:54.000 --> 00:36:56.960
<v Speaker 4>and while I was, you know, hunting for a new position,

676
00:36:58.079 --> 00:37:01.320
<v Speaker 4>I was looking at I was speaking with various companies

677
00:37:01.360 --> 00:37:03.840
<v Speaker 4>and also because of the type of position that I

678
00:37:03.880 --> 00:37:06.480
<v Speaker 4>was looking for, I was also kind of looking at

679
00:37:06.480 --> 00:37:10.000
<v Speaker 4>the technology stacks that they were using and whatnot. And

680
00:37:11.760 --> 00:37:16.639
<v Speaker 4>it was what I saw was that, again it's anecdotal,

681
00:37:16.840 --> 00:37:21.599
<v Speaker 4>but it's it was still fairly you know, consistent, let's

682
00:37:21.599 --> 00:37:24.519
<v Speaker 4>call it. It seemed that indeed, if you're building a

683
00:37:24.559 --> 00:37:29.480
<v Speaker 4>website using React, then you're highly and by website I

684
00:37:29.559 --> 00:37:33.280
<v Speaker 4>mean something that you know Google would would likely rank

685
00:37:33.599 --> 00:37:38.000
<v Speaker 4>or scan. Then it's highly likely that you're using next JS.

686
00:37:38.199 --> 00:37:43.280
<v Speaker 4>But a lot of organizations that are building web apps

687
00:37:44.480 --> 00:37:48.039
<v Speaker 4>there are a lot of time still predominantly client side

688
00:37:48.079 --> 00:37:51.960
<v Speaker 4>only in terms of their React usage, and then they're

689
00:37:52.079 --> 00:37:56.400
<v Speaker 4>kind of not using React or any other kind of

690
00:37:57.239 --> 00:38:02.599
<v Speaker 4>full stack framework, and they're like mostly just doing React

691
00:38:02.639 --> 00:38:08.239
<v Speaker 4>on the client side and using not necessarily even JavaScript

692
00:38:08.320 --> 00:38:10.679
<v Speaker 4>on the back end. They might be talking directly to

693
00:38:11.719 --> 00:38:17.360
<v Speaker 4>you know, RESTful endpoints implemented in whatever. Yep, So are

694
00:38:17.400 --> 00:38:20.719
<v Speaker 4>you thinking about somehow addressing that market as well?

695
00:38:21.519 --> 00:38:26.320
<v Speaker 5>Yeah, totally. I think our story today is maybe under discuss,

696
00:38:26.480 --> 00:38:30.079
<v Speaker 5>but we have a pretty strong story for building single

697
00:38:30.119 --> 00:38:33.119
<v Speaker 5>page applications in next yes, or kind of fully client

698
00:38:33.119 --> 00:38:36.480
<v Speaker 5>applications most of the time. Obviously, I talk a lot

699
00:38:36.519 --> 00:38:41.280
<v Speaker 5>about the server stuff because I'm particularly excited about making

700
00:38:41.320 --> 00:38:43.840
<v Speaker 5>it easier for developers to use features on the server.

701
00:38:44.280 --> 00:38:47.199
<v Speaker 5>But for a lot of apps, especially, I don't know,

702
00:38:47.239 --> 00:38:50.320
<v Speaker 5>an internal dashboard at some very large company where they've

703
00:38:50.320 --> 00:38:53.800
<v Speaker 5>already got an established you know, it's probably not even

704
00:38:53.840 --> 00:38:56.000
<v Speaker 5>a node back in. Maybe it's a go back in

705
00:38:56.320 --> 00:38:59.480
<v Speaker 5>or Java or something else. They've got to RESTful API somewhere,

706
00:39:00.079 --> 00:39:03.840
<v Speaker 5>and their infra team hands them down this opportunity you

707
00:39:03.880 --> 00:39:06.599
<v Speaker 5>can deploy a site to S three. Right, you can't

708
00:39:06.679 --> 00:39:09.079
<v Speaker 5>run a server, but you can put some static files

709
00:39:09.079 --> 00:39:12.320
<v Speaker 5>here and doing that, their only option basically is to

710
00:39:12.440 --> 00:39:15.320
<v Speaker 5>do a client only application, and we want to make

711
00:39:15.320 --> 00:39:18.360
<v Speaker 5>nextys a great opportunity for those folks who are wanting

712
00:39:18.400 --> 00:39:22.159
<v Speaker 5>to use React as well. So we have inside of

713
00:39:22.159 --> 00:39:24.559
<v Speaker 5>nextgs this thing called a static export basically where you

714
00:39:24.559 --> 00:39:27.920
<v Speaker 5>can tell the app basically strip away the no jess server.

715
00:39:28.039 --> 00:39:31.760
<v Speaker 5>I just want to generate a bundle of HTML, JavaScript,

716
00:39:31.760 --> 00:39:34.000
<v Speaker 5>CSS files and then I can drop them in an

717
00:39:34.039 --> 00:39:35.840
<v Speaker 5>S three bucket and just kind of be on with

718
00:39:35.880 --> 00:39:38.840
<v Speaker 5>my day. And you know, even further, if I want

719
00:39:38.880 --> 00:39:42.679
<v Speaker 5>to basically opt into one hundred percent rendering in the

720
00:39:42.679 --> 00:39:45.679
<v Speaker 5>browser on Clyde side rendering, we have a way you

721
00:39:45.679 --> 00:39:48.960
<v Speaker 5>can basically skip server side rendering entirely, which for some

722
00:39:49.039 --> 00:39:51.559
<v Speaker 5>teams they're like, yeah, like, I know it's maybe not

723
00:39:51.599 --> 00:39:54.000
<v Speaker 5>the best UX. I know that maybe it's a little

724
00:39:54.039 --> 00:39:56.599
<v Speaker 5>bit slower, but it's fine. Like I'm just building something

725
00:39:56.639 --> 00:39:59.079
<v Speaker 5>that has a bunch of heavy charting libraries and I

726
00:39:59.159 --> 00:40:01.360
<v Speaker 5>just want to go straight client only and that can

727
00:40:01.400 --> 00:40:01.920
<v Speaker 5>be okay too.

728
00:40:02.480 --> 00:40:07.679
<v Speaker 4>So you're basically saying that you can SSG static side

729
00:40:07.679 --> 00:40:11.679
<v Speaker 4>generation into an S three bucket, and you can take

730
00:40:11.679 --> 00:40:14.599
<v Speaker 4>it a step further and basically SSG a blank page

731
00:40:14.679 --> 00:40:16.440
<v Speaker 4>into an S three bucket.

732
00:40:16.800 --> 00:40:20.360
<v Speaker 5>Totally. Yeah. The way I think about it is there

733
00:40:20.480 --> 00:40:25.039
<v Speaker 5>is a strict SPA which i'll define strict single page application,

734
00:40:25.400 --> 00:40:30.039
<v Speaker 5>which is basically that blank HTML shell that boots up

735
00:40:30.119 --> 00:40:33.880
<v Speaker 5>some client JS. There's a ton of websites built this way, right,

736
00:40:33.960 --> 00:40:36.119
<v Speaker 5>Like a lot of the client React only apps are

737
00:40:36.159 --> 00:40:38.760
<v Speaker 5>just built this way, and that's fine. You can do

738
00:40:38.880 --> 00:40:41.039
<v Speaker 5>that in next GS. What we try to do is

739
00:40:41.079 --> 00:40:44.239
<v Speaker 5>build this gradual ramp so you can do that. You

740
00:40:44.280 --> 00:40:49.199
<v Speaker 5>can also pre statically generator pre render more of that

741
00:40:49.280 --> 00:40:52.440
<v Speaker 5>page so it's not necessarily a blank HTML page, but

742
00:40:52.559 --> 00:40:55.159
<v Speaker 5>like a good chunk of the shell that then boots

743
00:40:55.239 --> 00:40:58.519
<v Speaker 5>up React on the client. Taking another step further, you

744
00:40:58.519 --> 00:41:02.239
<v Speaker 5>can pre render multiple inputs. So maybe you have Slash

745
00:41:02.440 --> 00:41:05.599
<v Speaker 5>the Slash route, maybe you have Slash dashboard, maybe you

746
00:41:05.639 --> 00:41:08.639
<v Speaker 5>have Slash users. Each one of them has a different shell,

747
00:41:09.119 --> 00:41:11.599
<v Speaker 5>so you're not looking at the like the page loads.

748
00:41:11.639 --> 00:41:14.519
<v Speaker 5>You see one spinner while you're waiting for the client

749
00:41:14.599 --> 00:41:16.599
<v Speaker 5>JAS to boot up, and then you've kind of loaded

750
00:41:16.719 --> 00:41:19.119
<v Speaker 5>your client app. You can still get a little bit

751
00:41:19.159 --> 00:41:22.719
<v Speaker 5>better UX by loading those shells and having different shells.

752
00:41:23.119 --> 00:41:25.199
<v Speaker 5>And that's like three steps along this journey. But there's

753
00:41:25.199 --> 00:41:27.400
<v Speaker 5>actually five more steps if you want to take it.

754
00:41:27.599 --> 00:41:30.239
<v Speaker 5>I get if you decide. Actually, I am okay with

755
00:41:30.320 --> 00:41:32.679
<v Speaker 5>doing a little bit of stuff on the server. You

756
00:41:32.679 --> 00:41:35.760
<v Speaker 5>can even run a what sometimes called a back end

757
00:41:35.760 --> 00:41:38.519
<v Speaker 5>for front end, but you can use the next day

758
00:41:38.519 --> 00:41:42.079
<v Speaker 5>a server just to effectively, you know, have your secrets

759
00:41:42.119 --> 00:41:44.559
<v Speaker 5>to talk to your API, have your bear token, and

760
00:41:44.599 --> 00:41:47.199
<v Speaker 5>still have your rest API somewhere else, so you don't

761
00:41:47.239 --> 00:41:48.840
<v Speaker 5>have to do some kind of like you know, wild

762
00:41:48.880 --> 00:41:51.159
<v Speaker 5>proxy situation. It's basically just a proxy.

763
00:41:51.719 --> 00:41:56.440
<v Speaker 4>Interesting. It's especially interesting given that react to the React

764
00:41:56.440 --> 00:41:59.159
<v Speaker 4>core team is effectively retired Create React app.

765
00:42:00.760 --> 00:42:03.199
<v Speaker 5>Yeah, I think from their perspective, which makes a lot

766
00:42:03.239 --> 00:42:06.000
<v Speaker 5>of sense, you know, going back in time, when create

767
00:42:06.079 --> 00:42:08.440
<v Speaker 5>React app came out, like I mentioned, it was basically

768
00:42:08.480 --> 00:42:11.239
<v Speaker 5>the exact same time as next gs, and the state

769
00:42:11.360 --> 00:42:15.119
<v Speaker 5>of building a React app was way more difficult than

770
00:42:15.119 --> 00:42:19.320
<v Speaker 5>it is today. Today, there's this vibrant ecosystem of frameworks

771
00:42:19.360 --> 00:42:22.079
<v Speaker 5>and even lower level tools like bundlers, who are building

772
00:42:22.159 --> 00:42:25.360
<v Speaker 5>deeper integration into all of the bits of React. And

773
00:42:25.360 --> 00:42:27.840
<v Speaker 5>I think for dev's getting started. It's just dramatically easier

774
00:42:27.840 --> 00:42:31.320
<v Speaker 5>to be productive right away, but to have a great UX.

775
00:42:31.480 --> 00:42:32.920
<v Speaker 5>And that's kind of why I mentioned there's like this

776
00:42:33.000 --> 00:42:36.679
<v Speaker 5>graduation curve. Yes, you can start here in the strict

777
00:42:36.800 --> 00:42:39.840
<v Speaker 5>SPA mode, but like along the way, you're probably gonna

778
00:42:39.880 --> 00:42:42.079
<v Speaker 5>want some of these things, Like you probably want to

779
00:42:42.079 --> 00:42:43.760
<v Speaker 5>have that little bit better UX so you don't have

780
00:42:43.800 --> 00:42:46.360
<v Speaker 5>to stare at that loading spinner while the user's loading

781
00:42:46.360 --> 00:42:48.119
<v Speaker 5>the page. And you know, it'd be kind of great

782
00:42:48.159 --> 00:42:50.000
<v Speaker 5>if I could prefetch some of that stuff on the

783
00:42:50.039 --> 00:42:52.440
<v Speaker 5>server ahead of time, rather than having to wait for

784
00:42:52.480 --> 00:42:55.239
<v Speaker 5>the client and like offloading all this work into the client.

785
00:42:55.599 --> 00:42:58.559
<v Speaker 5>So it's kind of like we know, based on you know,

786
00:42:58.679 --> 00:43:00.800
<v Speaker 5>let's call it ten years of React, you're probably going

787
00:43:00.880 --> 00:43:02.920
<v Speaker 5>to run into like these three or four things and

788
00:43:02.920 --> 00:43:05.440
<v Speaker 5>how you do routing, how you do data fetching, how

789
00:43:05.480 --> 00:43:08.840
<v Speaker 5>you load your assets. So that's kind of why nexty

790
00:43:08.880 --> 00:43:10.840
<v Speaker 5>has gives you all the building blocks for that, but

791
00:43:10.880 --> 00:43:13.159
<v Speaker 5>then it's up to you and you get the choice

792
00:43:13.159 --> 00:43:15.679
<v Speaker 5>as the developer on how much or how little you

793
00:43:15.719 --> 00:43:17.599
<v Speaker 5>want to use if you want to use NEXTGS. Just

794
00:43:17.679 --> 00:43:21.199
<v Speaker 5>as easy mode React, that's all client rendered like that's

795
00:43:21.239 --> 00:43:21.679
<v Speaker 5>fine too.

796
00:43:22.639 --> 00:43:26.480
<v Speaker 4>It's interesting or I'm using that. It's basically you guys,

797
00:43:26.599 --> 00:43:28.320
<v Speaker 4>and then everybody else using VT.

798
00:43:30.239 --> 00:43:32.719
<v Speaker 5>Yeah, yeah, I think V has been a great tool

799
00:43:32.760 --> 00:43:35.079
<v Speaker 5>for those people who want to kind of build their

800
00:43:35.119 --> 00:43:37.360
<v Speaker 5>own type of system. So maybe they want to do

801
00:43:38.480 --> 00:43:40.960
<v Speaker 5>you know, they pick their own bundler and V. They

802
00:43:40.960 --> 00:43:44.320
<v Speaker 5>pick their own router, maybe a React router, they picked

803
00:43:44.360 --> 00:43:47.159
<v Speaker 5>their own other pieces of the puzzle, a data fetching solution.

804
00:43:47.559 --> 00:43:50.519
<v Speaker 5>Maybe they're using something like a React query for example,

805
00:43:50.599 --> 00:43:52.800
<v Speaker 5>and they can kind of put those pieces together based

806
00:43:52.840 --> 00:43:55.280
<v Speaker 5>on whatever the needs are for their app. That's totally fine.

807
00:43:55.559 --> 00:43:58.280
<v Speaker 5>I still see a ton of people doing that. What

808
00:43:58.280 --> 00:44:00.800
<v Speaker 5>we've tried to do with NEXTGS is provide another option,

809
00:44:01.239 --> 00:44:02.840
<v Speaker 5>which is like, if you want to have all of

810
00:44:02.840 --> 00:44:06.840
<v Speaker 5>that baked into the framework itself, that's one solution that

811
00:44:06.880 --> 00:44:09.400
<v Speaker 5>we offer. But yeah, it's totally fine. I think it's

812
00:44:09.440 --> 00:44:11.880
<v Speaker 5>a lot of a thousand Flowers Bloom type situation where

813
00:44:12.320 --> 00:44:14.360
<v Speaker 5>it's it's not a bad thing to have a lot

814
00:44:14.360 --> 00:44:16.920
<v Speaker 5>of options in the ecosystem. I think this is primarily

815
00:44:17.000 --> 00:44:19.800
<v Speaker 5>why React is still so popular ten years later.

816
00:44:20.360 --> 00:44:25.719
<v Speaker 4>But is it really that way, Because it does seem

817
00:44:26.639 --> 00:44:29.559
<v Speaker 4>that a lot of the React Core team has moved

818
00:44:29.760 --> 00:44:35.239
<v Speaker 4>from Meta into Versall to the extent that it almost

819
00:44:35.280 --> 00:44:39.960
<v Speaker 4>seems like the next version of React is next GS.

820
00:44:40.679 --> 00:44:43.719
<v Speaker 4>So is it a kind of world where next GS

821
00:44:43.800 --> 00:44:46.639
<v Speaker 4>is kind of eating React.

822
00:44:47.239 --> 00:44:49.480
<v Speaker 5>That's not really how I see it, because if you

823
00:44:49.480 --> 00:44:52.840
<v Speaker 5>look at the percentage of the people who work and

824
00:44:52.880 --> 00:44:56.760
<v Speaker 5>contribute to React that work at Versal, it's still pretty

825
00:44:56.760 --> 00:44:59.360
<v Speaker 5>small in comparison to the broader scope of the React team.

826
00:44:59.679 --> 00:45:02.239
<v Speaker 5>I think a lot of people don't know the extent

827
00:45:02.480 --> 00:45:05.199
<v Speaker 5>of how big the React team is. At Meta, they

828
00:45:05.239 --> 00:45:07.960
<v Speaker 5>do a lot of fantastic work, not only for the

829
00:45:08.039 --> 00:45:10.760
<v Speaker 5>React core team itself, but for React Native and for

830
00:45:10.840 --> 00:45:14.920
<v Speaker 5>supporting all the React development for other kind of pieces

831
00:45:14.920 --> 00:45:19.000
<v Speaker 5>of the ecosystem. At Meta, Vercelle certainly is helping push

832
00:45:19.079 --> 00:45:23.079
<v Speaker 5>React forward insofar as we're contributing some of the server features.

833
00:45:23.280 --> 00:45:25.800
<v Speaker 5>Things that we're helping with like server actions, for example.

834
00:45:25.840 --> 00:45:28.119
<v Speaker 5>We've played a decent chunk in contributing a lot of

835
00:45:28.119 --> 00:45:30.920
<v Speaker 5>that work. But ultimately, at the end of the day,

836
00:45:31.079 --> 00:45:34.239
<v Speaker 5>it's still a partnership between Meta and us and hopefully

837
00:45:34.239 --> 00:45:36.880
<v Speaker 5>more companies in the future as well. I think from

838
00:45:36.880 --> 00:45:40.079
<v Speaker 5>the React team's perspective, they would love to have more

839
00:45:40.159 --> 00:45:42.920
<v Speaker 5>kind of full time contributors to help build this out.

840
00:45:42.960 --> 00:45:46.079
<v Speaker 5>But it's a pretty big investment in terms of your

841
00:45:46.119 --> 00:45:50.039
<v Speaker 5>companies R and D spend, and it's something that Versella

842
00:45:50.119 --> 00:45:52.960
<v Speaker 5>is kind of motivated to do because we also are

843
00:45:53.000 --> 00:45:54.679
<v Speaker 5>trying to make next to us a great framework that

844
00:45:54.679 --> 00:45:57.360
<v Speaker 5>built on top of reactions. We're willing to invest the

845
00:45:57.400 --> 00:45:59.800
<v Speaker 5>capital in terms of funding people on our team to

846
00:45:59.800 --> 00:46:02.639
<v Speaker 5>help contribute to the core library. So yeah, that's the

847
00:46:02.719 --> 00:46:04.760
<v Speaker 5>way I think about it. I think it's great that

848
00:46:04.800 --> 00:46:06.920
<v Speaker 5>we help contribute to reaction. I would love to see

849
00:46:06.960 --> 00:46:09.320
<v Speaker 5>other companies join as well.

850
00:46:10.840 --> 00:46:13.440
<v Speaker 4>Cool I like that approach.

851
00:46:13.559 --> 00:46:18.159
<v Speaker 1>So are there are there new innovations in next JS

852
00:46:18.199 --> 00:46:20.400
<v Speaker 1>that you want to tell us about or things that

853
00:46:20.440 --> 00:46:22.519
<v Speaker 1>are coming up that people might want to hear about.

854
00:46:23.519 --> 00:46:26.360
<v Speaker 5>Yeah. I think for me, the whole journey of twenty

855
00:46:26.400 --> 00:46:30.320
<v Speaker 5>twenty five is it's basically two things. The first one

856
00:46:30.480 --> 00:46:36.159
<v Speaker 5>is continuing to make one percent iterations every release, every

857
00:46:36.239 --> 00:46:41.519
<v Speaker 5>day on the foundations the fundamentals, really great stack traces,

858
00:46:42.000 --> 00:46:44.920
<v Speaker 5>really great air overlays that are beautiful and they help

859
00:46:44.960 --> 00:46:48.719
<v Speaker 5>you find the answer quickly. Really great performance when you're

860
00:46:48.760 --> 00:46:53.400
<v Speaker 5>working locally, fast compilation, fast, hot module reload, fast, builds

861
00:46:53.840 --> 00:46:56.320
<v Speaker 5>a lot of the things that are the bread and

862
00:46:56.360 --> 00:46:59.400
<v Speaker 5>butter of the framework per se. Maybe not the most

863
00:46:59.440 --> 00:47:02.159
<v Speaker 5>sexy fee in the world, but we think that performance

864
00:47:02.159 --> 00:47:05.440
<v Speaker 5>in stability is a really important piece of what people

865
00:47:05.440 --> 00:47:08.480
<v Speaker 5>who have signed up to use NEXTGS in their company

866
00:47:08.719 --> 00:47:13.000
<v Speaker 5>appreciate in terms of frequent updates and improvements. So that's

867
00:47:13.039 --> 00:47:15.920
<v Speaker 5>a heavy, heavy focus for us. The next release of

868
00:47:16.280 --> 00:47:19.840
<v Speaker 5>NEXTGS here in a few weeks probably or maybe shorter.

869
00:47:20.719 --> 00:47:24.800
<v Speaker 5>We have a new redesigned air overlay that looks so great.

870
00:47:24.840 --> 00:47:27.639
<v Speaker 5>It's it's got better stack traces, it's easier to find

871
00:47:27.639 --> 00:47:30.360
<v Speaker 5>the information, it's got some nice animations, like just the

872
00:47:30.400 --> 00:47:34.000
<v Speaker 5>little delights of polish that make the everyday experience of

873
00:47:34.280 --> 00:47:36.719
<v Speaker 5>working in the framework better. So there's a ton of

874
00:47:36.719 --> 00:47:39.760
<v Speaker 5>stuff in that category. And then the second category is

875
00:47:40.239 --> 00:47:42.800
<v Speaker 5>how do we take, you know, years of feedback on

876
00:47:42.840 --> 00:47:47.079
<v Speaker 5>the framework and kind of continuously innovate and simplify the

877
00:47:47.199 --> 00:47:50.639
<v Speaker 5>existing model along the way while still respecting that you know,

878
00:47:50.679 --> 00:47:52.119
<v Speaker 5>a lot of people are building their apps in a

879
00:47:52.119 --> 00:47:54.559
<v Speaker 5>certain way and we don't want to disrupt their workflows,

880
00:47:54.880 --> 00:47:57.239
<v Speaker 5>but we want to give them a solution over time

881
00:47:57.320 --> 00:48:01.599
<v Speaker 5>that's increasingly more simple for them to adopt, especially for

882
00:48:01.679 --> 00:48:03.760
<v Speaker 5>new people who are just getting started in the framework.

883
00:48:04.199 --> 00:48:07.559
<v Speaker 5>So an example of this is in two ways, one

884
00:48:07.599 --> 00:48:11.519
<v Speaker 5>and around casing and two around the story with data fetching.

885
00:48:12.119 --> 00:48:14.639
<v Speaker 5>So probably the biggest piece of feedback on next yiest

886
00:48:14.679 --> 00:48:17.400
<v Speaker 5>for the past couple of years is very powerful that

887
00:48:17.480 --> 00:48:20.119
<v Speaker 5>it has cashing, but would love to see the default

888
00:48:20.239 --> 00:48:22.880
<v Speaker 5>experience be a little bit easier. It's like it felt

889
00:48:22.880 --> 00:48:25.280
<v Speaker 5>like the ramp from okay, I can do cashing to like,

890
00:48:25.519 --> 00:48:27.840
<v Speaker 5>oh yeah, this is why cashing is really hard was

891
00:48:27.880 --> 00:48:30.599
<v Speaker 5>like happening too quickly. So we've been working on an

892
00:48:30.639 --> 00:48:34.599
<v Speaker 5>improved system that allows you to define directives. It's like

893
00:48:34.639 --> 00:48:37.639
<v Speaker 5>a string like use cash and cash a function or

894
00:48:37.679 --> 00:48:41.000
<v Speaker 5>cash a React component in a much more granular, composable way.

895
00:48:41.400 --> 00:48:43.880
<v Speaker 5>That's going to be coming here very soon. Then the

896
00:48:43.920 --> 00:48:47.039
<v Speaker 5>next piece that builds on top of that is the

897
00:48:47.079 --> 00:48:51.519
<v Speaker 5>ability to write code that looks asynchronous and have it

898
00:48:51.719 --> 00:48:55.000
<v Speaker 5>actually be a page that's dynamically rendered. So I'll give

899
00:48:55.000 --> 00:48:58.960
<v Speaker 5>you an example. You have a React server component. You

900
00:48:59.039 --> 00:49:03.199
<v Speaker 5>might think, okay, that server component requires a server. The

901
00:49:03.239 --> 00:49:05.840
<v Speaker 5>first misconception there is you can take a server component

902
00:49:06.039 --> 00:49:07.960
<v Speaker 5>and you can do that static expert I mentioned and

903
00:49:08.039 --> 00:49:10.800
<v Speaker 5>run it as a pre rendered component that just spits

904
00:49:10.800 --> 00:49:13.519
<v Speaker 5>out some HTML. Right, So it's kind of like, yeah,

905
00:49:13.559 --> 00:49:16.039
<v Speaker 5>it's like a React build time component, just it has

906
00:49:16.159 --> 00:49:19.559
<v Speaker 5>the access to the server. So you've got the server component.

907
00:49:19.760 --> 00:49:24.239
<v Speaker 5>You say async function await get data from database. If

908
00:49:24.239 --> 00:49:26.719
<v Speaker 5>you write a call like await get data from database,

909
00:49:26.880 --> 00:49:30.280
<v Speaker 5>you're probably expecting that to be fresh data like this

910
00:49:30.360 --> 00:49:32.480
<v Speaker 5>is you're making a call and you didn't say that

911
00:49:32.480 --> 00:49:35.760
<v Speaker 5>you wanted anything to be cashed, right. But the inherent

912
00:49:36.320 --> 00:49:39.039
<v Speaker 5>confusion here comes with this idea of pre rendering. If

913
00:49:39.079 --> 00:49:41.320
<v Speaker 5>it's running during the build, you're trying to pre render

914
00:49:41.320 --> 00:49:44.679
<v Speaker 5>as much of the page as possible, and that's really

915
00:49:44.679 --> 00:49:47.159
<v Speaker 5>good because you can get that fast initial response when

916
00:49:47.199 --> 00:49:49.199
<v Speaker 5>you have the pre render. So the two kind of

917
00:49:49.199 --> 00:49:52.800
<v Speaker 5>pieces in parallel in this next phase are if I

918
00:49:52.800 --> 00:49:56.559
<v Speaker 5>write code that looks dynamic, the page should default to

919
00:49:56.639 --> 00:49:59.400
<v Speaker 5>being dynamic. And then me as a developer, I get

920
00:49:59.400 --> 00:50:01.920
<v Speaker 5>the opportunity to say, you know, which way do I

921
00:50:01.920 --> 00:50:05.320
<v Speaker 5>want to go? Should this be fresh on every request? Okay, great,

922
00:50:05.480 --> 00:50:08.360
<v Speaker 5>I'd put suspense around it. Reacts suspense. If it's not

923
00:50:09.039 --> 00:50:11.119
<v Speaker 5>and it's something I want to pre render, I put

924
00:50:11.199 --> 00:50:13.360
<v Speaker 5>use cash on it. So you have these like two

925
00:50:13.480 --> 00:50:17.280
<v Speaker 5>paths of which way you want to take, and those

926
00:50:17.360 --> 00:50:20.400
<v Speaker 5>three things, the first two and then the third one

927
00:50:20.440 --> 00:50:23.239
<v Speaker 5>being partial pre rendering, which is effectively just a way

928
00:50:23.280 --> 00:50:26.239
<v Speaker 5>to get a larger amount of the page pre rendered.

929
00:50:27.679 --> 00:50:30.840
<v Speaker 5>I think will simplify the experience of making next years

930
00:50:30.920 --> 00:50:32.800
<v Speaker 5>apps quite a bit, So I'm looking forward to that

931
00:50:32.840 --> 00:50:33.679
<v Speaker 5>future as well.

932
00:50:34.519 --> 00:50:36.880
<v Speaker 4>It's interesting. Well, of course, you know that they say

933
00:50:36.880 --> 00:50:42.480
<v Speaker 4>that there are two hard problems in computer science naming things, cashing, validation,

934
00:50:42.559 --> 00:50:47.920
<v Speaker 4>and off by one errors. So yeah, cashing is hard.

935
00:50:49.159 --> 00:50:51.480
<v Speaker 4>The need for cashing, by the way, I mean, it's

936
00:50:51.760 --> 00:50:54.880
<v Speaker 4>worthwhile to touch a little bit about why all this

937
00:50:55.079 --> 00:50:58.519
<v Speaker 4>discussion about cashing. I think it has to do with

938
00:50:58.559 --> 00:51:03.960
<v Speaker 4>the fact that we encapsulating data access and that can

939
00:51:04.039 --> 00:51:09.880
<v Speaker 4>really easily lead to waterfalls and and so one way

940
00:51:10.159 --> 00:51:15.119
<v Speaker 4>is to basically obviously just break encapsulation and get all

941
00:51:15.159 --> 00:51:19.280
<v Speaker 4>the data as efficiently as possible yourself and stream it

942
00:51:19.320 --> 00:51:22.559
<v Speaker 4>into the components. But then the components aren't self contained.

943
00:51:23.039 --> 00:51:25.280
<v Speaker 4>So the alternative is to say, I will get the

944
00:51:25.360 --> 00:51:28.039
<v Speaker 4>data at the component level, but I'm really smart about

945
00:51:28.079 --> 00:51:32.880
<v Speaker 4>cashing to avoid really getting the same data multiple times

946
00:51:32.920 --> 00:51:35.719
<v Speaker 4>and making all the data retrieval as efficient as possible,

947
00:51:36.159 --> 00:51:39.639
<v Speaker 4>and that's the route that you guys seem to be taking.

948
00:51:40.159 --> 00:51:45.480
<v Speaker 4>It will be very interesting to see how efficient, how

949
00:51:46.119 --> 00:51:50.079
<v Speaker 4>how we are able to achieve this combination of efficiency,

950
00:51:50.239 --> 00:51:54.280
<v Speaker 4>ease of use, and correctness. It's not going to be

951
00:51:54.320 --> 00:51:55.440
<v Speaker 4>a trivial combination.

952
00:51:56.159 --> 00:51:59.639
<v Speaker 5>M Yeah. Just to your point on like why cashing

953
00:52:02.159 --> 00:52:05.719
<v Speaker 5>the cash exists somewhere in the system. If it's not

954
00:52:05.840 --> 00:52:08.880
<v Speaker 5>in your front end, then you're caching your API responses

955
00:52:09.280 --> 00:52:11.800
<v Speaker 5>or you have some like a in memory cash in

956
00:52:11.800 --> 00:52:14.519
<v Speaker 5>front of your database. Like most of the time, there's

957
00:52:14.519 --> 00:52:17.119
<v Speaker 5>a cash somewhere in the stack. And I think what

958
00:52:17.280 --> 00:52:20.039
<v Speaker 5>we're seeing with a next year's app router app and

959
00:52:20.440 --> 00:52:23.920
<v Speaker 5>being more involved across the full stack basically react having

960
00:52:23.920 --> 00:52:26.559
<v Speaker 5>more of an opinion about the network layer is that

961
00:52:26.599 --> 00:52:31.519
<v Speaker 5>those caches are moving into more user code than a developer,

962
00:52:31.639 --> 00:52:34.280
<v Speaker 5>a product developer is having to think about, which is

963
00:52:34.400 --> 00:52:37.199
<v Speaker 5>very powerful, but it's maybe not something they had to

964
00:52:37.239 --> 00:52:39.760
<v Speaker 5>consider previously because like, well that was some other team

965
00:52:39.840 --> 00:52:42.719
<v Speaker 5>who worked on the rest API they added to casing layer.

966
00:52:42.719 --> 00:52:44.199
<v Speaker 5>I just hit that endpoint as much as I want,

967
00:52:44.199 --> 00:52:45.960
<v Speaker 5>I don't really have to think about it. You can

968
00:52:46.000 --> 00:52:48.000
<v Speaker 5>still build that model in an extati.

969
00:52:48.079 --> 00:52:51.760
<v Speaker 6>Comes out of the back of the computer right right

970
00:52:52.079 --> 00:52:54.880
<v Speaker 6>or until your cash expires, and you didn't realize that

971
00:52:54.960 --> 00:52:57.519
<v Speaker 6>your cash control headers were misconfigured, and then actually you

972
00:52:57.599 --> 00:53:00.239
<v Speaker 6>overloaded your database and you didn't have the proper deal

973
00:53:00.280 --> 00:53:01.440
<v Speaker 6>with air caching headers.

974
00:53:01.480 --> 00:53:03.880
<v Speaker 5>So now your pages is down and you have to

975
00:53:04.159 --> 00:53:06.440
<v Speaker 5>do a roll back. And there's a lot of hard

976
00:53:06.440 --> 00:53:09.280
<v Speaker 5>parts in getting that right for sure, and building it

977
00:53:09.320 --> 00:53:13.480
<v Speaker 5>into the system, like you said, while still maintaining correctness

978
00:53:13.840 --> 00:53:16.719
<v Speaker 5>is tough. One of the things we use cash because

979
00:53:16.719 --> 00:53:19.599
<v Speaker 5>we can use the compiler, which shout out to spelt

980
00:53:19.599 --> 00:53:21.400
<v Speaker 5>who does a great job of using the compiler as

981
00:53:21.400 --> 00:53:23.360
<v Speaker 5>well and making that kind of a core part of

982
00:53:23.400 --> 00:53:27.000
<v Speaker 5>the design of both the language and the framework with

983
00:53:27.079 --> 00:53:29.880
<v Speaker 5>spell Kit is that we can look at the inputs

984
00:53:30.440 --> 00:53:34.320
<v Speaker 5>into the function, the actual variables being used inside of

985
00:53:34.360 --> 00:53:36.840
<v Speaker 5>the code where you've marked it with this directive, and

986
00:53:36.960 --> 00:53:40.480
<v Speaker 5>automatically figure out the cash keys. So you know, oh, shoot,

987
00:53:40.519 --> 00:53:42.719
<v Speaker 5>I forgot to mark this as a cash key for

988
00:53:42.760 --> 00:53:45.480
<v Speaker 5>something that actually changes, so I'm not able to automatically

989
00:53:45.519 --> 00:53:47.920
<v Speaker 5>invalidate that cash when it changes. Like a lot of

990
00:53:47.960 --> 00:53:50.760
<v Speaker 5>those really hard things, we can automate some of that

991
00:53:50.840 --> 00:53:54.480
<v Speaker 5>away by using the compiler. It's obviously not perfect. There

992
00:53:54.480 --> 00:53:56.280
<v Speaker 5>are still cases where you have to be aware of

993
00:53:56.320 --> 00:53:58.280
<v Speaker 5>what you're doing with the cash and tag it correctly

994
00:53:58.320 --> 00:54:00.960
<v Speaker 5>and validate it correctly. But more and more of that

995
00:54:00.960 --> 00:54:03.559
<v Speaker 5>that we can build into the framework itself, the more

996
00:54:03.639 --> 00:54:05.840
<v Speaker 5>little edge cases that you don't have to deal with.

997
00:54:06.239 --> 00:54:09.079
<v Speaker 4>Yeah, at this point, it's worthwhile mentioning that we actually

998
00:54:09.159 --> 00:54:13.400
<v Speaker 4>had Joe Savona and Satya from Meta to talk about

999
00:54:14.039 --> 00:54:17.920
<v Speaker 4>React compiler, which is all about minimoralization, which is another

1000
00:54:18.000 --> 00:54:22.960
<v Speaker 4>way of saying cashing. So for sure, I'm totally with

1001
00:54:23.119 --> 00:54:23.719
<v Speaker 4>you on that.

1002
00:54:25.920 --> 00:54:27.599
<v Speaker 1>I wanted to point out one other thing, and that

1003
00:54:27.800 --> 00:54:30.239
<v Speaker 1>is that you know, you're you're talking about kind of

1004
00:54:30.280 --> 00:54:33.679
<v Speaker 1>figuring these things out as you go, and I think

1005
00:54:33.719 --> 00:54:36.599
<v Speaker 1>sometimes we kind of take for granted that things are

1006
00:54:36.639 --> 00:54:39.719
<v Speaker 1>just going to work without recognizing that. Yeah, sometimes the

1007
00:54:39.760 --> 00:54:43.079
<v Speaker 1>first pass is not great or at least not ideal,

1008
00:54:43.519 --> 00:54:46.119
<v Speaker 1>and so just keep that in mind when you give

1009
00:54:46.159 --> 00:54:48.679
<v Speaker 1>the feedback, Right, it's like, hey, look, you've got some

1010
00:54:48.719 --> 00:54:51.440
<v Speaker 1>great tools here, and we're going to give you better tools,

1011
00:54:52.079 --> 00:54:53.800
<v Speaker 1>you know, based on your feedback and things like that.

1012
00:54:54.960 --> 00:54:57.400
<v Speaker 5>Yeah, I think in an ideal world, right, you would

1013
00:54:57.559 --> 00:55:00.400
<v Speaker 5>never ship, and you would just cook away and private

1014
00:55:00.480 --> 00:55:03.639
<v Speaker 5>until you had the perfect API, and oh man, it

1015
00:55:03.679 --> 00:55:05.280
<v Speaker 5>was just the best thing in the world. People are

1016
00:55:05.320 --> 00:55:07.079
<v Speaker 5>gonna love this and I'm just going to keep waiting

1017
00:55:07.519 --> 00:55:10.400
<v Speaker 5>until I get it just right. And the reality is.

1018
00:55:11.599 --> 00:55:12.519
<v Speaker 2>Sounds nice too.

1019
00:55:13.199 --> 00:55:17.960
<v Speaker 4>Well. My dad likes to say that the worst enemy

1020
00:55:18.000 --> 00:55:19.000
<v Speaker 4>of good is better.

1021
00:55:21.519 --> 00:55:23.159
<v Speaker 5>The enemy I've done is perfection.

1022
00:55:23.960 --> 00:55:26.320
<v Speaker 2>Yes, yeah, I am.

1023
00:55:26.800 --> 00:55:30.159
<v Speaker 4>I am amused though that. You know, I'm still old

1024
00:55:30.239 --> 00:55:33.119
<v Speaker 4>enough to remember that the big selling point of JavaScript

1025
00:55:33.159 --> 00:55:36.199
<v Speaker 4>that was that it wasn't compiled. So it's really interesting

1026
00:55:36.239 --> 00:55:42.199
<v Speaker 4>to see how much of modern web development is actually

1027
00:55:42.800 --> 00:55:46.039
<v Speaker 4>based on bundlers and compilers. What you can think about

1028
00:55:46.440 --> 00:55:50.480
<v Speaker 4>bundlers as the modern day linkers, the fact that we

1029
00:55:50.559 --> 00:55:53.880
<v Speaker 4>are effectively compiling and linking the JavaScript code to get

1030
00:55:53.880 --> 00:55:55.760
<v Speaker 4>it to work the way that we need it to work.

1031
00:55:56.400 --> 00:55:59.400
<v Speaker 5>M yeah, I love the ambition. I think there's a

1032
00:55:59.440 --> 00:56:01.840
<v Speaker 5>lot of push in the web development community, especially those

1033
00:56:01.840 --> 00:56:04.280
<v Speaker 5>who have been programming for a while, like can we

1034
00:56:04.360 --> 00:56:09.000
<v Speaker 5>get back to the roots of a compiler free, bundler

1035
00:56:09.079 --> 00:56:14.440
<v Speaker 5>free experience? And I love the ambition of that age.

1036
00:56:15.360 --> 00:56:17.920
<v Speaker 5>Yeah yeah, I think I think there's good ideas there.

1037
00:56:18.400 --> 00:56:22.639
<v Speaker 5>I like the pragmatism of it. I think the reality

1038
00:56:22.679 --> 00:56:24.280
<v Speaker 5>is where do you want to make the trade off?

1039
00:56:24.639 --> 00:56:27.039
<v Speaker 5>And unfortunately, the trade off with that approach usually comes

1040
00:56:27.079 --> 00:56:29.639
<v Speaker 5>at the user experience, and that's like a trade off

1041
00:56:29.639 --> 00:56:33.000
<v Speaker 5>that I'm not usually willing to make because I'd rather

1042
00:56:33.039 --> 00:56:35.559
<v Speaker 5>have a compiler automate a lot of that work for me.

1043
00:56:36.599 --> 00:56:39.199
<v Speaker 5>But you know, things if you have to revisit your

1044
00:56:39.199 --> 00:56:42.360
<v Speaker 5>priors and recheck it year every year as technology continues

1045
00:56:42.400 --> 00:56:45.280
<v Speaker 5>to get better and better. So I agree spiritually with

1046
00:56:45.440 --> 00:56:49.679
<v Speaker 5>some of what he's saying, but I disagree on the

1047
00:56:49.719 --> 00:56:52.639
<v Speaker 5>effectiveness of compilers and bundlers in twenty twenty five.

1048
00:56:53.079 --> 00:56:55.559
<v Speaker 1>Yeah, I have to say, you know, just kind of

1049
00:56:55.599 --> 00:56:57.400
<v Speaker 1>coming from the other side of this too, may be

1050
00:56:57.480 --> 00:56:58.440
<v Speaker 1>a stronger degree.

1051
00:56:59.320 --> 00:57:01.119
<v Speaker 2>There's a lot of it depends in there.

1052
00:57:01.199 --> 00:57:04.920
<v Speaker 1>Right, If you're doing some things, you know, maybe you

1053
00:57:04.960 --> 00:57:07.480
<v Speaker 1>don't need it, and then in other cases it makes

1054
00:57:07.519 --> 00:57:09.920
<v Speaker 1>a lot of sense, and so you have to look

1055
00:57:09.960 --> 00:57:11.519
<v Speaker 1>at it. You have to look at your approach, You

1056
00:57:11.519 --> 00:57:13.320
<v Speaker 1>have to look at what you're using, your what your

1057
00:57:13.360 --> 00:57:17.079
<v Speaker 1>tools are, you know, what your framework expects of you.

1058
00:57:17.679 --> 00:57:20.440
<v Speaker 1>And then yeah, I don't know that there's necessarily a

1059
00:57:20.559 --> 00:57:23.639
<v Speaker 1>right way or a wrong way. A lot of times

1060
00:57:23.719 --> 00:57:25.760
<v Speaker 1>it's just you know, this makes a lot more sense here,

1061
00:57:25.800 --> 00:57:27.320
<v Speaker 1>and that makes a lot more sense there.

1062
00:57:27.960 --> 00:57:30.239
<v Speaker 4>Yeah, it's about the trade offs really. I mean, you know,

1063
00:57:30.280 --> 00:57:33.679
<v Speaker 4>if you can look at the extreme other direction as

1064
00:57:33.719 --> 00:57:38.599
<v Speaker 4>expressed by somebody like like Alex Russell. So so for sure,

1065
00:57:38.760 --> 00:57:41.320
<v Speaker 4>you know, it really depends on what you're trying to build,

1066
00:57:41.400 --> 00:57:44.760
<v Speaker 4>the functionality that you're trying to ship and whatnot. I mean,

1067
00:57:44.800 --> 00:57:49.679
<v Speaker 4>obviously the fastest website is going to be the blank page.

1068
00:57:49.800 --> 00:57:52.920
<v Speaker 4>So you know, it really depends on what you're trying

1069
00:57:52.960 --> 00:57:59.079
<v Speaker 4>to achieve. By the way, I saw another thing that

1070
00:57:59.199 --> 00:58:01.360
<v Speaker 4>might be worth men in the short time that we

1071
00:58:01.440 --> 00:58:04.280
<v Speaker 4>have left that you guys I think recently introduced, which

1072
00:58:04.320 --> 00:58:07.559
<v Speaker 4>is something called fluid. Can you say something about that?

1073
00:58:08.519 --> 00:58:13.079
<v Speaker 5>Yeah, so a quick kind of well, I'll try to

1074
00:58:13.079 --> 00:58:17.159
<v Speaker 5>make it quick. A little history on Vercell's computing back

1075
00:58:17.159 --> 00:58:20.119
<v Speaker 5>in the day. I'm sure you've probably familiar, but back

1076
00:58:20.119 --> 00:58:23.199
<v Speaker 5>in the day, we offered a server full platform where

1077
00:58:23.199 --> 00:58:26.119
<v Speaker 5>you could deploy Docker containers. You know, this was many,

1078
00:58:26.159 --> 00:58:31.800
<v Speaker 5>many years ago, and in some instances like that's really great.

1079
00:58:32.000 --> 00:58:33.719
<v Speaker 5>You can have a lot of flexibility with what you

1080
00:58:33.719 --> 00:58:36.039
<v Speaker 5>bring to the platform. It's it's unbounded. You can do

1081
00:58:36.079 --> 00:58:38.000
<v Speaker 5>anything as long as you can get it into Docker.

1082
00:58:38.760 --> 00:58:43.519
<v Speaker 5>It's harder though, to get a consistently good time because

1083
00:58:43.559 --> 00:58:46.480
<v Speaker 5>again it can be literally anything. This is back in

1084
00:58:46.519 --> 00:58:50.159
<v Speaker 5>the day kind of pre Verseell moving to a serverleist model.

1085
00:58:50.400 --> 00:58:54.639
<v Speaker 5>Along the way, we kind of found our footing, I think,

1086
00:58:54.679 --> 00:58:58.559
<v Speaker 5>with focusing on frameworks and focusing on being able to

1087
00:58:58.639 --> 00:59:02.599
<v Speaker 5>automatically find and generate the infrastructure as an output of

1088
00:59:02.639 --> 00:59:06.159
<v Speaker 5>the framework. So we call this framework to find infrastructure. Basically,

1089
00:59:06.159 --> 00:59:08.639
<v Speaker 5>it means you take a NEXTGS or next or SPELLCIT

1090
00:59:08.719 --> 00:59:11.599
<v Speaker 5>or whatever framework you want to use, you write code

1091
00:59:11.639 --> 00:59:14.079
<v Speaker 5>in the open source way, you bring it to Bursell,

1092
00:59:14.320 --> 00:59:16.920
<v Speaker 5>and Vercell looks at the output of the build process.

1093
00:59:17.199 --> 00:59:19.280
<v Speaker 5>So you run next build and you get a bunch

1094
00:59:19.320 --> 00:59:22.320
<v Speaker 5>of files, and we do the work to actually convert

1095
00:59:22.360 --> 00:59:25.920
<v Speaker 5>that into cloud infrastructure. We turn it into distributing those

1096
00:59:25.960 --> 00:59:28.719
<v Speaker 5>files to a CDN or running the on demand compute

1097
00:59:28.719 --> 00:59:31.239
<v Speaker 5>through for Cell functions and so on and so forth.

1098
00:59:31.440 --> 00:59:34.480
<v Speaker 5>So for many years now we've been doing servilest compute

1099
00:59:34.480 --> 00:59:38.360
<v Speaker 5>on top of AWS Lambda, and that also has a

1100
00:59:38.400 --> 00:59:43.480
<v Speaker 5>lot of benefits, but also some notable downsides. I think

1101
00:59:43.519 --> 00:59:47.599
<v Speaker 5>the biggest downsides that we've faced over the years. Number one,

1102
00:59:47.679 --> 00:59:52.320
<v Speaker 5>I think serverleists as a term has become increasingly unhelpful

1103
00:59:52.559 --> 00:59:57.920
<v Speaker 5>because it means everything to everyone and it's just so, yeah,

1104
00:59:58.079 --> 01:00:01.880
<v Speaker 5>it is basically cloud. It's like, okay, so what exactly

1105
01:00:01.880 --> 01:00:03.840
<v Speaker 5>do you mean by that? Do you mean auto scaling?

1106
01:00:04.199 --> 01:00:08.199
<v Speaker 5>Do you mean cost effective? Like? What are the more

1107
01:00:08.239 --> 01:00:12.000
<v Speaker 5>specific things that you mean? So I've increasingly struggled to

1108
01:00:12.039 --> 01:00:14.280
<v Speaker 5>explain what I'm talking about when I say server lists.

1109
01:00:14.760 --> 01:00:17.400
<v Speaker 5>The second and like the product feature that was the

1110
01:00:17.440 --> 01:00:21.239
<v Speaker 5>most damming or hard with lambda is for every one

1111
01:00:21.360 --> 01:00:25.440
<v Speaker 5>request to my nogs lambda, I can only use one function,

1112
01:00:25.639 --> 01:00:28.679
<v Speaker 5>so it doesn't have the multiicincurrency of what you can

1113
01:00:28.719 --> 01:00:30.760
<v Speaker 5>get out of a server. You can send many requests

1114
01:00:30.800 --> 01:00:33.480
<v Speaker 5>into one box. Generally, that means it's going to be

1115
01:00:33.679 --> 01:00:37.960
<v Speaker 5>a lot less efficient with your actual infrastructure usage, you know,

1116
01:00:38.000 --> 01:00:41.639
<v Speaker 5>one request to one function versus load balancing in many

1117
01:00:41.639 --> 01:00:48.000
<v Speaker 5>different requests into a box. Effectively a server that ultimately

1118
01:00:48.440 --> 01:00:50.320
<v Speaker 5>ends up saving customers a lot of money when you

1119
01:00:50.360 --> 01:00:54.000
<v Speaker 5>can be more efficient with how you route the compute.

1120
01:00:54.679 --> 01:00:58.000
<v Speaker 5>So over the years, we had these kind of warts

1121
01:00:58.039 --> 01:00:59.760
<v Speaker 5>of server lists that we were trying to fix and

1122
01:00:59.760 --> 01:01:03.559
<v Speaker 5>pay rover. We would add new functionality to add streaming

1123
01:01:03.559 --> 01:01:06.239
<v Speaker 5>to for self functions, we would add new functionality to

1124
01:01:06.280 --> 01:01:10.079
<v Speaker 5>prevent you unbounded recursions that could rack up denial of wallets.

1125
01:01:10.480 --> 01:01:14.559
<v Speaker 5>We would add functionality into run very long workloads on

1126
01:01:14.639 --> 01:01:18.599
<v Speaker 5>top of functions. And then the latest things here is

1127
01:01:18.639 --> 01:01:22.639
<v Speaker 5>actually optimizing the lower level bits, so like the underlying

1128
01:01:23.000 --> 01:01:26.079
<v Speaker 5>infrastructure on top of the function We rewrote it in

1129
01:01:26.199 --> 01:01:28.800
<v Speaker 5>rust to make it very optimized, which you know, of course,

1130
01:01:29.119 --> 01:01:31.559
<v Speaker 5>just rewrite and rust and makes it faster right now,

1131
01:01:31.599 --> 01:01:35.039
<v Speaker 5>But we have really been optimizing every part of the

1132
01:01:35.079 --> 01:01:38.039
<v Speaker 5>stack to where now the last piece was making it

1133
01:01:38.199 --> 01:01:41.199
<v Speaker 5>much more concurrent, and we've now taken all of this

1134
01:01:41.280 --> 01:01:44.480
<v Speaker 5>and kind of bundled it into a new computing model

1135
01:01:44.480 --> 01:01:47.440
<v Speaker 5>that we're calling fluid compute. It's not necessarily something that

1136
01:01:47.519 --> 01:01:50.039
<v Speaker 5>is for sell only. We think you could you build

1137
01:01:50.039 --> 01:01:52.559
<v Speaker 5>your own version of this on cloud primitives if you

1138
01:01:52.559 --> 01:01:55.599
<v Speaker 5>would prefer, But generally it is trying to be a

1139
01:01:56.119 --> 01:01:59.159
<v Speaker 5>hybrid of servers and server lists, building off of our

1140
01:01:59.199 --> 01:02:01.800
<v Speaker 5>experience what some other people in the industry have done

1141
01:02:01.920 --> 01:02:03.960
<v Speaker 5>a lot of inspiration from things like Google Cloud Run

1142
01:02:03.960 --> 01:02:06.280
<v Speaker 5>for example, which is kind of coming at this from

1143
01:02:06.280 --> 01:02:09.360
<v Speaker 5>the opposite side, from the server side and having auto

1144
01:02:09.400 --> 01:02:13.840
<v Speaker 5>scaling servers with the general goal of being it's very

1145
01:02:13.880 --> 01:02:17.639
<v Speaker 5>cost effective. So if I'm doing a bunch of network

1146
01:02:17.679 --> 01:02:20.440
<v Speaker 5>io to a database or to an AM model, you

1147
01:02:20.480 --> 01:02:21.760
<v Speaker 5>know I want to I don't want to have to

1148
01:02:21.760 --> 01:02:23.599
<v Speaker 5>spend a bunch of extra money while I'm just waiting

1149
01:02:24.000 --> 01:02:26.000
<v Speaker 5>on all that network io, which for a lot of

1150
01:02:26.039 --> 01:02:29.800
<v Speaker 5>apps that's kind of the predominant, predominant usage of your

1151
01:02:29.800 --> 01:02:31.840
<v Speaker 5>compute is just talking back and forth. It's not the

1152
01:02:31.880 --> 01:02:37.239
<v Speaker 5>actual CPU time, so very cost efficient, very fast to

1153
01:02:37.320 --> 01:02:40.079
<v Speaker 5>start up and scale down, so it auto scales based

1154
01:02:40.079 --> 01:02:43.519
<v Speaker 5>on your traffic, which I think is really important, and

1155
01:02:43.639 --> 01:02:46.760
<v Speaker 5>ideally you can eliminate this cold start problem that has

1156
01:02:46.760 --> 01:02:49.159
<v Speaker 5>plagued server lists for a very long time. And we

1157
01:02:49.239 --> 01:02:52.000
<v Speaker 5>do that by keeping a pre warmed functions which is

1158
01:02:52.000 --> 01:02:55.199
<v Speaker 5>basically like Google Cloud runs minimum active instance is one.

1159
01:02:55.320 --> 01:02:58.559
<v Speaker 5>It's like you always have compute running that you can load,

1160
01:02:58.599 --> 01:03:01.360
<v Speaker 5>balance and send request into. So all of that is

1161
01:03:01.400 --> 01:03:03.880
<v Speaker 5>fluid compute and it's something that for Cell customers can

1162
01:03:03.920 --> 01:03:06.679
<v Speaker 5>opt into using today and we've seen some pretty awesome

1163
01:03:06.719 --> 01:03:07.440
<v Speaker 5>results from it.

1164
01:03:07.519 --> 01:03:12.920
<v Speaker 4>So it's kind of like Lambda functions, but they can

1165
01:03:13.039 --> 01:03:18.039
<v Speaker 4>live longer and service multiple requests and don't have to

1166
01:03:18.079 --> 01:03:21.239
<v Speaker 4>immediately shut down when they're done. Am I missing something?

1167
01:03:22.000 --> 01:03:27.639
<v Speaker 5>Yeah, totally. And if you're doing network IO, you're being

1168
01:03:27.719 --> 01:03:30.000
<v Speaker 5>charged for the CPU, right, you can be a lot

1169
01:03:30.039 --> 01:03:33.360
<v Speaker 5>more efficient when you're waiting on a bunch of calls

1170
01:03:33.400 --> 01:03:37.559
<v Speaker 5>your AI model or to your database, which ultimately drives

1171
01:03:37.599 --> 01:03:40.119
<v Speaker 5>down costs for very concurrent applications that are doing a

1172
01:03:40.159 --> 01:03:43.840
<v Speaker 5>lot of IO. So in some instances we've seen people

1173
01:03:43.880 --> 01:03:46.239
<v Speaker 5>saving as much as eighty five percent of their bill

1174
01:03:46.320 --> 01:03:49.880
<v Speaker 5>previously on the server list model. It obviously depends on

1175
01:03:50.000 --> 01:03:54.679
<v Speaker 5>your traffic patterns how concurrent your traffic actually is, but

1176
01:03:54.719 --> 01:03:57.079
<v Speaker 5>in almost all cases it's better for the customer.

1177
01:03:58.039 --> 01:04:02.119
<v Speaker 1>You said, this isn't running on Lambda or things like that,

1178
01:04:03.039 --> 01:04:04.079
<v Speaker 1>What is it running on?

1179
01:04:04.199 --> 01:04:07.440
<v Speaker 2>Is this your own platform or yeah?

1180
01:04:07.480 --> 01:04:10.679
<v Speaker 5>So we still use AWS, but over the years we've

1181
01:04:10.679 --> 01:04:14.079
<v Speaker 5>had to excuse me, over the years, we've had to

1182
01:04:14.159 --> 01:04:19.000
<v Speaker 5>kind of build our own custom pieces to handle support

1183
01:04:19.039 --> 01:04:23.599
<v Speaker 5>before Landa eventually had it. In some instances never had it,

1184
01:04:23.679 --> 01:04:30.760
<v Speaker 5>so for example, excuse me one second, got a cough.

1185
01:04:31.760 --> 01:04:38.159
<v Speaker 5>For example, Landa didn't have streaming until recently, I think

1186
01:04:38.199 --> 01:04:41.360
<v Speaker 5>maybe like a year ago. But when we launched the

1187
01:04:41.400 --> 01:04:44.280
<v Speaker 5>next year's app router, we wanted to have streaming and

1188
01:04:45.800 --> 01:04:48.159
<v Speaker 5>had to build that kind of independently on our system.

1189
01:04:48.239 --> 01:04:51.280
<v Speaker 5>So we still use AWS, still love AWS, but we've

1190
01:04:51.280 --> 01:04:57.639
<v Speaker 5>had to build a lot of that stuff ourselves said

1191
01:04:57.679 --> 01:04:59.800
<v Speaker 5>in another way, you can't go to AWS and purchase

1192
01:05:00.000 --> 01:05:00.679
<v Speaker 5>would compute off.

1193
01:05:00.639 --> 01:05:06.760
<v Speaker 4>The shelf, right, So you're using AWS as kind of

1194
01:05:06.880 --> 01:05:09.800
<v Speaker 4>like the hardware as it were, but you're building a

1195
01:05:09.840 --> 01:05:13.119
<v Speaker 4>lot of the functionality on top of that stuff that

1196
01:05:13.840 --> 01:05:20.800
<v Speaker 4>other that others might try to get from AWS but

1197
01:05:21.199 --> 01:05:23.960
<v Speaker 4>can't necessarily get from them, at least not yet.

1198
01:05:24.599 --> 01:05:27.079
<v Speaker 5>Yeah, and we've seen this exact same thing play out

1199
01:05:27.079 --> 01:05:30.199
<v Speaker 5>in our build infrastructure as well. So yes, you can

1200
01:05:30.239 --> 01:05:33.400
<v Speaker 5>go run a bunch of builds on EC two, but

1201
01:05:33.519 --> 01:05:35.599
<v Speaker 5>we had done that for many, many years and found

1202
01:05:35.599 --> 01:05:38.199
<v Speaker 5>there were a lot of little optimizations we wanted to

1203
01:05:38.239 --> 01:05:40.559
<v Speaker 5>make to make it more efficient and more cost effective.

1204
01:05:41.159 --> 01:05:44.159
<v Speaker 5>And it's not like we set out with the goal like, man,

1205
01:05:44.199 --> 01:05:46.519
<v Speaker 5>we really want to rebuild our build infrastructure and do

1206
01:05:46.599 --> 01:05:50.199
<v Speaker 5>something custom. It was more of an innovation was a

1207
01:05:50.280 --> 01:05:53.840
<v Speaker 5>necessity here. So we have a technical blog post that

1208
01:05:53.880 --> 01:05:56.199
<v Speaker 5>talks about this. But our internal build system is called

1209
01:05:56.280 --> 01:05:59.800
<v Speaker 5>HIVE and it's effectually we outgrew EASY two based on

1210
01:06:00.039 --> 01:06:02.599
<v Speaker 5>you know, millions and millions and millions of builds and

1211
01:06:02.719 --> 01:06:04.480
<v Speaker 5>ended up kind of building our own system on top

1212
01:06:04.519 --> 01:06:06.559
<v Speaker 5>of the underlying as primitives.

1213
01:06:07.400 --> 01:06:07.679
<v Speaker 4>Cool.

1214
01:06:08.559 --> 01:06:12.199
<v Speaker 5>So aw US is still great for like super reliable, fast,

1215
01:06:12.360 --> 01:06:17.360
<v Speaker 5>efficient cloud infrastructure. We're just trying to build. We're trying

1216
01:06:17.400 --> 01:06:19.440
<v Speaker 5>to build the right abstractions for a developers so they

1217
01:06:19.440 --> 01:06:22.079
<v Speaker 5>can take the best advantage of that infrastructure.

1218
01:06:25.039 --> 01:06:25.480
<v Speaker 2>Gotcha.

1219
01:06:25.639 --> 01:06:29.960
<v Speaker 1>So for the stuff in Fluid, how much of it

1220
01:06:30.000 --> 01:06:33.559
<v Speaker 1>is sort of transparent? You know, like I just build

1221
01:06:33.559 --> 01:06:35.880
<v Speaker 1>the next app and then I fluid it and then

1222
01:06:35.920 --> 01:06:40.159
<v Speaker 1>it just works and I get those optimizations versus Okay,

1223
01:06:40.280 --> 01:06:42.760
<v Speaker 1>you're going to deploy this to Fluid, You've got to

1224
01:06:42.840 --> 01:06:45.199
<v Speaker 1>use some of these APIs to get some of the goodies.

1225
01:06:45.840 --> 01:06:47.719
<v Speaker 5>Yeah, it's fully transparent. And this is kind of the

1226
01:06:47.800 --> 01:06:52.360
<v Speaker 5>beauty of the framework defined infrastructure model is you wrote

1227
01:06:52.400 --> 01:06:55.639
<v Speaker 5>an xtgs app or any framework app, and you had

1228
01:06:55.639 --> 01:06:59.079
<v Speaker 5>some kind of API and it works on your local machine.

1229
01:06:59.119 --> 01:07:02.280
<v Speaker 5>You've got your API. Awesome, you deployed to Purcell. We

1230
01:07:02.440 --> 01:07:05.880
<v Speaker 5>understand the output of the framework was an API. We

1231
01:07:06.000 --> 01:07:08.920
<v Speaker 5>convert it into a forceell function and you flip on

1232
01:07:08.960 --> 01:07:11.159
<v Speaker 5>the switch that says yes, I would like to use

1233
01:07:11.199 --> 01:07:15.400
<v Speaker 5>Fluid compute. You now have more cost effective, more concurrent

1234
01:07:15.440 --> 01:07:19.239
<v Speaker 5>optimized infrastructure without having to write the infrastructure code to yourself.

1235
01:07:19.360 --> 01:07:21.119
<v Speaker 5>It's still an output of the framework.

1236
01:07:22.360 --> 01:07:23.960
<v Speaker 2>So what frame we also have work then?

1237
01:07:24.880 --> 01:07:25.679
<v Speaker 5>Sorry, say the game.

1238
01:07:26.039 --> 01:07:27.400
<v Speaker 2>What frameworks do you support then?

1239
01:07:27.480 --> 01:07:31.320
<v Speaker 5>For fluid, any framework that can run compute unver sell,

1240
01:07:31.519 --> 01:07:35.880
<v Speaker 5>so any server rendered framework, any framework that allows APIs,

1241
01:07:36.320 --> 01:07:38.320
<v Speaker 5>or even you know, if you want to do, for example,

1242
01:07:38.400 --> 01:07:44.119
<v Speaker 5>a client VT application that uses the ver Cell Functions

1243
01:07:44.159 --> 01:07:47.239
<v Speaker 5>API directory, which is a way to add server side

1244
01:07:47.280 --> 01:07:50.360
<v Speaker 5>code to just a client on the app, those functions

1245
01:07:50.400 --> 01:07:54.280
<v Speaker 5>can also use Fluid as well. And also you can

1246
01:07:54.599 --> 01:07:56.639
<v Speaker 5>you know, maybe not as well known, but you can

1247
01:07:56.639 --> 01:07:59.239
<v Speaker 5>deploy Express apps to for sell or you know, newer

1248
01:07:59.280 --> 01:08:02.840
<v Speaker 5>frameworks like Ono, which is like a back end Express

1249
01:08:02.880 --> 01:08:05.960
<v Speaker 5>replacement and it also supports Python, so we run you

1250
01:08:05.960 --> 01:08:07.639
<v Speaker 5>can run Python APIs on versel too.

1251
01:08:09.480 --> 01:08:09.920
<v Speaker 2>Very cool.

1252
01:08:13.000 --> 01:08:17.039
<v Speaker 4>How about Ruby on rails?

1253
01:08:17.359 --> 01:08:21.079
<v Speaker 5>Yeah, yeah, it would it would be interesting. Not something

1254
01:08:21.119 --> 01:08:23.319
<v Speaker 5>that is kind of top of our list right now

1255
01:08:23.359 --> 01:08:27.239
<v Speaker 5>for Ruby or for PHB, but there are community libraries

1256
01:08:27.239 --> 01:08:29.560
<v Speaker 5>that do it, so some people have kind of hacked

1257
01:08:29.560 --> 01:08:31.680
<v Speaker 5>around it in the community, which I think is pretty interesting.

1258
01:08:32.159 --> 01:08:34.600
<v Speaker 1>So what else should people know what's going on at versaill.

1259
01:08:35.079 --> 01:08:36.840
<v Speaker 1>It's always interesting to see what you guys are doing.

1260
01:08:37.239 --> 01:08:40.079
<v Speaker 5>Yeah, So we talked about v zero, We talked about

1261
01:08:40.119 --> 01:08:42.800
<v Speaker 5>the AI s TK, We talked about next years and

1262
01:08:42.840 --> 01:08:45.760
<v Speaker 5>some of our improvements there, talked about for sale and

1263
01:08:45.840 --> 01:08:53.479
<v Speaker 5>fluid Compute, We talked about the flags SDK. We talked

1264
01:08:53.479 --> 01:08:56.199
<v Speaker 5>a little bit about shad cn UI, which I think

1265
01:08:56.239 --> 01:08:59.640
<v Speaker 5>is interesting. Shad cn works at for sale, so it's

1266
01:08:59.640 --> 01:09:02.199
<v Speaker 5>something that we are, you know, always investing in as well.

1267
01:09:02.239 --> 01:09:06.720
<v Speaker 5>And v zero natively understands chad cy end components as

1268
01:09:06.760 --> 01:09:11.399
<v Speaker 5>well as kind of funnily enough, chat Gubt and Claude

1269
01:09:11.439 --> 01:09:14.800
<v Speaker 5>also like their their UI applications on the web, also

1270
01:09:14.880 --> 01:09:17.760
<v Speaker 5>understand chad cend and can generate chadsand components, which is

1271
01:09:17.760 --> 01:09:20.800
<v Speaker 5>pretty cool. So it's awesome to see that standardization there.

1272
01:09:23.680 --> 01:09:26.880
<v Speaker 5>I think that pretty much covers everything. I mean, we

1273
01:09:26.920 --> 01:09:29.279
<v Speaker 5>can we can talk about other bits if you would

1274
01:09:29.359 --> 01:09:34.920
<v Speaker 5>want around for sales, infrastructure and or other next shift features,

1275
01:09:35.079 --> 01:09:37.520
<v Speaker 5>but that we've we've covered quite a bit of service area.

1276
01:09:38.319 --> 01:09:38.680
<v Speaker 2>Yeah.

1277
01:09:38.920 --> 01:09:40.359
<v Speaker 1>Well, we're kind of getting toward the end of our

1278
01:09:40.359 --> 01:09:45.039
<v Speaker 1>time too. If people want to connect, they have questions

1279
01:09:45.039 --> 01:09:48.039
<v Speaker 1>about versell or v zero or anything else we've asked about.

1280
01:09:48.680 --> 01:09:50.479
<v Speaker 1>How do they reach you or get help from other

1281
01:09:50.479 --> 01:09:51.199
<v Speaker 1>people at Vercell.

1282
01:09:52.079 --> 01:09:54.760
<v Speaker 5>Yeah, if you want to reach out to me, please

1283
01:09:55.079 --> 01:09:58.239
<v Speaker 5>send me a message on x Twitter. Uh. If you

1284
01:09:58.359 --> 01:10:00.880
<v Speaker 5>have feedback on any of our product there should be

1285
01:10:00.920 --> 01:10:03.439
<v Speaker 5>a feedback button in the UI on every single one

1286
01:10:03.479 --> 01:10:05.560
<v Speaker 5>of our surfaces if you want to just go directly there,

1287
01:10:05.920 --> 01:10:08.119
<v Speaker 5>that all gets red and routed to the right teams.

1288
01:10:08.159 --> 01:10:10.920
<v Speaker 5>So just know your feedback is heard. And you can

1289
01:10:10.920 --> 01:10:14.119
<v Speaker 5>also email me Lee at verssel dot com for those

1290
01:10:14.159 --> 01:10:15.439
<v Speaker 5>of you who used to like email.

1291
01:10:17.359 --> 01:10:20.720
<v Speaker 4>All right, I love Well, I'll tell you one thing.

1292
01:10:20.920 --> 01:10:26.479
<v Speaker 4>You know, we predominantly use Slack, and I keep losing

1293
01:10:26.960 --> 01:10:30.039
<v Speaker 4>things on Slack. Somebody sends a message in one of

1294
01:10:30.079 --> 01:10:32.840
<v Speaker 4>the channels I'm like subscribed to like a million channels

1295
01:10:32.880 --> 01:10:35.079
<v Speaker 4>because of the type of role that I perform at

1296
01:10:35.079 --> 01:10:38.720
<v Speaker 4>the company. Yeah, and if somebody something is sent on

1297
01:10:38.760 --> 01:10:41.840
<v Speaker 4>some channel and I didn't catch it when it was sent,

1298
01:10:42.439 --> 01:10:44.640
<v Speaker 4>there's a good chance that I will never catch it.

1299
01:10:45.159 --> 01:10:50.439
<v Speaker 5>Hmm. Yeah. I've had to get very I've had to

1300
01:10:50.479 --> 01:10:54.880
<v Speaker 5>become a very skilled Slack sleuth. I don't know the

1301
01:10:54.960 --> 01:10:57.479
<v Speaker 5>right the right words, but I'm I'm I'm very good

1302
01:10:57.479 --> 01:11:02.039
<v Speaker 5>at navigating the mess of Slack channel now and staying

1303
01:11:02.039 --> 01:11:04.119
<v Speaker 5>on top of what I need to be on top of, because, yeah,

1304
01:11:04.119 --> 01:11:07.760
<v Speaker 5>as a company grows, there's just lots of information happening

1305
01:11:07.840 --> 01:11:09.119
<v Speaker 5>in real time in slack.

1306
01:11:09.920 --> 01:11:16.399
<v Speaker 4>Yep, all right, right right for machine learning. Yes, here's

1307
01:11:16.399 --> 01:11:19.119
<v Speaker 4>the summary of all the things. Here's the summary of

1308
01:11:19.119 --> 01:11:21.479
<v Speaker 4>all the things I should know that happened in Slack

1309
01:11:22.199 --> 01:11:23.479
<v Speaker 4>since the last time I checked.

1310
01:11:23.880 --> 01:11:24.199
<v Speaker 5>Totally.

1311
01:11:24.239 --> 01:11:30.399
<v Speaker 1>Yeah, all right, let's have Dan starts with picks, Dan,

1312
01:11:30.479 --> 01:11:31.520
<v Speaker 1>what are your picks?

1313
01:11:32.840 --> 01:11:36.159
<v Speaker 4>I don't have that much, you know what, I'll mention

1314
01:11:36.399 --> 01:11:39.880
<v Speaker 4>just the one thing. So I think I picked this

1315
01:11:39.920 --> 01:11:45.840
<v Speaker 4>one before a while back. It's a podcast called Revolutions

1316
01:11:46.319 --> 01:11:49.319
<v Speaker 4>by Mike Duncan, the same guy that did the History

1317
01:11:49.359 --> 01:11:53.319
<v Speaker 4>of Rome podcast. I'm very much a history buff, and

1318
01:11:53.520 --> 01:11:58.439
<v Speaker 4>Revolutions is like him going through big revolutions in history,

1319
01:11:58.840 --> 01:12:02.239
<v Speaker 4>starting from the English Revolution, the less well known English

1320
01:12:02.239 --> 01:12:06.119
<v Speaker 4>Revolution with Oliver Cromwell, and then going to the French Revolution,

1321
01:12:06.279 --> 01:12:10.079
<v Speaker 4>the American or the American Revolution, the French Revolution, the

1322
01:12:10.159 --> 01:12:14.680
<v Speaker 4>Mexican Revolution, the Russian Revolution, et cetera. And it's highly

1323
01:12:14.720 --> 01:12:18.920
<v Speaker 4>recommended and very interesting. But he's now doing something that's

1324
01:12:19.000 --> 01:12:22.039
<v Speaker 4>kind of out there. I mean after the Russian Revolution,

1325
01:12:22.199 --> 01:12:24.560
<v Speaker 4>he got to the point where if he kept on

1326
01:12:25.399 --> 01:12:28.760
<v Speaker 4>talking about even more modern revolutions, it would stop being

1327
01:12:28.800 --> 01:12:32.319
<v Speaker 4>so much about history and being more about politics, I guess.

1328
01:12:33.279 --> 01:12:36.560
<v Speaker 4>So instead, what he did he kind of invented his

1329
01:12:36.640 --> 01:12:42.119
<v Speaker 4>own revolution. He's talking about a revolution on Mars in

1330
01:12:43.000 --> 01:12:46.359
<v Speaker 4>the twenty fourth century or twenty third or twenty fourth

1331
01:12:46.359 --> 01:12:51.479
<v Speaker 4>century or something like that. So it's really interesting how

1332
01:12:51.520 --> 01:12:55.600
<v Speaker 4>he's inventing a revolution to talk about, and it's kind

1333
01:12:55.600 --> 01:12:58.479
<v Speaker 4>of like a science fiction story in a way. But

1334
01:12:58.640 --> 01:13:04.840
<v Speaker 4>it's very engaging and I highly recommend it. So that

1335
01:13:04.880 --> 01:13:09.239
<v Speaker 4>would be if you've not listened to any of that podcasts,

1336
01:13:09.560 --> 01:13:12.039
<v Speaker 4>I would recommend to go back from the start. It's

1337
01:13:12.039 --> 01:13:15.560
<v Speaker 4>got hundreds of episodes. It's of course not the same

1338
01:13:15.600 --> 01:13:18.279
<v Speaker 4>type of podcast as ours. It's not in discussion, it's

1339
01:13:18.279 --> 01:13:22.399
<v Speaker 4>not an interview. It's all scripted. He basically reads out

1340
01:13:22.479 --> 01:13:24.880
<v Speaker 4>the script that he wrote, but he does a ton

1341
01:13:24.920 --> 01:13:30.039
<v Speaker 4>of research. It's highly engaging, very amusing, very informative. Again,

1342
01:13:30.119 --> 01:13:33.319
<v Speaker 4>highly recommended, and the new stuff is recommended as well,

1343
01:13:34.000 --> 01:13:35.239
<v Speaker 4>And that would be my pick.

1344
01:13:36.199 --> 01:13:39.159
<v Speaker 2>Awesome, Steve, what are your picks?

1345
01:13:40.239 --> 01:13:40.359
<v Speaker 3>All?

1346
01:13:40.479 --> 01:13:40.640
<v Speaker 5>Right?

1347
01:13:40.720 --> 01:13:43.640
<v Speaker 3>So before I get into the high point of every

1348
01:13:43.640 --> 01:13:45.399
<v Speaker 3>episode of The Dad Jokes of the Week. I'm going

1349
01:13:45.439 --> 01:13:49.640
<v Speaker 3>to do a shameless plug here in terms of a

1350
01:13:50.159 --> 01:13:53.800
<v Speaker 3>email I got through LinkedIn from somebody who's a listener,

1351
01:13:53.800 --> 01:13:56.159
<v Speaker 3>and I won't share his name to protect him from

1352
01:13:56.159 --> 01:13:59.119
<v Speaker 3>the abuse he would receive somebody who likes my dad jokes.

1353
01:13:59.359 --> 01:14:03.199
<v Speaker 3>But uh, he did say that, Hey, I'm a longtime

1354
01:14:03.239 --> 01:14:05.640
<v Speaker 3>listener of JS jabber and enjoy it very much, particularly

1355
01:14:05.720 --> 01:14:07.560
<v Speaker 3>your dad jokes. I have retold a few of them

1356
01:14:07.560 --> 01:14:10.640
<v Speaker 3>and got mostly eye rolling but a few guffaws. So like, okay,

1357
01:14:10.640 --> 01:14:16.000
<v Speaker 3>that's good, making some good progress there. So now to

1358
01:14:16.119 --> 01:14:18.319
<v Speaker 3>the reasons for that email the Dad Jokes of the Week.

1359
01:14:20.000 --> 01:14:23.760
<v Speaker 3>So recently I changed the voice you know on my

1360
01:14:23.760 --> 01:14:27.199
<v Speaker 3>my car GPS you can use the different accents and stuff,

1361
01:14:27.199 --> 01:14:29.479
<v Speaker 3>you know. I changed it to nail. So now it

1362
01:14:29.560 --> 01:14:36.399
<v Speaker 3>just says it's around here somewhere, keep driving. Oh my

1363
01:14:36.560 --> 01:14:40.119
<v Speaker 3>dad joke isn't drum roll is not working, bumming me

1364
01:14:40.159 --> 01:14:40.560
<v Speaker 3>out here?

1365
01:14:40.640 --> 01:14:41.039
<v Speaker 5>Okay.

1366
01:14:41.800 --> 01:14:44.119
<v Speaker 2>So, uh, I was.

1367
01:14:44.199 --> 01:14:46.840
<v Speaker 3>Ordering a pizza the other day and they asked me

1368
01:14:46.880 --> 01:14:49.720
<v Speaker 3>if I wanted to cut it into four or eight slices.

1369
01:14:50.560 --> 01:14:55.239
<v Speaker 3>I said four, There's no way I could eat eighth.

1370
01:14:55.279 --> 01:14:55.720
<v Speaker 5>There we go.

1371
01:14:56.199 --> 01:14:58.319
<v Speaker 4>You kind of reminded me of the fact that I

1372
01:14:58.600 --> 01:15:01.039
<v Speaker 4>say that I don't care but the price of gas

1373
01:15:01.079 --> 01:15:03.159
<v Speaker 4>because I always pay fifty dollars.

1374
01:15:07.800 --> 01:15:08.159
<v Speaker 5>Gotcha.

1375
01:15:08.520 --> 01:15:14.359
<v Speaker 3>Sorry, let me give you that oh damn drum that's

1376
01:15:14.399 --> 01:15:16.119
<v Speaker 3>not working in. Sorry, tried to give you a drum joke.

1377
01:15:16.520 --> 01:15:19.479
<v Speaker 3>There I go, little delayed. Sorry, we're back to Riverside again.

1378
01:15:19.680 --> 01:15:22.039
<v Speaker 3>The uys that there's a little delay there. It's messing

1379
01:15:22.039 --> 01:15:24.640
<v Speaker 3>me up. So I gotta get back on the train again.

1380
01:15:25.399 --> 01:15:27.720
<v Speaker 4>You need to to play the drum role before you

1381
01:15:27.800 --> 01:15:28.359
<v Speaker 4>tell the joke.

1382
01:15:28.520 --> 01:15:29.119
<v Speaker 5>And yeah, but.

1383
01:15:29.159 --> 01:15:30.399
<v Speaker 3>Yeah, there's enough of a lag there.

1384
01:15:30.439 --> 01:15:31.079
<v Speaker 5>I gotta do it.

1385
01:15:32.279 --> 01:15:34.520
<v Speaker 3>So two more so, my favorite suit, I come up

1386
01:15:34.520 --> 01:15:37.560
<v Speaker 3>with a new superhero and you know, Chuck's Marble shirt

1387
01:15:37.560 --> 01:15:39.399
<v Speaker 3>that he's wearing today sort of inspired me this. I

1388
01:15:39.439 --> 01:15:41.239
<v Speaker 3>don't know if he's part of the Marvel universe or

1389
01:15:41.279 --> 01:15:44.920
<v Speaker 3>maybe another one, but it's Typo Man because he rights

1390
01:15:44.960 --> 01:15:53.399
<v Speaker 3>all the wrongs that's writ right. And then finally I

1391
01:15:53.439 --> 01:15:56.000
<v Speaker 3>told my wife I wanted to be cremated. She made

1392
01:15:56.000 --> 01:15:59.560
<v Speaker 3>an appointment for Tuesday.

1393
01:15:59.600 --> 01:16:02.840
<v Speaker 4>Well, there was the Monty Python Meaning of Life movie

1394
01:16:02.920 --> 01:16:05.800
<v Speaker 4>where they they you know, they knock on his door

1395
01:16:05.840 --> 01:16:08.760
<v Speaker 4>and say you you've signed to be an organ donor.

1396
01:16:08.800 --> 01:16:10.119
<v Speaker 4>We've come to collect.

1397
01:16:10.159 --> 01:16:15.880
<v Speaker 3>Right, always look on the bride.

1398
01:16:16.079 --> 01:16:17.159
<v Speaker 4>That's a different one though.

1399
01:16:18.800 --> 01:16:20.680
<v Speaker 1>All right, I'm going to go in with my picks.

1400
01:16:21.279 --> 01:16:24.640
<v Speaker 1>I usually do a board game pick. I haven't played

1401
01:16:24.640 --> 01:16:27.279
<v Speaker 1>anything new lately. I'm gonna pick one that I haven't

1402
01:16:27.279 --> 01:16:30.159
<v Speaker 1>picked in a while. So my wife and I went

1403
01:16:30.239 --> 01:16:34.439
<v Speaker 1>down to Saint George, Utah for the Parade of Homes.

1404
01:16:34.439 --> 01:16:38.920
<v Speaker 1>We do this every year on the last weekend in February, basically,

1405
01:16:39.520 --> 01:16:43.840
<v Speaker 1>and uh, my sister in law and her husband come

1406
01:16:43.880 --> 01:16:46.680
<v Speaker 1>and they always bring the same game, and we really

1407
01:16:46.760 --> 01:16:50.279
<v Speaker 1>enjoy playing. It's called The Quacks of Quedlinberg, and what

1408
01:16:50.319 --> 01:16:55.399
<v Speaker 1>you're doing is you're basically brewing a potion and if

1409
01:16:55.399 --> 01:16:57.520
<v Speaker 1>you get too many of the wrong element, the white

1410
01:16:57.520 --> 01:17:00.640
<v Speaker 1>elements in it, it'll blow up. And so you're trying

1411
01:17:00.680 --> 01:17:03.720
<v Speaker 1>to get a big as big a potion as you can,

1412
01:17:04.319 --> 01:17:09.239
<v Speaker 1>often with as many elements as possible unique elements, without

1413
01:17:09.239 --> 01:17:12.520
<v Speaker 1>blowing up your pot. And then you get bonuses for

1414
01:17:12.600 --> 01:17:15.520
<v Speaker 1>playing it. I think we were playing with some of

1415
01:17:15.560 --> 01:17:21.760
<v Speaker 1>the extensions, but the base game is actually pretty good.

1416
01:17:22.680 --> 01:17:24.439
<v Speaker 1>Let me see, I didn't look it up on board

1417
01:17:24.439 --> 01:17:26.720
<v Speaker 1>game Geeks, so let me grab that real quick, and

1418
01:17:26.760 --> 01:17:32.000
<v Speaker 1>I can tell you what the It's got a board

1419
01:17:32.000 --> 01:17:34.720
<v Speaker 1>game weight of one point ninety four. So if you like,

1420
01:17:35.199 --> 01:17:37.039
<v Speaker 1>if you like a game that'll make you think, but

1421
01:17:37.079 --> 01:17:40.680
<v Speaker 1>it's not like super complicated. That's about where this clock's in.

1422
01:17:42.560 --> 01:17:45.920
<v Speaker 1>I think we played it in an hour anyway, fun game,

1423
01:17:47.479 --> 01:17:51.079
<v Speaker 1>so I'm gonna pick that. I'm also going to and

1424
01:17:52.880 --> 01:17:56.520
<v Speaker 1>I'm just that guy sometimes. So we are on Riverside.

1425
01:17:56.520 --> 01:17:59.239
<v Speaker 1>It's been mentioned a few times we were on stream Yard.

1426
01:18:00.840 --> 01:18:04.039
<v Speaker 1>I was having some issues with stream Yard, working things

1427
01:18:04.039 --> 01:18:06.800
<v Speaker 1>out to get the payments to work with them and

1428
01:18:06.840 --> 01:18:10.600
<v Speaker 1>things like that, and eventually they downgraded the account and

1429
01:18:10.680 --> 01:18:12.560
<v Speaker 1>deleted some of the episodes.

1430
01:18:12.039 --> 01:18:13.920
<v Speaker 2>That we hadn't released yet.

1431
01:18:15.560 --> 01:18:21.560
<v Speaker 1>Oh wow, And so yeah, caveat emptor if you're going

1432
01:18:21.600 --> 01:18:23.000
<v Speaker 1>to go use stream Yard.

1433
01:18:23.520 --> 01:18:26.600
<v Speaker 2>They have a great tool, but they might just stab

1434
01:18:26.640 --> 01:18:30.560
<v Speaker 2>you in the kidney. So anyway, do.

1435
01:18:30.680 --> 01:18:33.239
<v Speaker 4>You think content is a big no? No?

1436
01:18:33.359 --> 01:18:37.319
<v Speaker 2>I mean yeah, And I tried to work with them.

1437
01:18:37.359 --> 01:18:39.319
<v Speaker 1>I tried to figure out how to get it, and

1438
01:18:40.439 --> 01:18:44.680
<v Speaker 1>they just came back and said we deleted it. So anyway, yeah,

1439
01:18:44.720 --> 01:18:46.439
<v Speaker 1>So if you're gonna do this kind of a thing,

1440
01:18:48.159 --> 01:18:50.279
<v Speaker 1>just be aware. We've never had that issue with Riverside.

1441
01:18:51.119 --> 01:18:54.000
<v Speaker 1>I did go through a bit of a process just

1442
01:18:54.039 --> 01:18:56.680
<v Speaker 1>talking to Riverside, and it was the process was them

1443
01:18:56.720 --> 01:18:58.840
<v Speaker 1>showing me all the things it does now, and it

1444
01:18:58.920 --> 01:19:02.079
<v Speaker 1>does like all of the things that I had wished

1445
01:19:02.079 --> 01:19:03.000
<v Speaker 1>it had done before.

1446
01:19:03.439 --> 01:19:04.560
<v Speaker 2>It basically does now.

1447
01:19:04.600 --> 01:19:09.479
<v Speaker 1>You can actually edit your episodes in Riverside and it

1448
01:19:09.560 --> 01:19:12.920
<v Speaker 1>uses AI to clean up a bunch of stuff, automatically

1449
01:19:12.960 --> 01:19:21.800
<v Speaker 1>generates your transcripts, it'll write you show notes. You know,

1450
01:19:22.079 --> 01:19:25.039
<v Speaker 1>all all the things that I've either been paying for

1451
01:19:25.079 --> 01:19:27.920
<v Speaker 1>other systems to do or wishing that I had a

1452
01:19:27.960 --> 01:19:31.239
<v Speaker 1>system to do. It does all those things. So I'm

1453
01:19:31.239 --> 01:19:35.920
<v Speaker 1>going to pick Riverside. Riverside is not cheap either, but.

1454
01:19:37.359 --> 01:19:45.479
<v Speaker 4>You know, anyway, anything's better than some getting your episodes deleted.

1455
01:19:46.000 --> 01:19:49.079
<v Speaker 2>Yeah. So yeah, we lost a couple.

1456
01:19:49.199 --> 01:19:51.119
<v Speaker 1>I think we lost more on Ruby rogues and we

1457
01:19:51.159 --> 01:19:53.520
<v Speaker 1>did on JavaScript ever, but we may have to reach

1458
01:19:53.520 --> 01:19:55.520
<v Speaker 1>out a couple of people and say, hey, they deleted it,

1459
01:19:55.520 --> 01:20:02.079
<v Speaker 1>We're going to record it. But yeah, I'm delighted to

1460
01:20:02.119 --> 01:20:04.640
<v Speaker 1>be on Riverside. And apparently it's an Israeli company, which

1461
01:20:04.640 --> 01:20:08.000
<v Speaker 1>is also cool. I don't I don't know that I

1462
01:20:08.039 --> 01:20:10.640
<v Speaker 1>care a ton where the where any company I use

1463
01:20:10.760 --> 01:20:13.880
<v Speaker 1>is based unless but I'm.

1464
01:20:13.760 --> 01:20:16.920
<v Speaker 4>Kind of curious because it was streamed live, so it's

1465
01:20:16.960 --> 01:20:19.600
<v Speaker 4>it's on YouTube, it's on on Oh.

1466
01:20:19.600 --> 01:20:21.560
<v Speaker 2>Yes, we could get them that way. That's a good.

1467
01:20:21.560 --> 01:20:26.840
<v Speaker 1>That's a good. Here we go, troubleshooting live on JavaScript chever. Yeah,

1468
01:20:26.840 --> 01:20:30.079
<v Speaker 1>we should be able to pull them off of YouTube

1469
01:20:30.520 --> 01:20:34.439
<v Speaker 1>because they're on they're on the channel for the network,

1470
01:20:35.039 --> 01:20:36.520
<v Speaker 1>and so we can download them off of there.

1471
01:20:38.560 --> 01:20:40.800
<v Speaker 2>You just saved us a little work, thanks Dan.

1472
01:20:42.600 --> 01:20:48.520
<v Speaker 4>Besides that, I still remember that episode that we that

1473
01:20:48.640 --> 01:20:51.399
<v Speaker 4>we did with pressing the record button.

1474
01:20:52.520 --> 01:20:58.000
<v Speaker 2>That once or twice. I've done that before. Yeah, that

1475
01:20:58.000 --> 01:20:58.600
<v Speaker 2>that's a mistake.

1476
01:20:58.640 --> 01:21:00.560
<v Speaker 1>You only make a couple of times, and then you're

1477
01:21:02.199 --> 01:21:03.079
<v Speaker 1>very first podcast.

1478
01:21:03.199 --> 01:21:07.279
<v Speaker 3>Let's throw out the very first podcast episode I ever did.

1479
01:21:07.319 --> 01:21:08.840
<v Speaker 3>I did that and had to re record it. The

1480
01:21:08.840 --> 01:21:12.680
<v Speaker 3>guy is gracious enough to re record it with me. Yeah,

1481
01:21:12.920 --> 01:21:13.640
<v Speaker 3>never forget that.

1482
01:21:15.159 --> 01:21:18.000
<v Speaker 4>By the way, you know, as an interesting pick, we

1483
01:21:18.159 --> 01:21:22.239
<v Speaker 4>now use for some reason Google Meet at work instead

1484
01:21:22.319 --> 01:21:25.920
<v Speaker 4>of Zoom, which is not necessarily what I would have chosen.

1485
01:21:26.000 --> 01:21:29.039
<v Speaker 4>But they have a good feature, which is you can

1486
01:21:29.479 --> 01:21:34.039
<v Speaker 4>pre configure the session to be recorded because you never

1487
01:21:34.159 --> 01:21:40.479
<v Speaker 4>remember to press record in real time, so it's it's

1488
01:21:40.600 --> 01:21:42.479
<v Speaker 4>one thing that I do now when it when it's

1489
01:21:42.560 --> 01:21:45.560
<v Speaker 4>sessions that I schedule that I know need to be recorded.

1490
01:21:46.000 --> 01:21:47.640
<v Speaker 2>Yep, I think Lee needs to run. Do you have

1491
01:21:47.680 --> 01:21:48.960
<v Speaker 2>anything you want to throw out real quick?

1492
01:21:50.640 --> 01:21:53.159
<v Speaker 5>I'll give a shout out to Z my code editor,

1493
01:21:53.479 --> 01:21:55.159
<v Speaker 5>and mentioned it a little bit in the podcast. But

1494
01:21:55.199 --> 01:21:59.199
<v Speaker 5>it's been enjoy to use and they're shipping tons of

1495
01:21:59.199 --> 01:22:01.079
<v Speaker 5>good improvements. So big fan.

1496
01:22:01.640 --> 01:22:05.239
<v Speaker 1>All right, good deal. Well thanks again for coming. So

1497
01:22:05.319 --> 01:22:07.840
<v Speaker 1>much interesting stuff going on. You're right in the middle

1498
01:22:07.840 --> 01:22:08.000
<v Speaker 1>of it.

1499
01:22:09.439 --> 01:22:12.479
<v Speaker 2>All right. We'll wrap it up here, folks. Until next time.

1500
01:22:12.560 --> 01:22:13.039
<v Speaker 2>Max out
