WEBVTT

1
00:00:04.919 --> 00:00:09.080
<v Speaker 1>Welcome back to another episode of JavaScript Jabber. This week,

2
00:00:09.119 --> 00:00:10.759
<v Speaker 1>on our panel, we have Dan Shapire.

3
00:00:11.599 --> 00:00:15.720
<v Speaker 2>Hello from a freezing wintry tel Aviv, sixty degrees fahrenheit.

4
00:00:16.039 --> 00:00:17.199
<v Speaker 3>Thank you for rubbing that in.

5
00:00:17.960 --> 00:00:20.120
<v Speaker 1>I know, I think it's below freezing here. We also

6
00:00:20.120 --> 00:00:21.440
<v Speaker 1>have Steve Edwards.

7
00:00:21.719 --> 00:00:24.679
<v Speaker 3>Yo yo yo, coming at you from a slightly warmer

8
00:00:24.800 --> 00:00:27.440
<v Speaker 3>now Oregon, where we really need snow.

9
00:00:29.120 --> 00:00:33.759
<v Speaker 1>Yeah. Also, Steve, word is that you are currently looking

10
00:00:33.759 --> 00:00:35.439
<v Speaker 1>for a Laravelle view job.

11
00:00:35.840 --> 00:00:37.840
<v Speaker 3>Yes, something slnes would be nice.

12
00:00:39.119 --> 00:00:41.000
<v Speaker 1>All right, So if you want to hire a Steve,

13
00:00:42.679 --> 00:00:43.479
<v Speaker 1>get a hold of him.

14
00:00:45.039 --> 00:00:46.840
<v Speaker 3>This particular Steve would be nice.

15
00:00:47.200 --> 00:00:50.560
<v Speaker 1>That's right. Do you want to put like contact information

16
00:00:50.640 --> 00:00:51.039
<v Speaker 1>out there?

17
00:00:52.960 --> 00:00:53.159
<v Speaker 4>Yeah?

18
00:00:53.159 --> 00:00:55.039
<v Speaker 3>I was gonna wait till shameless plugs at the end,

19
00:00:55.079 --> 00:00:58.000
<v Speaker 3>but yeah, you can my infos on my GitHub at

20
00:00:58.039 --> 00:01:03.359
<v Speaker 3>Wonder nine to five, same handle for Twitter. It was

21
00:01:03.359 --> 00:01:05.200
<v Speaker 3>probably the best way to get old Steve at s

22
00:01:05.359 --> 00:01:06.799
<v Speaker 3>mg a web dot com.

23
00:01:08.000 --> 00:01:09.920
<v Speaker 1>Cool. I just want to make sure that yeah, people

24
00:01:09.959 --> 00:01:11.480
<v Speaker 1>hear it and they can reach you if they need to.

25
00:01:12.239 --> 00:01:16.200
<v Speaker 1>I'm Charles Maxwood from Top End Devs And this week

26
00:01:16.280 --> 00:01:18.760
<v Speaker 1>we have a special guest. We have Matteo Colina.

27
00:01:19.519 --> 00:01:24.599
<v Speaker 5>Hello, I folks, Hey, Hi from for Lee Italy. It's

28
00:01:24.719 --> 00:01:28.040
<v Speaker 5>been a rainy day here and I'm staying it home.

29
00:01:28.760 --> 00:01:33.719
<v Speaker 1>I didn't know you. I've been to for Lee.

30
00:01:34.079 --> 00:01:36.799
<v Speaker 4>Really like not you won't even know that is where

31
00:01:36.799 --> 00:01:37.680
<v Speaker 4>he's on the map.

32
00:01:39.840 --> 00:01:44.439
<v Speaker 1>Yeah, Pasatoduani in Italia. I was a missionary in Italy

33
00:01:44.480 --> 00:01:47.400
<v Speaker 1>and yeah, so I've been to for Lee and Remini

34
00:01:47.439 --> 00:01:50.560
<v Speaker 1>and wow, I lived in Oncona for like six months

35
00:01:50.599 --> 00:01:53.359
<v Speaker 1>so yeah, wow, Oh so you know.

36
00:01:53.840 --> 00:01:56.319
<v Speaker 2>And we and we, my wife and I passed really

37
00:01:56.359 --> 00:02:00.280
<v Speaker 2>close by just when Matteo happened to be in London. Yes,

38
00:02:00.560 --> 00:02:02.879
<v Speaker 2>so we unfortunately kind of missed each other.

39
00:02:03.719 --> 00:02:05.719
<v Speaker 4>That would been a rag.

40
00:02:06.000 --> 00:02:11.759
<v Speaker 5>But my calendar these days during conferences and is close

41
00:02:11.800 --> 00:02:12.439
<v Speaker 5>to a nightmare.

42
00:02:13.159 --> 00:02:15.360
<v Speaker 2>Well, all I can say is will probably be in

43
00:02:15.400 --> 00:02:19.439
<v Speaker 2>Italy again because we love Italy, and next time hopefully

44
00:02:19.479 --> 00:02:21.319
<v Speaker 2>we'll be able to actually meet.

45
00:02:23.800 --> 00:02:26.080
<v Speaker 1>Yeah, I would love to go back. We had a

46
00:02:26.120 --> 00:02:28.879
<v Speaker 1>foreign exchange student who also lives in Oncona and so

47
00:02:29.240 --> 00:02:32.879
<v Speaker 1>we'd like to see her and her baby. So anyway,

48
00:02:33.879 --> 00:02:36.680
<v Speaker 1>what are we talking about that's not travel tech or

49
00:02:37.280 --> 00:02:38.479
<v Speaker 1>Steve needs a job.

50
00:02:39.599 --> 00:02:42.280
<v Speaker 5>Today we're talking a little bit about the latest thing

51
00:02:42.599 --> 00:02:48.360
<v Speaker 5>in platformatic my company, and not j yes, I think

52
00:02:49.719 --> 00:02:53.080
<v Speaker 5>maybe with some ais pist in it, because you know,

53
00:02:53.120 --> 00:02:54.199
<v Speaker 5>everything is AI today.

54
00:02:54.319 --> 00:02:56.919
<v Speaker 2>Yeah, a lot of our listeners may not be familiar

55
00:02:56.919 --> 00:03:00.039
<v Speaker 2>with Platformatic, but I think that if you're doing a

56
00:03:00.199 --> 00:03:03.000
<v Speaker 2>think with notes, there's a good chance that you're probably

57
00:03:03.080 --> 00:03:05.240
<v Speaker 2>using at least one thing from Platformatic.

58
00:03:05.479 --> 00:03:08.960
<v Speaker 5>Like it's absolutely at this point, I think you're using

59
00:03:09.000 --> 00:03:13.800
<v Speaker 5>something from from Platformatic close to one hundred percent. Okay,

60
00:03:14.000 --> 00:03:19.879
<v Speaker 5>it's as I say, last year, I touched forty two

61
00:03:20.240 --> 00:03:24.599
<v Speaker 5>a billion downloads on NPM some some some impossible numbers

62
00:03:24.639 --> 00:03:24.919
<v Speaker 5>like that.

63
00:03:25.599 --> 00:03:27.520
<v Speaker 4>So this is the state.

64
00:03:28.960 --> 00:03:31.800
<v Speaker 2>So like every man, woman and child on this planet

65
00:03:31.919 --> 00:03:36.000
<v Speaker 2>is downloading stuff on Platformatic like ten times a year.

66
00:03:36.039 --> 00:03:36.800
<v Speaker 4>I have no idea.

67
00:03:36.879 --> 00:03:40.960
<v Speaker 5>Yeah, at this point, it's it's it's it's it's everywhere.

68
00:03:41.039 --> 00:03:44.879
<v Speaker 5>As I say, I am in everybody Dependency three.

69
00:03:45.360 --> 00:03:47.280
<v Speaker 4>So I am the Nebraska man. I'm joking.

70
00:03:51.280 --> 00:03:53.240
<v Speaker 1>Okay, I thought it was just your mom over there

71
00:03:53.360 --> 00:03:55.280
<v Speaker 1>NPM installed Platformatic stuff.

72
00:03:55.479 --> 00:03:57.639
<v Speaker 4>Look, that can be possible. You know.

73
00:03:58.000 --> 00:04:01.280
<v Speaker 5>I fixed that laptop for for christ So that was

74
00:04:01.280 --> 00:04:01.680
<v Speaker 5>the gift.

75
00:04:02.280 --> 00:04:02.800
<v Speaker 1>There you go.

76
00:04:04.039 --> 00:04:06.039
<v Speaker 5>So it's the one time over the over the year

77
00:04:06.120 --> 00:04:10.680
<v Speaker 5>that somebody can ask me to fix a computer over Christmas.

78
00:04:11.680 --> 00:04:12.400
<v Speaker 3>The tech support.

79
00:04:13.680 --> 00:04:17.680
<v Speaker 5>It's it's it's it's something that everybody does. So so

80
00:04:17.800 --> 00:04:22.639
<v Speaker 5>true talking about things we have since the last time

81
00:04:22.759 --> 00:04:27.519
<v Speaker 5>was year so what we have released a few benchmarks

82
00:04:27.560 --> 00:04:34.319
<v Speaker 5>okay that I think are pretty relevant for everybody to

83
00:04:35.399 --> 00:04:38.399
<v Speaker 5>look at. So let me just get them and so

84
00:04:38.439 --> 00:04:43.120
<v Speaker 5>that we can discuss them. I'm going to pass them.

85
00:04:43.040 --> 00:04:46.199
<v Speaker 2>While you do. I was. I want to emphasize that

86
00:04:46.240 --> 00:04:51.199
<v Speaker 2>while I was obviously somewhat kidding before, it is absolutely

87
00:04:51.240 --> 00:04:53.759
<v Speaker 2>true that I kind of considue you to be sort

88
00:04:53.759 --> 00:04:57.360
<v Speaker 2>of mister no JS, especially now that Ryan Dalla has

89
00:04:57.439 --> 00:04:58.920
<v Speaker 2>moved on to other things.

90
00:04:59.800 --> 00:05:05.519
<v Speaker 5>H It's well, I have been since this summer. I've

91
00:05:05.560 --> 00:05:09.560
<v Speaker 5>been nominated the chair of the no JS project. So wow,

92
00:05:10.120 --> 00:05:13.240
<v Speaker 5>I am effectively running the thing.

93
00:05:14.720 --> 00:05:17.560
<v Speaker 2>Wow. I didn't even know that. Wow, that's pretty.

94
00:05:17.439 --> 00:05:23.399
<v Speaker 5>It's an honor. Let's put it this way. It's an honor.

95
00:05:23.560 --> 00:05:26.439
<v Speaker 2>Yeah, we talked about it slightly before we started the

96
00:05:26.480 --> 00:05:30.959
<v Speaker 2>show officially that I'm I'm you know, Node is not new,

97
00:05:31.399 --> 00:05:35.560
<v Speaker 2>obviously it's been around for a while, but I'm I'm

98
00:05:35.639 --> 00:05:41.199
<v Speaker 2>seeing Node usage actually increasing. A lot of organizations that

99
00:05:41.240 --> 00:05:44.360
<v Speaker 2>have previously been using other technologies for the back end

100
00:05:45.040 --> 00:05:48.879
<v Speaker 2>are adopting Node as their go to technology for back

101
00:05:49.000 --> 00:05:52.279
<v Speaker 2>end stuff. I don't know if it's because of the

102
00:05:52.399 --> 00:05:57.480
<v Speaker 2>Lambda functions and stuff like that, or it's because you know,

103
00:05:57.600 --> 00:06:02.920
<v Speaker 2>all the meta framework out there, Next JS and ten

104
00:06:03.000 --> 00:06:06.319
<v Speaker 2>stack and whatnot. I don't know. Maybe it's like everything together,

105
00:06:06.879 --> 00:06:11.560
<v Speaker 2>but I'm definitely seeing no JS technology usage pickup a

106
00:06:11.560 --> 00:06:15.040
<v Speaker 2>lot of companies. Like I was speaking at this conference

107
00:06:15.079 --> 00:06:18.839
<v Speaker 2>in Israel, and like every company that I was talking

108
00:06:18.879 --> 00:06:22.240
<v Speaker 2>to was doing something with no JS on the back end.

109
00:06:23.240 --> 00:06:26.800
<v Speaker 5>Yeah, it's everywhere, Okay, right now, if you want to

110
00:06:26.800 --> 00:06:28.879
<v Speaker 5>build anything for the Web, you're using Note.

111
00:06:29.399 --> 00:06:32.959
<v Speaker 4>If you're not using Note, you are probably.

112
00:06:32.560 --> 00:06:36.839
<v Speaker 5>On a minority, and it's it might be good to

113
00:06:36.839 --> 00:06:40.319
<v Speaker 5>be in a minority. But the mainstream stack right now

114
00:06:41.160 --> 00:06:45.480
<v Speaker 5>is something React based plus no JS on the server.

115
00:06:48.079 --> 00:06:51.560
<v Speaker 1>And I'm in the minority me too, I know.

116
00:06:52.000 --> 00:06:58.199
<v Speaker 4>But you're probably using View. I've heard okay, Laravel Lvl, I.

117
00:06:58.160 --> 00:07:00.720
<v Speaker 5>Would I would wonder, Okay, this is a how do

118
00:07:00.759 --> 00:07:03.800
<v Speaker 5>you do server side rendering with view on Laavo.

119
00:07:04.879 --> 00:07:05.600
<v Speaker 1>If you use.

120
00:07:05.879 --> 00:07:09.319
<v Speaker 3>Inertia JS, which is something I'm a big fan of

121
00:07:09.360 --> 00:07:13.160
<v Speaker 3>and I've talked about ad nauseum probably on here. Inertia

122
00:07:13.199 --> 00:07:15.680
<v Speaker 3>has a service side rending capability. If you're using View

123
00:07:15.720 --> 00:07:18.560
<v Speaker 3>with something like nuxt, it also has server side rending capability.

124
00:07:18.759 --> 00:07:21.600
<v Speaker 4>Yeah, but then it's node right correct.

125
00:07:21.800 --> 00:07:24.399
<v Speaker 3>Okay, point well, you asked how to do with view,

126
00:07:24.519 --> 00:07:25.600
<v Speaker 3>so that's how No.

127
00:07:25.600 --> 00:07:27.879
<v Speaker 4>No, But it's say with knox is node.

128
00:07:28.079 --> 00:07:28.240
<v Speaker 2>Yes.

129
00:07:29.480 --> 00:07:33.000
<v Speaker 5>Is the inertia not no, not JavaScript running somewhere.

130
00:07:33.240 --> 00:07:37.000
<v Speaker 3>Inertia is real quick. Is basically a glue layer between

131
00:07:37.000 --> 00:07:38.399
<v Speaker 3>your front and your back end that allows you to

132
00:07:38.399 --> 00:07:41.959
<v Speaker 3>plug and play. So you could use View with Ruby,

133
00:07:42.000 --> 00:07:44.959
<v Speaker 3>with Laravel, with Node, you could use you So you

134
00:07:44.959 --> 00:07:48.160
<v Speaker 3>could use viewsvelt react Angular on the front end, and

135
00:07:48.240 --> 00:07:53.560
<v Speaker 3>you could use laravl Node, Ruby on the back end

136
00:07:54.160 --> 00:07:59.199
<v Speaker 3>in any combination. So it's just it's crazy fast. I

137
00:07:59.240 --> 00:08:01.879
<v Speaker 3>have an application that I've built and maintained for a while,

138
00:08:01.879 --> 00:08:04.600
<v Speaker 3>and it's just amazing how fast it is. It basically

139
00:08:04.720 --> 00:08:09.519
<v Speaker 3>sort of hijacks the post request and the browser doesn't

140
00:08:09.519 --> 00:08:11.920
<v Speaker 3>do a full reload. You passes some headers that tell it,

141
00:08:11.920 --> 00:08:14.639
<v Speaker 3>hey don't do a full Perial railroad and communication between

142
00:08:14.639 --> 00:08:17.759
<v Speaker 3>the two point being, to answer your question, if you

143
00:08:17.839 --> 00:08:21.279
<v Speaker 3>go with inertia, there's service any capability.

144
00:08:21.360 --> 00:08:23.439
<v Speaker 5>So if I want to do a Larrabell and view.

145
00:08:23.480 --> 00:08:26.279
<v Speaker 5>Then I can do that like I am seeing. Okay,

146
00:08:26.319 --> 00:08:28.199
<v Speaker 5>to be clear, I'm looking. I opened it up in

147
00:08:28.240 --> 00:08:30.240
<v Speaker 5>a second and I'm showing me some not js.

148
00:08:33.879 --> 00:08:37.080
<v Speaker 3>On Well, it's possible. I haven't used.

149
00:08:37.039 --> 00:08:39.399
<v Speaker 5>It's like it's the way to do these kind of

150
00:08:39.440 --> 00:08:42.799
<v Speaker 5>things typically is there is some no JS little notes

151
00:08:42.879 --> 00:08:45.200
<v Speaker 5>thing running and doing the job.

152
00:08:45.279 --> 00:08:45.720
<v Speaker 4>I don't know.

153
00:08:45.799 --> 00:08:50.759
<v Speaker 5>It somewhere, okay, because in the problem is that with

154
00:08:50.879 --> 00:08:54.919
<v Speaker 5>modern front and frameworks you need the areizomorphic. So you

155
00:08:55.039 --> 00:08:57.639
<v Speaker 5>have the same Java skipt code that runs on the

156
00:08:57.639 --> 00:08:59.600
<v Speaker 5>front and on the back end, and in order to

157
00:08:59.639 --> 00:09:03.960
<v Speaker 5>do some side rendering you have to render it on

158
00:09:03.960 --> 00:09:04.559
<v Speaker 5>on the back.

159
00:09:05.000 --> 00:09:05.559
<v Speaker 4>Okay.

160
00:09:05.799 --> 00:09:08.360
<v Speaker 1>So jovscripture on time on the back end.

161
00:09:08.559 --> 00:09:10.240
<v Speaker 4>And you need a Java sleap run time on the

162
00:09:10.240 --> 00:09:11.840
<v Speaker 4>back okay to.

163
00:09:11.840 --> 00:09:13.960
<v Speaker 3>Do this it's underneath. Yeah, okay, I get you.

164
00:09:14.159 --> 00:09:15.559
<v Speaker 4>So this is why I'm saying.

165
00:09:15.559 --> 00:09:17.320
<v Speaker 5>This is the point of there is always some no

166
00:09:17.440 --> 00:09:21.120
<v Speaker 5>JS everywhere in in In.

167
00:09:21.120 --> 00:09:23.840
<v Speaker 2>And then kind and then PLATFORMA. They kind of flipped

168
00:09:23.840 --> 00:09:26.919
<v Speaker 2>the script there where you kind of put WordPress and

169
00:09:27.000 --> 00:09:28.960
<v Speaker 2>Narvel on top of note or something.

170
00:09:30.360 --> 00:09:33.399
<v Speaker 5>Yes, So last last year we shaped a few experiments.

171
00:09:33.799 --> 00:09:37.639
<v Speaker 5>We were able to run full pitchp inside no JS.

172
00:09:38.840 --> 00:09:42.480
<v Speaker 5>It works really well. It's actually very performant, to be honest.

173
00:09:43.159 --> 00:09:49.360
<v Speaker 5>So there is literally nothing stopped that kind of those

174
00:09:49.440 --> 00:09:55.159
<v Speaker 5>kind of deployments. But it's let's see what the market says,

175
00:09:55.279 --> 00:09:58.720
<v Speaker 5>and if there is, if they are attractive for the market,

176
00:09:58.799 --> 00:10:00.679
<v Speaker 5>we will keep for showing those.

177
00:10:01.360 --> 00:10:03.120
<v Speaker 2>Is it raging or something?

178
00:10:03.519 --> 00:10:04.519
<v Speaker 4>No binaries.

179
00:10:05.120 --> 00:10:09.000
<v Speaker 5>It is the actual PHP right high from the operating system.

180
00:10:09.159 --> 00:10:11.120
<v Speaker 5>It's the same thing. It's it's the same hooks that

181
00:10:11.120 --> 00:10:11.879
<v Speaker 5>the patchy uses.

182
00:10:12.919 --> 00:10:17.240
<v Speaker 2>Hm hmm, Okay, now I understand what you're doing. That's interesting.

183
00:10:19.360 --> 00:10:22.399
<v Speaker 1>So we were talking about benchmarking. Does how does this

184
00:10:22.519 --> 00:10:23.080
<v Speaker 1>tie back in?

185
00:10:23.440 --> 00:10:30.039
<v Speaker 5>Yeah, so we've been doing this is the benchmarks. Okay,

186
00:10:30.360 --> 00:10:32.720
<v Speaker 5>we've done a few. I just wanted to point out

187
00:10:32.919 --> 00:10:38.519
<v Speaker 5>chew one is and let's see where the chat is.

188
00:10:38.559 --> 00:10:40.600
<v Speaker 5>Here is a chat.

189
00:10:41.679 --> 00:10:43.919
<v Speaker 1>Yeah, there's a chat. It's on the right. It's got

190
00:10:43.919 --> 00:10:44.759
<v Speaker 1>a little chat bubble.

191
00:10:44.799 --> 00:10:46.600
<v Speaker 4>Okay, here we go. I'm passing in the chat. So

192
00:10:46.679 --> 00:10:48.879
<v Speaker 4>this is one. I am passing it.

193
00:10:49.200 --> 00:10:57.639
<v Speaker 5>The second one that we have done, and then I

194
00:10:57.679 --> 00:10:58.559
<v Speaker 5>have a few more.

195
00:10:58.399 --> 00:10:59.080
<v Speaker 4>To talk about.

196
00:10:59.240 --> 00:11:02.519
<v Speaker 5>So the first one is we've done last year. It's

197
00:11:02.559 --> 00:11:08.799
<v Speaker 5>a benchmark showing next JS performance. Okay, under very high traffic.

198
00:11:09.919 --> 00:11:13.279
<v Speaker 5>So for Next, yes, so what happened, What is happening

199
00:11:13.600 --> 00:11:20.759
<v Speaker 5>is we have done a lot of tests, okay, and

200
00:11:21.440 --> 00:11:25.519
<v Speaker 5>it's with a lot of tests for example, with one

201
00:11:25.519 --> 00:11:29.360
<v Speaker 5>thousand requests on per second for I mean, for a

202
00:11:29.399 --> 00:11:36.440
<v Speaker 5>couple of minutes on against next JS and those were

203
00:11:36.519 --> 00:11:37.919
<v Speaker 5>hitting essentially saturation.

204
00:11:38.039 --> 00:11:39.320
<v Speaker 4>This was a hellower page.

205
00:11:39.720 --> 00:11:40.039
<v Speaker 1>Okay.

206
00:11:40.519 --> 00:11:45.559
<v Speaker 5>It's very normal for your system to go to if

207
00:11:45.600 --> 00:11:48.840
<v Speaker 5>you're using Next or a React based server side system,

208
00:11:49.120 --> 00:11:53.840
<v Speaker 5>to go between eight twenty, between eight and twenty maybe

209
00:11:53.919 --> 00:11:55.559
<v Speaker 5>fifty requests per second at.

210
00:11:55.440 --> 00:11:56.720
<v Speaker 4>Best, okay.

211
00:11:56.759 --> 00:11:59.279
<v Speaker 5>If you have a very complex system like it's low

212
00:11:59.559 --> 00:12:05.720
<v Speaker 5>okay in the genetic terms of things, okay. So the

213
00:12:06.039 --> 00:12:12.919
<v Speaker 5>critical point okay of this was the success rate, but

214
00:12:13.039 --> 00:12:16.159
<v Speaker 5>more important in the latency okay. The latency for this

215
00:12:16.279 --> 00:12:19.320
<v Speaker 5>kind of system is very bad okay. And this is

216
00:12:19.360 --> 00:12:25.320
<v Speaker 5>affecting a lot of companies out there, okay. And a

217
00:12:25.360 --> 00:12:32.519
<v Speaker 5>good chunk of that problem is due to our scheduling

218
00:12:32.639 --> 00:12:39.679
<v Speaker 5>is done of of multiple parts in kubernets okay, round robin. Unfortunately,

219
00:12:39.799 --> 00:12:43.279
<v Speaker 5>it's it's not the best algorithm most of the time, okay,

220
00:12:44.399 --> 00:12:49.360
<v Speaker 5>But the one that's the one we have. And last,

221
00:12:49.360 --> 00:12:53.200
<v Speaker 5>but not least, there is the problem of event look blocking.

222
00:12:53.799 --> 00:12:55.360
<v Speaker 4>Event look blocking it's critical.

223
00:12:56.039 --> 00:12:58.240
<v Speaker 5>So if the if the event look blocks, then know

224
00:12:59.000 --> 00:13:06.679
<v Speaker 5>the system becomes responsive after this, So it's it's it's problematic.

225
00:13:07.039 --> 00:13:10.200
<v Speaker 2>But then the whole thing about note that the event

226
00:13:10.320 --> 00:13:12.960
<v Speaker 2>loup is kind of never supposed to be blocked.

227
00:13:14.600 --> 00:13:22.039
<v Speaker 4>Well, tell that to all the developers using React, like,

228
00:13:22.320 --> 00:13:26.000
<v Speaker 4>that's the absolutely, that's the world point the idea. Yeah,

229
00:13:26.120 --> 00:13:26.919
<v Speaker 4>that's the idea.

230
00:13:27.600 --> 00:13:35.159
<v Speaker 5>But reacts over side rendering is super expensive, okay, and

231
00:13:36.320 --> 00:13:37.840
<v Speaker 5>it's super expensive.

232
00:13:37.759 --> 00:13:42.200
<v Speaker 2>So yeah, a lot of string operations and stuff.

233
00:13:42.720 --> 00:13:45.559
<v Speaker 5>No, it's a massive So basically what React does It

234
00:13:45.600 --> 00:13:48.799
<v Speaker 5>creates a full virtual dam of all the elements in

235
00:13:48.840 --> 00:13:51.480
<v Speaker 5>the page and then it stringifies that and you need

236
00:13:51.519 --> 00:13:54.960
<v Speaker 5>to walk through a massive tree for every request.

237
00:13:55.080 --> 00:13:58.120
<v Speaker 4>So this create a massive pressure on the GC as.

238
00:13:58.039 --> 00:14:01.399
<v Speaker 5>Well as the computational cost of a locating of stringifying

239
00:14:01.399 --> 00:14:02.320
<v Speaker 5>all of those elements.

240
00:14:02.639 --> 00:14:06.559
<v Speaker 2>That's really unfortunate given that it then immediately discards that

241
00:14:06.759 --> 00:14:09.480
<v Speaker 2>entire virtual dome exactly.

242
00:14:10.480 --> 00:14:13.279
<v Speaker 4>You know why I've been a pretty like there is.

243
00:14:13.679 --> 00:14:16.200
<v Speaker 5>The only framework that does better is solid I think

244
00:14:16.440 --> 00:14:18.279
<v Speaker 5>is significantly better on the topic.

245
00:14:18.440 --> 00:14:22.000
<v Speaker 2>Okay, maybe because it doesn't have a virtual dome.

246
00:14:23.360 --> 00:14:28.919
<v Speaker 4>This is a good point. This is actually a good point.

247
00:14:29.120 --> 00:14:34.600
<v Speaker 5>Okay, And yeah, so the word point of note is

248
00:14:34.639 --> 00:14:39.639
<v Speaker 5>not blocking the end loop and I can really subscribe

249
00:14:39.679 --> 00:14:43.600
<v Speaker 5>to that sentence. Okay, So to the point, so to

250
00:14:43.639 --> 00:14:47.519
<v Speaker 5>the point that if the event look blocks for a

251
00:14:47.559 --> 00:14:51.600
<v Speaker 5>long time, it's better to kill that node process and

252
00:14:51.639 --> 00:14:57.000
<v Speaker 5>start a fresh one up because keeping that running is useless.

253
00:14:57.799 --> 00:15:02.679
<v Speaker 2>Yeah, if you're going to be doing really significant GC,

254
00:15:04.000 --> 00:15:07.600
<v Speaker 2>then why I mean, just you know, I'm reminded of

255
00:15:07.679 --> 00:15:13.240
<v Speaker 2>what the Apache I think the approach was about, like

256
00:15:13.480 --> 00:15:19.039
<v Speaker 2>managing like the heap in in like sort of chunks

257
00:15:19.039 --> 00:15:21.759
<v Speaker 2>and then discarding the entire chunk rather than trying to

258
00:15:21.759 --> 00:15:23.200
<v Speaker 2>do fun grain GC.

259
00:15:24.519 --> 00:15:28.960
<v Speaker 5>Well, it's to some extent is relatively similar what we

260
00:15:28.960 --> 00:15:31.799
<v Speaker 5>are doing. So with what or not just application server

261
00:15:32.919 --> 00:15:35.600
<v Speaker 5>we have based on this on this thing, we can

262
00:15:35.679 --> 00:15:37.919
<v Speaker 5>monitor the state of the event loop from the outside

263
00:15:38.320 --> 00:15:42.080
<v Speaker 5>and if you detect it, it is totally blocked. Nothing comes true,

264
00:15:42.120 --> 00:15:44.440
<v Speaker 5>nothing is going to come through. We just shut the

265
00:15:44.720 --> 00:15:48.799
<v Speaker 5>shut the thing down. So and because we can, we

266
00:15:48.879 --> 00:15:52.039
<v Speaker 5>shut the thing down and we started from and restart,

267
00:15:52.240 --> 00:15:57.120
<v Speaker 5>we can essentially recover a really broken pad back to

268
00:15:57.240 --> 00:15:59.240
<v Speaker 5>life and let some traffic pass through.

269
00:15:59.480 --> 00:16:04.159
<v Speaker 2>So the basic idea is saying, instead of trying to

270
00:16:04.240 --> 00:16:08.879
<v Speaker 2>do this really really complex GCS at a high frequency,

271
00:16:09.000 --> 00:16:12.919
<v Speaker 2>because of all the incoming requests, every once in a while,

272
00:16:13.039 --> 00:16:15.679
<v Speaker 2>just kill the pod and start fresh.

273
00:16:15.720 --> 00:16:18.559
<v Speaker 5>Well, it's when the event will be is blocked. So

274
00:16:18.759 --> 00:16:22.120
<v Speaker 5>it's literally like when there are too many like. The

275
00:16:22.159 --> 00:16:24.200
<v Speaker 5>problem is also that there are all those requests are

276
00:16:24.200 --> 00:16:28.399
<v Speaker 5>piling up to be processed and after five seconds it's

277
00:16:28.440 --> 00:16:28.919
<v Speaker 5>no point.

278
00:16:29.600 --> 00:16:32.440
<v Speaker 4>There's no point in processing them. You' just abort them.

279
00:16:32.759 --> 00:16:36.240
<v Speaker 2>And it's because of the GC, because of the virtual dome.

280
00:16:36.279 --> 00:16:37.399
<v Speaker 4>It's all of both of them.

281
00:16:37.840 --> 00:16:40.879
<v Speaker 5>It's it's a very it's a very superre intensive operation,

282
00:16:41.080 --> 00:16:42.039
<v Speaker 5>especially with a lot.

283
00:16:41.879 --> 00:16:47.440
<v Speaker 2>Of interesting You would think that they would have figured

284
00:16:47.440 --> 00:16:50.840
<v Speaker 2>it out a way to offload it to workers.

285
00:16:50.440 --> 00:16:52.639
<v Speaker 4>Or something, which is what we did.

286
00:16:53.440 --> 00:16:55.639
<v Speaker 2>Is that a different thing or the no.

287
00:16:55.840 --> 00:17:00.480
<v Speaker 5>So basically with what we can have multiple workers listening

288
00:17:00.519 --> 00:17:05.200
<v Speaker 5>to the same socket so that you can do the

289
00:17:05.240 --> 00:17:08.200
<v Speaker 5>load balancing easier. It's very similar to say, oh, it

290
00:17:08.240 --> 00:17:11.799
<v Speaker 5>is similar to nod cluster or PM two and not cluster,

291
00:17:12.119 --> 00:17:16.359
<v Speaker 5>but instead of doing the load balancing inside not JS,

292
00:17:16.960 --> 00:17:21.240
<v Speaker 5>which is what nod cluster and pmhould do with in

293
00:17:21.400 --> 00:17:24.920
<v Speaker 5>that we use a new node feature that let us

294
00:17:25.000 --> 00:17:29.039
<v Speaker 5>do load balancing inside the kernel using scores, a flag

295
00:17:29.119 --> 00:17:34.000
<v Speaker 5>calls so on the score reuse port, which is significantly faster.

296
00:17:34.920 --> 00:17:38.319
<v Speaker 2>Can you elaborate a little bit about what actually is?

297
00:17:38.759 --> 00:17:40.880
<v Speaker 5>Because it's an application showy for not JS, you can

298
00:17:40.960 --> 00:17:42.799
<v Speaker 5>just give it your app. It will run it inside

299
00:17:42.799 --> 00:17:45.240
<v Speaker 5>a worker thread and the main thread will just minor

300
00:17:45.359 --> 00:17:48.359
<v Speaker 5>it and you can scale it up and down multiple threads,

301
00:17:48.400 --> 00:17:51.960
<v Speaker 5>multiple course, and if you want, you can even have

302
00:17:52.039 --> 00:17:55.519
<v Speaker 5>aterogenerus system. You can have multiple different applications running there

303
00:17:55.720 --> 00:17:58.839
<v Speaker 5>and they can communicate via message passing or just h GDP

304
00:17:59.400 --> 00:18:00.000
<v Speaker 5>over memory.

305
00:18:00.079 --> 00:18:04.039
<v Speaker 2>See so what does it compete with? What are they like?

306
00:18:05.519 --> 00:18:08.039
<v Speaker 2>When would I use what? And would I put like

307
00:18:08.279 --> 00:18:10.160
<v Speaker 2>next JS? On top of what?

308
00:18:10.720 --> 00:18:13.440
<v Speaker 5>If you're if you're deploying not JES in Kubernetus, you're

309
00:18:13.480 --> 00:18:16.759
<v Speaker 5>probably not doing the not doing the right thing if

310
00:18:16.799 --> 00:18:18.839
<v Speaker 5>you're not doing it today using what?

311
00:18:19.640 --> 00:18:22.279
<v Speaker 2>Yes, what does it stand for? By the way?

312
00:18:23.279 --> 00:18:27.400
<v Speaker 4>What come on? What can what be? Can that be?

313
00:18:28.319 --> 00:18:28.599
<v Speaker 4>Come on?

314
00:18:29.000 --> 00:18:30.480
<v Speaker 2>How do you exactly spell it?

315
00:18:31.440 --> 00:18:36.160
<v Speaker 4>W A T T. It's an honor to over James vat.

316
00:18:36.640 --> 00:18:44.640
<v Speaker 2>Ah Okay, yeah, the power. Yeah, so we need a name.

317
00:18:44.720 --> 00:18:46.680
<v Speaker 4>So on MPM is VATPMH.

318
00:18:46.680 --> 00:18:49.359
<v Speaker 2>I now I sit in your blog post. Yes, so

319
00:18:49.440 --> 00:18:53.480
<v Speaker 2>whenever I use node in Kubernetes, you recommend using it

320
00:18:53.519 --> 00:18:55.160
<v Speaker 2>on top of what I.

321
00:18:55.200 --> 00:18:59.079
<v Speaker 5>Would say, Yes, it gives you more reliability in this

322
00:18:59.240 --> 00:19:03.599
<v Speaker 5>example with jes that I've shared in the chat, essentially

323
00:19:03.640 --> 00:19:08.000
<v Speaker 5>we can move down P ninety five from a second

324
00:19:08.720 --> 00:19:11.920
<v Speaker 5>to two one hundred and thirty five milliseconds.

325
00:19:12.440 --> 00:19:15.640
<v Speaker 1>Oh wow. And just for those who don't follow along

326
00:19:15.680 --> 00:19:19.640
<v Speaker 1>with benchmark stuff of P ninety five, is ninety five

327
00:19:19.720 --> 00:19:23.000
<v Speaker 1>percent of your requests take this long or less?

328
00:19:23.400 --> 00:19:28.000
<v Speaker 2>So in other words, yeah, beneficial for the five percent

329
00:19:28.119 --> 00:19:29.359
<v Speaker 2>slowest users.

330
00:19:29.400 --> 00:19:31.000
<v Speaker 4>Is beneficial for everybody.

331
00:19:30.799 --> 00:19:34.960
<v Speaker 1>If fits for everybody. Yeah, essentially, Yeah, so all the

332
00:19:35.160 --> 00:19:38.960
<v Speaker 1>all the requests now, so ninety five percent of the

333
00:19:39.079 --> 00:19:41.759
<v Speaker 1>requests instead of taking up to a second, now take

334
00:19:42.039 --> 00:19:44.559
<v Speaker 1>up to two hundred and thirty five milliseconds. Now you

335
00:19:44.599 --> 00:19:46.960
<v Speaker 1>assume that the other five percent it also speeds up

336
00:19:47.000 --> 00:19:51.039
<v Speaker 1>for But yeah, that's kind of the measure, and it's

337
00:19:51.079 --> 00:19:53.319
<v Speaker 1>it's one of the more common ways of measuring how

338
00:19:53.319 --> 00:19:57.680
<v Speaker 1>fast your application is because the load and the requests

339
00:19:57.720 --> 00:19:59.640
<v Speaker 1>and what it has to do and what else is

340
00:19:59.759 --> 00:20:01.880
<v Speaker 1>running on the machine can vary from time to time,

341
00:20:01.920 --> 00:20:03.519
<v Speaker 1>and so this kind of averages it out.

342
00:20:03.880 --> 00:20:07.680
<v Speaker 2>Also, think about it from the perspective of a business

343
00:20:08.240 --> 00:20:13.000
<v Speaker 2>loto you like, you want to think about the customers

344
00:20:13.000 --> 00:20:16.359
<v Speaker 2>that have it the worst, and you can't really afford

345
00:20:16.400 --> 00:20:19.119
<v Speaker 2>to lose five or ten percent of your business because

346
00:20:19.200 --> 00:20:26.680
<v Speaker 2>it's just too slow. Exactly. But I'm thinking about what

347
00:20:26.720 --> 00:20:30.759
<v Speaker 2>you said. It does mean though, that you want to

348
00:20:30.839 --> 00:20:36.640
<v Speaker 2>allocate more than one CPU per yes, no instance in

349
00:20:36.680 --> 00:20:38.079
<v Speaker 2>your kubernets in how.

350
00:20:37.960 --> 00:20:42.839
<v Speaker 4>You absolutely this actually helps. Okay, let me explain why

351
00:20:42.880 --> 00:20:43.319
<v Speaker 4>it helps.

352
00:20:43.480 --> 00:20:48.079
<v Speaker 5>Okay, The cost of spinning up a new pod in

353
00:20:48.200 --> 00:20:54.039
<v Speaker 5>Kubernatis is more or less fixed independent of the amount

354
00:20:54.359 --> 00:21:01.279
<v Speaker 5>the amount of resources that are attached, okay, or anyway,

355
00:21:01.279 --> 00:21:02.720
<v Speaker 5>it's not very much different.

356
00:21:03.240 --> 00:21:03.519
<v Speaker 4>Okay.

357
00:21:04.359 --> 00:21:08.680
<v Speaker 5>If I am scheduling largest things, each unit of scale

358
00:21:08.880 --> 00:21:14.079
<v Speaker 5>gives me more power to handle my spikes better. So

359
00:21:14.559 --> 00:21:17.599
<v Speaker 5>it's the edges of scaling are a little bit steeper.

360
00:21:18.279 --> 00:21:23.240
<v Speaker 5>But this actually helps smooth the curve way quicker because

361
00:21:23.359 --> 00:21:24.960
<v Speaker 5>these new things.

362
00:21:26.519 --> 00:21:27.119
<v Speaker 4>Make it.

363
00:21:28.720 --> 00:21:32.640
<v Speaker 5>Can handle more load per unit. Okay, So this is

364
00:21:32.640 --> 00:21:33.119
<v Speaker 5>one thing.

365
00:21:33.279 --> 00:21:33.640
<v Speaker 1>Okay.

366
00:21:33.680 --> 00:21:37.960
<v Speaker 5>The second thing is Kubernatis takes minutes to scale, so

367
00:21:38.079 --> 00:21:41.400
<v Speaker 5>when the load typically reacts in one two minutes is

368
00:21:41.480 --> 00:21:44.960
<v Speaker 5>very slow, tiny to to to schedule things up. And

369
00:21:46.039 --> 00:21:49.480
<v Speaker 5>by having this system you can actually absorb the shock

370
00:21:49.680 --> 00:21:52.200
<v Speaker 5>completely inside your pods.

371
00:21:52.200 --> 00:21:55.279
<v Speaker 2>Interesting, very interesting. I need to think about this some more.

372
00:21:55.359 --> 00:21:59.279
<v Speaker 2>I will definitely make sure that our develops people see this.

373
00:22:02.759 --> 00:22:06.200
<v Speaker 2>I mean literally everybody is using kubernets these days, whether

374
00:22:06.200 --> 00:22:06.640
<v Speaker 2>they need.

375
00:22:06.559 --> 00:22:08.720
<v Speaker 4>To exactly exactly.

376
00:22:09.359 --> 00:22:12.480
<v Speaker 5>We also have built, but it's not mentioned in this benchmark,

377
00:22:12.720 --> 00:22:17.279
<v Speaker 5>built another product called Intelligent Command Center that is open

378
00:22:17.319 --> 00:22:23.119
<v Speaker 5>source as well, that reduced the decision time of kubernets

379
00:22:23.720 --> 00:22:32.279
<v Speaker 5>from minutes two seconds. So the pod starting is down

380
00:22:32.480 --> 00:22:35.200
<v Speaker 5>is making less than five seconds the decision to start

381
00:22:35.200 --> 00:22:35.680
<v Speaker 5>a new part.

382
00:22:36.400 --> 00:22:39.279
<v Speaker 2>Doesn't that make the system kind of more noisy.

383
00:22:40.200 --> 00:22:43.759
<v Speaker 5>Yes to some part, not to the other, because it's

384
00:22:43.799 --> 00:22:47.799
<v Speaker 5>actually it's actually very fast in scaling up. Okay, but

385
00:22:47.920 --> 00:22:51.920
<v Speaker 5>it can scale up on very specific signals from the app,

386
00:22:52.640 --> 00:22:58.200
<v Speaker 5>so it and so it can be a little bit

387
00:22:58.200 --> 00:23:00.839
<v Speaker 5>more noisy, but it actually allows you to reduce your

388
00:23:00.880 --> 00:23:03.359
<v Speaker 5>baseline of instance significantly.

389
00:23:03.279 --> 00:23:06.000
<v Speaker 2>So you can scale up when you need to.

390
00:23:06.359 --> 00:23:08.319
<v Speaker 5>You can scale up way quicker when you need to,

391
00:23:08.359 --> 00:23:11.559
<v Speaker 5>so you can reduce your baseline and during off peak

392
00:23:11.599 --> 00:23:15.960
<v Speaker 5>hours you can actually save a lot of Yeah.

393
00:23:15.799 --> 00:23:18.480
<v Speaker 1>I guess that's always the thing that I'm concerned with

394
00:23:18.519 --> 00:23:21.480
<v Speaker 1>when you have this kind of automation, is, you know,

395
00:23:21.559 --> 00:23:24.400
<v Speaker 1>does a scale up too much? Does it? You know,

396
00:23:24.400 --> 00:23:26.319
<v Speaker 1>does it handle things when you know when I need

397
00:23:26.319 --> 00:23:28.559
<v Speaker 1>it to scale down? Because yeah, it costs a lot

398
00:23:28.599 --> 00:23:31.440
<v Speaker 1>more when you scale way up. But if that's what

399
00:23:31.480 --> 00:23:35.680
<v Speaker 1>you're getting in traffic, and usually traffic translates in some

400
00:23:35.720 --> 00:23:40.559
<v Speaker 1>ways to money, not always, but yeah, so that anyway

401
00:23:41.240 --> 00:23:41.839
<v Speaker 1>pretty cool.

402
00:23:42.000 --> 00:23:45.079
<v Speaker 4>So this was part of our results.

403
00:23:45.119 --> 00:23:51.279
<v Speaker 5>We published this study, okay, and hopefully we can get

404
00:23:51.359 --> 00:23:54.279
<v Speaker 5>some results from our rock click customer down out soon.

405
00:23:54.799 --> 00:23:58.640
<v Speaker 5>But this is our own and all the benchmarkt and

406
00:23:58.759 --> 00:24:01.279
<v Speaker 5>ernests done for this is open source, so you can

407
00:24:01.359 --> 00:24:02.759
<v Speaker 5>check it out and run it yourself.

408
00:24:02.799 --> 00:24:03.440
<v Speaker 4>If you're this.

409
00:24:03.400 --> 00:24:06.559
<v Speaker 2>Should be making a lot more noise than it is.

410
00:24:06.640 --> 00:24:10.119
<v Speaker 2>I think I was kind of aware of this, but

411
00:24:10.200 --> 00:24:13.359
<v Speaker 2>I was not fully aware of this. And like I said,

412
00:24:13.400 --> 00:24:17.759
<v Speaker 2>literally everybody is doing non kumberinators these days. So if

413
00:24:17.799 --> 00:24:22.039
<v Speaker 2>the impact is so dramatic and so significant and so

414
00:24:22.519 --> 00:24:29.599
<v Speaker 2>readily achievable, yes, you know, there's literally no reason not

415
00:24:29.720 --> 00:24:32.079
<v Speaker 2>to try it out. This is.

416
00:24:33.920 --> 00:24:36.359
<v Speaker 5>Partially the reason why when you asked to come to

417
00:24:36.440 --> 00:24:38.480
<v Speaker 5>join the show. I said, I'm coming join the show.

418
00:24:39.839 --> 00:24:44.680
<v Speaker 5>This is the research that we published. So we published

419
00:24:44.759 --> 00:24:49.079
<v Speaker 5>late last year, I think, and it's pretty solid.

420
00:24:49.400 --> 00:24:57.359
<v Speaker 4>I would say. Then we have done another article.

421
00:24:57.599 --> 00:25:03.599
<v Speaker 5>Okay, I'm more spicy one if you if a more

422
00:25:03.640 --> 00:25:09.160
<v Speaker 5>spicy one, I would say, okay. And we benchmarked on

423
00:25:09.200 --> 00:25:11.839
<v Speaker 5>the same benchmark on the first one, slightly different traffic

424
00:25:11.880 --> 00:25:17.720
<v Speaker 5>load whatever, Okay. We benchmarked the note the tree no

425
00:25:17.839 --> 00:25:22.880
<v Speaker 5>dress run times in Kubernetes so bunn no JS as

426
00:25:22.880 --> 00:25:25.519
<v Speaker 5>well as our own way of scheduling things with what

427
00:25:26.200 --> 00:25:33.640
<v Speaker 5>so we got some really unexpected results, not the results

428
00:25:33.640 --> 00:25:41.640
<v Speaker 5>that I would expect, and it showed that bun So.

429
00:25:41.720 --> 00:25:45.000
<v Speaker 2>Just before you you tell what you found, just to clarify,

430
00:25:45.200 --> 00:25:48.519
<v Speaker 2>what is only for node, it's not for the other

431
00:25:48.960 --> 00:25:51.079
<v Speaker 2>For the other platforms, you can't use it to DNO

432
00:25:51.240 --> 00:25:51.960
<v Speaker 2>with bun.

433
00:25:52.039 --> 00:25:53.039
<v Speaker 4>No you can't.

434
00:25:53.519 --> 00:25:57.519
<v Speaker 5>Well like you can't because those other platforms are not

435
00:25:57.680 --> 00:26:01.200
<v Speaker 5>fully not GS compatible. And the approach that we have

436
00:26:01.279 --> 00:26:05.440
<v Speaker 5>taken with what is instead of creating a custom built

437
00:26:05.599 --> 00:26:08.519
<v Speaker 5>not just run time with our patches, we have upstream

438
00:26:08.519 --> 00:26:11.839
<v Speaker 5>all our patches up to note core of the things

439
00:26:11.839 --> 00:26:17.319
<v Speaker 5>that we needed, and that is only is written mostly

440
00:26:17.319 --> 00:26:22.119
<v Speaker 5>in JavaScript mostly every now and then we had to

441
00:26:22.200 --> 00:26:25.920
<v Speaker 5>have a little bit of C plus plus to implement

442
00:26:25.960 --> 00:26:28.480
<v Speaker 5>some feature for all not Jazz versions.

443
00:26:28.160 --> 00:26:30.079
<v Speaker 4>That are not being released yet.

444
00:26:30.160 --> 00:26:34.200
<v Speaker 5>So if we need a feature, we need to extend

445
00:26:34.200 --> 00:26:34.880
<v Speaker 5>support for it.

446
00:26:35.039 --> 00:26:39.759
<v Speaker 4>But it's right now, I think it's all JavaScript.

447
00:26:40.079 --> 00:26:42.119
<v Speaker 1>I have to say before you go too much further

448
00:26:42.200 --> 00:26:45.759
<v Speaker 1>that I like this idea of hey, we needed this

449
00:26:45.880 --> 00:26:48.799
<v Speaker 1>in node in order to make what work, and so

450
00:26:48.839 --> 00:26:50.920
<v Speaker 1>you contribute it back and so it's stuff that other

451
00:26:50.920 --> 00:26:51.880
<v Speaker 1>people can use.

452
00:26:52.119 --> 00:26:56.039
<v Speaker 5>Exactly one like this is the whole point. Like part

453
00:26:56.079 --> 00:26:59.680
<v Speaker 5>of the reason why I funded Platformatic was can I

454
00:26:59.759 --> 00:27:06.240
<v Speaker 5>try to build a business that can uh make the

455
00:27:06.440 --> 00:27:11.960
<v Speaker 5>open source economically viable and and allow us to grow

456
00:27:12.000 --> 00:27:15.480
<v Speaker 5>with it? So let's try. This is the this might

457
00:27:15.519 --> 00:27:19.200
<v Speaker 5>try Okay, I might succeed, might not succeed. I hope

458
00:27:19.200 --> 00:27:24.400
<v Speaker 5>I succeed, but I needed to try this. So my journey.

459
00:27:25.000 --> 00:27:26.759
<v Speaker 1>I'm going to go into a tangent here real quick

460
00:27:26.759 --> 00:27:28.880
<v Speaker 1>because I'm kind of curious. So when you say make

461
00:27:29.079 --> 00:27:33.000
<v Speaker 1>the open source uh economically viable, what do you mean?

462
00:27:33.079 --> 00:27:33.160
<v Speaker 2>Like?

463
00:27:33.240 --> 00:27:35.160
<v Speaker 1>What what the fundamental point is?

464
00:27:35.359 --> 00:27:45.160
<v Speaker 5>The fundamental point is there is a substantial lack of

465
00:27:45.599 --> 00:27:53.359
<v Speaker 5>investment in core technologies from companies, and we need more

466
00:27:53.440 --> 00:27:59.200
<v Speaker 5>companies that are that invest significant amount of money into

467
00:27:59.240 --> 00:27:59.880
<v Speaker 5>the commons.

468
00:28:00.960 --> 00:28:03.160
<v Speaker 4>In order to do so, we need them.

469
00:28:03.000 --> 00:28:03.319
<v Speaker 1>To be.

470
00:28:04.799 --> 00:28:08.319
<v Speaker 5>Economic, to be good businesses so they can contribute back

471
00:28:08.519 --> 00:28:14.920
<v Speaker 5>and up. Okay, And you cannot rely on the sponsor

472
00:28:15.000 --> 00:28:20.440
<v Speaker 5>model because it's too little, too late. So you need

473
00:28:21.359 --> 00:28:23.839
<v Speaker 5>if you need to pay to do payroll, you need

474
00:28:23.920 --> 00:28:29.960
<v Speaker 5>to have significant sales involved. So the goal is to

475
00:28:30.000 --> 00:28:33.680
<v Speaker 5>build a significantly big enough company that can afford multiple

476
00:28:33.680 --> 00:28:36.559
<v Speaker 5>people and working full time on the core technologies, and

477
00:28:36.759 --> 00:28:39.880
<v Speaker 5>not because it's it's a good thing to do, but

478
00:28:40.119 --> 00:28:44.440
<v Speaker 5>because it needs them to be there as a core

479
00:28:44.559 --> 00:28:47.640
<v Speaker 5>function of the business so that it's not a donation,

480
00:28:47.960 --> 00:28:49.480
<v Speaker 5>it's a function.

481
00:28:50.559 --> 00:28:51.480
<v Speaker 1>Okay.

482
00:28:51.599 --> 00:28:54.640
<v Speaker 5>And because it's a function and it's a core part

483
00:28:54.640 --> 00:28:56.359
<v Speaker 5>of it, it will not stop.

484
00:28:57.400 --> 00:28:59.440
<v Speaker 2>And what is that company selling them?

485
00:29:00.359 --> 00:29:02.000
<v Speaker 1>That was what I wash.

486
00:29:02.079 --> 00:29:07.079
<v Speaker 5>So our current business model okay, after several pivot iterations

487
00:29:07.079 --> 00:29:13.519
<v Speaker 5>and stuff, we sell enterprise version of all our technologies

488
00:29:13.759 --> 00:29:21.039
<v Speaker 5>plus support and on boarding. So if somebody needs anything

489
00:29:21.079 --> 00:29:24.039
<v Speaker 5>related to no JS, we can provide support, We can

490
00:29:24.200 --> 00:29:30.599
<v Speaker 5>provide and we can provide an enterprise license for our

491
00:29:30.640 --> 00:29:32.559
<v Speaker 5>core technologies and include.

492
00:29:32.279 --> 00:29:33.799
<v Speaker 2>What does an enterprise license.

493
00:29:33.880 --> 00:29:39.559
<v Speaker 5>Mean this is an answer for Michael question for micro founder. Okay,

494
00:29:41.400 --> 00:29:44.839
<v Speaker 5>so there is for the Intelligent Command Center.

495
00:29:45.480 --> 00:29:46.519
<v Speaker 2>There is a.

496
00:29:48.480 --> 00:29:56.319
<v Speaker 5>Premium version with added features for example like more audit controls, loggins,

497
00:29:56.519 --> 00:30:00.440
<v Speaker 5>these kind of things so far, but it will grow more.

498
00:30:00.880 --> 00:30:08.119
<v Speaker 5>It's more related to SLAS and response to incidents and

499
00:30:08.599 --> 00:30:10.200
<v Speaker 5>being available that.

500
00:30:11.799 --> 00:30:13.440
<v Speaker 4>Like other things.

501
00:30:13.839 --> 00:30:16.319
<v Speaker 1>So it's more on the support side than the future side.

502
00:30:17.039 --> 00:30:20.079
<v Speaker 5>It's the future side is more on all these technology

503
00:30:20.119 --> 00:30:26.839
<v Speaker 5>are moving dynamically, so they our customers can steer, can

504
00:30:26.839 --> 00:30:29.119
<v Speaker 5>steer the wheel and I'll pass the side.

505
00:30:29.160 --> 00:30:30.000
<v Speaker 4>Where we go next?

506
00:30:30.079 --> 00:30:32.680
<v Speaker 5>And what what they need? What features are missing? And

507
00:30:33.119 --> 00:30:34.480
<v Speaker 5>you know their partners.

508
00:30:34.359 --> 00:30:36.759
<v Speaker 2>I think that esslas are the way to go, to

509
00:30:36.799 --> 00:30:38.079
<v Speaker 2>be honest, To.

510
00:30:38.000 --> 00:30:39.920
<v Speaker 4>Be honest, I would say they sell very.

511
00:30:39.759 --> 00:30:44.440
<v Speaker 2>Well because like literally, if I'm running your back in

512
00:30:44.519 --> 00:30:49.920
<v Speaker 2>my back end on node, I need ESLAS and and

513
00:30:50.720 --> 00:30:54.799
<v Speaker 2>if you know, if I if I can out kind

514
00:30:54.839 --> 00:31:01.400
<v Speaker 2>of guaranteed by licensing your services, then it's no brainer.

515
00:31:01.799 --> 00:31:07.160
<v Speaker 4>That's what it is. So anyway, that's exactly the point.

516
00:31:07.559 --> 00:31:10.680
<v Speaker 2>Cool. So now let's go back to where we were

517
00:31:10.720 --> 00:31:12.079
<v Speaker 2>before we went on the tangent.

518
00:31:12.160 --> 00:31:14.559
<v Speaker 4>If we can remember, yeah, okay, we can go on

519
00:31:14.599 --> 00:31:20.319
<v Speaker 4>the tangent all the time. So anyway we are, I

520
00:31:20.359 --> 00:31:24.200
<v Speaker 4>was chatting, I've over the break, I've done this extensive

521
00:31:24.200 --> 00:31:30.240
<v Speaker 4>benchmark on band Dino and note okay, and I got

522
00:31:30.519 --> 00:31:34.319
<v Speaker 4>very surprising results. The benchmarks included running the same next

523
00:31:34.359 --> 00:31:35.400
<v Speaker 4>Jaess application that.

524
00:31:35.400 --> 00:31:39.400
<v Speaker 5>We talked about before. Okay, reactions are rendering? Have your memory?

525
00:31:39.480 --> 00:31:40.559
<v Speaker 5>Have you on CPU?

526
00:31:41.039 --> 00:31:41.920
<v Speaker 4>Really like.

527
00:31:44.039 --> 00:31:47.880
<v Speaker 5>Possibly the worst load but also the most common load

528
00:31:48.400 --> 00:31:52.599
<v Speaker 5>that you can have running on OJS these days, And

529
00:31:52.680 --> 00:31:55.400
<v Speaker 5>I got very surprising result that I didn't expect them

530
00:31:55.440 --> 00:31:59.519
<v Speaker 5>to be so specifically.

531
00:31:59.480 --> 00:32:06.039
<v Speaker 4>I got but p ninety nine of.

532
00:32:08.519 --> 00:32:12.319
<v Speaker 5>Seventy four milliseconds for ban one three dot five they

533
00:32:12.319 --> 00:32:13.519
<v Speaker 5>did new versions of.

534
00:32:13.839 --> 00:32:15.279
<v Speaker 2>So approximately one second.

535
00:32:16.279 --> 00:32:20.839
<v Speaker 5>Yes, well not JS was one hundred and seventy four.

536
00:32:21.799 --> 00:32:24.960
<v Speaker 5>Do you know at one hundred and not JS with

537
00:32:25.039 --> 00:32:26.640
<v Speaker 5>what at one hundred and fifteen?

538
00:32:27.480 --> 00:32:33.599
<v Speaker 2>So Bun was noticeably slower than everybody else exactly. To

539
00:32:33.680 --> 00:32:37.240
<v Speaker 2>be honest, I know that Bun has a reputation for

540
00:32:37.319 --> 00:32:40.799
<v Speaker 2>being fast, but the people need but people need to

541
00:32:40.880 --> 00:32:44.920
<v Speaker 2>understand that fast can mean different things in different situations.

542
00:32:45.480 --> 00:32:46.359
<v Speaker 4>Exactly that.

543
00:32:47.000 --> 00:32:49.680
<v Speaker 1>Well, I hear people tell other things about Bun too,

544
00:32:49.680 --> 00:32:54.799
<v Speaker 1>but yeah, you run a different application the different engines

545
00:32:54.920 --> 00:32:59.720
<v Speaker 1>manage memory differently and concurrency differently than other things differently,

546
00:32:59.720 --> 00:33:01.039
<v Speaker 1>and so yeah, it's.

547
00:33:00.920 --> 00:33:04.079
<v Speaker 2>Beyond a different application. I think it's it's like a

548
00:33:04.079 --> 00:33:08.799
<v Speaker 2>different scenario, yes, because you've got you've got startup times,

549
00:33:09.440 --> 00:33:13.799
<v Speaker 2>and you've got and you've got run times, and there's

550
00:33:13.799 --> 00:33:17.400
<v Speaker 2>a question of when optimizations kick in. If they kick in,

551
00:33:18.440 --> 00:33:20.960
<v Speaker 2>what do you do in the jet stage stuff like that.

552
00:33:21.240 --> 00:33:25.559
<v Speaker 2>So what could be really fast for a long running

553
00:33:26.759 --> 00:33:30.640
<v Speaker 2>a no type service could be really slow when you're

554
00:33:30.680 --> 00:33:35.440
<v Speaker 2>building a utility that just runs, does something and then terminates,

555
00:33:35.759 --> 00:33:40.960
<v Speaker 2>and an expectation that a certain platform will do everything

556
00:33:41.039 --> 00:33:46.839
<v Speaker 2>better is well, it's happened before, but it's not always realistic.

557
00:33:47.559 --> 00:33:50.119
<v Speaker 4>It's so a few notes.

558
00:33:50.279 --> 00:33:53.799
<v Speaker 5>Okay, after chatting with a few people, they gave me

559
00:33:53.880 --> 00:33:57.200
<v Speaker 5>this informal feedback. You can take what we do with

560
00:33:57.279 --> 00:34:03.200
<v Speaker 5>a gain of salt jsc which is the JavaScript run

561
00:34:03.279 --> 00:34:08.199
<v Speaker 5>time behind ban and Safari is optimized for cold starts

562
00:34:08.800 --> 00:34:11.880
<v Speaker 5>to start very immediately. Imagine when you open Safari on

563
00:34:11.920 --> 00:34:14.159
<v Speaker 5>your iPhone, it opens up super quick.

564
00:34:14.480 --> 00:34:22.599
<v Speaker 4>Okay, while V eight is more optimized for running or

565
00:34:22.639 --> 00:34:24.719
<v Speaker 4>wrong running application. Thanks Jmail.

566
00:34:25.519 --> 00:34:28.519
<v Speaker 2>Yeah, that's the thing, you know, people talk about like

567
00:34:28.639 --> 00:34:33.159
<v Speaker 2>the various You know, there's this been trend of rewriting

568
00:34:33.239 --> 00:34:37.719
<v Speaker 2>the JavaScript utility ecosystem in other programming languages, be it

569
00:34:37.840 --> 00:34:42.039
<v Speaker 2>go or be at rust or be it whatever, instead

570
00:34:42.079 --> 00:34:47.280
<v Speaker 2>of doing it in JavaScript or typescript. And you kind

571
00:34:47.280 --> 00:34:49.880
<v Speaker 2>of hit your head on the nail there, matel Because,

572
00:34:49.920 --> 00:34:51.360
<v Speaker 2>for example, if we think about.

573
00:34:51.159 --> 00:34:53.360
<v Speaker 3>And that's a nail on the head, not head on

574
00:34:53.360 --> 00:34:55.079
<v Speaker 3>the nail unless you really want to hit your head

575
00:34:55.119 --> 00:34:55.599
<v Speaker 3>on the nail.

576
00:34:55.800 --> 00:34:57.960
<v Speaker 2>Or is that what I said? Yeah, okay, just.

577
00:34:58.159 --> 00:34:59.320
<v Speaker 1>To point ound was painful.

578
00:34:59.599 --> 00:35:03.280
<v Speaker 2>Well know Hebrew we right, we right right to left.

579
00:35:03.360 --> 00:35:07.039
<v Speaker 3>So well, but I mean, gives gives new gives new

580
00:35:07.079 --> 00:35:08.639
<v Speaker 3>meaning to the term hammerhead, doesn't it.

581
00:35:09.000 --> 00:35:13.119
<v Speaker 2>Yeah? Anyway, what I was saying is that the JavaScript

582
00:35:13.199 --> 00:35:17.760
<v Speaker 2>optimizer in EA, I always forget the name whether is

583
00:35:17.840 --> 00:35:18.920
<v Speaker 2>a turbo fan or what.

584
00:35:18.880 --> 00:35:22.639
<v Speaker 4>A turbo fan. We also have mag Lab now.

585
00:35:22.400 --> 00:35:27.360
<v Speaker 2>But yeah, it's basically based on identifying hot code and

586
00:35:27.400 --> 00:35:31.960
<v Speaker 2>then optimizing that while the code is actually executing. But

587
00:35:32.079 --> 00:35:35.159
<v Speaker 2>in order to identify hot code, the application needs to

588
00:35:35.199 --> 00:35:37.719
<v Speaker 2>be running for a while. And if you're running a

589
00:35:37.760 --> 00:35:40.800
<v Speaker 2>tool that just starts up, does its job and then finishes,

590
00:35:41.679 --> 00:35:44.679
<v Speaker 2>you'll never get to that optimization stage.

591
00:35:45.880 --> 00:35:52.280
<v Speaker 5>Exactly, which is long enough you get into that optimization state.

592
00:35:52.400 --> 00:35:54.400
<v Speaker 2>Which is kind of my concern by the way, with

593
00:35:54.920 --> 00:35:57.000
<v Speaker 2>some Lambda function usage.

594
00:35:58.559 --> 00:36:03.119
<v Speaker 4>Well, I let me say this, if you are moving

595
00:36:03.400 --> 00:36:12.239
<v Speaker 4>serious traffic, you are probably better served using ECS or

596
00:36:12.440 --> 00:36:17.519
<v Speaker 4>cobnetis or whatever long running process. But to be honest,

597
00:36:17.599 --> 00:36:20.760
<v Speaker 4>Lambda actually okay, let's let's go. Let's open the lambda

598
00:36:20.800 --> 00:36:24.519
<v Speaker 4>point because it's actually a validation of that to some extent.

599
00:36:25.079 --> 00:36:28.079
<v Speaker 5>So if you if you have followed what has been

600
00:36:28.159 --> 00:36:31.000
<v Speaker 5>launched by a w as in the latest the latest

601
00:36:31.039 --> 00:36:36.559
<v Speaker 5>rainvent in December, is a new Lambda run time for

602
00:36:37.159 --> 00:36:41.239
<v Speaker 5>I troueput scenario I traffic scenario that is not actually

603
00:36:42.280 --> 00:36:46.320
<v Speaker 5>one request per process, okay, but it allows one process

604
00:36:46.480 --> 00:36:49.440
<v Speaker 5>look at this to have as many threads as it

605
00:36:49.519 --> 00:36:52.960
<v Speaker 5>wants to end or requests in a lot of things.

606
00:36:53.119 --> 00:36:58.679
<v Speaker 5>Is actually similar to how that works internally in how

607
00:36:58.840 --> 00:37:03.480
<v Speaker 5>the things are scheduled. So this kind of system allows

608
00:37:04.079 --> 00:37:04.719
<v Speaker 5>Lambda to.

609
00:37:06.559 --> 00:37:09.400
<v Speaker 4>You know, use all the potential of no js essentially

610
00:37:10.119 --> 00:37:17.119
<v Speaker 4>and actually leverage these long running optimizations that we talked about.

611
00:37:17.800 --> 00:37:18.320
<v Speaker 2>Interesting.

612
00:37:19.519 --> 00:37:23.159
<v Speaker 5>So it's actually very interesting model, and a lot of

613
00:37:23.199 --> 00:37:26.079
<v Speaker 5>people are not you know, tapped into this yet, like

614
00:37:26.079 --> 00:37:29.960
<v Speaker 5>they think, oh, no, jes single treded or mostly single traded,

615
00:37:30.639 --> 00:37:33.159
<v Speaker 5>while in reality it's not, and you can do a

616
00:37:33.199 --> 00:37:37.239
<v Speaker 5>lot of interesting things with it, and they just you know,

617
00:37:37.480 --> 00:37:38.320
<v Speaker 5>ignore the point.

618
00:37:38.480 --> 00:37:42.159
<v Speaker 2>Well to be to be honest, no, JavaScript is a

619
00:37:42.159 --> 00:37:47.360
<v Speaker 2>single threaded language, but Node and the JavaScript Virtual Machine

620
00:37:47.360 --> 00:37:49.280
<v Speaker 2>has never really been single threaded.

621
00:37:51.280 --> 00:37:54.840
<v Speaker 4>So it's exactly so for.

622
00:37:54.840 --> 00:37:57.800
<v Speaker 2>Those of you who don't know. For example, the VGC

623
00:37:58.079 --> 00:38:02.440
<v Speaker 2>actually runs off of the main thread to significant extent.

624
00:38:03.320 --> 00:38:06.079
<v Speaker 4>Yeah, well it has been, not at the beginning.

625
00:38:06.280 --> 00:38:08.920
<v Speaker 2>Not at the beginning I'm talking about currently.

626
00:38:09.039 --> 00:38:11.360
<v Speaker 4>Yeah, yeah, it's it's it's off the of it.

627
00:38:12.039 --> 00:38:14.119
<v Speaker 5>So anyway, I just wanted to say we got these

628
00:38:14.360 --> 00:38:18.039
<v Speaker 5>incredible results, like not expected, to be honest, I didn't,

629
00:38:18.280 --> 00:38:20.440
<v Speaker 5>like I had to check them five times and have

630
00:38:20.559 --> 00:38:22.800
<v Speaker 5>to have some friends check them with me.

631
00:38:23.440 --> 00:38:26.400
<v Speaker 2>So why was it expected? You you didn't expect such

632
00:38:26.440 --> 00:38:30.880
<v Speaker 2>a band to be that slow in that particular test, yes,

633
00:38:31.119 --> 00:38:33.880
<v Speaker 2>And did you expect Dino to be that fast by the.

634
00:38:33.880 --> 00:38:38.679
<v Speaker 4>Way, yes, yes, significantly. I was expecting Dino to have

635
00:38:38.719 --> 00:38:39.840
<v Speaker 4>those kind of numbers.

636
00:38:40.320 --> 00:38:44.320
<v Speaker 2>I think that's a scenario that they've been optimizing for, right, No, no.

637
00:38:44.079 --> 00:38:50.519
<v Speaker 5>No, it's the way so they their dino event loop

638
00:38:51.239 --> 00:38:55.199
<v Speaker 5>is based on Tokyo, while no event loop is based

639
00:38:55.239 --> 00:38:55.800
<v Speaker 5>on libuv.

640
00:38:56.280 --> 00:38:58.440
<v Speaker 4>Okay, and Tokyo is.

641
00:39:00.159 --> 00:39:04.400
<v Speaker 5>Be a decade later than libv type of thing, and

642
00:39:04.920 --> 00:39:08.719
<v Speaker 5>by things have improved, you now you do those kinds

643
00:39:08.719 --> 00:39:13.320
<v Speaker 5>of things, okay, And it's very hard to chase something

644
00:39:13.400 --> 00:39:18.000
<v Speaker 5>like libuv understood, So there is that is the problem,

645
00:39:18.199 --> 00:39:20.199
<v Speaker 5>Like it's it's not just LIBUV by the way, it's

646
00:39:20.239 --> 00:39:24.239
<v Speaker 5>also the node machinery in entirety. So how we get

647
00:39:24.280 --> 00:39:27.719
<v Speaker 5>the data out of libuv, how we schedule new connections

648
00:39:27.719 --> 00:39:29.079
<v Speaker 5>and we do all Like there's a lot of work

649
00:39:29.119 --> 00:39:31.679
<v Speaker 5>over there and a lot of over it, but some

650
00:39:31.800 --> 00:39:35.800
<v Speaker 5>of that over it is essentially legacy, and it's very

651
00:39:35.880 --> 00:39:38.320
<v Speaker 5>hard for us to like it's possible, it would be

652
00:39:38.360 --> 00:39:42.000
<v Speaker 5>possible to optimize, but it's a hell of a lot harder.

653
00:39:42.280 --> 00:39:45.679
<v Speaker 2>So could you remind me again what the numbers are

654
00:39:45.760 --> 00:39:47.599
<v Speaker 2>for node versus note with what.

655
00:39:48.599 --> 00:39:49.639
<v Speaker 4>So on p.

656
00:39:49.760 --> 00:39:53.199
<v Speaker 5>Nineteen nine we add one hundred and seventy four millisecond

657
00:39:53.239 --> 00:39:55.320
<v Speaker 5>I may we measured one hundred and seventy four million

658
00:39:55.360 --> 00:39:59.039
<v Speaker 5>second with node and with what one hundred and fifteen.

659
00:40:00.000 --> 00:40:02.719
<v Speaker 2>One hundred and fifteen that's one one five.

660
00:40:03.199 --> 00:40:06.079
<v Speaker 4>Yep, one seven four versus one one five.

661
00:40:07.239 --> 00:40:11.760
<v Speaker 2>So we're talking about close about thirty percent reduction, forty

662
00:40:11.760 --> 00:40:13.239
<v Speaker 2>percent reductions.

663
00:40:12.719 --> 00:40:13.280
<v Speaker 1>Something like that.

664
00:40:13.360 --> 00:40:15.159
<v Speaker 2>Yeah, that's significant.

665
00:40:15.920 --> 00:40:19.880
<v Speaker 4>I know last Dino VAT and Dino are very close.

666
00:40:19.960 --> 00:40:21.559
<v Speaker 2>And that's the SSR scenario.

667
00:40:22.039 --> 00:40:24.000
<v Speaker 4>Yes, by the way, So I guess.

668
00:40:23.800 --> 00:40:26.159
<v Speaker 1>What I'm wondering is is so for the people watching

669
00:40:26.239 --> 00:40:30.480
<v Speaker 1>at home right this, you're throwing out numbers and scenarios,

670
00:40:30.519 --> 00:40:33.639
<v Speaker 1>But what does this look like for me? Right? So

671
00:40:33.719 --> 00:40:36.079
<v Speaker 1>I have a next JS setup, or i have a

672
00:40:36.840 --> 00:40:39.079
<v Speaker 1>note application that I've written, and I've got React on

673
00:40:39.079 --> 00:40:41.719
<v Speaker 1>the front end and I've got server side rendering setup

674
00:40:41.920 --> 00:40:46.079
<v Speaker 1>or whatever, like, how does this actually translate? And what

675
00:40:46.119 --> 00:40:50.239
<v Speaker 1>does this look like when I'm troubleshooting or you know,

676
00:40:50.480 --> 00:40:52.480
<v Speaker 1>measuring my own benchmarks or things like that.

677
00:40:53.079 --> 00:40:58.360
<v Speaker 5>So the key difference is the point of so when

678
00:40:58.360 --> 00:41:02.039
<v Speaker 5>you're doing in your is when you do saturation or

679
00:41:02.079 --> 00:41:07.280
<v Speaker 5>stress testing. Stress testing, so you're putting it to a

680
00:41:07.400 --> 00:41:11.119
<v Speaker 5>very high load scenario and you want to know when

681
00:41:11.119 --> 00:41:12.440
<v Speaker 5>your up breaks.

682
00:41:13.360 --> 00:41:15.440
<v Speaker 4>And essentially.

683
00:41:16.400 --> 00:41:20.960
<v Speaker 5>These numbers tells create more or less ranking of where

684
00:41:21.000 --> 00:41:25.519
<v Speaker 5>your applications stay responsive and is usable by the end user.

685
00:41:25.840 --> 00:41:28.639
<v Speaker 4>Okay, in those scenarios, I'll.

686
00:41:28.400 --> 00:41:32.599
<v Speaker 2>Give another way to look at it. You're doing SSR

687
00:41:33.679 --> 00:41:39.400
<v Speaker 2>to improve application startup times. Yes, that's the primary motivation

688
00:41:39.480 --> 00:41:44.320
<v Speaker 2>of doing SSR. And what we've literally learned now is

689
00:41:44.400 --> 00:41:47.199
<v Speaker 2>that you might be doing SSR with the goal of

690
00:41:47.320 --> 00:41:51.320
<v Speaker 2>improving startup time and end up part of my French

691
00:41:52.000 --> 00:41:56.920
<v Speaker 2>screwing yourself because your back end will not be able

692
00:41:56.960 --> 00:42:05.679
<v Speaker 2>to properly handle the extra load. And I'm actually looking

693
00:42:05.880 --> 00:42:09.079
<v Speaker 2>at the Crux data. We've spoken about it on the

694
00:42:09.079 --> 00:42:13.360
<v Speaker 2>show on several occasions, so a quick reminder what it is.

695
00:42:14.559 --> 00:42:20.440
<v Speaker 2>Google collects anonymous performance information from all browser sessions or

696
00:42:20.519 --> 00:42:23.719
<v Speaker 2>Chrome browser sessions and unless you opt out, and it's

697
00:42:23.760 --> 00:42:25.880
<v Speaker 2>not really easy to opt out, so assume it's more

698
00:42:26.000 --> 00:42:29.360
<v Speaker 2>less everybody. And they are looking and then they are

699
00:42:29.400 --> 00:42:32.960
<v Speaker 2>breaking it down by technologies used using the HTP archive.

700
00:42:33.440 --> 00:42:37.159
<v Speaker 2>So basically for each domain, they're looking if a domain

701
00:42:37.239 --> 00:42:40.480
<v Speaker 2>has sufficient amount of traffic, so they're looking at the

702
00:42:40.519 --> 00:42:43.639
<v Speaker 2>top ten million domains more or less in terms of traffic.

703
00:42:44.239 --> 00:42:48.000
<v Speaker 2>They're segmenting them by technologies used, and then they actually

704
00:42:48.400 --> 00:42:51.400
<v Speaker 2>release this information to the world so you can actually

705
00:42:51.519 --> 00:42:56.280
<v Speaker 2>see which technology is more likely to give you better performance.

706
00:42:56.840 --> 00:43:01.719
<v Speaker 2>And I'm currently looking at the graph that compares all

707
00:43:01.760 --> 00:43:06.639
<v Speaker 2>the websites within cracks, the WordPress websites, the Wix websites,

708
00:43:07.159 --> 00:43:11.039
<v Speaker 2>and next JS websites. And I'm looking at what percentile

709
00:43:11.079 --> 00:43:15.239
<v Speaker 2>of websites get good performance results. According to Google, it's

710
00:43:15.239 --> 00:43:20.119
<v Speaker 2>the cob vitals. Okay, wow, yeah, And if we're talking

711
00:43:20.199 --> 00:43:25.119
<v Speaker 2>about all technologies, we're talking about about fifty one percent,

712
00:43:25.199 --> 00:43:29.480
<v Speaker 2>So approximately half of websites get good coed vitals and

713
00:43:29.559 --> 00:43:34.480
<v Speaker 2>about half get poor web vitals. If we're talking about WordPress,

714
00:43:34.719 --> 00:43:37.880
<v Speaker 2>the number is forty six percent. So WordPress is slightly

715
00:43:38.440 --> 00:43:42.800
<v Speaker 2>lower than all technologies at large, but pretty close. So

716
00:43:43.000 --> 00:43:45.400
<v Speaker 2>WordPress and all technologies is more or less the same.

717
00:43:45.800 --> 00:43:48.480
<v Speaker 2>Maybe also the fact that like half the web runs

718
00:43:48.519 --> 00:43:53.199
<v Speaker 2>on WordPress. Wis currently is at seventy three percent.

719
00:43:54.159 --> 00:43:56.880
<v Speaker 4>And what is this website? Is the cracks data set? Right?

720
00:43:57.360 --> 00:43:59.320
<v Speaker 2>Yes, I can send you. I'll put the link in

721
00:43:59.320 --> 00:43:59.920
<v Speaker 2>the chat.

722
00:44:00.199 --> 00:44:02.119
<v Speaker 4>An Houp going fantastic. I found it.

723
00:44:03.079 --> 00:44:05.840
<v Speaker 2>So Wix has seventy three percent. So if you're building

724
00:44:05.880 --> 00:44:11.039
<v Speaker 2>a website on Wix, there's a seventy three percent probability

725
00:44:11.400 --> 00:44:17.079
<v Speaker 2>that you will be getting good performance. Okay, what's the number? Sorry,

726
00:44:17.159 --> 00:44:19.440
<v Speaker 2>what's the number for next JS? Now you assume that

727
00:44:19.440 --> 00:44:22.159
<v Speaker 2>next YS would be great because the whole thing about

728
00:44:22.199 --> 00:44:27.440
<v Speaker 2>next GS is that it's as SARRD. So what's the

729
00:44:27.480 --> 00:44:28.920
<v Speaker 2>probability for next gs?

730
00:44:28.960 --> 00:44:32.360
<v Speaker 1>Can you guess feel like you're setting me up to

731
00:44:32.440 --> 00:44:37.039
<v Speaker 1>let me down so well, I would have assumed before

732
00:44:37.079 --> 00:44:41.360
<v Speaker 1>you said it, kind of skeptically that it'd be you know, yeah,

733
00:44:41.440 --> 00:44:44.519
<v Speaker 1>somewhere around wis you know, sixty seventy percent, but you're

734
00:44:44.519 --> 00:44:47.119
<v Speaker 1>making you're making it sound like it's probably like thirty percent.

735
00:44:47.679 --> 00:44:52.119
<v Speaker 2>Exactly, it's twenty nine percent. So the probability of getting

736
00:44:52.119 --> 00:44:55.480
<v Speaker 2>good performance when you're using NEXTJS, you know, you're you're

737
00:44:55.519 --> 00:44:58.960
<v Speaker 2>putting all this effort into building let's say AI is

738
00:44:59.000 --> 00:45:01.760
<v Speaker 2>not doing your entire job yet you're doing putting all

739
00:45:01.800 --> 00:45:05.719
<v Speaker 2>this effort in encoding your website and react and hosting

740
00:45:05.800 --> 00:45:09.760
<v Speaker 2>it and whatever you and your probability of getting good

741
00:45:09.800 --> 00:45:14.679
<v Speaker 2>co ed vitals is less than thirty percent, And that's

742
00:45:15.039 --> 00:45:16.320
<v Speaker 2>really unfortunate.

743
00:45:16.719 --> 00:45:20.679
<v Speaker 1>Yeah, that's bad. So the stuff that Mateo is talking about,

744
00:45:20.760 --> 00:45:23.519
<v Speaker 1>then do you do you get those kinds of performance

745
00:45:24.039 --> 00:45:27.239
<v Speaker 1>increases kind of for free just by upgrading your note

746
00:45:27.320 --> 00:45:28.840
<v Speaker 1>or make.

747
00:45:28.760 --> 00:45:31.840
<v Speaker 4>It better by using what on top of next which

748
00:45:31.840 --> 00:45:32.719
<v Speaker 4>it just works.

749
00:45:32.519 --> 00:45:36.400
<v Speaker 2>So it's not and I can do it on versall, no.

750
00:45:36.559 --> 00:45:39.800
<v Speaker 5>Versall ransom your own thing. So the fundamental problem, the

751
00:45:39.800 --> 00:45:42.920
<v Speaker 5>fundamental point is next JS is designed to run well

752
00:45:42.960 --> 00:45:49.679
<v Speaker 5>on versall and to run it well on your own infrastructure.

753
00:45:49.719 --> 00:45:52.320
<v Speaker 5>You're missing a few components, and we added those few.

754
00:45:53.239 --> 00:45:55.599
<v Speaker 2>So with verse cell out of the box, I'd be

755
00:45:55.679 --> 00:45:59.320
<v Speaker 2>getting comparable performance to what I have.

756
00:46:00.079 --> 00:46:05.000
<v Speaker 5>Absolutely no idea. I've not measured. I've not benchmarked their cloud.

757
00:46:05.199 --> 00:46:09.199
<v Speaker 5>To be honest, I don't even it's a good product.

758
00:46:09.280 --> 00:46:12.440
<v Speaker 5>I am a customer like Performati is a customer overrsell. Okay,

759
00:46:13.079 --> 00:46:15.119
<v Speaker 5>we are as most startup. Is the greatest thing ever

760
00:46:15.199 --> 00:46:19.440
<v Speaker 5>to be using perself. Okay, yeah, it's easy, it's easy.

761
00:46:19.559 --> 00:46:22.079
<v Speaker 5>There are a lot of companies out there that cannot

762
00:46:22.199 --> 00:46:26.960
<v Speaker 5>use yourself for all sorts of reasons, okay, from and

763
00:46:27.079 --> 00:46:28.280
<v Speaker 5>that is critical.

764
00:46:29.000 --> 00:46:32.440
<v Speaker 2>I know that the companies are running next gs on

765
00:46:32.599 --> 00:46:34.360
<v Speaker 2>top of Amazon a.

766
00:46:34.480 --> 00:46:36.840
<v Speaker 4>W Yeah exactly, So this is what I'm saying.

767
00:46:36.880 --> 00:46:40.440
<v Speaker 5>Okay, they are running those things, and there is even

768
00:46:40.480 --> 00:46:42.480
<v Speaker 5>a thing called open next run it on top of

769
00:46:42.760 --> 00:46:47.880
<v Speaker 5>cloud Flare and other stuff. Okay, what we've done make

770
00:46:47.960 --> 00:46:51.039
<v Speaker 5>it run very well on top of Kubernetus.

771
00:46:51.440 --> 00:46:55.239
<v Speaker 2>By the way, I'm curious, what's your opinion of nest JS.

772
00:46:55.719 --> 00:47:00.239
<v Speaker 5>You're asking me tough questions, then I am not I

773
00:47:00.320 --> 00:47:04.360
<v Speaker 5>am I do have opinion.

774
00:47:04.440 --> 00:47:05.480
<v Speaker 4>I have one opinion.

775
00:47:07.039 --> 00:47:09.880
<v Speaker 1>Nest is the back end framework, specifically, isn't it?

776
00:47:10.360 --> 00:47:14.840
<v Speaker 2>Nest is like NOE for Java developers I have.

777
00:47:17.840 --> 00:47:23.320
<v Speaker 5>I have a problem with it. Okay, the problem I

778
00:47:23.400 --> 00:47:31.920
<v Speaker 5>have with nest is its reliance on the old time

779
00:47:32.000 --> 00:47:35.880
<v Speaker 5>skip decorators. So I don't know if you've been following

780
00:47:35.920 --> 00:47:39.119
<v Speaker 5>the story of Java skip decorators with the year thirty nine.

781
00:47:39.239 --> 00:47:44.119
<v Speaker 2>That standard that never ever materializes. It's been stuck in

782
00:47:44.760 --> 00:47:48.559
<v Speaker 2>stage two and a half like forever exactly.

783
00:47:49.800 --> 00:47:52.440
<v Speaker 4>So the problem is that.

784
00:47:54.440 --> 00:47:57.480
<v Speaker 2>Just you know what, before you do, let's just clarify

785
00:47:57.519 --> 00:48:00.719
<v Speaker 2>that all our listeners I kind of assume that listeners

786
00:48:00.760 --> 00:48:05.760
<v Speaker 2>were familiar with Kubernetes, which might have been either correct

787
00:48:05.880 --> 00:48:08.480
<v Speaker 2>or incorrect. An assumption to make, but let's not assume

788
00:48:08.519 --> 00:48:13.679
<v Speaker 2>the same for decorators. Decorators are a language feature in

789
00:48:13.800 --> 00:48:18.960
<v Speaker 2>JavaScript or typescript which allow you to decorate function method

790
00:48:19.039 --> 00:48:23.400
<v Speaker 2>classes and methods and properties. You put the ad sign

791
00:48:23.519 --> 00:48:26.599
<v Speaker 2>and then some words, and basically it wraps the declaration

792
00:48:26.760 --> 00:48:30.239
<v Speaker 2>in a function call and that function call can modify

793
00:48:31.239 --> 00:48:38.719
<v Speaker 2>the actual class definition or the method definition. So for example,

794
00:48:38.800 --> 00:48:44.079
<v Speaker 2>let's say the canonical example is I want to print

795
00:48:44.079 --> 00:48:47.719
<v Speaker 2>out a log whenever a method enters and exits. Instead

796
00:48:47.760 --> 00:48:52.719
<v Speaker 2>of explicitly adding a log everywhere, I can decorate the

797
00:48:52.800 --> 00:48:58.000
<v Speaker 2>class maybe and thenates automatically. It basically modifies the behavior

798
00:48:58.079 --> 00:49:02.000
<v Speaker 2>of all the class methods. Whenever I instantiate the instance,

799
00:49:02.039 --> 00:49:05.639
<v Speaker 2>I get this functionality automatically. So it's a it's a

800
00:49:05.679 --> 00:49:08.920
<v Speaker 2>way of implementing cross cutting concerns.

801
00:49:09.400 --> 00:49:13.559
<v Speaker 4>Yes, it has two problems though, Okay.

802
00:49:13.840 --> 00:49:18.079
<v Speaker 2>Oh, just to finish it's it's been a part it's

803
00:49:18.119 --> 00:49:24.679
<v Speaker 2>it's very very popular in in Angular. Uh, it's been

804
00:49:24.800 --> 00:49:29.719
<v Speaker 2>part of typescript for a while, and there's a proposal

805
00:49:29.800 --> 00:49:32.639
<v Speaker 2>to add it to the JavaScript language itself, which, like

806
00:49:32.719 --> 00:49:34.280
<v Speaker 2>we said, is kind of stuck in purgative.

807
00:49:35.159 --> 00:49:39.199
<v Speaker 4>Yes, okay, let me explain the situation there. Okay, So

808
00:49:41.719 --> 00:49:45.039
<v Speaker 4>the current so this pack.

809
00:49:46.639 --> 00:49:50.119
<v Speaker 5>As it was originally proposed and done in typescript okay,

810
00:49:51.000 --> 00:49:56.920
<v Speaker 5>all types types four and something okay, and before was

811
00:49:57.960 --> 00:50:01.159
<v Speaker 5>was very hard to poly fil Okay. If you look

812
00:50:01.199 --> 00:50:06.320
<v Speaker 5>at the JavaScript code that is being those syntax transpiles to,

813
00:50:07.960 --> 00:50:09.199
<v Speaker 5>you can get very scared.

814
00:50:09.519 --> 00:50:15.480
<v Speaker 4>Okay, lets let's go eight. It's like regenerator style things.

815
00:50:15.559 --> 00:50:18.320
<v Speaker 4>I don't know if you ever looked at the cover

816
00:50:18.400 --> 00:50:22.639
<v Speaker 4>of what our generator does, but is pretty ugly, okay,

817
00:50:22.760 --> 00:50:25.400
<v Speaker 4>because there is a lot of global state. There is

818
00:50:25.480 --> 00:50:31.199
<v Speaker 4>a lot of things happening. It's not nice.

819
00:50:31.760 --> 00:50:37.800
<v Speaker 5>Then the standard changed in a way that it's essentially

820
00:50:37.880 --> 00:50:42.159
<v Speaker 5>Java is essentially function wrappers okay, which can be attached

821
00:50:42.199 --> 00:50:46.760
<v Speaker 5>to classes because classes are functions okay, or functions okay,

822
00:50:46.960 --> 00:50:52.039
<v Speaker 5>which makes it way easier to to reason about this thing, okay.

823
00:50:52.159 --> 00:50:55.400
<v Speaker 5>And also it's just a function, so it literally is

824
00:50:55.480 --> 00:50:59.679
<v Speaker 5>easier to you know, implement some extent.

825
00:50:59.480 --> 00:51:02.719
<v Speaker 2>The function that gets cold with the function as its

826
00:51:02.840 --> 00:51:05.679
<v Speaker 2>argument and in context, and then it returns a function

827
00:51:05.800 --> 00:51:07.880
<v Speaker 2>that gets used instead of the original function.

828
00:51:08.400 --> 00:51:10.800
<v Speaker 4>Exactly, Very straightforward, Okay.

829
00:51:11.280 --> 00:51:16.880
<v Speaker 1>I was just thinking, Yeah, it sounds like I'm still

830
00:51:16.920 --> 00:51:18.199
<v Speaker 1>not sure I follow anyway.

831
00:51:18.719 --> 00:51:21.199
<v Speaker 4>Anyway, It's it's simple, but there is a difference, okay.

832
00:51:21.280 --> 00:51:26.440
<v Speaker 5>The old standard allowed to attach decorator to.

833
00:51:27.239 --> 00:51:29.760
<v Speaker 4>Arguments parameters hmm.

834
00:51:29.960 --> 00:51:32.679
<v Speaker 2>Yeah, and nest chess uses that a lot.

835
00:51:33.000 --> 00:51:39.159
<v Speaker 5>Exactly, and in the new standard this is not possible.

836
00:51:38.719 --> 00:51:42.400
<v Speaker 2>Anymore because they're not functions. They're just parameters.

837
00:51:42.000 --> 00:51:49.119
<v Speaker 4>Exactly, and and that is my world problem.

838
00:51:49.639 --> 00:51:53.199
<v Speaker 2>Okay, that nest chess is tied to a syntax which

839
00:51:53.239 --> 00:51:56.800
<v Speaker 2>goes against the grain of where JavaScript is heading exactly.

840
00:51:57.840 --> 00:52:02.440
<v Speaker 4>Also, its transpiled is really bad. That's it.

841
00:52:03.440 --> 00:52:05.920
<v Speaker 5>I care a lot about the Java skity is being executed,

842
00:52:05.960 --> 00:52:10.239
<v Speaker 5>and that is transpiled to some really two things that

843
00:52:10.280 --> 00:52:12.760
<v Speaker 5>I would not have running on my servers.

844
00:52:16.119 --> 00:52:19.280
<v Speaker 2>I'll say it again. It's really popular with people that

845
00:52:19.519 --> 00:52:24.079
<v Speaker 2>come to note from Java, so I know a lot

846
00:52:24.119 --> 00:52:27.960
<v Speaker 2>of back end developers that literally swear by it. It's

847
00:52:28.000 --> 00:52:30.119
<v Speaker 2>a back end that you use as a back end

848
00:52:30.119 --> 00:52:33.519
<v Speaker 2>for API. Course. Yes, it's it's not about necessa or

849
00:52:33.519 --> 00:52:35.599
<v Speaker 2>anything like that exactly.

850
00:52:36.239 --> 00:52:37.519
<v Speaker 4>But I am, I am.

851
00:52:37.679 --> 00:52:39.519
<v Speaker 5>I have a side on all of this, so you

852
00:52:39.559 --> 00:52:41.039
<v Speaker 5>can take all of what I said with a gain

853
00:52:41.119 --> 00:52:44.599
<v Speaker 5>of salt. I have built to Fastify to solve this problem.

854
00:52:44.719 --> 00:52:48.719
<v Speaker 5>Been using it for the last decade and very happy

855
00:52:48.760 --> 00:52:49.039
<v Speaker 5>with it.

856
00:52:49.599 --> 00:52:54.519
<v Speaker 2>Yeah, it's really opinionated anyway. Moving But in terms of performance,

857
00:52:54.679 --> 00:52:56.760
<v Speaker 2>what can you say aboutn SGS.

858
00:52:57.079 --> 00:53:01.519
<v Speaker 4>I have not benchmarked it signific Okay.

859
00:53:01.920 --> 00:53:07.920
<v Speaker 5>I suspect is slower than Core Express or Fastify. You

860
00:53:07.920 --> 00:53:10.920
<v Speaker 5>can use Express or Fastify underneath, and I suspect is

861
00:53:11.119 --> 00:53:13.239
<v Speaker 5>slower and it adds a little bit over it on top.

862
00:53:13.440 --> 00:53:15.960
<v Speaker 2>Yeah, it has to kind of because it's literally built

863
00:53:16.000 --> 00:53:16.599
<v Speaker 2>on top of it.

864
00:53:16.719 --> 00:53:25.559
<v Speaker 5>So yes, I hope is as little as possible. But look,

865
00:53:25.679 --> 00:53:28.679
<v Speaker 5>you're asking so you might get an article on it.

866
00:53:28.800 --> 00:53:31.760
<v Speaker 5>So I'm my co found is telling me to do it,

867
00:53:31.880 --> 00:53:34.559
<v Speaker 5>so to do the research. So I'll do the research.

868
00:53:34.760 --> 00:53:37.719
<v Speaker 2>I can say that it's pretty popular. It's popular to

869
00:53:37.760 --> 00:53:41.360
<v Speaker 2>the extent that it's boring, you know, like the best

870
00:53:41.360 --> 00:53:44.119
<v Speaker 2>compliment you can give about the technology is that it's boring.

871
00:53:44.400 --> 00:53:46.400
<v Speaker 4>Yeah, I know, I know, I do the same.

872
00:53:47.159 --> 00:53:50.400
<v Speaker 2>Okay. So moving back to what we were talking about

873
00:53:50.440 --> 00:53:55.199
<v Speaker 2>with so you talked about the surprising results that you got. Now,

874
00:53:55.840 --> 00:54:01.320
<v Speaker 2>so obviously, if I'm running the bottom line is that

875
00:54:02.079 --> 00:54:07.400
<v Speaker 2>if I'm running currently node on Amazon, and especially if

876
00:54:07.400 --> 00:54:09.679
<v Speaker 2>I'm using it for a s SR, not necessarily, but

877
00:54:09.800 --> 00:54:12.760
<v Speaker 2>especially if I'm using it for as SR, then I

878
00:54:12.840 --> 00:54:17.039
<v Speaker 2>should be looking at what because bun won't save me

879
00:54:18.400 --> 00:54:22.639
<v Speaker 2>pretty much. And okay, cool, anything else to add on

880
00:54:22.679 --> 00:54:23.719
<v Speaker 2>that particular.

881
00:54:23.320 --> 00:54:26.119
<v Speaker 4>Topic, Nope, I think I covered it all.

882
00:54:26.599 --> 00:54:29.639
<v Speaker 2>So you had a list, let's go to the next one. Yay.

883
00:54:29.920 --> 00:54:32.920
<v Speaker 1>So so just just on the issue of time. We

884
00:54:33.039 --> 00:54:38.199
<v Speaker 1>have been recording for about an hour, which I'm totally

885
00:54:38.239 --> 00:54:42.519
<v Speaker 1>fine sticking around for however long, but I need.

886
00:54:42.119 --> 00:54:46.039
<v Speaker 5>To probably go at when these meeting ends that I

887
00:54:46.079 --> 00:54:47.320
<v Speaker 5>have on my calendar.

888
00:54:47.119 --> 00:54:49.360
<v Speaker 2>So that doesn't it just means that you want to

889
00:54:49.400 --> 00:54:51.320
<v Speaker 2>bring it on and I bring you on again.

890
00:54:51.960 --> 00:54:58.519
<v Speaker 5>Absolutely, I'm coming again. I'm coming again, of course.

891
00:54:58.719 --> 00:54:59.039
<v Speaker 4>Okay.

892
00:54:59.119 --> 00:55:02.039
<v Speaker 5>So the second one that I wanted to cover is

893
00:55:02.079 --> 00:55:05.360
<v Speaker 5>the topic of flame graphs. Now, in all of these

894
00:55:05.400 --> 00:55:10.440
<v Speaker 5>benchmarking to do a lot of optimizations and look at things, okay,

895
00:55:11.320 --> 00:55:16.639
<v Speaker 5>and we created a brand new frame graph tool to

896
00:55:17.079 --> 00:55:18.440
<v Speaker 5>do performance analysis.

897
00:55:18.960 --> 00:55:22.519
<v Speaker 1>I don't know what a flame graph is, So imagine

898
00:55:22.559 --> 00:55:23.840
<v Speaker 1>that you are.

899
00:55:25.280 --> 00:55:27.679
<v Speaker 5>You want to do a performance optimization. Okay, you have

900
00:55:27.880 --> 00:55:30.239
<v Speaker 5>you know your application is low, and you want to

901
00:55:30.239 --> 00:55:31.000
<v Speaker 5>know where it's low.

902
00:55:31.440 --> 00:55:35.280
<v Speaker 4>Okay. A flame graph shows.

903
00:55:34.880 --> 00:55:40.440
<v Speaker 5>You the hottest points in your code base that consume

904
00:55:40.599 --> 00:55:41.239
<v Speaker 5>the most time.

905
00:55:42.400 --> 00:55:44.239
<v Speaker 1>Okay, I've seen them, I just didn't know that's what

906
00:55:44.280 --> 00:55:45.800
<v Speaker 1>they were called exactly.

907
00:55:45.960 --> 00:55:46.239
<v Speaker 4>Okay.

908
00:55:46.280 --> 00:55:50.079
<v Speaker 1>So Cinema GRAPHA and a new relic, so yeah.

909
00:55:49.880 --> 00:55:50.199
<v Speaker 4>They can.

910
00:55:50.280 --> 00:55:52.519
<v Speaker 5>You can click a button and get the flame graph.

911
00:55:52.599 --> 00:55:56.000
<v Speaker 5>The key point is you the flame graph abstract time.

912
00:55:56.039 --> 00:55:58.800
<v Speaker 5>So it takes an internet of time and says, let

913
00:55:58.840 --> 00:56:01.400
<v Speaker 5>me represent this the function calls that happen in this

914
00:56:01.519 --> 00:56:05.559
<v Speaker 5>interval of time. Okay, because in that way, I know

915
00:56:05.679 --> 00:56:08.239
<v Speaker 5>how much a function is being called compared to the others.

916
00:56:08.280 --> 00:56:09.559
<v Speaker 4>So I can make a comparison.

917
00:56:10.000 --> 00:56:14.639
<v Speaker 5>Okay, so I can, so we can detect how much

918
00:56:14.719 --> 00:56:16.559
<v Speaker 5>function was called and how hot it is.

919
00:56:16.920 --> 00:56:21.719
<v Speaker 4>Okay, but I've been doing this for for a long time.

920
00:56:21.800 --> 00:56:25.000
<v Speaker 5>I created the second kind of two third generation tool

921
00:56:25.039 --> 00:56:28.119
<v Speaker 5>that I create with these kind of things. Okay, a

922
00:56:28.280 --> 00:56:31.679
<v Speaker 5>new version of note require differently tools to get it done.

923
00:56:32.239 --> 00:56:34.559
<v Speaker 5>PingER Cross is the last, but probably there will be

924
00:56:34.599 --> 00:56:35.639
<v Speaker 5>another one in a few years.

925
00:56:35.800 --> 00:56:36.079
<v Speaker 4>Okay.

926
00:56:36.519 --> 00:56:40.880
<v Speaker 2>Now, somebody who's listening to us and here's a flame

927
00:56:40.960 --> 00:56:46.639
<v Speaker 2>graft to measure NOTE performance might be thinking, Hey, why

928
00:56:46.679 --> 00:56:49.480
<v Speaker 2>do I need this from a platformatic where I have

929
00:56:49.559 --> 00:56:57.239
<v Speaker 2>it built into dev tools for like forever for why

930
00:56:57.280 --> 00:56:59.199
<v Speaker 2>do I need at another one? What's wrong with the

931
00:56:59.199 --> 00:57:00.840
<v Speaker 2>one that's built in death tools.

932
00:57:01.280 --> 00:57:08.239
<v Speaker 5>The tools gives you a flame shart, not a flame draft.

933
00:57:09.599 --> 00:57:15.840
<v Speaker 5>It's not as readable, it doesn't give you the full picture. Also,

934
00:57:17.519 --> 00:57:23.000
<v Speaker 5>it's the way. The part of the problem is the

935
00:57:23.039 --> 00:57:27.840
<v Speaker 5>collection of that data is very expensive, so by running

936
00:57:28.000 --> 00:57:34.039
<v Speaker 5>it in the tools, you are essentially altering, like the

937
00:57:34.559 --> 00:57:39.079
<v Speaker 5>act of observing something modifies the behavior.

938
00:57:40.440 --> 00:57:44.119
<v Speaker 4>Quantum mechanics, right, Yeah, it's quantum mechanics at play.

939
00:57:44.400 --> 00:57:47.719
<v Speaker 2>Yes, just to clarify, I'm aware of the issues and

940
00:57:47.760 --> 00:57:50.039
<v Speaker 2>I totally agree with you. I'm just bringing it up

941
00:57:50.079 --> 00:57:52.400
<v Speaker 2>so you can rebut it perfect.

942
00:57:52.480 --> 00:57:52.760
<v Speaker 4>Okay.

943
00:57:52.800 --> 00:57:55.639
<v Speaker 5>So it's quantum mechanics at work. You observe it, you

944
00:57:55.760 --> 00:57:56.199
<v Speaker 5>change it.

945
00:57:56.400 --> 00:57:56.760
<v Speaker 4>Okay.

946
00:57:57.440 --> 00:58:01.239
<v Speaker 5>The way the what we have done instead of relying

947
00:58:01.320 --> 00:58:04.800
<v Speaker 5>on the inspector to to get that data, okay, we

948
00:58:04.840 --> 00:58:08.599
<v Speaker 5>are using a C plus plus module from our good

949
00:58:08.639 --> 00:58:12.039
<v Speaker 5>friends at Data Dog that they're using their agent to

950
00:58:12.079 --> 00:58:14.920
<v Speaker 5>collect those data from C plus plus straight out of

951
00:58:15.000 --> 00:58:19.039
<v Speaker 5>the eight in the fastest possible way. So it does

952
00:58:19.119 --> 00:58:24.199
<v Speaker 5>not interfere much with the application itself to the point

953
00:58:24.239 --> 00:58:26.760
<v Speaker 5>that you can use it in production to collect those

954
00:58:26.760 --> 00:58:29.679
<v Speaker 5>flame graphs. Now, if you try to enable the inspector,

955
00:58:29.760 --> 00:58:32.079
<v Speaker 5>you are looking at a fifty percent performance job.

956
00:58:32.960 --> 00:58:35.920
<v Speaker 2>It's beyond that. First of all, let's start with the

957
00:58:35.960 --> 00:58:39.280
<v Speaker 2>fact that you probably don't want to attach the development

958
00:58:39.360 --> 00:58:44.000
<v Speaker 2>tool to your production environment. Yes, somebody might click pause,

959
00:58:49.840 --> 00:58:55.519
<v Speaker 2>Oh yeah, you're not going to be running in production

960
00:58:55.719 --> 00:59:02.920
<v Speaker 2>Node servant production with as inspect you know, yeah, yeah,

961
00:59:02.960 --> 00:59:05.719
<v Speaker 2>and you're not and you're not going to believe that

962
00:59:05.719 --> 00:59:08.280
<v Speaker 2>that port open. Well, you know, you can do it

963
00:59:08.360 --> 00:59:14.000
<v Speaker 2>as such tunneling and whatnot. But anyway, and like Matteo said,

964
00:59:14.239 --> 00:59:22.639
<v Speaker 2>the overhead of actually doing a flame chart is really high.

965
00:59:21.960 --> 00:59:25.760
<v Speaker 2>And by the way, also for that same reason, it's

966
00:59:25.800 --> 00:59:29.119
<v Speaker 2>time constrained. You can't run it forever. You can run

967
00:59:29.199 --> 00:59:32.119
<v Speaker 2>it for a very limited amount of time. Now, I

968
00:59:32.559 --> 00:59:37.559
<v Speaker 2>have in the past implemented certain scenarios in certain applications

969
00:59:37.599 --> 00:59:42.039
<v Speaker 2>where we sent a signal or an event into a

970
00:59:42.079 --> 00:59:47.960
<v Speaker 2>process to kind of trigger it. But it's you can again,

971
00:59:48.000 --> 00:59:50.159
<v Speaker 2>you can only run these sort of things for a

972
00:59:50.199 --> 00:59:51.519
<v Speaker 2>really limited amount of time.

973
00:59:52.639 --> 00:59:53.119
<v Speaker 4>Exactly.

974
00:59:54.320 --> 00:59:56.599
<v Speaker 5>You can also still run this kind of tool for

975
00:59:56.639 --> 01:00:01.079
<v Speaker 5>a limited amount of time, So it's a you know,

976
01:00:01.199 --> 01:00:03.840
<v Speaker 5>you can even the way you do it, you run

977
01:00:03.920 --> 01:00:08.679
<v Speaker 5>it for essentially one minute to collect what's happening. And

978
01:00:09.400 --> 01:00:14.400
<v Speaker 5>in our platform, we can even start collecting it when

979
01:00:14.519 --> 01:00:18.400
<v Speaker 5>usage goes over a certain threshold, so that you know,

980
01:00:18.519 --> 01:00:24.119
<v Speaker 5>you don't you're not wasting money. But it's actually very good,

981
01:00:24.360 --> 01:00:26.800
<v Speaker 5>so you can actually.

982
01:00:28.159 --> 01:00:31.719
<v Speaker 4>Even running in production get good data out. Data Doctor

983
01:00:31.760 --> 01:00:33.920
<v Speaker 4>is running this in production all the time. It's fantastic.

984
01:00:34.679 --> 01:00:37.039
<v Speaker 2>By the way, I have to say, it was really funny.

985
01:00:37.079 --> 01:00:39.679
<v Speaker 2>So when I found out about this tool and I

986
01:00:39.719 --> 01:00:42.960
<v Speaker 2>started using it, and I started experimenting with it, and

987
01:00:43.000 --> 01:00:46.280
<v Speaker 2>I reported like six issues or something like that back

988
01:00:46.320 --> 01:00:49.599
<v Speaker 2>to Mateo and the guys and the gang, and like

989
01:00:49.679 --> 01:00:53.119
<v Speaker 2>within one day it fixed all of them. It was

990
01:00:53.840 --> 01:00:54.800
<v Speaker 2>it was really amusing.

991
01:00:55.159 --> 01:01:00.320
<v Speaker 5>Yeah, very fast. It's so there is that. Okay, tool

992
01:01:00.480 --> 01:01:04.000
<v Speaker 5>was great. Last week. I think we shaped something new.

993
01:01:04.239 --> 01:01:10.119
<v Speaker 5>We shipped a way to get the representation of the

994
01:01:10.159 --> 01:01:13.960
<v Speaker 5>flamegraph as marked down, so you can essentially feed it

995
01:01:14.079 --> 01:01:17.639
<v Speaker 5>to an l LM and it will just fix things.

996
01:01:18.800 --> 01:01:24.519
<v Speaker 2>So it will basically understand where your bottlenecks are in

997
01:01:24.599 --> 01:01:29.800
<v Speaker 2>terms of performance and focus on them automatic exactly. Like

998
01:01:29.960 --> 01:01:34.400
<v Speaker 2>this function is slow, but it's not just slow. It's impacting.

999
01:01:35.199 --> 01:01:38.000
<v Speaker 2>It's being called a lot, so it has a significant impact.

1000
01:01:38.199 --> 01:01:40.840
<v Speaker 2>Or that function is hardly used, there's no point in

1001
01:01:40.840 --> 01:01:42.039
<v Speaker 2>optimizing exactly.

1002
01:01:43.440 --> 01:01:46.559
<v Speaker 1>Yeah, but like you said, Matteo, it seems also that

1003
01:01:47.519 --> 01:01:51.639
<v Speaker 1>some of the fixes are pretty commonly understood and easy

1004
01:01:51.679 --> 01:01:54.039
<v Speaker 1>for the LLM to implement, and so I can also

1005
01:01:54.480 --> 01:01:57.760
<v Speaker 1>you know, it's like add add a database index or hey,

1006
01:01:57.920 --> 01:01:59.599
<v Speaker 1>if you can't if you do it this way instead

1007
01:01:59.639 --> 01:02:02.000
<v Speaker 1>of that way. This structure is more performant than that one.

1008
01:02:02.079 --> 01:02:06.320
<v Speaker 1>And you know it's it's it's little changes, but they're

1009
01:02:07.320 --> 01:02:10.599
<v Speaker 1>low risk, low risk, and the LAM is great at it.

1010
01:02:10.800 --> 01:02:14.840
<v Speaker 5>Okay, I called the low hanging fruits. Okay, so the

1011
01:02:14.880 --> 01:02:18.119
<v Speaker 5>low hanging fruits are super easy to do.

1012
01:02:18.360 --> 01:02:19.559
<v Speaker 4>For the alarms. Okay.

1013
01:02:20.119 --> 01:02:23.800
<v Speaker 5>Now from the frame graph you can even spot some

1014
01:02:23.960 --> 01:02:28.679
<v Speaker 5>bad architectural patterns happening. And the bad architectural patterns are

1015
01:02:28.800 --> 01:02:32.079
<v Speaker 5>harder so to figure out.

1016
01:02:32.280 --> 01:02:36.960
<v Speaker 4>So during my research I've done, I opened a few bugs. Okay.

1017
01:02:37.800 --> 01:02:42.119
<v Speaker 5>One is on a React router. I found that it

1018
01:02:43.119 --> 01:02:47.119
<v Speaker 5>for every rendering its schedules a timer that's never cleared,

1019
01:02:47.719 --> 01:02:51.400
<v Speaker 5>so it runs to completion. It's it's like five second,

1020
01:02:52.159 --> 01:02:55.840
<v Speaker 5>but that cause it's becomes a hot spot for the

1021
01:02:55.840 --> 01:02:56.639
<v Speaker 5>garbage collection.

1022
01:02:57.519 --> 01:02:59.679
<v Speaker 1>Right. I was going to say, it's a memory leak,

1023
01:02:59.719 --> 01:03:01.920
<v Speaker 1>but it's nice. It does get it.

1024
01:03:04.400 --> 01:03:08.239
<v Speaker 5>Eventually, yes, but it's enough that it gets by. It'll

1025
01:03:08.400 --> 01:03:11.559
<v Speaker 5>keep memory located for more and it's enough for that

1026
01:03:11.719 --> 01:03:15.119
<v Speaker 5>memory to be moved to old space. So it's actually

1027
01:03:15.159 --> 01:03:19.159
<v Speaker 5>creating a some problems for the wrong time that's actually

1028
01:03:19.199 --> 01:03:23.039
<v Speaker 5>not needed. That could avoid could be avoided. Okay, I

1029
01:03:23.039 --> 01:03:26.480
<v Speaker 5>sent a patch. Another one that I found recently is

1030
01:03:26.639 --> 01:03:30.159
<v Speaker 5>a bug on with this tool is on GT.

1031
01:03:30.480 --> 01:03:31.519
<v Speaker 4>I don't know if you know GT.

1032
01:03:32.199 --> 01:03:34.119
<v Speaker 5>By the way, I found this a very horrible bug

1033
01:03:34.239 --> 01:03:36.079
<v Speaker 5>and I am really bad.

1034
01:03:36.480 --> 01:03:38.639
<v Speaker 4>Let me pass it to you because.

1035
01:03:40.559 --> 01:03:44.079
<v Speaker 5>And GT is a module a lot than sixty million

1036
01:03:44.119 --> 01:03:45.400
<v Speaker 5>times per week something like that.

1037
01:03:46.280 --> 01:03:46.599
<v Speaker 2>GT.

1038
01:03:47.440 --> 01:03:51.199
<v Speaker 4>Yeah, GT, this is a bug. I passed the bag

1039
01:03:51.199 --> 01:03:53.639
<v Speaker 4>in the chat J I T I yeah.

1040
01:03:54.440 --> 01:03:58.440
<v Speaker 5>It makes any any function that export in a function

1041
01:03:59.199 --> 01:04:01.000
<v Speaker 5>between sixteen seventy times lower.

1042
01:04:01.519 --> 01:04:02.320
<v Speaker 2>What is chitty.

1043
01:04:03.400 --> 01:04:08.400
<v Speaker 5>It's a module to load the typescript straight from node,

1044
01:04:08.599 --> 01:04:12.920
<v Speaker 5>similar to tes what tes no does, but that differently

1045
01:04:13.039 --> 01:04:18.159
<v Speaker 5>typed syme of things is used by yes, lint, nxt, netro,

1046
01:04:18.960 --> 01:04:19.800
<v Speaker 5>post CSS.

1047
01:04:22.480 --> 01:04:22.920
<v Speaker 4>I don't know.

1048
01:04:23.559 --> 01:04:26.559
<v Speaker 5>Tailwind is very popular in front and I have I

1049
01:04:26.559 --> 01:04:28.800
<v Speaker 5>had no idea this even existed until it showed up

1050
01:04:28.800 --> 01:04:29.800
<v Speaker 5>in my flamegraphs.

1051
01:04:30.239 --> 01:04:33.840
<v Speaker 2>Man, don't you love it when people use proxies?

1052
01:04:34.360 --> 01:04:37.719
<v Speaker 4>Yes? You see see I have you know it's it's

1053
01:04:37.760 --> 01:04:40.960
<v Speaker 4>it's one of the most misused technologies that you can

1054
01:04:41.000 --> 01:04:43.440
<v Speaker 4>get in that Like, if you're using a proxy, you

1055
01:04:43.480 --> 01:04:46.239
<v Speaker 4>should ask am I doing it wrong?

1056
01:04:47.480 --> 01:04:51.639
<v Speaker 2>And the answer would probably be yes, yes, not always,

1057
01:04:51.719 --> 01:04:53.719
<v Speaker 2>not one hundred percent of the time, but you should

1058
01:04:53.760 --> 01:04:55.679
<v Speaker 2>definitely be able to justify yourself.

1059
01:04:56.039 --> 01:04:59.199
<v Speaker 1>Yeah. So I'm going to kind of push us to

1060
01:04:59.239 --> 01:05:02.079
<v Speaker 1>wrap up this particular topic because we only have like

1061
01:05:02.119 --> 01:05:03.079
<v Speaker 1>eight minutes left.

1062
01:05:03.079 --> 01:05:06.679
<v Speaker 2>So I just have to say that before we conclude

1063
01:05:06.679 --> 01:05:12.840
<v Speaker 2>on this, that the ability to gather performance information throughout

1064
01:05:12.880 --> 01:05:19.159
<v Speaker 2>the lifetime of a process in production is invaluable. You know,

1065
01:05:19.280 --> 01:05:24.960
<v Speaker 2>we've had similar technologies in other programming languages, like the

1066
01:05:25.280 --> 01:05:32.280
<v Speaker 2>what's it called in Java? Java has the Java black

1067
01:05:32.400 --> 01:05:37.440
<v Speaker 2>box sort of thing, I forget the name. That they

1068
01:05:37.960 --> 01:05:42.000
<v Speaker 2>have the ability to collect performance information without usually without

1069
01:05:42.039 --> 01:05:46.079
<v Speaker 2>significantly impacting runtime performance, that you can do it in production.

1070
01:05:46.199 --> 01:05:48.840
<v Speaker 2>The ability to do the same thing or similar thing

1071
01:05:49.480 --> 01:05:54.679
<v Speaker 2>in for node is really invaluable. And I'm really grateful

1072
01:05:54.719 --> 01:05:58.119
<v Speaker 2>for Mattel and everybody Platformatic for releasing this game.

1073
01:05:59.400 --> 01:06:02.599
<v Speaker 5>Is there free tried out if you want, if you need,

1074
01:06:02.880 --> 01:06:06.840
<v Speaker 5>you know, talk a little bit about my company enough.

1075
01:06:07.039 --> 01:06:11.840
<v Speaker 5>But if you using this tag and you it's core

1076
01:06:11.880 --> 01:06:13.920
<v Speaker 5>part of what you do, you can reach out.

1077
01:06:14.000 --> 01:06:15.559
<v Speaker 4>We'll be very happy to help you.

1078
01:06:18.159 --> 01:06:22.480
<v Speaker 1>Cool. All right, Well, I'm going to push us two picks. Uh,

1079
01:06:22.840 --> 01:06:24.679
<v Speaker 1>this is where we do shout outs about stuff we

1080
01:06:24.840 --> 01:06:30.000
<v Speaker 1>like and uh yeah, I know that you're kind of

1081
01:06:30.079 --> 01:06:32.599
<v Speaker 1>under a time crunch Matereo, do you want to go first?

1082
01:06:32.639 --> 01:06:34.119
<v Speaker 1>Or do you want one of us to go first?

1083
01:06:34.559 --> 01:06:34.800
<v Speaker 2>Oh?

1084
01:06:35.719 --> 01:06:38.599
<v Speaker 4>Let me let you go first and then I go last.

1085
01:06:38.960 --> 01:06:41.159
<v Speaker 1>Okay, Dan, what are your picks?

1086
01:06:41.599 --> 01:06:46.679
<v Speaker 2>Okay? So I've got two picks. The first pick is.

1087
01:06:46.760 --> 01:06:52.559
<v Speaker 2>We've been playing this amusing game in our family these

1088
01:06:52.599 --> 01:06:57.320
<v Speaker 2>past couple of weeks. It's called Hitster. It's this kind

1089
01:06:57.360 --> 01:07:00.719
<v Speaker 2>of a game where you've got a certain like deck

1090
01:07:00.760 --> 01:07:05.960
<v Speaker 2>of cards and each card has this QR code that

1091
01:07:06.039 --> 01:07:10.400
<v Speaker 2>you scan, and it goes with your phone and it

1092
01:07:10.519 --> 01:07:13.960
<v Speaker 2>goes to the and it actually starts playing that song.

1093
01:07:15.519 --> 01:07:18.880
<v Speaker 2>I think it uses Spotify, but I'm not. I don't

1094
01:07:18.880 --> 01:07:21.239
<v Speaker 2>remember off the top of my head. And the idea

1095
01:07:21.480 --> 01:07:24.159
<v Speaker 2>is that you play every you divide into teams. You

1096
01:07:24.199 --> 01:07:28.320
<v Speaker 2>play the song for about twenty seconds, and then the

1097
01:07:28.400 --> 01:07:33.719
<v Speaker 2>team that turn it currently is needs to guess the artist,

1098
01:07:34.360 --> 01:07:36.519
<v Speaker 2>the title of the song, the artist, and the year

1099
01:07:36.559 --> 01:07:39.920
<v Speaker 2>in which it came out. If you need to guess

1100
01:07:39.960 --> 01:07:42.599
<v Speaker 2>at least two to get a point, If you guess

1101
01:07:42.639 --> 01:07:46.639
<v Speaker 2>all three, you get two points. Something along these lines.

1102
01:07:47.639 --> 01:07:50.119
<v Speaker 2>And we've been playing this in our family, and it's

1103
01:07:50.639 --> 01:07:53.679
<v Speaker 2>songs from all eras. In the case of Israel, it's

1104
01:07:53.679 --> 01:07:58.480
<v Speaker 2>both Israeli music and you know international or American music

1105
01:07:58.559 --> 01:08:01.800
<v Speaker 2>or British music, and it's really a lot of fun.

1106
01:08:01.880 --> 01:08:06.239
<v Speaker 2>We enjoy it very very much. You know, you listen

1107
01:08:06.280 --> 01:08:09.800
<v Speaker 2>to music, what's you know and and try to guess

1108
01:08:10.320 --> 01:08:12.960
<v Speaker 2>the songs. It's it's a lot of fun. So that

1109
01:08:13.000 --> 01:08:17.359
<v Speaker 2>would be my first pick, and the second pick is

1110
01:08:17.399 --> 01:08:21.720
<v Speaker 2>again is actually Matteo. I want to mention that on

1111
01:08:22.439 --> 01:08:27.760
<v Speaker 2>X Matteo, you put out videos on a fairly regular basis.

1112
01:08:28.279 --> 01:08:31.279
<v Speaker 2>It's they're relatively short usually I think they're like twenty

1113
01:08:31.319 --> 01:08:35.800
<v Speaker 2>minutes each, usually about a variety of topics related to

1114
01:08:36.000 --> 01:08:41.520
<v Speaker 2>know the Jass development obviously, and they're uniformly excellent, and

1115
01:08:41.600 --> 01:08:45.359
<v Speaker 2>I highly recommend following Matteo and watching the videos that

1116
01:08:45.880 --> 01:08:50.199
<v Speaker 2>come out. So that would be my second pick, And

1117
01:08:50.359 --> 01:08:51.600
<v Speaker 2>those are my picks for today.

1118
01:08:52.159 --> 01:08:55.680
<v Speaker 1>Awesome, Steve, what are your picks.

1119
01:08:55.600 --> 01:09:00.439
<v Speaker 3>Before I get to the high point of every episode,

1120
01:09:00.479 --> 01:09:02.920
<v Speaker 3>which are the dad jokes of the week. An interesting

1121
01:09:03.279 --> 01:09:08.920
<v Speaker 3>video that popped up on YouTube last night by Jeffrey Ray.

1122
01:09:09.199 --> 01:09:13.800
<v Speaker 3>Jeffrey Ray, who is the owner creator of Larra Cass, which,

1123
01:09:13.800 --> 01:09:16.560
<v Speaker 3>if not Larabelle Community is a pretty well known training

1124
01:09:16.600 --> 01:09:21.159
<v Speaker 3>platform for Larabell and on many many other topics as well.

1125
01:09:21.680 --> 01:09:24.560
<v Speaker 3>And he titled it I'm Done, and it's just sort

1126
01:09:24.560 --> 01:09:29.479
<v Speaker 3>of a a it's about thirteen fourteen minutes where he's

1127
01:09:29.520 --> 01:09:31.960
<v Speaker 3>just talking about the impact that AI has had on

1128
01:09:32.199 --> 01:09:34.439
<v Speaker 3>Larrakass and they just had to layoff a bunch of people,

1129
01:09:35.399 --> 01:09:39.600
<v Speaker 3>similar to what happened with Tailwind and the you know,

1130
01:09:39.880 --> 01:09:44.399
<v Speaker 3>sort of the use of AI and coding and you know,

1131
01:09:44.439 --> 01:09:49.600
<v Speaker 3>the pros and cons and sort of almost having to

1132
01:09:49.880 --> 01:09:54.760
<v Speaker 3>use it or get left behind. He's a I gotta

1133
01:09:54.800 --> 01:09:56.119
<v Speaker 3>agree with him in a lot of what he says.

1134
01:09:56.119 --> 01:09:58.600
<v Speaker 3>It's only about fourteen minutes, so it's it's a good watch,

1135
01:09:58.680 --> 01:10:03.159
<v Speaker 3>but it's I think it addresses the reality of AI

1136
01:10:03.319 --> 01:10:06.520
<v Speaker 3>encoding and how it's impact impacting things both I think,

1137
01:10:06.560 --> 01:10:08.079
<v Speaker 3>I think both for good and bad.

1138
01:10:08.680 --> 01:10:12.800
<v Speaker 2>I think we should probably bring a bunch of open

1139
01:10:12.840 --> 01:10:19.920
<v Speaker 2>source creators, people like Matteo, like maybe uh, we've had

1140
01:10:19.920 --> 01:10:24.079
<v Speaker 2>a of the Joel we we've had on the show

1141
01:10:25.720 --> 01:10:29.479
<v Speaker 2>talking about the slint and t slint uh and and

1142
01:10:29.640 --> 01:10:34.760
<v Speaker 2>basically talk about the impact that AI is having on

1143
01:10:34.760 --> 01:10:39.119
<v Speaker 2>on open source developers. It's really cutting the branch that

1144
01:10:39.239 --> 01:10:41.840
<v Speaker 2>a lot of them are sitting on financially.

1145
01:10:41.720 --> 01:10:43.960
<v Speaker 3>On that upper Ever note, I'll get to the dad

1146
01:10:44.039 --> 01:10:49.239
<v Speaker 3>jokes of the week. So, first of all, pretty straightforward

1147
01:10:49.279 --> 01:10:53.199
<v Speaker 3>question here, what do you call a pony with a

1148
01:10:53.279 --> 01:10:56.600
<v Speaker 3>sore throat? A little horse?

1149
01:10:59.439 --> 01:10:59.600
<v Speaker 2>Right?

1150
01:11:02.479 --> 01:11:03.720
<v Speaker 3>So good, thank you, Mateo.

1151
01:11:03.800 --> 01:11:04.159
<v Speaker 2>I love that.

1152
01:11:07.039 --> 01:11:09.319
<v Speaker 3>So everybody knows who Alan Turing is, right, the term

1153
01:11:09.399 --> 01:11:14.000
<v Speaker 3>touring complete Uh, you know in computer science Enigma and yeah,

1154
01:11:14.039 --> 01:11:16.760
<v Speaker 3>he cracked the Enigma codes in World War Two, but

1155
01:11:17.800 --> 01:11:20.840
<v Speaker 3>nobody knows his sister Kay, who provided drink, snacks and

1156
01:11:20.840 --> 01:11:26.560
<v Speaker 3>sandwiches for him and his colleagues. I was in catering, Yeah,

1157
01:11:27.000 --> 01:11:27.319
<v Speaker 3>right right.

1158
01:11:27.800 --> 01:11:29.319
<v Speaker 1>It took me a minute. Yeah.

1159
01:11:29.359 --> 01:11:33.920
<v Speaker 3>And then finally, uh, why does Spider Man hate driving

1160
01:11:33.960 --> 01:11:41.640
<v Speaker 3>with his evil twin because he's a bad parallel parker? Oh?

1161
01:11:41.960 --> 01:11:43.760
<v Speaker 3>Thank you. Those are the dad jokes of the week.

1162
01:11:45.000 --> 01:11:47.960
<v Speaker 1>I usually don't laugh at the dad jokes, but Mateo's

1163
01:11:48.039 --> 01:11:49.520
<v Speaker 1>reaction was priceless.

1164
01:11:50.000 --> 01:11:51.279
<v Speaker 3>That's half the fun sometimes.

1165
01:11:52.000 --> 01:11:54.720
<v Speaker 1>Oh all right, I'm gonna jump in with some picks.

1166
01:11:55.000 --> 01:11:56.960
<v Speaker 1>The first one I always do a board game pick,

1167
01:11:58.439 --> 01:12:02.239
<v Speaker 1>and this one we got for Christmas. Man, has it

1168
01:12:02.279 --> 01:12:04.199
<v Speaker 1>been that long since I've been able to get on

1169
01:12:04.279 --> 01:12:10.960
<v Speaker 1>and record. Yes, thanks Steve. He made me feel better. Anyway.

1170
01:12:11.600 --> 01:12:13.359
<v Speaker 1>The game that one of the games we got was

1171
01:12:13.359 --> 01:12:18.119
<v Speaker 1>Everdell came out twenty eighteen. My wife and I played it,

1172
01:12:18.119 --> 01:12:20.680
<v Speaker 1>so it was just two players with us. It probably

1173
01:12:20.680 --> 01:12:22.880
<v Speaker 1>took us an hour, maybe a little longer to play.

1174
01:12:23.399 --> 01:12:25.920
<v Speaker 1>We were learning it as we went though. I think

1175
01:12:25.960 --> 01:12:29.239
<v Speaker 1>I played it with my sister and my wife another

1176
01:12:29.319 --> 01:12:31.760
<v Speaker 1>time and it took us about the same amount of

1177
01:12:31.760 --> 01:12:33.560
<v Speaker 1>time because at that point we knew what we were doing.

1178
01:12:34.439 --> 01:12:38.800
<v Speaker 1>And anyway, what it is, it's actually the board's kind

1179
01:12:38.840 --> 01:12:42.560
<v Speaker 1>of cool because it's got this tree that you kind

1180
01:12:42.560 --> 01:12:46.359
<v Speaker 1>of slide together. It's made out of cardboard, but it

1181
01:12:46.399 --> 01:12:48.840
<v Speaker 1>looks really cool when it's set up and it's sitting

1182
01:12:48.880 --> 01:12:51.720
<v Speaker 1>on the board. Reminds me a little bit of the

1183
01:12:52.439 --> 01:12:59.880
<v Speaker 1>Tower in Fate of the Fellowship, which is a pandemic

1184
01:13:00.279 --> 01:13:05.079
<v Speaker 1>like game based on Lord of the Rings. But anyway,

1185
01:13:05.159 --> 01:13:09.319
<v Speaker 1>so Everdell plays up to four players and you're trying

1186
01:13:09.319 --> 01:13:11.960
<v Speaker 1>to collect resources in order to fill missions, and you're

1187
01:13:11.960 --> 01:13:18.520
<v Speaker 1>building a little town of animals in you know, basically

1188
01:13:18.600 --> 01:13:20.600
<v Speaker 1>in front of you, and that gives you special ability.

1189
01:13:20.680 --> 01:13:25.279
<v Speaker 1>So it's a pretty standard kind of game. It's just

1190
01:13:25.399 --> 01:13:29.000
<v Speaker 1>you know, a couple of little nuances and stuff. Anyway,

1191
01:13:29.399 --> 01:13:32.159
<v Speaker 1>it was fun. Definitely enjoyed it. It's not.

1192
01:13:33.640 --> 01:13:34.359
<v Speaker 4>It's not so.

1193
01:13:34.560 --> 01:13:37.479
<v Speaker 1>Novel or different or whatever that I would just go

1194
01:13:37.560 --> 01:13:41.880
<v Speaker 1>and reach for it on my own on a regular basis.

1195
01:13:42.039 --> 01:13:44.319
<v Speaker 1>But I did enjoy it. It's definitely a game worth,

1196
01:13:44.520 --> 01:13:47.439
<v Speaker 1>you know, having him playing, and the artwork on it

1197
01:13:47.479 --> 01:13:52.640
<v Speaker 1>is incredible. So I'm going to pick Everdell board game

1198
01:13:52.680 --> 01:13:58.119
<v Speaker 1>has a board game weight of two point eighty three,

1199
01:13:58.239 --> 01:14:02.439
<v Speaker 1>and that means that it's it's it's a fairly involved game,

1200
01:14:02.479 --> 01:14:04.439
<v Speaker 1>but if you've played a lot of the other resource

1201
01:14:04.479 --> 01:14:11.119
<v Speaker 1>gathering deck building kind of games, it's nothing outside of

1202
01:14:11.159 --> 01:14:16.800
<v Speaker 1>the realm of what you're what you've probably already played.

1203
01:14:17.199 --> 01:14:24.960
<v Speaker 1>So I'll pick that, and then what else. I started

1204
01:14:25.000 --> 01:14:28.199
<v Speaker 1>watching land Man and I've been enjoying that. That's on

1205
01:14:28.239 --> 01:14:31.239
<v Speaker 1>Paramount Plus, and so I'm going to pick that. And

1206
01:14:31.279 --> 01:14:34.159
<v Speaker 1>then I watched My wife and I started watching the show,

1207
01:14:34.239 --> 01:14:36.800
<v Speaker 1>and she's a little bit sensitive to people dropping f

1208
01:14:36.880 --> 01:14:39.680
<v Speaker 1>bombs during shows, and so if there's too much of that,

1209
01:14:39.720 --> 01:14:41.720
<v Speaker 1>she won't watch it. And so we watched like the

1210
01:14:41.760 --> 01:14:45.520
<v Speaker 1>first episode way back when of eleven twenty two sixty three,

1211
01:14:47.399 --> 01:14:51.880
<v Speaker 1>which is, uh, there's this history teacher. His friend's been

1212
01:14:51.920 --> 01:14:54.800
<v Speaker 1>going back in time to try and save JFK from

1213
01:14:54.840 --> 01:14:59.279
<v Speaker 1>being assassinated. And so anyway, he takes all of his

1214
01:14:59.319 --> 01:15:03.000
<v Speaker 1>friends research and you know, all the preparation that he's done,

1215
01:15:03.000 --> 01:15:06.600
<v Speaker 1>and he goes back to save JFK and right then

1216
01:15:06.640 --> 01:15:08.399
<v Speaker 1>come back to the future where it's supposed to be

1217
01:15:08.399 --> 01:15:11.479
<v Speaker 1>better because you know, Linda Johnson wouldn't have gotten us

1218
01:15:11.479 --> 01:15:14.039
<v Speaker 1>into the Vietnam War and a whole bunch of other

1219
01:15:14.439 --> 01:15:16.840
<v Speaker 1>things that other people did that you know, this particular

1220
01:15:16.880 --> 01:15:20.640
<v Speaker 1>guy didn't like wouldn't have happened. And anyway, so I'm

1221
01:15:20.640 --> 01:15:23.000
<v Speaker 1>not going to spoil how it changes the future, even

1222
01:15:23.000 --> 01:15:26.359
<v Speaker 1>though the show's like ten years old, just in case

1223
01:15:26.359 --> 01:15:29.560
<v Speaker 1>you want to go watch it, because honestly, it's it's

1224
01:15:29.600 --> 01:15:34.720
<v Speaker 1>actually pretty like the whole journey's pretty pretty interesting to

1225
01:15:34.720 --> 01:15:38.399
<v Speaker 1>watch him go through and you know, encounter people from

1226
01:15:38.399 --> 01:15:41.680
<v Speaker 1>the past and stuff like that. So I'm going to pick.

1227
01:15:42.119 --> 01:15:44.279
<v Speaker 2>So you've got to pick Prime Month plus. How are

1228
01:15:44.319 --> 01:15:46.479
<v Speaker 2>you enjoying Star Trek Starfleet Academy.

1229
01:15:47.039 --> 01:15:51.239
<v Speaker 1>I have not watched it at all. I've seen ads

1230
01:15:51.239 --> 01:15:53.119
<v Speaker 1>for it, but I haven't watched it. Is it good.

1231
01:15:53.840 --> 01:15:57.720
<v Speaker 2>I've not watched it. I'm going based on the reactions

1232
01:15:57.800 --> 01:16:02.960
<v Speaker 2>and the critics. You know, the story that they released

1233
01:16:02.960 --> 01:16:08.279
<v Speaker 2>the first episode for free on YouTube and a nerdratic

1234
01:16:09.359 --> 01:16:12.319
<v Speaker 2>in competition with him basically just put a video of

1235
01:16:13.000 --> 01:16:15.760
<v Speaker 2>doll of Spock sitting on a chair and he got

1236
01:16:15.800 --> 01:16:16.520
<v Speaker 2>more views.

1237
01:16:16.800 --> 01:16:19.520
<v Speaker 1>Oh funny. I have to say that.

1238
01:16:20.960 --> 01:16:23.680
<v Speaker 2>I understand that they did. It's Star Treks Acolyte.

1239
01:16:24.359 --> 01:16:29.680
<v Speaker 1>Okay, Yeah, I've I've liked a lot of stuff on

1240
01:16:30.600 --> 01:16:34.319
<v Speaker 1>Paramount Plus, but yeah, that's not That's not one that

1241
01:16:34.359 --> 01:16:40.000
<v Speaker 1>I've been watching. We liked Star Trek Discovery and Star

1242
01:16:40.079 --> 01:16:44.960
<v Speaker 1>Trek Piccard, but anyway, I haven't watched that one yet.

1243
01:16:45.600 --> 01:16:50.159
<v Speaker 1>So yeah, so Landman and eleven sixty three, which I

1244
01:16:50.159 --> 01:16:54.560
<v Speaker 1>think was originally on Prime and is now on Netflix. Anyway, Tayo,

1245
01:16:54.600 --> 01:16:55.520
<v Speaker 1>what are your picks?

1246
01:16:56.319 --> 01:16:57.960
<v Speaker 4>So the first one is.

1247
01:16:59.399 --> 01:17:02.640
<v Speaker 5>I've been taking a lot with Ai thinks, Okay, as

1248
01:17:02.680 --> 01:17:07.439
<v Speaker 5>everybody and I have having a lot of fun these

1249
01:17:07.520 --> 01:17:13.680
<v Speaker 5>last few days on a project called PI. It's a

1250
01:17:13.720 --> 01:17:17.720
<v Speaker 5>little open source codeing agent that is highly customizable. The

1251
01:17:17.880 --> 01:17:22.000
<v Speaker 5>heart of malt Bot now cloud bot whatever is what

1252
01:17:22.039 --> 01:17:26.239
<v Speaker 5>that thing uses internally to do work. Okay, and it's

1253
01:17:26.279 --> 01:17:30.000
<v Speaker 5>super fun to use and very fun to modify and

1254
01:17:30.479 --> 01:17:31.960
<v Speaker 5>change things and so on and so forth.

1255
01:17:32.680 --> 01:17:36.079
<v Speaker 4>Is really fun. So I've been tinkling with that.

1256
01:17:37.239 --> 01:17:39.720
<v Speaker 5>Also, I can use it with Ulama and even have

1257
01:17:39.760 --> 01:17:44.079
<v Speaker 5>a local model running very easily, and I add some success,

1258
01:17:44.119 --> 01:17:46.319
<v Speaker 5>some success, so I can run the full AI think

1259
01:17:46.359 --> 01:17:50.279
<v Speaker 5>on my machine. Not that I want to, but it's possible.

1260
01:17:50.279 --> 01:17:52.880
<v Speaker 5>So I can literally use those things on a plane

1261
01:17:52.880 --> 01:17:56.079
<v Speaker 5>if I want to, which is something that I really

1262
01:17:56.119 --> 01:17:57.039
<v Speaker 5>wanted to achieve.

1263
01:17:57.520 --> 01:18:04.239
<v Speaker 4>So I have done had fun with that. Okay, yeah,

1264
01:18:03.800 --> 01:18:07.239
<v Speaker 4>it's very easy. The other thing it's we're talking with

1265
01:18:07.279 --> 01:18:10.039
<v Speaker 4>the eye is tile scale. If you're not using tilescale,

1266
01:18:10.319 --> 01:18:15.039
<v Speaker 4>tailscale is you're missing out. Okay. You can interconnect all

1267
01:18:15.039 --> 01:18:17.119
<v Speaker 4>your devices, servers and so and so force in a

1268
01:18:17.159 --> 01:18:23.159
<v Speaker 4>single network. It's phenomenal. Okay, I'm a fan. So try

1269
01:18:23.199 --> 01:18:26.239
<v Speaker 4>that and combination with those two together, I can more

1270
01:18:26.319 --> 01:18:29.119
<v Speaker 4>or ize call things on the phone if I want to,

1271
01:18:29.720 --> 01:18:31.880
<v Speaker 4>and whenever I go, I can just have you know,

1272
01:18:31.960 --> 01:18:36.239
<v Speaker 4>checking on my agents doing things. And yeah, I'm becoming

1273
01:18:36.239 --> 01:18:37.640
<v Speaker 4>one of those people apparently.

1274
01:18:38.319 --> 01:18:42.720
<v Speaker 2>So the problem that I have right now, I know

1275
01:18:42.840 --> 01:18:45.039
<v Speaker 2>that a lot of people are running multiple agents at

1276
01:18:45.079 --> 01:18:49.439
<v Speaker 2>the same time. I'm having problems with that multitasking between

1277
01:18:49.800 --> 01:18:54.840
<v Speaker 2>different tasks myself, so it's difficult for me to schedule

1278
01:18:55.039 --> 01:18:57.720
<v Speaker 2>enough agents to do things all the time in the background.

1279
01:18:59.600 --> 01:19:03.239
<v Speaker 2>I maybe it's a fault of my own as a

1280
01:19:03.279 --> 01:19:08.319
<v Speaker 2>manager or something, but the end result is that I

1281
01:19:08.359 --> 01:19:11.600
<v Speaker 2>often end up waiting for AI to finish something.

1282
01:19:12.800 --> 01:19:17.960
<v Speaker 5>Yeah, which is you know, doesn't spit things up essentially, Well, yes.

1283
01:19:17.880 --> 01:19:21.319
<v Speaker 2>And no, but but yeah, it's kind of like going

1284
01:19:21.399 --> 01:19:26.199
<v Speaker 2>back to the early two thousands when we had slow compilers.

1285
01:19:27.359 --> 01:19:29.199
<v Speaker 4>Yep, a little bit.

1286
01:19:30.000 --> 01:19:32.439
<v Speaker 1>All right, well, Matteo. If people want to continue to

1287
01:19:32.479 --> 01:19:34.159
<v Speaker 1>follow along with the things you're working on, where do

1288
01:19:34.159 --> 01:19:34.600
<v Speaker 1>they find it.

1289
01:19:35.479 --> 01:19:41.199
<v Speaker 5>They find me on Twitter at mate Hoolina, or they

1290
01:19:41.239 --> 01:19:43.520
<v Speaker 5>can subscribe to my newsletter and.

1291
01:19:44.880 --> 01:19:49.039
<v Speaker 4>At nodland dot dev and yeah, that's kind of.

1292
01:19:48.960 --> 01:19:52.800
<v Speaker 5>It cool, and of course follow at Clubformatic and contact

1293
01:19:52.880 --> 01:19:54.239
<v Speaker 5>us if you need any help.

1294
01:19:54.720 --> 01:19:55.680
<v Speaker 4>Very happy to chat.

1295
01:19:56.159 --> 01:19:57.680
<v Speaker 1>Sounds good, all right.

1296
01:19:57.920 --> 01:20:01.960
<v Speaker 2>Support the people who are making no literally work.

1297
01:20:03.720 --> 01:20:07.399
<v Speaker 1>Yeah all right, yeah, we'll go ahead and wrap up

1298
01:20:07.800 --> 01:20:15.680
<v Speaker 1>until next time. That's out. Mm hmm.
