WEBVTT

1
00:00:18.865 --> 00:00:19.365
<00:00:18.865>Hi, <00:00:19.314>Nico.

2
00:00:21.025 --> 00:00:25.805
<00:00:21.025>Hi <00:00:21.224>everyone. <00:00:21.424>So, <00:00:21.625>yeah, <00:00:21.825>um, <00:00:22.025>my <00:00:22.224>name's <00:00:22.424>Nico.

3
00:00:26.485 --> 00:00:29.005
<00:00:26.485>I <00:00:26.718>am <00:00:26.951>a <00:00:27.185>web <00:00:27.418>developer <00:00:27.651>from <00:00:27.884>Switzerland.

4
00:00:30.025 --> 00:00:34.085
<00:00:30.025>Um, <00:00:30.224>I'm <00:00:30.424>mainly <00:00:30.625>focused <00:00:30.825>on <00:00:31.025>frontend <00:00:31.224>development, <00:00:31.424>um,

5
00:00:34.265 --> 00:00:35.365
<00:00:34.265>and <00:00:35.255>JavaScript.

6
00:00:35.665 --> 00:00:39.245
<00:00:35.665>Um, <00:00:35.865>I'm <00:00:36.065>also <00:00:36.265>one <00:00:36.464>third <00:00:36.665>of, <00:00:36.865>say <00:00:37.065>hello.

7
00:00:39.505 --> 00:00:43.165
<00:00:39.505>We <00:00:39.680>are <00:00:39.855>a <00:00:40.030>small <00:00:40.205>digital <00:00:40.380>agency <00:00:40.555>here <00:00:40.730>in, <00:00:40.905>um,

8
00:00:43.625 --> 00:00:44.805
<00:00:43.625>in <00:00:43.979>the <00:00:44.333>Bernese <00:00:44.687>Oberland.

9
00:00:45.785 --> 00:00:48.485
<00:00:45.785>And <00:00:45.940>I <00:00:46.096>do <00:00:46.251>freelance, <00:00:46.407>uh, <00:00:46.562>stuff <00:00:46.718>from <00:00:46.873>time <00:00:47.029>to <00:00:47.184>time.

10
00:00:49.055 --> 00:00:52.605
<00:00:49.055>Right <00:00:49.182>now <00:00:49.309>I <00:00:49.436>am, <00:00:49.564>for <00:00:49.691>example, <00:00:49.818>working <00:00:49.945>on <00:00:50.073>a <00:00:50.200>quite <00:00:50.327>large, <00:00:50.455>uh,

11
00:00:52.615 --> 00:00:53.725
<00:00:52.615>react <00:00:53.614>application.

12
00:00:54.755 --> 00:00:57.485
<00:00:54.755>Yeah. <00:00:54.988>And <00:00:55.221>today <00:00:55.455>it's <00:00:55.688>all <00:00:55.921>about, <00:00:56.155>um,

13
00:00:58.405 --> 00:01:00.165
<00:00:58.405>progressive <00:00:58.755>WebApps, <00:00:59.105>in <00:00:59.455>my <00:00:59.805>opinion.

14
00:01:00.465 --> 00:01:02.685
<00:01:00.465>The <00:01:00.698>next <00:01:00.931>big <00:01:01.165>thing <00:01:01.398>in <00:01:01.631>web <00:01:01.865>development

15
00:01:03.425 --> 00:01:06.205
<00:01:03.425>or <00:01:03.658>in <00:01:03.891>development <00:01:04.125>of, <00:01:04.358>um, <00:01:04.591>digital <00:01:04.825>products.

16
00:01:06.265 --> 00:01:09.605
<00:01:06.265>Uh, <00:01:06.545>in <00:01:06.825>general, <00:01:07.105>I'd <00:01:07.385>say, <00:01:07.665>um,

17
00:01:09.625 --> 00:01:11.245
<00:01:09.625>the <00:01:09.905>whole <00:01:10.185>subject <00:01:10.465>is <00:01:10.745>quite <00:01:11.025>large.

18
00:01:11.465 --> 00:01:15.365
<00:01:11.465>So <00:01:11.592>today <00:01:11.719>I <00:01:11.846>really <00:01:11.974>just <00:01:12.101>want <00:01:12.228>to <00:01:12.355>dip <00:01:12.483>a <00:01:12.610>toe <00:01:12.737>into <00:01:12.865>some

19
00:01:15.485 --> 00:01:17.125
<00:01:15.485>of <00:01:15.835>the <00:01:16.185>most <00:01:16.535>exciting <00:01:16.885>features.

20
00:01:18.025 --> 00:01:21.005
<00:01:18.025>Um, <00:01:18.225>and <00:01:18.425>to <00:01:18.625>start <00:01:18.825>with <00:01:19.025>the <00:01:19.225>whole <00:01:19.425>idea

21
00:01:21.065 --> 00:01:24.125
<00:01:21.065>and <00:01:21.298>the <00:01:21.531>whole, <00:01:21.765>um, <00:01:21.998>the <00:01:22.231>whole <00:01:22.465>idea

22
00:01:24.125 --> 00:01:25.245
<00:01:24.125>behind <00:01:24.461>progressive <00:01:24.797>web <00:01:25.133>apps.

23
00:01:25.585 --> 00:01:28.125
<00:01:25.585>I'd <00:01:25.785>like <00:01:25.985>to <00:01:26.185>talk <00:01:26.385>about <00:01:26.585>the <00:01:26.785>web <00:01:26.985>first,

24
00:01:28.125 --> 00:01:30.085
<00:01:28.125>because <00:01:28.475>the <00:01:28.825>web <00:01:29.175>is <00:01:29.525>great.

25
00:01:30.115 --> 00:01:33.485
<00:01:30.115>It's, <00:01:30.231>in <00:01:30.348>my <00:01:30.464>opinion, <00:01:30.581>I, <00:01:30.698>I <00:01:30.815>could <00:01:30.931>even <00:01:31.048>go <00:01:31.164>as <00:01:31.281>far <00:01:31.398>to <00:01:31.515>say

26
00:01:33.515 --> 00:01:34.605
<00:01:33.515>that <00:01:33.760>the <00:01:34.005>web <00:01:34.250>is <00:01:34.496>one.

27
00:01:34.605 --> 00:01:37.965
<00:01:34.604>The <00:01:34.760>web <00:01:34.916>is <00:01:35.071>one <00:01:35.227>of <00:01:35.382>the <00:01:35.538>greatest <00:01:35.693>achievements <00:01:35.849>of <00:01:36.005>mankind

28
00:01:38.195 --> 00:01:41.285
<00:01:38.195>because <00:01:38.395>we <00:01:38.595>have <00:01:38.794>this <00:01:38.994>global <00:01:39.195>network <00:01:39.395>of <00:01:39.595>servers.

29
00:01:41.285 --> 00:01:44.565
<00:01:41.285>They're <00:01:41.440>all <00:01:41.596>connected <00:01:41.751>to <00:01:41.907>each <00:01:42.062>others, <00:01:42.218>they <00:01:42.373>are <00:01:42.529>all, <00:01:42.685>um,

30
00:01:45.475 --> 00:01:48.205
<00:01:45.475>they <00:01:45.649>are <00:01:45.824>all <00:01:46.000>accessible <00:01:46.175>through <00:01:46.350>the <00:01:46.524>domain <00:01:46.699>name <00:01:46.875>system.

31
00:01:49.025 --> 00:01:50.965
<00:01:49.025>And <00:01:49.491>we <00:01:49.958>have <00:01:50.425>browsers.

32
00:01:51.625 --> 00:01:54.605
<00:01:51.625>So <00:01:51.858>we <00:01:52.091>have <00:01:52.325>those, <00:01:52.558>uh, <00:01:52.791>standardized, <00:01:53.025>uh,

33
00:01:54.605 --> 00:01:55.645
<00:01:54.604>programming <00:01:55.541>language.

34
00:01:55.985 --> 00:01:58.805
<00:01:55.985>We <00:01:56.185>have, <00:01:56.385>um, <00:01:56.585>HTML <00:01:56.785>for, <00:01:56.985>uh, <00:01:57.185>the <00:01:57.385>markup.

35
00:01:58.805 --> 00:02:02.965
<00:01:58.805>We <00:01:58.980>have <00:01:59.155>CSS <00:01:59.330>for, <00:01:59.505>um, <00:01:59.680>for <00:01:59.855>styling <00:02:00.030>and <00:02:00.205>layout.

36
00:02:03.265 --> 00:02:05.805
<00:02:03.265>And <00:02:03.440>we <00:02:03.615>also <00:02:03.790>have <00:02:03.965>JavaScript <00:02:04.140>for <00:02:04.315>the <00:02:04.490>whole <00:02:04.665>logic

37
00:02:05.805 --> 00:02:06.885
<00:02:05.805>behind <00:02:06.291>our <00:02:06.777>application.

38
00:02:07.645 --> 00:02:11.825
<00:02:07.645>And <00:02:07.820>those <00:02:07.994>languages <00:02:08.169>are <00:02:08.345>not <00:02:08.519>just <00:02:08.695>some <00:02:08.870>new <00:02:09.044>languages.

39
00:02:12.425 --> 00:02:13.665
<00:02:12.425>I <00:02:12.797>mean, <00:02:13.169>the <00:02:13.541>biggest,

40
00:02:14.165 --> 00:02:16.505
<00:02:14.165>the <00:02:14.340>biggest <00:02:14.515>companies <00:02:14.690>in <00:02:14.864>the <00:02:15.040>whole <00:02:15.215>world <00:02:15.390>are <00:02:15.565>working

41
00:02:16.825 --> 00:02:18.505
<00:02:16.825>together <00:02:17.174>on <00:02:17.524>this <00:02:17.875>one <00:02:18.225>platform.

42
00:02:19.125 --> 00:02:21.065
<00:02:19.125>So <00:02:19.325>we <00:02:19.525>have <00:02:19.725>this <00:02:19.925>idea <00:02:20.125>of <00:02:20.325>a <00:02:20.525>free

43
00:02:21.165 --> 00:02:23.745
<00:02:21.165>and <00:02:21.445>accessible <00:02:21.725>platform <00:02:22.005>to <00:02:22.285>share <00:02:22.565>information

44
00:02:24.605 --> 00:02:27.185
<00:02:24.605>and <00:02:24.954>also <00:02:25.304>to <00:02:25.655>deliver <00:02:26.005>applications.

45
00:02:27.765 --> 00:02:31.665
<00:02:27.765>And <00:02:27.892>I <00:02:28.019>think <00:02:28.146>that's <00:02:28.274>just, <00:02:28.401>just <00:02:28.528>huge. <00:02:28.655>And <00:02:28.783>then <00:02:28.910>we <00:02:29.037>have <00:02:29.165>apps.

46
00:02:31.925 --> 00:02:33.945
<00:02:31.925>And <00:02:32.125>I <00:02:32.325>mean, <00:02:32.525>apps <00:02:32.725>are <00:02:32.925>great <00:02:33.125>as <00:02:33.325>well,

47
00:02:33.945 --> 00:02:36.385
<00:02:33.945>especially <00:02:34.178>the <00:02:34.411>smartphone <00:02:34.644>is <00:02:34.878>great <00:02:35.111>as <00:02:35.345>well.

48
00:02:36.845 --> 00:02:40.385
<00:02:36.845>And <00:02:37.045>I <00:02:37.245>mean, <00:02:37.445>around, <00:02:37.645>I <00:02:37.845>think <00:02:38.045>2007, <00:02:38.245>uh,

49
00:02:40.385 --> 00:02:41.825
<00:02:40.385>the <00:02:40.816>iPhone <00:02:41.249>was <00:02:41.680>published,

50
00:02:42.365 --> 00:02:45.145
<00:02:42.365>and <00:02:42.520>a <00:02:42.676>little <00:02:42.831>bit <00:02:42.987>later <00:02:43.142>they <00:02:43.298>also <00:02:43.453>published <00:02:43.609>an <00:02:43.765>SDK.

51
00:02:45.165 --> 00:02:49.145
<00:02:45.165>So <00:02:45.364>that <00:02:45.565>allows <00:02:45.765>us <00:02:45.965>as <00:02:46.165>developer <00:02:46.364>to, <00:02:46.565>um,

52
00:02:49.805 --> 00:02:53.105
<00:02:49.805>an <00:02:50.005>excessive, <00:02:50.205>uh, <00:02:50.405>access <00:02:50.605>to <00:02:50.805>the <00:02:51.005>operating <00:02:51.205>system.

53
00:02:53.525 --> 00:02:55.185
<00:02:53.525>So <00:02:53.875>we <00:02:54.225>can <00:02:54.575>just <00:02:54.925>add,

54
00:02:55.325 --> 00:02:57.905
<00:02:55.325>or <00:02:55.558>we <00:02:55.791>can <00:02:56.024>create <00:02:56.258>applications <00:02:56.491>that <00:02:56.725>interact

55
00:02:57.905 --> 00:02:59.310
<00:02:57.905>with <00:02:58.326>the <00:02:58.748>operating <00:02:59.169>system.

56
00:03:00.065 --> 00:03:04.805
<00:03:00.065>And <00:03:00.181>to <00:03:00.298>be <00:03:00.415>honest, <00:03:00.531>back <00:03:00.648>then <00:03:00.765>the <00:03:00.881>web <00:03:00.998>was <00:03:01.115>just <00:03:01.231>not <00:03:01.348>ready <00:03:01.465>to,

57
00:03:05.145 --> 00:03:06.285
<00:03:05.145>uh, <00:03:05.401>be <00:03:05.658>used <00:03:05.914>on <00:03:06.171>phones.

58
00:03:06.355 --> 00:03:09.005
<00:03:06.355>They <00:03:06.510>had, <00:03:06.666>uh, <00:03:06.821>uh, <00:03:06.977>a <00:03:07.132>web <00:03:07.288>engine <00:03:07.443>on <00:03:07.599>the <00:03:07.755>phones,

59
00:03:09.465 --> 00:03:11.365
<00:03:09.465>but <00:03:09.698>there's <00:03:09.931>were <00:03:10.165>so <00:03:10.398>many <00:03:10.631>things <00:03:10.865>missing.

60
00:03:11.505 --> 00:03:13.365
<00:03:11.505>So <00:03:11.785>the <00:03:12.065>SDKs, <00:03:12.345>they <00:03:12.625>stepped <00:03:12.905>in

61
00:03:13.365 --> 00:03:16.045
<00:03:13.365>and <00:03:13.598>they, <00:03:13.831>um, <00:03:14.065>delivered <00:03:14.298>a <00:03:14.531>great <00:03:14.765>experience

62
00:03:16.045 --> 00:03:17.245
<00:03:16.045>for <00:03:16.405>us <00:03:16.765>as <00:03:17.125>developers.

63
00:03:17.345 --> 00:03:22.155
<00:03:17.345>And <00:03:17.500>for <00:03:17.656>the <00:03:17.811>user <00:03:17.967>problem <00:03:18.122>is, <00:03:18.278>if <00:03:18.433>we <00:03:18.589>are <00:03:18.745>use,

64
00:03:22.215 --> 00:03:25.995
<00:03:22.215>if <00:03:22.355>we're <00:03:22.495>creating <00:03:22.635>an <00:03:22.775>a <00:03:22.915>native <00:03:23.055>application, <00:03:23.195>we <00:03:23.335>are <00:03:23.475>bound <00:03:23.615>to

65
00:03:26.065 --> 00:03:28.035
<00:03:26.065>what <00:03:26.345>the <00:03:26.625>vendor, <00:03:26.905>um, <00:03:27.185>gives <00:03:27.465>us.

66
00:03:28.415 --> 00:03:30.275
<00:03:28.415>So <00:03:28.648>in <00:03:28.881>the <00:03:29.114>end, <00:03:29.348>if <00:03:29.581>Apple <00:03:29.815>decides

67
00:03:30.275 --> 00:03:31.835
<00:03:30.275>to <00:03:30.508>deliver <00:03:30.741>feature, <00:03:30.975>we <00:03:31.208>can <00:03:31.441>use <00:03:31.675>it.

68
00:03:32.215 --> 00:03:34.035
<00:03:32.215>If <00:03:32.448>not, <00:03:32.681>we <00:03:32.915>just <00:03:33.148>can't <00:03:33.381>use <00:03:33.615>it.

69
00:03:34.525 --> 00:03:38.355
<00:03:34.525>There <00:03:34.700>is <00:03:34.875>not <00:03:35.050>this, <00:03:35.225>this <00:03:35.400>platform <00:03:35.575>wide, <00:03:35.750>um, <00:03:35.925>um,

70
00:03:38.425 --> 00:03:40.595
<00:03:38.425>working <00:03:38.775>together <00:03:39.125>of <00:03:39.475>those <00:03:39.825>companies.

71
00:03:40.625 --> 00:03:44.035
<00:03:40.625>It's <00:03:40.765>just <00:03:40.905>we <00:03:41.045>are <00:03:41.185>dependent, <00:03:41.325>uh, <00:03:41.465>to, <00:03:41.605>uh, <00:03:41.745>on <00:03:41.885>the <00:03:42.025>vendor.

72
00:03:45.705 --> 00:03:48.075
<00:03:45.704>Also, <00:03:45.904>we <00:03:46.105>need <00:03:46.304>to <00:03:46.505>maintain <00:03:46.704>the <00:03:46.904>same <00:03:47.105>software

73
00:03:48.075 --> 00:03:49.155
<00:03:48.075>for <00:03:48.561>multiple <00:03:49.047>platforms.

74
00:03:49.155 --> 00:03:53.515
<00:03:49.155>So <00:03:49.330>even <00:03:49.505>if <00:03:49.680>we <00:03:49.855>are <00:03:50.030>using, <00:03:50.205>um, <00:03:50.380>cross-platform <00:03:50.555>frameworks,

75
00:03:53.655 --> 00:03:56.595
<00:03:53.655>we <00:03:53.888>still <00:03:54.121>have <00:03:54.355>to <00:03:54.588>maintain, <00:03:54.821>uh, <00:03:55.055>three

76
00:03:56.735 --> 00:04:01.435
<00:03:56.735>or <00:03:56.890>four <00:03:57.046>different <00:03:57.201>versions <00:03:57.357>of <00:03:57.512>our <00:03:57.668>application <00:03:57.823>just <00:03:57.979>for <00:03:58.135>our,

77
00:04:02.285 --> 00:04:03.345
<00:04:02.285>uh, <00:04:02.603>for <00:04:02.921>our <00:04:03.239>product.

78
00:04:04.285 --> 00:04:07.105
<00:04:04.285>So <00:04:04.460>that's <00:04:04.635>insane. <00:04:04.810>But <00:04:04.984>we <00:04:05.160>need <00:04:05.335>to <00:04:05.510>do <00:04:05.685>it

79
00:04:07.105 --> 00:04:08.505
<00:04:07.105>because <00:04:07.734>of <00:04:08.365>statistics.

80
00:04:08.565 --> 00:04:12.945
<00:04:08.565>87% <00:04:08.720>of <00:04:08.876>the, <00:04:09.031>the <00:04:09.187>time <00:04:09.342>we <00:04:09.498>spend <00:04:09.653>on <00:04:09.809>our <00:04:09.965>phone,

81
00:04:13.285 --> 00:04:14.985
<00:04:13.285>we <00:04:13.635>are <00:04:13.984>inside <00:04:14.335>mobile <00:04:14.685>apps.

82
00:04:15.605 --> 00:04:18.945
<00:04:15.605>That's <00:04:15.760>the, <00:04:15.916>the, <00:04:16.071>this, <00:04:16.227>um, <00:04:16.382>it's <00:04:16.538>a <00:04:16.693>little <00:04:16.849>bit <00:04:17.005>older,

83
00:04:19.085 --> 00:04:22.105
<00:04:19.084>but <00:04:19.260>I <00:04:19.435>think <00:04:19.609>that's <00:04:19.784>still <00:04:19.959>a, <00:04:20.135>a <00:04:20.310>valid <00:04:20.484>number.

84
00:04:22.765 --> 00:04:26.065
<00:04:22.765>So <00:04:22.920>in <00:04:23.076>the <00:04:23.231>end, <00:04:23.387>we <00:04:23.542>need <00:04:23.698>to <00:04:23.853>write <00:04:24.009>native <00:04:24.164>applications

85
00:04:26.065 --> 00:04:27.265
<00:04:26.065>because <00:04:26.335>the <00:04:26.605>user <00:04:26.875>wants <00:04:27.145>it,

86
00:04:27.525 --> 00:04:31.025
<00:04:27.525>but <00:04:27.700>it's <00:04:27.875>quite <00:04:28.049>pain <00:04:28.224>to <00:04:28.400>to, <00:04:28.575>to <00:04:28.750>create <00:04:28.924>them.

87
00:04:31.285 --> 00:04:34.625
<00:04:31.285>So <00:04:31.460>we <00:04:31.635>are <00:04:31.810>in <00:04:31.985>this <00:04:32.160>little, <00:04:32.335>yeah, <00:04:32.510>we <00:04:32.685>have,

88
00:04:34.685 --> 00:04:36.785
<00:04:34.685>you <00:04:34.918>do <00:04:35.151>have <00:04:35.385>this <00:04:35.618>problem <00:04:35.851>as <00:04:36.085>developers.

89
00:04:37.965 --> 00:04:41.345
<00:04:37.965>So <00:04:38.140>there <00:04:38.315>were <00:04:38.490>a <00:04:38.665>team <00:04:38.840>of <00:04:39.015>mainly <00:04:39.190>Google <00:04:39.365>developers.

90
00:04:41.345 --> 00:04:44.105
<00:04:41.345>They <00:04:41.500>were <00:04:41.656>looking <00:04:41.811>at <00:04:41.967>the <00:04:42.122>problem <00:04:42.278>and <00:04:42.433>they <00:04:42.589>were <00:04:42.745>thinking,

91
00:04:44.285 --> 00:04:49.265
<00:04:44.284>or <00:04:44.412>first <00:04:44.539>of <00:04:44.666>all, <00:04:44.794>they <00:04:44.921>were <00:04:45.048>looking <00:04:45.175>for <00:04:45.303>why, <00:04:45.430>for <00:04:45.557>the <00:04:45.684>reason,

92
00:04:49.405 --> 00:04:52.745
<00:04:49.405>why <00:04:49.560>are <00:04:49.716>native <00:04:49.871>apps <00:04:50.027>so <00:04:50.182>much <00:04:50.338>more <00:04:50.493>popular <00:04:50.649>than, <00:04:50.804>um,

93
00:04:52.925 --> 00:04:53.945
<00:04:52.925>the, <00:04:53.231>the <00:04:53.537>open <00:04:53.843>web.

94
00:04:54.685 --> 00:04:59.225
<00:04:54.685>And <00:04:54.825>they <00:04:54.965>found <00:04:55.105>out <00:04:55.245>that <00:04:55.385>there <00:04:55.525>are <00:04:55.665>mainly, <00:04:55.805>uh, <00:04:55.945>four <00:04:56.085>things

95
00:04:59.295 --> 00:05:01.025
<00:04:59.295>that <00:04:59.575>makes, <00:04:59.855>uh, <00:05:00.135>that <00:05:00.415>make <00:05:00.695>mobile

96
00:05:01.025 --> 00:05:02.545
<00:05:01.025>applications <00:05:01.366>so <00:05:01.709>much <00:05:02.051>more <00:05:02.393>popular.

97
00:05:02.815 --> 00:05:06.665
<00:05:02.815>They're <00:05:03.015>fast, <00:05:03.215>which <00:05:03.415>means <00:05:03.615>once <00:05:03.815>you've <00:05:04.015>downloaded <00:05:04.215>them,

98
00:05:06.665 --> 00:05:08.785
<00:05:06.665>they <00:05:06.865>are <00:05:07.065>on <00:05:07.265>your <00:05:07.465>device <00:05:07.665>you <00:05:07.865>can <00:05:08.065>use,

99
00:05:08.785 --> 00:05:10.865
<00:05:08.785>then <00:05:08.925>you <00:05:09.065>can <00:05:09.205>click <00:05:09.345>on <00:05:09.485>the <00:05:09.625>button <00:05:09.765>and <00:05:09.905>it's <00:05:10.045>just <00:05:10.185>there.

100
00:05:11.855 --> 00:05:14.665
<00:05:11.855>They <00:05:12.030>are <00:05:12.205>integrated, <00:05:12.380>so <00:05:12.555>they <00:05:12.730>feel <00:05:12.905>like <00:05:13.080>a <00:05:13.255>part

101
00:05:14.805 --> 00:05:17.385
<00:05:14.805>or <00:05:14.960>they <00:05:15.116>feel <00:05:15.271>like <00:05:15.427>an <00:05:15.582>extension <00:05:15.738>of <00:05:15.893>your <00:05:16.049>operating <00:05:16.205>system.

102
00:05:17.895 --> 00:05:19.225
<00:05:17.895>They <00:05:18.493>are <00:05:19.092>reliable.

103
00:05:19.365 --> 00:05:21.905
<00:05:19.365>So <00:05:19.505>even <00:05:19.645>if <00:05:19.785>you <00:05:19.925>don't <00:05:20.065>have <00:05:20.205>an <00:05:20.345>internet <00:05:20.485>connection, <00:05:20.625>you <00:05:20.765>still,

104
00:05:22.445 --> 00:05:24.265
<00:05:22.445>uh, <00:05:22.724>can <00:05:23.005>work <00:05:23.284>with <00:05:23.565>an <00:05:23.844>application.

105
00:05:24.275 --> 00:05:27.305
<00:05:24.275>Maybe <00:05:24.430>there <00:05:24.586>is, <00:05:24.741>uh, <00:05:24.897>a <00:05:25.052>message <00:05:25.208>saying <00:05:25.363>that <00:05:25.519>you <00:05:25.674>don't,

106
00:05:27.565 --> 00:05:28.905
<00:05:27.565>you <00:05:27.967>need <00:05:28.369>active <00:05:28.770>interconnection,

107
00:05:29.045 --> 00:05:31.145
<00:05:29.045>but <00:05:29.245>it's <00:05:29.445>still, <00:05:29.645>it's <00:05:29.845>coming <00:05:30.045>from <00:05:30.245>that <00:05:30.445>application.

108
00:05:31.145 --> 00:05:32.705
<00:05:31.145>You're <00:05:31.495>interacting <00:05:31.844>with <00:05:32.195>that <00:05:32.544>application

109
00:05:32.705 --> 00:05:35.305
<00:05:32.705>and <00:05:32.905>not <00:05:33.104>just <00:05:33.305>with <00:05:33.505>a, <00:05:33.705>some <00:05:33.905>browser <00:05:34.104>error.

110
00:05:36.585 --> 00:05:38.045
<00:05:36.585>And <00:05:37.022>they <00:05:37.461>are <00:05:37.899>engaging.

111
00:05:38.545 --> 00:05:42.845
<00:05:38.545>So <00:05:38.672>it <00:05:38.799>is <00:05:38.926>possible <00:05:39.054>to <00:05:39.181>pull <00:05:39.308>the <00:05:39.435>user <00:05:39.563>back <00:05:39.690>maybe <00:05:39.817>using, <00:05:39.945>um,

112
00:05:42.915 --> 00:05:44.605
<00:05:42.915>push <00:05:43.195>notifications <00:05:43.475>or <00:05:43.755>I <00:05:44.035>don't <00:05:44.315>know.

113
00:05:44.945 --> 00:05:47.845
<00:05:44.945>So <00:05:45.120>they <00:05:45.295>had <00:05:45.469>this <00:05:45.645>idea <00:05:45.820>of <00:05:45.995>a <00:05:46.170>next <00:05:46.344>generation

114
00:05:47.845 --> 00:05:48.845
<00:05:47.845>of <00:05:48.295>web <00:05:48.745>applications,

115
00:05:49.385 --> 00:05:52.365
<00:05:49.385>and <00:05:49.618>they <00:05:49.851>called <00:05:50.085>them <00:05:50.318>progressive <00:05:50.551>web <00:05:50.784>apps.

116
00:05:53.365 --> 00:05:57.845
<00:05:53.365>So <00:05:53.520>to <00:05:53.676>achieve <00:05:53.831>what <00:05:53.987>they <00:05:54.142>wanted, <00:05:54.298>they <00:05:54.453>needed <00:05:54.609>two, <00:05:54.765>um,

117
00:05:58.145 --> 00:05:59.365
<00:05:58.145>new <00:05:58.694>main <00:05:59.243>functionalities.

118
00:06:00.305 --> 00:06:03.405
<00:06:00.305>And <00:06:00.505>the <00:06:00.705>first <00:06:00.905>is <00:06:01.105>the <00:06:01.305>web <00:06:01.505>app <00:06:01.705>manifest.

119
00:06:04.615 --> 00:06:07.395
<00:06:04.615>As <00:06:04.755>you <00:06:04.895>can <00:06:05.035>see <00:06:05.175>there <00:06:05.315>on <00:06:05.455>the <00:06:05.595>right, <00:06:05.735>it's <00:06:05.875>pretty <00:06:06.015>easy.

120
00:06:07.575 --> 00:06:10.195
<00:06:07.575>You <00:06:07.750>just <00:06:07.925>need <00:06:08.099>to, <00:06:08.275>um, <00:06:08.450>have <00:06:08.625>a <00:06:08.800>new, <00:06:08.974>um,

121
00:06:10.345 --> 00:06:12.515
<00:06:10.345>meta <00:06:10.625>tag <00:06:10.905>called <00:06:11.185>the <00:06:11.465>real <00:06:11.745>manifest.

122
00:06:12.855 --> 00:06:17.035
<00:06:12.855>And <00:06:12.982>there <00:06:13.109>you <00:06:13.236>can <00:06:13.364>just <00:06:13.491>pass, <00:06:13.618>um, <00:06:13.745>the <00:06:13.873>path <00:06:14.000>to <00:06:14.127>the <00:06:14.255>manifest

123
00:06:17.035 --> 00:06:19.475
<00:06:17.035>of <00:06:17.268>JS <00:06:17.501>could <00:06:17.735>be <00:06:17.968>any <00:06:18.201>JSON <00:06:18.435>file.

124
00:06:19.495 --> 00:06:22.435
<00:06:19.495>And <00:06:19.650>in <00:06:19.806>there <00:06:19.961>you <00:06:20.117>can <00:06:20.272>define <00:06:20.428>a <00:06:20.583>set <00:06:20.739>of <00:06:20.895>properties

125
00:06:23.055 --> 00:06:26.315
<00:06:23.055>for <00:06:23.255>your <00:06:23.455>application, <00:06:23.655>maybe <00:06:23.855>a <00:06:24.055>name, <00:06:24.255>short <00:06:24.455>name,

126
00:06:26.415 --> 00:06:28.795
<00:06:26.415>you <00:06:26.570>can <00:06:26.726>define <00:06:26.881>where <00:06:27.037>should <00:06:27.192>it <00:06:27.348>start <00:06:27.503>and <00:06:27.659>so <00:06:27.815>on.

127
00:06:28.795 --> 00:06:30.075
<00:06:28.795>So <00:06:29.083>it's <00:06:29.371>just <00:06:29.659>a <00:06:29.947>set

128
00:06:30.075 --> 00:06:33.315
<00:06:30.075>of <00:06:30.275>information <00:06:30.474>you <00:06:30.675>can <00:06:30.875>give <00:06:31.075>about <00:06:31.275>your <00:06:31.474>application.

129
00:06:34.415 --> 00:06:36.475
<00:06:34.415>Now <00:06:34.590>on <00:06:34.765>the <00:06:34.940>left <00:06:35.115>side, <00:06:35.290>you <00:06:35.465>see <00:06:35.640>the <00:06:35.815>browser

130
00:06:37.195 --> 00:06:40.075
<00:06:37.195>recognizes <00:06:37.395>your <00:06:37.594>application <00:06:37.795>as <00:06:37.995>a <00:06:38.195>progressive <00:06:38.395>F <00:06:38.594>app,

131
00:06:40.175 --> 00:06:44.275
<00:06:40.175>and <00:06:40.291>it <00:06:40.408>allows <00:06:40.525>the <00:06:40.641>user <00:06:40.758>to, <00:06:40.875>um, <00:06:40.991>add <00:06:41.108>that <00:06:41.225>to <00:06:41.341>your <00:06:41.458>home <00:06:41.575>screen

132
00:06:44.495 --> 00:06:45.595
<00:06:44.495>or <00:06:44.742>to <00:06:44.990>his <00:06:45.237>home <00:06:45.485>screen.

133
00:06:46.255 --> 00:06:47.835
<00:06:46.255>You <00:06:46.430>can <00:06:46.605>click <00:06:46.780>on <00:06:46.955>this <00:06:47.130>add <00:06:47.305>to <00:06:47.480>home <00:06:47.655>screen.

134
00:06:47.955 --> 00:06:49.315
<00:06:47.955>I <00:06:48.129>mean, <00:06:48.304>now <00:06:48.479>it's <00:06:48.654>a <00:06:48.829>little <00:06:49.004>bit <00:06:49.179>different.

135
00:06:49.415 --> 00:06:50.995
<00:06:49.415>The <00:06:49.615>current <00:06:49.815>banner <00:06:50.015>is <00:06:50.215>a <00:06:50.415>little <00:06:50.615>bit <00:06:50.815>smaller,

136
00:06:51.135 --> 00:06:54.755
<00:06:51.135>but <00:06:51.310>still <00:06:51.485>it's <00:06:51.659>the <00:06:51.835>browser <00:06:52.010>decides <00:06:52.185>when <00:06:52.360>to, <00:06:52.534>uh,

137
00:06:54.825 --> 00:06:56.435
<00:06:54.825>show <00:06:55.175>this, <00:06:55.525>this, <00:06:55.875>this <00:06:56.224>banner.

138
00:06:56.815 --> 00:07:00.035
<00:06:56.815>If <00:06:56.931>you <00:06:57.048>click <00:06:57.165>on <00:06:57.281>it, <00:06:57.398>you <00:06:57.515>will <00:06:57.631>ask <00:06:57.748>to, <00:06:57.865>do <00:06:57.981>you <00:06:58.098>actually <00:06:58.215>want

139
00:07:00.035 --> 00:07:01.115
<00:07:00.035>to <00:07:00.197>add <00:07:00.359>it <00:07:00.521>to <00:07:00.683>your <00:07:00.845>home <00:07:01.007>screen?

140
00:07:01.215 --> 00:07:04.075
<00:07:01.215>And <00:07:01.390>if <00:07:01.565>you <00:07:01.739>want <00:07:01.914>that, <00:07:02.090>you <00:07:02.265>have <00:07:02.440>this, <00:07:02.614>um,

141
00:07:05.255 --> 00:07:09.035
<00:07:05.255>to <00:07:05.382>do <00:07:05.509>progressive <00:07:05.636>web <00:07:05.764>app <00:07:05.891>right <00:07:06.018>next <00:07:06.145>to <00:07:06.273>all <00:07:06.400>the <00:07:06.527>other <00:07:06.655>apps,

142
00:07:09.735 --> 00:07:12.675
<00:07:09.735>uh, <00:07:10.015>like, <00:07:10.295>uh, <00:07:10.575>SPB, <00:07:10.855>Chrome, <00:07:11.135>whatever.

143
00:07:12.745 --> 00:07:17.195
<00:07:12.745>Even <00:07:12.885>if <00:07:13.025>you <00:07:13.165>open <00:07:13.305>the <00:07:13.445>task <00:07:13.585>manager, <00:07:13.725>you <00:07:13.865>see <00:07:14.005>that <00:07:14.145>the,

144
00:07:17.815 --> 00:07:20.835
<00:07:17.815>um, <00:07:17.955>your <00:07:18.094>app <00:07:18.235>is <00:07:18.375>right <00:07:18.515>next <00:07:18.655>to <00:07:18.795>all <00:07:18.935>the <00:07:19.075>other <00:07:19.215>apps.

145
00:07:21.535 --> 00:07:23.155
<00:07:21.535>And <00:07:21.815>the <00:07:22.095>interesting <00:07:22.375>thing <00:07:22.655>here <00:07:22.935>is

146
00:07:23.155 --> 00:07:26.755
<00:07:23.155>that <00:07:23.294>your <00:07:23.434>progressive <00:07:23.575>web <00:07:23.715>app <00:07:23.854>is <00:07:23.994>there <00:07:24.135>right <00:07:24.275>next <00:07:24.414>to <00:07:24.554>Chrome,

147
00:07:26.975 --> 00:07:29.395
<00:07:26.975>but <00:07:27.150>in <00:07:27.325>the <00:07:27.500>end, <00:07:27.675>the <00:07:27.850>progressive <00:07:28.025>web <00:07:28.200>app <00:07:28.375>is

148
00:07:29.395 --> 00:07:30.475
<00:07:29.395>still <00:07:29.719>a <00:07:30.043>web <00:07:30.367>application.

149
00:07:30.665 --> 00:07:35.355
<00:07:30.665>It's <00:07:30.820>still <00:07:30.976>just <00:07:31.131>a <00:07:31.287>different, <00:07:31.442>uh, <00:07:31.598>view <00:07:31.753>of <00:07:31.909>the <00:07:32.065>thing

150
00:07:35.465 --> 00:07:37.355
<00:07:35.465>that <00:07:35.931>Chrome <00:07:36.398>shows <00:07:36.865>you.

151
00:07:37.655 --> 00:07:40.595
<00:07:37.655>And <00:07:37.854>it's <00:07:38.054>there <00:07:38.255>as <00:07:38.455>a, <00:07:38.655>a <00:07:38.854>separate <00:07:39.054>application.

152
00:07:43.105 --> 00:07:45.205
<00:07:43.105>Um, <00:07:43.280>also <00:07:43.455>if <00:07:43.630>you <00:07:43.805>open <00:07:43.980>it, <00:07:44.155>you <00:07:44.330>will <00:07:44.505>see

153
00:07:45.235 --> 00:07:47.125
<00:07:45.235>that <00:07:45.515>the <00:07:45.795>URL <00:07:46.075>bar <00:07:46.355>is <00:07:46.635>gone.

154
00:07:47.345 --> 00:07:48.805
<00:07:47.345>So <00:07:47.783>in <00:07:48.221>the <00:07:48.659>manifestation,

155
00:07:48.905 --> 00:07:51.045
<00:07:48.905>you <00:07:49.104>see <00:07:49.304>the <00:07:49.505>display <00:07:49.705>is <00:07:49.905>set <00:07:50.104>to <00:07:50.304>standalone.

156
00:07:51.045 --> 00:07:54.445
<00:07:51.045>That <00:07:51.161>means <00:07:51.278>that <00:07:51.395>we <00:07:51.511>want <00:07:51.628>to <00:07:51.745>have <00:07:51.861>our <00:07:51.978>app <00:07:52.095>to <00:07:52.211>take <00:07:52.328>off, <00:07:52.445>uh,

157
00:07:54.465 --> 00:07:55.765
<00:07:54.465>to <00:07:54.699>take <00:07:54.933>over <00:07:55.167>the <00:07:55.401>whole <00:07:55.635>screen.

158
00:07:56.105 --> 00:07:57.925
<00:07:56.105>And <00:07:56.385>UL <00:07:56.665>bar <00:07:56.945>is, <00:07:57.225>is <00:07:57.505>gone.

159
00:07:59.315 --> 00:08:04.045
<00:07:59.315>They <00:07:59.455>are, <00:07:59.594>um, <00:07:59.735>a <00:07:59.875>set <00:08:00.015>of <00:08:00.155>other <00:08:00.295>APIs <00:08:00.435>that, <00:08:00.575>uh, <00:08:00.715>try

160
00:08:04.045 --> 00:08:05.765
<00:08:04.045>to <00:08:04.395>give <00:08:04.745>this <00:08:05.095>integrated <00:08:05.445>feeling.

161
00:08:06.345 --> 00:08:10.725
<00:08:06.345>And <00:08:06.500>they <00:08:06.656>are <00:08:06.811>mostly <00:08:06.967>under <00:08:07.122>this <00:08:07.278>umbrella <00:08:07.433>term <00:08:07.589>project <00:08:07.745>fugu.

162
00:08:11.355 --> 00:08:14.405
<00:08:11.355>Project <00:08:11.588>Fugu <00:08:11.821>is <00:08:12.055>a <00:08:12.288>cross <00:08:12.521>organization <00:08:12.755>project.

163
00:08:14.905 --> 00:08:18.565
<00:08:14.905>So, <00:08:15.060>uh, <00:08:15.216>project, <00:08:15.371>so, <00:08:15.527>um, <00:08:15.682>it's, <00:08:15.838>uh, <00:08:15.993>I <00:08:16.149>think <00:08:16.304>Google,

164
00:08:19.125 --> 00:08:21.885
<00:08:19.125>Microsoft, <00:08:19.280>Samsung, <00:08:19.436>and <00:08:19.591>some <00:08:19.747>guys <00:08:19.902>from <00:08:20.058>Apple <00:08:20.213>maybe <00:08:20.369>as <00:08:20.525>well.

165
00:08:22.275 --> 00:08:25.245
<00:08:22.275>They're <00:08:22.450>working <00:08:22.625>together <00:08:22.799>on <00:08:22.974>a <00:08:23.150>set <00:08:23.325>of <00:08:23.500>new <00:08:23.674>APIs

166
00:08:25.275 --> 00:08:29.405
<00:08:25.275>that <00:08:25.414>you <00:08:25.554>can <00:08:25.695>use <00:08:25.835>to, <00:08:25.974>to, <00:08:26.114>to <00:08:26.255>give <00:08:26.395>an <00:08:26.534>integrated <00:08:26.674>feeling

167
00:08:29.745 --> 00:08:32.485
<00:08:29.745>for <00:08:29.920>your, <00:08:30.095>for <00:08:30.270>your <00:08:30.445>applications, <00:08:30.620>for <00:08:30.795>your <00:08:30.970>web <00:08:31.145>application.

168
00:08:33.265 --> 00:08:36.485
<00:08:33.265>For <00:08:33.392>example, <00:08:33.519>we <00:08:33.646>have <00:08:33.774>the, <00:08:33.901>the <00:08:34.028>web <00:08:34.155>share <00:08:34.283>API <00:08:34.410>that <00:08:34.537>allows <00:08:34.664>us

169
00:08:36.665 --> 00:08:40.765
<00:08:36.664>to <00:08:36.865>share, <00:08:37.064>um, <00:08:37.265>to, <00:08:37.464>uh, <00:08:37.664>to <00:08:37.865>send <00:08:38.064>information

170
00:08:40.765 --> 00:08:42.125
<00:08:40.765>to <00:08:41.071>the <00:08:41.376>native <00:08:41.683>share <00:08:41.989>prompt.

171
00:08:42.665 --> 00:08:46.725
<00:08:42.664>We <00:08:42.804>have <00:08:42.944>the <00:08:43.084>share <00:08:43.224>target, <00:08:43.365>API, <00:08:43.505>where <00:08:43.645>we <00:08:43.784>can <00:08:43.924>receive <00:08:44.064>content

172
00:08:46.955 --> 00:08:49.805
<00:08:46.955>that, <00:08:47.130>um, <00:08:47.305>is <00:08:47.480>shared <00:08:47.655>over <00:08:47.830>another, <00:08:48.005>uh, <00:08:48.180>another <00:08:48.355>app

173
00:08:49.805 --> 00:08:50.925
<00:08:49.805>or <00:08:50.141>another <00:08:50.477>web <00:08:50.813>app.

174
00:08:51.665 --> 00:08:53.325
<00:08:51.665>We <00:08:51.944>have <00:08:52.224>the <00:08:52.505>media <00:08:52.785>session, <00:08:53.064>API,

175
00:08:53.325 --> 00:08:55.805
<00:08:53.325>where <00:08:53.525>we <00:08:53.725>can <00:08:53.925>control <00:08:54.125>the <00:08:54.325>media, <00:08:54.525>uh, <00:08:54.725>thing

176
00:08:56.785 --> 00:09:00.125
<00:08:56.785>or <00:08:57.064>the, <00:08:57.344>the, <00:08:57.625>the <00:08:57.905>media <00:08:58.185>controls,

177
00:09:00.625 --> 00:09:01.885
<00:09:00.625>um, <00:09:01.003>of <00:09:01.381>our <00:09:01.759>device.

178
00:09:02.785 --> 00:09:04.965
<00:09:02.785>We <00:09:03.018>can <00:09:03.251>use <00:09:03.485>the <00:09:03.718>contact <00:09:03.951>picker, <00:09:04.185>API,

179
00:09:04.965 --> 00:09:08.245
<00:09:04.965>and <00:09:05.105>there's <00:09:05.245>a <00:09:05.385>whole <00:09:05.525>lot <00:09:05.665>of <00:09:05.805>new <00:09:05.945>APIs <00:09:06.085>that <00:09:06.225>are <00:09:06.365>coming

180
00:09:08.385 --> 00:09:11.285
<00:09:08.385>or <00:09:08.525>that <00:09:08.665>are <00:09:08.805>already <00:09:08.944>in, <00:09:09.085>uh, <00:09:09.225>the <00:09:09.365>browsers <00:09:09.505>we <00:09:09.645>are <00:09:09.785>using.

181
00:09:11.305 --> 00:09:14.245
<00:09:11.305>And <00:09:11.444>that's <00:09:11.584>the, <00:09:11.724>most <00:09:11.864>of <00:09:12.005>them <00:09:12.145>are <00:09:12.285>quite <00:09:12.425>fun <00:09:12.564>to <00:09:12.704>use.

182
00:09:15.945 --> 00:09:18.845
<00:09:15.945>The <00:09:16.225>next <00:09:16.505>thing <00:09:16.785>is <00:09:17.065>offline <00:09:17.345>availability.

183
00:09:19.665 --> 00:09:24.645
<00:09:19.665>So, <00:09:19.839>um, <00:09:20.015>the <00:09:20.189>whole <00:09:20.365>idea <00:09:20.540>of <00:09:20.714>having, <00:09:20.890>um, <00:09:21.064>um,

184
00:09:25.905 --> 00:09:28.085
<00:09:25.905>of <00:09:26.105>having <00:09:26.305>offline <00:09:26.505>application <00:09:26.704>is <00:09:26.905>that <00:09:27.105>we <00:09:27.305>can,

185
00:09:28.625 --> 00:09:31.885
<00:09:28.625>we <00:09:28.800>should <00:09:28.975>treat <00:09:29.150>the <00:09:29.325>network, <00:09:29.500>um, <00:09:29.675>a <00:09:29.850>network <00:09:30.025>connectivity

186
00:09:32.065 --> 00:09:34.325
<00:09:32.065>as <00:09:32.345>a <00:09:32.625>progressive <00:09:32.905>enhancement, <00:09:33.185>which <00:09:33.465>means

187
00:09:34.715 --> 00:09:38.205
<00:09:34.715>that <00:09:34.890>it's <00:09:35.065>not <00:09:35.240>required <00:09:35.415>to <00:09:35.590>use <00:09:35.765>your <00:09:35.940>application <00:09:36.115>application.

188
00:09:38.205 --> 00:09:40.805
<00:09:38.205>That's <00:09:38.380>the <00:09:38.555>goal. <00:09:38.730>Of <00:09:38.905>course, <00:09:39.080>if <00:09:39.255>you <00:09:39.430>want <00:09:39.605>to,

189
00:09:41.015 --> 00:09:44.805
<00:09:41.015>let's <00:09:41.142>say <00:09:41.269>if <00:09:41.396>you <00:09:41.524>want <00:09:41.651>to <00:09:41.778>see <00:09:41.905>new <00:09:42.033>mails, <00:09:42.160>new <00:09:42.287>emails, <00:09:42.415>that

190
00:09:44.875 --> 00:09:46.765
<00:09:44.875>that <00:09:45.075>has <00:09:45.275>been <00:09:45.475>sent <00:09:45.675>to <00:09:45.875>us, <00:09:46.075>we <00:09:46.275>need

191
00:09:46.765 --> 00:09:48.405
<00:09:46.765>to <00:09:47.115>have <00:09:47.465>an <00:09:47.814>active <00:09:48.165>interconnection.

192
00:09:48.405 --> 00:09:51.485
<00:09:48.405>Sure. <00:09:48.638>But <00:09:48.871>we <00:09:49.105>don't <00:09:49.338>need <00:09:49.571>internet <00:09:49.805>connection

193
00:09:51.665 --> 00:09:54.565
<00:09:51.665>to <00:09:51.865>read <00:09:52.064>emails <00:09:52.265>we <00:09:52.464>have <00:09:52.665>already <00:09:52.865>downloaded <00:09:53.064>before.

194
00:09:54.945 --> 00:09:59.485
<00:09:54.945>So <00:09:55.120>that's <00:09:55.295>the <00:09:55.470>thing. <00:09:55.645>Um, <00:09:55.820>there <00:09:55.995>are <00:09:56.170>several <00:09:56.345>ways

195
00:09:59.625 --> 00:10:02.125
<00:09:59.625>to <00:09:59.975>store <00:10:00.325>information <00:10:00.675>on <00:10:01.025>our,

196
00:10:02.305 --> 00:10:04.045
<00:10:02.305>or <00:10:02.505>in <00:10:02.704>our <00:10:02.905>browser <00:10:03.104>or <00:10:03.305>on <00:10:03.505>our <00:10:03.704>device.

197
00:10:04.045 --> 00:10:06.725
<00:10:04.045>There <00:10:04.219>is <00:10:04.395>cookies, <00:10:04.569>there <00:10:04.745>is <00:10:04.920>the <00:10:05.094>session <00:10:05.270>local <00:10:05.444>storage,

198
00:10:07.385 --> 00:10:11.705
<00:10:07.385>and <00:10:07.665>there <00:10:07.944>also <00:10:08.225>to <00:10:08.505>new <00:10:08.785>things,

199
00:10:11.715 --> 00:10:15.505
<00:10:11.715>which <00:10:11.870>is <00:10:12.026>the <00:10:12.181>service <00:10:12.337>worker <00:10:12.492>storage <00:10:12.648>and <00:10:12.803>the <00:10:12.959>indexed <00:10:13.115>db.

200
00:10:16.565 --> 00:10:19.225
<00:10:16.565>And <00:10:16.720>we <00:10:16.876>will <00:10:17.031>look <00:10:17.187>at <00:10:17.342>this <00:10:17.498>in <00:10:17.653>more <00:10:17.809>detail <00:10:17.965>at

201
00:10:19.225 --> 00:10:20.345
<00:10:19.225>this <00:10:19.426>bo <00:10:19.628>at <00:10:19.829>both <00:10:20.031>of <00:10:20.233>them.

202
00:10:21.125 --> 00:10:24.945
<00:10:21.125>So <00:10:21.300>if <00:10:21.475>we <00:10:21.650>have <00:10:21.825>our <00:10:22.000>application, <00:10:22.175>let's <00:10:22.350>take, <00:10:22.525>um,

203
00:10:25.845 --> 00:10:30.505
<00:10:25.845>normal, <00:10:26.195>um, <00:10:26.545>single <00:10:26.895>page <00:10:27.245>application

204
00:10:30.835 --> 00:10:32.985
<00:10:30.835>where <00:10:31.068>we <00:10:31.301>have <00:10:31.535>maybe <00:10:31.768>an <00:10:32.001>index, <00:10:32.235>HTML,

205
00:10:33.005 --> 00:10:34.985
<00:10:33.005>we <00:10:33.355>have <00:10:33.705>some <00:10:34.055>application <00:10:34.405>JavaScript.

206
00:10:35.005 --> 00:10:36.945
<00:10:35.005>We <00:10:35.205>have <00:10:35.405>some <00:10:35.605>styles, <00:10:35.805>we <00:10:36.005>have <00:10:36.205>some <00:10:36.405>assets.

207
00:10:37.275 --> 00:10:38.585
<00:10:37.275>Those <00:10:37.668>are <00:10:38.061>static <00:10:38.454>files.

208
00:10:39.045 --> 00:10:41.385
<00:10:39.045>That's <00:10:39.278>the <00:10:39.511>app <00:10:39.745>shell <00:10:39.978>around <00:10:40.211>our <00:10:40.444>application.

209
00:10:42.255 --> 00:10:45.945
<00:10:42.255>Then <00:10:42.410>we <00:10:42.566>have <00:10:42.721>dynamic <00:10:42.877>data, <00:10:43.032>which <00:10:43.188>is <00:10:43.343>data <00:10:43.499>that <00:10:43.655>is,

210
00:10:46.015 --> 00:10:48.625
<00:10:46.015>that <00:10:46.215>might <00:10:46.415>come, <00:10:46.615>uh, <00:10:46.814>that <00:10:47.015>can <00:10:47.215>be, <00:10:47.415>um,

211
00:10:48.775 --> 00:10:50.585
<00:10:48.775>that <00:10:49.125>comes <00:10:49.475>from <00:10:49.824>an <00:10:50.175>API.

212
00:10:51.365 --> 00:10:52.825
<00:10:51.365>And <00:10:51.693>the <00:10:52.022>whole <00:10:52.350>difference <00:10:52.679>is

213
00:10:53.055 --> 00:10:55.345
<00:10:53.055>that <00:10:53.334>the <00:10:53.614>static <00:10:53.895>files <00:10:54.175>don't <00:10:54.454>change.

214
00:10:56.285 --> 00:10:58.145
<00:10:56.285>If <00:10:56.485>we <00:10:56.685>have, <00:10:56.885>let's <00:10:57.084>say, <00:10:57.285>a <00:10:57.485>new <00:10:57.685>version

215
00:10:58.205 --> 00:11:02.305
<00:10:58.205>of <00:10:58.345>our <00:10:58.485>application <00:10:58.625>JavaScript, <00:10:58.765>we <00:10:58.905>would <00:10:59.045>have <00:10:59.185>a <00:10:59.325>new <00:10:59.465>hash, <00:10:59.605>um,

216
00:11:02.325 --> 00:11:05.105
<00:11:02.325>for <00:11:02.500>the <00:11:02.675>new, <00:11:02.850>uh, <00:11:03.025>version <00:11:03.200>or <00:11:03.375>something <00:11:03.550>like <00:11:03.725>that.

217
00:11:05.205 --> 00:11:08.465
<00:11:05.205>But <00:11:05.485>still <00:11:05.765>the <00:11:06.045>JavaScript <00:11:06.325>shouldn't <00:11:06.605>change.

218
00:11:09.315 --> 00:11:12.625
<00:11:09.315>While <00:11:09.490>dynamic <00:11:09.665>data <00:11:09.840>will <00:11:10.015>change <00:11:10.190>very <00:11:10.365>frequently, <00:11:10.540>as <00:11:10.715>soon

219
00:11:12.625 --> 00:11:14.545
<00:11:12.625>as <00:11:12.825>we, <00:11:13.025>uh, <00:11:13.225>create <00:11:13.425>a <00:11:13.625>new <00:11:13.825>blog <00:11:14.025>post,

220
00:11:14.725 --> 00:11:18.385
<00:11:14.725>we <00:11:14.900>will <00:11:15.075>have <00:11:15.250>different <00:11:15.425>content <00:11:15.600>inside <00:11:15.775>our <00:11:15.950>post <00:11:16.125>endpoint.

221
00:11:19.225 --> 00:11:22.205
<00:11:19.225>So <00:11:19.380>that's <00:11:19.536>why <00:11:19.691>we <00:11:19.847>treat <00:11:20.002>both <00:11:20.158>of <00:11:20.313>them, <00:11:20.469>uh, <00:11:20.625>set

222
00:11:22.425 --> 00:11:23.565
<00:11:22.425>or <00:11:22.681>in <00:11:22.938>a <00:11:23.194>different <00:11:23.451>way.

223
00:11:24.655 --> 00:11:26.765
<00:11:24.655>Let's <00:11:24.935>start <00:11:25.214>with <00:11:25.495>dynamic <00:11:25.775>data, <00:11:26.055>and

224
00:11:26.765 --> 00:11:30.125
<00:11:26.765>therefore <00:11:26.920>we <00:11:27.076>have <00:11:27.231>a <00:11:27.387>very <00:11:27.542>powerful <00:11:27.698>thing <00:11:27.853>in <00:11:28.009>our <00:11:28.165>browser

225
00:11:30.225 --> 00:11:32.045
<00:11:30.225>called <00:11:30.691>the <00:11:31.158>Index <00:11:31.625>db.

226
00:11:33.265 --> 00:11:35.125
<00:11:33.265>The <00:11:33.545>Index <00:11:33.824>DB <00:11:34.105>is <00:11:34.385>a, <00:11:34.665>uh,

227
00:11:35.365 --> 00:11:38.965
<00:11:35.365>non-national <00:11:35.645>relational <00:11:35.925>database <00:11:36.205>inside <00:11:36.485>our <00:11:36.765>browser.

228
00:11:39.105 --> 00:11:43.285
<00:11:39.105>So <00:11:39.232>it's <00:11:39.359>basically <00:11:39.486>just <00:11:39.614>an <00:11:39.741>object <00:11:39.868>store <00:11:39.995>where <00:11:40.123>we <00:11:40.250>can <00:11:40.377>put <00:11:40.505>data

229
00:11:43.465 --> 00:11:45.245
<00:11:43.465>and <00:11:43.698>that <00:11:43.931>we <00:11:44.165>can <00:11:44.398>get <00:11:44.631>data <00:11:44.865>from.

230
00:11:46.425 --> 00:11:48.395
<00:11:46.425>Problem <00:11:46.704>here, <00:11:46.984>it's <00:11:47.265>a <00:11:47.545>paint <00:11:47.824>use.

231
00:11:48.935 --> 00:11:52.515
<00:11:48.935>Um, <00:11:49.074>the <00:11:49.214>API <00:11:49.354>is <00:11:49.494>probably <00:11:49.635>one <00:11:49.775>of <00:11:49.915>the <00:11:50.055>worst <00:11:50.194>APIs, <00:11:50.334>um,

232
00:11:52.575 --> 00:11:53.805
<00:11:52.575>we <00:11:52.851>have <00:11:53.128>in <00:11:53.405>our <00:11:53.682>browsers.

233
00:11:54.345 --> 00:11:58.565
<00:11:54.345>So <00:11:54.485>that's <00:11:54.625>why <00:11:54.765>there <00:11:54.905>is <00:11:55.045>a <00:11:55.185>pretty <00:11:55.325>cool <00:11:55.465>project <00:11:55.605>called <00:11:55.745>IDB,

234
00:11:58.975 --> 00:12:03.125
<00:11:58.975>which <00:11:59.115>is <00:11:59.255>in <00:11:59.395>the <00:11:59.535>end, <00:11:59.675>just <00:11:59.815>a, <00:11:59.955>um, <00:12:00.095>promised <00:12:00.235>based <00:12:00.375>wrapper

235
00:12:03.265 --> 00:12:06.045
<00:12:03.265>around <00:12:03.545>the <00:12:03.824>index <00:12:04.105>db, <00:12:04.385>uh, <00:12:04.665>API,

236
00:12:07.145 --> 00:12:09.765
<00:12:07.145>and <00:12:07.345>that <00:12:07.545>makes <00:12:07.745>it <00:12:07.944>quite <00:12:08.145>cool <00:12:08.345>to <00:12:08.545>use.

237
00:12:10.785 --> 00:12:15.745
<00:12:10.785>And <00:12:10.985>why <00:12:11.185>should <00:12:11.385>we <00:12:11.584>use <00:12:11.785>Index <00:12:11.985>DB <00:12:12.185>versus

238
00:12:15.875 --> 00:12:17.585
<00:12:15.875>maybe <00:12:16.155>something <00:12:16.435>like <00:12:16.715>the <00:12:16.995>local <00:12:17.275>storage?

239
00:12:18.045 --> 00:12:21.585
<00:12:18.045>Uh, <00:12:18.185>the <00:12:18.324>whole <00:12:18.464>thing. <00:12:18.604>Index <00:12:18.745>DB <00:12:18.885>is <00:12:19.025>designed <00:12:19.165>as <00:12:19.305>a <00:12:19.444>database

240
00:12:21.885 --> 00:12:25.105
<00:12:21.885>so <00:12:22.040>we <00:12:22.196>can, <00:12:22.351>um, <00:12:22.507>store <00:12:22.662>a <00:12:22.818>large <00:12:22.973>amount <00:12:23.129>of <00:12:23.285>data.

241
00:12:25.215 --> 00:12:27.745
<00:12:25.215>It's <00:12:25.415>all <00:12:25.615>asynchronous, <00:12:25.815>so <00:12:26.015>all <00:12:26.215>the <00:12:26.415>requests <00:12:26.615>run,

242
00:12:27.925 --> 00:12:29.025
<00:12:27.925>um, <00:12:28.915>asynchronous.

243
00:12:29.445 --> 00:12:32.345
<00:12:29.445>And <00:12:29.645>last <00:12:29.845>but <00:12:30.045>not <00:12:30.245>least, <00:12:30.445>it <00:12:30.645>provides <00:12:30.845>indexes.

244
00:12:34.485 --> 00:12:37.715
<00:12:34.485>Let's <00:12:34.625>have <00:12:34.765>a <00:12:34.905>look <00:12:35.045>at <00:12:35.185>how <00:12:35.325>it's <00:12:35.465>implemented <00:12:35.605>in, <00:12:35.745>in <00:12:35.885>our,

245
00:12:37.975 --> 00:12:41.875
<00:12:37.975>or <00:12:38.115>how <00:12:38.255>IDB, <00:12:38.395>the, <00:12:38.535>the, <00:12:38.675>the <00:12:38.815>wrapper <00:12:38.955>around <00:12:39.095>Index <00:12:39.235>DB <00:12:39.375>works.

246
00:12:42.895 --> 00:12:47.235
<00:12:42.895>Um, <00:12:43.022>here <00:12:43.149>we <00:12:43.276>have <00:12:43.404>our, <00:12:43.531>um, <00:12:43.658>our <00:12:43.785>store. <00:12:43.913>We <00:12:44.040>create <00:12:44.167>a <00:12:44.295>store.

247
00:12:47.605 --> 00:12:50.635
<00:12:47.605>Could <00:12:47.780>be <00:12:47.955>any, <00:12:48.130>um, <00:12:48.305>any, <00:12:48.480>any <00:12:48.655>name <00:12:48.830>you <00:12:49.005>want

248
00:12:51.175 --> 00:12:53.195
<00:12:51.175>inside <00:12:51.408>our <00:12:51.641>db, <00:12:51.875>we <00:12:52.108>create <00:12:52.341>a <00:12:52.574>store.

249
00:12:53.545 --> 00:12:55.515
<00:12:53.545>Then <00:12:53.745>we <00:12:53.944>have <00:12:54.145>some <00:12:54.344>methods <00:12:54.545>on <00:12:54.745>that <00:12:54.944>store.

250
00:12:55.535 --> 00:12:59.115
<00:12:55.535>We <00:12:55.662>can <00:12:55.789>get, <00:12:55.916>um, <00:12:56.044>uh, <00:12:56.171>we <00:12:56.298>can <00:12:56.425>get <00:12:56.553>information <00:12:56.680>out <00:12:56.807>of <00:12:56.935>it,

251
00:12:59.115 --> 00:13:02.035
<00:12:59.115>we <00:12:59.290>can <00:12:59.465>set <00:12:59.640>information, <00:12:59.815>we <00:12:59.990>can <00:13:00.165>delete, <00:13:00.340>um, <00:13:00.515>everything.

252
00:13:02.735 --> 00:13:04.515
<00:13:02.735>And <00:13:02.968>then <00:13:03.201>we <00:13:03.435>just <00:13:03.668>call <00:13:03.901>IDB <00:13:04.135>set.

253
00:13:04.515 --> 00:13:05.515
<00:13:04.515>So <00:13:04.694>if <00:13:04.875>you <00:13:05.055>have <00:13:05.235>a <00:13:05.415>post,

254
00:13:05.535 --> 00:13:09.995
<00:13:05.535>and <00:13:05.651>we, <00:13:05.768>we <00:13:05.885>want <00:13:06.001>to <00:13:06.118>save <00:13:06.235>our <00:13:06.351>post <00:13:06.468>inside, <00:13:06.584>um, <00:13:06.701>our <00:13:06.818>index <00:13:06.935>db,

255
00:13:10.215 --> 00:13:14.245
<00:13:10.215>you <00:13:10.390>can <00:13:10.565>just <00:13:10.740>call <00:13:10.915>IDB <00:13:11.090>set <00:13:11.265>with <00:13:11.440>a <00:13:11.615>key.

256
00:13:14.545 --> 00:13:16.205
<00:13:14.545>And <00:13:14.745>the <00:13:14.944>value, <00:13:15.145>the <00:13:15.344>value <00:13:15.545>could <00:13:15.745>be <00:13:15.944>a

257
00:13:16.205 --> 00:13:17.285
<00:13:16.205>string, <00:13:16.448>could <00:13:16.691>be <00:13:16.934>an <00:13:17.177>object.

258
00:13:17.825 --> 00:13:19.485
<00:13:17.825>Um, <00:13:18.525>everything's <00:13:19.225>possible.

259
00:13:19.865 --> 00:13:22.525
<00:13:19.865>And <00:13:20.040>we <00:13:20.215>can <00:13:20.390>then <00:13:20.565>also <00:13:20.740>get <00:13:20.915>it <00:13:21.090>from, <00:13:21.265>um,

260
00:13:22.675 --> 00:13:25.205
<00:13:22.675>from <00:13:22.954>the <00:13:23.234>IDB <00:13:23.515>using <00:13:23.795>IDB <00:13:24.074>get.

261
00:13:26.345 --> 00:13:28.405
<00:13:26.345>So, <00:13:26.695>um, <00:13:27.045>that's <00:13:27.395>pretty <00:13:27.745>cool.

262
00:13:29.545 --> 00:13:33.945
<00:13:29.545>Um, <00:13:29.824>and <00:13:30.104>the <00:13:30.385>whole <00:13:30.665>thing, <00:13:30.944>why,

263
00:13:34.325 --> 00:13:39.145
<00:13:34.325>uh, <00:13:34.452>we <00:13:34.579>have <00:13:34.706>index <00:13:34.834>DB <00:13:34.961>for <00:13:35.088>dynamic <00:13:35.215>data <00:13:35.343>is <00:13:35.470>if <00:13:35.597>we <00:13:35.725>work

264
00:13:39.255 --> 00:13:41.745
<00:13:39.255>with <00:13:39.430>our, <00:13:39.605>with <00:13:39.780>data, <00:13:39.955>it's <00:13:40.130>mostly <00:13:40.305>we <00:13:40.480>work <00:13:40.655>with

265
00:13:41.885 --> 00:13:44.105
<00:13:41.885>inside <00:13:42.235>our <00:13:42.585>application, <00:13:42.935>uh, <00:13:43.285>logic.

266
00:13:44.325 --> 00:13:46.985
<00:13:44.325>So <00:13:44.480>we <00:13:44.636>decide, <00:13:44.791>hey, <00:13:44.947>we <00:13:45.102>want <00:13:45.258>to <00:13:45.413>have <00:13:45.569>this <00:13:45.725>post,

267
00:13:47.405 --> 00:13:50.265
<00:13:47.405>and <00:13:47.532>then <00:13:47.659>we <00:13:47.786>can <00:13:47.914>decide, <00:13:48.041>yeah, <00:13:48.168>let's <00:13:48.295>take <00:13:48.423>that <00:13:48.550>post <00:13:48.677>from <00:13:48.805>the,

268
00:13:50.495 --> 00:13:52.705
<00:13:50.495>from <00:13:50.670>the <00:13:50.845>endpoint <00:13:51.020>because <00:13:51.195>we <00:13:51.370>have <00:13:51.545>an <00:13:51.720>internet <00:13:51.895>connection,

269
00:13:52.965 --> 00:13:55.585
<00:13:52.965>or <00:13:53.072>we <00:13:53.180>can <00:13:53.288>say, <00:13:53.395>no, <00:13:53.503>we <00:13:53.611>want <00:13:53.718>to <00:13:53.826>take <00:13:53.934>it <00:13:54.041>from <00:13:54.149>the <00:13:54.257>index <00:13:54.365>DB

270
00:13:55.615 --> 00:13:56.905
<00:13:55.615>because <00:13:56.002>it's <00:13:56.389>already <00:13:56.776>there.

271
00:13:56.925 --> 00:13:58.665
<00:13:56.925>So <00:13:57.204>it's <00:13:57.484>on <00:13:57.765>us <00:13:58.045>to <00:13:58.324>decide.

272
00:13:59.735 --> 00:14:02.145
<00:13:59.735>With <00:13:59.935>static <00:14:00.135>files, <00:14:00.335>it's <00:14:00.535>a <00:14:00.735>little <00:14:00.935>bit <00:14:01.135>different

273
00:14:02.145 --> 00:14:05.865
<00:14:02.145>because <00:14:02.300>most <00:14:02.456>it's <00:14:02.611>the <00:14:02.767>browser <00:14:02.922>who <00:14:03.078>decides <00:14:03.233>when <00:14:03.389>and <00:14:03.545>why

274
00:14:05.885 --> 00:14:08.105
<00:14:05.885>and <00:14:06.085>how <00:14:06.285>it <00:14:06.485>will <00:14:06.685>fetch <00:14:06.885>a <00:14:07.085>static <00:14:07.285>file.

275
00:14:08.995 --> 00:14:13.855
<00:14:08.995>And <00:14:09.102>maybe <00:14:09.210>we <00:14:09.318>have, <00:14:09.425>um, <00:14:09.533>uh, <00:14:09.641>we <00:14:09.748>have <00:14:09.856>the, <00:14:09.964>the <00:14:10.071>index <00:14:10.179>H <00:14:10.287>TM <00:14:10.395>L

276
00:14:13.875 --> 00:14:17.135
<00:14:13.875>for <00:14:14.050>example, <00:14:14.225>if <00:14:14.400>we <00:14:14.575>hit <00:14:14.750>enter <00:14:14.925>on <00:14:15.100>A <00:14:15.275>URL,

277
00:14:17.505 --> 00:14:20.055
<00:14:17.505>it'll <00:14:17.660>fetch <00:14:17.816>the <00:14:17.971>index, <00:14:18.127>the, <00:14:18.282>uh, <00:14:18.438>the <00:14:18.593>index, <00:14:18.749>uh, <00:14:18.905>sorry,

278
00:14:20.065 --> 00:14:21.375
<00:14:20.065>index <00:14:20.359>H, <00:14:20.654>TM <00:14:20.949>L <00:14:21.244>file.

279
00:14:21.435 --> 00:14:25.215
<00:14:21.435>And <00:14:21.574>we <00:14:21.714>can't <00:14:21.854>control, <00:14:21.994>um, <00:14:22.135>we <00:14:22.275>don't <00:14:22.415>have <00:14:22.555>any <00:14:22.694>control <00:14:22.834>over

280
00:14:25.215 --> 00:14:28.295
<00:14:25.215>that, <00:14:25.448>so <00:14:25.681>we <00:14:25.915>need <00:14:26.148>a <00:14:26.381>new <00:14:26.615>technology,

281
00:14:28.755 --> 00:14:30.495
<00:14:28.755>and <00:14:29.105>that's <00:14:29.455>the <00:14:29.805>service <00:14:30.155>worker.

282
00:14:32.115 --> 00:14:34.815
<00:14:32.115>So <00:14:32.348>the <00:14:32.581>service <00:14:32.815>worker <00:14:33.048>is <00:14:33.281>also <00:14:33.515>JavaScript.

283
00:14:35.115 --> 00:14:36.335
<00:14:35.115>We <00:14:35.481>have <00:14:35.847>JavaScript <00:14:36.213>here.

284
00:14:36.555 --> 00:14:38.455
<00:14:36.555>I'm <00:14:36.905>just <00:14:37.255>using, <00:14:37.604>uh, <00:14:37.954>Wikipedia

285
00:14:38.455 --> 00:14:40.375
<00:14:38.455>and <00:14:38.688>maybe <00:14:38.921>we <00:14:39.155>have <00:14:39.388>some <00:14:39.621>JavaScript <00:14:39.855>already.

286
00:14:40.475 --> 00:14:43.375
<00:14:40.475>And <00:14:40.755>I <00:14:41.035>mean, <00:14:41.315>transcript <00:14:41.595>has, <00:14:41.875>um,

287
00:14:43.955 --> 00:14:47.175
<00:14:43.955>become <00:14:44.188>a <00:14:44.421>very <00:14:44.655>popular <00:14:44.888>pro <00:14:45.121>programming <00:14:45.355>language.

288
00:14:47.175 --> 00:14:49.735
<00:14:47.175>It <00:14:47.408>started <00:14:47.641>as <00:14:47.875>a <00:14:48.108>simple <00:14:48.341>dome <00:14:48.574>manipulation,

289
00:14:50.055 --> 00:14:51.565
<00:14:50.055>manipulation <00:14:51.414>language.

290
00:14:51.865 --> 00:14:54.045
<00:14:51.865>And <00:14:52.065>now <00:14:52.265>we <00:14:52.465>have <00:14:52.665>this <00:14:52.865>fully <00:14:53.065>featured <00:14:53.265>language,

291
00:14:54.745 --> 00:14:56.005
<00:14:54.745>but <00:14:54.971>we <00:14:55.198>still <00:14:55.425>have <00:14:55.652>one <00:14:55.879>problem.

292
00:14:56.585 --> 00:14:59.085
<00:14:56.585>As <00:14:56.785>soon <00:14:56.985>as <00:14:57.185>we <00:14:57.385>close, <00:14:57.585>uh, <00:14:57.785>the <00:14:57.985>tab,

293
00:14:59.145 --> 00:15:00.525
<00:14:59.145>or <00:14:59.322>as <00:14:59.499>soon <00:14:59.677>as <00:14:59.854>we <00:15:00.032>close <00:15:00.209>the <00:15:00.387>browser,

294
00:15:01.185 --> 00:15:02.765
<00:15:01.185>the <00:15:01.535>JavaScript <00:15:01.885>is <00:15:02.234>just <00:15:02.584>dead.

295
00:15:03.935 --> 00:15:06.995
<00:15:03.935>So <00:15:04.090>we <00:15:04.246>need <00:15:04.401>a <00:15:04.557>different <00:15:04.712>scope <00:15:04.868>for <00:15:05.023>our <00:15:05.179>service <00:15:05.334>circuit.

296
00:15:07.655 --> 00:15:10.915
<00:15:07.655>So <00:15:07.855>it's, <00:15:08.055>as <00:15:08.255>I <00:15:08.454>said, <00:15:08.655>still, <00:15:08.855>still <00:15:09.055>JavaScript,

297
00:15:11.175 --> 00:15:13.595
<00:15:11.175>but <00:15:11.375>it <00:15:11.574>lives <00:15:11.775>not <00:15:11.974>inside <00:15:12.175>our <00:15:12.375>window <00:15:12.574>scope.

298
00:15:13.775 --> 00:15:16.315
<00:15:13.775>It <00:15:13.949>lives <00:15:14.125>in <00:15:14.300>a <00:15:14.475>separate <00:15:14.650>scope <00:15:14.824>between <00:15:15.000>the <00:15:15.175>brow

299
00:15:16.375 --> 00:15:18.435
<00:15:16.375>or <00:15:16.608>between <00:15:16.841>the <00:15:17.075>website <00:15:17.308>and <00:15:17.541>the <00:15:17.775>browser.

300
00:15:19.935 --> 00:15:22.155
<00:15:19.935>And <00:15:20.135>it <00:15:20.334>lives <00:15:20.535>there. <00:15:20.734>That's <00:15:20.935>most <00:15:21.135>important <00:15:21.334>thing.

301
00:15:22.155 --> 00:15:25.715
<00:15:22.155>It <00:15:22.295>lives <00:15:22.435>there <00:15:22.574>forever. <00:15:22.714>So <00:15:22.855>it <00:15:22.995>won't <00:15:23.135>just, <00:15:23.275>um, <00:15:23.415>go <00:15:23.555>away.

302
00:15:25.855 --> 00:15:28.515
<00:15:25.855>If <00:15:26.055>we, <00:15:26.255>um, <00:15:26.455>close <00:15:26.655>the, <00:15:26.855>the, <00:15:27.055>the <00:15:27.255>browser,

303
00:15:30.455 --> 00:15:31.595
<00:15:30.455>how <00:15:30.711>do <00:15:30.968>we <00:15:31.224>do <00:15:31.481>that?

304
00:15:31.975 --> 00:15:34.955
<00:15:31.975>Um, <00:15:32.175>we <00:15:32.375>have <00:15:32.575>on <00:15:32.775>the <00:15:32.975>navigated <00:15:33.175>service <00:15:33.375>worker,

305
00:15:34.975 --> 00:15:36.835
<00:15:34.975>we <00:15:35.255>have <00:15:35.535>this <00:15:35.815>method <00:15:36.095>called <00:15:36.375>register.

306
00:15:37.205 --> 00:15:39.595
<00:15:37.205>There. <00:15:37.405>We <00:15:37.605>can <00:15:37.805>just, <00:15:38.005>um, <00:15:38.205>add <00:15:38.405>a <00:15:38.605>path

307
00:15:39.725 --> 00:15:42.715
<00:15:39.725>where <00:15:39.865>our <00:15:40.005>service <00:15:40.145>worker <00:15:40.285>is, <00:15:40.425>and <00:15:40.565>we <00:15:40.705>can <00:15:40.845>add <00:15:40.985>a <00:15:41.125>scope.

308
00:15:42.815 --> 00:15:45.995
<00:15:42.815>So <00:15:42.970>we <00:15:43.126>can <00:15:43.281>have <00:15:43.437>different <00:15:43.592>service <00:15:43.748>workers <00:15:43.903>for <00:15:44.059>different <00:15:44.215>parts

309
00:15:46.015 --> 00:15:47.315
<00:15:46.015>of <00:15:46.405>our <00:15:46.795>PEP <00:15:47.185>application.

310
00:15:48.415 --> 00:15:51.955
<00:15:48.415>And <00:15:48.589>inside <00:15:48.765>our <00:15:48.939>service <00:15:49.115>worker, <00:15:49.290>we <00:15:49.464>have <00:15:49.640>some <00:15:49.814>events.

311
00:15:52.215 --> 00:15:53.795
<00:15:52.215>For <00:15:52.565>example, <00:15:52.915>the <00:15:53.265>install <00:15:53.615>event.

312
00:15:53.975 --> 00:15:55.475
<00:15:53.975>Uh, <00:15:54.245>we <00:15:54.515>have <00:15:54.785>the <00:15:55.055>activate <00:15:55.325>event.

313
00:15:55.625 --> 00:15:59.075
<00:15:55.625>Once <00:15:55.780>the <00:15:55.936>installation <00:15:56.091>has <00:15:56.247>finished, <00:15:56.402>we <00:15:56.558>have <00:15:56.713>the <00:15:56.869>fetch <00:15:57.025>event,

314
00:15:59.135 --> 00:16:00.315
<00:15:59.135>and <00:15:59.347>we <00:15:59.559>have <00:15:59.772>the <00:15:59.984>push <00:16:00.197>event,

315
00:16:01.615 --> 00:16:03.675
<00:16:01.615>and <00:16:01.755>we <00:16:01.895>will <00:16:02.035>look <00:16:02.175>at <00:16:02.315>them <00:16:02.455>in, <00:16:02.595>uh, <00:16:02.735>in <00:16:02.875>a <00:16:03.015>minute.

316
00:16:04.775 --> 00:16:07.515
<00:16:04.775>So <00:16:04.915>in <00:16:05.055>the <00:16:05.194>end, <00:16:05.334>we <00:16:05.475>have <00:16:05.615>this <00:16:05.755>lifecycle, <00:16:05.895>a <00:16:06.035>service <00:16:06.175>circuit.

317
00:16:08.055 --> 00:16:10.555
<00:16:08.055>If <00:16:08.255>we <00:16:08.454>call <00:16:08.655>the <00:16:08.854>register, <00:16:09.055>it'll <00:16:09.255>be <00:16:09.454>installing,

318
00:16:10.555 --> 00:16:11.595
<00:16:10.555>then <00:16:11.023>it's <00:16:11.491>activated.

319
00:16:12.135 --> 00:16:14.635
<00:16:12.135>And <00:16:12.335>after <00:16:12.535>we <00:16:12.735>close <00:16:12.935>the <00:16:13.135>window, <00:16:13.335>it's <00:16:13.535>idle.

320
00:16:14.705 --> 00:16:16.355
<00:16:14.705>It's <00:16:15.055>not <00:16:15.405>gone, <00:16:15.755>it's <00:16:16.105>there

321
00:16:16.415 --> 00:16:19.035
<00:16:16.415>and <00:16:16.570>it's <00:16:16.726>waiting <00:16:16.881>for <00:16:17.037>something <00:16:17.192>to <00:16:17.348>happen, <00:16:17.503>but <00:16:17.659>it's <00:16:17.814>idle.

322
00:16:19.895 --> 00:16:21.115
<00:16:19.895>It <00:16:20.169>can <00:16:20.444>also <00:16:20.718>be <00:16:20.993>terminated.

323
00:16:21.215 --> 00:16:22.875
<00:16:21.215>So <00:16:21.565>if <00:16:21.915>the <00:16:22.265>browser, <00:16:22.615>um,

324
00:16:23.055 --> 00:16:25.275
<00:16:23.055>or <00:16:23.210>if <00:16:23.366>you <00:16:23.521>kill <00:16:23.677>the <00:16:23.832>service <00:16:23.988>circuit <00:16:24.143>inside <00:16:24.299>the <00:16:24.454>browser,

325
00:16:25.425 --> 00:16:27.555
<00:16:25.425>it's <00:16:25.704>terminated <00:16:25.984>or <00:16:26.265>it's <00:16:26.545>also <00:16:26.824>redundant.

326
00:16:27.555 --> 00:16:29.635
<00:16:27.555>So <00:16:27.694>if <00:16:27.834>you <00:16:27.974>have <00:16:28.114>a <00:16:28.255>new <00:16:28.395>version <00:16:28.535>of <00:16:28.675>your <00:16:28.814>service <00:16:28.954>worker,

327
00:16:29.765 --> 00:16:30.955
<00:16:29.765>it'll <00:16:30.122>just <00:16:30.479>be <00:16:30.836>replaced,

328
00:16:31.135 --> 00:16:33.235
<00:16:31.135>or <00:16:31.335>the <00:16:31.535>old <00:16:31.735>version <00:16:31.935>will <00:16:32.135>just <00:16:32.335>be <00:16:32.535>replaced

329
00:16:33.255 --> 00:16:35.795
<00:16:33.255>and <00:16:33.488>it's <00:16:33.721>redundant <00:16:33.955>while <00:16:34.188>the <00:16:34.421>new <00:16:34.655>service

330
00:16:35.795 --> 00:16:36.835
<00:16:35.795>worker <00:16:36.107>will <00:16:36.419>take <00:16:36.731>over.

331
00:16:38.715 --> 00:16:41.855
<00:16:38.715>In <00:16:38.855>the <00:16:38.995>end, <00:16:39.135>the <00:16:39.275>service <00:16:39.415>worker <00:16:39.555>is <00:16:39.695>registered <00:16:39.835>in <00:16:39.975>the <00:16:40.115>browser

332
00:16:42.205 --> 00:16:45.135
<00:16:42.205>list <00:16:42.345>there <00:16:42.485>in <00:16:42.625>a <00:16:42.765>separate <00:16:42.905>scope, <00:16:43.045>has <00:16:43.185>its <00:16:43.325>own <00:16:43.465>event <00:16:43.605>system,

333
00:16:45.355 --> 00:16:49.495
<00:16:45.355>and <00:16:45.510>most <00:16:45.666>importantly, <00:16:45.821>it <00:16:45.977>remains <00:16:46.132>active, <00:16:46.288>even <00:16:46.443>if <00:16:46.599>the <00:16:46.755>page

334
00:16:49.495 --> 00:16:50.535
<00:16:49.495>or <00:16:49.729>the <00:16:49.963>browser <00:16:50.197>is <00:16:50.430>closed.

335
00:16:52.315 --> 00:16:57.015
<00:16:52.315>Now, <00:16:52.515>offline <00:16:52.715>availability <00:16:52.915>with <00:16:53.115>the <00:16:53.315>service <00:16:53.515>worker, <00:16:53.715>again,

336
00:16:57.035 --> 00:17:00.055
<00:16:57.035>the <00:16:57.162>same <00:16:57.289>example <00:16:57.416>we <00:16:57.544>want <00:16:57.671>to <00:16:57.798>call, <00:16:57.925>uh, <00:16:58.053>we <00:16:58.180>want <00:16:58.307>to, <00:16:58.435>uh,

337
00:17:00.115 --> 00:17:01.535
<00:17:00.115>see <00:17:00.754>the <00:17:01.393>kedia.org.

338
00:17:01.795 --> 00:17:05.655
<00:17:01.795>We <00:17:01.935>will, <00:17:02.074>um, <00:17:02.214>um, <00:17:02.354>go <00:17:02.495>to <00:17:02.635>URL, <00:17:02.775>we <00:17:02.915>will <00:17:03.055>hit <00:17:03.194>enter.

339
00:17:06.105 --> 00:17:08.055
<00:17:06.105>It'll <00:17:06.305>go <00:17:06.505>through <00:17:06.704>the <00:17:06.905>network <00:17:07.105>to <00:17:07.305>the <00:17:07.505>server.

340
00:17:08.385 --> 00:17:12.375
<00:17:08.385>It'll, <00:17:08.560>um, <00:17:08.734>uh, <00:17:08.910>answer <00:17:09.085>with, <00:17:09.260>with <00:17:09.435>the <00:17:09.609>index, <00:17:09.785>HTML.

341
00:17:12.515 --> 00:17:15.135
<00:17:12.515>We <00:17:12.670>want <00:17:12.826>and <00:17:12.981>all, <00:17:13.137>it's <00:17:13.292>all <00:17:13.448>fine. <00:17:13.603>We <00:17:13.759>have <00:17:13.915>it.

342
00:17:16.035 --> 00:17:19.615
<00:17:16.035>The <00:17:16.210>problem, <00:17:16.385>if <00:17:16.560>we <00:17:16.735>have <00:17:16.910>no <00:17:17.085>active <00:17:17.260>internet <00:17:17.435>connection,

343
00:17:20.065 --> 00:17:21.855
<00:17:20.065>there <00:17:20.298>is <00:17:20.531>nothing <00:17:20.765>the <00:17:20.998>browser <00:17:21.231>could <00:17:21.465>show.

344
00:17:22.355 --> 00:17:26.215
<00:17:22.355>So <00:17:22.530>we, <00:17:22.704>it'll <00:17:22.880>just <00:17:23.055>show <00:17:23.230>this <00:17:23.405>very <00:17:23.579>ugly, <00:17:23.755>um,

345
00:17:26.445 --> 00:17:27.775
<00:17:26.444>network <00:17:27.043>error <00:17:27.642>page

346
00:17:30.295 --> 00:17:33.065
<00:17:30.295>with <00:17:30.495>the <00:17:30.695>service <00:17:30.895>worker <00:17:31.095>and <00:17:31.295>the <00:17:31.495>application <00:17:31.695>storage.

347
00:17:33.405 --> 00:17:35.305
<00:17:33.405>We <00:17:33.754>have <00:17:34.105>this <00:17:34.455>new <00:17:34.805>source.

348
00:17:36.045 --> 00:17:37.625
<00:17:36.045>So <00:17:36.325>if <00:17:36.605>you <00:17:36.885>look <00:17:37.165>at <00:17:37.445>it,

349
00:17:37.625 --> 00:17:39.705
<00:17:37.625>we <00:17:37.800>have <00:17:37.975>the <00:17:38.150>website <00:17:38.325>and <00:17:38.500>we <00:17:38.675>have <00:17:38.850>the <00:17:39.025>network.

350
00:17:39.845 --> 00:17:41.745
<00:17:39.845>And <00:17:40.045>between <00:17:40.245>that, <00:17:40.445>we <00:17:40.645>have <00:17:40.845>the <00:17:41.045>service <00:17:41.245>circuit.

351
00:17:41.845 --> 00:17:45.385
<00:17:41.845>So <00:17:42.000>each <00:17:42.156>request <00:17:42.311>goes <00:17:42.467>from <00:17:42.622>the <00:17:42.778>website <00:17:42.933>to <00:17:43.089>the <00:17:43.245>internet

352
00:17:45.385 --> 00:17:46.545
<00:17:45.385>through <00:17:45.733>the <00:17:46.081>service <00:17:46.429>circuit.

353
00:17:46.925 --> 00:17:48.145
<00:17:46.925>And <00:17:47.144>also <00:17:47.364>when <00:17:47.583>it <00:17:47.803>comes <00:17:48.023>back,

354
00:17:48.205 --> 00:17:49.485
<00:17:48.205>it <00:17:48.435>goes <00:17:48.665>through <00:17:48.896>the <00:17:49.126>service <00:17:49.357>worker.

355
00:17:50.185 --> 00:17:51.485
<00:17:50.185>And <00:17:50.477>that's <00:17:50.770>the <00:17:51.062>important <00:17:51.355>thing,

356
00:17:51.485 --> 00:17:54.125
<00:17:51.485>because <00:17:51.718>if <00:17:51.951>we <00:17:52.185>don't <00:17:52.418>have <00:17:52.651>an <00:17:52.885>interconnection,

357
00:17:54.585 --> 00:17:57.765
<00:17:54.585>we <00:17:54.760>still <00:17:54.935>have <00:17:55.110>this <00:17:55.285>reliable <00:17:55.460>source, <00:17:55.635>the <00:17:55.810>application <00:17:55.985>storage.

358
00:17:58.865 --> 00:18:02.245
<00:17:58.865>So <00:17:59.005>we <00:17:59.145>can, <00:17:59.285>we <00:17:59.425>can <00:17:59.565>put <00:17:59.705>a <00:17:59.845>copy <00:17:59.985>of <00:18:00.125>the <00:18:00.265>request

359
00:18:02.345 --> 00:18:03.365
<00:18:02.345>to <00:18:02.651>the <00:18:02.957>application <00:18:03.263>storage,

360
00:18:03.505 --> 00:18:06.365
<00:18:03.505>and <00:18:03.660>next <00:18:03.816>time <00:18:03.971>we'll <00:18:04.127>just, <00:18:04.282>we <00:18:04.438>can <00:18:04.593>just <00:18:04.749>take <00:18:04.905>the,

361
00:18:07.305 --> 00:18:09.205
<00:18:07.305>the <00:18:07.585>version <00:18:07.865>from <00:18:08.145>the <00:18:08.425>application <00:18:08.705>storage.

362
00:18:09.665 --> 00:18:13.965
<00:18:09.665>And <00:18:09.865>that's <00:18:10.065>pretty <00:18:10.264>cool. <00:18:10.465>How <00:18:10.665>does <00:18:10.865>it <00:18:11.065>look?

363
00:18:14.185 --> 00:18:17.565
<00:18:14.185>Uh, <00:18:14.312>in <00:18:14.439>the <00:18:14.566>code? <00:18:14.694>We <00:18:14.821>have <00:18:14.948>this <00:18:15.075>fetch <00:18:15.203>event <00:18:15.330>I've <00:18:15.457>shown <00:18:15.585>before.

364
00:18:17.905 --> 00:18:21.325
<00:18:17.905>Um, <00:18:18.060>and <00:18:18.216>inside <00:18:18.371>this <00:18:18.527>fetch <00:18:18.682>event, <00:18:18.838>we <00:18:18.993>can <00:18:19.149>just, <00:18:19.305>um,

365
00:18:22.035 --> 00:18:24.565
<00:18:22.035>interrupt <00:18:22.385>the, <00:18:22.735>the <00:18:23.085>whole <00:18:23.435>request.

366
00:18:24.865 --> 00:18:29.165
<00:18:24.865>So <00:18:25.005>what <00:18:25.145>we <00:18:25.285>are <00:18:25.425>doing <00:18:25.565>here <00:18:25.705>is, <00:18:25.845>instead <00:18:25.985>of, <00:18:26.125>um, <00:18:26.265>instead

367
00:18:29.165 --> 00:18:32.485
<00:18:29.165>of <00:18:29.320>letting <00:18:29.476>it <00:18:29.631>go <00:18:29.787>through, <00:18:29.942>we <00:18:30.098>will <00:18:30.253>take <00:18:30.409>the <00:18:30.565>event

368
00:18:32.585 --> 00:18:34.765
<00:18:32.585>and <00:18:32.785>we <00:18:32.985>will <00:18:33.185>then <00:18:33.385>respond <00:18:33.585>with <00:18:33.785>something <00:18:33.985>else.

369
00:18:35.465 --> 00:18:38.925
<00:18:35.465>So <00:18:35.605>in <00:18:35.745>this <00:18:35.885>case, <00:18:36.024>we'll <00:18:36.165>just <00:18:36.304>respond <00:18:36.445>with <00:18:36.584>a <00:18:36.725>new <00:18:36.865>response,

370
00:18:39.265 --> 00:18:42.485
<00:18:39.265>an <00:18:39.420>index <00:18:39.576>or <00:18:39.731>an <00:18:39.887>HTML <00:18:40.042>file, <00:18:40.198>um, <00:18:40.353>saying <00:18:40.509>Hello <00:18:40.665>world.

371
00:18:43.155 --> 00:18:47.565
<00:18:43.155>That <00:18:43.310>means <00:18:43.466>each <00:18:43.621>request <00:18:43.777>from <00:18:43.932>the <00:18:44.088>website <00:18:44.243>to <00:18:44.399>the <00:18:44.555>network

372
00:18:48.075 --> 00:18:50.095
<00:18:48.075>will, <00:18:48.775>hello <00:18:49.475>world.

373
00:18:50.515 --> 00:18:53.295
<00:18:50.515>That's <00:18:50.748>all <00:18:50.981>it <00:18:51.215>does. <00:18:51.448>Not <00:18:51.681>very <00:18:51.915>useful.

374
00:18:54.155 --> 00:18:56.615
<00:18:54.155>But <00:18:54.355>if <00:18:54.555>you <00:18:54.754>look <00:18:54.955>at <00:18:55.155>the <00:18:55.355>next <00:18:55.555>example

375
00:18:57.685 --> 00:18:58.835
<00:18:57.685>there, <00:18:57.943>we <00:18:58.202>have <00:18:58.461>two <00:18:58.720>events.

376
00:18:59.565 --> 00:19:01.715
<00:18:59.565>First, <00:18:59.845>when <00:19:00.125>the <00:19:00.405>install <00:19:00.685>event <00:19:00.965>happens,

377
00:19:01.815 --> 00:19:04.075
<00:19:01.815>so <00:19:01.970>when <00:19:02.126>the <00:19:02.281>browser <00:19:02.437>tries <00:19:02.592>to <00:19:02.748>register <00:19:02.903>our <00:19:03.059>service <00:19:03.215>worker,

378
00:19:04.895 --> 00:19:09.755
<00:19:04.895>we <00:19:05.050>will <00:19:05.206>wait <00:19:05.361>until <00:19:05.517>we <00:19:05.672>added <00:19:05.828>this <00:19:05.983>catch <00:19:06.139>to <00:19:06.295>SVG.

379
00:19:10.375 --> 00:19:14.715
<00:19:10.375>So <00:19:10.482>as <00:19:10.590>you <00:19:10.698>see <00:19:10.805>here, <00:19:10.913>um, <00:19:11.021>we <00:19:11.128>take <00:19:11.236>the <00:19:11.344>event, <00:19:11.451>we <00:19:11.559>will <00:19:11.667>call, <00:19:11.775>uh,

380
00:19:14.715 --> 00:19:17.475
<00:19:14.715>wait <00:19:14.915>until, <00:19:15.115>which <00:19:15.314>means <00:19:15.514>that <00:19:15.715>the <00:19:15.915>whole, <00:19:16.115>uh,

381
00:19:17.475 --> 00:19:20.155
<00:19:17.475>activation <00:19:17.675>will <00:19:17.875>be <00:19:18.074>delayed <00:19:18.274>until <00:19:18.475>the <00:19:18.675>wait <00:19:18.875>until

382
00:19:20.775 --> 00:19:21.955
<00:19:20.775>um, <00:19:21.129>is, <00:19:21.483>is <00:19:21.837>done.

383
00:19:22.815 --> 00:19:25.555
<00:19:22.815>We <00:19:22.990>will <00:19:23.165>open <00:19:23.340>a <00:19:23.515>new <00:19:23.690>cache <00:19:23.865>called <00:19:24.040>static <00:19:24.215>images.

384
00:19:26.945 --> 00:19:30.005
<00:19:26.945>Um, <00:19:27.085>if <00:19:27.225>that's <00:19:27.365>open, <00:19:27.504>we <00:19:27.645>will <00:19:27.784>just <00:19:27.925>add <00:19:28.064>a <00:19:28.205>new <00:19:28.345>image.

385
00:19:30.175 --> 00:19:33.845
<00:19:30.175>It'll <00:19:30.315>go <00:19:30.455>to <00:19:30.595>the <00:19:30.735>network, <00:19:30.875>it <00:19:31.014>will <00:19:31.155>take <00:19:31.294>the <00:19:31.435>cash <00:19:31.575>SVG,

386
00:19:33.985 --> 00:19:37.965
<00:19:33.985>and <00:19:34.112>it'll <00:19:34.239>put <00:19:34.366>the <00:19:34.494>as <00:19:34.621>cash <00:19:34.748>SVG <00:19:34.875>to <00:19:35.003>the <00:19:35.130>static <00:19:35.257>images <00:19:35.385>cache.

387
00:19:38.995 --> 00:19:41.285
<00:19:38.995>Next <00:19:39.195>time <00:19:39.395>when <00:19:39.594>we <00:19:39.794>have <00:19:39.995>a <00:19:40.195>fetch <00:19:40.395>event,

388
00:19:41.945 --> 00:19:45.885
<00:19:41.945>we <00:19:42.085>will <00:19:42.225>just <00:19:42.365>check <00:19:42.504>if <00:19:42.645>the <00:19:42.784>path <00:19:42.925>name <00:19:43.064>is <00:19:43.205>Cat, <00:19:43.345>SVG.

389
00:19:46.365 --> 00:19:49.205
<00:19:46.365>'cause <00:19:46.520>if <00:19:46.676>so, <00:19:46.831>remember <00:19:46.987>we <00:19:47.142>added <00:19:47.298>it <00:19:47.453>to <00:19:47.609>the <00:19:47.765>cache.

390
00:19:49.205 --> 00:19:52.925
<00:19:49.205>So <00:19:49.332>it'll <00:19:49.459>be <00:19:49.586>there. <00:19:49.714>We <00:19:49.841>can <00:19:49.968>just <00:19:50.095>respond <00:19:50.223>with <00:19:50.350>the <00:19:50.477>cat. <00:19:50.605>SVG.

391
00:19:53.435 --> 00:19:56.925
<00:19:53.435>That <00:19:53.575>means, <00:19:53.715>in <00:19:53.855>this <00:19:53.995>case, <00:19:54.135>it <00:19:54.274>won't <00:19:54.415>go <00:19:54.554>to <00:19:54.695>the <00:19:54.835>network.

392
00:19:57.025 --> 00:19:58.805
<00:19:57.025>It <00:19:57.491>will <00:19:57.958>immediately <00:19:58.425>respond

393
00:19:58.915 --> 00:20:00.925
<00:19:58.915>with <00:19:59.115>the <00:19:59.315>thing <00:19:59.514>it <00:19:59.715>sees <00:19:59.915>in <00:20:00.115>the <00:20:00.315>cache.

394
00:20:01.385 --> 00:20:05.645
<00:20:01.385>And <00:20:01.560>that's <00:20:01.735>instant <00:20:01.910>because <00:20:02.085>there's <00:20:02.260>no, <00:20:02.435>um, <00:20:02.610>network <00:20:02.785>latency.

395
00:20:05.645 --> 00:20:07.765
<00:20:05.645>It's <00:20:05.820>just, <00:20:05.995>it'll <00:20:06.170>take <00:20:06.345>the <00:20:06.520>thing <00:20:06.695>from <00:20:06.870>the <00:20:07.045>cache

396
00:20:07.765 --> 00:20:09.565
<00:20:07.765>and <00:20:07.998>it <00:20:08.231>will <00:20:08.465>return <00:20:08.698>the, <00:20:08.931>the <00:20:09.165>cache.

397
00:20:09.625 --> 00:20:12.565
<00:20:09.625>So <00:20:09.780>we <00:20:09.936>have <00:20:10.091>the <00:20:10.247>service <00:20:10.402>worker, <00:20:10.558>and <00:20:10.713>it's <00:20:10.869>sitting <00:20:11.025>there

398
00:20:12.625 --> 00:20:14.685
<00:20:12.625>and <00:20:12.858>we'll <00:20:13.091>just <00:20:13.325>do <00:20:13.558>what <00:20:13.791>we <00:20:14.025>want.

399
00:20:16.925 --> 00:20:19.045
<00:20:16.925>A <00:20:17.205>very <00:20:17.485>useful <00:20:17.764>example <00:20:18.044>is <00:20:18.325>images.

400
00:20:19.825 --> 00:20:22.325
<00:20:19.825>In <00:20:20.058>most <00:20:20.291>cases, <00:20:20.525>uh, <00:20:20.758>we <00:20:20.991>don't <00:20:21.225>want,

401
00:20:22.425 --> 00:20:24.965
<00:20:22.425>or <00:20:22.774>images <00:20:23.125>are <00:20:23.475>quite <00:20:23.825>heavy,

402
00:20:25.545 --> 00:20:26.685
<00:20:25.545>and <00:20:25.801>it <00:20:26.058>doesn't <00:20:26.314>make <00:20:26.571>sense

403
00:20:26.745 --> 00:20:31.205
<00:20:26.745>to <00:20:26.872>download <00:20:26.999>those <00:20:27.126>images <00:20:27.254>every <00:20:27.381>time <00:20:27.508>we, <00:20:27.635>uh, <00:20:27.763>we <00:20:27.890>look <00:20:28.017>at, <00:20:28.145>uh,

404
00:20:31.205 --> 00:20:32.965
<00:20:31.205>or <00:20:31.405>we, <00:20:31.605>uh, <00:20:31.804>the <00:20:32.004>user <00:20:32.205>visits <00:20:32.405>our <00:20:32.605>page.

405
00:20:33.505 --> 00:20:36.685
<00:20:33.505>So <00:20:33.645>what <00:20:33.785>we <00:20:33.925>do <00:20:34.065>here <00:20:34.205>is <00:20:34.345>we <00:20:34.485>call <00:20:34.625>the <00:20:34.765>fetch <00:20:34.905>event.

406
00:20:37.305 --> 00:20:40.365
<00:20:37.305>We <00:20:37.505>will <00:20:37.705>then <00:20:37.905>check <00:20:38.105>if <00:20:38.305>the <00:20:38.505>UR <00:20:38.705>ends

407
00:20:40.365 --> 00:20:43.205
<00:20:40.365>with <00:20:40.598>PNG <00:20:40.831>give <00:20:41.065>JP <00:20:41.298>SVG <00:20:41.531>or <00:20:41.765>icon.

408
00:20:43.505 --> 00:20:46.085
<00:20:43.505>If <00:20:43.705>so, <00:20:43.905>we <00:20:44.105>will <00:20:44.305>call <00:20:44.505>this <00:20:44.705>respond <00:20:44.905>with,

409
00:20:46.865 --> 00:20:49.925
<00:20:46.865>we <00:20:47.020>will <00:20:47.176>look <00:20:47.331>into <00:20:47.487>the <00:20:47.642>cache <00:20:47.798>if <00:20:47.953>there's <00:20:48.109>already, <00:20:48.265>um,

410
00:20:50.445 --> 00:20:52.285
<00:20:50.445>a <00:20:50.725>cache <00:20:51.004>version <00:20:51.284>of <00:20:51.564>this <00:20:51.845>image.

411
00:20:52.865 --> 00:20:54.485
<00:20:52.865>If <00:20:53.145>so, <00:20:53.425>we <00:20:53.705>will <00:20:53.985>return <00:20:54.265>this.

412
00:20:55.105 --> 00:20:57.885
<00:20:55.105>If <00:20:55.280>not, <00:20:55.455>we <00:20:55.630>will <00:20:55.805>fetch <00:20:55.980>the, <00:20:56.155>the, <00:20:56.330>the <00:20:56.505>image.

413
00:20:58.425 --> 00:20:59.685
<00:20:58.425>We <00:20:58.708>will <00:20:58.992>create <00:20:59.275>a <00:20:59.559>copy.

414
00:21:00.265 --> 00:21:02.005
<00:21:00.265>We <00:21:00.465>will <00:21:00.665>add <00:21:00.865>that <00:21:01.065>copy <00:21:01.265>to <00:21:01.465>the <00:21:01.665>cache,

415
00:21:02.065 --> 00:21:04.045
<00:21:02.065>and <00:21:02.345>we <00:21:02.625>will <00:21:02.905>return <00:21:03.185>the <00:21:03.465>response.

416
00:21:04.145 --> 00:21:06.285
<00:21:04.145>So <00:21:04.300>the <00:21:04.456>first <00:21:04.611>time, <00:21:04.767>it <00:21:04.922>will <00:21:05.078>go <00:21:05.233>to <00:21:05.389>the <00:21:05.545>network.

417
00:21:06.425 --> 00:21:08.045
<00:21:06.425>Second <00:21:06.705>time, <00:21:06.985>it <00:21:07.264>will <00:21:07.544>just, <00:21:07.825>um,

418
00:21:08.095 --> 00:21:11.005
<00:21:08.095>it'll <00:21:08.235>just <00:21:08.375>be <00:21:08.515>returned <00:21:08.655>from <00:21:08.795>the, <00:21:08.935>um, <00:21:09.075>from <00:21:09.215>the <00:21:09.355>app <00:21:09.495>cache.

419
00:21:11.435 --> 00:21:14.565
<00:21:11.435>It's <00:21:11.590>quite <00:21:11.746>similar <00:21:11.901>to <00:21:12.057>how <00:21:12.212>the <00:21:12.368>browser <00:21:12.523>cache <00:21:12.679>already <00:21:12.835>works.

420
00:21:15.145 --> 00:21:17.725
<00:21:15.145>But <00:21:15.345>the, <00:21:15.545>the <00:21:15.745>big, <00:21:15.945>um, <00:21:16.145>difference <00:21:16.345>here <00:21:16.545>is

421
00:21:17.725 --> 00:21:20.805
<00:21:17.725>that <00:21:17.899>we <00:21:18.074>have <00:21:18.250>control <00:21:18.425>over <00:21:18.600>how <00:21:18.774>this <00:21:18.949>caching <00:21:19.125>works.

422
00:21:21.105 --> 00:21:23.445
<00:21:21.105>And <00:21:21.232>it's <00:21:21.359>not <00:21:21.486>the <00:21:21.614>browser <00:21:21.741>that <00:21:21.868>decides, <00:21:21.995>yeah, <00:21:22.123>I <00:21:22.250>want <00:21:22.377>to <00:21:22.505>do

423
00:21:23.445 --> 00:21:24.645
<00:21:23.445>that, <00:21:23.625>or <00:21:23.804>I <00:21:23.985>want <00:21:24.165>to <00:21:24.345>do <00:21:24.525>this.

424
00:21:27.685 --> 00:21:32.465
<00:21:27.685>Um, <00:21:27.840>also <00:21:27.996>for <00:21:28.151>the <00:21:28.307>service <00:21:28.462>record, <00:21:28.618>API, <00:21:28.773>it's <00:21:28.929>quite, <00:21:29.085>um,

425
00:21:33.015 --> 00:21:35.145
<00:21:33.015>sometimes <00:21:33.295>quite <00:21:33.575>com <00:21:33.855>complicated <00:21:34.135>to <00:21:34.415>use.

426
00:21:35.205 --> 00:21:38.345
<00:21:35.205>So <00:21:35.345>therefore, <00:21:35.485>there <00:21:35.625>is <00:21:35.764>this <00:21:35.905>tool <00:21:36.044>called, <00:21:36.185>uh, <00:21:36.324>work <00:21:36.465>Box <00:21:36.605>js,

427
00:21:38.345 --> 00:21:39.865
<00:21:38.345>which <00:21:38.687>is <00:21:39.029>a <00:21:39.371>JavaScript <00:21:39.713>framework

428
00:21:40.945 --> 00:21:43.145
<00:21:40.945>provided <00:21:41.225>by <00:21:41.504>some <00:21:41.784>developers <00:21:42.064>from <00:21:42.345>Google.

429
00:21:44.005 --> 00:21:47.945
<00:21:44.005>And <00:21:44.145>in <00:21:44.285>the <00:21:44.425>end, <00:21:44.565>it's <00:21:44.705>just, <00:21:44.845>um, <00:21:44.985>super <00:21:45.125>easy <00:21:45.265>abstraction, <00:21:45.405>uh,

430
00:21:47.965 --> 00:21:48.985
<00:21:47.965>of <00:21:48.271>the <00:21:48.577>fetch <00:21:48.882>event.

431
00:21:50.085 --> 00:21:51.705
<00:21:50.085>Uh, <00:21:50.318>so <00:21:50.551>the <00:21:50.785>whole <00:21:51.018>code <00:21:51.251>we've <00:21:51.485>seen

432
00:21:51.705 --> 00:21:55.065
<00:21:51.705>before <00:21:51.905>with <00:21:52.105>written <00:21:52.304>with <00:21:52.504>workbooks <00:21:52.705>will <00:21:52.905>just <00:21:53.105>be,

433
00:21:55.325 --> 00:21:57.905
<00:21:55.325>we <00:21:55.558>can <00:21:55.791>register <00:21:56.025>a <00:21:56.258>new <00:21:56.491>workbook <00:21:56.725>route.

434
00:21:58.485 --> 00:22:02.905
<00:21:58.485>We <00:21:58.625>will, <00:21:58.764>uh, <00:21:58.905>we <00:21:59.044>can <00:21:59.185>pass, <00:21:59.324>uh, <00:21:59.465>the, <00:21:59.604>the, <00:21:59.745>the <00:21:59.885>RegX

435
00:22:03.285 --> 00:22:06.865
<00:22:03.285>and <00:22:03.425>you <00:22:03.565>can <00:22:03.705>then, <00:22:03.845>um, <00:22:03.985>create <00:22:04.125>a <00:22:04.265>new <00:22:04.405>strategy <00:22:04.545>cache <00:22:04.685>first.

436
00:22:06.895 --> 00:22:09.745
<00:22:06.895>That <00:22:07.035>means <00:22:07.175>go <00:22:07.315>look <00:22:07.455>at <00:22:07.595>the <00:22:07.735>cache <00:22:07.875>if <00:22:08.014>it's <00:22:08.155>already <00:22:08.295>there.

437
00:22:09.845 --> 00:22:11.705
<00:22:09.845>If <00:22:10.078>not, <00:22:10.311>uh, <00:22:10.545>go <00:22:10.778>to <00:22:11.011>the <00:22:11.245>network.

438
00:22:12.445 --> 00:22:16.025
<00:22:12.445>So <00:22:12.572>it's <00:22:12.699>just <00:22:12.826>very <00:22:12.954>easy <00:22:13.081>to <00:22:13.208>ab <00:22:13.335>to <00:22:13.463>use <00:22:13.590>the <00:22:13.717>fetch <00:22:13.845>event

439
00:22:16.175 --> 00:22:17.465
<00:22:16.175>with <00:22:16.562>work <00:22:16.948>box <00:22:17.336>js.

440
00:22:19.285 --> 00:22:21.425
<00:22:19.285>Now, <00:22:19.635>um, <00:22:19.985>is <00:22:20.335>this <00:22:20.685>store

441
00:22:21.885 --> 00:22:25.545
<00:22:21.885>or <00:22:22.025>the <00:22:22.165>storage <00:22:22.305>we're <00:22:22.445>using, <00:22:22.585>is <00:22:22.725>it, <00:22:22.865>is <00:22:23.004>it <00:22:23.145>really <00:22:23.285>persistent?

442
00:22:26.085 --> 00:22:29.145
<00:22:26.085>And <00:22:26.285>I <00:22:26.485>mean, <00:22:26.685>you <00:22:26.885>could <00:22:27.085>imagine <00:22:27.285>if <00:22:27.485>more

443
00:22:29.145 --> 00:22:31.825
<00:22:29.145>and <00:22:29.425>more <00:22:29.705>websites <00:22:29.985>are <00:22:30.264>using, <00:22:30.545>uh,

444
00:22:32.035 --> 00:22:33.345
<00:22:32.035>stuff <00:22:32.329>like <00:22:32.624>the <00:22:32.919>service <00:22:33.214>worker

445
00:22:33.645 --> 00:22:38.105
<00:22:33.645>and <00:22:33.820>the <00:22:33.995>application <00:22:34.170>storage, <00:22:34.345>your, <00:22:34.520>um, <00:22:34.695>your <00:22:34.870>browser, <00:22:35.045>um,

446
00:22:38.445 --> 00:22:42.065
<00:22:38.445>or <00:22:38.572>your, <00:22:38.699>the <00:22:38.826>space <00:22:38.954>you <00:22:39.081>have <00:22:39.208>in <00:22:39.335>your <00:22:39.463>device <00:22:39.590>will <00:22:39.717>pretty, <00:22:39.845>um,

447
00:22:42.525 --> 00:22:44.305
<00:22:42.525>pretty <00:22:42.991>fast <00:22:43.458>be <00:22:43.925>full.

448
00:22:44.965 --> 00:22:48.345
<00:22:44.965>So <00:22:45.120>of <00:22:45.276>course, <00:22:45.431>the <00:22:45.587>browser <00:22:45.742>needs <00:22:45.898>to <00:22:46.053>manage <00:22:46.209>the <00:22:46.365>space.

449
00:22:48.445 --> 00:22:52.145
<00:22:48.445>It <00:22:48.585>has, <00:22:48.725>if <00:22:48.865>you <00:22:49.004>want <00:22:49.145>to <00:22:49.284>make <00:22:49.425>sure <00:22:49.564>that <00:22:49.705>your <00:22:49.845>application

450
00:22:52.365 --> 00:22:55.185
<00:22:52.365>or <00:22:52.540>the <00:22:52.715>data <00:22:52.890>of <00:22:53.065>your <00:22:53.240>application <00:22:53.415>is <00:22:53.590>really <00:22:53.765>persistent.

451
00:22:55.325 --> 00:23:00.035
<00:22:55.325>We <00:22:55.480>have <00:22:55.636>the <00:22:55.791>persistent <00:22:55.947>storage, <00:22:56.102>API, <00:22:56.258>we <00:22:56.413>have, <00:22:56.569>for <00:22:56.725>example,

452
00:23:00.065 --> 00:23:03.995
<00:23:00.065>storage <00:23:00.265>dot <00:23:00.465>persist, <00:23:00.665>which <00:23:00.865>will <00:23:01.065>check <00:23:01.265>if <00:23:01.465>our

453
00:23:04.175 --> 00:23:08.755
<00:23:04.175>or <00:23:04.315>which <00:23:04.455>will <00:23:04.595>ask <00:23:04.735>whether <00:23:04.875>the <00:23:05.014>browser <00:23:05.155>can <00:23:05.294>persist <00:23:05.435>our, <00:23:05.575>our,

454
00:23:08.855 --> 00:23:11.435
<00:23:08.855>um, <00:23:09.135>um, <00:23:09.415>our <00:23:09.695>data <00:23:09.975>or <00:23:10.255>not.

455
00:23:11.655 --> 00:23:14.035
<00:23:11.655>And <00:23:11.855>we <00:23:12.055>have <00:23:12.254>navigated <00:23:12.455>the <00:23:12.655>storage <00:23:12.855>dot <00:23:13.055>persisted.

456
00:23:14.305 --> 00:23:18.275
<00:23:14.305>That <00:23:14.480>only <00:23:14.655>checks <00:23:14.830>if <00:23:15.005>the <00:23:15.180>storage <00:23:15.355>of <00:23:15.530>that, <00:23:15.705>uh,

457
00:23:18.305 --> 00:23:19.795
<00:23:18.305>website <00:23:18.640>is <00:23:18.975>persisted <00:23:19.310>or <00:23:19.646>not.

458
00:23:20.945 --> 00:23:23.835
<00:23:20.945>That <00:23:21.145>means <00:23:21.345>we <00:23:21.544>have <00:23:21.745>our <00:23:21.945>protected <00:23:22.145>data <00:23:22.345>from,

459
00:23:24.125 --> 00:23:26.275
<00:23:24.125>let's <00:23:24.265>say <00:23:24.405>the <00:23:24.545>data <00:23:24.685>from <00:23:24.825>the <00:23:24.965>cache, <00:23:25.105>a <00:23:25.245>PF <00:23:25.385>from <00:23:25.525>cookies,

460
00:23:26.505 --> 00:23:28.155
<00:23:26.505>from <00:23:26.855>index <00:23:27.205>DBN <00:23:27.555>service <00:23:27.905>worker.

461
00:23:28.695 --> 00:23:30.955
<00:23:28.695>Um, <00:23:28.975>if <00:23:29.254>the <00:23:29.534>storage <00:23:29.814>is <00:23:30.095>persisted,

462
00:23:31.175 --> 00:23:32.835
<00:23:31.175>all <00:23:31.524>those <00:23:31.875>data <00:23:32.225>is <00:23:32.575>protected.

463
00:23:34.415 --> 00:23:37.315
<00:23:34.415>And <00:23:34.615>implementation <00:23:34.815>in <00:23:35.014>the <00:23:35.215>browser <00:23:35.415>looks <00:23:35.615>like <00:23:35.815>this.

464
00:23:38.055 --> 00:23:41.595
<00:23:38.055>Uh, <00:23:38.210>Chrome, <00:23:38.366>if <00:23:38.521>you <00:23:38.677>call, <00:23:38.832>uh, <00:23:38.988>storage <00:23:39.143>persist <00:23:39.299>in <00:23:39.455>Chrome,

465
00:23:41.725 --> 00:23:43.395
<00:23:41.725>it'll <00:23:41.899>just <00:23:42.074>check <00:23:42.250>if <00:23:42.425>there <00:23:42.600>is <00:23:42.774>a <00:23:42.949>high <00:23:43.125>level

466
00:23:43.395 --> 00:23:46.080
<00:23:43.395>of <00:23:43.550>site <00:23:43.706>engagement, <00:23:43.861>and <00:23:44.017>then <00:23:44.172>will <00:23:44.328>decide <00:23:44.483>on <00:23:44.639>those <00:23:44.795>metrics,

467
00:23:46.080 --> 00:23:49.085
<00:23:46.080>whether <00:23:46.313>it'll <00:23:46.546>be, <00:23:46.780>uh, <00:23:47.013>persistent <00:23:47.246>or <00:23:47.480>not.

468
00:23:49.625 --> 00:23:52.205
<00:23:49.625>And <00:23:49.765>in <00:23:49.905>fire <00:23:50.045>folks, <00:23:50.185>fire <00:23:50.325>folks <00:23:50.465>will <00:23:50.605>just <00:23:50.745>ask <00:23:50.885>the <00:23:51.025>user

469
00:23:52.275 --> 00:23:54.805
<00:23:52.275>with <00:23:52.450>little <00:23:52.625>prompt, <00:23:52.800>Hey, <00:23:52.975>do <00:23:53.150>you <00:23:53.325>want <00:23:53.500>to, <00:23:53.675>um,

470
00:23:55.705 --> 00:23:59.765
<00:23:55.705>to <00:23:55.905>allow <00:23:56.105>this <00:23:56.304>website <00:23:56.504>to, <00:23:56.705>um, <00:23:56.905>add <00:23:57.105>persistent

471
00:24:00.185 --> 00:24:02.805
<00:24:00.185>or <00:24:00.534>persistent <00:24:00.885>data <00:24:01.235>in <00:24:01.585>Safari?

472
00:24:02.805 --> 00:24:04.565
<00:24:02.805>Currently, <00:24:03.271>it's <00:24:03.738>not <00:24:04.205>supported.

473
00:24:07.095 --> 00:24:10.995
<00:24:07.095>So, <00:24:07.250>and <00:24:07.406>the <00:24:07.561>last <00:24:07.717>feature <00:24:07.872>of <00:24:08.028>today <00:24:08.183>is <00:24:08.339>push <00:24:08.495>notifications.

474
00:24:12.175 --> 00:24:13.555
<00:24:12.175>Um, <00:24:12.485>I <00:24:12.796>think <00:24:13.106>every <00:24:13.417>one

475
00:24:13.555 --> 00:24:16.595
<00:24:13.555>of <00:24:13.710>us <00:24:13.866>uses <00:24:14.021>push <00:24:14.177>notifications <00:24:14.332>on <00:24:14.488>a, <00:24:14.643>uh, <00:24:14.799>daily <00:24:14.955>basis.

476
00:24:17.135 --> 00:24:20.275
<00:24:17.135>Why? <00:24:17.368>Because <00:24:17.601>it's <00:24:17.835>just <00:24:18.068>the, <00:24:18.301>um, <00:24:18.535>implementation

477
00:24:20.275 --> 00:24:24.635
<00:24:20.275>of <00:24:20.450>the <00:24:20.625>Hollywood <00:24:20.800>principle <00:24:20.975>on <00:24:21.150>our <00:24:21.325>device <00:24:21.500>in <00:24:21.675>Hollywood.

478
00:24:24.635 --> 00:24:27.795
<00:24:24.635>There <00:24:24.775>is <00:24:24.915>this <00:24:25.055>saying, <00:24:25.195>don't <00:24:25.335>call <00:24:25.475>us, <00:24:25.615>us, <00:24:25.754>we <00:24:25.895>call <00:24:26.035>you.

479
00:24:27.935 --> 00:24:31.715
<00:24:27.935>So, <00:24:28.051>um, <00:24:28.168>I <00:24:28.284>think <00:24:28.401>when <00:24:28.518>a <00:24:28.635>lot <00:24:28.751>of <00:24:28.868>people <00:24:28.985>moved <00:24:29.101>to <00:24:29.218>Hollywood <00:24:29.335>to,

480
00:24:31.895 --> 00:24:34.795
<00:24:31.895>um, <00:24:32.095>to <00:24:32.295>become <00:24:32.495>a <00:24:32.695>famous <00:24:32.895>actor, <00:24:33.095>the <00:24:33.295>whole,

481
00:24:34.815 --> 00:24:37.515
<00:24:34.815>the <00:24:34.942>agencies <00:24:35.069>had <00:24:35.196>a <00:24:35.324>lot <00:24:35.451>to <00:24:35.578>do <00:24:35.705>with <00:24:35.833>just <00:24:35.960>answering <00:24:36.087>calls, <00:24:36.215>um,

482
00:24:37.515 --> 00:24:39.475
<00:24:37.515>whether <00:24:37.748>someone <00:24:37.981>got <00:24:38.215>the <00:24:38.448>job <00:24:38.681>or <00:24:38.915>not.

483
00:24:40.095 --> 00:24:42.795
<00:24:40.095>So <00:24:40.250>they <00:24:40.406>said, <00:24:40.561>Hey, <00:24:40.717>don't <00:24:40.872>call <00:24:41.028>us. <00:24:41.183>We <00:24:41.339>call <00:24:41.495>you.

484
00:24:43.015 --> 00:24:44.195
<00:24:43.015>It <00:24:43.369>doesn't <00:24:43.723>make <00:24:44.077>sense.

485
00:24:44.585 --> 00:24:46.835
<00:24:44.585>It's, <00:24:44.785>if <00:24:44.985>you <00:24:45.185>talk <00:24:45.385>about <00:24:45.585>the <00:24:45.785>messaging <00:24:45.985>application,

486
00:24:46.975 --> 00:24:48.995
<00:24:46.975>it <00:24:47.149>doesn't <00:24:47.324>make <00:24:47.500>sense <00:24:47.675>to <00:24:47.850>open <00:24:48.024>up <00:24:48.199>the <00:24:48.375>application

487
00:24:49.175 --> 00:24:50.195
<00:24:49.175>of <00:24:49.481>every <00:24:49.787>five <00:24:50.092>minutes

488
00:24:50.495 --> 00:24:52.475
<00:24:50.495>to <00:24:50.669>check <00:24:50.844>whether <00:24:51.020>you've <00:24:51.195>got <00:24:51.370>something <00:24:51.544>new <00:24:51.719>or <00:24:51.895>not.

489
00:24:52.815 --> 00:24:55.955
<00:24:52.815>We <00:24:52.955>want <00:24:53.095>to <00:24:53.235>have, <00:24:53.375>we <00:24:53.515>want <00:24:53.655>to <00:24:53.795>be <00:24:53.935>informed <00:24:54.075>whether, <00:24:54.215>um,

490
00:24:56.095 --> 00:24:57.995
<00:24:56.095>or <00:24:56.328>as <00:24:56.561>soon <00:24:56.795>as <00:24:57.028>something <00:24:57.261>important <00:24:57.495>happens.

491
00:24:58.255 --> 00:25:01.155
<00:24:58.255>And <00:24:58.455>that's <00:24:58.655>just <00:24:58.855>why <00:24:59.055>we <00:24:59.255>use <00:24:59.455>push <00:24:59.655>notifications.

492
00:25:02.545 --> 00:25:03.875
<00:25:02.545>Also <00:25:02.944>for <00:25:03.343>a <00:25:03.742>developer

493
00:25:04.015 --> 00:25:07.515
<00:25:04.015>or, <00:25:04.215>um, <00:25:04.415>a <00:25:04.615>marketeer <00:25:04.815>perspective, <00:25:05.015>it <00:25:05.215>allows <00:25:05.415>us

494
00:25:07.515 --> 00:25:11.275
<00:25:07.515>to <00:25:07.715>very <00:25:07.915>precisely <00:25:08.115>target <00:25:08.315>users <00:25:08.515>to, <00:25:08.715>to <00:25:08.915>deliver

495
00:25:11.995 --> 00:25:14.315
<00:25:11.995>a <00:25:12.169>specific <00:25:12.344>content <00:25:12.520>to <00:25:12.695>a <00:25:12.870>specific <00:25:13.044>group <00:25:13.219>of <00:25:13.395>users,

496
00:25:14.885 --> 00:25:19.395
<00:25:14.885>which <00:25:15.025>in <00:25:15.165>the <00:25:15.305>end <00:25:15.445>will, <00:25:15.585>um, <00:25:15.725>create <00:25:15.865>a <00:25:16.004>better <00:25:16.145>conversion <00:25:16.285>rate.

497
00:25:19.735 --> 00:25:24.195
<00:25:19.735>And <00:25:19.851>we <00:25:19.968>are <00:25:20.084>able <00:25:20.201>to <00:25:20.318>add <00:25:20.435>real <00:25:20.551>value <00:25:20.668>so <00:25:20.784>we <00:25:20.901>can <00:25:21.018>inform, <00:25:21.135>um,

498
00:25:24.405 --> 00:25:27.515
<00:25:24.405>users <00:25:24.638>about <00:25:24.871>things <00:25:25.105>that <00:25:25.338>happen <00:25:25.571>that <00:25:25.805>actually,

499
00:25:28.255 --> 00:25:30.815
<00:25:28.255>um, <00:25:28.535>is <00:25:28.815>a <00:25:29.095>value <00:25:29.375>to <00:25:29.655>them.

500
00:25:32.445 --> 00:25:34.265
<00:25:32.445>Now, <00:25:32.725>let's <00:25:33.004>look <00:25:33.284>at <00:25:33.564>the <00:25:33.845>implementation.

501
00:25:35.135 --> 00:25:37.035
<00:25:35.135>That's <00:25:35.335>the <00:25:35.535>easiest <00:25:35.735>thing <00:25:35.935>we <00:25:36.135>want <00:25:36.335>to <00:25:36.535>achieve.

502
00:25:37.535 --> 00:25:39.235
<00:25:37.535>We <00:25:37.768>have <00:25:38.001>our <00:25:38.235>application <00:25:38.468>backend, <00:25:38.701>and <00:25:38.935>we,

503
00:25:39.295 --> 00:25:42.635
<00:25:39.295>and <00:25:39.422>we <00:25:39.549>just <00:25:39.676>want <00:25:39.804>to <00:25:39.931>send <00:25:40.058>an <00:25:40.185>a <00:25:40.313>notification <00:25:40.440>to <00:25:40.567>that <00:25:40.695>client.

504
00:25:43.615 --> 00:25:45.915
<00:25:43.615>The <00:25:43.848>problem <00:25:44.081>here <00:25:44.315>is, <00:25:44.548>as <00:25:44.781>you've <00:25:45.015>seen

505
00:25:45.915 --> 00:25:47.955
<00:25:45.915>before, <00:25:46.381>um, <00:25:46.848>as <00:25:47.315>long

506
00:25:47.955 --> 00:25:50.355
<00:25:47.955>as <00:25:48.095>the <00:25:48.235>user <00:25:48.375>is <00:25:48.514>not <00:25:48.655>using <00:25:48.794>our <00:25:48.935>site <00:25:49.074>at <00:25:49.215>the <00:25:49.355>moment,

507
00:25:50.355 --> 00:25:52.955
<00:25:50.355>there's <00:25:50.555>no <00:25:50.755>way <00:25:50.955>for <00:25:51.155>us <00:25:51.355>to <00:25:51.555>interact <00:25:51.755>with

508
00:25:52.955 --> 00:25:54.955
<00:25:52.955>that <00:25:53.304>user <00:25:53.655>as <00:25:54.004>a <00:25:54.355>backend.

509
00:25:56.015 --> 00:26:00.715
<00:25:56.015>So, <00:25:56.155>um, <00:25:56.295>we <00:25:56.435>need <00:25:56.575>to <00:25:56.715>have, <00:25:56.855>um, <00:25:56.995>a <00:25:57.135>service <00:25:57.275>in <00:25:57.415>between

510
00:26:01.755 --> 00:26:04.295
<00:26:01.755>the, <00:26:01.988>between <00:26:02.221>our <00:26:02.455>backend <00:26:02.688>and <00:26:02.921>the <00:26:03.155>client.

511
00:26:04.835 --> 00:26:06.255
<00:26:04.835>And <00:26:05.154>that's <00:26:05.474>the <00:26:05.793>push <00:26:06.113>service.

512
00:26:06.475 --> 00:26:09.255
<00:26:06.475>And <00:26:06.649>if <00:26:06.824>you <00:26:07.000>are <00:26:07.175>developing <00:26:07.350>mobile <00:26:07.524>application, <00:26:07.699>I'm <00:26:07.875>pretty,

513
00:26:09.915 --> 00:26:12.575
<00:26:09.915>uh, <00:26:10.090>sure <00:26:10.264>you <00:26:10.440>are <00:26:10.615>familiar <00:26:10.790>with <00:26:10.965>those <00:26:11.139>push <00:26:11.315>services.

514
00:26:13.475 --> 00:26:14.615
<00:26:13.475>Um, <00:26:13.988>each <00:26:14.501>device

515
00:26:14.755 --> 00:26:17.975
<00:26:14.755>or <00:26:14.910>also <00:26:15.066>each, <00:26:15.221>uh, <00:26:15.377>browser <00:26:15.532>has <00:26:15.688>its <00:26:15.843>own <00:26:15.999>push <00:26:16.155>service.

516
00:26:18.075 --> 00:26:21.655
<00:26:18.075>So <00:26:18.215>there's <00:26:18.355>a <00:26:18.495>fire <00:26:18.635>based <00:26:18.775>cloud <00:26:18.915>messaging <00:26:19.055>for, <00:26:19.195>um, <00:26:19.335>uh, <00:26:19.475>Android

517
00:26:21.835 --> 00:26:24.295
<00:26:21.835>and <00:26:22.010>for <00:26:22.185>Google <00:26:22.360>Chrome, <00:26:22.535>we <00:26:22.710>have <00:26:22.885>Mozilla <00:26:23.060>push <00:26:23.235>service

518
00:26:24.475 --> 00:26:27.215
<00:26:24.475>for <00:26:24.675>Firefox, <00:26:24.875>and <00:26:25.074>we <00:26:25.274>have <00:26:25.475>Windows <00:26:25.675>notification <00:26:25.875>service

519
00:26:27.315 --> 00:26:29.135
<00:26:27.315>for <00:26:28.015>Internet <00:26:28.715>Explorer.

520
00:26:29.755 --> 00:26:31.415
<00:26:29.755>And <00:26:30.035>there's <00:26:30.315>also <00:26:30.595>Apple <00:26:30.875>push, <00:26:31.155>uh,

521
00:26:31.425 --> 00:26:33.095
<00:26:31.425>apple <00:26:31.891>push <00:26:32.358>notification <00:26:32.825>service.

522
00:26:33.435 --> 00:26:35.655
<00:26:33.435>But, <00:26:33.635>um, <00:26:33.835>there <00:26:34.034>are <00:26:34.235>some <00:26:34.435>problems <00:26:34.635>with <00:26:34.835>it,

523
00:26:35.655 --> 00:26:37.535
<00:26:35.655>and <00:26:35.830>we <00:26:36.004>will <00:26:36.180>get <00:26:36.355>to <00:26:36.530>that <00:26:36.705>at <00:26:36.879>the <00:26:37.055>end.

524
00:26:38.485 --> 00:26:39.945
<00:26:38.485>But <00:26:38.704>we <00:26:38.923>can <00:26:39.141>use <00:26:39.360>this <00:26:39.580>push <00:26:39.799>service

525
00:26:40.165 --> 00:26:42.465
<00:26:40.165>to <00:26:40.398>send <00:26:40.631>push <00:26:40.865>notifications <00:26:41.098>to <00:26:41.331>the <00:26:41.565>client.

526
00:26:44.305 --> 00:26:48.515
<00:26:44.305>Now, <00:26:44.480>first <00:26:44.655>of <00:26:44.830>all, <00:26:45.005>how <00:26:45.180>do <00:26:45.355>we <00:26:45.530>know <00:26:45.705>where

527
00:26:48.535 --> 00:26:49.875
<00:26:48.535>to <00:26:48.836>send <00:26:49.138>the <00:26:49.439>push <00:26:49.741>notification?

528
00:26:50.015 --> 00:26:54.035
<00:26:50.015>If <00:26:50.131>we <00:26:50.248>want <00:26:50.365>to <00:26:50.481>reach <00:26:50.598>out <00:26:50.715>to, <00:26:50.831>let's <00:26:50.948>say, <00:26:51.065>user, <00:26:51.181>a <00:26:51.298>first <00:26:51.415>thing

529
00:26:54.735 --> 00:26:57.475
<00:26:54.735>and <00:26:54.935>second <00:26:55.135>thing, <00:26:55.334>how <00:26:55.534>does <00:26:55.735>the <00:26:55.935>push <00:26:56.135>service

530
00:26:57.855 --> 00:27:01.195
<00:26:57.855>or <00:26:58.010>how <00:26:58.166>can <00:26:58.321>we <00:26:58.477>authenticate, <00:26:58.632>um, <00:26:58.788>at <00:26:58.943>the <00:26:59.099>push <00:26:59.255>service?

531
00:27:01.535 --> 00:27:04.875
<00:27:01.535>So <00:27:01.690>the <00:27:01.846>push <00:27:02.001>service <00:27:02.157>knows <00:27:02.312>that <00:27:02.468>we <00:27:02.623>are <00:27:02.779>actually <00:27:02.935>allowed

532
00:27:04.975 --> 00:27:07.955
<00:27:04.975>to <00:27:05.149>send <00:27:05.324>the <00:27:05.500>push <00:27:05.675>notifications <00:27:05.850>to <00:27:06.024>that, <00:27:06.199>uh, <00:27:06.375>client.

533
00:27:08.975 --> 00:27:12.515
<00:27:08.975>That's <00:27:09.149>the <00:27:09.324>two <00:27:09.500>problems <00:27:09.675>we <00:27:09.850>can <00:27:10.024>solve <00:27:10.199>with <00:27:10.375>vapi.

534
00:27:13.625 --> 00:27:15.275
<00:27:13.625>Vapi <00:27:13.905>is <00:27:14.185>called, <00:27:14.465>or <00:27:14.745>is <00:27:15.025>short

535
00:27:15.275 --> 00:27:18.235
<00:27:15.275>for <00:27:15.625>voluntary <00:27:15.975>application <00:27:16.325>server <00:27:16.675>identification.

536
00:27:19.215 --> 00:27:23.635
<00:27:19.215>And <00:27:19.331>in <00:27:19.448>the <00:27:19.564>end, <00:27:19.681>it's <00:27:19.798>just <00:27:19.915>a <00:27:20.031>public <00:27:20.148>private <00:27:20.264>key <00:27:20.381>pair <00:27:20.498>we <00:27:20.615>have

537
00:27:23.895 --> 00:27:25.475
<00:27:23.895>on <00:27:24.361>our <00:27:24.828>application <00:27:25.295>backend.

538
00:27:26.095 --> 00:27:29.475
<00:27:26.095>So <00:27:26.235>we <00:27:26.375>have <00:27:26.515>our <00:27:26.655>public <00:27:26.795>key, <00:27:26.935>we <00:27:27.075>have <00:27:27.215>our <00:27:27.355>private <00:27:27.495>key,

539
00:27:29.855 --> 00:27:33.075
<00:27:29.855>and <00:27:30.010>we <00:27:30.166>can <00:27:30.321>send <00:27:30.477>the <00:27:30.632>public <00:27:30.788>key <00:27:30.943>down <00:27:31.099>to <00:27:31.255>the,

540
00:27:33.615 --> 00:27:34.915
<00:27:33.615>um, <00:27:34.005>to <00:27:34.395>the <00:27:34.784>client.

541
00:27:35.935 --> 00:27:39.715
<00:27:35.935>On <00:27:36.062>the <00:27:36.189>client. <00:27:36.316>We <00:27:36.444>will <00:27:36.571>then <00:27:36.698>call <00:27:36.825>the, <00:27:36.953>the, <00:27:37.080>the <00:27:37.207>push <00:27:37.335>manager,

542
00:27:40.635 --> 00:27:42.015
<00:27:40.635>the <00:27:40.945>from <00:27:41.256>the <00:27:41.566>Push <00:27:41.877>API,

543
00:27:42.435 --> 00:27:46.415
<00:27:42.435>and <00:27:42.635>with <00:27:42.835>that <00:27:43.034>push <00:27:43.235>manager, <00:27:43.435>we <00:27:43.635>can, <00:27:43.835>um,

544
00:27:46.835 --> 00:27:48.815
<00:27:46.835>create <00:27:47.185>a <00:27:47.535>so-called <00:27:47.885>push <00:27:48.235>subscription.

545
00:27:49.155 --> 00:27:51.015
<00:27:49.155>So <00:27:49.388>first <00:27:49.621>we'll <00:27:49.855>need <00:27:50.088>to <00:27:50.321>get <00:27:50.555>the,

546
00:27:51.195 --> 00:27:52.655
<00:27:51.195>the <00:27:51.633>service <00:27:52.071>worker <00:27:52.509>registration.

547
00:27:53.245 --> 00:27:54.375
<00:27:53.245>With <00:27:53.583>that <00:27:53.923>service <00:27:54.262>worker.

548
00:27:54.755 --> 00:27:59.415
<00:27:54.755>We <00:27:54.895>can <00:27:55.035>then <00:27:55.175>subscribe <00:27:55.315>to, <00:27:55.455>um, <00:27:55.595>or <00:27:55.735>create <00:27:55.875>a <00:27:56.015>new <00:27:56.155>subscription.

549
00:27:59.675 --> 00:28:02.055
<00:27:59.675>And <00:27:59.875>there <00:28:00.075>we <00:28:00.274>pass <00:28:00.475>the <00:28:00.675>application <00:28:00.875>server <00:28:01.075>key,

550
00:28:02.055 --> 00:28:04.695
<00:28:02.055>which <00:28:02.288>is <00:28:02.521>the <00:28:02.755>public, <00:28:02.988>um, <00:28:03.221>rapid <00:28:03.455>key.

551
00:28:05.395 --> 00:28:08.655
<00:28:05.395>And <00:28:05.535>if <00:28:05.675>we <00:28:05.815>have <00:28:05.955>that <00:28:06.095>sub <00:28:06.235>that <00:28:06.375>we <00:28:06.514>have <00:28:06.655>that <00:28:06.795>subscription,

552
00:28:08.955 --> 00:28:11.455
<00:28:08.955>we <00:28:09.188>can <00:28:09.421>send <00:28:09.655>that <00:28:09.888>subscription <00:28:10.121>that <00:28:10.355>consists

553
00:28:11.455 --> 00:28:13.255
<00:28:11.455>of <00:28:11.735>an <00:28:12.014>endpoint <00:28:12.294>and <00:28:12.574>some <00:28:12.855>keys.

554
00:28:13.435 --> 00:28:15.375
<00:28:13.435>We <00:28:13.635>can <00:28:13.835>send <00:28:14.034>that <00:28:14.235>to <00:28:14.435>the <00:28:14.635>application <00:28:14.835>backend,

555
00:28:15.395 --> 00:28:20.375
<00:28:15.395>and <00:28:15.522>we <00:28:15.649>can <00:28:15.776>save <00:28:15.904>that <00:28:16.031>inside <00:28:16.158>the <00:28:16.285>DB <00:28:16.413>for, <00:28:16.540>um, <00:28:16.667>that <00:28:16.795>user.

556
00:28:21.945 --> 00:28:26.045
<00:28:21.945>So <00:28:22.061>if <00:28:22.178>you <00:28:22.294>want <00:28:22.411>to <00:28:22.528>send <00:28:22.645>a <00:28:22.761>push, <00:28:22.878>we <00:28:22.995>can <00:28:23.111>send <00:28:23.228>the, <00:28:23.345>the,

557
00:28:26.065 --> 00:28:30.885
<00:28:26.065>the <00:28:26.205>encrypted <00:28:26.345>data, <00:28:26.485>um, <00:28:26.625>to <00:28:26.765>the <00:28:26.905>endpoint <00:28:27.045>we <00:28:27.185>have <00:28:27.325>from <00:28:27.465>the,

558
00:28:30.985 --> 00:28:34.525
<00:28:30.985>uh, <00:28:31.159>post <00:28:31.334>subscription, <00:28:31.510>and <00:28:31.685>we <00:28:31.860>have <00:28:32.034>the <00:28:32.209>private <00:28:32.385>key

559
00:28:34.665 --> 00:28:36.645
<00:28:34.665>to <00:28:34.945>authenticate <00:28:35.225>against <00:28:35.504>the <00:28:35.784>push <00:28:36.065>service.

560
00:28:36.985 --> 00:28:38.245
<00:28:36.985>So <00:28:37.268>with <00:28:37.552>the <00:28:37.835>private <00:28:38.119>key

561
00:28:38.905 --> 00:28:41.965
<00:28:38.905>and <00:28:39.045>uh, <00:28:39.185>with <00:28:39.325>the <00:28:39.465>private <00:28:39.605>key, <00:28:39.745>the <00:28:39.885>push <00:28:40.024>service <00:28:40.165>knows, <00:28:40.305>okay,

562
00:28:41.985 --> 00:28:45.085
<00:28:41.985>we <00:28:42.264>are <00:28:42.544>authenticated <00:28:42.824>with <00:28:43.104>the <00:28:43.385>subscription.

563
00:28:45.825 --> 00:28:49.725
<00:28:45.825>Um, <00:28:45.980>the <00:28:46.136>push <00:28:46.291>service <00:28:46.447>can <00:28:46.602>verify <00:28:46.758>that <00:28:46.913>we <00:28:47.069>are <00:28:47.225>allowed

564
00:28:49.725 --> 00:28:52.005
<00:28:49.725>to <00:28:49.925>send <00:28:50.125>them <00:28:50.324>a <00:28:50.524>push, <00:28:50.725>uh, <00:28:50.925>push <00:28:51.125>notification,

565
00:28:52.065 --> 00:28:55.805
<00:28:52.065>and <00:28:52.205>the <00:28:52.345>push <00:28:52.485>service <00:28:52.625>will <00:28:52.765>then <00:28:52.905>forward <00:28:53.045>it <00:28:53.185>to <00:28:53.325>the <00:28:53.465>device.

566
00:28:57.385 --> 00:29:00.685
<00:28:57.385>Um, <00:28:57.525>and <00:28:57.665>that's <00:28:57.805>through <00:28:57.945>the <00:28:58.085>a <00:28:58.225>TT <00:28:58.365>web <00:28:58.504>push, <00:28:58.645>uh, <00:28:58.785>protocol

567
00:29:01.895 --> 00:29:06.285
<00:29:01.895>thing <00:29:02.070>now <00:29:02.245>is <00:29:02.420>maybe <00:29:02.595>our <00:29:02.770>website <00:29:02.945>is, <00:29:03.120>um, <00:29:03.295>not,

568
00:29:06.465 --> 00:29:09.325
<00:29:06.465>or <00:29:06.605>is <00:29:06.745>we <00:29:06.885>are <00:29:07.024>not <00:29:07.165>using <00:29:07.304>the <00:29:07.445>website <00:29:07.584>at <00:29:07.725>the <00:29:07.865>moment,

569
00:29:09.325 --> 00:29:10.965
<00:29:09.325>which <00:29:09.605>would <00:29:09.885>be <00:29:10.165>the <00:29:10.445>normal <00:29:10.725>case,

570
00:29:11.505 --> 00:29:13.645
<00:29:11.505>and <00:29:11.705>that's <00:29:11.905>where <00:29:12.105>the <00:29:12.305>server <00:29:12.505>circuit <00:29:12.705>steps <00:29:12.905>in.

571
00:29:13.665 --> 00:29:15.325
<00:29:13.665>So <00:29:13.865>inside <00:29:14.065>a <00:29:14.264>server <00:29:14.465>circuit, <00:29:14.665>we <00:29:14.865>can <00:29:15.065>listen

572
00:29:15.345 --> 00:29:19.005
<00:29:15.345>for <00:29:15.485>the <00:29:15.625>push <00:29:15.765>event, <00:29:15.905>we <00:29:16.045>can <00:29:16.185>extract <00:29:16.325>the <00:29:16.465>data <00:29:16.605>from <00:29:16.745>the

573
00:29:19.005 --> 00:29:21.525
<00:29:19.005>payload, <00:29:19.180>and <00:29:19.355>we <00:29:19.530>can <00:29:19.705>then, <00:29:19.880>uh, <00:29:20.055>show <00:29:20.230>the <00:29:20.405>push

574
00:29:21.745 --> 00:29:24.925
<00:29:21.745>or <00:29:21.919>we <00:29:22.094>can <00:29:22.270>show <00:29:22.445>the <00:29:22.620>notification <00:29:22.794>on <00:29:22.969>the <00:29:23.145>client.

575
00:29:25.065 --> 00:29:28.245
<00:29:25.065>And <00:29:25.192>if <00:29:25.319>you <00:29:25.446>click <00:29:25.574>on <00:29:25.701>it, <00:29:25.828>maybe <00:29:25.955>we <00:29:26.083>can <00:29:26.210>just, <00:29:26.337>um, <00:29:26.465>uh,

576
00:29:28.435 --> 00:29:30.245
<00:29:28.435>open <00:29:28.784>up <00:29:29.135>our <00:29:29.485>web <00:29:29.835>application.

577
00:29:31.715 --> 00:29:33.975
<00:29:31.715>That's <00:29:31.948>the <00:29:32.181>whole <00:29:32.415>magic <00:29:32.648>behind <00:29:32.881>push <00:29:33.115>notifications.

578
00:29:33.975 --> 00:29:36.975
<00:29:33.975>There's <00:29:34.254>one <00:29:34.534>problem <00:29:34.814>if <00:29:35.094>you <00:29:35.375>want

579
00:29:36.975 --> 00:29:40.695
<00:29:36.975>to <00:29:37.149>create <00:29:37.324>a <00:29:37.500>push <00:29:37.675>subscription, <00:29:37.850>we <00:29:38.024>need <00:29:38.199>to, <00:29:38.375>um,

580
00:29:40.695 --> 00:29:42.365
<00:29:40.695>have <00:29:41.161>the <00:29:41.628>printed <00:29:42.095>permissions.

581
00:29:42.905 --> 00:29:46.325
<00:29:42.905>So <00:29:43.045>what <00:29:43.185>you <00:29:43.325>see <00:29:43.465>here <00:29:43.605>is <00:29:43.745>a <00:29:43.885>newspaper <00:29:44.024>from <00:29:44.165>Switzerland <00:29:44.305>Talk

582
00:29:46.325 --> 00:29:49.845
<00:29:46.325>Blood <00:29:46.452>ch <00:29:46.579>and <00:29:46.706>what <00:29:46.834>they <00:29:46.961>do <00:29:47.088>is <00:29:47.215>they <00:29:47.343>will <00:29:47.470>just <00:29:47.597>ask <00:29:47.725>upfront

583
00:29:50.545 --> 00:29:52.245
<00:29:50.545>if <00:29:50.825>they <00:29:51.105>can <00:29:51.385>send <00:29:51.665>push <00:29:51.945>notification,

584
00:29:52.305 --> 00:29:54.285
<00:29:52.305>and <00:29:52.480>that's <00:29:52.655>just <00:29:52.830>the <00:29:53.005>worst <00:29:53.180>thing <00:29:53.355>you <00:29:53.530>can <00:29:53.705>do

585
00:29:54.285 --> 00:29:58.565
<00:29:54.285>because <00:29:54.460>the <00:29:54.635>user <00:29:54.810>has <00:29:54.985>no <00:29:55.160>idea, <00:29:55.335>um, <00:29:55.510>about, <00:29:55.685>um,

586
00:29:59.665 --> 00:30:02.205
<00:29:59.665>has <00:29:59.820>now <00:29:59.976>a <00:30:00.131>bit <00:30:00.287>idea <00:30:00.442>about, <00:30:00.598>um, <00:30:00.753>the, <00:30:00.909>the <00:30:01.065>context.

587
00:30:02.415 --> 00:30:05.525
<00:30:02.415>Maybe <00:30:02.570>someone <00:30:02.726>just <00:30:02.881>visits <00:30:03.037>your <00:30:03.192>site <00:30:03.348>coming <00:30:03.503>from <00:30:03.659>the <00:30:03.815>social

588
00:30:05.535 --> 00:30:07.565
<00:30:05.535>media, <00:30:06.235>uh, <00:30:06.935>platform

589
00:30:08.065 --> 00:30:11.085
<00:30:08.065>and <00:30:08.205>it, <00:30:08.345>he <00:30:08.485>will <00:30:08.625>read, <00:30:08.765>he <00:30:08.905>wants <00:30:09.045>to <00:30:09.185>read <00:30:09.325>an <00:30:09.465>article,

590
00:30:11.385 --> 00:30:15.365
<00:30:11.385>but <00:30:11.540>the <00:30:11.696>first <00:30:11.851>thing <00:30:12.007>is <00:30:12.162>this <00:30:12.318>strange <00:30:12.473>popup <00:30:12.629>that <00:30:12.785>asks

591
00:30:15.385 --> 00:30:16.485
<00:30:15.385>for <00:30:15.879>any <00:30:16.375>permission.

592
00:30:16.505 --> 00:30:18.765
<00:30:16.505>And <00:30:16.738>of <00:30:16.971>course, <00:30:17.205>you <00:30:17.438>will <00:30:17.671>deny <00:30:17.905>that

593
00:30:19.735 --> 00:30:21.285
<00:30:19.735>there <00:30:20.200>are <00:30:20.665>solutions <00:30:21.130>already.

594
00:30:21.545 --> 00:30:24.365
<00:30:21.545>Um, <00:30:21.745>browser <00:30:21.945>vendors <00:30:22.145>are <00:30:22.345>working <00:30:22.545>on <00:30:22.745>a <00:30:22.945>quiet

595
00:30:24.435 --> 00:30:25.725
<00:30:24.435>push <00:30:25.015>notification <00:30:25.596>ui.

596
00:30:25.785 --> 00:30:29.085
<00:30:25.785>So <00:30:25.960>it's <00:30:26.135>not <00:30:26.310>that <00:30:26.485>prompt <00:30:26.660>that <00:30:26.835>needs, <00:30:27.010>um, <00:30:27.185>a,

597
00:30:30.025 --> 00:30:31.685
<00:30:30.025>um, <00:30:30.375>a <00:30:30.725>decision <00:30:31.075>right <00:30:31.425>now.

598
00:30:31.895 --> 00:30:34.685
<00:30:31.895>It'll <00:30:32.128>be <00:30:32.361>a <00:30:32.595>quiet <00:30:32.828>push, <00:30:33.061>uh, <00:30:33.295>uh,

599
00:30:34.685 --> 00:30:37.765
<00:30:34.685>or <00:30:34.860>a <00:30:35.034>little <00:30:35.210>bell <00:30:35.385>on <00:30:35.560>the, <00:30:35.735>uh, <00:30:35.909>URL <00:30:36.085>bar

600
00:30:38.825 --> 00:30:43.685
<00:30:38.825>or <00:30:38.965>there <00:30:39.105>are <00:30:39.245>also, <00:30:39.385>um, <00:30:39.525>and <00:30:39.665>that's <00:30:39.805>in <00:30:39.945>Firefox <00:30:40.085>from <00:30:40.225>72

601
00:30:43.985 --> 00:30:45.685
<00:30:43.985>and <00:30:44.264>in <00:30:44.544>Chrome <00:30:44.824>from <00:30:45.104>80 <00:30:45.385>on.

602
00:30:46.745 --> 00:30:49.005
<00:30:46.745>But <00:30:46.945>we <00:30:47.145>as <00:30:47.344>developer, <00:30:47.544>we <00:30:47.745>can <00:30:47.945>do <00:30:48.145>better.

603
00:30:49.385 --> 00:30:53.845
<00:30:49.385>So <00:30:49.525>whenever <00:30:49.665>we <00:30:49.805>ask <00:30:49.945>for <00:30:50.085>any <00:30:50.225>kind <00:30:50.365>of <00:30:50.504>permission, <00:30:50.645>we <00:30:50.785>need

604
00:30:53.845 --> 00:30:55.765
<00:30:53.845>to <00:30:54.125>think <00:30:54.405>about <00:30:54.685>the <00:30:54.965>user <00:30:55.245>experience.

605
00:30:57.105 --> 00:30:59.525
<00:30:57.105>We <00:30:57.385>can <00:30:57.665>ask <00:30:57.945>for <00:30:58.225>a <00:30:58.505>permission.

606
00:30:59.545 --> 00:31:00.845
<00:30:59.545>We <00:30:59.779>need <00:31:00.013>to <00:31:00.247>ask <00:31:00.481>for <00:31:00.715>permissions

607
00:31:00.845 --> 00:31:03.765
<00:31:00.845>because <00:31:01.000>that's <00:31:01.156>the <00:31:01.311>way, <00:31:01.467>the <00:31:01.622>way <00:31:01.778>the, <00:31:01.933>the <00:31:02.089>browser <00:31:02.245>knows

608
00:31:03.765 --> 00:31:08.205
<00:31:03.765>that <00:31:03.905>the <00:31:04.045>user <00:31:04.185>is <00:31:04.325>actually, <00:31:04.465>um, <00:31:04.605>that <00:31:04.745>the <00:31:04.885>user <00:31:05.025>actually <00:31:05.165>wants

609
00:31:08.205 --> 00:31:09.325
<00:31:08.205>to <00:31:08.541>receive <00:31:08.877>post <00:31:09.213>notifications.

610
00:31:09.625 --> 00:31:12.245
<00:31:09.625>But <00:31:09.825>we <00:31:10.025>need <00:31:10.225>to <00:31:10.425>create <00:31:10.625>a <00:31:10.825>seamless <00:31:11.025>UX

611
00:31:12.375 --> 00:31:16.125
<00:31:12.375>where <00:31:12.502>we <00:31:12.629>can <00:31:12.756>prepare <00:31:12.884>the <00:31:13.011>user <00:31:13.138>and <00:31:13.265>we <00:31:13.393>can <00:31:13.520>tell <00:31:13.647>him <00:31:13.775>why

612
00:31:16.305 --> 00:31:18.845
<00:31:16.305>and <00:31:16.505>how, <00:31:16.705>and <00:31:16.905>this <00:31:17.105>all <00:31:17.305>the <00:31:17.505>things <00:31:17.705>worked

613
00:31:18.985 --> 00:31:21.445
<00:31:18.985>before <00:31:19.218>we <00:31:19.451>ask <00:31:19.685>the <00:31:19.918>for <00:31:20.151>the <00:31:20.385>permission.

614
00:31:23.785 --> 00:31:26.725
<00:31:23.785>So, <00:31:23.985>um, <00:31:24.185>that's <00:31:24.385>it <00:31:24.585>from <00:31:24.785>the <00:31:24.985>technical <00:31:25.185>side.

615
00:31:27.185 --> 00:31:29.245
<00:31:27.185>Now, <00:31:27.385>um, <00:31:27.585>I <00:31:27.784>have <00:31:27.985>one <00:31:28.185>example <00:31:28.385>with <00:31:28.585>me.

616
00:31:29.945 --> 00:31:34.445
<00:31:29.945>Uh, <00:31:30.072>what <00:31:30.199>you <00:31:30.326>see <00:31:30.454>here <00:31:30.581>is <00:31:30.708>the <00:31:30.835>refugee <00:31:30.963>camp, <00:31:31.090>uh, <00:31:31.217>Moria <00:31:31.345>in,

617
00:31:34.505 --> 00:31:35.525
<00:31:34.505>uh, <00:31:35.423>Lesbos.

618
00:31:35.945 --> 00:31:39.565
<00:31:35.945>And <00:31:36.145>it <00:31:36.345>was <00:31:36.544>built <00:31:36.745>in <00:31:36.945>2015 <00:31:37.145>for, <00:31:37.345>um,

619
00:31:39.945 --> 00:31:42.125
<00:31:39.945>around <00:31:40.294>th <00:31:40.645>uh, <00:31:40.995>3000 <00:31:41.345>refugees.

620
00:31:42.465 --> 00:31:44.365
<00:31:42.465>It <00:31:42.745>was <00:31:43.024>planned <00:31:43.304>for <00:31:43.584>3000 <00:31:43.865>refugees.

621
00:31:44.835 --> 00:31:47.485
<00:31:44.835>Currently, <00:31:45.068>there <00:31:45.301>are <00:31:45.535>more <00:31:45.768>than <00:31:46.001>12,000 <00:31:46.235>refugees,

622
00:31:47.485 --> 00:31:51.525
<00:31:47.485>and <00:31:47.640>the <00:31:47.796>highest <00:31:47.951>number <00:31:48.107>was <00:31:48.262>I <00:31:48.418>think <00:31:48.573>around <00:31:48.729>20,000 <00:31:48.885>refugees.

623
00:31:52.825 --> 00:31:55.805
<00:31:52.825>Um, <00:31:52.952>a <00:31:53.079>good <00:31:53.206>friend <00:31:53.334>of <00:31:53.461>mine, <00:31:53.588>Tim <00:31:53.715>Hawk, <00:31:53.843>was <00:31:53.970>there <00:31:54.097>to <00:31:54.225>help

624
00:31:56.025 --> 00:31:58.405
<00:31:56.025>as <00:31:56.225>a <00:31:56.425>volunteer, <00:31:56.625>and <00:31:56.825>he's <00:31:57.025>a <00:31:57.225>UX <00:31:57.425>designer,

625
00:31:58.545 --> 00:32:01.645
<00:31:58.545>and <00:31:58.745>he <00:31:58.945>quickly <00:31:59.145>experienced, <00:31:59.345>um, <00:31:59.545>one <00:31:59.745>big <00:31:59.945>problem.

626
00:32:01.785 --> 00:32:03.125
<00:32:01.785>And <00:32:02.187>that's <00:32:02.589>the <00:32:02.991>communication.

627
00:32:03.305 --> 00:32:06.565
<00:32:03.305>If <00:32:03.432>you <00:32:03.559>have <00:32:03.686>a <00:32:03.814>camp <00:32:03.941>that <00:32:04.068>was <00:32:04.195>built <00:32:04.323>for, <00:32:04.450>uh, <00:32:04.577>3000 <00:32:04.705>refugees

628
00:32:07.105 --> 00:32:10.805
<00:32:07.105>and <00:32:07.245>now <00:32:07.385>you <00:32:07.525>have <00:32:07.665>12,000 <00:32:07.805>there, <00:32:07.945>it's <00:32:08.085>just <00:32:08.225>really, <00:32:08.365>really <00:32:08.505>hard

629
00:32:10.985 --> 00:32:12.245
<00:32:10.985>to <00:32:11.362>communicate <00:32:11.741>with <00:32:12.119>them.

630
00:32:14.035 --> 00:32:15.335
<00:32:14.035>Why <00:32:14.327>do <00:32:14.620>they <00:32:14.912>need <00:32:15.205>communication?

631
00:32:15.525 --> 00:32:18.735
<00:32:15.525>They <00:32:15.680>have, <00:32:15.836>um, <00:32:15.991>everything <00:32:16.147>they <00:32:16.302>do <00:32:16.458>in <00:32:16.613>the <00:32:16.769>camp <00:32:16.925>is

632
00:32:18.875 --> 00:32:20.255
<00:32:18.875>around <00:32:19.289>a <00:32:19.703>ticketing <00:32:20.117>system.

633
00:32:20.915 --> 00:32:22.935
<00:32:20.915>So <00:32:21.195>if <00:32:21.475>anyone <00:32:21.754>needs <00:32:22.034>a <00:32:22.315>special

634
00:32:22.995 --> 00:32:25.695
<00:32:22.995>or <00:32:23.150>has <00:32:23.306>special <00:32:23.461>needs, <00:32:23.617>he <00:32:23.772>will <00:32:23.928>request <00:32:24.083>a <00:32:24.239>ticket <00:32:24.395>for

635
00:32:26.225 --> 00:32:28.735
<00:32:26.225>maybe <00:32:26.458>see <00:32:26.691>the <00:32:26.925>doctor <00:32:27.158>or <00:32:27.391>maybe, <00:32:27.625>um,

636
00:32:28.845 --> 00:32:30.255
<00:32:28.845>have <00:32:29.268>new <00:32:29.691>diapers, <00:32:30.114>whatever.

637
00:32:30.995 --> 00:32:33.815
<00:32:30.995>And <00:32:31.195>it <00:32:31.395>takes <00:32:31.594>time <00:32:31.794>to <00:32:31.995>process <00:32:32.195>that <00:32:32.395>request.

638
00:32:34.115 --> 00:32:37.775
<00:32:34.115>So <00:32:34.231>mostly <00:32:34.348>you <00:32:34.465>have <00:32:34.581>a <00:32:34.698>lot <00:32:34.815>of <00:32:34.931>people <00:32:35.048>waiting <00:32:35.165>in <00:32:35.281>the, <00:32:35.398>for <00:32:35.515>court

639
00:32:37.915 --> 00:32:40.925
<00:32:37.915>of <00:32:38.148>the, <00:32:38.381>um, <00:32:38.615>of <00:32:38.848>the, <00:32:39.081>uh, <00:32:39.315>of,

640
00:32:40.985 --> 00:32:43.645
<00:32:40.985>of <00:32:41.159>this <00:32:41.334>main <00:32:41.510>building <00:32:41.685>just <00:32:41.860>waiting <00:32:42.034>for <00:32:42.209>their <00:32:42.385>ticket.

641
00:32:44.225 --> 00:32:46.285
<00:32:44.225>So <00:32:44.365>it <00:32:44.504>would <00:32:44.645>be <00:32:44.784>nice <00:32:44.925>if <00:32:45.064>they <00:32:45.205>had <00:32:45.344>a, <00:32:45.485>the <00:32:45.625>way

642
00:32:46.385 --> 00:32:49.685
<00:32:46.385>to <00:32:46.585>inform <00:32:46.785>someone <00:32:46.985>if <00:32:47.185>the, <00:32:47.385>um, <00:32:47.585>if <00:32:47.785>the,

643
00:32:50.105 --> 00:32:51.365
<00:32:50.105>if, <00:32:50.388>if <00:32:50.672>the <00:32:50.955>ticket's <00:32:51.239>ready.

644
00:32:52.275 --> 00:32:53.965
<00:32:52.275>Also, <00:32:52.625>of <00:32:52.975>course, <00:32:53.325>it's <00:32:53.675>COVID-19.

645
00:32:53.995 --> 00:32:57.405
<00:32:53.995>It's <00:32:54.150>very <00:32:54.306>important <00:32:54.461>if <00:32:54.617>that <00:32:54.772>you <00:32:54.928>have <00:32:55.083>a, <00:32:55.239>a <00:32:55.395>way

646
00:32:57.505 --> 00:33:01.285
<00:32:57.505>to <00:32:57.705>inform <00:32:57.905>everyone <00:32:58.105>about <00:32:58.305>new <00:32:58.505>measures, <00:32:58.705>about <00:32:58.905>things

647
00:33:01.285 --> 00:33:02.285
<00:33:01.285>that <00:33:01.510>happen <00:33:01.735>in <00:33:01.960>the <00:33:02.185>camp.

648
00:33:03.165 --> 00:33:06.825
<00:33:03.165>And <00:33:03.340>so <00:33:03.514>we <00:33:03.690>had <00:33:03.865>this <00:33:04.040>need <00:33:04.215>to <00:33:04.389>create <00:33:04.565>something,

649
00:33:07.565 --> 00:33:09.105
<00:33:07.565>and <00:33:08.258>we <00:33:08.951>did.

650
00:33:09.925 --> 00:33:12.625
<00:33:09.925>So <00:33:10.125>what <00:33:10.325>we <00:33:10.524>created <00:33:10.725>for, <00:33:10.925>um, <00:33:11.125>Euro <00:33:11.325>Relief,

651
00:33:12.835 --> 00:33:15.825
<00:33:12.835>which <00:33:13.068>is <00:33:13.301>the <00:33:13.535>organization <00:33:13.768>behind, <00:33:14.001>uh, <00:33:14.235>Maria,

652
00:33:16.725 --> 00:33:20.465
<00:33:16.725>is <00:33:16.880>you <00:33:17.036>created <00:33:17.191>a <00:33:17.347>backend <00:33:17.502>in, <00:33:17.658>uh, <00:33:17.813>no <00:33:17.969>Jazz, <00:33:18.125>TypeScript

653
00:33:20.485 --> 00:33:23.625
<00:33:20.485>and <00:33:20.685>MongoDB <00:33:20.885>that <00:33:21.084>will <00:33:21.284>just, <00:33:21.485>that's <00:33:21.685>just <00:33:21.885>responsible

654
00:33:23.625 --> 00:33:24.705
<00:33:23.625>for <00:33:24.110>the <00:33:24.597>authentication.

655
00:33:25.085 --> 00:33:29.065
<00:33:25.085>So, <00:33:25.260>um, <00:33:25.435>uh, <00:33:25.610>a <00:33:25.785>ref <00:33:25.960>refugee <00:33:26.135>can <00:33:26.310>authenticate <00:33:26.485>there.

656
00:33:29.805 --> 00:33:31.505
<00:33:29.805>And <00:33:30.085>we <00:33:30.365>created <00:33:30.645>a <00:33:30.925>front <00:33:31.205>end.

657
00:33:32.005 --> 00:33:35.825
<00:33:32.005>Um, <00:33:32.160>I <00:33:32.316>created <00:33:32.471>it <00:33:32.627>in, <00:33:32.782>uh, <00:33:32.938>it <00:33:33.093>with <00:33:33.249>types, <00:33:33.405>TypeScript,

658
00:33:36.285 --> 00:33:40.385
<00:33:36.285>pre <00:33:36.425>js, <00:33:36.565>uh, <00:33:36.705>and <00:33:36.845>post <00:33:36.985>GSS <00:33:37.125>in <00:33:37.265>the <00:33:37.405>end, <00:33:37.545>both <00:33:37.685>back

659
00:33:40.385 --> 00:33:41.985
<00:33:40.385>and <00:33:40.665>front <00:33:40.945>end <00:33:41.225>are <00:33:41.504>open <00:33:41.785>source.

660
00:33:42.285 --> 00:33:44.865
<00:33:42.285>So, <00:33:42.425>um, <00:33:42.565>and <00:33:42.705>also <00:33:42.845>my <00:33:42.985>slides, <00:33:43.125>I <00:33:43.265>will <00:33:43.405>share <00:33:43.545>them <00:33:43.685>later,

661
00:33:44.925 --> 00:33:46.025
<00:33:44.925>so <00:33:45.172>you'll <00:33:45.420>have <00:33:45.667>the <00:33:45.915>links.

662
00:33:46.325 --> 00:33:48.465
<00:33:46.325>Um, <00:33:46.525>everything <00:33:46.725>we've <00:33:46.925>done <00:33:47.125>there <00:33:47.325>is <00:33:47.525>open <00:33:47.725>source

663
00:33:48.525 --> 00:33:51.825
<00:33:48.525>and <00:33:48.652>can <00:33:48.779>be, <00:33:48.906>um, <00:33:49.034>can <00:33:49.161>work <00:33:49.288>with <00:33:49.415>it <00:33:49.543>if <00:33:49.670>you <00:33:49.797>want <00:33:49.925>to

664
00:33:51.845 --> 00:33:53.145
<00:33:51.845>or <00:33:52.040>can <00:33:52.235>have <00:33:52.430>a <00:33:52.625>look <00:33:52.820>at <00:33:53.014>it.

665
00:33:53.925 --> 00:33:57.905
<00:33:53.925>And <00:33:54.125>the <00:33:54.325>whole <00:33:54.524>thing, <00:33:54.725>we, <00:33:54.925>why <00:33:55.125>we <00:33:55.325>wanted

666
00:33:57.925 --> 00:34:01.705
<00:33:57.925>to <00:33:58.065>create <00:33:58.205>a <00:33:58.345>pre <00:33:58.485>progressive <00:33:58.625>web <00:33:58.764>app <00:33:58.905>is <00:33:59.044>that <00:33:59.185>with <00:33:59.325>this,

667
00:34:01.805 --> 00:34:03.785
<00:34:01.805>we <00:34:02.155>had <00:34:02.505>an <00:34:02.855>integrated <00:34:03.205>experience

668
00:34:04.535 --> 00:34:06.145
<00:34:04.535>with <00:34:04.815>a <00:34:05.095>very <00:34:05.375>low <00:34:05.655>entry <00:34:05.935>barrier.

669
00:34:06.765 --> 00:34:09.905
<00:34:06.765>So, <00:34:06.892>um, <00:34:07.019>it's <00:34:07.146>always <00:34:07.274>a <00:34:07.401>little <00:34:07.528>bit <00:34:07.655>of <00:34:07.783>a <00:34:07.910>problem <00:34:08.037>be, <00:34:08.165>um,

670
00:34:09.905 --> 00:34:13.665
<00:34:09.905>of <00:34:10.080>the <00:34:10.255>trust <00:34:10.430>between <00:34:10.605>refugees <00:34:10.780>and <00:34:10.955>the, <00:34:11.130>the <00:34:11.305>organization.

671
00:34:14.445 --> 00:34:15.865
<00:34:14.445>So <00:34:14.871>they <00:34:15.297>don't <00:34:15.723>have

672
00:34:15.865 --> 00:34:17.545
<00:34:15.864>to <00:34:16.064>install <00:34:16.264>anything, <00:34:16.464>they <00:34:16.665>can <00:34:16.864>just <00:34:17.064>use <00:34:17.264>it.

673
00:34:17.545 --> 00:34:18.665
<00:34:17.545>They <00:34:17.688>can <00:34:17.833>add <00:34:17.976>it <00:34:18.121>to <00:34:18.264>the <00:34:18.409>home <00:34:18.553>screen,

674
00:34:18.665 --> 00:34:20.625
<00:34:18.665>but <00:34:18.804>they <00:34:18.945>don't <00:34:19.085>have <00:34:19.225>to <00:34:19.364>add <00:34:19.505>it <00:34:19.645>to <00:34:19.784>the <00:34:19.925>home <00:34:20.065>screen.

675
00:34:21.285 --> 00:34:24.225
<00:34:21.284>It <00:34:21.518>works <00:34:21.751>offline. <00:34:21.984>Um, <00:34:22.218>it's <00:34:22.451>extremely <00:34:22.685>small.

676
00:34:24.405 --> 00:34:26.705
<00:34:24.405>Um, <00:34:24.605>I <00:34:24.805>think <00:34:25.005>the <00:34:25.205>whole <00:34:25.405>bundle <00:34:25.605>is, <00:34:25.805>uh,

677
00:34:27.045 --> 00:34:29.425
<00:34:27.045>around <00:34:27.325>a <00:34:27.605>hundred <00:34:27.885>kilobytes, <00:34:28.165>broadly <00:34:28.445>compressed.

678
00:34:29.765 --> 00:34:32.705
<00:34:29.764>And <00:34:29.998>even <00:34:30.231>then, <00:34:30.464>that's <00:34:30.698>only <00:34:30.931>downloaded <00:34:31.165>once.

679
00:34:33.125 --> 00:34:36.785
<00:34:33.125>And <00:34:33.280>then <00:34:33.436>it's <00:34:33.591>persistent <00:34:33.747>stored <00:34:33.902>inside <00:34:34.058>the, <00:34:34.213>um, <00:34:34.369>the <00:34:34.525>storage

680
00:34:37.205 --> 00:34:39.305
<00:34:37.205>and <00:34:37.438>all <00:34:37.671>the <00:34:37.904>datas <00:34:38.138>inside <00:34:38.371>Index <00:34:38.605>db,

681
00:34:41.405 --> 00:34:42.705
<00:34:41.405>we <00:34:41.795>have <00:34:42.185>push <00:34:42.574>notifications.

682
00:34:43.525 --> 00:34:45.225
<00:34:43.525>Um, <00:34:43.991>so <00:34:44.458>the, <00:34:44.925>the,

683
00:34:45.645 --> 00:34:48.385
<00:34:45.645>the <00:34:45.925>organization <00:34:46.205>can <00:34:46.485>send <00:34:46.764>push <00:34:47.045>notifications

684
00:34:48.605 --> 00:34:50.625
<00:34:48.605>to <00:34:48.804>one <00:34:49.005>user <00:34:49.205>or <00:34:49.405>to <00:34:49.605>all <00:34:49.804>the <00:34:50.005>users.

685
00:34:50.885 --> 00:34:53.665
<00:34:50.885>And <00:34:51.085>we <00:34:51.285>also <00:34:51.485>have <00:34:51.685>a, <00:34:51.885>um, <00:34:52.085>SMS <00:34:52.285>fallback.

686
00:34:53.685 --> 00:34:56.705
<00:34:53.685>So <00:34:53.840>if <00:34:53.996>the <00:34:54.151>push <00:34:54.307>doesn't <00:34:54.462>work, <00:34:54.618>it's <00:34:54.773>still, <00:34:54.929>um, <00:34:55.085>possible

687
00:34:56.705 --> 00:34:58.505
<00:34:56.705>to <00:34:56.938>send <00:34:57.171>an <00:34:57.404>SMS <00:34:57.638>as <00:34:57.871>a <00:34:58.105>fallback.

688
00:35:00.165 --> 00:35:03.705
<00:35:00.165>And <00:35:00.305>the <00:35:00.445>best <00:35:00.585>thing, <00:35:00.725>um, <00:35:00.865>we <00:35:01.005>have <00:35:01.145>very <00:35:01.285>fast <00:35:01.425>release <00:35:01.565>cycles

689
00:35:03.705 --> 00:35:05.705
<00:35:03.705>because <00:35:03.904>we <00:35:04.105>are <00:35:04.305>not <00:35:04.505>bound <00:35:04.705>to <00:35:04.904>the <00:35:05.105>store.

690
00:35:05.765 --> 00:35:09.905
<00:35:05.765>We <00:35:05.904>can, <00:35:06.045>um, <00:35:06.185>we, <00:35:06.325>we <00:35:06.464>can <00:35:06.605>ship <00:35:06.745>new <00:35:06.884>features <00:35:07.025>within <00:35:07.165>hours.

691
00:35:10.705 --> 00:35:14.865
<00:35:10.705>I <00:35:10.880>think <00:35:11.055>the <00:35:11.230>first, <00:35:11.404>um, <00:35:11.580>the, <00:35:11.755>the <00:35:11.930>first <00:35:12.105>prototype

692
00:35:14.865 --> 00:35:17.945
<00:35:14.865>of <00:35:15.040>the <00:35:15.214>application, <00:35:15.390>um, <00:35:15.564>I've <00:35:15.740>built <00:35:15.915>that, <00:35:16.089>um, <00:35:16.265>in

693
00:35:17.945 --> 00:35:19.265
<00:35:17.945>around <00:35:18.539>one <00:35:19.133>weekend.

694
00:35:19.925 --> 00:35:23.265
<00:35:19.925>And <00:35:20.065>it <00:35:20.205>took <00:35:20.345>us <00:35:20.485>four <00:35:20.625>weeks <00:35:20.765>to <00:35:20.905>have <00:35:21.045>the <00:35:21.185>first <00:35:21.325>beta.

695
00:35:23.285 --> 00:35:26.625
<00:35:23.285>And <00:35:23.440>everything <00:35:23.596>we <00:35:23.751>did <00:35:23.907>was <00:35:24.062>just, <00:35:24.218>we <00:35:24.373>could <00:35:24.529>ship <00:35:24.685>everything

696
00:35:26.765 --> 00:35:30.065
<00:35:26.765>to <00:35:26.940>the <00:35:27.115>organization <00:35:27.290>just <00:35:27.464>to <00:35:27.640>show <00:35:27.815>where <00:35:27.990>we <00:35:28.165>are

697
00:35:30.125 --> 00:35:31.345
<00:35:30.125>and <00:35:30.344>to <00:35:30.564>get <00:35:30.783>feedback <00:35:31.003>from <00:35:31.223>them.

698
00:35:31.405 --> 00:35:32.625
<00:35:31.405>And <00:35:31.771>that's <00:35:32.137>pretty <00:35:32.503>cool.

699
00:35:32.725 --> 00:35:35.025
<00:35:32.725>And <00:35:32.900>you <00:35:33.075>couldn't <00:35:33.250>achieve <00:35:33.424>that <00:35:33.600>with <00:35:33.775>a <00:35:33.950>native <00:35:34.125>application.

700
00:35:36.685 --> 00:35:38.885
<00:35:36.685>Um, <00:35:36.965>one <00:35:37.245>little <00:35:37.525>thing <00:35:37.805>right <00:35:38.085>now,

701
00:35:38.885 --> 00:35:40.245
<00:35:38.885>maybe <00:35:39.089>you <00:35:39.293>heard <00:35:39.497>it <00:35:39.701>in <00:35:39.904>the <00:35:40.109>news.

702
00:35:40.465 --> 00:35:44.605
<00:35:40.465>Uh, <00:35:40.620>the <00:35:40.776>eighth <00:35:40.931>of <00:35:41.087>eighth <00:35:41.242>of <00:35:41.398>Septe <00:35:41.553>September, <00:35:41.709>no, <00:35:41.865>sorry,

703
00:35:45.155 --> 00:35:49.105
<00:35:45.155>yeah, <00:35:45.310>the, <00:35:45.466>uh, <00:35:45.621>September, <00:35:45.777>there <00:35:45.932>was <00:35:46.088>the <00:35:46.243>first <00:35:46.399>confirmed <00:35:46.555>case

704
00:35:49.105 --> 00:35:52.145
<00:35:49.105>of <00:35:49.305>COVID-19 <00:35:49.505>in <00:35:49.705>the <00:35:49.905>camp, <00:35:50.105>just <00:35:50.305>the <00:35:50.505>day

705
00:35:52.145 --> 00:35:56.505
<00:35:52.145>before <00:35:52.320>we <00:35:52.495>launched <00:35:52.670>the <00:35:52.845>application <00:35:53.020>in, <00:35:53.195>uh, <00:35:53.370>uh, <00:35:53.545>mode.

706
00:35:57.765 --> 00:36:02.225
<00:35:57.765>Um, <00:35:57.920>they <00:35:58.076>had <00:35:58.231>a <00:35:58.387>quarantine <00:35:58.542>for <00:35:58.698>part <00:35:58.853>of <00:35:59.009>the <00:35:59.165>camp,

707
00:36:02.515 --> 00:36:05.865
<00:36:02.515>which <00:36:02.714>then <00:36:02.915>led <00:36:03.115>to <00:36:03.315>lot <00:36:03.515>of, <00:36:03.714>um, <00:36:03.915>mis

708
00:36:06.365 --> 00:36:08.355
<00:36:06.365>or <00:36:06.831>lot <00:36:07.298>of <00:36:07.765>problems.

709
00:36:08.815 --> 00:36:11.035
<00:36:08.815>And <00:36:08.990>in <00:36:09.165>the <00:36:09.340>end, <00:36:09.515>the <00:36:09.690>whole <00:36:09.865>camp <00:36:10.040>burned <00:36:10.215>down.

710
00:36:11.655 --> 00:36:14.995
<00:36:11.655>Um, <00:36:11.830>which <00:36:12.005>is <00:36:12.180>a, <00:36:12.355>yeah, <00:36:12.530>very, <00:36:12.705>very <00:36:12.880>sad <00:36:13.055>story.

711
00:36:15.655 --> 00:36:18.915
<00:36:15.655>And <00:36:15.795>right <00:36:15.935>now, <00:36:16.075>the <00:36:16.215>problem <00:36:16.355>is <00:36:16.495>there <00:36:16.635>is <00:36:16.775>a <00:36:16.915>temporary <00:36:17.055>refugee

712
00:36:19.105 --> 00:36:20.955
<00:36:19.105>camp, <00:36:19.385>but <00:36:19.665>the <00:36:19.945>conditions <00:36:20.225>there <00:36:20.505>are,

713
00:36:21.585 --> 00:36:23.115
<00:36:21.585>they're <00:36:22.044>terrible <00:36:22.502>right <00:36:22.962>now.

714
00:36:23.215 --> 00:36:27.555
<00:36:23.215>So <00:36:23.342>if <00:36:23.469>you <00:36:23.596>want <00:36:23.724>to <00:36:23.851>help, <00:36:23.978>there <00:36:24.105>is, <00:36:24.233>um, <00:36:24.360>a <00:36:24.487>GoFund <00:36:24.615>campaign

715
00:36:27.605 --> 00:36:32.075
<00:36:27.605>where <00:36:27.745>you <00:36:27.885>can, <00:36:28.025>um, <00:36:28.165>help <00:36:28.305>to <00:36:28.445>rebuild <00:36:28.585>the <00:36:28.725>camp <00:36:28.865>and <00:36:29.005>everything.

716
00:36:32.815 --> 00:36:36.195
<00:36:32.815>And <00:36:32.970>of <00:36:33.126>course <00:36:33.281>our <00:36:33.437>application <00:36:33.592>is <00:36:33.748>now, <00:36:33.903>um, <00:36:34.059>on <00:36:34.215>hold

717
00:36:36.755 --> 00:36:38.075
<00:36:36.755>'cause <00:36:37.151>they're <00:36:37.547>just, <00:36:37.942>uh,

718
00:36:38.075 --> 00:36:40.035
<00:36:38.075>they <00:36:38.308>don't <00:36:38.541>even <00:36:38.774>have <00:36:39.008>electricity <00:36:39.241>right <00:36:39.475>now.

719
00:36:40.065 --> 00:36:41.355
<00:36:40.065>It's <00:36:40.452>really, <00:36:40.839>it's <00:36:41.226>just

720
00:36:42.235 --> 00:36:43.875
<00:36:42.235>terrible <00:36:42.515>the <00:36:42.795>conditions <00:36:43.075>there <00:36:43.355>right <00:36:43.635>now.

721
00:36:44.375 --> 00:36:48.115
<00:36:44.375>But <00:36:44.491>I <00:36:44.608>think, <00:36:44.725>I <00:36:44.841>mean, <00:36:44.958>what <00:36:45.075>you <00:36:45.191>have <00:36:45.308>seen <00:36:45.425>with <00:36:45.541>this <00:36:45.658>whole, <00:36:45.775>um,

722
00:36:48.625 --> 00:36:52.355
<00:36:48.625>with <00:36:48.858>this <00:36:49.091>whole, <00:36:49.325>um, <00:36:49.558>riots <00:36:49.791>is <00:36:50.025>that

723
00:36:53.075 --> 00:36:57.055
<00:36:53.075>having <00:36:53.214>a <00:36:53.355>way <00:36:53.495>to <00:36:53.634>interact <00:36:53.774>with <00:36:53.915>the, <00:36:54.055>the, <00:36:54.194>with <00:36:54.335>the <00:36:54.475>people

724
00:36:57.755 --> 00:37:00.575
<00:36:57.755>is <00:36:57.955>a <00:36:58.155>critical <00:36:58.355>part <00:36:58.555>of <00:36:58.755>the <00:36:58.955>whole <00:36:59.155>organization.

725
00:37:01.115 --> 00:37:03.535
<00:37:01.115>And <00:37:01.270>I'm <00:37:01.426>not <00:37:01.581>saying <00:37:01.737>that <00:37:01.892>our <00:37:02.048>application <00:37:02.203>could <00:37:02.359>have, <00:37:02.515>uh,

726
00:37:03.535 --> 00:37:06.335
<00:37:03.535>prevented <00:37:03.662>that, <00:37:03.789>but <00:37:03.916>it <00:37:04.044>just <00:37:04.171>would <00:37:04.298>have <00:37:04.425>been <00:37:04.553>nice <00:37:04.680>if <00:37:04.807>they <00:37:04.935>had

727
00:37:06.375 --> 00:37:08.895
<00:37:06.375>a <00:37:06.608>way <00:37:06.841>to, <00:37:07.075>to <00:37:07.308>inform <00:37:07.541>them <00:37:07.775>properly.

728
00:37:11.205 --> 00:37:14.585
<00:37:11.205>So, <00:37:11.312>um, <00:37:11.420>now <00:37:11.528>for <00:37:11.635>the <00:37:11.743>end, <00:37:11.851>I <00:37:11.958>know <00:37:12.066>we <00:37:12.174>are <00:37:12.281>running <00:37:12.389>out <00:37:12.497>of <00:37:12.605>time

729
00:37:15.305 --> 00:37:18.425
<00:37:15.305>a <00:37:15.504>little <00:37:15.705>bit <00:37:15.904>about <00:37:16.105>the, <00:37:16.305>um, <00:37:16.504>browser <00:37:16.705>support

730
00:37:19.295 --> 00:37:22.385
<00:37:19.295>install <00:37:19.575>ability <00:37:19.855>is <00:37:20.135>quite, <00:37:20.415>uh, <00:37:20.695>supported

731
00:37:22.385 --> 00:37:23.705
<00:37:22.385>by <00:37:22.781>all <00:37:23.177>major <00:37:23.573>browsers.

732
00:37:23.885 --> 00:37:27.385
<00:37:23.885>Um, <00:37:24.060>even <00:37:24.235>Safari <00:37:24.410>has, <00:37:24.585>uh, <00:37:24.760>some <00:37:24.935>kind, <00:37:25.110>it's <00:37:25.285>not,

733
00:37:28.665 --> 00:37:31.395
<00:37:28.665>it's, <00:37:28.840>you <00:37:29.015>can <00:37:29.190>add <00:37:29.365>it <00:37:29.540>to <00:37:29.715>the <00:37:29.890>home <00:37:30.065>screen

734
00:37:31.415 --> 00:37:33.755
<00:37:31.415>and <00:37:31.590>it'll <00:37:31.765>also <00:37:31.940>respect <00:37:32.115>the <00:37:32.290>display <00:37:32.465>mode <00:37:32.640>and <00:37:32.815>everything,

735
00:37:33.855 --> 00:37:36.115
<00:37:33.855>but <00:37:34.030>it <00:37:34.205>just <00:37:34.380>does <00:37:34.555>not <00:37:34.730>work <00:37:34.905>the <00:37:35.080>same <00:37:35.255>way

736
00:37:36.255 --> 00:37:39.185
<00:37:36.255>as <00:37:36.535>on <00:37:36.815>Android <00:37:37.095>and <00:37:37.375>the <00:37:37.655>Firefox.

737
00:37:39.185 --> 00:37:43.465
<00:37:39.185>It's <00:37:39.340>behind <00:37:39.496>the <00:37:39.651>flag. <00:37:39.807>The <00:37:39.962>service <00:37:40.118>worker <00:37:40.273>is, <00:37:40.429>uh, <00:37:40.585>supported

738
00:37:43.465 --> 00:37:46.185
<00:37:43.465>by <00:37:43.698>all <00:37:43.931>major <00:37:44.165>platforms <00:37:44.398>including, <00:37:44.631>uh, <00:37:44.865>safari

739
00:37:46.805 --> 00:37:48.305
<00:37:46.805>and <00:37:47.254>now <00:37:47.705>push <00:37:48.154>notification.

740
00:37:48.365 --> 00:37:50.065
<00:37:48.365>And <00:37:48.598>that's <00:37:48.831>the <00:37:49.064>biggest <00:37:49.298>problem <00:37:49.531>right <00:37:49.765>now.

741
00:37:50.455 --> 00:37:54.305
<00:37:50.455>Push <00:37:50.630>notifications <00:37:50.805>are <00:37:50.980>only <00:37:51.154>supported, <00:37:51.330>uh, <00:37:51.505>by <00:37:51.680>Edge, <00:37:51.855>um,

742
00:37:54.815 --> 00:37:56.185
<00:37:54.815>Firefox <00:37:55.431>and <00:37:56.048>Chrome.

743
00:37:57.425 --> 00:38:00.065
<00:37:57.425>Safari <00:37:57.658>currently <00:37:57.891>does <00:37:58.125>not <00:37:58.358>support <00:37:58.591>push <00:37:58.825>notification

744
00:38:00.125 --> 00:38:04.305
<00:38:00.125>or <00:38:00.265>web <00:38:00.405>push <00:38:00.545>notification <00:38:00.685>to <00:38:00.825>be, <00:38:00.965>um, <00:38:01.105>to <00:38:01.245>be <00:38:01.385>more <00:38:01.525>specific.

745
00:38:05.005 --> 00:38:08.705
<00:38:05.005>And <00:38:05.145>the <00:38:05.285>problem <00:38:05.425>here <00:38:05.565>is <00:38:05.705>there <00:38:05.845>is <00:38:05.985>generally <00:38:06.125>a <00:38:06.265>very <00:38:06.405>difficult

746
00:38:09.145 --> 00:38:12.625
<00:38:09.145>relationship <00:38:09.345>between, <00:38:09.545>um, <00:38:09.745>apple <00:38:09.945>and <00:38:10.145>progressive <00:38:10.345>web <00:38:10.545>apps.

747
00:38:13.605 --> 00:38:16.665
<00:38:13.605>Um, <00:38:13.760>they <00:38:13.916>make <00:38:14.071>very <00:38:14.227>small <00:38:14.382>steps <00:38:14.538>towards <00:38:14.693>progressive <00:38:14.849>web <00:38:15.005>apps.

748
00:38:16.845 --> 00:38:20.665
<00:38:16.845>So <00:38:16.984>also <00:38:17.125>for <00:38:17.265>the <00:38:17.404>service <00:38:17.544>worker, <00:38:17.685>API, <00:38:17.825>it <00:38:17.964>took <00:38:18.105>them <00:38:18.245>years

749
00:38:20.805 --> 00:38:22.265
<00:38:20.805>to <00:38:21.133>decide <00:38:21.462>whether <00:38:21.790>they <00:38:22.118>want

750
00:38:22.265 --> 00:38:23.505
<00:38:22.265>to <00:38:22.488>support <00:38:22.711>service <00:38:22.934>workers <00:38:23.157>or <00:38:23.381>not.

751
00:38:23.615 --> 00:38:27.505
<00:38:23.615>They <00:38:23.742>did, <00:38:23.869>and <00:38:23.996>uh, <00:38:24.124>back <00:38:24.251>then <00:38:24.378>it <00:38:24.505>took <00:38:24.633>them <00:38:24.760>only <00:38:24.887>several <00:38:25.015>weeks

752
00:38:27.515 --> 00:38:31.305
<00:38:27.515>after <00:38:27.690>they <00:38:27.865>decided <00:38:28.040>to <00:38:28.214>actually <00:38:28.390>ship <00:38:28.565>service <00:38:28.740>circuit <00:38:28.915>support.

753
00:38:32.035 --> 00:38:35.145
<00:38:32.035>Right <00:38:32.210>now <00:38:32.384>there <00:38:32.560>are <00:38:32.734>no <00:38:32.910>signals <00:38:33.085>whether <00:38:33.259>they, <00:38:33.435>whether

754
00:38:35.345 --> 00:38:38.005
<00:38:35.345>or <00:38:35.578>when <00:38:35.811>they <00:38:36.044>will <00:38:36.278>support <00:38:36.511>push <00:38:36.745>notifications.

755
00:38:39.055 --> 00:38:41.115
<00:38:39.055>And <00:38:39.254>the <00:38:39.455>biggest <00:38:39.654>problem <00:38:39.855>of <00:38:40.055>all <00:38:40.254>is <00:38:40.455>that

756
00:38:42.055 --> 00:38:46.555
<00:38:42.055>iOS <00:38:42.230>has <00:38:42.404>this <00:38:42.580>super <00:38:42.754>annoying, <00:38:42.930>um, <00:38:43.105>web <00:38:43.279>kit <00:38:43.455>constraint.

757
00:38:46.735 --> 00:38:50.715
<00:38:46.735>So <00:38:46.862>all <00:38:46.989>the <00:38:47.116>browsers <00:38:47.244>you <00:38:47.371>have <00:38:47.498>on <00:38:47.625>your, <00:38:47.753>uh, <00:38:47.880>iOS <00:38:48.007>are <00:38:48.135>powered

758
00:38:50.715 --> 00:38:52.995
<00:38:50.715>by <00:38:51.181>their <00:38:51.648>own <00:38:52.115>engine.

759
00:38:53.175 --> 00:38:56.555
<00:38:53.175>So <00:38:53.375>the <00:38:53.575>Google <00:38:53.775>can't <00:38:53.975>just <00:38:54.175>ship <00:38:54.375>a <00:38:54.575>fully

760
00:38:56.995 --> 00:38:58.035
<00:38:56.995>featured <00:38:57.307>version <00:38:57.618>of <00:38:57.931>Chrome.

761
00:38:58.185 --> 00:39:02.635
<00:38:58.185>It's <00:38:58.312>still <00:38:58.439>a <00:38:58.566>web <00:38:58.694>kit <00:38:58.821>version <00:38:58.948>of <00:38:59.075>Chrome <00:38:59.203>with <00:38:59.330>all <00:38:59.457>the, <00:38:59.585>um,

762
00:39:03.215 --> 00:39:07.815
<00:39:03.215>um, <00:39:03.415>with <00:39:03.615>all <00:39:03.815>the <00:39:04.015>lack <00:39:04.215>they, <00:39:04.415>they <00:39:04.615>implemented.

763
00:39:08.795 --> 00:39:13.695
<00:39:08.795>Um, <00:39:08.922>there <00:39:09.049>are <00:39:09.176>some <00:39:09.304>petitions, <00:39:09.431>uh, <00:39:09.558>if <00:39:09.685>you <00:39:09.813>want <00:39:09.940>to <00:39:10.067>sign <00:39:10.195>them,

764
00:39:13.975 --> 00:39:16.175
<00:39:13.975>I <00:39:14.130>have <00:39:14.286>the <00:39:14.441>links <00:39:14.597>here <00:39:14.752>if <00:39:14.908>you <00:39:15.063>want <00:39:15.219>to, <00:39:15.375>um,

765
00:39:16.565 --> 00:39:19.655
<00:39:16.565>address <00:39:16.798>other <00:39:17.031>bugs <00:39:17.265>you <00:39:17.498>have <00:39:17.731>with <00:39:17.965>WebKit.

766
00:39:20.205 --> 00:39:23.215
<00:39:20.205>It's <00:39:20.345>great <00:39:20.485>if, <00:39:20.625>um, <00:39:20.765>if <00:39:20.904>you <00:39:21.045>can <00:39:21.185>add <00:39:21.325>your <00:39:21.465>use <00:39:21.605>case.

767
00:39:23.635 --> 00:39:28.135
<00:39:23.635>So <00:39:23.762>I <00:39:23.889>really <00:39:24.016>hope <00:39:24.144>that <00:39:24.271>Apple <00:39:24.398>will <00:39:24.525>one <00:39:24.653>time <00:39:24.780>realize <00:39:24.907>how, <00:39:25.035>um,

768
00:39:29.075 --> 00:39:31.735
<00:39:29.075>or <00:39:29.355>how <00:39:29.634>how <00:39:29.915>bad <00:39:30.194>they, <00:39:30.475>um,

769
00:39:32.485 --> 00:39:34.455
<00:39:32.485>hold <00:39:32.765>back <00:39:33.045>the <00:39:33.325>whole <00:39:33.605>web <00:39:33.885>ecosystem.

770
00:39:34.915 --> 00:39:36.975
<00:39:34.915>But <00:39:35.090>yeah, <00:39:35.265>in <00:39:35.440>the <00:39:35.615>end, <00:39:35.790>it's <00:39:35.965>just <00:39:36.140>a <00:39:36.315>part

771
00:39:36.975 --> 00:39:39.855
<00:39:36.975>of <00:39:37.208>their <00:39:37.441>whole <00:39:37.674>mentality <00:39:37.908>that <00:39:38.141>they <00:39:38.375>want

772
00:39:39.855 --> 00:39:43.175
<00:39:39.855>to <00:39:39.995>support <00:39:40.135>their <00:39:40.275>own <00:39:40.415>app <00:39:40.555>ecosystem <00:39:40.695>instead <00:39:40.835>of <00:39:40.975>the <00:39:41.115>open <00:39:41.255>web.

773
00:39:44.445 --> 00:39:48.535
<00:39:44.445>Yeah. <00:39:44.620>With <00:39:44.795>this, <00:39:44.970>um, <00:39:45.145>I <00:39:45.320>will <00:39:45.495>end <00:39:45.670>my <00:39:45.845>talk.

774
00:39:48.985 --> 00:39:50.895
<00:39:48.985>Thank <00:39:49.218>you <00:39:49.451>very <00:39:49.685>much <00:39:49.918>for <00:39:50.151>your <00:39:50.385>attention.

775
00:39:51.995 --> 00:39:54.735
<00:39:51.995>If <00:39:52.150>there <00:39:52.306>are <00:39:52.461>any <00:39:52.617>question, <00:39:52.772>I'm <00:39:52.928>happy <00:39:53.083>to <00:39:53.239>answer <00:39:53.395>them.

776
00:39:54.815 --> 00:39:56.575
<00:39:54.815>I <00:39:55.015>know <00:39:55.215>we're <00:39:55.415>a <00:39:55.615>little <00:39:55.815>bit <00:39:56.015>over <00:39:56.215>time.