WEBVTT

1
00:00:04.120 --> 00:00:06.799
<v Speaker 1>Hey everybody, and welcome to another episode of React Round Up.

2
00:00:07.080 --> 00:00:09.679
<v Speaker 1>This week, on our panel we have Paige na dream House,

3
00:00:09.960 --> 00:00:15.199
<v Speaker 1>Hey everybody, Carl Mungazi Hello, he tj Ventl. Hey everyone,

4
00:00:15.599 --> 00:00:18.000
<v Speaker 1>I'm Charles Maxwood from dev chat dot TV. And this

5
00:00:18.039 --> 00:00:20.559
<v Speaker 1>week we have a special guest. It's Madjid. Do you

6
00:00:20.640 --> 00:00:23.280
<v Speaker 1>want to just introduce yourself and let us know who

7
00:00:23.280 --> 00:00:24.879
<v Speaker 1>you are and why you're important?

8
00:00:25.559 --> 00:00:29.359
<v Speaker 2>Hi? Everyone, So my name is Majid. I am a

9
00:00:29.399 --> 00:00:34.240
<v Speaker 2>software engineer based in Oslo, Norway. I am very important,

10
00:00:34.600 --> 00:00:41.880
<v Speaker 2>I think so maybe for some people I'm very important,

11
00:00:41.920 --> 00:00:46.679
<v Speaker 2>for some I'm not. But apart from a joke, I

12
00:00:46.960 --> 00:00:52.119
<v Speaker 2>do a lot of contribution to community, especially JavaScript and

13
00:00:52.439 --> 00:00:57.399
<v Speaker 2>dart community, and I try to share my knowledge and

14
00:00:57.439 --> 00:01:01.719
<v Speaker 2>experience as much as I can, so by doing public

15
00:01:01.880 --> 00:01:07.280
<v Speaker 2>speaking or writing or like blogging and those kinds of things.

16
00:01:07.439 --> 00:01:11.280
<v Speaker 2>So that's what I really like. Apart from that, I

17
00:01:11.400 --> 00:01:19.000
<v Speaker 2>also organize a few meetups and several conferences, especially in JavaScript,

18
00:01:19.040 --> 00:01:24.159
<v Speaker 2>Word for example ng Vikings you may know or you

19
00:01:24.239 --> 00:01:28.560
<v Speaker 2>have heard about it or Mobile Era in Nordic countries.

20
00:01:29.239 --> 00:01:36.239
<v Speaker 2>So I am very passionate about two particularly like word

21
00:01:36.519 --> 00:01:40.159
<v Speaker 2>of development, JavaScript and art nice.

22
00:01:40.439 --> 00:01:45.319
<v Speaker 1>So you gave a talk at React Days Berlin talking

23
00:01:45.319 --> 00:01:49.719
<v Speaker 1>about parallel computing and React JS and yeah, you know

24
00:01:49.760 --> 00:01:52.560
<v Speaker 1>your discussion points talk about like web workers and stuff

25
00:01:52.599 --> 00:01:54.120
<v Speaker 1>like that. Do you want to just give us sort

26
00:01:54.159 --> 00:01:56.879
<v Speaker 1>of the two minute rundown of what the talks about

27
00:01:56.879 --> 00:01:59.239
<v Speaker 1>and the major points and then we can dive in

28
00:01:59.359 --> 00:02:00.359
<v Speaker 1>and get the tales.

29
00:02:00.879 --> 00:02:03.680
<v Speaker 2>Well, the idea of the talk came to my mind

30
00:02:03.760 --> 00:02:07.959
<v Speaker 2>when I was actually implementing a lot of features in

31
00:02:08.080 --> 00:02:11.199
<v Speaker 2>my recent project, and I figure out that there are

32
00:02:11.319 --> 00:02:15.280
<v Speaker 2>lots of new APIs in the browsers which helps us

33
00:02:15.360 --> 00:02:20.639
<v Speaker 2>to improve and boost user experience, and in particular actually

34
00:02:20.719 --> 00:02:25.000
<v Speaker 2>in React we can actually we can leverage using these

35
00:02:25.039 --> 00:02:32.560
<v Speaker 2>APIs and kind of a wide disrupting user by poor

36
00:02:32.639 --> 00:02:37.080
<v Speaker 2>performance or JANKI frames on the browsers. Right, So in

37
00:02:37.120 --> 00:02:40.240
<v Speaker 2>particular we have like web work heres and a few

38
00:02:40.360 --> 00:02:47.199
<v Speaker 2>new APIs like web assembly or worklets or even service

39
00:02:47.240 --> 00:02:52.560
<v Speaker 2>workt which doesn't have directly something related to the main thread,

40
00:02:52.639 --> 00:02:57.479
<v Speaker 2>but still it can improve something, which I had an

41
00:02:57.479 --> 00:03:00.840
<v Speaker 2>example in my talk and I talked about it, people

42
00:03:01.000 --> 00:03:06.120
<v Speaker 2>very liked it. So that's that was the whole things

43
00:03:06.159 --> 00:03:09.360
<v Speaker 2>that I actually talked about in this start, Like these

44
00:03:09.560 --> 00:03:13.199
<v Speaker 2>four different APIs in the browsers very cool.

45
00:03:13.719 --> 00:03:15.240
<v Speaker 3>So let's just start with the first one.

46
00:03:15.520 --> 00:03:20.639
<v Speaker 2>Yeah. Sure. So the first one, which is probably the

47
00:03:20.680 --> 00:03:25.719
<v Speaker 2>most underutilized one, is webworker. And web workers are around

48
00:03:25.879 --> 00:03:30.039
<v Speaker 2>for quite some time, so maybe twelve years or more

49
00:03:30.159 --> 00:03:35.439
<v Speaker 2>ten years. It's been around for a while and all

50
00:03:35.599 --> 00:03:41.240
<v Speaker 2>the major browsers actually supported but it it well maybe

51
00:03:41.400 --> 00:03:45.719
<v Speaker 2>maybe many of us don't. Actually it doesn't use it.

52
00:03:46.159 --> 00:03:49.759
<v Speaker 2>So when I in my I gave this like several times,

53
00:03:50.439 --> 00:03:53.479
<v Speaker 2>and when I asked in the room, like who is

54
00:03:53.680 --> 00:03:58.120
<v Speaker 2>using a webworker? Who knows the web worker, like around

55
00:03:58.120 --> 00:04:01.719
<v Speaker 2>one hundred percent of attendee say yes, we know, but

56
00:04:01.800 --> 00:04:03.719
<v Speaker 2>you know. But when I asked, okay, who is using

57
00:04:03.759 --> 00:04:07.960
<v Speaker 2>that in production? And like maybe less than five person.

58
00:04:09.080 --> 00:04:13.080
<v Speaker 2>The reason is, like we all know web workers, we

59
00:04:13.240 --> 00:04:16.560
<v Speaker 2>know that they are cool, but there is something with

60
00:04:16.680 --> 00:04:20.759
<v Speaker 2>web workers the way that it is implemented. Actually the

61
00:04:20.839 --> 00:04:25.120
<v Speaker 2>API we are post messaging, you know, the post messaging API.

62
00:04:25.720 --> 00:04:30.399
<v Speaker 2>So it makes it a little bit maybe difficult to

63
00:04:30.480 --> 00:04:35.800
<v Speaker 2>work with, and so many of us try not to

64
00:04:36.040 --> 00:04:40.519
<v Speaker 2>deal with it unless we really need it, you know,

65
00:04:40.680 --> 00:04:44.040
<v Speaker 2>in the application. So that was the idea. So I

66
00:04:44.079 --> 00:04:47.040
<v Speaker 2>started with the basic of the web workers, like what

67
00:04:47.120 --> 00:04:48.800
<v Speaker 2>they are. So I'm not going to talk about it

68
00:04:48.839 --> 00:04:52.279
<v Speaker 2>here because I guess like many of us, even our audiences,

69
00:04:52.360 --> 00:04:55.560
<v Speaker 2>like right now, they know and I and probably they

70
00:04:55.600 --> 00:04:58.800
<v Speaker 2>also know that it works. We are post messaging, like

71
00:04:58.920 --> 00:05:03.120
<v Speaker 2>you have the say PI. You send an object message

72
00:05:03.120 --> 00:05:07.360
<v Speaker 2>to your worker thread and do something and then you

73
00:05:07.399 --> 00:05:10.360
<v Speaker 2>can get back another message and then deal with it

74
00:05:10.399 --> 00:05:14.160
<v Speaker 2>in the main threat. Right. But when I found a

75
00:05:14.319 --> 00:05:20.920
<v Speaker 2>new library actually done by Surma developer advocate in Google.

76
00:05:22.959 --> 00:05:29.120
<v Speaker 2>The library name called a com link. The actually reimplemented

77
00:05:29.319 --> 00:05:33.040
<v Speaker 2>the way that we can use web worker. So it's

78
00:05:33.240 --> 00:05:38.040
<v Speaker 2>it's pretty neat and easy. If you download the library

79
00:05:38.079 --> 00:05:41.360
<v Speaker 2>and start using this library in your application, you're going

80
00:05:41.439 --> 00:05:44.759
<v Speaker 2>to have you're gonna have like a very simple API.

81
00:05:45.480 --> 00:05:48.800
<v Speaker 2>I'll get to the API also, but then after using

82
00:05:48.839 --> 00:05:53.079
<v Speaker 2>the API, you will get actually a promise, very very simple,

83
00:05:53.199 --> 00:05:57.600
<v Speaker 2>so you directly talk to the worker threat and you

84
00:05:57.720 --> 00:06:01.360
<v Speaker 2>have a promise, so you can simply wait, send something

85
00:06:01.399 --> 00:06:05.600
<v Speaker 2>to this thread, call some kind of function and then

86
00:06:05.720 --> 00:06:08.639
<v Speaker 2>wait for it and then you know. It's the way.

87
00:06:09.079 --> 00:06:12.319
<v Speaker 2>It's a very natural way of programming in Java scrit

88
00:06:12.439 --> 00:06:16.079
<v Speaker 2>if you start using this library. And that's that's the reason.

89
00:06:17.279 --> 00:06:23.879
<v Speaker 2>So I again started talking about these web workers with

90
00:06:24.720 --> 00:06:28.319
<v Speaker 2>conving because it gives you as a developer a pleasant

91
00:06:28.360 --> 00:06:34.279
<v Speaker 2>way to deal with a worker thread and to implement

92
00:06:34.360 --> 00:06:39.519
<v Speaker 2>in your application. So maybe I should explain too simple

93
00:06:39.560 --> 00:06:41.680
<v Speaker 2>API of this library.

94
00:06:42.000 --> 00:06:44.000
<v Speaker 4>Yeah, I think as quick explanation would be good.

95
00:06:44.480 --> 00:06:49.759
<v Speaker 2>Yeah, okay, So when actually you have common link installed

96
00:06:49.800 --> 00:06:55.519
<v Speaker 2>and instantiated, you get to function one is wrap function

97
00:06:55.639 --> 00:06:58.920
<v Speaker 2>and another one is exposed you want to use exposing

98
00:06:59.040 --> 00:07:04.120
<v Speaker 2>your threat or your web worker javas profile, and you

99
00:07:04.199 --> 00:07:07.639
<v Speaker 2>expose your function or your object, your services like all

100
00:07:07.720 --> 00:07:10.199
<v Speaker 2>of those functions that needs to be exposed to the

101
00:07:10.240 --> 00:07:13.120
<v Speaker 2>main threat, right, and then you have the wrap function

102
00:07:13.279 --> 00:07:16.519
<v Speaker 2>which you will also wrap the web worker in extensions

103
00:07:17.319 --> 00:07:20.480
<v Speaker 2>or the constructor actually in the main threat. And then

104
00:07:20.639 --> 00:07:24.439
<v Speaker 2>with only these too as like maybe sufficient to start.

105
00:07:24.800 --> 00:07:28.600
<v Speaker 2>So with only these too, then when you construct or

106
00:07:28.600 --> 00:07:32.319
<v Speaker 2>instanceship this worker, then you get a promise with those

107
00:07:32.360 --> 00:07:34.800
<v Speaker 2>services that you are exposing to the main threat. So

108
00:07:34.839 --> 00:07:39.160
<v Speaker 2>you simply just call your method and then wait for

109
00:07:39.399 --> 00:07:42.199
<v Speaker 2>the result, and then you can also do something with it,

110
00:07:42.240 --> 00:07:46.240
<v Speaker 2>like in particular in React as I had an example.

111
00:07:47.160 --> 00:07:49.360
<v Speaker 2>So I had an example actually in Michael, let me

112
00:07:49.399 --> 00:07:55.480
<v Speaker 2>talk about that. So I implemented a list of users,

113
00:07:55.959 --> 00:08:01.759
<v Speaker 2>and on purpose, my list of users was around three

114
00:08:01.839 --> 00:08:07.120
<v Speaker 2>thousand like items, right, so I implemented like a short

115
00:08:07.639 --> 00:08:11.279
<v Speaker 2>array function in the thread, and also I implemented like

116
00:08:11.319 --> 00:08:15.720
<v Speaker 2>an animation in the main threat. So I showed to

117
00:08:15.879 --> 00:08:19.439
<v Speaker 2>the audiences actually in my talk that when you call

118
00:08:19.759 --> 00:08:22.680
<v Speaker 2>this sort array and you want to sort this array

119
00:08:22.720 --> 00:08:27.639
<v Speaker 2>by for instance, age user by age, you can get

120
00:08:27.680 --> 00:08:32.080
<v Speaker 2>a list of three thousand items sorted by age. You

121
00:08:32.080 --> 00:08:35.200
<v Speaker 2>can do that in main thread of course, but then

122
00:08:35.399 --> 00:08:38.759
<v Speaker 2>it will block these main thread for a while because

123
00:08:38.799 --> 00:08:41.639
<v Speaker 2>it takes time, you know. And then when you see

124
00:08:41.679 --> 00:08:45.399
<v Speaker 2>actually the animation, when you were seeing the animation, the

125
00:08:45.440 --> 00:08:48.960
<v Speaker 2>animation was blocked until you get the respond in the

126
00:08:48.960 --> 00:08:52.759
<v Speaker 2>main threat, while when I was actually calling the third

127
00:08:52.879 --> 00:08:56.399
<v Speaker 2>method in the web worker thread, the animation was working

128
00:08:56.639 --> 00:08:59.919
<v Speaker 2>very smostly no problem, nothing blocked. You can interact with

129
00:09:00.080 --> 00:09:03.960
<v Speaker 2>the app and then once you get the respond back

130
00:09:04.080 --> 00:09:09.440
<v Speaker 2>from the main worker threat, you could simply set the

131
00:09:09.519 --> 00:09:12.759
<v Speaker 2>state and react and then rerend their old like the

132
00:09:12.879 --> 00:09:17.000
<v Speaker 2>least again and show whatever user asked for before, you know.

133
00:09:17.799 --> 00:09:22.159
<v Speaker 2>So that was that was a very very well received

134
00:09:22.240 --> 00:09:25.360
<v Speaker 2>example by user because it's like a very this is

135
00:09:25.440 --> 00:09:28.279
<v Speaker 2>something that you deal with it in your daily work.

136
00:09:28.480 --> 00:09:29.919
<v Speaker 2>Every day you need this, you know.

137
00:09:30.519 --> 00:09:32.559
<v Speaker 4>Well, so actually that gives me I have sort of

138
00:09:32.600 --> 00:09:35.440
<v Speaker 4>a broader question because I think I fall into the

139
00:09:35.440 --> 00:09:37.879
<v Speaker 4>persona that you described at your talks as someone that

140
00:09:38.399 --> 00:09:42.240
<v Speaker 4>I've known web workers for dealing with like tasks that

141
00:09:42.320 --> 00:09:45.159
<v Speaker 4>you need really high performance for some sort of familiar

142
00:09:45.200 --> 00:09:47.039
<v Speaker 4>with them, but I've I've never shipped them in a

143
00:09:47.039 --> 00:09:50.399
<v Speaker 4>production app ever, And part of it is because, like

144
00:09:51.000 --> 00:09:53.039
<v Speaker 4>to me, at least, maybe you can tell me why

145
00:09:53.080 --> 00:09:55.360
<v Speaker 4>this might be a wrong perception of like I have

146
00:09:55.480 --> 00:09:57.679
<v Speaker 4>always seen web workers, it's something I need if I'm

147
00:09:57.679 --> 00:10:01.759
<v Speaker 4>building something that's doing something really heavy in terms of processing,

148
00:10:01.960 --> 00:10:04.279
<v Speaker 4>like I'm doing something where I'm like building an image

149
00:10:04.320 --> 00:10:08.720
<v Speaker 4>manipulation map or doing something really hardcore like running some

150
00:10:08.799 --> 00:10:13.639
<v Speaker 4>super cool algorithms. But for the average like banking, insurance,

151
00:10:14.240 --> 00:10:16.639
<v Speaker 4>financial apps that I might work on in like a

152
00:10:16.720 --> 00:10:20.879
<v Speaker 4>rank and file job, what are some like pragmatic ways

153
00:10:20.919 --> 00:10:25.360
<v Speaker 4>where web workers could actually benefit, like say your average developer, Like.

154
00:10:25.279 --> 00:10:28.200
<v Speaker 2>You said, you know we're working and you haven't used it,

155
00:10:28.320 --> 00:10:33.600
<v Speaker 2>so that's probably was also my case. I knew that

156
00:10:33.840 --> 00:10:38.159
<v Speaker 2>I haven't used it so because of many reasons. But

157
00:10:38.639 --> 00:10:41.960
<v Speaker 2>these days. You know, sometimes when you have these heavy

158
00:10:42.000 --> 00:10:44.960
<v Speaker 2>processing and stuff like you said, maybe an image processing

159
00:10:45.039 --> 00:10:49.519
<v Speaker 2>or something, some developers even decide to just move this

160
00:10:49.679 --> 00:10:52.320
<v Speaker 2>process to the back end and instead of like this

161
00:10:52.720 --> 00:10:57.360
<v Speaker 2>doing this in front and right. And maybe that is

162
00:10:57.399 --> 00:11:00.600
<v Speaker 2>also a good solution. But think of it five years

163
00:11:00.639 --> 00:11:06.080
<v Speaker 2>ago or six years ago, eight years ago, how browsers

164
00:11:06.360 --> 00:11:10.080
<v Speaker 2>were working and nowadays how they are working with the

165
00:11:10.159 --> 00:11:14.919
<v Speaker 2>different APIs that they are providing pluts with a lot

166
00:11:14.960 --> 00:11:19.440
<v Speaker 2>of those improvement, which maybe because of the perception that

167
00:11:19.480 --> 00:11:21.759
<v Speaker 2>we have in our mind from the previous from the

168
00:11:21.840 --> 00:11:24.320
<v Speaker 2>past is still stick to it and we are not

169
00:11:24.559 --> 00:11:27.840
<v Speaker 2>using that, you know. And also think of these days

170
00:11:28.039 --> 00:11:34.519
<v Speaker 2>mobile developing for mobile, like maybe a responsive website or

171
00:11:34.639 --> 00:11:39.240
<v Speaker 2>you know, particularly optimize everything for mobile. It's very crucial,

172
00:11:39.440 --> 00:11:43.480
<v Speaker 2>right we are all going for mobile. It's very very

173
00:11:43.519 --> 00:11:48.159
<v Speaker 2>important that we can for the browser. When we are

174
00:11:48.240 --> 00:11:54.120
<v Speaker 2>talking about like utilizing different options including web workers, we

175
00:11:54.639 --> 00:11:59.440
<v Speaker 2>are maybe one of our most important use cases is

176
00:11:59.639 --> 00:12:03.399
<v Speaker 2>mobile optimization for our users. It doesn't matter what is

177
00:12:03.440 --> 00:12:07.720
<v Speaker 2>your application, so it's a banking application or is anything else,

178
00:12:08.320 --> 00:12:11.240
<v Speaker 2>as long as you're optimizing for a mobile which has

179
00:12:11.279 --> 00:12:18.200
<v Speaker 2>a very maybe uh low CPU or RAM or you know,

180
00:12:18.919 --> 00:12:22.679
<v Speaker 2>it is very important to optimize in different ways in

181
00:12:22.720 --> 00:12:27.960
<v Speaker 2>the browsers for these particular devices that users can can

182
00:12:28.279 --> 00:12:33.240
<v Speaker 2>feel like they should they should use application and the

183
00:12:33.279 --> 00:12:36.399
<v Speaker 2>mobile there is moose. There should not be any difference

184
00:12:36.519 --> 00:12:39.960
<v Speaker 2>between your mobile application, I mean not mobile applications, mobile

185
00:12:40.360 --> 00:12:45.879
<v Speaker 2>optimization of your website and the desktop version of it. Right,

186
00:12:46.519 --> 00:12:51.200
<v Speaker 2>So that brings us to the point now that we

187
00:12:51.279 --> 00:12:56.399
<v Speaker 2>should think maybe differently nowadays. So even for very small

188
00:12:56.480 --> 00:13:00.200
<v Speaker 2>things that probably we can do in main thread, but

189
00:13:00.279 --> 00:13:04.480
<v Speaker 2>you know, many of those may block user to interact

190
00:13:04.559 --> 00:13:08.399
<v Speaker 2>it with the application immediately. Maybe we should hold off

191
00:13:08.440 --> 00:13:14.240
<v Speaker 2>those things to the worker threat, you know, especially nowadays

192
00:13:13.879 --> 00:13:17.879
<v Speaker 2>with a lot of improvement also on top of the

193
00:13:18.039 --> 00:13:21.320
<v Speaker 2>workers by differentias, like let's imagine we will get to

194
00:13:21.360 --> 00:13:24.480
<v Speaker 2>it about web assembly and other stuff too, but you

195
00:13:24.600 --> 00:13:29.519
<v Speaker 2>have also those other options, so you can also implement

196
00:13:30.080 --> 00:13:33.120
<v Speaker 2>other things on top of the workers by different APIs,

197
00:13:33.159 --> 00:13:37.440
<v Speaker 2>like maybe well somebody for instance, you know, we should think,

198
00:13:37.639 --> 00:13:41.360
<v Speaker 2>I guess it's twenty twenty, right, we should think a

199
00:13:41.360 --> 00:13:46.399
<v Speaker 2>bit differently. So perhaps that's my opinion though.

200
00:13:46.679 --> 00:13:49.759
<v Speaker 5>So I've got a point to pick about. Contigious points.

201
00:13:50.080 --> 00:13:53.320
<v Speaker 6>I actually first came across coummlink when I had a

202
00:13:53.360 --> 00:13:59.039
<v Speaker 6>podcast where that Soma was talking about it, and he

203
00:13:59.320 --> 00:14:02.320
<v Speaker 6>spoke about how you could you use it, for example,

204
00:14:02.399 --> 00:14:06.440
<v Speaker 6>in a React application to handle your Reducs store.

205
00:14:07.000 --> 00:14:09.879
<v Speaker 5>So my question was, when it comes to.

206
00:14:10.159 --> 00:14:13.720
<v Speaker 6>Let's say, using Angular reacts with you all these frameworks

207
00:14:13.720 --> 00:14:15.679
<v Speaker 6>and then you can maybe do stuff like putting your

208
00:14:16.000 --> 00:14:17.120
<v Speaker 6>state management in the.

209
00:14:17.159 --> 00:14:19.039
<v Speaker 5>Worker, how does that work?

210
00:14:19.080 --> 00:14:21.799
<v Speaker 6>Because when I first heard that, I was excited about it,

211
00:14:21.840 --> 00:14:24.480
<v Speaker 6>but I thought, okay, cool, Now that's an option where

212
00:14:24.519 --> 00:14:27.919
<v Speaker 6>if my store it's too big for some reason, I

213
00:14:27.919 --> 00:14:32.039
<v Speaker 6>can actually offload some of that storage to the worker,

214
00:14:32.120 --> 00:14:35.000
<v Speaker 6>as well as doing other logic on the worker as well.

215
00:14:35.440 --> 00:14:38.559
<v Speaker 6>But in terms of juggling reacts, I've got Reducs, I've

216
00:14:38.559 --> 00:14:40.559
<v Speaker 6>got the worker. How could that make that work in

217
00:14:41.120 --> 00:14:41.679
<v Speaker 6>an application?

218
00:14:42.320 --> 00:14:46.360
<v Speaker 2>Well, first of all, let me explain this way. So,

219
00:14:46.759 --> 00:14:50.960
<v Speaker 2>for instance, in Angular or many of these frameworks, so

220
00:14:51.360 --> 00:14:55.840
<v Speaker 2>you may not necessarily use cumb link because they all

221
00:14:55.919 --> 00:15:02.039
<v Speaker 2>have some sort of they own a APIs for web workers.

222
00:15:02.039 --> 00:15:06.000
<v Speaker 2>For instance, Angela has its own like support for webwork here,

223
00:15:06.120 --> 00:15:09.519
<v Speaker 2>or maybe React with a new api is like Concurrent

224
00:15:09.600 --> 00:15:11.960
<v Speaker 2>and those kinds of things. But the thing is that

225
00:15:13.480 --> 00:15:17.639
<v Speaker 2>when you say how can we use that, Like, I

226
00:15:17.639 --> 00:15:20.960
<v Speaker 2>don't see any difference between an Angle application or like

227
00:15:21.039 --> 00:15:25.679
<v Speaker 2>in this case, an Angular application and a React application.

228
00:15:25.759 --> 00:15:28.120
<v Speaker 2>Let's say, because they are at the end of the day,

229
00:15:28.240 --> 00:15:33.120
<v Speaker 2>they are a JavaScript you know library, right to just

230
00:15:33.440 --> 00:15:38.559
<v Speaker 2>provide different APIs, and some developers like this one, some

231
00:15:39.200 --> 00:15:42.559
<v Speaker 2>like like Angular one, and some likes maybe I don't

232
00:15:42.559 --> 00:15:47.279
<v Speaker 2>know React, you know, different APIs for different developers to

233
00:15:47.480 --> 00:15:51.120
<v Speaker 2>make maybe to make our life a little bit easier

234
00:15:51.159 --> 00:15:53.240
<v Speaker 2>when we develop the web application. Right, So at the

235
00:15:53.279 --> 00:15:54.799
<v Speaker 2>end of the day they are there are there are

236
00:15:54.919 --> 00:15:59.320
<v Speaker 2>javascreet applications, there are JavaScript framework, right, so we can

237
00:15:59.440 --> 00:16:03.279
<v Speaker 2>use any library. So I don't see any any like

238
00:16:04.120 --> 00:16:08.120
<v Speaker 2>blocking point here that if you are using, for instance,

239
00:16:08.159 --> 00:16:10.919
<v Speaker 2>this library, you are not able to use like coummblink

240
00:16:10.960 --> 00:16:15.919
<v Speaker 2>for instance. If I understood the question actually correctly, Yeah, so.

241
00:16:15.879 --> 00:16:18.240
<v Speaker 6>I guess in o case, do you prefer using that

242
00:16:18.279 --> 00:16:21.200
<v Speaker 6>in both stuff for me, say Angler or comblin. What's

243
00:16:21.240 --> 00:16:23.720
<v Speaker 6>your preference then in terms of your use World podcast.

244
00:16:24.240 --> 00:16:27.159
<v Speaker 2>Well, when I came to the comblink and I started

245
00:16:27.279 --> 00:16:29.399
<v Speaker 2>using that, I guess I'm going to stick to the

246
00:16:29.399 --> 00:16:33.159
<v Speaker 2>comb link. The thing is that first of all, the

247
00:16:33.200 --> 00:16:37.360
<v Speaker 2>library is very tiny. I think after Jesus is like

248
00:16:37.559 --> 00:16:41.919
<v Speaker 2>one point wind club bite or something or even some

249
00:16:42.600 --> 00:16:45.360
<v Speaker 2>like browser needs. For instance, if you need a policy

250
00:16:45.519 --> 00:16:49.240
<v Speaker 2>for proxy, it adds maybe one more club Eye. But

251
00:16:49.279 --> 00:16:52.720
<v Speaker 2>it's a very very tiny library and the API is

252
00:16:52.919 --> 00:16:57.879
<v Speaker 2>very simple, and I like the way that it promisify everything,

253
00:16:58.559 --> 00:17:04.960
<v Speaker 2>so it makes it is very easy to use, like

254
00:17:05.079 --> 00:17:09.359
<v Speaker 2>this promise apart from other APIs, you know, I think

255
00:17:09.480 --> 00:17:14.480
<v Speaker 2>I like to stick on commelink unless those APIs from

256
00:17:14.519 --> 00:17:18.279
<v Speaker 2>the frameworks they change also to h you know, they

257
00:17:18.319 --> 00:17:19.359
<v Speaker 2>have a similar APA.

258
00:17:20.200 --> 00:17:20.480
<v Speaker 5>Cool.

259
00:17:21.319 --> 00:17:24.680
<v Speaker 7>I've got a question for you, I Majid, can you

260
00:17:24.839 --> 00:17:28.799
<v Speaker 7>explain the difference between web workers and service workers because

261
00:17:28.799 --> 00:17:31.559
<v Speaker 7>I've heard both, I've heard them used interchangeably, and I'd

262
00:17:31.599 --> 00:17:34.279
<v Speaker 7>love to get a better understanding of which one.

263
00:17:34.160 --> 00:17:38.119
<v Speaker 2>Absolutely, which absolutely. First of all, let me explain this.

264
00:17:39.119 --> 00:17:43.680
<v Speaker 2>The web workers the service worker are a type of

265
00:17:43.720 --> 00:17:49.839
<v Speaker 2>web workers. So essentially, service worker are like a JavaScript

266
00:17:49.920 --> 00:17:54.720
<v Speaker 2>file that they run in a different threat and back

267
00:17:55.039 --> 00:18:00.839
<v Speaker 2>in background. And what they do is they they act

268
00:18:01.079 --> 00:18:04.480
<v Speaker 2>like a proxy in your application between the network and

269
00:18:04.519 --> 00:18:08.680
<v Speaker 2>your application. What does that mean? That means you can

270
00:18:08.759 --> 00:18:14.000
<v Speaker 2>intercept all the network requests in service worker, right, So,

271
00:18:14.240 --> 00:18:19.559
<v Speaker 2>and they are. They're great for doing things like cashing

272
00:18:19.920 --> 00:18:24.359
<v Speaker 2>or delivering push messages for an instance. So there are

273
00:18:24.440 --> 00:18:28.000
<v Speaker 2>different actually cashing strategy which I have a full time

274
00:18:28.119 --> 00:18:30.079
<v Speaker 2>like about an hour. And also I have a book

275
00:18:30.119 --> 00:18:34.359
<v Speaker 2>about it, so which we can reference maybe to the chat,

276
00:18:34.960 --> 00:18:38.880
<v Speaker 2>so you can go through it and read about these strategies.

277
00:18:39.039 --> 00:18:45.880
<v Speaker 2>How does the state strategies help us to make our

278
00:18:45.920 --> 00:18:51.559
<v Speaker 2>application offlying? This is very very cool? Or think of

279
00:18:51.640 --> 00:18:54.200
<v Speaker 2>it like service worker when we are talking about a

280
00:18:54.279 --> 00:18:57.440
<v Speaker 2>proxy between your application and a network request. Is that

281
00:18:58.240 --> 00:19:00.920
<v Speaker 2>I said, you intercept all the requests, right, So you

282
00:19:01.039 --> 00:19:05.160
<v Speaker 2>send a request by maybe fetching an image, let's say,

283
00:19:05.599 --> 00:19:09.079
<v Speaker 2>and then the request comes to service worker first if

284
00:19:09.079 --> 00:19:11.920
<v Speaker 2>you have a registered service worker a javascried file as

285
00:19:11.920 --> 00:19:18.400
<v Speaker 2>I explained. And then this is you now to decide

286
00:19:19.000 --> 00:19:21.640
<v Speaker 2>where should I get the response? Should I go to

287
00:19:21.680 --> 00:19:25.240
<v Speaker 2>the network and ask from sever about this or should

288
00:19:25.240 --> 00:19:30.039
<v Speaker 2>I go to the cash and respond? So and here

289
00:19:30.519 --> 00:19:34.240
<v Speaker 2>is I think it's service workers are so powerful. Here

290
00:19:34.359 --> 00:19:37.839
<v Speaker 2>is where you can actually manipulate the respond So that

291
00:19:38.039 --> 00:19:42.000
<v Speaker 2>was an example which I gave in the talk. So

292
00:19:42.279 --> 00:19:46.400
<v Speaker 2>imagine like three years or two three years ago, there

293
00:19:47.039 --> 00:19:52.559
<v Speaker 2>was not a support for web p like image extension

294
00:19:53.200 --> 00:19:57.920
<v Speaker 2>in many browsers. So a friend of mine actually created

295
00:19:59.359 --> 00:20:05.880
<v Speaker 2>webs an version of BMP encoder from c library and

296
00:20:05.920 --> 00:20:09.599
<v Speaker 2>then he added to the service workers. So he used

297
00:20:09.680 --> 00:20:13.400
<v Speaker 2>web p in the web page. But of course web

298
00:20:13.440 --> 00:20:17.119
<v Speaker 2>P images cannot be shown on those browsers that didn't

299
00:20:17.240 --> 00:20:22.559
<v Speaker 2>have support, right, so the solution was okay service worker.

300
00:20:22.920 --> 00:20:25.680
<v Speaker 2>There was support for service worker though in all the

301
00:20:25.759 --> 00:20:29.000
<v Speaker 2>browsers at that time, so it was a great time.

302
00:20:29.079 --> 00:20:32.599
<v Speaker 2>So why not using salvice worker to intercept this request

303
00:20:33.119 --> 00:20:37.799
<v Speaker 2>and then send it to this web assembly encoder get

304
00:20:37.920 --> 00:20:41.960
<v Speaker 2>another type of you know, image back, like a BMP

305
00:20:42.119 --> 00:20:44.319
<v Speaker 2>maybe or something or gift I think at the end

306
00:20:44.440 --> 00:20:48.680
<v Speaker 2>he did and respond a gift version to the user

307
00:20:48.759 --> 00:20:52.880
<v Speaker 2>so user can see this image. This is fantastic, so

308
00:20:53.039 --> 00:20:56.680
<v Speaker 2>imagine how powerful it could be and also maybe dangurious.

309
00:20:56.960 --> 00:20:59.400
<v Speaker 2>I mean, it's not in a bad way because you know,

310
00:21:00.440 --> 00:21:04.079
<v Speaker 2>casing is always a challenge in software engineering, right, so

311
00:21:04.119 --> 00:21:08.559
<v Speaker 2>we all know that I'm thinking about caching when I

312
00:21:08.599 --> 00:21:09.440
<v Speaker 2>say dangerous.

313
00:21:09.799 --> 00:21:12.359
<v Speaker 4>So I got one related question. So when I've used

314
00:21:12.440 --> 00:21:15.720
<v Speaker 4>service workers, my biggest problem with them is that debugging

315
00:21:15.799 --> 00:21:18.640
<v Speaker 4>is occasionally kind of a nightmare because you are working

316
00:21:18.720 --> 00:21:22.400
<v Speaker 4>on a separate thread. So I'm curious as like, if

317
00:21:22.440 --> 00:21:26.680
<v Speaker 4>you're advocating for moving more and more code into service workers,

318
00:21:26.720 --> 00:21:29.799
<v Speaker 4>does that become like, considering I haven't done any of this,

319
00:21:30.079 --> 00:21:34.680
<v Speaker 4>does it make debugging trickier? Like are the browser developer

320
00:21:34.680 --> 00:21:37.160
<v Speaker 4>tools smart enough to say, like, if I'm running some

321
00:21:37.240 --> 00:21:39.720
<v Speaker 4>algorithm in my bit of code, can I like jump

322
00:21:39.759 --> 00:21:41.720
<v Speaker 4>over to the other thread and then jump back to

323
00:21:41.759 --> 00:21:44.119
<v Speaker 4>continue sort of my step debugging sort of thing. I'm

324
00:21:44.160 --> 00:21:45.519
<v Speaker 4>just sort of curious how that works.

325
00:21:46.079 --> 00:21:49.759
<v Speaker 2>Yeah, exactly, so very good question. So two three years

326
00:21:49.799 --> 00:21:54.079
<v Speaker 2>ago or maybe four years ago, when PWA Progressive Web

327
00:21:54.119 --> 00:21:58.279
<v Speaker 2>Apps and service worker were introduced, browser didn't have a

328
00:21:58.400 --> 00:22:03.119
<v Speaker 2>very good support at that time. But nowadays most of

329
00:22:03.160 --> 00:22:07.400
<v Speaker 2>the browsers is, especially Chrome, they have a very very

330
00:22:07.400 --> 00:22:11.400
<v Speaker 2>good support for debugging for service worker and web simbly

331
00:22:11.440 --> 00:22:13.799
<v Speaker 2>also because you can use web simbly also in service

332
00:22:13.799 --> 00:22:17.279
<v Speaker 2>work here, So I think these days this is not

333
00:22:17.359 --> 00:22:20.119
<v Speaker 2>a big problem. Also, if you have let me also

334
00:22:20.160 --> 00:22:24.039
<v Speaker 2>mention this, if you have a concern of writing your

335
00:22:24.079 --> 00:22:27.160
<v Speaker 2>own service working and getting to a trap to debug

336
00:22:27.359 --> 00:22:30.480
<v Speaker 2>or find out other what's wrong right now or how

337
00:22:30.519 --> 00:22:34.079
<v Speaker 2>can I improve something in my service work here? There

338
00:22:34.119 --> 00:22:37.599
<v Speaker 2>are also good solutions for that. You may have heard

339
00:22:37.640 --> 00:22:45.119
<v Speaker 2>about workbox jas it's a library from Chrome Team or

340
00:22:45.920 --> 00:22:51.319
<v Speaker 2>like here Google and what it does. Actually, it does

341
00:22:51.319 --> 00:22:53.720
<v Speaker 2>a lot of things, but the most important thing is

342
00:22:53.759 --> 00:22:57.279
<v Speaker 2>that it generates service worker for you based on what

343
00:22:57.640 --> 00:23:05.039
<v Speaker 2>you are telling to this library to do. So cashing,

344
00:23:05.079 --> 00:23:08.119
<v Speaker 2>for instance, you know that you should know the different

345
00:23:08.240 --> 00:23:12.960
<v Speaker 2>strategies for casing and service working, and that's not very difficult.

346
00:23:13.039 --> 00:23:15.400
<v Speaker 2>You can go through it maybe in I don't know,

347
00:23:15.559 --> 00:23:18.400
<v Speaker 2>ten to fifteen minutes, and then once you know, then

348
00:23:18.680 --> 00:23:23.440
<v Speaker 2>you should go to the work box documentation and start

349
00:23:23.640 --> 00:23:28.200
<v Speaker 2>learning the API for how like how I can use

350
00:23:28.279 --> 00:23:31.880
<v Speaker 2>this strategy, like how can I use cash only strategy?

351
00:23:32.039 --> 00:23:37.319
<v Speaker 2>Or how can I use cash network only strategy or

352
00:23:37.319 --> 00:23:40.319
<v Speaker 2>something like that, and they're therefore all of those strategies.

353
00:23:40.359 --> 00:23:44.680
<v Speaker 2>There is an API in workman in working box. So

354
00:23:45.359 --> 00:23:50.559
<v Speaker 2>simply you write your simple service worker file and then

355
00:23:50.960 --> 00:23:57.799
<v Speaker 2>workbox help helps you to generate your maybe very difficult

356
00:23:58.079 --> 00:24:02.839
<v Speaker 2>and very complex, let's say, service worker file at the

357
00:24:02.960 --> 00:24:07.359
<v Speaker 2>end of the day. So I strongly recommend you, if

358
00:24:07.400 --> 00:24:10.960
<v Speaker 2>you're going to write your service worker file for your

359
00:24:11.079 --> 00:24:17.319
<v Speaker 2>website or wel application, start using workbox instead of writing

360
00:24:17.400 --> 00:24:22.359
<v Speaker 2>yourself because that will help you when the service worker

361
00:24:22.480 --> 00:24:26.519
<v Speaker 2>gets bigger and bigger and bigger and more complex, then

362
00:24:26.680 --> 00:24:29.359
<v Speaker 2>you will find out the power of using this library.

363
00:24:29.759 --> 00:24:35.680
<v Speaker 2>There's also a bunch of like logger and logging stuff

364
00:24:35.720 --> 00:24:39.039
<v Speaker 2>in Workbox. You can enable them and you can find

365
00:24:39.119 --> 00:24:43.119
<v Speaker 2>out okay, where you can exactly see how you are

366
00:24:43.160 --> 00:24:47.279
<v Speaker 2>interacting with your service worker, how fetch is working, how

367
00:24:47.319 --> 00:24:51.039
<v Speaker 2>my network requesce is coming, what is the respond response

368
00:24:51.160 --> 00:24:54.599
<v Speaker 2>and those kind of things. It's very very handy. There's

369
00:24:54.640 --> 00:24:58.359
<v Speaker 2>also a bunch of plugins for workbox that makes it

370
00:24:58.400 --> 00:25:02.119
<v Speaker 2>even easier to gener right other stuff to handle, maybe

371
00:25:02.200 --> 00:25:06.400
<v Speaker 2>push into vacation or to handle different things.

372
00:25:06.759 --> 00:25:09.960
<v Speaker 6>So I had a question in terms of if I'm

373
00:25:10.000 --> 00:25:13.160
<v Speaker 6>trying to get into this using workers, I have a

374
00:25:13.200 --> 00:25:17.119
<v Speaker 6>sales as the world workers, what's the best way to

375
00:25:17.160 --> 00:25:21.640
<v Speaker 6>approach it. So let's say I want to improve my

376
00:25:21.680 --> 00:25:26.200
<v Speaker 6>application and have a much smoother UI experience. How can

377
00:25:26.240 --> 00:25:29.960
<v Speaker 6>I decide which part of the application needs it? How

378
00:25:30.000 --> 00:25:33.559
<v Speaker 6>do I go about learning that and maybe having a

379
00:25:33.680 --> 00:25:36.160
<v Speaker 6>concept to show to my team and trying to get

380
00:25:36.319 --> 00:25:39.240
<v Speaker 6>and get buying from the managers and my coworkers as well.

381
00:25:39.759 --> 00:25:44.200
<v Speaker 2>Yeah, very good question. I explain my approach this is

382
00:25:44.200 --> 00:25:49.200
<v Speaker 2>what I do. Usually I put my I usually think

383
00:25:49.240 --> 00:25:52.720
<v Speaker 2>that I'm customer, which I'm going to use this website. Right,

384
00:25:53.079 --> 00:25:58.160
<v Speaker 2>Let's start using this website and a very low performance device,

385
00:25:58.400 --> 00:26:02.880
<v Speaker 2>maybe very tiny mobile device or something which I usually

386
00:26:02.880 --> 00:26:05.880
<v Speaker 2>have at home, like I have a very old phone

387
00:26:05.960 --> 00:26:09.359
<v Speaker 2>from maybe eight years old. And then I start using

388
00:26:09.359 --> 00:26:13.440
<v Speaker 2>the application. Wherever I see that the application is lagging

389
00:26:13.720 --> 00:26:18.200
<v Speaker 2>or it blocks me to continue and work with application,

390
00:26:18.640 --> 00:26:20.920
<v Speaker 2>these are the places that I need to think about it,

391
00:26:21.119 --> 00:26:23.480
<v Speaker 2>like how can I improve this? And I need to

392
00:26:23.559 --> 00:26:30.440
<v Speaker 2>go and check which part of my application is actually

393
00:26:30.519 --> 00:26:33.279
<v Speaker 2>blocking user to work with other parts of the application.

394
00:26:33.400 --> 00:26:39.000
<v Speaker 2>So I need to hold of those things to the workers.

395
00:26:39.599 --> 00:26:43.160
<v Speaker 2>So this is usually what I do. So start with

396
00:26:43.240 --> 00:26:47.599
<v Speaker 2>a very low performance device like a mobile device especially

397
00:26:47.720 --> 00:26:54.319
<v Speaker 2>and maybe also you know, I know that we may

398
00:26:54.440 --> 00:26:58.319
<v Speaker 2>have a very high speed internet all of us. But

399
00:26:59.279 --> 00:27:02.000
<v Speaker 2>when I start, when I when I'm trying to find

400
00:27:02.000 --> 00:27:05.480
<v Speaker 2>out where which part of the application I can prove

401
00:27:06.240 --> 00:27:12.240
<v Speaker 2>I usually three showed my internet to three G, you know.

402
00:27:12.799 --> 00:27:15.920
<v Speaker 2>And then let's start using the application. And then then

403
00:27:16.079 --> 00:27:20.680
<v Speaker 2>that when I start using with those configurations like tree

404
00:27:20.759 --> 00:27:25.160
<v Speaker 2>G and mobile device, then I see and I can

405
00:27:25.319 --> 00:27:28.440
<v Speaker 2>feel it myself oh this part, this part is very

406
00:27:28.519 --> 00:27:30.880
<v Speaker 2>very lagging, so I need to think about it, you know.

407
00:27:31.559 --> 00:27:34.000
<v Speaker 2>That is my approach usually I do, and it works

408
00:27:34.000 --> 00:27:34.640
<v Speaker 2>pretty well.

409
00:27:35.160 --> 00:27:37.519
<v Speaker 6>Have you ever had any pushback from the team to say,

410
00:27:37.519 --> 00:27:40.440
<v Speaker 6>maybe right now, for us, performance is not a priority

411
00:27:40.960 --> 00:27:44.680
<v Speaker 6>and trying to navigate those discussions about when execut actually

412
00:27:44.759 --> 00:27:48.039
<v Speaker 6>spend time making application performance because maybe it could be

413
00:27:48.079 --> 00:27:51.960
<v Speaker 6>that it is important, but at the moment you've got

414
00:27:52.640 --> 00:27:56.279
<v Speaker 6>X weeks to implement, but then you no performance is

415
00:27:56.599 --> 00:27:58.480
<v Speaker 6>part of that features.

416
00:27:58.480 --> 00:28:03.200
<v Speaker 2>That's absolutely I think all of us has this situation

417
00:28:03.319 --> 00:28:03.720
<v Speaker 2>at work.

418
00:28:03.839 --> 00:28:08.279
<v Speaker 8>So especially when you are working in a JI well

419
00:28:08.359 --> 00:28:12.079
<v Speaker 8>and maybe a startup, then they are forcing you to

420
00:28:12.240 --> 00:28:14.599
<v Speaker 8>just give stuff out because they want to see it,

421
00:28:14.640 --> 00:28:16.960
<v Speaker 8>they want to deliver it to the customer, right, and

422
00:28:17.000 --> 00:28:22.039
<v Speaker 8>then you have less and less time to spend on.

423
00:28:21.960 --> 00:28:25.920
<v Speaker 2>Your application to debark and find out or maybe improve

424
00:28:25.960 --> 00:28:31.559
<v Speaker 2>the performance. You know. So I had definitely this situation,

425
00:28:32.200 --> 00:28:35.799
<v Speaker 2>and I would say what we do then? What I

426
00:28:35.920 --> 00:28:38.799
<v Speaker 2>try to convince my team usually is that you know,

427
00:28:39.039 --> 00:28:44.400
<v Speaker 2>we have a very high priority fixing issues for performance,

428
00:28:44.680 --> 00:28:48.160
<v Speaker 2>and we have like nice to have features like high

429
00:28:48.160 --> 00:28:56.359
<v Speaker 2>priority are those that they give our user absolutely terrible experience, right,

430
00:28:56.960 --> 00:29:01.599
<v Speaker 2>let's say initial loading of the application, for instance. So

431
00:29:01.720 --> 00:29:05.160
<v Speaker 2>if it takes twenty second to load the application, who

432
00:29:05.240 --> 00:29:08.000
<v Speaker 2>is going to wait for that or ten second? Who

433
00:29:08.039 --> 00:29:10.480
<v Speaker 2>is going to work? Who is going to wait for

434
00:29:10.599 --> 00:29:12.279
<v Speaker 2>this application to be loaded?

435
00:29:12.839 --> 00:29:13.000
<v Speaker 7>No?

436
00:29:13.039 --> 00:29:19.000
<v Speaker 2>One, Right, you cannot like let the business come to

437
00:29:19.039 --> 00:29:21.400
<v Speaker 2>you and say no, we have to shift this. At

438
00:29:21.400 --> 00:29:22.880
<v Speaker 2>the end of the day. They will come back to

439
00:29:22.880 --> 00:29:25.200
<v Speaker 2>you maybe a month. I say, okay, we are not selling,

440
00:29:25.480 --> 00:29:28.319
<v Speaker 2>so I told you it's ten seconds, So we need

441
00:29:28.319 --> 00:29:32.079
<v Speaker 2>to spend time. Right, So we should have start convincing.

442
00:29:32.160 --> 00:29:36.119
<v Speaker 2>We should start telling like business, hey, this is crucial

443
00:29:36.240 --> 00:29:39.039
<v Speaker 2>to improve. We should spend time on it. We should

444
00:29:39.119 --> 00:29:42.960
<v Speaker 2>fix this part. But then also we have maybe some

445
00:29:43.039 --> 00:29:47.119
<v Speaker 2>part of application that well, you click on something and

446
00:29:47.160 --> 00:29:50.759
<v Speaker 2>then maybe for three second or two second while user

447
00:29:50.839 --> 00:29:54.640
<v Speaker 2>cannot do anything. Well, maybe you can bear with it.

448
00:29:54.680 --> 00:29:58.279
<v Speaker 2>Maybe it's a setting page, and well, of course you

449
00:29:58.319 --> 00:30:01.519
<v Speaker 2>can wait for it for for the for the sprint.

450
00:30:01.799 --> 00:30:04.240
<v Speaker 2>That you have time to spend on this part and

451
00:30:04.240 --> 00:30:09.119
<v Speaker 2>improve the performance, I think you should. We should categorize

452
00:30:10.200 --> 00:30:15.480
<v Speaker 2>these performance issues and then start fixing those that they

453
00:30:15.519 --> 00:30:21.920
<v Speaker 2>are absolutely important for our customers and visitors to when

454
00:30:21.960 --> 00:30:25.640
<v Speaker 2>they are coming to our website. Or web applications. Just

455
00:30:26.279 --> 00:30:30.279
<v Speaker 2>I believe we should respect our customer. I am also

456
00:30:30.319 --> 00:30:34.960
<v Speaker 2>a customer of millions of web pages. Right If I'm

457
00:30:35.039 --> 00:30:39.119
<v Speaker 2>not treated very well, so I don't feel very well. Right,

458
00:30:39.440 --> 00:30:42.240
<v Speaker 2>so I should have the exact same feeling when a

459
00:30:42.279 --> 00:30:45.279
<v Speaker 2>customer is coming to my website when I'm enveloping that.

460
00:30:45.799 --> 00:30:48.880
<v Speaker 2>So I think that it is very important to give

461
00:30:48.920 --> 00:30:53.880
<v Speaker 2>our user a pleasant experience. So this is very important,

462
00:30:54.079 --> 00:30:55.839
<v Speaker 2>I guess to my opinion.

463
00:30:55.799 --> 00:30:57.359
<v Speaker 4>And I know something that's worked for me in the

464
00:30:57.400 --> 00:31:00.400
<v Speaker 4>past is if you can put the put these things

465
00:31:00.400 --> 00:31:04.039
<v Speaker 4>in business terms as well. They're they're a study showing

466
00:31:04.440 --> 00:31:08.240
<v Speaker 4>page low time speed times actually improve business business metrics,

467
00:31:08.400 --> 00:31:11.920
<v Speaker 4>click through rates, you know, whatever it is your business

468
00:31:11.960 --> 00:31:16.039
<v Speaker 4>is measuring. So sometimes you can approach it as a like,

469
00:31:16.559 --> 00:31:18.480
<v Speaker 4>if we spent a week on this, let's see if

470
00:31:18.480 --> 00:31:22.680
<v Speaker 4>we can improve our You know, don't necessarily your manager,

471
00:31:22.759 --> 00:31:26.039
<v Speaker 4>your boss's boss might not care about the user experience directly,

472
00:31:26.079 --> 00:31:28.839
<v Speaker 4>but I'm guarantee you they care how many people click

473
00:31:28.839 --> 00:31:31.240
<v Speaker 4>a certain button in your app that you really want

474
00:31:31.319 --> 00:31:36.319
<v Speaker 4>people to get into some system. So oftentimes you're the

475
00:31:36.319 --> 00:31:40.160
<v Speaker 4>incentive of making your app faster, and the businesses like

476
00:31:40.319 --> 00:31:43.039
<v Speaker 4>end goal are usually in sync.

477
00:31:43.039 --> 00:31:45.039
<v Speaker 1>If you can plug some metrics into it, right, So

478
00:31:45.119 --> 00:31:48.240
<v Speaker 1>you have some analytics that you put in, you do

479
00:31:48.279 --> 00:31:51.119
<v Speaker 1>an A B test, right, and then at the end

480
00:31:51.119 --> 00:31:54.319
<v Speaker 1>of the day, it's not that much work to add

481
00:31:54.359 --> 00:31:56.920
<v Speaker 1>in the web worker and have it take on, you know,

482
00:31:57.039 --> 00:31:59.440
<v Speaker 1>the most expensive thing that's going on on the page.

483
00:32:00.039 --> 00:32:01.279
<v Speaker 1>A lot of times you can make the case that

484
00:32:01.359 --> 00:32:04.240
<v Speaker 1>TJ is making just with a really quick example that

485
00:32:04.319 --> 00:32:05.960
<v Speaker 1>only took you a couple hours to put in.

486
00:32:06.160 --> 00:32:08.200
<v Speaker 4>Yeah, make sure the email you send your boss has

487
00:32:08.240 --> 00:32:10.599
<v Speaker 4>a lot of acronyms, like the ctrs are going to

488
00:32:10.640 --> 00:32:13.480
<v Speaker 4>go through the roof and you know, really really business

489
00:32:13.519 --> 00:32:14.000
<v Speaker 4>it up.

490
00:32:14.279 --> 00:32:16.279
<v Speaker 7>Mentioned Google analytics while you're at it.

491
00:32:16.720 --> 00:32:19.720
<v Speaker 1>Well, if you can, you can put up the theory

492
00:32:19.839 --> 00:32:21.599
<v Speaker 1>right and put that stuff in. But at the end

493
00:32:21.599 --> 00:32:23.839
<v Speaker 1>of the day, I mean, if you can put in dollars, right,

494
00:32:24.200 --> 00:32:26.279
<v Speaker 1>this is dollars that we made that we wouldn't have

495
00:32:26.279 --> 00:32:28.240
<v Speaker 1>made because it's loading faster now.

496
00:32:28.480 --> 00:32:29.599
<v Speaker 4>It's the ultimate metric.

497
00:32:30.079 --> 00:32:34.799
<v Speaker 2>Yeah, but you actually mentioned a very good point. Always measure.

498
00:32:35.319 --> 00:32:38.519
<v Speaker 2>So even when I'm talking about like web workers and

499
00:32:38.599 --> 00:32:42.000
<v Speaker 2>you know, some real assembly and those kinds of things

500
00:32:42.640 --> 00:32:45.279
<v Speaker 2>I mentioned, I think in my tight maybe a few

501
00:32:45.319 --> 00:32:49.359
<v Speaker 2>times that always measure, measure, measure, and make sure that

502
00:32:49.400 --> 00:32:53.359
<v Speaker 2>what you are doing actually worth it. You know, so

503
00:32:53.440 --> 00:32:56.599
<v Speaker 2>you just don't do it because you've heard that this

504
00:32:56.680 --> 00:32:59.680
<v Speaker 2>is awesome, this is cool. You know you should you

505
00:32:59.680 --> 00:33:04.440
<v Speaker 2>should measure every time and every time that it makes

506
00:33:04.519 --> 00:33:08.000
<v Speaker 2>sense and you can measure it, especially in this case

507
00:33:08.319 --> 00:33:12.279
<v Speaker 2>for the business. Like you mentioned, it is very good

508
00:33:12.279 --> 00:33:16.119
<v Speaker 2>idea to turn the numbers to dollars. Like you said,

509
00:33:16.640 --> 00:33:19.000
<v Speaker 2>measure and you know, this is a loading time. We

510
00:33:19.119 --> 00:33:23.640
<v Speaker 2>had these number of visitors and then by doing this,

511
00:33:24.119 --> 00:33:28.480
<v Speaker 2>which take took me maybe a day maybe by most,

512
00:33:29.400 --> 00:33:34.000
<v Speaker 2>we increased the number of visitors to this number, which

513
00:33:34.039 --> 00:33:38.799
<v Speaker 2>at the end is like maybe ten percent of sales

514
00:33:39.000 --> 00:33:42.640
<v Speaker 2>or maybe increasonment in the cells, you know, or something

515
00:33:42.759 --> 00:33:45.559
<v Speaker 2>like that. This is very important to show to the business.

516
00:33:45.680 --> 00:33:50.119
<v Speaker 2>If we can do this like continuously, they will believe

517
00:33:50.160 --> 00:33:54.960
<v Speaker 2>in us and then they will actually ask us even

518
00:33:55.039 --> 00:33:57.599
<v Speaker 2>to spend more time to do this and stuff. You know,

519
00:33:58.240 --> 00:34:02.599
<v Speaker 2>this happened, This happened to me in my previous shot.

520
00:34:03.119 --> 00:34:06.480
<v Speaker 2>There was some blocking forces from the business side that

521
00:34:06.559 --> 00:34:09.559
<v Speaker 2>you cannot do that you should not spend time on this.

522
00:34:09.880 --> 00:34:13.599
<v Speaker 2>Just deliver these features and then at the end we

523
00:34:13.639 --> 00:34:15.840
<v Speaker 2>did some stuff, and then we measure and then send

524
00:34:15.880 --> 00:34:18.400
<v Speaker 2>the report back to the business for a few times,

525
00:34:18.519 --> 00:34:23.000
<v Speaker 2>and I think after after a few months, I remember

526
00:34:23.039 --> 00:34:25.400
<v Speaker 2>that the product owner came to us and said that, okay,

527
00:34:25.400 --> 00:34:28.920
<v Speaker 2>we need to prioritize this optimization. This is very important

528
00:34:28.920 --> 00:34:33.920
<v Speaker 2>for business to get the revenue higher at this season.

529
00:34:35.320 --> 00:34:39.360
<v Speaker 2>And we were all shocked. Okay, so okay, we will

530
00:34:39.400 --> 00:34:40.400
<v Speaker 2>do for sure.

531
00:34:40.719 --> 00:34:41.159
<v Speaker 3>Yeah.

532
00:34:41.239 --> 00:34:43.280
<v Speaker 1>Yeah, it's interesting too because you brought up the number

533
00:34:43.280 --> 00:34:46.280
<v Speaker 1>of visitors and the site speed is now taken into

534
00:34:46.320 --> 00:34:49.199
<v Speaker 1>account by Google and other search engines, and so if

535
00:34:49.199 --> 00:34:52.239
<v Speaker 1>you're doing any kind of search engine optimization, yeah, how

536
00:34:52.239 --> 00:34:55.960
<v Speaker 1>fast your page loads and works is definitely.

537
00:34:55.480 --> 00:34:56.920
<v Speaker 3>A metric that they're looking at too.

538
00:34:57.280 --> 00:35:00.360
<v Speaker 1>So it does affect not only your click through through

539
00:35:00.360 --> 00:35:03.280
<v Speaker 1>the effectiveness of your current traffic, but it also affects

540
00:35:03.320 --> 00:35:04.920
<v Speaker 1>your incoming traffic as well.

541
00:35:05.559 --> 00:35:07.480
<v Speaker 3>Web from search engines.

542
00:35:08.519 --> 00:35:09.719
<v Speaker 2>Absolutely, so.

543
00:35:09.840 --> 00:35:11.760
<v Speaker 1>Is there an easy way to get started with this stuff?

544
00:35:11.760 --> 00:35:14.039
<v Speaker 1>I mean, you've mentioned the commlink library a few times.

545
00:35:14.360 --> 00:35:17.559
<v Speaker 1>Is that super approachable or are there other ways to

546
00:35:17.639 --> 00:35:20.800
<v Speaker 1>tie all this stuff in that just make it a breeze.

547
00:35:21.280 --> 00:35:26.360
<v Speaker 2>Well, I think it's starting with commbling. Is the best

548
00:35:27.639 --> 00:35:30.280
<v Speaker 2>things that you can do because it's very easy to

549
00:35:30.719 --> 00:35:34.719
<v Speaker 2>start with. The API is very simple, and at the

550
00:35:34.880 --> 00:35:38.639
<v Speaker 2>end it's very familiar with what you are doing in

551
00:35:38.639 --> 00:35:42.519
<v Speaker 2>a daily basis. So for web workers, I strongly recommend

552
00:35:42.719 --> 00:35:46.679
<v Speaker 2>using this library if you haven't used that before, and

553
00:35:47.639 --> 00:35:50.519
<v Speaker 2>compare it to if you have done that also compared

554
00:35:50.559 --> 00:35:53.239
<v Speaker 2>to what you've done, and see, like how easier and

555
00:35:53.320 --> 00:35:56.400
<v Speaker 2>better is that? You know, maybe you feel that, Okay,

556
00:35:56.440 --> 00:36:00.239
<v Speaker 2>this is fantastic, so I should maybe start using that

557
00:36:00.519 --> 00:36:01.400
<v Speaker 2>after all. You know.

558
00:36:02.000 --> 00:36:05.599
<v Speaker 6>I had a question regarding mob assembly and how it

559
00:36:05.679 --> 00:36:09.760
<v Speaker 6>kind of fits into this world and from a perspective

560
00:36:11.079 --> 00:36:14.239
<v Speaker 6>right now, what can actually do a production with it?

561
00:36:14.360 --> 00:36:15.679
<v Speaker 5>Or is it not yet there?

562
00:36:16.119 --> 00:36:21.480
<v Speaker 2>Well, I think there are lots of web assembly examples

563
00:36:21.519 --> 00:36:25.360
<v Speaker 2>nowadays on the web. Maybe some of these, like I

564
00:36:25.360 --> 00:36:28.400
<v Speaker 2>think one of the best examples is Figima. If you

565
00:36:28.519 --> 00:36:32.480
<v Speaker 2>know which software it is, Yeah, yeah, yeah, it's I

566
00:36:32.480 --> 00:36:36.800
<v Speaker 2>think they're using web assembly, so so already, Yeah, it's

567
00:36:36.800 --> 00:36:40.440
<v Speaker 2>a very very cool example of using web assembly. So

568
00:36:41.119 --> 00:36:45.239
<v Speaker 2>I'm not a web assembly expert, but what I tried

569
00:36:45.280 --> 00:36:51.199
<v Speaker 2>to explain in the touch was how easy you can

570
00:36:51.320 --> 00:36:56.440
<v Speaker 2>start with web assembly because I can I can actually

571
00:36:56.599 --> 00:37:00.880
<v Speaker 2>question right now and you can answer when I say

572
00:37:01.000 --> 00:37:05.880
<v Speaker 2>web assembly, what is coming to your mind? First? The

573
00:37:05.920 --> 00:37:07.239
<v Speaker 2>first thing that it comes to your.

574
00:37:07.159 --> 00:37:08.599
<v Speaker 5>Mind gaming.

575
00:37:10.960 --> 00:37:13.760
<v Speaker 4>White code?

576
00:37:12.280 --> 00:37:19.119
<v Speaker 2>I think exactly see or maybe performance right fast. This

577
00:37:19.280 --> 00:37:22.039
<v Speaker 2>is interesting because these are the things that we are

578
00:37:22.159 --> 00:37:27.000
<v Speaker 2>exposed to our outer work. We are developers, right, We

579
00:37:27.119 --> 00:37:32.239
<v Speaker 2>read blogs, we watch videos, and we are hearing about

580
00:37:32.400 --> 00:37:36.039
<v Speaker 2>all of these things around us. Okay, see web assembly

581
00:37:36.119 --> 00:37:39.039
<v Speaker 2>only works with C or no, maybe also works bit ross.

582
00:37:39.519 --> 00:37:43.320
<v Speaker 2>You know. This is what I was interested about and

583
00:37:43.719 --> 00:37:46.880
<v Speaker 2>I talked about. Also, is that when I'm talking about

584
00:37:46.920 --> 00:37:49.679
<v Speaker 2>web assembly, usually you are not going to try it

585
00:37:49.760 --> 00:37:52.960
<v Speaker 2>because you say, okay, this is something with C and oh,

586
00:37:52.960 --> 00:37:55.079
<v Speaker 2>I'm not a C developer and I don't know even

587
00:37:55.360 --> 00:37:58.480
<v Speaker 2>how to use C or how to start with CE. Right,

588
00:37:59.400 --> 00:38:03.360
<v Speaker 2>So I brought it up in the tie and said, no,

589
00:38:03.599 --> 00:38:07.480
<v Speaker 2>that's that this is not the case. You have maybe

590
00:38:07.559 --> 00:38:12.880
<v Speaker 2>simpler option to start with web assembly and start learning

591
00:38:12.960 --> 00:38:16.559
<v Speaker 2>this at least, because it seems like this is going

592
00:38:16.679 --> 00:38:21.760
<v Speaker 2>to be some kind of future like more and more

593
00:38:22.039 --> 00:38:25.639
<v Speaker 2>games apps web apps are coming to web from different

594
00:38:25.719 --> 00:38:30.519
<v Speaker 2>languages via a web assembly, so we should know this, right,

595
00:38:30.559 --> 00:38:31.599
<v Speaker 2>we should start.

596
00:38:31.400 --> 00:38:36.039
<v Speaker 9>Learning this and and then and the language or or

597
00:38:36.400 --> 00:38:40.119
<v Speaker 9>the framework that I introduced was probably many of us

598
00:38:40.159 --> 00:38:42.599
<v Speaker 9>also know right now is assembly script.

599
00:38:43.039 --> 00:38:47.679
<v Speaker 2>Have you heard about assembly script? No? Assembly script actually

600
00:38:48.000 --> 00:38:52.960
<v Speaker 2>is uh, it's more or less like a compiler. It's

601
00:38:53.480 --> 00:38:57.880
<v Speaker 2>it compiles a strict subset of type of script to

602
00:38:57.920 --> 00:39:00.159
<v Speaker 2>web assembly. So if you if you are familiar with

603
00:39:00.239 --> 00:39:04.239
<v Speaker 2>type script, and if you go and learn web assembly typing,

604
00:39:04.920 --> 00:39:08.000
<v Speaker 2>then you are good to go. You can start writing

605
00:39:08.039 --> 00:39:11.000
<v Speaker 2>your web assembly right now. So you can go to

606
00:39:11.039 --> 00:39:17.280
<v Speaker 2>assembly script, simply download it from MPM and then initialize

607
00:39:17.320 --> 00:39:22.840
<v Speaker 2>your project with one command only you have everything. Start

608
00:39:22.920 --> 00:39:30.480
<v Speaker 2>writing your type script like functions but with web assembly typing,

609
00:39:31.239 --> 00:39:36.599
<v Speaker 2>and then with one command compile it to wasen and

610
00:39:37.320 --> 00:39:42.159
<v Speaker 2>you have a loader from this library. Very easy start

611
00:39:43.280 --> 00:39:47.519
<v Speaker 2>like using your vasm file or instantiate your vasum file

612
00:39:47.599 --> 00:39:51.679
<v Speaker 2>into your main application. I had an example of a

613
00:39:51.800 --> 00:39:56.880
<v Speaker 2>very simple example which may not have a real even

614
00:39:57.800 --> 00:40:02.119
<v Speaker 2>use case, but I he wrote a function in both

615
00:40:02.119 --> 00:40:07.719
<v Speaker 2>web assembly and JavaScript in the React application. And the

616
00:40:07.760 --> 00:40:13.599
<v Speaker 2>function was supposed to calculate the fibonacci number right, so

617
00:40:13.679 --> 00:40:18.159
<v Speaker 2>and I passed a very high number. So I ran

618
00:40:18.199 --> 00:40:21.960
<v Speaker 2>it with web assembly and I also run it with

619
00:40:23.480 --> 00:40:27.880
<v Speaker 2>the JavaScript one. This is when this is exactly when

620
00:40:27.920 --> 00:40:30.559
<v Speaker 2>I say that we need to measure. I measure it,

621
00:40:31.119 --> 00:40:35.920
<v Speaker 2>and the web assembly version when I was executed, it

622
00:40:36.159 --> 00:40:41.440
<v Speaker 2>was seven times faster, and it was very surprising. There

623
00:40:41.519 --> 00:40:45.480
<v Speaker 2>was no optimization for the function though exactly the same

624
00:40:45.639 --> 00:40:52.639
<v Speaker 2>but different implementation in web assembly and JavaScript. Then when

625
00:40:52.639 --> 00:40:57.039
<v Speaker 2>I ran it for the second time, the function then

626
00:40:57.199 --> 00:41:02.920
<v Speaker 2>it actually the execution time was exactly the same. So why,

627
00:41:03.119 --> 00:41:07.000
<v Speaker 2>I mean, people ask me in the room, like when

628
00:41:07.039 --> 00:41:09.360
<v Speaker 2>I was talking, why is that the case? So we

629
00:41:09.440 --> 00:41:11.960
<v Speaker 2>thought that web assembly is going to be faster and

630
00:41:12.199 --> 00:41:16.840
<v Speaker 2>also be faster always, and that is true. If web

631
00:41:16.840 --> 00:41:22.480
<v Speaker 2>assembly execute something in one particular let's say time, it

632
00:41:23.079 --> 00:41:27.360
<v Speaker 2>is also stay in that time forever. If you execute

633
00:41:27.360 --> 00:41:31.760
<v Speaker 2>this function, you probably get the same performance of same

634
00:41:31.880 --> 00:41:35.679
<v Speaker 2>number every time you execute. So. But in JavaScript, for

635
00:41:35.719 --> 00:41:38.960
<v Speaker 2>the first time, because there was no optimization from WEM

636
00:41:39.280 --> 00:41:43.480
<v Speaker 2>for when you're running this function, then of course it

637
00:41:43.639 --> 00:41:46.639
<v Speaker 2>takes a little bit longer. But then the second time

638
00:41:46.920 --> 00:41:51.039
<v Speaker 2>when you execute that there was optimization in WM right

639
00:41:51.440 --> 00:41:56.760
<v Speaker 2>like in v eight JavaScript and gene, then the time

640
00:41:56.960 --> 00:42:01.599
<v Speaker 2>was pretty similar. So that is why we have to ask, okay,

641
00:42:01.679 --> 00:42:04.119
<v Speaker 2>should I actually take this part of the application right

642
00:42:04.119 --> 00:42:06.880
<v Speaker 2>now to wether assembly or not? That is the question

643
00:42:06.960 --> 00:42:10.360
<v Speaker 2>we should ask. So this is also we discussed in

644
00:42:10.679 --> 00:42:15.360
<v Speaker 2>the talk and in the fa Q section of the talk.

645
00:42:15.559 --> 00:42:19.800
<v Speaker 2>Like use cases are very different, so you need to

646
00:42:19.840 --> 00:42:22.440
<v Speaker 2>think about your use cases and then measure it and

647
00:42:22.480 --> 00:42:24.960
<v Speaker 2>see if it works for you. That was the use

648
00:42:24.960 --> 00:42:27.639
<v Speaker 2>case for a websent. I think it was fun. It

649
00:42:27.760 --> 00:42:30.000
<v Speaker 2>was fun in this case that you know that if

650
00:42:30.039 --> 00:42:34.159
<v Speaker 2>the web assembly runs in a performance way or line,

651
00:42:34.280 --> 00:42:38.360
<v Speaker 2>it will stay in that line. It is always performance

652
00:42:38.440 --> 00:42:43.039
<v Speaker 2>if it runs on that level. So while JavaScript it

653
00:42:43.239 --> 00:42:49.400
<v Speaker 2>tries to optimize itself. Let's say it was an interesting finding.

654
00:42:49.920 --> 00:42:53.239
<v Speaker 4>So from a developer perspective, if you have web assembly code,

655
00:42:53.280 --> 00:42:56.519
<v Speaker 4>does it? So it certainly sounds like you can just

656
00:42:56.559 --> 00:42:58.760
<v Speaker 4>designate a chunk of your code that I want this

657
00:42:58.880 --> 00:43:02.320
<v Speaker 4>to be like in web assembly, whether that's with assembly

658
00:43:02.360 --> 00:43:05.920
<v Speaker 4>script or whatever. Is when is like when you run

659
00:43:06.000 --> 00:43:08.280
<v Speaker 4>the bulk of your application code, Is that just like

660
00:43:08.440 --> 00:43:11.280
<v Speaker 4>a synchronous call in the web assembly land to like

661
00:43:11.360 --> 00:43:14.119
<v Speaker 4>do some task and get a result? Like how does

662
00:43:14.199 --> 00:43:17.840
<v Speaker 4>like the API experience compared to like web workers?

663
00:43:18.159 --> 00:43:22.119
<v Speaker 2>So if you want to understand ship with the browser

664
00:43:22.199 --> 00:43:26.599
<v Speaker 2>API LASM file, it's a bit of worn. So I'm

665
00:43:26.599 --> 00:43:29.400
<v Speaker 2>not going to explain that and then why I'm explaining

666
00:43:29.480 --> 00:43:34.519
<v Speaker 2>assembly script though, because it simplifies those APIs into only

667
00:43:34.559 --> 00:43:38.800
<v Speaker 2>one API, which is a promisified version of that. So

668
00:43:38.960 --> 00:43:41.920
<v Speaker 2>you have your lasom file after you compile, you can

669
00:43:42.000 --> 00:43:45.440
<v Speaker 2>use this loader actually without using assembly skip. You can

670
00:43:45.559 --> 00:43:49.400
<v Speaker 2>use just assembly loader from assembly script. Then when you

671
00:43:49.440 --> 00:43:53.679
<v Speaker 2>instantiate this vasom file, it's just one line of code.

672
00:43:53.880 --> 00:43:57.840
<v Speaker 2>There is one function in the assembly script loader you

673
00:43:58.039 --> 00:44:02.599
<v Speaker 2>pass a promise version of Let's say you pass a

674
00:44:02.679 --> 00:44:07.079
<v Speaker 2>fetch a function which is fetching the VASM to this function,

675
00:44:07.440 --> 00:44:11.920
<v Speaker 2>and then it instantiated those it will actually do all

676
00:44:11.960 --> 00:44:14.760
<v Speaker 2>of those things that needs to be done in the browser,

677
00:44:14.920 --> 00:44:17.800
<v Speaker 2>and then it exposed to you the method that you

678
00:44:18.079 --> 00:44:22.679
<v Speaker 2>already exported in web assembly or assembly script sorry, or

679
00:44:22.920 --> 00:44:25.320
<v Speaker 2>if you have done it already in other languages, you

680
00:44:25.719 --> 00:44:30.000
<v Speaker 2>already exported some function for instance, to be accessible in

681
00:44:30.079 --> 00:44:33.400
<v Speaker 2>the JavaScript or main for it, right, so you will

682
00:44:33.400 --> 00:44:36.480
<v Speaker 2>get access to that. So it's that easy.

683
00:44:37.280 --> 00:44:39.280
<v Speaker 4>And then you can just use those functions as if

684
00:44:39.320 --> 00:44:41.400
<v Speaker 4>they're just like all the other JavaScript functions.

685
00:44:41.400 --> 00:44:45.599
<v Speaker 2>Okay, exactly exactly. You just call those functions whenever you want.

686
00:44:46.079 --> 00:44:46.559
<v Speaker 7>Nice.

687
00:44:47.039 --> 00:44:52.199
<v Speaker 2>There are lots of examples with assembly script, right, now,

688
00:44:52.320 --> 00:44:55.639
<v Speaker 2>so you can go and find out that people wrote

689
00:44:55.840 --> 00:45:01.159
<v Speaker 2>games purely in an assembly script or the are a

690
00:45:01.199 --> 00:45:05.800
<v Speaker 2>lot of different encoders or decoders for images or audios

691
00:45:05.880 --> 00:45:09.320
<v Speaker 2>or those kinds of things that they are available as

692
00:45:09.320 --> 00:45:12.119
<v Speaker 2>a plug in and you can use that. So there

693
00:45:12.119 --> 00:45:16.119
<v Speaker 2>are there are cool stuff that you can probably download

694
00:45:16.159 --> 00:45:21.079
<v Speaker 2>and experiment with. I strongly recommended, especially as a web developer.

695
00:45:21.199 --> 00:45:24.880
<v Speaker 2>Who you are. We usually you know, in a daily basis,

696
00:45:24.880 --> 00:45:27.199
<v Speaker 2>we usually are a great javas created a paper spree,

697
00:45:27.800 --> 00:45:32.599
<v Speaker 2>you know, or so if we can have a tool

698
00:45:33.039 --> 00:45:36.719
<v Speaker 2>similar to what we are using, it's fairly easier to

699
00:45:36.880 --> 00:45:42.119
<v Speaker 2>start learning these new technologies, right, So sometimes we are

700
00:45:42.400 --> 00:45:47.559
<v Speaker 2>we we kind of stop ourselves from learning because it's

701
00:45:47.880 --> 00:45:51.280
<v Speaker 2>very different from what we are using in a daily basis.

702
00:45:51.599 --> 00:45:56.480
<v Speaker 2>And I like those tools that are helping us to

703
00:45:58.119 --> 00:46:02.280
<v Speaker 2>have to bring these familiar APIs to us, and I

704
00:46:02.320 --> 00:46:04.239
<v Speaker 2>really like them nice.

705
00:46:05.000 --> 00:46:08.280
<v Speaker 1>So one other question that I have is I'm assuming

706
00:46:08.320 --> 00:46:11.679
<v Speaker 1>that your web workers or your assembly script or anything else,

707
00:46:12.199 --> 00:46:14.679
<v Speaker 1>you know, as you put the stuff together, it's just

708
00:46:14.719 --> 00:46:17.280
<v Speaker 1>calling functions. So testing is just like testing any other

709
00:46:17.400 --> 00:46:19.519
<v Speaker 1>piece of JavaScript, right Exactly.

710
00:46:20.679 --> 00:46:25.199
<v Speaker 2>You may need to like moke some API or something

711
00:46:25.280 --> 00:46:30.719
<v Speaker 2>but testing is like similar with other JavaScript testings. We

712
00:46:30.800 --> 00:46:34.559
<v Speaker 2>also missed and other things which probably I need to

713
00:46:34.800 --> 00:46:38.320
<v Speaker 2>talk about it a little bit. Worklets. Any of you

714
00:46:38.400 --> 00:46:41.000
<v Speaker 2>actually have heard about worklift before?

715
00:46:41.599 --> 00:46:44.920
<v Speaker 6>I have not, so I've heard about it, but only

716
00:46:44.960 --> 00:46:47.320
<v Speaker 6>in the context of sexswini.

717
00:46:47.840 --> 00:46:53.159
<v Speaker 2>Yeah, because that is the most available one more. Yeah,

718
00:46:53.199 --> 00:46:55.960
<v Speaker 2>so let's talk about it because that is going to

719
00:46:56.039 --> 00:47:00.800
<v Speaker 2>be something very cool in the near future. May this year,

720
00:47:01.280 --> 00:47:05.880
<v Speaker 2>So many many browsers are implementing work let's APIs. So

721
00:47:06.039 --> 00:47:11.400
<v Speaker 2>what is worklet or what are worklets? Worklets are a

722
00:47:11.519 --> 00:47:14.280
<v Speaker 2>light version of web workers again, so you see that

723
00:47:14.719 --> 00:47:19.760
<v Speaker 2>many of these APIs, new APIs are evolving kind of

724
00:47:19.800 --> 00:47:24.320
<v Speaker 2>on top of web workers. So let's let's talk about it.

725
00:47:24.360 --> 00:47:30.440
<v Speaker 2>So what what does what do they do? Like these worklets?

726
00:47:30.800 --> 00:47:35.079
<v Speaker 2>The main point of having worklets is to have access

727
00:47:35.239 --> 00:47:40.559
<v Speaker 2>to very low level part of the rendering pipeline in

728
00:47:40.639 --> 00:47:44.559
<v Speaker 2>the browser. What does that mean? Well, that means you

729
00:47:44.599 --> 00:47:48.239
<v Speaker 2>can you can have access to the graphic rendering or

730
00:47:48.679 --> 00:47:53.960
<v Speaker 2>audio processing of the rendering engine pipeline in the browser,

731
00:47:54.199 --> 00:47:58.760
<v Speaker 2>which is very very performant because it's very very low level. Okay,

732
00:47:59.280 --> 00:48:02.400
<v Speaker 2>so give me an example matchically, Okay, I'll give you

733
00:48:02.440 --> 00:48:05.960
<v Speaker 2>an example. The example is, let's imagine you want to

734
00:48:05.960 --> 00:48:12.400
<v Speaker 2>implement a QR code painter and you want to actually

735
00:48:13.119 --> 00:48:18.440
<v Speaker 2>repaint this QR code whenever user is interacting with some

736
00:48:18.559 --> 00:48:22.840
<v Speaker 2>kind of input or button or something. Right with work lets,

737
00:48:23.000 --> 00:48:27.119
<v Speaker 2>what you can do you can write your own JavaScript

738
00:48:27.679 --> 00:48:34.000
<v Speaker 2>to design to design this QR code, for instance, and

739
00:48:34.039 --> 00:48:38.719
<v Speaker 2>then register it with I'm talking about one particular example

740
00:48:38.760 --> 00:48:42.119
<v Speaker 2>of worklet, which is css wudin as you mentioned card,

741
00:48:42.800 --> 00:48:47.800
<v Speaker 2>and you register this with CSS paint API. Once you register,

742
00:48:48.039 --> 00:48:53.079
<v Speaker 2>then you have access it via CSS. So then you

743
00:48:53.119 --> 00:48:56.800
<v Speaker 2>can call this function actually in the CSS and you

744
00:48:56.840 --> 00:49:00.800
<v Speaker 2>can start repainting this whenever you call this function. So

745
00:49:01.199 --> 00:49:06.000
<v Speaker 2>I had an example in the talk. And also I

746
00:49:06.039 --> 00:49:10.679
<v Speaker 2>have a life on my website that you can interact

747
00:49:10.679 --> 00:49:14.840
<v Speaker 2>with this QR code without bothering the main threat because

748
00:49:15.320 --> 00:49:17.880
<v Speaker 2>that is, like I said, it's kind of on top

749
00:49:17.920 --> 00:49:21.079
<v Speaker 2>of the web workers, so it's a different threat. So

750
00:49:21.360 --> 00:49:24.880
<v Speaker 2>it's dealing with this painting even though you have like

751
00:49:24.920 --> 00:49:27.280
<v Speaker 2>an example that I had, I had an animation, it

752
00:49:27.360 --> 00:49:30.760
<v Speaker 2>was working and I was actually repainting this QR code.

753
00:49:30.800 --> 00:49:34.559
<v Speaker 2>It was very complex and very fast, and there was

754
00:49:34.639 --> 00:49:38.440
<v Speaker 2>no blocking nothing in the main threat so the animation

755
00:49:38.679 --> 00:49:41.320
<v Speaker 2>was working very smoothly. Why I was working with this

756
00:49:41.840 --> 00:49:46.000
<v Speaker 2>repainting and stuff. This is going to be very very

757
00:49:46.039 --> 00:49:48.760
<v Speaker 2>powerful in the future. You can think of it. What

758
00:49:48.960 --> 00:49:52.559
<v Speaker 2>can you do? You know a lot of use cases

759
00:49:52.599 --> 00:49:56.800
<v Speaker 2>that you may think of it. Another simple example, very

760
00:49:56.800 --> 00:50:04.320
<v Speaker 2>simple example, was to paint a chess or checkboard background.

761
00:50:04.719 --> 00:50:07.559
<v Speaker 2>So well, we can do it different with the different ways.

762
00:50:07.599 --> 00:50:09.880
<v Speaker 2>But one way that you can do you can actually

763
00:50:09.920 --> 00:50:15.159
<v Speaker 2>write your own Java script to generate this checkboard and

764
00:50:15.280 --> 00:50:18.599
<v Speaker 2>register your JavaScript with CSS pain and then call this

765
00:50:18.800 --> 00:50:22.039
<v Speaker 2>to the body for instance, with background and the name

766
00:50:22.079 --> 00:50:25.440
<v Speaker 2>of this cess pain, and then you will get this

767
00:50:25.760 --> 00:50:29.320
<v Speaker 2>checkboard in the background, which is actually rendering in a

768
00:50:29.320 --> 00:50:35.119
<v Speaker 2>different threat. So this is very powerful, very very interesting,

769
00:50:35.159 --> 00:50:40.280
<v Speaker 2>but unfortunately many browsers right now don't support it. C

770
00:50:40.519 --> 00:50:46.239
<v Speaker 2>s a Skudini or paint work let. It's it has

771
00:50:46.280 --> 00:50:50.639
<v Speaker 2>a better support in different browsers. That's why we are

772
00:50:51.280 --> 00:50:56.760
<v Speaker 2>hearing about this API more and more. But other worklets,

773
00:50:57.000 --> 00:51:00.000
<v Speaker 2>we have four different work lets. We have paint cs

774
00:51:00.039 --> 00:51:04.079
<v Speaker 2>as withinia as I just explained, animation, layout and audio

775
00:51:04.119 --> 00:51:08.079
<v Speaker 2>worklet's so but the rest are they don't have a

776
00:51:08.159 --> 00:51:11.760
<v Speaker 2>good support. It's only Chrome I think right now, or

777
00:51:11.960 --> 00:51:15.360
<v Speaker 2>maybe Edge new version because it's also based on the Chrome.

778
00:51:15.840 --> 00:51:18.000
<v Speaker 2>But the rest of the browsers they don't have a

779
00:51:18.039 --> 00:51:21.079
<v Speaker 2>good support for these APIs. But what I know is

780
00:51:21.119 --> 00:51:25.519
<v Speaker 2>that they're working on it to make this or to

781
00:51:25.599 --> 00:51:29.440
<v Speaker 2>put this API into their browsers very soon, maybe this year.

782
00:51:29.519 --> 00:51:32.639
<v Speaker 2>So we should be ready for these APIs very soon.

783
00:51:33.079 --> 00:51:37.440
<v Speaker 1>Awesome, very cool, Yeah, totally cool, more stuff to play with.

784
00:51:38.920 --> 00:51:39.039
<v Speaker 7>Oh.

785
00:51:40.079 --> 00:51:43.159
<v Speaker 6>I had a question because when I last heard about Rudini,

786
00:51:43.679 --> 00:51:45.679
<v Speaker 6>the way that I was explained was it's going to

787
00:51:45.719 --> 00:51:48.840
<v Speaker 6>be most likely used by authors or frameworks and libraries,

788
00:51:49.000 --> 00:51:50.840
<v Speaker 6>and less so by your average developer.

789
00:51:51.039 --> 00:51:53.840
<v Speaker 5>I mean from my experience. And you know is that

790
00:51:53.960 --> 00:51:54.599
<v Speaker 5>TRIU imagined?

791
00:51:55.159 --> 00:52:00.360
<v Speaker 2>Well, I disagree somehow. First of all, we are all

792
00:52:00.360 --> 00:52:03.760
<v Speaker 2>awesome developers, all of us, so I don't think there

793
00:52:03.800 --> 00:52:07.639
<v Speaker 2>is a difference. We all can use this API. So

794
00:52:08.320 --> 00:52:11.239
<v Speaker 2>while we at some point we all of us can

795
00:52:11.320 --> 00:52:15.360
<v Speaker 2>be a CSSs sorry, a library, a maintaeniner, right, we

796
00:52:15.360 --> 00:52:20.920
<v Speaker 2>can also write our own library. So why should why

797
00:52:21.039 --> 00:52:23.760
<v Speaker 2>you should not use this API? No, you have to

798
00:52:23.840 --> 00:52:27.840
<v Speaker 2>use it. You will get Actually, you will see a

799
00:52:27.880 --> 00:52:32.480
<v Speaker 2>lot of use cases for these APIs, So I think

800
00:52:32.559 --> 00:52:36.199
<v Speaker 2>we should learn it because it's very very beneficial for us,

801
00:52:36.599 --> 00:52:37.239
<v Speaker 2>very empowering.

802
00:52:37.760 --> 00:52:41.119
<v Speaker 3>Yep, anything else we should jump on before we do picks.

803
00:52:41.679 --> 00:52:45.639
<v Speaker 2>I can make add One thing is that don't scare

804
00:52:46.239 --> 00:52:50.840
<v Speaker 2>of the new APIs and just experiment and work with them.

805
00:52:51.159 --> 00:52:54.599
<v Speaker 2>It is very important if you are especially a front

806
00:52:54.679 --> 00:52:57.800
<v Speaker 2>and developer, let's say, or a JavaScript developer dealing with

807
00:52:57.920 --> 00:53:01.280
<v Speaker 2>browsers these days, you have a lot to take on.

808
00:53:01.840 --> 00:53:05.360
<v Speaker 2>It's a lot to learn, but at the same time,

809
00:53:05.639 --> 00:53:08.360
<v Speaker 2>it's a lot of fun. You know a lot of

810
00:53:08.440 --> 00:53:12.639
<v Speaker 2>cool things that we were not able to do in

811
00:53:12.679 --> 00:53:14.760
<v Speaker 2>the past, but now we are able to do, and

812
00:53:14.840 --> 00:53:19.440
<v Speaker 2>it's so empowering. So just use it and experiment.

813
00:53:20.440 --> 00:53:23.679
<v Speaker 3>Awesome, all right, Well let's go ahead and do some picks. TJ.

814
00:53:23.800 --> 00:53:25.199
<v Speaker 3>Do you want to start us off with picks?

815
00:53:25.480 --> 00:53:29.679
<v Speaker 4>Sure, I've just got one. There's this farm I'm actually

816
00:53:29.719 --> 00:53:31.719
<v Speaker 4>not sure it is, but they've started up this service

817
00:53:31.800 --> 00:53:38.079
<v Speaker 4>called goat to meeting and it's especially exactly like the

818
00:53:38.159 --> 00:53:42.159
<v Speaker 4>name implies. Basically, you can pay and this farm will

819
00:53:42.159 --> 00:53:45.960
<v Speaker 4>bring a goat into a zoom call for you, essentially,

820
00:53:46.000 --> 00:53:48.239
<v Speaker 4>and they have a rate they charge for this a

821
00:53:48.280 --> 00:53:50.840
<v Speaker 4>goat to show up. And I think actually a more

822
00:53:50.880 --> 00:53:54.480
<v Speaker 4>interesting thing is there. They do something along the lines

823
00:53:54.519 --> 00:53:58.079
<v Speaker 4>of classrooms tours. So like if you had like a

824
00:53:58.079 --> 00:54:01.119
<v Speaker 4>class of kids that isn't at school now, you could

825
00:54:01.239 --> 00:54:04.400
<v Speaker 4>arrange a zoom call for a class and they'll give

826
00:54:04.400 --> 00:54:06.800
<v Speaker 4>you a like a tour of the farm, just digitally,

827
00:54:06.880 --> 00:54:09.559
<v Speaker 4>just to give kids something to do that are probably

828
00:54:09.639 --> 00:54:11.280
<v Speaker 4>if there are anything like mine, going a little bit

829
00:54:11.639 --> 00:54:14.639
<v Speaker 4>stir crazy. Having been inside for a few weeks at

830
00:54:14.679 --> 00:54:15.719
<v Speaker 4>this point, Well.

831
00:54:15.719 --> 00:54:18.440
<v Speaker 1>That might work, yeah for my kids. I was thinking

832
00:54:18.519 --> 00:54:21.239
<v Speaker 1>people were just zoom bombing anyway, So I.

833
00:54:21.480 --> 00:54:24.800
<v Speaker 4>Yeah, I think so. I think there they'll either you

834
00:54:24.800 --> 00:54:26.800
<v Speaker 4>could just have a goat show up or I don't know,

835
00:54:27.320 --> 00:54:31.880
<v Speaker 4>interesting new economics like opportunity from this situation.

836
00:54:34.039 --> 00:54:36.679
<v Speaker 3>Nice. That reminds me a talk to a guy that

837
00:54:36.800 --> 00:54:38.960
<v Speaker 3>runs is it goat milk stuff? I think?

838
00:54:39.320 --> 00:54:43.519
<v Speaker 1>But anyway, they make like soaps and food items and

839
00:54:43.599 --> 00:54:45.920
<v Speaker 1>all kinds of stuff out of goat's milk.

840
00:54:46.280 --> 00:54:48.559
<v Speaker 3>This is a legit business. But yeah, it was.

841
00:54:48.599 --> 00:54:51.119
<v Speaker 1>It was pretty interesting to talk to them and see

842
00:54:51.159 --> 00:54:53.960
<v Speaker 1>kind of how they run things with So I'll throw

843
00:54:54.000 --> 00:54:56.480
<v Speaker 1>a goat pick into I haven't tried any other stuff

844
00:54:56.519 --> 00:55:00.679
<v Speaker 1>so but but Jim's a good guy anyway, Carl, do

845
00:55:00.719 --> 00:55:01.639
<v Speaker 1>you have some picks for us.

846
00:55:01.960 --> 00:55:04.079
<v Speaker 6>Yeah, the only pick that I've got really is what

847
00:55:04.119 --> 00:55:08.360
<v Speaker 6>our referenced earlier on the podcast where does.

848
00:55:07.679 --> 00:55:08.639
<v Speaker 5>So my thinks name is?

849
00:55:08.840 --> 00:55:12.800
<v Speaker 6>Spoke about Kamlik and you spoke about it in kind

850
00:55:12.840 --> 00:55:16.440
<v Speaker 6>of depth, how to use world workers in your application,

851
00:55:16.679 --> 00:55:21.519
<v Speaker 6>as well as potential use cases for handling your statement

852
00:55:21.559 --> 00:55:22.039
<v Speaker 6>men as well.

853
00:55:22.119 --> 00:55:24.760
<v Speaker 5>So that's the pick I'm going to choose today.

854
00:55:25.079 --> 00:55:27.239
<v Speaker 3>Awesome page. Do you have some picks for us?

855
00:55:27.559 --> 00:55:27.920
<v Speaker 5>I do.

856
00:55:28.719 --> 00:55:31.679
<v Speaker 7>My first one is completely unrelated to anything that we've

857
00:55:31.679 --> 00:55:38.000
<v Speaker 7>spoken about. It's actually the Dji Phantom for drone. Since

858
00:55:38.039 --> 00:55:40.519
<v Speaker 7>none of us can really go anywhere, this might give

859
00:55:40.519 --> 00:55:43.760
<v Speaker 7>you the feeling that you're actually at least getting outside

860
00:55:43.760 --> 00:55:46.280
<v Speaker 7>a little bit by flying this drone from your driveway

861
00:55:46.400 --> 00:55:50.760
<v Speaker 7>or your porch or something. It's great. It's really one

862
00:55:50.800 --> 00:55:53.599
<v Speaker 7>of the best ones I've seen, even for people who

863
00:55:53.800 --> 00:55:58.440
<v Speaker 7>are not very proficient applying drones, myself included. I haven't

864
00:55:58.480 --> 00:56:00.880
<v Speaker 7>managed to crash it yet, so I would say it's

865
00:56:00.920 --> 00:56:03.199
<v Speaker 7>a really good starter drone if you've got a little

866
00:56:03.239 --> 00:56:06.360
<v Speaker 7>bit of money to spend right now. Second pick would

867
00:56:06.400 --> 00:56:11.639
<v Speaker 7>be the show Ozark on Netflix. It's in its third season,

868
00:56:11.880 --> 00:56:15.199
<v Speaker 7>just came out and it's really it's a great one

869
00:56:15.280 --> 00:56:18.760
<v Speaker 7>to binge watch through because there's a lot of stuff

870
00:56:18.800 --> 00:56:22.199
<v Speaker 7>happening from moment one, and you know, as soon as

871
00:56:22.199 --> 00:56:24.400
<v Speaker 7>the episode ends, you just can't wait to see what's

872
00:56:24.400 --> 00:56:25.280
<v Speaker 7>going to happen next.

873
00:56:25.920 --> 00:56:28.159
<v Speaker 3>Awesome. I've got a couple of picks.

874
00:56:28.639 --> 00:56:31.239
<v Speaker 1>One of the first picks I have I found this

875
00:56:31.280 --> 00:56:34.920
<v Speaker 1>stopwatch app on for my iPhone, and what I was

876
00:56:34.920 --> 00:56:36.920
<v Speaker 1>looking for is just to kind of give people an idea.

877
00:56:37.440 --> 00:56:40.840
<v Speaker 1>So I've gotten rather involved in the Utah County Republican Party,

878
00:56:41.079 --> 00:56:43.239
<v Speaker 1>and all of the county officials here in Utah County

879
00:56:43.280 --> 00:56:46.000
<v Speaker 1>are Republicans, so if you want to say you kind

880
00:56:46.000 --> 00:56:47.000
<v Speaker 1>of have to go to the convention.

881
00:56:47.480 --> 00:56:48.519
<v Speaker 3>Otherwise you're just kind of.

882
00:56:48.480 --> 00:56:50.239
<v Speaker 1>Voting in the primary ballot and then voting in the

883
00:56:50.280 --> 00:56:53.079
<v Speaker 1>general election and whoever, by then they've already been picked.

884
00:56:53.119 --> 00:56:56.239
<v Speaker 3>So I've gotten involved early, and somehow.

885
00:56:55.960 --> 00:56:58.400
<v Speaker 1>I wound up running the debate, and so I needed

886
00:56:58.519 --> 00:57:01.199
<v Speaker 1>a stop watch or a timer on my phone that

887
00:57:01.239 --> 00:57:03.320
<v Speaker 1>would count down, but it had to be in landscape

888
00:57:03.440 --> 00:57:05.599
<v Speaker 1>mode so that I could put it on a tripod

889
00:57:05.639 --> 00:57:08.159
<v Speaker 1>in front of my camera so that the candidates could

890
00:57:08.159 --> 00:57:12.199
<v Speaker 1>see it. And it's surprisingly difficult to find one, So

891
00:57:13.000 --> 00:57:16.000
<v Speaker 1>I did wind up finding one. I was super happy

892
00:57:16.039 --> 00:57:17.840
<v Speaker 1>with it, and I'll put a link to it in

893
00:57:17.840 --> 00:57:19.800
<v Speaker 1>the show notes because I can't remember exactly what it's

894
00:57:19.800 --> 00:57:22.920
<v Speaker 1>called right now, but that just made me happy. Another

895
00:57:22.920 --> 00:57:25.719
<v Speaker 1>one I'm going to pick is I have this tripod.

896
00:57:25.800 --> 00:57:29.119
<v Speaker 1>It's a RIFFG tripod. It's really small, it'll sit on

897
00:57:29.159 --> 00:57:32.519
<v Speaker 1>your desk, and then it has the phone spring loaded

898
00:57:32.599 --> 00:57:35.039
<v Speaker 1>attachment on top that I pulled off of a selfie

899
00:57:35.079 --> 00:57:39.719
<v Speaker 1>stick that I have never used, and so yeah, I'm

900
00:57:39.760 --> 00:57:41.280
<v Speaker 1>really liking that, So I'm going to pick that. And

901
00:57:41.280 --> 00:57:44.639
<v Speaker 1>then finally, I've been working on getting the word out

902
00:57:44.639 --> 00:57:47.840
<v Speaker 1>for jas remote comp that's going to be in May

903
00:57:48.519 --> 00:57:51.480
<v Speaker 1>and Carl's going to be speaking at it. I'm looking

904
00:57:51.480 --> 00:57:53.440
<v Speaker 1>for sponsors, so if you work for a company that

905
00:57:53.519 --> 00:57:56.239
<v Speaker 1>might want to sponsor, I would appreciate that. But besides that,

906
00:57:56.519 --> 00:57:59.199
<v Speaker 1>I've been playing with Canva as a way to get

907
00:57:59.239 --> 00:58:03.199
<v Speaker 1>all of my social media images together. And you can

908
00:58:03.239 --> 00:58:05.599
<v Speaker 1>just build a template and then I can just literally

909
00:58:05.639 --> 00:58:08.320
<v Speaker 1>go in and put different text in for the talk

910
00:58:08.360 --> 00:58:11.000
<v Speaker 1>title and the speaker and the you know.

911
00:58:10.960 --> 00:58:12.400
<v Speaker 3>Their headshot in the whole nine yards.

912
00:58:12.400 --> 00:58:14.559
<v Speaker 1>And so I've been working on getting that stuff together

913
00:58:14.920 --> 00:58:17.000
<v Speaker 1>to play with and so I've been pretty happy with that.

914
00:58:17.199 --> 00:58:19.000
<v Speaker 1>So those are kind of things that have made my

915
00:58:19.039 --> 00:58:22.360
<v Speaker 1>life a little bit better these days. And then I

916
00:58:22.400 --> 00:58:25.440
<v Speaker 1>also just want to shout out about our meetups. Page

917
00:58:25.440 --> 00:58:28.159
<v Speaker 1>has agreed to speak at our next React meetup, and

918
00:58:28.199 --> 00:58:30.679
<v Speaker 1>that's going to be as we record this in a.

919
00:58:30.599 --> 00:58:31.199
<v Speaker 3>Couple of weeks.

920
00:58:31.880 --> 00:58:34.400
<v Speaker 1>I'm not sure about the timing of this coming out,

921
00:58:34.440 --> 00:58:36.480
<v Speaker 1>but I'm planning on doing this for the next several months,

922
00:58:37.440 --> 00:58:40.000
<v Speaker 1>just because even if they start sending people back to

923
00:58:40.039 --> 00:58:43.719
<v Speaker 1>work and you know, we can kind of get back

924
00:58:43.719 --> 00:58:46.559
<v Speaker 1>to normal without getting all the way back to normal.

925
00:58:46.639 --> 00:58:49.280
<v Speaker 1>You know, we're still taking precautions for people's health. I

926
00:58:49.320 --> 00:58:52.559
<v Speaker 1>think conferences and meetups are just going to be in

927
00:58:52.599 --> 00:58:54.639
<v Speaker 1>a weird spot through the end of the year, and

928
00:58:54.719 --> 00:58:57.159
<v Speaker 1>so I'm hoping to run these meetups and give people

929
00:58:57.159 --> 00:58:58.960
<v Speaker 1>a place to go. So you go to devchat, dot tv,

930
00:58:59.000 --> 00:59:02.880
<v Speaker 1>Slash meetup or meetups sorry, and that will list all

931
00:59:02.920 --> 00:59:07.280
<v Speaker 1>of the upcoming meetups. I'm doing it for JavaScript, Angular View, React,

932
00:59:07.320 --> 00:59:10.559
<v Speaker 1>and Ruby at this point. If somebody wants to help

933
00:59:10.599 --> 00:59:11.840
<v Speaker 1>me run some of the other ones for some of

934
00:59:11.840 --> 00:59:14.039
<v Speaker 1>the other shows, I am happy to work on that

935
00:59:14.119 --> 00:59:16.519
<v Speaker 1>as well. I guess I'm going to throw one last

936
00:59:16.519 --> 00:59:18.480
<v Speaker 1>thing out, and that is that I am putting up

937
00:59:18.599 --> 00:59:22.719
<v Speaker 1>as we speak today, the React Native Remote Conference. So

938
00:59:22.800 --> 00:59:24.559
<v Speaker 1>I've had a lot of people asking about that chain

939
00:59:24.639 --> 00:59:27.440
<v Speaker 1>React got canceled, so I just basically stole their dates

940
00:59:27.920 --> 00:59:31.519
<v Speaker 1>at the end of July. So if you're interested in speaking,

941
00:59:31.559 --> 00:59:34.000
<v Speaker 1>we'll have a CFP open and if you want to come,

942
00:59:34.159 --> 00:59:36.440
<v Speaker 1>you can buy a ticket, and yeah, we'll just kind

943
00:59:36.440 --> 00:59:37.880
<v Speaker 1>of move ahead that way.

944
00:59:38.519 --> 00:59:40.199
<v Speaker 3>Majid, what are your picks?

945
00:59:40.440 --> 00:59:44.480
<v Speaker 2>I think I want to pick a book called Deep Work.

946
00:59:44.800 --> 00:59:48.239
<v Speaker 2>You may have heard about it, book called with by

947
00:59:48.760 --> 00:59:53.920
<v Speaker 2>call Newport. So it is an amazing book. I read

948
00:59:53.960 --> 00:59:58.400
<v Speaker 2>it like maybe three years ago when when I was

949
00:59:58.480 --> 01:00:01.400
<v Speaker 2>in a different country action not in Norway, and it

950
01:00:01.679 --> 01:00:05.320
<v Speaker 2>had a big impact in my life. So I still

951
01:00:05.440 --> 01:00:09.480
<v Speaker 2>use those methods and I still follow those rules, and

952
01:00:09.639 --> 01:00:14.320
<v Speaker 2>I think I could done a lot more after reading

953
01:00:14.360 --> 01:00:18.440
<v Speaker 2>this book. So I strongly recommend and recommend reading this book,

954
01:00:18.519 --> 01:00:24.960
<v Speaker 2>especially those parts that he is talking about shallow work

955
01:00:25.159 --> 01:00:28.519
<v Speaker 2>and deep work and what is the difference, And you

956
01:00:28.559 --> 01:00:30.960
<v Speaker 2>will figure out that like most of the time in

957
01:00:31.000 --> 01:00:36.119
<v Speaker 2>the day, even at work, we may actually doing shallow

958
01:00:36.119 --> 01:00:39.519
<v Speaker 2>work and not deep work, and that's why we always

959
01:00:39.559 --> 01:00:43.639
<v Speaker 2>think that why I cannot get these things done? You know,

960
01:00:44.360 --> 01:00:48.920
<v Speaker 2>so strongly recommend that Deep Work by Carl Newport.

961
01:00:49.360 --> 01:00:51.599
<v Speaker 3>Yeah, that's a terrific book, Magid.

962
01:00:51.599 --> 01:00:53.679
<v Speaker 1>If people want to reach out to you or get

963
01:00:53.719 --> 01:00:56.800
<v Speaker 1>in touch, ask you questions, get involved in the conferences

964
01:00:56.840 --> 01:00:59.639
<v Speaker 1>you organize, anything like that, how do they do that?

965
01:01:00.159 --> 01:01:05.840
<v Speaker 2>I am very active on twater with my handler M

966
01:01:05.920 --> 01:01:10.079
<v Speaker 2>fetch A d A, I L Y so, and also

967
01:01:10.119 --> 01:01:12.719
<v Speaker 2>you can find me on LinkedIn, So I think the

968
01:01:12.760 --> 01:01:15.639
<v Speaker 2>best place to reach me out is on Tweter. My

969
01:01:15.880 --> 01:01:18.760
<v Speaker 2>message is open. You can always send me a message.

970
01:01:18.880 --> 01:01:21.920
<v Speaker 2>I read all the messages and I try to answer

971
01:01:22.000 --> 01:01:24.559
<v Speaker 2>all of them. So I get a lot of messages

972
01:01:24.599 --> 01:01:28.280
<v Speaker 2>and emails. But I may be a little bit slow

973
01:01:28.360 --> 01:01:31.840
<v Speaker 2>to respond, but I definitely respond. So reach me out

974
01:01:31.920 --> 01:01:34.239
<v Speaker 2>with this handler on tweater.

975
01:01:34.960 --> 01:01:36.920
<v Speaker 3>All right, very cool. Well let's go ahead and wrap

976
01:01:36.960 --> 01:01:40.239
<v Speaker 3>this up. Thanks for our panel. Thanks again, Majid, Thank

977
01:01:40.280 --> 01:01:42.360
<v Speaker 3>you until next time, Max out everybody,
