WEBVTT

1
00:00:02.925 --> 00:00:03.215
Yeah.

2
00:00:03.225 --> 00:00:06.535
<00:00:03.225>Thank <00:00:03.400>you. <00:00:03.575>Um, <00:00:03.750>pineapple <00:00:03.925>and <00:00:04.100>pizza <00:00:04.275>is <00:00:04.450>great, <00:00:04.625>um,

3
00:00:07.335 --> 00:00:09.135
<00:00:07.335>although <00:00:07.568>not <00:00:07.801>everybody <00:00:08.035>would <00:00:08.268>agree, <00:00:08.501>I <00:00:08.735>guess,

4
00:00:09.195 --> 00:00:11.815
<00:00:09.195>but <00:00:09.428>Well, <00:00:09.661>I <00:00:09.895>can <00:00:10.128>only <00:00:10.361>recommend <00:00:10.595>it.

5
00:00:12.485 --> 00:00:16.645
<00:00:12.485>Yeah. <00:00:12.660>So, <00:00:12.834>um, <00:00:13.010>uh, <00:00:13.184>let's <00:00:13.360>talk <00:00:13.535>about <00:00:13.709>some <00:00:13.885>fugu.

6
00:00:16.805 --> 00:00:18.845
<00:00:16.805>Fugu, <00:00:16.945>by <00:00:17.085>the <00:00:17.225>way, <00:00:17.365>is <00:00:17.505>also <00:00:17.645>something <00:00:17.785>that <00:00:17.925>you <00:00:18.064>can <00:00:18.205>eat,

7
00:00:18.915 --> 00:00:20.445
<00:00:18.915>just <00:00:19.374>like <00:00:19.833>pineapple <00:00:20.292>pizza.

8
00:00:21.145 --> 00:00:24.125
<00:00:21.145>So, <00:00:21.300>uh, <00:00:21.456>it's, <00:00:21.611>uh, <00:00:21.767>it <00:00:21.922>fits, <00:00:22.078>uh, <00:00:22.233>into <00:00:22.389>that <00:00:22.544>topic.

9
00:00:24.555 --> 00:00:26.845
<00:00:24.555>Alright, <00:00:24.788>so <00:00:25.021>let's, <00:00:25.255>let's <00:00:25.488>start <00:00:25.721>with <00:00:25.955>that.

10
00:00:27.305 --> 00:00:31.655
<00:00:27.305>Um, <00:00:27.538>product <00:00:27.771>Fugu <00:00:28.005>is <00:00:28.238>related <00:00:28.471>to <00:00:28.705>PWAs,

11
00:00:31.655 --> 00:00:32.695
<00:00:31.655>as <00:00:31.788>you <00:00:31.922>can <00:00:32.056>see <00:00:32.189>it <00:00:32.323>in <00:00:32.457>the <00:00:32.591>title.

12
00:00:32.845 --> 00:00:33.975
<00:00:32.845>It's <00:00:33.353>progressive <00:00:33.862>super.

13
00:00:34.115 --> 00:00:37.015
<00:00:34.115>Uh, <00:00:34.290>it's, <00:00:34.465>sorry, <00:00:34.640>it's <00:00:34.815>progressive <00:00:34.990>web <00:00:35.165>webs, <00:00:35.340>but <00:00:35.515>superpower.

14
00:00:37.555 --> 00:00:38.695
<00:00:37.555>So <00:00:37.811>what <00:00:38.068>does <00:00:38.324>that <00:00:38.581>mean?

15
00:00:39.575 --> 00:00:41.335
<00:00:39.575>Progressive <00:00:39.808>web <00:00:40.041>webs, <00:00:40.275>maybe <00:00:40.508>you've <00:00:40.741>seen <00:00:40.975>that.

16
00:00:41.395 --> 00:00:46.255
<00:00:41.395>Uh, <00:00:41.570>talk <00:00:41.745>yesterday. <00:00:41.920>Um, <00:00:42.095>is <00:00:42.270>a <00:00:42.445>group <00:00:42.620>of, <00:00:42.795>uh,

17
00:00:46.255 --> 00:00:50.255
<00:00:46.255>technical <00:00:46.535>specifications, <00:00:46.815>um, <00:00:47.095>most <00:00:47.375>notably, <00:00:47.655>uh,

18
00:00:50.255 --> 00:00:52.535
<00:00:50.255>the <00:00:50.430>web <00:00:50.605>app <00:00:50.780>manifest <00:00:50.955>here <00:00:51.130>on <00:00:51.305>the <00:00:51.480>left <00:00:51.655>side.

19
00:00:52.535 --> 00:00:55.295
<00:00:52.535>And <00:00:52.675>the <00:00:52.815>service <00:00:52.955>worker <00:00:53.095>on <00:00:53.235>the <00:00:53.375>right <00:00:53.514>side, <00:00:53.654>right <00:00:53.794>side <00:00:53.934>here.

20
00:00:55.755 --> 00:00:58.095
<00:00:55.755>Uh, <00:00:55.955>the <00:00:56.155>web, <00:00:56.355>web <00:00:56.555>manifests <00:00:56.755>allows <00:00:56.955>you <00:00:57.155>to

21
00:00:58.605 --> 00:01:01.695
<00:00:58.605>install <00:00:58.838>your <00:00:59.071>application <00:00:59.305>to <00:00:59.538>the <00:00:59.771>user's <00:01:00.004>device.

22
00:01:01.925 --> 00:01:05.055
<00:01:01.925>That <00:01:02.065>means <00:01:02.205>that <00:01:02.345>your <00:01:02.485>application <00:01:02.625>will <00:01:02.765>get <00:01:02.904>an <00:01:03.044>icon <00:01:03.184>in <00:01:03.324>the

23
00:01:05.055 --> 00:01:06.895
<00:01:05.055>dock <00:01:05.405>or <00:01:05.755>on <00:01:06.105>the <00:01:06.455>desktop.

24
00:01:07.885 --> 00:01:09.425
<00:01:07.885>And <00:01:08.083>with <00:01:08.281>the <00:01:08.479>help <00:01:08.677>of <00:01:08.875>the <00:01:09.073>service <00:01:09.271>worker,

25
00:01:09.525 --> 00:01:11.825
<00:01:09.525>you <00:01:09.805>can <00:01:10.085>keep <00:01:10.365>this <00:01:10.645>application <00:01:10.925>offline.

26
00:01:12.125 --> 00:01:15.025
<00:01:12.125>And <00:01:12.241>that <00:01:12.358>means <00:01:12.475>that <00:01:12.591>it <00:01:12.708>will <00:01:12.825>not <00:01:12.941>only <00:01:13.058>run <00:01:13.175>if <00:01:13.291>you <00:01:13.408>don't <00:01:13.525>have

27
00:01:15.125 --> 00:01:16.745
<00:01:15.125>any <00:01:15.591>internet <00:01:16.058>connection <00:01:16.525>anymore,

28
00:01:17.045 --> 00:01:19.745
<00:01:17.045>but <00:01:17.245>it <00:01:17.445>will <00:01:17.645>also <00:01:17.845>run <00:01:18.045>super <00:01:18.245>fast, <00:01:18.445>um,

29
00:01:19.745 --> 00:01:23.225
<00:01:19.745>because <00:01:19.900>it <00:01:20.056>can <00:01:20.211>cache <00:01:20.367>the <00:01:20.522>assets <00:01:20.678>of <00:01:20.833>your <00:01:20.989>application <00:01:21.145>on,

30
00:01:23.485 --> 00:01:25.265
<00:01:23.485>uh, <00:01:23.951>your <00:01:24.418>client's <00:01:24.885>device.

31
00:01:26.555 --> 00:01:27.935
<00:01:26.555>Now, <00:01:26.969>PWAs <00:01:27.383>are <00:01:27.797>great

32
00:01:28.035 --> 00:01:30.815
<00:01:28.035>and <00:01:28.162>they <00:01:28.289>work <00:01:28.416>in <00:01:28.544>most <00:01:28.671>browsers <00:01:28.798>for <00:01:28.925>a <00:01:29.053>couple <00:01:29.180>of <00:01:29.307>years <00:01:29.435>now,

33
00:01:31.155 --> 00:01:32.935
<00:01:31.155>but <00:01:31.505>still <00:01:31.855>they're <00:01:32.205>somehow <00:01:32.555>restricted.

34
00:01:33.435 --> 00:01:37.935
<00:01:33.435>Um, <00:01:33.610>here, <00:01:33.785>uh, <00:01:33.960>we <00:01:34.135>have <00:01:34.310>a <00:01:34.485>little <00:01:34.660>overview <00:01:34.835>of

35
00:01:37.935 --> 00:01:39.335
<00:01:37.935>what <00:01:38.187>you <00:01:38.439>can <00:01:38.691>do <00:01:38.943>with <00:01:39.195>PWA.

36
00:01:39.555 --> 00:01:41.575
<00:01:39.555>For <00:01:39.788>example, <00:01:40.021>as <00:01:40.255>I've <00:01:40.488>just <00:01:40.721>said, <00:01:40.955>uh,

37
00:01:41.575 --> 00:01:44.175
<00:01:41.575>they <00:01:41.855>can <00:01:42.135>be <00:01:42.415>offline <00:01:42.695>capable, <00:01:42.975>uh,

38
00:01:44.475 --> 00:01:46.815
<00:01:44.475>on <00:01:44.824>some <00:01:45.175>browsers <00:01:45.524>except <00:01:45.875>Safari.

39
00:01:46.915 --> 00:01:50.775
<00:01:46.914>You <00:01:47.070>can <00:01:47.226>even <00:01:47.381>send <00:01:47.537>push <00:01:47.692>messages, <00:01:47.848>uh, <00:01:48.003>to <00:01:48.159>your <00:01:48.315>PWAs.

40
00:01:51.515 --> 00:01:55.815
<00:01:51.515>And <00:01:51.642>from <00:01:51.769>a <00:01:51.896>pwa <00:01:52.024>you <00:01:52.151>can <00:01:52.278>even <00:01:52.405>access, <00:01:52.533>um, <00:01:52.660>the <00:01:52.787>user's <00:01:52.915>webcam

41
00:01:56.035 --> 00:01:58.975
<00:01:56.035>or <00:01:56.190>microphone, <00:01:56.346>which <00:01:56.501>we <00:01:56.657>may <00:01:56.812>have <00:01:56.968>used <00:01:57.123>during <00:01:57.279>the <00:01:57.435>pandemic.

42
00:02:00.475 --> 00:02:02.335
<00:02:00.475>And <00:02:00.708>this <00:02:00.941>sounds <00:02:01.175>great <00:02:01.408>and <00:02:01.641>sounds <00:02:01.875>cool,

43
00:02:02.335 --> 00:02:04.735
<00:02:02.335>and <00:02:02.509>there's <00:02:02.684>lots <00:02:02.860>of <00:02:03.035>other <00:02:03.210>APIs <00:02:03.384>that <00:02:03.559>are, <00:02:03.735>uh,

44
00:02:04.735 --> 00:02:07.175
<00:02:04.735>implemented <00:02:04.910>in <00:02:05.085>the <00:02:05.260>web <00:02:05.435>and <00:02:05.610>that <00:02:05.785>PWAs <00:02:05.960>can <00:02:06.135>use.

45
00:02:07.285 --> 00:02:09.775
<00:02:07.285>However, <00:02:07.634>there <00:02:07.985>are <00:02:08.335>still <00:02:08.685>APIs

46
00:02:09.875 --> 00:02:13.255
<00:02:09.875>and, <00:02:10.074>uh, <00:02:10.275>capabilities <00:02:10.475>that <00:02:10.675>your <00:02:10.875>PWAs <00:02:11.075>cannot <00:02:11.275>use,

47
00:02:13.835 --> 00:02:17.535
<00:02:13.835>and <00:02:13.990>they <00:02:14.146>include, <00:02:14.301>for <00:02:14.457>example, <00:02:14.612>the <00:02:14.768>file <00:02:14.923>system <00:02:15.079>access, <00:02:15.235>um,

48
00:02:17.635 --> 00:02:19.335
<00:02:17.635>or <00:02:18.101>raw <00:02:18.568>clipboard <00:02:19.035>access

49
00:02:19.475 --> 00:02:22.255
<00:02:19.475>or, <00:02:19.708>um, <00:02:19.941>accessing <00:02:20.174>your <00:02:20.408>local <00:02:20.641>font <00:02:20.875>table.

50
00:02:23.525 --> 00:02:26.425
<00:02:23.525>But <00:02:23.875>these <00:02:24.225>are <00:02:24.575>capabilities <00:02:24.925>that

51
00:02:26.985 --> 00:02:28.465
<00:02:26.985>powerful <00:02:27.318>applications <00:02:27.651>need <00:02:27.984>to <00:02:28.317>use.

52
00:02:28.885 --> 00:02:32.105
<00:02:28.885>And <00:02:28.984>so <00:02:29.084>if <00:02:29.185>we <00:02:29.285>want <00:02:29.385>to <00:02:29.484>port <00:02:29.584>them <00:02:29.685>over <00:02:29.785>to <00:02:29.885>the <00:02:29.984>web, <00:02:30.084>if <00:02:30.185>we <00:02:30.285>want

53
00:02:32.105 --> 00:02:35.785
<00:02:32.105>to <00:02:32.244>build <00:02:32.385>progressive <00:02:32.524>web <00:02:32.665>apps <00:02:32.804>that <00:02:32.945>can, <00:02:33.084>um, <00:02:33.225>yeah, <00:02:33.364>make <00:02:33.505>use

54
00:02:35.785 --> 00:02:40.065
<00:02:35.785>of <00:02:35.924>those <00:02:36.065>native <00:02:36.204>integrations <00:02:36.345>here, <00:02:36.484>we <00:02:36.625>need <00:02:36.765>some <00:02:36.905>sort <00:02:37.045>of <00:02:37.185>API

55
00:02:40.405 --> 00:02:42.625
<00:02:40.405>to <00:02:40.638>to <00:02:40.871>gain <00:02:41.105>access <00:02:41.338>to <00:02:41.571>those <00:02:41.805>capabilities.

56
00:02:44.205 --> 00:02:47.185
<00:02:44.204>Now, <00:02:44.380>this <00:02:44.554>is <00:02:44.730>where <00:02:44.904>the <00:02:45.079>fugu <00:02:45.255>comes <00:02:45.429>into <00:02:45.605>play.

57
00:02:47.745 --> 00:02:51.865
<00:02:47.745>Fugu <00:02:47.945>is, <00:02:48.145>uh, <00:02:48.345>Japanese <00:02:48.545>and, <00:02:48.745>um, <00:02:48.945>means, <00:02:49.145>and,

58
00:02:51.925 --> 00:02:54.865
<00:02:51.925>and <00:02:52.080>yeah, <00:02:52.236>it's <00:02:52.391>basically <00:02:52.547>the, <00:02:52.702>the <00:02:52.858>flesh <00:02:53.013>of <00:02:53.169>the <00:02:53.325>blowfish.

59
00:02:55.445 --> 00:02:59.915
<00:02:55.445>Uh, <00:02:55.620>and <00:02:55.795>you <00:02:55.970>can <00:02:56.144>eat <00:02:56.320>this, <00:02:56.495>um, <00:02:56.670>powerful <00:02:56.845>blowfish.

60
00:03:00.065 --> 00:03:03.315
<00:03:00.065>However, <00:03:00.298>it <00:03:00.531>is <00:03:00.765>a <00:03:00.998>little <00:03:01.231>bit <00:03:01.465>dangerous

61
00:03:03.745 --> 00:03:06.595
<00:03:03.745>because, <00:03:04.445>um, <00:03:05.145>the,

62
00:03:06.655 --> 00:03:08.795
<00:03:06.655>the <00:03:07.005>blowfish <00:03:07.355>here <00:03:07.705>is <00:03:08.055>poisonous.

63
00:03:09.055 --> 00:03:13.915
<00:03:09.055>So <00:03:09.171>if, <00:03:09.288>uh, <00:03:09.405>the <00:03:09.521>like <00:03:09.638>meat <00:03:09.755>is <00:03:09.871>prepared <00:03:09.988>in <00:03:10.105>the <00:03:10.221>wrong <00:03:10.338>way, <00:03:10.455>uh,

64
00:03:13.915 --> 00:03:16.955
<00:03:13.915>it's <00:03:14.090>potentially <00:03:14.265>hazardous, <00:03:14.440>you <00:03:14.614>could <00:03:14.790>even <00:03:14.965>die <00:03:15.140>from <00:03:15.315>that.

65
00:03:17.855 --> 00:03:22.155
<00:03:17.855>So <00:03:17.994>it's <00:03:18.135>very <00:03:18.274>important <00:03:18.415>to <00:03:18.554>make <00:03:18.695>sure <00:03:18.834>that <00:03:18.975>yeah, <00:03:19.114>you <00:03:19.255>prepare

66
00:03:22.465 --> 00:03:23.795
<00:03:22.465>that <00:03:23.063>meal <00:03:23.662>correctly.

67
00:03:25.175 --> 00:03:28.715
<00:03:25.175>Now, <00:03:25.455>um, <00:03:25.735>if <00:03:26.015>you <00:03:26.295>compare <00:03:26.575>that

68
00:03:28.855 --> 00:03:31.915
<00:03:28.855>to <00:03:29.010>those <00:03:29.166>new <00:03:29.321>APIs <00:03:29.477>that <00:03:29.632>we <00:03:29.788>should, <00:03:29.943>that <00:03:30.099>we <00:03:30.255>want

69
00:03:31.915 --> 00:03:34.195
<00:03:31.915>to <00:03:32.070>get <00:03:32.226>in <00:03:32.381>the <00:03:32.537>web, <00:03:32.692>it's, <00:03:32.848>it's <00:03:33.003>likely <00:03:33.159>the <00:03:33.315>same.

70
00:03:34.735 --> 00:03:38.415
<00:03:34.735>So, <00:03:34.968>um, <00:03:35.201>accessing <00:03:35.435>the <00:03:35.668>file <00:03:35.901>system <00:03:36.135>is

71
00:03:38.475 --> 00:03:40.415
<00:03:38.475>of <00:03:38.825>course <00:03:39.174>very <00:03:39.525>dangerous, <00:03:39.875>right?

72
00:03:40.435 --> 00:03:42.935
<00:03:40.435>You <00:03:40.635>could <00:03:40.835>do <00:03:41.035>messy <00:03:41.235>stuff <00:03:41.435>with <00:03:41.635>it <00:03:41.835>if

73
00:03:43.795 --> 00:03:45.095
<00:03:43.795>you <00:03:43.962>would <00:03:44.129>do <00:03:44.296>it <00:03:44.463>in <00:03:44.630>the <00:03:44.797>wrong <00:03:44.965>way,

74
00:03:45.555 --> 00:03:48.415
<00:03:45.555>but <00:03:45.730>also <00:03:45.905>it's <00:03:46.080>super <00:03:46.255>cool <00:03:46.430>to <00:03:46.605>have <00:03:46.780>that <00:03:46.955>feature.

75
00:03:48.995 --> 00:03:53.055
<00:03:48.995>Um, <00:03:49.170>and <00:03:49.345>again, <00:03:49.520>this, <00:03:49.695>this <00:03:49.870>blowfish, <00:03:50.045>uh, <00:03:50.220>meal <00:03:50.395>is,

76
00:03:53.395 --> 00:03:55.735
<00:03:53.395>is <00:03:53.595>very <00:03:53.795>interesting <00:03:53.995>because <00:03:54.195>it's <00:03:54.395>makes <00:03:54.595>your <00:03:54.795>feel,

77
00:03:56.045 --> 00:03:57.695
<00:03:56.045>your <00:03:56.278>tongue <00:03:56.511>feel <00:03:56.745>a <00:03:56.978>little <00:03:57.211>bit <00:03:57.445>dizzy.

78
00:03:58.315 --> 00:04:00.695
<00:03:58.315>So <00:03:58.548>it's <00:03:58.781>also <00:03:59.015>nice <00:03:59.248>to <00:03:59.481>have <00:03:59.715>it.

79
00:04:01.155 --> 00:04:04.095
<00:04:01.155>And <00:04:01.330>that's <00:04:01.505>basically <00:04:01.680>what <00:04:01.855>Project <00:04:02.030>Fugu <00:04:02.205>is <00:04:02.380>about, <00:04:02.555>trying

80
00:04:04.095 --> 00:04:05.855
<00:04:04.095>to <00:04:04.328>give <00:04:04.561>you <00:04:04.795>as <00:04:05.028>web <00:04:05.261>developers <00:04:05.495>access

81
00:04:05.875 --> 00:04:07.775
<00:04:05.875>to <00:04:06.225>those <00:04:06.575>interesting <00:04:06.925>new <00:04:07.275>APIs,

82
00:04:08.115 --> 00:04:11.135
<00:04:08.115>but <00:04:08.231>at <00:04:08.348>the <00:04:08.465>same <00:04:08.581>time, <00:04:08.698>make <00:04:08.815>sure <00:04:08.931>that <00:04:09.048>you <00:04:09.165>don't <00:04:09.281>die <00:04:09.398>from <00:04:09.515>it.

83
00:04:13.625 --> 00:04:16.345
<00:04:13.625>Fugu <00:04:13.858>is <00:04:14.091>an <00:04:14.325>initiative <00:04:14.558>by <00:04:14.791>three <00:04:15.025>different

84
00:04:16.695 --> 00:04:18.825
<00:04:16.695>vendors <00:04:17.394>or <00:04:18.094>companies.

85
00:04:19.325 --> 00:04:22.625
<00:04:19.325>Um, <00:04:19.464>the <00:04:19.604>first <00:04:19.745>one <00:04:19.885>is <00:04:20.024>Google, <00:04:20.164>the <00:04:20.305>second <00:04:20.445>one <00:04:20.584>is <00:04:20.724>Intel,

86
00:04:22.845 --> 00:04:24.745
<00:04:22.845>and <00:04:23.125>the <00:04:23.405>third <00:04:23.685>one <00:04:23.965>is <00:04:24.245>Microsoft.

87
00:04:25.045 --> 00:04:26.465
<00:04:25.045>And <00:04:25.300>I <00:04:25.556>guess <00:04:25.811>Google <00:04:26.067>makes <00:04:26.323>sense

88
00:04:26.465 --> 00:04:28.345
<00:04:26.465>because <00:04:26.744>they <00:04:27.025>have <00:04:27.304>this <00:04:27.585>Chrome <00:04:27.864>browser,

89
00:04:28.655 --> 00:04:31.625
<00:04:28.655>they <00:04:28.888>have <00:04:29.121>Chromebooks, <00:04:29.354>so <00:04:29.588>entire <00:04:29.821>operating <00:04:30.054>system

90
00:04:31.625 --> 00:04:33.145
<00:04:31.625>that <00:04:31.898>is <00:04:32.172>based <00:04:32.445>on <00:04:32.719>a <00:04:32.993>browser.

91
00:04:33.645 --> 00:04:37.585
<00:04:33.645>And <00:04:33.784>of <00:04:33.924>course <00:04:34.065>they <00:04:34.205>want <00:04:34.344>their <00:04:34.484>native <00:04:34.625>application <00:04:34.765>model <00:04:34.905>to <00:04:35.044>be

92
00:04:37.585 --> 00:04:39.065
<00:04:37.585>as <00:04:37.851>powerful <00:04:38.117>as <00:04:38.384>it <00:04:38.650>can <00:04:38.917>be.

93
00:04:40.105 --> 00:04:42.435
<00:04:40.105>Then <00:04:40.455>Microsoft <00:04:40.805>also <00:04:41.155>makes <00:04:41.505>sense.

94
00:04:42.865 --> 00:04:45.795
<00:04:42.865>They <00:04:43.005>have <00:04:43.145>the <00:04:43.285>Edge <00:04:43.425>browser, <00:04:43.565>which <00:04:43.705>is <00:04:43.845>now <00:04:43.985>based <00:04:44.125>on <00:04:44.265>chromium.

95
00:04:46.595 --> 00:04:49.655
<00:04:46.595>Um, <00:04:46.750>they <00:04:46.906>have <00:04:47.061>had, <00:04:47.217>uh, <00:04:47.372>in <00:04:47.528>the <00:04:47.683>future, <00:04:47.839>uh, <00:04:47.995>sorry,

96
00:04:49.655 --> 00:04:54.415
<00:04:49.655>in <00:04:49.810>the <00:04:49.966>past, <00:04:50.121>some, <00:04:50.277>um, <00:04:50.432>stripped <00:04:50.588>down <00:04:50.743>versions <00:04:50.899>of <00:04:51.054>Windows

97
00:04:54.845 --> 00:04:58.895
<00:04:54.845>that <00:04:55.000>would <00:04:55.156>not <00:04:55.311>include <00:04:55.467>the <00:04:55.622>old <00:04:55.778>entire <00:04:55.933>WIN <00:04:56.089>32 <00:04:56.245>API,

98
00:04:58.895 --> 00:05:01.175
<00:04:58.895>but <00:04:59.245>instead <00:04:59.594>only <00:04:59.945>support, <00:05:00.294>um,

99
00:05:02.035 --> 00:05:03.735
<00:05:02.035>WIN <00:05:02.385>RT <00:05:02.735>applications <00:05:03.085>for <00:05:03.435>example.

100
00:05:04.315 --> 00:05:07.815
<00:05:04.315>And <00:05:04.490>also <00:05:04.665>they <00:05:04.840>have <00:05:05.015>ever <00:05:05.190>been <00:05:05.365>very <00:05:05.540>web <00:05:05.715>friendly.

101
00:05:08.315 --> 00:05:09.815
<00:05:08.315>Uh, <00:05:08.540>so <00:05:08.765>they <00:05:08.990>also <00:05:09.215>like <00:05:09.440>the <00:05:09.665>web

102
00:05:10.035 --> 00:05:13.615
<00:05:10.035>and <00:05:10.175>uh, <00:05:10.315>you <00:05:10.455>can <00:05:10.595>even <00:05:10.735>upload <00:05:10.875>your <00:05:11.015>PWAs <00:05:11.155>to <00:05:11.295>their <00:05:11.435>store.

103
00:05:13.755 --> 00:05:16.215
<00:05:13.755>So <00:05:14.034>it's <00:05:14.315>a <00:05:14.594>well-supported <00:05:14.875>application <00:05:15.155>platform.

104
00:05:17.885 --> 00:05:21.315
<00:05:17.885>Intel <00:05:18.040>sounds <00:05:18.196>a <00:05:18.351>little <00:05:18.507>bit <00:05:18.662>interesting <00:05:18.818>here <00:05:18.973>in <00:05:19.129>this <00:05:19.284>role

105
00:05:21.315 --> 00:05:24.035
<00:05:21.315>of <00:05:21.490>companies <00:05:21.665>because <00:05:21.840>Intel <00:05:22.015>does <00:05:22.190>not <00:05:22.365>have <00:05:22.540>a <00:05:22.715>browser,

106
00:05:24.815 --> 00:05:28.515
<00:05:24.815>but <00:05:25.015>they <00:05:25.215>are, <00:05:25.415>um, <00:05:25.615>a <00:05:25.815>manufacturer <00:05:26.015>of <00:05:26.215>processes

107
00:05:28.815 --> 00:05:32.275
<00:05:28.815>and <00:05:28.955>what <00:05:29.094>they <00:05:29.235>have <00:05:29.375>found <00:05:29.515>out <00:05:29.655>in <00:05:29.795>their <00:05:29.935>telemetry <00:05:30.075>data <00:05:30.215>is

108
00:05:32.465 --> 00:05:36.955
<00:05:32.465>that <00:05:32.581>users <00:05:32.698>spend <00:05:32.815>over <00:05:32.931>half <00:05:33.048>of <00:05:33.165>their <00:05:33.281>time <00:05:33.398>when <00:05:33.515>the <00:05:33.631>PC <00:05:33.748>is <00:05:33.865>on,

109
00:05:37.415 --> 00:05:40.675
<00:05:37.415>um, <00:05:37.648>in <00:05:37.881>a <00:05:38.115>web <00:05:38.348>browser, <00:05:38.581>mostly <00:05:38.815>Chrome.

110
00:05:41.215 --> 00:05:43.555
<00:05:41.215>And <00:05:41.565>that <00:05:41.915>means <00:05:42.265>that, <00:05:42.615>yeah,

111
00:05:43.845 --> 00:05:48.035
<00:05:43.845>Intel <00:05:44.000>also <00:05:44.156>is <00:05:44.311>very <00:05:44.467>interested <00:05:44.622>in <00:05:44.778>making <00:05:44.933>the <00:05:45.089>number <00:05:45.245>one

112
00:05:48.035 --> 00:05:50.235
<00:05:48.034>application <00:05:48.314>on <00:05:48.594>their <00:05:48.874>platform <00:05:49.155>to <00:05:49.434>be

113
00:05:50.235 --> 00:05:51.515
<00:05:50.235>as <00:05:50.465>powerful <00:05:50.695>as <00:05:50.926>it <00:05:51.156>can <00:05:51.387>be.

114
00:05:52.965 --> 00:05:55.665
<00:05:52.965>Now, <00:05:53.120>the <00:05:53.276>common <00:05:53.431>goal <00:05:53.587>of <00:05:53.742>these <00:05:53.898>three <00:05:54.053>different <00:05:54.209>vendors <00:05:54.365>is

115
00:05:55.845 --> 00:05:58.885
<00:05:55.845>to <00:05:56.045>bring <00:05:56.245>the <00:05:56.445>web <00:05:56.645>back <00:05:56.845>API <00:05:57.045>by <00:05:57.245>API.

116
00:05:58.885 --> 00:06:02.165
<00:05:58.885>This <00:05:59.012>is <00:05:59.139>what, <00:05:59.266>uh, <00:05:59.394>Thomas <00:05:59.521>Steiner <00:05:59.648>says, <00:05:59.775>one <00:05:59.903>of <00:06:00.030>the <00:06:00.157>dere <00:06:00.284>uh,

117
00:06:02.165 --> 00:06:04.565
<00:06:02.165>team <00:06:02.365>members <00:06:02.565>at <00:06:02.765>the <00:06:02.965>Fugu <00:06:03.165>team <00:06:03.365>at <00:06:03.565>Google.

118
00:06:05.965 --> 00:06:09.705
<00:06:05.965>Now <00:06:06.081>I <00:06:06.198>want <00:06:06.315>to <00:06:06.431>show <00:06:06.548>you <00:06:06.664>a <00:06:06.781>demonstration <00:06:06.898>of <00:06:07.015>what <00:06:07.131>you <00:06:07.248>can <00:06:07.364>do

119
00:06:09.705 --> 00:06:11.145
<00:06:09.705>with <00:06:10.137>Project <00:06:10.568>Fugu <00:06:11.001>APIs.

120
00:06:11.445 --> 00:06:13.505
<00:06:11.445>And <00:06:11.600>the <00:06:11.756>core <00:06:11.911>thing <00:06:12.067>is <00:06:12.222>that <00:06:12.378>you <00:06:12.533>can <00:06:12.689>also <00:06:12.844>try

121
00:06:13.505 --> 00:06:14.625
<00:06:13.505>it <00:06:13.757>out <00:06:14.009>on <00:06:14.261>your <00:06:14.513>device.

122
00:06:15.125 --> 00:06:17.505
<00:06:15.125>Um, <00:06:15.300>just <00:06:15.475>open <00:06:15.650>a <00:06:15.825>new <00:06:16.000>tab <00:06:16.175>if <00:06:16.350>you <00:06:16.525>like,

123
00:06:17.605 --> 00:06:19.145
<00:06:17.605>or <00:06:17.882>just <00:06:18.159>use <00:06:18.436>your <00:06:18.713>mobile <00:06:18.991>phone

124
00:06:19.145 --> 00:06:22.025
<00:06:19.145>because <00:06:19.344>it <00:06:19.544>works <00:06:19.745>on <00:06:19.945>all <00:06:20.145>different <00:06:20.344>platforms <00:06:20.544>just

125
00:06:22.125 --> 00:06:24.225
<00:06:22.125>as <00:06:22.475>web <00:06:22.825>applications <00:06:23.175>do, <00:06:23.525>right?

126
00:06:25.965 --> 00:06:28.935
<00:06:25.965>Okay, <00:06:26.198>so <00:06:26.431>the <00:06:26.664>URL <00:06:26.898>is <00:06:27.131>paint <00:06:27.364>js.org

127
00:06:29.625 --> 00:06:31.005
<00:06:29.625>and <00:06:29.832>I <00:06:30.039>will <00:06:30.246>also <00:06:30.453>open <00:06:30.659>it <00:06:30.867>here.

128
00:06:33.785 --> 00:06:36.515
<00:06:33.784>Alright, <00:06:34.018>so <00:06:34.251>here, <00:06:34.484>um, <00:06:34.718>the <00:06:34.951>browser <00:06:35.184>prepared

129
00:06:36.775 --> 00:06:40.555
<00:06:36.775>and <00:06:36.882>uh, <00:06:36.990>all <00:06:37.098>we <00:06:37.205>need <00:06:37.313>to <00:06:37.421>do <00:06:37.528>is <00:06:37.636>enter <00:06:37.744>the <00:06:37.851>URL, <00:06:37.959>which <00:06:38.067>is <00:06:38.174>uh,

130
00:06:40.685 --> 00:06:42.155
<00:06:40.685>paint <00:06:42.008>js.org.

131
00:06:42.935 --> 00:06:44.995
<00:06:42.935>Um, <00:06:43.135>and <00:06:43.335>here <00:06:43.535>you <00:06:43.735>can <00:06:43.935>see <00:06:44.135>the <00:06:44.335>application.

132
00:06:45.015 --> 00:06:48.235
<00:06:45.015>Now <00:06:45.170>I <00:06:45.326>will <00:06:45.481>increase <00:06:45.637>this, <00:06:45.792>uh, <00:06:45.948>the <00:06:46.103>size <00:06:46.259>a <00:06:46.414>bit

133
00:06:48.235 --> 00:06:49.755
<00:06:48.235>because <00:06:48.691>it's <00:06:49.147>quite <00:06:49.603>small.

134
00:06:50.375 --> 00:06:54.015
<00:06:50.375>Uh, <00:06:50.655>zoom <00:06:50.935>in. <00:06:51.215>Alright, <00:06:51.495>so <00:06:51.775>let's,

135
00:06:55.225 --> 00:06:56.775
<00:06:55.225>let's <00:06:55.457>make <00:06:55.690>that <00:06:55.922>a <00:06:56.155>little <00:06:56.387>bit <00:06:56.620>bigger.

136
00:06:57.165 --> 00:07:00.975
<00:06:57.165>Alright? <00:06:57.292>And <00:06:57.419>what <00:06:57.546>you <00:06:57.674>can <00:06:57.801>see <00:06:57.928>is <00:06:58.055>that <00:06:58.183>this <00:06:58.310>is <00:06:58.437>a <00:06:58.565>clone

137
00:07:00.975 --> 00:07:03.535
<00:07:00.975>of <00:07:01.208>the <00:07:01.441>well-known <00:07:01.675>paint <00:07:01.908>four <00:07:02.141>Windows <00:07:02.375>95.

138
00:07:04.115 --> 00:07:06.855
<00:07:04.115>So <00:07:04.255>what <00:07:04.395>you <00:07:04.535>can <00:07:04.675>do <00:07:04.815>here <00:07:04.955>is <00:07:05.095>you <00:07:05.235>can <00:07:05.375>use <00:07:05.515>one

139
00:07:06.855 --> 00:07:10.935
<00:07:06.855>of <00:07:07.010>the <00:07:07.166>tools <00:07:07.321>here, <00:07:07.477>uh, <00:07:07.632>and <00:07:07.788>draw <00:07:07.943>a <00:07:08.099>bit <00:07:08.255>here.

140
00:07:11.005 --> 00:07:14.695
<00:07:11.005>What <00:07:11.112>I <00:07:11.220>used <00:07:11.328>to <00:07:11.435>do <00:07:11.543>as <00:07:11.651>a <00:07:11.758>child <00:07:11.866>was <00:07:11.974>drawing <00:07:12.081>a <00:07:12.189>sun <00:07:12.297>like <00:07:12.405>this.

141
00:07:15.615 --> 00:07:18.695
<00:07:15.615>Excellent, <00:07:15.815>very <00:07:16.015>nice. <00:07:16.215>Okay, <00:07:16.415>now <00:07:16.615>this <00:07:16.815>is <00:07:17.015>something

142
00:07:18.695 --> 00:07:20.975
<00:07:18.695>that <00:07:18.850>you <00:07:19.006>could <00:07:19.161>do <00:07:19.317>in <00:07:19.472>the <00:07:19.628>web <00:07:19.783>four <00:07:19.939>ages <00:07:20.094>already.

143
00:07:21.035 --> 00:07:23.295
<00:07:21.035>So <00:07:21.385>that's, <00:07:21.735>um, <00:07:22.085>nothing <00:07:22.435>special.

144
00:07:23.755 --> 00:07:27.295
<00:07:23.755>Uh, <00:07:23.910>the <00:07:24.066>canvas <00:07:24.221>element <00:07:24.377>was <00:07:24.532>invented <00:07:24.688>like <00:07:24.843>10 <00:07:24.999>years <00:07:25.155>ago

145
00:07:27.295 --> 00:07:29.215
<00:07:27.295>or <00:07:27.575>so, <00:07:27.855>so <00:07:28.135>nothing <00:07:28.415>special <00:07:28.695>here.

146
00:07:29.715 --> 00:07:32.935
<00:07:29.715>Now. <00:07:29.914>So <00:07:30.114>the <00:07:30.315>next <00:07:30.515>step <00:07:30.715>was <00:07:30.914>PWAs, <00:07:31.114>so

147
00:07:32.935 --> 00:07:35.855
<00:07:32.935>that <00:07:33.135>this <00:07:33.335>application <00:07:33.535>here <00:07:33.735>can <00:07:33.935>leave <00:07:34.135>the <00:07:34.335>browser.

148
00:07:36.355 --> 00:07:37.375
<00:07:36.355>And <00:07:36.584>what <00:07:36.814>that <00:07:37.043>means <00:07:37.273>is

149
00:07:37.375 --> 00:07:40.175
<00:07:37.375>that <00:07:37.515>you <00:07:37.655>can <00:07:37.795>click <00:07:37.935>the <00:07:38.075>install <00:07:38.215>button <00:07:38.355>here <00:07:38.495>in <00:07:38.635>the <00:07:38.775>address

150
00:07:40.235 --> 00:07:43.295
<00:07:40.235>bar <00:07:40.410>and <00:07:40.585>then, <00:07:40.760>uh, <00:07:40.935>confirm <00:07:41.110>that <00:07:41.285>prompt, <00:07:41.460>which, <00:07:41.635>um,

151
00:07:43.565 --> 00:07:45.815
<00:07:43.565>asks <00:07:43.740>you <00:07:43.915>if <00:07:44.090>you <00:07:44.265>want <00:07:44.440>to <00:07:44.615>install <00:07:44.790>this <00:07:44.965>application.

152
00:07:46.685 --> 00:07:48.785
<00:07:46.685>Now <00:07:46.840>I <00:07:46.996>want <00:07:47.151>to <00:07:47.307>do <00:07:47.462>so, <00:07:47.618>so <00:07:47.773>I <00:07:47.929>click <00:07:48.085>that

153
00:07:49.165 --> 00:07:51.025
<00:07:49.165>and <00:07:49.398>you <00:07:49.631>can <00:07:49.865>now <00:07:50.098>see <00:07:50.331>that <00:07:50.565>um,

154
00:07:51.445 --> 00:07:53.425
<00:07:51.445>the <00:07:51.645>paint <00:07:51.844>app <00:07:52.045>has <00:07:52.245>now <00:07:52.445>left <00:07:52.645>the <00:07:52.844>browser,

155
00:07:53.845 --> 00:07:55.265
<00:07:53.845>the <00:07:54.164>browser <00:07:54.484>tab <00:07:54.803>has <00:07:55.123>closed

156
00:07:55.685 --> 00:07:57.665
<00:07:55.685>and <00:07:55.918>now <00:07:56.151>instead <00:07:56.385>have <00:07:56.618>a <00:07:56.851>standalone <00:07:57.085>window.

157
00:07:58.425 --> 00:08:01.715
<00:07:58.425>However, <00:07:58.658>this <00:07:58.891>is <00:07:59.125>still <00:07:59.358>the <00:07:59.591>chromium <00:07:59.825>browser,

158
00:08:02.245 --> 00:08:04.475
<00:08:02.245>which <00:08:02.478>yeah <00:08:02.711>is <00:08:02.945>working <00:08:03.178>in <00:08:03.411>the <00:08:03.645>background.

159
00:08:04.615 --> 00:08:07.995
<00:08:04.615>But <00:08:04.770>our <00:08:04.926>application <00:08:05.081>now <00:08:05.237>is <00:08:05.392>being <00:08:05.548>executed <00:08:05.703>in <00:08:05.859>a <00:08:06.015>separate

160
00:08:08.415 --> 00:08:11.555
<00:08:08.415>window <00:08:08.615>and <00:08:08.815>it's <00:08:09.015>also <00:08:09.215>part <00:08:09.415>of <00:08:09.615>the, <00:08:09.815>um,

161
00:08:11.955 --> 00:08:13.235
<00:08:11.955>commence <00:08:12.243>of <00:08:12.531>the <00:08:12.819>app <00:08:13.107>switcher.

162
00:08:13.235 --> 00:08:15.795
<00:08:13.235>For <00:08:13.362>example, <00:08:13.489>here <00:08:13.616>we <00:08:13.744>can <00:08:13.871>see <00:08:13.998>it. <00:08:14.125>This <00:08:14.253>is <00:08:14.380>the <00:08:14.507>Paint <00:08:14.635>app.

163
00:08:15.815 --> 00:08:19.315
<00:08:15.815>The <00:08:15.990>paint <00:08:16.165>app <00:08:16.340>has <00:08:16.515>received <00:08:16.690>its <00:08:16.865>own, <00:08:17.040>um, <00:08:17.215>icon

164
00:08:19.335 --> 00:08:20.795
<00:08:19.335>and <00:08:19.554>in <00:08:19.772>the <00:08:19.992>dock <00:08:20.211>and <00:08:20.430>so <00:08:20.649>on.

165
00:08:21.535 --> 00:08:24.675
<00:08:21.535>So <00:08:21.675>this <00:08:21.815>is <00:08:21.955>the <00:08:22.095>second <00:08:22.235>step. <00:08:22.375>Also, <00:08:22.515>it <00:08:22.655>starts <00:08:22.795>super <00:08:22.935>fast.

166
00:08:24.895 --> 00:08:28.955
<00:08:24.895>So <00:08:25.011>let's <00:08:25.128>say <00:08:25.245>if <00:08:25.361>I, <00:08:25.478>um, <00:08:25.594>pin <00:08:25.711>this <00:08:25.828>to <00:08:25.945>my <00:08:26.061>dock, <00:08:26.178>close <00:08:26.294>it,

167
00:08:30.605 --> 00:08:32.295
<00:08:30.605>okay, <00:08:30.838>now <00:08:31.071>we'll <00:08:31.305>we'll <00:08:31.538>lose <00:08:31.771>our <00:08:32.005>nice

168
00:08:32.295 --> 00:08:33.695
<00:08:32.294>drawing <00:08:32.610>and <00:08:32.924>open <00:08:33.240>it <00:08:33.555>again.

169
00:08:33.805 --> 00:08:35.015
<00:08:33.804>It's <00:08:34.349>there <00:08:34.894>instantly.

170
00:08:35.275 --> 00:08:39.375
<00:08:35.275>So <00:08:35.391>we <00:08:35.508>don't <00:08:35.625>need <00:08:35.741>to <00:08:35.858>go <00:08:35.975>to <00:08:36.091>a <00:08:36.208>web <00:08:36.324>server. <00:08:36.441>It <00:08:36.558>works <00:08:36.674>instantly.

171
00:08:40.275 --> 00:08:42.805
<00:08:40.275>Alright, <00:08:40.449>now <00:08:40.625>let's <00:08:40.799>bring <00:08:40.975>back <00:08:41.150>our <00:08:41.324>nice <00:08:41.500>drawing <00:08:41.674>here.

172
00:08:44.735 --> 00:08:47.135
<00:08:44.735>Excellent, <00:08:45.015>cool. <00:08:45.295>That's <00:08:45.575>the <00:08:45.855>second <00:08:46.135>step.

173
00:08:47.235 --> 00:08:49.775
<00:08:47.235>Now <00:08:47.515>making <00:08:47.795>this <00:08:48.075>application <00:08:48.355>offline <00:08:48.635>capable

174
00:08:50.155 --> 00:08:52.535
<00:08:50.155>and <00:08:50.355>installing <00:08:50.555>it <00:08:50.755>to <00:08:50.954>your <00:08:51.155>system, <00:08:51.355>this <00:08:51.555>is

175
00:08:52.535 --> 00:08:54.535
<00:08:52.535>what <00:08:52.768>progressive <00:08:53.001>web <00:08:53.235>apps <00:08:53.468>have <00:08:53.701>brought <00:08:53.935>us

176
00:08:55.235 --> 00:08:57.695
<00:08:55.235>and <00:08:55.435>now <00:08:55.635>we <00:08:55.835>want <00:08:56.035>to <00:08:56.235>even <00:08:56.435>further <00:08:56.635>integrate

177
00:08:57.695 --> 00:08:59.055
<00:08:57.695>with <00:08:58.103>the <00:08:58.511>operating <00:08:58.919>system

178
00:08:59.595 --> 00:09:01.295
<00:08:59.595>and <00:08:59.828>there's <00:09:00.061>different <00:09:00.295>options <00:09:00.528>to <00:09:00.761>do <00:09:00.995>so.

179
00:09:01.555 --> 00:09:03.095
<00:09:01.555>For <00:09:01.832>example, <00:09:02.109>here <00:09:02.386>in <00:09:02.663>that <00:09:02.941>case,

180
00:09:03.235 --> 00:09:05.735
<00:09:03.235>we <00:09:03.390>can <00:09:03.546>now <00:09:03.701>save <00:09:03.857>this <00:09:04.012>drawing <00:09:04.168>to <00:09:04.323>the <00:09:04.479>file <00:09:04.635>system.

181
00:09:06.595 --> 00:09:09.135
<00:09:06.595>So <00:09:06.735>here <00:09:06.875>in <00:09:07.015>the <00:09:07.155>menu <00:09:07.295>I <00:09:07.435>can <00:09:07.575>save <00:09:07.715>file, <00:09:07.855>save <00:09:07.995>as

182
00:09:09.515 --> 00:09:13.295
<00:09:09.515>and <00:09:09.689>then <00:09:09.865>the <00:09:10.040>native <00:09:10.215>uh, <00:09:10.390>file <00:09:10.564>dialogue <00:09:10.740>pops <00:09:10.915>up.

183
00:09:13.975 --> 00:09:17.735
<00:09:13.975>I <00:09:14.115>can <00:09:14.255>uh, <00:09:14.395>choose <00:09:14.535>a <00:09:14.675>file <00:09:14.815>name, <00:09:14.955>we'll <00:09:15.095>just <00:09:15.235>use <00:09:15.375>Untitled

184
00:09:17.955 --> 00:09:19.375
<00:09:17.955>and <00:09:18.210>then <00:09:18.466>I <00:09:18.721>can <00:09:18.977>hit <00:09:19.233>Safe.

185
00:09:20.115 --> 00:09:22.095
<00:09:20.115>And <00:09:20.290>now <00:09:20.465>you <00:09:20.640>see <00:09:20.815>that <00:09:20.990>here <00:09:21.165>on <00:09:21.340>the <00:09:21.515>desktop.

186
00:09:22.255 --> 00:09:26.895
<00:09:22.255>I <00:09:22.455>created <00:09:22.655>this <00:09:22.855>new <00:09:23.055>document <00:09:23.255>here, <00:09:23.455>untitled <00:09:23.655>bmg.

187
00:09:26.955 --> 00:09:29.975
<00:09:26.955>And <00:09:27.110>you <00:09:27.266>can <00:09:27.421>see <00:09:27.577>this <00:09:27.732>is <00:09:27.888>exactly <00:09:28.043>my <00:09:28.199>painting <00:09:28.355>here.

188
00:09:30.165 --> 00:09:31.855
<00:09:30.165>I've <00:09:30.320>zoomed <00:09:30.476>in. <00:09:30.631>That's <00:09:30.787>why <00:09:30.942>it's <00:09:31.098>a <00:09:31.253>little <00:09:31.409>bit <00:09:31.564>bigger,

189
00:09:32.155 --> 00:09:34.255
<00:09:32.155>but <00:09:32.435>it's <00:09:32.714>the <00:09:32.995>exact <00:09:33.275>same <00:09:33.555>painting.

190
00:09:36.305 --> 00:09:40.155
<00:09:36.305>Alright, <00:09:36.432>um, <00:09:36.559>of <00:09:36.686>course <00:09:36.814>you <00:09:36.941>can <00:09:37.068>also <00:09:37.195>open <00:09:37.323>uh, <00:09:37.450>the <00:09:37.577>file <00:09:37.704>again,

191
00:09:40.155 --> 00:09:41.515
<00:09:40.155>that's <00:09:40.563>also <00:09:40.971>possible, <00:09:41.379>but

192
00:09:41.515 --> 00:09:44.195
<00:09:41.515>what <00:09:41.689>you <00:09:41.865>can <00:09:42.040>also <00:09:42.215>do <00:09:42.390>is <00:09:42.564>access <00:09:42.740>the <00:09:42.915>clipboard.

193
00:09:44.215 --> 00:09:48.195
<00:09:44.215>So <00:09:44.342>you <00:09:44.469>can, <00:09:44.596>um, <00:09:44.724>select <00:09:44.851>a <00:09:44.978>portion <00:09:45.105>of <00:09:45.233>the <00:09:45.360>image, <00:09:45.487>select <00:09:45.615>copy,

194
00:09:48.815 --> 00:09:52.595
<00:09:48.815>and <00:09:48.955>then <00:09:49.095>open <00:09:49.235>the <00:09:49.375>preview <00:09:49.515>app <00:09:49.655>here, <00:09:49.795>which <00:09:49.935>is, <00:09:50.075>um, <00:09:50.215>one

195
00:09:52.595 --> 00:09:56.755
<00:09:52.595>of <00:09:52.770>the <00:09:52.945>built-in <00:09:53.120>apps, <00:09:53.295>um, <00:09:53.470>of, <00:09:53.645>of <00:09:53.820>Mac <00:09:53.995>Os.

196
00:09:57.175 --> 00:10:00.635
<00:09:57.175>And <00:09:57.302>here <00:09:57.429>I <00:09:57.556>can <00:09:57.684>create <00:09:57.811>a <00:09:57.938>new, <00:09:58.065>um, <00:09:58.193>drawing <00:09:58.320>from <00:09:58.447>the <00:09:58.574>clipboard

197
00:10:00.895 --> 00:10:02.875
<00:10:00.895>and <00:10:01.069>you <00:10:01.245>can <00:10:01.420>again <00:10:01.595>see <00:10:01.770>it's <00:10:01.944>the <00:10:02.120>same <00:10:02.295>drawing

198
00:10:03.255 --> 00:10:04.995
<00:10:03.255>and <00:10:03.455>I <00:10:03.655>received <00:10:03.855>it <00:10:04.055>from <00:10:04.255>the <00:10:04.455>Paint <00:10:04.655>app

199
00:10:05.375 --> 00:10:07.035
<00:10:05.375>and <00:10:05.575>this <00:10:05.775>also <00:10:05.975>works <00:10:06.175>the <00:10:06.375>other <00:10:06.575>way <00:10:06.775>around.

200
00:10:07.255 --> 00:10:08.955
<00:10:07.255>So <00:10:07.535>I <00:10:07.814>can <00:10:08.095>draw <00:10:08.375>something <00:10:08.655>here

201
00:10:11.495 --> 00:10:14.545
<00:10:11.495>that <00:10:11.650>looks <00:10:11.806>super <00:10:11.961>friendly, <00:10:12.117>now <00:10:12.272>I <00:10:12.428>can <00:10:12.583>select <00:10:12.739>it <00:10:12.895>here,

202
00:10:15.695 --> 00:10:19.315
<00:10:15.695>hit <00:10:15.928>copy <00:10:16.161>and <00:10:16.395>now <00:10:16.628>hit <00:10:16.861>paste <00:10:17.095>here

203
00:10:19.535 --> 00:10:21.395
<00:10:19.535>and <00:10:19.885>I <00:10:20.235>will <00:10:20.584>receive, <00:10:20.935>um,

204
00:10:23.305 --> 00:10:26.165
<00:10:23.305>my <00:10:23.538>better <00:10:23.771>drawing <00:10:24.005>from <00:10:24.238>the <00:10:24.471>preview <00:10:24.704>app

205
00:10:26.385 --> 00:10:28.525
<00:10:26.385>and <00:10:26.585>I've <00:10:26.785>pasted <00:10:26.985>it <00:10:27.185>to <00:10:27.385>my <00:10:27.585>application <00:10:27.785>here.

206
00:10:29.025 --> 00:10:30.045
<00:10:29.025>So <00:10:29.331>that <00:10:29.637>also <00:10:29.943>works.

207
00:10:30.485 --> 00:10:34.645
<00:10:30.485>I <00:10:30.612>can <00:10:30.739>now <00:10:30.866>also <00:10:30.994>choose <00:10:31.121>to <00:10:31.248>save <00:10:31.375>and <00:10:31.503>override <00:10:31.630>the <00:10:31.757>file <00:10:31.885>again.

208
00:10:34.705 --> 00:10:36.445
<00:10:34.705>And <00:10:34.880>if <00:10:35.055>I <00:10:35.230>open <00:10:35.405>it <00:10:35.580>again, <00:10:35.755>you <00:10:35.930>can <00:10:36.105>see

209
00:10:36.445 --> 00:10:38.645
<00:10:36.445>that <00:10:36.678>we've <00:10:36.911>now <00:10:37.145>received <00:10:37.378>this <00:10:37.611>phase <00:10:37.845>here.

210
00:10:40.305 --> 00:10:43.115
<00:10:40.305>Okay, <00:10:40.655>excellent. <00:10:41.005>That's <00:10:41.354>not <00:10:41.704>all.

211
00:10:43.425 --> 00:10:46.395
<00:10:43.425>What <00:10:43.564>I <00:10:43.704>can <00:10:43.844>also <00:10:43.984>do <00:10:44.125>is <00:10:44.265>I <00:10:44.405>can <00:10:44.545>just <00:10:44.685>close, <00:10:44.824>uh,

212
00:10:46.395 --> 00:10:47.635
<00:10:46.395>the <00:10:46.766>entire <00:10:47.139>painting <00:10:47.511>here

213
00:10:48.175 --> 00:10:52.275
<00:10:48.175>and <00:10:48.375>during <00:10:48.574>install <00:10:48.775>the <00:10:48.974>paint <00:10:49.175>application <00:10:49.375>has <00:10:49.574>registered

214
00:10:52.455 --> 00:10:53.595
<00:10:52.455>as <00:10:52.797>a <00:10:53.139>file <00:10:53.481>handler.

215
00:10:53.735 --> 00:10:55.275
<00:10:53.735>Now <00:10:54.012>I <00:10:54.289>know <00:10:54.566>it's <00:10:54.843>pretty <00:10:55.121>small,

216
00:10:55.575 --> 00:10:58.595
<00:10:55.575>but <00:10:55.730>here <00:10:55.886>you <00:10:56.041>can <00:10:56.197>see <00:10:56.352>the <00:10:56.508>paint <00:10:56.663>application <00:10:56.819>was <00:10:56.975>registered

217
00:10:58.615 --> 00:11:03.555
<00:10:58.615>and <00:10:58.731>if <00:10:58.848>I <00:10:58.965>open <00:10:59.081>the <00:10:59.198>paint <00:10:59.315>app, <00:10:59.431>um, <00:10:59.548>I <00:10:59.665>will <00:10:59.781>now <00:10:59.898>receive <00:11:00.015>um,

218
00:11:04.235 --> 00:11:07.435
<00:11:04.235>a <00:11:04.362>prompt <00:11:04.489>created <00:11:04.616>by <00:11:04.744>Chrome, <00:11:04.871>which <00:11:04.998>asks <00:11:05.125>me <00:11:05.253>if <00:11:05.380>I <00:11:05.507>really <00:11:05.635>want

219
00:11:07.435 --> 00:11:10.555
<00:11:07.435>to <00:11:07.574>open <00:11:07.714>the <00:11:07.854>app <00:11:07.994>and <00:11:08.135>I <00:11:08.275>can <00:11:08.415>here <00:11:08.555>click <00:11:08.694>this <00:11:08.834>checkbox.

220
00:11:11.015 --> 00:11:13.475
<00:11:11.015>Um, <00:11:11.365>which <00:11:11.715>then, <00:11:12.064>uh, <00:11:12.415>yeah,

221
00:11:13.855 --> 00:11:16.555
<00:11:13.855>so <00:11:13.982>then <00:11:14.109>the <00:11:14.236>browser <00:11:14.364>won't <00:11:14.491>ask <00:11:14.618>anymore <00:11:14.745>if <00:11:14.873>I <00:11:15.000>do <00:11:15.127>the <00:11:15.255>same

222
00:11:16.895 --> 00:11:19.595
<00:11:16.895>and <00:11:17.050>if <00:11:17.206>I <00:11:17.361>now <00:11:17.517>hit <00:11:17.672>allow, <00:11:17.828>the <00:11:17.983>application <00:11:18.139>will <00:11:18.295>open

223
00:11:19.895 --> 00:11:23.075
<00:11:19.895>and <00:11:20.035>I <00:11:20.175>can <00:11:20.314>now <00:11:20.454>from <00:11:20.595>now, <00:11:20.735>now <00:11:20.875>on, <00:11:21.015>um, <00:11:21.155>open <00:11:21.295>p

224
00:11:23.075 --> 00:11:27.235
<00:11:23.075>and <00:11:23.275>g <00:11:23.475>files <00:11:23.675>from <00:11:23.875>um, <00:11:24.075>the <00:11:24.275>here <00:11:24.475>in

225
00:11:27.235 --> 00:11:29.075
<00:11:27.235>that <00:11:27.515>case <00:11:27.795>from <00:11:28.075>the <00:11:28.355>Finder <00:11:28.635>directly.

226
00:11:29.095 --> 00:11:30.995
<00:11:29.095>And <00:11:29.295>I <00:11:29.495>can <00:11:29.695>even <00:11:29.895>make <00:11:30.095>this <00:11:30.295>my <00:11:30.495>default

227
00:11:30.995 --> 00:11:32.875
<00:11:30.995>program, <00:11:31.275>um, <00:11:31.555>if <00:11:31.835>I <00:11:32.115>want <00:11:32.395>to.

228
00:11:34.155 --> 00:11:36.695
<00:11:34.155>And <00:11:34.505>now <00:11:34.855>that's <00:11:35.204>additional <00:11:35.555>functionality

229
00:11:36.795 --> 00:11:40.775
<00:11:36.795>and <00:11:37.028>additional <00:11:37.261>capabilities <00:11:37.495>added <00:11:37.728>by <00:11:37.961>Project <00:11:38.194>Fugu.

230
00:11:41.435 --> 00:11:44.855
<00:11:41.435>The <00:11:41.574>cool <00:11:41.714>thing <00:11:41.854>is <00:11:41.994>that <00:11:42.135>not <00:11:42.275>only <00:11:42.415>this <00:11:42.555>paint <00:11:42.694>application <00:11:42.834>makes

231
00:11:44.875 --> 00:11:48.495
<00:11:44.875>use <00:11:45.015>of <00:11:45.155>that, <00:11:45.295>but <00:11:45.435>also <00:11:45.575>over <00:11:45.715>the <00:11:45.855>last <00:11:45.995>month <00:11:46.135>we've <00:11:46.275>uh,

232
00:11:48.685 --> 00:11:51.295
<00:11:48.685>seen <00:11:48.918>two <00:11:49.151>new <00:11:49.385>very <00:11:49.618>cool <00:11:49.851>apps, <00:11:50.084>um,

233
00:11:51.315 --> 00:11:53.885
<00:11:51.315>to <00:11:51.515>finally <00:11:51.715>make <00:11:51.915>the <00:11:52.115>shift <00:11:52.315>to <00:11:52.515>the <00:11:52.715>browser.

234
00:11:54.385 --> 00:11:58.445
<00:11:54.385>And <00:11:54.560>that <00:11:54.735>was <00:11:54.910>for <00:11:55.085>example, <00:11:55.260>visual <00:11:55.435>Studio <00:11:55.610>Code, <00:11:55.785>um,

235
00:11:58.545 --> 00:12:01.885
<00:11:58.545>via <00:11:58.685>code <00:11:58.824>Dev <00:11:58.964>that <00:11:59.104>now <00:11:59.245>also <00:11:59.385>just <00:11:59.525>works <00:11:59.665>in <00:11:59.805>the <00:11:59.944>browser.

236
00:12:02.115 --> 00:12:04.125
<00:12:02.115>Also <00:12:02.348>makes <00:12:02.581>use <00:12:02.815>of <00:12:03.048>that <00:12:03.281>file, <00:12:03.515>um,

237
00:12:04.125 --> 00:12:06.485
<00:12:04.125>system <00:12:04.358>access <00:12:04.591>mechanism <00:12:04.825>that <00:12:05.058>we've <00:12:05.291>just <00:12:05.525>seen.

238
00:12:07.775 --> 00:12:10.755
<00:12:07.775>And <00:12:07.975>the <00:12:08.175>other <00:12:08.375>very <00:12:08.574>interesting <00:12:08.775>application <00:12:08.975>was <00:12:09.175>Adobe

239
00:12:10.785 --> 00:12:13.595
<00:12:10.785>Photoshop, <00:12:11.251>which <00:12:11.718>um, <00:12:12.185>also

240
00:12:14.385 --> 00:12:16.635
<00:12:14.385>they <00:12:14.618>have <00:12:14.851>released <00:12:15.085>their <00:12:15.318>first <00:12:15.551>version, <00:12:15.785>um,

241
00:12:16.655 --> 00:12:17.875
<00:12:16.655>of <00:12:16.929>Photoshop <00:12:17.204>for <00:12:17.478>the <00:12:17.753>web.

242
00:12:18.255 --> 00:12:20.755
<00:12:18.255>Um, <00:12:18.535>it's <00:12:18.814>not <00:12:19.095>that <00:12:19.375>powerful <00:12:19.655>yet,

243
00:12:21.015 --> 00:12:23.235
<00:12:21.015>but <00:12:21.248>uh, <00:12:21.481>Adobe <00:12:21.715>wants <00:12:21.948>to <00:12:22.181>change <00:12:22.415>that

244
00:12:23.295 --> 00:12:26.075
<00:12:23.295>and <00:12:23.495>wants, <00:12:23.694>yeah, <00:12:23.895>to <00:12:24.094>bring <00:12:24.295>even <00:12:24.495>more <00:12:24.694>functionalities

245
00:12:26.455 --> 00:12:28.955
<00:12:26.455>to <00:12:26.735>the <00:12:27.015>web-based <00:12:27.295>version <00:12:27.575>of <00:12:27.855>Photoshop.

246
00:12:29.415 --> 00:12:30.595
<00:12:29.415>And <00:12:29.627>I <00:12:29.839>think <00:12:30.052>that's <00:12:30.264>really <00:12:30.477>cool

247
00:12:30.595 --> 00:12:32.555
<00:12:30.595>and <00:12:30.795>it <00:12:30.995>shows <00:12:31.195>how <00:12:31.395>this <00:12:31.595>concept <00:12:31.795>pays <00:12:31.995>off.

248
00:12:34.535 --> 00:12:37.265
<00:12:34.535>Alright, <00:12:35.235>now, <00:12:35.935>um,

249
00:12:38.685 --> 00:12:42.695
<00:12:38.685>what <00:12:38.824>interfaces <00:12:38.964>does <00:12:39.104>Project <00:12:39.244>Fugu <00:12:39.385>want <00:12:39.525>to <00:12:39.665>bring <00:12:39.805>to <00:12:39.944>the <00:12:40.084>web?

250
00:12:42.695 --> 00:12:45.935
<00:12:42.695>Because <00:12:42.895>there's <00:12:43.095>a <00:12:43.295>whole <00:12:43.495>bunch <00:12:43.695>of <00:12:43.895>them <00:12:44.095>and

251
00:12:45.935 --> 00:12:49.615
<00:12:45.935>therefore <00:12:46.074>what <00:12:46.214>you <00:12:46.354>can <00:12:46.494>do <00:12:46.635>is <00:12:46.775>open <00:12:46.915>the <00:12:47.055>Fugu <00:12:47.194>API <00:12:47.334>tracker

252
00:12:49.835 --> 00:12:54.735
<00:12:49.835>and <00:12:50.068>the <00:12:50.301>address <00:12:50.535>is <00:12:50.768>Fugu <00:12:51.001>Tracker <00:12:51.235>WebApp.

253
00:12:56.225 --> 00:12:57.965
<00:12:56.225>And <00:12:56.505>if <00:12:56.785>you <00:12:57.065>open <00:12:57.345>that, <00:12:57.625>um,

254
00:12:58.145 --> 00:13:00.525
<00:12:58.145>you <00:12:58.319>can <00:12:58.495>see <00:12:58.670>the <00:12:58.845>entire <00:12:59.020>list <00:12:59.194>of <00:12:59.370>Fugu <00:12:59.545>APIs.

255
00:13:00.525 --> 00:13:03.325
<00:13:00.525>Project <00:13:00.758>Fugu <00:13:00.991>is <00:13:01.225>a <00:13:01.458>very <00:13:01.691>transparent <00:13:01.925>process

256
00:13:03.785 --> 00:13:04.885
<00:13:03.785>and <00:13:04.032>that <00:13:04.280>means <00:13:04.527>it <00:13:04.775>can,

257
00:13:05.555 --> 00:13:08.725
<00:13:05.555>basically <00:13:05.834>everything <00:13:06.114>is <00:13:06.395>uh, <00:13:06.675>publicly <00:13:06.954>available.

258
00:13:09.265 --> 00:13:12.845
<00:13:09.265>Uh, <00:13:09.392>so <00:13:09.519>here <00:13:09.646>for <00:13:09.774>example, <00:13:09.901>you <00:13:10.028>can <00:13:10.155>see <00:13:10.283>the <00:13:10.410>list <00:13:10.537>of, <00:13:10.665>um,

259
00:13:14.015 --> 00:13:15.515
<00:13:14.015>of <00:13:14.352>the <00:13:14.689>different <00:13:15.027>fugu <00:13:15.365>APIs,

260
00:13:15.515 --> 00:13:18.635
<00:13:15.515>but <00:13:15.689>you <00:13:15.865>can <00:13:16.040>also, <00:13:16.215>uh, <00:13:16.390>follow <00:13:16.564>the <00:13:16.740>implementation <00:13:16.915>progress,

261
00:13:18.695 --> 00:13:22.235
<00:13:18.695>for <00:13:18.895>example, <00:13:19.095>in <00:13:19.295>the <00:13:19.495>chromium <00:13:19.695>tracker, <00:13:19.895>um, <00:13:20.095>in,

262
00:13:22.235 --> 00:13:25.395
<00:13:22.235>in <00:13:22.410>the <00:13:22.585>back <00:13:22.760>tracker <00:13:22.935>or <00:13:23.110>in <00:13:23.285>the <00:13:23.460>chromium <00:13:23.635>repository.

263
00:13:26.695 --> 00:13:29.505
<00:13:26.695>Alright, <00:13:26.895>and <00:13:27.095>here's <00:13:27.295>an <00:13:27.495>example <00:13:27.695>of <00:13:27.895>D <00:13:28.095>APIs

264
00:13:29.505 --> 00:13:30.545
<00:13:29.505>that <00:13:29.739>have <00:13:29.973>already <00:13:30.207>been <00:13:30.440>shipped.

265
00:13:31.045 --> 00:13:33.865
<00:13:31.045>Uh, <00:13:31.245>for <00:13:31.444>example <00:13:31.645>the <00:13:31.844>ASIN <00:13:32.045>clipboard, <00:13:32.245>API, <00:13:32.444>that's

266
00:13:33.865 --> 00:13:36.505
<00:13:33.865>what <00:13:34.065>I've <00:13:34.265>just <00:13:34.465>shown <00:13:34.665>you, <00:13:34.865>uh, <00:13:35.065>in <00:13:35.265>order

267
00:13:36.525 --> 00:13:40.305
<00:13:36.525>to <00:13:36.680>copy <00:13:36.836>images <00:13:36.991>from <00:13:37.147>one <00:13:37.302>application <00:13:37.458>to <00:13:37.613>another <00:13:37.769>and <00:13:37.925>back.

268
00:13:40.725 --> 00:13:43.705
<00:13:40.725>Um, <00:13:40.880>that <00:13:41.036>is <00:13:41.191>something <00:13:41.347>that <00:13:41.502>has <00:13:41.658>shipped <00:13:41.813>with <00:13:41.969>Chrome <00:13:42.125>76.

269
00:13:44.325 --> 00:13:47.265
<00:13:44.325>And <00:13:44.480>here <00:13:44.636>we <00:13:44.791>can <00:13:44.947>see <00:13:45.102>we're <00:13:45.258>currently <00:13:45.413>at <00:13:45.569>Chrome <00:13:45.725>96.

270
00:13:47.385 --> 00:13:48.865
<00:13:47.385>That's <00:13:47.718>the <00:13:48.051>currently <00:13:48.384>stable <00:13:48.717>version.

271
00:13:49.045 --> 00:13:51.625
<00:13:49.045>So, <00:13:49.245>um, <00:13:49.444>this <00:13:49.645>API <00:13:49.844>API <00:13:50.045>is <00:13:50.245>available <00:13:50.444>for

272
00:13:52.425 --> 00:13:53.465
<00:13:52.425>a <00:13:52.659>couple <00:13:52.893>of <00:13:53.127>months <00:13:53.361>now.

273
00:13:55.055 --> 00:13:59.075
<00:13:55.055>Uh, <00:13:55.210>and <00:13:55.366>also <00:13:55.521>the <00:13:55.677>file <00:13:55.832>system <00:13:55.988>access <00:13:56.143>API <00:13:56.299>has <00:13:56.454>shipped

274
00:13:59.075 --> 00:14:02.195
<00:13:59.075>with <00:13:59.275>Chromium <00:13:59.475>86, <00:13:59.675>uh, <00:13:59.875>this <00:14:00.075>is <00:14:00.275>I <00:14:00.475>think

275
00:14:03.665 --> 00:14:05.555
<00:14:03.665>October, <00:14:04.131>2020 <00:14:04.598>or <00:14:05.064>so.

276
00:14:05.935 --> 00:14:07.515
<00:14:05.935>So <00:14:06.285>also <00:14:06.635>a <00:14:06.984>year <00:14:07.334>already.

277
00:14:07.975 --> 00:14:10.675
<00:14:07.975>Um, <00:14:08.208>where <00:14:08.441>this <00:14:08.675>application <00:14:08.908>is <00:14:09.141>available, <00:14:09.375>um,

278
00:14:11.305 --> 00:14:14.515
<00:14:11.305>generally <00:14:11.584>available <00:14:11.864>on <00:14:12.145>chromium <00:14:12.425>based <00:14:12.704>browsers.

279
00:14:15.595 --> 00:14:17.965
<00:14:15.595>Also <00:14:15.795>you <00:14:15.995>can <00:14:16.195>see <00:14:16.395>on <00:14:16.595>which <00:14:16.795>operating <00:14:16.995>systems

280
00:14:18.225 --> 00:14:19.285
<00:14:18.225>the <00:14:18.543>API <00:14:18.861>is <00:14:19.179>available.

281
00:14:19.825 --> 00:14:23.525
<00:14:19.825>So <00:14:19.980>file <00:14:20.136>system <00:14:20.291>access <00:14:20.447>is <00:14:20.602>available <00:14:20.758>on <00:14:20.913>the <00:14:21.069>desktop <00:14:21.225>operating

282
00:14:23.525 --> 00:14:26.245
<00:14:23.525>systems, <00:14:23.758>but <00:14:23.991>not <00:14:24.225>on <00:14:24.458>Android <00:14:24.691>for <00:14:24.925>example,

283
00:14:26.355 --> 00:14:28.885
<00:14:26.355>because <00:14:26.588>Android <00:14:26.821>typically <00:14:27.055>does <00:14:27.288>not <00:14:27.521>have <00:14:27.755>this

284
00:14:28.955 --> 00:14:30.125
<00:14:28.955>file <00:14:29.481>system <00:14:30.008>metaphor.

285
00:14:30.515 --> 00:14:34.765
<00:14:30.515>Instead <00:14:30.748>it <00:14:30.981>uses <00:14:31.215>this <00:14:31.448>intent <00:14:31.681>like <00:14:31.915>mechanism

286
00:14:35.145 --> 00:14:36.765
<00:14:35.145>to <00:14:35.845>share <00:14:36.545>data.

287
00:14:38.915 --> 00:14:43.645
<00:14:38.915>Alright? <00:14:39.055>Um, <00:14:39.194>then <00:14:39.334>we <00:14:39.474>have <00:14:39.615>web <00:14:39.755>share, <00:14:39.895>for <00:14:40.035>example <00:14:40.175>web <00:14:40.314>NFC,

288
00:14:44.025 --> 00:14:48.165
<00:14:44.025>web, <00:14:44.180>USB, <00:14:44.336>um, <00:14:44.491>web <00:14:44.647>serial <00:14:44.802>API <00:14:44.958>to <00:14:45.113>access <00:14:45.269>serial <00:14:45.425>devices

289
00:14:48.425 --> 00:14:49.885
<00:14:48.425>and <00:14:48.589>so <00:14:48.753>on <00:14:48.917>and <00:14:49.082>so <00:14:49.246>on <00:14:49.410>and <00:14:49.574>so <00:14:49.739>on.

290
00:14:51.355 --> 00:14:54.095
<00:14:51.355>But <00:14:51.495>Project <00:14:51.635>FUBU <00:14:51.775>won't <00:14:51.915>stop <00:14:52.055>there. <00:14:52.195>There's <00:14:52.335>even <00:14:52.475>more <00:14:52.615>to <00:14:52.755>it.

291
00:14:54.195 --> 00:14:57.175
<00:14:54.195>So <00:14:54.370>currently <00:14:54.545>under <00:14:54.720>origin <00:14:54.895>trial, <00:14:55.070>that <00:14:55.245>means <00:14:55.420>you <00:14:55.595>need

292
00:14:57.175 --> 00:14:59.255
<00:14:57.175>to <00:14:57.330>register <00:14:57.486>for <00:14:57.641>a <00:14:57.797>token <00:14:57.952>in <00:14:58.108>order <00:14:58.263>to <00:14:58.419>be <00:14:58.574>able

293
00:14:59.255 --> 00:15:03.055
<00:14:59.255>to <00:14:59.430>use <00:14:59.605>an <00:14:59.780>application <00:14:59.955>is <00:15:00.130>the <00:15:00.305>handwriting <00:15:00.480>recognition <00:15:00.655>API,

294
00:15:03.355 --> 00:15:04.855
<00:15:03.355>you <00:15:03.580>can <00:15:03.805>draw <00:15:04.030>something <00:15:04.255>on <00:15:04.480>a <00:15:04.705>canvas

295
00:15:05.475 --> 00:15:08.775
<00:15:05.475>and <00:15:05.630>then, <00:15:05.786>uh, <00:15:05.941>the <00:15:06.097>browser <00:15:06.252>will <00:15:06.408>try <00:15:06.563>to, <00:15:06.719>uh, <00:15:06.875>determine

296
00:15:08.775 --> 00:15:09.855
<00:15:08.775>what <00:15:09.098>you've <00:15:09.423>written <00:15:09.747>there

297
00:15:09.995 --> 00:15:13.175
<00:15:09.995>and <00:15:10.150>will <00:15:10.306>try <00:15:10.461>to <00:15:10.617>trans <00:15:10.772>to, <00:15:10.928>to <00:15:11.083>convert <00:15:11.239>that <00:15:11.395>into,

298
00:15:13.515 --> 00:15:14.775
<00:15:13.515>um, <00:15:13.893>yeah, <00:15:14.271>plain <00:15:14.649>text.

299
00:15:15.745 --> 00:15:18.595
<00:15:15.745>Currently <00:15:15.978>under <00:15:16.211>origin <00:15:16.445>trial, <00:15:16.678>also <00:15:16.911>very <00:15:17.145>nice

300
00:15:18.615 --> 00:15:20.555
<00:15:18.615>as <00:15:18.965>might <00:15:19.315>screen <00:15:19.665>window <00:15:20.015>placement.

301
00:15:20.935 --> 00:15:23.875
<00:15:20.935>Uh, <00:15:21.109>here <00:15:21.285>you <00:15:21.459>can <00:15:21.635>directly <00:15:21.810>specify <00:15:21.984>on <00:15:22.160>which <00:15:22.334>screen

302
00:15:24.295 --> 00:15:28.115
<00:15:24.295>and <00:15:24.435>on <00:15:24.574>which <00:15:24.714>exact <00:15:24.854>position <00:15:24.995>you <00:15:25.135>want <00:15:25.275>to <00:15:25.415>place <00:15:25.555>a <00:15:25.694>window,

303
00:15:28.115 --> 00:15:32.355
<00:15:28.115>which <00:15:28.290>is <00:15:28.465>great <00:15:28.640>for, <00:15:28.815>um, <00:15:28.990>yeah, <00:15:29.165>let's <00:15:29.340>say, <00:15:29.515>um,

304
00:15:33.575 --> 00:15:37.635
<00:15:33.575>trader <00:15:33.775>applications <00:15:33.975>with <00:15:34.175>like <00:15:34.375>four <00:15:34.575>big <00:15:34.775>trader <00:15:34.975>screens

305
00:15:37.635 --> 00:15:39.075
<00:15:37.635>where <00:15:37.894>you <00:15:38.153>can <00:15:38.412>see <00:15:38.671>your <00:15:38.931>stock.

306
00:15:39.615 --> 00:15:41.435
<00:15:39.615>Um, <00:15:39.895>stocks <00:15:40.175>going <00:15:40.455>up <00:15:40.735>and <00:15:41.015>down.

307
00:15:42.405 --> 00:15:45.665
<00:15:42.405>That's <00:15:42.579>what <00:15:42.755>what <00:15:42.930>what <00:15:43.105>this <00:15:43.280>epi, <00:15:43.454>sorry, <00:15:43.630>this <00:15:43.805>is

308
00:15:45.735 --> 00:15:47.905
<00:15:45.735>what <00:15:46.085>this <00:15:46.435>API <00:15:46.785>is <00:15:47.135>for.

309
00:15:48.295 --> 00:15:50.585
<00:15:48.295>It's <00:15:48.469>quite <00:15:48.645>late <00:15:48.819>in <00:15:48.995>in <00:15:49.170>Germany, <00:15:49.344>so <00:15:49.520>it's <00:15:49.694>already

310
00:15:50.585 --> 00:15:52.265
<00:15:50.585>after, <00:15:51.285>after <00:15:51.985>eight.

311
00:15:52.405 --> 00:15:56.345
<00:15:52.405>So, <00:15:52.638>um, <00:15:52.871>yeah, <00:15:53.105>I <00:15:53.338>need <00:15:53.571>to <00:15:53.805>concentrate.

312
00:15:56.695 --> 00:15:59.825
<00:15:56.695>Alright, <00:15:56.870>uh, <00:15:57.045>developer <00:15:57.220>trial, <00:15:57.395>uh, <00:15:57.570>is <00:15:57.745>the <00:15:57.920>next, <00:15:58.095>um,

313
00:16:00.055 --> 00:16:01.585
<00:16:00.055>like, <00:16:00.514>uh, <00:16:00.973>maturity <00:16:01.432>level.

314
00:16:01.855 --> 00:16:03.065
<00:16:01.855>That <00:16:02.127>means <00:16:02.399>you <00:16:02.671>need <00:16:02.944>to

315
00:16:04.105 --> 00:16:06.185
<00:16:04.105>explicitly <00:16:04.338>enable <00:16:04.571>a <00:16:04.805>flag <00:16:05.038>in <00:16:05.271>the <00:16:05.505>browser

316
00:16:06.705 --> 00:16:08.945
<00:16:06.705>configuration <00:16:06.880>in <00:16:07.055>order <00:16:07.230>to <00:16:07.405>be <00:16:07.580>able <00:16:07.755>to <00:16:07.930>use <00:16:08.105>it.

317
00:16:09.405 --> 00:16:12.585
<00:16:09.405>For <00:16:09.605>example, <00:16:09.805>here's <00:16:10.005>the <00:16:10.204>ambient <00:16:10.405>light <00:16:10.605>sensor, <00:16:10.805>API

318
00:16:12.585 --> 00:16:15.825
<00:16:12.585>that <00:16:12.725>allows <00:16:12.865>you <00:16:13.005>to <00:16:13.145>access <00:16:13.285>the <00:16:13.425>ambient <00:16:13.565>light <00:16:13.705>sensor <00:16:13.845>on <00:16:13.985>your

319
00:16:15.885 --> 00:16:18.185
<00:16:15.885>device, <00:16:16.165>for <00:16:16.444>example, <00:16:16.725>MacBook <00:16:17.005>have <00:16:17.285>that.

320
00:16:18.485 --> 00:16:20.705
<00:16:18.485>Uh, <00:16:18.640>so <00:16:18.796>you <00:16:18.951>could, <00:16:19.107>for <00:16:19.262>example, <00:16:19.418>respond <00:16:19.573>to <00:16:19.729>it <00:16:19.885>and,

321
00:16:20.705 --> 00:16:22.785
<00:16:20.705>and <00:16:20.880>switch <00:16:21.055>to <00:16:21.230>a <00:16:21.405>dark <00:16:21.580>theme <00:16:21.755>with <00:16:21.930>the <00:16:22.105>environment

322
00:16:22.785 --> 00:16:23.945
<00:16:22.785>of <00:16:23.133>the <00:16:23.481>users <00:16:23.829>stack.

323
00:16:23.945 --> 00:16:28.145
<00:16:23.945>For <00:16:24.100>example, <00:16:24.256>file <00:16:24.411>handling, <00:16:24.567>that's <00:16:24.722>what <00:16:24.878>I've <00:16:25.033>just <00:16:25.189>shown <00:16:25.345>you.

324
00:16:28.295 --> 00:16:30.745
<00:16:28.295>This <00:16:28.528>is <00:16:28.761>to <00:16:28.995>the <00:16:29.228>mechanism <00:16:29.461>to <00:16:29.694>register

325
00:16:31.085 --> 00:16:32.585
<00:16:31.085>for <00:16:31.535>certain <00:16:31.985>file <00:16:32.435>extension.

326
00:16:32.695 --> 00:16:36.425
<00:16:32.695>This <00:16:32.895>is <00:16:33.095>currently <00:16:33.295>also, <00:16:33.495>um, <00:16:33.695>in <00:16:33.895>developer <00:16:34.095>trial.

327
00:16:38.105 --> 00:16:40.605
<00:16:38.105>All <00:16:38.260>right. <00:16:38.416>And <00:16:38.571>then <00:16:38.727>you <00:16:38.882>can <00:16:39.038>see <00:16:39.193>here's <00:16:39.349>this <00:16:39.505>huge,

328
00:16:40.945 --> 00:16:42.365
<00:16:40.945>oh <00:16:41.158>no, <00:16:41.371>sorry, <00:16:41.584>that's <00:16:41.797>a <00:16:42.010>started <00:16:42.223>list.

329
00:16:42.365 --> 00:16:44.765
<00:16:42.365>That's <00:16:42.565>not <00:16:42.765>so <00:16:42.965>huge. <00:16:43.165>Uh, <00:16:43.365>that's <00:16:43.565>also <00:16:43.765>interesting.

330
00:16:44.765 --> 00:16:46.685
<00:16:44.765>Things <00:16:45.045>like, <00:16:45.324>for <00:16:45.605>example, <00:16:45.885>being <00:16:46.165>able

331
00:16:46.685 --> 00:16:48.245
<00:16:46.685>to <00:16:46.964>copy <00:16:47.244>SVGs <00:16:47.525>back <00:16:47.805>and <00:16:48.084>forth.

332
00:16:48.905 --> 00:16:52.285
<00:16:48.905>Um, <00:16:49.185>game <00:16:49.464>pad <00:16:49.745>events <00:16:50.025>also <00:16:50.305>nice

333
00:16:52.565 --> 00:16:55.565
<00:16:52.565>'cause <00:16:52.740>currently <00:16:52.915>it's <00:16:53.090>a <00:16:53.265>poll <00:16:53.440>only <00:16:53.615>API <00:16:53.790>raw <00:16:53.965>sockets,

334
00:16:55.565 --> 00:16:59.215
<00:16:55.565>that's <00:16:55.765>also <00:16:55.965>very <00:16:56.165>cool <00:16:56.365>and, <00:16:56.565>and <00:16:56.765>other <00:16:56.965>stuff.

335
00:16:59.955 --> 00:17:03.015
<00:16:59.955>So <00:17:00.130>now <00:17:00.305>here's <00:17:00.480>the <00:17:00.655>long, <00:17:00.830>long <00:17:01.005>list <00:17:01.180>of <00:17:01.355>APIs

336
00:17:03.015 --> 00:17:04.975
<00:17:03.015>that <00:17:03.365>are <00:17:03.715>currently <00:17:04.065>under <00:17:04.415>consideration.

337
00:17:05.075 --> 00:17:07.095
<00:17:05.075>So <00:17:05.215>there's <00:17:05.355>a <00:17:05.495>whole <00:17:05.635>bunch <00:17:05.775>of <00:17:05.915>them, <00:17:06.055>as <00:17:06.194>you <00:17:06.335>can <00:17:06.475>see.

338
00:17:07.515 --> 00:17:10.215
<00:17:07.515>So, <00:17:07.748>um, <00:17:07.981>basically <00:17:08.215>Project <00:17:08.448>Fugu <00:17:08.681>doesn't <00:17:08.915>stop.

339
00:17:10.275 --> 00:17:12.335
<00:17:10.275>Now <00:17:10.555>there's <00:17:10.835>so <00:17:11.115>many <00:17:11.395>ideas <00:17:11.675>of

340
00:17:12.335 --> 00:17:14.655
<00:17:12.335>what <00:17:12.535>Project <00:17:12.735>Fugu <00:17:12.935>could <00:17:13.135>bring <00:17:13.335>to <00:17:13.535>the <00:17:13.735>web.

341
00:17:14.795 --> 00:17:17.215
<00:17:14.795>Web <00:17:15.028>media <00:17:15.261>could <00:17:15.495>be <00:17:15.728>interesting. <00:17:15.961>Version <00:17:16.195>2.0.

342
00:17:17.835 --> 00:17:19.815
<00:17:17.835>Um, <00:17:18.535>what <00:17:19.235>else?

343
00:17:19.815 --> 00:17:23.335
<00:17:19.815>Skill <00:17:20.015>geofencing, <00:17:20.215>geo <00:17:20.415>tracking, <00:17:20.615>a <00:17:20.815>splash <00:17:21.015>screen, <00:17:21.215>API,

344
00:17:23.465 --> 00:17:27.295
<00:17:23.464>smart <00:17:23.744>card <00:17:24.024>support <00:17:24.304>screen <00:17:24.584>brightness, <00:17:24.865>API,

345
00:17:27.995 --> 00:17:29.015
<00:17:27.994>and <00:17:28.178>so <00:17:28.362>on <00:17:28.545>and <00:17:28.729>so <00:17:28.913>on.

346
00:17:29.395 --> 00:17:31.815
<00:17:29.395>So <00:17:29.550>as <00:17:29.706>you <00:17:29.861>can <00:17:30.017>see, <00:17:30.172>there's <00:17:30.328>still <00:17:30.483>lots <00:17:30.639>of <00:17:30.795>stuff

347
00:17:31.815 --> 00:17:34.735
<00:17:31.815>to <00:17:31.990>talk <00:17:32.165>about <00:17:32.340>Project <00:17:32.515>Fugu <00:17:32.690>for, <00:17:32.865>uh, <00:17:33.040>the <00:17:33.215>next

348
00:17:35.435 --> 00:17:37.175
<00:17:35.435>decade <00:17:35.784>maybe, <00:17:36.135>I <00:17:36.485>don't <00:17:36.835>know.

349
00:17:37.555 --> 00:17:39.855
<00:17:37.555>Uh, <00:17:37.682>but <00:17:37.809>basically <00:17:37.936>what <00:17:38.064>I <00:17:38.191>want <00:17:38.318>to <00:17:38.445>to <00:17:38.573>show <00:17:38.700>you <00:17:38.827>here <00:17:38.955>is

350
00:17:39.855 --> 00:17:41.335
<00:17:39.855>that <00:17:40.188>Project <00:17:40.521>Fugu <00:17:40.854>won't <00:17:41.187>stop.

351
00:17:44.535 --> 00:17:46.995
<00:17:44.535>All <00:17:45.001>right? <00:17:45.468>Now, <00:17:45.935>um,

352
00:17:48.415 --> 00:17:51.355
<00:17:48.415>how <00:17:48.695>do <00:17:48.975>Project <00:17:49.254>fugu <00:17:49.534>APIs <00:17:49.815>work?

353
00:17:51.465 --> 00:17:52.555
<00:17:51.465>What <00:17:51.628>do <00:17:51.792>we <00:17:51.955>have <00:17:52.119>to <00:17:52.282>do <00:17:52.446>here?

354
00:17:54.175 --> 00:17:58.155
<00:17:54.175>The <00:17:54.315>good <00:17:54.455>thing <00:17:54.595>is <00:17:54.735>that <00:17:54.875>Project <00:17:55.014>Fugu <00:17:55.155>APIs <00:17:55.294>are <00:17:55.435>always <00:17:55.575>almost

355
00:17:58.815 --> 00:18:01.595
<00:17:58.815>pretty <00:17:59.095>simple, <00:17:59.375>almost <00:17:59.655>always <00:17:59.935>pretty <00:18:00.215>simple.

356
00:18:02.545 --> 00:18:05.795
<00:18:02.545>Typically, <00:18:02.685>you <00:18:02.825>as <00:18:02.965>a <00:18:03.105>developer <00:18:03.245>only <00:18:03.385>have <00:18:03.525>to <00:18:03.665>call <00:18:03.805>one <00:18:03.945>method.

357
00:18:06.175 --> 00:18:09.275
<00:18:06.175>So <00:18:06.350>here, <00:18:06.524>uh, <00:18:06.700>this <00:18:06.875>is <00:18:07.050>the <00:18:07.225>web <00:18:07.399>share <00:18:07.575>API,

358
00:18:09.535 --> 00:18:10.715
<00:18:09.535>and <00:18:09.747>in <00:18:09.959>order <00:18:10.172>to <00:18:10.384>use <00:18:10.597>it,

359
00:18:10.735 --> 00:18:13.835
<00:18:10.735>you <00:18:10.890>all <00:18:11.046>you <00:18:11.201>do <00:18:11.357>is <00:18:11.512>call <00:18:11.668>a <00:18:11.823>navigator <00:18:11.979>share <00:18:12.135>method

360
00:18:14.015 --> 00:18:16.275
<00:18:14.015>and <00:18:14.215>then <00:18:14.415>say <00:18:14.615>what <00:18:14.815>you <00:18:15.015>want <00:18:15.215>to <00:18:15.415>share.

361
00:18:16.385 --> 00:18:19.315
<00:18:16.385>This <00:18:16.585>can <00:18:16.785>be <00:18:16.985>text <00:18:17.185>URLs, <00:18:17.385>um, <00:18:17.585>or <00:18:17.785>files,

362
00:18:19.655 --> 00:18:21.555
<00:18:19.655>and <00:18:19.855>then <00:18:20.055>the <00:18:20.254>native <00:18:20.455>share <00:18:20.655>sheet <00:18:20.855>will <00:18:21.055>open

363
00:18:21.855 --> 00:18:24.955
<00:18:21.855>and <00:18:22.010>then <00:18:22.166>you <00:18:22.321>can <00:18:22.477>select, <00:18:22.632>um, <00:18:22.788>another <00:18:22.943>application <00:18:23.099>to <00:18:23.255>open.

364
00:18:26.015 --> 00:18:28.915
<00:18:26.015>So <00:18:26.142>all <00:18:26.269>you <00:18:26.396>do <00:18:26.524>as <00:18:26.651>a <00:18:26.778>web <00:18:26.905>developer <00:18:27.033>is <00:18:27.160>call <00:18:27.287>this <00:18:27.415>method.

365
00:18:29.255 --> 00:18:32.755
<00:18:29.255>And <00:18:29.395>then <00:18:29.535>the <00:18:29.675>browser <00:18:29.815>will <00:18:29.955>take <00:18:30.095>care <00:18:30.235>of <00:18:30.375>calling <00:18:30.515>the <00:18:30.655>exact

366
00:18:33.355 --> 00:18:36.675
<00:18:33.355>built-in, <00:18:33.555>um, <00:18:33.755>interface <00:18:33.955>to <00:18:34.155>open <00:18:34.355>that <00:18:34.555>share <00:18:34.755>sheet.

367
00:18:36.975 --> 00:18:38.795
<00:18:36.975>So <00:18:37.324>for <00:18:37.675>example, <00:18:38.024>on <00:18:38.375>Android,

368
00:18:38.845 --> 00:18:40.755
<00:18:38.845>it'll <00:18:39.078>open <00:18:39.311>the <00:18:39.545>share <00:18:39.778>intent <00:18:40.011>on <00:18:40.245>Windows,

369
00:18:40.885 --> 00:18:42.435
<00:18:40.885>it'll <00:18:41.164>open <00:18:41.443>the <00:18:41.722>data <00:18:42.001>transfer <00:18:42.280>manager,

370
00:18:42.775 --> 00:18:47.155
<00:18:42.775>and <00:18:42.891>on <00:18:43.008>Mac <00:18:43.125>it <00:18:43.241>will <00:18:43.358>use <00:18:43.475>the <00:18:43.591>NS <00:18:43.708>sharing <00:18:43.825>service <00:18:43.941>picker <00:18:44.058>to <00:18:44.175>show

371
00:18:47.155 --> 00:18:49.275
<00:18:47.155>that, <00:18:47.504>um, <00:18:47.855>yeah, <00:18:48.205>native <00:18:48.555>prompt.

372
00:18:51.455 --> 00:18:55.795
<00:18:51.455>So <00:18:51.610>what <00:18:51.766>you <00:18:51.921>explicitly <00:18:52.077>do <00:18:52.232>you, <00:18:52.388>uh, <00:18:52.543>yeah, <00:18:52.699>don't <00:18:52.855>need

373
00:18:55.795 --> 00:18:58.875
<00:18:55.795>to <00:18:56.028>do <00:18:56.261>is, <00:18:56.495>uh, <00:18:56.728>that <00:18:56.961>you, <00:18:57.195>um,

374
00:18:59.365 --> 00:19:00.995
<00:18:59.365>would <00:18:59.831>call <00:19:00.298>different <00:19:00.765>APIs

375
00:19:00.995 --> 00:19:03.315
<00:19:00.995>and <00:19:01.195>different <00:19:01.395>platforms <00:19:01.594>if <00:19:01.794>you've <00:19:01.995>done <00:19:02.195>other <00:19:02.395>cross

376
00:19:04.235 --> 00:19:05.715
<00:19:04.235>platform <00:19:04.900>development <00:19:05.567>approaches.

377
00:19:12.485 --> 00:19:15.705
<00:19:12.485>If <00:19:12.640>platform <00:19:12.796>is <00:19:12.951>macros, <00:19:13.107>then <00:19:13.262>do <00:19:13.418>something <00:19:13.573>else <00:19:13.729>and <00:19:13.885>stuff.

378
00:19:16.175 --> 00:19:18.905
<00:19:16.175>This <00:19:16.375>is <00:19:16.575>not <00:19:16.774>the <00:19:16.975>case <00:19:17.175>for <00:19:17.375>the <00:19:17.575>web,

379
00:19:18.925 --> 00:19:21.025
<00:19:18.925>of <00:19:19.100>course <00:19:19.274>also <00:19:19.450>not <00:19:19.625>the <00:19:19.800>case <00:19:19.975>for <00:19:20.149>Project <00:19:20.325>Fugu,

380
00:19:21.205 --> 00:19:22.985
<00:19:21.205>you <00:19:21.485>will <00:19:21.764>simply <00:19:22.044>call <00:19:22.324>the <00:19:22.605>URL

381
00:19:23.085 --> 00:19:24.585
<00:19:23.085>and <00:19:23.355>the <00:19:23.625>browser <00:19:23.895>will <00:19:24.165>take <00:19:24.435>care

382
00:19:24.645 --> 00:19:26.905
<00:19:24.645>of <00:19:24.878>calling <00:19:25.111>the <00:19:25.345>right <00:19:25.578>build <00:19:25.811>and <00:19:26.045>interface.

383
00:19:27.365 --> 00:19:29.425
<00:19:27.365>The <00:19:27.565>cool <00:19:27.765>thing <00:19:27.965>is <00:19:28.165>that <00:19:28.365>the <00:19:28.565>browser <00:19:28.765>knows

384
00:19:29.425 --> 00:19:30.945
<00:19:29.425>for <00:19:29.767>which <00:19:30.109>platform <00:19:30.451>it's <00:19:30.793>compelled

385
00:19:31.125 --> 00:19:34.865
<00:19:31.125>and <00:19:31.280>then <00:19:31.436>it <00:19:31.591>can <00:19:31.747>call, <00:19:31.902>uh, <00:19:32.058>the, <00:19:32.213>um, <00:19:32.369>according <00:19:32.525>API.

386
00:19:36.025 --> 00:19:39.115
<00:19:36.025>However, <00:19:36.258>there <00:19:36.491>may <00:19:36.725>be <00:19:36.958>some <00:19:37.191>browsers, <00:19:37.425>uh,

387
00:19:39.145 --> 00:19:41.475
<00:19:39.145>that <00:19:39.320>do <00:19:39.495>not <00:19:39.670>ship <00:19:39.845>support <00:19:40.020>for <00:19:40.195>a <00:19:40.370>certain <00:19:40.545>API.

388
00:19:41.615 --> 00:19:44.915
<00:19:41.615>Now, <00:19:41.770>let's <00:19:41.926>say <00:19:42.081>for <00:19:42.237>this <00:19:42.392>web <00:19:42.548>share, <00:19:42.703>API <00:19:42.859>for <00:19:43.015>example,

389
00:19:45.225 --> 00:19:47.435
<00:19:45.225>Firefox <00:19:45.425>does <00:19:45.625>not <00:19:45.824>support <00:19:46.024>this <00:19:46.225>API <00:19:46.425>right <00:19:46.625>now.

390
00:19:48.455 --> 00:19:52.075
<00:19:48.455>So <00:19:48.610>what <00:19:48.766>you <00:19:48.921>cannot <00:19:49.077>do <00:19:49.232>is <00:19:49.388>just <00:19:49.543>blindly <00:19:49.699>call <00:19:49.855>navigated

391
00:19:52.095 --> 00:19:55.315
<00:19:52.095>or <00:19:52.235>share <00:19:52.375>because <00:19:52.515>this <00:19:52.655>can <00:19:52.795>be <00:19:52.935>a <00:19:53.075>problem <00:19:53.215>for <00:19:53.355>your <00:19:53.495>application

392
00:19:55.315 --> 00:19:59.115
<00:19:55.315>because <00:19:55.490>calling <00:19:55.665>a <00:19:55.840>method <00:19:56.015>that <00:19:56.190>that <00:19:56.365>doesn't <00:19:56.540>exist, <00:19:56.715>um,

393
00:19:59.225 --> 00:20:01.955
<00:19:59.225>will <00:19:59.425>eat, <00:19:59.625>uh, <00:19:59.824>your <00:20:00.024>JavaScript <00:20:00.225>to <00:20:00.425>like <00:20:00.625>break.

394
00:20:02.215 --> 00:20:03.635
<00:20:02.215>So <00:20:02.470>this <00:20:02.726>could <00:20:02.981>be <00:20:03.237>a <00:20:03.493>problem.

395
00:20:04.535 --> 00:20:08.075
<00:20:04.535>So <00:20:04.651>what <00:20:04.768>you <00:20:04.885>cannot <00:20:05.001>do <00:20:05.118>is <00:20:05.235>just <00:20:05.351>blindly <00:20:05.468>go <00:20:05.585>and <00:20:05.701>call <00:20:05.818>this <00:20:05.935>API,

396
00:20:08.295 --> 00:20:10.075
<00:20:08.295>but <00:20:08.645>instead <00:20:08.995>you <00:20:09.345>should <00:20:09.695>try

397
00:20:10.095 --> 00:20:12.795
<00:20:10.095>and <00:20:10.295>test <00:20:10.495>if <00:20:10.695>this <00:20:10.895>API <00:20:11.095>is <00:20:11.295>actually <00:20:11.495>present.

398
00:20:13.335 --> 00:20:16.235
<00:20:13.335>And <00:20:13.475>this <00:20:13.615>can <00:20:13.755>be <00:20:13.895>done <00:20:14.035>by <00:20:14.175>just <00:20:14.315>using <00:20:14.455>an <00:20:14.595>if <00:20:14.735>statement.

399
00:20:16.575 --> 00:20:20.115
<00:20:16.575>So <00:20:16.702>all <00:20:16.829>you <00:20:16.956>need <00:20:17.084>to <00:20:17.211>do <00:20:17.338>is <00:20:17.465>say <00:20:17.593>if <00:20:17.720>share <00:20:17.847>a <00:20:17.975>navigator,

400
00:20:20.115 --> 00:20:24.195
<00:20:20.115>if <00:20:20.255>there <00:20:20.395>is <00:20:20.535>a <00:20:20.675>share <00:20:20.815>property, <00:20:20.955>uh, <00:20:21.095>in <00:20:21.235>the <00:20:21.375>navigator <00:20:21.515>object,

401
00:20:24.505 --> 00:20:27.435
<00:20:24.505>then <00:20:24.660>it's <00:20:24.816>quite <00:20:24.971>likely <00:20:25.127>that <00:20:25.282>the <00:20:25.438>web <00:20:25.593>share <00:20:25.749>API <00:20:25.905>exists.

402
00:20:27.815 --> 00:20:31.315
<00:20:27.815>And <00:20:27.970>then <00:20:28.126>you <00:20:28.281>can <00:20:28.437>simply <00:20:28.592>call <00:20:28.748>the <00:20:28.903>navigator <00:20:29.059>share <00:20:29.215>method

403
00:20:32.465 --> 00:20:35.125
<00:20:32.465>and <00:20:32.639>pass <00:20:32.814>the <00:20:32.990>text <00:20:33.165>that <00:20:33.340>you <00:20:33.514>want <00:20:33.689>to <00:20:33.865>share

404
00:20:35.395 --> 00:20:36.805
<00:20:35.395>with <00:20:36.029>another <00:20:36.664>application.

405
00:20:38.045 --> 00:20:41.385
<00:20:38.045>The <00:20:38.185>cool <00:20:38.325>thing <00:20:38.465>is <00:20:38.605>that <00:20:38.745>if <00:20:38.885>the <00:20:39.025>method <00:20:39.165>is <00:20:39.305>not <00:20:39.445>available,

406
00:20:41.725 --> 00:20:44.865
<00:20:41.725>you <00:20:41.880>could <00:20:42.036>use <00:20:42.191>a <00:20:42.347>fallback <00:20:42.502>mechanism <00:20:42.658>or <00:20:42.813>a <00:20:42.969>fallback <00:20:43.125>approach.

407
00:20:45.605 --> 00:20:49.445
<00:20:45.605>And <00:20:45.780>fortunately <00:20:45.955>the <00:20:46.130>web <00:20:46.305>has <00:20:46.480>in <00:20:46.655>many <00:20:46.830>cases, <00:20:47.005>um,

408
00:20:50.195 --> 00:20:53.485
<00:20:50.195>certain <00:20:50.395>fallback <00:20:50.595>approaches <00:20:50.794>to <00:20:50.995>achieve <00:20:51.195>a <00:20:51.395>similar <00:20:51.595>thing.

409
00:20:53.985 --> 00:20:56.405
<00:20:53.985>Uh, <00:20:54.185>for <00:20:54.385>example, <00:20:54.584>here, <00:20:54.784>in <00:20:54.985>this <00:20:55.185>particular <00:20:55.385>case

410
00:20:56.405 --> 00:20:59.005
<00:20:56.405>of <00:20:56.580>the <00:20:56.754>web <00:20:56.930>share <00:20:57.105>API, <00:20:57.280>you <00:20:57.455>could <00:20:57.629>simply <00:20:57.805>try

411
00:20:59.005 --> 00:21:01.285
<00:20:59.005>and <00:20:59.238>use <00:20:59.471>the <00:20:59.705>mail <00:20:59.938>to <00:21:00.171>pseudo <00:21:00.405>protocol

412
00:21:02.485 --> 00:21:07.025
<00:21:02.485>to <00:21:02.601>at <00:21:02.718>least <00:21:02.834>open <00:21:02.951>the <00:21:03.068>mail <00:21:03.185>program <00:21:03.301>so <00:21:03.418>that <00:21:03.534>the <00:21:03.651>user <00:21:03.768>can <00:21:03.885>share

413
00:21:07.735 --> 00:21:11.585
<00:21:07.735>here <00:21:07.890>in <00:21:08.046>that <00:21:08.201>case <00:21:08.357>this <00:21:08.512>text, <00:21:08.668>um, <00:21:08.823>with <00:21:08.979>another <00:21:09.135>person,

414
00:21:12.005 --> 00:21:14.025
<00:21:12.005>of <00:21:12.205>course, <00:21:12.405>that's <00:21:12.605>not <00:21:12.805>the <00:21:13.005>builtin <00:21:13.205>share <00:21:13.405>sheet

415
00:21:14.045 --> 00:21:15.625
<00:21:14.045>and <00:21:14.325>that <00:21:14.605>would <00:21:14.885>be <00:21:15.165>much <00:21:15.445>cooler,

416
00:21:16.045 --> 00:21:19.025
<00:21:16.045>but <00:21:16.200>being <00:21:16.356>able <00:21:16.511>to <00:21:16.667>at <00:21:16.822>least <00:21:16.978>send <00:21:17.133>an <00:21:17.289>email <00:21:17.445>would

417
00:21:19.405 --> 00:21:21.225
<00:21:19.405>or <00:21:19.754>could <00:21:20.105>maybe <00:21:20.455>already <00:21:20.805>help.

418
00:21:22.525 --> 00:21:26.885
<00:21:22.525>So <00:21:22.700>that's <00:21:22.875>the <00:21:23.050>idea <00:21:23.225>here, <00:21:23.400>it's <00:21:23.575>called <00:21:23.750>Progressive <00:21:23.925>Enhancement

419
00:21:27.115 --> 00:21:31.125
<00:21:27.115>because <00:21:27.315>users <00:21:27.515>with <00:21:27.715>a <00:21:27.915>more <00:21:28.115>capable <00:21:28.315>browser, <00:21:28.515>um,

420
00:21:31.385 --> 00:21:33.325
<00:21:31.385>can <00:21:31.665>offer <00:21:31.945>a <00:21:32.225>better <00:21:32.504>user <00:21:32.785>experience,

421
00:21:33.705 --> 00:21:36.925
<00:21:33.705>but <00:21:33.832>what <00:21:33.959>we <00:21:34.086>don't <00:21:34.214>want <00:21:34.341>to <00:21:34.468>do <00:21:34.595>is <00:21:34.723>to <00:21:34.850>cut <00:21:34.977>off <00:21:35.105>users

422
00:21:37.195 --> 00:21:38.605
<00:21:37.195>with <00:21:37.829>other <00:21:38.464>browsers.

423
00:21:39.145 --> 00:21:40.965
<00:21:39.145>Um, <00:21:39.425>and <00:21:39.705>so <00:21:39.985>we <00:21:40.264>should <00:21:40.545>try

424
00:21:41.025 --> 00:21:43.165
<00:21:41.025>to <00:21:41.258>provide <00:21:41.491>a <00:21:41.725>fallback <00:21:41.958>method <00:21:42.191>if <00:21:42.425>possible,

425
00:21:43.785 --> 00:21:46.365
<00:21:43.785>and <00:21:44.018>if <00:21:44.251>not, <00:21:44.485>we <00:21:44.718>should <00:21:44.951>hide, <00:21:45.185>um,

426
00:21:46.465 --> 00:21:49.805
<00:21:46.465>or <00:21:46.698>disable <00:21:46.931>the <00:21:47.165>functionality <00:21:47.398>in <00:21:47.631>the <00:21:47.865>application.

427
00:21:52.165 --> 00:21:57.135
<00:21:52.165>Alright, <00:21:52.292>next <00:21:52.419>I <00:21:52.546>want <00:21:52.674>to <00:21:52.801>show <00:21:52.928>you <00:21:53.055>some <00:21:53.183>samples <00:21:53.310>for <00:21:53.437>fugu <00:21:53.565>APIs.

428
00:21:57.475 --> 00:22:00.575
<00:21:57.475>The <00:21:57.675>first <00:21:57.875>one <00:21:58.074>is <00:21:58.274>the <00:21:58.475>badging. <00:21:58.675>API <00:21:58.875>badging.

429
00:22:00.615 --> 00:22:01.695
<00:22:00.615>API <00:22:00.939>is <00:22:01.263>very <00:22:01.587>cool

430
00:22:01.695 --> 00:22:04.935
<00:22:01.695>because <00:22:01.870>what <00:22:02.044>it <00:22:02.220>does, <00:22:02.395>it <00:22:02.570>is <00:22:02.745>it <00:22:02.919>allows <00:22:03.095>you

431
00:22:04.955 --> 00:22:08.655
<00:22:04.955>to <00:22:05.188>communicate <00:22:05.421>updates <00:22:05.655>without <00:22:05.888>distracting <00:22:06.121>the <00:22:06.355>user.

432
00:22:08.915 --> 00:22:11.135
<00:22:08.915>For <00:22:09.115>example, <00:22:09.315>by <00:22:09.514>sending <00:22:09.715>in <00:22:09.915>a <00:22:10.115>push <00:22:10.315>notification.

433
00:22:11.965 --> 00:22:15.455
<00:22:11.965>Here <00:22:12.105>on <00:22:12.245>this <00:22:12.385>slide, <00:22:12.524>you <00:22:12.665>can <00:22:12.804>see, <00:22:12.945>um, <00:22:13.084>the <00:22:13.225>Twitter <00:22:13.365>PWA,

434
00:22:15.605 --> 00:22:18.335
<00:22:15.605>I've <00:22:15.732>installed <00:22:15.859>that <00:22:15.986>on <00:22:16.114>my <00:22:16.241>system <00:22:16.368>and <00:22:16.495>I'm <00:22:16.623>using <00:22:16.750>it <00:22:16.877>every <00:22:17.005>day.

435
00:22:18.795 --> 00:22:22.175
<00:22:18.795>Um, <00:22:18.922>and <00:22:19.049>so <00:22:19.176>when <00:22:19.304>you <00:22:19.431>install <00:22:19.558>it, <00:22:19.685>you <00:22:19.813>receive <00:22:19.940>a <00:22:20.067>doc <00:22:20.195>icon

436
00:22:22.675 --> 00:22:25.295
<00:22:22.675>and <00:22:22.908>the <00:22:23.141>badging <00:22:23.375>API <00:22:23.608>allows <00:22:23.841>the <00:22:24.075>application

437
00:22:25.395 --> 00:22:27.575
<00:22:25.395>to <00:22:25.628>set <00:22:25.861>this <00:22:26.095>little <00:22:26.328>red <00:22:26.561>badge <00:22:26.795>here.

438
00:22:27.915 --> 00:22:30.935
<00:22:27.915>So <00:22:28.042>as <00:22:28.169>you <00:22:28.296>can <00:22:28.424>see <00:22:28.551>here, <00:22:28.678>I <00:22:28.805>have <00:22:28.933>a <00:22:29.060>total <00:22:29.187>of <00:22:29.315>six,

439
00:22:31.595 --> 00:22:33.535
<00:22:31.595>um, <00:22:32.995>notifications.

440
00:22:33.635 --> 00:22:36.615
<00:22:33.635>So <00:22:33.810>I <00:22:33.985>have <00:22:34.160>five <00:22:34.335>notifications <00:22:34.510>and <00:22:34.685>one <00:22:34.860>unread <00:22:35.035>message.

441
00:22:36.875 --> 00:22:39.975
<00:22:36.875>And <00:22:37.050>this, <00:22:37.225>uh, <00:22:37.400>sums <00:22:37.575>up <00:22:37.750>to <00:22:37.925>six, <00:22:38.100>um, <00:22:38.275>yeah,

442
00:22:40.875 --> 00:22:44.885
<00:22:40.875>pending <00:22:41.155>items <00:22:41.435>for <00:22:41.715>the <00:22:41.995>Twitter <00:22:42.275>PWA.

443
00:22:45.865 --> 00:22:49.685
<00:22:45.865>So <00:22:46.005>you <00:22:46.145>can <00:22:46.285>simply <00:22:46.425>display <00:22:46.565>a <00:22:46.705>batch <00:22:46.845>here <00:22:46.985>at <00:22:47.125>the <00:22:47.265>dock.

444
00:22:50.455 --> 00:22:52.555
<00:22:50.455>The <00:22:50.688>appearance <00:22:50.921>of <00:22:51.155>course, <00:22:51.388>varies <00:22:51.621>by <00:22:51.855>platform.

445
00:22:53.735 --> 00:22:55.085
<00:22:53.735>Doing <00:22:54.038>this <00:22:54.342>is <00:22:54.646>super <00:22:54.950>simple.

446
00:22:55.575 --> 00:22:58.645
<00:22:55.575>Again, <00:22:55.750>just <00:22:55.925>one <00:22:56.100>method <00:22:56.275>navigator <00:22:56.450>dot <00:22:56.625>set <00:22:56.800>up <00:22:56.975>batch,

447
00:22:58.645 --> 00:23:01.165
<00:22:58.645>and <00:22:58.925>then <00:22:59.205>you <00:22:59.485>specify <00:22:59.764>the <00:23:00.045>number

448
00:23:01.195 --> 00:23:02.765
<00:23:01.195>that <00:23:01.428>should <00:23:01.661>be <00:23:01.895>presented <00:23:02.128>on <00:23:02.361>the <00:23:02.595>batch.

449
00:23:03.025 --> 00:23:04.245
<00:23:03.025>You <00:23:03.244>can <00:23:03.464>also <00:23:03.683>clear <00:23:03.903>it <00:23:04.122>again

450
00:23:04.305 --> 00:23:06.845
<00:23:04.305>by <00:23:04.538>calling <00:23:04.771>the <00:23:05.005>Clear <00:23:05.238>app <00:23:05.471>Batch <00:23:05.705>Method.

451
00:23:07.545 --> 00:23:09.485
<00:23:07.545>Of <00:23:07.700>course, <00:23:07.856>you <00:23:08.011>should <00:23:08.167>check <00:23:08.322>if <00:23:08.478>the <00:23:08.633>method <00:23:08.789>is <00:23:08.945>there.

452
00:23:11.065 --> 00:23:12.555
<00:23:11.065>Next, <00:23:11.512>there <00:23:11.959>are <00:23:12.406>shortcuts.

453
00:23:13.195 --> 00:23:16.075
<00:23:13.195>Shortcuts <00:23:13.395>are <00:23:13.595>secondary <00:23:13.794>entry <00:23:13.995>points <00:23:14.195>for <00:23:14.395>your <00:23:14.595>application,

454
00:23:16.415 --> 00:23:19.555
<00:23:16.415>and <00:23:16.590>PWAs, <00:23:16.764>uh, <00:23:16.940>can <00:23:17.115>now <00:23:17.290>also <00:23:17.465>integrate <00:23:17.639>with <00:23:17.815>them.

455
00:23:19.975 --> 00:23:23.755
<00:23:19.975>So <00:23:20.115>for <00:23:20.254>example, <00:23:20.395>you <00:23:20.534>know, <00:23:20.675>this <00:23:20.814>concept <00:23:20.955>from <00:23:21.094>let's <00:23:21.235>say, <00:23:21.375>um,

456
00:23:25.455 --> 00:23:27.795
<00:23:25.455>uh, <00:23:25.735>the <00:23:26.014>Windows <00:23:26.294>jump <00:23:26.574>lists, <00:23:26.855>right?

457
00:23:27.815 --> 00:23:31.115
<00:23:27.815>So <00:23:27.942>right <00:23:28.069>clicking <00:23:28.196>a <00:23:28.324>task <00:23:28.451>bar <00:23:28.578>icon <00:23:28.705>could <00:23:28.833>show <00:23:28.960>this <00:23:29.087>jump <00:23:29.215>list,

458
00:23:31.375 --> 00:23:33.995
<00:23:31.375>or <00:23:31.575>if <00:23:31.775>you <00:23:31.975>long <00:23:32.175>press, <00:23:32.375>uh, <00:23:32.575>an <00:23:32.775>application,

459
00:23:34.015 --> 00:23:35.555
<00:23:34.015>for <00:23:34.292>example <00:23:34.569>on <00:23:34.846>iOS <00:23:35.123>or <00:23:35.401>Android.

460
00:23:35.745 --> 00:23:39.715
<00:23:35.745>This, <00:23:35.885>um, <00:23:36.024>list <00:23:36.165>of <00:23:36.304>quick <00:23:36.445>actions <00:23:36.584>would <00:23:36.725>also <00:23:36.864>show <00:23:37.004>this <00:23:37.145>is

461
00:23:39.785 --> 00:23:41.155
<00:23:39.785>what <00:23:40.401>shortcuts <00:23:41.018>do.

462
00:23:41.855 --> 00:23:43.155
<00:23:41.855>And <00:23:42.050>here <00:23:42.245>we <00:23:42.440>can <00:23:42.635>see <00:23:42.830>an <00:23:43.025>example

463
00:23:43.215 --> 00:23:45.075
<00:23:43.215>for <00:23:43.564>shortcuts <00:23:43.915>here <00:23:44.264>from <00:23:44.615>Windows.

464
00:23:45.585 --> 00:23:47.605
<00:23:45.585>And <00:23:45.865>it's <00:23:46.145>the <00:23:46.425>Twitter <00:23:46.705>PWA <00:23:46.985>again,

465
00:23:47.635 --> 00:23:49.285
<00:23:47.635>they <00:23:47.915>also <00:23:48.195>make <00:23:48.475>use <00:23:48.754>of <00:23:49.035>shortcuts.

466
00:23:49.465 --> 00:23:53.205
<00:23:49.465>So <00:23:49.605>if <00:23:49.745>you <00:23:49.885>right <00:23:50.024>click <00:23:50.165>the <00:23:50.304>application, <00:23:50.445>the <00:23:50.584>Twitter <00:23:50.725>task <00:23:50.865>bar

467
00:23:53.915 --> 00:23:57.005
<00:23:53.915>icon <00:23:54.115>on <00:23:54.315>Windows, <00:23:54.514>uh, <00:23:54.715>then <00:23:54.915>you <00:23:55.115>can <00:23:55.315>see

468
00:23:57.065 --> 00:23:59.885
<00:23:57.065>for <00:23:57.265>options <00:23:57.465>there <00:23:57.665>composing <00:23:57.865>on <00:23:58.065>your <00:23:58.265>tweet, <00:23:58.465>um,

469
00:24:00.435 --> 00:24:04.325
<00:24:00.435>opening <00:24:00.635>the <00:24:00.835>explore <00:24:01.034>view <00:24:01.235>notifications <00:24:01.435>or <00:24:01.635>direct <00:24:01.835>messages.

470
00:24:05.565 --> 00:24:08.985
<00:24:05.565>And <00:24:05.705>on <00:24:05.845>the <00:24:05.985>left <00:24:06.125>hand <00:24:06.265>side <00:24:06.405>you <00:24:06.545>can <00:24:06.685>see <00:24:06.825>the <00:24:06.965>shortcuts

471
00:24:09.225 --> 00:24:12.545
<00:24:09.225>property, <00:24:09.365>um, <00:24:09.504>which <00:24:09.645>is <00:24:09.784>an <00:24:09.925>extension <00:24:10.064>to <00:24:10.205>the <00:24:10.344>web <00:24:10.485>app <00:24:10.625>manifest.

472
00:24:12.925 --> 00:24:16.365
<00:24:12.925>And <00:24:13.158>here <00:24:13.391>you <00:24:13.625>can <00:24:13.858>specify <00:24:14.091>the <00:24:14.325>yeah,

473
00:24:16.365 --> 00:24:17.725
<00:24:16.365>different <00:24:16.976>shortcut <00:24:17.589>entries.

474
00:24:17.725 --> 00:24:19.765
<00:24:17.725>Currently, <00:24:18.074>uh, <00:24:18.425>they're <00:24:18.774>entirely <00:24:19.125>static,

475
00:24:19.825 --> 00:24:22.325
<00:24:19.825>so <00:24:20.025>you <00:24:20.225>can <00:24:20.425>only <00:24:20.625>add <00:24:20.825>static <00:24:21.025>entries <00:24:21.225>here.

476
00:24:24.745 --> 00:24:27.285
<00:24:24.745>The <00:24:24.919>next <00:24:25.094>API <00:24:25.270>is <00:24:25.445>the <00:24:25.620>screen <00:24:25.794>wake <00:24:25.969>lock <00:24:26.145>API.

477
00:24:27.545 --> 00:24:30.725
<00:24:27.545>And <00:24:27.672>I <00:24:27.799>guess <00:24:27.926>you <00:24:28.054>can <00:24:28.181>already, <00:24:28.308>yeah, <00:24:28.435>like <00:24:28.563>guess <00:24:28.690>what <00:24:28.817>it <00:24:28.945>does,

478
00:24:30.905 --> 00:24:33.365
<00:24:30.905>it <00:24:31.138>prevents <00:24:31.371>your <00:24:31.605>screen <00:24:31.838>from <00:24:32.071>turning <00:24:32.305>off.

479
00:24:33.665 --> 00:24:36.005
<00:24:33.665>And <00:24:33.898>that <00:24:34.131>sounds <00:24:34.365>a <00:24:34.598>little <00:24:34.831>bit <00:24:35.065>like

480
00:24:36.625 --> 00:24:37.725
<00:24:36.625>why <00:24:36.823>do <00:24:37.021>we <00:24:37.219>need <00:24:37.417>that, <00:24:37.615>right?

481
00:24:37.985 --> 00:24:40.765
<00:24:37.985>But <00:24:38.185>it <00:24:38.385>actually <00:24:38.584>has <00:24:38.784>a <00:24:38.985>very <00:24:39.185>important <00:24:39.385>purpose.

482
00:24:41.505 --> 00:24:44.965
<00:24:41.505>Now <00:24:41.660>getting <00:24:41.816>back <00:24:41.971>to <00:24:42.127>pineapple <00:24:42.282>pizza, <00:24:42.438>for <00:24:42.593>example, <00:24:42.749>if, <00:24:42.905>um,

483
00:24:45.025 --> 00:24:46.685
<00:24:45.025>you <00:24:45.491>are <00:24:45.958>cooking, <00:24:46.425>uh,

484
00:24:46.785 --> 00:24:50.045
<00:24:46.785>and <00:24:46.925>you <00:24:47.065>are <00:24:47.205>like <00:24:47.345>preparing <00:24:47.485>the <00:24:47.625>dough, <00:24:47.765>then <00:24:47.905>you <00:24:48.045>have, <00:24:48.185>um,

485
00:24:50.155 --> 00:24:53.565
<00:24:50.155>yeah, <00:24:50.355>fingers <00:24:50.555>with <00:24:50.754>which <00:24:50.955>you <00:24:51.155>would <00:24:51.355>not <00:24:51.555>like

486
00:24:53.565 --> 00:24:55.365
<00:24:53.565>to <00:24:53.845>press <00:24:54.125>any <00:24:54.405>keys <00:24:54.685>anymore, <00:24:54.965>right?

487
00:24:56.495 --> 00:24:59.155
<00:24:56.495>The <00:24:56.728>problem <00:24:56.961>is <00:24:57.195>typically <00:24:57.428>what <00:24:57.661>your <00:24:57.895>screen

488
00:24:59.155 --> 00:25:02.235
<00:24:59.155>or <00:24:59.295>what <00:24:59.435>your <00:24:59.575>computer <00:24:59.715>does <00:24:59.855>in <00:24:59.995>order <00:25:00.135>to <00:25:00.274>preserve <00:25:00.415>energy <00:25:00.555>is

489
00:25:02.255 --> 00:25:03.755
<00:25:02.255>to <00:25:02.592>just <00:25:02.930>turn <00:25:03.267>off, <00:25:03.605>right?

490
00:25:04.215 --> 00:25:05.915
<00:25:04.215>And <00:25:04.415>now <00:25:04.615>you <00:25:04.814>wanted <00:25:05.014>to <00:25:05.215>watch <00:25:05.415>this <00:25:05.615>recipe

491
00:25:06.095 --> 00:25:07.995
<00:25:06.095>and <00:25:06.295>you <00:25:06.495>wanted <00:25:06.695>to <00:25:06.895>find <00:25:07.095>out <00:25:07.295>which <00:25:07.495>yeah,

492
00:25:07.995 --> 00:25:09.635
<00:25:07.995>ingredients <00:25:08.274>you <00:25:08.554>need <00:25:08.834>to <00:25:09.114>use <00:25:09.395>next.

493
00:25:09.895 --> 00:25:12.795
<00:25:09.895>And <00:25:10.035>then <00:25:10.175>the <00:25:10.315>screen <00:25:10.455>turned <00:25:10.595>off. <00:25:10.735>Hmm, <00:25:10.875>that's <00:25:11.014>not <00:25:11.155>so <00:25:11.295>cool.

494
00:25:13.455 --> 00:25:17.235
<00:25:13.455>So <00:25:13.582>what <00:25:13.709>we <00:25:13.836>needed <00:25:13.964>was <00:25:14.091>an <00:25:14.218>API <00:25:14.345>to <00:25:14.473>prevent <00:25:14.600>this <00:25:14.727>from <00:25:14.855>happening.

495
00:25:17.695 --> 00:25:19.915
<00:25:17.695>So <00:25:17.928>the <00:25:18.161>wake <00:25:18.395>lock <00:25:18.628>API <00:25:18.861>was <00:25:19.095>created

496
00:25:20.215 --> 00:25:22.915
<00:25:20.215>and <00:25:20.355>it <00:25:20.495>prevents <00:25:20.635>the <00:25:20.774>device <00:25:20.915>from <00:25:21.054>turning <00:25:21.195>off <00:25:21.334>the <00:25:21.475>screen <00:25:21.615>while

497
00:25:22.915 --> 00:25:24.955
<00:25:22.915>the <00:25:23.264>application <00:25:23.615>has <00:25:23.965>the <00:25:24.315>lock.

498
00:25:25.215 --> 00:25:28.635
<00:25:25.215>And <00:25:25.389>it <00:25:25.564>can <00:25:25.740>also <00:25:25.915>be <00:25:26.090>helpful <00:25:26.264>for, <00:25:26.439>um, <00:25:26.615>presentation

499
00:25:29.155 --> 00:25:31.235
<00:25:29.155>software <00:25:29.435>like <00:25:29.715>PowerPoint <00:25:29.995>here, <00:25:30.274>uh, <00:25:30.555>so

500
00:25:31.235 --> 00:25:33.995
<00:25:31.235>that <00:25:31.409>the <00:25:31.584>screen <00:25:31.760>does <00:25:31.935>not <00:25:32.110>turn <00:25:32.284>off <00:25:32.459>while <00:25:32.635>presenting

501
00:25:35.355 --> 00:25:38.525
<00:25:35.355>this <00:25:35.530>year <00:25:35.705>is <00:25:35.880>the <00:25:36.055>API, <00:25:36.230>again, <00:25:36.405>again, <00:25:36.580>pretty <00:25:36.755>straightforward

502
00:25:39.115 --> 00:25:44.085
<00:25:39.115>navigator <00:25:39.290>wake <00:25:39.465>lock <00:25:39.640>request, <00:25:39.815>um, <00:25:39.990>is <00:25:40.165>the <00:25:40.340>method <00:25:40.515>here.

503
00:25:44.465 --> 00:25:47.325
<00:25:44.465>Um, <00:25:44.639>as <00:25:44.814>you <00:25:44.990>can <00:25:45.165>see, <00:25:45.340>this <00:25:45.514>is <00:25:45.689>already <00:25:45.865>prepared

504
00:25:47.385 --> 00:25:49.445
<00:25:47.385>for <00:25:47.665>other <00:25:47.945>kind <00:25:48.225>of <00:25:48.504>wake <00:25:48.785>logs.

505
00:25:49.445 --> 00:25:52.925
<00:25:49.445>Currently <00:25:49.645>only <00:25:49.845>the <00:25:50.044>screen <00:25:50.245>wake <00:25:50.445>lock <00:25:50.645>is <00:25:50.845>implemented.

506
00:25:53.225 --> 00:25:55.645
<00:25:53.225>Um, <00:25:53.365>so <00:25:53.504>you <00:25:53.645>can <00:25:53.784>only <00:25:53.925>prevent <00:25:54.064>the <00:25:54.205>screen <00:25:54.344>from <00:25:54.485>turning <00:25:54.625>off.

507
00:25:55.645 --> 00:25:59.365
<00:25:55.645>There <00:25:55.785>was <00:25:55.925>also <00:25:56.065>a <00:25:56.205>proposal <00:25:56.345>to, <00:25:56.485>um, <00:25:56.625>let <00:25:56.764>the <00:25:56.905>screen <00:25:57.045>disable

508
00:25:59.465 --> 00:26:03.125
<00:25:59.465>but <00:25:59.605>keep <00:25:59.745>the <00:25:59.885>CPU <00:26:00.024>awake, <00:26:00.165>uh, <00:26:00.304>in <00:26:00.445>order <00:26:00.584>to <00:26:00.725>run <00:26:00.865>calculations.

509
00:26:03.185 --> 00:26:06.425
<00:26:03.185>But, <00:26:03.418>um, <00:26:03.651>turn <00:26:03.885>the <00:26:04.118>screen <00:26:04.351>off <00:26:04.585>here.

510
00:26:06.425 --> 00:26:08.305
<00:26:06.425>We <00:26:06.625>can <00:26:06.825>also <00:26:07.024>see <00:26:07.225>this <00:26:07.425>if <00:26:07.625>clause <00:26:07.825>again.

511
00:26:11.075 --> 00:26:14.535
<00:26:11.075>All <00:26:11.202>right, <00:26:11.329>we've <00:26:11.456>seen <00:26:11.584>the <00:26:11.711>next, <00:26:11.838>um, <00:26:11.965>API <00:26:12.093>and <00:26:12.220>the <00:26:12.347>paint <00:26:12.475>demo.

512
00:26:14.875 --> 00:26:17.975
<00:26:14.875>Uh, <00:26:15.030>that's <00:26:15.186>the <00:26:15.341>ASIN <00:26:15.497>clipboard, <00:26:15.652>API <00:26:15.808>here <00:26:15.963>you <00:26:16.119>can, <00:26:16.275>uh,

513
00:26:18.685 --> 00:26:21.055
<00:26:18.685>copy <00:26:19.034>content <00:26:19.385>to <00:26:19.735>the <00:26:20.085>clipboard

514
00:26:21.055 --> 00:26:22.655
<00:26:21.055>and <00:26:21.335>paste <00:26:21.615>it <00:26:21.895>from <00:26:22.175>the <00:26:22.455>clipboard.

515
00:26:23.025 --> 00:26:25.135
<00:26:23.025>Again, <00:26:23.225>the <00:26:23.425>methods <00:26:23.625>are <00:26:23.825>super <00:26:24.025>easy <00:26:24.225>to <00:26:24.425>use.

516
00:26:25.205 --> 00:26:28.295
<00:26:25.205>It's <00:26:25.405>just <00:26:25.605>navigator, <00:26:25.804>do <00:26:26.004>clipboard <00:26:26.205>dot <00:26:26.405>write <00:26:26.605>text

517
00:26:28.555 --> 00:26:30.535
<00:26:28.555>or <00:26:28.905>write <00:26:29.255>for <00:26:29.605>arbitrary <00:26:29.955>data

518
00:26:30.875 --> 00:26:34.815
<00:26:30.875>and <00:26:31.015>then <00:26:31.155>ret <00:26:31.295>text <00:26:31.435>to <00:26:31.575>ret <00:26:31.715>text <00:26:31.855>from <00:26:31.995>the <00:26:32.135>clipboard <00:26:32.275>and.read

519
00:26:34.815 --> 00:26:38.295
<00:26:34.815>to <00:26:35.015>read <00:26:35.215>at <00:26:35.415>least <00:26:35.615>some <00:26:35.815>sorts <00:26:36.015>of <00:26:36.215>data.

520
00:26:38.295 --> 00:26:42.375
<00:26:38.295>Currently <00:26:38.528>they're <00:26:38.761>restricted <00:26:38.995>to <00:26:39.228>plain <00:26:39.461>text, <00:26:39.695>PNGs,

521
00:26:42.985 --> 00:26:45.285
<00:26:42.985>HT <00:26:43.218>ML <00:26:43.451>content, <00:26:43.685>um, <00:26:43.918>and <00:26:44.151>so <00:26:44.385>on.

522
00:26:46.425 --> 00:26:50.195
<00:26:46.425>Also, <00:26:46.565>uh, <00:26:46.705>when <00:26:46.845>you <00:26:46.985>try <00:26:47.125>to <00:26:47.264>read <00:26:47.405>things <00:26:47.544>from <00:26:47.685>the <00:26:47.825>clipboard,

523
00:26:50.435 --> 00:26:52.795
<00:26:50.435>a <00:26:50.635>pre, <00:26:50.835>uh, <00:26:51.034>permission <00:26:51.235>prompt <00:26:51.435>may <00:26:51.635>show <00:26:51.835>up.

524
00:26:54.035 --> 00:26:56.055
<00:26:54.035>How <00:26:54.268>that's <00:26:54.501>done <00:26:54.735>depends <00:26:54.968>on <00:26:55.201>the <00:26:55.435>browser,

525
00:26:56.435 --> 00:26:59.375
<00:26:56.435>but <00:26:56.575>of <00:26:56.715>course <00:26:56.855>this <00:26:56.995>now <00:26:57.135>affects <00:26:57.274>the <00:26:57.415>privacy <00:26:57.554>of <00:26:57.695>the <00:26:57.835>user.

526
00:26:59.755 --> 00:27:01.095
<00:26:59.755>If, <00:27:00.157>let's <00:27:00.559>say, <00:27:00.961>uh,

527
00:27:01.115 --> 00:27:03.735
<00:27:01.115>an <00:27:01.348>advertisement <00:27:01.581>would <00:27:01.815>just <00:27:02.048>read <00:27:02.281>the <00:27:02.515>contents

528
00:27:03.735 --> 00:27:06.815
<00:27:03.735>of <00:27:03.909>your <00:27:04.084>clipboard, <00:27:04.260>this <00:27:04.435>could <00:27:04.610>of <00:27:04.784>course <00:27:04.959>be <00:27:05.135>problematic.

529
00:27:07.395 --> 00:27:10.095
<00:27:07.395>Um, <00:27:07.595>so <00:27:07.795>browsers <00:27:07.995>may <00:27:08.195>show <00:27:08.395>permission <00:27:08.595>prompt <00:27:08.795>here

530
00:27:11.155 --> 00:27:12.255
<00:27:11.155>as <00:27:11.485>in <00:27:11.815>clipboard, <00:27:12.145>API.

531
00:27:14.025 --> 00:27:16.115
<00:27:14.025>Then <00:27:14.225>we <00:27:14.425>have <00:27:14.625>the <00:27:14.825>file <00:27:15.025>system <00:27:15.225>access <00:27:15.425>API.

532
00:27:16.565 --> 00:27:17.675
<00:27:16.565>We've <00:27:16.814>also <00:27:17.064>seen <00:27:17.314>that <00:27:17.563>before.

533
00:27:18.295 --> 00:27:22.235
<00:27:18.295>Now, <00:27:18.528>before <00:27:18.761>the <00:27:18.995>file <00:27:19.228>system <00:27:19.461>access <00:27:19.695>API

534
00:27:22.815 --> 00:27:25.435
<00:27:22.815>web <00:27:23.015>applications <00:27:23.215>only <00:27:23.415>had <00:27:23.615>a <00:27:23.815>very <00:27:24.015>limited <00:27:24.215>access

535
00:27:25.495 --> 00:27:28.075
<00:27:25.495>to <00:27:25.695>the <00:27:25.895>file <00:27:26.094>system, <00:27:26.294>but <00:27:26.495>we <00:27:26.695>have <00:27:26.895>applications

536
00:27:28.105 --> 00:27:30.595
<00:27:28.105>that <00:27:28.338>heavily <00:27:28.571>rely <00:27:28.805>on <00:27:29.038>working <00:27:29.271>with <00:27:29.505>files.

537
00:27:30.725 --> 00:27:33.835
<00:27:30.725>Those <00:27:31.074>traditional, <00:27:31.425>um, <00:27:31.774>let's <00:27:32.125>say

538
00:27:34.435 --> 00:27:38.075
<00:27:34.435>productivity <00:27:34.668>style <00:27:34.901>applications <00:27:35.135>like <00:27:35.368>office, <00:27:35.601>Microsoft <00:27:35.835>Word,

539
00:27:38.085 --> 00:27:41.515
<00:27:38.085>PowerPoint, <00:27:38.365>Excel, <00:27:38.645>which <00:27:38.925>studio, <00:27:39.205>Photoshop, <00:27:39.485>paint,

540
00:27:42.315 --> 00:27:43.525
<00:27:42.315>word <00:27:42.587>pad, <00:27:42.859>and <00:27:43.131>so <00:27:43.404>on.

541
00:27:44.305 --> 00:27:46.325
<00:27:44.305>So <00:27:44.505>what <00:27:44.705>they <00:27:44.905>want <00:27:45.105>to <00:27:45.305>do <00:27:45.505>is <00:27:45.705>have

542
00:27:47.395 --> 00:27:48.875
<00:27:47.395>a <00:27:47.617>better <00:27:47.839>access <00:27:48.061>to <00:27:48.283>the <00:27:48.505>file <00:27:48.727>system.

543
00:27:48.935 --> 00:27:50.355
<00:27:48.935>For <00:27:49.254>example, <00:27:49.574>opening <00:27:49.893>a <00:27:50.213>file

544
00:27:50.615 --> 00:27:52.555
<00:27:50.615>and <00:27:50.895>overriding <00:27:51.175>the <00:27:51.455>same <00:27:51.735>file <00:27:52.015>again.

545
00:27:52.775 --> 00:27:54.595
<00:27:52.775>And <00:27:52.950>that <00:27:53.125>was <00:27:53.300>not <00:27:53.475>possible <00:27:53.650>in <00:27:53.825>the <00:27:54.000>web <00:27:54.175>before.

546
00:27:55.495 --> 00:27:57.515
<00:27:55.495>And <00:27:55.695>this <00:27:55.895>is <00:27:56.094>what <00:27:56.294>the <00:27:56.495>file <00:27:56.695>system <00:27:56.895>access

547
00:27:57.675 --> 00:27:59.075
<00:27:57.675>API <00:27:57.990>brought <00:27:58.305>to <00:27:58.620>the <00:27:58.935>web.

548
00:27:59.485 --> 00:28:01.515
<00:27:59.485>Again, <00:27:59.718>we <00:27:59.951>should <00:28:00.185>start <00:28:00.418>with <00:28:00.651>an <00:28:00.885>if

549
00:28:01.515 --> 00:28:03.435
<00:28:01.515>because <00:28:01.748>not <00:28:01.981>all <00:28:02.215>browsers <00:28:02.448>support <00:28:02.681>that <00:28:02.915>yet.

550
00:28:04.395 --> 00:28:06.485
<00:28:04.395>Currently <00:28:04.675>only <00:28:04.955>the <00:28:05.235>chromium <00:28:05.514>based <00:28:05.795>ones.

551
00:28:06.945 --> 00:28:09.765
<00:28:06.945>If <00:28:07.072>that <00:28:07.199>works, <00:28:07.326>you <00:28:07.454>can <00:28:07.581>get <00:28:07.708>a <00:28:07.835>handle, <00:28:07.963>uh, <00:28:08.090>to <00:28:08.217>the <00:28:08.345>file,

552
00:28:10.035 --> 00:28:12.245
<00:28:10.035>then <00:28:10.235>a <00:28:10.435>native <00:28:10.635>file <00:28:10.835>picker <00:28:11.035>will <00:28:11.235>show <00:28:11.435>up,

553
00:28:12.245 --> 00:28:14.805
<00:28:12.245>and <00:28:12.400>then <00:28:12.556>you <00:28:12.711>can <00:28:12.867>select <00:28:13.022>one <00:28:13.178>from, <00:28:13.333>uh, <00:28:13.489>the <00:28:13.645>picker.

554
00:28:15.675 --> 00:28:17.965
<00:28:15.675>Then <00:28:15.875>you <00:28:16.075>can <00:28:16.274>get <00:28:16.475>access <00:28:16.675>to <00:28:16.875>the <00:28:17.075>file,

555
00:28:17.965 --> 00:28:19.485
<00:28:17.965>which <00:28:18.307>is <00:28:18.649>the <00:28:18.991>binary <00:28:19.332>contents,

556
00:28:19.625 --> 00:28:21.085
<00:28:19.625>and <00:28:19.812>then <00:28:20.000>you <00:28:20.188>can <00:28:20.375>do <00:28:20.563>something <00:28:20.751>with <00:28:20.939>it.

557
00:28:21.745 --> 00:28:24.245
<00:28:21.745>And <00:28:21.978>if <00:28:22.211>this <00:28:22.445>method <00:28:22.678>is <00:28:22.911>not <00:28:23.145>present,

558
00:28:24.545 --> 00:28:26.325
<00:28:24.545>you <00:28:24.778>can <00:28:25.011>again <00:28:25.245>use <00:28:25.478>a <00:28:25.711>fallback, <00:28:25.945>API

559
00:28:26.325 --> 00:28:29.605
<00:28:26.325>because <00:28:26.558>there <00:28:26.791>are <00:28:27.025>some, <00:28:27.258>uh, <00:28:27.491>fallback <00:28:27.725>APIs

560
00:28:29.625 --> 00:28:30.965
<00:28:29.625>for <00:28:29.826>dealing <00:28:30.027>with <00:28:30.228>files <00:28:30.428>on <00:28:30.629>the <00:28:30.831>web.

561
00:28:31.425 --> 00:28:33.765
<00:28:31.425>Um, <00:28:31.600>or <00:28:31.774>if <00:28:31.950>even <00:28:32.125>they <00:28:32.300>would <00:28:32.475>not <00:28:32.649>be <00:28:32.825>available,

562
00:28:33.985 --> 00:28:35.565
<00:28:33.985>you <00:28:34.218>could <00:28:34.451>disable <00:28:34.685>the <00:28:34.918>feature <00:28:35.151>at <00:28:35.385>all.

563
00:28:36.345 --> 00:28:38.755
<00:28:36.345>Also <00:28:36.500>for <00:28:36.656>the <00:28:36.811>paint <00:28:36.967>demo <00:28:37.122>that <00:28:37.278>I've <00:28:37.433>shown <00:28:37.589>you, <00:28:37.745>uh,

564
00:28:38.755 --> 00:28:40.795
<00:28:38.755>you <00:28:38.955>can <00:28:39.155>also <00:28:39.355>run <00:28:39.555>them <00:28:39.755>in <00:28:39.955>other <00:28:40.155>browsers.

565
00:28:40.795 --> 00:28:43.355
<00:28:40.795>For <00:28:40.970>example, <00:28:41.145>in <00:28:41.320>Firefox, <00:28:41.495>they <00:28:41.670>will <00:28:41.845>use <00:28:42.020>the <00:28:42.195>according

566
00:28:43.455 --> 00:28:46.075
<00:28:43.455>for <00:28:43.735>back <00:28:44.014>APIs <00:28:44.294>to, <00:28:44.574>um, <00:28:44.855>yeah,

567
00:28:48.245 --> 00:28:50.945
<00:28:48.245>to <00:28:48.419>not <00:28:48.594>quite <00:28:48.770>reach <00:28:48.945>the <00:28:49.120>same, <00:28:49.294>let's <00:28:49.469>say <00:28:49.645>level,

568
00:28:51.245 --> 00:28:53.025
<00:28:51.245>but <00:28:51.594>it <00:28:51.945>comes <00:28:52.294>pretty <00:28:52.645>close.

569
00:28:54.315 --> 00:28:57.335
<00:28:54.315>So <00:28:54.455>what <00:28:54.595>that <00:28:54.735>means <00:28:54.875>is <00:28:55.015>you <00:28:55.155>can <00:28:55.295>open <00:28:55.435>a <00:28:55.575>file <00:28:55.715>using

570
00:28:58.165 --> 00:29:00.895
<00:28:58.165>this <00:28:58.365>builtin <00:28:58.565>picker, <00:28:58.764>but <00:28:58.965>saving <00:28:59.165>does <00:28:59.365>not <00:28:59.565>work.

571
00:29:00.925 --> 00:29:02.215
<00:29:00.925>Also, <00:29:01.312>overriding <00:29:01.698>doesn't <00:29:02.086>work.

572
00:29:02.215 --> 00:29:04.535
<00:29:02.215>Instead, <00:29:02.495>you're <00:29:02.774>always <00:29:03.054>downloading <00:29:03.334>the <00:29:03.615>drawing

573
00:29:04.555 --> 00:29:05.655
<00:29:04.555>to <00:29:04.885>the <00:29:05.215>downloads <00:29:05.545>folder.

574
00:29:08.075 --> 00:29:12.085
<00:29:08.075>Alright, <00:29:08.230>and <00:29:08.386>this <00:29:08.541>is <00:29:08.697>the <00:29:08.852>open <00:29:09.008>version <00:29:09.163>here <00:29:09.319>is <00:29:09.475>just,

575
00:29:13.545 --> 00:29:17.085
<00:29:13.545>um, <00:29:13.720>ah, <00:29:13.895>sorry, <00:29:14.070>no, <00:29:14.245>that's <00:29:14.420>more, <00:29:14.595>um, <00:29:14.770>attributes <00:29:14.945>here,

576
00:29:17.345 --> 00:29:20.325
<00:29:17.345>for <00:29:17.500>example, <00:29:17.656>you <00:29:17.811>can <00:29:17.967>also <00:29:18.122>request <00:29:18.278>more <00:29:18.433>than <00:29:18.589>one <00:29:18.745>file

577
00:29:20.385 --> 00:29:21.925
<00:29:20.385>by <00:29:20.847>saying <00:29:21.309>multiple <00:29:21.771>true.

578
00:29:22.145 --> 00:29:25.285
<00:29:22.145>And <00:29:22.345>you <00:29:22.545>can <00:29:22.745>also <00:29:22.945>specify <00:29:23.145>which <00:29:23.345>exact, <00:29:23.545>um,

579
00:29:25.735 --> 00:29:27.205
<00:29:25.735>files <00:29:26.065>you <00:29:26.396>want <00:29:26.727>to <00:29:27.058>open.

580
00:29:27.465 --> 00:29:29.565
<00:29:27.465>That's <00:29:27.639>also <00:29:27.814>what <00:29:27.990>I <00:29:28.165>do <00:29:28.340>in <00:29:28.514>this <00:29:28.689>paint <00:29:28.865>application.

581
00:29:29.685 --> 00:29:32.125
<00:29:29.685>I <00:29:29.840>say <00:29:29.996>I <00:29:30.151>can <00:29:30.307>only <00:29:30.462>open <00:29:30.618>p <00:29:30.773>and <00:29:30.929>g <00:29:31.085>files.

582
00:29:34.555 --> 00:29:37.285
<00:29:34.555>Okay, <00:29:34.730>then <00:29:34.905>we <00:29:35.080>have <00:29:35.255>the <00:29:35.430>file <00:29:35.605>system <00:29:35.780>handling <00:29:35.955>API,

583
00:29:37.585 --> 00:29:40.965
<00:29:37.585>that's <00:29:37.740>this <00:29:37.896>mechanism <00:29:38.051>that <00:29:38.207>I've <00:29:38.362>shown <00:29:38.518>you <00:29:38.673>to <00:29:38.829>register <00:29:38.985>PWA

584
00:29:41.005 --> 00:29:43.165
<00:29:41.005>as <00:29:41.238>a <00:29:41.471>handler <00:29:41.705>for <00:29:41.938>certain <00:29:42.171>file <00:29:42.405>extensions.

585
00:29:43.705 --> 00:29:45.885
<00:29:43.705>Now, <00:29:43.938>in <00:29:44.171>that <00:29:44.405>particular <00:29:44.638>case, <00:29:44.871>you <00:29:45.105>need

586
00:29:45.885 --> 00:29:48.565
<00:29:45.885>to <00:29:46.118>install <00:29:46.351>your <00:29:46.585>application <00:29:46.818>again, <00:29:47.051>just <00:29:47.285>as

587
00:29:48.585 --> 00:29:53.245
<00:29:48.585>for <00:29:48.725>the <00:29:48.865>badgering <00:29:49.005>API, <00:29:49.145>you <00:29:49.285>of <00:29:49.425>course <00:29:49.565>need, <00:29:49.705>uh, <00:29:49.845>like <00:29:49.985>wrapper,

588
00:29:53.545 --> 00:29:55.605
<00:29:53.545>um, <00:29:53.778>for <00:29:54.011>your <00:29:54.245>application <00:29:54.478>to <00:29:54.711>be <00:29:54.945>installed

589
00:29:55.785 --> 00:29:58.245
<00:29:55.785>before <00:29:55.985>you <00:29:56.185>can <00:29:56.385>register <00:29:56.585>for <00:29:56.785>file <00:29:56.985>extension <00:29:57.185>or

590
00:29:58.245 --> 00:29:59.925
<00:29:58.245>before <00:29:58.478>you <00:29:58.711>can <00:29:58.945>show <00:29:59.178>a <00:29:59.411>batch, <00:29:59.645>right?

591
00:30:00.465 --> 00:30:03.685
<00:30:00.465>So <00:30:00.605>for <00:30:00.745>the <00:30:00.885>file <00:30:01.024>system <00:30:01.165>handling <00:30:01.304>API, <00:30:01.445>you <00:30:01.584>need <00:30:01.725>to <00:30:01.865>install,

592
00:30:03.985 --> 00:30:06.225
<00:30:03.985>um, <00:30:04.451>the <00:30:04.918>application <00:30:05.385>first.

593
00:30:06.965 --> 00:30:09.985
<00:30:06.965>And <00:30:07.092>then <00:30:07.219>there's <00:30:07.346>two <00:30:07.474>things <00:30:07.601>that <00:30:07.728>you <00:30:07.855>need <00:30:07.983>to <00:30:08.110>do. <00:30:08.237>At <00:30:08.365>first.

594
00:30:10.405 --> 00:30:13.715
<00:30:10.405>You <00:30:10.638>need <00:30:10.871>to <00:30:11.105>like <00:30:11.338>register <00:30:11.571>during <00:30:11.805>install.

595
00:30:13.945 --> 00:30:15.875
<00:30:13.945>This <00:30:14.120>is <00:30:14.294>again <00:30:14.470>done <00:30:14.645>in <00:30:14.820>the <00:30:14.995>web <00:30:15.169>app <00:30:15.345>manifest.

596
00:30:15.975 --> 00:30:19.715
<00:30:15.975>So <00:30:16.130>here <00:30:16.286>you <00:30:16.441>just <00:30:16.597>specify <00:30:16.752>the <00:30:16.908>file <00:30:17.063>handlers, <00:30:17.219>um, <00:30:17.375>property,

597
00:30:20.015 --> 00:30:24.515
<00:30:20.015>and <00:30:20.155>then <00:30:20.295>you <00:30:20.435>can, <00:30:20.575>uh, <00:30:20.715>specify, <00:30:20.855>um, <00:30:20.995>yeah, <00:30:21.135>what <00:30:21.275>should <00:30:21.415>happen.

598
00:30:25.055 --> 00:30:28.075
<00:30:25.055>Uh, <00:30:25.210>if <00:30:25.366>you <00:30:25.521>would <00:30:25.677>open <00:30:25.832>the <00:30:25.988>application <00:30:26.143>with <00:30:26.299>a <00:30:26.455>p

599
00:30:28.075 --> 00:30:31.235
<00:30:28.075>and <00:30:28.202>g <00:30:28.329>file <00:30:28.456>in <00:30:28.584>that <00:30:28.711>case, <00:30:28.838>then <00:30:28.965>we <00:30:29.093>would <00:30:29.220>just <00:30:29.347>open <00:30:29.475>slash

600
00:30:31.335 --> 00:30:34.875
<00:30:31.335>so <00:30:31.475>the <00:30:31.615>the <00:30:31.755>route <00:30:31.895>route, <00:30:32.035>so <00:30:32.175>to <00:30:32.315>say, <00:30:32.455>for <00:30:32.595>your <00:30:32.735>application.

601
00:30:35.135 --> 00:30:37.115
<00:30:35.135>And <00:30:35.368>your <00:30:35.601>application <00:30:35.835>would <00:30:36.068>then <00:30:36.301>launch <00:30:36.535>again.

602
00:30:39.125 --> 00:30:41.745
<00:30:39.125>The <00:30:39.405>second <00:30:39.685>part <00:30:39.965>is <00:30:40.245>that, <00:30:40.525>um,

603
00:30:42.405 --> 00:30:43.945
<00:30:42.405>that's <00:30:42.751>a <00:30:43.098>declarative <00:30:43.444>part, <00:30:43.791>right?

604
00:30:44.085 --> 00:30:46.625
<00:30:44.085>So <00:30:44.240>you, <00:30:44.396>uh, <00:30:44.551>declare <00:30:44.707>that <00:30:44.862>in <00:30:45.018>the <00:30:45.173>web <00:30:45.329>app <00:30:45.485>manifest.

605
00:30:47.405 --> 00:30:50.255
<00:30:47.405>Um, <00:30:47.685>and <00:30:47.965>then <00:30:48.245>the <00:30:48.524>Chrome <00:30:48.805>browser

606
00:30:50.395 --> 00:30:52.215
<00:30:50.395>or <00:30:50.628>chromium <00:30:50.861>based <00:30:51.095>browser <00:30:51.328>will <00:30:51.561>take <00:30:51.795>care

607
00:30:52.235 --> 00:30:55.095
<00:30:52.235>of <00:30:52.468>registering <00:30:52.701>your <00:30:52.935>application <00:30:53.168>for <00:30:53.401>the <00:30:53.635>extension.

608
00:30:55.795 --> 00:30:58.695
<00:30:55.795>And <00:30:55.950>then <00:30:56.106>there's <00:30:56.261>also <00:30:56.417>an <00:30:56.572>I <00:30:56.728>input, <00:30:56.883>uh, <00:30:57.039>imperative <00:30:57.195>part.

609
00:30:59.115 --> 00:31:00.455
<00:30:59.115>Now <00:30:59.416>your <00:30:59.718>application <00:31:00.019>is <00:31:00.321>launched

610
00:31:00.915 --> 00:31:04.295
<00:31:00.915>and <00:31:01.042>now <00:31:01.169>it <00:31:01.296>needs <00:31:01.424>to <00:31:01.551>gain <00:31:01.678>access <00:31:01.805>to <00:31:01.933>this, <00:31:02.060>to <00:31:02.187>this <00:31:02.315>file.

611
00:31:05.485 --> 00:31:07.825
<00:31:05.485>And <00:31:05.718>again, <00:31:05.951>this <00:31:06.185>is <00:31:06.418>also <00:31:06.651>very <00:31:06.885>simple.

612
00:31:08.285 --> 00:31:10.185
<00:31:08.285>Uh, <00:31:08.565>here's <00:31:08.845>the <00:31:09.125>so-called <00:31:09.405>launch <00:31:09.685>queue.

613
00:31:10.525 --> 00:31:13.145
<00:31:10.525>So <00:31:10.641>we <00:31:10.758>could <00:31:10.875>test <00:31:10.991>if <00:31:11.108>the <00:31:11.225>launch <00:31:11.341>queue <00:31:11.458>is <00:31:11.575>there <00:31:11.691>on <00:31:11.808>the <00:31:11.925>window

614
00:31:13.145 --> 00:31:15.905
<00:31:13.145>object, <00:31:13.300>and <00:31:13.456>then <00:31:13.611>we <00:31:13.767>can <00:31:13.922>call <00:31:14.078>the <00:31:14.233>set <00:31:14.389>consumer <00:31:14.545>method.

615
00:31:17.085 --> 00:31:21.145
<00:31:17.085>And <00:31:17.212>inside <00:31:17.339>this <00:31:17.466>method <00:31:17.594>we <00:31:17.721>can <00:31:17.848>then <00:31:17.975>get <00:31:18.103>access <00:31:18.230>to <00:31:18.357>the <00:31:18.485>files,

616
00:31:21.725 --> 00:31:24.305
<00:31:21.725>um, <00:31:21.925>with <00:31:22.125>which <00:31:22.324>the <00:31:22.524>application <00:31:22.725>was <00:31:22.925>opened <00:31:23.125>with.

617
00:31:27.245 --> 00:31:31.215
<00:31:27.245>Alright, <00:31:27.524>now <00:31:27.804>let's <00:31:28.084>summarize <00:31:28.364>a <00:31:28.645>bit.

618
00:31:31.605 --> 00:31:34.015
<00:31:31.605>What <00:31:32.071>have <00:31:32.538>we <00:31:33.005>seen

619
00:31:34.155 --> 00:31:37.215
<00:31:34.155>or <00:31:34.355>where <00:31:34.555>will <00:31:34.754>the <00:31:34.955>web <00:31:35.155>leads <00:31:35.355>to, <00:31:35.555>right?

620
00:31:37.875 --> 00:31:42.215
<00:31:37.875>And <00:31:38.015>personally, <00:31:38.155>I <00:31:38.295>believe <00:31:38.435>that <00:31:38.575>the <00:31:38.715>web <00:31:38.855>will <00:31:38.995>lead <00:31:39.135>to <00:31:39.275>PWAs

621
00:31:43.655 --> 00:31:45.755
<00:31:43.655>and <00:31:43.935>we <00:31:44.215>see <00:31:44.495>that <00:31:44.774>already, <00:31:45.055>right?

622
00:31:45.895 --> 00:31:49.355
<00:31:45.895>So <00:31:46.095>right <00:31:46.295>now, <00:31:46.495>applications <00:31:46.695>like <00:31:46.895>virtual <00:31:47.095>studio <00:31:47.295>code

623
00:31:49.935 --> 00:31:50.995
<00:31:49.935>are <00:31:50.411>already <00:31:50.889>web-based.

624
00:31:51.175 --> 00:31:53.955
<00:31:51.175>If <00:31:51.330>you're <00:31:51.486>using <00:31:51.641>VS <00:31:51.797>code, <00:31:51.952>you're <00:31:52.108>using <00:31:52.263>a <00:31:52.419>web-based <00:31:52.575>app,

625
00:31:54.795 --> 00:31:57.685
<00:31:54.795>it's <00:31:55.028>currently <00:31:55.261>packaged <00:31:55.495>in <00:31:55.728>an <00:31:55.961>electron <00:31:56.195>container

626
00:31:58.345 --> 00:32:01.445
<00:31:58.345>or <00:31:58.545>you're <00:31:58.745>using <00:31:58.945>the <00:31:59.145>new <00:31:59.345>VS <00:31:59.545>code <00:31:59.745>PWA

627
00:32:01.445 --> 00:32:05.685
<00:32:01.445>because <00:32:01.600>this <00:32:01.756>application <00:32:01.911>has <00:32:02.067>made <00:32:02.222>the <00:32:02.378>shift <00:32:02.533>from <00:32:02.689>a <00:32:02.845>native

628
00:32:05.685 --> 00:32:08.565
<00:32:05.685>wrapper <00:32:05.885>like <00:32:06.085>electron <00:32:06.284>to <00:32:06.485>an <00:32:06.685>actual <00:32:06.885>web <00:32:07.085>application.

629
00:32:09.795 --> 00:32:13.135
<00:32:09.795>And <00:32:09.970>now <00:32:10.145>I <00:32:10.320>guess <00:32:10.495>you <00:32:10.670>can, <00:32:10.845>you <00:32:11.020>can <00:32:11.195>imagine

630
00:32:13.135 --> 00:32:15.015
<00:32:13.135>what <00:32:13.368>the <00:32:13.601>next <00:32:13.835>applications <00:32:14.068>could <00:32:14.301>be, <00:32:14.535>right?

631
00:32:15.435 --> 00:32:17.815
<00:32:15.435>So <00:32:15.635>currently <00:32:15.835>I'm <00:32:16.034>presenting <00:32:16.235>this <00:32:16.435>app, <00:32:16.635>uh, <00:32:16.835>this,

632
00:32:17.815 --> 00:32:20.335
<00:32:17.815>this <00:32:17.990>presentation <00:32:18.165>here <00:32:18.340>in <00:32:18.515>PowerPoint <00:32:18.690>in <00:32:18.865>a <00:32:19.040>native <00:32:19.215>client.

633
00:32:20.915 --> 00:32:24.615
<00:32:20.915>Um, <00:32:21.042>however, <00:32:21.169>um, <00:32:21.296>we <00:32:21.424>have <00:32:21.551>everything <00:32:21.678>in <00:32:21.805>the <00:32:21.933>web <00:32:22.060>that <00:32:22.187>we <00:32:22.315>need

634
00:32:24.755 --> 00:32:26.215
<00:32:24.755>to <00:32:24.974>also <00:32:25.193>pour <00:32:25.412>this <00:32:25.631>to <00:32:25.850>the <00:32:26.069>web.

635
00:32:26.755 --> 00:32:28.415
<00:32:26.755>And <00:32:26.988>of <00:32:27.221>course <00:32:27.455>that's <00:32:27.688>great <00:32:27.921>for <00:32:28.155>developers

636
00:32:28.415 --> 00:32:29.615
<00:32:28.415>because <00:32:28.775>you <00:32:29.135>only <00:32:29.495>need

637
00:32:29.615 --> 00:32:31.695
<00:32:29.615>to <00:32:29.895>implement <00:32:30.175>your <00:32:30.455>application <00:32:30.735>exactly <00:32:31.015>once

638
00:32:32.435 --> 00:32:34.855
<00:32:32.435>and <00:32:32.635>it'll <00:32:32.835>run <00:32:33.034>regardless <00:32:33.235>of <00:32:33.435>the <00:32:33.635>target <00:32:33.835>platform.

639
00:32:35.285 --> 00:32:38.015
<00:32:35.285>Then <00:32:35.440>this <00:32:35.596>new <00:32:35.751>version <00:32:35.907>of <00:32:36.062>PowerPoint <00:32:36.218>would <00:32:36.373>run <00:32:36.529>on <00:32:36.685>macros

640
00:32:38.015 --> 00:32:39.365
<00:32:38.015>and <00:32:38.420>Windows <00:32:38.825>and <00:32:39.230>Linux,

641
00:32:39.905 --> 00:32:42.365
<00:32:39.905>and <00:32:40.105>you <00:32:40.305>would <00:32:40.504>not <00:32:40.705>have <00:32:40.905>to <00:32:41.105>implement <00:32:41.305>PowerPoint

642
00:32:42.435 --> 00:32:43.445
<00:32:42.435>over <00:32:42.737>and <00:32:43.041>over <00:32:43.344>again.

643
00:32:43.985 --> 00:32:45.645
<00:32:43.985>You <00:32:44.185>would <00:32:44.385>not <00:32:44.584>have <00:32:44.784>to <00:32:44.985>fix <00:32:45.185>bug <00:32:45.385>twice

644
00:32:45.865 --> 00:32:48.605
<00:32:45.865>or <00:32:46.040>to <00:32:46.215>implement <00:32:46.390>features <00:32:46.565>like <00:32:46.740>three <00:32:46.915>times <00:32:47.090>or <00:32:47.265>so.

645
00:32:50.105 --> 00:32:53.925
<00:32:50.105>That's <00:32:50.280>why <00:32:50.455>I <00:32:50.630>think <00:32:50.805>that, <00:32:50.980>um, <00:32:51.155>yeah, <00:32:51.330>the <00:32:51.505>path

646
00:32:54.105 --> 00:32:58.765
<00:32:54.105>for <00:32:54.280>productivity <00:32:54.455>applications <00:32:54.630>will <00:32:54.805>continue <00:32:54.980>to <00:32:55.155>be, <00:32:55.330>uh, <00:32:55.505>PWAs.

647
00:33:01.405 --> 00:33:03.705
<00:33:01.405>Now, <00:33:01.580>before <00:33:01.754>we <00:33:01.930>close <00:33:02.105>off, <00:33:02.280>I <00:33:02.455>will <00:33:02.629>also, <00:33:02.805>um,

648
00:33:04.205 --> 00:33:05.865
<00:33:04.205>and <00:33:04.485>of <00:33:04.764>course <00:33:05.044>answer <00:33:05.324>your <00:33:05.605>questions.

649
00:33:06.285 --> 00:33:08.865
<00:33:06.285>Um, <00:33:06.440>I <00:33:06.596>want <00:33:06.751>to <00:33:06.907>show <00:33:07.062>you, <00:33:07.218>uh, <00:33:07.373>a <00:33:07.529>little <00:33:07.685>bit

650
00:33:08.865 --> 00:33:09.945
<00:33:08.865>of <00:33:09.108>research <00:33:09.351>that <00:33:09.594>we've <00:33:09.837>done.

651
00:33:10.925 --> 00:33:12.585
<00:33:10.925>Uh, <00:33:11.205>this <00:33:11.485>is <00:33:11.764>like <00:33:12.044>super <00:33:12.325>new.

652
00:33:13.745 --> 00:33:17.285
<00:33:13.745>Um, <00:33:13.978>this <00:33:14.211>is <00:33:14.445>the, <00:33:14.678>oh, <00:33:14.911>come <00:33:15.145>on.

653
00:33:18.105 --> 00:33:20.165
<00:33:18.105>Uh, <00:33:18.385>then <00:33:18.665>let's <00:33:18.945>go <00:33:19.225>for <00:33:19.505>it.

654
00:33:20.565 --> 00:33:23.485
<00:33:20.565>Almanac, <00:33:21.031>HDP <00:33:21.498>archive, <00:33:21.965>um,

655
00:33:23.955 --> 00:33:28.805
<00:33:23.955>because <00:33:24.129>this <00:33:24.304>is <00:33:24.480>what <00:33:24.655>we <00:33:24.830>have <00:33:25.004>just <00:33:25.179>done, <00:33:25.355>2021,

656
00:33:29.225 --> 00:33:31.805
<00:33:29.225>uh, <00:33:29.380>this <00:33:29.536>is <00:33:29.691>a <00:33:29.847>free <00:33:30.002>ebook, <00:33:30.158>it's <00:33:30.313>not <00:33:30.469>published <00:33:30.625>yet.

657
00:33:31.835 --> 00:33:36.685
<00:33:31.835>It's, <00:33:31.975>uh, <00:33:32.115>the <00:33:32.255>yearly <00:33:32.395>web <00:33:32.535>almanac <00:33:32.675>of <00:33:32.815>the, <00:33:32.955>um, <00:33:33.095>HDP <00:33:33.235>archive.

658
00:33:37.385 --> 00:33:42.125
<00:33:37.385>Um, <00:33:37.585>and <00:33:37.785>in <00:33:37.985>this <00:33:38.185>ebook <00:33:38.385>we, <00:33:38.585>um, <00:33:38.785>yeah,

659
00:33:42.345 --> 00:33:44.525
<00:33:42.345>try <00:33:42.545>and <00:33:42.745>we <00:33:42.945>go <00:33:43.145>and <00:33:43.345>analyze <00:33:43.545>the <00:33:43.745>web.

660
00:33:44.905 --> 00:33:49.285
<00:33:44.905>Um, <00:33:45.060>so <00:33:45.216>we <00:33:45.371>are <00:33:45.527>crawling, <00:33:45.682>um, <00:33:45.838>eight <00:33:45.993>points, <00:33:46.149>2 <00:33:46.305>million,

661
00:33:49.865 --> 00:33:50.885
<00:33:49.865>um, <00:33:50.783>websites,

662
00:33:51.305 --> 00:33:54.325
<00:33:51.305>and <00:33:51.460>then <00:33:51.616>analyze <00:33:51.771>them, <00:33:51.927>for <00:33:52.082>example, <00:33:52.238>how <00:33:52.393>big <00:33:52.549>are <00:33:52.705>they?

663
00:33:54.665 --> 00:33:56.805
<00:33:54.665>How, <00:33:54.898>which <00:33:55.131>CSS <00:33:55.365>features <00:33:55.598>do <00:33:55.831>they <00:33:56.065>use,

664
00:33:56.975 --> 00:33:59.405
<00:33:56.975>which <00:33:57.130>is <00:33:57.286>the <00:33:57.441>highest <00:33:57.597>Z <00:33:57.752>index <00:33:57.908>that <00:33:58.063>we <00:33:58.219>can <00:33:58.375>find?

665
00:33:59.425 --> 00:34:03.605
<00:33:59.425>And <00:33:59.552>so <00:33:59.679>on. <00:33:59.806>And, <00:33:59.934>um, <00:34:00.061>I <00:34:00.188>author <00:34:00.315>the <00:34:00.443>chapter <00:34:00.570>for <00:34:00.697>the <00:34:00.825>cap

666
00:34:03.985 --> 00:34:05.205
<00:34:03.985>for <00:34:04.351>the <00:34:04.716>capability <00:34:05.082>section.

667
00:34:05.665 --> 00:34:07.005
<00:34:05.665>And <00:34:06.067>here <00:34:06.469>we <00:34:06.871>analyzed

668
00:34:07.185 --> 00:34:11.695
<00:34:07.185>how <00:34:07.385>many <00:34:07.585>applications <00:34:07.784>already <00:34:07.985>use <00:34:08.185>certain, <00:34:08.384>um, <00:34:08.585>yeah,

669
00:34:11.755 --> 00:34:13.255
<00:34:11.755>of <00:34:12.092>those <00:34:12.430>new <00:34:12.767>Fugu <00:34:13.105>APIs.

670
00:34:13.255 --> 00:34:17.735
<00:34:13.255>And <00:34:13.455>quite <00:34:13.655>interesting <00:34:13.855>is <00:34:14.055>that <00:34:14.255>nine <00:34:14.455>point, <00:34:14.655>uh,

671
00:34:18.045 --> 00:34:19.815
<00:34:18.045>yeah, <00:34:18.745>roughly <00:34:19.445>9%.

672
00:34:20.435 --> 00:34:25.145
<00:34:20.435>Um, <00:34:20.610>of <00:34:20.784>all <00:34:20.960>websites <00:34:21.134>already <00:34:21.310>use <00:34:21.485>the <00:34:21.659>asy <00:34:21.835>clipboard.

673
00:34:25.185 --> 00:34:28.145
<00:34:25.185>API <00:34:25.360>specifically, <00:34:25.534>they <00:34:25.710>used <00:34:25.884>to <00:34:26.060>write <00:34:26.235>text, <00:34:26.409>um, <00:34:26.585>method.

674
00:34:28.685 --> 00:34:30.585
<00:34:28.685>Now <00:34:28.860>to <00:34:29.034>be <00:34:29.210>honest, <00:34:29.384>this <00:34:29.560>is <00:34:29.735>due <00:34:29.909>to, <00:34:30.085>uh,

675
00:34:30.585 --> 00:34:32.545
<00:34:30.585>the <00:34:31.051>YouTube <00:34:31.518>video <00:34:31.985>embed

676
00:34:32.545 --> 00:34:35.225
<00:34:32.545>because <00:34:32.745>that <00:34:32.945>uses, <00:34:33.145>uh, <00:34:33.345>the <00:34:33.545>right <00:34:33.745>text <00:34:33.945>method,

677
00:34:35.325 --> 00:34:37.985
<00:34:35.324>but <00:34:35.464>as <00:34:35.605>you <00:34:35.745>can <00:34:35.884>see, <00:34:36.024>it's <00:34:36.165>already <00:34:36.304>on <00:34:36.444>10% <00:34:36.585>of <00:34:36.725>the

678
00:34:38.045 --> 00:34:39.345
<00:34:38.045>for <00:34:38.435>us <00:34:38.824>visible <00:34:39.214>internet.

679
00:34:40.125 --> 00:34:42.625
<00:34:40.125>Um, <00:34:40.264>and <00:34:40.405>then <00:34:40.545>there's <00:34:40.685>also, <00:34:40.824>ah, <00:34:40.965>here <00:34:41.105>you <00:34:41.245>can <00:34:41.385>also <00:34:41.525>see

680
00:34:42.685 --> 00:34:43.865
<00:34:42.685>how <00:34:42.950>the <00:34:43.216>usage <00:34:43.481>has <00:34:43.746>changed

681
00:34:44.005 --> 00:34:47.105
<00:34:44.005>and <00:34:44.238>how <00:34:44.471>that <00:34:44.705>like, <00:34:44.938>uh, <00:34:45.171>increases, <00:34:45.405>um,

682
00:34:47.215 --> 00:34:49.445
<00:34:47.215>exponentially, <00:34:48.615>right?

683
00:34:49.545 --> 00:34:53.125
<00:34:49.545>Here's <00:34:49.720>file <00:34:49.895>system <00:34:50.070>access <00:34:50.245>API, <00:34:50.420>um, <00:34:50.595>currently <00:34:50.770>being <00:34:50.945>used

684
00:34:53.125 --> 00:34:54.605
<00:34:53.125>by <00:34:53.791>29 <00:34:54.456>applications.

685
00:34:55.065 --> 00:34:56.725
<00:34:55.065>Uh, <00:34:55.345>during <00:34:55.625>research. <00:34:55.905>We've <00:34:56.185>also <00:34:56.465>seen

686
00:34:56.725 --> 00:34:59.165
<00:34:56.725>that <00:34:56.924>there's <00:34:57.125>call <00:34:57.325>draw <00:34:57.525>app, <00:34:57.725>a <00:34:57.924>web <00:34:58.125>version

687
00:34:59.265 --> 00:35:01.325
<00:34:59.265>of <00:34:59.615>this <00:34:59.964>call <00:35:00.315>draw <00:35:00.665>application.

688
00:35:01.505 --> 00:35:04.965
<00:35:01.505>Uh, <00:35:01.645>so <00:35:01.785>I <00:35:01.925>know <00:35:02.065>that, <00:35:02.205>uh, <00:35:02.345>from <00:35:02.485>the <00:35:02.625>early <00:35:02.765>days, <00:35:02.905>um,

689
00:35:05.145 --> 00:35:08.165
<00:35:05.145>web <00:35:05.345>share <00:35:05.545>is <00:35:05.745>used <00:35:05.945>by <00:35:06.145>many, <00:35:06.345>many <00:35:06.545>applications.

690
00:35:08.945 --> 00:35:12.125
<00:35:08.945>Um, <00:35:09.061>and <00:35:09.178>yeah, <00:35:09.295>if <00:35:09.411>you <00:35:09.528>like, <00:35:09.645>I <00:35:09.761>can <00:35:09.878>also <00:35:09.995>look <00:35:10.111>at <00:35:10.228>this <00:35:10.345>chapter

691
00:35:12.345 --> 00:35:16.485
<00:35:12.345>and <00:35:12.500>see, <00:35:12.656>uh, <00:35:12.811>how <00:35:12.967>many <00:35:13.122>other <00:35:13.278>websites <00:35:13.433>use <00:35:13.589>certain, <00:35:13.745>um,

692
00:35:16.685 --> 00:35:17.885
<00:35:16.685>capabilities <00:35:17.765>here.

693
00:35:19.235 --> 00:35:21.365
<00:35:19.235>Alright, <00:35:19.435>now <00:35:19.635>that's <00:35:19.835>just <00:35:20.035>as <00:35:20.235>a <00:35:20.435>little <00:35:20.635>bonus.

694
00:35:22.185 --> 00:35:25.315
<00:35:22.185>Um, <00:35:22.651>so <00:35:23.118>let's <00:35:23.585>summarize

695
00:35:27.015 --> 00:35:31.925
<00:35:27.015>as <00:35:27.214>we've <00:35:27.415>seen, <00:35:27.615>wait, <00:35:27.815>as <00:35:28.015>we've <00:35:28.214>seen <00:35:28.415>in

696
00:35:31.925 --> 00:35:36.045
<00:35:31.925>that <00:35:32.100>FUBU <00:35:32.275>API <00:35:32.450>tracker, <00:35:32.625>new <00:35:32.800>powerful <00:35:32.975>APIs <00:35:33.150>regularly <00:35:33.325>ship

697
00:35:36.045 --> 00:35:38.485
<00:35:36.045>with <00:35:36.245>each <00:35:36.445>new <00:35:36.645>release <00:35:36.845>of <00:35:37.045>chromium <00:35:37.245>based <00:35:37.445>browsers.

698
00:35:39.025 --> 00:35:43.285
<00:35:39.025>Um, <00:35:39.225>some <00:35:39.425>only <00:35:39.625>add <00:35:39.825>minor <00:35:40.025>finishing <00:35:40.225>touches, <00:35:40.425>right?

699
00:35:43.305 --> 00:35:46.125
<00:35:43.305>So <00:35:43.504>the <00:35:43.705>badging <00:35:43.904>API <00:35:44.105>is <00:35:44.305>nothing <00:35:44.504>super <00:35:44.705>special.

700
00:35:46.195 --> 00:35:48.045
<00:35:46.195>It's <00:35:46.428>nice <00:35:46.661>to <00:35:46.895>have, <00:35:47.128>but <00:35:47.361>you <00:35:47.595>could

701
00:35:48.045 --> 00:35:49.205
<00:35:48.045>also <00:35:48.253>live <00:35:48.462>without <00:35:48.671>it, <00:35:48.880>of <00:35:49.089>course.

702
00:35:49.625 --> 00:35:53.245
<00:35:49.625>And <00:35:49.825>others <00:35:50.025>have <00:35:50.225>enabled <00:35:50.425>entire <00:35:50.625>application <00:35:50.825>categories <00:35:51.025>such

703
00:35:53.245 --> 00:35:56.085
<00:35:53.245>as <00:35:53.384>productivity <00:35:53.525>apps <00:35:53.665>to <00:35:53.805>finally <00:35:53.944>make <00:35:54.085>the <00:35:54.225>shift <00:35:54.365>to <00:35:54.505>the <00:35:54.645>web.

704
00:35:56.675 --> 00:35:59.085
<00:35:56.675>Also, <00:35:56.875>some <00:35:57.075>APIs <00:35:57.275>have <00:35:57.475>already <00:35:57.675>made <00:35:57.875>their <00:35:58.075>way

705
00:35:59.085 --> 00:36:00.165
<00:35:59.085>into <00:35:59.571>other <00:36:00.057>browsers.

706
00:36:00.465 --> 00:36:05.085
<00:36:00.465>So <00:36:00.605>for <00:36:00.745>example, <00:36:00.885>webshare <00:36:01.025>API <00:36:01.165>is <00:36:01.305>not <00:36:01.445>available <00:36:01.585>on <00:36:01.725>chromium <00:36:01.865>on

707
00:36:05.105 --> 00:36:08.885
<00:36:05.105>the <00:36:05.280>Mac <00:36:05.455>platform, <00:36:05.630>but <00:36:05.805>it <00:36:05.980>was <00:36:06.155>implemented <00:36:06.330>by <00:36:06.505>WebKit.

708
00:36:08.885 --> 00:36:11.405
<00:36:08.885>So <00:36:09.040>Apple <00:36:09.196>and <00:36:09.351>Safari, <00:36:09.507>they <00:36:09.662>were <00:36:09.818>even <00:36:09.973>the <00:36:10.129>first <00:36:10.285>ones

709
00:36:11.405 --> 00:36:13.645
<00:36:11.405>to <00:36:11.638>implement <00:36:11.871>web <00:36:12.105>share <00:36:12.338>on <00:36:12.571>the <00:36:12.805>desktop.

710
00:36:13.885 --> 00:36:18.515
<00:36:13.885>I <00:36:14.118>believe <00:36:14.351>despite <00:36:14.585>all <00:36:14.818>of <00:36:15.051>those <00:36:15.285>powerful,

711
00:36:19.135 --> 00:36:22.115
<00:36:19.135>um, <00:36:19.310>APIs <00:36:19.485>and <00:36:19.660>capabilities, <00:36:19.835>the <00:36:20.010>UGAL <00:36:20.185>process <00:36:20.360>makes <00:36:20.535>sure

712
00:36:22.115 --> 00:36:24.955
<00:36:22.115>that <00:36:22.314>those <00:36:22.515>capabilities <00:36:22.714>are <00:36:22.915>implemented <00:36:23.115>in <00:36:23.314>a <00:36:23.515>secure

713
00:36:25.295 --> 00:36:26.675
<00:36:25.295>and <00:36:25.709>privacy <00:36:26.123>preserving <00:36:26.537>manner.

714
00:36:26.815 --> 00:36:29.475
<00:36:26.815>For <00:36:27.015>example, <00:36:27.215>by <00:36:27.415>adding <00:36:27.615>permission <00:36:27.815>prompts <00:36:28.015>where <00:36:28.215>necessary,

715
00:36:30.015 --> 00:36:32.955
<00:36:30.015>um, <00:36:30.365>or <00:36:30.714>requiring <00:36:31.065>HDP <00:36:31.415>Ps

716
00:36:33.015 --> 00:36:34.035
<00:36:33.015>or <00:36:33.473>making <00:36:33.933>sure

717
00:36:34.035 --> 00:36:36.875
<00:36:34.035>that <00:36:34.174>APIs <00:36:34.315>can <00:36:34.455>only <00:36:34.595>be <00:36:34.734>used <00:36:34.875>when <00:36:35.015>you <00:36:35.154>press <00:36:35.295>a <00:36:35.435>key

718
00:36:36.895 --> 00:36:38.955
<00:36:36.895>or <00:36:37.175>click <00:36:37.455>an <00:36:37.735>element, <00:36:38.015>for <00:36:38.295>example.

719
00:36:39.615 --> 00:36:43.235
<00:36:39.615>So <00:36:39.790>I <00:36:39.964>would <00:36:40.140>encourage <00:36:40.314>you <00:36:40.490>to, <00:36:40.665>uh, <00:36:40.839>to <00:36:41.015>go

720
00:36:43.575 --> 00:36:47.075
<00:36:43.575>and <00:36:43.714>make <00:36:43.855>the <00:36:43.995>web <00:36:44.134>a <00:36:44.274>new <00:36:44.415>yeah, <00:36:44.555>a <00:36:44.694>more <00:36:44.835>capable <00:36:44.975>platform

721
00:36:47.415 --> 00:36:50.515
<00:36:47.415>by <00:36:47.765>building <00:36:48.115>greater <00:36:48.465>and <00:36:48.815>more

722
00:36:50.515 --> 00:36:54.715
<00:36:50.515>and <00:36:50.795>more <00:36:51.075>powerful <00:36:51.355>capable <00:36:51.634>web <00:36:51.915>applications.

723
00:36:57.005 --> 00:36:58.825
<00:36:57.005>All <00:36:57.285>right, <00:36:57.565>and <00:36:57.845>now <00:36:58.125>I'm <00:36:58.405>open

724
00:36:58.925 --> 00:37:01.985
<00:36:58.925>for <00:36:59.125>your <00:36:59.325>question <00:36:59.525>questions <00:36:59.725>that <00:36:59.925>you <00:37:00.125>might <00:37:00.325>have.

725
00:37:03.025 --> 00:37:05.545
<00:37:03.025>I <00:37:03.180>have <00:37:03.336>a <00:37:03.491>lot <00:37:03.647>of <00:37:03.802>questions <00:37:03.958>from <00:37:04.113>the <00:37:04.269>audience, <00:37:04.425>so

726
00:37:06.025 --> 00:37:06.745
<00:37:06.025>Excellent. <00:37:06.673>Nice.

727
00:37:06.795 --> 00:37:09.265
<00:37:06.795>Let's, <00:37:06.995>let's <00:37:07.195>get <00:37:07.395>straight <00:37:07.595>to <00:37:07.795>it. <00:37:07.995>Um, <00:37:08.195>mm-hmm.

728
00:37:09.915 --> 00:37:12.425
<00:37:09.915>First <00:37:10.195>question <00:37:10.475>is <00:37:10.755>from <00:37:11.035>Alexander. <00:37:11.315>Mm-hmm.

729
00:37:12.505 --> 00:37:15.865
<00:37:12.505>And <00:37:12.612>this <00:37:12.720>is <00:37:12.828>a <00:37:12.935>pain <00:37:13.043>point <00:37:13.151>we <00:37:13.258>will <00:37:13.366>hear <00:37:13.474>a <00:37:13.581>lot <00:37:13.689>when <00:37:13.797>we <00:37:13.905>talk

730
00:37:15.865 --> 00:37:16.985
<00:37:15.865>about <00:37:16.873>PPWS.

731
00:37:17.325 --> 00:37:19.745
<00:37:17.325>Do <00:37:17.524>you <00:37:17.725>know <00:37:17.924>if <00:37:18.125>it <00:37:18.325>will <00:37:18.524>be <00:37:18.725>possible

732
00:37:19.745 --> 00:37:23.145
<00:37:19.745>to <00:37:19.920>use <00:37:20.095>push <00:37:20.270>notifications <00:37:20.444>in <00:37:20.620>PWS <00:37:20.795>on <00:37:20.970>iOS <00:37:21.145>devices?

733
00:37:23.725 --> 00:37:25.865
<00:37:23.725>Is <00:37:24.005>it <00:37:24.285>strictly <00:37:24.565>rejected <00:37:24.845>by <00:37:25.125>Apple,

734
00:37:26.045 --> 00:37:27.785
<00:37:26.045>or <00:37:26.278>can <00:37:26.511>we <00:37:26.745>hope <00:37:26.978>for <00:37:27.211>certainly <00:37:27.445>better?

735
00:37:29.655 --> 00:37:30.905
<00:37:29.655>Yeah, <00:37:30.030>that's <00:37:30.405>very <00:37:30.780>interesting

736
00:37:30.905 --> 00:37:35.785
<00:37:30.905>because, <00:37:31.105>uh, <00:37:31.305>currently, <00:37:31.505>um, <00:37:31.705>in <00:37:31.905>WebKit, <00:37:32.105>the <00:37:32.305>basics

737
00:37:35.965 --> 00:37:38.665
<00:37:35.965>for <00:37:36.198>the <00:37:36.431>push <00:37:36.665>API <00:37:36.898>are <00:37:37.131>being <00:37:37.365>implemented,

738
00:37:38.975 --> 00:37:40.185
<00:37:38.975>like <00:37:39.337>really <00:37:39.701>right <00:37:40.064>now.

739
00:37:40.845 --> 00:37:45.065
<00:37:40.845>Um, <00:37:41.000>so <00:37:41.156>there <00:37:41.311>is, <00:37:41.467>so <00:37:41.622>the <00:37:41.778>implement, <00:37:41.933>the <00:37:42.089>first, <00:37:42.245>um,

740
00:37:45.435 --> 00:37:48.905
<00:37:45.435>interfaces <00:37:45.610>that <00:37:45.785>we <00:37:45.960>would <00:37:46.134>need <00:37:46.310>in <00:37:46.485>order <00:37:46.660>to, <00:37:46.835>uh,

741
00:37:49.105 --> 00:37:52.345
<00:37:49.105>retrieve <00:37:49.305>push <00:37:49.505>notifications <00:37:49.705>on <00:37:49.905>iOS <00:37:50.105>devices <00:37:50.305>as <00:37:50.505>well.

742
00:37:52.925 --> 00:37:56.425
<00:37:52.925>Now <00:37:53.080>there <00:37:53.236>is <00:37:53.391>hope, <00:37:53.547>um, <00:37:53.702>that <00:37:53.858>does <00:37:54.013>not <00:37:54.169>necessarily <00:37:54.325>mean

743
00:37:56.425 --> 00:37:58.225
<00:37:56.425>that <00:37:56.658>it <00:37:56.891>will <00:37:57.125>actually <00:37:57.358>ship <00:37:57.591>in <00:37:57.825>Safari.

744
00:37:58.805 --> 00:38:00.105
<00:37:58.805>Uh, <00:37:59.097>but <00:37:59.390>we've <00:37:59.682>seen <00:37:59.975>that

745
00:38:00.105 --> 00:38:02.465
<00:38:00.105>before, <00:38:00.338>like <00:38:00.571>with <00:38:00.805>service <00:38:01.038>workers, <00:38:01.271>for <00:38:01.505>example.

746
00:38:02.615 --> 00:38:07.065
<00:38:02.615>They, <00:38:02.754>um, <00:38:02.895>I <00:38:03.035>think <00:38:03.174>no, <00:38:03.314>Microsoft <00:38:03.455>was <00:38:03.595>last <00:38:03.734>to <00:38:03.875>implement <00:38:04.015>them,

747
00:38:07.485 --> 00:38:09.425
<00:38:07.485>but <00:38:07.951>um, <00:38:08.418>also <00:38:08.885>Apple,

748
00:38:09.885 --> 00:38:11.625
<00:38:09.885>you <00:38:10.118>don't <00:38:10.351>hear <00:38:10.585>anything <00:38:10.818>from <00:38:11.051>them, <00:38:11.285>right?

749
00:38:11.855 --> 00:38:13.065
<00:38:11.855>They <00:38:12.072>never <00:38:12.290>say <00:38:12.508>yes <00:38:12.726>or <00:38:12.944>no,

750
00:38:13.125 --> 00:38:14.985
<00:38:13.125>so <00:38:13.405>they <00:38:13.685>also <00:38:13.965>never <00:38:14.245>strictly <00:38:14.525>reject.

751
00:38:15.685 --> 00:38:18.185
<00:38:15.685>Um, <00:38:15.860>but <00:38:16.035>we've <00:38:16.210>seen <00:38:16.384>that <00:38:16.560>in <00:38:16.735>the <00:38:16.910>past <00:38:17.085>somehow

752
00:38:18.485 --> 00:38:21.585
<00:38:18.485>or <00:38:18.718>sometime <00:38:18.951>just <00:38:19.185>those <00:38:19.418>basic <00:38:19.651>interfaces <00:38:19.885>appear

753
00:38:21.725 --> 00:38:24.945
<00:38:21.725>and <00:38:21.865>then <00:38:22.005>in <00:38:22.145>the <00:38:22.285>next <00:38:22.424>release <00:38:22.565>of <00:38:22.705>iOS, <00:38:22.845>the <00:38:22.985>APIs <00:38:23.125>present.

754
00:38:25.525 --> 00:38:27.185
<00:38:25.525>So <00:38:25.991>again, <00:38:26.458>there's <00:38:26.925>hope,

755
00:38:28.655 --> 00:38:31.105
<00:38:28.655>There's <00:38:28.855>no <00:38:29.055>yes, <00:38:29.255>but <00:38:29.455>there's <00:38:29.655>definitely <00:38:29.855>no, <00:38:30.055>no.

756
00:38:31.965 --> 00:38:36.485
<00:38:31.965>Yes. <00:38:32.165>Alright, <00:38:32.365>next <00:38:32.565>question <00:38:32.765>is <00:38:32.965>from <00:38:33.165>pio. <00:38:33.365>Mm-hmm.

757
00:38:36.585 --> 00:38:39.405
<00:38:36.585>How <00:38:36.760>does <00:38:36.935>the <00:38:37.110>access <00:38:37.285>access <00:38:37.460>control <00:38:37.635>work <00:38:37.810>with <00:38:37.985>fugu?

758
00:38:39.545 --> 00:38:42.245
<00:38:39.545>Or <00:38:39.685>is <00:38:39.825>FUGU <00:38:39.965>allowed <00:38:40.105>to <00:38:40.245>access, <00:38:40.385>for <00:38:40.525>example, <00:38:40.665>the <00:38:40.805>file <00:38:40.945>system

759
00:38:42.705 --> 00:38:45.965
<00:38:42.705>or <00:38:42.904>sensors <00:38:43.105>as <00:38:43.305>it <00:38:43.505>likes? <00:38:43.705>As <00:38:43.904>it <00:38:44.105>likes?

760
00:38:46.915 --> 00:38:50.285
<00:38:46.915>Yeah. <00:38:47.070>So <00:38:47.226>of <00:38:47.381>course <00:38:47.537>you <00:38:47.692>can <00:38:47.848>only <00:38:48.003>access <00:38:48.159>the <00:38:48.315>capabilities

761
00:38:50.555 --> 00:38:52.325
<00:38:50.555>that <00:38:50.835>are <00:38:51.115>exposed <00:38:51.395>as <00:38:51.674>an <00:38:51.955>API.

762
00:38:52.345 --> 00:38:55.445
<00:38:52.345>So <00:38:52.500>yes, <00:38:52.656>there, <00:38:52.811>there's <00:38:52.967>a <00:38:53.122>generic <00:38:53.278>sensor, <00:38:53.433>API <00:38:53.589>for <00:38:53.745>example,

763
00:38:55.475 --> 00:38:57.285
<00:38:55.475>there's <00:38:55.755>the <00:38:56.035>file <00:38:56.315>system <00:38:56.595>access, <00:38:56.875>API,

764
00:38:57.285 --> 00:38:59.245
<00:38:57.285>there <00:38:57.460>is <00:38:57.634>web <00:38:57.810>use <00:38:57.984>B <00:38:58.160>web <00:38:58.335>hit <00:38:58.509>and <00:38:58.685>stuff,

765
00:38:59.585 --> 00:39:01.925
<00:38:59.585>but <00:38:59.740>it <00:38:59.896>really <00:39:00.051>only <00:39:00.207>means <00:39:00.362>that <00:39:00.518>you <00:39:00.673>can <00:39:00.829>use <00:39:00.985>this,

766
00:39:02.345 --> 00:39:03.365
<00:39:02.345>um, <00:39:03.263>interfaces.

767
00:39:03.465 --> 00:39:07.645
<00:39:03.465>You <00:39:03.665>cannot <00:39:03.865>call <00:39:04.065>arbitrary, <00:39:04.265>um, <00:39:04.465>native <00:39:04.665>system <00:39:04.865>interfaces,

768
00:39:07.675 --> 00:39:09.925
<00:39:07.675>only <00:39:07.908>the <00:39:08.141>ones <00:39:08.375>that <00:39:08.608>are <00:39:08.841>exposed <00:39:09.075>to.

769
00:39:12.115 --> 00:39:16.125
<00:39:12.115>Okay. <00:39:12.348>Uh, <00:39:12.581>next <00:39:12.814>question <00:39:13.048>is <00:39:13.281>from <00:39:13.515>toda.

770
00:39:16.625 --> 00:39:19.045
<00:39:16.625>Uh, <00:39:16.858>TODA <00:39:17.091>is <00:39:17.325>asking, <00:39:17.558>what <00:39:17.791>about <00:39:18.025>security?

771
00:39:19.525 --> 00:39:21.485
<00:39:19.525>I <00:39:19.758>can <00:39:19.991>imagine <00:39:20.225>some <00:39:20.458>sites <00:39:20.691>exploding <00:39:20.925>these,

772
00:39:21.615 --> 00:39:23.005
<00:39:21.615>exploiting <00:39:22.240>these <00:39:22.866>APIs.

773
00:39:23.425 --> 00:39:26.245
<00:39:23.425>How <00:39:23.625>is <00:39:23.825>Project <00:39:24.025>Fuku <00:39:24.225>working <00:39:24.425>on <00:39:24.625>preventing <00:39:24.825>misusage?

774
00:39:27.445 --> 00:39:30.685
<00:39:27.445>Hmm. <00:39:27.645>I, <00:39:27.845>I <00:39:28.045>hope, <00:39:28.245>uh, <00:39:28.445>to <00:39:28.645>have <00:39:28.845>addressed

775
00:39:30.685 --> 00:39:32.085
<00:39:30.685>that <00:39:30.937>in, <00:39:31.189>uh, <00:39:31.441>in <00:39:31.693>the <00:39:31.945>summary.

776
00:39:32.665 --> 00:39:36.485
<00:39:32.665>Um, <00:39:32.840>so <00:39:33.015>there's <00:39:33.190>a <00:39:33.365>use <00:39:33.540>security <00:39:33.715>team <00:39:33.890>at <00:39:34.065>Chrome,

777
00:39:37.025 --> 00:39:40.325
<00:39:37.025>and <00:39:37.165>they <00:39:37.305>really <00:39:37.445>think <00:39:37.585>about <00:39:37.725>what <00:39:37.865>could <00:39:38.005>go <00:39:38.145>wrong <00:39:38.285>with <00:39:38.425>those,

778
00:39:40.625 --> 00:39:42.325
<00:39:40.625>uh, <00:39:40.975>APIs, <00:39:41.325>and <00:39:41.675>that's, <00:39:42.025>um,

779
00:39:43.025 --> 00:39:44.685
<00:39:43.025>how <00:39:43.491>they <00:39:43.958>implement <00:39:44.425>countermeasures.

780
00:39:45.025 --> 00:39:49.165
<00:39:45.025>Uh, <00:39:45.152>as <00:39:45.279>I've <00:39:45.406>said, <00:39:45.534>for <00:39:45.661>example, <00:39:45.788>you <00:39:45.915>can <00:39:46.043>only, <00:39:46.170>um, <00:39:46.297>oh, <00:39:46.425>hi.

781
00:39:50.665 --> 00:39:54.045
<00:39:50.665>You <00:39:50.805>can <00:39:50.945>only, <00:39:51.085>um, <00:39:51.225>access, <00:39:51.365>uh, <00:39:51.505>the <00:39:51.645>file <00:39:51.785>system, <00:39:51.925>for <00:39:52.065>example,

782
00:39:54.175 --> 00:39:57.925
<00:39:54.175>after <00:39:54.330>the <00:39:54.486>user <00:39:54.641>has <00:39:54.797>given <00:39:54.952>their <00:39:55.108>permission <00:39:55.263>through <00:39:55.419>that, <00:39:55.575>um,

783
00:39:58.255 --> 00:39:59.645
<00:39:58.255>build <00:39:58.567>and <00:39:58.880>file <00:39:59.193>picker, <00:39:59.506>right?

784
00:40:00.105 --> 00:40:03.605
<00:40:00.105>Or <00:40:00.212>you <00:40:00.320>can <00:40:00.428>only, <00:40:00.535>uh, <00:40:00.643>invoke <00:40:00.751>an <00:40:00.858>API <00:40:00.966>as <00:40:01.074>a <00:40:01.181>part <00:40:01.289>of <00:40:01.397>a <00:40:01.505>click.

785
00:40:03.865 --> 00:40:07.805
<00:40:03.865>So <00:40:03.981>that, <00:40:04.098>let's <00:40:04.214>say <00:40:04.331>an <00:40:04.448>AD <00:40:04.564>just <00:40:04.681>does <00:40:04.798>not <00:40:04.915>try <00:40:05.031>to <00:40:05.148>call <00:40:05.265>this,

786
00:40:07.805 --> 00:40:10.485
<00:40:07.805>this, <00:40:07.980>uh, <00:40:08.154>applica, <00:40:08.330>uh, <00:40:08.504>this, <00:40:08.680>uh, <00:40:08.855>interface <00:40:09.029>right <00:40:09.205>away.

787
00:40:10.705 --> 00:40:13.405
<00:40:10.705>You <00:40:10.880>cannot <00:40:11.055>call <00:40:11.230>some <00:40:11.404>interfaces <00:40:11.580>when <00:40:11.755>you <00:40:11.930>are, <00:40:12.105>uh,

788
00:40:13.405 --> 00:40:14.485
<00:40:13.405>hosted <00:40:13.729>in <00:40:14.053>an <00:40:14.377>iframe.

789
00:40:14.785 --> 00:40:17.485
<00:40:14.785>You <00:40:14.960>cannot <00:40:15.134>call, <00:40:15.310>uh, <00:40:15.484>interface <00:40:15.660>if <00:40:15.835>you're <00:40:16.009>not, <00:40:16.185>um,

790
00:40:17.865 --> 00:40:18.965
<00:40:17.865>on <00:40:18.194>a <00:40:18.525>secure <00:40:18.855>connection.

791
00:40:18.965 --> 00:40:23.245
<00:40:18.965>So <00:40:19.092>not <00:40:19.219>on <00:40:19.346>http <00:40:19.474>s <00:40:19.601>So <00:40:19.728>there's <00:40:19.855>a <00:40:19.983>lot <00:40:20.110>of, <00:40:20.237>um, <00:40:20.365>countermeasures

792
00:40:23.245 --> 00:40:27.525
<00:40:23.245>to <00:40:23.420>prevent <00:40:23.595>those <00:40:23.770>capabilities <00:40:23.944>from <00:40:24.120>being <00:40:24.295>abused. <00:40:24.470>Yeah. <00:40:24.645>Uh,

793
00:40:28.265 --> 00:40:32.725
<00:40:28.265>So <00:40:28.420>you <00:40:28.576>as <00:40:28.731>a <00:40:28.887>user <00:40:29.042>feel, <00:40:29.198>uh, <00:40:29.353>safe <00:40:29.509>installing <00:40:29.665>PWAs

794
00:40:32.725 --> 00:40:33.805
<00:40:32.725>that <00:40:33.049>use <00:40:33.373>these <00:40:33.696>APIs

795
00:40:34.585 --> 00:40:35.585
<00:40:34.585>Yes. <00:40:35.035>On <00:40:35.485>your

796
00:40:35.585 --> 00:40:37.805
<00:40:35.585>personal <00:40:35.785>device <00:40:35.985>that <00:40:36.185>has <00:40:36.385>all <00:40:36.585>your <00:40:36.785>personal <00:40:36.985>data?

797
00:40:38.505 --> 00:40:41.125
<00:40:38.505>Yes. <00:40:38.660>I <00:40:38.816>guess <00:40:38.971>it's <00:40:39.127>much <00:40:39.282>safer <00:40:39.438>than <00:40:39.593>installing <00:40:39.749>a <00:40:39.905>native

798
00:40:41.125 --> 00:40:44.365
<00:40:41.125>application <00:40:41.405>because <00:40:41.685>that's <00:40:41.965>way <00:40:42.245>more <00:40:42.525>capable.

799
00:40:45.635 --> 00:40:49.205
<00:40:45.635>Okay. <00:40:45.790>Well, <00:40:45.946>that, <00:40:46.101>uh, <00:40:46.257>gives <00:40:46.412>me, <00:40:46.568>uh, <00:40:46.723>peace <00:40:46.879>of <00:40:47.035>mind.

800
00:40:50.425 --> 00:40:52.005
<00:40:50.425>Uh, <00:40:50.705>next <00:40:50.985>question <00:40:51.265>is <00:40:51.545>from <00:40:51.825>Gregor.

801
00:40:52.585 --> 00:40:54.965
<00:40:52.585>Uh, <00:40:52.760>does <00:40:52.935>the <00:40:53.110>user <00:40:53.285>need <00:40:53.460>to <00:40:53.635>give <00:40:53.810>permissions, <00:40:53.985>uh,

802
00:40:55.305 --> 00:40:56.645
<00:40:55.305>to <00:40:55.546>use <00:40:55.787>some <00:40:56.028>of <00:40:56.269>these <00:40:56.511>APIs?

803
00:40:56.645 --> 00:40:58.205
<00:40:56.645>Well, <00:40:56.995>we've <00:40:57.345>already <00:40:57.695>answered <00:40:58.045>that.

804
00:40:58.875 --> 00:41:01.645
<00:40:58.875>Depends <00:40:59.030>on <00:40:59.186>the <00:40:59.341>API, <00:40:59.497>but, <00:40:59.652>but <00:40:59.808>typically, <00:40:59.963>yes. <00:41:00.119>Uh, <00:41:00.275>yeah.

805
00:41:01.945 --> 00:41:04.645
<00:41:01.945>If <00:41:02.295>it's <00:41:02.645>basically <00:41:02.995>privacy <00:41:03.345>sensitive,

806
00:41:04.645 --> 00:41:06.125
<00:41:04.645>then <00:41:04.911>they <00:41:05.177>need <00:41:05.444>to <00:41:05.710>give <00:41:05.977>permission.

807
00:41:06.145 --> 00:41:11.045
<00:41:06.145>Yep. <00:41:06.378>Yeah. <00:41:06.611>Um, <00:41:06.845>a <00:41:07.078>question <00:41:07.311>from <00:41:07.545>Sebastian,

808
00:41:11.505 --> 00:41:13.485
<00:41:11.505>are <00:41:11.738>these <00:41:11.971>libraries <00:41:12.205>that <00:41:12.438>prep <00:41:12.671>these <00:41:12.905>APIs

809
00:41:13.485 --> 00:41:14.685
<00:41:13.485>to <00:41:13.755>abstract <00:41:14.025>away <00:41:14.295>the <00:41:14.565>browser?

810
00:41:15.235 --> 00:41:16.605
<00:41:15.235>Like <00:41:15.543>in <00:41:15.851>your <00:41:16.159>example <00:41:16.468>from

811
00:41:16.785 --> 00:41:19.365
<00:41:16.785>before, <00:41:17.018>called <00:41:17.251>the <00:41:17.484>mail <00:41:17.718>to <00:41:17.951>directive <00:41:18.185>instead

812
00:41:19.365 --> 00:41:20.845
<00:41:19.365>of <00:41:19.587>the <00:41:19.808>share <00:41:20.031>sheet <00:41:20.252>and <00:41:20.475>fire <00:41:20.696>folks?

813
00:41:22.115 --> 00:41:23.125
<00:41:22.115>Yeah, <00:41:22.342>they <00:41:22.569>also <00:41:22.796>are <00:41:23.024>some.

814
00:41:23.465 --> 00:41:27.445
<00:41:23.465>So, <00:41:23.592>uh, <00:41:23.719>actually <00:41:23.846>in <00:41:23.974>the <00:41:24.101>paint <00:41:24.228>demo <00:41:24.355>I've <00:41:24.483>shown, <00:41:24.610>I'm <00:41:24.737>using <00:41:24.865>one

815
00:41:27.445 --> 00:41:29.845
<00:41:27.445>of <00:41:27.795>those, <00:41:28.145>um, <00:41:28.495>uh, <00:41:28.845>libraries.

816
00:41:29.875 --> 00:41:33.725
<00:41:29.875>It's <00:41:30.108>called, <00:41:30.341>uh, <00:41:30.575>browser <00:41:30.808>F <00:41:31.041>Success, <00:41:31.275>uh,

817
00:41:34.005 --> 00:41:35.445
<00:41:34.005>provided <00:41:34.437>by <00:41:34.869>Thomas <00:41:35.301>Steiner

818
00:41:35.445 --> 00:41:37.245
<00:41:35.445>that <00:41:35.620>we've <00:41:35.795>heard <00:41:35.970>about <00:41:36.145>in <00:41:36.320>one <00:41:36.495>of <00:41:36.670>the <00:41:36.845>slides.

819
00:41:37.585 --> 00:41:39.125
<00:41:37.585>Uh, <00:41:37.931>which <00:41:38.278>exactly <00:41:38.624>does <00:41:38.971>that,

820
00:41:39.305 --> 00:41:41.325
<00:41:39.305>it <00:41:39.585>gives <00:41:39.865>you <00:41:40.145>an <00:41:40.424>abstract <00:41:40.705>interface,

821
00:41:41.585 --> 00:41:44.605
<00:41:41.585>and <00:41:41.725>if <00:41:41.865>the <00:41:42.005>file <00:41:42.145>system <00:41:42.285>success, <00:41:42.425>API <00:41:42.565>is <00:41:42.705>available <00:41:42.845>to <00:41:42.985>uses

822
00:41:44.605 --> 00:41:47.245
<00:41:44.605>that <00:41:44.760>one, <00:41:44.916>and <00:41:45.071>if <00:41:45.227>not, <00:41:45.382>it <00:41:45.538>uses <00:41:45.693>one <00:41:45.849>fallback <00:41:46.005>approaches.

823
00:41:47.305 --> 00:41:50.365
<00:41:47.305>So <00:41:47.444>you <00:41:47.585>as <00:41:47.725>a <00:41:47.865>developer <00:41:48.004>only <00:41:48.145>need <00:41:48.285>to <00:41:48.424>call <00:41:48.565>one <00:41:48.705>interface,

824
00:41:50.465 --> 00:41:52.925
<00:41:50.465>and <00:41:50.620>then <00:41:50.776>this <00:41:50.931>library <00:41:51.087>takes <00:41:51.242>care <00:41:51.398>of <00:41:51.553>calling <00:41:51.709>the <00:41:51.865>others.

825
00:41:53.225 --> 00:41:54.765
<00:41:53.225>But <00:41:53.423>it <00:41:53.621>depends <00:41:53.819>on <00:41:54.017>the <00:41:54.214>library, <00:41:54.413>of <00:41:54.611>course,

826
00:41:54.825 --> 00:41:56.125
<00:41:54.825>but <00:41:55.117>yes, <00:41:55.410>there <00:41:55.702>are <00:41:55.995>abstractions.

827
00:41:57.155 --> 00:42:00.405
<00:41:57.155>Nice, <00:41:57.505>nice. <00:41:57.855>Uh, <00:41:58.205>let's <00:41:58.555>see.

828
00:42:00.665 --> 00:42:02.645
<00:42:00.665>Do <00:42:00.865>we <00:42:01.065>have <00:42:01.265>another <00:42:01.465>one <00:42:01.665>that <00:42:01.865>I <00:42:02.065>missed?

829
00:42:04.025 --> 00:42:06.645
<00:42:04.025>Um, <00:42:04.305>yeah, <00:42:04.585>a <00:42:04.865>question <00:42:05.145>from <00:42:05.425>Loren.

830
00:42:07.305 --> 00:42:10.165
<00:42:07.305>Can <00:42:07.480>these <00:42:07.654>new <00:42:07.830>APIs <00:42:08.004>be <00:42:08.180>used <00:42:08.355>for <00:42:08.529>fingerprinting <00:42:08.705>users?

831
00:42:10.745 --> 00:42:13.965
<00:42:10.745>Uh, <00:42:10.920>fingerprinting <00:42:11.095>is <00:42:11.270>uniquely <00:42:11.444>identifying <00:42:11.620>a <00:42:11.795>user <00:42:11.970>based <00:42:12.145>on

832
00:42:13.965 --> 00:42:15.485
<00:42:13.965>the <00:42:14.307>information <00:42:14.649>provided <00:42:14.991>by <00:42:15.333>browser.

833
00:42:17.745 --> 00:42:20.445
<00:42:17.745>Um, <00:42:18.211>in <00:42:18.678>theory, <00:42:19.145>yes.

834
00:42:20.705 --> 00:42:24.005
<00:42:20.705>So <00:42:20.845>basically <00:42:20.985>it's <00:42:21.125>the <00:42:21.265>same <00:42:21.404>answer <00:42:21.545>as <00:42:21.685>for <00:42:21.825>the <00:42:21.965>security <00:42:22.105>thing.

835
00:42:24.305 --> 00:42:28.085
<00:42:24.305>Of <00:42:24.480>course, <00:42:24.654>every <00:42:24.830>like <00:42:25.004>vector <00:42:25.180>that <00:42:25.355>you <00:42:25.529>open, <00:42:25.705>um,

836
00:42:29.145 --> 00:42:31.485
<00:42:29.145>can <00:42:29.611>in <00:42:30.078>theory <00:42:30.545>help

837
00:42:31.825 --> 00:42:35.085
<00:42:31.825>or <00:42:31.980>yeah, <00:42:32.136>add <00:42:32.291>to <00:42:32.447>being <00:42:32.602>able <00:42:32.758>to <00:42:32.913>fingerprint <00:42:33.069>a <00:42:33.225>user.

838
00:42:35.185 --> 00:42:39.205
<00:42:35.185>But <00:42:35.360>again, <00:42:35.535>you <00:42:35.710>need <00:42:35.884>to, <00:42:36.060>for <00:42:36.235>example, <00:42:36.410>con <00:42:36.585>consent

839
00:42:39.205 --> 00:42:40.325
<00:42:39.205>to <00:42:39.457>use <00:42:39.709>a <00:42:39.961>certain <00:42:40.212>API

840
00:42:40.505 --> 00:42:43.565
<00:42:40.505>and <00:42:40.660>only <00:42:40.816>then, <00:42:40.971>now <00:42:41.127>let's, <00:42:41.282>let's <00:42:41.438>use <00:42:41.593>the <00:42:41.749>font, <00:42:41.905>uh,

841
00:42:43.565 --> 00:42:45.445
<00:42:43.565>access <00:42:44.031>as <00:42:44.498>an <00:42:44.965>example.

842
00:42:46.145 --> 00:42:48.765
<00:42:46.145>Um, <00:42:46.345>by <00:42:46.545>when <00:42:46.745>I <00:42:46.945>get <00:42:47.145>your <00:42:47.345>fund <00:42:47.545>table,

843
00:42:49.085 --> 00:42:51.805
<00:42:49.085>I <00:42:49.318>can <00:42:49.551>almost <00:42:49.785>precisely <00:42:50.018>identify <00:42:50.251>you, <00:42:50.485>right?

844
00:42:51.805 --> 00:42:53.285
<00:42:51.805>Because <00:42:52.027>you <00:42:52.249>may <00:42:52.471>have <00:42:52.692>some <00:42:52.915>corporate <00:42:53.136>funds

845
00:42:53.285 --> 00:42:56.125
<00:42:53.285>that <00:42:53.460>nobody <00:42:53.634>else <00:42:53.810>has, <00:42:53.984>I <00:42:54.160>can <00:42:54.335>know <00:42:54.509>which, <00:42:54.685>uh,

846
00:42:56.175 --> 00:42:58.525
<00:42:56.175>which <00:42:56.350>which <00:42:56.525>employer <00:42:56.700>you <00:42:56.875>you <00:42:57.050>work <00:42:57.225>for <00:42:57.400>and <00:42:57.575>stuff.

847
00:42:58.825 --> 00:43:00.125
<00:42:58.825>So <00:42:59.214>that's <00:42:59.605>really <00:42:59.995>sensitive.

848
00:43:00.465 --> 00:43:03.645
<00:43:00.465>And <00:43:00.605>now <00:43:00.745>in <00:43:00.885>that <00:43:01.025>case, <00:43:01.165>you <00:43:01.305>also <00:43:01.445>need <00:43:01.585>to <00:43:01.725>consent <00:43:01.865>first,

849
00:43:03.905 --> 00:43:07.045
<00:43:03.905>and <00:43:04.021>you <00:43:04.138>can <00:43:04.255>even <00:43:04.371>select <00:43:04.488>the, <00:43:04.605>the <00:43:04.721>list <00:43:04.838>of <00:43:04.955>funds <00:43:05.071>that <00:43:05.188>you <00:43:05.305>want

850
00:43:07.045 --> 00:43:08.245
<00:43:07.045>to <00:43:07.315>share <00:43:07.585>with <00:43:07.855>the <00:43:08.125>application.

851
00:43:08.265 --> 00:43:09.965
<00:43:08.265>You <00:43:08.440>don't <00:43:08.615>even <00:43:08.790>need <00:43:08.964>to <00:43:09.140>share <00:43:09.315>all <00:43:09.490>of <00:43:09.665>the,

852
00:43:10.385 --> 00:43:11.965
<00:43:10.385>um, <00:43:10.665>all <00:43:10.945>of <00:43:11.225>the <00:43:11.505>funds <00:43:11.785>available.

853
00:43:12.105 --> 00:43:13.885
<00:43:12.105>And <00:43:12.338>that's <00:43:12.571>how <00:43:12.805>the <00:43:13.038>Chrome <00:43:13.271>team <00:43:13.505>tries

854
00:43:13.905 --> 00:43:15.525
<00:43:13.905>to <00:43:14.605>prevent <00:43:15.305>fingerprinting.

855
00:43:15.795 --> 00:43:18.485
<00:43:15.795>However, <00:43:16.145>with <00:43:16.495>the <00:43:16.845>current <00:43:17.195>mechanisms

856
00:43:18.595 --> 00:43:22.965
<00:43:18.595>that <00:43:18.722>we <00:43:18.849>have <00:43:18.976>on <00:43:19.104>the <00:43:19.231>web <00:43:19.358>today, <00:43:19.485>you <00:43:19.613>could <00:43:19.740>also, <00:43:19.867>yeah, <00:43:19.995>um,

857
00:43:23.235 --> 00:43:26.005
<00:43:23.235>fingerprint <00:43:23.701>user <00:43:24.168>pretty <00:43:24.635>well.

858
00:43:26.785 --> 00:43:30.885
<00:43:26.785>So <00:43:26.960>for <00:43:27.134>example, <00:43:27.310>by <00:43:27.484>using <00:43:27.660>Canvas, <00:43:27.835>um, <00:43:28.009>uh, <00:43:28.185>fingerprinting,

859
00:43:31.745 --> 00:43:34.405
<00:43:31.745>uh, <00:43:31.900>is <00:43:32.056>one <00:43:32.211>of <00:43:32.367>the <00:43:32.522>most <00:43:32.678>precise <00:43:32.833>methods, <00:43:32.989>so <00:43:33.145>that's

860
00:43:35.205 --> 00:43:36.255
<00:43:35.205>already <00:43:36.150>possible.

861
00:43:38.925 --> 00:43:43.235
<00:43:38.925>Scary <00:43:39.125>stuff. <00:43:39.325>Um, <00:43:39.525>a <00:43:39.725>question <00:43:39.925>from <00:43:40.125>method, <00:43:40.325>uh,

862
00:43:43.655 --> 00:43:45.275
<00:43:43.655>is <00:43:43.888>one <00:43:44.121>of <00:43:44.355>our <00:43:44.588>MCs <00:43:44.821>here <00:43:45.055>today.

863
00:43:45.655 --> 00:43:50.275
<00:43:45.655>Um, <00:43:45.810>what <00:43:45.966>about <00:43:46.121>if <00:43:46.277>you're <00:43:46.432>using <00:43:46.588>these, <00:43:46.743>uh, <00:43:46.899>new <00:43:47.055>APIs,

864
00:43:50.335 --> 00:43:54.115
<00:43:50.335>can <00:43:50.490>you <00:43:50.646>also <00:43:50.801>use <00:43:50.957>them <00:43:51.112>in <00:43:51.268>your <00:43:51.423>tests <00:43:51.579>so, <00:43:51.735>uh,

865
00:43:54.505 --> 00:43:57.515
<00:43:54.505>that <00:43:54.645>you <00:43:54.785>can <00:43:54.925>test <00:43:55.065>if <00:43:55.205>they're <00:43:55.345>doing <00:43:55.485>what <00:43:55.625>you're <00:43:55.765>expecting <00:43:55.905>to?

866
00:43:57.535 --> 00:44:00.475
<00:43:57.535>So <00:43:57.815>in <00:43:58.095>testing, <00:43:58.375>library, <00:43:58.654>Cypress, <00:43:58.935>Jes,

867
00:44:00.875 --> 00:44:02.515
<00:44:00.875>selenium, <00:44:01.341>whatever <00:44:01.808>you're <00:44:02.275>using?

868
00:44:03.295 --> 00:44:05.835
<00:44:03.295>That's <00:44:03.470>a <00:44:03.645>good <00:44:03.820>question. <00:44:03.995>I've <00:44:04.170>never <00:44:04.345>tried <00:44:04.520>that <00:44:04.695>before.

869
00:44:06.555 --> 00:44:10.755
<00:44:06.555>I <00:44:06.754>hope <00:44:06.955>that <00:44:07.154>Cypress, <00:44:07.355>uh, <00:44:07.555>can <00:44:07.754>do <00:44:07.955>that.

870
00:44:11.015 --> 00:44:14.075
<00:44:11.015>I'm <00:44:11.154>not <00:44:11.295>quite <00:44:11.435>sure <00:44:11.575>though. <00:44:11.714>Uh, <00:44:11.855>it's, <00:44:11.995>it's <00:44:12.134>a <00:44:12.275>good <00:44:12.415>question.

871
00:44:14.255 --> 00:44:16.835
<00:44:14.255>So <00:44:14.382>what <00:44:14.509>I <00:44:14.636>did, <00:44:14.764>I <00:44:14.891>wrote <00:44:15.018>some <00:44:15.145>of <00:44:15.273>the <00:44:15.400>web <00:44:15.527>platform <00:44:15.655>tests

872
00:44:17.055 --> 00:44:20.675
<00:44:17.055>for <00:44:17.182>the <00:44:17.309>manifest, <00:44:17.436>and <00:44:17.564>that <00:44:17.691>was <00:44:17.818>indeed <00:44:17.945>a <00:44:18.073>hard, <00:44:18.200>a <00:44:18.327>hard <00:44:18.455>thing

873
00:44:20.675 --> 00:44:24.815
<00:44:20.675>because <00:44:20.830>we <00:44:20.986>did <00:44:21.141>not <00:44:21.297>have <00:44:21.452>any <00:44:21.608>solution <00:44:21.763>yet <00:44:21.919>to <00:44:22.075>mm-hmm.

874
00:44:24.965 --> 00:44:29.575
<00:44:24.965>Like <00:44:25.081>find <00:44:25.198>out <00:44:25.315>if <00:44:25.431>you, <00:44:25.548>if <00:44:25.665>you <00:44:25.781>really <00:44:25.898>can <00:44:26.015>install <00:44:26.131>a <00:44:26.248>PWA <00:44:26.365>and,

875
00:44:29.575 --> 00:44:32.085
<00:44:29.575>and <00:44:29.750>find <00:44:29.924>the, <00:44:30.100>the <00:44:30.274>icon <00:44:30.450>and <00:44:30.625>so <00:44:30.799>and <00:44:30.975>stuff.

876
00:44:32.465 --> 00:44:36.045
<00:44:32.465>Uh, <00:44:32.581>so, <00:44:32.698>uh, <00:44:32.815>it <00:44:32.931>could <00:44:33.048>be <00:44:33.165>that <00:44:33.281>this <00:44:33.398>is <00:44:33.515>a <00:44:33.631>blind <00:44:33.748>spot <00:44:33.865>currently.

877
00:44:36.875 --> 00:44:39.405
<00:44:36.875>Well, <00:44:37.225>um, <00:44:37.575>while <00:44:37.925>you're <00:44:38.275>answering,

878
00:44:39.485 --> 00:44:40.485
<00:44:39.485>I <00:44:39.665>was <00:44:39.845>also <00:44:40.025>thinking <00:44:40.205>about <00:44:40.385>it,

879
00:44:40.625 --> 00:44:43.525
<00:44:40.625>and <00:44:40.780>of <00:44:40.936>course <00:44:41.091>you <00:44:41.247>can <00:44:41.402>always <00:44:41.558>mock <00:44:41.713>the <00:44:41.869>navigator <00:44:42.025>object

880
00:44:43.865 --> 00:44:47.045
<00:44:43.865>and <00:44:43.992>then <00:44:44.119>you <00:44:44.246>can, <00:44:44.374>uh, <00:44:44.501>say <00:44:44.628>that <00:44:44.755>you <00:44:44.883>do <00:44:45.010>have <00:44:45.137>this <00:44:45.265>API

881
00:44:47.045 --> 00:44:48.205
<00:44:47.045>or <00:44:47.306>don't <00:44:47.567>have <00:44:47.828>this <00:44:48.089>API,

882
00:44:48.205 --> 00:44:52.365
<00:44:48.205>and <00:44:48.360>then <00:44:48.516>write <00:44:48.671>tests <00:44:48.827>that <00:44:48.982>expect <00:44:49.138>this, <00:44:49.293>these <00:44:49.449>new <00:44:49.605>APIs

883
00:44:52.365 --> 00:44:54.325
<00:44:52.365>to <00:44:52.645>not <00:44:52.924>exist <00:44:53.205>or <00:44:53.484>do <00:44:53.765>exist.

884
00:44:54.425 --> 00:44:57.645
<00:44:54.425>So <00:44:54.580>yeah, <00:44:54.736>I <00:44:54.891>would <00:44:55.047>expect <00:44:55.202>it <00:44:55.358>to <00:44:55.513>be <00:44:55.669>possible. <00:44:55.825>Mm-hmm.

885
00:44:57.955 --> 00:45:01.005
<00:44:57.955>Alright, <00:44:58.095>uh, <00:44:58.235>Christian, <00:44:58.375>uh, <00:44:58.515>I <00:44:58.654>see <00:44:58.795>that <00:44:58.935>we're <00:44:59.075>out <00:44:59.215>of <00:44:59.355>time,

886
00:45:01.105 --> 00:45:03.805
<00:45:01.105>so <00:45:01.212>I <00:45:01.320>want <00:45:01.428>to <00:45:01.535>thank <00:45:01.643>you <00:45:01.751>a <00:45:01.858>lot <00:45:01.966>for <00:45:02.074>joining <00:45:02.181>us <00:45:02.289>here <00:45:02.397>today, <00:45:02.505>um,

887
00:45:04.185 --> 00:45:06.605
<00:45:04.185>and <00:45:04.418>sharing <00:45:04.651>your <00:45:04.884>knowledge <00:45:05.118>about <00:45:05.351>Project <00:45:05.585>Fugu

888
00:45:06.605 --> 00:45:08.965
<00:45:06.605>and, <00:45:06.885>uh, <00:45:07.165>well <00:45:07.445>expanding <00:45:07.725>the <00:45:08.005>knowledge

889
00:45:09.225 --> 00:45:10.405
<00:45:09.225>of <00:45:09.579>everyone <00:45:09.933>watching <00:45:10.287>here.

890
00:45:10.485 --> 00:45:12.725
<00:45:10.485>I <00:45:10.640>guess <00:45:10.796>it's, <00:45:10.951>uh, <00:45:11.107>it's <00:45:11.262>been <00:45:11.418>a <00:45:11.573>pleasure. <00:45:11.729>Thank <00:45:11.885>you.

891
00:45:13.515 --> 00:45:13.805
Yeah.