WEBVTT

1
00:00:00.385 --> 00:00:03.885
<00:00:00.385>Now <00:00:00.540>we <00:00:00.696>have <00:00:00.851>our <00:00:01.007>next <00:00:01.162>speakers, <00:00:01.318>Melissa <00:00:01.473>and <00:00:01.629>NA <00:00:01.785>Mania.

2
00:00:04.295 --> 00:00:08.765
<00:00:04.295>Their <00:00:04.470>topic <00:00:04.645>is <00:00:04.820>optimizing <00:00:04.995>your <00:00:05.170>app <00:00:05.345>for <00:00:05.520>success, <00:00:05.695>tips

3
00:00:08.945 --> 00:00:11.845
<00:00:08.945>and <00:00:09.225>techniques <00:00:09.505>for <00:00:09.785>managing <00:00:10.065>slow <00:00:10.345>devices.

4
00:00:12.545 --> 00:00:15.325
<00:00:12.545>If <00:00:12.672>you <00:00:12.799>have <00:00:12.926>any <00:00:13.054>questions, <00:00:13.181>you <00:00:13.308>can <00:00:13.435>type <00:00:13.563>it <00:00:13.690>in <00:00:13.817>the <00:00:13.945>app.

5
00:00:15.745 --> 00:00:19.925
<00:00:15.745>If <00:00:15.885>we <00:00:16.024>manage <00:00:16.165>to <00:00:16.305>answer <00:00:16.445>it <00:00:16.585>in <00:00:16.724>the, <00:00:16.865>in <00:00:17.005>the <00:00:17.145>presentation,

6
00:00:19.985 --> 00:00:21.765
<00:00:19.985>we <00:00:20.185>will <00:00:20.384>answer, <00:00:20.585>if <00:00:20.785>not <00:00:20.985>at <00:00:21.185>the <00:00:21.384>end.

7
00:00:22.055 --> 00:00:23.055
Enjoy.

8
00:00:41.995 --> 00:00:43.095
<00:00:41.995>So, <00:00:42.489>hello <00:00:42.985>everyone.

9
00:00:43.475 --> 00:00:45.615
<00:00:43.475>We <00:00:43.630>are <00:00:43.786>really <00:00:43.941>thrilled <00:00:44.097>to <00:00:44.252>be <00:00:44.408>here <00:00:44.563>on <00:00:44.719>the <00:00:44.875>VR

10
00:00:45.625 --> 00:00:46.935
<00:00:45.625>developers <00:00:46.804>stage.

11
00:00:47.515 --> 00:00:49.895
<00:00:47.515>And <00:00:47.748>before <00:00:47.981>we <00:00:48.215>start <00:00:48.448>with <00:00:48.681>our <00:00:48.915>presentation,

12
00:00:50.145 --> 00:00:51.975
<00:00:50.145>let's <00:00:50.495>just <00:00:50.845>quickly <00:00:51.195>introduce <00:00:51.545>ourselves.

13
00:00:52.475 --> 00:00:54.695
<00:00:52.475>My <00:00:52.708>name <00:00:52.941>is <00:00:53.175>Milita, <00:00:53.408>I'm <00:00:53.641>software <00:00:53.875>engineer

14
00:00:54.755 --> 00:00:57.215
<00:00:54.755>and <00:00:55.035>people <00:00:55.315>manager <00:00:55.595>in <00:00:55.875>Buds <00:00:56.155>Soft.

15
00:00:57.695 --> 00:00:59.095
<00:00:57.695>I <00:00:58.010>am <00:00:58.325>also <00:00:58.640>public <00:00:58.955>speaker.

16
00:00:59.375 --> 00:01:02.495
<00:00:59.375>I <00:00:59.530>love <00:00:59.686>to <00:00:59.841>speak <00:00:59.997>at <00:01:00.152>the <00:01:00.308>conferences <00:01:00.463>mostly <00:01:00.619>about <00:01:00.775>React

17
00:01:02.675 --> 00:01:03.695
<00:01:02.675>and <00:01:03.134>React <00:01:03.593>Native.

18
00:01:04.715 --> 00:01:08.375
<00:01:04.715>And <00:01:04.870>over <00:01:05.026>the <00:01:05.181>past <00:01:05.337>years <00:01:05.492>I <00:01:05.648>develop <00:01:05.803>amazing <00:01:05.959>app, <00:01:06.115>uh,

19
00:01:08.555 --> 00:01:10.535
<00:01:08.555>in <00:01:08.788>our <00:01:09.021>company <00:01:09.255>with <00:01:09.488>an <00:01:09.721>amazing <00:01:09.955>team.

20
00:01:10.795 --> 00:01:14.695
<00:01:10.795>And <00:01:10.922>one <00:01:11.049>of <00:01:11.176>my <00:01:11.304>team <00:01:11.431>members <00:01:11.558>is <00:01:11.685>also <00:01:11.813>my <00:01:11.940>cos <00:01:12.067>speaker. <00:01:12.195>Na.

21
00:01:16.395 --> 00:01:18.775
<00:01:16.395>So <00:01:16.675>hi <00:01:16.955>everyone. <00:01:17.235>Uh, <00:01:17.515>I'm <00:01:17.795>Neman.

22
00:01:19.095 --> 00:01:21.175
<00:01:19.095>I <00:01:19.295>am <00:01:19.495>tech <00:01:19.695>lead <00:01:19.895>at, <00:01:20.095>uh, <00:01:20.295>buds <00:01:20.495>Soft.

23
00:01:21.715 --> 00:01:23.455
<00:01:21.715>I'm <00:01:22.065>mostly <00:01:22.415>focused <00:01:22.765>on <00:01:23.115>backend

24
00:01:24.035 --> 00:01:27.095
<00:01:24.035>and <00:01:24.190>I'm <00:01:24.346>involved <00:01:24.501>in <00:01:24.657>a <00:01:24.812>local <00:01:24.968>niche <00:01:25.123>community <00:01:25.279>as <00:01:25.435>one

25
00:01:27.095 --> 00:01:29.695
<00:01:27.095>of <00:01:27.295>the <00:01:27.495>co-founders <00:01:27.695>of <00:01:27.895>Niche <00:01:28.095>Java <00:01:28.295>User <00:01:28.495>group.

26
00:01:30.035 --> 00:01:33.375
<00:01:30.035>We <00:01:30.315>organize <00:01:30.595>meetups <00:01:30.875>like <00:01:31.155>small <00:01:31.435>conferences

27
00:01:33.475 --> 00:01:34.895
<00:01:33.475>and <00:01:33.794>something <00:01:34.114>like, <00:01:34.433>like <00:01:34.753>that.

28
00:01:38.035 --> 00:01:41.255
<00:01:38.035>So <00:01:38.162>little <00:01:38.289>bit <00:01:38.416>of <00:01:38.544>our <00:01:38.671>company, <00:01:38.798>our <00:01:38.925>company <00:01:39.053>is <00:01:39.180>bad <00:01:39.307>and <00:01:39.435>soft.

29
00:01:41.605 --> 00:01:42.975
<00:01:41.604>It's <00:01:42.015>based <00:01:42.426>in <00:01:42.838>Serbia.

30
00:01:43.075 --> 00:01:46.335
<00:01:43.075>In <00:01:43.230>City <00:01:43.386>Niche, <00:01:43.541>we <00:01:43.697>currently <00:01:43.852>have <00:01:44.008>about <00:01:44.163>one <00:01:44.319>70 <00:01:44.475>people

31
00:01:46.835 --> 00:01:48.615
<00:01:46.835>and <00:01:47.185>more <00:01:47.535>and <00:01:47.885>more <00:01:48.235>growing.

32
00:01:49.075 --> 00:01:51.415
<00:01:49.075>We <00:01:49.275>also <00:01:49.475>work <00:01:49.675>with <00:01:49.875>our <00:01:50.075>clients <00:01:50.275>like, <00:01:50.475>uh,

33
00:01:52.115 --> 00:01:53.775
<00:01:52.115>United <00:01:52.815>Group, <00:01:53.515>BlackRock.

34
00:01:54.195 --> 00:01:58.375
<00:01:54.195>But <00:01:54.350>besides <00:01:54.506>of <00:01:54.661>that, <00:01:54.817>we <00:01:54.972>also <00:01:55.128>develop <00:01:55.283>our <00:01:55.439>own <00:01:55.595>projects

35
00:01:58.995 --> 00:02:01.655
<00:01:58.995>and, <00:01:59.195>uh, <00:01:59.395>work <00:01:59.595>our <00:01:59.795>teams <00:01:59.995>on <00:02:00.195>our <00:02:00.395>projects.

36
00:02:01.715 --> 00:02:04.015
<00:02:01.715>So <00:02:01.890>if <00:02:02.065>you <00:02:02.240>want <00:02:02.415>to <00:02:02.590>know <00:02:02.765>more <00:02:02.940>about <00:02:03.115>that,

37
00:02:04.195 --> 00:02:06.935
<00:02:04.195>you <00:02:04.395>can <00:02:04.595>check <00:02:04.794>the <00:02:04.994>Balance <00:02:05.195>of <00:02:05.395>Company <00:02:05.595>or

38
00:02:07.025 --> 00:02:09.735
<00:02:07.025>after <00:02:07.258>this <00:02:07.491>talk <00:02:07.725>you <00:02:07.958>can <00:02:08.191>ask <00:02:08.425>questions.

39
00:02:11.445 --> 00:02:15.735
<00:02:11.445>Okay? <00:02:11.584>So <00:02:11.725>raise <00:02:11.864>your <00:02:12.005>hand <00:02:12.144>if <00:02:12.285>you <00:02:12.424>ever <00:02:12.565>use <00:02:12.704>the <00:02:12.845>app

40
00:02:15.765 --> 00:02:16.895
<00:02:15.765>that <00:02:16.273>frustrates <00:02:16.782>you.

41
00:02:19.085 --> 00:02:22.135
<00:02:19.085>Okay, <00:02:19.551>so <00:02:20.018>imagine <00:02:20.485>this,

42
00:02:22.635 --> 00:02:26.655
<00:02:22.635>you've <00:02:22.810>developed <00:02:22.984>a <00:02:23.160>great <00:02:23.334>breaking <00:02:23.510>app <00:02:23.685>that <00:02:23.859>works <00:02:24.035>with

43
00:02:27.205 --> 00:02:29.215
<00:02:27.204>devices <00:02:27.671>like <00:02:28.138>home <00:02:28.605>gateways

44
00:02:29.835 --> 00:02:31.855
<00:02:29.835>and, <00:02:30.185>uh, <00:02:30.535>it <00:02:30.885>enables <00:02:31.235>you

45
00:02:31.935 --> 00:02:34.975
<00:02:31.935>to <00:02:32.110>manage <00:02:32.285>your <00:02:32.460>home <00:02:32.635>devices <00:02:32.810>like <00:02:32.985>your <00:02:33.160>smart <00:02:33.335>homes

46
00:02:35.195 --> 00:02:38.095
<00:02:35.195>and <00:02:35.475>like <00:02:35.755>just <00:02:36.035>manage <00:02:36.315>power <00:02:36.595>internet.

47
00:02:38.155 --> 00:02:39.975
<00:02:38.155>And <00:02:38.388>also, <00:02:38.621>but <00:02:38.855>there <00:02:39.088>is <00:02:39.321>a <00:02:39.555>challenge.

48
00:02:40.485 --> 00:02:42.735
<00:02:40.485>Your <00:02:40.765>app <00:02:41.045>works <00:02:41.325>with <00:02:41.605>home <00:02:41.885>gateways

49
00:02:42.735 --> 00:02:45.175
<00:02:42.735>and <00:02:42.910>home <00:02:43.085>gateways <00:02:43.260>can <00:02:43.435>be <00:02:43.610>a <00:02:43.785>really <00:02:43.960>slow <00:02:44.135>devices.

50
00:02:46.365 --> 00:02:50.305
<00:02:46.365>So <00:02:46.505>raise <00:02:46.645>your <00:02:46.785>hand <00:02:46.925>if <00:02:47.065>you <00:02:47.205>are <00:02:47.345>ever <00:02:47.485>deleted <00:02:47.625>an <00:02:47.765>app

51
00:02:50.305 --> 00:02:52.105
<00:02:50.305>because <00:02:50.655>of <00:02:51.005>the <00:02:51.355>poor <00:02:51.705>performance.

52
00:02:53.655 --> 00:02:55.705
<00:02:53.655>Yeah, <00:02:54.121>that <00:02:54.588>is <00:02:55.055>it

53
00:02:55.705 --> 00:02:58.665
<00:02:55.704>because <00:02:55.984>why <00:02:56.265>is <00:02:56.545>optimizing <00:02:56.825>your <00:02:57.105>app?

54
00:02:58.665 --> 00:03:02.485
<00:02:58.665>Crucial. <00:02:58.840>Imagine <00:02:59.015>users <00:02:59.190>trying, <00:02:59.364>trying <00:02:59.540>to <00:02:59.715>use <00:02:59.890>your <00:03:00.065>app

55
00:03:02.705 --> 00:03:06.605
<00:03:02.705>and <00:03:02.845>then <00:03:02.985>your <00:03:03.125>app <00:03:03.265>is <00:03:03.405>had <00:03:03.545>a <00:03:03.685>really <00:03:03.825>bad <00:03:03.965>user <00:03:04.105>experience

56
00:03:06.665 --> 00:03:08.045
<00:03:06.665>and <00:03:07.078>really <00:03:07.493>bad <00:03:07.906>performance,

57
00:03:08.545 --> 00:03:11.285
<00:03:08.545>and <00:03:08.825>that <00:03:09.105>frustration <00:03:09.385>can <00:03:09.665>often <00:03:09.945>lead

58
00:03:11.345 --> 00:03:13.725
<00:03:11.345>to <00:03:11.578>your <00:03:11.811>users <00:03:12.045>just <00:03:12.278>deleting <00:03:12.511>your <00:03:12.745>app.

59
00:03:15.545 --> 00:03:18.685
<00:03:15.545>So <00:03:15.720>why <00:03:15.894>is <00:03:16.070>it <00:03:16.244>important <00:03:16.420>to <00:03:16.595>optimize <00:03:16.769>your <00:03:16.945>app?

60
00:03:19.225 --> 00:03:23.205
<00:03:19.225>You <00:03:19.364>always <00:03:19.505>want <00:03:19.644>to <00:03:19.785>give <00:03:19.924>the <00:03:20.065>users <00:03:20.204>a <00:03:20.345>great <00:03:20.484>user <00:03:20.625>experience

61
00:03:23.625 --> 00:03:27.565
<00:03:23.625>and <00:03:23.765>it's <00:03:23.905>today's <00:03:24.045>market <00:03:24.185>that, <00:03:24.325>uh, <00:03:24.465>there's <00:03:24.605>a <00:03:24.745>lot <00:03:24.885>of <00:03:25.025>apps

62
00:03:28.155 --> 00:03:30.205
<00:03:28.155>that <00:03:28.388>user <00:03:28.621>just <00:03:28.855>can <00:03:29.088>delete <00:03:29.321>your <00:03:29.555>app

63
00:03:30.505 --> 00:03:32.725
<00:03:30.505>and <00:03:30.738>switch <00:03:30.971>it <00:03:31.204>with <00:03:31.438>someone <00:03:31.671>else <00:03:31.905>app

64
00:03:33.145 --> 00:03:36.205
<00:03:33.145>and <00:03:33.300>you <00:03:33.456>just <00:03:33.611>want <00:03:33.767>to <00:03:33.922>give <00:03:34.078>them <00:03:34.233>a <00:03:34.389>really <00:03:34.545>best

65
00:03:36.225 --> 00:03:37.405
<00:03:36.225>and <00:03:36.756>smooth <00:03:37.287>experience.

66
00:03:37.945 --> 00:03:42.085
<00:03:37.945>And <00:03:38.100>to <00:03:38.256>achieve <00:03:38.411>that, <00:03:38.567>you <00:03:38.722>have <00:03:38.878>to <00:03:39.033>be <00:03:39.189>in <00:03:39.345>mind

67
00:03:42.385 --> 00:03:44.445
<00:03:42.385>to <00:03:42.851>optimization <00:03:43.318>and <00:03:43.785>performance.

68
00:03:44.825 --> 00:03:47.125
<00:03:44.825>So <00:03:44.980>in <00:03:45.136>this <00:03:45.291>session, <00:03:45.447>we <00:03:45.602>will <00:03:45.758>go <00:03:45.913>through <00:03:46.069>the <00:03:46.225>tips

69
00:03:47.125 --> 00:03:50.085
<00:03:47.125>and <00:03:47.300>techniques <00:03:47.475>for <00:03:47.650>optimizing <00:03:47.825>your <00:03:48.000>app <00:03:48.175>for <00:03:48.350>LOV <00:03:48.525>device.

70
00:03:51.765 --> 00:03:52.825
<00:03:51.765>So, <00:03:52.083>hi <00:03:52.400>everyone <00:03:52.719>again.

71
00:03:53.165 --> 00:03:56.305
<00:03:53.165>Uh, <00:03:53.398>Milissa <00:03:53.631>mentioned <00:03:53.864>some <00:03:54.098>terminology <00:03:54.331>that <00:03:54.565>some

72
00:03:56.305 --> 00:03:59.705
<00:03:56.305>of <00:03:56.445>you <00:03:56.585>may <00:03:56.725>not <00:03:56.865>be <00:03:57.005>familiar <00:03:57.145>with, <00:03:57.285>so <00:03:57.425>like <00:03:57.565>Home <00:03:57.705>Gateway.

73
00:04:00.205 --> 00:04:04.145
<00:04:00.205>So <00:04:00.360>before <00:04:00.516>we <00:04:00.671>dive <00:04:00.827>into <00:04:00.982>the <00:04:01.138>optimization <00:04:01.293>techniques, <00:04:01.449>let's <00:04:01.605>go

74
00:04:04.145 --> 00:04:06.425
<00:04:04.145>through <00:04:04.425>a <00:04:04.705>bit <00:04:04.985>of <00:04:05.265>a <00:04:05.545>terminology.

75
00:04:07.445 --> 00:04:09.745
<00:04:07.445>So <00:04:07.620>how <00:04:07.795>do <00:04:07.970>you <00:04:08.144>usually <00:04:08.320>connect <00:04:08.495>to <00:04:08.670>the <00:04:08.845>internet?

76
00:04:09.925 --> 00:04:12.705
<00:04:09.925>You <00:04:10.125>basically <00:04:10.325>need <00:04:10.525>a <00:04:10.725>modem <00:04:10.925>and <00:04:11.125>a <00:04:11.325>router.

77
00:04:13.045 --> 00:04:16.575
<00:04:13.045>And <00:04:13.278>usually, <00:04:13.511>like <00:04:13.744>couple <00:04:13.978>of <00:04:14.211>years <00:04:14.445>ago,

78
00:04:16.665 --> 00:04:18.695
<00:04:16.665>those <00:04:16.945>devices <00:04:17.225>were <00:04:17.505>like <00:04:17.785>two <00:04:18.065>devices.

79
00:04:19.355 --> 00:04:22.735
<00:04:19.355>Uh, <00:04:19.510>you <00:04:19.666>get <00:04:19.821>a <00:04:19.977>modem <00:04:20.132>that <00:04:20.288>connects <00:04:20.443>to <00:04:20.599>the <00:04:20.755>internet

80
00:04:22.875 --> 00:04:26.575
<00:04:22.875>and <00:04:23.002>then <00:04:23.129>you <00:04:23.256>get <00:04:23.384>a <00:04:23.511>router <00:04:23.638>that <00:04:23.765>you <00:04:23.893>connect <00:04:24.020>to <00:04:24.147>that <00:04:24.275>modem

81
00:04:26.635 --> 00:04:29.135
<00:04:26.635>and <00:04:26.810>then <00:04:26.985>you <00:04:27.159>connect <00:04:27.335>your <00:04:27.510>devices <00:04:27.685>to <00:04:27.860>the <00:04:28.034>router.

82
00:04:29.605 --> 00:04:32.495
<00:04:29.605>That <00:04:29.805>can <00:04:30.005>be <00:04:30.205>land <00:04:30.405>connection, <00:04:30.605>that <00:04:30.805>can <00:04:31.005>be

83
00:04:33.015 --> 00:04:35.975
<00:04:33.015>wireless <00:04:33.215>connection, <00:04:33.414>but <00:04:33.615>you <00:04:33.815>need <00:04:34.015>two <00:04:34.215>separate <00:04:34.414>devices.

84
00:04:37.195 --> 00:04:40.215
<00:04:37.195>So <00:04:37.350>when <00:04:37.506>you <00:04:37.661>combine <00:04:37.817>those <00:04:37.972>devices <00:04:38.128>into <00:04:38.283>a <00:04:38.439>single <00:04:38.594>device,

85
00:04:40.555 --> 00:04:43.295
<00:04:40.555>you <00:04:40.755>get <00:04:40.955>a <00:04:41.155>gateway, <00:04:41.355>a <00:04:41.555>home <00:04:41.755>gateway, <00:04:41.955>oops.

86
00:04:44.275 --> 00:04:47.575
<00:04:44.275>So <00:04:44.450>basically <00:04:44.625>you <00:04:44.799>have <00:04:44.974>one <00:04:45.150>single <00:04:45.325>device <00:04:45.500>that <00:04:45.674>you,

87
00:04:48.085 --> 00:04:49.935
<00:04:48.085>that <00:04:48.364>your <00:04:48.645>internet <00:04:48.924>provider <00:04:49.205>gives <00:04:49.484>you

88
00:04:50.315 --> 00:04:52.855
<00:04:50.315>and <00:04:50.490>you <00:04:50.665>use <00:04:50.840>it <00:04:51.015>for <00:04:51.190>connected <00:04:51.365>to <00:04:51.540>the <00:04:51.715>internet

89
00:04:53.155 --> 00:04:56.455
<00:04:53.155>and <00:04:53.354>for <00:04:53.554>connecting <00:04:53.755>your <00:04:53.955>devices <00:04:54.155>to <00:04:54.354>the <00:04:54.554>internet

90
00:04:56.455 --> 00:04:57.735
<00:04:56.455>through <00:04:56.839>that <00:04:57.223>same <00:04:57.607>device.

91
00:04:59.725 --> 00:05:03.025
<00:04:59.725>So <00:04:59.880>how <00:05:00.036>do <00:05:00.191>you <00:05:00.347>actually <00:05:00.502>communicate <00:05:00.658>with, <00:05:00.813>with <00:05:00.969>those <00:05:01.125>devices?

92
00:05:03.805 --> 00:05:08.225
<00:05:03.805>So <00:05:03.980>operators, <00:05:04.155>uh, <00:05:04.330>who <00:05:04.505>work <00:05:04.680>at <00:05:04.855>your <00:05:05.030>internet <00:05:05.205>provider,

93
00:05:08.805 --> 00:05:10.385
<00:05:08.805>uh, <00:05:09.505>can <00:05:10.205>communicate

94
00:05:10.455 --> 00:05:14.545
<00:05:10.455>with <00:05:10.610>your <00:05:10.766>device <00:05:10.921>at <00:05:11.077>home <00:05:11.232>using <00:05:11.388>something <00:05:11.543>called <00:05:11.699>a <00:05:11.854>CS,

95
00:05:14.875 --> 00:05:16.745
<00:05:14.875>which <00:05:15.225>is <00:05:15.575>Auto <00:05:15.925>Configuration <00:05:16.275>Server.

96
00:05:17.255 --> 00:05:19.185
<00:05:17.255>They <00:05:17.605>can <00:05:17.955>change <00:05:18.305>some <00:05:18.655>configuration,

97
00:05:19.185 --> 00:05:21.625
<00:05:19.185>they <00:05:19.360>can <00:05:19.535>help <00:05:19.710>you <00:05:19.885>when <00:05:20.060>you <00:05:20.235>call <00:05:20.410>customer <00:05:20.585>support.

98
00:05:22.015 --> 00:05:24.545
<00:05:22.015>They <00:05:22.170>can <00:05:22.326>help <00:05:22.481>you <00:05:22.637>by <00:05:22.792>using <00:05:22.948>that <00:05:23.103>a <00:05:23.259>CS <00:05:23.414>server.

99
00:05:25.245 --> 00:05:30.065
<00:05:25.245>And <00:05:25.400>that <00:05:25.556>a <00:05:25.711>CS <00:05:25.867>server <00:05:26.022>uses <00:05:26.178>a <00:05:26.333>protocol <00:05:26.489>called, <00:05:26.645>uh,

100
00:05:30.305 --> 00:05:33.545
<00:05:30.305>CWMP <00:05:30.585>or <00:05:30.865>CPE <00:05:31.145>Van <00:05:31.425>Management <00:05:31.705>Protocol.

101
00:05:34.205 --> 00:05:37.505
<00:05:34.205>Uh, <00:05:34.438>and <00:05:34.671>that <00:05:34.905>protocol <00:05:35.138>is <00:05:35.371>using <00:05:35.604>some,

102
00:05:38.365 --> 00:05:40.465
<00:05:38.365>uh, <00:05:39.765>commands.

103
00:05:40.605 --> 00:05:43.745
<00:05:40.605>And <00:05:40.780>those <00:05:40.955>commands <00:05:41.130>are <00:05:41.305>called <00:05:41.480>TR <00:05:41.655>180 <00:05:41.830>1 <00:05:42.005>commands.

104
00:05:44.125 --> 00:05:47.305
<00:05:44.125>The, <00:05:44.325>there <00:05:44.525>were <00:05:44.725>TR <00:05:44.925>90, <00:05:45.125>uh, <00:05:45.325>eight <00:05:45.525>commands,

105
00:05:47.325 --> 00:05:51.875
<00:05:47.325>but <00:05:47.558>that's <00:05:47.791>in, <00:05:48.025>those <00:05:48.258>are <00:05:48.491>old <00:05:48.724>And

106
00:05:51.875 --> 00:05:53.755
<00:05:51.875>that <00:05:52.155>communication <00:05:52.435>goes <00:05:52.715>something <00:05:52.995>like <00:05:53.275>this.

107
00:05:53.855 --> 00:05:57.035
<00:05:53.855>So <00:05:54.030>you <00:05:54.205>basically, <00:05:54.380>uh, <00:05:54.555>CPE, <00:05:54.730>which <00:05:54.905>is <00:05:55.080>another <00:05:55.255>name

108
00:05:57.045 --> 00:06:01.165
<00:05:57.045>for <00:05:57.220>home <00:05:57.395>gateway <00:05:57.570>and <00:05:57.745>a <00:05:57.920>CS, <00:05:58.095>they <00:05:58.270>open <00:05:58.445>connection

109
00:06:01.785 --> 00:06:05.125
<00:06:01.785>and <00:06:02.065>they <00:06:02.345>communicate <00:06:02.625>using <00:06:02.905>HTTP <00:06:03.185>requests.

110
00:06:05.505 --> 00:06:08.725
<00:06:05.505>And <00:06:05.738>those <00:06:05.971>requests <00:06:06.205>are <00:06:06.438>only <00:06:06.671>post <00:06:06.905>requests.

111
00:06:08.745 --> 00:06:11.085
<00:06:08.745>So <00:06:08.978>there <00:06:09.211>are <00:06:09.445>no <00:06:09.678>get <00:06:09.911>HTP <00:06:10.145>requests.

112
00:06:11.475 --> 00:06:14.685
<00:06:11.475>Even <00:06:11.630>when <00:06:11.786>you <00:06:11.941>wanna <00:06:12.097>read <00:06:12.252>something <00:06:12.408>from <00:06:12.563>that <00:06:12.719>home <00:06:12.875>gateway,

113
00:06:15.585 --> 00:06:18.205
<00:06:15.585>you <00:06:15.935>use, <00:06:16.284>uh, <00:06:16.635>post <00:06:16.984>request.

114
00:06:18.785 --> 00:06:23.765
<00:06:18.785>So <00:06:18.925>this <00:06:19.065>is <00:06:19.205>the <00:06:19.345>communication <00:06:19.485>between <00:06:19.625>CPE <00:06:19.765>and <00:06:19.905>between <00:06:20.045>a <00:06:20.185>CS.

115
00:06:24.465 --> 00:06:29.005
<00:06:24.465>And <00:06:24.604>if <00:06:24.744>we <00:06:24.885>add <00:06:25.025>our <00:06:25.164>backend <00:06:25.304>to <00:06:25.445>that, <00:06:25.585>we <00:06:25.724>basically <00:06:25.864>communicate

116
00:06:29.235 --> 00:06:34.005
<00:06:29.235>with <00:06:29.351>c <00:06:29.468>uh, <00:06:29.585>with <00:06:29.701>a <00:06:29.818>CS, <00:06:29.935>so <00:06:30.051>we <00:06:30.168>can <00:06:30.285>add <00:06:30.401>the <00:06:30.518>end, <00:06:30.635>communicate

117
00:06:34.085 --> 00:06:35.125
<00:06:34.085>with <00:06:34.553>home <00:06:35.021>gateways.

118
00:06:35.905 --> 00:06:39.765
<00:06:35.905>We <00:06:36.184>use <00:06:36.465>methods <00:06:36.744>called <00:06:37.025>Get <00:06:37.304>Fetch

119
00:06:39.785 --> 00:06:41.645
<00:06:39.784>and <00:06:40.251>Set <00:06:40.718>Set <00:06:41.184>methods

120
00:06:42.185 --> 00:06:45.525
<00:06:42.185>is <00:06:42.418>setting <00:06:42.651>some <00:06:42.885>parameter <00:06:43.118>and <00:06:43.351>get <00:06:43.585>methods.

121
00:06:45.705 --> 00:06:48.245
<00:06:45.705>And <00:06:45.880>fetch <00:06:46.055>method <00:06:46.229>are <00:06:46.405>reading <00:06:46.580>parameters <00:06:46.755>from <00:06:46.930>the <00:06:47.104>router.

122
00:06:49.385 --> 00:06:52.805
<00:06:49.385>So <00:06:49.525>this <00:06:49.664>is <00:06:49.805>the <00:06:49.945>example <00:06:50.085>of <00:06:50.224>the <00:06:50.365>list <00:06:50.505>of <00:06:50.645>the <00:06:50.784>parameters

123
00:06:52.805 --> 00:06:55.525
<00:06:52.805>that <00:06:52.980>you <00:06:53.155>can <00:06:53.330>read <00:06:53.505>from <00:06:53.680>the, <00:06:53.855>from <00:06:54.030>the <00:06:54.205>device.

124
00:06:56.105 --> 00:06:59.245
<00:06:56.105>For <00:06:56.338>example, <00:06:56.571>software <00:06:56.805>version <00:06:57.038>if, <00:06:57.271>uh, <00:06:57.505>some

125
00:06:59.945 --> 00:07:03.205
<00:06:59.945>how <00:07:00.120>many <00:07:00.295>active <00:07:00.469>costs, <00:07:00.645>uh, <00:07:00.820>how <00:07:00.995>many <00:07:01.170>active <00:07:01.344>devices

126
00:07:03.745 --> 00:07:06.605
<00:07:03.745>you <00:07:03.978>have <00:07:04.211>connected <00:07:04.445>to <00:07:04.678>the <00:07:04.911>net <00:07:05.145>router.

127
00:07:07.185 --> 00:07:11.765
<00:07:07.185>And <00:07:07.312>for <00:07:07.439>example, <00:07:07.566>SSID <00:07:07.694>name, <00:07:07.821>which <00:07:07.948>is <00:07:08.075>a <00:07:08.203>name <00:07:08.330>of <00:07:08.457>your <00:07:08.585>wifi,

128
00:07:12.495 --> 00:07:14.085
<00:07:12.495>there <00:07:12.845>is <00:07:13.195>a <00:07:13.545>variable <00:07:13.895>there.

129
00:07:14.605 --> 00:07:19.085
<00:07:14.605>X <00:07:14.780>because <00:07:14.955>every <00:07:15.130>router <00:07:15.305>has <00:07:15.480>multiple <00:07:15.655>wifi <00:07:15.830>access <00:07:16.005>points.

130
00:07:19.385 --> 00:07:22.845
<00:07:19.385>For <00:07:19.560>example, <00:07:19.735>2.4 <00:07:19.909>gigahertz, <00:07:20.085>five <00:07:20.260>gigahertz <00:07:20.435>or <00:07:20.610>guest <00:07:20.784>network.

131
00:07:24.745 --> 00:07:25.965
<00:07:24.745>And <00:07:25.019>how <00:07:25.294>fast <00:07:25.568>is <00:07:25.842>this?

132
00:07:26.355 --> 00:07:28.965
<00:07:26.355>Well, <00:07:26.705>basically <00:07:27.055>it's <00:07:27.405>this <00:07:27.755>fast,

133
00:07:29.315 --> 00:07:30.845
<00:07:29.315>like <00:07:29.590>this <00:07:29.865>guy <00:07:30.141>from <00:07:30.416>the <00:07:30.692>Zootopia.

134
00:07:31.825 --> 00:07:33.685
<00:07:31.825>And <00:07:32.025>not <00:07:32.224>only <00:07:32.425>that, <00:07:32.625>this <00:07:32.825>is <00:07:33.025>really <00:07:33.224>slow.

135
00:07:34.185 --> 00:07:37.885
<00:07:34.185>Uh, <00:07:34.385>this <00:07:34.585>is <00:07:34.785>unstable <00:07:34.985>because <00:07:35.185>T <00:07:35.385>180 <00:07:35.585>1

136
00:07:37.945 --> 00:07:42.925
<00:07:37.945>and <00:07:38.052>a <00:07:38.160>CS <00:07:38.268>is <00:07:38.375>not <00:07:38.483>really <00:07:38.591>intended <00:07:38.698>to <00:07:38.806>be <00:07:38.914>used <00:07:39.021>a <00:07:39.129>lot, <00:07:39.237>just <00:07:39.344>like

137
00:07:43.795 --> 00:07:47.405
<00:07:43.795>it's <00:07:43.935>intended <00:07:44.075>for <00:07:44.215>the <00:07:44.355>people <00:07:44.495>who <00:07:44.635>are <00:07:44.775>working, <00:07:44.915>uh, <00:07:45.055>on <00:07:45.195>the,

138
00:07:47.625 --> 00:07:51.245
<00:07:47.625>on <00:07:47.765>the <00:07:47.905>network <00:07:48.045>provider <00:07:48.185>side <00:07:48.325>to <00:07:48.465>access <00:07:48.605>like <00:07:48.745>in <00:07:48.885>a <00:07:49.025>couple

139
00:07:51.265 --> 00:07:53.765
<00:07:51.265>of <00:07:51.405>months, <00:07:51.544>once <00:07:51.685>in <00:07:51.825>a <00:07:51.965>couple <00:07:52.104>of <00:07:52.245>months <00:07:52.385>to <00:07:52.525>your <00:07:52.664>device.

140
00:07:54.505 --> 00:07:59.285
<00:07:54.505>So <00:07:54.632>how <00:07:54.759>can <00:07:54.886>we <00:07:55.014>make <00:07:55.141>this <00:07:55.268>more <00:07:55.395>stable <00:07:55.523>and <00:07:55.650>faster <00:07:55.777>for <00:07:55.905>users?

141
00:08:00.345 --> 00:08:02.565
<00:08:00.345>So <00:08:00.625>first <00:08:00.905>let's <00:08:01.185>talk <00:08:01.465>about <00:08:01.745>stability.

142
00:08:03.225 --> 00:08:05.045
<00:08:03.225>Why <00:08:03.505>this <00:08:03.785>is <00:08:04.065>actually <00:08:04.345>not <00:08:04.625>stable.

143
00:08:05.435 --> 00:08:09.805
<00:08:05.435>It's <00:08:05.590>because <00:08:05.746>internet <00:08:05.901>provider <00:08:06.057>needs <00:08:06.212>to <00:08:06.368>give <00:08:06.523>away <00:08:06.679>for <00:08:06.835>free

144
00:08:10.325 --> 00:08:12.645
<00:08:10.325>a <00:08:10.525>bunch <00:08:10.724>of <00:08:10.925>these <00:08:11.125>devices <00:08:11.325>you <00:08:11.525>subscribe <00:08:11.724>for

145
00:08:12.645 --> 00:08:13.685
<00:08:12.645>to, <00:08:12.957>for <00:08:13.269>the <00:08:13.581>internet.

146
00:08:14.505 --> 00:08:17.325
<00:08:14.505>And <00:08:14.705>you <00:08:14.905>get <00:08:15.105>this <00:08:15.305>home <00:08:15.505>gateway <00:08:15.705>for <00:08:15.905>free

147
00:08:17.325 --> 00:08:18.325
<00:08:17.325>with <00:08:17.775>your <00:08:18.224>subscription.

148
00:08:18.705 --> 00:08:21.525
<00:08:18.705>So <00:08:18.860>they <00:08:19.016>need <00:08:19.171>to <00:08:19.327>buy <00:08:19.482>a <00:08:19.638>lot <00:08:19.793>of <00:08:19.949>these <00:08:20.104>devices

149
00:08:21.745 --> 00:08:23.005
<00:08:21.745>and <00:08:21.934>then <00:08:22.123>give <00:08:22.312>them <00:08:22.501>away <00:08:22.690>for <00:08:22.879>free.

150
00:08:23.505 --> 00:08:24.805
<00:08:23.505>So <00:08:23.739>they <00:08:23.973>need <00:08:24.207>to <00:08:24.441>be <00:08:24.675>cheap.

151
00:08:25.185 --> 00:08:26.605
<00:08:25.185>And <00:08:25.611>because <00:08:26.037>they're <00:08:26.463>cheap,

152
00:08:26.915 --> 00:08:30.445
<00:08:26.915>they're <00:08:27.265>usually <00:08:27.615>really <00:08:27.965>underpowered <00:08:28.315>and

153
00:08:30.675 --> 00:08:34.645
<00:08:30.675>because <00:08:30.875>they're <00:08:31.075>underpowered, <00:08:31.275>they <00:08:31.475>get <00:08:31.675>stuck <00:08:31.875>a <00:08:32.075>lot.

154
00:08:35.305 --> 00:08:39.325
<00:08:35.304>So <00:08:35.460>something <00:08:35.616>like <00:08:35.771>a <00:08:35.927>retry <00:08:36.082>policy <00:08:36.238>is <00:08:36.393>basically <00:08:36.549>a <00:08:36.704>must.

155
00:08:39.905 --> 00:08:42.725
<00:08:39.905>So <00:08:40.079>as <00:08:40.255>I <00:08:40.429>said, <00:08:40.605>they <00:08:40.780>get <00:08:40.954>stuck <00:08:41.130>a <00:08:41.304>lot

156
00:08:43.505 --> 00:08:48.045
<00:08:43.505>and <00:08:43.632>basically <00:08:43.759>on <00:08:43.886>every <00:08:44.014>call <00:08:44.141>we <00:08:44.268>need <00:08:44.395>to <00:08:44.523>have <00:08:44.650>a <00:08:44.777>retry <00:08:44.905>policy

157
00:08:48.315 --> 00:08:51.165
<00:08:48.315>because <00:08:48.490>if <00:08:48.665>we <00:08:48.840>get <00:08:49.015>an <00:08:49.190>error <00:08:49.365>from <00:08:49.540>one <00:08:49.715>call,

158
00:08:51.825 --> 00:08:53.525
<00:08:51.825>we <00:08:52.291>send <00:08:52.758>another <00:08:53.225>request.

159
00:08:53.665 --> 00:08:56.485
<00:08:53.665>If <00:08:53.820>we <00:08:53.976>get <00:08:54.131>an <00:08:54.287>error, <00:08:54.442>again, <00:08:54.598>we <00:08:54.753>wait <00:08:54.909>a <00:08:55.064>bit

160
00:08:56.545 --> 00:08:57.805
<00:08:56.545>and <00:08:56.828>then <00:08:57.112>send <00:08:57.395>another <00:08:57.679>request.

161
00:08:58.035 --> 00:09:01.125
<00:08:58.035>Okay, <00:08:58.235>this, <00:08:58.435>this <00:08:58.635>makes <00:08:58.834>things <00:08:59.035>a <00:08:59.235>bit <00:08:59.435>slower,

162
00:09:01.785 --> 00:09:04.605
<00:09:01.785>but <00:09:01.959>at <00:09:02.135>least <00:09:02.310>user <00:09:02.485>is <00:09:02.660>not <00:09:02.834>getting <00:09:03.010>an <00:09:03.185>error

163
00:09:04.905 --> 00:09:06.125
<00:09:04.905>on <00:09:05.271>every <00:09:05.637>app <00:09:06.003>click.

164
00:09:09.225 --> 00:09:13.525
<00:09:09.225>And <00:09:09.425>since <00:09:09.625>we <00:09:09.825>now <00:09:10.025>have <00:09:10.225>a <00:09:10.425>stable <00:09:10.625>communication,

165
00:09:14.015 --> 00:09:15.285
<00:09:14.015>let's <00:09:14.243>make <00:09:14.472>it <00:09:14.700>a <00:09:14.929>bit <00:09:15.158>faster.

166
00:09:15.825 --> 00:09:19.165
<00:09:15.825>And <00:09:16.058>the <00:09:16.291>first <00:09:16.525>thing <00:09:16.758>is <00:09:16.991>obviously <00:09:17.225>caching.

167
00:09:19.825 --> 00:09:21.845
<00:09:19.825>We <00:09:20.105>have <00:09:20.385>two <00:09:20.665>levels <00:09:20.945>of <00:09:21.225>caching.

168
00:09:22.505 --> 00:09:25.205
<00:09:22.505>So <00:09:22.738>first <00:09:22.971>one <00:09:23.205>is <00:09:23.438>a <00:09:23.671>CS <00:09:23.905>caching.

169
00:09:26.025 --> 00:09:27.925
<00:09:26.025>So <00:09:26.258>as <00:09:26.491>I <00:09:26.725>said, <00:09:26.958>we <00:09:27.191>use <00:09:27.425>get

170
00:09:28.305 --> 00:09:30.725
<00:09:28.305>and <00:09:28.460>we <00:09:28.616>use <00:09:28.771>fetch <00:09:28.927>commands <00:09:29.082>to <00:09:29.238>read <00:09:29.393>from <00:09:29.549>the <00:09:29.704>router.

171
00:09:31.265 --> 00:09:34.485
<00:09:31.265>Uh, <00:09:31.439>as <00:09:31.615>you <00:09:31.790>can <00:09:31.965>see <00:09:32.140>on <00:09:32.314>the <00:09:32.490>image, <00:09:32.665>uh,

172
00:09:34.575 --> 00:09:37.925
<00:09:34.575>fetch <00:09:34.808>command <00:09:35.041>calls <00:09:35.275>the <00:09:35.508>router <00:09:35.741>reads <00:09:35.975>information

173
00:09:38.145 --> 00:09:40.965
<00:09:38.145>and <00:09:38.345>then <00:09:38.545>stores <00:09:38.745>that <00:09:38.944>information <00:09:39.145>into <00:09:39.345>the <00:09:39.545>MongoDB.

174
00:09:40.965 --> 00:09:44.005
<00:09:40.965>On <00:09:41.120>the <00:09:41.276>a <00:09:41.431>CS <00:09:41.587>side, <00:09:41.742>if <00:09:41.898>you <00:09:42.053>use <00:09:42.209>Get <00:09:42.365>command,

175
00:09:44.465 --> 00:09:47.605
<00:09:44.465>you <00:09:44.640>bypass <00:09:44.815>the <00:09:44.990>router, <00:09:45.165>you <00:09:45.340>only <00:09:45.515>call <00:09:45.690>the <00:09:45.865>Mongo.

176
00:09:47.605 --> 00:09:48.765
<00:09:47.605>So <00:09:47.866>it's <00:09:48.127>really <00:09:48.388>fast <00:09:48.649>call.

177
00:09:49.665 --> 00:09:53.325
<00:09:49.665>So <00:09:49.865>obviously <00:09:50.064>we <00:09:50.265>try <00:09:50.464>to <00:09:50.665>use <00:09:50.865>get <00:09:51.064>instead

178
00:09:53.325 --> 00:09:54.805
<00:09:53.325>of <00:09:53.547>fetch <00:09:53.769>as <00:09:53.991>much <00:09:54.213>as <00:09:54.435>we <00:09:54.656>can.

179
00:09:55.745 --> 00:09:59.405
<00:09:55.745>Of <00:09:55.920>course <00:09:56.095>we <00:09:56.270>cannot <00:09:56.445>use <00:09:56.620>it <00:09:56.795>for <00:09:56.970>everything <00:09:57.145>simply

180
00:09:59.405 --> 00:10:01.965
<00:09:59.405>because <00:09:59.638>user <00:09:59.871>needs <00:10:00.105>to <00:10:00.338>know <00:10:00.571>some <00:10:00.805>information

181
00:10:02.665 --> 00:10:05.365
<00:10:02.665>and <00:10:02.839>he <00:10:03.015>needs <00:10:03.189>them <00:10:03.365>to <00:10:03.540>be <00:10:03.714>accurate, <00:10:03.890>for <00:10:04.064>example,

182
00:10:05.705 --> 00:10:07.005
<00:10:05.705>who <00:10:05.939>is <00:10:06.173>connected <00:10:06.407>to <00:10:06.641>his <00:10:06.875>wifi.

183
00:10:07.305 --> 00:10:09.525
<00:10:07.305>So <00:10:07.505>he <00:10:07.704>needs <00:10:07.905>that <00:10:08.104>information <00:10:08.305>to <00:10:08.505>be <00:10:08.704>accurate

184
00:10:09.625 --> 00:10:12.845
<00:10:09.625>and <00:10:09.780>that's <00:10:09.936>why <00:10:10.091>we <00:10:10.247>always <00:10:10.402>do, <00:10:10.558>uh, <00:10:10.713>fetch <00:10:10.869>and <00:10:11.025>get.

185
00:10:13.985 --> 00:10:16.885
<00:10:13.985>But <00:10:14.218>on <00:10:14.451>the <00:10:14.685>other <00:10:14.918>side, <00:10:15.151>uh, <00:10:15.385>he

186
00:10:17.905 --> 00:10:20.245
<00:10:17.905>may <00:10:18.105>not <00:10:18.305>change <00:10:18.505>his <00:10:18.704>wifi <00:10:18.905>name <00:10:19.105>very <00:10:19.305>often.

187
00:10:20.665 --> 00:10:22.205
<00:10:20.665>So <00:10:20.942>we <00:10:21.219>can <00:10:21.496>bypass <00:10:21.773>the <00:10:22.051>router

188
00:10:22.205 --> 00:10:24.405
<00:10:22.205>and <00:10:22.405>just <00:10:22.605>use <00:10:22.805>the <00:10:23.005>information <00:10:23.205>from <00:10:23.405>the <00:10:23.605>MongoDB.

189
00:10:27.025 --> 00:10:31.445
<00:10:27.025>But <00:10:27.225>even <00:10:27.425>if, <00:10:27.625>uh, <00:10:27.824>for <00:10:28.025>like <00:10:28.225>connected <00:10:28.425>devices,

190
00:10:31.555 --> 00:10:33.765
<00:10:31.555>even <00:10:31.834>the, <00:10:32.114>if <00:10:32.395>we <00:10:32.675>called <00:10:32.954>fetch,

191
00:10:34.545 --> 00:10:37.165
<00:10:34.545>we <00:10:34.778>can <00:10:35.011>cache <00:10:35.245>results <00:10:35.478>on <00:10:35.711>our <00:10:35.944>backend.

192
00:10:37.585 --> 00:10:41.045
<00:10:37.585>So <00:10:37.712>first <00:10:37.839>we <00:10:37.966>have <00:10:38.094>to <00:10:38.221>decide <00:10:38.348>what <00:10:38.475>can <00:10:38.603>be <00:10:38.730>cached, <00:10:38.857>be <00:10:38.985>cached

193
00:10:41.045 --> 00:10:42.485
<00:10:41.045>because <00:10:41.477>not <00:10:41.909>everything <00:10:42.341>can,

194
00:10:43.065 --> 00:10:45.765
<00:10:43.065>and <00:10:43.220>for <00:10:43.376>every <00:10:43.531>cache <00:10:43.687>item <00:10:43.842>we <00:10:43.998>need <00:10:44.153>to <00:10:44.309>decide <00:10:44.465>for

195
00:10:45.785 --> 00:10:47.205
<00:10:45.785>how <00:10:46.040>long <00:10:46.296>can <00:10:46.551>we <00:10:46.807>cache <00:10:47.063>it.

196
00:10:47.705 --> 00:10:52.285
<00:10:47.705>Uh, <00:10:47.845>like <00:10:47.985>active <00:10:48.125>devices <00:10:48.265>can <00:10:48.405>be <00:10:48.545>cached <00:10:48.685>for <00:10:48.825>maybe <00:10:48.965>a <00:10:49.105>minute

197
00:10:52.475 --> 00:10:56.005
<00:10:52.475>because <00:10:52.675>you <00:10:52.875>wanna <00:10:53.075>show <00:10:53.275>the <00:10:53.475>user <00:10:53.675>who's <00:10:53.875>connected

198
00:10:56.025 --> 00:10:59.245
<00:10:56.025>and <00:10:56.180>you <00:10:56.336>want <00:10:56.491>to <00:10:56.647>give <00:10:56.802>him <00:10:56.958>the <00:10:57.113>most <00:10:57.269>accurate <00:10:57.425>information.

199
00:10:59.985 --> 00:11:04.885
<00:10:59.985>But <00:11:00.140>for <00:11:00.296>example, <00:11:00.451>uh, <00:11:00.607>he <00:11:00.762>doesn't <00:11:00.918>need <00:11:01.073>to <00:11:01.229>like, <00:11:01.385>uh,

200
00:11:05.585 --> 00:11:08.045
<00:11:05.585>for <00:11:05.785>example, <00:11:05.985>wifi <00:11:06.185>name <00:11:06.385>or <00:11:06.585>a <00:11:06.785>model <00:11:06.985>name

201
00:11:08.065 --> 00:11:11.405
<00:11:08.065>or <00:11:08.265>a <00:11:08.465>software <00:11:08.665>version <00:11:08.865>of <00:11:09.065>his <00:11:09.265>con <00:11:09.465>gateway.

202
00:11:11.505 --> 00:11:12.725
<00:11:11.505>That's <00:11:11.779>not <00:11:12.054>changing <00:11:12.328>a <00:11:12.603>lot.

203
00:11:12.725 --> 00:11:16.085
<00:11:12.725>Like, <00:11:12.880>so <00:11:13.036>you <00:11:13.191>can <00:11:13.347>catch <00:11:13.502>that <00:11:13.658>for <00:11:13.813>days, <00:11:13.969>even <00:11:14.125>weeks.

204
00:11:19.465 --> 00:11:21.965
<00:11:19.465>Uh, <00:11:19.931>and <00:11:20.398>beside <00:11:20.865>caching,

205
00:11:22.065 --> 00:11:25.005
<00:11:22.065>we <00:11:22.345>also <00:11:22.625>use <00:11:22.905>a <00:11:23.185>async <00:11:23.465>communication.

206
00:11:26.065 --> 00:11:30.725
<00:11:26.065>So <00:11:26.192>we <00:11:26.319>have <00:11:26.446>a <00:11:26.574>lot <00:11:26.701>of, <00:11:26.828>uh, <00:11:26.955>business <00:11:27.083>logic <00:11:27.210>on <00:11:27.337>our <00:11:27.465>backend

207
00:11:30.905 --> 00:11:33.885
<00:11:30.905>and <00:11:31.079>instead <00:11:31.255>of <00:11:31.430>sending <00:11:31.605>requests <00:11:31.780>to <00:11:31.954>the <00:11:32.130>a <00:11:32.305>CS

208
00:11:34.305 --> 00:11:35.885
<00:11:34.305>and <00:11:34.584>then <00:11:34.864>waiting <00:11:35.145>for <00:11:35.425>a <00:11:35.704>response

209
00:11:35.985 --> 00:11:38.765
<00:11:35.985>and <00:11:36.125>then <00:11:36.265>doing <00:11:36.405>our <00:11:36.545>business <00:11:36.685>logic, <00:11:36.825>we <00:11:36.965>try <00:11:37.105>to <00:11:37.245>do <00:11:37.385>that

210
00:11:39.025 --> 00:11:40.605
<00:11:39.025>as <00:11:39.375>much <00:11:39.725>async <00:11:40.074>as <00:11:40.425>possible.

211
00:11:40.745 --> 00:11:44.205
<00:11:40.745>So <00:11:40.900>we <00:11:41.056>call <00:11:41.211>the <00:11:41.367>a <00:11:41.522>CS <00:11:41.678>using <00:11:41.833>the <00:11:41.989>non-blocking <00:11:42.145>operations.

212
00:11:45.345 --> 00:11:48.525
<00:11:45.345>And <00:11:45.485>while <00:11:45.625>that <00:11:45.765>is <00:11:45.905>working <00:11:46.045>in <00:11:46.185>the <00:11:46.325>background, <00:11:46.465>we <00:11:46.605>can <00:11:46.745>finish

213
00:11:48.555 --> 00:11:52.085
<00:11:48.555>with <00:11:48.788>some, <00:11:49.021>uh, <00:11:49.255>logic <00:11:49.488>on <00:11:49.721>our <00:11:49.954>side.

214
00:11:53.025 --> 00:11:56.565
<00:11:53.025>And <00:11:53.225>once <00:11:53.425>that <00:11:53.625>is <00:11:53.824>finished, <00:11:54.025>we <00:11:54.225>can, <00:11:54.425>uh,

215
00:11:56.595 --> 00:11:58.925
<00:11:56.595>process <00:11:56.828>the <00:11:57.061>responses <00:11:57.295>from <00:11:57.528>the <00:11:57.761>a <00:11:57.995>CS.

216
00:12:02.125 --> 00:12:03.415
<00:12:02.125>Okay, <00:12:02.318>so <00:12:02.512>all <00:12:02.705>of <00:12:02.899>this <00:12:03.092>is <00:12:03.286>great,

217
00:12:03.475 --> 00:12:05.975
<00:12:03.475>but <00:12:03.630>it <00:12:03.786>actually <00:12:03.941>only <00:12:04.097>works <00:12:04.252>if <00:12:04.408>you <00:12:04.563>have <00:12:04.719>a <00:12:04.875>suitable

218
00:12:06.015 --> 00:12:07.135
<00:12:06.015>architecture <00:12:06.519>for <00:12:07.023>that.

219
00:12:07.915 --> 00:12:09.735
<00:12:07.915>And <00:12:08.265>I'm <00:12:08.615>not <00:12:08.964>saying <00:12:09.314>that

220
00:12:10.395 --> 00:12:12.415
<00:12:10.395>you <00:12:10.675>should <00:12:10.954>use <00:12:11.235>microservices <00:12:11.515>for <00:12:11.795>everything.

221
00:12:12.635 --> 00:12:15.975
<00:12:12.635>At <00:12:12.751>least <00:12:12.868>in <00:12:12.985>the <00:12:13.101>past <00:12:13.218>year <00:12:13.335>we <00:12:13.451>saw <00:12:13.568>that <00:12:13.685>people <00:12:13.801>are <00:12:13.918>going <00:12:14.035>back

222
00:12:15.975 --> 00:12:17.895
<00:12:15.975>to <00:12:16.175>the <00:12:16.375>monolith <00:12:16.575>for <00:12:16.775>a <00:12:16.975>lot <00:12:17.175>of <00:12:17.375>stuff,

223
00:12:18.435 --> 00:12:22.295
<00:12:18.435>but <00:12:18.590>for <00:12:18.746>us, <00:12:18.901>microservices <00:12:19.057>are <00:12:19.212>actually <00:12:19.368>part <00:12:19.523>of <00:12:19.679>a <00:12:19.834>solution

224
00:12:22.765 --> 00:12:25.015
<00:12:22.765>because <00:12:22.998>some <00:12:23.231>of <00:12:23.465>parts <00:12:23.698>of <00:12:23.931>our <00:12:24.165>application

225
00:12:25.595 --> 00:12:29.295
<00:12:25.595>really <00:12:25.770>don't <00:12:25.945>see <00:12:26.120>much <00:12:26.295>traffic <00:12:26.470>while <00:12:26.645>the <00:12:26.820>other <00:12:26.995>parts

226
00:12:29.805 --> 00:12:31.175
<00:12:29.805>gets <00:12:30.113>huge <00:12:30.421>load <00:12:30.729>of <00:12:31.038>traffic.

227
00:12:31.645 --> 00:12:36.535
<00:12:31.645>That <00:12:31.845>way <00:12:32.045>we <00:12:32.245>can <00:12:32.444>scale <00:12:32.645>different <00:12:32.845>parts, <00:12:33.045>uh,

228
00:12:36.725 --> 00:12:39.175
<00:12:36.725>more <00:12:37.005>than <00:12:37.285>some <00:12:37.565>other <00:12:37.845>parts <00:12:38.125>independently.

229
00:12:39.915 --> 00:12:44.495
<00:12:39.915>And <00:12:40.042>also <00:12:40.169>we <00:12:40.296>can <00:12:40.424>use <00:12:40.551>a <00:12:40.678>right <00:12:40.805>tool <00:12:40.933>for <00:12:41.060>some <00:12:41.187>specific <00:12:41.314>task.

230
00:12:44.725 --> 00:12:45.895
<00:12:44.725>Like <00:12:44.935>if <00:12:45.146>you <00:12:45.356>have <00:12:45.567>a <00:12:45.778>hammer,

231
00:12:45.895 --> 00:12:47.535
<00:12:45.895>everything <00:12:46.128>is <00:12:46.361>gonna <00:12:46.595>look <00:12:46.828>like <00:12:47.061>a <00:12:47.295>nail.

232
00:12:47.555 --> 00:12:50.815
<00:12:47.555>So <00:12:47.710>if <00:12:47.866>you <00:12:48.021>only <00:12:48.177>use <00:12:48.332>Java, <00:12:48.488>you <00:12:48.643>are <00:12:48.799>gonna <00:12:48.954>try

233
00:12:50.815 --> 00:12:53.575
<00:12:50.815>to <00:12:50.990>solve <00:12:51.165>everything <00:12:51.340>using <00:12:51.515>like <00:12:51.690>Java <00:12:51.865>way <00:12:52.040>of <00:12:52.215>thinking.

234
00:12:53.635 --> 00:12:55.855
<00:12:53.635>But <00:12:53.790>there <00:12:53.946>for <00:12:54.101>some <00:12:54.257>things <00:12:54.412>there <00:12:54.568>is <00:12:54.723>a <00:12:54.879>better <00:12:55.035>way

235
00:12:56.075 --> 00:12:57.975
<00:12:56.075>and <00:12:56.308>that's <00:12:56.541>why <00:12:56.775>we <00:12:57.008>have <00:12:57.241>a <00:12:57.475>microservices

236
00:12:58.045 --> 00:13:01.575
<00:12:58.045>that <00:12:58.200>are <00:12:58.356>written <00:12:58.511>in <00:12:58.667>Java, <00:12:58.822>in <00:12:58.978>Python <00:12:59.133>and <00:12:59.289>in <00:12:59.444>Golan.

237
00:13:02.075 --> 00:13:04.695
<00:13:02.075>In <00:13:02.250>Golan <00:13:02.425>we <00:13:02.600>are, <00:13:02.775>we <00:13:02.950>are <00:13:03.125>using <00:13:03.300>Golan <00:13:03.475>actually

238
00:13:04.695 --> 00:13:07.855
<00:13:04.695>because <00:13:04.895>of <00:13:05.095>the <00:13:05.295>core <00:13:05.495>routines <00:13:05.695>and <00:13:05.895>async <00:13:06.095>communication.

239
00:13:08.715 --> 00:13:12.895
<00:13:08.715>And <00:13:08.870>finally, <00:13:09.026>uh, <00:13:09.181>we <00:13:09.337>can <00:13:09.492>easily <00:13:09.648>integrate <00:13:09.803>with <00:13:09.959>different <00:13:10.115>acss

240
00:13:13.005 --> 00:13:16.015
<00:13:13.005>because <00:13:13.285>we <00:13:13.564>have <00:13:13.845>six <00:13:14.125>internet <00:13:14.405>providers

241
00:13:16.195 --> 00:13:18.615
<00:13:16.195>who <00:13:16.370>are <00:13:16.545>using <00:13:16.720>two <00:13:16.895>different <00:13:17.070>acss <00:13:17.245>at <00:13:17.420>the <00:13:17.595>moment.

242
00:13:19.235 --> 00:13:23.215
<00:13:19.235>And <00:13:19.351>if <00:13:19.468>we, <00:13:19.585>uh, <00:13:19.701>get <00:13:19.818>the <00:13:19.935>provider <00:13:20.051>who's <00:13:20.168>using <00:13:20.285>some <00:13:20.401>other <00:13:20.518>a <00:13:20.635>CS,

243
00:13:23.215 --> 00:13:26.295
<00:13:23.215>we <00:13:23.448>can <00:13:23.681>just <00:13:23.915>develop <00:13:24.148>a <00:13:24.381>specific <00:13:24.615>microservice

244
00:13:26.395 --> 00:13:29.415
<00:13:26.395>for <00:13:26.628>debt <00:13:26.861>a <00:13:27.095>CS <00:13:27.328>instead <00:13:27.561>of <00:13:27.795>trying

245
00:13:29.435 --> 00:13:32.175
<00:13:29.435>to <00:13:29.668>support <00:13:29.901>everything <00:13:30.135>at <00:13:30.368>at <00:13:30.601>one <00:13:30.834>place.

246
00:13:33.235 --> 00:13:35.495
<00:13:33.235>And <00:13:33.468>that's <00:13:33.701>for <00:13:33.935>the, <00:13:34.168>for <00:13:34.401>the <00:13:34.635>backend.

247
00:13:35.635 --> 00:13:37.015
<00:13:35.635>I'm <00:13:35.883>gonna <00:13:36.131>let <00:13:36.380>Milan <00:13:36.628>now <00:13:36.877>talk

248
00:13:37.015 --> 00:13:38.575
<00:13:37.015>to <00:13:37.189>you <00:13:37.365>about <00:13:37.540>the <00:13:37.715>front <00:13:37.890>end <00:13:38.064>for <00:13:38.240>a <00:13:38.415>bit.

249
00:13:39.685 --> 00:13:44.135
<00:13:39.685>Okay. <00:13:39.840>So <00:13:39.996>to <00:13:40.151>write <00:13:40.307>a <00:13:40.462>successful <00:13:40.618>native <00:13:40.773>app, <00:13:40.929>it <00:13:41.084>needs

250
00:13:44.255 --> 00:13:47.935
<00:13:44.255>to <00:13:44.410>be <00:13:44.566>both <00:13:44.721>accessible <00:13:44.877>to <00:13:45.032>both <00:13:45.188>I <00:13:45.343>and <00:13:45.499>Android <00:13:45.655>users.

251
00:13:48.715 --> 00:13:50.895
<00:13:48.715>And <00:13:48.915>what <00:13:49.115>that <00:13:49.315>means <00:13:49.515>is <00:13:49.715>you <00:13:49.915>need <00:13:50.115>to

252
00:13:51.865 --> 00:13:55.895
<00:13:51.865>early <00:13:52.020>create <00:13:52.176>a <00:13:52.331>two <00:13:52.487>separate <00:13:52.642>app <00:13:52.798>with <00:13:52.953>two <00:13:53.109>separate <00:13:53.265>teams.

253
00:13:56.515 --> 00:13:59.975
<00:13:56.515>But <00:13:56.655>instead <00:13:56.795>of <00:13:56.935>doing <00:13:57.074>that, <00:13:57.215>you <00:13:57.355>can <00:13:57.495>use <00:13:57.635>the <00:13:57.775>React <00:13:57.915>native

254
00:14:00.755 --> 00:14:05.095
<00:14:00.755>and <00:14:00.895>with <00:14:01.035>just <00:14:01.175>a <00:14:01.314>single <00:14:01.455>code <00:14:01.595>base, <00:14:01.735>create <00:14:01.875>a <00:14:02.015>bot <00:14:02.155>application

255
00:14:05.155 --> 00:14:09.455
<00:14:05.155>for <00:14:05.310>both <00:14:05.466>I <00:14:05.621>and <00:14:05.777>Android <00:14:05.932>and <00:14:06.088>how <00:14:06.243>React <00:14:06.399>Native <00:14:06.555>Works.

256
00:14:09.585 --> 00:14:12.095
<00:14:09.585>React <00:14:09.818>native <00:14:10.051>take <00:14:10.285>care <00:14:10.518>surrendering <00:14:10.751>for <00:14:10.985>you.

257
00:14:12.235 --> 00:14:15.175
<00:14:12.235>You <00:14:12.410>just <00:14:12.585>need <00:14:12.760>to <00:14:12.935>create <00:14:13.110>to <00:14:13.285>use <00:14:13.460>React <00:14:13.635>components

258
00:14:15.355 --> 00:14:17.535
<00:14:15.355>and <00:14:15.588>to <00:14:15.821>create <00:14:16.055>the <00:14:16.288>screens <00:14:16.521>and <00:14:16.755>UI.

259
00:14:17.875 --> 00:14:21.775
<00:14:17.875>And <00:14:18.030>what <00:14:18.186>will <00:14:18.341>React <00:14:18.497>native <00:14:18.652>do <00:14:18.808>React <00:14:18.963>native <00:14:19.119>will, <00:14:19.275>uh,

260
00:14:21.915 --> 00:14:25.415
<00:14:21.915>use <00:14:22.070>them <00:14:22.226>and <00:14:22.381>turn <00:14:22.537>them <00:14:22.692>into <00:14:22.848>the <00:14:23.003>platform <00:14:23.159>specific <00:14:23.314>components

261
00:14:25.515 --> 00:14:27.535
<00:14:25.515>for <00:14:25.865>both <00:14:26.215>iOS <00:14:26.564>and <00:14:26.915>Android.

262
00:14:28.155 --> 00:14:30.975
<00:14:28.155>But <00:14:28.388>besides <00:14:28.621>of <00:14:28.855>that, <00:14:29.088>you <00:14:29.321>need <00:14:29.555>still

263
00:14:30.995 --> 00:14:32.455
<00:14:30.995>to <00:14:31.433>think <00:14:31.871>about <00:14:32.309>performance

264
00:14:32.555 --> 00:14:35.375
<00:14:32.555>and <00:14:32.834>optimization, <00:14:33.114>especially <00:14:33.395>if <00:14:33.675>you <00:14:33.954>work

265
00:14:35.375 --> 00:14:37.695
<00:14:35.375>with <00:14:35.655>slow <00:14:35.935>devices <00:14:36.215>like <00:14:36.495>Home <00:14:36.775>Gateways.

266
00:14:39.285 --> 00:14:42.545
<00:14:39.285>So <00:14:39.440>one <00:14:39.596>of <00:14:39.751>the <00:14:39.907>primary <00:14:40.062>challenge <00:14:40.218>we <00:14:40.373>had <00:14:40.529>with <00:14:40.685>working

267
00:14:42.545 --> 00:14:46.945
<00:14:42.545>with <00:14:42.700>Home <00:14:42.856>Gateways <00:14:43.011>is, <00:14:43.167>uh, <00:14:43.322>response <00:14:43.478>that <00:14:43.633>we <00:14:43.789>are <00:14:43.944>getting

268
00:14:47.045 --> 00:14:50.265
<00:14:47.045>for <00:14:47.200>the <00:14:47.356>home <00:14:47.511>gateways <00:14:47.667>is <00:14:47.822>often <00:14:47.978>can <00:14:48.133>be <00:14:48.289>really <00:14:48.444>slow

269
00:14:50.645 --> 00:14:53.205
<00:14:50.645>and <00:14:50.925>you <00:14:51.204>takes <00:14:51.485>time <00:14:51.765>for <00:14:52.045>you

270
00:14:53.345 --> 00:14:56.285
<00:14:53.345>to <00:14:53.545>get <00:14:53.745>the <00:14:53.945>data <00:14:54.145>back <00:14:54.345>from <00:14:54.545>the <00:14:54.745>router.

271
00:14:57.255 --> 00:14:58.275
<00:14:57.255>And <00:14:57.561>besides <00:14:57.867>of <00:14:58.173>them,

272
00:14:58.415 --> 00:15:02.155
<00:14:58.415>one <00:14:58.570>more <00:14:58.726>challenge <00:14:58.881>we <00:14:59.037>had <00:14:59.192>is <00:14:59.348>sending <00:14:59.503>too <00:14:59.659>many <00:14:59.814>requests

273
00:15:02.655 --> 00:15:04.035
<00:15:02.655>to <00:15:02.965>the, <00:15:03.276>uh, <00:15:03.586>home <00:15:03.896>gateway

274
00:15:04.035 --> 00:15:06.155
<00:15:04.035>because <00:15:04.268>you <00:15:04.501>have <00:15:04.735>to <00:15:04.968>think <00:15:05.201>about <00:15:05.435>that

275
00:15:06.155 --> 00:15:09.355
<00:15:06.155>because <00:15:06.329>sending <00:15:06.505>too <00:15:06.680>many <00:15:06.855>requests <00:15:07.030>from <00:15:07.204>the <00:15:07.380>front <00:15:07.555>end

276
00:15:09.575 --> 00:15:12.275
<00:15:09.575>to <00:15:09.775>the <00:15:09.975>backend <00:15:10.175>can <00:15:10.375>easily <00:15:10.575>kill <00:15:10.775>the <00:15:10.975>router

277
00:15:12.275 --> 00:15:14.315
<00:15:12.275>because <00:15:12.555>home <00:15:12.834>gateways <00:15:13.115>are <00:15:13.395>really <00:15:13.675>unstable.

278
00:15:16.205 --> 00:15:19.425
<00:15:16.205>So <00:15:16.380>what <00:15:16.555>technique <00:15:16.730>we <00:15:16.905>use <00:15:17.080>for <00:15:17.255>this <00:15:17.430>is <00:15:17.605>caching.

279
00:15:19.885 --> 00:15:22.465
<00:15:19.885>Uh, <00:15:20.165>caching <00:15:20.444>is <00:15:20.725>really <00:15:21.005>powerful <00:15:21.285>technique

280
00:15:22.465 --> 00:15:26.145
<00:15:22.465>that <00:15:22.665>can <00:15:22.865>significantly <00:15:23.065>improve <00:15:23.265>your <00:15:23.465>app <00:15:23.665>performance <00:15:23.865>by

281
00:15:26.825 --> 00:15:29.425
<00:15:26.825>storing, <00:15:27.175>uh, <00:15:27.525>frequency <00:15:27.875>used <00:15:28.225>data.

282
00:15:30.045 --> 00:15:34.225
<00:15:30.045>And <00:15:30.200>also <00:15:30.356>you <00:15:30.511>can <00:15:30.667>use <00:15:30.822>libraries <00:15:30.978>to <00:15:31.133>cache <00:15:31.289>API <00:15:31.444>responses

283
00:15:34.805 --> 00:15:37.265
<00:15:34.805>and <00:15:35.155>also <00:15:35.505>reduce <00:15:35.854>network <00:15:36.204>requests.

284
00:15:38.045 --> 00:15:42.805
<00:15:38.045>So <00:15:38.219>libraries, <00:15:38.395>I <00:15:38.569>want <00:15:38.745>to <00:15:38.920>recommend <00:15:39.094>you <00:15:39.270>for <00:15:39.444>caching.

285
00:15:42.945 --> 00:15:44.285
<00:15:42.945>The <00:15:43.186>first <00:15:43.427>one <00:15:43.668>is <00:15:43.909>Apollo <00:15:44.151>Client.

286
00:15:44.715 --> 00:15:47.765
<00:15:44.715>Apol <00:15:44.915>Client <00:15:45.115>is <00:15:45.315>a <00:15:45.515>really <00:15:45.715>great, <00:15:45.915>uh, <00:15:46.115>application,

287
00:15:48.565 --> 00:15:51.085
<00:15:48.565>a <00:15:48.720>really <00:15:48.876>great <00:15:49.031>library <00:15:49.187>for <00:15:49.342>to <00:15:49.498>use <00:15:49.653>for <00:15:49.809>your <00:15:49.965>application

288
00:15:51.085 --> 00:15:54.165
<00:15:51.085>because <00:15:51.285>with <00:15:51.485>Apollo <00:15:51.685>clients <00:15:51.885>you <00:15:52.085>get <00:15:52.285>these <00:15:52.485>benefits.

289
00:15:54.665 --> 00:15:56.765
<00:15:54.665>You <00:15:54.944>get <00:15:55.224>in <00:15:55.505>memory <00:15:55.785>cache, <00:15:56.064>uh,

290
00:15:56.835 --> 00:16:00.565
<00:15:56.835>that <00:15:56.990>Apollo <00:15:57.146>client <00:15:57.301>in <00:15:57.457>memory <00:15:57.612>cache <00:15:57.768>store <00:15:57.923>fetch <00:15:58.079>data <00:15:58.235>locally

291
00:16:01.225 --> 00:16:04.205
<00:16:01.225>and <00:16:01.458>you <00:16:01.691>can <00:16:01.925>use <00:16:02.158>normalized <00:16:02.391>data <00:16:02.625>store

292
00:16:04.205 --> 00:16:07.245
<00:16:04.205>that <00:16:04.405>your <00:16:04.605>data <00:16:04.805>can <00:16:05.005>data <00:16:05.205>can <00:16:05.405>be <00:16:05.605>accessible

293
00:16:07.245 --> 00:16:08.325
<00:16:07.245>through <00:16:07.569>your <00:16:07.893>whole <00:16:08.217>app.

294
00:16:09.035 --> 00:16:12.925
<00:16:09.035>Also, <00:16:09.209>you <00:16:09.385>can <00:16:09.560>use <00:16:09.735>your <00:16:09.910>automatic <00:16:10.084>data <00:16:10.260>data <00:16:10.435>updates.

295
00:16:13.155 --> 00:16:16.445
<00:16:13.155>That <00:16:13.310>means <00:16:13.466>that <00:16:13.621>if <00:16:13.777>your <00:16:13.932>data <00:16:14.088>updates <00:16:14.243>on <00:16:14.399>the <00:16:14.555>backend

296
00:16:16.465 --> 00:16:19.485
<00:16:16.465>or <00:16:16.620>the <00:16:16.776>front <00:16:16.931>end, <00:16:17.087>you <00:16:17.242>will <00:16:17.398>immediately <00:16:17.553>see <00:16:17.709>the <00:16:17.865>changes.

297
00:16:20.145 --> 00:16:23.285
<00:16:20.145>And <00:16:20.378>also <00:16:20.611>Apollo <00:16:20.845>client <00:16:21.078>has <00:16:21.311>offline <00:16:21.545>support.

298
00:16:23.875 --> 00:16:27.285
<00:16:23.875>That <00:16:24.030>means <00:16:24.186>that <00:16:24.341>your <00:16:24.497>data <00:16:24.652>can <00:16:24.808>be <00:16:24.963>accessible <00:16:25.119>when <00:16:25.275>your

299
00:16:27.315 --> 00:16:29.525
<00:16:27.315>application <00:16:27.781>is <00:16:28.248>without <00:16:28.715>connection.

300
00:16:30.865 --> 00:16:33.165
<00:16:30.865>The <00:16:31.065>other <00:16:31.265>libraries <00:16:31.465>library <00:16:31.665>I <00:16:31.865>want <00:16:32.065>to <00:16:32.265>recommend

301
00:16:33.165 --> 00:16:35.045
<00:16:33.165>for <00:16:33.515>caching <00:16:33.865>is <00:16:34.214>React <00:16:34.564>Query.

302
00:16:35.535 --> 00:16:38.005
<00:16:35.535>React <00:16:35.768>Query <00:16:36.001>is <00:16:36.235>a <00:16:36.468>really <00:16:36.701>great <00:16:36.935>library.

303
00:16:38.425 --> 00:16:41.765
<00:16:38.425>You <00:16:38.564>can <00:16:38.704>use <00:16:38.844>it <00:16:38.984>both <00:16:39.125>on <00:16:39.265>React <00:16:39.405>and <00:16:39.545>React <00:16:39.685>Native <00:16:39.824>site.

304
00:16:42.265 --> 00:16:44.085
<00:16:42.265>It <00:16:42.731>simplifies <00:16:43.198>data <00:16:43.665>fetching.

305
00:16:44.425 --> 00:16:48.405
<00:16:44.425>It <00:16:44.658>also <00:16:44.891>has <00:16:45.125>intelligent, <00:16:45.358>intelligent <00:16:45.591>caching, <00:16:45.824>uh,

306
00:16:48.715 --> 00:16:52.925
<00:16:48.715>like <00:16:48.948>Kendall's <00:16:49.181>data <00:16:49.415>expression, <00:16:49.648>invalidation, <00:16:49.881>ref <00:16:50.115>fetching,

307
00:16:53.405 --> 00:16:55.325
<00:16:53.405>reducing <00:16:53.685>the <00:16:53.964>number <00:16:54.245>of <00:16:54.525>network <00:16:54.805>requests.

308
00:16:55.625 --> 00:16:59.325
<00:16:55.625>It <00:16:55.780>also <00:16:55.936>has <00:16:56.091>some <00:16:56.247>advantage <00:16:56.402>feature <00:16:56.558>like <00:16:56.713>smart <00:16:56.869>free <00:16:57.025>fetching,

309
00:16:59.575 --> 00:17:02.005
<00:16:59.575>optimistic <00:17:00.041>updates, <00:17:00.508>imp <00:17:00.975>Ation.

310
00:17:02.705 --> 00:17:04.765
<00:17:02.705>And <00:17:03.055>it's <00:17:03.405>really <00:17:03.755>developer <00:17:04.105>friendly.

311
00:17:05.395 --> 00:17:09.605
<00:17:05.395>It's <00:17:05.522>really <00:17:05.649>easy <00:17:05.776>to <00:17:05.904>use <00:17:06.031>it <00:17:06.158>in <00:17:06.285>your <00:17:06.413>application <00:17:06.540>both <00:17:06.667>on <00:17:06.795>React

312
00:17:09.705 --> 00:17:10.725
<00:17:09.704>and <00:17:10.164>React <00:17:10.622>native.

313
00:17:13.145 --> 00:17:15.605
<00:17:13.145>The <00:17:13.378>other <00:17:13.611>challenge <00:17:13.845>we <00:17:14.078>face <00:17:14.311>is <00:17:14.545>smooth

314
00:17:15.665 --> 00:17:17.045
<00:17:15.665>and <00:17:16.286>responsive <00:17:16.907>scrolling.

315
00:17:17.345 --> 00:17:20.085
<00:17:17.345>And <00:17:17.545>it's <00:17:17.745>really <00:17:17.944>critical <00:17:18.145>for <00:17:18.345>your <00:17:18.545>app <00:17:18.745>success

316
00:17:20.595 --> 00:17:23.685
<00:17:20.595>because <00:17:20.795>uh, <00:17:20.995>when <00:17:21.194>you <00:17:21.395>start <00:17:21.595>developing <00:17:21.795>your <00:17:21.995>app,

317
00:17:24.065 --> 00:17:27.245
<00:17:24.065>you <00:17:24.298>will <00:17:24.531>have <00:17:24.765>some <00:17:24.998>list <00:17:25.231>to <00:17:25.465>display

318
00:17:27.745 --> 00:17:30.685
<00:17:27.744>and <00:17:27.944>often <00:17:28.145>that, <00:17:28.344>uh, <00:17:28.544>list <00:17:28.745>gets <00:17:28.945>more <00:17:29.145>bigger

319
00:17:30.865 --> 00:17:32.125
<00:17:30.865>and <00:17:31.148>bigger <00:17:31.432>over <00:17:31.715>the <00:17:31.999>time.

320
00:17:32.785 --> 00:17:36.085
<00:17:32.785>So <00:17:32.901>in <00:17:33.018>React <00:17:33.135>Native, <00:17:33.251>the <00:17:33.368>first <00:17:33.485>that <00:17:33.601>comes <00:17:33.718>up <00:17:33.835>to <00:17:33.951>your <00:17:34.068>mind <00:17:34.185>is

321
00:17:36.085 --> 00:17:39.885
<00:17:36.085>to <00:17:36.225>use <00:17:36.365>the <00:17:36.505>scroll <00:17:36.645>view <00:17:36.785>and <00:17:36.925>view <00:17:37.065>to <00:17:37.205>display <00:17:37.345>those <00:17:37.485>lists.

322
00:17:40.425 --> 00:17:43.445
<00:17:40.425>But <00:17:40.625>as <00:17:40.825>I <00:17:41.024>said, <00:17:41.225>uh, <00:17:41.425>over <00:17:41.625>the <00:17:41.825>time,

323
00:17:43.675 --> 00:17:45.805
<00:17:43.675>that <00:17:43.955>list <00:17:44.235>gets <00:17:44.514>bigger <00:17:44.794>and <00:17:45.075>bigger.

324
00:17:46.065 --> 00:17:49.445
<00:17:46.065>And <00:17:46.205>that <00:17:46.345>means <00:17:46.485>with <00:17:46.625>Scroll <00:17:46.765>view <00:17:46.905>you <00:17:47.045>will <00:17:47.185>get <00:17:47.325>the <00:17:47.465>Fletching

325
00:17:49.545 --> 00:17:52.085
<00:17:49.545>and <00:17:49.745>not <00:17:49.945>so <00:17:50.145>smooth <00:17:50.345>and <00:17:50.545>good <00:17:50.745>user <00:17:50.945>experience.

326
00:17:52.785 --> 00:17:54.565
<00:17:52.785>So, <00:17:53.135>uh, <00:17:53.485>my <00:17:53.835>advice <00:17:54.185>is

327
00:17:54.625 --> 00:17:58.245
<00:17:54.625>to <00:17:54.765>always <00:17:54.905>use <00:17:55.045>the <00:17:55.185>flat <00:17:55.325>list <00:17:55.465>instead <00:17:55.605>of <00:17:55.745>the <00:17:55.885>scroll <00:17:56.025>view.

328
00:17:58.625 --> 00:18:00.805
<00:17:58.625>And <00:17:58.765>if <00:17:58.905>you <00:17:59.045>have <00:17:59.185>a <00:17:59.325>section, <00:17:59.465>you <00:17:59.605>can <00:17:59.745>use <00:17:59.885>section <00:18:00.025>list.

329
00:18:01.265 --> 00:18:04.045
<00:18:01.265>Uh, <00:18:01.405>why <00:18:01.545>use <00:18:01.685>Flat <00:18:01.825>List, <00:18:01.965>uh, <00:18:02.105>instead <00:18:02.245>of <00:18:02.385>the <00:18:02.525>scroll <00:18:02.665>view.

330
00:18:04.045 --> 00:18:08.005
<00:18:04.045>Scroll <00:18:04.220>View <00:18:04.395>will <00:18:04.570>render <00:18:04.745>all <00:18:04.920>your <00:18:05.095>data <00:18:05.270>data <00:18:05.445>immediately.

331
00:18:08.505 --> 00:18:11.325
<00:18:08.505>But <00:18:08.738>Flat <00:18:08.971>List <00:18:09.205>has <00:18:09.438>virtualized <00:18:09.671>list <00:18:09.905>approach.

332
00:18:11.755 --> 00:18:14.565
<00:18:11.755>That <00:18:11.955>means <00:18:12.155>that <00:18:12.355>it'll <00:18:12.555>only <00:18:12.755>render <00:18:12.955>the <00:18:13.155>items

333
00:18:14.675 --> 00:18:17.125
<00:18:14.675>that <00:18:14.908>are <00:18:15.141>currently <00:18:15.375>visible <00:18:15.608>on <00:18:15.841>your <00:18:16.075>screen

334
00:18:17.625 --> 00:18:19.925
<00:18:17.625>and <00:18:17.858>recycle <00:18:18.091>the <00:18:18.325>components <00:18:18.558>as <00:18:18.791>you <00:18:19.025>scroll.

335
00:18:20.545 --> 00:18:23.245
<00:18:20.545>And <00:18:20.685>it's <00:18:20.825>really <00:18:20.965>the <00:18:21.105>best <00:18:21.245>choice <00:18:21.385>for <00:18:21.525>you <00:18:21.665>to <00:18:21.805>use <00:18:21.945>it.

336
00:18:23.425 --> 00:18:26.885
<00:18:23.425>But <00:18:23.658>often <00:18:23.891>the <00:18:24.125>Flat <00:18:24.358>List <00:18:24.591>isn't <00:18:24.825>enough.

337
00:18:27.155 --> 00:18:30.445
<00:18:27.155>This <00:18:27.310>is <00:18:27.466>the <00:18:27.621>same <00:18:27.777>example, <00:18:27.932>just <00:18:28.088>show <00:18:28.243>with <00:18:28.399>Flat <00:18:28.555>List.

338
00:18:31.185 --> 00:18:35.225
<00:18:31.185>And <00:18:31.385>Flat <00:18:31.585>List <00:18:31.784>isn't <00:18:31.985>always <00:18:32.185>just <00:18:32.385>like <00:18:32.585>good

339
00:18:35.325 --> 00:18:38.625
<00:18:35.325>to <00:18:35.480>take <00:18:35.636>your <00:18:35.791>app <00:18:35.947>to <00:18:36.102>the <00:18:36.258>good <00:18:36.413>and <00:18:36.569>smooth <00:18:36.725>experience.

340
00:18:39.165 --> 00:18:42.465
<00:18:39.165>And <00:18:39.292>what <00:18:39.419>I <00:18:39.546>recommend <00:18:39.674>you <00:18:39.801>is <00:18:39.928>to <00:18:40.055>check <00:18:40.183>out <00:18:40.310>the <00:18:40.437>Flash <00:18:40.565>List.

341
00:18:43.405 --> 00:18:47.435
<00:18:43.405>Flash <00:18:43.560>List <00:18:43.716>is <00:18:43.871>developed <00:18:44.027>by <00:18:44.182>Shopify <00:18:44.338>and <00:18:44.493>it's <00:18:44.649>really <00:18:44.805>fast

342
00:18:48.175 --> 00:18:51.795
<00:18:48.175>and <00:18:48.330>it's <00:18:48.486>really, <00:18:48.641>uh, <00:18:48.797>easy <00:18:48.952>to <00:18:49.108>integrate <00:18:49.263>in <00:18:49.419>your <00:18:49.575>application.

343
00:18:53.215 --> 00:18:55.955
<00:18:53.215>You <00:18:53.448>just <00:18:53.681>need <00:18:53.915>to <00:18:54.148>swap <00:18:54.381>your, <00:18:54.615>uh,

344
00:18:56.105 --> 00:18:58.355
<00:18:56.105>component <00:18:56.385>flat <00:18:56.665>list <00:18:56.945>with <00:18:57.225>flash <00:18:57.505>list.

345
00:18:58.735 --> 00:19:01.475
<00:18:58.735>And <00:18:58.875>uh, <00:18:59.014>there <00:18:59.155>is <00:18:59.294>one <00:18:59.435>of <00:18:59.574>the <00:18:59.715>difference <00:18:59.854>with <00:18:59.995>Flash <00:19:00.135>List.

346
00:19:01.575 --> 00:19:05.515
<00:19:01.575>You <00:19:01.775>had <00:19:01.975>to <00:19:02.175>give <00:19:02.375>your <00:19:02.575>component <00:19:02.775>the <00:19:02.975>estimated

347
00:19:05.545 --> 00:19:06.955
<00:19:05.545>item <00:19:06.179>size <00:19:06.813>property.

348
00:19:07.585 --> 00:19:10.555
<00:19:07.585>That <00:19:07.785>property <00:19:07.985>is <00:19:08.185>a <00:19:08.385>numerical <00:19:08.585>value <00:19:08.785>that <00:19:08.985>uh,

349
00:19:11.445 --> 00:19:14.795
<00:19:11.445>hints <00:19:11.600>flash <00:19:11.756>list <00:19:11.911>about <00:19:12.067>the <00:19:12.222>approximate <00:19:12.378>size <00:19:12.533>of <00:19:12.689>the <00:19:12.845>items

350
00:19:15.255 --> 00:19:16.475
<00:19:15.255>before <00:19:15.804>their <00:19:16.352>render.

351
00:19:18.205 --> 00:19:22.305
<00:19:18.205>And <00:19:18.345>uh, <00:19:18.485>you <00:19:18.625>can <00:19:18.764>use <00:19:18.905>some <00:19:19.044>tools <00:19:19.185>to <00:19:19.324>measure <00:19:19.465>this <00:19:19.605>performance.

352
00:19:22.925 --> 00:19:26.785
<00:19:22.925>Uh, <00:19:23.080>both <00:19:23.236>like <00:19:23.391>compare <00:19:23.547>flat <00:19:23.702>list <00:19:23.858>and <00:19:24.013>flat <00:19:24.169>flash <00:19:24.325>list.

353
00:19:27.125 --> 00:19:29.665
<00:19:27.125>Uh, <00:19:27.300>one <00:19:27.475>of <00:19:27.650>the <00:19:27.825>tools <00:19:28.000>is <00:19:28.175>the <00:19:28.350>Bamal <00:19:28.525>Android

354
00:19:29.665 --> 00:19:30.905
<00:19:29.665>Performance <00:19:30.781>Profiler.

355
00:19:31.175 --> 00:19:32.305
<00:19:31.175>That <00:19:31.683>is <00:19:32.192>flashlight.

356
00:19:33.245 --> 00:19:36.665
<00:19:33.245>And <00:19:33.372>the <00:19:33.499>other <00:19:33.626>tool <00:19:33.754>I <00:19:33.881>will <00:19:34.008>recommend <00:19:34.135>you <00:19:34.263>is <00:19:34.390>the <00:19:34.517>React <00:19:34.645>Native

357
00:19:36.665 --> 00:19:37.705
<00:19:36.665>Performance <00:19:37.601>Monitor.

358
00:19:37.895 --> 00:19:40.065
<00:19:37.895>With <00:19:38.245>that <00:19:38.595>is <00:19:38.945>Flipper <00:19:39.295>plugin.

359
00:19:40.685 --> 00:19:43.665
<00:19:40.685>If <00:19:40.825>you <00:19:40.965>use <00:19:41.105>Flipper, <00:19:41.245>you <00:19:41.385>can <00:19:41.524>use <00:19:41.665>Flipper <00:19:41.804>also <00:19:41.945>for <00:19:42.085>debugging

360
00:19:43.725 --> 00:19:46.945
<00:19:43.725>and <00:19:43.852>you <00:19:43.979>just <00:19:44.106>need <00:19:44.234>to <00:19:44.361>enable <00:19:44.488>this <00:19:44.615>plugging <00:19:44.743>and <00:19:44.870>to <00:19:44.997>check <00:19:45.125>it.

361
00:19:50.085 --> 00:19:54.475
<00:19:50.085>Other <00:19:50.225>challenge <00:19:50.365>we <00:19:50.505>face <00:19:50.645>is <00:19:50.785>the <00:19:50.925>offline <00:19:51.065>support <00:19:51.205>in <00:19:51.345>in <00:19:51.485>React

362
00:19:54.475 --> 00:19:58.075
<00:19:54.475>native <00:19:54.708>because, <00:19:54.941>uh, <00:19:55.175>in <00:19:55.408>today's <00:19:55.641>connected <00:19:55.875>world,

363
00:19:58.145 --> 00:20:02.515
<00:19:58.145>user <00:19:58.320>expects <00:19:58.495>like <00:19:58.670>interrupted <00:19:58.845>access <00:19:59.020>to <00:19:59.195>their <00:19:59.370>favorite <00:19:59.545>apps

364
00:20:03.055 --> 00:20:05.275
<00:20:03.055>and <00:20:03.335>regardless <00:20:03.615>of <00:20:03.895>their <00:20:04.175>internet <00:20:04.455>connections,

365
00:20:05.385 --> 00:20:07.755
<00:20:05.385>they <00:20:05.618>want <00:20:05.851>their <00:20:06.085>data <00:20:06.318>to <00:20:06.551>be <00:20:06.785>accessible.

366
00:20:09.195 --> 00:20:14.055
<00:20:09.195>So, <00:20:09.335>uh, <00:20:09.475>to <00:20:09.615>achieve <00:20:09.754>this, <00:20:09.895>you <00:20:10.034>can <00:20:10.175>use <00:20:10.314>the <00:20:10.455>libraries <00:20:10.595>like

367
00:20:14.155 --> 00:20:16.535
<00:20:14.155>as <00:20:14.435>storage, <00:20:14.715>but <00:20:14.995>library <00:20:15.274>I <00:20:15.555>want

368
00:20:16.535 --> 00:20:18.655
<00:20:16.535>to <00:20:16.815>recommend <00:20:17.095>you <00:20:17.375>is <00:20:17.655>React <00:20:17.935>native.

369
00:20:18.835 --> 00:20:22.175
<00:20:18.835>Mm <00:20:19.010>kv <00:20:19.185>that <00:20:19.360>is <00:20:19.535>really <00:20:19.710>good <00:20:19.885>library <00:20:20.060>to <00:20:20.235>use

370
00:20:22.235 --> 00:20:26.575
<00:20:22.235>to <00:20:22.409>cache <00:20:22.584>data <00:20:22.760>locally <00:20:22.935>and <00:20:23.110>to <00:20:23.284>synchronously, <00:20:23.459>uh, <00:20:23.635>store

371
00:20:26.755 --> 00:20:29.175
<00:20:26.755>and <00:20:26.988>retrieve <00:20:27.221>data <00:20:27.455>from <00:20:27.688>the <00:20:27.921>local <00:20:28.155>storage.

372
00:20:29.635 --> 00:20:32.575
<00:20:29.635>And <00:20:29.810>the <00:20:29.985>data <00:20:30.160>is <00:20:30.335>also <00:20:30.510>enabled <00:20:30.685>when <00:20:30.860>the <00:20:31.035>your

373
00:20:32.575 --> 00:20:34.015
<00:20:32.575>application <00:20:32.899>on <00:20:33.223>the <00:20:33.547>next <00:20:33.871>launch.

374
00:20:34.875 --> 00:20:39.255
<00:20:34.875>And <00:20:35.030>this <00:20:35.186>is <00:20:35.341>some <00:20:35.497>example <00:20:35.652>that <00:20:35.808>uh, <00:20:35.963>you <00:20:36.119>can <00:20:36.275>check

375
00:20:39.255 --> 00:20:41.215
<00:20:39.255>with <00:20:39.721>Storage <00:20:40.188>Benchmark <00:20:40.655>Compare

376
00:20:41.245 --> 00:20:43.935
<00:20:41.245>that <00:20:41.478>compares <00:20:41.711>popular <00:20:41.945>libraries <00:20:42.178>against <00:20:42.411>each <00:20:42.645>other.

377
00:20:44.715 --> 00:20:46.975
<00:20:44.715>And <00:20:44.995>you <00:20:45.274>can <00:20:45.554>see <00:20:45.834>itself <00:20:46.115>that

378
00:20:47.345 --> 00:20:50.165
<00:20:47.345>how <00:20:47.578>faster <00:20:47.811>is <00:20:48.045>React <00:20:48.278>native <00:20:48.511>mm <00:20:48.745>carv

379
00:20:50.225 --> 00:20:54.355
<00:20:50.225>and <00:20:50.574>the <00:20:50.925>storage, <00:20:51.274>oh, <00:20:51.625>sorry.

380
00:20:56.855 --> 00:20:58.435
<00:20:56.855>Uh, <00:20:57.135>also <00:20:57.415>one <00:20:57.695>library <00:20:57.975>I <00:20:58.255>want

381
00:20:58.435 --> 00:21:01.755
<00:20:58.435>to <00:20:58.590>recommend <00:20:58.746>you <00:20:58.901>is <00:20:59.057>React <00:20:59.212>native <00:20:59.368>Community <00:20:59.523>Net <00:20:59.679>Info <00:20:59.835>Package

382
00:21:02.375 --> 00:21:06.195
<00:21:02.375>was <00:21:02.515>this <00:21:02.655>package <00:21:02.795>do <00:21:02.935>is <00:21:03.075>that <00:21:03.215>you <00:21:03.355>will <00:21:03.495>get <00:21:03.635>access <00:21:03.775>data

383
00:21:06.255 --> 00:21:08.795
<00:21:06.255>to <00:21:06.488>your <00:21:06.721>connection <00:21:06.955>type <00:21:07.188>and <00:21:07.421>connection <00:21:07.655>quality.

384
00:21:09.415 --> 00:21:11.195
<00:21:09.415>And <00:21:09.695>this <00:21:09.975>is <00:21:10.254>like <00:21:10.534>really <00:21:10.815>important

385
00:21:11.195 --> 00:21:13.915
<00:21:11.195>because <00:21:11.395>uh, <00:21:11.595>you <00:21:11.794>want <00:21:11.995>to <00:21:12.195>inform <00:21:12.395>your <00:21:12.595>user

386
00:21:14.105 --> 00:21:16.115
<00:21:14.105>that <00:21:14.455>their <00:21:14.805>network <00:21:15.155>is <00:21:15.505>unstable

387
00:21:16.455 --> 00:21:18.035
<00:21:16.455>or <00:21:17.155>their, <00:21:17.855>uh,

388
00:21:18.935 --> 00:21:21.755
<00:21:18.935>app <00:21:19.135>doesn't <00:21:19.335>have <00:21:19.534>the <00:21:19.735>internet <00:21:19.935>access <00:21:20.135>their <00:21:20.335>phone

389
00:21:22.215 --> 00:21:24.555
<00:21:22.215>and <00:21:22.415>you <00:21:22.615>want <00:21:22.814>to <00:21:23.014>shove <00:21:23.215>them <00:21:23.415>some <00:21:23.615>feedback

390
00:21:25.095 --> 00:21:28.115
<00:21:25.095>and <00:21:25.270>you <00:21:25.445>can <00:21:25.620>achieve <00:21:25.795>this <00:21:25.970>with, <00:21:26.145>with <00:21:26.320>this <00:21:26.495>library.

391
00:21:31.985 --> 00:21:34.645
<00:21:31.985>And <00:21:32.185>I <00:21:32.385>also <00:21:32.584>want <00:21:32.784>to <00:21:32.985>talk <00:21:33.185>about <00:21:33.385>animation.

392
00:21:35.265 --> 00:21:38.845
<00:21:35.265>Uh, <00:21:35.440>so <00:21:35.615>mobile <00:21:35.790>users <00:21:35.965>are <00:21:36.140>used <00:21:36.315>to <00:21:36.490>the <00:21:36.665>smooth

393
00:21:38.945 --> 00:21:42.005
<00:21:38.945>and <00:21:39.225>well-designed <00:21:39.504>interfaces <00:21:39.784>that <00:21:40.064>quickly <00:21:40.345>respond

394
00:21:42.005 --> 00:21:46.165
<00:21:42.005>to <00:21:42.205>their <00:21:42.405>instructions <00:21:42.605>and <00:21:42.805>provide <00:21:43.005>prompt <00:21:43.205>visual <00:21:43.405>feedback.

395
00:21:46.705 --> 00:21:51.295
<00:21:46.705>As <00:21:46.860>a <00:21:47.016>result, <00:21:47.171>application <00:21:47.327>have <00:21:47.482>to <00:21:47.638>show <00:21:47.793>so <00:21:47.949>many <00:21:48.105>animation.

396
00:21:52.115 --> 00:21:56.735
<00:21:52.115>And <00:21:52.242>with <00:21:52.369>React <00:21:52.496>native <00:21:52.624>you <00:21:52.751>also <00:21:52.878>want <00:21:53.005>to <00:21:53.133>have <00:21:53.260>this <00:21:53.387>in <00:21:53.515>mind.

397
00:21:59.325 --> 00:22:02.385
<00:21:59.325>So <00:21:59.500>what <00:21:59.675>is <00:21:59.850>the, <00:22:00.025>the <00:22:00.200>fastest <00:22:00.375>way <00:22:00.550>to <00:22:00.725>achieve

398
00:22:03.005 --> 00:22:06.465
<00:22:03.005>smooth <00:22:03.238>experience <00:22:03.471>with <00:22:03.705>animation <00:22:03.938>in <00:22:04.171>React <00:22:04.405>native?

399
00:22:06.935 --> 00:22:11.625
<00:22:06.935>That <00:22:07.075>is <00:22:07.215>to, <00:22:07.355>uh, <00:22:07.495>enable <00:22:07.635>a <00:22:07.774>native <00:22:07.915>DRI <00:22:08.054>driver <00:22:08.195>for <00:22:08.335>animated

400
00:22:12.205 --> 00:22:17.185
<00:22:12.205>and <00:22:12.321>you <00:22:12.438>can <00:22:12.554>just <00:22:12.671>enable <00:22:12.788>it <00:22:12.905>as <00:22:13.021>a <00:22:13.138>So <00:22:13.254>in <00:22:13.371>this <00:22:13.488>code, <00:22:13.605>uh,

401
00:22:17.965 --> 00:22:21.985
<00:22:17.965>you <00:22:18.120>can <00:22:18.276>use <00:22:18.431>this <00:22:18.587>for <00:22:18.742>non <00:22:18.898>layer <00:22:19.053>properties <00:22:19.209>like <00:22:19.365>Transform

402
00:22:22.045 --> 00:22:23.065
<00:22:22.045>and <00:22:22.963>Opacity,

403
00:22:23.645 --> 00:22:28.025
<00:22:23.645>but <00:22:23.800>this <00:22:23.956>will <00:22:24.111>not <00:22:24.267>work <00:22:24.422>with <00:22:24.578>Colors, <00:22:24.733>Heights, <00:22:24.889>and <00:22:25.045>others.

404
00:22:28.765 --> 00:22:32.335
<00:22:28.765>And <00:22:29.045>for <00:22:29.325>more <00:22:29.605>complex <00:22:29.885>examples, <00:22:30.165>uh,

405
00:22:32.965 --> 00:22:37.375
<00:22:32.965>complex <00:22:33.139>animation, <00:22:33.314>you <00:22:33.490>should <00:22:33.665>use <00:22:33.840>React <00:22:34.014>native <00:22:34.189>animated, <00:22:34.365>um,

406
00:22:37.965 --> 00:22:41.855
<00:22:37.965>it's <00:22:38.165>APIs <00:22:38.365>compatible <00:22:38.564>with <00:22:38.764>the <00:22:38.965>basic <00:22:39.165>animated <00:22:39.365>library

407
00:22:42.395 --> 00:22:46.045
<00:22:42.395>and <00:22:43.095>in, <00:22:43.795>sorry,

408
00:22:49.625 --> 00:22:50.625
<00:22:49.625>Click <00:22:50.075>or <00:22:50.525>button.

409
00:22:58.055 --> 00:23:00.895
<00:22:58.055>Okay. <00:22:59.455>Yep.

410
00:23:01.515 --> 00:23:04.895
<00:23:01.515>And <00:23:01.690>with <00:23:01.865>React <00:23:02.040>Native <00:23:02.215>Reanimated <00:23:02.390>you <00:23:02.565>can <00:23:02.740>achieve <00:23:02.915>this

411
00:23:04.925 --> 00:23:07.335
<00:23:04.925>realist <00:23:05.274>mode <00:23:05.625>experience <00:23:05.975>with <00:23:06.325>animation,

412
00:23:08.115 --> 00:23:12.215
<00:23:08.115>but <00:23:08.255>also <00:23:08.395>I <00:23:08.535>want <00:23:08.675>you <00:23:08.815>to <00:23:08.955>recommend, <00:23:09.095>uh, <00:23:09.235>two <00:23:09.375>more <00:23:09.515>libraries

413
00:23:12.215 --> 00:23:15.655
<00:23:12.215>that <00:23:12.370>it's <00:23:12.526>really <00:23:12.681>great <00:23:12.837>for <00:23:12.992>animation <00:23:13.148>in <00:23:13.303>React <00:23:13.459>Native <00:23:13.615>one

414
00:23:15.655 --> 00:23:18.215
<00:23:15.655>that <00:23:16.004>we <00:23:16.355>use <00:23:16.705>is <00:23:17.055>lotti.

415
00:23:18.715 --> 00:23:22.535
<00:23:18.715>Uh, <00:23:18.855>you <00:23:18.995>can <00:23:19.135>use <00:23:19.274>Lotti <00:23:19.415>also <00:23:19.554>for <00:23:19.695>I <00:23:19.834>and <00:23:19.975>or <00:23:20.115>Android

416
00:23:22.835 --> 00:23:24.855
<00:23:22.835>and <00:23:23.115>Lot <00:23:23.395>is <00:23:23.675>really <00:23:23.955>gr <00:23:24.235>great

417
00:23:25.015 --> 00:23:27.255
<00:23:25.015>because <00:23:25.248>you <00:23:25.481>can <00:23:25.715>work <00:23:25.948>with <00:23:26.181>your <00:23:26.415>designer

418
00:23:27.395 --> 00:23:29.575
<00:23:27.395>and <00:23:27.745>your <00:23:28.095>designer <00:23:28.445>can, <00:23:28.795>uh,

419
00:23:29.575 --> 00:23:32.135
<00:23:29.575>create <00:23:29.855>animation <00:23:30.135>using <00:23:30.415>Adobe <00:23:30.695>After <00:23:30.975>Effects

420
00:23:32.475 --> 00:23:37.015
<00:23:32.475>and <00:23:32.582>Exporter <00:23:32.690>js <00:23:32.798>o <00:23:32.905>you <00:23:33.013>will <00:23:33.121>use <00:23:33.228>your <00:23:33.336>Js <00:23:33.444>o, <00:23:33.551>uh, <00:23:33.659>to <00:23:33.767>with <00:23:33.875>Lotti

421
00:23:37.155 --> 00:23:39.255
<00:23:37.155>and <00:23:37.504>just <00:23:37.855>show <00:23:38.205>your <00:23:38.555>animation.

422
00:23:40.575 --> 00:23:44.275
<00:23:40.575>And <00:23:40.715>there <00:23:40.855>is <00:23:40.995>one <00:23:41.135>another <00:23:41.275>app <00:23:41.415>that's <00:23:41.555>even <00:23:41.695>faster <00:23:41.835>than <00:23:41.975>lotti

423
00:23:45.025 --> 00:23:48.085
<00:23:45.025>and <00:23:45.258>that <00:23:45.491>is <00:23:45.725>arrive, <00:23:45.958>uh, <00:23:46.191>arrive, <00:23:46.425>uh,

424
00:23:48.145 --> 00:23:51.005
<00:23:48.145>for <00:23:48.285>React <00:23:48.425>Native <00:23:48.565>is <00:23:48.705>also <00:23:48.845>very <00:23:48.985>good <00:23:49.125>choice <00:23:49.264>to <00:23:49.405>go <00:23:49.545>to.

425
00:23:51.545 --> 00:23:54.125
<00:23:51.545>You <00:23:51.778>can <00:23:52.011>check <00:23:52.245>out <00:23:52.478>Lotti <00:23:52.711>and <00:23:52.945>arrive

426
00:23:54.305 --> 00:23:55.965
<00:23:54.305>and <00:23:54.655>compare <00:23:55.005>the <00:23:55.355>same <00:23:55.705>animation.

427
00:23:56.425 --> 00:23:59.125
<00:23:56.425>You <00:23:56.580>will <00:23:56.736>see <00:23:56.891>that <00:23:57.047>with <00:23:57.202>Arrive <00:23:57.358>you <00:23:57.513>will <00:23:57.669>get, <00:23:57.825>uh,

428
00:23:59.125 --> 00:24:01.445
<00:23:59.125>really <00:23:59.405>faster <00:23:59.685>results <00:23:59.965>than <00:24:00.245>with <00:24:00.525>lotti.

429
00:24:04.025 --> 00:24:08.085
<00:24:04.025>So <00:24:04.152>as <00:24:04.279>you <00:24:04.406>saw, <00:24:04.534>if <00:24:04.661>you <00:24:04.788>want <00:24:04.915>your <00:24:05.043>app <00:24:05.170>to <00:24:05.297>succeed, <00:24:05.425>uh,

430
00:24:08.185 --> 00:24:11.445
<00:24:08.185>you <00:24:08.418>have <00:24:08.651>to <00:24:08.885>provide <00:24:09.118>a <00:24:09.351>good <00:24:09.585>performance

431
00:24:12.065 --> 00:24:16.605
<00:24:12.065>and <00:24:12.220>for <00:24:12.376>that <00:24:12.531>you <00:24:12.687>first <00:24:12.842>have <00:24:12.998>to <00:24:13.153>identify <00:24:13.309>a <00:24:13.465>bottleneck.

432
00:24:17.025 --> 00:24:19.405
<00:24:17.025>For <00:24:17.258>us, <00:24:17.491>that <00:24:17.725>bottleneck <00:24:17.958>was <00:24:18.191>obviously <00:24:18.425>communication

433
00:24:19.405 --> 00:24:20.405
<00:24:19.405>with <00:24:19.855>Kong <00:24:20.305>gateways.

434
00:24:20.665 --> 00:24:22.445
<00:24:20.665>So <00:24:20.945>we <00:24:21.225>were <00:24:21.504>focused <00:24:21.784>on <00:24:22.065>that

435
00:24:23.185 --> 00:24:27.565
<00:24:23.185>and <00:24:23.325>we <00:24:23.465>have <00:24:23.605>to <00:24:23.745>implement, <00:24:23.885>um, <00:24:24.024>stuff <00:24:24.165>both <00:24:24.304>on <00:24:24.445>front <00:24:24.585>end

436
00:24:27.625 --> 00:24:31.245
<00:24:27.625>and <00:24:27.752>on <00:24:27.879>the <00:24:28.006>backend <00:24:28.134>so <00:24:28.261>we <00:24:28.388>can <00:24:28.515>get <00:24:28.643>a <00:24:28.770>smooth, <00:24:28.897>uh, <00:24:29.025>experience.

437
00:24:32.825 --> 00:24:36.685
<00:24:32.825>So, <00:24:33.058>sorry. <00:24:33.291>That's <00:24:33.525>basically <00:24:33.758>it <00:24:33.991>for <00:24:34.225>today.

438
00:24:36.685 --> 00:24:40.125
<00:24:36.685>Thank <00:24:36.825>you <00:24:36.965>very <00:24:37.105>much. <00:24:37.245>Uh, <00:24:37.385>if <00:24:37.524>you <00:24:37.665>have <00:24:37.804>any <00:24:37.945>questions <00:24:38.085>asked

439
00:24:40.125 --> 00:24:43.445
<00:24:40.125>for <00:24:40.300>the <00:24:40.475>app <00:24:40.650>and <00:24:40.825>you <00:24:41.000>can <00:24:41.175>find <00:24:41.350>us <00:24:41.525>here.