WEBVTT

1
00:00:05.280 --> 00:00:09.000
<v Speaker 1>Hey, folks, Welcome back to another JavaScript jabber. This week

2
00:00:09.000 --> 00:00:11.199
<v Speaker 1>on our panel, we have Dan Shapeer.

3
00:00:11.800 --> 00:00:14.560
<v Speaker 2>Hello, from what we in Tel Aviv like to call

4
00:00:14.640 --> 00:00:15.000
<v Speaker 2>it winter.

5
00:00:16.839 --> 00:00:19.320
<v Speaker 1>Well, I wish our winters were that warm. I'm Charles

6
00:00:19.320 --> 00:00:21.640
<v Speaker 1>Maxwood from top Endevs, where I think you got below

7
00:00:21.679 --> 00:00:25.760
<v Speaker 1>freezing last night. That zero if you're not in the

8
00:00:25.879 --> 00:00:30.320
<v Speaker 1>US and use something other than fahrenheit, and that's like

9
00:00:30.359 --> 00:00:33.600
<v Speaker 1>thirty two degrees fahrenheit, So got real cold last night.

10
00:00:35.359 --> 00:00:38.200
<v Speaker 1>This week, we're following up on the nine Node Pillars

11
00:00:38.320 --> 00:00:40.159
<v Speaker 1>episode that came out a few weeks ago or a

12
00:00:40.200 --> 00:00:43.679
<v Speaker 1>month ago, so we've got some familiar faces, but we'll

13
00:00:43.679 --> 00:00:46.159
<v Speaker 1>go ahead and let them introduce themselves again. I'm just

14
00:00:46.240 --> 00:00:49.000
<v Speaker 1>going to start at the top of my screen and

15
00:00:49.079 --> 00:00:51.240
<v Speaker 1>we'll just kind of work our way down. We have

16
00:00:51.399 --> 00:00:53.799
<v Speaker 1>Michael Dawson. Michael, do you want to introduce yourself?

17
00:00:54.479 --> 00:00:54.640
<v Speaker 2>Hi?

18
00:00:54.759 --> 00:00:57.240
<v Speaker 3>Michael Dawson on the NODS lead for Rahat and at

19
00:00:57.240 --> 00:00:59.679
<v Speaker 3>GM as well as active in the project from the

20
00:00:59.679 --> 00:01:02.920
<v Speaker 3>Technic Steering Committee and live definitely where it is getting

21
00:01:02.920 --> 00:01:04.519
<v Speaker 3>below zero at nineteen.

22
00:01:05.719 --> 00:01:09.680
<v Speaker 1>Right, practically, neighbors. We also have Matteo Colina.

23
00:01:10.519 --> 00:01:14.079
<v Speaker 4>Hi, everyone, I'm mate Coolina Platmatic co founder and CEO

24
00:01:14.560 --> 00:01:17.079
<v Speaker 4>ps enter on the mat jest I think, a steering committee,

25
00:01:17.359 --> 00:01:20.239
<v Speaker 4>a board member of the Opinion Jazz Foundation. Also of

26
00:01:20.280 --> 00:01:22.799
<v Speaker 4>many modules. You are probably using my software, even if

27
00:01:22.799 --> 00:01:24.319
<v Speaker 4>you don't, even if you want or not.

28
00:01:26.480 --> 00:01:29.400
<v Speaker 5>Probably my tagline awesome.

29
00:01:29.400 --> 00:01:30.799
<v Speaker 1>We also have James Snell.

30
00:01:32.359 --> 00:01:36.120
<v Speaker 6>You know, uh yeah, James del Con from central California

31
00:01:36.920 --> 00:01:44.400
<v Speaker 6>where winter here means just slightly less unshine than I'm

32
00:01:44.400 --> 00:01:46.319
<v Speaker 6>at Claude Flair. I work on their workers run time.

33
00:01:46.359 --> 00:01:48.959
<v Speaker 6>I'm on the Note technical Steering Committee. I've been contributing

34
00:01:49.000 --> 00:01:52.120
<v Speaker 6>to Note for most ten years. We have in March

35
00:01:52.480 --> 00:01:53.920
<v Speaker 6>in just a few months, I'll have been on the

36
00:01:53.959 --> 00:01:56.560
<v Speaker 6>technical Steering committee for Note for ten years old decades,

37
00:01:56.640 --> 00:01:59.560
<v Speaker 6>so which is which is crazy? Yeah, that's.

38
00:02:01.159 --> 00:02:04.200
<v Speaker 1>Awesome. And finally we have Natalia Vendito.

39
00:02:06.079 --> 00:02:08.360
<v Speaker 7>Yeah, thank you for having me.

40
00:02:08.879 --> 00:02:13.039
<v Speaker 8>I am the lead for developer tools and Experiences for

41
00:02:13.199 --> 00:02:17.360
<v Speaker 8>the script on usure and yeah, also participation of the

42
00:02:17.439 --> 00:02:18.800
<v Speaker 8>Open Jes foundations.

43
00:02:18.919 --> 00:02:20.680
<v Speaker 7>We see, that's me.

44
00:02:21.400 --> 00:02:23.840
<v Speaker 1>So yeah. So last time you talked about the nine

45
00:02:23.840 --> 00:02:27.879
<v Speaker 1>node pillars, I think it's worth maybe a five ten

46
00:02:27.919 --> 00:02:30.960
<v Speaker 1>minute review something like that, just trying to get people

47
00:02:31.000 --> 00:02:33.360
<v Speaker 1>back into it. Obviously, folks can go back and listen

48
00:02:33.400 --> 00:02:35.960
<v Speaker 1>to the other episode if they want the in depth discussion,

49
00:02:36.800 --> 00:02:37.759
<v Speaker 1>but then we should.

50
00:02:38.479 --> 00:02:40.919
<v Speaker 2>It was an excellent They definitely should. It was an

51
00:02:40.919 --> 00:02:44.240
<v Speaker 2>excellent conversation, it's an excellent article, and it's an it

52
00:02:44.280 --> 00:02:48.000
<v Speaker 2>was an excellent conversation in my opinion, unbiased opinion.

53
00:02:49.479 --> 00:02:51.960
<v Speaker 1>Well, my point is is then we can get on

54
00:02:52.080 --> 00:02:56.479
<v Speaker 1>with the other you know, four or five pillars, So

55
00:02:56.840 --> 00:02:59.319
<v Speaker 1>really quickly, I'm just gonna pull them out of the article,

56
00:03:00.360 --> 00:03:02.800
<v Speaker 1>and then if whoever wants you can kind of jump

57
00:03:02.800 --> 00:03:05.879
<v Speaker 1>in and just kind of summarize what was discussed. The

58
00:03:05.879 --> 00:03:07.960
<v Speaker 1>first one is do not block the event loop.

59
00:03:11.719 --> 00:03:13.000
<v Speaker 6>Yeah, this one's pretty straightforward.

60
00:03:13.000 --> 00:03:13.159
<v Speaker 2>You know.

61
00:03:13.199 --> 00:03:14.840
<v Speaker 6>It's like, you know, you got to keep in mind

62
00:03:14.840 --> 00:03:18.759
<v Speaker 6>that anytime you're running some bit of jobascripts, you have

63
00:03:18.800 --> 00:03:21.319
<v Speaker 6>some function, nothing else is going to happen on that

64
00:03:21.400 --> 00:03:23.879
<v Speaker 6>event loop. So you need to make sure you're dividing

65
00:03:23.879 --> 00:03:27.439
<v Speaker 6>your work into two very small chunks. Allow the event loop.

66
00:03:27.439 --> 00:03:29.439
<v Speaker 6>It turns you can pick up new requests, you can

67
00:03:29.879 --> 00:03:33.319
<v Speaker 6>process io that that kind of thing. So pay attention

68
00:03:33.759 --> 00:03:37.840
<v Speaker 6>to you know, that event loop delay, event loop utilization.

69
00:03:38.400 --> 00:03:40.120
<v Speaker 6>There's a couple of metrics there. You really want to

70
00:03:40.159 --> 00:03:42.960
<v Speaker 6>watch closely and optimize your applications around that.

71
00:03:44.159 --> 00:03:48.599
<v Speaker 2>Yeah, and also offload if you can lengths casts to

72
00:03:48.680 --> 00:03:50.120
<v Speaker 2>a worker a total post support.

73
00:03:51.080 --> 00:03:54.240
<v Speaker 1>Yeah, and I'm assuming you talked about strategies on how

74
00:03:54.240 --> 00:03:55.680
<v Speaker 1>to do that and what your coach should look like

75
00:03:55.919 --> 00:03:56.800
<v Speaker 1>in the other episode.

76
00:03:56.879 --> 00:03:58.680
<v Speaker 3>So yep, yep.

77
00:03:59.680 --> 00:04:02.840
<v Speaker 1>The next one is monitor node specific metrics and act

78
00:04:02.919 --> 00:04:03.240
<v Speaker 1>on them.

79
00:04:05.360 --> 00:04:05.960
<v Speaker 5>Let me take this.

80
00:04:06.919 --> 00:04:10.639
<v Speaker 4>Most of the things that people do when the plying

81
00:04:10.680 --> 00:04:15.520
<v Speaker 4>no JS is they monitor no JS like it's in

82
00:04:15.560 --> 00:04:19.079
<v Speaker 4>a completely like it's a black box. And this is

83
00:04:19.079 --> 00:04:25.040
<v Speaker 4>a massive it's a massive pain because you because in

84
00:04:25.199 --> 00:04:28.800
<v Speaker 4>most cases no JS has its own quirks and peculiarities,

85
00:04:29.079 --> 00:04:32.319
<v Speaker 4>and monitoring a black box, you are essentially making it

86
00:04:32.319 --> 00:04:37.120
<v Speaker 4>a service. Biggest one being memory. JS will use as

87
00:04:37.240 --> 00:04:39.759
<v Speaker 4>much memory as you make it available to it. And

88
00:04:39.879 --> 00:04:44.519
<v Speaker 4>if you start killing it when it reaches whatever arbitrary threshold,

89
00:04:45.079 --> 00:04:47.720
<v Speaker 4>you know you're killing the process yourself. And and then

90
00:04:47.759 --> 00:04:50.279
<v Speaker 4>you're starting it and complaining that your process is crashing

91
00:04:50.279 --> 00:04:52.199
<v Speaker 4>all the time you're killing it, of course is crashing

92
00:04:52.199 --> 00:04:56.120
<v Speaker 4>all the time. Okay, it's literally like this thing alone

93
00:04:56.199 --> 00:04:59.240
<v Speaker 4>is probably don't know worth a few hours of fright time,

94
00:04:59.680 --> 00:05:02.680
<v Speaker 4>super high end colsantacy. So this is for free, so

95
00:05:02.759 --> 00:05:04.879
<v Speaker 4>you know to take it, take it the way you want.

96
00:05:05.079 --> 00:05:09.240
<v Speaker 4>But this is essentially, you know, very easy fix. But

97
00:05:09.399 --> 00:05:12.240
<v Speaker 4>most people don't Most people monitor assess micos if you

98
00:05:12.399 --> 00:05:16.079
<v Speaker 4>use it, but don't look into what's happening inside the process.

99
00:05:16.160 --> 00:05:17.879
<v Speaker 5>And this is you know, makes all the difference.

100
00:05:18.480 --> 00:05:22.519
<v Speaker 6>One of the key metrics there that was added relatively

101
00:05:22.560 --> 00:05:25.519
<v Speaker 6>recently is the event look utilization. It's going to say

102
00:05:25.519 --> 00:05:28.319
<v Speaker 6>you a whole lot more information than monitoring a CPO.

103
00:05:29.000 --> 00:05:33.879
<v Speaker 1>Yeah, awesome. The next one is use node LTS, which

104
00:05:33.920 --> 00:05:36.399
<v Speaker 1>is long term support versions in production.

105
00:05:38.439 --> 00:05:40.439
<v Speaker 3>I think that one is like, you know, as a project,

106
00:05:40.519 --> 00:05:44.800
<v Speaker 3>we support the long term support streams and the recommendations

107
00:05:44.839 --> 00:05:48.519
<v Speaker 3>really stick with those because in terms of security effects

108
00:05:48.680 --> 00:05:50.439
<v Speaker 3>and stuff like that, that's where you're going to get

109
00:05:50.439 --> 00:05:52.959
<v Speaker 3>those and most people don't want to update when those

110
00:05:53.000 --> 00:05:53.319
<v Speaker 3>come out.

111
00:05:54.639 --> 00:05:58.000
<v Speaker 2>And these are the even numbered versions, right, that's.

112
00:05:57.839 --> 00:06:01.319
<v Speaker 3>Right, and they come out every October and are supported

113
00:06:01.399 --> 00:06:02.480
<v Speaker 3>for thirty months.

114
00:06:03.040 --> 00:06:06.720
<v Speaker 1>They usually say LTS. It's like it's the version number

115
00:06:06.720 --> 00:06:09.480
<v Speaker 1>that says LTS. So if you have a question, just

116
00:06:09.600 --> 00:06:14.040
<v Speaker 1>look for that and you'll know. I think we all

117
00:06:14.120 --> 00:06:15.720
<v Speaker 1>kind of stared at each other on that one, Like

118
00:06:15.759 --> 00:06:21.000
<v Speaker 1>it was pretty clear that that's a good move. The

119
00:06:21.040 --> 00:06:24.000
<v Speaker 1>fourth one is automate testing, code re view and conformance

120
00:06:24.040 --> 00:06:25.079
<v Speaker 1>as much as possible.

121
00:06:25.839 --> 00:06:28.079
<v Speaker 3>Yeah, that one I'll jump in. We talked about last time.

122
00:06:28.759 --> 00:06:31.720
<v Speaker 3>I think like no just is known for being able

123
00:06:31.720 --> 00:06:34.720
<v Speaker 3>to let you move really fast and be productive, but

124
00:06:35.279 --> 00:06:37.680
<v Speaker 3>you need really good testing to be able to move

125
00:06:37.759 --> 00:06:39.720
<v Speaker 3>quickly to make sure you're not going to break things.

126
00:06:39.720 --> 00:06:41.639
<v Speaker 3>And so that's where we last time. We talked about

127
00:06:41.639 --> 00:06:44.199
<v Speaker 3>like how that how it is really your enabler to

128
00:06:44.240 --> 00:06:47.639
<v Speaker 3>take advantage of the sort of speed and agility that

129
00:06:47.720 --> 00:06:48.879
<v Speaker 3>node gives.

130
00:06:49.439 --> 00:06:52.199
<v Speaker 2>We also spoke about the fact that people still use

131
00:06:52.240 --> 00:06:57.240
<v Speaker 2>old testing frameworks which are showing their age, and that

132
00:06:57.399 --> 00:07:00.879
<v Speaker 2>Node now comes with its own built into framework that

133
00:07:00.959 --> 00:07:03.439
<v Speaker 2>you can really easily leverage out of the box.

134
00:07:06.439 --> 00:07:09.240
<v Speaker 1>Good deal. And then it sounded like you got part

135
00:07:09.279 --> 00:07:13.839
<v Speaker 1>way into but didn't completely discuss avoid dependency creep.

136
00:07:18.600 --> 00:07:22.959
<v Speaker 2>Yes, we spoke at length about how NPM it's kind

137
00:07:22.959 --> 00:07:26.399
<v Speaker 2>of like this black hole which sucks the entire universe

138
00:07:26.439 --> 00:07:29.480
<v Speaker 2>into it. So you add one dependency which brings on

139
00:07:29.680 --> 00:07:32.560
<v Speaker 2>another couple for the ride, which bring even more and

140
00:07:32.600 --> 00:07:35.199
<v Speaker 2>more and more. And we talked about the fact that

141
00:07:35.279 --> 00:07:39.279
<v Speaker 2>you need to really be how would I say it,

142
00:07:43.360 --> 00:07:47.800
<v Speaker 2>cognizant of what you're bringing in intentional I think was

143
00:07:47.800 --> 00:07:51.720
<v Speaker 2>the term that we use. Think about what you're bringing

144
00:07:51.759 --> 00:07:53.959
<v Speaker 2>in and why you actually need it, and if there

145
00:07:54.000 --> 00:08:00.120
<v Speaker 2>are lighterweight alternatives, and beware utilizing multiple versions of the

146
00:08:00.240 --> 00:08:06.000
<v Speaker 2>same library. Anything else we mentioned that I'm missing, Yeah, I.

147
00:08:06.000 --> 00:08:08.959
<v Speaker 3>Think that one of the aspects was like within an organization,

148
00:08:09.680 --> 00:08:11.639
<v Speaker 3>the great the good thing about NPM and all the

149
00:08:11.680 --> 00:08:13.879
<v Speaker 3>choices there is there's lots of different choices, but like

150
00:08:13.920 --> 00:08:16.079
<v Speaker 3>in an organization, it would make a lot of sense

151
00:08:16.759 --> 00:08:19.800
<v Speaker 3>to choose a more standardized set of packages as opposed

152
00:08:19.839 --> 00:08:23.720
<v Speaker 3>to having five copies of something which does the same

153
00:08:23.759 --> 00:08:26.199
<v Speaker 3>thing but are actually slightly different. Because when it comes

154
00:08:26.279 --> 00:08:29.680
<v Speaker 3>to helping each other or to debug issues or to

155
00:08:29.720 --> 00:08:32.440
<v Speaker 3>be able to support them, that can be an advantage.

156
00:08:32.440 --> 00:08:34.519
<v Speaker 3>Of course, you know, there's always cases where you want

157
00:08:34.559 --> 00:08:37.879
<v Speaker 3>to use something special to your particular effort, but like

158
00:08:37.960 --> 00:08:40.840
<v Speaker 3>that's probably the twenty percent case versus the eighty percent.

159
00:08:42.600 --> 00:08:45.120
<v Speaker 2>By the way, with regard to that one thing that

160
00:08:45.200 --> 00:08:47.840
<v Speaker 2>I'm thought of and I don't think I mentioned the

161
00:08:47.919 --> 00:08:51.919
<v Speaker 2>last time we spoke about this, is the fact that

162
00:08:52.000 --> 00:08:57.559
<v Speaker 2>I know some organizations that intentionally take call it micro

163
00:08:57.639 --> 00:09:01.559
<v Speaker 2>front ends micro services type approach of trying to create

164
00:09:01.559 --> 00:09:05.759
<v Speaker 2>as much segregation as possible between various teams and reduce

165
00:09:05.840 --> 00:09:10.519
<v Speaker 2>teams dependencies or dependency on each other. And that means

166
00:09:10.559 --> 00:09:15.240
<v Speaker 2>that for example, one team might choose to use one

167
00:09:16.799 --> 00:09:20.000
<v Speaker 2>package or library and another team should be free to

168
00:09:20.120 --> 00:09:24.039
<v Speaker 2>choose something else, or that they don't need to move

169
00:09:24.080 --> 00:09:27.600
<v Speaker 2>at the same rate with regard to version ing and

170
00:09:28.000 --> 00:09:31.000
<v Speaker 2>stuff like that. Now, obviously they if they go the

171
00:09:31.039 --> 00:09:34.559
<v Speaker 2>way or the whole way with microservices, then they're probably

172
00:09:34.600 --> 00:09:38.600
<v Speaker 2>also running separate node instances, which might reduce the impact,

173
00:09:38.759 --> 00:09:41.559
<v Speaker 2>but they might be running within the same note instance,

174
00:09:42.200 --> 00:09:46.559
<v Speaker 2>and then they're kind of working in contradiction to this recommendation.

175
00:09:48.600 --> 00:09:50.600
<v Speaker 3>I think, like if you look at it, like maybe

176
00:09:51.000 --> 00:09:54.679
<v Speaker 3>that plays into not using like not forcing people to

177
00:09:54.679 --> 00:09:56.799
<v Speaker 3>be using the same version. But I still think even

178
00:09:56.799 --> 00:10:00.279
<v Speaker 3>in that case, there's value to say, like let's all

179
00:10:00.399 --> 00:10:02.600
<v Speaker 3>choose the same loger, right, Like we don't need to

180
00:10:02.679 --> 00:10:06.000
<v Speaker 3>use ten different bloggers. So for example, if somebody moves

181
00:10:06.000 --> 00:10:08.519
<v Speaker 3>from one team to the other, they they already know

182
00:10:08.679 --> 00:10:10.799
<v Speaker 3>the log or in the patterns and so forth they're

183
00:10:10.919 --> 00:10:15.600
<v Speaker 3>used and breaking it up into micro services like that's

184
00:10:15.600 --> 00:10:17.720
<v Speaker 3>sort of a different kind of dependency in my mind.

185
00:10:17.799 --> 00:10:21.320
<v Speaker 1>Anyway, Yeah, I agree. I've worked on a number of

186
00:10:21.360 --> 00:10:23.720
<v Speaker 1>projects where we you know, we try to segregate things

187
00:10:23.720 --> 00:10:26.480
<v Speaker 1>out this way, and what I found is that sometimes

188
00:10:26.480 --> 00:10:28.720
<v Speaker 1>there are good reasons for deviating from what the other

189
00:10:28.720 --> 00:10:31.600
<v Speaker 1>teams are doing, and sometimes there really aren't. And so

190
00:10:32.480 --> 00:10:35.240
<v Speaker 1>a lot of this, you know, they try and segregate

191
00:10:35.320 --> 00:10:39.080
<v Speaker 1>it so the teams don't have to spend as much time,

192
00:10:39.159 --> 00:10:43.519
<v Speaker 1>you know, coming together and collaborating. But this is more

193
00:10:43.519 --> 00:10:47.200
<v Speaker 1>of an organizational issue, I think, than than a code issue,

194
00:10:47.200 --> 00:10:49.720
<v Speaker 1>in the sense that you should still be talking and

195
00:10:49.759 --> 00:10:52.039
<v Speaker 1>you can still leverage the expertise of the other team

196
00:10:52.080 --> 00:10:54.919
<v Speaker 1>where appropriate and say, all right, we've got to solve

197
00:10:54.960 --> 00:10:57.960
<v Speaker 1>this problem. We know you have this same problem. What

198
00:10:58.000 --> 00:10:59.919
<v Speaker 1>are you using And then you can have the discussion

199
00:11:00.039 --> 00:11:03.600
<v Speaker 1>about what and where and why. And then when we

200
00:11:03.639 --> 00:11:06.440
<v Speaker 1>look at it from our problem perspective, right, because we're

201
00:11:06.440 --> 00:11:08.440
<v Speaker 1>working on a different part of the app, then we

202
00:11:08.519 --> 00:11:11.639
<v Speaker 1>may say that all makes sense, and we tried to

203
00:11:11.639 --> 00:11:14.159
<v Speaker 1>put it in, but it turned out these concerns lead

204
00:11:14.240 --> 00:11:16.360
<v Speaker 1>us to a different solution. But then you have a

205
00:11:16.399 --> 00:11:18.440
<v Speaker 1>good reason for saying this is why we're doing it

206
00:11:18.480 --> 00:11:21.639
<v Speaker 1>different as opposed to the other thing. But it also

207
00:11:21.759 --> 00:11:24.279
<v Speaker 1>then makes people more mobile between the teams. It makes

208
00:11:24.279 --> 00:11:26.799
<v Speaker 1>it easier to talk about some of the similar issues.

209
00:11:27.159 --> 00:11:30.039
<v Speaker 1>And so I think there's some nuance here, but I

210
00:11:30.200 --> 00:11:33.360
<v Speaker 1>like the direction of saying, hey, at least consider what

211
00:11:33.399 --> 00:11:35.159
<v Speaker 1>everybody else is doing in your organization.

212
00:11:35.559 --> 00:11:39.279
<v Speaker 4>And part of my part of the concerns here is

213
00:11:39.840 --> 00:11:45.480
<v Speaker 4>you really want to to even say okay. So we

214
00:11:45.559 --> 00:11:50.200
<v Speaker 4>have created a way to a little module to call

215
00:11:50.399 --> 00:11:54.080
<v Speaker 4>this micro service okay that is consumed by everybody okay,

216
00:11:54.600 --> 00:11:57.120
<v Speaker 4>and I want to take that code and publish it

217
00:11:57.200 --> 00:12:02.879
<v Speaker 4>on my internal registry because otherwise each other team is

218
00:12:02.879 --> 00:12:05.399
<v Speaker 4>going to redew it, and each other team is going

219
00:12:05.399 --> 00:12:11.480
<v Speaker 4>to use a different HDP library for calling it okay,

220
00:12:12.120 --> 00:12:16.720
<v Speaker 4>which is bananas. I've seen this happening over and over again. Okay,

221
00:12:16.840 --> 00:12:21.120
<v Speaker 4>literally time wasted due to writing API clients. But now

222
00:12:21.120 --> 00:12:24.240
<v Speaker 4>we have a point there for top creating API clients.

223
00:12:24.360 --> 00:12:28.679
<v Speaker 4>But this is essentially this is part of the problem.

224
00:12:29.360 --> 00:12:31.799
<v Speaker 4>This is one of the problems. This happens to all

225
00:12:31.799 --> 00:12:32.720
<v Speaker 4>the things okay.

226
00:12:33.240 --> 00:12:38.120
<v Speaker 5>It is I need a library to validate that.

227
00:12:38.000 --> 00:12:44.480
<v Speaker 4>My custom field is correct, right, and then I need

228
00:12:44.519 --> 00:12:47.919
<v Speaker 4>this custom data. Well, let's put it somewhere so that

229
00:12:48.000 --> 00:12:50.840
<v Speaker 4>I don't need to implement it all every every single time.

230
00:12:51.799 --> 00:12:56.279
<v Speaker 6>So yeah, it just comes out of being intentional. You

231
00:12:56.320 --> 00:12:59.200
<v Speaker 6>need to be more intentional than your opinion. Like engineers

232
00:12:59.240 --> 00:13:01.399
<v Speaker 6>are going to have opinions. You know, I don't agree

233
00:13:01.399 --> 00:13:03.240
<v Speaker 6>with the displiment right into the library. Does it a

234
00:13:03.279 --> 00:13:06.240
<v Speaker 6>different way, And it's like in an organization, that's just

235
00:13:06.279 --> 00:13:09.440
<v Speaker 6>not our work. You can get so far with it.

236
00:13:10.240 --> 00:13:14.159
<v Speaker 6>Let's just cause more headaches and overhead. So do it once,

237
00:13:14.240 --> 00:13:16.279
<v Speaker 6>publish it for everyone to use. And you know what

238
00:13:16.320 --> 00:13:17.840
<v Speaker 6>if you don't agree with that one hundred percent, so

239
00:13:17.879 --> 00:13:18.639
<v Speaker 6>what use it anyway?

240
00:13:19.480 --> 00:13:25.960
<v Speaker 1>M Yeah, enterprise I agree, go ahead, Natalia sorry, yeah.

241
00:13:26.360 --> 00:13:29.000
<v Speaker 7>Yeah, in enterprise development, I think many.

242
00:13:28.759 --> 00:13:32.440
<v Speaker 8>People forget there is this intermediately year like everybody can

243
00:13:32.480 --> 00:13:34.200
<v Speaker 8>consume from upstream.

244
00:13:33.799 --> 00:13:35.039
<v Speaker 7>Whatever module they want.

245
00:13:35.200 --> 00:13:40.120
<v Speaker 8>But again, like Matteo and James uh stay that, you

246
00:13:40.320 --> 00:13:43.080
<v Speaker 8>need to be conscious of what you're building yourself and

247
00:13:43.159 --> 00:13:45.519
<v Speaker 8>make it available to others. In the end, you have

248
00:13:45.600 --> 00:13:50.120
<v Speaker 8>a smaller ecosystem with that within your company, your organization

249
00:13:50.519 --> 00:13:55.759
<v Speaker 8>that allows you to publish to any private registry and

250
00:13:55.879 --> 00:13:59.919
<v Speaker 8>also function in the same way as open source by

251
00:14:00.200 --> 00:14:02.200
<v Speaker 8>within the boundaries of your organization.

252
00:14:02.320 --> 00:14:03.279
<v Speaker 9>And by the way, this is.

253
00:14:04.919 --> 00:14:10.120
<v Speaker 8>Definitely an organizational convenience, not so much at a metal one.

254
00:14:10.159 --> 00:14:13.279
<v Speaker 8>I think in the front end, definitely try to keep

255
00:14:14.639 --> 00:14:18.480
<v Speaker 8>dependencies that you're probably shipping over the wire minimum. But

256
00:14:18.559 --> 00:14:20.360
<v Speaker 8>in the back end, what you want to do is

257
00:14:20.399 --> 00:14:25.559
<v Speaker 8>to make sure that you have a lower maintenance requirement.

258
00:14:27.000 --> 00:14:30.279
<v Speaker 7>Than when you have a lot of modules to maintain.

259
00:14:32.000 --> 00:14:36.879
<v Speaker 2>One thing that I encountered with organizations thinking about reusing

260
00:14:37.120 --> 00:14:40.679
<v Speaker 2>their own components within the organization. So sometimes they're very

261
00:14:40.720 --> 00:14:43.480
<v Speaker 2>explicit about it. So for example, if an organization in

262
00:14:43.559 --> 00:14:47.080
<v Speaker 2>the context of front and development, an organization decides they're

263
00:14:47.120 --> 00:14:50.480
<v Speaker 2>going to have a design system and the implement some

264
00:14:50.519 --> 00:14:56.440
<v Speaker 2>sort of a front end library that's pretty typical but working,

265
00:14:56.480 --> 00:14:59.480
<v Speaker 2>and let's say in a certain project, and then coming

266
00:14:59.519 --> 00:15:02.279
<v Speaker 2>to a conclude and hey, this bit of code that

267
00:15:02.360 --> 00:15:05.840
<v Speaker 2>I wrote seems to be something that will be generally

268
00:15:06.000 --> 00:15:11.480
<v Speaker 2>useful across the entire organizations. People have that a harm moment,

269
00:15:11.919 --> 00:15:17.480
<v Speaker 2>but are sometimes hesitant to act on it because you're

270
00:15:17.519 --> 00:15:21.720
<v Speaker 2>assuming a lot more responsibility than you originally had. Like

271
00:15:21.799 --> 00:15:25.240
<v Speaker 2>if you're just writing something for your own use within

272
00:15:25.279 --> 00:15:28.639
<v Speaker 2>your own team, that's one thing, but committing to support

273
00:15:28.720 --> 00:15:32.320
<v Speaker 2>every use case within the larger organization. That's a different

274
00:15:32.360 --> 00:15:37.039
<v Speaker 2>type level of commitment altogether, and making that jump can

275
00:15:37.080 --> 00:15:39.080
<v Speaker 2>be you know significant.

276
00:15:40.919 --> 00:15:42.399
<v Speaker 9>Yeah, that's true.

277
00:15:42.480 --> 00:15:47.679
<v Speaker 7>I have sorry, go ahead, go ahead, Michael, I said.

278
00:15:47.639 --> 00:15:49.320
<v Speaker 3>That seems to be the thing in life. The more

279
00:15:49.399 --> 00:15:51.320
<v Speaker 3>you do, the more you pick up in terms of

280
00:15:51.360 --> 00:15:54.360
<v Speaker 3>responsibility of keeping things going. So I can totally see

281
00:15:54.360 --> 00:15:56.120
<v Speaker 3>people worrying about that.

282
00:15:56.679 --> 00:16:02.039
<v Speaker 4>Now I have an absolute counter argument to okay, and

283
00:16:03.320 --> 00:16:05.919
<v Speaker 4>I want to flag out this functional and why you

284
00:16:06.000 --> 00:16:10.440
<v Speaker 4>need to be intentional when creating this kind of software,

285
00:16:10.480 --> 00:16:14.080
<v Speaker 4>when when thinking about dependencies and software usability within your

286
00:16:14.120 --> 00:16:19.080
<v Speaker 4>organization and enterprise and also our enterprise about absolutely sabotage

287
00:16:19.120 --> 00:16:24.159
<v Speaker 4>themselves while doing so. Okay, so imagine that each team

288
00:16:24.399 --> 00:16:27.679
<v Speaker 4>needs to, you know, implement a piece of functionality. Okay,

289
00:16:28.159 --> 00:16:31.639
<v Speaker 4>Now one of the teams that they discuss, one of

290
00:16:31.720 --> 00:16:34.159
<v Speaker 4>the teams is the first one, and they created their

291
00:16:34.159 --> 00:16:36.600
<v Speaker 4>own little module to do this, and this is well

292
00:16:36.639 --> 00:16:40.879
<v Speaker 4>it it is. I'm publishing it on my NPM internal

293
00:16:40.960 --> 00:16:44.639
<v Speaker 4>MPM rights. Great, everybody is happy, the management is very happy.

294
00:16:44.679 --> 00:16:46.320
<v Speaker 4>We saved a maunch of money, so we need to

295
00:16:46.440 --> 00:16:48.120
<v Speaker 4>can reuse all these things.

296
00:16:48.159 --> 00:16:49.840
<v Speaker 5>Fantastic okay.

297
00:16:50.480 --> 00:16:54.600
<v Speaker 4>Now, however, a moment after that's happened, the team that

298
00:16:54.679 --> 00:17:00.320
<v Speaker 4>created that module completely drops the ball on it because nope,

299
00:17:00.440 --> 00:17:03.279
<v Speaker 4>it's not part of my OKR anymore. The quarter has changed,

300
00:17:03.320 --> 00:17:07.240
<v Speaker 4>so I'm not maintaining this anymore. And this is the

301
00:17:07.279 --> 00:17:10.680
<v Speaker 4>typical thing that happens with okay, are okay? If what

302
00:17:10.720 --> 00:17:13.759
<v Speaker 4>you're doing is not part of of your okay of

303
00:17:13.920 --> 00:17:17.599
<v Speaker 4>of your does not help you achieve your key results,

304
00:17:17.599 --> 00:17:20.519
<v Speaker 4>you are absolute that thing it needs to be dropped, okay,

305
00:17:20.799 --> 00:17:23.119
<v Speaker 4>even though it's important and you know you're saving the

306
00:17:23.160 --> 00:17:27.680
<v Speaker 4>compliant of money by avoiding duplications. So, in reality, a

307
00:17:27.759 --> 00:17:32.440
<v Speaker 4>lot of teams in some enterprise works a little bit

308
00:17:32.480 --> 00:17:34.279
<v Speaker 4>like silos.

309
00:17:34.119 --> 00:17:35.440
<v Speaker 2>And they are a little bit.

310
00:17:36.880 --> 00:17:40.319
<v Speaker 4>Yeah I have Yeah, I think Natali has a few

311
00:17:40.359 --> 00:17:42.960
<v Speaker 4>stories on on that, so I don't know it's.

312
00:17:44.039 --> 00:17:47.599
<v Speaker 8>But yeah, after a decad as an enterprise developer, I

313
00:17:47.640 --> 00:17:51.720
<v Speaker 8>have many stories. Yes, there are silos, and I do agree, mate,

314
00:17:52.200 --> 00:17:56.920
<v Speaker 8>But typically enterprise projects do not work under KPIs. The

315
00:17:57.000 --> 00:18:01.759
<v Speaker 8>KPI is delivering your project's a little bit different than product.

316
00:18:03.200 --> 00:18:05.119
<v Speaker 9>And another thing to your.

317
00:18:05.039 --> 00:18:08.880
<v Speaker 8>Favor is that if you are building something that you

318
00:18:09.039 --> 00:18:13.559
<v Speaker 8>publish to a private registry and you move to another project,

319
00:18:13.680 --> 00:18:16.599
<v Speaker 8>which is usually the case of developers in the context

320
00:18:16.680 --> 00:18:17.400
<v Speaker 8>of enterprise.

321
00:18:17.799 --> 00:18:20.400
<v Speaker 9>You are rotating, you're going to a different project.

322
00:18:20.440 --> 00:18:22.920
<v Speaker 8>You can reuse it, right, you have it, you have

323
00:18:23.000 --> 00:18:26.799
<v Speaker 8>it available to your new project, whereas if it's part

324
00:18:26.839 --> 00:18:29.839
<v Speaker 8>of a private code base, you don't have access to

325
00:18:29.880 --> 00:18:30.440
<v Speaker 8>it anymore.

326
00:18:30.920 --> 00:18:34.400
<v Speaker 6>Right, And I think that there's I'm gonna sorry, sorry

327
00:18:34.400 --> 00:18:36.920
<v Speaker 6>for the dogs here, but only another aspect of this

328
00:18:37.119 --> 00:18:41.319
<v Speaker 6>that's completely overlooked is a lot of times these internal

329
00:18:41.359 --> 00:18:44.319
<v Speaker 6>teams will look at, hey, this other team created this,

330
00:18:44.319 --> 00:18:47.039
<v Speaker 6>this package that I want to use, it's their responsibility

331
00:18:47.079 --> 00:18:49.319
<v Speaker 6>to maintain it so I can get the benefit from it.

332
00:18:49.880 --> 00:18:54.119
<v Speaker 6>That's internally the wrong calculus. It's if if if I'm

333
00:18:54.559 --> 00:18:57.119
<v Speaker 6>up to use it in my project, I'm also picking

334
00:18:57.200 --> 00:18:58.759
<v Speaker 6>up the burden to help maintain it.

335
00:18:59.720 --> 00:19:00.000
<v Speaker 1>Uh.

336
00:19:00.119 --> 00:19:03.319
<v Speaker 6>So you know, we can't have this idea that it's like, oh,

337
00:19:03.519 --> 00:19:06.039
<v Speaker 6>that other team's responsible for it. No, no, no, all

338
00:19:06.079 --> 00:19:09.519
<v Speaker 6>the same company, all the same team is equally my

339
00:19:09.599 --> 00:19:10.839
<v Speaker 6>responsibility to anyone else.

340
00:19:11.640 --> 00:19:15.680
<v Speaker 2>Let me be plunned if your assumption is that if

341
00:19:15.720 --> 00:19:19.559
<v Speaker 2>you run into a problem because your needs change and

342
00:19:19.599 --> 00:19:23.839
<v Speaker 2>the current and the package doesn't properly or adequately support it,

343
00:19:23.920 --> 00:19:27.039
<v Speaker 2>and you're dependent on somebody from some other team who,

344
00:19:27.160 --> 00:19:31.000
<v Speaker 2>as we said, may have different OKRs, different priorities, you're

345
00:19:31.039 --> 00:19:34.720
<v Speaker 2>literally screwed. I mean, you have to take the attitude

346
00:19:34.759 --> 00:19:37.599
<v Speaker 2>and the approach that if you're using it, you're assuming

347
00:19:37.640 --> 00:19:38.960
<v Speaker 2>responsibility for it.

348
00:19:40.119 --> 00:19:43.759
<v Speaker 3>That can almost still be totally extended to every module

349
00:19:43.799 --> 00:19:47.839
<v Speaker 3>you use from MPM, because in that case, the people

350
00:19:47.839 --> 00:19:51.079
<v Speaker 3>who who may be maintaining it are even further away

351
00:19:51.079 --> 00:19:55.039
<v Speaker 3>from you and even have less reason to necessarily prioritize

352
00:19:54.400 --> 00:19:56.640
<v Speaker 3>your your requirements.

353
00:19:58.319 --> 00:20:00.079
<v Speaker 6>And I a hundred percent agree with that. I'm and

354
00:20:00.160 --> 00:20:04.279
<v Speaker 6>I've said before many times. Where you know, especially companies,

355
00:20:04.279 --> 00:20:07.480
<v Speaker 6>if you are making use of open source, then you

356
00:20:07.519 --> 00:20:09.960
<v Speaker 6>as a company have an obligation helped support that open

357
00:20:09.960 --> 00:20:15.839
<v Speaker 6>source that that you're using. That includes contributing back bug fixes,

358
00:20:16.000 --> 00:20:19.519
<v Speaker 6>changes or whatever, and working with those maintainers. Don't put

359
00:20:19.559 --> 00:20:22.119
<v Speaker 6>that burden on them, especially if you're not paying them.

360
00:20:22.759 --> 00:20:25.640
<v Speaker 2>By the way, an interesting aspect that I've seen is

361
00:20:25.640 --> 00:20:29.799
<v Speaker 2>that at least for some organization, when they decided to

362
00:20:29.920 --> 00:20:34.640
<v Speaker 2>share some resource across the entire organization, it was actually

363
00:20:34.759 --> 00:20:39.640
<v Speaker 2>easier from the organizational perspective to turn it into an

364
00:20:39.680 --> 00:20:44.839
<v Speaker 2>actual open source project. Then to try to maintain it

365
00:20:44.920 --> 00:20:49.480
<v Speaker 2>as an internally shared resource, because once it was declared

366
00:20:49.480 --> 00:20:53.960
<v Speaker 2>an actual open source project, it was actually allocated resources

367
00:20:54.640 --> 00:20:57.880
<v Speaker 2>versus when it was just an internal thing that's shared,

368
00:20:58.359 --> 00:21:02.680
<v Speaker 2>you know, ownership was met.

369
00:21:03.599 --> 00:21:06.960
<v Speaker 1>Yeah. One thing that I wanted to piggyback off of

370
00:21:07.240 --> 00:21:10.640
<v Speaker 1>what Matteo was talking about a little bit earlier is that,

371
00:21:10.799 --> 00:21:13.079
<v Speaker 1>and this is coming from when I was working on

372
00:21:13.160 --> 00:21:17.160
<v Speaker 1>integrations and it was mostly third party integrations within an

373
00:21:17.160 --> 00:21:21.200
<v Speaker 1>application that I was helping maintain. But also, you know,

374
00:21:21.240 --> 00:21:24.759
<v Speaker 1>between micro services, is that if you can structure your

375
00:21:25.039 --> 00:21:27.119
<v Speaker 1>because he was saying, you know, if you're writing the

376
00:21:27.240 --> 00:21:29.160
<v Speaker 1>micro service, you ought to be writing the library that

377
00:21:29.200 --> 00:21:32.559
<v Speaker 1>consumes it and giving everybody a standard way of accessing it.

378
00:21:33.039 --> 00:21:36.880
<v Speaker 1>And for me, if you can structure all of those

379
00:21:37.039 --> 00:21:39.680
<v Speaker 1>the same way and make sure that they all kind

380
00:21:39.720 --> 00:21:43.480
<v Speaker 1>of look and feel and are built in the same manner, again,

381
00:21:43.519 --> 00:21:46.359
<v Speaker 1>it makes it easier for people across the organization to

382
00:21:46.359 --> 00:21:48.519
<v Speaker 1>be able to come in and do that maintenance for

383
00:21:48.559 --> 00:21:51.839
<v Speaker 1>you so that they can you know, you can move ahead.

384
00:21:51.880 --> 00:21:54.440
<v Speaker 1>So then it's hey, this micro service has this feature

385
00:21:54.440 --> 00:21:56.160
<v Speaker 1>that they built in, but they have an updated the

386
00:21:57.039 --> 00:22:00.559
<v Speaker 1>library for it, or maybe I need to make pull

387
00:22:00.599 --> 00:22:02.119
<v Speaker 1>the data in, but I need to do something a

388
00:22:02.119 --> 00:22:04.839
<v Speaker 1>little bit different with it before I consume it in

389
00:22:05.039 --> 00:22:08.920
<v Speaker 1>my service. You know, if it's all structured in a

390
00:22:08.960 --> 00:22:11.000
<v Speaker 1>similar manner, then I know where to go to go

391
00:22:11.000 --> 00:22:14.200
<v Speaker 1>ahead and add that in and then everybody else benefits

392
00:22:14.200 --> 00:22:15.759
<v Speaker 1>from it and I don't have to go in and

393
00:22:15.799 --> 00:22:20.359
<v Speaker 1>reverse engineer this driver or that driver, or this integration

394
00:22:20.440 --> 00:22:21.920
<v Speaker 1>library and that integration library.

395
00:22:22.279 --> 00:22:27.400
<v Speaker 2>I do want to I do want to. Sorry, I

396
00:22:27.440 --> 00:22:29.880
<v Speaker 2>do want to push us along a little bit because

397
00:22:29.920 --> 00:22:32.279
<v Speaker 2>we are We're never going to finish the pillars.

398
00:22:31.960 --> 00:22:36.000
<v Speaker 5>Otherwise I want I do want them today.

399
00:22:36.400 --> 00:22:38.599
<v Speaker 2>Yeah, I do want to touch on two things that

400
00:22:38.640 --> 00:22:41.640
<v Speaker 2>were mentioned in the article in this context, at least briefly.

401
00:22:42.240 --> 00:22:46.880
<v Speaker 2>One is that no d APIs versus Web Standard APIs,

402
00:22:47.240 --> 00:22:53.119
<v Speaker 2>and the other you also mentioned Mono repost. So can

403
00:22:53.160 --> 00:22:55.839
<v Speaker 2>you talk about Can someone talk about the no JS

404
00:22:55.880 --> 00:22:59.839
<v Speaker 2>standard Native standard APIs versus the Web Standard APIs.

405
00:23:00.119 --> 00:23:01.519
<v Speaker 6>Yeah, I can definitely talk about that. You know, we

406
00:23:01.519 --> 00:23:04.119
<v Speaker 6>have a number of places in node now, you know,

407
00:23:04.720 --> 00:23:07.279
<v Speaker 6>the old r L parts versus new r L, node

408
00:23:07.319 --> 00:23:11.039
<v Speaker 6>streams versus web streams, old node crypto versus web crypto.

409
00:23:11.440 --> 00:23:14.000
<v Speaker 6>We have a lot of these cases where we have

410
00:23:14.880 --> 00:23:17.960
<v Speaker 6>you know, duplicate or overlapping APIs. Let me talk you

411
00:23:18.039 --> 00:23:19.640
<v Speaker 6>know you. R L is the very first one that

412
00:23:19.680 --> 00:23:23.440
<v Speaker 6>I introduced, and there was a huge controversy even within

413
00:23:23.519 --> 00:23:25.480
<v Speaker 6>the project. I was actually yelled at at a conference

414
00:23:25.519 --> 00:23:29.160
<v Speaker 6>by another node contributor, like actually yelled at for suggesting

415
00:23:29.240 --> 00:23:32.960
<v Speaker 6>that we add this because r L parts is there

416
00:23:33.079 --> 00:23:37.160
<v Speaker 6>and and it's fast. Uh. And you know when we

417
00:23:37.240 --> 00:23:39.279
<v Speaker 6>added the new r L pars er, the w g

418
00:23:39.480 --> 00:23:41.440
<v Speaker 6>r O parser, when it was slower, but it was

419
00:23:41.480 --> 00:23:45.000
<v Speaker 6>standard and folks, we use libraries for in node in

420
00:23:45.079 --> 00:23:47.039
<v Speaker 6>browsers and then you know, picked it up and that

421
00:23:47.160 --> 00:23:49.279
<v Speaker 6>you know, and something. You can use this thing everywhere.

422
00:23:49.599 --> 00:23:54.160
<v Speaker 6>It's it's much more portant. Now, it's faster than anything else. Well,

423
00:23:54.160 --> 00:23:59.160
<v Speaker 6>we're gonna see this pattern continue. And whenever you are

424
00:24:01.000 --> 00:24:03.559
<v Speaker 6>whenever you're selecting which API, do us say node streams

425
00:24:03.640 --> 00:24:07.160
<v Speaker 6>versus webstreams. Be very intentional. Don't just make it an

426
00:24:07.200 --> 00:24:10.079
<v Speaker 6>accidental choice. Be very intentional on how you adopt these

427
00:24:10.519 --> 00:24:12.920
<v Speaker 6>node streams are going to be way more performant than webstreams,

428
00:24:13.039 --> 00:24:16.400
<v Speaker 6>but webstreams are way more portable. So you need to

429
00:24:16.480 --> 00:24:20.960
<v Speaker 6>balance which goals you're looking for. And make sure you're

430
00:24:20.960 --> 00:24:24.119
<v Speaker 6>selecting your dependencies accordingly. The more you have to translate

431
00:24:24.240 --> 00:24:27.599
<v Speaker 6>between them, I say, if you're using both note streams

432
00:24:27.640 --> 00:24:30.880
<v Speaker 6>and webstreams, the more overhead and easier it's going to

433
00:24:30.960 --> 00:24:32.799
<v Speaker 6>be to get it wrong. So you need to be

434
00:24:32.920 --> 00:24:35.880
<v Speaker 6>very intentional about your strategy in which API is you're picking.

435
00:24:36.920 --> 00:24:40.240
<v Speaker 6>But something zu pers just don't use it anymore, use new.

436
00:24:40.240 --> 00:24:45.720
<v Speaker 4>Your something important is. No JS in general has added

437
00:24:45.759 --> 00:24:51.799
<v Speaker 4>a lot of APIs in the last decade, okay, and

438
00:24:52.119 --> 00:24:55.079
<v Speaker 4>the most people still development JS like it's twenty fourteen,

439
00:24:56.240 --> 00:25:00.519
<v Speaker 4>so please stopkin take a look at work there. Okay,

440
00:25:01.079 --> 00:25:03.640
<v Speaker 4>like literally, oh, we have fetch now, I was I

441
00:25:03.759 --> 00:25:08.880
<v Speaker 4>was checking recently and we and you know a few

442
00:25:08.880 --> 00:25:12.160
<v Speaker 4>of the top downloaded modules on MPM are high level

443
00:25:14.480 --> 00:25:17.559
<v Speaker 4>HDP clients, and we had fetch for a while in

444
00:25:17.680 --> 00:25:20.400
<v Speaker 4>Node okay, and you know, and.

445
00:25:20.440 --> 00:25:23.720
<v Speaker 6>Even simple u u I D, the uu i D module,

446
00:25:23.799 --> 00:25:25.680
<v Speaker 6>a lot of folks, you you know, pull it off

447
00:25:25.720 --> 00:25:30.119
<v Speaker 6>with NPM to just generate a random u i D. Great,

448
00:25:30.240 --> 00:25:34.000
<v Speaker 6>it's a great module. But compared to the API that's

449
00:25:34.039 --> 00:25:37.519
<v Speaker 6>built into node and browsers, we have Web standard API,

450
00:25:37.680 --> 00:25:40.519
<v Speaker 6>which is random u I D until on the crypto obbit.

451
00:25:41.200 --> 00:25:45.039
<v Speaker 6>It's way faster, way simpler, and it's just the thing

452
00:25:45.079 --> 00:25:47.440
<v Speaker 6>you should use. You could drop an entire dependency that's

453
00:25:47.480 --> 00:25:50.319
<v Speaker 6>been in essence twenty twenty one, and folks are just

454
00:25:50.400 --> 00:25:52.559
<v Speaker 6>now discovering that that exists around time.

455
00:25:52.720 --> 00:25:56.319
<v Speaker 1>So I just want to point out that Mateo pointed

456
00:25:56.400 --> 00:25:59.160
<v Speaker 1>out that the Node team made fetch happen, and so

457
00:25:59.279 --> 00:26:02.359
<v Speaker 1>please stop trying to make fetch happen. Yeah.

458
00:26:04.200 --> 00:26:09.200
<v Speaker 2>Sorry, we were actually just I think Mattel we were

459
00:26:09.319 --> 00:26:12.680
<v Speaker 2>exchanging tweets about it or excess about it or what

460
00:26:12.799 --> 00:26:15.079
<v Speaker 2>was this on on Blue Sky.

461
00:26:14.960 --> 00:26:15.799
<v Speaker 5>I don't remember.

462
00:26:16.279 --> 00:26:22.160
<v Speaker 2>More so many options, and so that's number one. So basically,

463
00:26:22.240 --> 00:26:23.319
<v Speaker 2>if I'm here, I have.

464
00:26:23.359 --> 00:26:25.759
<v Speaker 1>A question here is there a good place to find these?

465
00:26:26.000 --> 00:26:28.480
<v Speaker 1>Right the Hey, you might be using a library for this.

466
00:26:28.640 --> 00:26:29.880
<v Speaker 1>You don't need you anymore.

467
00:26:31.599 --> 00:26:35.359
<v Speaker 4>Just now, just too Probably it's probably something that we

468
00:26:35.400 --> 00:26:42.039
<v Speaker 4>should develop and promote a little bit. Okay, maybe like

469
00:26:42.200 --> 00:26:44.680
<v Speaker 4>this can be a good a good good something that's missing.

470
00:26:44.720 --> 00:26:46.279
<v Speaker 5>I don't know, this is there.

471
00:26:46.119 --> 00:26:49.559
<v Speaker 6>There, this is the this is something I would actually,

472
00:26:49.720 --> 00:26:52.319
<v Speaker 6>you know, Natalia, you know, you know, for like debt

473
00:26:52.359 --> 00:26:54.519
<v Speaker 6>tools and like the developer experience and like that, because

474
00:26:54.519 --> 00:26:56.240
<v Speaker 6>those of us are actually working on the APIs, suck

475
00:26:56.279 --> 00:26:59.079
<v Speaker 6>at the documentation and actually promoting these things. But if

476
00:26:59.119 --> 00:27:02.880
<v Speaker 6>we can start having the tooling to like promote some

477
00:27:03.000 --> 00:27:05.440
<v Speaker 6>these things more and say, hey, there's this other thing,

478
00:27:05.880 --> 00:27:10.240
<v Speaker 6>it might be interesting to look at that. Needia better

479
00:27:10.279 --> 00:27:10.440
<v Speaker 6>at this.

480
00:27:11.200 --> 00:27:13.880
<v Speaker 2>A certain way to go about it is to basically,

481
00:27:13.960 --> 00:27:16.680
<v Speaker 2>if you're looking for certain functionality, check if there's a

482
00:27:17.079 --> 00:27:20.799
<v Speaker 2>web API for it, basically, and that's really easy because

483
00:27:20.960 --> 00:27:24.319
<v Speaker 2>for example, you've got MDN and then just check if

484
00:27:24.359 --> 00:27:28.799
<v Speaker 2>that also exists on note that just that before you

485
00:27:29.160 --> 00:27:32.039
<v Speaker 2>rush off and NPM install something.

486
00:27:33.960 --> 00:27:35.640
<v Speaker 3>One of the things we are doing in the project

487
00:27:35.759 --> 00:27:39.240
<v Speaker 3>is we're ramping up some ambassadors and part of that

488
00:27:39.359 --> 00:27:42.240
<v Speaker 3>we're coming up with messages we want those ambassadors to

489
00:27:42.240 --> 00:27:45.279
<v Speaker 3>help promote and that suggestion of like I think we've

490
00:27:45.319 --> 00:27:49.000
<v Speaker 3>called it something like developing with modern no JS right,

491
00:27:49.119 --> 00:27:51.599
<v Speaker 3>like to highlight here are the things that are available

492
00:27:51.640 --> 00:27:53.720
<v Speaker 3>that might not have been available before. It's definitely on

493
00:27:53.839 --> 00:27:55.759
<v Speaker 3>the list of things that are being brainstormed there.

494
00:27:59.079 --> 00:28:02.039
<v Speaker 2>Anybody wants to say anything about mono repos before we

495
00:28:02.200 --> 00:28:03.519
<v Speaker 2>move on to the next one.

496
00:28:07.519 --> 00:28:10.799
<v Speaker 4>I'm just going to say, use pm PM. This is

497
00:28:10.880 --> 00:28:14.799
<v Speaker 4>my preference, Okay, I am personal that this is my

498
00:28:14.960 --> 00:28:19.039
<v Speaker 4>personal preference. Use MPM when you don't need mono repos,

499
00:28:19.119 --> 00:28:20.839
<v Speaker 4>use PMPM when you need monor repos.

500
00:28:21.400 --> 00:28:22.759
<v Speaker 5>These matches more or less.

501
00:28:22.920 --> 00:28:28.720
<v Speaker 4>My yah seems to work fine for other people, but genetically,

502
00:28:28.880 --> 00:28:32.759
<v Speaker 4>my current status is I'm very happy with PMPM.

503
00:28:32.880 --> 00:28:35.279
<v Speaker 5>I don't know, Natalia, you what you guys use you

504
00:28:35.519 --> 00:28:35.880
<v Speaker 5>have a lot of.

505
00:28:36.039 --> 00:28:39.839
<v Speaker 8>Yeah, No, I second, yeah, I second that I use

506
00:28:39.960 --> 00:28:45.200
<v Speaker 8>PMPM for monor repos right now, and and PM for

507
00:28:45.240 --> 00:28:45.839
<v Speaker 8>all the rest.

508
00:28:47.839 --> 00:28:50.039
<v Speaker 6>Yeah. I agree. There's there's out of all of them

509
00:28:50.119 --> 00:28:53.440
<v Speaker 6>that's the one that handles this better. Their patterns are

510
00:28:53.480 --> 00:28:55.519
<v Speaker 6>just actually makes sense.

511
00:28:57.319 --> 00:28:59.759
<v Speaker 2>So Chuck, maybe move us along to the next one.

512
00:29:00.039 --> 00:29:03.119
<v Speaker 1>Gonna say, sounds like we've gotten that one. So the

513
00:29:03.240 --> 00:29:05.240
<v Speaker 1>next one is de risk your dependencies.

514
00:29:09.400 --> 00:29:11.599
<v Speaker 3>I think it comes back to the part we were

515
00:29:11.640 --> 00:29:15.079
<v Speaker 3>talking about being intentional, like I think too many people

516
00:29:15.519 --> 00:29:18.640
<v Speaker 3>pull in a very deep dependency tree without thinking about it,

517
00:29:18.799 --> 00:29:22.759
<v Speaker 3>and it's you know, once you once you've you've pulled

518
00:29:22.839 --> 00:29:26.079
<v Speaker 3>things in. Then then we were we talked a little

519
00:29:26.079 --> 00:29:28.079
<v Speaker 3>bit before, like you almost need to take on the

520
00:29:28.160 --> 00:29:31.559
<v Speaker 3>approach of like, okay, I'm using this, am I ready

521
00:29:31.599 --> 00:29:34.720
<v Speaker 3>to help maintain it because like as an organization not

522
00:29:34.839 --> 00:29:37.960
<v Speaker 3>you know, James mentioned like you should do that because

523
00:29:38.400 --> 00:29:40.799
<v Speaker 3>it's the right thing to do, but I also think

524
00:29:40.839 --> 00:29:45.119
<v Speaker 3>it's an organization. It's risk management, right, and most organizations

525
00:29:45.160 --> 00:29:46.720
<v Speaker 3>that's a big part of them is like how do

526
00:29:46.799 --> 00:29:49.119
<v Speaker 3>we manage our risk? And as soon as you've pulled

527
00:29:49.160 --> 00:29:51.480
<v Speaker 3>in the software, it's part of the things you should

528
00:29:51.480 --> 00:29:54.200
<v Speaker 3>be looking at in terms of managing your risk and saying, well,

529
00:29:54.279 --> 00:29:56.279
<v Speaker 3>like if we had to switch to something else, could

530
00:29:56.279 --> 00:29:58.200
<v Speaker 3>we if we had to make a change, could we?

531
00:29:59.279 --> 00:30:02.319
<v Speaker 3>Is it a healthy project? And you know, and I

532
00:30:02.359 --> 00:30:04.519
<v Speaker 3>think in near the end there we talk about like

533
00:30:04.640 --> 00:30:07.119
<v Speaker 3>one way to manage your risk is to support the project,

534
00:30:07.200 --> 00:30:10.519
<v Speaker 3>either through your people or through funding. And you know,

535
00:30:10.599 --> 00:30:14.319
<v Speaker 3>so most organizations should should probably invest a little bit

536
00:30:14.359 --> 00:30:16.319
<v Speaker 3>more time in managing that particular risk.

537
00:30:16.519 --> 00:30:23.599
<v Speaker 2>Me maybe if the maintainer gets enough support, he won't

538
00:30:23.759 --> 00:30:26.759
<v Speaker 2>sell or he or she won't sell the project to

539
00:30:27.279 --> 00:30:29.319
<v Speaker 2>some of the farious third party.

540
00:30:31.160 --> 00:30:35.240
<v Speaker 3>That that's an extreme example of the case, right, or they.

541
00:30:35.319 --> 00:30:39.039
<v Speaker 4>Just might not well Eco system Unfortunately he has been

542
00:30:39.119 --> 00:30:42.680
<v Speaker 4>full of those, okay a couple of times already, So I'm.

543
00:30:42.559 --> 00:30:44.720
<v Speaker 6>Fortunate, I mean, and that be sold right if the

544
00:30:44.799 --> 00:30:46.720
<v Speaker 6>maintainer runs out of time to get burnt out, and

545
00:30:46.759 --> 00:30:49.920
<v Speaker 6>they transition it to somebody without you know, without fully

546
00:30:50.000 --> 00:30:51.839
<v Speaker 6>vetting who they are. You know that somebody else can

547
00:30:51.920 --> 00:30:54.880
<v Speaker 6>come in and take care of the project, take advantage

548
00:30:54.880 --> 00:30:59.319
<v Speaker 6>of the project. Anytime you add a new dependency that

549
00:30:59.400 --> 00:31:01.880
<v Speaker 6>you don't control or you're not contributing to your adding risk,

550
00:31:02.759 --> 00:31:04.839
<v Speaker 6>you know. And and if you're if you're bringing in

551
00:31:05.000 --> 00:31:07.720
<v Speaker 6>a module that brings in you know, one hundred different dependencies,

552
00:31:08.359 --> 00:31:11.000
<v Speaker 6>you're increasing your risk one hundred fold. So you know,

553
00:31:11.519 --> 00:31:14.119
<v Speaker 6>you just have to be very intentional about what you're

554
00:31:14.160 --> 00:31:16.160
<v Speaker 6>bringing in. You have to be very intentional about what

555
00:31:16.240 --> 00:31:19.079
<v Speaker 6>you're going to support. UH and companies have to stop

556
00:31:19.200 --> 00:31:21.799
<v Speaker 6>looking at open sources just free software that they don't

557
00:31:21.839 --> 00:31:25.559
<v Speaker 6>have to do anything with to use. They have to

558
00:31:25.680 --> 00:31:28.039
<v Speaker 6>help maintain it, or they're bringing or they're just opening

559
00:31:28.039 --> 00:31:30.440
<v Speaker 6>themselves up to risk. And then if we look at

560
00:31:30.519 --> 00:31:32.880
<v Speaker 6>like you know, some of the new like federal guidelines,

561
00:31:32.880 --> 00:31:34.759
<v Speaker 6>you know, it's not just US, you know EU as

562
00:31:34.799 --> 00:31:37.759
<v Speaker 6>well around s bombs to you know, you know, actually

563
00:31:37.799 --> 00:31:41.119
<v Speaker 6>being able to produce a an audited list of these

564
00:31:41.160 --> 00:31:43.720
<v Speaker 6>are the dependencies I'm using. Here's how they're maintained here,

565
00:31:43.839 --> 00:31:46.480
<v Speaker 6>what the licenses are a lot of folks bring in

566
00:31:46.519 --> 00:31:48.680
<v Speaker 6>these dependencies without ever thinking about that. But if this,

567
00:31:49.000 --> 00:31:51.240
<v Speaker 6>if if your module ends up in some being used

568
00:31:51.240 --> 00:31:53.559
<v Speaker 6>in some regulated industry, you have to be able to

569
00:31:53.559 --> 00:31:56.200
<v Speaker 6>account for those things and be able to account for

570
00:31:56.240 --> 00:31:59.960
<v Speaker 6>the risk. So it's it's not just a best practic

571
00:32:00.079 --> 00:32:02.119
<v Speaker 6>is in some cases, it's an absolute requirement.

572
00:32:03.119 --> 00:32:05.200
<v Speaker 2>And there's tooling that can help you with this, right.

573
00:32:06.160 --> 00:32:08.960
<v Speaker 1>Oh yeah, I was gonna say, because it's it's not

574
00:32:09.200 --> 00:32:11.960
<v Speaker 1>just tooling, but it's tooling that you'll use. Right, And

575
00:32:12.079 --> 00:32:14.279
<v Speaker 1>for me, it kind of has to be automatic and

576
00:32:14.319 --> 00:32:16.279
<v Speaker 1>get in my face because I'm lazy and I don't

577
00:32:16.279 --> 00:32:19.079
<v Speaker 1>go look at it every however often you're supposed to do.

578
00:32:19.920 --> 00:32:22.000
<v Speaker 1>It's like changing my oil. Right, it's not till the

579
00:32:22.079 --> 00:32:25.680
<v Speaker 1>light comes on and I go, huh, you know.

580
00:32:26.160 --> 00:32:28.519
<v Speaker 3>Well that's where I find it a bit surprising. Like

581
00:32:29.079 --> 00:32:31.160
<v Speaker 3>I don't know however often it is, but every so

582
00:32:31.319 --> 00:32:36.559
<v Speaker 3>often there's some high profile case where it's the extreme.

583
00:32:36.680 --> 00:32:39.519
<v Speaker 3>You know, the maintainer goes off and does something to

584
00:32:39.599 --> 00:32:42.680
<v Speaker 3>their module that they probably shouldn't have. But everybody seems

585
00:32:42.720 --> 00:32:46.519
<v Speaker 3>surprised that this can happen, right, And like if you

586
00:32:46.960 --> 00:32:49.440
<v Speaker 3>paid attention, it's sort of something you should know can

587
00:32:49.559 --> 00:32:52.359
<v Speaker 3>happen in the plan, and so it shouldn't be a surprise,

588
00:32:52.440 --> 00:32:55.400
<v Speaker 3>And everybody seems to get in a big fuss and

589
00:32:55.480 --> 00:32:57.680
<v Speaker 3>then after a few months it tails off and it's

590
00:32:57.759 --> 00:32:59.880
<v Speaker 3>not in your you know, it's not in the news anymore,

591
00:33:00.039 --> 00:33:03.599
<v Speaker 3>and people forget about it again. So well, I mean,

592
00:33:03.720 --> 00:33:05.160
<v Speaker 3>that's interesting.

593
00:33:05.519 --> 00:33:08.000
<v Speaker 6>Just anecdotally. I'm not going to say like you know

594
00:33:08.079 --> 00:33:09.839
<v Speaker 6>who or what module it was, but you know, this

595
00:33:10.000 --> 00:33:13.279
<v Speaker 6>is going back and back to twenty fifteen, twenty sixteen,

596
00:33:13.680 --> 00:33:17.160
<v Speaker 6>one of the most used modules on NPM, and the

597
00:33:17.200 --> 00:33:21.119
<v Speaker 6>maintainer was quite upset and threatened to just delete everything,

598
00:33:21.480 --> 00:33:24.079
<v Speaker 6>you know, delete everything off, get up, delete everything off NPM.

599
00:33:24.759 --> 00:33:26.720
<v Speaker 6>And it came down within minutes that we were able

600
00:33:26.920 --> 00:33:28.799
<v Speaker 6>to convince them not to do that, and it would

601
00:33:28.799 --> 00:33:32.240
<v Speaker 6>have broken the entire ecosystem literally they had they had

602
00:33:32.279 --> 00:33:36.559
<v Speaker 6>they done this, and you know it, Sometimes it just

603
00:33:36.640 --> 00:33:38.680
<v Speaker 6>comes down to a maintainer being burnt out and not

604
00:33:38.759 --> 00:33:41.880
<v Speaker 6>feel like they actually have the support. It doesn't have

605
00:33:41.920 --> 00:33:43.319
<v Speaker 6>to be anything that various. It doesn't have to be

606
00:33:43.400 --> 00:33:45.119
<v Speaker 6>selling it or somebody else taking over. It could just

607
00:33:45.160 --> 00:33:46.920
<v Speaker 6>be kind I'm tired of dealing with this.

608
00:33:48.119 --> 00:33:51.119
<v Speaker 2>Yeah, it is important to mention though that following what

609
00:33:51.279 --> 00:33:54.759
<v Speaker 2>happened with left PAT that specifically can no longer happen

610
00:33:54.839 --> 00:33:55.400
<v Speaker 2>with NPM.

611
00:33:56.559 --> 00:33:56.759
<v Speaker 7>Yeah.

612
00:33:56.880 --> 00:33:59.279
<v Speaker 1>But I mean I can also see, you know, because

613
00:33:59.279 --> 00:34:01.240
<v Speaker 1>you guys have talked to about you know, you hand

614
00:34:01.319 --> 00:34:04.000
<v Speaker 1>it off to a new maintainer or you know, somebody

615
00:34:04.160 --> 00:34:06.720
<v Speaker 1>otherwise takes it over. But I could see somebody just

616
00:34:06.839 --> 00:34:10.599
<v Speaker 1>being tired and you know, they know they have a

617
00:34:10.679 --> 00:34:12.840
<v Speaker 1>problem in their package, and they know they want it fixed,

618
00:34:12.840 --> 00:34:14.719
<v Speaker 1>and they get a PR that looks like it solves it,

619
00:34:15.119 --> 00:34:18.119
<v Speaker 1>and it's got something problematic in it. I mean, you know,

620
00:34:18.400 --> 00:34:20.079
<v Speaker 1>just that easy, you've got something in there that you

621
00:34:20.119 --> 00:34:20.480
<v Speaker 1>don't want.

622
00:34:22.039 --> 00:34:22.239
<v Speaker 7>Yeah.

623
00:34:22.239 --> 00:34:25.719
<v Speaker 3>I think back to Dan's comment, like the I think

624
00:34:25.760 --> 00:34:28.559
<v Speaker 3>that this has been a challenge or a feature of

625
00:34:28.719 --> 00:34:32.079
<v Speaker 3>the NOES ecosystem for quite a long time. So things

626
00:34:32.159 --> 00:34:34.320
<v Speaker 3>have improved, Like you know, the MPM you can no

627
00:34:34.440 --> 00:34:37.239
<v Speaker 3>longer delete things, and so a lot of that learning

628
00:34:37.280 --> 00:34:40.719
<v Speaker 3>has actually helped to improve the ecosystem over time. That

629
00:34:40.920 --> 00:34:44.280
<v Speaker 3>other sort of language ecosystems may be relearning some of

630
00:34:44.360 --> 00:34:45.559
<v Speaker 3>those lessons along the way.

631
00:34:47.360 --> 00:34:51.400
<v Speaker 1>So beyond sort of being aware, right, hey, there's an announcement.

632
00:34:51.559 --> 00:34:54.320
<v Speaker 1>This package where is going to cause you this problem? Right,

633
00:34:54.400 --> 00:34:56.360
<v Speaker 1>it's got you know, somebody put a back door in it,

634
00:34:56.679 --> 00:34:59.199
<v Speaker 1>or hey we discovered a zero day, Right, it doesn't

635
00:34:59.199 --> 00:35:02.559
<v Speaker 1>even have to be that farious, right, you know, the

636
00:35:02.679 --> 00:35:05.559
<v Speaker 1>best practice has changed and they haven't kept up with it, right,

637
00:35:05.679 --> 00:35:08.079
<v Speaker 1>and so you know you just need to update it

638
00:35:08.199 --> 00:35:11.519
<v Speaker 1>or whatever. Beyond that, I mean, I know there's like

639
00:35:11.719 --> 00:35:14.920
<v Speaker 1>NPM audit, but I kind of have to just run

640
00:35:15.000 --> 00:35:17.360
<v Speaker 1>that on my machine when I'm running stuff. And you know,

641
00:35:17.519 --> 00:35:20.719
<v Speaker 1>sometimes I see the notification, sometimes I don't. But are

642
00:35:20.960 --> 00:35:24.039
<v Speaker 1>there are there tools that while I'm working, are going

643
00:35:24.119 --> 00:35:25.960
<v Speaker 1>to tell me, hey, you have a problem, like I

644
00:35:26.039 --> 00:35:28.440
<v Speaker 1>may not have seen the Twitter post or I may

645
00:35:28.519 --> 00:35:32.079
<v Speaker 1>not have seen the blog post or the announcement or whatever.

646
00:35:32.440 --> 00:35:33.960
<v Speaker 1>That's going to help me stay up on.

647
00:35:36.639 --> 00:35:38.360
<v Speaker 9>Depend is the first.

648
00:35:38.159 --> 00:35:41.519
<v Speaker 8>One, right, the first one you should be looking at,

649
00:35:43.920 --> 00:35:47.800
<v Speaker 8>and it's going to automatically unless you say, but you shouldn't.

650
00:35:48.280 --> 00:35:50.360
<v Speaker 7>I don't think that's something you should do.

651
00:35:52.079 --> 00:35:56.519
<v Speaker 6>And I've that's when I've also become been becoming a

652
00:35:56.599 --> 00:36:04.280
<v Speaker 6>big fan of the socket stuff, the new process company.

653
00:36:05.719 --> 00:36:06.000
<v Speaker 2>Soccer.

654
00:36:06.599 --> 00:36:09.920
<v Speaker 1>I think, yeah, we had them on I'll find the

655
00:36:10.000 --> 00:36:12.559
<v Speaker 1>episode number and we can put it out there.

656
00:36:13.920 --> 00:36:14.119
<v Speaker 5>Yeah.

657
00:36:14.119 --> 00:36:16.400
<v Speaker 3>I think the first part that Italian mentioned is just

658
00:36:16.679 --> 00:36:19.000
<v Speaker 3>keeping up to date, and there's tools that will basically

659
00:36:19.519 --> 00:36:21.480
<v Speaker 3>like those keep you help you keep up to date.

660
00:36:21.880 --> 00:36:24.320
<v Speaker 3>And then there's other tools like the socket one or

661
00:36:24.599 --> 00:36:27.760
<v Speaker 3>or snack who helped look more specifically.

662
00:36:27.320 --> 00:36:27.880
<v Speaker 5>At well.

663
00:36:30.880 --> 00:36:36.239
<v Speaker 4>Mike is not true, depend on also recent discounts for cvs. Okay, yes,

664
00:36:36.440 --> 00:36:42.039
<v Speaker 4>so g tab will if will push if attacks that

665
00:36:42.079 --> 00:36:45.440
<v Speaker 4>there was a vulnerability it. Whenever you push commits to

666
00:36:45.559 --> 00:36:47.920
<v Speaker 4>the report, it will show you that there is there's

667
00:36:48.000 --> 00:36:49.719
<v Speaker 4>been security problems.

668
00:36:50.119 --> 00:36:53.679
<v Speaker 6>Okay, to know fantastic.

669
00:36:54.280 --> 00:36:54.440
<v Speaker 2>You know.

670
00:36:55.800 --> 00:36:58.880
<v Speaker 4>The important part is that it just works. Okay, you

671
00:36:58.960 --> 00:37:02.480
<v Speaker 4>don't you have to think you just detects it automatic.

672
00:37:02.519 --> 00:37:05.119
<v Speaker 4>You just need to use get up. Well if you're

673
00:37:05.280 --> 00:37:08.519
<v Speaker 4>if you're a developer, you're not developing guitub well you know, okay.

674
00:37:09.199 --> 00:37:12.400
<v Speaker 6>I think you have to build a habit of not

675
00:37:12.559 --> 00:37:15.000
<v Speaker 6>ignoring it. I think a lot of folks you know,

676
00:37:15.320 --> 00:37:18.239
<v Speaker 6>you know, turned on, they're like, okay, it's there, I'm

677
00:37:18.280 --> 00:37:20.679
<v Speaker 6>not you know, and they just don't act on it

678
00:37:20.679 --> 00:37:23.519
<v Speaker 6>at all. So I think there, Yes, it can require

679
00:37:23.599 --> 00:37:25.760
<v Speaker 6>building a new habit.

680
00:37:26.880 --> 00:37:29.559
<v Speaker 3>Yeah, I guess that comes with a lot of stuff.

681
00:37:31.920 --> 00:37:37.280
<v Speaker 7>We know a lot of stuff. Yeah, go ahead.

682
00:37:39.679 --> 00:37:42.440
<v Speaker 3>Back because the CBS are not that great, right, so

683
00:37:43.480 --> 00:37:46.719
<v Speaker 3>you can get a lot of noise we aren't issues,

684
00:37:46.760 --> 00:37:49.599
<v Speaker 3>and that that sort of unfortunately reduces the benefits.

685
00:37:49.960 --> 00:37:54.440
<v Speaker 2>That looks people people ignore medical conditions, like what do

686
00:37:54.519 --> 00:37:56.920
<v Speaker 2>you expect? You know, people like to ignore things.

687
00:37:58.119 --> 00:37:59.679
<v Speaker 6>My car has been complaining that it needs and all

688
00:37:59.760 --> 00:38:01.519
<v Speaker 6>change the past month and I haven't.

689
00:38:01.360 --> 00:38:01.719
<v Speaker 3>Done it yet.

690
00:38:01.800 --> 00:38:12.559
<v Speaker 2>So yeah, hm, anything else you want to look. But

691
00:38:13.199 --> 00:38:19.119
<v Speaker 2>to be fair, people like use MP stuff on NPM

692
00:38:19.239 --> 00:38:22.440
<v Speaker 2>because they want to reduce their their their workload and

693
00:38:22.679 --> 00:38:27.280
<v Speaker 2>and they don't consider the the load that they're assuming

694
00:38:27.440 --> 00:38:30.960
<v Speaker 2>when they do that, and they are sometimes resentful even

695
00:38:31.039 --> 00:38:34.199
<v Speaker 2>of it. So it is what it is. But yeah, definitely,

696
00:38:34.719 --> 00:38:37.360
<v Speaker 2>if you're going to be using packages, you need to

697
00:38:37.480 --> 00:38:40.679
<v Speaker 2>assume responsibility for the packages that you're using.

698
00:38:41.519 --> 00:38:43.159
<v Speaker 6>And I'll just say, you know, it's not just the

699
00:38:43.199 --> 00:38:45.320
<v Speaker 6>people get resentful of it. You know, some people look

700
00:38:45.360 --> 00:38:47.639
<v Speaker 6>at what's published on NPM and they're saying, hey, you

701
00:38:47.719 --> 00:38:50.480
<v Speaker 6>gave me this thing for free. Cool, You're now obligated

702
00:38:50.519 --> 00:38:53.639
<v Speaker 6>to support me forever and answer every question I have advancement.

703
00:38:54.079 --> 00:38:56.360
<v Speaker 6>So no, there is no such thing as enclinement here.

704
00:38:57.639 --> 00:39:00.760
<v Speaker 6>If you if you're using a package, if it doesn't

705
00:39:00.800 --> 00:39:03.360
<v Speaker 6>work for you, help me, don't demand that I do

706
00:39:03.440 --> 00:39:04.280
<v Speaker 6>it for you for free.

707
00:39:05.480 --> 00:39:08.599
<v Speaker 2>I just want to say that anybody who's listening to

708
00:39:08.760 --> 00:39:12.199
<v Speaker 2>this podcast and rather than watching it, you're losing half

709
00:39:12.280 --> 00:39:14.599
<v Speaker 2>of Mattel's.

710
00:39:18.920 --> 00:39:23.760
<v Speaker 4>I call them vampires. Okay, they have the vampires of

711
00:39:23.880 --> 00:39:27.920
<v Speaker 4>open source. Okay, and you know your vampires can be

712
00:39:28.719 --> 00:39:30.719
<v Speaker 4>you know, you need to put out garlic, and you

713
00:39:30.840 --> 00:39:33.159
<v Speaker 4>can stab them in the heart with a piece of wound, right,

714
00:39:33.960 --> 00:39:38.559
<v Speaker 4>so that's what you do with them. Okay, So basically

715
00:39:38.719 --> 00:39:41.480
<v Speaker 4>that isn't I have zero tolerance for vampires in any

716
00:39:41.519 --> 00:39:42.159
<v Speaker 4>of my records.

717
00:39:42.679 --> 00:39:45.719
<v Speaker 2>Okay, Yeah. The problem really is that Racula was that

718
00:39:45.920 --> 00:39:49.000
<v Speaker 2>one vampire and there with the whole world full of humans,

719
00:39:49.079 --> 00:39:51.599
<v Speaker 2>and here in the open source community it's the reverse

720
00:39:51.679 --> 00:39:54.320
<v Speaker 2>the majority.

721
00:39:55.000 --> 00:39:57.559
<v Speaker 4>Fine, but I have zero tolerance like the one that

722
00:39:57.679 --> 00:40:00.840
<v Speaker 4>they get really toxic about it when you tell you no,

723
00:40:01.039 --> 00:40:01.599
<v Speaker 4>it's your bug.

724
00:40:01.639 --> 00:40:02.360
<v Speaker 5>It's not my bug.

725
00:40:03.199 --> 00:40:08.039
<v Speaker 4>Okay, it's your problem. It's your problem that production, Your

726
00:40:08.039 --> 00:40:10.239
<v Speaker 4>production is broken, not mine.

727
00:40:11.079 --> 00:40:12.639
<v Speaker 9>Yes, but the train it's.

728
00:40:12.559 --> 00:40:13.840
<v Speaker 7>A cultural problem.

729
00:40:14.079 --> 00:40:17.199
<v Speaker 8>I don't just think it's a cultural problematatic system level

730
00:40:17.760 --> 00:40:20.920
<v Speaker 8>like we were discussing earlier that developers are not used

731
00:40:20.960 --> 00:40:26.679
<v Speaker 8>to sharing and sharing the responsibility and the probably we need.

732
00:40:27.280 --> 00:40:32.400
<v Speaker 2>Yeah, it's a cultural problem that the majority of humanity

733
00:40:32.480 --> 00:40:33.119
<v Speaker 2>are whiners.

734
00:40:34.920 --> 00:40:37.239
<v Speaker 1>All right, I'm gonna I'm gonna derail us back to

735
00:40:37.360 --> 00:40:40.800
<v Speaker 1>our note pillars here and and we're going to move

736
00:40:40.840 --> 00:40:44.400
<v Speaker 1>along to avoid global variables can figs or singletons.

737
00:40:46.079 --> 00:40:50.679
<v Speaker 6>Yes, this is a big one. This catches a lot

738
00:40:50.679 --> 00:40:53.119
<v Speaker 6>of people. And it's not just no I understanding like

739
00:40:53.199 --> 00:40:55.679
<v Speaker 6>you know, for for for workers a completely different environment.

740
00:40:56.280 --> 00:40:57.519
<v Speaker 2>It's programming.

741
00:41:00.559 --> 00:41:01.960
<v Speaker 1>It's a global problem.

742
00:41:04.159 --> 00:41:06.400
<v Speaker 6>Because global you know, individual like iOS tied to an

743
00:41:06.400 --> 00:41:11.079
<v Speaker 6>individual request and historical related to requests from another request,

744
00:41:11.159 --> 00:41:14.360
<v Speaker 6>and it's gonna work. So like here we may explicit

745
00:41:14.519 --> 00:41:16.639
<v Speaker 6>like don't do this, but yeah, you know we run

746
00:41:16.719 --> 00:41:20.239
<v Speaker 6>into this all damn time that people just trip themselves up.

747
00:41:22.320 --> 00:41:27.360
<v Speaker 2>How how is NOE different than than general development? Like

748
00:41:27.760 --> 00:41:30.960
<v Speaker 2>I like, I've been writing code for I don't know

749
00:41:31.440 --> 00:41:35.440
<v Speaker 2>thirty years. I remember when I started feeling people were

750
00:41:35.480 --> 00:41:39.280
<v Speaker 2>telling me my teachers, my my mentors, whatever. Don't use

751
00:41:39.360 --> 00:41:43.480
<v Speaker 2>globals like what's what's new node? That kind of changes

752
00:41:43.599 --> 00:41:44.440
<v Speaker 2>the dynamic here.

753
00:41:45.239 --> 00:41:51.840
<v Speaker 4>A significant portion of the developers that arrive in node Okay,

754
00:41:54.480 --> 00:41:59.679
<v Speaker 4>it comes from a front end background okay, and or

755
00:41:59.719 --> 00:42:03.199
<v Speaker 4>reach in aly historically okay, let's put it in the

756
00:42:03.400 --> 00:42:06.800
<v Speaker 4>jquity days. Okay, all the state was handled in a

757
00:42:06.880 --> 00:42:07.599
<v Speaker 4>global fashion.

758
00:42:08.840 --> 00:42:12.679
<v Speaker 5>That don't and yeah they don't. That that comes well

759
00:42:12.760 --> 00:42:13.239
<v Speaker 5>to the don't.

760
00:42:13.360 --> 00:42:13.679
<v Speaker 1>Okay.

761
00:42:14.159 --> 00:42:17.400
<v Speaker 4>The problem is it's one user, okay, one one browser,

762
00:42:17.519 --> 00:42:18.880
<v Speaker 4>one user, one state.

763
00:42:19.559 --> 00:42:26.079
<v Speaker 5>Okay, to some extent, it's super simple, Okay, makes total sense. Okay.

764
00:42:28.039 --> 00:42:29.760
<v Speaker 5>Not JS is not a browser okay.

765
00:42:30.440 --> 00:42:32.719
<v Speaker 4>One not JS process can handle more than one state

766
00:42:33.159 --> 00:42:35.400
<v Speaker 4>with one exception, if you deploy on a w S

767
00:42:35.480 --> 00:42:38.760
<v Speaker 4>lambda or so that you or or workers where one

768
00:42:38.880 --> 00:42:42.559
<v Speaker 4>request is one state and one user. So you could

769
00:42:42.719 --> 00:42:45.400
<v Speaker 4>potentially achieat that. And that's what you know, those kinds

770
00:42:45.400 --> 00:42:48.760
<v Speaker 4>of ens gives it to you because in fact, Javaski

771
00:42:48.840 --> 00:42:51.280
<v Speaker 4>developer don't seem to be able to understand this principle.

772
00:42:52.239 --> 00:42:54.639
<v Speaker 6>But if it's not the jobs developers. So when we

773
00:42:54.719 --> 00:43:00.199
<v Speaker 6>see people, no matter what language you're in, mistakes, yeah,

774
00:43:01.320 --> 00:43:03.639
<v Speaker 6>and I don't think there's anything you need to know.

775
00:43:04.519 --> 00:43:07.440
<v Speaker 5>It's probably not. But anyway, the.

776
00:43:10.000 --> 00:43:12.719
<v Speaker 4>The a lot of a lot of people also a

777
00:43:12.840 --> 00:43:16.639
<v Speaker 4>part of them they never know anything different.

778
00:43:16.800 --> 00:43:19.199
<v Speaker 5>They come from a diverse byground. They didn't study any

779
00:43:19.199 --> 00:43:20.400
<v Speaker 5>of this stuff. Okay.

780
00:43:21.159 --> 00:43:23.760
<v Speaker 4>The other part is a group of people that we

781
00:43:23.880 --> 00:43:27.760
<v Speaker 4>used to do all software engineering and do a lot

782
00:43:27.880 --> 00:43:30.880
<v Speaker 4>of interface and a lot of things come from a

783
00:43:31.000 --> 00:43:33.920
<v Speaker 4>javaor dot m background that when they swop to know

784
00:43:34.119 --> 00:43:36.639
<v Speaker 4>they throw package at all of that and throw it away.

785
00:43:37.159 --> 00:43:39.360
<v Speaker 4>And when you show them how you can you know,

786
00:43:39.719 --> 00:43:42.639
<v Speaker 4>you can actually use this pattern to build a system

787
00:43:42.760 --> 00:43:45.960
<v Speaker 4>that is modular. And oh so I can do all

788
00:43:46.000 --> 00:43:48.599
<v Speaker 4>the things that I was used to do in Java

789
00:43:48.679 --> 00:43:51.559
<v Speaker 4>or dot nety No, yes you can, and they're just

790
00:43:52.639 --> 00:43:53.280
<v Speaker 4>I didn't know.

791
00:43:56.880 --> 00:44:00.599
<v Speaker 1>So so my question is like, what exactly is a

792
00:44:00.639 --> 00:44:01.239
<v Speaker 1>solution here?

793
00:44:01.320 --> 00:44:01.440
<v Speaker 6>Right?

794
00:44:01.599 --> 00:44:01.719
<v Speaker 2>Is it?

795
00:44:02.559 --> 00:44:05.320
<v Speaker 1>Is it like importing environment variables is.

796
00:44:07.719 --> 00:44:07.880
<v Speaker 8>Right?

797
00:44:08.559 --> 00:44:10.480
<v Speaker 1>But I mean I mean some things you do have

798
00:44:10.599 --> 00:44:12.840
<v Speaker 1>to bring in through configus, right, I mean they are

799
00:44:13.039 --> 00:44:16.639
<v Speaker 1>essentially going to be globally available. Yeah, I strike keys

800
00:44:16.719 --> 00:44:19.440
<v Speaker 1>or API keys or you know you set node and

801
00:44:19.840 --> 00:44:21.800
<v Speaker 1>to production and right, and that.

802
00:44:21.960 --> 00:44:25.559
<v Speaker 6>Kind of changes the game. So so stuff like that, Yeah,

803
00:44:26.039 --> 00:44:30.480
<v Speaker 6>what big one Pensy intection is the big one for modules.

804
00:44:30.840 --> 00:44:32.679
<v Speaker 6>You know, like a lot of some modules and stuff.

805
00:44:32.719 --> 00:44:34.519
<v Speaker 6>You know, when you go to require something, you get

806
00:44:34.559 --> 00:44:37.039
<v Speaker 6>back some single thing rather than that is your return

807
00:44:37.159 --> 00:44:39.800
<v Speaker 6>a factory that you know that you can use to

808
00:44:39.880 --> 00:44:43.719
<v Speaker 6>create your state management. So I think I think there

809
00:44:43.760 --> 00:44:45.840
<v Speaker 6>are a number of things. Some of these are discussed

810
00:44:45.880 --> 00:44:51.079
<v Speaker 6>in the in the blog post and tailor about them,

811
00:44:51.199 --> 00:44:54.400
<v Speaker 6>but the actually is the big one. You want to

812
00:44:54.480 --> 00:44:56.920
<v Speaker 6>actually say, you know, for this particular bit of code,

813
00:44:57.280 --> 00:44:59.199
<v Speaker 6>this is what I want to make available to that,

814
00:44:59.599 --> 00:45:01.880
<v Speaker 6>not just have it generally available for everyone to access.

815
00:45:05.239 --> 00:45:10.360
<v Speaker 2>Also, you know, if if all your objects are singletones,

816
00:45:10.480 --> 00:45:15.440
<v Speaker 2>it's not object oriented programming. And all the data within

817
00:45:15.559 --> 00:45:18.119
<v Speaker 2>a global single tone, all the fields within a global

818
00:45:18.199 --> 00:45:20.920
<v Speaker 2>single tone, certainly all the public properties within a global

819
00:45:20.960 --> 00:45:26.079
<v Speaker 2>signal tones are affectually all globals. So if I'm saying no,

820
00:45:26.199 --> 00:45:28.960
<v Speaker 2>I don't have a hundred globals, I have just one global,

821
00:45:29.119 --> 00:45:32.400
<v Speaker 2>but it has one hundred public properties, then you've got

822
00:45:32.440 --> 00:45:33.280
<v Speaker 2>one hundred globals.

823
00:45:34.199 --> 00:45:37.320
<v Speaker 8>Yes, And in.

824
00:45:37.360 --> 00:45:42.360
<v Speaker 2>Genera where and in general beware also mutable state, it's

825
00:45:42.400 --> 00:45:43.239
<v Speaker 2>certainly global.

826
00:45:43.320 --> 00:45:44.079
<v Speaker 1>Mutable states.

827
00:45:45.079 --> 00:45:47.559
<v Speaker 6>Avoid it all costs if you can. And this is

828
00:45:47.599 --> 00:45:50.880
<v Speaker 6>the problem things like you know process do you know whatever?

829
00:45:51.079 --> 00:45:54.280
<v Speaker 6>In node it's a global, it's a global. A lot

830
00:45:54.320 --> 00:45:57.559
<v Speaker 6>of folks will find it are using that for feature detection. Right,

831
00:45:57.639 --> 00:46:01.519
<v Speaker 6>they'll say, hey, if process exists and obviously i'm running

832
00:46:01.519 --> 00:46:04.199
<v Speaker 6>a note, Well no, because process now exists and you know,

833
00:46:04.320 --> 00:46:07.519
<v Speaker 6>and it just and find it exists in workers. Okay,

834
00:46:07.559 --> 00:46:09.599
<v Speaker 6>Well instead of using process, let me look at you know,

835
00:46:09.719 --> 00:46:13.320
<v Speaker 6>process dot whatever property. Well, if the run times start,

836
00:46:13.679 --> 00:46:17.239
<v Speaker 6>these other run times start. Also adding that relying on

837
00:46:17.320 --> 00:46:20.119
<v Speaker 6>these globals, just the existence of these globals, just to

838
00:46:20.440 --> 00:46:23.119
<v Speaker 6>depend on where you're at, everything still breaks. You're just

839
00:46:23.239 --> 00:46:26.199
<v Speaker 6>shifting the problem. It's going to break somewhere else. So

840
00:46:26.239 --> 00:46:28.000
<v Speaker 6>there's lots of problems with these, with these ideas of

841
00:46:28.079 --> 00:46:31.760
<v Speaker 6>having these globals. And it's not just whether you're storing state,

842
00:46:31.840 --> 00:46:34.920
<v Speaker 6>it's but decisions are you making based on existence.

843
00:46:34.519 --> 00:46:37.400
<v Speaker 2>Of the global it's us their agent strings all over again.

844
00:46:37.840 --> 00:46:41.760
<v Speaker 6>Yeah, only maybe even worse because there's so many different

845
00:46:41.760 --> 00:46:42.320
<v Speaker 6>ways of doing it.

846
00:46:46.280 --> 00:46:51.880
<v Speaker 4>Oh man, So the way the worst pattern here is

847
00:46:52.039 --> 00:46:56.400
<v Speaker 4>those applications that then they are fully configurable US using

848
00:46:56.519 --> 00:47:00.599
<v Speaker 4>environment variables. Okay, and the environment variables are pride into

849
00:47:00.679 --> 00:47:04.320
<v Speaker 4>a thousand different files, so you don't know what are

850
00:47:04.360 --> 00:47:07.079
<v Speaker 4>the confusion, and each one has a different default, and

851
00:47:07.199 --> 00:47:12.199
<v Speaker 4>you don't know what each of anyone controls and the

852
00:47:12.320 --> 00:47:14.719
<v Speaker 4>only way to know is just grab the full codebase.

853
00:47:15.719 --> 00:47:16.119
<v Speaker 2>Mm hmm.

854
00:47:16.480 --> 00:47:20.880
<v Speaker 5>It's a nightmare, okay, and I don't you know there's

855
00:47:20.880 --> 00:47:21.360
<v Speaker 5>a nightmare.

856
00:47:21.400 --> 00:47:24.719
<v Speaker 4>So you want to take when you're your application starts,

857
00:47:24.760 --> 00:47:26.280
<v Speaker 4>you want to take your environment variable.

858
00:47:26.360 --> 00:47:27.039
<v Speaker 5>So you're conflict.

859
00:47:27.119 --> 00:47:30.119
<v Speaker 4>You pass the thing you'd get the values, and then

860
00:47:30.159 --> 00:47:32.679
<v Speaker 4>you pass it down each single application.

861
00:47:34.800 --> 00:47:38.119
<v Speaker 2>Now you've got a recommendation especially sorry.

862
00:47:38.800 --> 00:47:42.719
<v Speaker 8>Especially, do not use schools if you're going to publish,

863
00:47:42.880 --> 00:47:46.159
<v Speaker 8>like we were suggesting earlier, for everyone to consume.

864
00:47:47.159 --> 00:47:49.199
<v Speaker 9>Yes, let's try.

865
00:47:51.320 --> 00:47:55.440
<v Speaker 2>Yeah, you're just spreading your bad habits around and impacting everybody.

866
00:47:56.840 --> 00:47:59.400
<v Speaker 6>I would say that module, you know, any dependencies that

867
00:47:59.400 --> 00:48:02.320
<v Speaker 6>you're bringing in, do not touch globals. I mean, if

868
00:48:02.320 --> 00:48:06.440
<v Speaker 6>you're consuming globals like global APIs like URL, fine, do

869
00:48:06.679 --> 00:48:09.159
<v Speaker 6>not mu take global state from the module. Period.

870
00:48:13.199 --> 00:48:16.679
<v Speaker 1>So you kind of said that there might be configures

871
00:48:16.840 --> 00:48:19.719
<v Speaker 1>throughout your app. That is the issue that you have

872
00:48:19.840 --> 00:48:22.639
<v Speaker 1>your configurations that may be spread across different places where

873
00:48:22.639 --> 00:48:26.760
<v Speaker 1>you get them from. Or is the issue that you

874
00:48:26.920 --> 00:48:28.480
<v Speaker 1>have a lot of places where it changes the way

875
00:48:28.480 --> 00:48:29.119
<v Speaker 1>your code works.

876
00:48:32.119 --> 00:48:37.960
<v Speaker 2>We're both I think both Socially, you manage sort to interrupt,

877
00:48:38.079 --> 00:48:41.199
<v Speaker 2>but I'm really am trying to to understand, James, where

878
00:48:41.199 --> 00:48:43.960
<v Speaker 2>you get what you're getting at? If I've got like

879
00:48:44.440 --> 00:48:48.719
<v Speaker 2>what I like effectively global configuration, Like there are certain

880
00:48:49.519 --> 00:48:53.400
<v Speaker 2>configuration flags that impact the behavior of my entire application.

881
00:48:54.320 --> 00:48:59.159
<v Speaker 2>Would you rather have one module responsible for all that

882
00:48:59.440 --> 00:49:03.519
<v Speaker 2>global figuration and everybody gets injected with it, or would

883
00:49:03.559 --> 00:49:07.119
<v Speaker 2>you rather that each model is just responsible for the

884
00:49:07.239 --> 00:49:11.440
<v Speaker 2>configuration that directly pertains to what that module does, Like,

885
00:49:11.599 --> 00:49:13.280
<v Speaker 2>what would be your approach here?

886
00:49:14.639 --> 00:49:18.440
<v Speaker 6>My approach would be that the application should collect whatever

887
00:49:18.599 --> 00:49:24.039
<v Speaker 6>configuration is available and inject that into the modules. So

888
00:49:24.159 --> 00:49:27.559
<v Speaker 6>the module itself should not be looking at processing. It

889
00:49:27.599 --> 00:49:30.360
<v Speaker 6>should be relying on what arguments are passed to it

890
00:49:30.719 --> 00:49:31.519
<v Speaker 6>from the application.

891
00:49:34.039 --> 00:49:37.679
<v Speaker 1>So I'm just going to ask, because if there are

892
00:49:37.679 --> 00:49:40.519
<v Speaker 1>a lot of places where your configuration can change the

893
00:49:40.599 --> 00:49:45.599
<v Speaker 1>way that the code flows through your application, it almost

894
00:49:45.719 --> 00:49:48.639
<v Speaker 1>sounds like feature flags, And I know a lot of

895
00:49:48.679 --> 00:49:52.159
<v Speaker 1>people use those. So are you arguing against feature flags

896
00:49:52.239 --> 00:49:52.880
<v Speaker 1>or do you see those.

897
00:49:52.760 --> 00:49:55.639
<v Speaker 6>Differently the same different I think it comes down to

898
00:49:55.760 --> 00:49:57.039
<v Speaker 6>how they're injected into the module.

899
00:49:57.320 --> 00:49:57.599
<v Speaker 3>Okay.

900
00:50:00.119 --> 00:50:05.159
<v Speaker 2>The problem is that sometimes it can lead to having

901
00:50:05.280 --> 00:50:11.039
<v Speaker 2>to pass things through a lot of function calls, like

902
00:50:11.239 --> 00:50:15.400
<v Speaker 2>You're trying to get a flag way down, and now

903
00:50:15.480 --> 00:50:18.599
<v Speaker 2>you've got to pass it through a lot of you know,

904
00:50:18.760 --> 00:50:20.760
<v Speaker 2>a colls B, colls C. Now I have to add

905
00:50:20.800 --> 00:50:23.239
<v Speaker 2>the parameter to all of these functions which really don't

906
00:50:23.320 --> 00:50:25.239
<v Speaker 2>care about this feature flag just to get it all

907
00:50:25.280 --> 00:50:27.320
<v Speaker 2>the way down. So I'm saying, hey, I'm going to

908
00:50:27.400 --> 00:50:30.480
<v Speaker 2>clean the code by just making it global. Uh, and

909
00:50:30.639 --> 00:50:34.199
<v Speaker 2>now I can access it from from wherever I need to.

910
00:50:34.239 --> 00:50:36.480
<v Speaker 2>It's kind of like the problem that React tries to

911
00:50:36.559 --> 00:50:38.039
<v Speaker 2>solve with context in a way.

912
00:50:38.519 --> 00:50:40.480
<v Speaker 6>Yeah, well, I mean we have the same Like that's

913
00:50:40.519 --> 00:50:43.920
<v Speaker 6>also where acinc Global storage kind of kind of comes

914
00:50:43.920 --> 00:50:46.280
<v Speaker 6>into play, where you can use acent local storage to

915
00:50:46.360 --> 00:50:49.400
<v Speaker 6>avoid that, you know, having to pass it through each layer,

916
00:50:50.719 --> 00:50:52.800
<v Speaker 6>but you still have to make the acinc local storage

917
00:50:52.840 --> 00:50:56.719
<v Speaker 6>variable itself available, you know, to the various places that

918
00:50:56.760 --> 00:50:59.960
<v Speaker 6>are So how do you do that? It's it's it's

919
00:51:00.199 --> 00:51:03.960
<v Speaker 6>not a problem free approach. It has its own challenges.

920
00:51:04.079 --> 00:51:06.840
<v Speaker 6>Whether you have to pass this thing down or make

921
00:51:06.960 --> 00:51:09.800
<v Speaker 6>some you know, make some things global and other things not.

922
00:51:10.159 --> 00:51:11.960
<v Speaker 6>You have to be very intentional and plant it out

923
00:51:12.039 --> 00:51:16.679
<v Speaker 6>very carefully. But as a whole overall, right, relying on

924
00:51:16.760 --> 00:51:20.480
<v Speaker 6>dependency injection is going to be far better a pattern

925
00:51:20.920 --> 00:51:23.840
<v Speaker 6>in a far more maintainable pattern free application than allowing

926
00:51:24.000 --> 00:51:26.920
<v Speaker 6>modules to just arbitrarily access and modified level state.

927
00:51:27.719 --> 00:51:31.159
<v Speaker 2>Yeah for sure, then you need to somebody modified my

928
00:51:31.280 --> 00:51:32.840
<v Speaker 2>state and I have no idea who.

929
00:51:34.559 --> 00:51:35.000
<v Speaker 1>My cheese?

930
00:51:35.760 --> 00:51:38.280
<v Speaker 2>Yeah, yeah, I do want Before we move on to

931
00:51:38.400 --> 00:51:41.280
<v Speaker 2>the next one, you kind of made an interesting assertion

932
00:51:41.639 --> 00:51:44.760
<v Speaker 2>in this pillar which is always set no d V

933
00:51:44.920 --> 00:51:49.119
<v Speaker 2>to production. Can you elaborate why? What's you know? Why?

934
00:51:49.360 --> 00:51:50.000
<v Speaker 2>And why is it?

935
00:51:50.719 --> 00:51:50.760
<v Speaker 6>Like?

936
00:51:51.639 --> 00:51:54.320
<v Speaker 5>This is an old battle, This is an old battle

937
00:51:54.400 --> 00:52:00.280
<v Speaker 5>of mine? Okay. Now all of these comes from one problem. Okay,

938
00:52:00.440 --> 00:52:01.199
<v Speaker 5>for developers.

939
00:52:02.119 --> 00:52:06.960
<v Speaker 4>If I ask ten developers what the development environment is,

940
00:52:09.360 --> 00:52:17.400
<v Speaker 4>they tell Mike Black. If if you ask ten ops people,

941
00:52:19.039 --> 00:52:22.639
<v Speaker 4>they say, oh, it's some service running somewhere where the

942
00:52:22.719 --> 00:52:23.800
<v Speaker 4>developer test that code.

943
00:52:23.960 --> 00:52:27.760
<v Speaker 5>Okay, that's the source of the problem. Okay. They we

944
00:52:27.880 --> 00:52:31.599
<v Speaker 5>use the same the same terms for two different things. Okay.

945
00:52:32.840 --> 00:52:38.480
<v Speaker 4>Now this means that somebody, somebody bright mind started to

946
00:52:38.519 --> 00:52:47.039
<v Speaker 4>put published a module called muh config in MPM and

947
00:52:47.760 --> 00:52:51.480
<v Speaker 4>then that loads you the now the score environment variable

948
00:52:52.239 --> 00:52:57.119
<v Speaker 4>for loading up the conflict file. However, some libraries in

949
00:52:58.039 --> 00:53:02.840
<v Speaker 4>like Express for example, React, than others changes their behavior

950
00:53:02.920 --> 00:53:04.079
<v Speaker 4>based on the northern.

951
00:53:03.840 --> 00:53:06.280
<v Speaker 5>The score en of environment variable being set to production.

952
00:53:07.360 --> 00:53:10.800
<v Speaker 4>Now, if you're loading the conflict for your service environment

953
00:53:10.880 --> 00:53:14.719
<v Speaker 4>based on that variable, you are essentially your staging environment

954
00:53:14.880 --> 00:53:16.320
<v Speaker 4>or anything that is not production.

955
00:53:17.840 --> 00:53:21.280
<v Speaker 5>Absolutely you will have massive issues.

956
00:53:21.719 --> 00:53:25.199
<v Speaker 4>And that confic module is downloaded so many times, okay,

957
00:53:25.719 --> 00:53:27.840
<v Speaker 4>which is unbelievable.

958
00:53:28.679 --> 00:53:31.800
<v Speaker 5>And frankly, it should not be used. Okay.

959
00:53:32.639 --> 00:53:36.000
<v Speaker 4>I'm very happy to stand here making these recommendation. So

960
00:53:36.079 --> 00:53:37.760
<v Speaker 4>don't use that module if possible.

961
00:53:37.840 --> 00:53:38.119
<v Speaker 5>Okay.

962
00:53:38.320 --> 00:53:41.880
<v Speaker 1>So when you say always you mean in development as well?

963
00:53:42.679 --> 00:53:44.880
<v Speaker 4>Yeah, no, I mean in development is the only moment

964
00:53:44.920 --> 00:53:47.360
<v Speaker 4>where you don't set it very often. But whenever you

965
00:53:47.400 --> 00:53:49.519
<v Speaker 4>want to do any testing that is relevant to what

966
00:53:49.760 --> 00:53:52.880
<v Speaker 4>production looks like, you need to set it to production, even.

967
00:53:52.679 --> 00:53:53.960
<v Speaker 5>If it's a staging environment.

968
00:53:54.639 --> 00:53:57.599
<v Speaker 4>So oh wait a three, I am using something that

969
00:53:58.079 --> 00:54:00.840
<v Speaker 4>controls my environment. That's called an environment. I said it

970
00:54:00.880 --> 00:54:05.320
<v Speaker 4>to production even if it's a staging environment. Yes, this

971
00:54:05.719 --> 00:54:09.880
<v Speaker 4>was such a bad term to begin with, okay, and

972
00:54:10.039 --> 00:54:13.920
<v Speaker 4>such a massive headache pain that unfortunately.

973
00:54:14.960 --> 00:54:19.280
<v Speaker 5>We're stuck with. So and I'm sorry, like, please.

974
00:54:19.079 --> 00:54:23.480
<v Speaker 4>Don't use again, don't use, don't cload the configuration based

975
00:54:23.519 --> 00:54:25.559
<v Speaker 4>on that valuable because it's a bad idea.

976
00:54:26.000 --> 00:54:28.400
<v Speaker 1>I've had that bite me squarely in the rear end before.

977
00:54:28.519 --> 00:54:31.760
<v Speaker 1>So all right, just in the interest of time, we're

978
00:54:31.760 --> 00:54:33.599
<v Speaker 1>going to move to the next one. It's handled errors

979
00:54:33.639 --> 00:54:38.000
<v Speaker 1>and provide meaningful logs. I'd stand up and screen yes,

980
00:54:39.719 --> 00:54:41.920
<v Speaker 1>because I had this one hurt me too. But where

981
00:54:42.000 --> 00:54:42.840
<v Speaker 1>where you guys.

982
00:54:50.840 --> 00:54:51.239
<v Speaker 2>For me that?

983
00:54:51.280 --> 00:54:53.239
<v Speaker 6>I mean just the title of this one is is

984
00:54:54.159 --> 00:54:58.559
<v Speaker 6>I think? So it's like, that's that's good enough the

985
00:54:58.679 --> 00:55:03.360
<v Speaker 6>provide meaningful logs. I think I think this is not

986
00:55:03.480 --> 00:55:05.599
<v Speaker 6>specific to note. You know, we've all had examples of

987
00:55:05.679 --> 00:55:09.239
<v Speaker 6>run times where it's just like, hey, error happened. Cool?

988
00:55:09.559 --> 00:55:10.960
<v Speaker 6>Where how?

989
00:55:11.280 --> 00:55:11.920
<v Speaker 2>What? What? What?

990
00:55:12.079 --> 00:55:16.079
<v Speaker 6>Actually is that take the time? People have to understand

991
00:55:16.119 --> 00:55:19.400
<v Speaker 6>that the errors that their their system produces is part

992
00:55:19.440 --> 00:55:22.079
<v Speaker 6>of the contract, part of the a P. I need

993
00:55:22.159 --> 00:55:25.800
<v Speaker 6>to be as intentional about the design of errors as

994
00:55:25.800 --> 00:55:29.159
<v Speaker 6>they are about the the syntax or the or the

995
00:55:29.599 --> 00:55:32.800
<v Speaker 6>signature of the functions that the calling they're exposing errors

996
00:55:32.880 --> 00:55:34.639
<v Speaker 6>are a PI I designed them accordingly.

997
00:55:38.519 --> 00:55:40.800
<v Speaker 2>If your server crashes in the middle of the night

998
00:55:41.800 --> 00:55:44.960
<v Speaker 2>and you're told about it in the morning after it's

999
00:55:45.000 --> 00:55:48.119
<v Speaker 2>been restarted, will you able to you will you be

1000
00:55:48.159 --> 00:55:51.360
<v Speaker 2>able to do anything about it. If your answer is no,

1001
00:55:51.679 --> 00:55:52.679
<v Speaker 2>then you've got the problem.

1002
00:55:56.079 --> 00:55:58.440
<v Speaker 6>Yeah, it's.

1003
00:55:59.800 --> 00:56:02.400
<v Speaker 1>It's it's so rough when you yeah, you have this issue.

1004
00:56:03.000 --> 00:56:05.159
<v Speaker 1>And then essentially you have to go keep going back

1005
00:56:05.239 --> 00:56:07.599
<v Speaker 1>and modifying what gets logged to try and figure it out,

1006
00:56:07.639 --> 00:56:11.320
<v Speaker 1>because you can't duplicate it in development and you don't

1007
00:56:11.320 --> 00:56:13.239
<v Speaker 1>have enough information in your logs to figure out how

1008
00:56:13.280 --> 00:56:17.639
<v Speaker 1>it happened in production. And sometimes there are going to

1009
00:56:17.679 --> 00:56:19.639
<v Speaker 1>be bugs that way, no matter how good at this

1010
00:56:19.760 --> 00:56:23.920
<v Speaker 1>you are. But for heaven's sake, you know, if you

1011
00:56:24.159 --> 00:56:27.800
<v Speaker 1>if you know that something unexpected might happen there, you

1012
00:56:27.920 --> 00:56:30.760
<v Speaker 1>know you can set yourself up for success by just

1013
00:56:30.840 --> 00:56:34.440
<v Speaker 1>being aware and then having a good API and a

1014
00:56:34.519 --> 00:56:36.440
<v Speaker 1>good approach to logging errors.

1015
00:56:36.880 --> 00:56:40.960
<v Speaker 2>Look, you might not have the proper, the sufficient logs

1016
00:56:41.000 --> 00:56:44.559
<v Speaker 2>the first time around, because you know, obviously there's a

1017
00:56:44.679 --> 00:56:46.880
<v Speaker 2>limit on how much you can log and how and

1018
00:56:47.000 --> 00:56:50.360
<v Speaker 2>you don't want to be, you know, excessively verbose, and

1019
00:56:50.400 --> 00:56:56.039
<v Speaker 2>they're usually also costs associated with logging. But you know,

1020
00:56:56.119 --> 00:56:58.079
<v Speaker 2>at the very least you want to be able to

1021
00:56:58.280 --> 00:57:01.360
<v Speaker 2>change log level on some so that the next time

1022
00:57:01.440 --> 00:57:04.639
<v Speaker 2>it crashes at least then you'll you'll you'll have sufficient

1023
00:57:04.760 --> 00:57:08.559
<v Speaker 2>context if you now have to start adding new logs.

1024
00:57:10.360 --> 00:57:11.400
<v Speaker 2>It's going to be a pain.

1025
00:57:12.039 --> 00:57:15.360
<v Speaker 6>M oh yeah, definitely. In this In the in the

1026
00:57:15.440 --> 00:57:18.920
<v Speaker 6>post it there's a section provide meaningful logs. Again, it

1027
00:57:19.000 --> 00:57:22.320
<v Speaker 6>goes back to being intentional, treating this as part of

1028
00:57:22.400 --> 00:57:25.920
<v Speaker 6>your API, in a part of your contract. It's possible

1029
00:57:26.039 --> 00:57:29.480
<v Speaker 6>to go way overboard logging completely useless information that completely

1030
00:57:29.559 --> 00:57:33.119
<v Speaker 6>drowns out the useful bits of information. So it's like

1031
00:57:33.760 --> 00:57:35.679
<v Speaker 6>it's as much of a decision of what not to

1032
00:57:35.840 --> 00:57:38.320
<v Speaker 6>log as it is what to log and where and where.

1033
00:57:40.639 --> 00:57:42.519
<v Speaker 6>You know, there's a whole science to it, but it

1034
00:57:42.880 --> 00:57:45.280
<v Speaker 6>takes time to get right. But you have to put

1035
00:57:45.360 --> 00:57:47.679
<v Speaker 6>a lot under this point, and most people don't.

1036
00:57:48.559 --> 00:57:51.480
<v Speaker 2>And you need to think about what logs at what levels,

1037
00:57:51.639 --> 00:57:56.239
<v Speaker 2>and can you control levels like globally or for module

1038
00:57:56.360 --> 00:57:59.360
<v Speaker 2>and stuff like that, or at least per service and

1039
00:57:59.440 --> 00:57:59.880
<v Speaker 2>stuff like.

1040
00:57:59.880 --> 00:58:03.519
<v Speaker 6>That, and provide details, provide enough details that you can

1041
00:58:03.639 --> 00:58:07.840
<v Speaker 6>filter out the noise that's not relevant to a particular investigation.

1042
00:58:09.599 --> 00:58:13.360
<v Speaker 1>I was going to say, there are libraries that give

1043
00:58:13.400 --> 00:58:15.719
<v Speaker 1>you kind of a default format to start from that

1044
00:58:15.840 --> 00:58:19.519
<v Speaker 1>are typically better than the default logging deal that you

1045
00:58:19.639 --> 00:58:22.719
<v Speaker 1>get from what you're beginning with. And so you know,

1046
00:58:22.840 --> 00:58:25.199
<v Speaker 1>have a look at those, figure out what they're doing,

1047
00:58:25.400 --> 00:58:27.760
<v Speaker 1>and then just just be intentional. From there, I may

1048
00:58:27.800 --> 00:58:28.639
<v Speaker 1>also need to know this.

1049
00:58:31.119 --> 00:58:36.760
<v Speaker 8>Yeah, if you're a developer tool developer, you also need

1050
00:58:36.840 --> 00:58:40.400
<v Speaker 8>to make sure your logs are not two verbals that

1051
00:58:41.079 --> 00:58:44.000
<v Speaker 8>go back to the developer with the right feedback and

1052
00:58:44.159 --> 00:58:47.599
<v Speaker 8>not a lot of noise that is useless to.

1053
00:58:48.119 --> 00:58:50.199
<v Speaker 1>Trouble shoot anything else.

1054
00:58:50.280 --> 00:58:53.400
<v Speaker 6>On that one, I will say, talking about the cost

1055
00:58:53.440 --> 00:58:55.599
<v Speaker 6>of logging, it's a it's a fairly old article at

1056
00:58:55.639 --> 00:58:59.440
<v Speaker 6>this point, but when Mattel and Avemark Clemens and Supper

1057
00:58:59.639 --> 00:59:02.800
<v Speaker 6>Working then started on Pinot, there's some research on the

1058
00:59:03.000 --> 00:59:06.360
<v Speaker 6>cost of logging and performance cost of blogging that even

1059
00:59:06.400 --> 00:59:08.760
<v Speaker 6>though the exact numbers and stuff may be different today

1060
00:59:08.800 --> 00:59:11.800
<v Speaker 6>than what they were back then, it is still an excellent,

1061
00:59:12.079 --> 00:59:14.800
<v Speaker 6>excellent read. Mattel, you can provide me with a link

1062
00:59:14.880 --> 00:59:16.239
<v Speaker 6>to that. I don't have a handy, but.

1063
00:59:17.880 --> 00:59:21.360
<v Speaker 5>Of course I can. It's very old, it's very old, but.

1064
00:59:21.400 --> 00:59:24.159
<v Speaker 6>I consider it. I consider it kind of part of

1065
00:59:24.239 --> 00:59:28.320
<v Speaker 6>the must read collection of stuff for understanding a lot

1066
00:59:28.360 --> 00:59:32.119
<v Speaker 6>of this stuff. It really breaks down why there's the

1067
00:59:32.199 --> 00:59:34.719
<v Speaker 6>cost of why you have to be intentional about this stuff.

1068
00:59:35.840 --> 00:59:41.079
<v Speaker 2>It is so uh. And one more thing I see

1069
00:59:41.119 --> 00:59:45.960
<v Speaker 2>in the article Mattel that you recommend the Pino as

1070
00:59:46.039 --> 00:59:47.719
<v Speaker 2>a library to use for logging.

1071
00:59:48.480 --> 00:59:49.400
<v Speaker 5>Yeah, well that's what.

1072
00:59:53.039 --> 00:59:56.840
<v Speaker 4>They David myself wrote all those year backs, so that

1073
00:59:57.000 --> 01:00:00.800
<v Speaker 4>logging was the major bottoneck of most more the applications,

1074
01:00:01.079 --> 01:00:05.920
<v Speaker 4>which is incredible. Like you know, it's so the first

1075
01:00:05.960 --> 01:00:09.760
<v Speaker 4>one was logging, okay, and the second one was was expressed.

1076
01:00:10.599 --> 01:00:16.559
<v Speaker 4>So I created Pino and then I created Fastify okay.

1077
01:00:17.039 --> 01:00:21.400
<v Speaker 4>So that that was my journey and the optimizing the ecosystem.

1078
01:00:22.000 --> 01:00:24.239
<v Speaker 4>So I started getting one, then I move, I moved

1079
01:00:24.280 --> 01:00:28.800
<v Speaker 4>from there, moved to the next one. Okay, done essentially,

1080
01:00:29.000 --> 01:00:31.639
<v Speaker 4>And no, it's it's very problematic. Okay, there's a lot

1081
01:00:31.719 --> 01:00:35.039
<v Speaker 4>of like clogging is very hard. It's a very hard topic. Okay,

1082
01:00:35.679 --> 01:00:39.000
<v Speaker 4>either it's a big problem, is a big pain, or

1083
01:00:39.079 --> 01:00:42.159
<v Speaker 4>it's absolutely not okay, if you have a certain scale,

1084
01:00:42.280 --> 01:00:42.920
<v Speaker 4>is a massive pain.

1085
01:00:43.639 --> 01:00:48.599
<v Speaker 2>Oh yeah, for sure. Like I I three the three

1086
01:00:48.719 --> 01:00:52.039
<v Speaker 2>latest companies that I've worked, including the latest one size

1087
01:00:52.039 --> 01:00:54.440
<v Speaker 2>and so I currently work I. You know, you you've

1088
01:00:54.480 --> 01:00:56.960
<v Speaker 2>got the develops person coming up to you and saying,

1089
01:00:57.679 --> 01:01:01.559
<v Speaker 2>why have we got a billion logs every day? Do

1090
01:01:01.679 --> 01:01:03.320
<v Speaker 2>you really need all those logs.

1091
01:01:06.400 --> 01:01:11.360
<v Speaker 5>Yeah, pretty much. But it's also it's actually it's actually

1092
01:01:11.519 --> 01:01:11.920
<v Speaker 5>very hard.

1093
01:01:12.000 --> 01:01:15.239
<v Speaker 4>It's a very hard problem to fix, okay, and to

1094
01:01:15.320 --> 01:01:18.119
<v Speaker 4>be able to achieve the right level of granularity and everything.

1095
01:01:18.280 --> 01:01:22.960
<v Speaker 4>So with Pino we have reached a very good I

1096
01:01:23.039 --> 01:01:25.320
<v Speaker 4>think good balance. It works very well out of the

1097
01:01:25.360 --> 01:01:28.199
<v Speaker 4>bobs with good defaults, okay. But it can also be

1098
01:01:28.400 --> 01:01:33.000
<v Speaker 4>tuned down for your app to the exact what you need, okay.

1099
01:01:33.840 --> 01:01:36.159
<v Speaker 4>And you know, it has very very you know, fine

1100
01:01:36.280 --> 01:01:40.880
<v Speaker 4>grained configuration that you can put it in, and it's

1101
01:01:41.199 --> 01:01:43.559
<v Speaker 4>very important that you do those things when once you

1102
01:01:43.639 --> 01:01:45.039
<v Speaker 4>reach a certain level of production.

1103
01:01:46.519 --> 01:01:48.679
<v Speaker 6>For me, though, you know, using the tool with one

1104
01:01:48.679 --> 01:01:51.920
<v Speaker 6>thing and I would recommend, you know, absolutely hands down.

1105
01:01:52.000 --> 01:01:55.239
<v Speaker 6>But for me, it mostly comes down to being aware

1106
01:01:55.280 --> 01:01:58.039
<v Speaker 6>of what you're logging and where the costs are. If

1107
01:01:58.119 --> 01:02:01.400
<v Speaker 6>what you're logging or a bunch of large objects areting

1108
01:02:01.440 --> 01:02:05.960
<v Speaker 6>it Jason serialized, understand that there's a cost to Jason serialization, right,

1109
01:02:06.039 --> 01:02:08.440
<v Speaker 6>and if you're sending these massive objects into this.

1110
01:02:08.519 --> 01:02:12.679
<v Speaker 5>Thing, come on, marshaling. Marshaling is not free.

1111
01:02:15.280 --> 01:02:17.760
<v Speaker 6>But you know, we end up with these with with

1112
01:02:17.920 --> 01:02:20.159
<v Speaker 6>with this code. I've seen this time and time again

1113
01:02:20.400 --> 01:02:23.880
<v Speaker 6>where you have the this this logging logic and like, hey,

1114
01:02:23.880 --> 01:02:26.280
<v Speaker 6>we're following the best practice. We're logging on these levels.

1115
01:02:26.800 --> 01:02:29.360
<v Speaker 6>Well okay, that level is not activated. Why are you

1116
01:02:29.440 --> 01:02:32.960
<v Speaker 6>still constructing this massive object, you know, unconditionally passing it

1117
01:02:33.039 --> 01:02:34.760
<v Speaker 6>off to their understand you know, when that has its

1118
01:02:34.800 --> 01:02:37.199
<v Speaker 6>own costs, and you know, folks need to stop and

1119
01:02:37.280 --> 01:02:40.360
<v Speaker 6>think about what they're looking and why and how not

1120
01:02:40.559 --> 01:02:43.559
<v Speaker 6>just what tool they're using, and understand this stuff has.

1121
01:02:43.679 --> 01:02:45.679
<v Speaker 6>That's a definitive cost.

1122
01:02:47.039 --> 01:02:50.199
<v Speaker 2>I'm sometimes so analo on those things, but I guess

1123
01:02:50.280 --> 01:02:53.800
<v Speaker 2>it's my mentality going back to the good old days

1124
01:02:53.880 --> 01:02:58.119
<v Speaker 2>of C and C plus plus and stuff like that. Uh,

1125
01:02:59.679 --> 01:03:02.719
<v Speaker 2>it's it really bugs me when I see something being

1126
01:03:02.840 --> 01:03:05.760
<v Speaker 2>computed for no for absolutely no reason.

1127
01:03:07.000 --> 01:03:09.519
<v Speaker 1>My brain sack faulted. When you said the good old

1128
01:03:09.599 --> 01:03:10.920
<v Speaker 1>days with C and C plus plus.

1129
01:03:15.159 --> 01:03:18.760
<v Speaker 2>Guys, I have to I have to drop off because

1130
01:03:18.840 --> 01:03:23.639
<v Speaker 2>there are sirens here. So thank you.

1131
01:03:25.719 --> 01:03:33.119
<v Speaker 1>All right, let's let's talk API specifications here real quick. So, yeah,

1132
01:03:33.159 --> 01:03:34.280
<v Speaker 1>who wants to tackle this one?

1133
01:03:36.119 --> 01:03:36.320
<v Speaker 7>Yeah?

1134
01:03:36.760 --> 01:03:40.039
<v Speaker 9>I'm pretty opinionated on this, and mostly because of what

1135
01:03:40.320 --> 01:03:41.159
<v Speaker 9>James just said.

1136
01:03:43.480 --> 01:03:44.800
<v Speaker 7>The contract is essential.

1137
01:03:45.119 --> 01:03:45.920
<v Speaker 6>You need to have it.

1138
01:03:46.239 --> 01:03:50.440
<v Speaker 9>You need to understand how you're going to collaborate with

1139
01:03:50.559 --> 01:03:51.360
<v Speaker 9>other people.

1140
01:03:52.920 --> 01:03:56.880
<v Speaker 8>Mostly now that that everyone is on the couple services

1141
01:03:57.840 --> 01:04:01.119
<v Speaker 8>or a lot of the applications. Fully, you're moving into

1142
01:04:01.239 --> 01:04:06.400
<v Speaker 8>that kind of architecture. To to make sure that you

1143
01:04:06.559 --> 01:04:09.960
<v Speaker 8>have the right governance, you need to have API contracts first.

1144
01:04:11.599 --> 01:04:13.679
<v Speaker 8>So that's one hundred.

1145
01:04:15.880 --> 01:04:16.320
<v Speaker 2>It must.

1146
01:04:18.119 --> 01:04:20.800
<v Speaker 1>Yeah, So you you guys in this one, you recommend

1147
01:04:20.840 --> 01:04:23.280
<v Speaker 1>either open API or graph ql. You said that they

1148
01:04:23.440 --> 01:04:28.440
<v Speaker 1>it depends on what you want, right, They have different strengths.

1149
01:04:29.239 --> 01:04:33.239
<v Speaker 1>So yeah, do you do you want to kind of

1150
01:04:33.320 --> 01:04:37.320
<v Speaker 1>talk a little bit about that, and then I'm really

1151
01:04:37.400 --> 01:04:42.360
<v Speaker 1>curious about generating clients and types because anyway, go ahead

1152
01:04:42.360 --> 01:04:43.880
<v Speaker 1>and answered that first part and then and then we

1153
01:04:43.920 --> 01:04:45.960
<v Speaker 1>can get into the clients and types of questions there.

1154
01:04:46.119 --> 01:04:47.960
<v Speaker 5>Let me take that very very briefly.

1155
01:04:48.159 --> 01:04:50.280
<v Speaker 4>Then I probably passed the ball to Natalie because she

1156
01:04:50.320 --> 01:04:51.559
<v Speaker 4>has a different opinion for me.

1157
01:04:52.320 --> 01:04:54.559
<v Speaker 1>So it's a nerd fight.

1158
01:04:55.280 --> 01:04:55.519
<v Speaker 5>Yeah.

1159
01:04:56.320 --> 01:04:57.679
<v Speaker 2>So the.

1160
01:05:00.079 --> 01:05:04.280
<v Speaker 4>An API is great. It provides the map to rest okay.

1161
01:05:04.920 --> 01:05:09.920
<v Speaker 4>So if you know how your systems are going to

1162
01:05:10.000 --> 01:05:14.840
<v Speaker 4>be composed and used, okay, this is great. However, they

1163
01:05:14.920 --> 01:05:19.280
<v Speaker 4>still suffer from, you know, the level of granduality that

1164
01:05:19.400 --> 01:05:23.840
<v Speaker 4>you're doing with rest okay. So it means that in

1165
01:05:24.000 --> 01:05:26.840
<v Speaker 4>order to achieve a certain a certain function, a certain

1166
01:05:27.079 --> 01:05:31.440
<v Speaker 4>central behavior, they will need to developer using those APIs,

1167
01:05:31.480 --> 01:05:34.599
<v Speaker 4>we need to issue two, three, four or five different calls, okay,

1168
01:05:35.360 --> 01:05:37.800
<v Speaker 4>especially from and these adds a lot, can add a

1169
01:05:37.840 --> 01:05:38.639
<v Speaker 4>lot of latency.

1170
01:05:39.119 --> 01:05:42.639
<v Speaker 5>That's the problem in to fights the data that they need.

1171
01:05:43.239 --> 01:05:45.199
<v Speaker 4>To get the data that they need will graph you

1172
01:05:45.360 --> 01:05:48.119
<v Speaker 4>l you can actually do that with one single pass

1173
01:05:48.199 --> 01:05:51.800
<v Speaker 4>and have that logic done on the server side, okay,

1174
01:05:53.039 --> 01:05:55.360
<v Speaker 4>which I don't want to go into the intricacy of

1175
01:05:55.440 --> 01:06:00.880
<v Speaker 4>implementing that correctly. But the different news case is if

1176
01:06:00.960 --> 01:06:03.719
<v Speaker 4>you know, if you don't know how your system is

1177
01:06:03.800 --> 01:06:06.920
<v Speaker 4>going to be read and accessed, graphical is a great system,

1178
01:06:07.199 --> 01:06:10.679
<v Speaker 4>great way to provide all discoverability and easy way to

1179
01:06:10.760 --> 01:06:11.480
<v Speaker 4>consume the data.

1180
01:06:11.679 --> 01:06:11.960
<v Speaker 1>Okay.

1181
01:06:12.920 --> 01:06:18.039
<v Speaker 4>While my undergeneric understanding is that using open API can

1182
01:06:18.199 --> 01:06:22.760
<v Speaker 4>lead to more performance implementations and that are easier to

1183
01:06:24.159 --> 01:06:28.320
<v Speaker 4>scale genetically, so at the cost of latency. So you see,

1184
01:06:28.440 --> 01:06:31.599
<v Speaker 4>there is there is a trade and Natalian, I know

1185
01:06:31.719 --> 01:06:34.719
<v Speaker 4>that you prefer you have a different opinions to you.

1186
01:06:36.519 --> 01:06:39.360
<v Speaker 7>No, No, I mostly agree with what you say, like

1187
01:06:40.440 --> 01:06:45.480
<v Speaker 7>I like with everything else. You need to evaluate your

1188
01:06:45.599 --> 01:06:46.119
<v Speaker 7>trade offs.

1189
01:06:46.559 --> 01:06:51.440
<v Speaker 8>What are you what do you want to have cashing?

1190
01:06:51.800 --> 01:06:56.679
<v Speaker 8>Do you want to have a more granular or underfetching, yes,

1191
01:06:57.519 --> 01:07:00.199
<v Speaker 8>then go with with a certain pattern or an other.

1192
01:07:01.239 --> 01:07:03.519
<v Speaker 8>I am I am one hundred percent.

1193
01:07:05.719 --> 01:07:09.920
<v Speaker 9>Sure that even even if you're doing graph cul, you

1194
01:07:10.079 --> 01:07:15.679
<v Speaker 9>need to have a contract no matter what and generating

1195
01:07:15.800 --> 01:07:17.639
<v Speaker 9>your clients. It's right now.

1196
01:07:19.440 --> 01:07:20.960
<v Speaker 7>A possibility.

1197
01:07:22.880 --> 01:07:28.159
<v Speaker 9>Generating your client on top of the contract is very affections.

1198
01:07:31.119 --> 01:07:34.400
<v Speaker 1>So that that kind of leads right into this next part,

1199
01:07:34.440 --> 01:07:39.679
<v Speaker 1>which is generating clients and types. So I have to

1200
01:07:39.719 --> 01:07:44.599
<v Speaker 1>admit I've mostly unrest where I've done graph ql, Like

1201
01:07:44.760 --> 01:07:47.000
<v Speaker 1>I had to build the resolvers and stuff like that.

1202
01:07:47.159 --> 01:07:49.039
<v Speaker 1>It just felt like a lot of extra work to

1203
01:07:49.159 --> 01:07:51.440
<v Speaker 1>get that graph qu all the work. I mean, if

1204
01:07:51.480 --> 01:07:53.639
<v Speaker 1>I was doing front end that consumed graph ql a

1205
01:07:53.679 --> 01:07:56.559
<v Speaker 1>lot of times it was just magic, right, And so

1206
01:07:56.679 --> 01:07:59.360
<v Speaker 1>I felt like the trade off may or may not

1207
01:07:59.440 --> 01:08:03.760
<v Speaker 1>have been worth it. Am I looking at this wrong?

1208
01:08:04.159 --> 01:08:06.760
<v Speaker 1>Or is there something I just haven't seen there?

1209
01:08:07.360 --> 01:08:11.880
<v Speaker 4>Graphql okay removes removes a lot of the like if

1210
01:08:11.920 --> 01:08:16.199
<v Speaker 4>you okay with graph ql, which is something it's a

1211
01:08:16.319 --> 01:08:19.520
<v Speaker 4>fantastic system. If you have a lot of disjunted teams

1212
01:08:20.319 --> 01:08:24.800
<v Speaker 4>that do not talk with anyonet to minimize the incommunication

1213
01:08:24.960 --> 01:08:25.399
<v Speaker 4>between them.

1214
01:08:26.159 --> 01:08:30.520
<v Speaker 5>Okay. Essentially it's a tool that enables Okay, it is

1215
01:08:30.560 --> 01:08:31.680
<v Speaker 5>your graph celent point.

1216
01:08:32.000 --> 01:08:34.840
<v Speaker 4>It's my problem to maintain that, the team that produces it,

1217
01:08:34.960 --> 01:08:38.560
<v Speaker 4>maintaining and keeping it up and keeping it performance, which

1218
01:08:38.800 --> 01:08:40.640
<v Speaker 4>it might be very much in trouble in doing so.

1219
01:08:41.039 --> 01:08:44.279
<v Speaker 4>But it's a business choice, okay. And then consumers can

1220
01:08:44.359 --> 01:08:48.359
<v Speaker 4>get that. The consumers can just you know, they feel

1221
01:08:48.359 --> 01:08:51.319
<v Speaker 4>the magic. Okay, somebody feel the pain. Somebody else feel

1222
01:08:51.359 --> 01:08:51.720
<v Speaker 4>the magic.

1223
01:08:52.319 --> 01:08:52.640
<v Speaker 1>Okay.

1224
01:08:53.319 --> 01:08:58.880
<v Speaker 4>With with the rest and open API, you you probably

1225
01:08:59.319 --> 01:09:01.199
<v Speaker 4>it's less my That's what I'm saying.

1226
01:09:01.399 --> 01:09:01.800
<v Speaker 5>You can.

1227
01:09:04.079 --> 01:09:07.000
<v Speaker 6>Yeah, yeah, get a little bit of tighter coupling with.

1228
01:09:07.119 --> 01:09:10.760
<v Speaker 5>The genetically leads to tighter couple.

1229
01:09:13.560 --> 01:09:16.880
<v Speaker 6>Which is which, which is ironic given REST was originally

1230
01:09:16.920 --> 01:09:20.119
<v Speaker 6>intended to avoid the tighter coupling, but you still end

1231
01:09:20.199 --> 01:09:20.439
<v Speaker 6>up with that.

1232
01:09:22.439 --> 01:09:22.640
<v Speaker 1>Yeah.

1233
01:09:23.039 --> 01:09:26.840
<v Speaker 6>So, but I think I think to the highest point,

1234
01:09:27.199 --> 01:09:31.600
<v Speaker 6>the most important thing is having a contract. And you know,

1235
01:09:31.720 --> 01:09:35.000
<v Speaker 6>if you can generate code from that contract automatically, cool,

1236
01:09:36.079 --> 01:09:39.479
<v Speaker 6>all the better. But you have to start with the contract,

1237
01:09:39.720 --> 01:09:42.800
<v Speaker 6>whatever that is. And you can write the API contract

1238
01:09:42.960 --> 01:09:44.760
<v Speaker 6>just in a markdown document and say this is how

1239
01:09:44.800 --> 01:09:47.079
<v Speaker 6>the thing works, but you have to start with the

1240
01:09:47.159 --> 01:09:47.920
<v Speaker 6>contract first.

1241
01:09:49.640 --> 01:09:54.680
<v Speaker 1>Yeah, is there anything you wanted to add on those points?

1242
01:09:54.840 --> 01:09:59.920
<v Speaker 6>Or I think in Italian that they covered it perfectly.

1243
01:10:01.439 --> 01:10:05.000
<v Speaker 6>You know, there are trade offs you can generate. Cool,

1244
01:10:05.800 --> 01:10:09.600
<v Speaker 6>it's gonna be better for everyone. Whichever one you use

1245
01:10:09.680 --> 01:10:11.359
<v Speaker 6>depends on what your specific requirements are.

1246
01:10:13.279 --> 01:10:16.960
<v Speaker 1>Gotcha. There was a section here about API first versus

1247
01:10:17.079 --> 01:10:22.079
<v Speaker 1>code first, so that.

1248
01:10:22.479 --> 01:10:24.600
<v Speaker 5>Is a different in pattern.

1249
01:10:25.479 --> 01:10:28.720
<v Speaker 4>So uh, there's a lots of debate between all the

1250
01:10:28.800 --> 01:10:32.880
<v Speaker 4>people that do contract based development that they should start

1251
01:10:33.359 --> 01:10:38.119
<v Speaker 4>with this design the side big design session where the

1252
01:10:38.279 --> 01:10:43.039
<v Speaker 4>contract of the API is defined, okay, and then the

1253
01:10:43.119 --> 01:10:47.520
<v Speaker 4>people writing consuming it go their merry way, and then

1254
01:10:47.600 --> 01:10:50.800
<v Speaker 4>the people writing the the API go their merry way.

1255
01:10:51.640 --> 01:10:54.439
<v Speaker 5>Oh and that said, okay, bye, Natalia, I don't.

1256
01:10:54.319 --> 01:10:57.079
<v Speaker 1>Know, she's gone, and she said she had a hard stop.

1257
01:10:57.560 --> 01:11:01.239
<v Speaker 4>Yeah, and basically one when one way, the other one

1258
01:11:01.319 --> 01:11:06.399
<v Speaker 4>when the other way. Okay uh, and then when they

1259
01:11:06.520 --> 01:11:08.920
<v Speaker 4>try to meet in the end, it never works.

1260
01:11:10.399 --> 01:11:13.079
<v Speaker 6>Okay, I I.

1261
01:11:14.560 --> 01:11:14.840
<v Speaker 5>Don't know.

1262
01:11:15.199 --> 01:11:15.439
<v Speaker 8>I have.

1263
01:11:17.399 --> 01:11:19.720
<v Speaker 6>Person, and I'll work back to the A P I.

1264
01:11:19.960 --> 01:11:21.399
<v Speaker 6>But then I won't finish the code until the A

1265
01:11:21.720 --> 01:11:23.800
<v Speaker 6>contract is figured out so it can work.

1266
01:11:24.960 --> 01:11:30.520
<v Speaker 4>It's yeah, my genetically recommend My my experience is the

1267
01:11:30.720 --> 01:11:34.760
<v Speaker 4>contract is ready when the implementation that implement that contract

1268
01:11:35.960 --> 01:11:40.039
<v Speaker 4>is ready is final. Okay, you cannot finalize that, and

1269
01:11:40.960 --> 01:11:44.720
<v Speaker 4>therefore I am more or less saying that you know

1270
01:11:45.279 --> 01:11:45.800
<v Speaker 4>that and that.

1271
01:11:45.960 --> 01:11:47.960
<v Speaker 5>But the key challenge there is you need to keep

1272
01:11:48.039 --> 01:11:49.479
<v Speaker 5>to uphold the contract. Okay.

1273
01:11:49.560 --> 01:11:51.840
<v Speaker 4>Once you stubish the contract, you need to not break

1274
01:11:51.880 --> 01:11:55.000
<v Speaker 4>the contract. Very important because if you start breaking that.

1275
01:11:55.079 --> 01:11:57.920
<v Speaker 4>This is one of the bigger process of downtime. Somebody

1276
01:11:58.039 --> 01:12:01.079
<v Speaker 4>changed an API and said, oh, but these these things

1277
01:12:01.119 --> 01:12:04.960
<v Speaker 4>is now required it's not. Or these things was optional

1278
01:12:05.079 --> 01:12:09.079
<v Speaker 4>before and now well these things was required before is

1279
01:12:09.159 --> 01:12:12.720
<v Speaker 4>now optional whatever? Okay, and then the crash that starts

1280
01:12:12.760 --> 01:12:15.560
<v Speaker 4>opening all over the system, and one little change in

1281
01:12:15.600 --> 01:12:18.720
<v Speaker 4>a tiny micro service can bring down the full the

1282
01:12:18.800 --> 01:12:19.279
<v Speaker 4>full fleet.

1283
01:12:19.680 --> 01:12:21.359
<v Speaker 6>Either that or you end up with tons of technical

1284
01:12:21.439 --> 01:12:23.640
<v Speaker 6>debt and outdated code and obsolute stuff that you have

1285
01:12:23.680 --> 01:12:24.159
<v Speaker 6>to keep around.

1286
01:12:27.399 --> 01:12:30.920
<v Speaker 1>All right. Well, just to wrap up, is is there

1287
01:12:31.000 --> 01:12:35.279
<v Speaker 1>kind of an overarching theme or any messages that you

1288
01:12:35.399 --> 01:12:38.479
<v Speaker 1>want to kind of add to this or do we

1289
01:12:38.640 --> 01:12:39.680
<v Speaker 1>just for me? For me?

1290
01:12:39.840 --> 01:12:43.239
<v Speaker 6>The overarching theme is be intentional, be aware, like like

1291
01:12:43.479 --> 01:12:46.520
<v Speaker 6>pay closed attention to thing you're doing, whether it's breaking

1292
01:12:46.560 --> 01:12:48.439
<v Speaker 6>down the tasks so you don't let in the event loop,

1293
01:12:48.479 --> 01:12:52.880
<v Speaker 6>to whether it's bringing in a new dependency to you know,

1294
01:12:52.920 --> 01:12:55.640
<v Speaker 6>how you're designing your API. You have to stop and

1295
01:12:55.680 --> 01:12:56.640
<v Speaker 6>think about what you're doing.

1296
01:12:58.319 --> 01:13:00.399
<v Speaker 3>Yeah, and pretty much all the ones in the list

1297
01:13:00.840 --> 01:13:03.000
<v Speaker 3>that's the like, think about what you're doing. And this

1298
01:13:03.119 --> 01:13:06.239
<v Speaker 3>is almost a nice checklist to go through to say, like,

1299
01:13:06.359 --> 01:13:08.920
<v Speaker 3>have we been intentional enough to we plan what we're

1300
01:13:08.960 --> 01:13:12.479
<v Speaker 3>doing in each of these places and go from there.

1301
01:13:14.960 --> 01:13:18.439
<v Speaker 1>Yeah, all right, good deal. I'm not sure if mateo

1302
01:13:18.600 --> 01:13:19.199
<v Speaker 1>is frozen or.

1303
01:13:23.880 --> 01:13:27.039
<v Speaker 5>And I need really need to drop now, Okay, I.

1304
01:13:28.960 --> 01:13:29.760
<v Speaker 6>Break conversational.

1305
01:13:31.159 --> 01:13:36.119
<v Speaker 1>Yeah, well I'm gonna throw in some picks. I don't

1306
01:13:36.159 --> 01:13:41.079
<v Speaker 1>know if you want to do that too, Michael, but yeah,

1307
01:13:41.399 --> 01:13:43.199
<v Speaker 1>let me jump in here real quick with my picks,

1308
01:13:43.199 --> 01:13:44.640
<v Speaker 1>and then you can go ahead and throw in yours,

1309
01:13:46.439 --> 01:13:47.920
<v Speaker 1>or if James is going to stick around, he can

1310
01:13:48.159 --> 01:13:49.600
<v Speaker 1>do that too. But I got like, I got like

1311
01:13:49.680 --> 01:13:52.840
<v Speaker 1>three minutes, so okay, well maybe you can go first.

1312
01:13:53.359 --> 01:13:54.760
<v Speaker 1>I'm guessing you did picks last time.

1313
01:13:55.680 --> 01:13:56.439
<v Speaker 6>Yeah, it didn't.

1314
01:13:56.439 --> 01:13:56.760
<v Speaker 2>Watch time.

1315
01:13:56.800 --> 01:13:59.479
<v Speaker 6>I'm miss going to say something, you know, super simple,

1316
01:14:00.039 --> 01:14:02.960
<v Speaker 6>step away from the computer, go outside, talk to people,

1317
01:14:03.520 --> 01:14:06.319
<v Speaker 6>you know, you know, don't get too wrapped up and stuff,

1318
01:14:06.880 --> 01:14:09.239
<v Speaker 6>especially folks in the US. You know, things are kind

1319
01:14:09.239 --> 01:14:16.039
<v Speaker 6>of still, you know, you know, kind of rather there's

1320
01:14:16.079 --> 01:14:18.199
<v Speaker 6>quite a bit of turmoil and stuff. So just step away,

1321
01:14:18.319 --> 01:14:18.800
<v Speaker 6>take a break.

1322
01:14:19.640 --> 01:14:23.479
<v Speaker 1>That's it. Yep, It's good advice anytime of the year.

1323
01:14:24.920 --> 01:14:25.600
<v Speaker 6>I'm gonna go ahead.

1324
01:14:26.680 --> 01:14:30.039
<v Speaker 1>Okay, thanks for coming, James. All right, I'm gonna throw

1325
01:14:30.159 --> 01:14:34.840
<v Speaker 1>in my picks here. So my first pick I always

1326
01:14:34.840 --> 01:14:37.880
<v Speaker 1>do a board game pick. This last weekend, I was

1327
01:14:37.920 --> 01:14:41.760
<v Speaker 1>at a board game convention and I was teaching people

1328
01:14:42.159 --> 01:14:45.199
<v Speaker 1>the hot games. So my friend picked the games and

1329
01:14:45.319 --> 01:14:47.600
<v Speaker 1>we taught them at you know, for free, at the

1330
01:14:47.680 --> 01:14:52.079
<v Speaker 1>tables at the game at the game convention. So I'm

1331
01:14:52.119 --> 01:14:54.039
<v Speaker 1>just gonna pick one of those games. The game that

1332
01:14:54.119 --> 01:14:58.319
<v Speaker 1>I'm picking, And this was a super fun game. It's

1333
01:15:00.079 --> 01:15:07.079
<v Speaker 1>it was relatively simple to pick up. You know, I

1334
01:15:07.159 --> 01:15:09.079
<v Speaker 1>could explain it to people in like ten minutes, and

1335
01:15:09.600 --> 01:15:11.239
<v Speaker 1>you know, it takes about forty five minutes to play.

1336
01:15:11.279 --> 01:15:13.479
<v Speaker 1>You can play two to four players. It's called Gnome

1337
01:15:13.600 --> 01:15:17.479
<v Speaker 1>Hollow and effectively, I'm not going to give you the

1338
01:15:17.560 --> 01:15:18.960
<v Speaker 1>ten minute spiel. I'm going to give you the two

1339
01:15:18.960 --> 01:15:20.560
<v Speaker 1>minute spiel. And then if you want to go learn it,

1340
01:15:20.600 --> 01:15:23.760
<v Speaker 1>you can. Board game Geek weights it at two point

1341
01:15:24.119 --> 01:15:29.039
<v Speaker 1>one seven, so it's it's a fairly easy casual game

1342
01:15:29.119 --> 01:15:33.119
<v Speaker 1>or game. The way you play it is you are

1343
01:15:33.399 --> 01:15:41.439
<v Speaker 1>making like circles of like mushroom circles, right, so you

1344
01:15:41.520 --> 01:15:44.840
<v Speaker 1>know there's the kind of mythological you find a circle

1345
01:15:44.880 --> 01:15:47.439
<v Speaker 1>of mushrooms and it's you know, fairy something I don't

1346
01:15:47.600 --> 01:15:50.359
<v Speaker 1>I don't know, but anyway, so you're making mushroom rings

1347
01:15:50.359 --> 01:15:53.039
<v Speaker 1>and then you harvest the mushrooms from the rings, you

1348
01:15:53.199 --> 01:15:55.000
<v Speaker 1>take them to the market, you sell them for points.

1349
01:15:57.680 --> 01:16:00.600
<v Speaker 1>As you create more rings, you also just cover different

1350
01:16:00.680 --> 01:16:03.840
<v Speaker 1>kinds of wildflowers, and so you can collect the wild

1351
01:16:03.920 --> 01:16:07.319
<v Speaker 1>flowers and those are worth points. And then as you

1352
01:16:08.640 --> 01:16:12.439
<v Speaker 1>complete rings, you also move markers down onto your board.

1353
01:16:12.520 --> 01:16:17.920
<v Speaker 1>That gives you rewards, and the number of markers you've

1354
01:16:17.960 --> 01:16:21.000
<v Speaker 1>moved down is also a way of scoring points. Those

1355
01:16:21.039 --> 01:16:22.760
<v Speaker 1>are the three things that score at the end of

1356
01:16:22.840 --> 01:16:25.479
<v Speaker 1>the game. The points you've bought, or the points you've

1357
01:16:25.479 --> 01:16:29.920
<v Speaker 1>sold your mushrooms for the amount of wildflowers different wildflowers

1358
01:16:29.960 --> 01:16:33.680
<v Speaker 1>you've brought into your board, and then the number of

1359
01:16:33.760 --> 01:16:39.359
<v Speaker 1>rings you've completed. Basically it was super fun. Once you

1360
01:16:39.439 --> 01:16:41.800
<v Speaker 1>play around or two, it's like, oh, okay, I totally

1361
01:16:41.840 --> 01:16:43.880
<v Speaker 1>get how this goes. And so the rest of it

1362
01:16:44.039 --> 01:16:47.279
<v Speaker 1>is just figuring out which strategies you want to go for, Right,

1363
01:16:47.359 --> 01:16:52.119
<v Speaker 1>Am I going to maximize on flowers on rings or

1364
01:16:52.399 --> 01:16:59.399
<v Speaker 1>on you harvesting and selling mushrooms? And yeah, it was

1365
01:16:59.479 --> 01:17:01.760
<v Speaker 1>really really fun. Of all the games that we taught,

1366
01:17:02.920 --> 01:17:05.439
<v Speaker 1>this one was probably my favorite. I did buy one

1367
01:17:05.479 --> 01:17:08.279
<v Speaker 1>of the other games before the Game Board Game Convention

1368
01:17:08.359 --> 01:17:11.239
<v Speaker 1>because I liked it so much, but I've picked it

1369
01:17:11.279 --> 01:17:14.640
<v Speaker 1>on the show before. It's Challengers, So anyway, I'm gonna

1370
01:17:14.640 --> 01:17:18.640
<v Speaker 1>pick that one. No im hollow, And like I said,

1371
01:17:18.680 --> 01:17:22.880
<v Speaker 1>it's forty five minutes to an hour game, and yeah,

1372
01:17:23.039 --> 01:17:25.159
<v Speaker 1>the artwork on it is amazing. That always makes it

1373
01:17:25.199 --> 01:17:26.760
<v Speaker 1>more fun if it's got a good theme and it

1374
01:17:26.840 --> 01:17:30.039
<v Speaker 1>all kind of is cohesive. A couple of other things

1375
01:17:30.079 --> 01:17:33.920
<v Speaker 1>I'm gonna pick. I've been watching the show Reacher and

1376
01:17:34.000 --> 01:17:38.079
<v Speaker 1>I've been enjoying that. I just like the way that

1377
01:17:39.319 --> 01:17:43.319
<v Speaker 1>Jack Reacher essentially is I'm gonna do the right thing

1378
01:17:43.520 --> 01:17:45.640
<v Speaker 1>that I think is the right thing, and you can

1379
01:17:45.680 --> 01:17:48.239
<v Speaker 1>all just go pounce end and you know, if you

1380
01:17:48.279 --> 01:17:49.920
<v Speaker 1>get in my way, I'm gonna make you wish you

1381
01:17:50.000 --> 01:17:54.880
<v Speaker 1>hadn't you know, I just I don't know. I like

1382
01:17:54.960 --> 01:17:57.760
<v Speaker 1>to take no prisoners. I'm gonna find the truth approach

1383
01:17:57.880 --> 01:18:00.359
<v Speaker 1>to life. So you know, this kind of takes it

1384
01:18:00.399 --> 01:18:02.399
<v Speaker 1>to an extreme. It's kind of a violent show. So

1385
01:18:03.399 --> 01:18:05.399
<v Speaker 1>if that's not your cup of tea, don't watch it.

1386
01:18:06.760 --> 01:18:10.880
<v Speaker 1>You're right, it gets a little bit. Yeah, just violent.

1387
01:18:11.000 --> 01:18:14.119
<v Speaker 1>So I'm gonna pick that and then the last pick

1388
01:18:14.319 --> 01:18:17.279
<v Speaker 1>along the lines of what James was picking. You know,

1389
01:18:17.359 --> 01:18:19.279
<v Speaker 1>we just had the elections here in the United States.

1390
01:18:19.800 --> 01:18:21.479
<v Speaker 1>I know a lot of people have feelings about it.

1391
01:18:21.560 --> 01:18:24.119
<v Speaker 1>I've taught you know. I live in Utah, where red state.

1392
01:18:24.520 --> 01:18:26.119
<v Speaker 1>A lot of people are pretty happy that you know,

1393
01:18:26.279 --> 01:18:28.720
<v Speaker 1>Trump won and that you know, the House and the Senate.

1394
01:18:30.319 --> 01:18:33.319
<v Speaker 1>But then I see people kind of taking to task

1395
01:18:33.439 --> 01:18:36.359
<v Speaker 1>or making fun of people who are sad because you know,

1396
01:18:36.439 --> 01:18:40.520
<v Speaker 1>theirs I didn't win, and I'm not about that. I

1397
01:18:40.640 --> 01:18:42.880
<v Speaker 1>think some of the ways that people are reacting or

1398
01:18:42.920 --> 01:18:46.279
<v Speaker 1>overreacting to it is amusing. But I just keep that

1399
01:18:46.399 --> 01:18:48.720
<v Speaker 1>to myself because at the end of the day, it's

1400
01:18:48.840 --> 01:18:52.199
<v Speaker 1>not worth it to demonize or you know, make somebody

1401
01:18:52.279 --> 01:18:54.800
<v Speaker 1>feel bad because their side didn't win. So I just

1402
01:18:54.920 --> 01:18:57.039
<v Speaker 1>encourage everybody to be kind to each other. And then

1403
01:18:57.079 --> 01:18:58.800
<v Speaker 1>the folks on the other side, because I do see

1404
01:18:58.800 --> 01:19:01.199
<v Speaker 1>the posts where it's like, you know, my my family

1405
01:19:01.279 --> 01:19:02.760
<v Speaker 1>all voted for Trump and I'm not ever going to

1406
01:19:02.800 --> 01:19:04.760
<v Speaker 1>talk to him again. It's like, guys, don't do that,

1407
01:19:04.960 --> 01:19:08.680
<v Speaker 1>right either side, don't do that. You know, everybody has

1408
01:19:08.760 --> 01:19:11.520
<v Speaker 1>reasons why they voted the way they voted. Some of

1409
01:19:11.520 --> 01:19:14.119
<v Speaker 1>them are good, some of them are bad. You know,

1410
01:19:14.760 --> 01:19:17.039
<v Speaker 1>you think that they see what you see and then

1411
01:19:17.039 --> 01:19:19.880
<v Speaker 1>they voted the other way. Anyway, that's generally not true.

1412
01:19:20.199 --> 01:19:23.479
<v Speaker 1>I think we all mostly want to be you know,

1413
01:19:23.880 --> 01:19:26.039
<v Speaker 1>prosperous and happy and be able to take care of

1414
01:19:26.119 --> 01:19:30.119
<v Speaker 1>our families and things like that. So, you know, just

1415
01:19:31.479 --> 01:19:34.399
<v Speaker 1>give everybody the benefit of the doubt. And you know,

1416
01:19:34.560 --> 01:19:36.560
<v Speaker 1>if you're not up for having the conversation with the

1417
01:19:36.600 --> 01:19:40.359
<v Speaker 1>people you care about, then don't. But if you can,

1418
01:19:40.520 --> 01:19:42.239
<v Speaker 1>and you can come to understand a little bit more

1419
01:19:42.279 --> 01:19:43.960
<v Speaker 1>of I was really scared that this was going to

1420
01:19:44.000 --> 01:19:47.000
<v Speaker 1>happen if Trump or Harris got elected, you know, or

1421
01:19:47.319 --> 01:19:49.399
<v Speaker 1>I really care about this issue, and so I voted

1422
01:19:49.479 --> 01:19:51.560
<v Speaker 1>you know, maybe a single issue or mostly a single

1423
01:19:51.600 --> 01:19:53.960
<v Speaker 1>issue at least, then you can kind of see where

1424
01:19:54.000 --> 01:19:55.520
<v Speaker 1>people are coming from, and a lot of times you

1425
01:19:55.560 --> 01:19:58.840
<v Speaker 1>see the humanity in them anyway. So I'm just going

1426
01:19:58.880 --> 01:20:02.880
<v Speaker 1>to encourage that I'm not really shy about where I

1427
01:20:03.000 --> 01:20:04.760
<v Speaker 1>come down on this stuff, so you can I'll probably

1428
01:20:04.840 --> 01:20:07.840
<v Speaker 1>guess it, but that's not what this show is about.

1429
01:20:07.920 --> 01:20:09.680
<v Speaker 1>And I really feel like the best thing we can

1430
01:20:09.720 --> 01:20:12.039
<v Speaker 1>do at this point is just kind of come together,

1431
01:20:12.119 --> 01:20:14.079
<v Speaker 1>make sure we understand each other, and then take care

1432
01:20:14.119 --> 01:20:17.439
<v Speaker 1>of each other. So anyway, Michael, what are your picks?

1433
01:20:18.039 --> 01:20:20.119
<v Speaker 3>I'm just going to have one really quick one. Over

1434
01:20:20.159 --> 01:20:23.880
<v Speaker 3>the years, I've always wished I could like print you know,

1435
01:20:24.079 --> 01:20:26.159
<v Speaker 3>heads for the little Lego.

1436
01:20:26.000 --> 01:20:28.520
<v Speaker 5>Man, you know, to play around with, and uh, that

1437
01:20:28.640 --> 01:20:29.239
<v Speaker 5>sounds awesome.

1438
01:20:29.600 --> 01:20:29.800
<v Speaker 6>Yeah.

1439
01:20:30.000 --> 01:20:33.279
<v Speaker 3>Maker World, which is from Bamboo Labs. They actually have

1440
01:20:33.720 --> 01:20:36.960
<v Speaker 3>recently they've got like, uh I think it's probably Ai

1441
01:20:37.079 --> 01:20:39.159
<v Speaker 3>based or something, but they've got like a new a

1442
01:20:39.239 --> 01:20:42.039
<v Speaker 3>new offering where if you if you log in, you

1443
01:20:42.079 --> 01:20:44.319
<v Speaker 3>can upload a picture and it basically will create you

1444
01:20:44.399 --> 01:20:48.560
<v Speaker 3>a three D printable, uh you know, head of head

1445
01:20:48.560 --> 01:20:50.680
<v Speaker 3>of that you can then adjust and tinker with just

1446
01:20:50.760 --> 01:20:52.960
<v Speaker 3>like any other three D print. So pretty cool.

1447
01:20:54.279 --> 01:20:55.840
<v Speaker 1>I want to do that for all my kids.

1448
01:20:55.960 --> 01:20:58.760
<v Speaker 3>Now, there you go. Well, now go to maker World

1449
01:20:58.840 --> 01:21:01.119
<v Speaker 3>and you can. They've got they make it easy, so

1450
01:21:01.199 --> 01:21:01.840
<v Speaker 3>it's pretty cool.

1451
01:21:02.399 --> 01:21:08.159
<v Speaker 1>Yeah, we're a Lego family here for sure. So awesome. Well, Michael,

1452
01:21:08.239 --> 01:21:09.840
<v Speaker 1>I was going to ask this of everybody else, but

1453
01:21:09.840 --> 01:21:12.920
<v Speaker 1>they're all gone. If people want to connect with you,

1454
01:21:13.239 --> 01:21:13.960
<v Speaker 1>where do they find you?

1455
01:21:14.520 --> 01:21:16.880
<v Speaker 3>I you can follow me on Twitter MH Dawson one.

1456
01:21:17.119 --> 01:21:19.880
<v Speaker 3>Also on Blue Sky at MH d Austin without the

1457
01:21:19.920 --> 01:21:22.680
<v Speaker 3>one because I managed to get that one first, and

1458
01:21:23.920 --> 01:21:25.880
<v Speaker 3>or you know, in Getthub very active in that the

1459
01:21:25.960 --> 01:21:26.920
<v Speaker 3>no project GetUp.

1460
01:21:27.039 --> 01:21:28.319
<v Speaker 6>So that's the best places.

1461
01:21:28.960 --> 01:21:31.840
<v Speaker 1>Awesome. I just barely joined Blue Sky. I'm cmax w

1462
01:21:32.159 --> 01:21:35.359
<v Speaker 1>just like I am on Twitter. I will say that

1463
01:21:35.479 --> 01:21:38.840
<v Speaker 1>I am looking to set up accounts for the shows,

1464
01:21:39.319 --> 01:21:41.760
<v Speaker 1>so keep an eye out for JavaScript Jamber. It'll probably

1465
01:21:41.840 --> 01:21:47.720
<v Speaker 1>be jass Jamber unless that's taken. So anyway, I know,

1466
01:21:47.800 --> 01:21:50.439
<v Speaker 1>people are you know again kind of the political whatever

1467
01:21:50.760 --> 01:21:52.399
<v Speaker 1>for you know, I want to be off Twitter and

1468
01:21:52.520 --> 01:21:55.399
<v Speaker 1>on Blue Sky as long as I can reach you

1469
01:21:55.640 --> 01:21:59.479
<v Speaker 1>and you're happy to get our stuff, you know, I'm

1470
01:21:59.479 --> 01:22:03.079
<v Speaker 1>happy to stay at either place so you know, or

1471
01:22:03.159 --> 01:22:05.439
<v Speaker 1>be of whatever place right, So as long as we

1472
01:22:05.520 --> 01:22:08.039
<v Speaker 1>can connect, I guess is what I care about. Yeah,

1473
01:22:08.199 --> 01:22:11.439
<v Speaker 1>definitely stay in touch there and until next time, folks

1474
01:22:11.600 --> 01:22:12.079
<v Speaker 1>max out

1475
01:22:14.840 --> 01:22:15.239
<v Speaker 2>M hm.
