WEBVTT

1
00:00:17.225 --> 00:00:19.565
<00:00:17.225>Hi, <00:00:17.425>uh, <00:00:17.625>it's <00:00:17.825>a <00:00:18.025>pleasure <00:00:18.225>to <00:00:18.425>be <00:00:18.625>here,

2
00:00:19.825 --> 00:00:22.125
<00:00:19.825>and <00:00:20.058>I'll <00:00:20.291>start <00:00:20.525>with <00:00:20.758>the <00:00:20.991>presentation <00:00:21.224>immediately.

3
00:00:22.995 --> 00:00:26.005
<00:00:22.995>Okay, <00:00:23.228>so <00:00:23.461>let's <00:00:23.695>go <00:00:23.928>for <00:00:24.161>the <00:00:24.395>contents.

4
00:00:27.065 --> 00:00:28.205
<00:00:27.065>Uh, <00:00:27.270>the <00:00:27.475>first <00:00:27.680>thing <00:00:27.885>that <00:00:28.090>I'll,

5
00:00:28.285 --> 00:00:30.965
<00:00:28.285>I <00:00:28.440>will <00:00:28.596>be <00:00:28.751>talking <00:00:28.907>about <00:00:29.062>is <00:00:29.218>why <00:00:29.373>would <00:00:29.529>someone <00:00:29.685>want

6
00:00:30.965 --> 00:00:32.045
<00:00:30.965>to <00:00:31.451>use <00:00:31.937>multi-platform?

7
00:00:32.585 --> 00:00:35.285
<00:00:32.585>Uh, <00:00:32.818>then <00:00:33.051>why <00:00:33.285>Kotlin <00:00:33.518>Multi <00:00:33.751>platform <00:00:33.985>specifically.

8
00:00:35.945 --> 00:00:38.885
<00:00:35.945>Uh, <00:00:36.120>later <00:00:36.295>on, <00:00:36.470>I'll <00:00:36.645>describe <00:00:36.820>our <00:00:36.995>take <00:00:37.170>on <00:00:37.345>it.

9
00:00:38.945 --> 00:00:42.765
<00:00:38.945>The <00:00:39.120>initial <00:00:39.295>idea <00:00:39.470>when <00:00:39.645>we <00:00:39.820>started, <00:00:39.995>uh, <00:00:40.170>the <00:00:40.345>implementations,

10
00:00:43.665 --> 00:00:46.445
<00:00:43.665>uh, <00:00:43.865>we <00:00:44.065>kind <00:00:44.265>of <00:00:44.464>failed <00:00:44.665>the <00:00:44.865>first <00:00:45.065>time,

11
00:00:46.625 --> 00:00:48.285
<00:00:46.625>so <00:00:46.825>we <00:00:47.025>took <00:00:47.225>a <00:00:47.425>step <00:00:47.625>back, <00:00:47.825>step <00:00:48.025>back,

12
00:00:48.465 --> 00:00:50.485
<00:00:48.465>and <00:00:48.665>that's <00:00:48.865>why <00:00:49.065>we <00:00:49.265>ha <00:00:49.465>we <00:00:49.665>have, <00:00:49.865>uh,

13
00:00:50.545 --> 00:00:51.885
<00:00:50.545>our <00:00:50.786>take <00:00:51.027>on <00:00:51.268>it <00:00:51.509>two <00:00:51.751>section.

14
00:00:52.825 --> 00:00:55.285
<00:00:52.825>And <00:00:52.965>the <00:00:53.105>last <00:00:53.245>thing <00:00:53.385>that <00:00:53.525>I'm <00:00:53.665>going <00:00:53.805>to <00:00:53.945>talk <00:00:54.085>about, <00:00:54.225>uh,

15
00:00:55.305 --> 00:00:57.445
<00:00:55.305>is <00:00:55.480>the <00:00:55.655>summary <00:00:55.830>and <00:00:56.005>some <00:00:56.180>of <00:00:56.355>the <00:00:56.530>next <00:00:56.705>steps

16
00:00:57.445 --> 00:00:58.725
<00:00:57.445>that <00:00:57.609>they <00:00:57.774>would, <00:00:57.938>we <00:00:58.103>would <00:00:58.267>like <00:00:58.432>to <00:00:58.597>do.

17
00:00:59.915 --> 00:01:03.405
<00:00:59.915>Okay. <00:01:00.070>But <00:01:00.226>before <00:01:00.381>all, <00:01:00.537>all <00:01:00.692>of <00:01:00.848>that, <00:01:01.003>uh, <00:01:01.159>why <00:01:01.315>me?

18
00:01:03.585 --> 00:01:06.685
<00:01:03.585>Why, <00:01:03.760>why <00:01:03.935>should <00:01:04.110>I <00:01:04.285>talk <00:01:04.460>about, <00:01:04.635>uh, <00:01:04.810>Kotlin <00:01:04.985>multi-platform?

19
00:01:07.145 --> 00:01:09.605
<00:01:07.145>Uh, <00:01:07.378>well, <00:01:07.611>because <00:01:07.845>I <00:01:08.078>already <00:01:08.311>have <00:01:08.545>some

20
00:01:09.605 --> 00:01:10.685
<00:01:09.605>multi-platform <00:01:10.577>experience.

21
00:01:10.825 --> 00:01:12.325
<00:01:10.825>Uh, <00:01:11.162>I <00:01:11.500>developed <00:01:11.837>an <00:01:12.175>application

22
00:01:12.625 --> 00:01:15.125
<00:01:12.625>and <00:01:12.800>published <00:01:12.975>it <00:01:13.150>that <00:01:13.325>was <00:01:13.500>built <00:01:13.675>on <00:01:13.850>Google's <00:01:14.025>J

23
00:01:15.125 --> 00:01:16.685
<00:01:15.125>to <00:01:15.358>objective <00:01:15.591>C <00:01:15.825>Library <00:01:16.058>at <00:01:16.291>the <00:01:16.525>time.

24
00:01:17.105 --> 00:01:18.445
<00:01:17.105>Uh, <00:01:17.306>that <00:01:17.507>was <00:01:17.708>a <00:01:17.908>few <00:01:18.110>years <00:01:18.311>ago.

25
00:01:18.905 --> 00:01:21.605
<00:01:18.905>Uh, <00:01:19.138>it, <00:01:19.371>it <00:01:19.605>was <00:01:19.838>an <00:01:20.071>eye-opening <00:01:20.305>experience,

26
00:01:21.605 --> 00:01:24.405
<00:01:21.605>which <00:01:21.805>just <00:01:22.005>confirmed <00:01:22.205>to <00:01:22.405>me <00:01:22.605>that, <00:01:22.805>uh, <00:01:23.005>multi-platform,

27
00:01:24.405 --> 00:01:27.245
<00:01:24.405>cross <00:01:24.605>platform <00:01:24.805>development <00:01:25.005>is <00:01:25.205>still <00:01:25.405>a <00:01:25.605>utopia, <00:01:25.805>uh,

28
00:01:27.305 --> 00:01:29.325
<00:01:27.305>but <00:01:27.585>maybe <00:01:27.865>cotton <00:01:28.145>multi-platform <00:01:28.425>changed <00:01:28.705>something.

29
00:01:29.325 --> 00:01:30.845
<00:01:29.325>And <00:01:29.520>then <00:01:29.715>why, <00:01:29.911>why? <00:01:30.106>I <00:01:30.302>wanted <00:01:30.497>to <00:01:30.693>investigate,

30
00:01:31.105 --> 00:01:32.165
<00:01:31.105>uh, <00:01:31.343>what <00:01:31.582>are <00:01:31.820>the <00:01:32.059>differences.

31
00:01:33.325 --> 00:01:36.105
<00:01:33.325>The <00:01:33.500>next <00:01:33.675>thing <00:01:33.850>is <00:01:34.025>that <00:01:34.200>I'm <00:01:34.375>in <00:01:34.550>Cortland, <00:01:34.725>uh,

32
00:01:36.105 --> 00:01:37.345
<00:01:36.104>early <00:01:36.663>adapt <00:01:37.221>adapter.

33
00:01:37.845 --> 00:01:41.145
<00:01:37.845>Um, <00:01:38.045>I <00:01:38.245>was <00:01:38.445>publishing <00:01:38.645>also <00:01:38.845>Cortland <00:01:39.045>applications <00:01:39.245>even

34
00:01:41.145 --> 00:01:42.425
<00:01:41.145>before <00:01:41.529>Google <00:01:41.913>announced <00:01:42.297>it

35
00:01:42.525 --> 00:01:44.225
<00:01:42.525>as <00:01:42.875>the <00:01:43.225>official <00:01:43.575>programming <00:01:43.925>language

36
00:01:44.325 --> 00:01:45.385
<00:01:44.325>for <00:01:44.801>Android <00:01:45.279>development.

37
00:01:46.125 --> 00:01:49.545
<00:01:46.125>Uh, <00:01:46.265>some <00:01:46.405>of <00:01:46.545>the <00:01:46.685>projects <00:01:46.825>I <00:01:46.965>worked, <00:01:47.105>uh, <00:01:47.245>on <00:01:47.385>were, <00:01:47.525>uh,

38
00:01:49.545 --> 00:01:51.105
<00:01:49.545>from <00:01:50.011>Silicon <00:01:50.478>Valley <00:01:50.945>startups

39
00:01:51.105 --> 00:01:53.545
<00:01:51.104>to <00:01:51.338>multi-billion <00:01:51.571>dollar <00:01:51.804>New <00:01:52.038>York <00:01:52.271>City <00:01:52.505>companies.

40
00:01:54.375 --> 00:01:57.785
<00:01:54.375>Also, <00:01:54.502>a <00:01:54.629>few <00:01:54.756>words <00:01:54.884>about <00:01:55.011>five, <00:01:55.138>uh, <00:01:55.265>five <00:01:55.393>is <00:01:55.520>a <00:01:55.647>Google, <00:01:55.775>uh,

41
00:01:57.805 --> 00:01:59.505
<00:01:57.805>Google <00:01:58.271>certified <00:01:58.738>five, <00:01:59.205>uh,

42
00:01:59.685 --> 00:02:02.145
<00:01:59.685>to <00:01:59.885>be <00:02:00.085>a <00:02:00.285>Google <00:02:00.485>developers <00:02:00.685>agency <00:02:00.885>in <00:02:01.085>2018.

43
00:02:02.495 --> 00:02:05.385
<00:02:02.495>They <00:02:02.650>basically <00:02:02.806>confirmed <00:02:02.961>that <00:02:03.117>we <00:02:03.272>know <00:02:03.428>how <00:02:03.583>to <00:02:03.739>do <00:02:03.895>Android.

44
00:02:06.425 --> 00:02:10.205
<00:02:06.425>Uh, <00:02:06.625>we <00:02:06.825>solve <00:02:07.024>problems <00:02:07.225>by <00:02:07.425>providing <00:02:07.625>successful, <00:02:07.825>long-lasting,

45
00:02:10.205 --> 00:02:11.205
<00:02:10.205>profitable <00:02:11.105>solutions.

46
00:02:11.345 --> 00:02:15.885
<00:02:11.345>And <00:02:11.484>some <00:02:11.625>of <00:02:11.765>the <00:02:11.905>clients <00:02:12.045>are, <00:02:12.185>uh, <00:02:12.325>Rosetta <00:02:12.465>Stone, <00:02:12.605>Napster, <00:02:12.745>uh,

47
00:02:15.885 --> 00:02:18.285
<00:02:15.885>game <00:02:16.165>of <00:02:16.445>Thrones, <00:02:16.725>uh, <00:02:17.005>Marriott <00:02:17.285>Hotels

48
00:02:18.305 --> 00:02:19.725
<00:02:18.305>and <00:02:18.944>Crestron <00:02:19.583>Electronics,

49
00:02:20.025 --> 00:02:23.205
<00:02:20.025>and <00:02:20.165>that, <00:02:20.305>that's <00:02:20.445>all <00:02:20.585>be, <00:02:20.725>uh, <00:02:20.865>that's <00:02:21.005>all <00:02:21.145>about <00:02:21.285>why <00:02:21.425>me.

50
00:02:23.915 --> 00:02:25.685
<00:02:23.915>Okay. <00:02:24.195>Let's <00:02:24.475>dive <00:02:24.755>into <00:02:25.035>the <00:02:25.315>presentation.

51
00:02:26.105 --> 00:02:29.605
<00:02:26.105>So <00:02:26.280>why <00:02:26.454>would <00:02:26.630>someone <00:02:26.804>want <00:02:26.980>to <00:02:27.155>use, <00:02:27.329>uh, <00:02:27.505>multi-platform?

52
00:02:31.775 --> 00:02:36.115
<00:02:31.775>Uh, <00:02:31.902>the <00:02:32.029>current <00:02:32.156>tech <00:02:32.284>that <00:02:32.411>is <00:02:32.538>out <00:02:32.665>there <00:02:32.793>is, <00:02:32.920>uh, <00:02:33.047>react <00:02:33.175>native,

53
00:02:36.575 --> 00:02:39.995
<00:02:36.575>uh, <00:02:36.924>den <00:02:37.274>flatter <00:02:37.625>and <00:02:37.975>examine.

54
00:02:40.655 --> 00:02:44.195
<00:02:40.655>Uh, <00:02:40.810>you <00:02:40.966>can <00:02:41.121>build <00:02:41.277>multi-platform <00:02:41.432>solutions <00:02:41.588>on <00:02:41.743>all <00:02:41.899>of <00:02:42.055>those.

55
00:02:44.655 --> 00:02:46.635
<00:02:44.655>We <00:02:44.888>have <00:02:45.121>experience <00:02:45.355>with <00:02:45.588>Rea <00:02:45.821>React <00:02:46.055>native.

56
00:02:46.695 --> 00:02:50.755
<00:02:46.695>We <00:02:46.870>have <00:02:47.045>a <00:02:47.220>team <00:02:47.394>from <00:02:47.570>built <00:02:47.745>from, <00:02:47.920>uh, <00:02:48.095>2015,

57
00:02:51.255 --> 00:02:54.915
<00:02:51.255>and <00:02:51.430>we <00:02:51.605>also <00:02:51.780>built <00:02:51.954>the <00:02:52.130>em, <00:02:52.305>uh, <00:02:52.480>em <00:02:52.655>library,

58
00:02:55.475 --> 00:02:59.285
<00:02:55.475>EM <00:02:55.674>technology, <00:02:55.875>which <00:02:56.075>can, <00:02:56.275>which <00:02:56.475>provides <00:02:56.674>you, <00:02:56.875>uh,

59
00:02:59.465 --> 00:03:01.285
<00:02:59.465>to <00:02:59.931>create <00:03:00.398>multi-platform <00:03:00.865>solutions.

60
00:03:01.395 --> 00:03:03.885
<00:03:01.395>Also, <00:03:01.595>it's <00:03:01.795>built <00:03:01.995>on <00:03:02.195>top <00:03:02.395>of <00:03:02.595>React <00:03:02.795>Native.

61
00:03:05.475 --> 00:03:09.335
<00:03:05.475>So <00:03:05.630>the <00:03:05.786>vision <00:03:05.941>about <00:03:06.097>multi-platform <00:03:06.252>is <00:03:06.408>you <00:03:06.563>write <00:03:06.719>code <00:03:06.875>once

62
00:03:09.395 --> 00:03:11.735
<00:03:09.395>and <00:03:09.595>you <00:03:09.795>run <00:03:09.995>it <00:03:10.195>on <00:03:10.395>every <00:03:10.595>PR <00:03:10.795>platform.

63
00:03:11.755 --> 00:03:15.855
<00:03:11.755>You <00:03:11.910>run <00:03:12.066>it <00:03:12.221>everywhere. <00:03:12.377>Uh, <00:03:12.532>it <00:03:12.688>makes <00:03:12.843>your <00:03:12.999>development <00:03:13.155>faster.

64
00:03:16.275 --> 00:03:19.895
<00:03:16.275>Uh, <00:03:16.430>faster <00:03:16.586>development <00:03:16.741>means <00:03:16.897>that, <00:03:17.052>uh, <00:03:17.208>the <00:03:17.363>cost <00:03:17.519>is <00:03:17.675>lower

65
00:03:20.195 --> 00:03:23.335
<00:03:20.195>and, <00:03:20.394>uh, <00:03:20.595>the <00:03:20.795>return <00:03:20.995>of <00:03:21.195>investment <00:03:21.394>is <00:03:21.595>bigger.

66
00:03:24.325 --> 00:03:25.985
<00:03:24.325>Uh, <00:03:24.558>you <00:03:24.791>only <00:03:25.024>have <00:03:25.258>one <00:03:25.491>code <00:03:25.725>base,

67
00:03:26.275 --> 00:03:29.545
<00:03:26.275>which <00:03:26.508>is <00:03:26.741>following <00:03:26.975>the <00:03:27.208>well-known, <00:03:27.441>uh, <00:03:27.675>uh,

68
00:03:29.695 --> 00:03:31.705
<00:03:29.695>developer's <00:03:30.161>principle <00:03:30.628>called <00:03:31.095>Dr.

69
00:03:31.705 --> 00:03:33.385
<00:03:31.704>Peter <00:03:31.984>Self <00:03:32.265>or <00:03:32.545>the <00:03:32.825>dry <00:03:33.105>principle.

70
00:03:34.045 --> 00:03:37.105
<00:03:34.045>Uh, <00:03:34.278>there <00:03:34.511>are <00:03:34.745>multiple, <00:03:34.978>multiple <00:03:35.211>benefits <00:03:35.445>of

71
00:03:37.645 --> 00:03:38.785
<00:03:37.645>not <00:03:38.158>repeating <00:03:38.671>yourselves.

72
00:03:39.045 --> 00:03:42.665
<00:03:39.045>Uh, <00:03:39.220>when <00:03:39.395>you <00:03:39.570>develop <00:03:39.745>an <00:03:39.920>application, <00:03:40.095>uh, <00:03:40.270>for <00:03:40.445>Android

73
00:03:42.665 --> 00:03:43.785
<00:03:42.665>and <00:03:43.168>IS <00:03:43.673>uh,

74
00:03:43.975 --> 00:03:46.865
<00:03:43.975>even <00:03:44.208>though <00:03:44.441>there <00:03:44.674>are <00:03:44.908>different <00:03:45.141>programming <00:03:45.375>languages,

75
00:03:46.865 --> 00:03:48.145
<00:03:46.865>those <00:03:47.249>are <00:03:47.633>different <00:03:48.017>platforms.

76
00:03:48.285 --> 00:03:51.905
<00:03:48.285>You <00:03:48.424>again <00:03:48.565>write, <00:03:48.704>uh, <00:03:48.845>the <00:03:48.984>same <00:03:49.125>logic <00:03:49.265>on <00:03:49.405>both <00:03:49.545>platforms, <00:03:49.685>that

77
00:03:51.905 --> 00:03:54.225
<00:03:51.905>that's <00:03:52.105>what <00:03:52.305>I <00:03:52.505>meant <00:03:52.705>with <00:03:52.905>don't <00:03:53.105>repeat <00:03:53.305>yourself

78
00:03:54.525 --> 00:03:55.665
<00:03:54.525>for <00:03:54.781>the <00:03:55.038>one <00:03:55.294>code <00:03:55.551>base.

79
00:03:57.345 --> 00:04:00.395
<00:03:57.345>Also, <00:03:57.500>one <00:03:57.656>set <00:03:57.811>of <00:03:57.967>tests, <00:03:58.122>the <00:03:58.278>principle <00:03:58.433>is <00:03:58.589>the <00:03:58.745>same,

80
00:04:00.395 --> 00:04:01.995
<00:04:00.395>even <00:04:00.745>though <00:04:01.095>I'm <00:04:01.445>repeating <00:04:01.795>myself

81
00:04:02.365 --> 00:04:03.675
<00:04:02.365>again, <00:04:02.758>don't <00:04:03.151>repeat <00:04:03.544>yourself.

82
00:04:03.675 --> 00:04:04.955
<00:04:03.675>Principle <00:04:04.059>is <00:04:04.443>followed <00:04:04.827>here.

83
00:04:05.335 --> 00:04:08.955
<00:04:05.335>Uh, <00:04:05.490>writing <00:04:05.646>tests <00:04:05.801>is, <00:04:05.957>it <00:04:06.112>can, <00:04:06.268>uh, <00:04:06.423>if <00:04:06.579>you <00:04:06.735>want

84
00:04:08.955 --> 00:04:11.755
<00:04:08.955>to <00:04:09.095>write <00:04:09.235>them <00:04:09.375>correctly, <00:04:09.515>and <00:04:09.655>if <00:04:09.795>you <00:04:09.935>want <00:04:10.075>to <00:04:10.215>cover, <00:04:10.355>uh,

85
00:04:11.775 --> 00:04:15.435
<00:04:11.775>the <00:04:11.975>business <00:04:12.175>logic <00:04:12.375>that, <00:04:12.575>uh, <00:04:12.775>the <00:04:12.975>core <00:04:13.175>functionalities

86
00:04:15.495 --> 00:04:19.235
<00:04:15.495>of <00:04:15.670>the <00:04:15.845>application <00:04:16.019>that <00:04:16.195>can, <00:04:16.370>uh, <00:04:16.545>get, <00:04:16.720>uh, <00:04:16.894>hard

87
00:04:19.495 --> 00:04:21.955
<00:04:19.495>and <00:04:19.774>doing <00:04:20.055>it <00:04:20.334>once <00:04:20.615>saves <00:04:20.894>time

88
00:04:22.215 --> 00:04:25.035
<00:04:22.215>and <00:04:22.370>you <00:04:22.526>have <00:04:22.681>the <00:04:22.837>time <00:04:22.992>to <00:04:23.148>do <00:04:23.303>it, <00:04:23.459>uh, <00:04:23.614>perfectly.

89
00:04:26.135 --> 00:04:28.025
<00:04:26.135>Also, <00:04:26.368>you <00:04:26.601>have <00:04:26.835>one <00:04:27.068>set <00:04:27.301>of <00:04:27.534>bugs,

90
00:04:28.085 --> 00:04:30.065
<00:04:28.085>and <00:04:28.260>it's <00:04:28.435>easier <00:04:28.609>to <00:04:28.784>find <00:04:28.960>and <00:04:29.135>fix <00:04:29.310>those <00:04:29.484>issues.

91
00:04:30.285 --> 00:04:32.865
<00:04:30.285>And <00:04:30.392>what <00:04:30.500>do <00:04:30.608>I <00:04:30.715>mean <00:04:30.823>when <00:04:30.931>I <00:04:31.038>said <00:04:31.146>that <00:04:31.254>we <00:04:31.361>have <00:04:31.469>only <00:04:31.577>one <00:04:31.685>set

92
00:04:32.865 --> 00:04:35.105
<00:04:32.865>of <00:04:33.065>bugs <00:04:33.265>and <00:04:33.465>it's <00:04:33.665>easier <00:04:33.865>to <00:04:34.065>find <00:04:34.265>them?

93
00:04:35.535 --> 00:04:38.985
<00:04:35.534>Well, <00:04:35.662>if <00:04:35.789>you <00:04:35.916>have <00:04:36.044>a <00:04:36.171>bug, <00:04:36.298>you <00:04:36.425>have <00:04:36.553>it <00:04:36.680>on <00:04:36.807>both <00:04:36.934>platforms.

94
00:04:38.985 --> 00:04:40.305
<00:04:38.985>That's <00:04:39.222>why <00:04:39.460>it's <00:04:39.697>easier <00:04:39.935>to <00:04:40.173>find,

95
00:04:40.305 --> 00:04:43.185
<00:04:40.305>because <00:04:40.445>you <00:04:40.585>have <00:04:40.725>it <00:04:40.865>both <00:04:41.005>on <00:04:41.145>Android <00:04:41.285>and <00:04:41.425>both <00:04:41.565>on <00:04:41.705>iOS.

96
00:04:43.645 --> 00:04:46.065
<00:04:43.645>So <00:04:43.820>it <00:04:43.995>will <00:04:44.169>be, <00:04:44.344>uh, <00:04:44.520>easier <00:04:44.695>to <00:04:44.870>find <00:04:45.044>it.

97
00:04:46.065 --> 00:04:47.345
<00:04:46.065>And <00:04:46.257>once <00:04:46.449>you <00:04:46.641>fix <00:04:46.833>it, <00:04:47.025>you <00:04:47.217>know

98
00:04:47.345 --> 00:04:48.905
<00:04:47.345>that <00:04:47.578>you <00:04:47.811>fix <00:04:48.045>it <00:04:48.278>on <00:04:48.511>both <00:04:48.745>platforms.

99
00:04:50.495 --> 00:04:54.905
<00:04:50.495>Okay. <00:04:50.635>So <00:04:50.775>some <00:04:50.915>of <00:04:51.055>the <00:04:51.195>current <00:04:51.335>tech, <00:04:51.475>uh, <00:04:51.615>drawbacks <00:04:51.755>that, <00:04:51.895>uh,

100
00:04:54.965 --> 00:04:57.905
<00:04:54.965>is <00:04:55.165>out <00:04:55.365>there <00:04:55.565>is, <00:04:55.765>for <00:04:55.965>example, <00:04:56.165>lower <00:04:56.365>performance.

101
00:04:58.045 --> 00:04:59.945
<00:04:58.045>Uh, <00:04:58.278>react <00:04:58.511>native <00:04:58.745>runs <00:04:58.978>a <00:04:59.211>separate <00:04:59.445>engine

102
00:04:59.945 --> 00:05:01.945
<00:04:59.945>because <00:05:00.178>React <00:05:00.411>native <00:05:00.645>is <00:05:00.878>written <00:05:01.111>in <00:05:01.344>JavaScript,

103
00:05:02.085 --> 00:05:05.025
<00:05:02.085>so <00:05:02.240>the <00:05:02.396>performance <00:05:02.551>is <00:05:02.707>not <00:05:02.862>native, <00:05:03.018>uh, <00:05:03.173>for <00:05:03.329>React <00:05:03.484>Native.

104
00:05:06.455 --> 00:05:08.625
<00:05:06.455>Also, <00:05:06.630>there <00:05:06.805>is <00:05:06.979>a <00:05:07.155>wait <00:05:07.330>time <00:05:07.505>for <00:05:07.680>new <00:05:07.854>features.

105
00:05:09.165 --> 00:05:11.945
<00:05:09.165>Uh, <00:05:09.515>sometimes <00:05:09.865>when, <00:05:10.215>when <00:05:10.565>Android

106
00:05:12.085 --> 00:05:15.785
<00:05:12.085>or <00:05:12.224>iOS, <00:05:12.364>uh, <00:05:12.505>develop <00:05:12.645>a <00:05:12.784>new <00:05:12.924>feature, <00:05:13.065>they <00:05:13.205>publish <00:05:13.344>it <00:05:13.484>out.

107
00:05:15.885 --> 00:05:18.785
<00:05:15.885>Uh, <00:05:16.118>the <00:05:16.351>developers <00:05:16.585>can't, <00:05:16.818>the <00:05:17.051>cross <00:05:17.284>platform

108
00:05:18.805 --> 00:05:22.505
<00:05:18.805>or <00:05:18.980>multi-platform <00:05:19.155>developers, <00:05:19.330>uh, <00:05:19.505>can't <00:05:19.680>use <00:05:19.855>it <00:05:20.030>until <00:05:20.205>that,

109
00:05:22.605 --> 00:05:25.225
<00:05:22.605>uh, <00:05:22.780>new <00:05:22.955>feature <00:05:23.130>is <00:05:23.305>wrapped <00:05:23.480>inside <00:05:23.655>of <00:05:23.830>their, <00:05:24.005>uh,

110
00:05:25.225 --> 00:05:27.105
<00:05:25.225>multi-platform <00:05:25.575>library <00:05:25.925>that <00:05:26.275>they <00:05:26.625>use.

111
00:05:27.485 --> 00:05:30.305
<00:05:27.485>So <00:05:27.765>there <00:05:28.045>is <00:05:28.325>always <00:05:28.605>a <00:05:28.885>month

112
00:05:30.525 --> 00:05:34.145
<00:05:30.525>or <00:05:30.680>so <00:05:30.836>a <00:05:30.991>delay, <00:05:31.147>uh, <00:05:31.302>with <00:05:31.458>new, <00:05:31.613>new <00:05:31.769>platform <00:05:31.924>features.

113
00:05:35.885 --> 00:05:39.255
<00:05:35.885>Also, <00:05:36.118>the <00:05:36.351>updates <00:05:36.585>can <00:05:36.818>become, <00:05:37.051>uh, <00:05:37.284>problematic

114
00:05:39.255 --> 00:05:41.295
<00:05:39.255>because, <00:05:39.955>uh, <00:05:40.655>updating

115
00:05:41.355 --> 00:05:43.855
<00:05:41.355>to <00:05:41.510>a <00:05:41.666>newer <00:05:41.821>version <00:05:41.977>usually <00:05:42.132>breaks <00:05:42.288>the <00:05:42.443>current <00:05:42.599>code <00:05:42.755>base.

116
00:05:46.485 --> 00:05:49.385
<00:05:46.485>Uh, <00:05:46.718>sometimes <00:05:46.951>the, <00:05:47.185>on <00:05:47.418>some <00:05:47.651>platforms, <00:05:47.885>uh,

117
00:05:49.435 --> 00:05:51.345
<00:05:49.435>there <00:05:49.785>is <00:05:50.135>a <00:05:50.485>complicated <00:05:50.835>communication

118
00:05:51.345 --> 00:05:52.465
<00:05:51.345>with <00:05:51.681>the <00:05:52.017>native <00:05:52.353>platform.

119
00:05:52.805 --> 00:05:56.585
<00:05:52.805>You <00:05:52.945>have <00:05:53.085>to <00:05:53.225>build <00:05:53.365>bridges <00:05:53.505>and <00:05:53.645>building <00:05:53.785>bridges, <00:05:53.925>uh, <00:05:54.065>is <00:05:54.205>hard.

120
00:05:56.645 --> 00:05:59.685
<00:05:56.645>And <00:05:56.820>it's <00:05:56.995>also <00:05:57.169>sort <00:05:57.344>of <00:05:57.520>a <00:05:57.695>boiler <00:05:57.870>boilerplate <00:05:58.044>code,

121
00:05:59.685 --> 00:06:00.845
<00:05:59.685>which <00:05:59.893>we <00:06:00.102>would <00:06:00.311>like <00:06:00.520>to <00:06:00.729>avoid.

122
00:06:02.965 --> 00:06:06.425
<00:06:02.965>And <00:06:03.120>maybe <00:06:03.276>the <00:06:03.431>biggest <00:06:03.587>issue <00:06:03.742>is <00:06:03.898>another <00:06:04.053>layer <00:06:04.209>of <00:06:04.364>issues,

123
00:06:06.425 --> 00:06:09.945
<00:06:06.425>because <00:06:06.580>both <00:06:06.736>platforms, <00:06:06.891>as <00:06:07.047>we <00:06:07.202>know <00:06:07.358>from <00:06:07.513>before, <00:06:07.669>both <00:06:07.825>Android

124
00:06:09.945 --> 00:06:11.265
<00:06:09.945>and <00:06:10.242>iOS <00:06:10.539>already <00:06:10.836>have <00:06:11.133>bugs.

125
00:06:11.265 --> 00:06:14.225
<00:06:11.265>They're <00:06:11.405>not <00:06:11.544>perfect. <00:06:11.685>And <00:06:11.825>this <00:06:11.965>is <00:06:12.104>a <00:06:12.245>new <00:06:12.385>layer <00:06:12.525>on <00:06:12.664>top

126
00:06:14.225 --> 00:06:17.595
<00:06:14.225>of <00:06:14.380>those <00:06:14.536>bugs, <00:06:14.691>and <00:06:14.847>you <00:06:15.002>have <00:06:15.158>to <00:06:15.313>find <00:06:15.469>a <00:06:15.625>way

127
00:06:17.615 --> 00:06:21.875
<00:06:17.615>to <00:06:17.790>create <00:06:17.965>an <00:06:18.140>application, <00:06:18.315>which, <00:06:18.490>uh, <00:06:18.665>hides <00:06:18.840>both <00:06:19.015>platform,

128
00:06:22.135 --> 00:06:26.675
<00:06:22.135>uh, <00:06:22.335>bugs <00:06:22.534>and <00:06:22.735>also <00:06:22.935>the <00:06:23.135>multi-platform <00:06:23.335>layer <00:06:23.534>bugs.

129
00:06:28.845 --> 00:06:30.865
<00:06:28.845>Uh, <00:06:29.195>the <00:06:29.545>last, <00:06:29.895>the <00:06:30.245>second

130
00:06:30.885 --> 00:06:33.825
<00:06:30.885>to <00:06:31.118>last <00:06:31.351>thing <00:06:31.585>actually <00:06:31.818>is <00:06:32.051>finding <00:06:32.284>developers.

131
00:06:34.325 --> 00:06:36.465
<00:06:34.325>Uh, <00:06:34.558>I <00:06:34.791>mentioned <00:06:35.025>here <00:06:35.258>that <00:06:35.491>good <00:06:35.724>developers

132
00:06:36.465 --> 00:06:39.345
<00:06:36.465>with <00:06:36.620>CLO <00:06:36.776>cross-platform <00:06:36.931>knowledge <00:06:37.087>are <00:06:37.242>hard <00:06:37.398>to, <00:06:37.553>hard <00:06:37.709>to <00:06:37.865>find.

133
00:06:40.005 --> 00:06:41.945
<00:06:40.005>Why <00:06:40.284>are <00:06:40.565>they <00:06:40.844>hard <00:06:41.125>to <00:06:41.405>find?

134
00:06:41.945 --> 00:06:45.225
<00:06:41.945>Because <00:06:42.120>they <00:06:42.295>need <00:06:42.469>to <00:06:42.645>know, <00:06:42.820>uh, <00:06:42.995>about, <00:06:43.170>for <00:06:43.344>example,

135
00:06:45.405 --> 00:06:47.705
<00:06:45.405>if <00:06:45.638>you <00:06:45.871>are <00:06:46.104>developing <00:06:46.338>a <00:06:46.571>multi-platform <00:06:46.804>application

136
00:06:47.705 --> 00:06:49.825
<00:06:47.705>for <00:06:47.938>Android <00:06:48.171>and <00:06:48.405>iOS, <00:06:48.638>uh, <00:06:48.871>you <00:06:49.104>have

137
00:06:49.825 --> 00:06:52.025
<00:06:49.825>to <00:06:50.104>have <00:06:50.385>a <00:06:50.664>good <00:06:50.945>multi-platform <00:06:51.224>developer,

138
00:06:52.035 --> 00:06:55.425
<00:06:52.034>which <00:06:52.268>knows <00:06:52.501>both <00:06:52.734>Android, <00:06:52.968>uh, <00:06:53.201>Android, <00:06:53.434>iOS,

139
00:06:55.605 --> 00:06:58.345
<00:06:55.605>and <00:06:55.805>also <00:06:56.005>the <00:06:56.205>cross-platform <00:06:56.405>library, <00:06:56.605>which <00:06:56.805>you <00:06:57.005>use.

140
00:06:58.885 --> 00:07:01.025
<00:06:58.885>And <00:06:59.235>finding, <00:06:59.585>uh, <00:06:59.935>those <00:07:00.284>kind

141
00:07:01.025 --> 00:07:02.545
<00:07:01.025>of <00:07:01.298>developers <00:07:01.572>can <00:07:01.845>get <00:07:02.119>really <00:07:02.393>hard.

142
00:07:03.995 --> 00:07:08.045
<00:07:03.995>And <00:07:04.135>also <00:07:04.275>some <00:07:04.415>of <00:07:04.555>the <00:07:04.695>current <00:07:04.835>tech <00:07:04.975>is <00:07:05.115>not <00:07:05.255>free. <00:07:05.395>Okay.

143
00:07:08.385 --> 00:07:13.285
<00:07:08.385>So <00:07:08.585>we, <00:07:08.784>we <00:07:08.985>talked <00:07:09.185>about <00:07:09.385>the <00:07:09.585>multi-platform, <00:07:09.784>uh,

144
00:07:13.495 --> 00:07:16.005
<00:07:13.495>world <00:07:13.775>Mobile, <00:07:14.055>multiplatform <00:07:14.335>world <00:07:14.615>in <00:07:14.895>general.

145
00:07:16.425 --> 00:07:17.885
<00:07:16.425>So <00:07:16.687>why <00:07:16.950>exactly <00:07:17.213>would <00:07:17.476>someone <00:07:17.739>want

146
00:07:17.885 --> 00:07:19.165
<00:07:17.885>to <00:07:18.269>use <00:07:18.653>Kotlin <00:07:19.037>Multiplatform?

147
00:07:21.155 --> 00:07:22.415
<00:07:21.155>Uh, <00:07:21.722>let's <00:07:22.289>just,

148
00:07:23.235 --> 00:07:25.535
<00:07:23.235>let <00:07:23.390>me <00:07:23.546>just <00:07:23.701>say <00:07:23.857>a <00:07:24.012>few <00:07:24.168>words <00:07:24.323>about <00:07:24.479>Kotlin <00:07:24.635>first.

149
00:07:25.595 --> 00:07:28.015
<00:07:25.595>So, <00:07:25.828>Kotlin <00:07:26.061>is <00:07:26.295>a <00:07:26.528>programming <00:07:26.761>language <00:07:26.995>built,

150
00:07:28.275 --> 00:07:29.535
<00:07:28.275>uh, <00:07:28.842>from <00:07:29.409>JetBrains.

151
00:07:30.195 --> 00:07:33.215
<00:07:30.195>Uh, <00:07:30.395>a <00:07:30.594>little <00:07:30.795>known <00:07:30.995>fact <00:07:31.195>about <00:07:31.395>Kotlin <00:07:31.594>is

152
00:07:33.365 --> 00:07:35.815
<00:07:33.365>that <00:07:33.598>it <00:07:33.831>actually <00:07:34.065>has <00:07:34.298>three <00:07:34.531>different <00:07:34.765>flavors,

153
00:07:35.825 --> 00:07:37.415
<00:07:35.825>three <00:07:36.291>different <00:07:36.758>compiled <00:07:37.224>targets.

154
00:07:38.035 --> 00:07:41.135
<00:07:38.034>So <00:07:38.268>when <00:07:38.501>I, <00:07:38.734>I'm <00:07:38.968>an <00:07:39.201>Android <00:07:39.434>developer,

155
00:07:41.135 --> 00:07:44.095
<00:07:41.135>when <00:07:41.290>I <00:07:41.446>talk <00:07:41.601>about <00:07:41.757>Kolin, <00:07:41.912>I <00:07:42.068>usually <00:07:42.223>talk <00:07:42.379>about <00:07:42.534>cotton.

156
00:07:44.295 --> 00:07:46.815
<00:07:44.295>JVM <00:07:44.495>Cotton, <00:07:44.695>JVM. <00:07:44.895>This <00:07:45.095>is <00:07:45.295>the <00:07:45.495>left <00:07:45.695>one.

157
00:07:46.815 --> 00:07:49.935
<00:07:46.815>Cotton, <00:07:46.990>JVM, <00:07:47.165>uh, <00:07:47.340>compiles <00:07:47.515>down <00:07:47.690>to <00:07:47.865>Java <00:07:48.040>Byte <00:07:48.215>Code,

158
00:07:49.935 --> 00:07:52.055
<00:07:49.935>which <00:07:50.168>then <00:07:50.401>comp, <00:07:50.635>uh, <00:07:50.868>is <00:07:51.101>wrapped <00:07:51.335>in,

159
00:07:52.195 --> 00:07:53.655
<00:07:52.195>in <00:07:52.523>dex <00:07:52.852>classes <00:07:53.180>for <00:07:53.508>Android.

160
00:07:54.315 --> 00:07:56.935
<00:07:54.315>But <00:07:54.515>with <00:07:54.715>cotton <00:07:54.915>JVM, <00:07:55.115>you <00:07:55.315>can <00:07:55.515>develop, <00:07:55.715>uh,

161
00:07:56.935 --> 00:07:59.415
<00:07:56.935>Android <00:07:57.215>applications, <00:07:57.495>you <00:07:57.775>can <00:07:58.055>develop <00:07:58.335>backhands,

162
00:07:59.415 --> 00:08:01.215
<00:07:59.415>and <00:07:59.648>you <00:07:59.881>can <00:08:00.115>develop <00:08:00.348>also <00:08:00.581>desktop <00:08:00.815>applications.

163
00:08:01.445 --> 00:08:04.175
<00:08:01.445>It's <00:08:01.724>basically, <00:08:02.005>uh, <00:08:02.284>the <00:08:02.565>same <00:08:02.844>Java,

164
00:08:04.395 --> 00:08:06.655
<00:08:04.395>the <00:08:04.628>same <00:08:04.861>byte <00:08:05.094>code <00:08:05.328>which <00:08:05.561>Javas <00:08:05.794>generates.

165
00:08:07.475 --> 00:08:10.895
<00:08:07.475>The <00:08:07.825>other <00:08:08.175>two, <00:08:08.525>uh, <00:08:08.875>uh,

166
00:08:11.125 --> 00:08:14.255
<00:08:11.125>flavors <00:08:11.325>from <00:08:11.525>Kotlin <00:08:11.725>are <00:08:11.925>cotton <00:08:12.125>native, <00:08:12.325>cotton <00:08:12.525>native,

167
00:08:14.275 --> 00:08:17.215
<00:08:14.275>and <00:08:14.554>cotton <00:08:14.835>JavaScript, <00:08:15.114>cotton <00:08:15.395>js, <00:08:15.674>uh,

168
00:08:17.215 --> 00:08:19.495
<00:08:17.215>cotton <00:08:17.448>native <00:08:17.681>compiles <00:08:17.914>down <00:08:18.148>to <00:08:18.381>machine <00:08:18.614>code.

169
00:08:20.435 --> 00:08:23.415
<00:08:20.435>Uh, <00:08:20.590>we <00:08:20.746>will <00:08:20.901>use <00:08:21.057>cotton <00:08:21.212>native <00:08:21.368>inside <00:08:21.523>of <00:08:21.679>our, <00:08:21.835>uh,

170
00:08:23.415 --> 00:08:24.535
<00:08:23.415>multiplatform <00:08:24.423>environment.

171
00:08:24.535 --> 00:08:27.095
<00:08:24.535>We'll <00:08:24.735>basically <00:08:24.935>use <00:08:25.135>ko <00:08:25.335>JVM <00:08:25.535>and <00:08:25.735>cotton <00:08:25.935>native,

172
00:08:27.325 --> 00:08:30.375
<00:08:27.325>because <00:08:27.558>KO <00:08:27.791>native, <00:08:28.025>uh, <00:08:28.258>is <00:08:28.491>used <00:08:28.724>on,

173
00:08:30.395 --> 00:08:32.695
<00:08:30.395>is <00:08:30.674>you <00:08:30.955>can <00:08:31.234>develop <00:08:31.515>desktop <00:08:31.794>applications,

174
00:08:32.715 --> 00:08:34.175
<00:08:32.715>you <00:08:32.977>can <00:08:33.240>develop <00:08:33.503>some <00:08:33.766>web <00:08:34.029>assembly,

175
00:08:34.795 --> 00:08:37.855
<00:08:34.794>and <00:08:34.995>also <00:08:35.194>you <00:08:35.395>can <00:08:35.594>develop, <00:08:35.794>uh, <00:08:35.995>Android <00:08:36.194>applications,

176
00:08:37.955 --> 00:08:41.015
<00:08:37.955>for <00:08:38.155>example, <00:08:38.355>games, <00:08:38.555>uh, <00:08:38.755>which <00:08:38.955>need <00:08:39.155>better <00:08:39.355>performance.

177
00:08:41.595 --> 00:08:43.895
<00:08:41.595>And <00:08:41.828>the <00:08:42.061>last <00:08:42.295>flavor <00:08:42.528>is <00:08:42.761>cotton <00:08:42.995>JavaScript.

178
00:08:44.335 --> 00:08:46.895
<00:08:44.335>I <00:08:44.510>would <00:08:44.685>won't <00:08:44.860>go <00:08:45.035>into <00:08:45.210>details <00:08:45.385>about <00:08:45.560>what <00:08:45.735>JavaScript,

179
00:08:47.235 --> 00:08:50.895
<00:08:47.235>but <00:08:47.351>it's <00:08:47.468>com, <00:08:47.585>uh, <00:08:47.701>you, <00:08:47.818>you <00:08:47.935>can <00:08:48.051>use <00:08:48.168>it <00:08:48.285>on <00:08:48.401>web <00:08:48.518>and <00:08:48.635>cloud.

180
00:08:52.355 --> 00:08:53.805
<00:08:52.355>Okay, <00:08:52.681>so <00:08:53.007>that's <00:08:53.333>about <00:08:53.660>Kotlin.

181
00:08:54.625 --> 00:08:59.525
<00:08:54.625>So <00:08:54.800>how <00:08:54.975>does <00:08:55.150>an <00:08:55.325>everyday, <00:08:55.500>uh, <00:08:55.675>look <00:08:55.850>like <00:08:56.025>for,

182
00:08:59.585 --> 00:09:02.245
<00:08:59.585>for <00:08:59.785>example, <00:08:59.985>an <00:09:00.185>Android <00:09:00.385>developer, <00:09:00.585>which <00:09:00.785>uses, <00:09:00.985>uh,

183
00:09:02.245 --> 00:09:03.405
<00:09:02.245>quantum <00:09:03.289>multiplatform.

184
00:09:04.075 --> 00:09:06.845
<00:09:04.075>It's <00:09:04.250>basically <00:09:04.425>the <00:09:04.600>same <00:09:04.775>as <00:09:04.950>for <00:09:05.125>any <00:09:05.300>other <00:09:05.475>project.

185
00:09:07.345 --> 00:09:10.445
<00:09:07.345>Uh, <00:09:07.472>the <00:09:07.599>scope <00:09:07.726>of <00:09:07.854>the <00:09:07.981>work <00:09:08.108>that <00:09:08.235>needs <00:09:08.363>to <00:09:08.490>be <00:09:08.617>done <00:09:08.745>is,

186
00:09:11.185 --> 00:09:14.525
<00:09:11.185>is <00:09:11.359>the <00:09:11.535>same, <00:09:11.709>and <00:09:11.885>the <00:09:12.060>logic <00:09:12.234>is <00:09:12.410>the <00:09:12.584>same.

187
00:09:15.185 --> 00:09:18.405
<00:09:15.185>The <00:09:15.359>only <00:09:15.535>difference <00:09:15.709>is <00:09:15.885>that <00:09:16.060>there <00:09:16.234>are <00:09:16.410>certain <00:09:16.584>rules

188
00:09:18.435 --> 00:09:20.605
<00:09:18.435>that <00:09:18.714>an <00:09:18.994>Android <00:09:19.275>developer <00:09:19.555>should <00:09:19.834>follow,

189
00:09:21.065 --> 00:09:22.245
<00:09:21.065>but <00:09:21.419>basically <00:09:21.773>he <00:09:22.127>is,

190
00:09:22.345 --> 00:09:25.685
<00:09:22.345>he <00:09:22.545>is <00:09:22.745>developing <00:09:22.945>the <00:09:23.145>application <00:09:23.345>like <00:09:23.545>any <00:09:23.745>other

191
00:09:25.685 --> 00:09:26.925
<00:09:25.685>application <00:09:25.964>that <00:09:26.242>he <00:09:26.521>would <00:09:26.800>use.

192
00:09:27.865 --> 00:09:30.645
<00:09:27.865>Uh, <00:09:28.065>the <00:09:28.265>biggest <00:09:28.465>difference <00:09:28.665>is <00:09:28.865>for <00:09:29.065>Android, <00:09:29.265>uh,

193
00:09:30.825 --> 00:09:35.125
<00:09:30.825>iOS <00:09:31.058>developers, <00:09:31.291>s <00:09:31.525>developers, <00:09:31.758>uh, <00:09:31.991>import <00:09:32.225>only,

194
00:09:35.705 --> 00:09:38.525
<00:09:35.705>uh, <00:09:35.938>an <00:09:36.171>I <00:09:36.405>framework <00:09:36.638>or <00:09:36.871>I <00:09:37.105>library,

195
00:09:38.825 --> 00:09:41.125
<00:09:38.825>and <00:09:39.025>that's <00:09:39.225>how <00:09:39.425>they <00:09:39.625>use <00:09:39.825>the <00:09:40.025>shared <00:09:40.225>code.

196
00:09:41.705 --> 00:09:43.725
<00:09:41.705>Uh, <00:09:41.905>when <00:09:42.105>I <00:09:42.305>talk <00:09:42.505>about <00:09:42.705>the <00:09:42.905>shared <00:09:43.105>code,

197
00:09:44.025 --> 00:09:45.525
<00:09:44.025>uh, <00:09:44.295>how <00:09:44.564>does <00:09:44.834>it <00:09:45.105>look <00:09:45.375>like?

198
00:09:45.585 --> 00:09:47.405
<00:09:45.585>You <00:09:45.865>basically <00:09:46.145>have <00:09:46.425>a <00:09:46.705>shared <00:09:46.985>module.

199
00:09:47.905 --> 00:09:50.845
<00:09:47.905>We, <00:09:48.079>we <00:09:48.255>wanted <00:09:48.430>to <00:09:48.605>use <00:09:48.780>only <00:09:48.954>one <00:09:49.130>shared <00:09:49.305>module.

200
00:09:51.265 --> 00:09:52.805
<00:09:51.265>Uh, <00:09:51.542>so <00:09:51.819>we <00:09:52.096>don't <00:09:52.373>complicate <00:09:52.651>things

201
00:09:52.805 --> 00:09:54.725
<00:09:52.805>because <00:09:53.005>we <00:09:53.204>were, <00:09:53.405>uh, <00:09:53.604>new <00:09:53.805>at <00:09:54.005>the <00:09:54.204>time

202
00:09:54.795 --> 00:09:56.285
<00:09:54.795>with <00:09:55.242>cotton <00:09:55.689>multi <00:09:56.136>platform.

203
00:09:56.625 --> 00:09:59.885
<00:09:56.625>But, <00:09:56.780>uh, <00:09:56.936>in <00:09:57.091>theory, <00:09:57.247>you <00:09:57.402>can <00:09:57.558>use <00:09:57.713>multiple <00:09:57.869>shared <00:09:58.025>modules

204
00:10:00.585 --> 00:10:04.605
<00:10:00.585>and <00:10:00.740>then <00:10:00.896>just, <00:10:01.051>uh, <00:10:01.207>for <00:10:01.362>an, <00:10:01.518>from <00:10:01.673>the <00:10:01.829>iOS <00:10:01.985>perspective,

205
00:10:04.745 --> 00:10:06.885
<00:10:04.745>you <00:10:05.095>just <00:10:05.445>import <00:10:05.795>multiple <00:10:06.145>frameworks,

206
00:10:07.545 --> 00:10:09.645
<00:10:07.545>or <00:10:07.778>from <00:10:08.011>Android <00:10:08.245>perspective <00:10:08.478>is <00:10:08.711>just <00:10:08.944>a

207
00:10:09.645 --> 00:10:10.685
<00:10:09.645>simple <00:10:09.957>and <00:10:10.269>Android <00:10:10.580>module.

208
00:10:10.795 --> 00:10:14.125
<00:10:10.795>Like <00:10:10.995>any <00:10:11.194>other, <00:10:11.395>uh, <00:10:11.594>the, <00:10:11.795>the <00:10:11.995>biggest <00:10:12.194>benefit

209
00:10:14.305 --> 00:10:15.685
<00:10:14.305>and <00:10:14.615>the <00:10:14.925>biggest <00:10:15.236>difference <00:10:15.546>is

210
00:10:15.685 --> 00:10:18.445
<00:10:15.685>that <00:10:15.840>you <00:10:15.996>have <00:10:16.151>the <00:10:16.307>full <00:10:16.462>control <00:10:16.618>over <00:10:16.773>what <00:10:16.929>is <00:10:17.084>shared.

211
00:10:18.895 --> 00:10:21.805
<00:10:18.895>We'll <00:10:19.035>get <00:10:19.175>back <00:10:19.314>to <00:10:19.454>this <00:10:19.595>later. <00:10:19.735>Why <00:10:19.875>is <00:10:20.015>this <00:10:20.155>so <00:10:20.295>important?

212
00:10:24.345 --> 00:10:27.755
<00:10:24.345>Okay, <00:10:24.545>so <00:10:24.745>I <00:10:24.945>talked <00:10:25.145>about <00:10:25.345>the <00:10:25.545>current <00:10:25.745>technology

213
00:10:27.755 --> 00:10:28.795
<00:10:27.755>drawbacks <00:10:28.690>before.

214
00:10:28.975 --> 00:10:31.995
<00:10:28.975>So <00:10:29.150>let's <00:10:29.325>just <00:10:29.500>compare <00:10:29.675>them <00:10:29.850>to <00:10:30.025>cotton, <00:10:30.200>uh, <00:10:30.375>multi-platform.

215
00:10:32.615 --> 00:10:34.955
<00:10:32.615>So <00:10:32.848>we <00:10:33.081>talked <00:10:33.315>about, <00:10:33.548>uh, <00:10:33.781>lower <00:10:34.015>performance

216
00:10:34.955 --> 00:10:36.355
<00:10:34.955>because <00:10:35.375>for <00:10:35.795>example, <00:10:36.215>uh,

217
00:10:36.605 --> 00:10:38.395
<00:10:36.605>react <00:10:36.885>Native <00:10:37.165>uses <00:10:37.445>a <00:10:37.725>separate <00:10:38.005>engine.

218
00:10:39.495 --> 00:10:40.955
<00:10:39.495>Uh, <00:10:39.933>in <00:10:40.371>cotton <00:10:40.809>multi-platform,

219
00:10:40.975 --> 00:10:43.075
<00:10:40.975>you <00:10:41.208>actually <00:10:41.441>have <00:10:41.675>a <00:10:41.908>native <00:10:42.141>perform <00:10:42.375>performance

220
00:10:43.075 --> 00:10:47.995
<00:10:43.075>because, <00:10:43.250>uh, <00:10:43.425>both, <00:10:43.600>both <00:10:43.775>shared <00:10:43.950>modules <00:10:44.125>are <00:10:44.300>compiled <00:10:44.475>down

221
00:10:47.995 --> 00:10:49.795
<00:10:47.995>to <00:10:48.345>down <00:10:48.695>to <00:10:49.045>native <00:10:49.395>binaries.

222
00:10:49.935 --> 00:10:51.755
<00:10:49.935>So <00:10:50.168>there <00:10:50.401>is <00:10:50.635>no <00:10:50.868>difference <00:10:51.101>with, <00:10:51.334>uh,

223
00:10:51.865 --> 00:10:55.555
<00:10:51.865>between <00:10:52.065>any <00:10:52.265>other <00:10:52.465>frameworks <00:10:52.665>for <00:10:52.865>iOS <00:10:53.065>or <00:10:53.265>libraries.

224
00:10:55.695 --> 00:11:00.615
<00:10:55.695>Uh, <00:10:55.870>for <00:10:56.045>Android, <00:10:56.220>uh, <00:10:56.395>wait <00:10:56.570>time <00:10:56.745>for <00:10:56.920>new <00:10:57.095>features,

225
00:11:01.355 --> 00:11:04.895
<00:11:01.355>uh, <00:11:01.555>new <00:11:01.755>features <00:11:01.955>are, <00:11:02.155>uh, <00:11:02.355>available, <00:11:02.555>uh, <00:11:02.755>immediately.

226
00:11:04.895 --> 00:11:07.975
<00:11:04.895>There's <00:11:05.035>no <00:11:05.175>need <00:11:05.314>to <00:11:05.454>wait <00:11:05.595>for <00:11:05.735>new <00:11:05.875>releases <00:11:06.015>of <00:11:06.155>the <00:11:06.295>library.

227
00:11:08.275 --> 00:11:11.495
<00:11:08.275>You <00:11:08.475>can <00:11:08.675>use <00:11:08.875>whatever, <00:11:09.074>whatever <00:11:09.275>platform, <00:11:09.475>uh, <00:11:09.675>uh,

228
00:11:11.635 --> 00:11:12.655
<00:11:11.635>allows <00:11:11.941>you <00:11:12.247>to <00:11:12.553>use.

229
00:11:12.715 --> 00:11:13.855
<00:11:12.715>You <00:11:12.971>can <00:11:13.228>use <00:11:13.484>it <00:11:13.741>immediately.

230
00:11:14.875 --> 00:11:17.855
<00:11:14.875>Uh, <00:11:15.108>TDS <00:11:15.341>updates, <00:11:15.575>well, <00:11:15.808>this <00:11:16.041>still <00:11:16.275>applies.

231
00:11:17.885 --> 00:11:18.895
<00:11:17.885>This <00:11:18.188>is <00:11:18.491>still <00:11:18.794>applicable

232
00:11:18.895 --> 00:11:20.335
<00:11:18.895>because <00:11:19.543>the <00:11:20.191>APIs,

233
00:11:20.455 --> 00:11:23.495
<00:11:20.455>I <00:11:20.630>saw <00:11:20.805>APIs <00:11:20.980>change <00:11:21.155>in <00:11:21.330>newer, <00:11:21.505>in <00:11:21.680>newer <00:11:21.855>versions.

234
00:11:23.715 --> 00:11:25.815
<00:11:23.715>Uh, <00:11:23.948>state <00:11:24.181>of <00:11:24.415>quantum <00:11:24.648>automotive <00:11:24.881>platform <00:11:25.115>is

235
00:11:25.815 --> 00:11:26.895
<00:11:25.815>not <00:11:26.139>yet <00:11:26.463>really <00:11:26.787>stable.

236
00:11:27.555 --> 00:11:30.135
<00:11:27.555>So <00:11:27.788>there <00:11:28.021>was <00:11:28.255>times <00:11:28.488>when <00:11:28.721>they <00:11:28.954>changed,

237
00:11:30.375 --> 00:11:32.095
<00:11:30.375>a <00:11:30.608>few <00:11:30.841>APIs <00:11:31.075>removed <00:11:31.308>some <00:11:31.541>of <00:11:31.775>those.

238
00:11:32.315 --> 00:11:35.015
<00:11:32.315>The <00:11:32.490>biggest <00:11:32.665>issues <00:11:32.840>that <00:11:33.015>I <00:11:33.190>had <00:11:33.365>was <00:11:33.540>with, <00:11:33.715>uh,

239
00:11:35.035 --> 00:11:37.215
<00:11:35.035>the <00:11:35.268>whole <00:11:35.501>configuration, <00:11:35.735>uh, <00:11:35.968>of <00:11:36.201>the <00:11:36.435>project.

240
00:11:39.505 --> 00:11:42.125
<00:11:39.505>Uh, <00:11:39.785>complicated <00:11:40.064>communication <00:11:40.345>with <00:11:40.625>Native <00:11:40.905>platform,

241
00:11:42.955 --> 00:11:44.445
<00:11:42.955>it's <00:11:43.625>really <00:11:44.296>straightforward.

242
00:11:44.945 --> 00:11:46.885
<00:11:44.945>You <00:11:45.225>are <00:11:45.505>using <00:11:45.785>interfaces <00:11:46.065>on <00:11:46.345>Android,

243
00:11:47.065 --> 00:11:49.765
<00:11:47.065>or <00:11:47.265>you're <00:11:47.465>using <00:11:47.665>protocols, <00:11:47.865>which <00:11:48.065>are <00:11:48.265>basically <00:11:48.465>interfaces,

244
00:11:49.865 --> 00:11:53.965
<00:11:49.865>uh, <00:11:49.981>on <00:11:50.098>is <00:11:50.215>you <00:11:50.331>just, <00:11:50.448>if <00:11:50.565>you, <00:11:50.681>if <00:11:50.798>you <00:11:50.915>want <00:11:51.031>to <00:11:51.148>wrap, <00:11:51.265>uh,

245
00:11:54.105 --> 00:11:55.805
<00:11:54.105>if <00:11:54.280>you <00:11:54.455>want <00:11:54.630>to <00:11:54.805>talk <00:11:54.980>to <00:11:55.155>the <00:11:55.330>native <00:11:55.505>platform,

246
00:11:56.025 --> 00:11:57.445
<00:11:56.025>you <00:11:56.344>just <00:11:56.664>define <00:11:56.983>an <00:11:57.303>interface

247
00:11:57.465 --> 00:11:59.205
<00:11:57.465>or <00:11:57.698>a <00:11:57.931>protocol <00:11:58.165>inside <00:11:58.398>of <00:11:58.631>the <00:11:58.865>shared.

248
00:11:59.345 --> 00:12:00.805
<00:11:59.345>Uh, <00:11:59.673>actually <00:12:00.002>it's <00:12:00.330>an <00:12:00.659>interface

249
00:12:00.805 --> 00:12:03.405
<00:12:00.805>because <00:12:00.960>inside <00:12:01.116>of <00:12:01.271>the <00:12:01.427>shared, <00:12:01.582>uh, <00:12:01.738>module <00:12:01.893>you <00:12:02.049>use <00:12:02.204>Scotland.

250
00:12:03.985 --> 00:12:06.085
<00:12:03.985>So <00:12:04.218>basically <00:12:04.451>you <00:12:04.685>define <00:12:04.918>an <00:12:05.151>interface <00:12:05.385>inside

251
00:12:06.085 --> 00:12:08.965
<00:12:06.085>of <00:12:06.260>the <00:12:06.435>shared <00:12:06.610>module, <00:12:06.785>and <00:12:06.960>you <00:12:07.135>just, <00:12:07.310>uh, <00:12:07.485>implement,

252
00:12:08.965 --> 00:12:10.045
<00:12:08.965>make, <00:12:09.451>make <00:12:09.937>implementation.

253
00:12:10.045 --> 00:12:13.285
<00:12:10.045>So <00:12:10.245>implement <00:12:10.444>the <00:12:10.645>interface <00:12:10.844>on <00:12:11.045>both <00:12:11.245>platforms, <00:12:11.444>uh,

254
00:12:13.705 --> 00:12:18.565
<00:12:13.705>and <00:12:13.860>just <00:12:14.016>wrap <00:12:14.171>by <00:12:14.327>doing, <00:12:14.482>so, <00:12:14.638>wrap <00:12:14.793>the, <00:12:14.949>the <00:12:15.105>behavior

255
00:12:18.565 --> 00:12:21.045
<00:12:18.565>that <00:12:18.692>you <00:12:18.819>want <00:12:18.946>to <00:12:19.074>wrap, <00:12:19.201>and <00:12:19.328>then <00:12:19.455>you <00:12:19.583>can <00:12:19.710>use <00:12:19.837>the <00:12:19.965>interface

256
00:12:21.045 --> 00:12:23.085
<00:12:21.045>inside <00:12:21.324>of <00:12:21.604>the <00:12:21.885>shared <00:12:22.165>module, <00:12:22.444>uh,

257
00:12:23.595 --> 00:12:25.125
<00:12:23.595>with <00:12:23.870>some <00:12:24.145>sort <00:12:24.421>of <00:12:24.696>dependence <00:12:24.972>injection.

258
00:12:25.185 --> 00:12:26.525
<00:12:25.185>You <00:12:25.426>just <00:12:25.667>provide <00:12:25.908>the <00:12:26.149>different, <00:12:26.391>uh,

259
00:12:26.525 --> 00:12:28.005
<00:12:26.525>implementations <00:12:26.968>of <00:12:27.413>that <00:12:27.857>interface.

260
00:12:29.795 --> 00:12:31.165
<00:12:29.795>Another <00:12:30.205>layer <00:12:30.617>of <00:12:31.028>issues.

261
00:12:32.345 --> 00:12:34.715
<00:12:32.345>It's <00:12:32.545>also <00:12:32.745>still <00:12:32.945>applicable <00:12:33.145>because <00:12:33.345>as <00:12:33.545>I <00:12:33.745>said

262
00:12:34.715 --> 00:12:36.475
<00:12:34.715>before, <00:12:34.995>LAN <00:12:35.275>multiplatform <00:12:35.555>is <00:12:35.835>not <00:12:36.115>perfect.

263
00:12:36.625 --> 00:12:40.675
<00:12:36.625>It's <00:12:36.765>still, <00:12:36.905>uh, <00:12:37.045>not <00:12:37.185>stable, <00:12:37.325>and <00:12:37.465>there <00:12:37.605>are <00:12:37.745>issues <00:12:37.885>with <00:12:38.025>it,

264
00:12:41.015 --> 00:12:44.435
<00:12:41.015>but <00:12:41.155>I <00:12:41.295>just <00:12:41.435>added <00:12:41.574>here <00:12:41.715>that <00:12:41.855>they <00:12:41.995>are <00:12:42.135>easier <00:12:42.275>to <00:12:42.415>avoid.

265
00:12:44.895 --> 00:12:47.795
<00:12:44.895>And <00:12:45.011>what <00:12:45.128>do <00:12:45.245>I <00:12:45.361>mean <00:12:45.478>by <00:12:45.595>saying <00:12:45.711>that <00:12:45.828>there <00:12:45.944>are <00:12:46.061>easier <00:12:46.178>to <00:12:46.295>avoid?

266
00:12:48.465 --> 00:12:52.505
<00:12:48.465>Well, <00:12:48.581>basically <00:12:48.698>if <00:12:48.815>we <00:12:48.931>go <00:12:49.048>back <00:12:49.165>a <00:12:49.281>few <00:12:49.398>slides, <00:12:49.515>I <00:12:49.631>said <00:12:49.748>that <00:12:49.865>you,

267
00:12:52.645 --> 00:12:54.065
<00:12:52.645>you <00:12:52.858>choose <00:12:53.071>what <00:12:53.284>you <00:12:53.497>want <00:12:53.710>to <00:12:53.923>share.

268
00:12:54.565 --> 00:12:57.425
<00:12:54.565>So <00:12:54.720>if <00:12:54.876>you <00:12:55.031>have <00:12:55.187>any <00:12:55.342>troubles <00:12:55.498>with <00:12:55.653>Cotton <00:12:55.809>Automotive <00:12:55.965>platform,

269
00:12:57.565 --> 00:13:00.705
<00:12:57.565>any, <00:12:57.720>any, <00:12:57.876>any <00:12:58.031>with <00:12:58.187>anything <00:12:58.342>that <00:12:58.498>you <00:12:58.653>want <00:12:58.809>to <00:12:58.965>implement,

270
00:13:00.725 --> 00:13:02.785
<00:13:00.725>but <00:13:00.925>Cotton <00:13:01.125>multi <00:13:01.325>platform <00:13:01.525>doesn't <00:13:01.725>allow <00:13:01.925>you <00:13:02.125>to

271
00:13:02.785 --> 00:13:05.105
<00:13:02.785>because <00:13:02.925>of <00:13:03.064>a <00:13:03.204>bug <00:13:03.344>or <00:13:03.485>the <00:13:03.625>feature <00:13:03.765>is <00:13:03.905>not <00:13:04.045>yet <00:13:04.185>supported,

272
00:13:05.405 --> 00:13:06.785
<00:13:05.405>you <00:13:05.715>just <00:13:06.026>don't <00:13:06.336>share <00:13:06.646>it.

273
00:13:07.565 --> 00:13:10.145
<00:13:07.565>You <00:13:07.740>write <00:13:07.915>it <00:13:08.090>natively, <00:13:08.265>both <00:13:08.440>on <00:13:08.615>Android <00:13:08.790>and <00:13:08.965>IS

274
00:13:10.165 --> 00:13:14.915
<00:13:10.165>and <00:13:10.305>once <00:13:10.444>they <00:13:10.584>fix, <00:13:10.724>uh, <00:13:10.865>their <00:13:11.005>bug <00:13:11.145>on, <00:13:11.285>on <00:13:11.425>the <00:13:11.564>multi-platform,

275
00:13:15.015 --> 00:13:18.555
<00:13:15.015>uh, <00:13:15.248>and, <00:13:15.481>uh, <00:13:15.715>you <00:13:15.948>can <00:13:16.181>either, <00:13:16.415>uh,

276
00:13:19.045 --> 00:13:20.435
<00:13:19.045>write <00:13:19.357>it <00:13:19.670>in <00:13:19.983>the <00:13:20.295>multi-platform

277
00:13:20.435 --> 00:13:22.715
<00:13:20.435>and <00:13:20.551>then <00:13:20.668>reuse <00:13:20.785>it <00:13:20.901>on <00:13:21.018>both <00:13:21.135>platforms <00:13:21.251>or <00:13:21.368>leave <00:13:21.484>it <00:13:21.601>as <00:13:21.718>it <00:13:21.834>is.

278
00:13:23.055 --> 00:13:27.805
<00:13:23.055>It <00:13:23.288>doesn't <00:13:23.521>matter. <00:13:23.755>Uh, <00:13:23.988>finding <00:13:24.221>developers, <00:13:24.454>uh,

279
00:13:27.995 --> 00:13:29.405
<00:13:27.995>shouldn't <00:13:28.312>be <00:13:28.629>a <00:13:28.946>problem <00:13:29.264>anymore

280
00:13:29.475 --> 00:13:32.565
<00:13:29.475>because <00:13:29.708>they <00:13:29.941>are <00:13:30.175>basically <00:13:30.408>regular <00:13:30.641>Android <00:13:30.875>developers.

281
00:13:32.625 --> 00:13:35.325
<00:13:32.625>And <00:13:32.780>I <00:13:32.936>said <00:13:33.091>basically <00:13:33.247>regular <00:13:33.402>because <00:13:33.558>as <00:13:33.713>I <00:13:33.869>said <00:13:34.025>also

282
00:13:35.325 --> 00:13:38.245
<00:13:35.325>before, <00:13:35.558>there <00:13:35.791>are <00:13:36.025>certain <00:13:36.258>rules <00:13:36.491>that, <00:13:36.725>uh,

283
00:13:38.665 --> 00:13:41.045
<00:13:38.665>the <00:13:38.898>Android <00:13:39.131>developers <00:13:39.365>will <00:13:39.598>need <00:13:39.831>to <00:13:40.064>follow.

284
00:13:41.625 --> 00:13:45.685
<00:13:41.625>But <00:13:41.765>basically <00:13:41.905>it's <00:13:42.045>not <00:13:42.185>that <00:13:42.325>huge <00:13:42.465>of, <00:13:42.605>huge <00:13:42.745>of <00:13:42.885>a <00:13:43.025>difference,

285
00:13:46.025 --> 00:13:49.205
<00:13:46.025>or <00:13:46.180>as <00:13:46.336>I <00:13:46.491>said <00:13:46.647>here, <00:13:46.802>any <00:13:46.958>is <00:13:47.113>developer <00:13:47.269>if <00:13:47.425>they

286
00:13:49.205 --> 00:13:50.405
<00:13:49.205>want <00:13:49.385>to <00:13:49.565>come <00:13:49.745>to <00:13:49.925>the <00:13:50.105>dark <00:13:50.285>side.

287
00:13:51.985 --> 00:13:54.725
<00:13:51.985>And <00:13:52.185>also, <00:13:52.385>some <00:13:52.585>of <00:13:52.785>the <00:13:52.985>technology <00:13:53.185>weren't <00:13:53.385>free.

288
00:13:55.155 --> 00:13:59.565
<00:13:55.155>Well, <00:13:55.388>cotton <00:13:55.621>multi <00:13:55.855>platform <00:13:56.088>is <00:13:56.321>free. <00:13:56.555>Okay?

289
00:13:59.785 --> 00:14:02.645
<00:13:59.785>So <00:14:00.064>these <00:14:00.344>are, <00:14:00.625>these <00:14:00.905>were, <00:14:01.185>uh,

290
00:14:02.645 --> 00:14:04.805
<00:14:02.645>our <00:14:02.925>projections <00:14:03.204>when <00:14:03.485>we <00:14:03.765>just <00:14:04.045>started

291
00:14:04.835 --> 00:14:06.165
<00:14:04.835>with <00:14:05.234>Cotton <00:14:05.633>multi <00:14:06.031>platform.

292
00:14:06.265 --> 00:14:09.085
<00:14:06.265>So, <00:14:06.439>for <00:14:06.615>example, <00:14:06.790>if <00:14:06.965>you <00:14:07.140>need <00:14:07.314>a <00:14:07.490>hundred <00:14:07.665>percent

293
00:14:09.145 --> 00:14:10.525
<00:14:09.145>of <00:14:09.455>the <00:14:09.766>resources, <00:14:10.076>the <00:14:10.387>time

294
00:14:10.585 --> 00:14:13.805
<00:14:10.585>and <00:14:10.760>everything <00:14:10.935>for, <00:14:11.110>to, <00:14:11.285>to <00:14:11.460>develop <00:14:11.635>a <00:14:11.810>native <00:14:11.985>application,

295
00:14:14.865 --> 00:14:18.405
<00:14:14.865>and <00:14:15.020>since <00:14:15.176>we <00:14:15.331>have <00:14:15.487>a <00:14:15.642>React <00:14:15.798>Native <00:14:15.953>team, <00:14:16.109>we <00:14:16.265>notice

296
00:14:18.515 --> 00:14:23.405
<00:14:18.515>that <00:14:18.689>it <00:14:18.865>takes, <00:14:19.040>it <00:14:19.215>takes <00:14:19.390>50% <00:14:19.564>of <00:14:19.740>the <00:14:19.915>100%

297
00:14:23.405 --> 00:14:24.565
<00:14:23.405>of <00:14:23.753>the <00:14:24.101>native <00:14:24.449>development

298
00:14:25.245 --> 00:14:26.885
<00:14:25.245>to <00:14:25.525>develop <00:14:25.805>the <00:14:26.085>React <00:14:26.365>native <00:14:26.645>application

299
00:14:26.885 --> 00:14:29.125
<00:14:26.885>because <00:14:27.235>you, <00:14:27.585>you <00:14:27.935>share <00:14:28.285>everything.

300
00:14:29.905 --> 00:14:33.365
<00:14:29.905>Uh, <00:14:30.138>by <00:14:30.371>simple <00:14:30.605>math, <00:14:30.838>we <00:14:31.071>came <00:14:31.305>to

301
00:14:33.545 --> 00:14:37.925
<00:14:33.545>around <00:14:33.719>75%, <00:14:33.895>uh, <00:14:34.069>of <00:14:34.245>the <00:14:34.420>researchers <00:14:34.594>for <00:14:34.770>Cotton <00:14:34.944>Multiplatform.

302
00:14:38.705 --> 00:14:40.335
<00:14:38.705>We'll <00:14:38.905>see <00:14:39.105>later <00:14:39.305>on <00:14:39.505>if <00:14:39.705>we <00:14:39.905>were <00:14:40.105>correct.

303
00:14:41.915 --> 00:14:44.095
<00:14:41.915>So <00:14:42.115>let's <00:14:42.314>start <00:14:42.515>with <00:14:42.714>our <00:14:42.915>take <00:14:43.115>on <00:14:43.314>it.

304
00:14:44.315 --> 00:14:46.615
<00:14:44.315>How <00:14:44.490>did <00:14:44.665>we, <00:14:44.840>uh, <00:14:45.015>what <00:14:45.190>did <00:14:45.365>we <00:14:45.540>do <00:14:45.715>first?

305
00:14:48.015 --> 00:14:49.315
<00:14:48.015>So, <00:14:48.405>a <00:14:48.795>little <00:14:49.185>backstory.

306
00:14:50.095 --> 00:14:52.735
<00:14:50.095>Uh, <00:14:50.328>we <00:14:50.561>noticed <00:14:50.795>a <00:14:51.028>lot <00:14:51.261>of <00:14:51.495>hype

307
00:14:52.955 --> 00:14:55.215
<00:14:52.955>and <00:14:53.130>a <00:14:53.305>lot <00:14:53.480>of <00:14:53.655>commotion <00:14:53.830>around <00:14:54.005>quantum <00:14:54.180>automotive <00:14:54.355>platform.

308
00:14:55.215 --> 00:14:58.535
<00:14:55.215>There <00:14:55.342>were <00:14:55.469>a <00:14:55.596>lot <00:14:55.724>of <00:14:55.851>YouTube <00:14:55.978>videos, <00:14:56.105>a <00:14:56.233>lot <00:14:56.360>of <00:14:56.487>blog <00:14:56.615>posts,

309
00:14:58.935 --> 00:15:01.055
<00:14:58.935>a <00:14:59.135>lot <00:14:59.334>of <00:14:59.535>everything <00:14:59.734>around <00:14:59.935>Quantum <00:15:00.135>Automotive <00:15:00.334>platform.

310
00:15:01.195 --> 00:15:03.775
<00:15:01.195>And <00:15:01.350>we <00:15:01.506>are, <00:15:01.661>we <00:15:01.817>at <00:15:01.972>five, <00:15:02.128>we <00:15:02.283>are <00:15:02.439>really <00:15:02.595>curious

311
00:15:04.195 --> 00:15:07.935
<00:15:04.195>and <00:15:04.322>we <00:15:04.449>want <00:15:04.576>to <00:15:04.704>investigate <00:15:04.831>everything <00:15:04.958>to <00:15:05.085>see <00:15:05.213>how <00:15:05.340>can <00:15:05.467>we, <00:15:05.595>uh,

312
00:15:08.165 --> 00:15:10.695
<00:15:08.165>take <00:15:08.398>advantage <00:15:08.631>of <00:15:08.865>each <00:15:09.098>technology <00:15:09.331>that <00:15:09.564>comes.

313
00:15:11.675 --> 00:15:15.335
<00:15:11.675>So <00:15:11.802>we <00:15:11.929>have <00:15:12.056>an <00:15:12.184>ad <00:15:12.311>hoc, <00:15:12.438>uh, <00:15:12.565>uh, <00:15:12.693>r <00:15:12.820>and <00:15:12.947>d <00:15:13.074>team,

314
00:15:15.955 --> 00:15:19.695
<00:15:15.955>and <00:15:16.082>we <00:15:16.209>built <00:15:16.336>a <00:15:16.464>simple <00:15:16.591>POC <00:15:16.718>on <00:15:16.845>top <00:15:16.973>of <00:15:17.100>Kotlin <00:15:17.227>multi <00:15:17.355>platform.

315
00:15:20.155 --> 00:15:24.415
<00:15:20.155>It, <00:15:20.295>it <00:15:20.435>was <00:15:20.574>basically <00:15:20.714>a <00:15:20.855>little, <00:15:20.995>a <00:15:21.135>little <00:15:21.275>bit <00:15:21.415>more, <00:15:21.555>uh,

316
00:15:24.725 --> 00:15:26.695
<00:15:24.725>than <00:15:25.005>just <00:15:25.285>a <00:15:25.565>hello <00:15:25.845>Word <00:15:26.125>application.

317
00:15:27.315 --> 00:15:32.255
<00:15:27.315>Uh, <00:15:27.431>we <00:15:27.548>need, <00:15:27.665>uh, <00:15:27.781>it <00:15:27.898>would <00:15:28.015>be <00:15:28.131>better <00:15:28.248>if <00:15:28.365>we, <00:15:28.481>uh, <00:15:28.598>dive <00:15:28.715>deeper

318
00:15:32.525 --> 00:15:34.895
<00:15:32.525>with <00:15:32.875>POC, <00:15:33.225>but <00:15:33.574>we <00:15:33.925>didn't.

319
00:15:35.075 --> 00:15:38.015
<00:15:35.075>And <00:15:35.275>we <00:15:35.475>figured <00:15:35.675>out <00:15:35.875>that, <00:15:36.075>uh, <00:15:36.275>everything <00:15:36.475>works

320
00:15:38.395 --> 00:15:41.135
<00:15:38.395>and <00:15:38.628>it <00:15:38.861>was <00:15:39.095>really <00:15:39.328>easy <00:15:39.561>to <00:15:39.795>use.

321
00:15:42.515 --> 00:15:46.165
<00:15:42.515>Okay. <00:15:42.642>Later <00:15:42.769>on, <00:15:42.896>uh, <00:15:43.024>there, <00:15:43.151>a <00:15:43.278>new <00:15:43.405>client <00:15:43.533>came <00:15:43.660>to, <00:15:43.787>to <00:15:43.915>five,

322
00:15:46.585 --> 00:15:48.085
<00:15:46.585>uh, <00:15:46.855>he <00:15:47.125>wanted <00:15:47.395>a <00:15:47.665>smaller <00:15:47.935>project.

323
00:15:48.505 --> 00:15:49.845
<00:15:48.505>Uh, <00:15:48.746>I <00:15:48.987>won't <00:15:49.228>go <00:15:49.469>into <00:15:49.711>details,

324
00:15:49.945 --> 00:15:51.965
<00:15:49.945>but <00:15:50.178>it <00:15:50.411>was <00:15:50.645>just <00:15:50.878>a <00:15:51.111>smaller <00:15:51.345>application.

325
00:15:51.985 --> 00:15:54.365
<00:15:51.985>We <00:15:52.185>just <00:15:52.385>had, <00:15:52.585>had <00:15:52.785>a <00:15:52.985>few <00:15:53.185>network <00:15:53.385>requests

326
00:15:54.505 --> 00:15:56.605
<00:15:54.505>and <00:15:54.738>showed <00:15:54.971>the <00:15:55.205>responses <00:15:55.438>on <00:15:55.671>the <00:15:55.905>ui.

327
00:15:56.785 --> 00:15:59.405
<00:15:56.785>Uh, <00:15:56.985>it <00:15:57.185>also <00:15:57.385>had <00:15:57.584>a, <00:15:57.785>a <00:15:57.985>small <00:15:58.185>database,

328
00:15:59.905 --> 00:16:01.965
<00:15:59.905>and <00:16:00.105>it <00:16:00.305>was <00:16:00.505>a <00:16:00.704>really, <00:16:00.905>really <00:16:01.105>good <00:16:01.305>application,

329
00:16:01.965 --> 00:16:03.405
<00:16:01.965>really <00:16:02.289>good <00:16:02.613>candidate <00:16:02.937>for <00:16:03.261>us

330
00:16:03.545 --> 00:16:05.765
<00:16:03.545>to <00:16:03.745>try <00:16:03.944>it <00:16:04.145>out <00:16:04.344>on <00:16:04.545>quantum <00:16:04.745>multi <00:16:04.944>platform.

331
00:16:06.145 --> 00:16:08.365
<00:16:06.145>Uh, <00:16:06.425>he <00:16:06.704>wanted <00:16:06.985>Android <00:16:07.265>and <00:16:07.545>iOS

332
00:16:08.545 --> 00:16:11.165
<00:16:08.545>and <00:16:08.778>backend <00:16:09.011>support <00:16:09.245>from, <00:16:09.478>uh, <00:16:09.711>our <00:16:09.944>side.

333
00:16:11.625 --> 00:16:14.045
<00:16:11.625>And <00:16:11.780>it <00:16:11.936>was <00:16:12.091>built <00:16:12.247>from, <00:16:12.402>uh, <00:16:12.558>from <00:16:12.713>the <00:16:12.869>ground <00:16:13.025>up.

334
00:16:14.045 --> 00:16:17.925
<00:16:14.045>It <00:16:14.200>was <00:16:14.356>built <00:16:14.511>from <00:16:14.667>scratch. <00:16:14.822>There <00:16:14.978>was, <00:16:15.133>okay, <00:16:15.289>uh, <00:16:15.444>so

335
00:16:19.305 --> 00:16:21.325
<00:16:19.305>we <00:16:19.505>pitched <00:16:19.704>the <00:16:19.905>idea <00:16:20.104>to, <00:16:20.305>to <00:16:20.505>the <00:16:20.704>client.

336
00:16:21.505 --> 00:16:22.805
<00:16:21.505>He <00:16:21.797>said, <00:16:22.089>go <00:16:22.382>for <00:16:22.675>it.

337
00:16:23.105 --> 00:16:26.205
<00:16:23.105>And <00:16:23.260>we <00:16:23.416>were <00:16:23.571>super <00:16:23.727>hyped <00:16:23.882>to <00:16:24.038>start <00:16:24.193>with <00:16:24.349>Kotlin <00:16:24.505>Multiplatform,

338
00:16:26.495 --> 00:16:29.725
<00:16:26.495>since <00:16:26.695>we <00:16:26.895>are <00:16:27.095>using, <00:16:27.295>uh, <00:16:27.495>Kotlin <00:16:27.695>for <00:16:27.895>Android.

339
00:16:30.225 --> 00:16:34.405
<00:16:30.225>Uh, <00:16:30.352>most <00:16:30.479>of <00:16:30.606>the <00:16:30.734>application <00:16:30.861>will <00:16:30.988>also <00:16:31.115>be <00:16:31.243>in <00:16:31.370>Kotlin <00:16:31.497>for <00:16:31.625>iOS,

340
00:16:34.425 --> 00:16:37.525
<00:16:34.425>but <00:16:34.580>we <00:16:34.736>also <00:16:34.891>need, <00:16:35.047>uh, <00:16:35.202>to <00:16:35.358>write <00:16:35.513>something <00:16:35.669>in <00:16:35.824>Swift.

341
00:16:38.105 --> 00:16:42.615
<00:16:38.105>Uh, <00:16:38.280>we <00:16:38.455>also <00:16:38.630>decided <00:16:38.805>to <00:16:38.980>implement <00:16:39.155>backend <00:16:39.330>in <00:16:39.505>Kotlin.

342
00:16:42.675 --> 00:16:46.655
<00:16:42.675>So <00:16:42.830>we <00:16:42.986>just <00:16:43.141>used <00:16:43.297>Spring, <00:16:43.452>uh, <00:16:43.608>to <00:16:43.763>write <00:16:43.919>in <00:16:44.074>Kotlin.

343
00:16:48.445 --> 00:16:51.505
<00:16:48.445>Uh, <00:16:48.585>I <00:16:48.725>made <00:16:48.865>a <00:16:49.005>bet <00:16:49.145>with <00:16:49.285>myself <00:16:49.425>that <00:16:49.565>I'll <00:16:49.705>take <00:16:49.845>myself

344
00:16:51.505 --> 00:16:54.665
<00:16:51.505>to <00:16:51.660>dinner <00:16:51.816>if <00:16:51.971>I <00:16:52.127>succeed <00:16:52.282>with <00:16:52.438>implementing <00:16:52.593>all <00:16:52.749>of <00:16:52.905>those.

345
00:16:55.685 --> 00:16:58.505
<00:16:55.685>And <00:16:55.918>we, <00:16:56.151>did. <00:16:56.385>I <00:16:56.618>eat? <00:16:56.851>We'll <00:16:57.084>see.

346
00:17:00.025 --> 00:17:01.475
<00:17:00.025>Okay, <00:17:00.286>so <00:17:00.547>our <00:17:00.808>take <00:17:01.069>on <00:17:01.330>it,

347
00:17:01.525 --> 00:17:03.875
<00:17:01.525>let's <00:17:01.725>just <00:17:01.925>just <00:17:02.125>dive <00:17:02.324>a <00:17:02.525>little <00:17:02.725>bit <00:17:02.925>deeper.

348
00:17:04.855 --> 00:17:08.795
<00:17:04.855>So <00:17:05.010>we, <00:17:05.166>at <00:17:05.321>five, <00:17:05.477>we <00:17:05.632>use, <00:17:05.788>uh, <00:17:05.943>reactive <00:17:06.099>clean <00:17:06.255>architecture.

349
00:17:09.175 --> 00:17:10.795
<00:17:09.175>And <00:17:09.524>what <00:17:09.875>does <00:17:10.224>that <00:17:10.575>mean?

350
00:17:10.825 --> 00:17:14.075
<00:17:10.825>Basically, <00:17:11.025>we <00:17:11.225>have <00:17:11.425>our <00:17:11.625>application <00:17:11.825>divided <00:17:12.025>like <00:17:12.225>this.

351
00:17:14.255 --> 00:17:16.755
<00:17:14.255>We <00:17:14.410>have <00:17:14.566>a <00:17:14.721>UI <00:17:14.877>layer, <00:17:15.032>we <00:17:15.188>have <00:17:15.343>a <00:17:15.499>presentation <00:17:15.655>layer,

352
00:17:17.315 --> 00:17:18.755
<00:17:17.315>a <00:17:17.574>use <00:17:17.833>case <00:17:18.092>layer, <00:17:18.351>data <00:17:18.611>layer,

353
00:17:18.815 --> 00:17:21.595
<00:17:18.815>and <00:17:19.015>entity <00:17:19.215>layer <00:17:19.415>inside <00:17:19.615>of <00:17:19.815>the <00:17:20.015>UI <00:17:20.215>layer.

354
00:17:22.055 --> 00:17:24.155
<00:17:22.055>Uh, <00:17:22.335>for <00:17:22.615>Android, <00:17:22.895>we <00:17:23.175>use <00:17:23.455>fragments

355
00:17:24.175 --> 00:17:26.035
<00:17:24.175>for <00:17:24.454>is <00:17:24.734>we <00:17:25.014>use <00:17:25.294>view <00:17:25.575>controllers.

356
00:17:26.705 --> 00:17:30.595
<00:17:26.704>Here <00:17:26.832>are <00:17:26.959>an <00:17:27.086>example <00:17:27.214>of <00:17:27.341>such. <00:17:27.468>Here <00:17:27.595>is <00:17:27.723>an <00:17:27.850>example <00:17:27.977>of <00:17:28.105>such.

357
00:17:30.775 --> 00:17:32.675
<00:17:30.775>Uh, <00:17:31.055>for <00:17:31.335>the <00:17:31.615>presentation <00:17:31.895>layer, <00:17:32.175>uh,

358
00:17:32.735 --> 00:17:34.155
<00:17:32.735>we <00:17:33.054>use <00:17:33.374>Android <00:17:33.693>view <00:17:34.013>models

359
00:17:34.535 --> 00:17:37.795
<00:17:34.535>and <00:17:34.735>any <00:17:34.935>other <00:17:35.135>class <00:17:35.335>for, <00:17:35.535>for <00:17:35.735>presentation <00:17:35.935>class

360
00:17:37.935 --> 00:17:39.275
<00:17:37.935>for, <00:17:38.337>uh, <00:17:38.739>iOS <00:17:39.141>guys.

361
00:17:40.175 --> 00:17:43.315
<00:17:40.175>Um, <00:17:40.375>we <00:17:40.575>have <00:17:40.774>two <00:17:40.975>sets <00:17:41.175>of <00:17:41.375>use <00:17:41.575>cases.

362
00:17:43.455 --> 00:17:44.675
<00:17:43.455>We <00:17:43.674>have <00:17:43.894>a <00:17:44.113>command <00:17:44.333>use <00:17:44.553>case

363
00:17:44.675 --> 00:17:47.875
<00:17:44.675>and <00:17:44.830>a <00:17:44.986>query <00:17:45.141>use <00:17:45.297>case, <00:17:45.452>uh, <00:17:45.608>command <00:17:45.763>use <00:17:45.919>case <00:17:46.075>changes

364
00:17:48.015 --> 00:17:50.965
<00:17:48.015>to <00:17:48.190>the <00:17:48.365>internal <00:17:48.540>state <00:17:48.715>and <00:17:48.890>query <00:17:49.065>use <00:17:49.240>case <00:17:49.415>queries.

365
00:17:50.965 --> 00:17:53.005
<00:17:50.965>That <00:17:51.245>internal <00:17:51.524>state, <00:17:51.804>that's <00:17:52.084>pretty <00:17:52.365>straightforward.

366
00:17:53.665 --> 00:17:57.805
<00:17:53.665>We <00:17:53.805>have <00:17:53.945>a <00:17:54.085>data, <00:17:54.225>so <00:17:54.365>data <00:17:54.504>layer, <00:17:54.645>uh, <00:17:54.784>which <00:17:54.925>has <00:17:55.065>repository,

367
00:17:58.165 --> 00:17:59.685
<00:17:58.165>services, <00:17:58.507>sources <00:17:58.849>and <00:17:59.191>so <00:17:59.533>on.

368
00:18:00.265 --> 00:18:03.205
<00:18:00.265>And <00:18:00.440>also <00:18:00.615>we <00:18:00.790>have <00:18:00.965>an <00:18:01.140>entity <00:18:01.315>layer, <00:18:01.490>which, <00:18:01.665>uh,

369
00:18:03.405 --> 00:18:04.805
<00:18:03.405>consists <00:18:03.825>only <00:18:04.245>of <00:18:04.665>entities.

370
00:18:06.485 --> 00:18:10.545
<00:18:06.485>So <00:18:06.640>we, <00:18:06.796>uh, <00:18:06.951>when <00:18:07.107>we <00:18:07.262>started <00:18:07.418>with <00:18:07.573>quantum <00:18:07.729>multi <00:18:07.885>platform,

371
00:18:10.725 --> 00:18:13.785
<00:18:10.725>we <00:18:10.925>knew <00:18:11.125>that <00:18:11.324>we <00:18:11.524>never <00:18:11.725>want <00:18:11.925>to <00:18:12.125>compromise

372
00:18:13.785 --> 00:18:16.945
<00:18:13.785>with <00:18:14.018>user <00:18:14.251>experience, <00:18:14.485>uh, <00:18:14.718>or, <00:18:14.951>uh, <00:18:15.185>ui.

373
00:18:17.485 --> 00:18:18.505
<00:18:17.485>Uh, <00:18:17.714>what <00:18:17.944>does <00:18:18.173>that <00:18:18.403>mean?

374
00:18:18.655 --> 00:18:21.065
<00:18:18.655>That <00:18:18.830>means <00:18:19.004>that <00:18:19.180>we <00:18:19.355>didn't <00:18:19.530>want <00:18:19.705>to <00:18:19.879>write, <00:18:20.055>uh,

375
00:18:21.065 --> 00:18:25.505
<00:18:21.065>the <00:18:21.205>shared <00:18:21.345>logic <00:18:21.485>on <00:18:21.625>in <00:18:21.765>the <00:18:21.905>UI <00:18:22.045>layer <00:18:22.185>because, <00:18:22.325>uh, <00:18:22.465>Android

376
00:18:25.725 --> 00:18:27.705
<00:18:25.725>and <00:18:26.074>I <00:18:26.425>platforms <00:18:26.774>are <00:18:27.125>different.

377
00:18:27.765 --> 00:18:32.705
<00:18:27.765>We <00:18:27.905>didn't <00:18:28.045>want <00:18:28.185>to <00:18:28.325>use, <00:18:28.465>uh, <00:18:28.605>shared <00:18:28.745>code <00:18:28.885>to <00:18:29.025>just, <00:18:29.165>uh,

378
00:18:33.615 --> 00:18:35.425
<00:18:33.615>make <00:18:33.965>compromise <00:18:34.315>because, <00:18:34.665>for <00:18:35.015>example,

379
00:18:35.825 --> 00:18:37.865
<00:18:35.825>I <00:18:36.058>doesn't <00:18:36.291>support <00:18:36.525>something <00:18:36.758>that <00:18:36.991>Android <00:18:37.225>supports,

380
00:18:37.925 --> 00:18:40.785
<00:18:37.925>or, <00:18:38.100>uh, <00:18:38.274>Android <00:18:38.450>doesn't <00:18:38.625>support <00:18:38.800>something <00:18:38.975>that <00:18:39.149>is <00:18:39.325>supports.

381
00:18:41.125 --> 00:18:44.345
<00:18:41.125>So <00:18:41.280>we <00:18:41.436>wanted <00:18:41.591>our, <00:18:41.747>we <00:18:41.902>wanted, <00:18:42.058>uh, <00:18:42.213>for <00:18:42.369>our <00:18:42.525>client

382
00:18:44.365 --> 00:18:47.745
<00:18:44.365>to <00:18:44.505>have <00:18:44.645>the <00:18:44.785>native, <00:18:44.925>uh, <00:18:45.065>look <00:18:45.205>and <00:18:45.345>feel <00:18:45.485>of <00:18:45.625>both <00:18:45.765>applications.

383
00:18:48.285 --> 00:18:51.505
<00:18:48.285>So, <00:18:48.485>uh, <00:18:48.685>the <00:18:48.885>user <00:18:49.085>experience <00:18:49.285>should <00:18:49.485>be <00:18:49.685>native.

384
00:18:53.535 --> 00:18:57.555
<00:18:53.535>We <00:18:53.662>decided <00:18:53.789>to <00:18:53.916>go <00:18:54.044>with <00:18:54.171>baby <00:18:54.298>steps, <00:18:54.425>uh, <00:18:54.553>with <00:18:54.680>only <00:18:54.807>small <00:18:54.935>wins,

385
00:18:57.855 --> 00:19:02.035
<00:18:57.855>and <00:18:57.971>we <00:18:58.088>estimated <00:18:58.205>that <00:18:58.321>we <00:18:58.438>will <00:18:58.555>use <00:18:58.671>only <00:18:58.788>25% <00:18:58.905>of <00:18:59.021>the <00:18:59.138>code <00:18:59.255>base.

386
00:19:02.655 --> 00:19:05.595
<00:19:02.655>Why <00:19:02.795>did, <00:19:02.935>why <00:19:03.075>did <00:19:03.215>we <00:19:03.355>want <00:19:03.495>to <00:19:03.635>use, <00:19:03.774>uh, <00:19:03.915>baby <00:19:04.055>steps?

387
00:19:05.595 --> 00:19:07.755
<00:19:05.595>Because <00:19:05.945>we <00:19:06.295>didn't <00:19:06.645>want <00:19:06.995>to.

388
00:19:08.215 --> 00:19:10.395
<00:19:08.215>We <00:19:08.415>were <00:19:08.615>new, <00:19:08.814>uh, <00:19:09.014>in <00:19:09.215>the <00:19:09.415>multi-platform <00:19:09.615>world.

389
00:19:10.535 --> 00:19:12.875
<00:19:10.535>We <00:19:10.710>didn't <00:19:10.885>want <00:19:11.060>to <00:19:11.235>just <00:19:11.410>try <00:19:11.585>to <00:19:11.760>reuse <00:19:11.935>everything

390
00:19:12.895 --> 00:19:14.955
<00:19:12.895>and <00:19:13.050>then <00:19:13.206>have <00:19:13.361>a <00:19:13.517>lot <00:19:13.672>of <00:19:13.828>problems <00:19:13.983>by <00:19:14.139>doing <00:19:14.295>so.

391
00:19:15.535 --> 00:19:18.875
<00:19:15.535>So <00:19:15.675>we <00:19:15.815>wanted <00:19:15.955>to <00:19:16.095>reuse <00:19:16.235>only <00:19:16.375>the <00:19:16.515>business <00:19:16.655>logic, <00:19:16.795>uh, <00:19:16.935>inside

392
00:19:18.875 --> 00:19:22.555
<00:19:18.875>of <00:19:19.050>our, <00:19:19.225>uh, <00:19:19.400>application, <00:19:19.575>inside <00:19:19.750>of <00:19:19.925>our <00:19:20.100>code <00:19:20.275>base,

393
00:19:23.135 --> 00:19:25.515
<00:19:23.135>and <00:19:23.415>only <00:19:23.695>actually <00:19:23.975>only <00:19:24.254>pure <00:19:24.535>functions.

394
00:19:25.515 --> 00:19:26.755
<00:19:25.515>So <00:19:25.738>what <00:19:25.961>is <00:19:26.184>a <00:19:26.407>pure <00:19:26.631>function?

395
00:19:26.995 --> 00:19:30.395
<00:19:26.995>A <00:19:27.135>pure <00:19:27.274>function <00:19:27.415>is <00:19:27.554>a <00:19:27.695>function <00:19:27.834>that <00:19:27.975>doesn't <00:19:28.114>have <00:19:28.254>any, <00:19:28.395>uh,

396
00:19:30.395 --> 00:19:31.435
<00:19:30.395>side <00:19:30.863>effects, <00:19:31.331>and

397
00:19:31.775 --> 00:19:34.275
<00:19:31.775>for <00:19:31.950>the <00:19:32.125>same <00:19:32.300>input <00:19:32.475>always <00:19:32.650>produces <00:19:32.825>the <00:19:33.000>same <00:19:33.175>output.

398
00:19:34.615 --> 00:19:36.275
<00:19:34.615>So <00:19:34.815>that's <00:19:35.015>everything <00:19:35.215>that <00:19:35.415>we <00:19:35.615>wanted <00:19:35.815>to <00:19:36.015>do.

399
00:19:36.455 --> 00:19:38.715
<00:19:36.455>Do <00:19:36.688>we <00:19:36.921>wanted <00:19:37.155>to <00:19:37.388>share <00:19:37.621>between <00:19:37.855>platforms.

400
00:19:39.415 --> 00:19:42.435
<00:19:39.415>We <00:19:39.590>also <00:19:39.764>didn't <00:19:39.940>want <00:19:40.115>to <00:19:40.290>use <00:19:40.465>any <00:19:40.639>external <00:19:40.815>libraries,

401
00:19:42.535 --> 00:19:44.595
<00:19:42.535>any <00:19:43.001>external <00:19:43.468>multi-platform <00:19:43.935>libraries

402
00:19:44.595 --> 00:19:48.115
<00:19:44.595>because <00:19:44.770>they, <00:19:44.945>we, <00:19:45.120>we <00:19:45.295>don't <00:19:45.470>have <00:19:45.645>experience <00:19:45.820>with <00:19:45.995>those.

403
00:19:48.575 --> 00:19:52.995
<00:19:48.575>Uh, <00:19:48.730>and <00:19:48.886>also <00:19:49.041>they <00:19:49.197>could <00:19:49.352>have <00:19:49.508>their <00:19:49.663>own <00:19:49.819>problems. <00:19:49.975>Okay?

404
00:19:53.015 --> 00:19:54.555
<00:19:53.015>So <00:19:53.246>that <00:19:53.477>would <00:19:53.708>look <00:19:53.939>something <00:19:54.170>like <00:19:54.401>this.

405
00:19:55.095 --> 00:19:57.835
<00:19:55.095>So <00:19:55.250>we <00:19:55.406>would <00:19:55.561>just <00:19:55.717>use, <00:19:55.872>for <00:19:56.028>example, <00:19:56.183>a <00:19:56.339>few <00:19:56.495>pure,

406
00:19:57.835 --> 00:20:00.315
<00:19:57.835>pure <00:19:58.115>functions <00:19:58.395>here <00:19:58.675>and <00:19:58.955>here, <00:19:59.235>here.

407
00:20:00.535 --> 00:20:03.435
<00:20:00.535>And <00:20:00.735>also <00:20:00.935>we, <00:20:01.135>we <00:20:01.335>wouldn't <00:20:01.535>use <00:20:01.735>entire, <00:20:01.935>uh,

408
00:20:03.465 --> 00:20:04.515
<00:20:03.465>objects, <00:20:03.937>entire <00:20:04.410>classes.

409
00:20:04.775 --> 00:20:07.795
<00:20:04.775>We <00:20:04.930>would <00:20:05.086>just <00:20:05.241>have <00:20:05.397>some <00:20:05.552>pure <00:20:05.708>functions <00:20:05.863>written <00:20:06.019>in <00:20:06.175>ly

410
00:20:07.795 --> 00:20:09.635
<00:20:07.795>multiplatform <00:20:08.145>and <00:20:08.495>reused <00:20:08.845>that <00:20:09.195>way.

411
00:20:11.455 --> 00:20:14.995
<00:20:11.455>Um, <00:20:11.655>also, <00:20:11.855>we <00:20:12.054>didn't <00:20:12.254>want <00:20:12.455>to <00:20:12.655>reuse <00:20:12.855>everything

412
00:20:14.995 --> 00:20:18.555
<00:20:14.995>because, <00:20:15.274>uh, <00:20:15.554>we, <00:20:15.834>we <00:20:16.114>aren't <00:20:16.395>experienced

413
00:20:18.665 --> 00:20:20.275
<00:20:18.665>with <00:20:19.014>using <00:20:19.365>ly <00:20:19.715>multi <00:20:20.065>multiplatform.

414
00:20:20.455 --> 00:20:22.835
<00:20:20.455>But, <00:20:20.735>uh, <00:20:21.014>actually <00:20:21.294>we <00:20:21.574>weren't <00:20:21.855>experienced

415
00:20:22.835 --> 00:20:24.795
<00:20:22.835>with <00:20:23.035>using <00:20:23.235>hot <00:20:23.435>multi <00:20:23.635>platform <00:20:23.835>at <00:20:24.035>the <00:20:24.235>time,

416
00:20:25.255 --> 00:20:28.435
<00:20:25.255>and <00:20:25.455>we <00:20:25.655>also <00:20:25.855>couldn't <00:20:26.055>find <00:20:26.255>any <00:20:26.455>multi-platform <00:20:26.655>developers.

417
00:20:29.015 --> 00:20:31.555
<00:20:29.015>Uh, <00:20:29.248>so <00:20:29.481>finding <00:20:29.715>them <00:20:29.948>was <00:20:30.181>an <00:20:30.415>issue.

418
00:20:32.175 --> 00:20:34.235
<00:20:32.175>Uh, <00:20:32.524>onboarding <00:20:32.875>of <00:20:33.225>new <00:20:33.575>developers.

419
00:20:34.375 --> 00:20:35.715
<00:20:34.375>We <00:20:34.676>need <00:20:34.978>to <00:20:35.279>teach <00:20:35.581>them

420
00:20:35.735 --> 00:20:38.715
<00:20:35.735>to <00:20:36.014>use <00:20:36.294>the <00:20:36.574>multi-platform, <00:20:36.854>uh, <00:20:37.135>environment.

421
00:20:39.655 --> 00:20:42.835
<00:20:39.655>And <00:20:39.782>also <00:20:39.909>we <00:20:40.036>wanted <00:20:40.164>for <00:20:40.291>our <00:20:40.418>developers <00:20:40.545>to <00:20:40.673>stay <00:20:40.800>up <00:20:40.927>to <00:20:41.055>date

422
00:20:42.835 --> 00:20:43.915
<00:20:42.835>with <00:20:43.159>the <00:20:43.483>native <00:20:43.807>development.

423
00:20:44.135 --> 00:20:47.115
<00:20:44.135>If <00:20:44.310>you <00:20:44.485>are <00:20:44.660>using, <00:20:44.835>uh, <00:20:45.010>all <00:20:45.185>of <00:20:45.360>the <00:20:45.535>libraries

424
00:20:47.225 --> 00:20:51.245
<00:20:47.225>for <00:20:47.380>TLA <00:20:47.536>multiplatform, <00:20:47.691>then <00:20:47.847>you <00:20:48.002>aren't <00:20:48.158>staying <00:20:48.313>up <00:20:48.469>to <00:20:48.625>date

425
00:20:51.245 --> 00:20:54.405
<00:20:51.245>with <00:20:51.445>native, <00:20:51.645>uh, <00:20:51.844>native <00:20:52.044>stuff <00:20:52.245>that <00:20:52.445>is <00:20:52.645>happening.

426
00:20:54.465 --> 00:20:56.845
<00:20:54.465>So <00:20:54.698>this <00:20:54.931>project <00:20:55.165>will, <00:20:55.398>will <00:20:55.631>end <00:20:55.865>sometime.

427
00:20:57.225 --> 00:21:00.165
<00:20:57.225>So <00:20:57.380>if <00:20:57.536>it <00:20:57.691>takes, <00:20:57.847>uh, <00:20:58.002>six <00:20:58.158>months <00:20:58.313>to, <00:20:58.469>to <00:20:58.625>finish,

428
00:21:00.505 --> 00:21:03.605
<00:21:00.505>our <00:21:00.705>developers <00:21:00.905>will <00:21:01.105>stay <00:21:01.305>behind <00:21:01.505>six <00:21:01.705>months, <00:21:01.905>uh,

429
00:21:04.825 --> 00:21:08.405
<00:21:04.825>six <00:21:05.025>months <00:21:05.225>in <00:21:05.425>the <00:21:05.625>native, <00:21:05.825>uh, <00:21:06.025>native <00:21:06.225>environment.

430
00:21:10.395 --> 00:21:13.605
<00:21:10.395>Okay, <00:21:10.570>so <00:21:10.745>here <00:21:10.920>I've <00:21:11.095>written, <00:21:11.270>why <00:21:11.445>did <00:21:11.620>we <00:21:11.795>learn?

431
00:21:14.735 --> 00:21:16.555
<00:21:14.735>It <00:21:14.935>should <00:21:15.135>actually <00:21:15.334>be, <00:21:15.534>why <00:21:15.735>did <00:21:15.935>we <00:21:16.135>fail?

432
00:21:16.555 --> 00:21:18.355
<00:21:16.555>Because <00:21:16.835>we <00:21:17.115>failed <00:21:17.395>the <00:21:17.675>first <00:21:17.955>time.

433
00:21:18.495 --> 00:21:20.995
<00:21:18.495>But <00:21:18.650>each <00:21:18.806>time <00:21:18.961>you <00:21:19.117>fail, <00:21:19.272>you <00:21:19.428>actually <00:21:19.583>learn, <00:21:19.739>learn <00:21:19.895>something.

434
00:21:21.015 --> 00:21:23.715
<00:21:21.015>So <00:21:21.170>this, <00:21:21.326>I <00:21:21.481>written <00:21:21.637>this. <00:21:21.792>Why, <00:21:21.948>why <00:21:22.103>did <00:21:22.259>we <00:21:22.415>learn?

435
00:21:24.835 --> 00:21:27.845
<00:21:24.835>Okay, <00:21:25.068>we <00:21:25.301>learned <00:21:25.535>because <00:21:25.768>of <00:21:26.001>our <00:21:26.235>lack

436
00:21:27.845 --> 00:21:30.285
<00:21:27.845>of <00:21:28.078>knowledge <00:21:28.311>about <00:21:28.545>the <00:21:28.778>huge <00:21:29.011>memory <00:21:29.245>difference

437
00:21:30.285 --> 00:21:31.645
<00:21:30.285>between <00:21:30.897>two <00:21:31.509>runtimes

438
00:21:31.645 --> 00:21:34.165
<00:21:31.645>that <00:21:31.878>should <00:21:32.111>coexist <00:21:32.345>in <00:21:32.578>a <00:21:32.811>multiplatform <00:21:33.045>environment.

439
00:21:35.125 --> 00:21:36.375
<00:21:35.125>What <00:21:35.500>does <00:21:35.875>this <00:21:36.250>mean?

440
00:21:37.695 --> 00:21:41.445
<00:21:37.695>There <00:21:37.895>is <00:21:38.095>a <00:21:38.294>different <00:21:38.495>memory <00:21:38.695>management <00:21:38.895>model <00:21:39.095>used

441
00:21:41.445 --> 00:21:43.925
<00:21:41.445>between <00:21:41.725>cotton <00:21:42.004>native <00:21:42.284>and <00:21:42.564>cotton <00:21:42.845>JVM.

442
00:21:44.385 --> 00:21:45.525
<00:21:44.385>We <00:21:44.727>didn't <00:21:45.069>know <00:21:45.411>that.

443
00:21:45.585 --> 00:21:48.485
<00:21:45.585>And <00:21:45.785>this <00:21:45.985>was <00:21:46.185>crucial <00:21:46.385>information, <00:21:46.585>uh, <00:21:46.785>for <00:21:46.985>us

444
00:21:48.505 --> 00:21:51.485
<00:21:48.505>to <00:21:48.705>build <00:21:48.905>an <00:21:49.105>architecture <00:21:49.305>that <00:21:49.505>supports <00:21:49.705>cotton <00:21:49.905>multiplatform.

445
00:21:52.485 --> 00:21:56.905
<00:21:52.485>So <00:21:52.640>cotton <00:21:52.796>JVM <00:21:52.951>uses, <00:21:53.107>uh, <00:21:53.262>as <00:21:53.418>they <00:21:53.573>call <00:21:53.729>it, <00:21:53.885>uh,

446
00:21:56.905 --> 00:21:59.345
<00:21:56.905>it's <00:21:57.138>a <00:21:57.371>rele <00:21:57.605>relaxed <00:21:57.838>memory <00:21:58.071>management <00:21:58.305>model.

447
00:21:59.685 --> 00:22:02.185
<00:21:59.685>Uh, <00:21:59.860>this <00:22:00.034>is <00:22:00.210>the <00:22:00.385>memory <00:22:00.560>management <00:22:00.735>model <00:22:00.909>that, <00:22:01.085>uh,

448
00:22:02.835 --> 00:22:06.265
<00:22:02.835>every <00:22:03.035>Kotlin, <00:22:03.235>uh, <00:22:03.435>Kotlin, <00:22:03.635>Android <00:22:03.835>Kotlin <00:22:04.035>developers, <00:22:04.235>uh,

449
00:22:06.455 --> 00:22:09.665
<00:22:06.455>Java <00:22:06.804>developers, <00:22:07.155>swift <00:22:07.504>developers, <00:22:07.855>know

450
00:22:10.245 --> 00:22:11.625
<00:22:10.245>and <00:22:10.866>love <00:22:11.487>actually,

451
00:22:12.165 --> 00:22:14.665
<00:22:12.165>and <00:22:12.305>this <00:22:12.445>is <00:22:12.585>the <00:22:12.725>one <00:22:12.865>that <00:22:13.004>we <00:22:13.145>are <00:22:13.284>most <00:22:13.425>comfortable <00:22:13.565>with.

452
00:22:15.125 --> 00:22:17.745
<00:22:15.125>We <00:22:15.325>didn't <00:22:15.525>know <00:22:15.725>that <00:22:15.925>Kolin <00:22:16.125>native <00:22:16.325>actually <00:22:16.525>has,

453
00:22:17.845 --> 00:22:20.625
<00:22:17.845>as <00:22:18.000>they <00:22:18.156>call <00:22:18.311>it, <00:22:18.467>a <00:22:18.622>strict, <00:22:18.778>uh, <00:22:18.933>memory <00:22:19.089>management <00:22:19.245>model.

454
00:22:21.045 --> 00:22:22.425
<00:22:21.045>And <00:22:21.355>why <00:22:21.666>is <00:22:21.976>it <00:22:22.287>strict?

455
00:22:22.425 --> 00:22:24.785
<00:22:22.425>Because <00:22:22.705>it <00:22:22.985>defines <00:22:23.264>strict <00:22:23.544>rules <00:22:23.825>about

456
00:22:24.845 --> 00:22:26.745
<00:22:24.845>how <00:22:25.125>state <00:22:25.405>is <00:22:25.685>shared <00:22:25.965>between <00:22:26.245>threads.

457
00:22:27.405 --> 00:22:28.905
<00:22:27.405>We <00:22:27.629>didn't <00:22:27.855>know <00:22:28.080>that <00:22:28.305>at <00:22:28.530>the <00:22:28.754>time,

458
00:22:29.165 --> 00:22:33.185
<00:22:29.165>and <00:22:29.292>it, <00:22:29.419>it <00:22:29.546>gave <00:22:29.674>us <00:22:29.801>a <00:22:29.928>lot <00:22:30.055>of <00:22:30.183>headaches <00:22:30.310>because <00:22:30.437>of <00:22:30.565>it.

459
00:22:34.145 --> 00:22:35.475
<00:22:34.145>Okay, <00:22:34.384>so <00:22:34.623>what <00:22:34.863>does <00:22:35.102>that <00:22:35.341>mean?

460
00:22:35.505 --> 00:22:37.795
<00:22:35.505>What, <00:22:35.738>what's <00:22:35.971>a <00:22:36.205>strict <00:22:36.438>memory <00:22:36.671>management <00:22:36.905>model?

461
00:22:38.105 --> 00:22:39.995
<00:22:38.105>Basically, <00:22:38.571>the <00:22:39.038>runtime <00:22:39.505>ensures

462
00:22:39.995 --> 00:22:43.235
<00:22:39.995>that <00:22:40.169>there <00:22:40.344>are <00:22:40.520>no <00:22:40.695>race <00:22:40.870>conditions, <00:22:41.044>uh, <00:22:41.219>or <00:22:41.395>deadlocks.

463
00:22:43.575 --> 00:22:46.875
<00:22:43.575>And <00:22:43.730>how <00:22:43.886>does <00:22:44.041>it, <00:22:44.197>uh, <00:22:44.352>ensure <00:22:44.508>it <00:22:44.663>crashes <00:22:44.819>in <00:22:44.975>runtime.

464
00:22:47.095 --> 00:22:48.835
<00:22:47.095>So <00:22:47.445>that's <00:22:47.795>how <00:22:48.145>runtime <00:22:48.495>ensures

465
00:22:48.835 --> 00:22:50.515
<00:22:48.835>that <00:22:49.035>there <00:22:49.235>are <00:22:49.435>no <00:22:49.635>race <00:22:49.835>conditions <00:22:50.035>in <00:22:50.235>deadlocks.

466
00:22:50.615 --> 00:22:53.155
<00:22:50.615>It <00:22:50.848>crashes <00:22:51.081>immediately <00:22:51.315>once <00:22:51.548>you <00:22:51.781>violate <00:22:52.015>some

467
00:22:53.155 --> 00:22:54.355
<00:22:53.155>of <00:22:53.371>the <00:22:53.587>rules <00:22:53.803>that <00:22:54.019>they <00:22:54.235>defined.

468
00:22:56.305 --> 00:22:58.125
<00:22:56.305>Uh, <00:22:56.585>why <00:22:56.865>did <00:22:57.145>they <00:22:57.425>do <00:22:57.705>it?

469
00:22:58.125 --> 00:22:59.925
<00:22:58.125>Because <00:22:58.825>also, <00:22:59.525>uh,

470
00:23:00.045 --> 00:23:03.365
<00:23:00.045>because <00:23:00.220>by, <00:23:00.395>by <00:23:00.570>having <00:23:00.745>the <00:23:00.920>strict <00:23:01.095>member <00:23:01.270>management <00:23:01.445>model,

471
00:23:03.465 --> 00:23:05.885
<00:23:03.465>as <00:23:03.639>they <00:23:03.814>said, <00:23:03.990>you <00:23:04.165>can't <00:23:04.340>have, <00:23:04.514>uh, <00:23:04.689>race <00:23:04.865>conditions

472
00:23:05.885 --> 00:23:09.245
<00:23:05.885>or <00:23:06.085>deadlocks, <00:23:06.285>but <00:23:06.485>also <00:23:06.685>garbage <00:23:06.885>collection <00:23:07.085>is <00:23:07.285>really

473
00:23:09.245 --> 00:23:10.525
<00:23:09.245>fast <00:23:09.533>and <00:23:09.821>easy <00:23:10.109>to <00:23:10.397>implement.

474
00:23:12.335 --> 00:23:14.995
<00:23:12.335>So <00:23:12.615>that's <00:23:12.895>the <00:23:13.175>first, <00:23:13.455>uh, <00:23:13.735>thing.

475
00:23:15.495 --> 00:23:17.515
<00:23:15.495>Why <00:23:15.774>did <00:23:16.054>we <00:23:16.334>fail, <00:23:16.614>actually <00:23:16.895>learn?

476
00:23:17.935 --> 00:23:19.075
<00:23:17.935>The <00:23:18.277>second <00:23:18.619>thing <00:23:18.961>is

477
00:23:19.195 --> 00:23:21.915
<00:23:19.195>that <00:23:19.428>cotton <00:23:19.661>native <00:23:19.895>threading <00:23:20.128>doesn't <00:23:20.361>work <00:23:20.595>properly

478
00:23:21.985 --> 00:23:24.155
<00:23:21.985>with <00:23:22.218>the <00:23:22.451>current <00:23:22.685>state <00:23:22.918>of <00:23:23.151>cotton <00:23:23.385>quarantines.

479
00:23:24.535 --> 00:23:27.675
<00:23:24.535>Uh, <00:23:24.735>we <00:23:24.935>use <00:23:25.135>cotton <00:23:25.335>co <00:23:25.535>quarantines <00:23:25.735>for, <00:23:25.935>um,

480
00:23:28.735 --> 00:23:31.515
<00:23:28.735>for <00:23:28.909>concurrency <00:23:29.084>in <00:23:29.260>our <00:23:29.435>application <00:23:29.610>because <00:23:29.784>it <00:23:29.959>makes <00:23:30.135>sense.

481
00:23:31.535 --> 00:23:33.195
<00:23:31.535>If <00:23:31.768>we <00:23:32.001>are <00:23:32.235>using <00:23:32.468>cotton <00:23:32.701>motor <00:23:32.935>platform,

482
00:23:33.215 --> 00:23:36.835
<00:23:33.215>we <00:23:33.342>should <00:23:33.469>use <00:23:33.596>also <00:23:33.724>cotton <00:23:33.851>quarantines <00:23:33.978>to <00:23:34.105>stay <00:23:34.233>to, <00:23:34.360>to <00:23:34.487>stay <00:23:34.615>in

483
00:23:36.835 --> 00:23:38.315
<00:23:36.835>that, <00:23:37.279>uh, <00:23:37.723>cotton <00:23:38.167>scope.

484
00:23:39.055 --> 00:23:42.235
<00:23:39.055>Uh, <00:23:39.230>at <00:23:39.405>the <00:23:39.580>time, <00:23:39.755>cotton <00:23:39.930>native <00:23:40.105>will <00:23:40.280>still, <00:23:40.455>actually,

485
00:23:42.235 --> 00:23:45.765
<00:23:42.235>cotton <00:23:42.409>native <00:23:42.584>threading <00:23:42.760>is <00:23:42.935>not <00:23:43.110>fully <00:23:43.284>functional, <00:23:43.459>uh, <00:23:43.635>inside

486
00:23:45.765 --> 00:23:46.765
<00:23:45.765>of <00:23:46.065>cotton <00:23:46.365>core <00:23:46.665>routines.

487
00:23:47.385 --> 00:23:50.205
<00:23:47.385>The <00:23:47.540>problem <00:23:47.696>is <00:23:47.851>that <00:23:48.007>every <00:23:48.162>time <00:23:48.318>you <00:23:48.473>want <00:23:48.629>to <00:23:48.785>jump

488
00:23:50.205 --> 00:23:51.805
<00:23:50.205>to <00:23:50.485>a <00:23:50.764>background <00:23:51.044>thread <00:23:51.324>or, <00:23:51.605>or,

489
00:23:51.945 --> 00:23:54.565
<00:23:51.945>or <00:23:52.178>something <00:23:52.411>like <00:23:52.645>that, <00:23:52.878>the, <00:23:53.111>the <00:23:53.345>thread,

490
00:23:54.905 --> 00:23:56.085
<00:23:54.905>it <00:23:55.170>looks <00:23:55.436>like <00:23:55.701>a <00:23:55.967>deadlocks.

491
00:23:56.085 --> 00:23:58.445
<00:23:56.085>It <00:23:56.365>just <00:23:56.645>freezes. <00:23:56.925>There's <00:23:57.205>no <00:23:57.485>exceptions.

492
00:23:58.445 --> 00:24:01.285
<00:23:58.445>There's, <00:23:58.645>there's <00:23:58.845>no <00:23:59.044>indication <00:23:59.245>that <00:23:59.445>something <00:23:59.645>is <00:23:59.845>wrong.

493
00:24:01.385 --> 00:24:03.925
<00:24:01.385>It <00:24:01.585>just <00:24:01.785>doesn't <00:24:01.985>work. <00:24:02.185>It <00:24:02.385>gave <00:24:02.585>us, <00:24:02.785>uh,

494
00:24:04.565 --> 00:24:05.845
<00:24:04.565>a <00:24:04.853>few <00:24:05.141>days <00:24:05.429>of <00:24:05.717>debugging.

495
00:24:05.865 --> 00:24:07.445
<00:24:05.865>Why <00:24:06.145>isn't <00:24:06.425>work? <00:24:06.705>Isn't <00:24:06.985>it <00:24:07.265>working?

496
00:24:07.445 --> 00:24:10.485
<00:24:07.445>Because <00:24:07.620>we <00:24:07.794>at <00:24:07.970>the <00:24:08.145>time, <00:24:08.320>also <00:24:08.495>had <00:24:08.669>the <00:24:08.845>problems

497
00:24:10.485 --> 00:24:11.805
<00:24:10.485>with <00:24:10.880>memory <00:24:11.277>management <00:24:11.673>model,

498
00:24:11.985 --> 00:24:15.205
<00:24:11.985>and <00:24:12.125>also <00:24:12.264>on <00:24:12.405>top <00:24:12.544>of <00:24:12.685>those <00:24:12.824>were <00:24:12.965>the <00:24:13.104>cotton <00:24:13.245>radio <00:24:13.385>threading,

499
00:24:15.225 --> 00:24:16.405
<00:24:15.225>and <00:24:15.490>we <00:24:15.755>were <00:24:16.021>just <00:24:16.287>trying

500
00:24:16.405 --> 00:24:18.165
<00:24:16.405>to <00:24:16.580>figure <00:24:16.754>out, <00:24:16.930>uh, <00:24:17.105>how <00:24:17.280>to <00:24:17.455>make <00:24:17.629>it <00:24:17.805>work.

501
00:24:19.905 --> 00:24:24.205
<00:24:19.905>Uh, <00:24:20.138>you <00:24:20.371>can <00:24:20.605>have, <00:24:20.838>uh, <00:24:21.071>concurrency <00:24:21.305>by,

502
00:24:24.235 --> 00:24:26.805
<00:24:24.235>with <00:24:24.409>just <00:24:24.584>one <00:24:24.760>thread <00:24:24.935>by <00:24:25.110>using <00:24:25.284>hot <00:24:25.459>core <00:24:25.635>routines

503
00:24:26.805 --> 00:24:28.005
<00:24:26.805>because <00:24:27.021>it's <00:24:27.237>a <00:24:27.453>little <00:24:27.669>bit <00:24:27.885>different.

504
00:24:28.345 --> 00:24:29.725
<00:24:28.345>The <00:24:28.552>principle <00:24:28.759>is <00:24:28.966>a <00:24:29.173>little <00:24:29.379>bit <00:24:29.587>different.

505
00:24:30.225 --> 00:24:33.365
<00:24:30.225>And <00:24:30.380>we, <00:24:30.536>so <00:24:30.691>we <00:24:30.847>have, <00:24:31.002>we <00:24:31.158>have <00:24:31.313>a <00:24:31.469>concurrent, <00:24:31.625>uh,

506
00:24:33.545 --> 00:24:35.645
<00:24:33.545>iOS <00:24:33.778>application, <00:24:34.011>but <00:24:34.245>it's <00:24:34.478>not <00:24:34.711>fully <00:24:34.945>concurrent

507
00:24:35.665 --> 00:24:36.685
<00:24:35.665>as <00:24:35.818>we <00:24:35.971>would <00:24:36.124>like <00:24:36.277>to <00:24:36.429>have <00:24:36.582>it.

508
00:24:37.905 --> 00:24:40.955
<00:24:37.905>Also, <00:24:38.045>the <00:24:38.185>last <00:24:38.325>thing, <00:24:38.465>the <00:24:38.605>last <00:24:38.745>biggest <00:24:38.885>issue <00:24:39.024>that <00:24:39.165>we <00:24:39.305>had,

509
00:24:41.255 --> 00:24:43.835
<00:24:41.255>we <00:24:41.410>had, <00:24:41.566>uh, <00:24:41.721>some <00:24:41.877>of <00:24:42.032>the <00:24:42.188>issues <00:24:42.343>with <00:24:42.499>the <00:24:42.655>generics.

510
00:24:44.375 --> 00:24:47.275
<00:24:44.375>Uh, <00:24:44.550>coordinated <00:24:44.725>generics <00:24:44.900>can <00:24:45.075>only <00:24:45.250>be <00:24:45.425>defined <00:24:45.600>on <00:24:45.775>classes,

511
00:24:47.575 --> 00:24:49.595
<00:24:47.575>not <00:24:47.925>on <00:24:48.275>interfaces <00:24:48.625>or <00:24:48.975>functions.

512
00:24:50.665 --> 00:24:52.845
<00:24:50.665>And <00:24:50.805>also <00:24:50.945>that's <00:24:51.085>something <00:24:51.225>that <00:24:51.365>we <00:24:51.504>didn't <00:24:51.645>know <00:24:51.784>at <00:24:51.925>the <00:24:52.065>time.

513
00:24:54.145 --> 00:24:55.565
<00:24:54.145>So <00:24:54.400>how <00:24:54.656>did <00:24:54.911>that <00:24:55.167>affect <00:24:55.423>us?

514
00:24:55.635 --> 00:24:57.565
<00:24:55.635>Well, <00:24:55.985>something, <00:24:56.335>something <00:24:56.685>like <00:24:57.035>this.

515
00:25:00.285 --> 00:25:02.675
<00:25:00.285>Okay, <00:25:00.565>enough <00:25:00.845>with <00:25:01.125>the <00:25:01.405>fun <00:25:01.685>stuff.

516
00:25:03.375 --> 00:25:06.355
<00:25:03.375>Uh, <00:25:03.575>so <00:25:03.775>let's <00:25:03.975>just <00:25:04.175>go <00:25:04.375>through <00:25:04.575>the <00:25:04.775>steps.

517
00:25:06.625 --> 00:25:08.795
<00:25:06.625>What <00:25:06.825>did, <00:25:07.025>why, <00:25:07.225>what <00:25:07.425>we <00:25:07.625>did <00:25:07.825>we <00:25:08.025>do?

518
00:25:09.055 --> 00:25:13.435
<00:25:09.055>So <00:25:09.210>first, <00:25:09.366>because <00:25:09.521>I'm <00:25:09.677>an <00:25:09.832>Android <00:25:09.988>developer, <00:25:10.143>I, <00:25:10.299>I <00:25:10.455>wanted

519
00:25:13.435 --> 00:25:14.835
<00:25:13.435>to <00:25:13.645>make <00:25:13.855>it <00:25:14.065>work <00:25:14.275>on <00:25:14.485>Android <00:25:14.695>first.

520
00:25:15.015 --> 00:25:16.875
<00:25:15.015>It, <00:25:15.215>I <00:25:15.415>feel <00:25:15.615>most <00:25:15.815>comfortable <00:25:16.015>with <00:25:16.215>doing <00:25:16.415>it.

521
00:25:16.895 --> 00:25:18.635
<00:25:16.895>So, <00:25:17.175>so <00:25:17.455>I <00:25:17.735>made <00:25:18.014>it <00:25:18.295>work

522
00:25:18.735 --> 00:25:20.715
<00:25:18.735>and <00:25:18.935>then <00:25:19.135>made <00:25:19.334>it <00:25:19.534>pretty <00:25:19.735>on <00:25:19.935>Quantum <00:25:20.135>JVM.

523
00:25:20.935 --> 00:25:22.515
<00:25:20.935>It, <00:25:21.135>it <00:25:21.335>was <00:25:21.534>a <00:25:21.735>few <00:25:21.935>days <00:25:22.135>of <00:25:22.335>work,

524
00:25:22.735 --> 00:25:25.155
<00:25:22.735>and <00:25:22.935>it <00:25:23.135>was <00:25:23.334>not <00:25:23.534>for <00:25:23.735>the <00:25:23.935>entire <00:25:24.135>application,

525
00:25:25.255 --> 00:25:27.635
<00:25:25.255>but <00:25:25.605>for <00:25:25.955>the <00:25:26.305>base <00:25:26.655>architecture.

526
00:25:28.135 --> 00:25:30.555
<00:25:28.135>And <00:25:28.335>everything <00:25:28.535>worked. <00:25:28.735>It <00:25:28.935>worked, <00:25:29.135>everything <00:25:29.335>was <00:25:29.535>fine.

527
00:25:31.465 --> 00:25:35.275
<00:25:31.465>Then <00:25:31.639>the, <00:25:31.814>the <00:25:31.990>first, <00:25:32.165>uh, <00:25:32.340>error, <00:25:32.514>the <00:25:32.689>first, <00:25:32.865>um,

528
00:25:35.575 --> 00:25:38.595
<00:25:35.575>the <00:25:35.730>first <00:25:35.886>thing <00:25:36.041>that <00:25:36.197>I <00:25:36.352>did <00:25:36.508>wrong <00:25:36.663>was <00:25:36.819>expecting <00:25:36.975>it

529
00:25:38.615 --> 00:25:40.315
<00:25:38.615>to <00:25:38.848>work <00:25:39.081>the <00:25:39.315>same <00:25:39.548>on <00:25:39.781>quantum <00:25:40.015>native.

530
00:25:41.715 --> 00:25:43.205
<00:25:41.715>Then <00:25:42.050>all <00:25:42.385>hell <00:25:42.720>broke <00:25:43.056>loose.

531
00:25:44.255 --> 00:25:46.275
<00:25:44.255>Uh, <00:25:44.455>I <00:25:44.655>desperately <00:25:44.855>try <00:25:45.055>to <00:25:45.255>make <00:25:45.455>it <00:25:45.655>work

532
00:25:46.275 --> 00:25:47.395
<00:25:46.275>with <00:25:46.527>the <00:25:46.779>current <00:25:47.031>code <00:25:47.283>base.

533
00:25:47.915 --> 00:25:50.275
<00:25:47.915>I <00:25:48.195>try <00:25:48.475>to <00:25:48.754>configure <00:25:49.034>something <00:25:49.315>differently.

534
00:25:50.515 --> 00:25:53.355
<00:25:50.515>I <00:25:50.690>try <00:25:50.865>to, <00:25:51.040>to <00:25:51.215>modify <00:25:51.390>the <00:25:51.565>current <00:25:51.740>code <00:25:51.915>base.

535
00:25:53.415 --> 00:25:55.635
<00:25:53.415>So <00:25:53.648>just, <00:25:53.881>I <00:25:54.115>don't, <00:25:54.348>I <00:25:54.581>don't <00:25:54.815>need

536
00:25:55.635 --> 00:25:59.635
<00:25:55.635>to <00:25:55.790>dump <00:25:55.946>it <00:25:56.101>all <00:25:56.257>in <00:25:56.412>the <00:25:56.568>trashcan, <00:25:56.723>but <00:25:56.879>I <00:25:57.035>fail.

537
00:25:59.835 --> 00:26:03.215
<00:25:59.835>I <00:26:00.115>learned, <00:26:00.395>but <00:26:00.675>actually <00:26:00.955>failed. <00:26:01.235>Okay.

538
00:26:03.515 --> 00:26:06.055
<00:26:03.515>And <00:26:03.748>that, <00:26:03.981>that, <00:26:04.215>uh, <00:26:04.448>by <00:26:04.681>doing, <00:26:04.915>so,

539
00:26:06.285 --> 00:26:08.255
<00:26:06.285>here <00:26:06.460>we <00:26:06.635>are <00:26:06.810>at <00:26:06.985>our <00:26:07.160>take <00:26:07.335>on <00:26:07.510>it <00:26:07.685>too.

540
00:26:10.015 --> 00:26:12.995
<00:26:10.015>So <00:26:10.142>the <00:26:10.269>first <00:26:10.396>thing <00:26:10.524>that <00:26:10.651>I <00:26:10.778>did <00:26:10.905>was <00:26:11.033>taking <00:26:11.160>a <00:26:11.287>step <00:26:11.415>back.

541
00:26:13.155 --> 00:26:16.555
<00:26:13.155>I <00:26:13.310>deep <00:26:13.466>dive, <00:26:13.621>dived <00:26:13.777>into <00:26:13.932>cotton, <00:26:14.088>uh, <00:26:14.243>native <00:26:14.399>memory <00:26:14.555>model.

542
00:26:16.795 --> 00:26:19.155
<00:26:16.795>I <00:26:17.028>took <00:26:17.261>a <00:26:17.495>few <00:26:17.728>days <00:26:17.961>a <00:26:18.195>week

543
00:26:19.215 --> 00:26:23.155
<00:26:19.215>or <00:26:19.389>so <00:26:19.564>to <00:26:19.740>just <00:26:19.915>read <00:26:20.090>everything <00:26:20.264>about, <00:26:20.439>about <00:26:20.615>it,

544
00:26:23.415 --> 00:26:25.835
<00:26:23.415>try <00:26:23.615>out <00:26:23.815>a <00:26:24.014>few <00:26:24.215>things, <00:26:24.415>watch <00:26:24.615>YouTube <00:26:24.815>videos.

545
00:26:26.415 --> 00:26:28.075
<00:26:26.415>And <00:26:26.695>once <00:26:26.975>I <00:26:27.254>have <00:26:27.534>a <00:26:27.815>grasp

546
00:26:28.425 --> 00:26:30.635
<00:26:28.425>what <00:26:28.658>actually <00:26:28.891>cotton <00:26:29.125>native <00:26:29.358>memory <00:26:29.591>model <00:26:29.825>means

547
00:26:31.235 --> 00:26:32.235
<00:26:31.235>I <00:26:31.534>could <00:26:31.834>develop <00:26:32.135>something.

548
00:26:33.095 --> 00:26:34.835
<00:26:33.095>So <00:26:33.375>then <00:26:33.655>I <00:26:33.935>made <00:26:34.215>it <00:26:34.495>work,

549
00:26:34.865 --> 00:26:36.835
<00:26:34.865>then <00:26:35.098>made <00:26:35.331>it <00:26:35.565>pretty <00:26:35.798>on <00:26:36.031>cotton <00:26:36.265>native.

550
00:26:37.895 --> 00:26:39.305
<00:26:37.895>Once <00:26:38.148>it <00:26:38.402>worked <00:26:38.656>on <00:26:38.910>cotton <00:26:39.164>native,

551
00:26:39.445 --> 00:26:41.225
<00:26:39.445>it <00:26:39.725>also <00:26:40.004>works <00:26:40.284>on <00:26:40.564>cotton <00:26:40.845>JVM.

552
00:26:42.285 --> 00:26:45.725
<00:26:42.285>And <00:26:42.440>then <00:26:42.596>I <00:26:42.751>again, <00:26:42.907>learned, <00:26:43.062>but <00:26:43.218>this <00:26:43.373>time <00:26:43.529>I <00:26:43.685>succeeded.

553
00:26:46.385 --> 00:26:49.365
<00:26:46.385>So <00:26:46.560>since <00:26:46.735>cotton <00:26:46.910>native <00:26:47.085>memory <00:26:47.260>management <00:26:47.435>model <00:26:47.610>is <00:26:47.785>strict

554
00:26:49.545 --> 00:26:53.325
<00:26:49.545>and <00:26:49.672>cotton, <00:26:49.799>JVM <00:26:49.926>is <00:26:50.054>relaxed, <00:26:50.181>once <00:26:50.308>you <00:26:50.435>made <00:26:50.563>it <00:26:50.690>work <00:26:50.817>on <00:26:50.945>cotton,

555
00:26:53.325 --> 00:26:55.885
<00:26:53.325>native <00:26:53.605>cotton, <00:26:53.885>JVM <00:26:54.165>doesn't <00:26:54.445>really <00:26:54.725>care.

556
00:26:56.315 --> 00:26:58.845
<00:26:56.315>It's <00:26:56.595>relaxed. <00:26:56.875>Whatever <00:26:57.155>you <00:26:57.435>do, <00:26:57.715>uh,

557
00:26:58.845 --> 00:27:00.925
<00:26:58.845>regarding <00:26:59.125>the <00:26:59.405>memory <00:26:59.685>management, <00:26:59.965>he'll <00:27:00.245>say,

558
00:27:00.925 --> 00:27:02.045
<00:27:00.925>okay, <00:27:01.177>I'm <00:27:01.429>fine <00:27:01.681>with <00:27:01.933>it.

559
00:27:02.135 --> 00:27:05.815
<00:27:02.135>Let's <00:27:02.310>go. <00:27:02.485>Okay, <00:27:02.660>so <00:27:02.835>our <00:27:03.010>take <00:27:03.185>on <00:27:03.360>it <00:27:03.535>too,

560
00:27:05.995 --> 00:27:08.855
<00:27:05.995>if <00:27:06.195>this <00:27:06.395>is <00:27:06.594>our <00:27:06.794>application, <00:27:06.995>uh, <00:27:07.195>we <00:27:07.395>noticed

561
00:27:08.925 --> 00:27:11.095
<00:27:08.925>that <00:27:09.205>the <00:27:09.485>biggest <00:27:09.764>issue, <00:27:10.044>uh, <00:27:10.325>was

562
00:27:11.245 --> 00:27:13.335
<00:27:11.245>with <00:27:11.478>the <00:27:11.711>member <00:27:11.945>management <00:27:12.178>model <00:27:12.411>was <00:27:12.645>jumping

563
00:27:13.405 --> 00:27:15.135
<00:27:13.405>between <00:27:13.754>shared <00:27:14.105>and <00:27:14.455>native <00:27:14.805>code.

564
00:27:15.475 --> 00:27:19.135
<00:27:15.475>Uh, <00:27:15.630>since <00:27:15.786>we <00:27:15.941>shared <00:27:16.097>only <00:27:16.252>few <00:27:16.408>parts <00:27:16.563>from <00:27:16.719>different, <00:27:16.875>uh,

565
00:27:19.135 --> 00:27:24.015
<00:27:19.135>classes <00:27:19.262>you <00:27:19.389>needed <00:27:19.516>to, <00:27:19.644>we, <00:27:19.771>we <00:27:19.898>had, <00:27:20.025>uh, <00:27:20.153>quite <00:27:20.280>a <00:27:20.407>few <00:27:20.535>jumps

566
00:27:24.015 --> 00:27:26.735
<00:27:24.015>between <00:27:24.170>the <00:27:24.326>shared <00:27:24.481>and <00:27:24.637>the <00:27:24.792>native <00:27:24.948>part <00:27:25.103>of <00:27:25.259>the <00:27:25.415>application.

567
00:27:27.355 --> 00:27:28.495
<00:27:27.355>That's <00:27:27.697>why <00:27:28.039>we <00:27:28.380>decided

568
00:27:28.495 --> 00:27:31.015
<00:27:28.495>to <00:27:28.650>teach <00:27:28.806>the <00:27:28.961>baby <00:27:29.117>steps <00:27:29.272>approach <00:27:29.428>and <00:27:29.583>go <00:27:29.739>all <00:27:29.895>in.

569
00:27:31.475 --> 00:27:32.535
<00:27:31.475>Uh, <00:27:31.713>what <00:27:31.952>does <00:27:32.190>that <00:27:32.429>mean?

570
00:27:32.555 --> 00:27:36.575
<00:27:32.555>We <00:27:32.695>want, <00:27:32.835>we <00:27:32.975>decided <00:27:33.115>to <00:27:33.255>reuse <00:27:33.395>everything <00:27:33.535>except <00:27:33.675>the <00:27:33.815>UI <00:27:33.955>layer.

571
00:27:37.715 --> 00:27:40.655
<00:27:37.715>Uh, <00:27:37.889>yeah, <00:27:38.064>we <00:27:38.240>reuse <00:27:38.415>everything <00:27:38.590>except <00:27:38.764>the <00:27:38.939>UI <00:27:39.115>layer.

572
00:27:41.195 --> 00:27:45.215
<00:27:41.195>Uh, <00:27:41.370>our <00:27:41.544>calculations <00:27:41.720>are <00:27:41.895>that <00:27:42.070>we <00:27:42.245>reused <00:27:42.419>around <00:27:42.595>80%

573
00:27:45.235 --> 00:27:48.975
<00:27:45.235>of <00:27:45.390>the <00:27:45.546>code <00:27:45.701>base, <00:27:45.857>and <00:27:46.012>we, <00:27:46.168>we <00:27:46.323>have <00:27:46.479>minimum <00:27:46.635>jumps

574
00:27:48.975 --> 00:27:52.855
<00:27:48.975>between <00:27:49.208>shared <00:27:49.441>and, <00:27:49.675>uh, <00:27:49.908>native <00:27:50.141>uh, <00:27:50.375>worlds.

575
00:27:53.235 --> 00:27:57.255
<00:27:53.235>We <00:27:53.390>have <00:27:53.546>only <00:27:53.701>one <00:27:53.857>jump <00:27:54.012>when, <00:27:54.168>when <00:27:54.323>user <00:27:54.479>does <00:27:54.635>something

576
00:27:57.255 --> 00:27:59.775
<00:27:57.255>with <00:27:57.455>the <00:27:57.655>ui, <00:27:57.855>we <00:27:58.055>have <00:27:58.255>only <00:27:58.455>one <00:27:58.655>jump

577
00:27:59.775 --> 00:28:00.935
<00:27:59.775>to <00:28:00.123>the <00:28:00.471>presentation <00:28:00.819>layer.

578
00:28:01.315 --> 00:28:05.375
<00:28:01.315>And <00:28:01.455>when <00:28:01.595>the <00:28:01.735>presentation <00:28:01.875>layer, <00:28:02.015>uh, <00:28:02.155>gets <00:28:02.295>a <00:28:02.435>new <00:28:02.575>view <00:28:02.715>model

579
00:28:05.435 --> 00:28:08.335
<00:28:05.435>to <00:28:05.562>show <00:28:05.689>we <00:28:05.816>have <00:28:05.944>only <00:28:06.071>a <00:28:06.198>one <00:28:06.325>jump <00:28:06.453>to <00:28:06.580>the <00:28:06.707>UI <00:28:06.835>layer.

580
00:28:08.395 --> 00:28:11.895
<00:28:08.395>By <00:28:08.535>doing <00:28:08.675>so, <00:28:08.815>we, <00:28:08.955>we <00:28:09.095>have <00:28:09.235>a <00:28:09.375>minimum <00:28:09.514>jumps <00:28:09.655>between <00:28:09.795>shared

581
00:28:11.995 --> 00:28:13.695
<00:28:11.995>and <00:28:12.344>multi-platform <00:28:12.695>environment, <00:28:13.044>uh, <00:28:13.395>shared

582
00:28:13.755 --> 00:28:15.415
<00:28:13.755>and <00:28:14.221>native, <00:28:14.688>uh, <00:28:15.155>environments.

583
00:28:17.385 --> 00:28:21.115
<00:28:17.385>Okay? <00:28:17.585>That's <00:28:17.785>regarding, <00:28:17.985>uh, <00:28:18.185>the <00:28:18.385>memory <00:28:18.585>management <00:28:18.785>model.

584
00:28:21.695 --> 00:28:23.755
<00:28:21.695>The <00:28:22.044>second <00:28:22.395>thing <00:28:22.745>is <00:28:23.095>threading.

585
00:28:23.935 --> 00:28:25.195
<00:28:23.935>Uh, <00:28:24.218>we <00:28:24.502>made <00:28:24.785>it <00:28:25.069>so

586
00:28:25.265 --> 00:28:28.035
<00:28:25.265>that <00:28:25.420>we <00:28:25.576>used <00:28:25.731>main <00:28:25.887>thread <00:28:26.042>only <00:28:26.198>on <00:28:26.353>the <00:28:26.509>UI <00:28:26.665>layer

587
00:28:28.255 --> 00:28:30.195
<00:28:28.255>and <00:28:28.455>bag <00:28:28.655>on <00:28:28.855>threads <00:28:29.055>in <00:28:29.255>every <00:28:29.455>other <00:28:29.655>layer.

588
00:28:30.295 --> 00:28:34.275
<00:28:30.295>So <00:28:30.422>we, <00:28:30.549>we, <00:28:30.676>we <00:28:30.804>made <00:28:30.931>an <00:28:31.058>architecture <00:28:31.185>we <00:28:31.313>take, <00:28:31.440>which <00:28:31.567>takes <00:28:31.695>care

589
00:28:34.275 --> 00:28:37.075
<00:28:34.275>of <00:28:34.391>it, <00:28:34.508>uh, <00:28:34.625>in <00:28:34.741>the <00:28:34.858>most <00:28:34.975>simple <00:28:35.091>way <00:28:35.208>that <00:28:35.325>we <00:28:35.441>could <00:28:35.558>think <00:28:35.675>of.

590
00:28:37.455 --> 00:28:40.795
<00:28:37.455>So <00:28:37.655>because <00:28:37.855>threading <00:28:38.054>wasn't <00:28:38.254>done <00:28:38.455>correctly <00:28:38.655>on, <00:28:38.855>uh,

591
00:28:40.795 --> 00:28:43.275
<00:28:40.795>cotton <00:28:41.028>Corins <00:28:41.261>for <00:28:41.495>Cotton <00:28:41.728>Native, <00:28:41.961>we <00:28:42.195>wanted

592
00:28:43.295 --> 00:28:46.115
<00:28:43.295>to <00:28:43.450>have <00:28:43.606>only <00:28:43.761>one <00:28:43.917>place, <00:28:44.072>which <00:28:44.228>takes <00:28:44.383>care <00:28:44.539>of <00:28:44.695>threading.

593
00:28:46.575 --> 00:28:50.035
<00:28:46.575>So <00:28:46.715>basically <00:28:46.855>memory, <00:28:46.995>ma <00:28:47.135>main <00:28:47.275>thread <00:28:47.415>is <00:28:47.555>on <00:28:47.695>the <00:28:47.835>UI <00:28:47.975>layer.

594
00:28:50.035 --> 00:28:51.955
<00:28:50.035>Background <00:28:50.385>thread <00:28:50.735>is <00:28:51.085>everywhere <00:28:51.435>here.

595
00:28:52.575 --> 00:28:55.715
<00:28:52.575>So <00:28:52.750>yeah, <00:28:52.925>as <00:28:53.100>I <00:28:53.275>said, <00:28:53.450>we <00:28:53.625>made <00:28:53.800>an <00:28:53.975>architecture

596
00:28:55.715 --> 00:28:57.755
<00:28:55.715>that <00:28:55.915>case <00:28:56.115>takes <00:28:56.314>care <00:28:56.514>of <00:28:56.715>threading <00:28:56.915>for <00:28:57.115>us.

597
00:28:58.455 --> 00:29:00.995
<00:28:58.455>Uh, <00:28:58.655>threading <00:28:58.855>on <00:28:59.054>iOS <00:28:59.254>still <00:28:59.455>not <00:28:59.655>working <00:28:59.855>properly,

598
00:29:01.215 --> 00:29:02.995
<00:29:01.215>but <00:29:01.415>we <00:29:01.615>have <00:29:01.814>everything <00:29:02.014>in <00:29:02.215>place <00:29:02.415>when <00:29:02.615>they,

599
00:29:03.145 --> 00:29:04.315
<00:29:03.145>when <00:29:03.408>they <00:29:03.671>fix <00:29:03.934>the <00:29:04.198>issue.

600
00:29:04.665 --> 00:29:08.435
<00:29:04.665>Once <00:29:04.865>cotton, <00:29:05.065>uh, <00:29:05.264>quarantines <00:29:05.465>support, <00:29:05.665>uh, <00:29:05.865>iOS <00:29:06.065>threading,

601
00:29:08.455 --> 00:29:10.275
<00:29:08.455>we <00:29:08.688>will <00:29:08.921>just <00:29:09.155>bump <00:29:09.388>the <00:29:09.621>cotton <00:29:09.855>cortines.

602
00:29:10.335 --> 00:29:13.635
<00:29:10.335>Uh, <00:29:10.510>ideally <00:29:10.685>we'll <00:29:10.860>just <00:29:11.035>bump <00:29:11.210>the <00:29:11.385>cotton <00:29:11.560>quarantines, <00:29:11.735>uh,

603
00:29:13.635 --> 00:29:16.555
<00:29:13.635>library <00:29:13.868>version <00:29:14.101>and <00:29:14.335>everything <00:29:14.568>should <00:29:14.801>work <00:29:15.035>fine

604
00:29:16.555 --> 00:29:18.395
<00:29:16.555>for <00:29:16.835>us <00:29:17.115>in <00:29:17.395>our <00:29:17.675>current <00:29:17.955>architecture.

605
00:29:20.745 --> 00:29:23.365
<00:29:20.745>The <00:29:20.919>last <00:29:21.094>thing <00:29:21.270>that <00:29:21.445>we <00:29:21.620>had <00:29:21.794>problems <00:29:21.969>were <00:29:22.145>generics.

606
00:29:24.305 --> 00:29:28.685
<00:29:24.305>Uh, <00:29:24.445>we <00:29:24.585>basically, <00:29:24.725>we <00:29:24.865>made, <00:29:25.005>we, <00:29:25.145>we <00:29:25.285>couldn't <00:29:25.425>find <00:29:25.565>a <00:29:25.705>solution,

607
00:29:28.785 --> 00:29:30.365
<00:29:28.785>uh, <00:29:29.065>that <00:29:29.345>fits <00:29:29.625>every <00:29:29.905>use <00:29:30.185>case

608
00:29:30.475 --> 00:29:35.005
<00:29:30.475>because, <00:29:30.824>uh, <00:29:31.175>it's <00:29:31.524>basically, <00:29:31.875>uh,

609
00:29:36.475 --> 00:29:38.525
<00:29:36.475>it's, <00:29:36.708>it's <00:29:36.941>different <00:29:37.175>in, <00:29:37.408>in <00:29:37.641>multiple <00:29:37.875>places.

610
00:29:39.185 --> 00:29:41.885
<00:29:39.185>So <00:29:39.312>we <00:29:39.439>basically <00:29:39.566>made <00:29:39.694>the <00:29:39.821>most <00:29:39.948>of <00:29:40.075>it <00:29:40.203>what <00:29:40.330>we <00:29:40.457>can <00:29:40.585>use

611
00:29:41.985 --> 00:29:44.925
<00:29:41.985>and <00:29:42.185>where, <00:29:42.385>uh, <00:29:42.584>we, <00:29:42.784>yeah, <00:29:42.985>as <00:29:43.185>I <00:29:43.385>said

612
00:29:44.925 --> 00:29:47.485
<00:29:44.925>before, <00:29:45.125>we <00:29:45.325>made <00:29:45.524>different <00:29:45.725>solutions <00:29:45.925>for <00:29:46.125>different <00:29:46.325>situations

613
00:29:48.105 --> 00:29:51.765
<00:29:48.105>and <00:29:48.280>we <00:29:48.455>reused <00:29:48.630>heavily <00:29:48.805>an <00:29:48.980>expected <00:29:49.155>and <00:29:49.330>actual <00:29:49.505>mechanism.

614
00:29:51.985 --> 00:29:53.725
<00:29:51.985>What's <00:29:52.334>an <00:29:52.685>expected <00:29:53.034>actual <00:29:53.385>mechanism?

615
00:29:53.995 --> 00:29:58.405
<00:29:53.995>It's <00:29:54.150>a <00:29:54.306>new <00:29:54.461>way <00:29:54.617>of, <00:29:54.772>new <00:29:54.928>way <00:29:55.083>of <00:29:55.239>defining <00:29:55.395>interfaces.

616
00:29:58.625 --> 00:30:00.525
<00:29:58.625>Uh, <00:29:58.858>let's <00:29:59.091>put <00:29:59.325>it <00:29:59.558>that <00:29:59.791>simply <00:30:00.025>inside

617
00:30:00.525 --> 00:30:02.365
<00:30:00.525>of <00:30:00.805>the <00:30:01.085>content <00:30:01.365>multi-platform <00:30:01.645>ex <00:30:01.925>uh,

618
00:30:02.595 --> 00:30:04.525
<00:30:02.595>environment, <00:30:03.061>it's <00:30:03.528>pretty <00:30:03.995>cool.

619
00:30:04.795 --> 00:30:07.325
<00:30:04.795>It's <00:30:04.970>a, <00:30:05.145>it's, <00:30:05.320>I <00:30:05.495>I <00:30:05.670>never <00:30:05.845>seen <00:30:06.020>it <00:30:06.195>before,

620
00:30:07.505 --> 00:30:09.005
<00:30:07.505>and <00:30:07.842>it's <00:30:08.180>really, <00:30:08.517>really <00:30:08.855>powerful.

621
00:30:09.155 --> 00:30:12.925
<00:30:09.155>Each <00:30:09.282>day <00:30:09.409>I'm <00:30:09.536>learning, <00:30:09.664>uh, <00:30:09.791>new <00:30:09.918>stuff, <00:30:10.045>what <00:30:10.173>I <00:30:10.300>can <00:30:10.427>actually <00:30:10.555>do

622
00:30:12.925 --> 00:30:14.445
<00:30:12.925>with <00:30:13.198>the <00:30:13.472>expected <00:30:13.745>and <00:30:14.019>actual <00:30:14.293>mechanism.

623
00:30:15.065 --> 00:30:19.205
<00:30:15.065>But, <00:30:15.205>uh, <00:30:15.345>with <00:30:15.485>using <00:30:15.625>it, <00:30:15.765>we, <00:30:15.905>we <00:30:16.045>could <00:30:16.185>fix <00:30:16.325>a <00:30:16.465>lot

624
00:30:19.205 --> 00:30:22.445
<00:30:19.205>of <00:30:19.379>our <00:30:19.554>generics <00:30:19.730>problems, <00:30:19.905>uh, <00:30:20.080>that <00:30:20.254>we <00:30:20.429>had <00:30:20.605>before.

625
00:30:24.435 --> 00:30:28.725
<00:30:24.435>Okay, <00:30:24.562>so <00:30:24.689>I <00:30:24.816>was <00:30:24.944>talking <00:30:25.071>about <00:30:25.198>we, <00:30:25.325>uh, <00:30:25.453>how <00:30:25.580>did <00:30:25.707>we <00:30:25.835>estimate

626
00:30:28.795 --> 00:30:32.125
<00:30:28.795>what <00:30:29.028>Kotlin <00:30:29.261>multi-platform, <00:30:29.495>uh, <00:30:29.728>development <00:30:29.961>will <00:30:30.195>take?

627
00:30:32.125 --> 00:30:34.605
<00:30:32.125>What, <00:30:32.280>what, <00:30:32.436>uh, <00:30:32.591>kind <00:30:32.747>of <00:30:32.902>an <00:30:33.058>effort <00:30:33.213>will <00:30:33.369>it <00:30:33.525>take?

628
00:30:35.185 --> 00:30:40.005
<00:30:35.185>So <00:30:35.340>again, <00:30:35.496>if <00:30:35.651>native <00:30:35.807>is <00:30:35.962>100% <00:30:36.118>react <00:30:36.273>native <00:30:36.429>is <00:30:36.585>50%,

629
00:30:40.115 --> 00:30:41.605
<00:30:40.115>what <00:30:40.562>with <00:30:41.009>quantum <00:30:41.456>multiplatform?

630
00:30:42.195 --> 00:30:44.565
<00:30:42.195>Well, <00:30:42.475>it's <00:30:42.754>basically <00:30:43.034>whatever <00:30:43.314>you <00:30:43.595>want.

631
00:30:44.775 --> 00:30:46.085
<00:30:44.775>Since, <00:30:45.069>again, <00:30:45.364>as <00:30:45.659>I <00:30:45.954>said

632
00:30:46.085 --> 00:30:48.885
<00:30:46.085>before, <00:30:46.260>you <00:30:46.435>have <00:30:46.610>the <00:30:46.785>ability <00:30:46.960>to <00:30:47.135>reuse <00:30:47.310>whatever <00:30:47.485>you,

633
00:30:48.985 --> 00:30:50.165
<00:30:48.985>you <00:30:49.250>would <00:30:49.515>like <00:30:49.781>to <00:30:50.047>reuse.

634
00:30:50.745 --> 00:30:52.565
<00:30:50.745>Uh, <00:30:51.094>actually <00:30:51.445>share, <00:30:51.794>not <00:30:52.145>reuse.

635
00:30:53.025 --> 00:30:56.045
<00:30:53.025>Uh, <00:30:53.225>this <00:30:53.425>number <00:30:53.625>can <00:30:53.825>go <00:30:54.025>from <00:30:54.225>zero <00:30:54.425>to,

636
00:30:56.445 --> 00:30:57.805
<00:30:56.445>I <00:30:56.689>wouldn't <00:30:56.934>say <00:30:57.179>a <00:30:57.424>hundred <00:30:57.669>percent,

637
00:30:57.805 --> 00:31:01.005
<00:30:57.805>because <00:30:57.980>you <00:30:58.155>will <00:30:58.330>not <00:30:58.505>be <00:30:58.680>able <00:30:58.855>to <00:30:59.030>reuse, <00:30:59.205>uh,

638
00:31:01.105 --> 00:31:02.565
<00:31:01.105>the <00:31:01.543>UI <00:31:01.981>layer <00:31:02.419>entirely.

639
00:31:03.225 --> 00:31:06.965
<00:31:03.225>Uh, <00:31:03.399>so <00:31:03.574>for <00:31:03.750>example, <00:31:03.925>from <00:31:04.100>zero <00:31:04.274>to <00:31:04.449>80%, <00:31:04.625>uh,

640
00:31:07.425 --> 00:31:09.765
<00:31:07.425>of <00:31:07.658>the <00:31:07.891>effort <00:31:08.125>to <00:31:08.358>develop <00:31:08.591>an <00:31:08.825>application.

641
00:31:12.025 --> 00:31:15.355
<00:31:12.025>Okay. <00:31:12.180>And <00:31:12.336>for <00:31:12.491>the <00:31:12.647>fifth <00:31:12.802>thing, <00:31:12.958>let's <00:31:13.113>talk <00:31:13.269>about <00:31:13.425>summary.

642
00:31:16.455 --> 00:31:20.805
<00:31:16.455>So <00:31:16.610>summary, <00:31:16.766>I, <00:31:16.921>I <00:31:17.077>have <00:31:17.232>written <00:31:17.388>here <00:31:17.543>a <00:31:17.699>few <00:31:17.855>steps,

643
00:31:20.975 --> 00:31:23.725
<00:31:20.975>which <00:31:21.175>I <00:31:21.375>would <00:31:21.574>really, <00:31:21.774>I <00:31:21.975>would <00:31:22.175>really <00:31:22.375>like

644
00:31:23.745 --> 00:31:26.645
<00:31:23.745>to <00:31:23.945>know <00:31:24.145>when <00:31:24.344>I <00:31:24.544>started <00:31:24.745>with <00:31:24.945>Cotton <00:31:25.145>multi-platform.

645
00:31:27.145 --> 00:31:31.825
<00:31:27.145>Uh, <00:31:27.285>so <00:31:27.425>anyone <00:31:27.565>who <00:31:27.705>wants <00:31:27.845>to <00:31:27.985>try <00:31:28.125>it <00:31:28.264>out, <00:31:28.405>just, <00:31:28.545>just

646
00:31:32.425 --> 00:31:33.745
<00:31:32.425>remember <00:31:32.722>the <00:31:33.019>summary <00:31:33.315>and <00:31:33.612>summary.

647
00:31:33.745 --> 00:31:35.305
<00:31:33.745>You <00:31:34.024>will, <00:31:34.304>you <00:31:34.584>won't <00:31:34.864>be <00:31:35.145>fine,

648
00:31:35.445 --> 00:31:37.665
<00:31:35.445>but <00:31:35.620>you <00:31:35.794>will <00:31:35.970>know <00:31:36.145>what <00:31:36.320>to <00:31:36.495>take <00:31:36.669>care <00:31:36.845>of.

649
00:31:38.245 --> 00:31:40.785
<00:31:38.245>So <00:31:38.400>the <00:31:38.556>first <00:31:38.711>thing <00:31:38.867>is <00:31:39.022>that <00:31:39.178>cotton <00:31:39.333>native, <00:31:39.489>strict <00:31:39.645>memory,

650
00:31:40.785 --> 00:31:43.105
<00:31:40.785>cotton <00:31:40.985>native <00:31:41.185>has <00:31:41.385>a <00:31:41.585>strict <00:31:41.785>memory <00:31:41.985>management <00:31:42.185>model.

651
00:31:43.525 --> 00:31:47.465
<00:31:43.525>Uh, <00:31:43.725>before <00:31:43.925>diving <00:31:44.125>into, <00:31:44.325>uh, <00:31:44.525>developing <00:31:44.725>the <00:31:44.925>application,

652
00:31:47.925 --> 00:31:50.265
<00:31:47.925>please <00:31:48.158>read <00:31:48.391>more <00:31:48.625>about <00:31:48.858>cotton <00:31:49.091>native <00:31:49.325>strict

653
00:31:50.265 --> 00:31:51.305
<00:31:50.265>memory <00:31:50.733>management <00:31:51.201>model.

654
00:31:52.165 --> 00:31:53.265
<00:31:52.165>The <00:31:52.495>second <00:31:52.825>thing <00:31:53.155>is

655
00:31:53.265 --> 00:31:56.385
<00:31:53.265>that <00:31:53.420>cotton <00:31:53.576>native <00:31:53.731>plus <00:31:53.887>cotton <00:31:54.042>cortines <00:31:54.198>is <00:31:54.353>not <00:31:54.509>quite <00:31:54.665>there

656
00:31:56.445 --> 00:31:57.985
<00:31:56.445>yet <00:31:56.907>for <00:31:57.369>IS <00:31:57.831>development.

657
00:31:59.065 --> 00:32:01.325
<00:31:59.065>The <00:31:59.265>third <00:31:59.465>thing <00:31:59.665>is <00:31:59.865>be <00:32:00.065>careful <00:32:00.265>with <00:32:00.465>generics.

658
00:32:01.785 --> 00:32:05.365
<00:32:01.785>Uh, <00:32:01.960>use, <00:32:02.135>expect <00:32:02.310>an <00:32:02.485>actual <00:32:02.660>mechanism <00:32:02.835>instead <00:32:03.010>to <00:32:03.185>to,

659
00:32:06.385 --> 00:32:09.725
<00:32:06.385>to <00:32:06.560>substitute <00:32:06.735>the <00:32:06.910>generics <00:32:07.085>where <00:32:07.260>you <00:32:07.435>can't <00:32:07.610>use <00:32:07.785>them.

660
00:32:10.785 --> 00:32:13.005
<00:32:10.785>And <00:32:11.065>also, <00:32:11.345>uh, <00:32:11.625>as <00:32:11.905>I <00:32:12.185>said

661
00:32:13.005 --> 00:32:16.885
<00:32:13.005>before, <00:32:13.180>we <00:32:13.355>developed <00:32:13.530>POC <00:32:13.705>uh, <00:32:13.880>proof <00:32:14.055>of <00:32:14.230>concept, <00:32:14.405>uh,

662
00:32:17.075 --> 00:32:20.965
<00:32:17.075>when <00:32:17.215>we <00:32:17.355>started, <00:32:17.495>but <00:32:17.635>if <00:32:17.775>we <00:32:17.915>dug <00:32:18.055>deeper <00:32:18.195>with <00:32:18.335>the <00:32:18.475>proof

663
00:32:20.965 --> 00:32:22.645
<00:32:20.965>of <00:32:21.198>concept, <00:32:21.431>we <00:32:21.665>would <00:32:21.898>notice <00:32:22.131>this <00:32:22.365>problems

664
00:32:22.645 --> 00:32:24.805
<00:32:22.645>before <00:32:22.845>we <00:32:23.045>started <00:32:23.245>working <00:32:23.445>on <00:32:23.645>the <00:32:23.845>production <00:32:24.045>app.

665
00:32:25.185 --> 00:32:26.245
<00:32:25.185>But <00:32:25.423>our, <00:32:25.661>as <00:32:25.900>I <00:32:26.139>said

666
00:32:26.245 --> 00:32:29.245
<00:32:26.245>before, <00:32:26.372>our <00:32:26.499>proof <00:32:26.626>of <00:32:26.754>concept <00:32:26.881>was <00:32:27.008>a <00:32:27.135>little <00:32:27.263>bit <00:32:27.390>more <00:32:27.517>than <00:32:27.645>a

667
00:32:29.245 --> 00:32:30.885
<00:32:29.245>hello <00:32:29.711>world <00:32:30.178>world <00:32:30.645>application.

668
00:32:31.465 --> 00:32:34.605
<00:32:31.465>And <00:32:31.698>in <00:32:31.931>that <00:32:32.165>environment, <00:32:32.398>everything <00:32:32.631>looked <00:32:32.865>like,

669
00:32:34.835 --> 00:32:35.965
<00:32:34.835>like <00:32:35.174>it <00:32:35.513>worked <00:32:35.851>perfectly.

670
00:32:36.185 --> 00:32:38.445
<00:32:36.185>But <00:32:36.385>there <00:32:36.585>were, <00:32:36.784>uh, <00:32:36.985>quite <00:32:37.185>a <00:32:37.385>few <00:32:37.585>stuff,

671
00:32:38.495 --> 00:32:39.725
<00:32:38.495>stuff <00:32:38.863>that <00:32:39.233>didn't <00:32:39.601>work.

672
00:32:40.225 --> 00:32:41.805
<00:32:40.225>So <00:32:40.425>this <00:32:40.625>is <00:32:40.824>a <00:32:41.024>new <00:32:41.225>lesson <00:32:41.425>for <00:32:41.625>me.

673
00:32:42.075 --> 00:32:45.845
<00:32:42.075>When <00:32:42.202>I'm <00:32:42.329>developing <00:32:42.456>a <00:32:42.584>proof <00:32:42.711>of <00:32:42.838>concept, <00:32:42.965>I <00:32:43.093>need <00:32:43.220>to <00:32:43.347>dive <00:32:43.475>deep,

674
00:32:45.875 --> 00:32:49.445
<00:32:45.875>deep, <00:32:46.015>uh, <00:32:46.155>inside <00:32:46.295>of <00:32:46.435>every <00:32:46.575>part <00:32:46.715>of, <00:32:46.855>of <00:32:46.995>the <00:32:47.135>new <00:32:47.275>technology

675
00:32:49.445 --> 00:32:50.565
<00:32:49.445>that <00:32:49.697>I <00:32:49.949>want <00:32:50.201>to <00:32:50.453>use

676
00:32:51.065 --> 00:32:54.365
<00:32:51.065>and <00:32:51.240>try <00:32:51.415>to <00:32:51.590>solve, <00:32:51.765>uh, <00:32:51.940>all <00:32:52.115>of <00:32:52.290>those <00:32:52.465>problems

677
00:32:55.105 --> 00:32:58.805
<00:32:55.105>before <00:32:55.338>starting <00:32:55.571>a <00:32:55.805>production, <00:32:56.038>uh, <00:32:56.271>application <00:32:56.505>development.

678
00:33:00.145 --> 00:33:02.795
<00:33:00.145>Okay, <00:33:00.261>and <00:33:00.378>some <00:33:00.495>of <00:33:00.611>the <00:33:00.728>future <00:33:00.845>works <00:33:00.961>that <00:33:01.078>we <00:33:01.195>would <00:33:01.311>like <00:33:01.428>to <00:33:01.545>do

679
00:33:03.105 --> 00:33:06.955
<00:33:03.105>with <00:33:03.385>our <00:33:03.665>current, <00:33:03.945>uh, <00:33:04.225>architecture, <00:33:04.505>uh,

680
00:33:07.095 --> 00:33:09.275
<00:33:07.095>we <00:33:07.328>don't <00:33:07.561>have <00:33:07.795>a <00:33:08.028>dependency <00:33:08.261>injection <00:33:08.495>framework.

681
00:33:09.415 --> 00:33:11.035
<00:33:09.415>Uh, <00:33:09.615>at <00:33:09.815>the <00:33:10.014>time <00:33:10.215>when, <00:33:10.415>when <00:33:10.615>we <00:33:10.815>started.

682
00:33:11.295 --> 00:33:12.635
<00:33:11.295>So <00:33:11.596>basically <00:33:11.898>we <00:33:12.199>are <00:33:12.501>use

683
00:33:12.635 --> 00:33:14.275
<00:33:12.635>for <00:33:12.915>Android <00:33:13.195>development <00:33:13.475>inside <00:33:13.754>of <00:33:14.035>five.

684
00:33:14.455 --> 00:33:17.875
<00:33:14.455>Uh, <00:33:14.610>we <00:33:14.766>are <00:33:14.921>using <00:33:15.077>coin <00:33:15.232>for <00:33:15.388>our <00:33:15.543>dependency <00:33:15.699>injection <00:33:15.855>library.

685
00:33:18.575 --> 00:33:20.715
<00:33:18.575>Uh, <00:33:18.855>co <00:33:19.135>coin <00:33:19.415>didn't <00:33:19.695>support <00:33:19.975>cotton

686
00:33:20.715 --> 00:33:21.915
<00:33:20.715>multi-platform <00:33:21.074>at <00:33:21.435>the <00:33:21.795>time.

687
00:33:22.335 --> 00:33:24.795
<00:33:22.335>We <00:33:22.535>didn't <00:33:22.735>want <00:33:22.935>to <00:33:23.135>learn <00:33:23.335>a <00:33:23.535>new <00:33:23.735>library

688
00:33:24.945 --> 00:33:27.435
<00:33:24.945>because <00:33:25.145>we <00:33:25.345>wanted <00:33:25.544>to <00:33:25.745>focus <00:33:25.945>on <00:33:26.145>different <00:33:26.345>things.

689
00:33:27.615 --> 00:33:30.395
<00:33:27.615>So <00:33:27.790>we <00:33:27.965>wanted, <00:33:28.140>so <00:33:28.315>we <00:33:28.490>created <00:33:28.665>a <00:33:28.840>lightweight <00:33:29.015>library

690
00:33:30.575 --> 00:33:31.595
<00:33:30.575>for <00:33:31.034>dependency <00:33:31.493>injection.

691
00:33:32.295 --> 00:33:35.155
<00:33:32.295>Uh, <00:33:32.528>a <00:33:32.761>few <00:33:32.995>weeks <00:33:33.228>ago, <00:33:33.461>Kotlin <00:33:33.695>announced

692
00:33:35.155 --> 00:33:38.395
<00:33:35.155>that <00:33:35.330>IT <00:33:35.504>support <00:33:35.680>Coin <00:33:35.855>actually <00:33:36.030>announced <00:33:36.205>that <00:33:36.379>it <00:33:36.555>supports,

693
00:33:38.495 --> 00:33:41.595
<00:33:38.495>uh, <00:33:38.961>coin <00:33:39.428>Kotlin <00:33:39.895>multi-platform.

694
00:33:42.255 --> 00:33:45.195
<00:33:42.255>And, <00:33:42.455>uh, <00:33:42.655>we <00:33:42.855>want <00:33:43.055>to <00:33:43.255>migrate <00:33:43.455>our, <00:33:43.655>uh,

695
00:33:45.195 --> 00:33:47.235
<00:33:45.195>lightweight <00:33:45.475>dependency <00:33:45.754>injection <00:33:46.034>library <00:33:46.314>to <00:33:46.595>coin.

696
00:33:48.725 --> 00:33:50.665
<00:33:48.725>Uh, <00:33:48.958>the <00:33:49.191>next <00:33:49.425>thing <00:33:49.658>that <00:33:49.891>we <00:33:50.125>want

697
00:33:50.665 --> 00:33:53.265
<00:33:50.665>to <00:33:50.840>work <00:33:51.014>on <00:33:51.190>is <00:33:51.365>we <00:33:51.540>call <00:33:51.715>it <00:33:51.889>a <00:33:52.065>thread,

698
00:33:53.265 --> 00:33:55.105
<00:33:53.265>memory <00:33:53.731>bound <00:33:54.198>object <00:33:54.665>scoping.

699
00:33:55.565 --> 00:33:58.145
<00:33:55.565>Uh, <00:33:55.765>we <00:33:55.965>made <00:33:56.165>it <00:33:56.365>work <00:33:56.565>on <00:33:56.765>cotton <00:33:56.965>native,

700
00:33:58.685 --> 00:34:01.945
<00:33:58.685>but <00:33:58.918>every <00:33:59.151>day <00:33:59.385>we <00:33:59.618>learn <00:33:59.851>something <00:34:00.085>new.

701
00:34:02.245 --> 00:34:06.225
<00:34:02.245>And <00:34:02.400>every <00:34:02.556>day <00:34:02.711>we <00:34:02.867>were, <00:34:03.022>uh, <00:34:03.178>finding <00:34:03.333>also <00:34:03.489>new <00:34:03.645>problems.

702
00:34:06.965 --> 00:34:08.305
<00:34:06.965>Our <00:34:07.367>architecture <00:34:07.768>currently <00:34:08.170>works,

703
00:34:08.405 --> 00:34:09.745
<00:34:08.405>but <00:34:08.646>it <00:34:08.887>can <00:34:09.128>definitely <00:34:09.369>be <00:34:09.610>better.

704
00:34:10.325 --> 00:34:14.225
<00:34:10.324>Uh, <00:34:10.524>we, <00:34:10.725>we <00:34:10.924>found, <00:34:11.125>we, <00:34:11.324>we <00:34:11.524>are <00:34:11.725>thinking

705
00:34:14.225 --> 00:34:16.265
<00:34:14.225>of <00:34:14.400>a <00:34:14.574>solution <00:34:14.750>which <00:34:14.924>we <00:34:15.100>called, <00:34:15.275>as <00:34:15.449>I <00:34:15.625>said

706
00:34:16.265 --> 00:34:19.145
<00:34:16.264>before, <00:34:16.420>thread <00:34:16.576>memory <00:34:16.731>bound <00:34:16.887>object <00:34:17.042>scoping <00:34:17.198>in <00:34:17.353>which <00:34:17.509>we <00:34:17.665>would

707
00:34:19.305 --> 00:34:20.865
<00:34:19.304>bound <00:34:19.585>each <00:34:19.864>object <00:34:20.145>to <00:34:20.424>a <00:34:20.705>thread.

708
00:34:21.085 --> 00:34:24.865
<00:34:21.085>And <00:34:21.212>by <00:34:21.339>doing <00:34:21.466>so, <00:34:21.594>avoid <00:34:21.721>some <00:34:21.848>of <00:34:21.975>the, <00:34:22.103>some <00:34:22.230>of <00:34:22.357>the <00:34:22.485>issues

709
00:34:24.865 --> 00:34:26.145
<00:34:24.864>that <00:34:25.095>we <00:34:25.325>had <00:34:25.556>along <00:34:25.786>the <00:34:26.016>way.

710
00:34:27.115 --> 00:34:29.815
<00:34:27.114>And <00:34:27.290>also, <00:34:27.464>once <00:34:27.639>we <00:34:27.814>are <00:34:27.989>finished <00:34:28.165>with <00:34:28.339>dependence <00:34:28.514>injection

711
00:34:29.915 --> 00:34:33.135
<00:34:29.915>and <00:34:30.070>the <00:34:30.226>thread <00:34:30.381>memory <00:34:30.537>bound <00:34:30.692>object <00:34:30.848>scoping, <00:34:31.003>we <00:34:31.159>would <00:34:31.315>like

712
00:34:33.135 --> 00:34:36.175
<00:34:33.135>to <00:34:33.310>make <00:34:33.485>everything <00:34:33.660>open <00:34:33.835>source <00:34:34.010>so <00:34:34.185>everyone <00:34:34.360>can <00:34:34.535>see

713
00:34:36.175 --> 00:34:37.415
<00:34:36.175>what <00:34:36.454>we've, <00:34:36.733>what <00:34:37.012>we've <00:34:37.291>done.

714
00:34:37.545 --> 00:34:38.855
<00:34:37.545>Maybe <00:34:37.839>we <00:34:38.134>we're <00:34:38.429>not <00:34:38.724>perfect.

715
00:34:39.035 --> 00:34:41.815
<00:34:39.034>So, <00:34:39.234>uh, <00:34:39.435>everyone <00:34:39.634>can <00:34:39.835>contribute <00:34:40.034>to <00:34:40.234>the <00:34:40.435>project

716
00:34:42.115 --> 00:34:45.415
<00:34:42.114>and <00:34:42.242>we <00:34:42.369>can <00:34:42.496>open <00:34:42.624>a <00:34:42.751>few <00:34:42.878>of <00:34:43.005>discussions <00:34:43.133>of <00:34:43.260>why <00:34:43.387>did <00:34:43.514>some,

717
00:34:45.415 --> 00:34:47.175
<00:34:45.415>some <00:34:45.648>why <00:34:45.881>was <00:34:46.114>something <00:34:46.348>implemented <00:34:46.581>that <00:34:46.815>way.

718
00:34:48.975 --> 00:34:51.585
<00:34:48.975>Okay, <00:34:49.324>so <00:34:49.674>the <00:34:50.025>biggest <00:34:50.375>question,

719
00:34:52.015 --> 00:34:54.625
<00:34:52.014>when <00:34:52.214>I <00:34:52.415>started <00:34:52.614>the <00:34:52.815>presentation, <00:34:53.014>I <00:34:53.214>told <00:34:53.415>you

720
00:34:54.625 --> 00:34:56.665
<00:34:54.625>that <00:34:54.800>I <00:34:54.975>made <00:34:55.150>a <00:34:55.324>bet <00:34:55.500>with <00:34:55.675>myself, <00:34:55.850>did <00:34:56.025>I,

721
00:34:56.935 --> 00:34:58.305
<00:34:56.935>that <00:34:57.140>I <00:34:57.346>will <00:34:57.551>take <00:34:57.757>myself <00:34:57.962>to <00:34:58.167>dinner

722
00:34:59.045 --> 00:35:02.265
<00:34:59.045>and <00:34:59.220>I <00:34:59.395>ate, <00:34:59.570>so <00:34:59.745>I <00:34:59.920>took <00:35:00.095>myself <00:35:00.270>to <00:35:00.445>dinner.

723
00:35:02.445 --> 00:35:05.905
<00:35:02.445>It <00:35:02.585>was <00:35:02.725>pretty <00:35:02.865>cool. <00:35:03.005>Okay, <00:35:03.145>now <00:35:03.285>we <00:35:03.425>can <00:35:03.565>talk <00:35:03.705>about <00:35:03.845>questions.