WEBVTT

1
00:00:05.320 --> 00:00:09.160
<v Speaker 1>Hey, welcome back to another JavaScript jabber. This week on

2
00:00:09.199 --> 00:00:12.359
<v Speaker 1>our panel, we have aj O'Neill yo.

3
00:00:12.359 --> 00:00:15.199
<v Speaker 2>Yo yo, come at you live from the winter wonderland

4
00:00:15.240 --> 00:00:19.239
<v Speaker 2>of Utah. Well, at least we had our first the

5
00:00:19.320 --> 00:00:22.000
<v Speaker 2>first frost that I noticed. The grass is all frozen.

6
00:00:23.519 --> 00:00:25.839
<v Speaker 3>Yeah. We also have Dan Shapier.

7
00:00:26.760 --> 00:00:29.679
<v Speaker 4>Hello from Tel Aviv where here it's the first day

8
00:00:29.719 --> 00:00:32.640
<v Speaker 4>of fall. We've essentially had the first day of rain.

9
00:00:34.200 --> 00:00:35.600
<v Speaker 4>We're still wearing T shirts though.

10
00:00:36.679 --> 00:00:38.560
<v Speaker 3>I'm Charles Maxwood from Top End Devs.

11
00:00:38.640 --> 00:00:38.880
<v Speaker 2>Yeah.

12
00:00:38.920 --> 00:00:41.000
<v Speaker 1>I had to scrape the car this morning. I didn't

13
00:00:41.000 --> 00:00:44.799
<v Speaker 1>notice frozen grass. I don't live terribly far from aj

14
00:00:45.039 --> 00:00:49.960
<v Speaker 1>so anyway, we have a special guest this week, and

15
00:00:51.439 --> 00:00:53.560
<v Speaker 1>I am going to slaughter your name. I'm sorry, Danny.

16
00:00:53.920 --> 00:00:57.640
<v Speaker 1>We have Danny Moore Kirk. Did I get anywhere in

17
00:00:57.640 --> 00:00:58.600
<v Speaker 1>the ballpark.

18
00:00:58.840 --> 00:01:02.520
<v Speaker 5>Yeah, somewhere around more Cadica. It's a pretty complicated name.

19
00:01:03.000 --> 00:01:07.560
<v Speaker 5>It's Dutch or it's Belgian actually I think, but pretty good.

20
00:01:08.439 --> 00:01:09.719
<v Speaker 3>Yeah, I'm sorry.

21
00:01:09.799 --> 00:01:12.799
<v Speaker 1>I don't speak Dutch or Flemish in very little French,

22
00:01:12.879 --> 00:01:17.519
<v Speaker 1>so I'll pro how it all breaks down. But yeah, welcome.

23
00:01:17.159 --> 00:01:17.640
<v Speaker 3>To the show.

24
00:01:18.400 --> 00:01:23.799
<v Speaker 1>We are you very much discussing down access and browser

25
00:01:23.799 --> 00:01:27.879
<v Speaker 1>APIs and some of the capacity the browser gives you

26
00:01:27.920 --> 00:01:31.400
<v Speaker 1>for PWA's. Before we do that, do you want to

27
00:01:31.480 --> 00:01:34.159
<v Speaker 1>just inform people a little bit more about who you

28
00:01:34.200 --> 00:01:35.079
<v Speaker 1>are what you do.

29
00:01:36.480 --> 00:01:40.359
<v Speaker 5>Yeah, of course. Yeah. First of all, thanks for having me.

30
00:01:40.439 --> 00:01:46.560
<v Speaker 5>I'm Danny Moolkaka. I'm from Amsterdam. I'm a freelance JavaScript

31
00:01:46.920 --> 00:01:52.519
<v Speaker 5>what develop rice should say. Started professionally around two thousand

32
00:01:52.519 --> 00:01:55.879
<v Speaker 5>and seven, two thousand and eight, and I've been also

33
00:01:55.959 --> 00:01:58.719
<v Speaker 5>been messing around with a Tari home computer since I

34
00:01:58.840 --> 00:02:04.239
<v Speaker 5>was a kid. I've done a lot of stuff. Worked

35
00:02:04.239 --> 00:02:06.280
<v Speaker 5>a lot of time for the i G Bank in

36
00:02:06.319 --> 00:02:09.680
<v Speaker 5>Amsterdam where we by on need web components, did a

37
00:02:09.759 --> 00:02:13.400
<v Speaker 5>lot of work on Polymer back then and later with

38
00:02:13.479 --> 00:02:18.439
<v Speaker 5>the lit framework. Currently doing a lot with web components

39
00:02:18.439 --> 00:02:21.719
<v Speaker 5>and progressive web apps, and the creator of what p

40
00:02:21.960 --> 00:02:24.719
<v Speaker 5>w A can Do Today, which you can find that

41
00:02:24.840 --> 00:02:28.680
<v Speaker 5>What pw A can do dot Today. It's basically a

42
00:02:29.240 --> 00:02:33.120
<v Speaker 5>showcase of what is possible with progressive web apps today

43
00:02:33.759 --> 00:02:36.560
<v Speaker 5>and the apps itself a p w A. So what

44
00:02:36.639 --> 00:02:38.159
<v Speaker 5>you can do is you can install it to your

45
00:02:38.199 --> 00:02:42.000
<v Speaker 5>own device and then see for yourself what is possible

46
00:02:42.039 --> 00:02:47.080
<v Speaker 5>on your device and your platform. I also publish a

47
00:02:47.199 --> 00:02:50.240
<v Speaker 5>weekly newsletter called The Modern Web Weekly, where I also

48
00:02:50.319 --> 00:02:54.000
<v Speaker 5>write about web components and progressive web apps in general.

49
00:02:54.560 --> 00:02:56.919
<v Speaker 5>You can also find me on Medium and on X.

50
00:02:58.159 --> 00:03:01.800
<v Speaker 4>So you're the guy who's still using web components, I.

51
00:03:01.800 --> 00:03:06.120
<v Speaker 5>Am the one. Yeah I heard, I'm the only one

52
00:03:06.159 --> 00:03:06.919
<v Speaker 5>who's still doing that.

53
00:03:07.759 --> 00:03:10.000
<v Speaker 4>Well, I don't know, I don't think you're the only one.

54
00:03:10.039 --> 00:03:15.159
<v Speaker 2>To be fair, No Jojo Bite does it too. That's

55
00:03:15.159 --> 00:03:15.759
<v Speaker 2>at least two.

56
00:03:16.719 --> 00:03:19.599
<v Speaker 4>You know, there have been a couple of of you know,

57
00:03:19.680 --> 00:03:24.319
<v Speaker 4>those techno storms, debates, arguments, whatever you choose to call

58
00:03:24.360 --> 00:03:27.879
<v Speaker 4>them on X and a recent, relatively recent one was

59
00:03:27.919 --> 00:03:31.000
<v Speaker 4>about web components. Yet again, I think it started with

60
00:03:31.159 --> 00:03:35.759
<v Speaker 4>a post that our friend Ryan Carneato wrote which was

61
00:03:36.199 --> 00:03:40.840
<v Speaker 4>very I wouldn't say dismissive, but the harsh critique I

62
00:03:40.840 --> 00:03:43.879
<v Speaker 4>think would be a better term of web components. But

63
00:03:44.240 --> 00:03:48.599
<v Speaker 4>and then Rich Harris or another friend of ours, also

64
00:03:48.719 --> 00:03:53.120
<v Speaker 4>joined the discussion, also very critical of web components. So

65
00:03:53.120 --> 00:03:55.719
<v Speaker 4>so yeah, probably need to get Alex Russell on the

66
00:03:55.759 --> 00:03:56.240
<v Speaker 4>show again.

67
00:03:56.879 --> 00:04:01.240
<v Speaker 1>Yeah, YouTube says that there does and dozens of people

68
00:04:01.319 --> 00:04:04.680
<v Speaker 1>using it. The other thing that I'll throw in is

69
00:04:04.680 --> 00:04:10.319
<v Speaker 1>that I've used a few items libraries on my front

70
00:04:10.360 --> 00:04:13.280
<v Speaker 1>end stuff that once I kind of cracked it open

71
00:04:13.280 --> 00:04:15.240
<v Speaker 1>and piked under the hood, it's like, oh, they're using

72
00:04:15.240 --> 00:04:17.079
<v Speaker 1>web components in here, and I just didn't know. So

73
00:04:17.120 --> 00:04:19.000
<v Speaker 1>there are a lot more people probably that just don't

74
00:04:19.040 --> 00:04:21.000
<v Speaker 1>know they're they're using them.

75
00:04:21.920 --> 00:04:23.120
<v Speaker 5>Yeah.

76
00:04:23.279 --> 00:04:25.560
<v Speaker 4>Yeah, but that's the thing, you know, I don't want

77
00:04:25.600 --> 00:04:28.000
<v Speaker 4>to derail us to web components, but that's the thing

78
00:04:28.079 --> 00:04:32.399
<v Speaker 4>the question wasn't. The discussion wasn't so much how prevalent

79
00:04:32.519 --> 00:04:36.319
<v Speaker 4>web components are on the web. Rather it was about

80
00:04:37.720 --> 00:04:41.399
<v Speaker 4>do web developers these days, you know, should they be

81
00:04:41.560 --> 00:04:43.959
<v Speaker 4>using them? Do they like using them? Should they be

82
00:04:44.079 --> 00:04:46.759
<v Speaker 4>using them if they're using some sort of framework such

83
00:04:46.800 --> 00:04:51.199
<v Speaker 4>as React or Spelt or whatever. I think that was

84
00:04:51.240 --> 00:04:52.800
<v Speaker 4>the main Yeah.

85
00:04:52.920 --> 00:04:56.680
<v Speaker 5>Yeah, And there was a lot of criticism of web

86
00:04:56.680 --> 00:04:59.720
<v Speaker 5>components because they don't really integrate quite well with the

87
00:04:59.800 --> 00:05:05.120
<v Speaker 5>ex system framework like Swelter that Rich Harris built and

88
00:05:05.600 --> 00:05:10.600
<v Speaker 5>React in general. There are a lot of pain points

89
00:05:10.600 --> 00:05:15.199
<v Speaker 5>with integrating web components into these frameworks because, yeah, like

90
00:05:15.240 --> 00:05:19.160
<v Speaker 5>the standards are taking different routes, they have different APIs.

91
00:05:19.360 --> 00:05:22.279
<v Speaker 5>So that was basically what the what the discussion was

92
00:05:22.319 --> 00:05:28.240
<v Speaker 5>mostly about. And yeah, I can't understand in one way

93
00:05:28.319 --> 00:05:30.319
<v Speaker 5>that that it's quite hard if you have an existing

94
00:05:30.360 --> 00:05:33.959
<v Speaker 5>framework to integrate these components in there that are taking

95
00:05:35.000 --> 00:05:40.680
<v Speaker 5>different routes. But yeah, I wouldn't say it is impossible.

96
00:05:40.920 --> 00:05:44.279
<v Speaker 5>I personally have work a lot with lit, which is

97
00:05:44.319 --> 00:05:48.199
<v Speaker 5>also compiling down to two raw vanilla web components, and

98
00:05:48.240 --> 00:05:51.240
<v Speaker 5>that actually works quite well.

99
00:05:51.399 --> 00:05:56.600
<v Speaker 4>Yeah, but LID was specifically built, designed and built to

100
00:05:56.680 --> 00:06:00.199
<v Speaker 4>work with web components. I think the majority of the

101
00:06:00.240 --> 00:06:05.160
<v Speaker 4>criticism came, indeed from the fact that other frameworks which

102
00:06:05.279 --> 00:06:09.399
<v Speaker 4>were not specifically designed for web components are having a

103
00:06:09.439 --> 00:06:12.839
<v Speaker 4>hard time integrating with them. I think that that was

104
00:06:12.879 --> 00:06:14.920
<v Speaker 4>the main source of criticism.

105
00:06:15.680 --> 00:06:17.120
<v Speaker 5>Yeah, yeah, that was exactly it.

106
00:06:17.279 --> 00:06:17.439
<v Speaker 3>Yeah.

107
00:06:17.560 --> 00:06:18.839
<v Speaker 5>Yeah.

108
00:06:19.480 --> 00:06:24.120
<v Speaker 4>Also, you know, a while back, micro front ends were

109
00:06:24.160 --> 00:06:28.319
<v Speaker 4>all the rage, and then I completely stopped hearing about them.

110
00:06:28.399 --> 00:06:31.879
<v Speaker 4>Now I assume people are still implementing that pattern, but

111
00:06:32.040 --> 00:06:35.079
<v Speaker 4>for some reason, nobody's really talking about micro frontin's, at

112
00:06:35.160 --> 00:06:36.720
<v Speaker 4>least not in my vicinity.

113
00:06:39.120 --> 00:06:41.959
<v Speaker 5>No, I don't hear too much about that either as well.

114
00:06:45.000 --> 00:06:53.079
<v Speaker 4>Anyway, so p WA's also yet again, I kind of

115
00:06:53.160 --> 00:06:57.199
<v Speaker 4>paraphrase about p was that p WA's are the future,

116
00:06:57.839 --> 00:07:03.879
<v Speaker 4>always have been, always will be and no, but I

117
00:07:03.920 --> 00:07:06.720
<v Speaker 4>mean it's kind of a kind of criticism because it

118
00:07:06.839 --> 00:07:09.959
<v Speaker 4>means that p w as might never arrive, because if

119
00:07:09.959 --> 00:07:19.079
<v Speaker 4>they're always the future, It's it's the basic question is

120
00:07:19.480 --> 00:07:24.920
<v Speaker 4>can p WAS survive Apple's attitude towards them. That's that

121
00:07:25.319 --> 00:07:26.319
<v Speaker 4>the crux of the thing.

122
00:07:26.399 --> 00:07:30.319
<v Speaker 5>Really, Yeah, I think that's that's the million dollar question

123
00:07:30.879 --> 00:07:33.839
<v Speaker 5>right now. Yeah, it's it's it's like Apple is still

124
00:07:34.199 --> 00:07:39.120
<v Speaker 5>actively frustrating the development of p w as or basically

125
00:07:39.160 --> 00:07:41.920
<v Speaker 5>there's a lot of browser APIs that they still don't do,

126
00:07:42.000 --> 00:07:46.399
<v Speaker 5>not support on iOS. At least here in the EU,

127
00:07:46.720 --> 00:07:50.079
<v Speaker 5>things are changing a little bit with the digital market acts.

128
00:07:50.199 --> 00:07:53.800
<v Speaker 5>There's at least some movement in the direction that Apple

129
00:07:53.839 --> 00:07:57.519
<v Speaker 5>will be forced to change their ways, but that might

130
00:07:57.560 --> 00:08:00.279
<v Speaker 5>take some quite some time before that happened, if if

131
00:08:00.319 --> 00:08:03.560
<v Speaker 5>it will ever happen. I do think in the end

132
00:08:03.600 --> 00:08:06.360
<v Speaker 5>it will, but it might take quite some time, just

133
00:08:06.399 --> 00:08:09.920
<v Speaker 5>like with Microsoft in the nineties. But yeah, that is

134
00:08:10.000 --> 00:08:14.639
<v Speaker 5>still a big issue, the lack of parity between between

135
00:08:14.639 --> 00:08:18.920
<v Speaker 5>the Android platform and the iOS platform. But that is

136
00:08:18.959 --> 00:08:21.360
<v Speaker 5>still something that will need to change in order for

137
00:08:21.759 --> 00:08:26.519
<v Speaker 5>PWAs to really be the future. Yeah, although I think

138
00:08:26.519 --> 00:08:28.439
<v Speaker 5>it's not the only ones. I think we should also,

139
00:08:28.600 --> 00:08:32.440
<v Speaker 5>you know, hold up a mirror to ourselves as developers.

140
00:08:32.480 --> 00:08:36.039
<v Speaker 5>This is also something that I write frequently about, is

141
00:08:36.080 --> 00:08:40.080
<v Speaker 5>that we should also build better web apps because right now,

142
00:08:40.120 --> 00:08:44.159
<v Speaker 5>if you look, there's so many web apps that their

143
00:08:44.200 --> 00:08:48.519
<v Speaker 5>only job is to promote the native version of themselves.

144
00:08:48.919 --> 00:08:51.879
<v Speaker 5>For example, if you go to LinkedIn nowadays, the first

145
00:08:51.919 --> 00:08:54.240
<v Speaker 5>thing you see is like this big app banner that says,

146
00:08:54.360 --> 00:08:56.919
<v Speaker 5>go to our native app, don't use our web app,

147
00:08:57.320 --> 00:09:01.320
<v Speaker 5>go to our native app, and then the web app

148
00:09:01.360 --> 00:09:04.720
<v Speaker 5>is just basically a dumped down version of the native app,

149
00:09:04.759 --> 00:09:09.039
<v Speaker 5>which is really unnecessary because a lot of stuff that

150
00:09:09.080 --> 00:09:11.759
<v Speaker 5>these native apps can do, web aps can do just

151
00:09:11.799 --> 00:09:15.120
<v Speaker 5>as well, even worse. A lot of times, when you

152
00:09:15.200 --> 00:09:18.559
<v Speaker 5>go to a native version of some app, it doesn't

153
00:09:18.600 --> 00:09:22.759
<v Speaker 5>offer you anything extra that the web app cannot do.

154
00:09:23.320 --> 00:09:25.720
<v Speaker 5>So I think we as web developers should also start

155
00:09:25.919 --> 00:09:30.159
<v Speaker 5>just spitting out web aps that are only there to

156
00:09:30.279 --> 00:09:34.720
<v Speaker 5>promote native apps and really start using these browser APIs

157
00:09:34.759 --> 00:09:36.720
<v Speaker 5>that we have at our disposal nowadays.

158
00:09:37.159 --> 00:09:40.039
<v Speaker 4>To be fair, I don't think it's a developers. I

159
00:09:40.080 --> 00:09:43.559
<v Speaker 4>think it's the marketing department. The way that I like

160
00:09:43.639 --> 00:09:47.759
<v Speaker 4>to put it is that when you're a web application,

161
00:09:48.159 --> 00:09:50.480
<v Speaker 4>then on a mobile device, you're like a guest in

162
00:09:50.480 --> 00:09:54.559
<v Speaker 4>a hotel. On the other hand, when you're a native application,

163
00:09:54.720 --> 00:09:59.200
<v Speaker 4>it's like somebody renting the apartment. It's like a much

164
00:09:59.279 --> 00:10:05.559
<v Speaker 4>more last in permanent relationship. The whole process of going

165
00:10:05.639 --> 00:10:09.840
<v Speaker 4>to the store, downloading the app, installing it, getting an

166
00:10:10.080 --> 00:10:16.200
<v Speaker 4>icon on the desktop. That's a much more permanent relationship.

167
00:10:16.240 --> 00:10:20.320
<v Speaker 4>And that's what the marketing people want, uh. And they

168
00:10:20.360 --> 00:10:25.120
<v Speaker 4>want to be able to push notifications, which you know,

169
00:10:25.320 --> 00:10:28.200
<v Speaker 4>I'm not sure can you now do this on iOS

170
00:10:28.320 --> 00:10:29.240
<v Speaker 4>or not? For a long time?

171
00:10:29.279 --> 00:10:31.120
<v Speaker 5>You can for a long time you putdn't.

172
00:10:31.840 --> 00:10:38.240
<v Speaker 4>I really hope that that changes the conversation. If if

173
00:10:38.279 --> 00:10:43.799
<v Speaker 4>iOS can do that, then then maybe. But but that's

174
00:10:43.840 --> 00:10:44.440
<v Speaker 4>that's the thing.

175
00:10:44.519 --> 00:10:44.720
<v Speaker 3>Now.

176
00:10:44.840 --> 00:10:49.919
<v Speaker 4>What they're what they're ignoring is the fact that people

177
00:10:49.960 --> 00:10:53.840
<v Speaker 4>don't like installing apps. So you might prefer that people

178
00:10:53.879 --> 00:10:56.559
<v Speaker 4>install your app, but the likelihood that they're in that

179
00:10:56.600 --> 00:11:00.039
<v Speaker 4>they're install your app is actually very low. So you

180
00:11:00.039 --> 00:11:03.679
<v Speaker 4>should try to make the most of your shorter term

181
00:11:03.840 --> 00:11:07.080
<v Speaker 4>web based engagement that you have with them and make

182
00:11:07.120 --> 00:11:10.000
<v Speaker 4>them repeat visitors. And if what you built as a

183
00:11:10.000 --> 00:11:13.399
<v Speaker 4>web app is a PWA and the browser notices that

184
00:11:13.440 --> 00:11:16.519
<v Speaker 4>you visit again and again, it would actually offer you

185
00:11:16.600 --> 00:11:19.559
<v Speaker 4>to install an icon on your desktop, and like you said,

186
00:11:19.559 --> 00:11:23.159
<v Speaker 4>you can now start sending push notifications. So it's actually

187
00:11:23.639 --> 00:11:26.919
<v Speaker 4>a better way of getting onto the device. But I

188
00:11:26.960 --> 00:11:29.879
<v Speaker 4>think that a lot of marketing managers just are not

189
00:11:30.039 --> 00:11:31.919
<v Speaker 4>aware of this now.

190
00:11:31.960 --> 00:11:33.919
<v Speaker 5>They are not, they are not. And I also see

191
00:11:33.960 --> 00:11:36.919
<v Speaker 5>some role for developers in there to educate these these

192
00:11:37.279 --> 00:11:41.000
<v Speaker 5>these marketing managers that these things are now available on

193
00:11:41.039 --> 00:11:43.320
<v Speaker 5>the web. I mean, I can understand if you're not

194
00:11:43.399 --> 00:11:46.720
<v Speaker 5>gonna that you're not gonna move all your stuff from

195
00:11:46.799 --> 00:11:50.519
<v Speaker 5>native apps right now to web apps because you still

196
00:11:50.519 --> 00:11:53.759
<v Speaker 5>have a lot of lack of support on iOS. But

197
00:11:53.840 --> 00:11:57.159
<v Speaker 5>for example, if I look now at the the the

198
00:11:57.240 --> 00:12:02.559
<v Speaker 5>PWAs that action Instagram have, you have perfectly fine functioning

199
00:12:02.639 --> 00:12:06.279
<v Speaker 5>p w as until you turn off the network. When

200
00:12:06.320 --> 00:12:09.720
<v Speaker 5>you try to make them work offline, it doesn't work anymore.

201
00:12:09.759 --> 00:12:11.559
<v Speaker 5>You refresh the page, you get nothing. If you go

202
00:12:11.639 --> 00:12:14.600
<v Speaker 5>to t X on the native app, it will just

203
00:12:15.320 --> 00:12:18.000
<v Speaker 5>keep giving you your feet. Of course you won't have

204
00:12:18.080 --> 00:12:20.440
<v Speaker 5>any new stuff, but you can still still use it

205
00:12:21.600 --> 00:12:24.399
<v Speaker 5>on X. That's not the case because if you turn

206
00:12:24.480 --> 00:12:29.080
<v Speaker 5>down the network or you you disconnect the network and

207
00:12:29.120 --> 00:12:31.120
<v Speaker 5>you try to start up the app, it will not

208
00:12:31.240 --> 00:12:34.480
<v Speaker 5>give you anything. There's nothing, So at least that's something

209
00:12:34.519 --> 00:12:37.759
<v Speaker 5>that we yeah, that should be improved and that we

210
00:12:37.799 --> 00:12:38.840
<v Speaker 5>can use right now.

211
00:12:39.879 --> 00:12:43.559
<v Speaker 4>Yeah, Cache APIs and various storage APIs have been around

212
00:12:43.600 --> 00:12:45.360
<v Speaker 4>for a long time on all platforms.

213
00:12:45.559 --> 00:12:46.000
<v Speaker 5>Yeah. Yeah.

214
00:12:46.279 --> 00:12:50.600
<v Speaker 1>And also want to point out is that the mobile

215
00:12:50.639 --> 00:12:53.519
<v Speaker 1>platforms have an incentive to make you go through the

216
00:12:53.600 --> 00:12:54.440
<v Speaker 1>App store as well.

217
00:12:55.519 --> 00:12:57.799
<v Speaker 5>Oh absolutely, absolutely, Yeah.

218
00:12:57.919 --> 00:13:00.480
<v Speaker 1>So that's just another reason why they may or may

219
00:13:00.480 --> 00:13:04.039
<v Speaker 1>not be jazzed I guess about, you know, giving you

220
00:13:04.080 --> 00:13:05.279
<v Speaker 1>the kind of support you want from heal.

221
00:13:05.519 --> 00:13:05.720
<v Speaker 3>Yeah.

222
00:13:05.799 --> 00:13:09.240
<v Speaker 4>We spoke about this on several I think on on

223
00:13:08.679 --> 00:13:12.759
<v Speaker 4>on an episode with Bruce Lawson that we had him

224
00:13:12.919 --> 00:13:17.960
<v Speaker 4>as a guest to talk about how mobile platforms and

225
00:13:18.039 --> 00:13:22.440
<v Speaker 4>iOS in particular Apple and iOS in particular try to

226
00:13:23.279 --> 00:13:25.600
<v Speaker 4>you know, kind of stammy the whole concept of p

227
00:13:25.799 --> 00:13:29.279
<v Speaker 4>w as just in order to preserve their their store

228
00:13:29.320 --> 00:13:32.440
<v Speaker 4>based revenue stream. It's like what it's like a thirty

229
00:13:32.960 --> 00:13:36.440
<v Speaker 4>cut on every app based or somethings like that. That's

230
00:13:36.480 --> 00:13:39.440
<v Speaker 4>that's insane, you know, why billions of dollars? Why would

231
00:13:39.480 --> 00:13:41.120
<v Speaker 4>they give it up if as long as they have

232
00:13:41.159 --> 00:13:41.720
<v Speaker 4>a choice.

233
00:13:42.360 --> 00:13:45.080
<v Speaker 5>Yeah, yeah, I think that's that's the main intentive for them.

234
00:13:45.120 --> 00:13:47.240
<v Speaker 5>It's just the revenue streams that they get from the

235
00:13:47.399 --> 00:13:50.600
<v Speaker 5>from the app stores and the control that they that

236
00:13:50.679 --> 00:13:53.000
<v Speaker 5>they have. I understand that they're not going to give

237
00:13:53.039 --> 00:13:57.360
<v Speaker 5>it up like that. Yeah, let's hope maybe Apple and

238
00:13:57.639 --> 00:14:00.200
<v Speaker 5>Google will find a new business model there with with

239
00:14:00.279 --> 00:14:03.200
<v Speaker 5>web apps. Maybe that will finally give them the incentive

240
00:14:03.320 --> 00:14:08.240
<v Speaker 5>to to move toward webaps or Yeah, otherwise, I think

241
00:14:08.279 --> 00:14:11.399
<v Speaker 5>it's the only legislation that will force them in the end.

242
00:14:12.080 --> 00:14:13.159
<v Speaker 5>I think that's the way.

243
00:14:13.240 --> 00:14:16.200
<v Speaker 4>It's maybe, though, it's worthwhile to backtrack a little bit

244
00:14:16.279 --> 00:14:19.679
<v Speaker 4>and kind of explain the difference between a p w

245
00:14:19.960 --> 00:14:22.759
<v Speaker 4>A and a regular old web app, Like what's the

246
00:14:22.879 --> 00:14:25.879
<v Speaker 4>what makes so what transforms a web app into a

247
00:14:25.879 --> 00:14:26.519
<v Speaker 4>p w A.

248
00:14:28.679 --> 00:14:31.639
<v Speaker 5>Basically, there are two things that that are like the

249
00:14:31.679 --> 00:14:34.360
<v Speaker 5>pillars of a p w A, which is the manifest

250
00:14:34.360 --> 00:14:38.039
<v Speaker 5>dot Jason file, which is just a metadata file that

251
00:14:38.120 --> 00:14:41.399
<v Speaker 5>describes the items that that will be added to your

252
00:14:41.399 --> 00:14:45.639
<v Speaker 5>home screen whenever you install the the app. You can

253
00:14:45.679 --> 00:14:47.840
<v Speaker 5>also define other stuff in there. You can define the

254
00:14:47.919 --> 00:14:53.080
<v Speaker 5>name in there, you can define the background color. In

255
00:14:53.360 --> 00:14:56.039
<v Speaker 5>Chromium browsers, we also now have what they call the

256
00:14:56.200 --> 00:15:00.679
<v Speaker 5>Enhanced Install UI. So what that means is whenever you

257
00:15:00.720 --> 00:15:03.200
<v Speaker 5>go to a Chrome browser, like atro Chromium or Opera

258
00:15:04.159 --> 00:15:07.720
<v Speaker 5>on the right in the address bar. When the app

259
00:15:07.759 --> 00:15:10.440
<v Speaker 5>can be installed, when it has a manifest dot jason file,

260
00:15:10.519 --> 00:15:13.759
<v Speaker 5>there's icons in there. You can click it and then

261
00:15:13.759 --> 00:15:17.240
<v Speaker 5>you can install it to your device. You can also

262
00:15:17.440 --> 00:15:21.559
<v Speaker 5>put some screenshots in there nowadays for Chromium browsers, So

263
00:15:21.879 --> 00:15:25.720
<v Speaker 5>whenever you click that button to install the app, you

264
00:15:25.879 --> 00:15:30.840
<v Speaker 5>get a screen that is more like installing the UI

265
00:15:30.919 --> 00:15:32.879
<v Speaker 5>that you get when you install a native app. So

266
00:15:33.000 --> 00:15:35.279
<v Speaker 5>you can see a nice name there, you can see

267
00:15:35.320 --> 00:15:38.200
<v Speaker 5>a description there, and you can see some screenshots that

268
00:15:38.279 --> 00:15:42.399
<v Speaker 5>are different for desktop and mobile. Those are also the

269
00:15:42.440 --> 00:15:46.759
<v Speaker 5>things that you can define there. You can define short

270
00:15:46.799 --> 00:15:50.720
<v Speaker 5>cuts also in the manifesto jason file, which is for example,

271
00:15:50.759 --> 00:15:54.080
<v Speaker 5>on an Android device, if you push and hold the icon,

272
00:15:54.240 --> 00:15:57.759
<v Speaker 5>then like a shortcut menu will pop up and then

273
00:15:57.799 --> 00:16:01.600
<v Speaker 5>you can go straight to some pages in your PWA.

274
00:16:02.639 --> 00:16:05.200
<v Speaker 5>Those are some of the things that you can define

275
00:16:05.200 --> 00:16:08.519
<v Speaker 5>in the manifest adjacent file. And then the other thing

276
00:16:08.600 --> 00:16:11.759
<v Speaker 5>is the service worker, which is a special kind of

277
00:16:11.840 --> 00:16:16.159
<v Speaker 5>web worker that sits, as it were, between the network

278
00:16:16.240 --> 00:16:18.519
<v Speaker 5>and your app. So what it can do. It can

279
00:16:18.600 --> 00:16:22.879
<v Speaker 5>intercept the network requests and it can also cash, so

280
00:16:23.000 --> 00:16:26.679
<v Speaker 5>it can cash assets like style sheet, scripts, images, you

281
00:16:26.759 --> 00:16:31.600
<v Speaker 5>name it. It can also cash whole pages or whenever

282
00:16:31.720 --> 00:16:34.759
<v Speaker 5>you install the web app, you can just give it

283
00:16:34.879 --> 00:16:40.240
<v Speaker 5>a list of routes and URLs that it will then

284
00:16:40.279 --> 00:16:43.960
<v Speaker 5>all visit and then it will cash the resulting HTML

285
00:16:44.279 --> 00:16:46.639
<v Speaker 5>or the image or the script or the style sheet

286
00:16:46.759 --> 00:16:50.799
<v Speaker 5>or whatever. Then you can define a fetch handler in

287
00:16:50.799 --> 00:16:55.080
<v Speaker 5>the air that can just decide whenever you go to

288
00:16:55.159 --> 00:16:57.519
<v Speaker 5>the network what it should do. So, for example, you

289
00:16:57.519 --> 00:17:01.559
<v Speaker 5>can have it serve everything from the cash and then

290
00:17:01.639 --> 00:17:04.400
<v Speaker 5>it can after that you can do an additional request,

291
00:17:04.440 --> 00:17:08.680
<v Speaker 5>for example, to get any stuff that is new, or

292
00:17:08.720 --> 00:17:11.920
<v Speaker 5>what you can do is, for example, you can let

293
00:17:11.960 --> 00:17:14.759
<v Speaker 5>it always go to the network, and whenever that fails,

294
00:17:14.880 --> 00:17:19.400
<v Speaker 5>it can serve content from the cash. The service worker

295
00:17:19.440 --> 00:17:23.559
<v Speaker 5>also takes care of push notifications. So whenever, even when

296
00:17:23.559 --> 00:17:26.000
<v Speaker 5>your device is or when your app is not running,

297
00:17:27.799 --> 00:17:32.160
<v Speaker 5>whenever a push notification arrives, the operating system will wake

298
00:17:32.240 --> 00:17:35.160
<v Speaker 5>up the service worker, and then the service worker will

299
00:17:35.200 --> 00:17:38.519
<v Speaker 5>take care of receiving the push notification and then showing

300
00:17:38.920 --> 00:17:44.519
<v Speaker 5>a notification on your screen. And yeah, other stuff like

301
00:17:44.799 --> 00:17:48.319
<v Speaker 5>background sync is also something that is doing. So for example,

302
00:17:48.400 --> 00:17:52.119
<v Speaker 5>if you have a form on your web app and

303
00:17:52.279 --> 00:17:54.720
<v Speaker 5>the network is gone and you want to send the form.

304
00:17:54.839 --> 00:17:58.720
<v Speaker 5>What it can do is that the service worker can

305
00:17:58.759 --> 00:18:03.359
<v Speaker 5>intercept that request that post requests from the form. It

306
00:18:03.359 --> 00:18:07.000
<v Speaker 5>can storage somewhere maybe in index TV, and then whenever

307
00:18:07.079 --> 00:18:10.160
<v Speaker 5>the network comes back, there will be a sync event

308
00:18:10.279 --> 00:18:13.240
<v Speaker 5>will be fired, and then the service worker can send

309
00:18:13.240 --> 00:18:16.319
<v Speaker 5>that request. For example, I also use that for Google

310
00:18:16.359 --> 00:18:19.680
<v Speaker 5>Analytics or even when people are offline, I can get

311
00:18:19.720 --> 00:18:24.319
<v Speaker 5>that analytics data there as well. And it can also

312
00:18:24.400 --> 00:18:29.400
<v Speaker 5>do background fetch, which is very interesting for podcast apps

313
00:18:29.400 --> 00:18:34.160
<v Speaker 5>for example. So normally in a webpap, when you download, yeah,

314
00:18:34.240 --> 00:18:37.279
<v Speaker 5>when you download stuff in a web app and you

315
00:18:37.319 --> 00:18:40.640
<v Speaker 5>close the webpap, then your download is gone. But now

316
00:18:40.680 --> 00:18:44.839
<v Speaker 5>with background fetch, that download can continue in the background.

317
00:18:44.880 --> 00:18:47.519
<v Speaker 5>So you can just switch off your web app, the

318
00:18:47.599 --> 00:18:51.359
<v Speaker 5>download will continue and then whenever you activate it again,

319
00:18:51.480 --> 00:18:54.759
<v Speaker 5>the download will be will be ready for you. So

320
00:18:54.839 --> 00:18:58.400
<v Speaker 5>those are the two main things. The service worker that

321
00:18:58.480 --> 00:19:01.440
<v Speaker 5>takes care of all the network stuff, that intercepts network

322
00:19:01.839 --> 00:19:05.039
<v Speaker 5>requests and cash your stuff for you. And the manifest

323
00:19:05.079 --> 00:19:07.880
<v Speaker 5>ob Jason file, which is the metadata file that describes

324
00:19:07.920 --> 00:19:12.079
<v Speaker 5>the icons, the callers, uh, the name and stuff like that.

325
00:19:12.880 --> 00:19:15.480
<v Speaker 1>Okay, I want to jump in here, because you you

326
00:19:15.599 --> 00:19:17.519
<v Speaker 1>kind of pushed a couple of my buttons and I

327
00:19:17.799 --> 00:19:20.799
<v Speaker 1>don't I don't know if you knew this, but you did.

328
00:19:21.119 --> 00:19:23.480
<v Speaker 1>So I have a couple of things that I'm kind

329
00:19:23.480 --> 00:19:26.799
<v Speaker 1>of looking at, and this is specifically with the caching.

330
00:19:26.440 --> 00:19:31.240
<v Speaker 3>And the offline download. I can't remember what you call it, but.

331
00:19:32.680 --> 00:19:37.559
<v Speaker 1>So I've been wanting to, yeah, to give people better

332
00:19:37.640 --> 00:19:40.920
<v Speaker 1>options for listening to podcasts, and I kept thinking, man,

333
00:19:41.000 --> 00:19:41.680
<v Speaker 1>it should be nice.

334
00:19:41.720 --> 00:19:44.880
<v Speaker 3>It was just a p w A. And then we've

335
00:19:44.920 --> 00:19:46.920
<v Speaker 3>we've discussed this on other stuff.

336
00:19:46.960 --> 00:19:49.839
<v Speaker 1>But the technology that I typically use on the back

337
00:19:49.920 --> 00:19:52.240
<v Speaker 1>end is Ruby on Rails and they've got this nice

338
00:19:52.279 --> 00:19:55.200
<v Speaker 1>Turbo Native which you can wrap around.

339
00:19:54.920 --> 00:19:58.240
<v Speaker 3>A p w A and it it does pw A things.

340
00:19:58.839 --> 00:20:00.759
<v Speaker 1>But even if I just wanted to do in the browser,

341
00:20:00.799 --> 00:20:04.880
<v Speaker 1>there for me to have it download new episodes in

342
00:20:04.920 --> 00:20:09.480
<v Speaker 1>the background and have them ready to go, so that

343
00:20:09.519 --> 00:20:12.359
<v Speaker 1>if I'm offline and I'm going through the airport or whatever,

344
00:20:12.880 --> 00:20:16.720
<v Speaker 1>I can still listen to those episodes on my device

345
00:20:17.240 --> 00:20:20.920
<v Speaker 1>in airplane mode without internet and be good to go.

346
00:20:21.920 --> 00:20:23.880
<v Speaker 5>Yep, exactly.

347
00:20:23.920 --> 00:20:27.680
<v Speaker 1>And similar to that, because I'm starting to put together

348
00:20:27.759 --> 00:20:33.119
<v Speaker 1>training videos and you know, I'm getting into AI and

349
00:20:33.160 --> 00:20:36.119
<v Speaker 1>starting to offer those videos. But I'm also looking at

350
00:20:37.000 --> 00:20:41.039
<v Speaker 1>I want to do kind of comprehensive like if you

351
00:20:41.079 --> 00:20:43.799
<v Speaker 1>want a video that walks you through an API, like

352
00:20:43.839 --> 00:20:47.680
<v Speaker 1>a web API or a you know, browser API, or

353
00:20:48.039 --> 00:20:50.039
<v Speaker 1>you know whatever. You know, maybe I pick up something

354
00:20:50.079 --> 00:20:55.279
<v Speaker 1>that's commonly used out there, like I don't know, you know,

355
00:20:55.400 --> 00:20:56.680
<v Speaker 1>but it walks through.

356
00:20:56.799 --> 00:20:58.079
<v Speaker 3>Hey, these are all the APIs.

357
00:20:58.119 --> 00:21:01.599
<v Speaker 1>Similarly, if somebody's interested, they can say I want to

358
00:21:01.599 --> 00:21:03.559
<v Speaker 1>be able to watch these ones offline, and then they

359
00:21:03.559 --> 00:21:05.119
<v Speaker 1>can go and it can have those ready to go.

360
00:21:05.160 --> 00:21:08.319
<v Speaker 1>And again they can just browse to the website on

361
00:21:08.359 --> 00:21:11.640
<v Speaker 1>their browser and it'll just play them even though they're

362
00:21:11.680 --> 00:21:14.680
<v Speaker 1>not connected to the Internet because it actively pulled it

363
00:21:14.680 --> 00:21:15.319
<v Speaker 1>in when they were.

364
00:21:16.200 --> 00:21:20.960
<v Speaker 5>Yeah. Yeah, that's exactly what you can do. So basically

365
00:21:21.039 --> 00:21:25.119
<v Speaker 5>what it does is the service worker takes care of that.

366
00:21:25.119 --> 00:21:27.720
<v Speaker 5>There's a couple of events there, like I don't know

367
00:21:27.759 --> 00:21:31.119
<v Speaker 5>the exact name, it's background seeing start or something whatever,

368
00:21:31.799 --> 00:21:36.000
<v Speaker 5>and it will download the things in the background. If

369
00:21:36.000 --> 00:21:38.079
<v Speaker 5>you go to what PWA can do today, there's also

370
00:21:38.119 --> 00:21:41.079
<v Speaker 5>a demo there that just downloads a lot of stuff.

371
00:21:41.359 --> 00:21:44.759
<v Speaker 5>I think it's from Jake Archibald from some of his podcasts.

372
00:21:45.400 --> 00:21:47.880
<v Speaker 5>I just did that to make it really take a

373
00:21:47.960 --> 00:21:51.119
<v Speaker 5>long time. So in the meantime you can play with it.

374
00:21:51.480 --> 00:21:53.640
<v Speaker 5>For example, if you have an Android device, it doesn't

375
00:21:53.640 --> 00:21:56.880
<v Speaker 5>work on iOS yet, although it should be coming because

376
00:21:56.880 --> 00:22:01.359
<v Speaker 5>it's already in Safari Tech Preview in the the future

377
00:22:01.359 --> 00:22:03.559
<v Speaker 5>flags you can enable it. It's it's it's there, but

378
00:22:03.640 --> 00:22:06.839
<v Speaker 5>it's not functionally yet, so it should be coming to

379
00:22:07.000 --> 00:22:10.680
<v Speaker 5>iOS as well in the near future. Then you can

380
00:22:10.720 --> 00:22:15.599
<v Speaker 5>see in the Messaging center or whatever it's called in Android,

381
00:22:15.640 --> 00:22:19.480
<v Speaker 5>you can just see the download continuing and you can

382
00:22:19.519 --> 00:22:22.680
<v Speaker 5>pause it. You can you know, go to flight Molde

383
00:22:22.720 --> 00:22:28.440
<v Speaker 5>and then it will stop. And even if you go

384
00:22:28.559 --> 00:22:30.599
<v Speaker 5>if it's if it's running in the background and you

385
00:22:30.680 --> 00:22:32.680
<v Speaker 5>go back to the app, you can see that after

386
00:22:32.680 --> 00:22:35.839
<v Speaker 5>a few seconds, the progress will pick up, so it

387
00:22:35.880 --> 00:22:39.440
<v Speaker 5>will just continue. If it's still downloading, you can see

388
00:22:39.440 --> 00:22:44.559
<v Speaker 5>the progress also, yeah, progressing. And basically what it does

389
00:22:44.640 --> 00:22:48.319
<v Speaker 5>is whenever that that download is finished, it will be

390
00:22:48.319 --> 00:22:51.279
<v Speaker 5>presented to the web app as a response, and then

391
00:22:51.279 --> 00:22:53.839
<v Speaker 5>that response can be put in the browser cache.

392
00:22:54.400 --> 00:22:54.960
<v Speaker 3>So that is.

393
00:22:55.000 --> 00:22:57.799
<v Speaker 5>Basically how that that that works. It's a very simple

394
00:22:57.839 --> 00:23:01.759
<v Speaker 5>system and yeah, that that really enables exactly what you're

395
00:23:01.799 --> 00:23:04.599
<v Speaker 5>looking for, so you can download whatever you want in

396
00:23:05.160 --> 00:23:10.200
<v Speaker 5>the background while the web pap is not running.

397
00:23:10.319 --> 00:23:15.400
<v Speaker 1>Yeah, all the audio only people, I'm making all kinds

398
00:23:15.400 --> 00:23:17.720
<v Speaker 1>of happy gestures and movements and smiles.

399
00:23:18.720 --> 00:23:19.960
<v Speaker 3>I'm super excited about this.

400
00:23:20.079 --> 00:23:24.079
<v Speaker 2>So and by the way, I'm I'm clicking around on

401
00:23:24.119 --> 00:23:26.319
<v Speaker 2>the site right now, just kind of testing things out,

402
00:23:26.359 --> 00:23:28.920
<v Speaker 2>and I'm actually kind of surprised at some of the

403
00:23:28.920 --> 00:23:31.640
<v Speaker 2>stuff that's supported. I'll have to try it in Firefox

404
00:23:31.720 --> 00:23:34.119
<v Speaker 2>and Mobile Safari to see if this is real. Is

405
00:23:34.160 --> 00:23:37.200
<v Speaker 2>this all evergreen stuff, is this baseline stuff or is

406
00:23:37.759 --> 00:23:40.240
<v Speaker 2>some of this still not everything?

407
00:23:40.279 --> 00:23:45.200
<v Speaker 5>If you look at the for example, there's a one

408
00:23:45.240 --> 00:23:50.039
<v Speaker 5>with the screen capturing, which is quite experimental. These are

409
00:23:50.079 --> 00:23:53.440
<v Speaker 5>a couple of the what they call origin trials and chromium,

410
00:23:53.480 --> 00:23:57.839
<v Speaker 5>so that's chromium only. That's the screen capturing and the

411
00:23:58.000 --> 00:24:01.640
<v Speaker 5>element capture, which enables you, for example, to do a

412
00:24:01.680 --> 00:24:06.960
<v Speaker 5>screen recording of a short and dumb element. Yeah, and

413
00:24:06.960 --> 00:24:10.640
<v Speaker 5>then there's also the stuff that that Apple just blatantly

414
00:24:10.680 --> 00:24:13.839
<v Speaker 5>refuses to implement, like Bluetooth and NFG stuff like that.

415
00:24:14.160 --> 00:24:18.039
<v Speaker 5>I don't know if that will ever come Okay, Well, yeah.

416
00:24:18.160 --> 00:24:21.160
<v Speaker 2>I was I was really impressed that I typed it

417
00:24:21.200 --> 00:24:23.480
<v Speaker 2>in and I hit enter, and I could tell instantly

418
00:24:23.519 --> 00:24:25.759
<v Speaker 2>you were used you were not using React because the

419
00:24:25.799 --> 00:24:28.720
<v Speaker 2>page loaded when I hit enter, So that was that

420
00:24:28.880 --> 00:24:33.079
<v Speaker 2>was That was great. And then and then I can

421
00:24:33.119 --> 00:24:35.720
<v Speaker 2>also tell you weren't using React because when I click

422
00:24:35.799 --> 00:24:38.160
<v Speaker 2>on a button, the U r L changes. When I

423
00:24:38.200 --> 00:24:41.480
<v Speaker 2>click back, the back button works. So I'm pretty stoked

424
00:24:41.519 --> 00:24:41.759
<v Speaker 2>on this.

425
00:24:42.519 --> 00:24:42.720
<v Speaker 4>Good.

426
00:24:42.839 --> 00:24:47.079
<v Speaker 5>Yeah, I'm currently using a a what do you call

427
00:24:47.119 --> 00:24:49.960
<v Speaker 5>it a skeleton, so it just uses or just loads

428
00:24:50.000 --> 00:24:54.279
<v Speaker 5>to HTML quite quite quickly. It's still a single page app,

429
00:24:54.279 --> 00:24:56.720
<v Speaker 5>but I really want to move it to a multipage

430
00:24:56.759 --> 00:25:01.480
<v Speaker 5>app as soon as the the cross cross document view

431
00:25:01.519 --> 00:25:05.839
<v Speaker 5>transitions are already they're already working also in Safari Tech

432
00:25:06.119 --> 00:25:10.240
<v Speaker 5>preview right now. Basically the only reason it's a single

433
00:25:10.240 --> 00:25:12.240
<v Speaker 5>page app right now is because I wanted to have

434
00:25:12.279 --> 00:25:16.400
<v Speaker 5>those sliding transitions on mobile, and the only way to

435
00:25:16.440 --> 00:25:19.680
<v Speaker 5>do that when I started building this was to do

436
00:25:19.720 --> 00:25:22.279
<v Speaker 5>it as a single page app and have both pages

437
00:25:22.319 --> 00:25:24.599
<v Speaker 5>in the DOM and then do some animations.

438
00:25:24.880 --> 00:25:29.559
<v Speaker 2>But now with the this is beautiful, I think thanks.

439
00:25:29.720 --> 00:25:33.880
<v Speaker 2>I wish that there was something basically some boilerplate, like

440
00:25:33.920 --> 00:25:36.960
<v Speaker 2>some copy paste boilerplate that somebody uses this as a

441
00:25:37.000 --> 00:25:40.359
<v Speaker 2>template for how to start their web out because I mean,

442
00:25:41.400 --> 00:25:45.240
<v Speaker 2>just no website works anymore. And this works like everything

443
00:25:45.279 --> 00:25:48.319
<v Speaker 2>that I click, it responds instantly. There's an animation or

444
00:25:48.359 --> 00:25:50.279
<v Speaker 2>a transition to let me know that my click was

445
00:25:50.319 --> 00:25:52.400
<v Speaker 2>responded to. I mean, this is like using the web

446
00:25:52.440 --> 00:25:55.960
<v Speaker 2>in nineteen ninety five, but with flat design as if

447
00:25:55.960 --> 00:25:57.359
<v Speaker 2>it was in nineteen eighty five.

448
00:25:58.079 --> 00:26:01.440
<v Speaker 5>Yeah, yeah, yeah, thanks thanks. I have if I had

449
00:26:02.000 --> 00:26:05.279
<v Speaker 5>a euro for every time somebody asked me to open sources,

450
00:26:05.319 --> 00:26:08.680
<v Speaker 5>that would be a millionaire by now. But I really

451
00:26:08.720 --> 00:26:10.559
<v Speaker 5>want to do it. But the thing is that the

452
00:26:10.599 --> 00:26:12.960
<v Speaker 5>code is not Yeah, I think it's a bit messy,

453
00:26:13.000 --> 00:26:17.640
<v Speaker 5>and it's pretty integrated with Amazon. It runs on AWS.

454
00:26:18.079 --> 00:26:21.839
<v Speaker 5>So I am thinking of starting a boiler plate for

455
00:26:21.920 --> 00:26:24.359
<v Speaker 5>people to really start up a PWA what I did

456
00:26:24.440 --> 00:26:27.200
<v Speaker 5>do in the meantime. On my GitHub page, there is

457
00:26:27.240 --> 00:26:30.920
<v Speaker 5>a project called basic service Worker, which is just a

458
00:26:30.960 --> 00:26:33.960
<v Speaker 5>service worker that enables you to make your web app

459
00:26:34.000 --> 00:26:37.960
<v Speaker 5>work offline, because I think that's really the baseline that

460
00:26:38.039 --> 00:26:40.559
<v Speaker 5>web apps should have, and there's so many web apps

461
00:26:40.640 --> 00:26:43.279
<v Speaker 5>that just do not work offline, and I think any

462
00:26:43.599 --> 00:26:45.799
<v Speaker 5>any web as should work off line nowadays.

463
00:26:46.160 --> 00:26:48.920
<v Speaker 4>What you should do what you should do. I think, now,

464
00:26:49.000 --> 00:26:52.240
<v Speaker 4>maybe this already exists, and maybe Fred can chime in

465
00:26:52.319 --> 00:26:54.839
<v Speaker 4>and tell us it exists, but I would look to

466
00:26:54.960 --> 00:27:00.319
<v Speaker 4>integrate something like that with Astro. You know, Astroid is

467
00:27:00.440 --> 00:27:06.519
<v Speaker 4>multi page and not single pages, so they support view

468
00:27:06.519 --> 00:27:12.839
<v Speaker 4>transitions between the pages in their framework. So having really

469
00:27:12.880 --> 00:27:17.240
<v Speaker 4>good offline support with Astro, I think would really open

470
00:27:17.359 --> 00:27:20.640
<v Speaker 4>up a lot of interesting possibilities for a lot of developers.

471
00:27:21.119 --> 00:27:21.880
<v Speaker 5>Yeah.

472
00:27:21.640 --> 00:27:24.440
<v Speaker 1>Yeah, I'm using stimulus and I'm looking at the same

473
00:27:24.559 --> 00:27:25.319
<v Speaker 1>kinds of things.

474
00:27:25.960 --> 00:27:27.599
<v Speaker 3>You know, it's like, oh, how much of this can

475
00:27:27.640 --> 00:27:28.319
<v Speaker 3>I tie in?

476
00:27:28.359 --> 00:27:31.079
<v Speaker 1>Because again, stimulus is like weight and inside your controllers,

477
00:27:31.119 --> 00:27:32.960
<v Speaker 1>you can call into any of these APIs.

478
00:27:34.279 --> 00:27:37.920
<v Speaker 4>Yeah, for sure, Just just to say chuck, just to

479
00:27:37.920 --> 00:27:42.480
<v Speaker 4>say it's so yeah, to emphasize the fact that Danny

480
00:27:42.720 --> 00:27:45.759
<v Speaker 4>kind of stated it, but it really needs to be

481
00:27:45.799 --> 00:27:49.240
<v Speaker 4>emphasized that it's so easy to transition from a plain

482
00:27:49.319 --> 00:27:53.440
<v Speaker 4>old web application to a p WA. Basically all you

483
00:27:53.519 --> 00:27:56.880
<v Speaker 4>need is adjason file, which is the manifest you know,

484
00:27:56.960 --> 00:28:00.759
<v Speaker 4>how hard is it to do adjason file and and

485
00:28:00.920 --> 00:28:04.279
<v Speaker 4>the service worker. You know, we've been talking about all

486
00:28:04.319 --> 00:28:07.559
<v Speaker 4>the sophisticated things that service workers can do, but you

487
00:28:07.599 --> 00:28:10.559
<v Speaker 4>can also have a really dumb down service worker that's

488
00:28:10.599 --> 00:28:15.119
<v Speaker 4>basically passed through and there are you know, examples of

489
00:28:15.119 --> 00:28:19.200
<v Speaker 4>this on the web, and and just add that and

490
00:28:19.200 --> 00:28:22.359
<v Speaker 4>and you're done. It's a p w A. Uh. And

491
00:28:22.400 --> 00:28:27.559
<v Speaker 4>then you can start adding all the sophisticated bells and whistles.

492
00:28:27.680 --> 00:28:29.279
<v Speaker 3>Yeah, I was I was going to ask too.

493
00:28:29.400 --> 00:28:32.599
<v Speaker 1>So on all the demos on what pw A can

494
00:28:32.640 --> 00:28:36.440
<v Speaker 1>do dot today, I mean, these are all just using

495
00:28:36.519 --> 00:28:40.200
<v Speaker 1>straight up browser APIs and dom APIs.

496
00:28:40.279 --> 00:28:41.519
<v Speaker 3>Right. There's there's no.

497
00:28:41.559 --> 00:28:45.079
<v Speaker 1>Library or you know, special this or that you have

498
00:28:45.119 --> 00:28:45.640
<v Speaker 1>to pull in.

499
00:28:45.759 --> 00:28:51.359
<v Speaker 5>It's no, no, there's there's nothing really there. It's just

500
00:28:51.480 --> 00:28:56.680
<v Speaker 5>basic vanilla JavaScript. I think. The only thing is I

501
00:28:56.720 --> 00:28:59.200
<v Speaker 5>think I used three D dot j s for one

502
00:28:59.240 --> 00:29:02.839
<v Speaker 5>of these demo. Have to look it up. I think

503
00:29:02.839 --> 00:29:06.240
<v Speaker 5>it's in the orientation or the motion demo. Oh yeah,

504
00:29:06.240 --> 00:29:09.359
<v Speaker 5>it's in the device orientation demo. If you look on

505
00:29:09.400 --> 00:29:12.799
<v Speaker 5>that on a mobile device, there's a nice texted cube there.

506
00:29:14.960 --> 00:29:17.519
<v Speaker 5>That's what I used three D do js for. But

507
00:29:17.640 --> 00:29:20.240
<v Speaker 5>I don't even Yeah, I think I could even do

508
00:29:20.279 --> 00:29:23.279
<v Speaker 5>that myself really not that hard. But the rest is

509
00:29:23.279 --> 00:29:27.599
<v Speaker 5>no framework. Nothing is just browser APIs. Like I said,

510
00:29:27.680 --> 00:29:32.559
<v Speaker 5>the the service worker and the manifest adjacent file. It's

511
00:29:32.559 --> 00:29:35.440
<v Speaker 5>funny that you mentioned then the the integration with astro.

512
00:29:35.640 --> 00:29:38.759
<v Speaker 5>I at my time, I g I did look a

513
00:29:38.799 --> 00:29:42.720
<v Speaker 5>little bit into Astro, but I'm not even sure if

514
00:29:42.759 --> 00:29:46.720
<v Speaker 5>we need any specific integration for that, because the service

515
00:29:46.759 --> 00:29:51.160
<v Speaker 5>worker itself is just a a separate web worker file

516
00:29:51.240 --> 00:29:55.440
<v Speaker 5>that probably doesn't even need any integration with with with

517
00:29:55.480 --> 00:29:56.160
<v Speaker 5>the framework.

518
00:29:56.279 --> 00:29:59.079
<v Speaker 4>Oh yeah, for sure. It's just that if you make

519
00:29:59.119 --> 00:30:03.839
<v Speaker 4>the whole process as seamless for Astro developers, that would

520
00:30:03.880 --> 00:30:08.880
<v Speaker 4>immediately provide benefit for a lot of developers. That's that's

521
00:30:08.880 --> 00:30:13.160
<v Speaker 4>all I'm saying. Obviously, at the technological level, you don't

522
00:30:13.160 --> 00:30:16.480
<v Speaker 4>really need anything because you know, like you said, service

523
00:30:16.480 --> 00:30:20.160
<v Speaker 4>worker is basically just a JavaScript file. Astro is basically

524
00:30:20.200 --> 00:30:25.720
<v Speaker 4>just a web server, you know. Yeah, that's yeah, you

525
00:30:25.720 --> 00:30:29.200
<v Speaker 4>don't need much in a way of integration to get

526
00:30:29.240 --> 00:30:31.400
<v Speaker 4>web service to deliver JavaScript files.

527
00:30:32.079 --> 00:30:35.000
<v Speaker 5>Yeah, yeah, yeah, it's interesting. Now I'll have a look

528
00:30:35.039 --> 00:30:38.359
<v Speaker 5>at that to see what I can do over there.

529
00:30:38.920 --> 00:30:43.119
<v Speaker 5>It's the Yeah, the main thing about the service worker

530
00:30:43.160 --> 00:30:46.599
<v Speaker 5>that people always struggle with is like the life cycle

531
00:30:47.079 --> 00:30:50.079
<v Speaker 5>management of it and also the way you know, if

532
00:30:50.119 --> 00:30:52.880
<v Speaker 5>something goes wrong in your service worker, it can go

533
00:30:53.079 --> 00:30:55.880
<v Speaker 5>really rough sometimes.

534
00:30:55.279 --> 00:30:57.160
<v Speaker 4>But I think that is mostly fixed.

535
00:30:57.160 --> 00:30:57.359
<v Speaker 5>Though.

536
00:30:57.720 --> 00:30:59.559
<v Speaker 4>It used to be that if you got a bug

537
00:30:59.559 --> 00:31:02.359
<v Speaker 4>in yourself service worker, you could literally get into a

538
00:31:02.400 --> 00:31:05.519
<v Speaker 4>situation where you would need to call your visitors and

539
00:31:05.680 --> 00:31:10.519
<v Speaker 4>ask them to reload the page or clear the thing something.

540
00:31:10.559 --> 00:31:12.000
<v Speaker 4>But I think they fixed that.

541
00:31:12.799 --> 00:31:16.079
<v Speaker 5>Yeah, I don't even think there was a fix needed

542
00:31:16.160 --> 00:31:19.319
<v Speaker 5>on the on the platform level, but I could be wrong.

543
00:31:20.480 --> 00:31:22.880
<v Speaker 5>You can always just you know, just to put a

544
00:31:24.119 --> 00:31:26.400
<v Speaker 5>put a no observed worker in there. But the thing

545
00:31:26.440 --> 00:31:29.920
<v Speaker 5>is that people whenever they go to your web app,

546
00:31:30.000 --> 00:31:32.640
<v Speaker 5>they need to get that service worker, which is mainly

547
00:31:32.920 --> 00:31:36.240
<v Speaker 5>the hardest thing. So what I did in this basic

548
00:31:36.279 --> 00:31:38.839
<v Speaker 5>service worker project I have on GitHub is that I

549
00:31:39.240 --> 00:31:43.400
<v Speaker 5>made sure that the service worker can update as soon

550
00:31:43.440 --> 00:31:46.680
<v Speaker 5>as possible, and it also actively checks if there are

551
00:31:46.680 --> 00:31:49.920
<v Speaker 5>any new versions of that that service worker. And then

552
00:31:49.920 --> 00:31:53.000
<v Speaker 5>I also use you know, like like page events like

553
00:31:53.119 --> 00:31:57.000
<v Speaker 5>page height and all stuff like that. So whenever right

554
00:31:57.039 --> 00:31:59.599
<v Speaker 5>before you close it, it will check. And then the

555
00:31:59.680 --> 00:32:02.839
<v Speaker 5>next time you open it and the service worker is

556
00:32:02.839 --> 00:32:07.680
<v Speaker 5>already down there, it's installing, it will be activated straight away.

557
00:32:07.920 --> 00:32:10.519
<v Speaker 5>Whenever that is possible. It won't be possible if somebody

558
00:32:10.519 --> 00:32:13.559
<v Speaker 5>has like multiple taps with your web app open, because

559
00:32:13.559 --> 00:32:14.680
<v Speaker 5>that would be very messy.

560
00:32:16.000 --> 00:32:20.240
<v Speaker 4>So you you we mentioned a couple of the items

561
00:32:20.240 --> 00:32:23.559
<v Speaker 4>on the list here, it's worthwhile to mention a couple

562
00:32:23.599 --> 00:32:28.200
<v Speaker 4>of more. So we've got geolocations in here, notifications. We

563
00:32:28.279 --> 00:32:32.440
<v Speaker 4>already talked about the forms of capture. We've already talked

564
00:32:32.440 --> 00:32:42.400
<v Speaker 4>about vibration, barcode detection, web share, payments. What what what

565
00:32:42.519 --> 00:32:45.319
<v Speaker 4>is the payment API? What can it do? Uh?

566
00:32:45.559 --> 00:32:49.000
<v Speaker 5>The payment API is just integrate with Google Pay and

567
00:32:49.119 --> 00:32:52.559
<v Speaker 5>Apple Pay. So yeah, if you just got it, it's

568
00:32:52.599 --> 00:32:54.519
<v Speaker 5>just a very simple demo. You can just click the

569
00:32:54.519 --> 00:32:57.839
<v Speaker 5>button and then you will see in Chrome you will

570
00:32:57.880 --> 00:33:02.160
<v Speaker 5>see a Google Pay screen coming up with one dollar cent,

571
00:33:02.400 --> 00:33:06.119
<v Speaker 5>just just for demo, and whenever you open it in

572
00:33:06.119 --> 00:33:09.920
<v Speaker 5>in iOS, you will see the Google pay sorry, the

573
00:33:09.920 --> 00:33:12.880
<v Speaker 5>the Apple Pay screen. So what you can do there

574
00:33:13.079 --> 00:33:17.799
<v Speaker 5>is is just call yeah the APIs for those specific

575
00:33:17.880 --> 00:33:22.440
<v Speaker 5>things and have a payment done in your app. So

576
00:33:22.839 --> 00:33:26.680
<v Speaker 5>it just integrates with with that. It's also our browser API.

577
00:33:26.799 --> 00:33:30.400
<v Speaker 5>But then you can pick if you want to, if

578
00:33:30.400 --> 00:33:33.079
<v Speaker 5>you want to do it with Chrome Pay or Apple Pay,

579
00:33:34.160 --> 00:33:36.480
<v Speaker 5>and that will just completely integrate with that.

580
00:33:38.240 --> 00:33:44.359
<v Speaker 4>And we've got speech synthesis, speech recognition, wakelock, which means

581
00:33:44.359 --> 00:33:47.079
<v Speaker 4>that you can get your phone to unlock.

582
00:33:48.559 --> 00:33:52.480
<v Speaker 5>No, it prevents your screen from locking, which is why yeah,

583
00:33:52.599 --> 00:33:55.559
<v Speaker 5>which is also something like I love to cook, my

584
00:33:55.640 --> 00:33:59.559
<v Speaker 5>wife loves to cook, so I regularly get get the

585
00:33:59.599 --> 00:34:03.079
<v Speaker 5>recipe on my phone and then whenever your hands for dirty,

586
00:34:03.400 --> 00:34:05.920
<v Speaker 5>you want to scroll through the recipe or you want

587
00:34:05.960 --> 00:34:07.039
<v Speaker 5>to do something else.

588
00:34:06.839 --> 00:34:09.440
<v Speaker 1>And then in my language, my friend yeah yeah, and

589
00:34:09.480 --> 00:34:10.239
<v Speaker 1>that's all the time.

590
00:34:11.000 --> 00:34:13.239
<v Speaker 5>Yeah, me too, and then the screen just goes off.

591
00:34:13.639 --> 00:34:17.719
<v Speaker 5>You know. That's the thing. None of these sites use this,

592
00:34:17.840 --> 00:34:21.760
<v Speaker 5>and it's so easy, so simple to use. It's just

593
00:34:21.760 --> 00:34:23.519
<v Speaker 5>a couple of lines of code, and that will make

594
00:34:23.559 --> 00:34:26.519
<v Speaker 5>your recipe websites stay on. You know, it will keep

595
00:34:26.559 --> 00:34:30.679
<v Speaker 5>the screen on. You know, if you're a cook, if

596
00:34:30.679 --> 00:34:32.960
<v Speaker 5>you're cooking and your hands for dirty, that's really something

597
00:34:33.000 --> 00:34:37.519
<v Speaker 5>you need. But they don't use it. It's yeah yeah.

598
00:34:37.559 --> 00:34:39.960
<v Speaker 1>My solution to this is I call my eight year

599
00:34:39.960 --> 00:34:42.079
<v Speaker 1>old over, Okay, can you unlock my screen?

600
00:34:42.119 --> 00:34:42.280
<v Speaker 3>Now?

601
00:34:44.159 --> 00:34:46.480
<v Speaker 5>I do that too with my daughter. Yeah, yeah, yeah, yeah,

602
00:34:46.519 --> 00:34:48.599
<v Speaker 5>I would come coming back. Like you said, AJ, like

603
00:34:48.639 --> 00:34:52.400
<v Speaker 5>you were surprised that a lot of stuff is already supported.

604
00:34:52.840 --> 00:34:55.639
<v Speaker 5>I hear that so often by web developers say oh,

605
00:34:55.679 --> 00:34:59.000
<v Speaker 5>I have no idea that this was supported, because yeah,

606
00:34:59.280 --> 00:35:03.360
<v Speaker 5>people don't know. And that's also why why I write

607
00:35:03.400 --> 00:35:07.079
<v Speaker 5>about this, is to educate people about what is possible

608
00:35:07.119 --> 00:35:10.280
<v Speaker 5>nowadays with web pats, because a lot of developers have

609
00:35:10.400 --> 00:35:13.760
<v Speaker 5>really have no idea of what is already supported. But

610
00:35:13.840 --> 00:35:16.079
<v Speaker 5>that's also the reason they don't use this stuff, because

611
00:35:16.079 --> 00:35:17.519
<v Speaker 5>they don't know about it.

612
00:35:18.880 --> 00:35:23.920
<v Speaker 3>So I guess my question on this is how much

613
00:35:23.960 --> 00:35:26.360
<v Speaker 3>of this stuff is.

614
00:35:28.559 --> 00:35:32.679
<v Speaker 1>Like I'm looking at the wakelock for example, and okay,

615
00:35:32.760 --> 00:35:36.519
<v Speaker 1>so it's it's under the navigator stuff, so you really

616
00:35:36.800 --> 00:35:39.119
<v Speaker 1>it's already there, you just you just have to run it.

617
00:35:42.159 --> 00:35:44.119
<v Speaker 1>How much of this stuff requires you to have that

618
00:35:44.159 --> 00:35:47.039
<v Speaker 1>service worker and how much of this stuff is just

619
00:35:47.280 --> 00:35:48.800
<v Speaker 1>kind of part of the dom api.

620
00:35:50.239 --> 00:35:53.119
<v Speaker 5>Let me see, I think the service worker is only

621
00:35:53.280 --> 00:35:58.000
<v Speaker 5>for the let me see, for the backgrounds it requires

622
00:35:58.000 --> 00:36:03.480
<v Speaker 5>a network basically, yeah, no, not even that. Basically the

623
00:36:03.639 --> 00:36:07.519
<v Speaker 5>background fetch API for example, to download stuff in the background. Yeah,

624
00:36:08.320 --> 00:36:13.280
<v Speaker 5>that's what needs a service worker. The background sink as well,

625
00:36:13.320 --> 00:36:16.960
<v Speaker 5>although you could poly fill that the background sink. What

626
00:36:17.039 --> 00:36:20.719
<v Speaker 5>it does is you can ever whenever there is for example,

627
00:36:20.760 --> 00:36:24.039
<v Speaker 5>you want to send out some message. Let's say that

628
00:36:24.079 --> 00:36:26.679
<v Speaker 5>you have an email client and you want to send

629
00:36:26.679 --> 00:36:30.440
<v Speaker 5>out an email. What you can do with background sync

630
00:36:30.599 --> 00:36:33.360
<v Speaker 5>is to create like this out box functionality. So what

631
00:36:33.400 --> 00:36:35.559
<v Speaker 5>you can do is you can send it straight, you

632
00:36:35.599 --> 00:36:38.280
<v Speaker 5>can send it to an outbox, and whenever you are online,

633
00:36:38.320 --> 00:36:41.840
<v Speaker 5>it will go from the outbox it will be sent immediately.

634
00:36:42.480 --> 00:36:46.239
<v Speaker 5>But when you are offline, it will go to the

635
00:36:46.320 --> 00:36:49.239
<v Speaker 5>service worker and then the service worker will take care

636
00:36:49.280 --> 00:36:53.320
<v Speaker 5>of sending it whenever the network is back. But that's

637
00:36:53.360 --> 00:36:56.079
<v Speaker 5>also something you can poly fill. With the online and

638
00:36:56.119 --> 00:36:59.159
<v Speaker 5>offline events, you won't have the granular control that you

639
00:36:59.239 --> 00:37:00.440
<v Speaker 5>have with background sync.

640
00:37:02.480 --> 00:37:06.480
<v Speaker 4>Also also the limitation that the web page would need

641
00:37:06.559 --> 00:37:10.199
<v Speaker 4>to be open and in focus, whereas with the service

642
00:37:10.280 --> 00:37:13.519
<v Speaker 4>worker it can it can work even if your web

643
00:37:13.519 --> 00:37:14.400
<v Speaker 4>page is closed.

644
00:37:15.360 --> 00:37:19.639
<v Speaker 5>Uh yeah, yeah, yeah, oh yeah, that's another thing yet

645
00:37:19.639 --> 00:37:21.840
<v Speaker 5>that also where yeah, the sink will also be raised

646
00:37:21.880 --> 00:37:24.800
<v Speaker 5>when when it's not. No, I don't think so with

647
00:37:24.840 --> 00:37:25.840
<v Speaker 5>the background sync.

648
00:37:26.599 --> 00:37:30.159
<v Speaker 4>No. What I mean is with background sync, with using

649
00:37:30.199 --> 00:37:33.480
<v Speaker 4>a service worker, the web page doesn't need to be open,

650
00:37:34.159 --> 00:37:38.639
<v Speaker 4>like whereas if you're just using the online offline events

651
00:37:38.679 --> 00:37:41.760
<v Speaker 4>in the page itself, obviously the page needs to be

652
00:37:41.840 --> 00:37:43.519
<v Speaker 4>open in order for it to work.

653
00:37:45.519 --> 00:37:48.800
<v Speaker 5>So what you're saying is that whenever I register a

654
00:37:49.119 --> 00:37:53.440
<v Speaker 5>SYNC something that needs to be done whenever the network

655
00:37:53.519 --> 00:37:56.159
<v Speaker 5>is back. So when I close the p w A

656
00:37:56.280 --> 00:37:58.679
<v Speaker 5>and then the networks come back, that that task will

657
00:37:58.679 --> 00:37:59.480
<v Speaker 5>be executed.

658
00:38:00.320 --> 00:38:03.559
<v Speaker 4>Might be and I need to you know, I haven't

659
00:38:03.599 --> 00:38:07.119
<v Speaker 4>played with it, you're the PWI expert, but that but

660
00:38:07.199 --> 00:38:10.280
<v Speaker 4>that would be that, that would be Like the whole

661
00:38:10.280 --> 00:38:12.800
<v Speaker 4>idea of a service worker is the fact that you've

662
00:38:12.800 --> 00:38:16.480
<v Speaker 4>got code that is running like p w I basically

663
00:38:16.559 --> 00:38:19.440
<v Speaker 4>serves two purposes really. First of all, it's a proxy

664
00:38:19.880 --> 00:38:23.079
<v Speaker 4>between the page and the network, so it gives you

665
00:38:23.119 --> 00:38:26.199
<v Speaker 4>a lot of control over what goes through the network.

666
00:38:26.280 --> 00:38:28.039
<v Speaker 4>You know what comes from the cash. It gives you

667
00:38:28.079 --> 00:38:31.840
<v Speaker 4>a lot of cashing capabilities that are otherwise not available.

668
00:38:32.519 --> 00:38:36.039
<v Speaker 4>And the fact that it continues to run or can

669
00:38:36.159 --> 00:38:40.159
<v Speaker 4>run when the page is closed, which means that it

670
00:38:40.199 --> 00:38:44.039
<v Speaker 4>can do background things even when the page is closed,

671
00:38:44.079 --> 00:38:47.480
<v Speaker 4>even theoretically when the browser app is not in the focus,

672
00:38:48.199 --> 00:38:52.280
<v Speaker 4>like the background sync, like sending push notifications.

673
00:38:52.719 --> 00:38:55.239
<v Speaker 5>Have to admit, I didn't even try that yet. With

674
00:38:55.320 --> 00:38:59.320
<v Speaker 5>the background shink like like having some shank registered and

675
00:38:59.360 --> 00:39:03.559
<v Speaker 5>then closing the p w A and then reconnecting the network.

676
00:39:03.599 --> 00:39:06.280
<v Speaker 5>So that's interesting. I'm going to try that tonight. I

677
00:39:06.280 --> 00:39:08.559
<v Speaker 5>didn't even I didn't even try that. Yeah, it's a

678
00:39:08.639 --> 00:39:11.079
<v Speaker 5>very good, very good remark.

679
00:39:12.039 --> 00:39:17.440
<v Speaker 3>So his mad scientists costume on for Halloween and then

680
00:39:17.519 --> 00:39:17.800
<v Speaker 3>try it.

681
00:39:17.880 --> 00:39:20.280
<v Speaker 5>Yeah, yeah, no, that's really good. That's really good. Actually,

682
00:39:20.320 --> 00:39:22.840
<v Speaker 5>other than that, it's only the notifications that will need

683
00:39:22.880 --> 00:39:26.199
<v Speaker 5>a service worker, but like the rest, I'm quickly scanning

684
00:39:26.239 --> 00:39:29.239
<v Speaker 5>through it. Yeah, all the other stuff is just basically

685
00:39:29.280 --> 00:39:32.559
<v Speaker 5>workable even without a a service.

686
00:39:32.320 --> 00:39:35.119
<v Speaker 1>Worker, right, because it's either dom or browser and it

687
00:39:35.119 --> 00:39:36.079
<v Speaker 1>doesn't need the network.

688
00:39:36.760 --> 00:39:39.079
<v Speaker 5>No, no, it doesn't really need to need a network.

689
00:39:39.119 --> 00:39:43.039
<v Speaker 4>No, no, Yeah, it's it's a huge shame that all

690
00:39:43.119 --> 00:39:46.719
<v Speaker 4>this API is there, it's available, a lot of it

691
00:39:46.760 --> 00:39:51.440
<v Speaker 4>is even supported by Safari, and yet web developers hardly

692
00:39:51.480 --> 00:39:52.119
<v Speaker 4>ever use it.

693
00:39:52.840 --> 00:39:56.599
<v Speaker 5>Yeah exactly, exactly, Yeah, yeah exactly. I think it's a

694
00:39:56.639 --> 00:39:59.599
<v Speaker 5>combination of people not being aware of this, that this

695
00:39:59.679 --> 00:40:05.400
<v Speaker 5>stuff is available, and yeah, whenever they need something or

696
00:40:05.559 --> 00:40:09.679
<v Speaker 5>functionality like this, I think they will be quicker to

697
00:40:09.760 --> 00:40:13.800
<v Speaker 5>go to a native app and build that, and then.

698
00:40:13.800 --> 00:40:17.519
<v Speaker 4>The company, the company might go to a native app,

699
00:40:17.519 --> 00:40:20.400
<v Speaker 4>but the actual developer, I mean, you know, there are

700
00:40:20.440 --> 00:40:23.360
<v Speaker 4>a lot of people who are web developers and don't

701
00:40:23.440 --> 00:40:29.800
<v Speaker 4>really have much experience in building native applications. Me for example, Uh,

702
00:40:29.840 --> 00:40:33.119
<v Speaker 4>and you know, obviously I can go and learn it.

703
00:40:33.119 --> 00:40:34.800
<v Speaker 4>It's you know, it's not the end of the world,

704
00:40:34.880 --> 00:40:38.000
<v Speaker 4>but it's effort. And if I can get the same

705
00:40:38.199 --> 00:40:43.079
<v Speaker 4>functionality using technologies that I'm very familiar with, then you know, it's.

706
00:40:43.840 --> 00:40:48.320
<v Speaker 1>So when Yeah, the point is is that a lot

707
00:40:48.360 --> 00:40:53.440
<v Speaker 1>of this stuff that's on what compete WA, what PWA

708
00:40:53.519 --> 00:40:56.119
<v Speaker 1>can do today I'm trying to it's a jumble of

709
00:40:56.199 --> 00:40:58.280
<v Speaker 1>letters in front of my face and so I struggle

710
00:40:58.360 --> 00:41:02.079
<v Speaker 1>to read it. But a lot of these I didn't

711
00:41:02.119 --> 00:41:04.800
<v Speaker 1>know were there, and so it wouldn't even occur to

712
00:41:04.840 --> 00:41:09.480
<v Speaker 1>me to try to do it with my application, if

713
00:41:09.480 --> 00:41:14.280
<v Speaker 1>that makes sense. But I mean, like a barcode detection, right,

714
00:41:14.320 --> 00:41:15.719
<v Speaker 1>I would have gone out and I would have found

715
00:41:15.719 --> 00:41:18.119
<v Speaker 1>some library that would have you know, magiced it in.

716
00:41:18.280 --> 00:41:24.280
<v Speaker 1>But you know, it's like, oh well, anyway, So one

717
00:41:24.280 --> 00:41:26.840
<v Speaker 1>other thing, and yeah, now we're getting into kind of

718
00:41:26.840 --> 00:41:30.119
<v Speaker 1>the NUBE questions is so let's say that I want

719
00:41:30.119 --> 00:41:33.760
<v Speaker 1>to put this in to my application, and you know

720
00:41:33.880 --> 00:41:37.480
<v Speaker 1>I mentioned that like the background sync and the background

721
00:41:37.559 --> 00:41:39.800
<v Speaker 1>fetch and some of this other stuff is some of

722
00:41:39.840 --> 00:41:45.079
<v Speaker 1>what I'm interested in. Those require service worker. How do

723
00:41:45.159 --> 00:41:46.000
<v Speaker 1>I set one up?

724
00:41:46.159 --> 00:41:46.719
<v Speaker 3>Is it just.

725
00:41:48.159 --> 00:41:50.119
<v Speaker 1>I mean, is there just an API for that that

726
00:41:50.199 --> 00:41:53.599
<v Speaker 1>I just you know, call, and then how do I

727
00:41:53.639 --> 00:41:56.519
<v Speaker 1>tell it how to connect to the back end to respond?

728
00:41:57.039 --> 00:41:59.480
<v Speaker 1>And then finally what does that response look like?

729
00:42:00.840 --> 00:42:05.719
<v Speaker 5>Yeah, So basically what you need is a script, so

730
00:42:05.840 --> 00:42:08.719
<v Speaker 5>a separate script which is a service worker. And like

731
00:42:08.760 --> 00:42:13.440
<v Speaker 5>I said, it's a special kind of web worker. And

732
00:42:13.559 --> 00:42:17.639
<v Speaker 5>what it consists of. I already mentioned the life cycle

733
00:42:17.760 --> 00:42:22.000
<v Speaker 5>of a service worker, So what it goes through. Whenever

734
00:42:22.079 --> 00:42:24.920
<v Speaker 5>a web page is loaded and it finds a service

735
00:42:24.920 --> 00:42:29.039
<v Speaker 5>worker script, it will load that script. The service worker

736
00:42:29.079 --> 00:42:33.480
<v Speaker 5>will then start to install itself. So basically what you

737
00:42:33.519 --> 00:42:37.400
<v Speaker 5>do is you define an event handler for the install event.

738
00:42:37.599 --> 00:42:40.760
<v Speaker 5>So it's really a simple event handler that you put

739
00:42:40.800 --> 00:42:45.599
<v Speaker 5>in there for the install event. And then you can

740
00:42:45.679 --> 00:42:49.960
<v Speaker 5>call the cash API, which is cash ad or cash

741
00:42:50.000 --> 00:42:52.679
<v Speaker 5>ad all. You can just give it an array of URLs.

742
00:42:53.119 --> 00:42:56.000
<v Speaker 5>That's all you need to give it. Let's say you

743
00:42:56.039 --> 00:42:58.039
<v Speaker 5>have a couple of scripts, you have a couple of images,

744
00:42:58.119 --> 00:42:59.960
<v Speaker 5>you have a couple of style sheets. You all put

745
00:43:00.039 --> 00:43:04.440
<v Speaker 5>the r ls to those files into the array. And

746
00:43:04.480 --> 00:43:07.920
<v Speaker 5>then let's say you also have some htmail routes that

747
00:43:08.000 --> 00:43:12.920
<v Speaker 5>don't end in a dot htmail file, you can also

748
00:43:13.079 --> 00:43:16.159
<v Speaker 5>give that to the service worker, and then when the

749
00:43:16.239 --> 00:43:20.800
<v Speaker 5>service worker starts to install, it will run that that

750
00:43:20.880 --> 00:43:24.400
<v Speaker 5>install event handler, and inside that event handler, it will

751
00:43:24.440 --> 00:43:26.880
<v Speaker 5>add all those it will fetch all the all the

752
00:43:26.880 --> 00:43:29.679
<v Speaker 5>stuff it needs, like the the the assets style sheets,

753
00:43:30.119 --> 00:43:33.119
<v Speaker 5>whatever you put in there, it will fetch that. It

754
00:43:33.119 --> 00:43:35.199
<v Speaker 5>will fetch the pages, and then it will put a

755
00:43:35.360 --> 00:43:40.199
<v Speaker 5>response object into the browser cache. And I'm not talking

756
00:43:40.239 --> 00:43:42.840
<v Speaker 5>about the cash that the browser uses for the network,

757
00:43:42.840 --> 00:43:45.480
<v Speaker 5>but it's really like it's it's a property on the

758
00:43:45.519 --> 00:43:51.320
<v Speaker 5>window object. And then after that, whenever that is finished

759
00:43:52.079 --> 00:43:55.920
<v Speaker 5>that that install phase, it will go to the to

760
00:43:56.000 --> 00:44:00.559
<v Speaker 5>the activate phase. And in that phase you can, for example,

761
00:44:00.599 --> 00:44:04.639
<v Speaker 5>you can remove some old cashes. For example, one of

762
00:44:04.679 --> 00:44:07.800
<v Speaker 5>the best practices is to always version it. So I

763
00:44:07.840 --> 00:44:10.880
<v Speaker 5>always put like a version variable in my service worker,

764
00:44:11.239 --> 00:44:13.679
<v Speaker 5>and then I attach that to the name of the

765
00:44:13.760 --> 00:44:16.840
<v Speaker 5>of the cash, which can be anything you want. And

766
00:44:16.880 --> 00:44:19.719
<v Speaker 5>then what you can you can check for other cases

767
00:44:19.800 --> 00:44:22.760
<v Speaker 5>that are still there, like for a previous service worker,

768
00:44:23.039 --> 00:44:26.639
<v Speaker 5>you can delete them and then you can add yeah,

769
00:44:26.800 --> 00:44:28.639
<v Speaker 5>or you can start up. You can you can even

770
00:44:28.639 --> 00:44:31.639
<v Speaker 5>create an index TV or something like that if you

771
00:44:31.800 --> 00:44:38.320
<v Speaker 5>have to serve other stuff. And then after that, yeah,

772
00:44:38.360 --> 00:44:40.480
<v Speaker 5>you need a fetch handler, which is also a simple

773
00:44:40.800 --> 00:44:44.559
<v Speaker 5>simple event handler. So whenever there a network request is done,

774
00:44:45.119 --> 00:44:48.079
<v Speaker 5>the service worker will raise a fetch event and then

775
00:44:48.159 --> 00:44:52.440
<v Speaker 5>the event handler for that will, yeah, will handle the

776
00:44:52.480 --> 00:44:56.280
<v Speaker 5>network requests. And then inside that you can just do

777
00:44:56.400 --> 00:45:00.760
<v Speaker 5>basically whenever you want. You can let's say, you can

778
00:45:00.840 --> 00:45:03.639
<v Speaker 5>use you can serve other pages if you want, you

779
00:45:03.679 --> 00:45:07.440
<v Speaker 5>can serve offline pages. You can decide if you want

780
00:45:07.480 --> 00:45:10.039
<v Speaker 5>to serve everything from the cash or if you want

781
00:45:10.079 --> 00:45:13.559
<v Speaker 5>to serve everything from the network, or maybe something in

782
00:45:14.519 --> 00:45:20.199
<v Speaker 5>between whatever. So basically it's just yeah, a lot of

783
00:45:20.199 --> 00:45:22.079
<v Speaker 5>scripts and a lot of event line was that you

784
00:45:22.280 --> 00:45:25.559
<v Speaker 5>use for that. Like, for example, a push notification is

785
00:45:25.599 --> 00:45:29.840
<v Speaker 5>also an event that is raised, so you put an

786
00:45:29.880 --> 00:45:33.000
<v Speaker 5>event handle for the push event. The background fetch is

787
00:45:33.039 --> 00:45:36.639
<v Speaker 5>also an event, and background saying they're all events, so

788
00:45:36.679 --> 00:45:38.760
<v Speaker 5>a lot of it is just event based.

789
00:45:40.639 --> 00:45:43.480
<v Speaker 4>Like I said, the easiest I think way to think

790
00:45:43.519 --> 00:45:48.119
<v Speaker 4>about it is as a cloud as a proxy, but

791
00:45:48.480 --> 00:45:51.639
<v Speaker 4>instead of running somewhere out in the cloud, it's running

792
00:45:51.719 --> 00:45:54.960
<v Speaker 4>locally on your device. So all the network, all the

793
00:45:55.000 --> 00:45:58.480
<v Speaker 4>network goes through that and it can and it you know,

794
00:45:58.800 --> 00:46:02.840
<v Speaker 4>has total insight into the actual content going back and forth,

795
00:46:02.880 --> 00:46:06.000
<v Speaker 4>and it can pretty much do whatever it wants with

796
00:46:06.159 --> 00:46:11.480
<v Speaker 4>the requests that are for that for the pages on domain.

797
00:46:12.079 --> 00:46:16.079
<v Speaker 4>That's that's willing to know. So if you're making requests

798
00:46:16.079 --> 00:46:19.400
<v Speaker 4>to third party stuff that does not go to the

799
00:46:19.440 --> 00:46:23.239
<v Speaker 4>service work, it does it does? It does go to

800
00:46:23.320 --> 00:46:24.079
<v Speaker 4>the service Yeah.

801
00:46:23.960 --> 00:46:26.880
<v Speaker 5>Yeah, yeah it does. I think what you're referring to

802
00:46:27.039 --> 00:46:33.920
<v Speaker 5>is that the service worker can only control its own domain.

803
00:46:34.000 --> 00:46:37.880
<v Speaker 5>It cannot control any other domains. There are some okay,

804
00:46:38.159 --> 00:46:42.599
<v Speaker 5>help me right now. Sorry, yeah, yeah, yeah. So for example,

805
00:46:43.159 --> 00:46:46.280
<v Speaker 5>what you can do is if you have Google Analytics,

806
00:46:46.280 --> 00:46:49.920
<v Speaker 5>for example, I always had that when I when it

807
00:46:50.000 --> 00:46:52.119
<v Speaker 5>was trying to fetch the Google Analytics script, that it

808
00:46:52.159 --> 00:46:54.679
<v Speaker 5>would just give an error and then it wouldn't work

809
00:46:54.679 --> 00:46:57.840
<v Speaker 5>offline anymore because it would would give an error. So

810
00:46:57.880 --> 00:46:59.679
<v Speaker 5>what I did at a certain point, I would just

811
00:46:59.719 --> 00:47:02.679
<v Speaker 5>fetch the script and also store that in the browser cache.

812
00:47:02.800 --> 00:47:05.480
<v Speaker 5>So if you have third party scripts, you can also

813
00:47:05.960 --> 00:47:10.840
<v Speaker 5>catch those and then deserved worker can also yeah, serve

814
00:47:10.920 --> 00:47:14.400
<v Speaker 5>those value are offline. And that's very important because you know,

815
00:47:15.000 --> 00:47:17.199
<v Speaker 5>if you want your app to work offline and there

816
00:47:17.280 --> 00:47:20.039
<v Speaker 5>is like an error in there, and you know that

817
00:47:20.159 --> 00:47:21.760
<v Speaker 5>the worst thing is if you have an error in

818
00:47:21.800 --> 00:47:25.159
<v Speaker 5>your index page is like the first page, then it serves.

819
00:47:25.159 --> 00:47:27.400
<v Speaker 5>If there's something wrong in there, it won't work, it

820
00:47:27.440 --> 00:47:29.440
<v Speaker 5>will give you an error, it won't serve the page,

821
00:47:29.920 --> 00:47:32.679
<v Speaker 5>and your whole offline functionality is gone.

822
00:47:33.039 --> 00:47:35.960
<v Speaker 4>Yeah, this is one of those really annoying things. Like,

823
00:47:36.000 --> 00:47:38.440
<v Speaker 4>for example, if I go on a flight and you know,

824
00:47:38.559 --> 00:47:41.840
<v Speaker 4>I'm reading something interesting at the airport just before the flight,

825
00:47:42.440 --> 00:47:45.559
<v Speaker 4>you know, boards, and then I bought the flight and

826
00:47:45.599 --> 00:47:48.760
<v Speaker 4>I want to keep on reading but the pages, but

827
00:47:49.039 --> 00:47:52.079
<v Speaker 4>because I switch between apps or something, the browser decides

828
00:47:52.079 --> 00:47:56.159
<v Speaker 4>that it has to reload the tab. I can't because

829
00:47:56.159 --> 00:48:00.239
<v Speaker 4>I'm in airplane mode or whatever. And that's gone on,

830
00:48:00.440 --> 00:48:03.920
<v Speaker 4>and you're thinking, hey, it's just text. Why can't I

831
00:48:04.159 --> 00:48:08.239
<v Speaker 4>see what was there before? But I can't. And with

832
00:48:08.400 --> 00:48:10.639
<v Speaker 4>service worker, it's so easy.

833
00:48:11.400 --> 00:48:12.880
<v Speaker 5>It is it is. Yeah, it happens to me all

834
00:48:12.880 --> 00:48:15.280
<v Speaker 5>the time as well. I use the Fiery browser to

835
00:48:15.280 --> 00:48:17.679
<v Speaker 5>put it in the reading list, and it always or

836
00:48:18.039 --> 00:48:21.320
<v Speaker 5>like nine times out of tend it just refreshes for

837
00:48:21.360 --> 00:48:25.039
<v Speaker 5>no reason, and then it's it's not stored right or something.

838
00:48:25.039 --> 00:48:27.559
<v Speaker 5>I don't know, but yeah, that's that's like you said,

839
00:48:27.599 --> 00:48:30.320
<v Speaker 5>it's another very nice use case for a service work

840
00:48:30.360 --> 00:48:33.159
<v Speaker 5>and just put a button on your pages if you

841
00:48:33.239 --> 00:48:37.199
<v Speaker 5>haven't already cashed them, and then put a button like

842
00:48:37.280 --> 00:48:38.559
<v Speaker 5>read offline or something.

843
00:48:38.880 --> 00:48:39.119
<v Speaker 3>That's.

844
00:48:39.239 --> 00:48:40.920
<v Speaker 5>Yeah, that's also something that you can do with a

845
00:48:40.960 --> 00:48:41.639
<v Speaker 5>service worker.

846
00:48:42.480 --> 00:48:48.039
<v Speaker 1>Yeah, it's It's interesting because so topendevs dot com for example,

847
00:48:48.119 --> 00:48:50.639
<v Speaker 1>it uses import maps, right, and so a lot of

848
00:48:50.679 --> 00:48:53.559
<v Speaker 1>the a lot of the scripts are being pulled from

849
00:48:53.639 --> 00:48:58.159
<v Speaker 1>a CDN somewhere instead of being loaded up by my

850
00:48:58.239 --> 00:49:00.199
<v Speaker 1>own domain. And so what you're telling me is is

851
00:49:00.239 --> 00:49:04.280
<v Speaker 1>that it can capture and cash those so that yeah,

852
00:49:04.280 --> 00:49:07.119
<v Speaker 1>when somebody comes back around, the page still works even

853
00:49:07.119 --> 00:49:12.239
<v Speaker 1>though that's the third party stuff. The other example I'm

854
00:49:12.239 --> 00:49:16.480
<v Speaker 1>thinking of is I've played with the idea, and this

855
00:49:16.559 --> 00:49:19.159
<v Speaker 1>is on another app that I built several years ago,

856
00:49:20.320 --> 00:49:22.880
<v Speaker 1>played with the idea of allowing people to essentially put

857
00:49:22.920 --> 00:49:27.920
<v Speaker 1>together their own podcast feeds out of other third party audio.

858
00:49:28.440 --> 00:49:30.079
<v Speaker 3>And so for example, you know and.

859
00:49:30.079 --> 00:49:33.039
<v Speaker 1>I, the idea was to put a plug in into

860
00:49:33.239 --> 00:49:35.960
<v Speaker 1>like Chrome, and so then it's I'm on this page,

861
00:49:35.960 --> 00:49:38.239
<v Speaker 1>it has some audio or video that I want to

862
00:49:38.280 --> 00:49:40.519
<v Speaker 1>add to this feed, and so I can you know,

863
00:49:41.000 --> 00:49:42.800
<v Speaker 1>click something in there, but then it.

864
00:49:42.800 --> 00:49:45.800
<v Speaker 3>Would load it up on the page for the actual app.

865
00:49:46.400 --> 00:49:47.880
<v Speaker 1>And so what you're telling me is I can catch

866
00:49:47.960 --> 00:49:50.280
<v Speaker 1>those two even though I'm not hosting them and they're

867
00:49:50.280 --> 00:49:51.239
<v Speaker 1>not under my own domain.

868
00:49:51.400 --> 00:49:52.519
<v Speaker 5>Yeah, yeah, yeah you can.

869
00:49:52.639 --> 00:49:52.960
<v Speaker 3>You can.

870
00:49:53.079 --> 00:49:55.119
<v Speaker 5>You can just fetch it. You can. You can let

871
00:49:55.119 --> 00:49:57.800
<v Speaker 5>the surface work and fetch anything you want and then

872
00:49:58.000 --> 00:50:01.719
<v Speaker 5>store the response objects in uh in the browser cache.

873
00:50:02.159 --> 00:50:06.239
<v Speaker 5>That's that's really really no problem. And another thing but

874
00:50:06.320 --> 00:50:08.280
<v Speaker 5>I also use is I can also put that in

875
00:50:08.320 --> 00:50:11.400
<v Speaker 5>the chat. By the way, another demo app that I

876
00:50:11.400 --> 00:50:15.079
<v Speaker 5>built some time ago is that also uses a readable stream.

877
00:50:15.719 --> 00:50:19.000
<v Speaker 5>So and that's something that I started working on again

878
00:50:19.079 --> 00:50:22.639
<v Speaker 5>because now with the with the cross document view transitions,

879
00:50:22.679 --> 00:50:27.400
<v Speaker 5>this could be very handy. If you have cross document

880
00:50:27.480 --> 00:50:29.880
<v Speaker 5>view transitions, you need to make sure that your page

881
00:50:29.920 --> 00:50:32.719
<v Speaker 5>is loaded very fast, because otherwise, if you click a

882
00:50:32.719 --> 00:50:34.920
<v Speaker 5>button or you click a link and you have a

883
00:50:34.960 --> 00:50:37.400
<v Speaker 5>transition and it takes like two seconds, you know, that

884
00:50:37.519 --> 00:50:41.119
<v Speaker 5>really doesn't look good. So a couple of years ago,

885
00:50:41.119 --> 00:50:43.320
<v Speaker 5>I also I put it in the chat. Now is

886
00:50:43.400 --> 00:50:47.599
<v Speaker 5>also a demo app, very simple that uses a readable stream.

887
00:50:47.920 --> 00:50:52.480
<v Speaker 5>To serve the responses. So what it does is everything

888
00:50:52.519 --> 00:50:55.239
<v Speaker 5>is split out in a header, footer, and a content

889
00:50:55.840 --> 00:50:58.360
<v Speaker 5>and then what the browser or what the service worker

890
00:50:58.440 --> 00:51:01.840
<v Speaker 5>does is it intercepts all the requests and then when

891
00:51:01.840 --> 00:51:05.360
<v Speaker 5>it does, it streams the response back to you, which

892
00:51:05.360 --> 00:51:08.480
<v Speaker 5>stitches it back together from the header, the content, and

893
00:51:08.519 --> 00:51:12.400
<v Speaker 5>the footer. And that allows you to have a multipage

894
00:51:12.440 --> 00:51:16.599
<v Speaker 5>app that is well nearly as fast as a single

895
00:51:16.639 --> 00:51:21.519
<v Speaker 5>page app because it streams the content to the browser

896
00:51:21.599 --> 00:51:24.679
<v Speaker 5>and then the browser streaming partier which is insanely fast

897
00:51:25.320 --> 00:51:29.840
<v Speaker 5>and can stream everything. And yeah, you can basically have

898
00:51:29.880 --> 00:51:32.719
<v Speaker 5>a multipage app with a service worker that's just as

899
00:51:32.719 --> 00:51:34.639
<v Speaker 5>fast as a single page app.

900
00:51:36.000 --> 00:51:38.199
<v Speaker 3>Sounds a lot of like what Turbo does.

901
00:51:40.039 --> 00:51:42.159
<v Speaker 5>Yeah, I think it's similar. I think it's I heard

902
00:51:42.159 --> 00:51:44.320
<v Speaker 5>that term before. Yeah, I think I think they also

903
00:51:44.360 --> 00:51:47.880
<v Speaker 5>do something like that. Yeah. Yeah.

904
00:51:48.360 --> 00:51:51.159
<v Speaker 4>If we can get some of our listeners to just

905
00:51:51.440 --> 00:51:54.239
<v Speaker 4>try out the stuff, you know, go into your page,

906
00:51:54.360 --> 00:51:57.760
<v Speaker 4>look browser around, try it out, get inspired, and actually

907
00:51:57.800 --> 00:52:00.639
<v Speaker 4>try it out, I think I think we've done.

908
00:52:01.440 --> 00:52:02.679
<v Speaker 2>We've done a few the.

909
00:52:02.639 --> 00:52:05.400
<v Speaker 5>Web that would be wonderful. Yeah, yeah, yeah, yeah, yeah,

910
00:52:05.440 --> 00:52:08.119
<v Speaker 5>that's also what I consider my job to educate people

911
00:52:08.199 --> 00:52:12.800
<v Speaker 5>on what is available what you can already do with

912
00:52:12.800 --> 00:52:16.079
<v Speaker 5>with web apps today, because there is yeah, like there

913
00:52:16.119 --> 00:52:19.880
<v Speaker 5>is so much that you can already do. I mean,

914
00:52:19.920 --> 00:52:22.639
<v Speaker 5>even if you don't want pw A, you don't want

915
00:52:22.639 --> 00:52:25.159
<v Speaker 5>people to install your app, you know, really with the

916
00:52:25.239 --> 00:52:28.239
<v Speaker 5>with the icon to their home screen, at least make

917
00:52:28.280 --> 00:52:31.320
<v Speaker 5>sure that your app works offline. That when you know,

918
00:52:31.320 --> 00:52:34.400
<v Speaker 5>whenever they go to you, and not even because people

919
00:52:34.440 --> 00:52:36.440
<v Speaker 5>they tell me, yeah, I have this chat app, and

920
00:52:37.079 --> 00:52:39.599
<v Speaker 5>there's no point for it to work offline because you

921
00:52:39.639 --> 00:52:41.719
<v Speaker 5>cannot chat when you are off line. Of course you can,

922
00:52:41.800 --> 00:52:47.239
<v Speaker 5>but I've been in so many situations. You know, you're

923
00:52:47.280 --> 00:52:49.199
<v Speaker 5>in a parking garage or in a building, or you're

924
00:52:49.239 --> 00:52:53.800
<v Speaker 5>in some rule area where you just do not have

925
00:52:53.840 --> 00:52:57.760
<v Speaker 5>a network, maybe for thirty seconds or a couple of minutes.

926
00:52:57.840 --> 00:53:00.639
<v Speaker 5>I mean, that is my definition of line. It's not

927
00:53:00.719 --> 00:53:04.480
<v Speaker 5>like totally offline, but it's for those situations where people

928
00:53:04.519 --> 00:53:07.599
<v Speaker 5>have a bad network, they're in a parking garage or something.

929
00:53:08.079 --> 00:53:10.559
<v Speaker 5>You should make sure that your web app also works

930
00:53:10.599 --> 00:53:13.360
<v Speaker 5>in those those conditions and that they don't get this

931
00:53:14.000 --> 00:53:17.119
<v Speaker 5>ugly dinosaur screen that tells them that they're offline. There's

932
00:53:17.159 --> 00:53:19.960
<v Speaker 5>there's really no need for that. It's not something that's

933
00:53:20.280 --> 00:53:23.039
<v Speaker 5>uh that that that native apps do and that web

934
00:53:23.039 --> 00:53:27.039
<v Speaker 5>app shouldn't do either, I think. So at least get

935
00:53:27.079 --> 00:53:28.360
<v Speaker 5>the service worker running.

936
00:53:28.519 --> 00:53:31.679
<v Speaker 4>Well, yeah, you've got you, you've got you've let's say

937
00:53:31.719 --> 00:53:36.599
<v Speaker 4>a user filling this big form and then clicks submit

938
00:53:36.840 --> 00:53:39.679
<v Speaker 4>or something, and because they're walking around so that I

939
00:53:39.719 --> 00:53:42.559
<v Speaker 4>don't know, they move between two cell towers or something,

940
00:53:42.639 --> 00:53:46.360
<v Speaker 4>and they lost connectivity for a second or two. You

941
00:53:46.400 --> 00:53:49.639
<v Speaker 4>know that that shouldn't kill that form submit.

942
00:53:50.519 --> 00:53:53.360
<v Speaker 5>No, no, exactly, but that's what happens all the time.

943
00:53:54.639 --> 00:53:56.840
<v Speaker 1>Well, the other the other thing is you're talking about

944
00:53:56.840 --> 00:53:59.920
<v Speaker 1>a chat or something that maybe it might be time sent.

945
00:54:00.880 --> 00:54:04.079
<v Speaker 1>You could also simply just put some intelligence around it,

946
00:54:04.159 --> 00:54:06.239
<v Speaker 1>right because at this point it's just JavaScript calling an

947
00:54:06.239 --> 00:54:11.239
<v Speaker 1>API in your browser as, hey, you are offline for

948
00:54:11.280 --> 00:54:13.400
<v Speaker 1>more than five minutes, do you still want to push

949
00:54:13.519 --> 00:54:15.159
<v Speaker 1>this chat post?

950
00:54:15.280 --> 00:54:18.880
<v Speaker 5>Yeah? Yeah, yeah, for example, or you could maybe store

951
00:54:19.079 --> 00:54:22.760
<v Speaker 5>a couple of messages and then send them later. Might

952
00:54:22.800 --> 00:54:25.400
<v Speaker 5>not always make sense, but that's at least something that

953
00:54:25.400 --> 00:54:28.159
<v Speaker 5>that that you can do. And also, you know, when

954
00:54:28.679 --> 00:54:30.880
<v Speaker 5>when you have a service worker, you already have all

955
00:54:30.920 --> 00:54:35.320
<v Speaker 5>your assets cashed and people are on a bad network,

956
00:54:35.360 --> 00:54:38.559
<v Speaker 5>they don't need to download that anymore because it's already there.

957
00:54:39.679 --> 00:54:45.320
<v Speaker 4>So yeah, that's completely true. But I want to emphasize

958
00:54:45.599 --> 00:54:50.440
<v Speaker 4>that even though you get fine grained, granular control over

959
00:54:50.519 --> 00:54:54.920
<v Speaker 4>cashing with service worker, that's not a justification to not

960
00:54:55.239 --> 00:54:58.280
<v Speaker 4>put proper cash shadders on your stuff.

961
00:54:58.960 --> 00:55:02.800
<v Speaker 5>So of course should always always of course, yeah, of course.

962
00:55:03.039 --> 00:55:06.280
<v Speaker 5>But what I mean is that you know, if you

963
00:55:06.320 --> 00:55:08.920
<v Speaker 5>are on a bad network and people already visited you're

964
00:55:09.000 --> 00:55:13.559
<v Speaker 5>at one time that the assets are already there, so

965
00:55:13.599 --> 00:55:16.440
<v Speaker 5>they don't need to download these again. So you can

966
00:55:16.559 --> 00:55:19.000
<v Speaker 5>use that that little network that you have, you can

967
00:55:19.119 --> 00:55:21.280
<v Speaker 5>use it for more important stuff.

968
00:55:23.000 --> 00:55:28.440
<v Speaker 4>M Yeah, for sure. The amount of times that you know,

969
00:55:28.679 --> 00:55:32.199
<v Speaker 4>let's say, at the airport, I you know I'm late

970
00:55:32.239 --> 00:55:34.280
<v Speaker 4>from I you know, I'm late for my flight, or

971
00:55:34.280 --> 00:55:36.440
<v Speaker 4>I'm worried that I'll be late for my flight. But

972
00:55:36.840 --> 00:55:40.960
<v Speaker 4>I'm overseas on a data plan. Connectivity is shitty. I

973
00:55:41.079 --> 00:55:44.960
<v Speaker 4>try to check what's going on, and I'm having frustrating

974
00:55:45.039 --> 00:55:50.920
<v Speaker 4>problems trying to get the air line website to load.

975
00:55:51.119 --> 00:55:53.320
<v Speaker 4>You know that's happened too often.

976
00:55:55.760 --> 00:56:00.239
<v Speaker 5>Yeah, I'm sure I have the same thing. It's I

977
00:56:00.320 --> 00:56:03.199
<v Speaker 5>was in the last weekend, I was with my wife

978
00:56:03.239 --> 00:56:05.840
<v Speaker 5>at Aka to pick up something. So we were at

979
00:56:05.840 --> 00:56:09.039
<v Speaker 5>the pickup point down in the parking garage, and then

980
00:56:09.079 --> 00:56:12.440
<v Speaker 5>I wanted to I was checking the my my newsletter.

981
00:56:12.480 --> 00:56:14.840
<v Speaker 5>I got a couple of new subscriptions, so I wanted

982
00:56:14.880 --> 00:56:17.079
<v Speaker 5>to go to the member list and I had to

983
00:56:17.079 --> 00:56:20.079
<v Speaker 5>do some filtering. So I clicked the filter button and

984
00:56:20.119 --> 00:56:24.039
<v Speaker 5>then this dialogue screen comes up, but it's initially it's empty.

985
00:56:24.719 --> 00:56:26.800
<v Speaker 5>There's not even a button there to close it. So

986
00:56:26.840 --> 00:56:29.880
<v Speaker 5>I was there for two minutes with this filter screen

987
00:56:29.960 --> 00:56:33.880
<v Speaker 5>that you know, blogs like more than half of the screen,

988
00:56:33.880 --> 00:56:36.559
<v Speaker 5>and I couldn't even click it away because it was

989
00:56:36.559 --> 00:56:39.519
<v Speaker 5>still loading all the stuff. It was loading everything that

990
00:56:39.679 --> 00:56:43.760
<v Speaker 5>is inside. Yeah, of course this is just bad programming.

991
00:56:43.760 --> 00:56:45.840
<v Speaker 5>They should have put the button already there and at

992
00:56:45.960 --> 00:56:49.519
<v Speaker 5>least tested it on a slow network. But if you

993
00:56:49.639 --> 00:56:53.280
<v Speaker 5>already have that, you know, framed out with a service worker,

994
00:56:53.360 --> 00:56:54.519
<v Speaker 5>that stuff wouldn't happen.

995
00:56:55.039 --> 00:56:58.239
<v Speaker 4>I have to say that, you know. Again, going to

996
00:56:58.320 --> 00:57:02.760
<v Speaker 4>our initial conversation about native apps versus web apps, even

997
00:57:02.800 --> 00:57:07.880
<v Speaker 4>with other PWA stuff, a lot of times web apps

998
00:57:07.880 --> 00:57:10.519
<v Speaker 4>are just better. For example, I've seen a lot of

999
00:57:10.679 --> 00:57:14.679
<v Speaker 4>news apps that when you go to let's say some

1000
00:57:14.840 --> 00:57:21.239
<v Speaker 4>news article. Until they load everything, they show nothing, so

1001
00:57:21.599 --> 00:57:26.199
<v Speaker 4>until it finishes downloading the largest ad or something, you

1002
00:57:26.360 --> 00:57:29.679
<v Speaker 4>basically can't read anything. And this is something the web

1003
00:57:29.719 --> 00:57:33.880
<v Speaker 4>has solved like ages ago. So it's it's so frustrating.

1004
00:57:34.000 --> 00:57:38.519
<v Speaker 4>Sometimes I just wish that, you know, that instead of

1005
00:57:38.760 --> 00:57:41.320
<v Speaker 4>using their native app, I could just use their web app,

1006
00:57:41.400 --> 00:57:46.599
<v Speaker 4>because sometimes you can't, but a lot of cases you can't. Yeah, yeah, frustrating.

1007
00:57:47.440 --> 00:57:49.840
<v Speaker 5>Yeah, yeah, yeah, I do the same thing I I.

1008
00:57:50.280 --> 00:57:52.760
<v Speaker 5>You know, sometimes I just refuse to go to the

1009
00:57:53.840 --> 00:57:57.880
<v Speaker 5>to the native app. But for example, the other day,

1010
00:57:58.000 --> 00:58:00.920
<v Speaker 5>I also write articles on mediums. The other day somebody

1011
00:58:01.599 --> 00:58:04.159
<v Speaker 5>responded to one of my articles, and then I was

1012
00:58:04.199 --> 00:58:07.119
<v Speaker 5>sitting on the couch at home with my phone and

1013
00:58:07.159 --> 00:58:09.679
<v Speaker 5>I wanted to respond, but I couldn't do it because

1014
00:58:09.679 --> 00:58:12.239
<v Speaker 5>then you have to go to the native app, which

1015
00:58:12.320 --> 00:58:15.000
<v Speaker 5>is I think it's about eighty four and a half

1016
00:58:15.239 --> 00:58:19.280
<v Speaker 5>megabytes just to fill out a form to write a comment,

1017
00:58:20.119 --> 00:58:22.719
<v Speaker 5>which is simply not of course it's possible, but it's

1018
00:58:22.719 --> 00:58:27.559
<v Speaker 5>something that they want you to download the native app for,

1019
00:58:27.719 --> 00:58:31.400
<v Speaker 5>which is ridiculous, of course, but that also feats the idea,

1020
00:58:31.440 --> 00:58:34.239
<v Speaker 5>I think to end users and maybe to developers to

1021
00:58:34.280 --> 00:58:38.159
<v Speaker 5>a certain extent, that web apps are just bad, they're inferior,

1022
00:58:38.159 --> 00:58:41.760
<v Speaker 5>they're not as good as native apps, which is of

1023
00:58:41.800 --> 00:58:44.840
<v Speaker 5>course not true. But because a lot of stuff is

1024
00:58:44.840 --> 00:58:48.719
<v Speaker 5>in native apps that is not in web apps. While

1025
00:58:48.719 --> 00:58:51.760
<v Speaker 5>it could be, or maybe it's deliberately not there, people

1026
00:58:51.800 --> 00:58:55.039
<v Speaker 5>really get the idea that web apps are inferior, and

1027
00:58:54.719 --> 00:58:58.480
<v Speaker 5>that's really a shame, I think, because it doesn't have

1028
00:58:58.559 --> 00:58:59.199
<v Speaker 5>to be that way.

1029
00:59:00.119 --> 00:59:01.000
<v Speaker 3>Yeah.

1030
00:59:00.400 --> 00:59:04.960
<v Speaker 1>So are there any things that the native apps do

1031
00:59:05.199 --> 00:59:09.920
<v Speaker 1>that the PWA's don't like? And I'm even talking about

1032
00:59:10.159 --> 00:59:14.159
<v Speaker 1>experience things like, for example, your web app does have

1033
00:59:14.199 --> 00:59:16.920
<v Speaker 1>to say ask for permission to use your camera and

1034
00:59:17.039 --> 00:59:20.400
<v Speaker 1>microphone before it works, as opposed to in a native

1035
00:59:20.400 --> 00:59:22.800
<v Speaker 1>app it just kind of does it without asking you.

1036
00:59:23.719 --> 00:59:26.559
<v Speaker 5>Yeah. Yeah, those are a couple of things.

1037
00:59:27.679 --> 00:59:27.880
<v Speaker 3>Well.

1038
00:59:27.920 --> 00:59:31.679
<v Speaker 5>For example, I think the main thing that that hinders

1039
00:59:31.719 --> 00:59:35.000
<v Speaker 5>web app is the install experience, and that's also something

1040
00:59:35.039 --> 00:59:39.840
<v Speaker 5>that Apple Apple refuses to implement properly. There is a

1041
00:59:39.880 --> 00:59:45.079
<v Speaker 5>browser API that allows you to trigger that install screen.

1042
00:59:45.639 --> 00:59:47.960
<v Speaker 5>Like I said before, in Chromium browsers, you can even

1043
00:59:48.000 --> 00:59:51.119
<v Speaker 5>have like a better screen with screenshots and a description

1044
00:59:51.840 --> 00:59:53.760
<v Speaker 5>and the name of the app, all the nice stuff

1045
00:59:53.800 --> 00:59:56.320
<v Speaker 5>that makes it look more like you're installing a native app.

1046
00:59:56.880 --> 00:59:58.679
<v Speaker 5>Apple doesn't do that. You have to go to the

1047
00:59:58.679 --> 01:00:01.119
<v Speaker 5>share screen and scroll all the way down, and then

1048
01:00:01.159 --> 01:00:05.320
<v Speaker 5>there's this add to home screen button. I think that

1049
01:00:05.480 --> 01:00:09.280
<v Speaker 5>that's the main thing that hinders us. But for the rest, yeah,

1050
01:00:09.400 --> 01:00:13.280
<v Speaker 5>it's stuff like I think there's a couple of background

1051
01:00:13.360 --> 01:00:16.119
<v Speaker 5>I think native apps can do some more stuff in

1052
01:00:16.519 --> 01:00:22.239
<v Speaker 5>the background. I'm working also on a web artisty app

1053
01:00:22.760 --> 01:00:25.760
<v Speaker 5>that you that you can it's a bit like like

1054
01:00:25.880 --> 01:00:28.519
<v Speaker 5>WhatsApp that you can make calls to each other. That's

1055
01:00:28.519 --> 01:00:31.199
<v Speaker 5>something a web app cannot do. You cannot have like

1056
01:00:31.360 --> 01:00:34.320
<v Speaker 5>a somebody is calling you screen. You know, the whole

1057
01:00:34.320 --> 01:00:39.280
<v Speaker 5>screen is lighting up, just just like you have when

1058
01:00:39.320 --> 01:00:41.800
<v Speaker 5>somebody calls you. That's something you you you cannot do.

1059
01:00:42.400 --> 01:00:45.639
<v Speaker 5>And then of course there's a lot of bugs, things

1060
01:00:45.679 --> 01:00:50.559
<v Speaker 5>that don't really work well, especially on iOS.

1061
01:00:49.719 --> 01:00:54.400
<v Speaker 4>iOS is the thing. If let's put it this way,

1062
01:00:54.480 --> 01:00:58.320
<v Speaker 4>If iOS forget about adding new features and capabilities, if

1063
01:00:58.360 --> 01:01:04.320
<v Speaker 4>iOS just added a chief sufficient parity with what Chrome

1064
01:01:04.400 --> 01:01:07.960
<v Speaker 4>already provides on Android, I would be a happy camper.

1065
01:01:08.679 --> 01:01:11.880
<v Speaker 5>Yeah yeah, yeah, me too, me too. But still there

1066
01:01:12.000 --> 01:01:14.239
<v Speaker 5>is a lot of stuff that you can already use

1067
01:01:15.320 --> 01:01:18.119
<v Speaker 5>in web apps that is still underused, like like all

1068
01:01:18.159 --> 01:01:22.280
<v Speaker 5>the APIs I'm showing here now that that can already

1069
01:01:22.280 --> 01:01:24.119
<v Speaker 5>be used across platforms.

1070
01:01:24.440 --> 01:01:27.039
<v Speaker 4>And one more thing important to note, a lot of

1071
01:01:27.079 --> 01:01:30.079
<v Speaker 4>these APIs you don't need to be a p w

1072
01:01:30.119 --> 01:01:34.639
<v Speaker 4>A to do them. Like like you know, everything having

1073
01:01:34.679 --> 01:01:36.760
<v Speaker 4>to do with the background, you need a service worker.

1074
01:01:36.760 --> 01:01:38.920
<v Speaker 4>If you want to get added to the home screen

1075
01:01:38.960 --> 01:01:42.880
<v Speaker 4>on a mobile device, you need the manifest. But if

1076
01:01:42.920 --> 01:01:46.079
<v Speaker 4>you just want to do something with audio or video,

1077
01:01:46.639 --> 01:01:49.400
<v Speaker 4>you don't need to be a p w A for that, not.

1078
01:01:49.440 --> 01:01:51.760
<v Speaker 5>At all, Not at all. You really don't need any

1079
01:01:51.920 --> 01:01:55.440
<v Speaker 5>any stuff to be a p w A like that.

1080
01:01:55.480 --> 01:01:57.519
<v Speaker 5>Like you said, it's really the background stuff and the

1081
01:01:57.559 --> 01:02:01.679
<v Speaker 5>notifications that you really need to be uh, that you

1082
01:02:01.679 --> 01:02:04.599
<v Speaker 5>need to have it installed for. But for the rest

1083
01:02:04.880 --> 01:02:08.039
<v Speaker 5>you can use everything. I can understand that, you know,

1084
01:02:08.320 --> 01:02:10.719
<v Speaker 5>companies that haven't NATed app right now are not going

1085
01:02:10.800 --> 01:02:14.360
<v Speaker 5>to bet their whole business on a web app when uh,

1086
01:02:14.480 --> 01:02:18.039
<v Speaker 5>the installed experience for iOS and Android is that different.

1087
01:02:18.639 --> 01:02:20.559
<v Speaker 5>I can understand they don't want to do that. But

1088
01:02:20.800 --> 01:02:24.039
<v Speaker 5>besides that, there is yeah, all the stuff that you

1089
01:02:24.079 --> 01:02:28.000
<v Speaker 5>can already use in a web app, and that it

1090
01:02:28.039 --> 01:02:29.880
<v Speaker 5>doesn't even need to be a p w A four.

1091
01:02:30.760 --> 01:02:33.639
<v Speaker 5>So yeah, it's it's it's really a shame that it's

1092
01:02:33.639 --> 01:02:41.280
<v Speaker 5>so underused all this stuff. Yeah, yeah, so that's yeah,

1093
01:02:41.400 --> 01:02:44.360
<v Speaker 5>that's that's basically what I'm trying to do to educate

1094
01:02:44.400 --> 01:02:48.320
<v Speaker 5>people and show them what is possible. I regularly post

1095
01:02:48.400 --> 01:02:51.639
<v Speaker 5>screen recordings as well on X when I take one

1096
01:02:51.679 --> 01:02:53.960
<v Speaker 5>of these demos and then you know, run it on

1097
01:02:54.000 --> 01:02:56.280
<v Speaker 5>a device, make a recording of it, and then show

1098
01:02:56.760 --> 01:02:59.880
<v Speaker 5>what can be done. Is to educate people and show

1099
01:02:59.880 --> 01:03:02.639
<v Speaker 5>then what is already possible and what they should be using.

1100
01:03:05.679 --> 01:03:05.880
<v Speaker 3>Yeah.

1101
01:03:05.920 --> 01:03:09.519
<v Speaker 4>Yeah, I wasn't familiar, for example, with the APIs for

1102
01:03:10.280 --> 01:03:13.199
<v Speaker 4>screen capture and element capture. That's really cool.

1103
01:03:13.840 --> 01:03:15.679
<v Speaker 5>Yeah it is, but I have to say those are

1104
01:03:15.800 --> 01:03:17.639
<v Speaker 5>quite experimental still.

1105
01:03:19.280 --> 01:03:23.800
<v Speaker 1>So yeah, so we're recording this on stream Yard, and

1106
01:03:23.840 --> 01:03:26.920
<v Speaker 1>stream Yard does that right where if you hit the

1107
01:03:26.960 --> 01:03:30.079
<v Speaker 1>button right you can share your screen.

1108
01:03:30.480 --> 01:03:33.079
<v Speaker 3>So is that not that API that they're using here?

1109
01:03:34.559 --> 01:03:36.519
<v Speaker 4>I don't think so. I think with web arty C

1110
01:03:36.719 --> 01:03:41.039
<v Speaker 4>you have the ability to just basically just capture screen,

1111
01:03:41.519 --> 01:03:45.920
<v Speaker 4>but if you want to capture specific elements on the page,

1112
01:03:46.280 --> 01:03:48.320
<v Speaker 4>I think that's more sophisticated.

1113
01:03:48.719 --> 01:03:52.559
<v Speaker 5>Okay, so I'm not aware of being able to capture

1114
01:03:52.559 --> 01:03:56.039
<v Speaker 5>screens with web artists without the browser API.

1115
01:03:56.559 --> 01:03:59.920
<v Speaker 4>Are you I'm to be honest, I'm not exactly certain

1116
01:04:00.079 --> 01:04:03.000
<v Speaker 4>how it works. But obviously you've got it in stream Yard,

1117
01:04:03.039 --> 01:04:06.079
<v Speaker 4>you've got it in Google Meet, so there are quite

1118
01:04:06.079 --> 01:04:06.639
<v Speaker 4>a number of a.

1119
01:04:07.119 --> 01:04:09.880
<v Speaker 5>Yeah okay, yeah, yeah, yeah, yeah, yeah okay yeah. In

1120
01:04:09.920 --> 01:04:11.840
<v Speaker 5>a web ap you will you will always need to

1121
01:04:11.920 --> 01:04:17.000
<v Speaker 5>have this. It's called get display media, so navigator Media

1122
01:04:17.039 --> 01:04:22.920
<v Speaker 5>devices dot get display media that you can use to

1123
01:04:22.679 --> 01:04:26.239
<v Speaker 5>to get like a screen or a browser tap or

1124
01:04:26.280 --> 01:04:29.039
<v Speaker 5>like a whole display. You can also limit that with

1125
01:04:29.119 --> 01:04:31.360
<v Speaker 5>the with the options that you can set, but you

1126
01:04:31.400 --> 01:04:36.079
<v Speaker 5>will always need that browser api, uh to to be

1127
01:04:36.159 --> 01:04:38.920
<v Speaker 5>able to share something, to get a video stream of

1128
01:04:39.360 --> 01:04:42.960
<v Speaker 5>a program or a tap or the whole screen, you

1129
01:04:43.000 --> 01:04:47.000
<v Speaker 5>will always need that. But then yeah, you could do

1130
01:04:47.079 --> 01:04:50.920
<v Speaker 5>something like, for example, you can take that video stream

1131
01:04:50.960 --> 01:04:53.079
<v Speaker 5>that you get from whatever you are sharing and then

1132
01:04:53.119 --> 01:04:56.679
<v Speaker 5>put it on the canvas and then maybe limit it

1133
01:04:57.039 --> 01:04:59.400
<v Speaker 5>or crop it or whatever. That's also something that I'm

1134
01:04:59.480 --> 01:05:04.079
<v Speaker 5>being playing with lately. But to really get like a

1135
01:05:04.159 --> 01:05:07.880
<v Speaker 5>specific thing like with the element capture that that's really

1136
01:05:07.880 --> 01:05:10.360
<v Speaker 5>what you need chron for right now. And a lot

1137
01:05:10.360 --> 01:05:13.440
<v Speaker 5>of this stuff is like I said, it's still experimental

1138
01:05:13.440 --> 01:05:16.320
<v Speaker 5>in the sense that those are origin trials, so you

1139
01:05:16.400 --> 01:05:19.199
<v Speaker 5>really need to get like an API key to h

1140
01:05:19.400 --> 01:05:23.280
<v Speaker 5>to activate it. So it's just a meta tack that

1141
01:05:23.360 --> 01:05:25.760
<v Speaker 5>you put on your in your web app and then

1142
01:05:25.760 --> 01:05:28.679
<v Speaker 5>it will be activated there. But it's not activated by

1143
01:05:28.719 --> 01:05:32.559
<v Speaker 5>default in these these browsers and.

1144
01:05:32.480 --> 01:05:35.880
<v Speaker 2>Then usually what I'm supposing that so that they can

1145
01:05:35.880 --> 01:05:38.639
<v Speaker 2>contact you when when they change it or remove it.

1146
01:05:40.440 --> 01:05:41.920
<v Speaker 2>Were about the break your side or something.

1147
01:05:42.800 --> 01:05:44.719
<v Speaker 5>No, they're not, They're they're not going to contact you.

1148
01:05:44.880 --> 01:05:48.239
<v Speaker 5>It's it's really to activate it in uh. So it's

1149
01:05:48.280 --> 01:05:52.000
<v Speaker 5>really just a metattack with a name and a long

1150
01:05:52.079 --> 01:05:55.000
<v Speaker 5>API key long string that you have to put there

1151
01:05:55.000 --> 01:05:59.079
<v Speaker 5>and then the the API will be activated and you

1152
01:05:59.239 --> 01:06:01.559
<v Speaker 5>Basically what they was it forced to test out stuff

1153
01:06:01.559 --> 01:06:05.159
<v Speaker 5>and to get a feedback from developers so you can

1154
01:06:05.280 --> 01:06:06.039
<v Speaker 5>give feedback.

1155
01:06:06.679 --> 01:06:09.840
<v Speaker 4>You know, the basic issue with the web is that

1156
01:06:09.920 --> 01:06:14.559
<v Speaker 4>once something is in, it can never be removed. Now,

1157
01:06:14.599 --> 01:06:18.039
<v Speaker 4>in the past, you know, they've tried to do things

1158
01:06:18.199 --> 01:06:24.320
<v Speaker 4>by let's say, prefixing things with the browser names like

1159
01:06:24.400 --> 01:06:28.519
<v Speaker 4>the WebKit stuff or stuff like that, and what they

1160
01:06:28.559 --> 01:06:31.599
<v Speaker 4>it ended up being is that those things had to

1161
01:06:31.639 --> 01:06:36.480
<v Speaker 4>be backwards supported as well, so they essentially landed on

1162
01:06:36.559 --> 01:06:40.519
<v Speaker 4>these origin trials as the only mechanism that seems to

1163
01:06:40.639 --> 01:06:46.800
<v Speaker 4>work to give you know, developers' ability to test things

1164
01:06:46.920 --> 01:06:53.199
<v Speaker 4>out without being tied down to particular implementation and being

1165
01:06:53.239 --> 01:06:57.079
<v Speaker 4>able to either change the APIs or even totally remove

1166
01:06:57.119 --> 01:06:59.639
<v Speaker 4>APIs if it turns out that they were bad ideas.

1167
01:07:00.119 --> 01:07:04.360
<v Speaker 5>Yeah, yeah, exactly, exactly, And Edge is doing something similar.

1168
01:07:04.400 --> 01:07:08.599
<v Speaker 5>They have their own origin trials. But then whenever there's

1169
01:07:08.639 --> 01:07:11.880
<v Speaker 5>an origin trial and chromium that also works in Edge,

1170
01:07:14.440 --> 01:07:18.880
<v Speaker 5>so you can, yeah, just activate it and play with it.

1171
01:07:18.880 --> 01:07:21.880
<v Speaker 5>It's not guaranteed that they will stay though. Sometimes they

1172
01:07:21.920 --> 01:07:25.239
<v Speaker 5>have like origin trials that end and then they don't

1173
01:07:25.239 --> 01:07:27.280
<v Speaker 5>come back, or they only come back when they've done

1174
01:07:27.320 --> 01:07:30.679
<v Speaker 5>some refining or technical stuff and then they come back.

1175
01:07:31.360 --> 01:07:34.920
<v Speaker 5>And yeah, sometimes they don't. They think it's not worth it,

1176
01:07:35.039 --> 01:07:39.280
<v Speaker 5>or maybe the API is too difficult. I think it

1177
01:07:39.280 --> 01:07:43.159
<v Speaker 5>also happened with view Transitions long ago, or there was

1178
01:07:44.119 --> 01:07:46.679
<v Speaker 5>some different name for it. It wasn't called view transitions,

1179
01:07:46.679 --> 01:07:48.480
<v Speaker 5>but that was also in an origin trial. I was

1180
01:07:48.519 --> 01:07:51.039
<v Speaker 5>also playing with it, and then it went away, and

1181
01:07:51.079 --> 01:07:54.320
<v Speaker 5>then it came back under the name view Transitions, and yeah,

1182
01:07:54.440 --> 01:08:00.760
<v Speaker 5>now it's now it's widely supported. So yeah, that's basically

1183
01:08:00.760 --> 01:08:01.480
<v Speaker 5>what they use it for.

1184
01:08:04.519 --> 01:08:04.920
<v Speaker 3>Very cool.

1185
01:08:04.960 --> 01:08:06.679
<v Speaker 1>We're kind of getting towards the end of the time

1186
01:08:06.679 --> 01:08:08.239
<v Speaker 1>that we scheduled, but I want to make sure that

1187
01:08:08.280 --> 01:08:12.000
<v Speaker 1>we've given everything a fair hearing. Is there anything else

1188
01:08:12.079 --> 01:08:16.479
<v Speaker 1>that we haven't touched on that people might be interested

1189
01:08:16.520 --> 01:08:16.760
<v Speaker 1>to know?

1190
01:08:19.560 --> 01:08:22.760
<v Speaker 5>Yeah, maybe it's quickly some APIs that are now available,

1191
01:08:22.880 --> 01:08:27.520
<v Speaker 5>Like we haven't discussed the file system API just quickly.

1192
01:08:27.640 --> 01:08:31.119
<v Speaker 5>It enables you, at least on desktop, to actually to

1193
01:08:31.199 --> 01:08:34.920
<v Speaker 5>access the actual file system of the device. So on

1194
01:08:35.000 --> 01:08:38.439
<v Speaker 5>desktop you can just create files there, read files there,

1195
01:08:38.520 --> 01:08:42.119
<v Speaker 5>you can browse through your whole file system. And then

1196
01:08:42.159 --> 01:08:45.760
<v Speaker 5>on mobile it's not available maybe in the future, but

1197
01:08:46.039 --> 01:08:48.880
<v Speaker 5>right now you only have the Origin Private file system,

1198
01:08:49.560 --> 01:08:53.479
<v Speaker 5>which is like a yeah, like a virtual file system,

1199
01:08:53.520 --> 01:08:56.880
<v Speaker 5>so it will not correspond to so called physical files

1200
01:08:56.920 --> 01:09:01.000
<v Speaker 5>on your disc. It might be in in the database

1201
01:09:01.119 --> 01:09:04.920
<v Speaker 5>or whatever. But it's also something that that photoshop on

1202
01:09:04.960 --> 01:09:08.039
<v Speaker 5>the web users. But because it's very optimized for very

1203
01:09:08.079 --> 01:09:12.359
<v Speaker 5>fast reading and writing. But from the perspective of your

1204
01:09:12.399 --> 01:09:15.560
<v Speaker 5>web app it, yeah, it just looks like a file system.

1205
01:09:16.800 --> 01:09:21.000
<v Speaker 5>That's a very nice one. And there's also the authentication. Yeah,

1206
01:09:21.039 --> 01:09:23.439
<v Speaker 5>the demo in what p w A can do today

1207
01:09:23.479 --> 01:09:25.760
<v Speaker 5>is a bit boring because I haven't really found a

1208
01:09:25.840 --> 01:09:29.119
<v Speaker 5>nice way to show it off. But the web authentication

1209
01:09:29.199 --> 01:09:33.520
<v Speaker 5>your web often for sure, it enables password less authentication,

1210
01:09:33.640 --> 01:09:38.000
<v Speaker 5>so you can just have phase ID or touch ID

1211
01:09:38.359 --> 01:09:42.880
<v Speaker 5>fingerprints to log into your web app, which is yeah,

1212
01:09:43.359 --> 01:09:46.880
<v Speaker 5>unfortunately also still an underused one, but a very nice one.

1213
01:09:47.199 --> 01:09:50.399
<v Speaker 2>Well, for the first ten years it was useless. It's

1214
01:09:50.439 --> 01:09:52.359
<v Speaker 2>only in the last eighteen months or so that the

1215
01:09:52.399 --> 01:09:57.319
<v Speaker 2>APIs have become stable. And even still the documentation out

1216
01:09:57.319 --> 01:10:02.560
<v Speaker 2>there is horrible and to understand what it is, what

1217
01:10:02.640 --> 01:10:06.199
<v Speaker 2>it does, and the simple way to use it, you know,

1218
01:10:08.119 --> 01:10:10.920
<v Speaker 2>and many companies are capitalizing on this to try to

1219
01:10:10.920 --> 01:10:14.399
<v Speaker 2>push you through their SaaS platform. But it there, there

1220
01:10:14.520 --> 01:10:18.800
<v Speaker 2>is a way, you know, there is a way to

1221
01:10:18.920 --> 01:10:20.760
<v Speaker 2>just you know, you call it with a couple of options,

1222
01:10:20.760 --> 01:10:24.760
<v Speaker 2>it generates assigned key, you send it off to the server,

1223
01:10:24.840 --> 01:10:26.760
<v Speaker 2>it verifies it with a public key, and you know

1224
01:10:26.800 --> 01:10:30.159
<v Speaker 2>you're done. You can be very simple, but it's it's

1225
01:10:30.199 --> 01:10:33.319
<v Speaker 2>not it's not marketed. Is very simple. It's certainly not

1226
01:10:33.439 --> 01:10:35.600
<v Speaker 2>profitable for any of these companies that are doing the

1227
01:10:35.680 --> 01:10:37.680
<v Speaker 2>off stuff to show you how to do it in

1228
01:10:37.720 --> 01:10:39.600
<v Speaker 2>a simple way because they want to show you the

1229
01:10:39.640 --> 01:10:43.600
<v Speaker 2>complex way, so you get roped into their so that one,

1230
01:10:43.680 --> 01:10:47.279
<v Speaker 2>that one's that one's a tragedy in a lot of

1231
01:10:47.399 --> 01:10:49.840
<v Speaker 2>and and most of the features don't don't work or

1232
01:10:49.920 --> 01:10:52.760
<v Speaker 2>unreliably like it was built. It seems to have been

1233
01:10:52.760 --> 01:10:56.039
<v Speaker 2>built around the idea of trusted platform computing. So there's

1234
01:10:56.079 --> 01:11:00.159
<v Speaker 2>a whole bunch of stuff with attestations and keys and

1235
01:11:00.359 --> 01:11:02.439
<v Speaker 2>a gu U I d S and all that, but

1236
01:11:02.479 --> 01:11:05.039
<v Speaker 2>none of it's none of it's useful at all. You

1237
01:11:05.079 --> 01:11:09.239
<v Speaker 2>can't rely on any of it because because it because

1238
01:11:09.359 --> 01:11:12.880
<v Speaker 2>the reality of that is that anybody, any any government

1239
01:11:12.960 --> 01:11:15.840
<v Speaker 2>can just spoof any of those things, because they could

1240
01:11:15.840 --> 01:11:18.239
<v Speaker 2>just open up a ubikey and get the private keyat

1241
01:11:18.399 --> 01:11:21.319
<v Speaker 2>you know, they just use X ray machine and soldering

1242
01:11:21.439 --> 01:11:26.199
<v Speaker 2>and you know, so it's it's it's it doesn't provide

1243
01:11:26.439 --> 01:11:29.239
<v Speaker 2>if you're trying to log a user into their email

1244
01:11:29.279 --> 01:11:31.680
<v Speaker 2>and it's just a Joshmo or their Twitter or whatever. Yeah,

1245
01:11:31.720 --> 01:11:36.079
<v Speaker 2>it's great, but but I mean, well sorry, the authentication

1246
01:11:36.239 --> 01:11:39.079
<v Speaker 2>mechanism is great no matter what, because what it is

1247
01:11:39.079 --> 01:11:42.000
<v Speaker 2>is it's just better than a password. But a lot

1248
01:11:42.039 --> 01:11:45.319
<v Speaker 2>of the advanced features, if you look into it, the

1249
01:11:45.560 --> 01:11:48.399
<v Speaker 2>enterprise features. None of them could be trusted at the

1250
01:11:48.439 --> 01:11:51.600
<v Speaker 2>level of a government because you can't trust that the

1251
01:11:51.640 --> 01:11:52.920
<v Speaker 2>hardware is I'm modified.

1252
01:11:53.760 --> 01:11:56.720
<v Speaker 5>Yeah, yeah, I haven't looked into a debt deep but

1253
01:11:56.920 --> 01:11:59.560
<v Speaker 5>I have to say that I was playing with the

1254
01:11:59.560 --> 01:12:02.640
<v Speaker 5>the al a metic upgrade to a pass key. So

1255
01:12:02.760 --> 01:12:06.319
<v Speaker 5>whenever you log into a website and then the browser

1256
01:12:06.640 --> 01:12:10.000
<v Speaker 5>alto fills your credentials, then you should be able to

1257
01:12:10.159 --> 01:12:14.840
<v Speaker 5>upgrade to a pass key. But that was kind of

1258
01:12:14.880 --> 01:12:17.720
<v Speaker 5>I still haven't figured out how that is supposed to work.

1259
01:12:17.720 --> 01:12:21.079
<v Speaker 5>And like you said, the documentation is very sparse around this.

1260
01:12:22.199 --> 01:12:27.239
<v Speaker 2>I'll I'll link a demo. I've got passkeys dot js

1261
01:12:27.239 --> 01:12:32.600
<v Speaker 2>dot org, and I'm gonna get the documentation for this,

1262
01:12:33.000 --> 01:12:36.319
<v Speaker 2>uh in a in a better state. But I'll just

1263
01:12:36.399 --> 01:12:38.720
<v Speaker 2>throw throw that out there because I spent a ton

1264
01:12:38.760 --> 01:12:41.000
<v Speaker 2>of time on this. One of my clients is moving

1265
01:12:41.119 --> 01:12:43.760
<v Speaker 2>to pass keys and and we wanted to get it

1266
01:12:43.800 --> 01:12:45.960
<v Speaker 2>in a way that would work reliably, and we ran

1267
01:12:46.000 --> 01:12:48.279
<v Speaker 2>into a couple of problems. And you know, it ends

1268
01:12:48.359 --> 01:12:52.159
<v Speaker 2>up being really really simple with very few caveats, but

1269
01:12:52.359 --> 01:12:55.239
<v Speaker 2>the path to learn it was frustrating. But you know,

1270
01:12:55.279 --> 01:12:57.199
<v Speaker 2>you've got your demo there and I've got mine in

1271
01:12:57.239 --> 01:13:01.159
<v Speaker 2>the get Source. I'm going to be linking to more

1272
01:13:01.199 --> 01:13:04.840
<v Speaker 2>and better documentation as I firm this up for them.

1273
01:13:04.880 --> 01:13:08.119
<v Speaker 2>But yeah, it's something where it's like I want to

1274
01:13:08.159 --> 01:13:10.640
<v Speaker 2>tell people go use this, but I don't yet have

1275
01:13:10.680 --> 01:13:13.720
<v Speaker 2>the resource to point them to that shows. Okay, you

1276
01:13:13.760 --> 01:13:15.560
<v Speaker 2>follow these steps in these steps and you're done.

1277
01:13:16.600 --> 01:13:23.000
<v Speaker 3>Yeah, yeah, all right, Well I'm gonna go ahead and

1278
01:13:23.000 --> 01:13:25.199
<v Speaker 3>push us to picks. Now.

1279
01:13:25.239 --> 01:13:27.000
<v Speaker 1>For those of you who are new to the podcast,

1280
01:13:27.039 --> 01:13:29.680
<v Speaker 1>picks are just things we shouting out about. We try

1281
01:13:29.720 --> 01:13:32.600
<v Speaker 1>and keep them short, try and keep him interesting, and

1282
01:13:32.720 --> 01:13:34.560
<v Speaker 1>I will let Dan go first.

1283
01:13:35.800 --> 01:13:40.039
<v Speaker 4>Excellent. So I've got two picks today. My first pick

1284
01:13:40.520 --> 01:13:43.880
<v Speaker 4>is a movie that we watched. It's a movie from

1285
01:13:44.640 --> 01:13:47.560
<v Speaker 4>two thousand and well, it's actually a movie from this year,

1286
01:13:47.640 --> 01:13:50.920
<v Speaker 4>although it seems that it came out last year. Originally

1287
01:13:51.000 --> 01:13:56.479
<v Speaker 4>it's called Knox Goes Away. It's starting Michael Keaton. Also

1288
01:13:56.520 --> 01:13:59.479
<v Speaker 4>I think directed the movie. Yes, I see that he did.

1289
01:14:00.399 --> 01:14:05.800
<v Speaker 4>It's crime thriller, drama sort of thing. But it's just

1290
01:14:05.840 --> 01:14:10.000
<v Speaker 4>an excellent movie. I don't want to start telling what

1291
01:14:10.079 --> 01:14:13.800
<v Speaker 4>it's about because I'll probably spoil it, so I'm going

1292
01:14:13.840 --> 01:14:16.119
<v Speaker 4>to say that, you know, just just watch it if

1293
01:14:16.119 --> 01:14:20.479
<v Speaker 4>you can. My wife and I both watched it, and

1294
01:14:20.520 --> 01:14:23.439
<v Speaker 4>we both enjoyed it very very much. It's just an

1295
01:14:23.439 --> 01:14:27.800
<v Speaker 4>excellent movie. So that would be my first pick. My

1296
01:14:27.960 --> 01:14:31.760
<v Speaker 4>second pick is I make it a point on social

1297
01:14:31.840 --> 01:14:37.560
<v Speaker 4>media to kind of separate between my technical views and

1298
01:14:37.680 --> 01:14:44.159
<v Speaker 4>opinions and posts and my let's call them political commentary

1299
01:14:44.399 --> 01:14:53.199
<v Speaker 4>social posting. So on x it's almost all technical. Sometimes

1300
01:14:53.239 --> 01:14:59.159
<v Speaker 4>I respond to stuff, but I don't just post political stuff.

1301
01:14:59.319 --> 01:15:03.119
<v Speaker 4>I make a point of it. But on Quora it's

1302
01:15:03.279 --> 01:15:06.520
<v Speaker 4>actually kind of the other way around there. Most of

1303
01:15:06.560 --> 01:15:10.880
<v Speaker 4>my posts are about you know, what's going on, as

1304
01:15:10.880 --> 01:15:14.600
<v Speaker 4>it were, So if you're interested in that part of me,

1305
01:15:15.760 --> 01:15:18.880
<v Speaker 4>you can check out my account. I'll post a link

1306
01:15:18.920 --> 01:15:22.840
<v Speaker 4>in the show notes to it, just as a point

1307
01:15:22.880 --> 01:15:27.560
<v Speaker 4>of interest. Turns out that my account is relatively popular there.

1308
01:15:28.239 --> 01:15:30.880
<v Speaker 4>Just in the past week, I've got something like almost

1309
01:15:30.880 --> 01:15:34.039
<v Speaker 4>one hundred thousand views there and something like almost a

1310
01:15:34.079 --> 01:15:37.520
<v Speaker 4>thousand up votes, so you know, some people enjoy it

1311
01:15:37.760 --> 01:15:41.199
<v Speaker 4>what I write. If you're interested, check it out, and

1312
01:15:41.359 --> 01:15:44.560
<v Speaker 4>you know, I'd appreciate the feedback. And those would be

1313
01:15:44.640 --> 01:15:45.520
<v Speaker 4>my picks for today.

1314
01:15:48.079 --> 01:15:49.560
<v Speaker 3>Awesome, how about you, aj.

1315
01:15:52.399 --> 01:15:56.439
<v Speaker 2>Well, I'm linking to both the Past Key's demo and

1316
01:15:56.479 --> 01:16:00.560
<v Speaker 2>the Past Keys presentation that I gave because I do

1317
01:16:00.600 --> 01:16:04.760
<v Speaker 2>really like past Keys. I just wish I had a yeah,

1318
01:16:04.800 --> 01:16:07.720
<v Speaker 2>like I said, a way to say, here's the quick

1319
01:16:07.760 --> 01:16:10.520
<v Speaker 2>and easy path, and I'll have that. I'll have it,

1320
01:16:10.520 --> 01:16:13.159
<v Speaker 2>it will come, but I just don't quite have yet.

1321
01:16:13.199 --> 01:16:16.760
<v Speaker 2>But the presentation I kind of go through the well,

1322
01:16:16.800 --> 01:16:18.880
<v Speaker 2>I go through the happy path, but I also explain

1323
01:16:18.960 --> 01:16:24.199
<v Speaker 2>a lot of the the pitbull pitfalls and stuff as well.

1324
01:16:24.239 --> 01:16:32.279
<v Speaker 2>But anyway, Yeah, then I also want to pick Sabine Hassenfelder.

1325
01:16:32.319 --> 01:16:35.600
<v Speaker 2>I don't know if I'm pronouncing that Sabine Sabine. I

1326
01:16:35.600 --> 01:16:42.079
<v Speaker 2>think that yeah, yeah, she is totally getting red pilled

1327
01:16:43.000 --> 01:16:45.760
<v Speaker 2>little by little, you know, I've I've watched her videos

1328
01:16:46.039 --> 01:16:53.000
<v Speaker 2>over the past year, and she is uncovering more and

1329
01:16:53.079 --> 01:16:57.199
<v Speaker 2>more and more. She's a physicist over in and I'm

1330
01:16:57.520 --> 01:17:01.479
<v Speaker 2>I'm assuming by her accent that she's in Europe, but.

1331
01:17:01.399 --> 01:17:03.720
<v Speaker 4>Maybe she is German.

1332
01:17:04.960 --> 01:17:07.800
<v Speaker 2>Yeah, does she currently live in Germany.

1333
01:17:08.119 --> 01:17:11.920
<v Speaker 4>Or well, I'm not sure where she lives right now,

1334
01:17:12.000 --> 01:17:15.760
<v Speaker 4>but she studied and worked in Germany, as I recall.

1335
01:17:16.479 --> 01:17:19.359
<v Speaker 2>Yeah, so she's a top physicist or she seems to

1336
01:17:19.399 --> 01:17:21.800
<v Speaker 2>be a top physicist, and she's been she's been on

1337
01:17:22.960 --> 01:17:29.159
<v Speaker 2>uh some of the long form podcast sites. Anyway, she

1338
01:17:29.239 --> 01:17:31.800
<v Speaker 2>got tons of great videos. Some of them I agree with,

1339
01:17:31.960 --> 01:17:35.239
<v Speaker 2>some of them I disagree with, but I've just been loving.

1340
01:17:36.199 --> 01:17:36.359
<v Speaker 5>Well.

1341
01:17:36.399 --> 01:17:40.319
<v Speaker 2>It's terrible because she's getting so depressed over the last

1342
01:17:40.319 --> 01:17:42.720
<v Speaker 2>few months as more and more stuff comes out with

1343
01:17:43.159 --> 01:17:48.279
<v Speaker 2>hoaxes in scientific papers, and you know, the foil is

1344
01:17:48.279 --> 01:17:49.079
<v Speaker 2>getting peeled back.

1345
01:17:49.399 --> 01:17:54.520
<v Speaker 4>It's worse than that. You know, hoaxes are people being certain,

1346
01:17:54.600 --> 01:18:00.199
<v Speaker 4>people being dishonest. The bigger issue is, based on my

1347
01:18:00.279 --> 01:18:04.000
<v Speaker 4>understanding of what she's saying, is that she's kind of

1348
01:18:04.119 --> 01:18:08.920
<v Speaker 4>seeing the current situation in physics as basically the death

1349
01:18:08.960 --> 01:18:13.680
<v Speaker 4>of physics. It's like physics, the field of physics, in

1350
01:18:13.720 --> 01:18:17.079
<v Speaker 4>her opinion, or at least theoretical physics, has kind of

1351
01:18:17.239 --> 01:18:22.600
<v Speaker 4>run into a wall, and she has a very pessimistic

1352
01:18:22.960 --> 01:18:27.439
<v Speaker 4>and cynical viewpoint of of you know, how that this

1353
01:18:27.600 --> 01:18:32.560
<v Speaker 4>field is progressing or should I say regressing. For example,

1354
01:18:32.560 --> 01:18:34.840
<v Speaker 4>I don't know if you know this, but the two

1355
01:18:35.000 --> 01:18:39.439
<v Speaker 4>Nobel Prize winners for physics this year aren't physicists.

1356
01:18:40.000 --> 01:18:41.880
<v Speaker 2>Yeah, she covered one of those.

1357
01:18:42.880 --> 01:18:46.039
<v Speaker 4>Yeah, they basically they got the Noble in Physics for

1358
01:18:46.159 --> 01:18:52.000
<v Speaker 4>their work on AI ne on neural nets. They were

1359
01:18:52.039 --> 01:18:54.720
<v Speaker 4>like the pioneers of neural networks or something like that.

1360
01:18:55.399 --> 01:18:59.640
<v Speaker 4>And it's kind of strange that, you know, the Nobel

1361
01:18:59.680 --> 01:19:02.359
<v Speaker 4>Prize Physics doesn't go to physicists.

1362
01:19:02.880 --> 01:19:07.159
<v Speaker 2>Yeah, well yeah, anyway, My point is I really like

1363
01:19:07.199 --> 01:19:11.319
<v Speaker 2>her channel. I think that uh, I think it's just

1364
01:19:11.319 --> 01:19:13.319
<v Speaker 2>about anybody who's interested in that sort of stuff could

1365
01:19:13.359 --> 01:19:16.439
<v Speaker 2>like it because she her viewpoints are varied. She's not

1366
01:19:16.720 --> 01:19:20.840
<v Speaker 2>towing a specific party line. She is letting herself explore.

1367
01:19:21.399 --> 01:19:24.520
<v Speaker 2>And you know, she'll criticize one thing one month and

1368
01:19:24.560 --> 01:19:26.520
<v Speaker 2>then come back and say I was wrong the next month,

1369
01:19:27.000 --> 01:19:29.760
<v Speaker 2>or well normally it's she is pro something one month

1370
01:19:29.800 --> 01:19:32.680
<v Speaker 2>and comes back and criticizes the next month. But but anyway, yeah,

1371
01:19:32.720 --> 01:19:34.000
<v Speaker 2>so I just want to I want to throw her

1372
01:19:34.079 --> 01:19:36.560
<v Speaker 2>channel out there because I I've been watching it and

1373
01:19:36.600 --> 01:19:39.800
<v Speaker 2>I and I learn a lot, and I'm very interested

1374
01:19:39.800 --> 01:19:42.279
<v Speaker 2>to see her you know, critique of video from a

1375
01:19:42.359 --> 01:19:44.720
<v Speaker 2>year ago or from two years ago or whatever. And

1376
01:19:44.760 --> 01:19:47.079
<v Speaker 2>that's uh yeah, anyway, that's that's what I got. So

1377
01:19:47.199 --> 01:19:52.479
<v Speaker 2>Paski's paskis are great. There is a happy path it.

1378
01:19:52.479 --> 01:19:54.800
<v Speaker 2>It doesn't have to be complicated. I just don't have

1379
01:19:54.880 --> 01:19:57.239
<v Speaker 2>the blog post appointed to you yet. And then Sabina

1380
01:19:57.960 --> 01:20:01.119
<v Speaker 2>Uh for her her physics videos and just hear takes

1381
01:20:01.119 --> 01:20:03.000
<v Speaker 2>on things that are that are going on in the

1382
01:20:03.000 --> 01:20:03.760
<v Speaker 2>realm of science.

1383
01:20:06.079 --> 01:20:06.399
<v Speaker 3>Cool.

1384
01:20:07.079 --> 01:20:10.119
<v Speaker 1>I'm gonna throw in some picks of my own and

1385
01:20:10.159 --> 01:20:13.079
<v Speaker 1>then we'll get some from Danny here. So the first

1386
01:20:13.159 --> 01:20:15.720
<v Speaker 1>one is I was do a board game pick. The

1387
01:20:15.800 --> 01:20:18.760
<v Speaker 1>last time I got together with my friends, we played

1388
01:20:18.800 --> 01:20:21.479
<v Speaker 1>a rousing round of the game. We played a couple

1389
01:20:21.520 --> 01:20:25.319
<v Speaker 1>of rounds. Actually, the game is essentially it's a really

1390
01:20:25.319 --> 01:20:27.840
<v Speaker 1>simple game board game. Geek waits it at one point

1391
01:20:27.920 --> 01:20:31.159
<v Speaker 1>two four, which means it's a really simple game.

1392
01:20:32.680 --> 01:20:36.159
<v Speaker 3>Essentially, it's called the game and it's hard game.

1393
01:20:36.640 --> 01:20:38.119
<v Speaker 4>It's kind of like the band.

1394
01:20:39.399 --> 01:20:43.039
<v Speaker 1>Sure that there's another variation on it, and I can't

1395
01:20:43.039 --> 01:20:45.359
<v Speaker 1>remember what it's called, but it's it's got some other

1396
01:20:45.439 --> 01:20:49.399
<v Speaker 1>simple name like that. But you have cards the number

1397
01:20:49.399 --> 01:20:51.800
<v Speaker 1>from one to one hundred. You've got four sets one

1398
01:20:51.840 --> 01:20:52.680
<v Speaker 1>to one hundred.

1399
01:20:52.960 --> 01:20:56.600
<v Speaker 3>And so you start with four piles.

1400
01:20:56.680 --> 01:20:58.520
<v Speaker 1>There are other ways to vary this, but we start

1401
01:20:58.560 --> 01:21:00.760
<v Speaker 1>with four piles to the start with one, and two

1402
01:21:00.840 --> 01:21:01.880
<v Speaker 1>that start with one hundred.

1403
01:21:02.159 --> 01:21:05.199
<v Speaker 3>I guess it's just two sets one to one.

1404
01:21:05.159 --> 01:21:07.720
<v Speaker 1>Hundred anyway, So then what you're doing is you're trying

1405
01:21:07.760 --> 01:21:10.960
<v Speaker 1>to make the cards either count up from one or

1406
01:21:11.000 --> 01:21:13.199
<v Speaker 1>down from one hundred, and you're trying to discard all

1407
01:21:13.239 --> 01:21:17.439
<v Speaker 1>the cards onto those piles, moving up or down, and

1408
01:21:17.479 --> 01:21:20.720
<v Speaker 1>you can jump backward, right, So if you're counting up,

1409
01:21:20.760 --> 01:21:24.159
<v Speaker 1>you can jump down by exactly ten, and if you're

1410
01:21:24.199 --> 01:21:26.920
<v Speaker 1>counting down from one hundred, you can jump up.

1411
01:21:27.079 --> 01:21:28.079
<v Speaker 3>By exactly ten.

1412
01:21:28.640 --> 01:21:31.640
<v Speaker 1>And if you can manage to discard all the cards

1413
01:21:31.680 --> 01:21:34.760
<v Speaker 1>out of your hands playing in turns, and it's just

1414
01:21:34.840 --> 01:21:36.359
<v Speaker 1>you have so many cards in your hand and so

1415
01:21:36.439 --> 01:21:41.800
<v Speaker 1>many cards you're playing, you win. And so anyway, it's

1416
01:21:41.880 --> 01:21:43.640
<v Speaker 1>kind of a nice game that we can kind of

1417
01:21:43.680 --> 01:21:44.399
<v Speaker 1>sit back.

1418
01:21:44.199 --> 01:21:46.239
<v Speaker 3>And chat while we play.

1419
01:21:46.399 --> 01:21:48.279
<v Speaker 1>And there was a lot to talk about this last time,

1420
01:21:48.319 --> 01:21:52.800
<v Speaker 1>and so we were having an interpersonal talk while we figured.

1421
01:21:52.520 --> 01:21:53.119
<v Speaker 3>Out what to do.

1422
01:21:53.159 --> 01:21:55.720
<v Speaker 1>And sometimes you can you can all there's a little

1423
01:21:55.720 --> 01:21:57.279
<v Speaker 1>bit of table talk that you can do. You can't

1424
01:21:57.279 --> 01:22:00.439
<v Speaker 1>tell people what numbers you have, and you can't hints

1425
01:22:00.479 --> 01:22:03.119
<v Speaker 1>that specifically tell them what numbers you have, but you

1426
01:22:03.159 --> 01:22:05.079
<v Speaker 1>can tell them, for example, I would like to play

1427
01:22:05.079 --> 01:22:07.720
<v Speaker 1>on this pile, right, And so then the other players

1428
01:22:07.800 --> 01:22:10.520
<v Speaker 1>unless they don't have any other good plays, we'll try

1429
01:22:10.560 --> 01:22:13.239
<v Speaker 1>and leave that pile alone or things like that. And

1430
01:22:13.279 --> 01:22:14.920
<v Speaker 1>so you try and get people clues as to what

1431
01:22:14.960 --> 01:22:18.359
<v Speaker 1>you can do for the pile, either you know, not

1432
01:22:18.399 --> 01:22:21.800
<v Speaker 1>playing too far out so that you know, bridge a

1433
01:22:21.840 --> 01:22:23.239
<v Speaker 1>huge gap and then you've got to figure out which

1434
01:22:23.239 --> 01:22:25.960
<v Speaker 1>other pile you can play those cards on, or you know,

1435
01:22:25.960 --> 01:22:28.399
<v Speaker 1>sometimes you're trying to hint to them, hey, I can

1436
01:22:28.479 --> 01:22:30.319
<v Speaker 1>jump this one back ten and then we can play

1437
01:22:30.319 --> 01:22:31.079
<v Speaker 1>more cards on it.

1438
01:22:31.119 --> 01:22:33.720
<v Speaker 3>So anyway, it is a super fun game.

1439
01:22:34.520 --> 01:22:38.239
<v Speaker 1>I think usually takes this half hour to play it,

1440
01:22:40.359 --> 01:22:43.720
<v Speaker 1>you know, maybe less, depending on how how hard we

1441
01:22:43.840 --> 01:22:45.720
<v Speaker 1>made the game. Right, Because you have more cards in

1442
01:22:45.760 --> 01:22:48.239
<v Speaker 1>your hand, that makes it easier. If you have to

1443
01:22:48.239 --> 01:22:50.279
<v Speaker 1>play more cards out of your hand, that makes it harder,

1444
01:22:50.760 --> 01:22:52.600
<v Speaker 1>and so you know, you can vary it that way.

1445
01:22:55.319 --> 01:22:58.880
<v Speaker 1>I think I mentioned yes or last time that I'm

1446
01:22:58.920 --> 01:23:01.600
<v Speaker 1>putting together the AI boot camp that is going to

1447
01:23:01.680 --> 01:23:05.640
<v Speaker 1>be an aidvboot camp dot com website. I'm still working

1448
01:23:05.680 --> 01:23:07.239
<v Speaker 1>on it. I've had to fix some stuff on top

1449
01:23:07.279 --> 01:23:09.960
<v Speaker 1>of devs, so I'm hoping I have that fixed up

1450
01:23:10.000 --> 01:23:10.479
<v Speaker 1>this week.

1451
01:23:11.920 --> 01:23:13.720
<v Speaker 3>And there was a.

1452
01:23:13.119 --> 01:23:15.079
<v Speaker 1>Website that I wanted to pick, but I can't remember

1453
01:23:15.079 --> 01:23:16.479
<v Speaker 1>what it is, so I'll pick it next time.

1454
01:23:17.199 --> 01:23:18.520
<v Speaker 3>Danny, what are your picks?

1455
01:23:19.079 --> 01:23:22.760
<v Speaker 5>Yeah, I had two picks, and I'd like to sneak

1456
01:23:22.840 --> 01:23:26.640
<v Speaker 5>in a third one if I have time. Yeah, Social movie. Yeah,

1457
01:23:26.680 --> 01:23:28.720
<v Speaker 5>I was just a remind us because then you mentioned

1458
01:23:28.720 --> 01:23:30.479
<v Speaker 5>the movie. Also had a nice movie I just saw.

1459
01:23:31.359 --> 01:23:33.880
<v Speaker 5>First one is the I'll past it in the chatter

1460
01:23:33.960 --> 01:23:37.920
<v Speaker 5>is the Open Web Advocacy. This is a group of

1461
01:23:37.960 --> 01:23:43.399
<v Speaker 5>engineers web developers. What they do is they provide technical

1462
01:23:43.439 --> 01:23:49.880
<v Speaker 5>information to regulators, legislators, policy makers to fight the anti

1463
01:23:49.960 --> 01:23:54.039
<v Speaker 5>competitive stuff in our industry. For example with with Google

1464
01:23:54.159 --> 01:23:57.920
<v Speaker 5>and with Apple. They do a lot of research, they

1465
01:23:58.000 --> 01:24:03.520
<v Speaker 5>publish a lot about this. Yeah, they get involved to yeah,

1466
01:24:04.039 --> 01:24:09.760
<v Speaker 5>to get rid of all kinds of anti competitive stuff. Yeah,

1467
01:24:09.880 --> 01:24:13.920
<v Speaker 5>the link is there, great organization. The second one I

1468
01:24:13.920 --> 01:24:16.680
<v Speaker 5>have is actually when I picked up here is the

1469
01:24:17.439 --> 01:24:21.960
<v Speaker 5>web components compiler Projects. What's the guy's name that from

1470
01:24:22.079 --> 01:24:25.279
<v Speaker 5>Owen Buckley that you also had in April as think

1471
01:24:25.399 --> 01:24:25.760
<v Speaker 5>on the.

1472
01:24:25.720 --> 01:24:29.680
<v Speaker 3>Show imented on this episode in YouTube.

1473
01:24:29.720 --> 01:24:34.000
<v Speaker 5>So okay, okay, cool, because it's really I'm working with

1474
01:24:34.079 --> 01:24:36.439
<v Speaker 5>web components, I'm doing a lot of service side rendering

1475
01:24:36.520 --> 01:24:40.479
<v Speaker 5>with lit elements, but there was nothing like that for you,

1476
01:24:40.760 --> 01:24:43.680
<v Speaker 5>like for Vanilla web components. So I was really happy

1477
01:24:43.680 --> 01:24:46.720
<v Speaker 5>to see that that Owen already built something like this.

1478
01:24:47.600 --> 01:24:49.840
<v Speaker 5>So I was quite quite happy with that. I mean

1479
01:24:49.920 --> 01:24:52.600
<v Speaker 5>using it and it's working quite well to do yeah,

1480
01:24:52.640 --> 01:24:57.239
<v Speaker 5>to do service side rendering for Vanilla JavaScript web components.

1481
01:24:58.359 --> 01:25:00.640
<v Speaker 5>And the third one is the movie I just saw.

1482
01:25:01.439 --> 01:25:03.600
<v Speaker 5>I think I saw it the last weekend. It's called

1483
01:25:03.600 --> 01:25:08.399
<v Speaker 5>The Whale. It's from twenty twenty two. I won't give

1484
01:25:08.439 --> 01:25:12.159
<v Speaker 5>away too much, but it's a very simple movie. It's

1485
01:25:12.239 --> 01:25:14.720
<v Speaker 5>the whole movie is set like in one room, and

1486
01:25:14.760 --> 01:25:19.399
<v Speaker 5>I always tend to like these kind of movies. It's about, yeah,

1487
01:25:19.840 --> 01:25:23.920
<v Speaker 5>a man, very unhappy man who struggles with obesity. What

1488
01:25:24.000 --> 01:25:26.000
<v Speaker 5>struck me about this movie is when it came out

1489
01:25:26.039 --> 01:25:30.279
<v Speaker 5>in twenty twenty two is the main star of it

1490
01:25:30.319 --> 01:25:32.880
<v Speaker 5>is Brendan Fraser. And I don't know if you know him,

1491
01:25:32.880 --> 01:25:35.880
<v Speaker 5>but you're probably see The Mummy and movies in that

1492
01:25:36.720 --> 01:25:40.319
<v Speaker 5>like he always played in. I always never considered him

1493
01:25:40.399 --> 01:25:43.640
<v Speaker 5>like a very good actor, but that was basically because

1494
01:25:43.680 --> 01:25:46.119
<v Speaker 5>of the movies that we played in, like like for example,

1495
01:25:46.159 --> 01:25:51.680
<v Speaker 5>The Mummy. But this is really really impressive. He plays

1496
01:25:51.800 --> 01:25:55.239
<v Speaker 5>this very obese guy in a suit, but you can't

1497
01:25:55.239 --> 01:25:57.680
<v Speaker 5>even tell it's a suit. It's amazing. You want an

1498
01:25:57.720 --> 01:26:01.600
<v Speaker 5>oscar for this great movie. Not a very happy movie,

1499
01:26:01.680 --> 01:26:05.479
<v Speaker 5>but definitely one I would would recommend you to to watch.

1500
01:26:05.560 --> 01:26:09.720
<v Speaker 5>It's called The Whale. So those are my picks.

1501
01:26:10.039 --> 01:26:13.199
<v Speaker 4>Yeah, it was. It was Brendon Frazer's comeback movie.

1502
01:26:13.319 --> 01:26:15.760
<v Speaker 5>I think, yeah, it is, it is, and what a

1503
01:26:15.800 --> 01:26:16.560
<v Speaker 5>comeback it was.

1504
01:26:18.920 --> 01:26:21.760
<v Speaker 1>Yeah, I think about it, but I I'll have to

1505
01:26:21.800 --> 01:26:22.239
<v Speaker 1>go watch it.

1506
01:26:23.079 --> 01:26:27.039
<v Speaker 5>Yeah, yeah, it's it's really Yeah. I loved it. I

1507
01:26:27.119 --> 01:26:29.560
<v Speaker 5>think the acting was really really impressive.

1508
01:26:31.920 --> 01:26:35.079
<v Speaker 3>All right, Well, I'm just gonna throw this out here.

1509
01:26:35.159 --> 01:26:41.279
<v Speaker 1>So besides the what p w A can do today,

1510
01:26:41.399 --> 01:26:44.840
<v Speaker 1>if people want to contact you, maybe volume on social

1511
01:26:44.880 --> 01:26:47.600
<v Speaker 1>media or reach out and say hey, can you help

1512
01:26:47.640 --> 01:26:49.119
<v Speaker 1>me with or train me on this stuff?

1513
01:26:49.119 --> 01:26:53.600
<v Speaker 5>I mean, yeah, yeah, sure, there's a form. There's a

1514
01:26:53.640 --> 01:26:55.760
<v Speaker 5>contact form of what people p w A can do

1515
01:26:55.800 --> 01:26:58.640
<v Speaker 5>today where people can reach me. They can find me

1516
01:26:58.720 --> 01:27:03.399
<v Speaker 5>on X then you move just my name medium shame thing.

1517
01:27:03.479 --> 01:27:06.960
<v Speaker 5>I also right there, and I also have a website

1518
01:27:07.039 --> 01:27:10.880
<v Speaker 5>it's a bit outdated, dannimookcharacter dot com where people can

1519
01:27:10.920 --> 01:27:15.319
<v Speaker 5>also fund me. So I think X would be the

1520
01:27:15.319 --> 01:27:15.840
<v Speaker 5>best way to.

1521
01:27:16.319 --> 01:27:20.479
<v Speaker 1>Richmond sounds good. All right, well we'll go ahead and

1522
01:27:20.520 --> 01:27:22.600
<v Speaker 1>wrap it up. Thanks for coming. This was really great.

1523
01:27:23.520 --> 01:27:27.000
<v Speaker 5>Thank you for having me. I really enjoyed it absolutely

1524
01:27:27.760 --> 01:27:29.920
<v Speaker 3>All right, Well until next time, folks, Max A
