WEBVTT

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

2
00:00:09.560 --> 00:00:11.720
<v Speaker 1>This week, I'm your host, Charles Maxwood, and we are

3
00:00:11.759 --> 00:00:15.839
<v Speaker 1>talking to Delaney Gillileen. We're going to be talking about

4
00:00:15.960 --> 00:00:18.079
<v Speaker 1>how everybody's doing the front end wrong and how it's

5
00:00:18.079 --> 00:00:21.160
<v Speaker 1>super slow because we all do it wrong. So do

6
00:00:21.160 --> 00:00:23.920
<v Speaker 1>you want to introduce yourself and we can dive in

7
00:00:24.079 --> 00:00:26.519
<v Speaker 1>and talk about how we could do it better.

8
00:00:27.039 --> 00:00:27.320
<v Speaker 2>Sure.

9
00:00:27.480 --> 00:00:30.079
<v Speaker 3>Yeah, as you said, my name is Delaney.

10
00:00:30.199 --> 00:00:32.039
<v Speaker 2>I have a kind of a weird background.

11
00:00:32.079 --> 00:00:34.479
<v Speaker 3>I've done a lot of stuff in game development, military

12
00:00:34.520 --> 00:00:37.000
<v Speaker 3>applications and all that, and I've always found that the

13
00:00:37.200 --> 00:00:41.359
<v Speaker 3>web is an amazing sandbox for doing security and deployment

14
00:00:41.399 --> 00:00:44.359
<v Speaker 3>and so it's almost its own little os and I

15
00:00:44.399 --> 00:00:46.799
<v Speaker 3>love the ideas of it, and I've done some pretty

16
00:00:47.119 --> 00:00:51.000
<v Speaker 3>big applications in it, but I've always had this weird ditch.

17
00:00:50.880 --> 00:00:54.560
<v Speaker 2>That things are being done wrong. I really had.

18
00:00:54.399 --> 00:00:58.280
<v Speaker 3>Issues with spas and how you're basically sitting down in

19
00:00:58.320 --> 00:01:01.359
<v Speaker 3>all your state and Jason and recreating the world each

20
00:01:01.439 --> 00:01:04.799
<v Speaker 3>time you do an update, and so I started getting

21
00:01:04.840 --> 00:01:08.359
<v Speaker 3>into hypermedia and the HDMX stuff, but I ran into

22
00:01:08.359 --> 00:01:10.920
<v Speaker 3>issues with that too, and long story short, I ended

23
00:01:10.959 --> 00:01:14.079
<v Speaker 3>up with my own framework called data Star that is

24
00:01:14.120 --> 00:01:17.519
<v Speaker 3>trying to solve all those things of being there's the

25
00:01:17.680 --> 00:01:21.280
<v Speaker 3>line of like the MPa style of HTMX, and then

26
00:01:21.319 --> 00:01:23.959
<v Speaker 3>there's the SPAS and I think we really are on

27
00:01:24.040 --> 00:01:26.760
<v Speaker 3>a different plane. We're doing stuff that's not in between.

28
00:01:26.799 --> 00:01:29.719
<v Speaker 3>We're doing both and more. So okay, I can talk

29
00:01:29.719 --> 00:01:31.359
<v Speaker 3>about it. Yeah, it makes sense.

30
00:01:31.920 --> 00:01:35.000
<v Speaker 1>My weapon of choice in this space is Turbo, which

31
00:01:35.079 --> 00:01:36.599
<v Speaker 1>is part of hot Wire, and.

32
00:01:36.519 --> 00:01:37.319
<v Speaker 2>It does a lot.

33
00:01:37.959 --> 00:01:40.920
<v Speaker 1>It doesn't do exactly what HTMX does. You know, the

34
00:01:40.920 --> 00:01:43.920
<v Speaker 1>same kind of idea where you're you know, you're streaming data,

35
00:01:44.239 --> 00:01:47.280
<v Speaker 1>you know, back and forth and you only rerender what

36
00:01:47.319 --> 00:01:50.959
<v Speaker 1>you got back and it sends back HTML instead of JSON,

37
00:01:51.159 --> 00:01:54.200
<v Speaker 1>and so it doesn't have to go and figure out

38
00:01:54.280 --> 00:01:57.280
<v Speaker 1>what all of your components are and then redraw it

39
00:01:57.400 --> 00:01:58.280
<v Speaker 1>like React does.

40
00:01:58.799 --> 00:02:01.560
<v Speaker 3>Well, if if you've Turbo, then I've already worked with

41
00:02:01.599 --> 00:02:03.959
<v Speaker 3>mckel and the guys over the Turbo team to work

42
00:02:03.959 --> 00:02:06.560
<v Speaker 3>on a new version of the morphs stuff. So we

43
00:02:06.640 --> 00:02:10.599
<v Speaker 3>actually use uh vomit. Yeah, we have our own version

44
00:02:10.599 --> 00:02:13.080
<v Speaker 3>that we started from working with Michael. In fact, he

45
00:02:13.240 --> 00:02:15.879
<v Speaker 3>was on our podcast a while ago and we worked

46
00:02:15.879 --> 00:02:17.960
<v Speaker 3>on that for quite a while. But we have the

47
00:02:17.960 --> 00:02:19.840
<v Speaker 3>fastest morph being strategy in the world. So if you've

48
00:02:19.840 --> 00:02:22.479
<v Speaker 3>already used turbo, are getting some of the benefit, You

49
00:02:22.639 --> 00:02:24.159
<v Speaker 3>getting some of the benefits of the work that has

50
00:02:24.199 --> 00:02:25.479
<v Speaker 3>been done in data ironically.

51
00:02:25.560 --> 00:02:26.120
<v Speaker 2>Oh interesting.

52
00:02:26.280 --> 00:02:29.039
<v Speaker 1>So yeah, so it sounds like there's a story here

53
00:02:29.120 --> 00:02:31.039
<v Speaker 1>right where you're saying, Hey, I wanted to do a

54
00:02:31.080 --> 00:02:34.319
<v Speaker 1>thing and the tools out there were not the best

55
00:02:34.319 --> 00:02:36.240
<v Speaker 1>tools for it, or I thought there could be better

56
00:02:36.280 --> 00:02:37.879
<v Speaker 1>tools for it. Do you do you kind of want

57
00:02:37.919 --> 00:02:40.439
<v Speaker 1>to just back up and give us some conflict on

58
00:02:40.479 --> 00:02:41.599
<v Speaker 1>where this all came from.

59
00:02:41.759 --> 00:02:44.000
<v Speaker 3>Yeah, So I was working on a project and it

60
00:02:44.120 --> 00:02:46.840
<v Speaker 3>ended up being in view and mostly three D. So

61
00:02:46.919 --> 00:02:50.039
<v Speaker 3>project was basically a military thing where we sent every

62
00:02:50.120 --> 00:02:52.840
<v Speaker 3>radar blip from every radar station in the continental United

63
00:02:52.879 --> 00:02:56.439
<v Speaker 3>States in real time to the browser, and they wanted

64
00:02:56.439 --> 00:02:57.879
<v Speaker 3>to be able to scrub back in time over and

65
00:02:57.919 --> 00:03:02.000
<v Speaker 3>now like live. So you're talking about a million updates

66
00:03:02.039 --> 00:03:04.479
<v Speaker 3>per secon about nine hundred thousand updates per second and

67
00:03:04.719 --> 00:03:06.879
<v Speaker 3>being able to scrupt to any point in time within

68
00:03:07.360 --> 00:03:09.840
<v Speaker 3>a second to any point in time. So that's a

69
00:03:09.879 --> 00:03:12.719
<v Speaker 3>hard problem if you don't know, like, that's a lot

70
00:03:12.759 --> 00:03:14.360
<v Speaker 3>of buffers and a lot of gl stuff.

71
00:03:14.400 --> 00:03:16.560
<v Speaker 2>And so I'm mostly a web guy like my backgrounds

72
00:03:16.560 --> 00:03:16.919
<v Speaker 2>in three D.

73
00:03:17.120 --> 00:03:19.800
<v Speaker 3>So I was knocking that out and I was like, man,

74
00:03:19.840 --> 00:03:21.280
<v Speaker 3>there's got to be a better way because I'm basically

75
00:03:21.319 --> 00:03:23.400
<v Speaker 3>sending all this spas. You're sending the entire state of

76
00:03:23.400 --> 00:03:26.280
<v Speaker 3>your application to the front end. All your state lives there,

77
00:03:26.319 --> 00:03:28.280
<v Speaker 3>and then you're trying to keep those the state of

78
00:03:28.280 --> 00:03:30.639
<v Speaker 3>the back end the front end in sync. Right on

79
00:03:30.800 --> 00:03:34.199
<v Speaker 3>sort shirt, I started searching around more to do different things.

80
00:03:34.479 --> 00:03:36.960
<v Speaker 3>HTMX I thought was a really interesting idea in that

81
00:03:37.039 --> 00:03:39.639
<v Speaker 3>it's going back to kind of hypermedia of the two thousands.

82
00:03:40.599 --> 00:03:42.680
<v Speaker 3>But one of the things I ran into is that

83
00:03:42.800 --> 00:03:45.759
<v Speaker 3>A it wasn't fast enough and B it didn't include

84
00:03:45.800 --> 00:03:47.159
<v Speaker 3>things like the morphing out of the box.

85
00:03:47.280 --> 00:03:48.840
<v Speaker 2>So I was like, well, why isn't that included?

86
00:03:48.919 --> 00:03:49.919
<v Speaker 3>And then I was like, well, I want to be

87
00:03:49.960 --> 00:03:51.599
<v Speaker 3>able to pick and choose, because some of the choices

88
00:03:51.639 --> 00:03:53.439
<v Speaker 3>they made I didn't think were very good. So I

89
00:03:53.479 --> 00:03:55.520
<v Speaker 3>wanted to have a plugin system. They have extensions, which

90
00:03:55.520 --> 00:03:57.520
<v Speaker 3>means you can add stuff on top of HTMX. Right,

91
00:03:57.639 --> 00:04:00.680
<v Speaker 3>you can't replace anything in HTMX right, it's its one

92
00:04:00.680 --> 00:04:02.719
<v Speaker 3>big five K file and you kind of left with it.

93
00:04:02.800 --> 00:04:04.960
<v Speaker 3>So I went through and said, okay, if I was

94
00:04:04.960 --> 00:04:07.280
<v Speaker 3>writing a game engine but for the web, what would

95
00:04:07.319 --> 00:04:09.560
<v Speaker 3>that look like, Everything being module, everything being kind of

96
00:04:09.560 --> 00:04:12.280
<v Speaker 3>an ECS style, like a different way of looking at

97
00:04:12.280 --> 00:04:15.080
<v Speaker 3>it from a data oriented perspective. And so once I

98
00:04:15.080 --> 00:04:17.959
<v Speaker 3>started getting into it, it long over time basically morphed

99
00:04:18.000 --> 00:04:20.639
<v Speaker 3>into its own thing. But in data Star, for example,

100
00:04:20.759 --> 00:04:23.360
<v Speaker 3>everything is a plug in, literally everything, And one of

101
00:04:23.360 --> 00:04:25.839
<v Speaker 3>the major plugins that we have is this thing that

102
00:04:25.879 --> 00:04:29.199
<v Speaker 3>does service set events. And people really have not understood

103
00:04:29.199 --> 00:04:31.439
<v Speaker 3>service set events, and they think it has to be

104
00:04:31.519 --> 00:04:33.079
<v Speaker 3>a stream, it has to be this extra cough thing.

105
00:04:33.439 --> 00:04:35.639
<v Speaker 3>All it is is a chunked response and that's it.

106
00:04:35.680 --> 00:04:38.000
<v Speaker 3>That's literally all it is. It's a data type, which

107
00:04:38.040 --> 00:04:40.279
<v Speaker 3>means as soon as you can send down a response

108
00:04:40.399 --> 00:04:42.839
<v Speaker 3>with it data event, you can send down signals, you

109
00:04:42.839 --> 00:04:45.439
<v Speaker 3>can send down elements, you can send down different parts

110
00:04:45.439 --> 00:04:47.439
<v Speaker 3>of the page, so things like HTMX.

111
00:04:47.480 --> 00:04:49.720
<v Speaker 2>It's a kind of a it's not the norm to

112
00:04:49.879 --> 00:04:50.519
<v Speaker 2>say I'm going to.

113
00:04:50.480 --> 00:04:51.639
<v Speaker 3>Update this part of the page or this part of

114
00:04:51.639 --> 00:04:53.040
<v Speaker 3>the page, or I want to pin this signal, I

115
00:04:53.079 --> 00:04:55.439
<v Speaker 3>want to merge this thing like you kind of do

116
00:04:55.560 --> 00:04:58.399
<v Speaker 3>a whole Just the way it works doesn't kind of

117
00:04:58.439 --> 00:05:00.680
<v Speaker 3>jive with what I wanted to do. Basically just sat

118
00:05:00.720 --> 00:05:03.439
<v Speaker 3>down and started writing out these pieces and lo and

119
00:05:03.519 --> 00:05:06.519
<v Speaker 3>behold ended up being way smaller. So, for example, we

120
00:05:06.560 --> 00:05:09.639
<v Speaker 3>include the fastest signal library in the world. It's built

121
00:05:09.680 --> 00:05:12.040
<v Speaker 3>off alien signals if you're into that space at all,

122
00:05:12.079 --> 00:05:15.040
<v Speaker 3>and we have the fastest moreporting library by far, and

123
00:05:15.120 --> 00:05:16.120
<v Speaker 3>we're ten kilobytes.

124
00:05:16.160 --> 00:05:16.480
<v Speaker 2>Wow.

125
00:05:17.240 --> 00:05:20.240
<v Speaker 3>Yeah, the whole thing, And so it's a pretty crazy

126
00:05:20.279 --> 00:05:23.000
<v Speaker 3>thing that we basically just if you don't rely on

127
00:05:23.079 --> 00:05:26.360
<v Speaker 3>other people's lives, everything's there's no MPM, there's no vendoring.

128
00:05:26.800 --> 00:05:29.120
<v Speaker 3>It's just all written for those specific needs. So every

129
00:05:29.160 --> 00:05:32.120
<v Speaker 3>plugin is completely independent, and it makes it so that

130
00:05:32.160 --> 00:05:34.959
<v Speaker 3>it's really fast, really small and really tight code, and

131
00:05:34.959 --> 00:05:36.839
<v Speaker 3>then you don't have to think about it anymore, which

132
00:05:36.879 --> 00:05:38.560
<v Speaker 3>is kind of a neat thing. And also we're the

133
00:05:38.600 --> 00:05:41.279
<v Speaker 3>only one that's really relying on the specs. So there's

134
00:05:41.279 --> 00:05:43.800
<v Speaker 3>a thing that's built into the to the HTML specs

135
00:05:43.839 --> 00:05:46.079
<v Speaker 3>called data dash Star, which basically allows you to put

136
00:05:46.160 --> 00:05:46.879
<v Speaker 3>data astributes.

137
00:05:47.199 --> 00:05:49.199
<v Speaker 2>So data star is just.

138
00:05:49.279 --> 00:05:52.560
<v Speaker 3>Hooking into that and reading up the key value store

139
00:05:52.560 --> 00:05:56.240
<v Speaker 3>that it gives you and then implementing its own modifications

140
00:05:56.240 --> 00:05:58.800
<v Speaker 3>and stuff. So basically everything is like data dash class

141
00:05:58.879 --> 00:06:01.040
<v Speaker 3>data dash on, data dash load these.

142
00:06:00.959 --> 00:06:01.560
<v Speaker 2>Kinds of things.

143
00:06:01.720 --> 00:06:04.279
<v Speaker 3>So we're living within the spec So it's not that

144
00:06:04.319 --> 00:06:07.920
<v Speaker 3>we're trying to replace it with a whole new spa

145
00:06:08.040 --> 00:06:10.319
<v Speaker 3>framework or something. We're literally just using the things that

146
00:06:10.399 --> 00:06:12.360
<v Speaker 3>already built into the browser, which means that we're very

147
00:06:12.360 --> 00:06:14.639
<v Speaker 3>small and very fast, because the fastest thing you can

148
00:06:14.680 --> 00:06:15.560
<v Speaker 3>do a jobascript is not.

149
00:06:15.560 --> 00:06:16.800
<v Speaker 2>Do jobascript, I'm true.

150
00:06:17.480 --> 00:06:22.120
<v Speaker 1>So I guess you know, seeing this particular use case,

151
00:06:22.160 --> 00:06:24.600
<v Speaker 1>you know, or you've got millions of you know, blips

152
00:06:24.639 --> 00:06:27.560
<v Speaker 1>on radars across the US, and you know kind of

153
00:06:27.600 --> 00:06:29.560
<v Speaker 1>doing a lot of that real time stuff, which I

154
00:06:29.560 --> 00:06:31.480
<v Speaker 1>think is a different thing. You probably handle a lot

155
00:06:31.519 --> 00:06:33.160
<v Speaker 1>of that on the back end, but then making it

156
00:06:33.199 --> 00:06:34.600
<v Speaker 1>all show up the way that you need it to

157
00:06:34.720 --> 00:06:37.399
<v Speaker 1>on the front end is the challenge we're talking about.

158
00:06:37.639 --> 00:06:39.560
<v Speaker 1>Is this something that you would recommend just for people

159
00:06:39.600 --> 00:06:41.399
<v Speaker 1>who are doing that kind of a thing, or is

160
00:06:41.439 --> 00:06:44.279
<v Speaker 1>this a better fit for other problems as well.

161
00:06:44.959 --> 00:06:47.199
<v Speaker 3>Yeah, so I think that the way the Data Start

162
00:06:47.279 --> 00:06:50.360
<v Speaker 3>builds things now is the best way to build the

163
00:06:50.399 --> 00:06:51.560
<v Speaker 3>websites barn On.

164
00:06:51.639 --> 00:06:53.240
<v Speaker 2>And the reason why is people.

165
00:06:53.000 --> 00:06:54.560
<v Speaker 3>Say, well, yeah, I'm not building a game, I'm not

166
00:06:54.600 --> 00:06:56.839
<v Speaker 3>building will time stuff. Yeah, but if it can handle that,

167
00:06:57.319 --> 00:06:59.959
<v Speaker 3>then it can handle your other issues so much EASi.

168
00:07:00.279 --> 00:07:02.759
<v Speaker 2>So for example, there's a one of our.

169
00:07:02.720 --> 00:07:06.000
<v Speaker 3>Users made a it's really a rendering demo because it's

170
00:07:06.000 --> 00:07:08.199
<v Speaker 3>the dumbest way to build this kind of thing. But

171
00:07:08.240 --> 00:07:10.639
<v Speaker 3>he took the Game of Life and he made every

172
00:07:10.680 --> 00:07:14.040
<v Speaker 3>cell a DIV and then colored the div with CSS,

173
00:07:14.079 --> 00:07:16.600
<v Speaker 3>and then when you click on it, it updates to this, so.

174
00:07:16.600 --> 00:07:17.680
<v Speaker 2>You have twenty five hundred divs.

175
00:07:17.720 --> 00:07:20.120
<v Speaker 3>He's updating in it like between five and ten primes

176
00:07:20.160 --> 00:07:22.680
<v Speaker 3>a second, and it's it's a shared state, so everyone

177
00:07:22.720 --> 00:07:24.279
<v Speaker 3>in the world's he's the exact same version of it

178
00:07:24.360 --> 00:07:28.800
<v Speaker 3>at all times, and it's rendering in like eight milliseconds,

179
00:07:28.879 --> 00:07:30.920
<v Speaker 3>So if you can handle twenty five hundred dives, yeah,

180
00:07:30.959 --> 00:07:33.519
<v Speaker 3>So it's it's fast enough that it's just a non

181
00:07:33.560 --> 00:07:35.399
<v Speaker 3>issue for what you're doing. And the other thing that's

182
00:07:35.399 --> 00:07:37.639
<v Speaker 3>interesting about this approach, which we can get into, is

183
00:07:37.639 --> 00:07:40.920
<v Speaker 3>that he's not sitting down new like if you were

184
00:07:40.959 --> 00:07:42.480
<v Speaker 3>doing that in a normal spot, you would be sitting

185
00:07:42.519 --> 00:07:43.800
<v Speaker 3>on Jason all the time.

186
00:07:44.959 --> 00:07:48.360
<v Speaker 2>He's sending down the finished HTML.

187
00:07:48.480 --> 00:07:49.959
<v Speaker 3>But the thing is, like, for example, in a Game

188
00:07:50.000 --> 00:07:52.439
<v Speaker 3>of Life, it's not that different from the last approach

189
00:07:52.600 --> 00:07:55.160
<v Speaker 3>so he's getting between four and five to one compression

190
00:07:55.240 --> 00:07:56.920
<v Speaker 3>ratios with no extra effort.

191
00:07:57.360 --> 00:07:59.199
<v Speaker 2>So he ended up being on.

192
00:07:59.160 --> 00:08:01.959
<v Speaker 3>The top of Hacker new Is on a five or

193
00:08:02.000 --> 00:08:04.519
<v Speaker 3>ten dollars machine and it ran fine.

194
00:08:04.639 --> 00:08:06.959
<v Speaker 1>Yeah, that makes sense because essentially what you're doing is

195
00:08:07.000 --> 00:08:10.120
<v Speaker 1>you're saying, instead of here's the whole Game of Life

196
00:08:10.120 --> 00:08:14.680
<v Speaker 1>board visible space, you can just say, hey, these handful

197
00:08:14.720 --> 00:08:18.040
<v Speaker 1>of ones are the ones that got updated right, changed color.

198
00:08:18.079 --> 00:08:20.079
<v Speaker 3>Well, so here's the thing that's really nice is that

199
00:08:20.079 --> 00:08:22.240
<v Speaker 3>he's sitting down in that case, all twenty five hundred

200
00:08:22.240 --> 00:08:24.439
<v Speaker 3>dips because it's fifty by fifty grid, he's sitting all

201
00:08:24.480 --> 00:08:27.240
<v Speaker 3>of them down every single time. Oh really, because yeah,

202
00:08:27.319 --> 00:08:28.920
<v Speaker 3>So the thing is you just think about it as

203
00:08:28.920 --> 00:08:32.799
<v Speaker 3>this big fat morph and it is smart enough to say, hey,

204
00:08:32.879 --> 00:08:34.759
<v Speaker 3>I already had a compression window that had bits and

205
00:08:34.759 --> 00:08:37.120
<v Speaker 3>pieces of it, so you mentally can.

206
00:08:36.960 --> 00:08:38.120
<v Speaker 2>Think of it. It does.

207
00:08:38.200 --> 00:08:40.919
<v Speaker 3>Yeah, that's what the morphdomb and also the Broadley compression

208
00:08:40.919 --> 00:08:42.600
<v Speaker 3>and all these things, like we've thought about this stuff

209
00:08:42.600 --> 00:08:44.679
<v Speaker 3>at a deep level where we can send down things.

210
00:08:44.679 --> 00:08:46.159
<v Speaker 3>So if you had a board that you know how

211
00:08:46.240 --> 00:08:47.759
<v Speaker 3>in Game of Life, if it's just sitting there kind

212
00:08:47.759 --> 00:08:50.240
<v Speaker 3>of switched between two states, like if it gets to

213
00:08:50.240 --> 00:08:52.679
<v Speaker 3>a stable state, that change over since it's already in

214
00:08:52.679 --> 00:08:55.360
<v Speaker 3>the window of the Broadley stuff is like twelve bytes

215
00:08:55.639 --> 00:08:58.559
<v Speaker 3>bytes twelve bytes, so sending down twenty five hundred things

216
00:08:58.600 --> 00:09:01.399
<v Speaker 3>just a twelve byte change. Depending on how much data

217
00:09:01.399 --> 00:09:04.399
<v Speaker 3>that is shared in your updates, you can get these

218
00:09:04.440 --> 00:09:06.679
<v Speaker 3>crazy compression rangions, like we've seen up to four thousand

219
00:09:06.679 --> 00:09:09.519
<v Speaker 3>and one compression. So it's better than web sockets because

220
00:09:09.519 --> 00:09:11.440
<v Speaker 3>you get all this compression stuff, you get the proper

221
00:09:11.480 --> 00:09:13.759
<v Speaker 3>headers and cookies and all that stuff. It's better than

222
00:09:13.919 --> 00:09:17.120
<v Speaker 3>standard crud stuff because you're halfing your polling. So instead

223
00:09:17.120 --> 00:09:19.480
<v Speaker 3>of requesting something and getting back and requesting something and

224
00:09:19.480 --> 00:09:21.879
<v Speaker 3>getting it back, we're having that RTT because we can

225
00:09:21.879 --> 00:09:23.799
<v Speaker 3>just send down as we decide on the back end

226
00:09:23.879 --> 00:09:25.240
<v Speaker 3>right when you need it, so you can send it

227
00:09:25.279 --> 00:09:27.159
<v Speaker 3>every second or speed it up or slow it down,

228
00:09:27.240 --> 00:09:30.080
<v Speaker 3>it does not matter. Everything else works the same. So

229
00:09:30.360 --> 00:09:32.600
<v Speaker 3>it is by far the best way to build any website.

230
00:09:32.679 --> 00:09:34.679
<v Speaker 3>And I will take on anyone with that challenge.

231
00:09:34.720 --> 00:09:36.679
<v Speaker 1>So let me kind of back up a little bit

232
00:09:36.679 --> 00:09:38.600
<v Speaker 1>because I know that a lot of people, you know,

233
00:09:38.879 --> 00:09:41.440
<v Speaker 1>if they're doing front end, so and to give you

234
00:09:41.440 --> 00:09:43.600
<v Speaker 1>a little bit of a context. I mean, my weapon

235
00:09:43.600 --> 00:09:46.039
<v Speaker 1>of choice again, like I said, is the hot wire stack.

236
00:09:46.120 --> 00:09:49.600
<v Speaker 1>So I'm usually using something like stimulus and so and it.

237
00:09:49.759 --> 00:09:52.039
<v Speaker 1>You know, you're talking about the data attributes and stuff,

238
00:09:52.080 --> 00:09:55.120
<v Speaker 1>and stimulus just basically gives you a convention on top

239
00:09:55.159 --> 00:09:57.879
<v Speaker 1>of that to you know, to scope your changes.

240
00:09:58.480 --> 00:09:59.679
<v Speaker 2>And to track your events.

241
00:10:00.519 --> 00:10:03.759
<v Speaker 1>So I guess what I'm wondering here is, you know,

242
00:10:04.200 --> 00:10:06.480
<v Speaker 1>you've talked about a game of life. You've talked about

243
00:10:06.759 --> 00:10:08.679
<v Speaker 1>so those are both kind of visual things. I mean,

244
00:10:08.759 --> 00:10:11.399
<v Speaker 1>I guess the one is kind of a poor man's

245
00:10:11.519 --> 00:10:14.120
<v Speaker 1>you know, pixelated thing, and then the other one is

246
00:10:14.159 --> 00:10:18.039
<v Speaker 1>like a full on what is it, you know, just

247
00:10:18.080 --> 00:10:22.960
<v Speaker 1>a graphical visualization of the radar and things.

248
00:10:23.360 --> 00:10:26.440
<v Speaker 2>So is there is there a data driven you know.

249
00:10:26.480 --> 00:10:30.120
<v Speaker 1>You know, dashboard or user interface or admin panel or

250
00:10:30.159 --> 00:10:32.000
<v Speaker 1>something like that that's been built with data Star.

251
00:10:32.639 --> 00:10:32.840
<v Speaker 2>Yeah.

252
00:10:33.200 --> 00:10:35.600
<v Speaker 3>The thing is I work at Sanadia on that's as

253
00:10:35.720 --> 00:10:38.600
<v Speaker 3>a day job, and so I'm building literally that right

254
00:10:38.600 --> 00:10:40.600
<v Speaker 3>now as a real time dashboard thing for all the

255
00:10:40.840 --> 00:10:43.600
<v Speaker 3>interconnected sets of contexts on global superclusters.

256
00:10:43.639 --> 00:10:44.799
<v Speaker 2>That's what I'm working on right now.

257
00:10:44.960 --> 00:10:47.200
<v Speaker 3>So I can tell you by far it's the easiest

258
00:10:47.200 --> 00:10:48.440
<v Speaker 3>way to do that because you can think of things

259
00:10:48.519 --> 00:10:50.399
<v Speaker 3>in these large fat more basically thinking of it in

260
00:10:50.440 --> 00:10:53.159
<v Speaker 3>immediate mode. If you've ever done game development, your UIs

261
00:10:53.159 --> 00:10:56.120
<v Speaker 3>are generally they're so interactive that it doesn't make sense

262
00:10:56.159 --> 00:10:58.480
<v Speaker 3>to hold on to state because you're basically re rendering

263
00:10:58.519 --> 00:11:00.440
<v Speaker 3>the whole thing in a new state every frame anyway.

264
00:11:00.679 --> 00:11:02.919
<v Speaker 3>So the immediate mode is more the sell of data start,

265
00:11:02.919 --> 00:11:04.919
<v Speaker 3>and it is by far the simplest way to build

266
00:11:05.000 --> 00:11:08.000
<v Speaker 3>those kinds of complicated dashboard. If you go to the

267
00:11:08.000 --> 00:11:11.720
<v Speaker 3>website data star or data dashtar dot dev and go

268
00:11:11.840 --> 00:11:15.200
<v Speaker 3>to for example, the DBMD like, that's not like it's

269
00:11:15.360 --> 00:11:19.159
<v Speaker 3>techniquely it is interactive, but we're actually updating that dashboarding

270
00:11:19.240 --> 00:11:23.360
<v Speaker 3>thing in micro seconds, not milliseconds, not seconds like you're

271
00:11:23.440 --> 00:11:26.200
<v Speaker 3>used to seeing in a dashboard. We're doing it in microseconds,

272
00:11:26.320 --> 00:11:29.039
<v Speaker 3>so we're able to make updates to the back end,

273
00:11:29.240 --> 00:11:31.200
<v Speaker 3>make it very efficient, and actually make shared state.

274
00:11:31.399 --> 00:11:32.759
<v Speaker 2>So one of the things I think is going to

275
00:11:32.799 --> 00:11:33.279
<v Speaker 2>be coming in.

276
00:11:33.320 --> 00:11:35.080
<v Speaker 3>Web poor point zero kind of thing is much more

277
00:11:35.120 --> 00:11:38.159
<v Speaker 3>collaboration and the idea that all the state should be

278
00:11:38.240 --> 00:11:40.679
<v Speaker 3>living in the right place, which is most primarily the

279
00:11:40.720 --> 00:11:43.600
<v Speaker 3>back end, means that everyone can have these collaborative shared states,

280
00:11:43.759 --> 00:11:45.799
<v Speaker 3>and it's actually cheaper because you're sending down just the

281
00:11:45.799 --> 00:11:46.840
<v Speaker 3>parts that have changed.

282
00:11:47.840 --> 00:11:50.799
<v Speaker 1>So it's way faster, right, So what does the approach

283
00:11:50.799 --> 00:11:53.039
<v Speaker 1>look like then? So let's say that I'm like, all right, well,

284
00:11:53.240 --> 00:11:55.159
<v Speaker 1>you know, and I use rails on the back end,

285
00:11:55.200 --> 00:11:57.399
<v Speaker 1>but you know, so I'm going to use it. You know,

286
00:11:57.559 --> 00:11:59.159
<v Speaker 1>I'm going to use rails on the back end, or

287
00:11:59.200 --> 00:12:01.279
<v Speaker 1>maybe I'll use no or something. I don't know, but

288
00:12:01.480 --> 00:12:03.279
<v Speaker 1>you know, so I set all that up. You know,

289
00:12:03.320 --> 00:12:06.519
<v Speaker 1>I have ways to get data from my back end

290
00:12:06.559 --> 00:12:09.360
<v Speaker 1>from my front end. So what what does the workflow

291
00:12:09.360 --> 00:12:11.440
<v Speaker 1>actually look like when I'm building this out?

292
00:12:11.879 --> 00:12:13.879
<v Speaker 3>Sure, so if you've already used similar or if you've

293
00:12:13.919 --> 00:12:17.120
<v Speaker 3>already used the turbo stuff, basically you could start with

294
00:12:17.159 --> 00:12:20.440
<v Speaker 3>a skeleton page that just says, hey, here's my like

295
00:12:20.600 --> 00:12:23.200
<v Speaker 3>layout and here's IDs for things I want to hook

296
00:12:23.240 --> 00:12:25.320
<v Speaker 3>into the same kind of way that the morph works,

297
00:12:25.480 --> 00:12:27.759
<v Speaker 3>you do the same thing, except for now you're basically

298
00:12:28.080 --> 00:12:30.919
<v Speaker 3>all you do is when you send back these we

299
00:12:30.960 --> 00:12:31.879
<v Speaker 3>have a SEKS to make.

300
00:12:31.799 --> 00:12:32.960
<v Speaker 2>It a little bit easier, but it's literally just a

301
00:12:33.000 --> 00:12:33.879
<v Speaker 2>helper on top of SEC.

302
00:12:34.279 --> 00:12:37.120
<v Speaker 3>You'd say I want to patch element and you give

303
00:12:37.159 --> 00:12:38.720
<v Speaker 3>it an element with an ID.

304
00:12:39.519 --> 00:12:41.000
<v Speaker 2>That's it. That's all you do.

305
00:12:41.240 --> 00:12:42.919
<v Speaker 3>Everything else is handled for you. It knows where to

306
00:12:42.919 --> 00:12:44.759
<v Speaker 3>grab it, what to update, how to morph. So the

307
00:12:44.799 --> 00:12:47.200
<v Speaker 3>defaults are if it has an ID, I'm going to update,

308
00:12:47.200 --> 00:12:49.399
<v Speaker 3>I'm gonna select on that and grab that ID, and

309
00:12:49.480 --> 00:12:50.679
<v Speaker 3>I'm going to morph by default.

310
00:12:50.960 --> 00:12:52.879
<v Speaker 2>So in most cases that's all you do.

311
00:12:53.080 --> 00:12:54.960
<v Speaker 3>You just like send a patch that says here's the

312
00:12:55.000 --> 00:12:58.360
<v Speaker 3>new stuff for that area that has an idea, and

313
00:12:58.360 --> 00:13:00.399
<v Speaker 3>you're done. And the nice thing is that most of

314
00:13:00.399 --> 00:13:02.600
<v Speaker 3>the state in the back end becomes really really simple

315
00:13:02.840 --> 00:13:04.440
<v Speaker 3>because you're just sending down win things shame.

316
00:13:04.519 --> 00:13:05.960
<v Speaker 2>So your locality of behavior.

317
00:13:06.120 --> 00:13:08.559
<v Speaker 3>Instead of saying I'm trying to build up adjacent object

318
00:13:08.600 --> 00:13:11.000
<v Speaker 3>and then send down, you're saying I got something from

319
00:13:11.000 --> 00:13:13.759
<v Speaker 3>the database. And what I do is I literally get

320
00:13:13.759 --> 00:13:16.399
<v Speaker 3>the row from the database and then I render on

321
00:13:16.440 --> 00:13:19.399
<v Speaker 3>the next row. Like I render, I get the data

322
00:13:19.440 --> 00:13:21.559
<v Speaker 3>and I send it to the template library and then

323
00:13:21.559 --> 00:13:22.080
<v Speaker 3>I'm done.

324
00:13:22.480 --> 00:13:24.360
<v Speaker 2>Like the locality behavior can be the same.

325
00:13:24.200 --> 00:13:26.279
<v Speaker 1>Line, right, So you use the template library on the

326
00:13:26.279 --> 00:13:27.879
<v Speaker 1>front end or do you know in the back end

327
00:13:27.919 --> 00:13:30.639
<v Speaker 1>that's because the thing is up to your back and

328
00:13:30.679 --> 00:13:33.200
<v Speaker 1>I tend to use GO most of the time. It's

329
00:13:33.320 --> 00:13:35.360
<v Speaker 1>it has a lot better tooling the sea for you know,

330
00:13:35.759 --> 00:13:38.200
<v Speaker 1>webright kind of stuff and so yeah, I just have

331
00:13:38.279 --> 00:13:40.759
<v Speaker 1>Temple and I have Temple components and you render the

332
00:13:40.759 --> 00:13:41.879
<v Speaker 1>stuff and you send it down.

333
00:13:42.200 --> 00:13:44.320
<v Speaker 2>That's it. Like there's it's very simple.

334
00:13:44.320 --> 00:13:46.639
<v Speaker 3>We have SDK's and I think twelve languages to make

335
00:13:46.679 --> 00:13:49.120
<v Speaker 3>this easier so you can just get up and running quickly.

336
00:13:49.240 --> 00:13:52.679
<v Speaker 3>But the nice part is like Turbo and HGMX have

337
00:13:52.879 --> 00:13:54.360
<v Speaker 3>the idea of like sending stuff in the back end,

338
00:13:54.399 --> 00:13:56.080
<v Speaker 3>Like I think that's a good idea of a general thing,

339
00:13:56.120 --> 00:13:58.519
<v Speaker 3>but the problem is they don't have the concept of

340
00:13:58.600 --> 00:14:01.639
<v Speaker 3>signals and reactivity and things on the front end. So

341
00:14:01.840 --> 00:14:04.879
<v Speaker 3>data Star also includes things like data class, data style,

342
00:14:05.159 --> 00:14:08.679
<v Speaker 3>data on click, all the signal libraries, data computed data,

343
00:14:08.720 --> 00:14:10.960
<v Speaker 3>effect like all the things you need to build front

344
00:14:10.960 --> 00:14:12.799
<v Speaker 3>and stuff it's up because there's times where there's client

345
00:14:12.879 --> 00:14:15.120
<v Speaker 3>side state and there's times when there's not, and being

346
00:14:15.120 --> 00:14:17.679
<v Speaker 3>able to know which it's which makes it a lot easier.

347
00:14:17.799 --> 00:14:18.639
<v Speaker 2>Yeah, that makes sense.

348
00:14:19.080 --> 00:14:21.639
<v Speaker 1>So to talk through some of this when you're talking

349
00:14:21.679 --> 00:14:23.519
<v Speaker 1>about the front end state, right, you don't need a

350
00:14:23.559 --> 00:14:25.440
<v Speaker 1>state library because you just put it all into the

351
00:14:25.519 --> 00:14:28.240
<v Speaker 1>data attributes and you just updated as you go.

352
00:14:28.840 --> 00:14:33.080
<v Speaker 2>Yeah, so there's one familiar to me with stimulus. Yeah.

353
00:14:33.120 --> 00:14:37.679
<v Speaker 3>So there's one basically global reactive store, kind of like

354
00:14:37.799 --> 00:14:39.559
<v Speaker 3>you see in redocs or any of these kinds of things,

355
00:14:39.639 --> 00:14:41.840
<v Speaker 3>where you have a global store. As you make changes,

356
00:14:42.360 --> 00:14:44.840
<v Speaker 3>it automatically updates and gives you signals and all this stuff.

357
00:14:44.879 --> 00:14:47.399
<v Speaker 3>And then what happens is whenever you do actions inside

358
00:14:47.399 --> 00:14:49.559
<v Speaker 3>you think, we have an at sign for basically actions,

359
00:14:49.759 --> 00:14:51.720
<v Speaker 3>So if you do it at GET or not at post,

360
00:14:52.080 --> 00:14:55.120
<v Speaker 3>it automatically compiles all the signals and sends it back up.

361
00:14:55.159 --> 00:14:57.279
<v Speaker 3>There's filtered on that you can say I want to

362
00:14:57.279 --> 00:14:59.000
<v Speaker 3>subset it and all that, but the point is that

363
00:14:59.039 --> 00:15:02.240
<v Speaker 3>you basically you can keep things in sync by sending

364
00:15:02.320 --> 00:15:04.360
<v Speaker 3>that state back up to the server. And because you

365
00:15:04.440 --> 00:15:06.559
<v Speaker 3>have so much of your states on the back end,

366
00:15:06.639 --> 00:15:08.639
<v Speaker 3>there's very few signals on the front end. Right There's

367
00:15:08.679 --> 00:15:10.879
<v Speaker 3>things like doing two a binding two an input or

368
00:15:10.879 --> 00:15:13.480
<v Speaker 3>a text area or to some kind of timer thing

369
00:15:13.639 --> 00:15:15.919
<v Speaker 3>or some user local setting of a theme that you

370
00:15:15.919 --> 00:15:17.799
<v Speaker 3>don't care about, Like, there's some of that stuff, but

371
00:15:17.840 --> 00:15:19.279
<v Speaker 3>most of the time you send all that up to

372
00:15:19.279 --> 00:15:21.240
<v Speaker 3>the server and then you know the exact state of

373
00:15:21.240 --> 00:15:22.240
<v Speaker 3>what the front end is doing.

374
00:15:22.440 --> 00:15:24.559
<v Speaker 1>Right, So then if I need to send a signal

375
00:15:24.600 --> 00:15:26.519
<v Speaker 1>back from the back end, how do you manage that?

376
00:15:27.039 --> 00:15:30.039
<v Speaker 3>So with the nice thing is that we support all

377
00:15:30.039 --> 00:15:31.240
<v Speaker 3>of it again in ten kilobyte.

378
00:15:31.279 --> 00:15:32.240
<v Speaker 2>So if you want.

379
00:15:32.120 --> 00:15:35.919
<v Speaker 3>To do a request against an HTML page, we'll morph

380
00:15:36.000 --> 00:15:36.240
<v Speaker 3>that in.

381
00:15:36.360 --> 00:15:38.639
<v Speaker 2>If you do it against adjacent object, we'll morph that in.

382
00:15:38.679 --> 00:15:40.679
<v Speaker 3>If you do it against a jobscript object, we'll execute

383
00:15:40.679 --> 00:15:43.720
<v Speaker 3>that jobscript for you. But in your SEC you could

384
00:15:43.720 --> 00:15:45.720
<v Speaker 3>be sending down, hey, I want to update this patch

385
00:15:45.759 --> 00:15:46.679
<v Speaker 3>of this page, or.

386
00:15:46.639 --> 00:15:47.919
<v Speaker 2>I want to update these signals.

387
00:15:48.039 --> 00:15:51.080
<v Speaker 3>So you have patch signals and patch elements and then

388
00:15:51.120 --> 00:15:54.840
<v Speaker 3>there's technically read signals. When this stuff comes in, that's

389
00:15:54.879 --> 00:15:57.600
<v Speaker 3>the entire SDK. You just like that's it. So you

390
00:15:57.639 --> 00:16:00.600
<v Speaker 3>just patch things in whether there's signals or element, and

391
00:16:00.639 --> 00:16:02.480
<v Speaker 3>you update your page and that's it.

392
00:16:02.600 --> 00:16:05.120
<v Speaker 2>Like it's fast because there's very little of it. If

393
00:16:05.120 --> 00:16:06.840
<v Speaker 2>that makes sense, right, Yeah, that makes sense.

394
00:16:06.960 --> 00:16:08.960
<v Speaker 1>On the other end though, like if something changes on

395
00:16:09.000 --> 00:16:11.039
<v Speaker 1>the back end, does it just push the data through

396
00:16:11.080 --> 00:16:12.879
<v Speaker 1>a web socket or how do you manage that?

397
00:16:13.279 --> 00:16:16.000
<v Speaker 3>So the thing that people have this has been a

398
00:16:16.399 --> 00:16:19.559
<v Speaker 3>big issue with the HTML five spect People are so

399
00:16:19.679 --> 00:16:22.120
<v Speaker 3>used to seeing SEC because that's that's I kind of

400
00:16:22.120 --> 00:16:24.799
<v Speaker 3>think everyone should be using SD for basically everything. And

401
00:16:24.879 --> 00:16:27.480
<v Speaker 3>the reason why it is because it's just a response type.

402
00:16:27.519 --> 00:16:30.879
<v Speaker 3>Like you know how you get tests, that's service side events,

403
00:16:31.000 --> 00:16:34.279
<v Speaker 3>service center events. Yeah, okay, yeah, So the thing about

404
00:16:34.279 --> 00:16:36.440
<v Speaker 3>service and events is like, for example, if you went

405
00:16:36.440 --> 00:16:38.639
<v Speaker 3>to the front page of data start, you'll see on

406
00:16:38.679 --> 00:16:40.919
<v Speaker 3>the second like the second little example, it's just a

407
00:16:40.960 --> 00:16:43.600
<v Speaker 3>response type. So just like you have text HML or

408
00:16:43.919 --> 00:16:49.200
<v Speaker 3>application JS, there's another one called event or text slash

409
00:16:49.240 --> 00:16:51.279
<v Speaker 3>event stream, and all it is is, you know how

410
00:16:51.279 --> 00:16:54.240
<v Speaker 3>when you're sending a request like a if you're sending

411
00:16:54.320 --> 00:17:00.159
<v Speaker 3>up a big file and it's it chunked SEC the

412
00:17:00.159 --> 00:17:02.039
<v Speaker 3>same thing it's EFT for it's a chunked response. So

413
00:17:02.039 --> 00:17:05.319
<v Speaker 3>it's still just one request response, but you're basically leaving

414
00:17:05.359 --> 00:17:07.920
<v Speaker 3>it open and saying when there's a set of new lines,

415
00:17:08.000 --> 00:17:10.119
<v Speaker 3>flush the buffer and send what I have so far

416
00:17:10.519 --> 00:17:13.359
<v Speaker 3>so you can. So it's just a standard fetch request.

417
00:17:13.519 --> 00:17:16.480
<v Speaker 3>There's nothing special about it. There's no like that's the

418
00:17:16.559 --> 00:17:18.440
<v Speaker 3>he sticator to help you set up the flusher and

419
00:17:18.440 --> 00:17:21.519
<v Speaker 3>all that stuff, but there's nothing special about it. In fact,

420
00:17:21.559 --> 00:17:23.920
<v Speaker 3>the irony is most of the time most browsers are

421
00:17:23.920 --> 00:17:26.200
<v Speaker 3>doing AHGTP streaming already for you.

422
00:17:26.200 --> 00:17:28.160
<v Speaker 2>You're just getting explicit control of that.

423
00:17:28.519 --> 00:17:31.559
<v Speaker 3>So it's just an event type and you're just saying

424
00:17:31.640 --> 00:17:34.240
<v Speaker 3>new line, new line, and then you're saying flush like

425
00:17:34.400 --> 00:17:36.039
<v Speaker 3>my response to the network.

426
00:17:36.039 --> 00:17:37.680
<v Speaker 2>It's basically what's happening. That's it.

427
00:17:37.880 --> 00:17:41.079
<v Speaker 3>There's nothing special. There's no web sockets, there's no sticky sessions,

428
00:17:41.160 --> 00:17:42.839
<v Speaker 3>none of that stuff that all goes away. It's just

429
00:17:42.839 --> 00:17:47.200
<v Speaker 3>a standard web request. So that makes it's easier. So

430
00:17:47.839 --> 00:17:50.000
<v Speaker 3>are you managing that on like the service worker or

431
00:17:50.039 --> 00:17:50.599
<v Speaker 3>something or.

432
00:17:51.160 --> 00:17:52.359
<v Speaker 2>No, it's just native and the brother.

433
00:17:52.480 --> 00:17:54.279
<v Speaker 3>The thing about the service worker stuff that I found

434
00:17:54.319 --> 00:17:56.799
<v Speaker 3>is that it can add a bunch of issues around

435
00:17:56.920 --> 00:17:59.440
<v Speaker 3>having that extra thread can cause a bunch of issues

436
00:17:59.440 --> 00:18:01.319
<v Speaker 3>with the UI and trying to get things back and forth.

437
00:18:01.480 --> 00:18:03.119
<v Speaker 3>Like all the benefits you're supposed to get from it,

438
00:18:03.240 --> 00:18:05.519
<v Speaker 3>you don't. Like, you just don't. And the thing is,

439
00:18:05.519 --> 00:18:07.519
<v Speaker 3>we're so fast, Like if you go ahead and look

440
00:18:07.559 --> 00:18:09.920
<v Speaker 3>at your net, like if you're running a data Star website,

441
00:18:09.920 --> 00:18:11.680
<v Speaker 3>like if you go like for example, Dbmond, which you're

442
00:18:11.680 --> 00:18:13.920
<v Speaker 3>doing stuff in the microsecond, and you actually click your

443
00:18:14.160 --> 00:18:17.200
<v Speaker 3>performance tab and look at our renders. They're such tiny

444
00:18:17.240 --> 00:18:20.000
<v Speaker 3>slices that you're you're gonna laugh, Like it's just a

445
00:18:20.039 --> 00:18:22.359
<v Speaker 3>non issue for most anything that you do.

446
00:18:22.559 --> 00:18:23.680
<v Speaker 2>Yeah, that makes sense.

447
00:18:23.759 --> 00:18:26.400
<v Speaker 1>So at the end of the day, I'm just trying

448
00:18:26.400 --> 00:18:28.599
<v Speaker 1>to visualize how this works. I mean, I kind of

449
00:18:28.599 --> 00:18:31.119
<v Speaker 1>have it in my head, but I guess I'm wondering

450
00:18:31.319 --> 00:18:34.519
<v Speaker 1>on the other end. So with something like React, you

451
00:18:34.559 --> 00:18:37.640
<v Speaker 1>have React components and things like that, you don't need

452
00:18:37.680 --> 00:18:39.480
<v Speaker 1>any of that. You just render all that on your

453
00:18:39.680 --> 00:18:41.960
<v Speaker 1>back end, and yeah, it works.

454
00:18:42.680 --> 00:18:44.839
<v Speaker 3>I Mean the beauty is is that you're you still

455
00:18:44.839 --> 00:18:47.480
<v Speaker 3>have components, you still have things, but they're in your

456
00:18:47.960 --> 00:18:50.079
<v Speaker 3>They're next to your database most of the time, right,

457
00:18:50.119 --> 00:18:52.359
<v Speaker 3>Like you're just changing from your database directly to the

458
00:18:52.400 --> 00:18:55.519
<v Speaker 3>thing you want to render. That's easier in every way.

459
00:18:55.640 --> 00:18:58.519
<v Speaker 3>Like all the RSC stuff is a nightmare. All the

460
00:18:58.559 --> 00:19:01.759
<v Speaker 3>Abernoff stuff around tail to computers, all this stuff is

461
00:19:01.799 --> 00:19:04.240
<v Speaker 3>completely misguided. And that's the thing I think it was.

462
00:19:04.359 --> 00:19:06.240
<v Speaker 3>It's the fact that I don't consider myself a web

463
00:19:06.240 --> 00:19:08.160
<v Speaker 3>deev at all, Like I just happen to use it

464
00:19:08.160 --> 00:19:09.799
<v Speaker 3>as a tool, but I'm a lower level guy, Like

465
00:19:09.839 --> 00:19:12.440
<v Speaker 3>I feel much more comfortable in GLSL shaders than I

466
00:19:12.480 --> 00:19:15.359
<v Speaker 3>do in browsers, And I think it was just if

467
00:19:15.359 --> 00:19:17.519
<v Speaker 3>people have been going in the wrong direction for a

468
00:19:17.559 --> 00:19:20.880
<v Speaker 3>long time. You have very smart people solving the completely

469
00:19:20.920 --> 00:19:23.640
<v Speaker 3>the wrong problem, right, And if you solve that problem,

470
00:19:23.799 --> 00:19:25.400
<v Speaker 3>it can be very small and very efficient.

471
00:19:25.440 --> 00:19:26.640
<v Speaker 2>The browsers are really fast.

472
00:19:26.799 --> 00:19:28.440
<v Speaker 3>But the thing is it's the C plus plus and

473
00:19:28.480 --> 00:19:31.279
<v Speaker 3>the lower level stuff that's fast, not the JavaScript right.

474
00:19:32.160 --> 00:19:34.319
<v Speaker 1>So at the end of the day, if you do

475
00:19:34.400 --> 00:19:36.359
<v Speaker 1>have a performance bottleneck with this, it's going to be

476
00:19:36.359 --> 00:19:39.160
<v Speaker 1>on your back end and its ability to respond quickly.

477
00:19:39.880 --> 00:19:42.119
<v Speaker 3>Yeah, And I mean I've tested it out to like

478
00:19:42.200 --> 00:19:45.640
<v Speaker 3>forty thousand connections on actively live on in a go

479
00:19:45.880 --> 00:19:47.519
<v Speaker 3>back and I think a lot of times the problem

480
00:19:47.599 --> 00:19:51.039
<v Speaker 3>is JavaScript developers are tend to try to have a

481
00:19:51.039 --> 00:19:52.759
<v Speaker 3>full stack to try to keep and I think it's

482
00:19:52.799 --> 00:19:53.480
<v Speaker 3>not a bad thing.

483
00:19:53.640 --> 00:19:55.519
<v Speaker 2>It's just that it's because they're trying to keep track

484
00:19:55.559 --> 00:19:55.960
<v Speaker 2>of state.

485
00:19:56.279 --> 00:19:59.359
<v Speaker 3>Whereas if they care about performance, pick a lower level language,

486
00:19:59.400 --> 00:20:02.319
<v Speaker 3>pick something that's even bun with the zig stuff is

487
00:20:02.680 --> 00:20:04.279
<v Speaker 3>a better choice than what most people do.

488
00:20:04.640 --> 00:20:06.160
<v Speaker 2>Like that's where I want to see people go.

489
00:20:06.880 --> 00:20:08.720
<v Speaker 3>And it's not like the jobscript goes away, Like if

490
00:20:08.720 --> 00:20:10.799
<v Speaker 3>you're doing a charting or some kind of three D

491
00:20:10.880 --> 00:20:11.359
<v Speaker 3>engine thing.

492
00:20:11.559 --> 00:20:14.240
<v Speaker 2>You're still in our world. You're still writing web components.

493
00:20:14.720 --> 00:20:17.799
<v Speaker 3>You're actually embracing that, whereas in the normal spat world,

494
00:20:17.799 --> 00:20:20.160
<v Speaker 3>web components don't make any sense. They just don't like,

495
00:20:20.279 --> 00:20:21.680
<v Speaker 3>already have I stay in my front end? Why do

496
00:20:21.680 --> 00:20:23.039
<v Speaker 3>I need to share it with some other projects? Like

497
00:20:23.039 --> 00:20:24.720
<v Speaker 3>why do I care? Where's all of a sudden, If

498
00:20:24.720 --> 00:20:27.759
<v Speaker 3>you're saying I can make a data start application and

499
00:20:27.799 --> 00:20:31.160
<v Speaker 3>it looks the same whether it's in PHP and go zig,

500
00:20:31.400 --> 00:20:34.559
<v Speaker 3>it does not matter closure, it doesn't matter. All that

501
00:20:34.559 --> 00:20:36.599
<v Speaker 3>looks the same, then web components. Now you can have

502
00:20:36.640 --> 00:20:40.000
<v Speaker 3>a shared library that every web developer is using with

503
00:20:40.079 --> 00:20:42.160
<v Speaker 3>these web components that you're driving with data star, so

504
00:20:42.160 --> 00:20:44.640
<v Speaker 3>it props down events up with web components. So you

505
00:20:44.720 --> 00:20:46.640
<v Speaker 3>just drive it with data star. Now you're all on

506
00:20:46.680 --> 00:20:49.039
<v Speaker 3>the same page. All your templates look the same with

507
00:20:49.119 --> 00:20:52.079
<v Speaker 3>web components. Now where's the current staffs quo? You just

508
00:20:52.200 --> 00:20:53.000
<v Speaker 3>it doesn't make sense.

509
00:20:53.119 --> 00:20:55.240
<v Speaker 1>So I guess the other question that I have is,

510
00:20:55.319 --> 00:20:57.799
<v Speaker 1>you know, let's say that somebody adopts this. I'm a

511
00:20:57.799 --> 00:21:00.079
<v Speaker 1>big fan of the idea of somebody being able to

512
00:21:00.079 --> 00:21:02.000
<v Speaker 1>to like build and keep track of all of this

513
00:21:02.039 --> 00:21:04.720
<v Speaker 1>stuff on their own, right, It's like, hey, look, you know,

514
00:21:04.920 --> 00:21:06.680
<v Speaker 1>I mean I work on a team, I think most

515
00:21:06.720 --> 00:21:09.960
<v Speaker 1>people do, but on my own projects, right, I want

516
00:21:10.000 --> 00:21:12.440
<v Speaker 1>something that I can just maintain myself right without having

517
00:21:12.480 --> 00:21:15.799
<v Speaker 1>to build a team and you know, face all of

518
00:21:15.839 --> 00:21:19.839
<v Speaker 1>that complexity and keep track of what everybody's doing.

519
00:21:20.240 --> 00:21:20.480
<v Speaker 2>Right.

520
00:21:21.119 --> 00:21:23.559
<v Speaker 1>Eventually I may have to get there, but you know,

521
00:21:23.640 --> 00:21:25.960
<v Speaker 1>the longer I can hold out, the better. So is

522
00:21:26.000 --> 00:21:28.119
<v Speaker 1>this something that somebody can just slam in on their

523
00:21:28.119 --> 00:21:29.079
<v Speaker 1>own and just go for it?

524
00:21:29.559 --> 00:21:29.799
<v Speaker 2>Yeah?

525
00:21:29.839 --> 00:21:32.200
<v Speaker 3>So we're actually really good in brown fields because we're

526
00:21:32.279 --> 00:21:34.839
<v Speaker 3>using the spec complant stuff. We're not using special tags,

527
00:21:34.839 --> 00:21:37.480
<v Speaker 3>we're not using special things. There's no there's no build step,

528
00:21:37.559 --> 00:21:40.279
<v Speaker 3>Like we're built in typescript because I love static analysis

529
00:21:40.279 --> 00:21:41.839
<v Speaker 3>and I get as much of it I can. But

530
00:21:41.920 --> 00:21:45.759
<v Speaker 3>the final thing is just a single CDN link and

531
00:21:45.880 --> 00:21:48.559
<v Speaker 3>it's one ten K JavaScript file Like that's all you

532
00:21:48.559 --> 00:21:49.279
<v Speaker 3>got to do to put.

533
00:21:49.119 --> 00:21:49.640
<v Speaker 2>It on a page.

534
00:21:49.720 --> 00:21:51.960
<v Speaker 3>For most people, it like it's smaller than the fave

535
00:21:52.160 --> 00:21:54.799
<v Speaker 3>icon that they use. Like, so you just drop that

536
00:21:54.880 --> 00:21:56.359
<v Speaker 3>on your page and you can get to work. And

537
00:21:56.400 --> 00:21:58.440
<v Speaker 3>the thing is, it's it works. It's a spect complaint things.

538
00:21:58.440 --> 00:21:59.880
<v Speaker 3>So if you just say I just want to use

539
00:21:59.920 --> 00:22:04.279
<v Speaker 3>it for the data class. In fact, like a person

540
00:22:04.319 --> 00:22:07.599
<v Speaker 3>that run the podcast was actually using us instead of

541
00:22:07.640 --> 00:22:11.480
<v Speaker 3>Alpine for their AGMX stuff, even though we completely replace it.

542
00:22:11.599 --> 00:22:13.559
<v Speaker 3>Like it's one of the things of like sure you can.

543
00:22:13.680 --> 00:22:15.720
<v Speaker 3>It's actually smaller than an Alpine and it does all

544
00:22:15.720 --> 00:22:17.880
<v Speaker 3>the stuff Alpine does as well, and all the stuff

545
00:22:17.880 --> 00:22:19.880
<v Speaker 3>that Turbo does and all the stuff that Stimulus does.

546
00:22:19.960 --> 00:22:22.359
<v Speaker 3>So like, yes, you could start dropping it in and

547
00:22:22.359 --> 00:22:24.480
<v Speaker 3>then changing out things as you see fit. So there's

548
00:22:24.480 --> 00:22:26.559
<v Speaker 3>real value in that in my mind is that it's

549
00:22:26.880 --> 00:22:29.000
<v Speaker 3>it's meant for brown Field and if you can start

550
00:22:29.039 --> 00:22:31.880
<v Speaker 3>from fresh, then you're just gonna be deleting code, Like

551
00:22:31.920 --> 00:22:34.000
<v Speaker 3>that's the neat thing. I've done enough stuff in Alpine

552
00:22:34.039 --> 00:22:36.519
<v Speaker 3>and AHGMX, and I haven't done a lot of Turbo

553
00:22:36.559 --> 00:22:38.000
<v Speaker 3>because I bounce off of it. If you're not a

554
00:22:38.079 --> 00:22:41.200
<v Speaker 3>Ruby person, it's a little hard to use in my opinion,

555
00:22:41.319 --> 00:22:44.799
<v Speaker 3>And I will say I guarantee you, like I will

556
00:22:44.799 --> 00:22:46.519
<v Speaker 3>take any bet that your code. You're gonna have less

557
00:22:46.559 --> 00:22:48.839
<v Speaker 3>code on the page just because it's there's less that

558
00:22:48.920 --> 00:22:49.279
<v Speaker 3>has to.

559
00:22:49.240 --> 00:22:50.720
<v Speaker 2>Go on to solve the problem.

560
00:22:50.880 --> 00:22:53.240
<v Speaker 3>And I think people just overcomplicated it because they kept

561
00:22:53.559 --> 00:22:54.720
<v Speaker 3>working the wrong side of.

562
00:22:54.720 --> 00:22:55.920
<v Speaker 2>The problem, honestly.

563
00:22:56.680 --> 00:22:59.400
<v Speaker 1>Well, one thing that I've seen, you know, just speaking

564
00:22:59.440 --> 00:23:01.119
<v Speaker 1>to that is far as working the wrong side of

565
00:23:01.119 --> 00:23:03.480
<v Speaker 1>the problem, is that a lot of times we come

566
00:23:03.519 --> 00:23:08.160
<v Speaker 1>from the context of the wider web world, and so

567
00:23:08.200 --> 00:23:09.799
<v Speaker 1>we look at it and we say, Okay, we have

568
00:23:09.880 --> 00:23:12.559
<v Speaker 1>this solution, how do we make it better? Instead of

569
00:23:12.599 --> 00:23:16.440
<v Speaker 1>saying we have this solution. Okay, we've banged on it,

570
00:23:16.480 --> 00:23:19.359
<v Speaker 1>we've made it better. But if we had these underlying

571
00:23:19.799 --> 00:23:24.319
<v Speaker 1>underlying things different, then the whole solution changed and it

572
00:23:24.359 --> 00:23:26.680
<v Speaker 1>got better. And so yeah, I think a lot of

573
00:23:26.680 --> 00:23:29.039
<v Speaker 1>this just kind of comes from the momentum of the

574
00:23:29.039 --> 00:23:31.880
<v Speaker 1>web world. I'm kind of curious. You mentioned the plugins,

575
00:23:32.039 --> 00:23:33.960
<v Speaker 1>and you've also mentioned like just pulling it in from

576
00:23:34.000 --> 00:23:37.759
<v Speaker 1>a CBN and not using NPM. So a lot of folks, yeah,

577
00:23:37.759 --> 00:23:40.200
<v Speaker 1>they have a build step on their front end, so

578
00:23:40.240 --> 00:23:42.240
<v Speaker 1>they pull in and then they use something.

579
00:23:42.039 --> 00:23:45.920
<v Speaker 2>Like webpac or the or bite like that or something whatever.

580
00:23:46.079 --> 00:23:46.279
<v Speaker 2>You know.

581
00:23:46.319 --> 00:23:49.759
<v Speaker 1>In the rails world, we've kind of embraced import maps,

582
00:23:50.720 --> 00:23:53.359
<v Speaker 1>and so I'm just curious you're saying I don't do

583
00:23:53.400 --> 00:23:54.119
<v Speaker 1>any of that stuff.

584
00:23:54.599 --> 00:23:56.319
<v Speaker 2>Don't need to is a non issue.

585
00:23:56.480 --> 00:23:58.680
<v Speaker 3>We have a version, we have started doing a pro

586
00:23:58.759 --> 00:24:00.440
<v Speaker 3>thing and we can talk about that in a bit.

587
00:24:00.480 --> 00:24:02.720
<v Speaker 3>But I have a bundler built in and because the

588
00:24:02.720 --> 00:24:06.559
<v Speaker 3>web app is actually built in Go, I just use

589
00:24:06.759 --> 00:24:07.680
<v Speaker 3>es build as a library.

590
00:24:07.720 --> 00:24:09.960
<v Speaker 2>So vitn all that is using es build under the hoods.

591
00:24:10.200 --> 00:24:12.880
<v Speaker 3>You know, it's a lot faster not doing any JOBASCRIPT

592
00:24:12.920 --> 00:24:14.799
<v Speaker 3>and just using Go directly.

593
00:24:15.039 --> 00:24:16.119
<v Speaker 2>Like for me, it's just a library thing.

594
00:24:16.160 --> 00:24:18.160
<v Speaker 3>So we actually have a bundler built into the page

595
00:24:18.200 --> 00:24:19.799
<v Speaker 3>when you log in and stuff, so you can actually

596
00:24:20.039 --> 00:24:22.200
<v Speaker 3>do all that stuff and make exactly the version you

597
00:24:22.240 --> 00:24:24.039
<v Speaker 3>need and it's just built into the browser and it

598
00:24:24.079 --> 00:24:25.759
<v Speaker 3>takes microseconds and then I cash it and do all

599
00:24:25.799 --> 00:24:26.400
<v Speaker 3>that kind of stuff.

600
00:24:26.680 --> 00:24:29.039
<v Speaker 2>Right, We like, that's the right answer. You don't need

601
00:24:29.079 --> 00:24:29.960
<v Speaker 2>all these other steps.

602
00:24:30.119 --> 00:24:33.079
<v Speaker 3>Like there's a lot of times where people like bounce

603
00:24:33.119 --> 00:24:35.319
<v Speaker 3>off a type script, but I think it's one of

604
00:24:35.359 --> 00:24:35.640
<v Speaker 3>those things.

605
00:24:35.640 --> 00:24:36.720
<v Speaker 2>But it depends on what you're doing.

606
00:24:36.920 --> 00:24:40.079
<v Speaker 3>So for things like building an entire framework that it's

607
00:24:40.119 --> 00:24:42.279
<v Speaker 3>static analysis and there's a plug and thing, it's great

608
00:24:42.319 --> 00:24:44.400
<v Speaker 3>at that. If you're doing a small web component, you

609
00:24:44.400 --> 00:24:47.359
<v Speaker 3>don't need it. So people like they think that they

610
00:24:47.359 --> 00:24:49.279
<v Speaker 3>need to have a one stop solution for all these things,

611
00:24:49.279 --> 00:24:52.039
<v Speaker 3>whereas most of the time, like what the library author

612
00:24:52.440 --> 00:24:53.920
<v Speaker 3>need to do versus what they need to do to

613
00:24:53.960 --> 00:24:56.000
<v Speaker 3>get stuff on the screen is a very different problem.

614
00:24:56.400 --> 00:25:01.799
<v Speaker 1>So so what I'm hearing is, U, I pull this

615
00:25:01.920 --> 00:25:03.759
<v Speaker 1>in and it basically just works out of the box.

616
00:25:03.759 --> 00:25:08.000
<v Speaker 1>I don't have to go right stimulus controllers or components

617
00:25:08.200 --> 00:25:11.279
<v Speaker 1>or anything like that to get functionality onto my page.

618
00:25:12.119 --> 00:25:16.680
<v Speaker 1>If I need custom stuff you mentioned plugins, is that

619
00:25:16.759 --> 00:25:19.799
<v Speaker 1>the way to do that or so it's funny.

620
00:25:19.799 --> 00:25:21.559
<v Speaker 3>At first, I made the plugins because I thought there'd

621
00:25:21.599 --> 00:25:23.599
<v Speaker 3>be like a bizarre like almost like the Unity Asset

622
00:25:23.680 --> 00:25:26.160
<v Speaker 3>store where everyone write a million plugins. But what we

623
00:25:26.240 --> 00:25:29.119
<v Speaker 3>found is there's not like the browsers are gotten good

624
00:25:29.200 --> 00:25:30.960
<v Speaker 3>enough that there's not that many things that you need

625
00:25:31.000 --> 00:25:33.519
<v Speaker 3>to kind of hijack and make better, like setting up

626
00:25:33.599 --> 00:25:36.920
<v Speaker 3>classes and having the string manipulation there and for styles

627
00:25:37.079 --> 00:25:39.279
<v Speaker 3>and for like there's other things like data on RAFF,

628
00:25:39.559 --> 00:25:42.200
<v Speaker 3>for doing request animation frames. There's certain things that are

629
00:25:42.519 --> 00:25:46.039
<v Speaker 3>this easier in that expression language. But every time someone said, hey,

630
00:25:46.079 --> 00:25:47.400
<v Speaker 3>I want to make a plug, and we say, hey,

631
00:25:47.519 --> 00:25:49.400
<v Speaker 3>like talk to us, because if it's a good idea,

632
00:25:49.759 --> 00:25:50.079
<v Speaker 3>we'll do it.

633
00:25:50.160 --> 00:25:51.960
<v Speaker 2>So it ended up that I wanted it to be

634
00:25:52.000 --> 00:25:53.160
<v Speaker 2>this thing everyone uses.

635
00:25:53.240 --> 00:25:55.400
<v Speaker 3>But the irony is there's not that many plugins to write,

636
00:25:55.400 --> 00:25:57.039
<v Speaker 3>and if you come and talk to us, we'll just

637
00:25:57.279 --> 00:25:59.440
<v Speaker 3>write it in build it into the library. In fact,

638
00:25:59.519 --> 00:26:02.039
<v Speaker 3>it just happened because we use everyone says to use

639
00:26:02.079 --> 00:26:04.880
<v Speaker 3>styles or classes because of tail end and all that.

640
00:26:05.160 --> 00:26:07.160
<v Speaker 3>But someone came in with some really good ideas around

641
00:26:07.200 --> 00:26:09.960
<v Speaker 3>how to do animating of styling and stuff, and they

642
00:26:09.960 --> 00:26:12.559
<v Speaker 3>wanted to use this have a style thing and we

643
00:26:13.039 --> 00:26:14.119
<v Speaker 3>had had it for two years.

644
00:26:14.440 --> 00:26:15.920
<v Speaker 2>In a day we had it and we're like, oh no,

645
00:26:16.079 --> 00:26:16.599
<v Speaker 2>that's a good idea.

646
00:26:16.640 --> 00:26:19.000
<v Speaker 3>And now it's part of the latest rc is data

647
00:26:19.079 --> 00:26:21.559
<v Speaker 3>ash style is now just a built in thing. So

648
00:26:21.640 --> 00:26:25.279
<v Speaker 3>it's yeah, it's more of an implementation detail at this point.

649
00:26:25.279 --> 00:26:26.759
<v Speaker 2>The plugin system because you have to know.

650
00:26:26.839 --> 00:26:28.920
<v Speaker 3>Like it is a little bit harder to write plug

651
00:26:28.960 --> 00:26:31.519
<v Speaker 3>ins because we're very code golfy and we try to

652
00:26:31.519 --> 00:26:34.720
<v Speaker 3>make it as efficient possible. There's that, but anyone can

653
00:26:34.759 --> 00:26:36.640
<v Speaker 3>write a plug in, but you right now you basically

654
00:26:36.720 --> 00:26:38.400
<v Speaker 3>four can kind of go on your own route. But

655
00:26:38.720 --> 00:26:40.920
<v Speaker 3>the whole system's there. You have access to everything, it's

656
00:26:40.920 --> 00:26:43.440
<v Speaker 3>just getting it into the core. We're a little finicky

657
00:26:43.519 --> 00:26:44.440
<v Speaker 3>with that stuff.

658
00:26:45.359 --> 00:26:48.119
<v Speaker 1>So effectively, because I know some people are just going

659
00:26:48.200 --> 00:26:50.480
<v Speaker 1>to kind of have trouble wrap their head around it. Okay, well,

660
00:26:50.519 --> 00:26:52.240
<v Speaker 1>I have this custom behavior that I need to blah

661
00:26:52.279 --> 00:26:54.279
<v Speaker 1>blah blah blah, and so it has to do.

662
00:26:54.200 --> 00:26:54.720
<v Speaker 2>All this stuff.

663
00:26:54.720 --> 00:26:57.759
<v Speaker 1>And what you're telling me is that essentially the way

664
00:26:57.759 --> 00:27:02.039
<v Speaker 1>that the framework works, you can do probably ninety nine

665
00:27:02.039 --> 00:27:04.720
<v Speaker 1>percent of that stuff just with your data attributes and

666
00:27:04.759 --> 00:27:06.559
<v Speaker 1>then leaning on the framework.

667
00:27:07.000 --> 00:27:07.240
<v Speaker 2>Yeah.

668
00:27:07.279 --> 00:27:08.880
<v Speaker 3>And the thing is that when you run into something

669
00:27:08.920 --> 00:27:11.240
<v Speaker 3>really company like I built an entire three D engine

670
00:27:11.240 --> 00:27:14.359
<v Speaker 3>for one of the things that I'm doing, and that

671
00:27:14.440 --> 00:27:16.440
<v Speaker 3>was just one web component, Like it's are a couple

672
00:27:16.440 --> 00:27:18.799
<v Speaker 3>of web components and they just nest in tide each other.

673
00:27:18.839 --> 00:27:20.440
<v Speaker 3>Then you drive it with data start and it's not

674
00:27:20.559 --> 00:27:23.200
<v Speaker 3>that bad, and you just are updating props and you're

675
00:27:23.319 --> 00:27:24.279
<v Speaker 3>handling events.

676
00:27:24.799 --> 00:27:25.640
<v Speaker 2>The thing is that.

677
00:27:25.559 --> 00:27:28.720
<v Speaker 3>The browsers already have a native way to do that,

678
00:27:28.799 --> 00:27:30.240
<v Speaker 3>the way to encapsulate JavaScript.

679
00:27:30.279 --> 00:27:31.680
<v Speaker 2>So a lot of people just like, well, how do

680
00:27:31.680 --> 00:27:33.039
<v Speaker 2>I add this one little JS thing?

681
00:27:33.279 --> 00:27:35.640
<v Speaker 3>Most of the time it's they're trying to interact with

682
00:27:35.680 --> 00:27:38.640
<v Speaker 3>some other charting library or some other thing that they

683
00:27:38.640 --> 00:27:40.599
<v Speaker 3>didn't wrap that in a web component. Then now you

684
00:27:40.640 --> 00:27:42.880
<v Speaker 3>have something that can be shared anywhere all the time,

685
00:27:43.000 --> 00:27:44.640
<v Speaker 3>and that's the right way to do it in the

686
00:27:44.640 --> 00:27:47.119
<v Speaker 3>modern web, Like that's just easier for everyone, and now

687
00:27:47.119 --> 00:27:49.519
<v Speaker 3>you have something that's sharable, whereas right now we don't

688
00:27:49.519 --> 00:27:51.720
<v Speaker 3>have a lot of sharing going on between frameworks and stuff.

689
00:27:51.720 --> 00:27:54.319
<v Speaker 2>Whereas with data start, we embrace the like what the

690
00:27:55.000 --> 00:27:56.519
<v Speaker 2>or what the web is already good at.

691
00:27:56.680 --> 00:27:59.039
<v Speaker 3>And what's also nice is if you are using Spelt

692
00:27:59.119 --> 00:28:01.759
<v Speaker 3>or Reactor and you're want to move towards that, all

693
00:28:01.759 --> 00:28:03.640
<v Speaker 3>of those support web components of the box, Like you

694
00:28:03.640 --> 00:28:06.519
<v Speaker 3>can turn things a view component into a web component,

695
00:28:06.519 --> 00:28:08.359
<v Speaker 3>say wass Felt, all these thing in facts felts a

696
00:28:08.400 --> 00:28:10.119
<v Speaker 3>pretty good option if you want to live in that

697
00:28:10.200 --> 00:28:12.400
<v Speaker 3>world and still do SPAT stuff, you can turn those

698
00:28:12.400 --> 00:28:14.039
<v Speaker 3>things in wet components and now drive them a data

699
00:28:14.039 --> 00:28:16.279
<v Speaker 3>star and be so much more efficient in.

700
00:28:16.200 --> 00:28:19.039
<v Speaker 2>How you do that. Right when you say web components,

701
00:28:19.079 --> 00:28:21.839
<v Speaker 2>you're talking about like the spec that's out thereah then

702
00:28:21.880 --> 00:28:23.920
<v Speaker 2>native spec. Yeah, yeah, it's really good.

703
00:28:24.200 --> 00:28:25.880
<v Speaker 3>Like there's some things that are kind of clunky about it,

704
00:28:25.920 --> 00:28:28.039
<v Speaker 3>but like we're working on a thing we're calling internally

705
00:28:28.119 --> 00:28:30.440
<v Speaker 3>calon rocket right now, which is a way to make

706
00:28:30.440 --> 00:28:32.440
<v Speaker 3>it to it's kind of like our version of lit

707
00:28:32.599 --> 00:28:35.559
<v Speaker 3>where you have your own little thing that automatically does

708
00:28:35.559 --> 00:28:37.799
<v Speaker 3>a hook up of signals and does some niceties for

709
00:28:37.839 --> 00:28:41.119
<v Speaker 3>you to make the code smaller. But just writing the specs,

710
00:28:41.160 --> 00:28:43.720
<v Speaker 3>like writing spec compliant web components is not that hard.

711
00:28:43.799 --> 00:28:46.200
<v Speaker 3>You get props down, you make changes, and then you

712
00:28:46.200 --> 00:28:47.119
<v Speaker 3>render your HML.

713
00:28:47.240 --> 00:28:49.000
<v Speaker 2>That's it. Like, it's not rocket science.

714
00:28:49.400 --> 00:28:52.240
<v Speaker 1>So just to kind of recap because I'm just thinking

715
00:28:52.279 --> 00:28:55.200
<v Speaker 1>through this and it sounds pretty awesome. Now I want

716
00:28:55.200 --> 00:28:56.839
<v Speaker 1>to go play with it, and I want to go see,

717
00:28:56.920 --> 00:28:58.839
<v Speaker 1>you know how I can kind of plug this into

718
00:28:58.880 --> 00:29:02.799
<v Speaker 1>my rails apps because I mean sometimes writing the stimulus

719
00:29:02.839 --> 00:29:04.880
<v Speaker 1>controllers or you know, kind of getting some of the

720
00:29:04.880 --> 00:29:08.680
<v Speaker 1>custom behaviors, just like it's not exactly what I want

721
00:29:08.799 --> 00:29:11.720
<v Speaker 1>or yeah, there's a little bit of ceremony around, not

722
00:29:11.759 --> 00:29:12.759
<v Speaker 1>a ton, but a little bit.

723
00:29:13.079 --> 00:29:15.359
<v Speaker 3>No, and there shouldn't, especially in a language like Ruby,

724
00:29:15.400 --> 00:29:17.680
<v Speaker 3>there should be basically no ceremony. In fact, we have

725
00:29:17.720 --> 00:29:22.359
<v Speaker 3>a very vibrant Ruby community already built, and we have

726
00:29:22.400 --> 00:29:25.640
<v Speaker 3>a Ruby SDK. I would highly recommend joining the discord,

727
00:29:25.720 --> 00:29:29.119
<v Speaker 3>joining the Ruby side and saying, hey, you know, I

728
00:29:29.160 --> 00:29:32.240
<v Speaker 3>talked to Delaney and like I'm interested, what do I

729
00:29:32.279 --> 00:29:34.359
<v Speaker 3>gotta do, and you'll see that we have a lot

730
00:29:34.400 --> 00:29:37.839
<v Speaker 3>going on already, like it's it's already vibrant for being

731
00:29:37.839 --> 00:29:38.680
<v Speaker 3>a small community.

732
00:29:38.960 --> 00:29:42.200
<v Speaker 1>So yeah, I guess what I'm interested in is just

733
00:29:42.240 --> 00:29:44.640
<v Speaker 1>to see how it stacks up and how much of

734
00:29:44.640 --> 00:29:47.000
<v Speaker 1>the stuff I wind up doing in a stimulus controller

735
00:29:47.000 --> 00:29:47.599
<v Speaker 1>that I can just.

736
00:29:49.039 --> 00:29:50.880
<v Speaker 3>You probably can trug the right almost all of it.

737
00:29:51.279 --> 00:29:54.119
<v Speaker 3>And the nice thing is that we have a guide end. Yeah,

738
00:29:54.160 --> 00:29:57.759
<v Speaker 3>and the we have a guide and it's actually written

739
00:29:57.799 --> 00:30:00.160
<v Speaker 3>with all the examples in different languages. So if you, oh,

740
00:30:00.200 --> 00:30:01.359
<v Speaker 3>the guy, you can just go to the ruby one

741
00:30:01.359 --> 00:30:04.079
<v Speaker 3>and literally step through and say does this match my needs?

742
00:30:04.160 --> 00:30:07.200
<v Speaker 3>And again it's not that like we don't make anything

743
00:30:07.200 --> 00:30:08.640
<v Speaker 3>from this, but it's more of it, like we want

744
00:30:08.680 --> 00:30:10.400
<v Speaker 3>to see the web be a better place. In fact,

745
00:30:10.400 --> 00:30:12.200
<v Speaker 3>we actually set up a nonprofit. We have a five

746
00:30:12.319 --> 00:30:14.759
<v Speaker 3>ZHO one C three that's already set up for it,

747
00:30:15.119 --> 00:30:17.599
<v Speaker 3>so like we actually have a mission in a goal.

748
00:30:17.599 --> 00:30:20.920
<v Speaker 3>There's not going to be some vercell rugpool play some later.

749
00:30:21.079 --> 00:30:24.359
<v Speaker 3>Like we literally did the nonprofit to make people understand

750
00:30:24.480 --> 00:30:26.759
<v Speaker 3>we don't have stocks or anything like that, Like we're

751
00:30:26.799 --> 00:30:29.119
<v Speaker 3>stewards of the project. We're trying to do the right things,

752
00:30:29.279 --> 00:30:31.119
<v Speaker 3>and we want to see the web be better because

753
00:30:31.200 --> 00:30:33.000
<v Speaker 3>I want to get back to I dog food this.

754
00:30:33.039 --> 00:30:34.440
<v Speaker 3>I use it for work. It's not like this is

755
00:30:34.480 --> 00:30:37.279
<v Speaker 3>my right gig. I just want to make it better

756
00:30:37.279 --> 00:30:39.119
<v Speaker 3>and have more people involved so they can make it

757
00:30:39.119 --> 00:30:39.559
<v Speaker 3>better with me.

758
00:30:40.240 --> 00:30:42.400
<v Speaker 2>Right. So you mentioned vercell.

759
00:30:43.160 --> 00:30:45.599
<v Speaker 1>You know you've also got Netlify and a bunch of

760
00:30:45.599 --> 00:30:48.559
<v Speaker 1>these other ones that you know they'll host your your

761
00:30:49.039 --> 00:30:51.400
<v Speaker 1>front end. They'll host your back end too, depending on

762
00:30:51.440 --> 00:30:54.000
<v Speaker 1>how it's put together. And so is this something that yeah,

763
00:30:54.039 --> 00:30:56.240
<v Speaker 1>I can just throw it together and have out there,

764
00:30:56.279 --> 00:30:58.240
<v Speaker 1>I guess if you're just pulling it off the CDN.

765
00:30:59.200 --> 00:31:02.279
<v Speaker 2>Yeah, you just like you just copy paste to local

766
00:31:02.319 --> 00:31:04.240
<v Speaker 2>if you want. Like what I do is I use GO, So.

767
00:31:04.200 --> 00:31:06.039
<v Speaker 3>I use the embed stuff so I can bet all

768
00:31:06.039 --> 00:31:09.559
<v Speaker 3>my file system directly into my binary. Right, So I

769
00:31:09.680 --> 00:31:12.680
<v Speaker 3>just make it so it locks loads like copies in

770
00:31:12.759 --> 00:31:15.559
<v Speaker 3>as part of my build stuff from the CDN stuff

771
00:31:15.559 --> 00:31:18.480
<v Speaker 3>from just delivered, and then I have a binary version

772
00:31:18.480 --> 00:31:19.880
<v Speaker 3>that works anywhere in the world. So I have a

773
00:31:19.880 --> 00:31:22.599
<v Speaker 3>single binary that I can to play with SEP and

774
00:31:22.720 --> 00:31:26.960
<v Speaker 3>have it on a thing, no problem. So it's actually

775
00:31:27.000 --> 00:31:29.279
<v Speaker 3>simpler in every way. You don't need DevOps to do

776
00:31:29.359 --> 00:31:32.960
<v Speaker 3>most things. You need SEP and a system cuddle file

777
00:31:33.039 --> 00:31:36.440
<v Speaker 3>and that's it, Like that's all you need. So it's simpler,

778
00:31:36.920 --> 00:31:41.440
<v Speaker 3>but it works in the big scale teams too, Like yeah, yeah.

779
00:31:40.960 --> 00:31:42.839
<v Speaker 1>It sounds like you can just serve it, you know,

780
00:31:42.960 --> 00:31:44.680
<v Speaker 1>depending on what your back end is and how that

781
00:31:44.720 --> 00:31:47.359
<v Speaker 1>stuff works. Yeah, you can just you can run it

782
00:31:47.559 --> 00:31:51.319
<v Speaker 1>through whatever asset pipeline or management you have, and yeah,

783
00:31:51.400 --> 00:31:53.000
<v Speaker 1>you just serve it up and run it.

784
00:31:53.440 --> 00:31:54.960
<v Speaker 3>Well, that's the thing I wanted to get back to,

785
00:31:55.119 --> 00:31:58.799
<v Speaker 3>like I remember when in fact, it's funny, the more

786
00:31:59.079 --> 00:32:00.880
<v Speaker 3>of the stuff I do more, I'm like, man, Jay

787
00:32:00.920 --> 00:32:02.400
<v Speaker 3>Curry was so close to being right.

788
00:32:02.680 --> 00:32:04.960
<v Speaker 2>Like it had a lot of these ideas, but.

789
00:32:04.880 --> 00:32:07.599
<v Speaker 3>It was it got so muchy passed and so crazy

790
00:32:08.079 --> 00:32:10.319
<v Speaker 3>because the problem is that the data dash Star actually

791
00:32:10.319 --> 00:32:13.240
<v Speaker 3>weren't there. CSS nesting wasn't there, Like it was the

792
00:32:13.240 --> 00:32:15.960
<v Speaker 3>best version of its time. But we were so close

793
00:32:16.000 --> 00:32:17.799
<v Speaker 3>to something that was really about because you just like

794
00:32:17.839 --> 00:32:19.720
<v Speaker 3>throw j carry on the page, you make the changes

795
00:32:19.759 --> 00:32:21.400
<v Speaker 3>you need, and then most of the stuff was in

796
00:32:21.440 --> 00:32:23.759
<v Speaker 3>the back end. It's like that's pretty close. But we

797
00:32:23.839 --> 00:32:25.119
<v Speaker 3>kept saying, well, we want to do more and more

798
00:32:25.119 --> 00:32:27.279
<v Speaker 3>in the browser, and part of that is, at the

799
00:32:27.359 --> 00:32:29.559
<v Speaker 3>time you had like for example, glass Fish in the

800
00:32:29.640 --> 00:32:33.680
<v Speaker 3>Java world, where every every request was its own thread, right,

801
00:32:33.720 --> 00:32:35.759
<v Speaker 3>and that was like you couldn't wait on the server.

802
00:32:36.000 --> 00:32:38.799
<v Speaker 3>It was like seconds of time between Right now you

803
00:32:38.799 --> 00:32:41.759
<v Speaker 3>can have forty thousand connections per core on a normal

804
00:32:41.920 --> 00:32:45.640
<v Speaker 3>like async server. Like the problem is that things like

805
00:32:45.640 --> 00:32:49.079
<v Speaker 3>issue next to me are yearning for the style of

806
00:32:49.079 --> 00:32:52.160
<v Speaker 3>the two thousands, But I want some of that style

807
00:32:52.279 --> 00:32:54.680
<v Speaker 3>with all of the features of now, Like people don't

808
00:32:54.680 --> 00:32:57.000
<v Speaker 3>realize that we've gotten a lot better, and I want

809
00:32:57.079 --> 00:32:58.200
<v Speaker 3>to have that betterness.

810
00:32:58.400 --> 00:32:59.640
<v Speaker 2>So you and.

811
00:32:59.680 --> 00:33:03.480
<v Speaker 3>Da Well, in fact, the very first version of this,

812
00:33:03.680 --> 00:33:05.319
<v Speaker 3>or when I committed it, I was like, DHH will

813
00:33:05.319 --> 00:33:07.960
<v Speaker 3>hate this because when it's doing his whole typescript sucks

814
00:33:08.039 --> 00:33:09.240
<v Speaker 3>diatribe thing.

815
00:33:09.519 --> 00:33:13.160
<v Speaker 1>Yeah, but the ideas that you're talking about and the

816
00:33:13.200 --> 00:33:15.720
<v Speaker 1>things that you're pulling in, and you know, the niceties

817
00:33:15.759 --> 00:33:18.359
<v Speaker 1>of how we did things, you know fifteen twenty years ago,

818
00:33:19.599 --> 00:33:21.119
<v Speaker 1>you know where a lot of this stuff was a

819
00:33:21.160 --> 00:33:25.039
<v Speaker 1>lot simpler. I mean, he does push back to that,

820
00:33:24.640 --> 00:33:27.680
<v Speaker 1>and that's a lot of the idea that he's a

821
00:33:27.839 --> 00:33:29.920
<v Speaker 1>guy I wish, Yeah, he would typescript.

822
00:33:30.000 --> 00:33:32.680
<v Speaker 2>That's a different thing. Well, the thing is that it's

823
00:33:32.480 --> 00:33:34.359
<v Speaker 2>a most people are completing.

824
00:33:34.640 --> 00:33:37.200
<v Speaker 3>I want to write my daily like updating of my

825
00:33:37.279 --> 00:33:39.720
<v Speaker 3>page in typescript, Like, no, you don't need to do that.

826
00:33:39.759 --> 00:33:41.519
<v Speaker 3>If you don't need to write any Like in the

827
00:33:41.599 --> 00:33:44.400
<v Speaker 3>data R way, you basically write no JavaScript most of

828
00:33:44.440 --> 00:33:45.319
<v Speaker 3>the time you don't need to.

829
00:33:45.440 --> 00:33:48.000
<v Speaker 2>And when you do, it's the little little snippets of expressions.

830
00:33:48.039 --> 00:33:50.160
<v Speaker 3>Right, you're going back to almost the the the on

831
00:33:50.319 --> 00:33:52.720
<v Speaker 3>click days of like you're doing a little expression and

832
00:33:52.799 --> 00:33:55.440
<v Speaker 3>so that's a lot easier. I would love if you

833
00:33:55.480 --> 00:33:58.559
<v Speaker 3>would try it out, because I bet he, like he

834
00:33:58.640 --> 00:34:01.400
<v Speaker 3>seems to be very motivated by getting to good answers,

835
00:34:01.599 --> 00:34:04.039
<v Speaker 3>and I actually think he might see it and say

836
00:34:04.079 --> 00:34:07.400
<v Speaker 3>this is better than Turbo, Like if he actually spend

837
00:34:07.440 --> 00:34:09.679
<v Speaker 3>time with data Star, he might Actually I think that

838
00:34:09.800 --> 00:34:12.559
<v Speaker 3>could be an actually a possibility because Turbo is only

839
00:34:12.559 --> 00:34:15.679
<v Speaker 3>focused on Ruvie. It's only it's kind of a piecemeal thing.

840
00:34:15.719 --> 00:34:17.599
<v Speaker 3>It's not really their focus. It's just kind of like,

841
00:34:17.840 --> 00:34:19.360
<v Speaker 3>this is good enough, it's better than the other tools

842
00:34:19.360 --> 00:34:22.920
<v Speaker 3>out there. Cool, we're done, whereas data Star went hard

843
00:34:23.280 --> 00:34:26.880
<v Speaker 3>on hard problems and we're faster or smaller and we're better.

844
00:34:26.960 --> 00:34:28.920
<v Speaker 3>And like he seemed to be one of those people.

845
00:34:28.960 --> 00:34:30.400
<v Speaker 3>So I would love for him to try it out.

846
00:34:30.440 --> 00:34:32.079
<v Speaker 3>I just don't have the context to know, like I'm

847
00:34:32.119 --> 00:34:34.000
<v Speaker 3>a nobody on it, Like I'm just a guy in

848
00:34:34.039 --> 00:34:35.159
<v Speaker 3>a whole kind of thing.

849
00:34:35.239 --> 00:34:37.360
<v Speaker 1>So so, so the other thing I wanted to throw

850
00:34:37.400 --> 00:34:41.119
<v Speaker 1>out there is a lot of folks use I mean,

851
00:34:41.239 --> 00:34:43.639
<v Speaker 1>you mentioned tailwind, but on top of that, and I

852
00:34:43.639 --> 00:34:44.920
<v Speaker 1>think tailwind is offering one.

853
00:34:45.039 --> 00:34:47.559
<v Speaker 2>Now if you have tailwind plus or pro or whatever

854
00:34:47.559 --> 00:34:48.800
<v Speaker 2>they call it. I do have that.

855
00:34:48.880 --> 00:34:50.920
<v Speaker 1>I just haven't used their library because I don't use

856
00:34:51.000 --> 00:34:54.360
<v Speaker 1>React on the front end. But they have these component libraries, right,

857
00:34:54.400 --> 00:34:57.039
<v Speaker 1>and so it's you know, you've got your accordion dropdowns,

858
00:34:57.039 --> 00:35:00.239
<v Speaker 1>and you've got your menu stuff, You've got your you know,

859
00:35:00.360 --> 00:35:03.800
<v Speaker 1>you've got your scrollers and all that stuff, right, And

860
00:35:03.840 --> 00:35:07.280
<v Speaker 1>so what you're advocating, if I'm understanding correctly, is you

861
00:35:07.320 --> 00:35:10.199
<v Speaker 1>put all that stuff into your into a web component

862
00:35:10.840 --> 00:35:13.519
<v Speaker 1>and you build the behavior and then you make it

863
00:35:13.559 --> 00:35:14.880
<v Speaker 1>do the thing that you wanted to do.

864
00:35:15.480 --> 00:35:18.599
<v Speaker 3>So that's that's a great question in that like okay,

865
00:35:18.760 --> 00:35:21.039
<v Speaker 3>like how will you do how do you do stuff

866
00:35:21.079 --> 00:35:22.639
<v Speaker 3>with it? Like, great, you got the base stuff, how

867
00:35:22.679 --> 00:35:24.280
<v Speaker 3>do you do things? So one of the things now

868
00:35:24.280 --> 00:35:27.079
<v Speaker 3>that data Star is done would be ones out. Technically

869
00:35:27.079 --> 00:35:29.000
<v Speaker 3>we're an RC so in case the SEK author is

870
00:35:29.000 --> 00:35:31.400
<v Speaker 3>need to change something, but everything's it's as V one

871
00:35:31.760 --> 00:35:33.760
<v Speaker 3>and so now that that's done, we can start building

872
00:35:33.800 --> 00:35:35.559
<v Speaker 3>things on top of it. So it's not like data

873
00:35:35.559 --> 00:35:38.840
<v Speaker 3>Star as we actually literally created star Federation, which is

874
00:35:38.880 --> 00:35:40.599
<v Speaker 3>a set of tools and things because I do want

875
00:35:40.639 --> 00:35:41.960
<v Speaker 3>to make the web better now, Like, even though I'm

876
00:35:41.960 --> 00:35:45.320
<v Speaker 3>not a web gag, I know Star Federation and it's great.

877
00:35:45.360 --> 00:35:48.320
<v Speaker 3>It's actually star Federation is the actual nonprofit name.

878
00:35:48.360 --> 00:35:48.960
<v Speaker 1>It.

879
00:35:49.079 --> 00:35:51.440
<v Speaker 2>Oh nice, it's the best, dumbest name.

880
00:35:51.639 --> 00:35:54.400
<v Speaker 3>But the thing that's interesting, at least from my perspective,

881
00:35:54.440 --> 00:35:56.079
<v Speaker 3>is now that we have this foundation, we can build

882
00:35:56.159 --> 00:35:58.239
<v Speaker 3>a million interesting tools. One of the tools that I'm

883
00:35:58.239 --> 00:36:01.199
<v Speaker 3>building right now is called stuff, and I think it's

884
00:36:01.239 --> 00:36:05.199
<v Speaker 3>a tailwind killer, like one hundred percent will just murder tailwind.

885
00:36:05.239 --> 00:36:06.360
<v Speaker 2>And the reason why.

886
00:36:06.559 --> 00:36:08.519
<v Speaker 3>Is because basically I'm taking a lot of the ideas

887
00:36:08.559 --> 00:36:10.079
<v Speaker 3>from open props, which I think is a really good

888
00:36:10.119 --> 00:36:12.679
<v Speaker 3>thing because it's basically just a bunch of CSS variables

889
00:36:12.920 --> 00:36:16.239
<v Speaker 3>that someone from the Google team out of Margout made

890
00:36:16.320 --> 00:36:20.159
<v Speaker 3>that basically you're doing stuff with standard CSS because now

891
00:36:20.239 --> 00:36:22.719
<v Speaker 3>nesting's there, all the functions and mix ends are coming.

892
00:36:23.000 --> 00:36:25.519
<v Speaker 3>CSS has gotten a lot better, so just use variables

893
00:36:25.599 --> 00:36:26.599
<v Speaker 3>to do a lot of the things you were doing

894
00:36:26.599 --> 00:36:30.880
<v Speaker 3>in Tailwind. So it's a mixture between you know, CSS,

895
00:36:30.920 --> 00:36:34.320
<v Speaker 3>tailwind and open props. And basically what I'm doing is

896
00:36:34.320 --> 00:36:37.079
<v Speaker 3>I'm building a live editor where you are making changes

897
00:36:37.400 --> 00:36:38.840
<v Speaker 3>to all the kind of things that you would do

898
00:36:38.880 --> 00:36:39.719
<v Speaker 3>in tailwind canfig.

899
00:36:39.840 --> 00:36:41.039
<v Speaker 2>You actually have a live editor.

900
00:36:41.079 --> 00:36:43.840
<v Speaker 3>It's actually going back to the server and depending on

901
00:36:43.880 --> 00:36:46.280
<v Speaker 3>what you've changed, automatically has cashes of all this stuff

902
00:36:46.280 --> 00:36:48.760
<v Speaker 3>and then generates the styles and stuff on the fly,

903
00:36:49.239 --> 00:36:50.960
<v Speaker 3>and then at the end basically gives you a full

904
00:36:51.679 --> 00:36:53.639
<v Speaker 3>set of variables and all the canfigs and all this

905
00:36:53.880 --> 00:36:55.480
<v Speaker 3>so you actually are able to play with it live

906
00:36:56.239 --> 00:36:58.280
<v Speaker 3>in real time even though it's going back to the server.

907
00:36:58.519 --> 00:37:00.559
<v Speaker 3>Because we cash everything, we can actually get really really

908
00:37:00.599 --> 00:37:02.559
<v Speaker 3>fast and say three or four is has not been

909
00:37:02.559 --> 00:37:05.159
<v Speaker 3>modified all those kinds of things, and I'm making it

910
00:37:05.159 --> 00:37:08.119
<v Speaker 3>and it's going crazy fast and you can basically point

911
00:37:08.119 --> 00:37:09.559
<v Speaker 3>at this thing from anywhere, and now you have a

912
00:37:09.599 --> 00:37:14.119
<v Speaker 3>full CDN version of Tailwind with no build, no setup,

913
00:37:14.320 --> 00:37:16.159
<v Speaker 3>works on any back end. That's where I think the

914
00:37:16.159 --> 00:37:19.039
<v Speaker 3>future is going to be is getting this collaborative stuff

915
00:37:19.280 --> 00:37:22.159
<v Speaker 3>that is shared, and you can't share stuff if all

916
00:37:22.159 --> 00:37:24.159
<v Speaker 3>your state's in the front end. That's just like the

917
00:37:24.159 --> 00:37:26.159
<v Speaker 3>local first thing to me, I think is a hot nightmare.

918
00:37:26.320 --> 00:37:28.320
<v Speaker 3>Like it's just the wrong approach to the web. It's

919
00:37:28.360 --> 00:37:30.159
<v Speaker 3>not that if you want to do that, go do native,

920
00:37:30.280 --> 00:37:31.320
<v Speaker 3>Like there's nothing wrong with native.

921
00:37:31.360 --> 00:37:33.639
<v Speaker 2>I'm like a game guy like I like C and

922
00:37:33.679 --> 00:37:35.960
<v Speaker 2>C plus plus they're great at that. But the web

923
00:37:36.079 --> 00:37:36.559
<v Speaker 2>is not that.

924
00:37:36.960 --> 00:37:40.360
<v Speaker 3>The web is about sharing collaboration and only having the

925
00:37:40.360 --> 00:37:42.360
<v Speaker 3>state of your page at that time. That's what the

926
00:37:42.400 --> 00:37:45.800
<v Speaker 3>whole hypermedia thing was about, like not API is not Jason.

927
00:37:45.719 --> 00:37:48.599
<v Speaker 1>Okay, I'm not sure if you completely answered the question though.

928
00:37:48.639 --> 00:37:51.079
<v Speaker 1>So you know you do have these different components that

929
00:37:51.119 --> 00:37:54.840
<v Speaker 1>have different behaviors, right, and so yeah, as your approach

930
00:37:54.840 --> 00:37:56.840
<v Speaker 1>to that, just to put them into web components.

931
00:37:56.440 --> 00:37:57.920
<v Speaker 2>Or if you need to.

932
00:37:58.000 --> 00:38:00.360
<v Speaker 3>Most of the time, most of your components act live

933
00:38:00.360 --> 00:38:02.519
<v Speaker 3>in your back end because it's about what state I'm

934
00:38:02.599 --> 00:38:04.360
<v Speaker 3>changing in my bad Like if you're taking about a

935
00:38:04.440 --> 00:38:08.119
<v Speaker 3>database like row and you're saying I'm updating something, all

936
00:38:08.119 --> 00:38:09.960
<v Speaker 3>the state is right there. You shouldn't have to send

937
00:38:09.960 --> 00:38:12.280
<v Speaker 3>down Jason, you can just send down HTML. And the

938
00:38:12.320 --> 00:38:16.320
<v Speaker 3>irony too is that people don't realize this HTML is

939
00:38:16.800 --> 00:38:20.559
<v Speaker 3>much more efficient to create and send than Jason. And

940
00:38:20.599 --> 00:38:22.800
<v Speaker 3>what I mean by that from a technical standpoint for

941
00:38:22.800 --> 00:38:25.159
<v Speaker 3>anyone that doesn't know, is like with Jason, you're basically reflecting.

942
00:38:25.199 --> 00:38:28.639
<v Speaker 3>For most languages, you're reflecting through and creating a tree structure.

943
00:38:29.199 --> 00:38:31.639
<v Speaker 3>So you're making a tree structure, whereas with HML you're

944
00:38:31.679 --> 00:38:34.679
<v Speaker 3>just having static pieces and you're basically filling islands. So

945
00:38:34.679 --> 00:38:37.119
<v Speaker 3>you have these big, large buffers and you're able to

946
00:38:37.159 --> 00:38:40.400
<v Speaker 3>update things way faster. And if you're using the compression

947
00:38:40.440 --> 00:38:43.159
<v Speaker 3>stuff we do, where you have like Broughtley windows or

948
00:38:43.400 --> 00:38:46.599
<v Speaker 3>zelib standard or these standard windows, all that stuff is

949
00:38:46.760 --> 00:38:50.280
<v Speaker 3>already in the buffers. So now you're getting really really fast.

950
00:38:50.400 --> 00:38:53.239
<v Speaker 3>You're getting between two hundred to two thousand to one

951
00:38:53.280 --> 00:38:56.719
<v Speaker 3>compression ratios and it's not recursing a tree. So yeah,

952
00:38:56.800 --> 00:38:59.840
<v Speaker 3>you're still making components, but you're making mostly the locality

953
00:39:00.039 --> 00:39:02.199
<v Speaker 3>here it becomes the same line in my world, So

954
00:39:02.280 --> 00:39:03.840
<v Speaker 3>that makes a huge difference.

955
00:39:04.159 --> 00:39:06.320
<v Speaker 1>Right, that makes sense. And then as far as I mean,

956
00:39:06.360 --> 00:39:09.079
<v Speaker 1>some of them are just visual things, you know, so

957
00:39:09.280 --> 00:39:12.119
<v Speaker 1>you've got like your your drop down menus and things

958
00:39:12.159 --> 00:39:14.239
<v Speaker 1>like that, you know, so you put those in and

959
00:39:14.320 --> 00:39:18.320
<v Speaker 1>with those you're literally just adding and removing CSS classes

960
00:39:18.920 --> 00:39:21.159
<v Speaker 1>and so so you just put that into your your

961
00:39:21.199 --> 00:39:23.639
<v Speaker 1>events and your your data attributes and it just does

962
00:39:23.639 --> 00:39:24.119
<v Speaker 1>the right thing.

963
00:39:24.519 --> 00:39:24.760
<v Speaker 2>Yeah.

964
00:39:24.800 --> 00:39:26.400
<v Speaker 3>So when you have like, for example, you do a

965
00:39:26.480 --> 00:39:29.079
<v Speaker 3>data class and then you give the class is open,

966
00:39:29.440 --> 00:39:32.039
<v Speaker 3>and then you hook that into a signal done like

967
00:39:32.079 --> 00:39:33.440
<v Speaker 3>and then if you taggle that, you can talk it

968
00:39:33.480 --> 00:39:34.599
<v Speaker 3>from the back end, you can talk it from the

969
00:39:34.599 --> 00:39:34.960
<v Speaker 3>front end.

970
00:39:34.960 --> 00:39:36.400
<v Speaker 2>You can do all kinds of stuff like.

971
00:39:36.800 --> 00:39:39.360
<v Speaker 3>It just simplifies that because you're just hooking into the

972
00:39:39.360 --> 00:39:42.719
<v Speaker 3>signals properly. It makes us a little expression and you're done.

973
00:39:42.880 --> 00:39:45.400
<v Speaker 3>I mean, it's a lot of what Alpine was doing

974
00:39:45.679 --> 00:39:48.440
<v Speaker 3>from that from the front instance side, but it's way more.

975
00:39:49.079 --> 00:39:53.719
<v Speaker 2>I've seen that in well there was another one too anyway,

976
00:39:54.239 --> 00:39:54.519
<v Speaker 2>But you.

977
00:39:54.440 --> 00:39:56.400
<v Speaker 3>Don't need veto On to do that stuff, and you

978
00:39:56.400 --> 00:39:59.360
<v Speaker 3>don't need the way that Outpline is doing things, and

979
00:39:59.400 --> 00:40:00.880
<v Speaker 3>you can actually be a lot smaller and a lot

980
00:40:00.880 --> 00:40:01.400
<v Speaker 3>more efficient.

981
00:40:01.559 --> 00:40:05.400
<v Speaker 1>That's true because you're just directly poking the dom yep,

982
00:40:05.760 --> 00:40:06.880
<v Speaker 1>it's just dumb events.

983
00:40:07.079 --> 00:40:10.000
<v Speaker 2>Yeah, so yeah, that's cool.

984
00:40:10.440 --> 00:40:13.599
<v Speaker 1>Well, my calendar just told me that I have a

985
00:40:13.639 --> 00:40:15.679
<v Speaker 1>meeting for my day job here in like seven minutes.

986
00:40:15.719 --> 00:40:18.320
<v Speaker 1>So if people want to go check out data Star,

987
00:40:19.039 --> 00:40:20.679
<v Speaker 1>you said, is data da start dot debt.

988
00:40:21.079 --> 00:40:25.239
<v Speaker 2>Yep, that's the website. Go check it out. And then

989
00:40:25.760 --> 00:40:28.159
<v Speaker 2>you said there's a discord channel as well, and they're assuming.

990
00:40:27.840 --> 00:40:30.800
<v Speaker 3>Oh yeah, no, we have around twelve hundred users right now,

991
00:40:30.800 --> 00:40:31.719
<v Speaker 3>maybe a little bit more.

992
00:40:32.199 --> 00:40:34.039
<v Speaker 2>So, Yeah, it'site.

993
00:40:34.119 --> 00:40:37.119
<v Speaker 3>Yeah, yeah, you can enjoy. The discord is right on

994
00:40:37.159 --> 00:40:39.639
<v Speaker 3>the main page. Let us know if you have any questions.

995
00:40:39.679 --> 00:40:41.719
<v Speaker 3>But yeah, it works in every language, and if you

996
00:40:42.159 --> 00:40:43.800
<v Speaker 3>have questions, come holler at us.

997
00:40:43.800 --> 00:40:44.599
<v Speaker 2>We're happy to help you.

998
00:40:44.719 --> 00:40:47.920
<v Speaker 1>It's cool. Well, so we do have a segment at

999
00:40:47.920 --> 00:40:50.599
<v Speaker 1>the end of the show. It's called Picks, and we

1000
00:40:50.679 --> 00:40:52.679
<v Speaker 1>just shout out about stuff we like. So I'm going

1001
00:40:52.719 --> 00:40:54.480
<v Speaker 1>to jump in and I'll do some picks and then

1002
00:40:54.719 --> 00:40:56.519
<v Speaker 1>I'll let you do some picks. My first pick, I

1003
00:40:56.519 --> 00:40:59.000
<v Speaker 1>always do a board game. My wife and I we

1004
00:40:59.400 --> 00:41:02.719
<v Speaker 1>went on a trip. We had our twentieth anniversary in March,

1005
00:41:02.760 --> 00:41:05.320
<v Speaker 1>and we couldn't quite get out for the trip we wanted,

1006
00:41:05.360 --> 00:41:07.440
<v Speaker 1>and so we did it a week or so ago,

1007
00:41:07.519 --> 00:41:10.199
<v Speaker 1>right before the fourth of July. And one of the

1008
00:41:10.280 --> 00:41:12.880
<v Speaker 1>games that we've been playing. Some friends got it for us.

1009
00:41:12.960 --> 00:41:14.800
<v Speaker 1>We watched their kids while they went to a board

1010
00:41:14.800 --> 00:41:16.920
<v Speaker 1>game convention and they brought it back for us, and

1011
00:41:16.960 --> 00:41:19.000
<v Speaker 1>so we've been playing it. It's called gloom Haven Jaws

1012
00:41:19.000 --> 00:41:23.320
<v Speaker 1>of the Line. It's very good. Yeah, so they were

1013
00:41:23.360 --> 00:41:25.239
<v Speaker 1>telling us they've played all three of them. I guess

1014
00:41:25.320 --> 00:41:29.760
<v Speaker 1>there's gloom Haven, there's gloom Haven Jaws of av a prequel,

1015
00:41:29.800 --> 00:41:32.719
<v Speaker 1>and then frost Haven and so yeah, so this is

1016
00:41:32.719 --> 00:41:35.280
<v Speaker 1>our first foray into the gloom Haven world. I've played

1017
00:41:35.320 --> 00:41:37.840
<v Speaker 1>D and D before, but my wife really hadn't even

1018
00:41:37.840 --> 00:41:39.639
<v Speaker 1>done that. So we've been playing that and we're about

1019
00:41:39.639 --> 00:41:42.320
<v Speaker 1>halfway through the fourth scenario. That's the only complaint I

1020
00:41:42.360 --> 00:41:45.800
<v Speaker 1>had about it was that the scenario took longer than

1021
00:41:45.840 --> 00:41:46.760
<v Speaker 1>we had and so.

1022
00:41:46.800 --> 00:41:49.360
<v Speaker 2>We've kind of had to like move the whole table aside.

1023
00:41:49.840 --> 00:41:51.800
<v Speaker 2>We didn't want to take it down. But that said,

1024
00:41:51.880 --> 00:41:53.119
<v Speaker 2>it's been a lot of fun.

1025
00:41:53.159 --> 00:41:55.559
<v Speaker 1>So if you kind of like D and D and

1026
00:41:55.639 --> 00:41:58.800
<v Speaker 1>you you know, you don't need a dungeon Master game master.

1027
00:41:59.239 --> 00:42:01.599
<v Speaker 1>It just kind of that's the scenarios up and you

1028
00:42:01.639 --> 00:42:04.119
<v Speaker 1>follow the rules and you know, you fight the bad

1029
00:42:04.119 --> 00:42:07.119
<v Speaker 1>guys and complete the scenarios and it is.

1030
00:42:07.519 --> 00:42:09.440
<v Speaker 2>It is really fun and we've really fun.

1031
00:42:10.000 --> 00:42:12.840
<v Speaker 3>So I actually have a They have a Steam version

1032
00:42:12.880 --> 00:42:15.159
<v Speaker 3>just so you know that you can actually run as well.

1033
00:42:15.920 --> 00:42:18.199
<v Speaker 3>That's actually really solid, so you can get the Jaws

1034
00:42:18.199 --> 00:42:21.079
<v Speaker 3>of Lane stuff on that version as well.

1035
00:42:21.280 --> 00:42:22.760
<v Speaker 2>I'm a board game nerd as well.

1036
00:42:25.079 --> 00:42:28.840
<v Speaker 1>Yeah, my one of my daughter's friends is way into

1037
00:42:28.840 --> 00:42:31.440
<v Speaker 1>board games, and so she and her friends were over

1038
00:42:31.480 --> 00:42:35.159
<v Speaker 1>here and he wandered into our pantry where we have

1039
00:42:35.519 --> 00:42:38.599
<v Speaker 1>half the pantry full of board games and he was just, yeah,

1040
00:42:38.639 --> 00:42:40.800
<v Speaker 1>we have we have plenty and I get together with

1041
00:42:40.840 --> 00:42:42.480
<v Speaker 1>my buddies and we play every week.

1042
00:42:43.000 --> 00:42:47.639
<v Speaker 2>So yeah, anyway, so that that's a fun one. Uh.

1043
00:42:48.119 --> 00:42:51.239
<v Speaker 1>And then other picks. I just picked up some new microphones.

1044
00:42:51.280 --> 00:42:55.400
<v Speaker 1>I'm gonna grab the box. So these are the road

1045
00:42:55.559 --> 00:42:58.119
<v Speaker 1>if you're watching the video Wireless Pro. It has two

1046
00:42:58.199 --> 00:43:01.719
<v Speaker 1>receivers or two transmitters with the lapel mics and then

1047
00:43:01.760 --> 00:43:05.920
<v Speaker 1>a receiver and they're awesome. So gonna I'm gonna pick those.

1048
00:43:05.920 --> 00:43:10.199
<v Speaker 1>It's just gear. They're not cheap, but they're great. And yeah,

1049
00:43:10.400 --> 00:43:12.239
<v Speaker 1>I've been in this scenario where I needed to do

1050
00:43:12.400 --> 00:43:14.840
<v Speaker 1>more than two people with these, and so I also

1051
00:43:14.880 --> 00:43:16.639
<v Speaker 1>have a mixer that I bought for one hundred bucks

1052
00:43:16.639 --> 00:43:19.960
<v Speaker 1>off Amazon and that's been great, so really really happy

1053
00:43:20.000 --> 00:43:20.639
<v Speaker 1>with that stuff.

1054
00:43:20.800 --> 00:43:23.559
<v Speaker 2>I don't know if I have any other picks, but yeah,

1055
00:43:23.599 --> 00:43:27.119
<v Speaker 2>if you've got some ex sure I'll do two quick ones.

1056
00:43:27.320 --> 00:43:29.440
<v Speaker 2>There's a book that I've read multiple times.

1057
00:43:29.440 --> 00:43:31.519
<v Speaker 3>With a few books i've read multiple multiple times, but

1058
00:43:31.559 --> 00:43:33.639
<v Speaker 3>it's actually being turned into a movie, so I'd highly

1059
00:43:33.679 --> 00:43:35.119
<v Speaker 3>recommend reading the book first.

1060
00:43:35.199 --> 00:43:37.920
<v Speaker 2>I know what it is, Oh do you? I bet

1061
00:43:37.960 --> 00:43:40.199
<v Speaker 2>I know what it's going. Okay, let's go for it.

1062
00:43:40.239 --> 00:43:46.199
<v Speaker 2>Tell me is it Project tail Mary? Yeah, that's it's

1063
00:43:46.239 --> 00:43:48.239
<v Speaker 2>a great book. So excited for that.

1064
00:43:48.800 --> 00:43:52.559
<v Speaker 3>I hope they get Rocky right, So that's going to

1065
00:43:52.599 --> 00:43:54.480
<v Speaker 3>be a hard one, but it's a good team behind it,

1066
00:43:54.519 --> 00:43:56.119
<v Speaker 3>so I have high expectations.

1067
00:43:56.280 --> 00:43:58.159
<v Speaker 2>But it's a great book.

1068
00:43:58.599 --> 00:44:00.760
<v Speaker 3>And if you haven't read that, there's also another good

1069
00:44:00.760 --> 00:44:03.039
<v Speaker 3>one called Recursion that I just read that was a

1070
00:44:03.039 --> 00:44:06.519
<v Speaker 3>solid pick. I don't know the author, but quite or

1071
00:44:06.599 --> 00:44:08.199
<v Speaker 3>it's a big yellow front cover.

1072
00:44:08.360 --> 00:44:12.639
<v Speaker 2>It's an interesting book. So yeah, those are the books choices.

1073
00:44:12.679 --> 00:44:14.199
<v Speaker 3>And when it comes to it, if you did board games,

1074
00:44:14.400 --> 00:44:15.840
<v Speaker 3>I have to say that I've been kind of getting

1075
00:44:15.880 --> 00:44:18.719
<v Speaker 3>deep into the Arcs world I haven't done the whole

1076
00:44:18.960 --> 00:44:20.760
<v Speaker 3>campaign thing, but if you haven't heard of Arcs yet,

1077
00:44:20.840 --> 00:44:25.039
<v Speaker 3>it is a challenging, interesting board game of trying to

1078
00:44:25.079 --> 00:44:28.840
<v Speaker 3>control the uncontrollable. It's a very interesting take on it's

1079
00:44:29.199 --> 00:44:31.480
<v Speaker 3>technically I guess people take called a space game, but

1080
00:44:31.519 --> 00:44:34.239
<v Speaker 3>it's not really. It's it's not like Twilight Imperium or

1081
00:44:34.239 --> 00:44:37.199
<v Speaker 3>anything like that. It's a very interesting thing, especially with

1082
00:44:37.239 --> 00:44:40.840
<v Speaker 3>four players. So I would highly recommend looking at Arcs.

1083
00:44:41.039 --> 00:44:44.280
<v Speaker 3>I love to check it out. So Project Hail Mary,

1084
00:44:44.320 --> 00:44:46.119
<v Speaker 3>I think people are more familiar.

1085
00:44:45.679 --> 00:44:48.639
<v Speaker 1>With The Martian, which was another book that he wrote,

1086
00:44:49.079 --> 00:44:51.440
<v Speaker 1>and so it's the same author. I will say that

1087
00:44:51.480 --> 00:44:54.280
<v Speaker 1>I liked Project Hail Mary better than The Martian, so

1088
00:44:54.480 --> 00:44:58.199
<v Speaker 1>by far, yeah, easily it is a better book. So anyway,

1089
00:44:59.199 --> 00:45:04.159
<v Speaker 1>I'm super were excited. The second I saw the the trailer,

1090
00:45:04.199 --> 00:45:06.280
<v Speaker 1>I sent it to my wife and she, wait.

1091
00:45:06.119 --> 00:45:07.920
<v Speaker 2>There's a trailer. I haven't even seen the trailer.

1092
00:45:07.960 --> 00:45:14.199
<v Speaker 1>Yeah, yeah, yeah, yeah, and yeah, so she watched it.

1093
00:45:14.320 --> 00:45:17.000
<v Speaker 2>She's like, so, I'm like, you got to read the

1094
00:45:17.039 --> 00:45:17.480
<v Speaker 2>book first.

1095
00:45:17.559 --> 00:45:20.000
<v Speaker 3>Well, in fact, that the Recursion book was a recommendation

1096
00:45:20.079 --> 00:45:22.280
<v Speaker 3>from anywhere saying hey, what books do you what are

1097
00:45:22.280 --> 00:45:24.599
<v Speaker 3>you reading that you think are interesting, and he recommended

1098
00:45:24.599 --> 00:45:26.920
<v Speaker 3>the Recursion one, and I was like, I was like, yeah,

1099
00:45:26.960 --> 00:45:28.320
<v Speaker 3>it's actually a pretty solid book.

1100
00:45:28.400 --> 00:45:32.559
<v Speaker 2>It's very interesting take. So yeah, I highly recommend taking out.

1101
00:45:32.599 --> 00:45:34.519
<v Speaker 2>Now have to go watch the trailer, I apparent last.

1102
00:45:35.000 --> 00:45:37.599
<v Speaker 1>Yeah, I had just gotten off of a terry goodkind

1103
00:45:38.119 --> 00:45:40.960
<v Speaker 1>binge doing all the sort of truth books, and so

1104
00:45:41.079 --> 00:45:42.719
<v Speaker 1>I wanted kind of a different pace.

1105
00:45:42.880 --> 00:45:43.039
<v Speaker 2>You know.

1106
00:45:43.119 --> 00:45:46.639
<v Speaker 1>It's like, Okay, I've kind of taken on a ton

1107
00:45:46.679 --> 00:45:49.079
<v Speaker 1>of this, Like I read everything that Brandon Sanderson writes,

1108
00:45:49.559 --> 00:45:52.760
<v Speaker 1>but I can only do like five or six of

1109
00:45:52.800 --> 00:45:54.760
<v Speaker 1>his books, and it's like, okay, I got to cleanse

1110
00:45:54.800 --> 00:45:56.800
<v Speaker 1>the palette with something else, right.

1111
00:45:56.800 --> 00:45:59.000
<v Speaker 2>So so that that's what this was. You know.

1112
00:45:59.079 --> 00:46:01.400
<v Speaker 1>I saw the the trailer and then I just started

1113
00:46:01.440 --> 00:46:02.639
<v Speaker 1>listening to that one on audible.

1114
00:46:03.280 --> 00:46:03.880
<v Speaker 2>Yeah.

1115
00:46:03.960 --> 00:46:05.599
<v Speaker 3>It's actually one of the few books that you really

1116
00:46:05.599 --> 00:46:07.760
<v Speaker 3>want to listen to it. It's a great as an

1117
00:46:07.760 --> 00:46:10.039
<v Speaker 3>audible because they actually do the voices. I can't go

1118
00:46:10.119 --> 00:46:13.440
<v Speaker 3>without spoiling things. It's really good as an audiobook, I'll say.

1119
00:46:14.000 --> 00:46:19.360
<v Speaker 1>Yeah, yeah, the vocals with Rocky in particular, Yeah, all right,

1120
00:46:19.400 --> 00:46:21.599
<v Speaker 1>good deal. Well let's go ahead and wrap this up

1121
00:46:21.639 --> 00:46:23.800
<v Speaker 1>so that I'm not late for my meeting. I'm arguing

1122
00:46:23.920 --> 00:46:26.039
<v Speaker 1>for my meeting, but this was a ton of fun.

1123
00:46:26.360 --> 00:46:28.320
<v Speaker 1>Definitely something I want to go check out. If people

1124
00:46:28.320 --> 00:46:29.920
<v Speaker 1>want to follow you on the internet, where do they

1125
00:46:29.960 --> 00:46:30.320
<v Speaker 1>find you?

1126
00:46:31.119 --> 00:46:31.719
<v Speaker 2>Data started?

1127
00:46:31.960 --> 00:46:34.559
<v Speaker 3>I'm on Twitter? Is Delaney Gillilan. I know it's kind

1128
00:46:34.559 --> 00:46:35.760
<v Speaker 3>of hard to say, but if you look for data

1129
00:46:35.760 --> 00:46:39.039
<v Speaker 3>star you'll find me. Really, don't be interested in me,

1130
00:46:39.079 --> 00:46:41.079
<v Speaker 3>there's nothing interesting going on there, but I will say

1131
00:46:41.679 --> 00:46:43.000
<v Speaker 3>data star has.

1132
00:46:42.880 --> 00:46:45.360
<v Speaker 2>An interesting community. Now, so come join all

1133
00:46:45.440 --> 00:46:47.920
<v Speaker 1>Right, folks, Well we'll wrap up and until next time,

1134
00:46:48.199 --> 00:46:48.760
<v Speaker 1>max out
