WEBVTT

1
00:00:02.825 --> 00:00:05.525
<00:00:02.825>The <00:00:03.025>intro <00:00:03.225>Mattin <00:00:03.425>and <00:00:03.625>thanks <00:00:03.825>everyone <00:00:04.025>for <00:00:04.225>joining.

2
00:00:06.425 --> 00:00:10.205
<00:00:06.425>So <00:00:06.600>this <00:00:06.774>session <00:00:06.949>was <00:00:07.125>designed <00:00:07.300>originally <00:00:07.475>for <00:00:07.649>60 <00:00:07.824>minutes

3
00:00:10.705 --> 00:00:13.285
<00:00:10.705>and <00:00:10.880>then <00:00:11.055>it <00:00:11.230>was <00:00:11.405>cut <00:00:11.580>down <00:00:11.754>to <00:00:11.930>45 <00:00:12.105>minutes.

4
00:00:13.985 --> 00:00:15.005
<00:00:13.985>And <00:00:14.214>now <00:00:14.444>we're <00:00:14.673>gonna <00:00:14.903>try

5
00:00:15.005 --> 00:00:16.685
<00:00:15.005>and <00:00:15.145>leave <00:00:15.285>some <00:00:15.425>time <00:00:15.565>at <00:00:15.705>the <00:00:15.845>end <00:00:15.985>for <00:00:16.125>q <00:00:16.265>and <00:00:16.405>a.

6
00:00:16.745 --> 00:00:18.725
<00:00:16.745>So <00:00:16.945>I'm <00:00:17.145>gonna <00:00:17.345>go <00:00:17.545>through <00:00:17.745>this <00:00:17.945>fairly <00:00:18.145>quickly.

7
00:00:20.115 --> 00:00:23.965
<00:00:20.115>I'll <00:00:20.290>remind <00:00:20.465>everyone <00:00:20.639>that <00:00:20.814>we <00:00:20.990>are <00:00:21.165>recording <00:00:21.340>these <00:00:21.514>sessions

8
00:00:23.965 --> 00:00:25.245
<00:00:23.965>so <00:00:24.195>you'll <00:00:24.425>be <00:00:24.656>sent <00:00:24.886>the <00:00:25.117>replay.

9
00:00:25.545 --> 00:00:27.765
<00:00:25.545>So <00:00:25.745>if <00:00:25.945>there's <00:00:26.145>bits <00:00:26.345>where <00:00:26.545>you <00:00:26.745>don't, <00:00:26.945>uh,

10
00:00:27.765 --> 00:00:30.045
<00:00:27.765>if <00:00:27.920>you <00:00:28.076>can't <00:00:28.231>completely <00:00:28.387>keep <00:00:28.542>up <00:00:28.698>with <00:00:28.853>what <00:00:29.009>I'm <00:00:29.165>doing

11
00:00:30.045 --> 00:00:31.845
<00:00:30.045>and <00:00:30.325>follow <00:00:30.605>what <00:00:30.885>I'm <00:00:31.165>doing, <00:00:31.445>don't,

12
00:00:31.845 --> 00:00:33.245
<00:00:31.845>don't <00:00:32.055>worry, <00:00:32.265>you <00:00:32.475>can <00:00:32.684>watch <00:00:32.894>it <00:00:33.105>later.

13
00:00:34.465 --> 00:00:36.405
<00:00:34.465>So <00:00:34.605>this <00:00:34.745>is <00:00:34.885>the <00:00:35.025>app <00:00:35.165>that <00:00:35.305>we're <00:00:35.445>going <00:00:35.585>to <00:00:35.725>be <00:00:35.865>building.

14
00:00:36.835 --> 00:00:38.005
<00:00:36.835>It's <00:00:37.186>an <00:00:37.537>iOS <00:00:37.888>app

15
00:00:38.465 --> 00:00:41.725
<00:00:38.465>and <00:00:38.605>you <00:00:38.745>choose <00:00:38.885>which <00:00:39.025>chat <00:00:39.165>room <00:00:39.305>you <00:00:39.445>want <00:00:39.585>to <00:00:39.725>go <00:00:39.865>in,

16
00:00:41.985 --> 00:00:44.365
<00:00:41.985>and <00:00:42.160>then <00:00:42.335>you <00:00:42.510>can <00:00:42.685>share <00:00:42.860>messages <00:00:43.035>with <00:00:43.210>other <00:00:43.385>users

17
00:00:44.435 --> 00:00:45.725
<00:00:44.435>that <00:00:44.667>are <00:00:44.899>in <00:00:45.131>that <00:00:45.363>chat <00:00:45.596>room.

18
00:00:47.375 --> 00:00:48.965
<00:00:47.375>We're <00:00:47.655>gonna <00:00:47.935>be <00:00:48.215>using <00:00:48.495>Swift <00:00:48.775>ui

19
00:00:49.625 --> 00:00:52.965
<00:00:49.625>and <00:00:49.752>this <00:00:49.879>is <00:00:50.006>a <00:00:50.134>framework <00:00:50.261>that <00:00:50.388>Apple <00:00:50.515>came <00:00:50.643>up <00:00:50.770>with <00:00:50.897>a <00:00:51.025>couple

20
00:00:52.965 --> 00:00:57.045
<00:00:52.965>of <00:00:53.120>years <00:00:53.276>ago <00:00:53.431>and <00:00:53.587>it's <00:00:53.742>really <00:00:53.898>a <00:00:54.053>really <00:00:54.209>good <00:00:54.365>framework

21
00:00:57.225 --> 00:00:59.645
<00:00:57.225>to <00:00:57.505>start <00:00:57.785>your <00:00:58.065>mobile <00:00:58.345>development <00:00:58.625>experience

22
00:01:00.085 --> 00:01:01.765
<00:01:00.085>'cause <00:01:00.285>it <00:01:00.485>really <00:01:00.685>simplifies <00:01:00.885>things <00:01:01.085>a <00:01:01.285>great <00:01:01.485>deal.

23
00:01:04.485 --> 00:01:07.265
<00:01:04.485>Oh, <00:01:04.640>let's <00:01:04.796>have <00:01:04.951>a <00:01:05.107>bit <00:01:05.262>of <00:01:05.418>theory <00:01:05.573>on <00:01:05.729>Swift <00:01:05.885>UI

24
00:01:07.265 --> 00:01:08.825
<00:01:07.265>before <00:01:07.498>we <00:01:07.731>get <00:01:07.965>into <00:01:08.198>the <00:01:08.431>actual <00:01:08.665>coding.

25
00:01:10.075 --> 00:01:13.745
<00:01:10.075>Everything <00:01:10.250>in <00:01:10.425>Swift <00:01:10.600>UI <00:01:10.775>is <00:01:10.950>about <00:01:11.125>views <00:01:11.300>and <00:01:11.475>state.

26
00:01:14.005 --> 00:01:16.905
<00:01:14.005>So <00:01:14.121>a <00:01:14.238>view <00:01:14.354>is <00:01:14.471>something <00:01:14.588>you <00:01:14.705>see <00:01:14.821>on <00:01:14.938>the <00:01:15.054>display <00:01:15.171>of <00:01:15.288>your <00:01:15.405>phone

27
00:01:18.695 --> 00:01:22.555
<00:01:18.695>and <00:01:18.895>you <00:01:19.095>compose <00:01:19.294>views <00:01:19.494>by <00:01:19.695>combining <00:01:19.895>multiple <00:01:20.095>views.

28
00:01:22.775 --> 00:01:23.955
<00:01:22.775>So <00:01:23.040>you <00:01:23.306>have <00:01:23.571>parent <00:01:23.837>views

29
00:01:23.955 --> 00:01:28.475
<00:01:23.955>and <00:01:24.110>child <00:01:24.266>views, <00:01:24.421>You've <00:01:24.577>got <00:01:24.732>a <00:01:24.888>lot <00:01:25.043>of <00:01:25.199>built-in <00:01:25.355>views

30
00:01:28.615 --> 00:01:30.115
<00:01:28.615>and <00:01:28.807>one <00:01:29.000>of <00:01:29.193>them <00:01:29.386>is <00:01:29.579>a <00:01:29.772>vertical <00:01:29.964>stack,

31
00:01:30.115 --> 00:01:32.555
<00:01:30.115>which <00:01:30.348>lets <00:01:30.581>you <00:01:30.815>place <00:01:31.048>a <00:01:31.281>vertical <00:01:31.515>column

32
00:01:32.575 --> 00:01:34.555
<00:01:32.575>of <00:01:32.750>views <00:01:32.925>from <00:01:33.100>the <00:01:33.275>top <00:01:33.450>of <00:01:33.625>your <00:01:33.800>screen <00:01:33.975>down.

33
00:01:35.095 --> 00:01:37.555
<00:01:35.095>And <00:01:35.270>then <00:01:35.445>you <00:01:35.620>have <00:01:35.795>a <00:01:35.970>horizontal <00:01:36.145>stack, <00:01:36.320>which <00:01:36.495>is

34
00:01:37.775 --> 00:01:38.915
<00:01:37.775>for <00:01:38.031>a <00:01:38.288>row <00:01:38.544>of <00:01:38.800>views.

35
00:01:40.375 --> 00:01:41.795
<00:01:40.375>And <00:01:40.557>then <00:01:40.740>finally <00:01:40.922>you <00:01:41.105>have <00:01:41.287>a <00:01:41.470>Z <00:01:41.653>stack,

36
00:01:41.795 --> 00:01:44.155
<00:01:41.795>which <00:01:41.950>lets <00:01:42.106>you <00:01:42.261>place <00:01:42.417>one <00:01:42.572>view <00:01:42.728>on <00:01:42.883>top <00:01:43.039>of <00:01:43.195>another.

37
00:01:44.455 --> 00:01:46.755
<00:01:44.455>So <00:01:44.595>good <00:01:44.735>use <00:01:44.875>of <00:01:45.015>this <00:01:45.155>would <00:01:45.295>be <00:01:45.435>if <00:01:45.575>you've <00:01:45.715>got <00:01:45.855>a

38
00:01:46.815 --> 00:01:49.755
<00:01:46.815>semi-transparent <00:01:46.990>spinning <00:01:47.164>wheel <00:01:47.340>that <00:01:47.515>you <00:01:47.690>wanna <00:01:47.865>show <00:01:48.039>in <00:01:48.215>front

39
00:01:49.755 --> 00:01:52.235
<00:01:49.755>of <00:01:49.895>your <00:01:50.035>UI <00:01:50.175>to <00:01:50.315>let <00:01:50.455>users <00:01:50.595>know <00:01:50.735>that <00:01:50.875>your <00:01:51.015>app's <00:01:51.155>busy.

40
00:01:54.605 --> 00:01:56.145
<00:01:54.604>You <00:01:54.836>can <00:01:55.067>have <00:01:55.298>logic <00:01:55.529>within <00:01:55.760>your <00:01:55.991>views.

41
00:01:56.485 --> 00:01:57.785
<00:01:56.485>So <00:01:56.679>you <00:01:56.875>can <00:01:57.070>look <00:01:57.265>at <00:01:57.460>the <00:01:57.655>state

42
00:01:57.965 --> 00:02:00.865
<00:01:57.965>and <00:01:58.120>decide <00:01:58.276>whether <00:01:58.431>you're <00:01:58.587>going <00:01:58.742>to <00:01:58.898>include <00:01:59.053>a <00:01:59.209>particular <00:01:59.365>view

43
00:02:00.865 --> 00:02:02.825
<00:02:00.865>or <00:02:01.065>not, <00:02:01.265>or <00:02:01.464>choose <00:02:01.664>between <00:02:01.865>two <00:02:02.065>different <00:02:02.265>views.

44
00:02:04.405 --> 00:02:08.305
<00:02:04.405>And <00:02:04.545>you <00:02:04.685>can <00:02:04.825>jump <00:02:04.965>from <00:02:05.105>one <00:02:05.245>view <00:02:05.385>to <00:02:05.525>another <00:02:05.665>using <00:02:05.805>uh,

45
00:02:08.305 --> 00:02:09.745
<00:02:08.305>something <00:02:08.737>called <00:02:09.169>navigation <00:02:09.601>link.

46
00:02:11.745 --> 00:02:14.365
<00:02:11.745>And <00:02:11.920>you <00:02:12.095>can <00:02:12.270>pass <00:02:12.445>parameters <00:02:12.620>between <00:02:12.795>views <00:02:12.970>from <00:02:13.145>parent

47
00:02:14.385 --> 00:02:17.765
<00:02:14.385>to <00:02:14.540>children <00:02:14.696>views <00:02:14.851>or <00:02:15.007>when <00:02:15.162>you <00:02:15.318>follow <00:02:15.473>the <00:02:15.629>navigation <00:02:15.785>link.

48
00:02:19.015 --> 00:02:21.885
<00:02:19.015>Those <00:02:19.214>are, <00:02:19.415>uh, <00:02:19.614>one <00:02:19.815>way <00:02:20.015>read <00:02:20.214>only <00:02:20.415>parameters.

49
00:02:22.345 --> 00:02:24.685
<00:02:22.345>If <00:02:22.484>you <00:02:22.625>actually <00:02:22.765>want <00:02:22.905>the <00:02:23.045>child <00:02:23.185>to <00:02:23.325>be <00:02:23.465>able <00:02:23.605>to <00:02:23.745>update

50
00:02:25.225 --> 00:02:28.005
<00:02:25.225>the <00:02:25.400>state <00:02:25.575>and <00:02:25.750>it <00:02:25.924>be <00:02:26.100>reflected <00:02:26.275>in <00:02:26.450>the <00:02:26.625>parent.

51
00:02:28.155 --> 00:02:30.485
<00:02:28.155>Then <00:02:28.388>you <00:02:28.621>use <00:02:28.855>something <00:02:29.088>called <00:02:29.321>a <00:02:29.555>binding.

52
00:02:31.025 --> 00:02:33.365
<00:02:31.025>So <00:02:31.141>a <00:02:31.258>lot <00:02:31.375>of <00:02:31.491>this <00:02:31.608>is <00:02:31.725>gonna <00:02:31.841>seem <00:02:31.958>familiar <00:02:32.075>to <00:02:32.191>people <00:02:32.308>if <00:02:32.425>you,

53
00:02:34.025 --> 00:02:37.525
<00:02:34.025>uh, <00:02:34.200>use <00:02:34.375>something <00:02:34.550>like <00:02:34.725>React <00:02:34.900>before <00:02:35.075>or <00:02:35.250>view <00:02:35.425>js.

54
00:02:38.625 --> 00:02:40.885
<00:02:38.625>So <00:02:38.780>I <00:02:38.936>say <00:02:39.091>what <00:02:39.247>you <00:02:39.402>see <00:02:39.558>in <00:02:39.713>the <00:02:39.869>view <00:02:40.025>is

55
00:02:40.885 --> 00:02:42.005
<00:02:40.885>controlled <00:02:41.221>by <00:02:41.557>your <00:02:41.893>state.

56
00:02:43.545 --> 00:02:46.325
<00:02:43.545>And <00:02:43.700>in <00:02:43.856>this <00:02:44.011>session <00:02:44.167>we're <00:02:44.322>actually <00:02:44.478>going <00:02:44.633>to <00:02:44.789>link <00:02:44.945>our

57
00:02:46.855 --> 00:02:47.885
<00:02:46.855>Swift <00:02:47.318>UI <00:02:47.781>state

58
00:02:48.355 --> 00:02:51.845
<00:02:48.355>with <00:02:48.554>data <00:02:48.755>stored <00:02:48.954>in <00:02:49.155>the <00:02:49.355>realm <00:02:49.554>mobile <00:02:49.755>database.

59
00:02:52.065 --> 00:02:54.245
<00:02:52.065>So <00:02:52.240>we're <00:02:52.415>gonna <00:02:52.590>have <00:02:52.765>realm <00:02:52.940>embedded <00:02:53.115>within <00:02:53.290>our <00:02:53.465>app

60
00:02:54.825 --> 00:02:57.005
<00:02:54.825>and <00:02:54.980>when <00:02:55.136>the <00:02:55.291>view <00:02:55.447>changes, <00:02:55.602>that's <00:02:55.758>gonna <00:02:55.913>update <00:02:56.069>the <00:02:56.225>state,

61
00:02:57.415 --> 00:02:58.845
<00:02:57.415>which <00:02:57.844>will <00:02:58.273>update <00:02:58.702>realm.

62
00:02:59.545 --> 00:03:01.605
<00:02:59.545>And <00:02:59.745>when <00:02:59.945>the <00:03:00.145>data <00:03:00.345>in <00:03:00.545>the <00:03:00.745>realm <00:03:00.945>changes,

63
00:03:01.825 --> 00:03:03.045
<00:03:01.825>that's <00:03:02.099>gonna <00:03:02.374>update <00:03:02.648>the <00:03:02.923>state

64
00:03:03.225 --> 00:03:04.845
<00:03:03.225>and <00:03:03.458>the <00:03:03.691>view <00:03:03.924>is <00:03:04.158>gonna <00:03:04.391>reflect <00:03:04.625>that.

65
00:03:07.535 --> 00:03:10.925
<00:03:07.535>Final <00:03:07.662>thing <00:03:07.789>I'll <00:03:07.916>say <00:03:08.044>about <00:03:08.171>views, <00:03:08.298>you <00:03:08.425>tend <00:03:08.553>to <00:03:08.680>have <00:03:08.807>a <00:03:08.935>lot

66
00:03:10.925 --> 00:03:12.045
<00:03:10.925>of <00:03:11.177>them <00:03:11.429>with <00:03:11.680>Swift <00:03:11.933>ui.

67
00:03:12.585 --> 00:03:14.165
<00:03:12.585>So <00:03:12.935>in <00:03:13.285>this <00:03:13.635>screen <00:03:13.985>here,

68
00:03:14.655 --> 00:03:17.605
<00:03:14.655>everything <00:03:14.855>I've <00:03:15.055>put <00:03:15.255>in <00:03:15.455>braces <00:03:15.655>is <00:03:15.855>a <00:03:16.055>view.

69
00:03:17.905 --> 00:03:20.085
<00:03:17.905>So <00:03:18.045>even <00:03:18.185>that <00:03:18.325>big <00:03:18.465>space <00:03:18.605>in <00:03:18.745>the <00:03:18.885>middle <00:03:19.025>of <00:03:19.165>the <00:03:19.305>screen,

70
00:03:20.425 --> 00:03:24.285
<00:03:20.425>that's <00:03:20.580>a <00:03:20.736>special <00:03:20.891>view <00:03:21.047>called, <00:03:21.202>uh, <00:03:21.358>a <00:03:21.513>spacer <00:03:21.669>that <00:03:21.825>sort

71
00:03:24.285 --> 00:03:27.365
<00:03:24.285>of <00:03:24.412>takes <00:03:24.539>up <00:03:24.666>that <00:03:24.794>space <00:03:24.921>and <00:03:25.048>pushes <00:03:25.175>the <00:03:25.303>messages <00:03:25.430>to <00:03:25.557>the <00:03:25.685>top

72
00:03:27.505 --> 00:03:29.245
<00:03:27.505>and <00:03:27.738>the <00:03:27.971>input <00:03:28.204>box <00:03:28.438>to <00:03:28.671>the <00:03:28.905>bottom.

73
00:03:31.555 --> 00:03:33.415
<00:03:31.555>So <00:03:31.730>how <00:03:31.905>we're <00:03:32.080>gonna <00:03:32.255>use <00:03:32.430>realm <00:03:32.605>in <00:03:32.780>this <00:03:32.955>picture,

74
00:03:34.405 --> 00:03:36.335
<00:03:34.405>when <00:03:34.685>you <00:03:34.965>write <00:03:35.245>a <00:03:35.525>new <00:03:35.805>message,

75
00:03:36.445 --> 00:03:39.535
<00:03:36.445>what <00:03:36.572>it's <00:03:36.699>actually <00:03:36.826>gonna <00:03:36.954>do <00:03:37.081>is <00:03:37.208>it's <00:03:37.335>gonna <00:03:37.463>store <00:03:37.590>a <00:03:37.717>new <00:03:37.845>chat

76
00:03:39.535 --> 00:03:41.895
<00:03:39.535>message <00:03:39.768>object <00:03:40.001>in <00:03:40.234>the <00:03:40.468>local <00:03:40.701>realm <00:03:40.935>database.

77
00:03:43.265 --> 00:03:46.965
<00:03:43.265>That's <00:03:43.404>then <00:03:43.545>going <00:03:43.684>to <00:03:43.825>be <00:03:43.964>synced <00:03:44.105>by <00:03:44.244>the <00:03:44.385>MongoDB <00:03:44.524>Realm <00:03:44.665>service,

78
00:03:46.965 --> 00:03:48.245
<00:03:46.965>which <00:03:47.253>is <00:03:47.541>a <00:03:47.829>cloud-based <00:03:48.117>service,

79
00:03:48.625 --> 00:03:51.205
<00:03:48.625>and <00:03:48.800>that's <00:03:48.975>gonna <00:03:49.150>sync <00:03:49.325>it <00:03:49.500>to <00:03:49.675>any <00:03:49.850>other <00:03:50.025>user

80
00:03:51.385 --> 00:03:52.765
<00:03:51.385>who <00:03:51.591>is <00:03:51.798>in <00:03:52.006>the <00:03:52.213>same <00:03:52.420>chat <00:03:52.626>room.

81
00:03:52.825 --> 00:03:54.125
<00:03:52.825>So <00:03:53.019>that's <00:03:53.215>done <00:03:53.410>at <00:03:53.605>the <00:03:53.800>database <00:03:53.995>level.

82
00:03:54.465 --> 00:03:58.765
<00:03:54.465>And <00:03:54.592>then <00:03:54.719>it <00:03:54.846>will <00:03:54.974>also <00:03:55.101>sync <00:03:55.228>that <00:03:55.355>data <00:03:55.483>to, <00:03:55.610>uh, <00:03:55.737>MongoDB <00:03:55.865>Atlas.

83
00:03:58.985 --> 00:04:00.325
<00:03:58.985>And <00:03:59.186>if <00:03:59.387>you <00:03:59.588>haven't <00:03:59.789>heard <00:03:59.990>of <00:04:00.191>it

84
00:04:00.325 --> 00:04:03.325
<00:04:00.325>before, <00:04:00.605>MongoDB <00:04:00.885>Atlas <00:04:01.165>is <00:04:01.445>the <00:04:01.725>MongoDB

85
00:04:03.525 --> 00:04:04.845
<00:04:03.525>database <00:04:03.822>as <00:04:04.119>a <00:04:04.416>cloud <00:04:04.713>service.

86
00:04:05.185 --> 00:04:07.765
<00:04:05.185>And <00:04:05.312>so <00:04:05.439>once <00:04:05.566>the <00:04:05.694>data's <00:04:05.821>in <00:04:05.948>Atlas, <00:04:06.075>you <00:04:06.203>could <00:04:06.330>have <00:04:06.457>web <00:04:06.585>apps

87
00:04:07.765 --> 00:04:09.525
<00:04:07.765>or <00:04:07.940>whatever <00:04:08.114>you <00:04:08.290>want, <00:04:08.464>get <00:04:08.640>to <00:04:08.815>that <00:04:08.989>same <00:04:09.165>data.

88
00:04:11.655 --> 00:04:13.365
<00:04:11.655>We're <00:04:12.005>gonna <00:04:12.355>be <00:04:12.705>using <00:04:13.055>partitioning.

89
00:04:14.385 --> 00:04:16.445
<00:04:14.385>And <00:04:14.665>why <00:04:14.945>do <00:04:15.225>you <00:04:15.505>partition <00:04:15.785>data?

90
00:04:17.345 --> 00:04:19.405
<00:04:17.345>The <00:04:17.625>primary <00:04:17.905>reason <00:04:18.185>is <00:04:18.465>probably <00:04:18.745>capacity.

91
00:04:19.865 --> 00:04:22.525
<00:04:19.865>Uh, <00:04:19.992>if <00:04:20.119>you <00:04:20.246>are <00:04:20.374>using <00:04:20.501>a <00:04:20.628>service <00:04:20.755>that's <00:04:20.883>got <00:04:21.010>a <00:04:21.137>million <00:04:21.265>users,

92
00:04:22.865 --> 00:04:25.725
<00:04:22.865>you <00:04:23.065>probably <00:04:23.265>don't <00:04:23.465>have <00:04:23.665>space <00:04:23.865>on <00:04:24.065>your <00:04:24.265>device

93
00:04:25.905 --> 00:04:27.845
<00:04:25.905>for <00:04:26.080>all <00:04:26.255>the <00:04:26.429>data <00:04:26.604>from <00:04:26.780>all <00:04:26.955>of <00:04:27.130>those <00:04:27.304>users.

94
00:04:28.675 --> 00:04:29.695
<00:04:28.675>So <00:04:28.981>you <00:04:29.287>use <00:04:29.593>partitioning

95
00:04:29.915 --> 00:04:31.655
<00:04:29.915>and <00:04:30.115>only <00:04:30.315>take <00:04:30.515>the <00:04:30.715>data <00:04:30.915>you <00:04:31.115>care <00:04:31.315>about.

96
00:04:32.985 --> 00:04:34.085
<00:04:32.985>And <00:04:33.232>the <00:04:33.480>second <00:04:33.727>is <00:04:33.974>security.

97
00:04:34.465 --> 00:04:37.325
<00:04:34.465>You're <00:04:34.605>probably <00:04:34.745>not <00:04:34.885>gonna <00:04:35.025>be <00:04:35.165>too <00:04:35.305>happy <00:04:35.445>if <00:04:35.585>another <00:04:35.725>user <00:04:35.865>has

98
00:04:37.325 --> 00:04:39.805
<00:04:37.325>your <00:04:37.525>bank <00:04:37.724>details, <00:04:37.925>uh, <00:04:38.125>stored <00:04:38.325>on <00:04:38.525>their <00:04:38.724>phone.

99
00:04:41.585 --> 00:04:43.525
<00:04:41.585>So <00:04:41.864>that's <00:04:42.145>why <00:04:42.424>partitioning <00:04:42.705>is <00:04:42.984>useful.

100
00:04:44.145 --> 00:04:46.125
<00:04:44.145>How <00:04:44.424>it's <00:04:44.705>actually <00:04:44.984>works <00:04:45.265>with, <00:04:45.544>uh,

101
00:04:46.255 --> 00:04:48.685
<00:04:46.255>realm <00:04:46.410>is <00:04:46.566>on <00:04:46.721>the <00:04:46.877>left <00:04:47.032>hand <00:04:47.188>side <00:04:47.343>we've <00:04:47.499>got <00:04:47.655>our

102
00:04:48.855 --> 00:04:50.285
<00:04:48.855>Atlas <00:04:49.498>Cloud <00:04:50.142>database.

103
00:04:50.615 --> 00:04:52.885
<00:04:50.615>We've <00:04:50.848>got <00:04:51.081>a <00:04:51.315>Shapes <00:04:51.548>database <00:04:51.781>in <00:04:52.015>there.

104
00:04:52.885 --> 00:04:56.005
<00:04:52.885>We <00:04:53.085>have <00:04:53.284>collections <00:04:53.485>of <00:04:53.685>circles, <00:04:53.885>stars <00:04:54.085>and <00:04:54.284>triangles

105
00:04:57.295 --> 00:04:59.915
<00:04:57.295>and <00:04:57.470>objects <00:04:57.645>or <00:04:57.820>documents <00:04:57.995>in <00:04:58.170>any <00:04:58.345>of <00:04:58.520>those <00:04:58.695>collections.

106
00:05:00.145 --> 00:05:02.075
<00:05:00.145>They <00:05:00.378>all <00:05:00.611>have <00:05:00.844>a <00:05:01.078>field <00:05:01.311>called <00:05:01.544>color

107
00:05:02.455 --> 00:05:05.115
<00:05:02.455>and <00:05:02.610>we're <00:05:02.766>gonna <00:05:02.921>use <00:05:03.077>the <00:05:03.232>color <00:05:03.388>as <00:05:03.543>our <00:05:03.699>partitioning <00:05:03.854>key.

108
00:05:05.615 --> 00:05:06.795
<00:05:05.615>So <00:05:05.827>on <00:05:06.039>the <00:05:06.252>right <00:05:06.464>hand <00:05:06.677>side,

109
00:05:06.825 --> 00:05:10.955
<00:05:06.825>when <00:05:06.980>our <00:05:07.136>application <00:05:07.291>o <00:05:07.447>opens <00:05:07.602>a <00:05:07.758>sync <00:05:07.913>realm, <00:05:08.069>it <00:05:08.224>specifies

110
00:05:10.955 --> 00:05:12.315
<00:05:10.955>what <00:05:11.199>color <00:05:11.444>it <00:05:11.689>wants <00:05:11.934>to <00:05:12.179>see.

111
00:05:12.935 --> 00:05:15.715
<00:05:12.935>So <00:05:13.110>it <00:05:13.285>specifies, <00:05:13.460>I <00:05:13.635>only <00:05:13.810>want <00:05:13.985>the <00:05:14.160>blue <00:05:14.335>objects.

112
00:05:17.455 --> 00:05:20.675
<00:05:17.455>For <00:05:17.571>our <00:05:17.688>app, <00:05:17.805>we're <00:05:17.921>going <00:05:18.038>to <00:05:18.155>use <00:05:18.271>the <00:05:18.388>name <00:05:18.505>of <00:05:18.621>the <00:05:18.738>chat <00:05:18.854>room

113
00:05:21.215 --> 00:05:22.755
<00:05:21.215>as <00:05:21.676>our <00:05:22.139>partitioning <00:05:22.601>key.

114
00:05:22.775 --> 00:05:25.715
<00:05:22.775>So <00:05:22.930>for <00:05:23.086>example, <00:05:23.241>uh, <00:05:23.397>if <00:05:23.552>you <00:05:23.708>open <00:05:23.863>the <00:05:24.019>Swift <00:05:24.174>room,

115
00:05:25.985 --> 00:05:29.835
<00:05:25.985>then <00:05:26.185>we'll <00:05:26.385>sync <00:05:26.585>the <00:05:26.785>uh, <00:05:26.985>uh, <00:05:27.185>swift <00:05:27.385>partition.

116
00:05:32.155 --> 00:05:34.405
<00:05:32.155>Okay, <00:05:32.354>so <00:05:32.554>I <00:05:32.755>know <00:05:32.955>that <00:05:33.155>was <00:05:33.354>very <00:05:33.554>quick,

117
00:05:34.425 --> 00:05:36.565
<00:05:34.425>but <00:05:34.580>I <00:05:34.736>really <00:05:34.891>want <00:05:35.047>to <00:05:35.202>get <00:05:35.358>as <00:05:35.513>far <00:05:35.669>as <00:05:35.825>possible

118
00:05:36.565 --> 00:05:38.205
<00:05:36.565>through <00:05:36.915>actually <00:05:37.265>building <00:05:37.615>this <00:05:37.965>app.

119
00:05:38.625 --> 00:05:41.045
<00:05:38.625>And <00:05:38.780>reminder, <00:05:38.936>don't <00:05:39.091>worry <00:05:39.247>if <00:05:39.402>you <00:05:39.558>fall <00:05:39.713>a <00:05:39.869>bit <00:05:40.025>behind

120
00:05:41.045 --> 00:05:42.365
<00:05:41.045>because <00:05:41.282>you <00:05:41.520>will <00:05:41.757>get <00:05:41.995>a <00:05:42.233>recording

121
00:05:42.385 --> 00:05:44.285
<00:05:42.385>and <00:05:42.540>you <00:05:42.696>can <00:05:42.851>go <00:05:43.007>through <00:05:43.162>at <00:05:43.318>your <00:05:43.473>own <00:05:43.629>pace <00:05:43.784>later.

122
00:05:50.005 --> 00:05:54.875
<00:05:50.005>Okay? <00:05:50.121>So <00:05:50.238>the <00:05:50.355>first <00:05:50.471>thing <00:05:50.588>you'll <00:05:50.705>need <00:05:50.821>is <00:05:50.938>the <00:05:51.055>X <00:05:51.171>code, <00:05:51.288>X <00:05:51.405>code,

123
00:05:54.875 --> 00:05:56.635
<00:05:54.875>which <00:05:55.155>is <00:05:55.435>the <00:05:55.715>IDE <00:05:55.995>from <00:05:56.275>Apple.

124
00:05:57.075 --> 00:05:58.805
<00:05:57.075>When <00:05:57.230>you <00:05:57.386>open <00:05:57.541>it <00:05:57.697>up, <00:05:57.852>you'll <00:05:58.008>be <00:05:58.163>given <00:05:58.319>the <00:05:58.474>option

125
00:05:58.805 --> 00:05:59.965
<00:05:58.805>to <00:05:59.066>create <00:05:59.327>a <00:05:59.588>new <00:05:59.849>app.

126
00:06:00.145 --> 00:06:04.245
<00:06:00.145>So <00:06:00.261>do <00:06:00.378>that, <00:06:00.495>make <00:06:00.611>sure <00:06:00.728>you <00:06:00.844>select <00:06:00.961>it's <00:06:01.078>an <00:06:01.195>iOS <00:06:01.311>and <00:06:01.428>it's <00:06:01.544>app.

127
00:06:05.025 --> 00:06:07.925
<00:06:05.025>Uh, <00:06:05.200>next <00:06:05.375>you <00:06:05.549>just <00:06:05.724>call <00:06:05.900>it <00:06:06.075>anything <00:06:06.250>you'd <00:06:06.424>like.

128
00:06:08.345 --> 00:06:09.605
<00:06:08.345>So <00:06:08.571>we'll <00:06:08.798>call <00:06:09.025>it <00:06:09.252>live <00:06:09.479>chat.

129
00:06:11.205 --> 00:06:13.295
<00:06:11.205>Just <00:06:11.380>make <00:06:11.555>sure <00:06:11.729>that <00:06:11.905>the, <00:06:12.080>you've <00:06:12.255>got <00:06:12.430>the <00:06:12.604>interface

130
00:06:13.295 --> 00:06:15.615
<00:06:13.295>and <00:06:13.495>the <00:06:13.695>live <00:06:13.895>cycle <00:06:14.095>set <00:06:14.295>to <00:06:14.495>Swift <00:06:14.695>ui.

131
00:06:16.275 --> 00:06:17.985
<00:06:16.275>Everything <00:06:16.474>else <00:06:16.674>you <00:06:16.875>can <00:06:17.075>leave <00:06:17.275>as <00:06:17.474>a <00:06:17.674>default.

132
00:06:19.545 --> 00:06:20.925
<00:06:19.545>So <00:06:19.855>we're <00:06:20.166>gonna <00:06:20.476>create <00:06:20.787>that.

133
00:06:25.105 --> 00:06:29.185
<00:06:25.105>Actually, <00:06:25.260>while <00:06:25.416>that's <00:06:25.571>loading, <00:06:25.727>I'll <00:06:25.882>just <00:06:26.038>bring <00:06:26.193>up <00:06:26.349>a, <00:06:26.505>um,

134
00:06:31.325 --> 00:06:33.745
<00:06:31.325>so <00:06:31.558>like, <00:06:31.791>here's <00:06:32.025>one <00:06:32.258>I <00:06:32.491>built <00:06:32.724>earlier.

135
00:06:33.885 --> 00:06:37.585
<00:06:33.885>So <00:06:34.001>let's <00:06:34.118>go <00:06:34.235>to <00:06:34.351>the <00:06:34.468>Swift <00:06:34.585>chat <00:06:34.701>room <00:06:34.818>and <00:06:34.935>let's <00:06:35.051>send <00:06:35.168>a <00:06:35.284>message.

136
00:06:39.505 --> 00:06:39.725
Oh,

137
00:06:45.855 --> 00:06:49.075
<00:06:45.855>so <00:06:46.010>let's, <00:06:46.166>so <00:06:46.321>when <00:06:46.477>we <00:06:46.632>get <00:06:46.788>our <00:06:46.943>app <00:06:47.099>working <00:06:47.255>we'll,

138
00:06:49.075 --> 00:06:53.325
<00:06:49.075>we'll <00:06:49.202>have <00:06:49.329>something <00:06:49.456>to <00:06:49.584>see, <00:06:49.711>get <00:06:49.838>rid <00:06:49.965>of <00:06:50.093>a <00:06:50.220>bit <00:06:50.347>of <00:06:50.474>space.

139
00:06:54.305 --> 00:06:59.075
<00:06:54.305>Um, <00:06:54.460>just <00:06:54.616>get <00:06:54.771>rid <00:06:54.927>of <00:06:55.082>that <00:06:55.238>a <00:06:55.393>bit <00:06:55.549>more <00:06:55.705>space.

140
00:06:59.345 --> 00:07:01.075
<00:06:59.345>Okay, <00:06:59.578>ho <00:06:59.811>hopefully <00:07:00.045>you <00:07:00.278>can <00:07:00.511>read <00:07:00.745>this.

141
00:07:01.375 --> 00:07:05.375
<00:07:01.375>Uh, <00:07:01.575>so, <00:07:01.775>so <00:07:01.975>this <00:07:02.175>is <00:07:02.375>our <00:07:02.575>first <00:07:02.775>view.

142
00:07:06.005 --> 00:07:09.135
<00:07:06.005>It's <00:07:06.145>a, <00:07:06.284>uh, <00:07:06.425>just <00:07:06.565>a <00:07:06.705>text <00:07:06.844>view <00:07:06.985>that <00:07:07.125>says <00:07:07.265>hello <00:07:07.405>world.

143
00:07:10.515 --> 00:07:13.615
<00:07:10.515>So <00:07:10.794>let's, <00:07:11.075>let's <00:07:11.354>just <00:07:11.635>update <00:07:11.914>it

144
00:07:13.995 --> 00:07:16.535
<00:07:13.995>and <00:07:14.150>we're <00:07:14.306>gonna <00:07:14.461>choose <00:07:14.617>what <00:07:14.772>simulator <00:07:14.928>we <00:07:15.083>want <00:07:15.239>to <00:07:15.395>use.

145
00:07:16.795 --> 00:07:19.695
<00:07:16.795>For <00:07:16.950>some <00:07:17.106>reason, <00:07:17.261>it's, <00:07:17.417>uh, <00:07:17.572>defaults <00:07:17.728>for <00:07:17.883>an <00:07:18.039>iPad, <00:07:18.195>which,

146
00:07:20.065 --> 00:07:21.455
<00:07:20.065>sorry, <00:07:20.377>to <00:07:20.690>a, <00:07:21.003>an <00:07:21.316>iPod,

147
00:07:21.455 --> 00:07:22.575
<00:07:21.455>which <00:07:21.580>I <00:07:21.707>don't <00:07:21.832>think <00:07:21.959>too <00:07:22.085>many <00:07:22.211>people <00:07:22.337>are <00:07:22.462>using.

148
00:07:22.575 --> 00:07:24.535
<00:07:22.575>So <00:07:22.808>we'll <00:07:23.041>use <00:07:23.275>a <00:07:23.508>more <00:07:23.741>modern <00:07:23.974>device

149
00:07:25.195 --> 00:07:27.975
<00:07:25.195>and <00:07:25.350>I'm <00:07:25.506>gonna <00:07:25.661>hit <00:07:25.817>Command <00:07:25.972>R, <00:07:26.128>which <00:07:26.283>is <00:07:26.439>gonna <00:07:26.594>build

150
00:07:28.275 --> 00:07:32.495
<00:07:28.275>and <00:07:28.414>run <00:07:28.554>that, <00:07:28.695>and <00:07:28.835>it <00:07:28.974>will <00:07:29.114>run <00:07:29.255>it <00:07:29.395>in <00:07:29.534>our <00:07:29.674>simulator.

151
00:07:33.975 --> 00:07:35.475
<00:07:33.975>So <00:07:34.167>that's <00:07:34.360>gonna <00:07:34.553>pop <00:07:34.746>up <00:07:34.939>in <00:07:35.132>a <00:07:35.325>second.

152
00:07:37.995 --> 00:07:41.105
<00:07:37.995>While <00:07:38.195>that <00:07:38.395>is <00:07:38.595>working, <00:07:38.795>I <00:07:38.995>will <00:07:39.195>go <00:07:39.395>ahead

153
00:07:41.365 --> 00:07:44.985
<00:07:41.365>and <00:07:41.715>install <00:07:42.065>the <00:07:42.415>realm <00:07:42.765>SDK.

154
00:07:45.125 --> 00:07:47.345
<00:07:45.125>So <00:07:45.300>we <00:07:45.475>use <00:07:45.650>the, <00:07:45.825>use <00:07:46.000>the <00:07:46.175>Swift <00:07:46.350>package <00:07:46.525>manager

155
00:07:47.805 --> 00:07:49.225
<00:07:47.805>to <00:07:48.124>add <00:07:48.444>a <00:07:48.763>package <00:07:49.083>dependency.

156
00:07:52.525 --> 00:07:56.825
<00:07:52.525>And <00:07:52.664>for <00:07:52.804>the, <00:07:52.945>for <00:07:53.085>the <00:07:53.224>package <00:07:53.364>dependency, <00:07:53.505>we <00:07:53.645>just <00:07:53.784>need <00:07:53.924>the,

157
00:07:57.525 --> 00:07:59.585
<00:07:57.525>uh, <00:07:57.875>address <00:07:58.224>of <00:07:58.575>the <00:07:58.924>repo.

158
00:08:00.085 --> 00:08:03.665
<00:08:00.085>And <00:08:00.318>this <00:08:00.551>repo <00:08:00.784>is <00:08:01.018>for <00:08:01.251>the, <00:08:01.484>um,

159
00:08:04.705 --> 00:08:07.085
<00:08:04.705>the <00:08:05.055>realm <00:08:05.405>SDK <00:08:05.755>for <00:08:06.104>iOS.

160
00:08:16.665 --> 00:08:19.085
<00:08:16.665>Ah, <00:08:16.898>I <00:08:17.131>chose <00:08:17.365>the <00:08:17.598>wrong <00:08:17.831>simulator, <00:08:18.065>nevermind.

161
00:08:19.385 --> 00:08:21.925
<00:08:19.385>So <00:08:19.512>it's <00:08:19.639>gonna <00:08:19.766>take <00:08:19.894>a <00:08:20.021>little <00:08:20.148>while <00:08:20.275>to <00:08:20.403>boot <00:08:20.530>up <00:08:20.657>that <00:08:20.784>simulator.

162
00:08:24.125 --> 00:08:26.895
<00:08:24.125>Okay, <00:08:24.405>it's <00:08:24.685>gonna <00:08:24.965>check <00:08:25.245>the <00:08:25.525>versions.

163
00:08:31.275 --> 00:08:32.935
<00:08:31.275>I'm <00:08:31.450>happy <00:08:31.625>with <00:08:31.799>that. <00:08:31.974>So <00:08:32.150>we'll <00:08:32.324>just <00:08:32.500>say <00:08:32.674>next

164
00:08:36.625 --> 00:08:40.395
<00:08:36.625>and <00:08:36.799>we <00:08:36.975>choose <00:08:37.150>the <00:08:37.325>packages <00:08:37.500>we <00:08:37.674>want <00:08:37.850>to <00:08:38.025>use.

165
00:08:40.935 --> 00:08:44.095
<00:08:40.934>So <00:08:41.090>actually <00:08:41.246>I'm, <00:08:41.401>I'm, <00:08:41.557>I'm, <00:08:41.712>I'm <00:08:41.868>gonna <00:08:42.023>kill <00:08:42.179>this <00:08:42.334>simulator

166
00:08:44.195 --> 00:08:46.455
<00:08:44.195>and <00:08:44.475>switch <00:08:44.755>to <00:08:45.035>a <00:08:45.315>different <00:08:45.595>one

167
00:08:47.925 --> 00:08:49.855
<00:08:47.925>because <00:08:48.099>that's <00:08:48.275>taken <00:08:48.449>a <00:08:48.625>long <00:08:48.800>time <00:08:48.974>to <00:08:49.150>boot <00:08:49.324>up.

168
00:08:56.715 --> 00:09:01.605
<00:08:56.715>Uh, <00:08:56.948>Or <00:08:57.181>Xcode <00:08:57.415>has <00:08:57.648>got <00:08:57.881>very <00:08:58.115>laggy.

169
00:09:01.605 --> 00:09:03.405
<00:09:01.605>I <00:09:01.760>think <00:09:01.916>it's <00:09:02.071>something <00:09:02.227>to <00:09:02.382>do <00:09:02.538>with <00:09:02.693>the <00:09:02.849>streaming <00:09:03.005>software.

170
00:09:05.725 --> 00:09:09.615
<00:09:05.725>Okay, <00:09:06.075>Let's <00:09:06.425>kill <00:09:06.775>that <00:09:07.125>one

171
00:09:09.915 --> 00:09:12.575
<00:09:09.915>and <00:09:10.115>let's <00:09:10.314>try <00:09:10.515>running <00:09:10.714>US <00:09:10.915>code <00:09:11.115>in <00:09:11.314>here.

172
00:09:13.665 --> 00:09:16.675
<00:09:13.665>Okay, <00:09:13.805>so <00:09:13.944>as <00:09:14.084>I <00:09:14.224>say, <00:09:14.365>this <00:09:14.505>is <00:09:14.645>our <00:09:14.785>top <00:09:14.925>level <00:09:15.064>view

173
00:09:17.655 --> 00:09:19.475
<00:09:17.655>and <00:09:17.935>every <00:09:18.214>view <00:09:18.495>has <00:09:18.775>a <00:09:19.055>body.

174
00:09:20.095 --> 00:09:23.195
<00:09:20.095>And <00:09:20.235>here <00:09:20.375>we've <00:09:20.515>got <00:09:20.655>a, <00:09:20.795>a <00:09:20.935>built <00:09:21.075>in <00:09:21.215>view <00:09:21.355>called <00:09:21.495>text.

175
00:09:23.535 --> 00:09:24.395
<00:09:23.535>And <00:09:23.728>there <00:09:23.922>it's <00:09:24.115>just <00:09:24.309>gonna

176
00:09:24.395 --> 00:09:25.915
<00:09:24.395>display <00:09:24.622>whatever <00:09:24.851>text <00:09:25.079>we <00:09:25.307>put <00:09:25.535>in <00:09:25.762>there.

177
00:09:26.415 --> 00:09:29.315
<00:09:26.415>And <00:09:26.555>so <00:09:26.694>we'll, <00:09:26.834>uh, <00:09:26.974>see <00:09:27.115>that <00:09:27.255>appear <00:09:27.395>in <00:09:27.535>the <00:09:27.675>simulator <00:09:27.814>soon.

178
00:09:31.205 --> 00:09:32.405
<00:09:31.205>I <00:09:31.565>talked <00:09:31.925>about <00:09:32.285>view.

179
00:09:32.665 --> 00:09:34.925
<00:09:32.665>So <00:09:32.839>we're <00:09:33.015>gonna <00:09:33.189>have <00:09:33.365>several <00:09:33.540>groups, <00:09:33.714>uh, <00:09:33.890>several <00:09:34.064>views.

180
00:09:35.145 --> 00:09:38.045
<00:09:35.145>So <00:09:35.285>we'll <00:09:35.425>create <00:09:35.564>a <00:09:35.704>group <00:09:35.845>where <00:09:35.985>we <00:09:36.125>can <00:09:36.265>store <00:09:36.405>those <00:09:36.545>files

181
00:09:38.705 --> 00:09:41.205
<00:09:38.705>and <00:09:38.938>I'll <00:09:39.171>move <00:09:39.405>content <00:09:39.638>view <00:09:39.871>under <00:09:40.105>there.

182
00:09:42.125 --> 00:09:44.265
<00:09:42.125>And <00:09:42.280>then <00:09:42.436>we're <00:09:42.591>gonna <00:09:42.747>have <00:09:42.902>another <00:09:43.058>group <00:09:43.213>where <00:09:43.369>we're <00:09:43.525>going

183
00:09:44.265 --> 00:09:47.145
<00:09:44.265>to <00:09:44.465>store <00:09:44.665>our <00:09:44.865>model <00:09:45.064>or <00:09:45.265>our <00:09:45.465>data <00:09:45.665>model.

184
00:09:52.955 --> 00:09:54.525
<00:09:52.955>Okay, <00:09:53.421>so <00:09:53.888>hello <00:09:54.355>devs.

185
00:09:54.585 --> 00:09:57.485
<00:09:54.585>So <00:09:54.760>we've <00:09:54.935>now <00:09:55.110>built <00:09:55.285>our <00:09:55.460>first <00:09:55.635>Swift <00:09:55.810>UI <00:09:55.985>app.

186
00:09:58.555 --> 00:10:00.425
<00:09:58.555>Let's <00:09:58.729>try <00:09:58.905>and <00:09:59.079>make <00:09:59.255>it <00:09:59.430>a <00:09:59.604>bit <00:09:59.780>more <00:09:59.954>sophisticated.

187
00:10:01.045 --> 00:10:02.905
<00:10:01.045>So <00:10:01.278>we're <00:10:01.511>gonna <00:10:01.745>add <00:10:01.978>a <00:10:02.211>new <00:10:02.444>file,

188
00:10:03.645 --> 00:10:05.145
<00:10:03.645>and <00:10:03.837>this <00:10:04.030>is <00:10:04.223>gonna <00:10:04.416>be <00:10:04.609>a <00:10:04.802>Swift <00:10:04.995>file

189
00:10:06.975 --> 00:10:08.955
<00:10:06.975>and <00:10:07.208>we're <00:10:07.441>gonna <00:10:07.675>call <00:10:07.908>it <00:10:08.141>chat <00:10:08.375>message.

190
00:10:09.575 --> 00:10:11.635
<00:10:09.575>So <00:10:09.730>this <00:10:09.886>is <00:10:10.041>gonna <00:10:10.197>be <00:10:10.352>the <00:10:10.508>class <00:10:10.663>that <00:10:10.819>we <00:10:10.975>use

191
00:10:11.635 --> 00:10:13.595
<00:10:11.635>for <00:10:11.915>storing <00:10:12.194>our <00:10:12.475>chat <00:10:12.755>message <00:10:13.035>objects.

192
00:10:15.805 --> 00:10:19.035
<00:10:15.805>We're <00:10:16.005>gonna <00:10:16.204>need <00:10:16.405>to <00:10:16.604>import <00:10:16.805>the <00:10:17.005>realm <00:10:17.204>SDK,

193
00:10:21.415 --> 00:10:24.595
<00:10:21.415>and <00:10:21.570>then <00:10:21.726>we're <00:10:21.881>gonna <00:10:22.037>define <00:10:22.192>a <00:10:22.348>class <00:10:22.503>called <00:10:22.659>chat <00:10:22.814>message.

194
00:10:25.825 --> 00:10:27.595
<00:10:25.825>It's <00:10:26.175>gonna <00:10:26.525>inherit <00:10:26.875>from <00:10:27.225>Object.

195
00:10:28.095 --> 00:10:31.315
<00:10:28.095>So <00:10:28.235>that <00:10:28.375>means <00:10:28.515>that <00:10:28.655>we <00:10:28.795>can <00:10:28.935>now <00:10:29.075>persist <00:10:29.215>it <00:10:29.355>in <00:10:29.495>realm

196
00:10:31.935 --> 00:10:36.315
<00:10:31.935>and <00:10:32.214>we'll <00:10:32.494>also <00:10:32.775>inherit <00:10:33.055>from <00:10:33.334>Object,

197
00:10:36.815 --> 00:10:40.075
<00:10:36.815>uh, <00:10:37.165>as <00:10:37.515>a <00:10:37.865>key <00:10:38.215>identifiable.

198
00:10:42.075 --> 00:10:44.605
<00:10:42.075>There's <00:10:42.215>one <00:10:42.355>thing <00:10:42.495>we <00:10:42.635>have <00:10:42.775>to <00:10:42.915>do <00:10:43.055>to <00:10:43.195>make <00:10:43.335>the <00:10:43.475>contents

199
00:10:44.605 --> 00:10:46.725
<00:10:44.605>of <00:10:44.780>the <00:10:44.955>class <00:10:45.130>visible <00:10:45.305>to <00:10:45.480>the <00:10:45.655>rail <00:10:45.830>and <00:10:46.005>SDK,

200
00:10:47.265 --> 00:10:50.365
<00:10:47.265>and <00:10:47.465>that's <00:10:47.665>mark <00:10:47.865>it <00:10:48.064>as <00:10:48.265>objective <00:10:48.465>C <00:10:48.665>members.

201
00:10:50.785 --> 00:10:53.885
<00:10:50.785>And <00:10:50.940>then <00:10:51.096>when <00:10:51.251>we <00:10:51.407>add <00:10:51.562>our <00:10:51.718>attributes, <00:10:51.873>then <00:10:52.029>we <00:10:52.185>have

202
00:10:53.885 --> 00:10:55.405
<00:10:53.885>to <00:10:54.158>declare <00:10:54.432>them <00:10:54.705>as <00:10:54.979>dynamic <00:10:55.252>raw,

203
00:10:58.745 --> 00:11:00.845
<00:10:58.745>um, <00:10:58.920>because <00:10:59.095>we're <00:10:59.270>gonna <00:10:59.445>store <00:10:59.620>this <00:10:59.795>data <00:10:59.970>in <00:11:00.145>at,

204
00:11:00.905 --> 00:11:01.925
<00:11:00.905>in <00:11:01.211>MongoDB <00:11:01.516>as <00:11:01.823>well.

205
00:11:02.265 --> 00:11:04.725
<00:11:02.265>Uh, <00:11:02.439>you <00:11:02.615>have <00:11:02.790>to <00:11:02.965>have <00:11:03.140>an <00:11:03.314>attribute <00:11:03.490>called <00:11:03.665>id,

206
00:11:05.065 --> 00:11:08.765
<00:11:05.065>and <00:11:05.220>we're <00:11:05.376>gonna <00:11:05.531>initialize <00:11:05.687>that <00:11:05.842>to <00:11:05.998>a <00:11:06.153>unique <00:11:06.309>object <00:11:06.465>id.

207
00:11:12.005 --> 00:11:16.225
<00:11:12.005>And <00:11:12.145>we, <00:11:12.285>now, <00:11:12.425>we <00:11:12.564>have <00:11:12.705>to <00:11:12.845>tell <00:11:12.985>the <00:11:13.125>SDK <00:11:13.265>that, <00:11:13.405>uh,

208
00:11:16.325 --> 00:11:18.865
<00:11:16.325>the <00:11:16.500>underscore <00:11:16.675>ID <00:11:16.850>is <00:11:17.025>gonna <00:11:17.200>be <00:11:17.375>our <00:11:17.550>primary <00:11:17.725>key,

209
00:11:19.235 --> 00:11:21.065
<00:11:19.235>which <00:11:19.351>is <00:11:19.468>a <00:11:19.585>bit <00:11:19.701>of <00:11:19.818>an <00:11:19.935>odd <00:11:20.051>way <00:11:20.168>we <00:11:20.285>have <00:11:20.401>to <00:11:20.518>do <00:11:20.635>it,

210
00:11:21.065 --> 00:11:24.105
<00:11:21.065>but <00:11:21.220>it's <00:11:21.376>a, <00:11:21.531>we <00:11:21.687>have <00:11:21.842>to <00:11:21.998>override <00:11:22.153>a <00:11:22.309>static <00:11:22.465>funk

211
00:11:29.175 --> 00:11:31.795
<00:11:29.175>and <00:11:29.375>we'll <00:11:29.574>just <00:11:29.775>return <00:11:29.974>the <00:11:30.175>string <00:11:30.375>underscore <00:11:30.574>id.

212
00:11:32.695 --> 00:11:35.435
<00:11:32.695>So <00:11:32.850>Other <00:11:33.006>attributes <00:11:33.161>we <00:11:33.317>need, <00:11:33.472>uh, <00:11:33.628>we <00:11:33.783>want <00:11:33.939>the <00:11:34.095>author

213
00:11:36.965 --> 00:11:38.365
<00:11:36.965>initials <00:11:37.217>act <00:11:37.469>to <00:11:37.721>an <00:11:37.973>empty <00:11:38.225>string.

214
00:11:38.705 --> 00:11:40.805
<00:11:38.705>We <00:11:38.905>want <00:11:39.105>the <00:11:39.305>actual <00:11:39.505>body <00:11:39.705>of <00:11:39.905>the <00:11:40.105>message

215
00:11:40.825 --> 00:11:44.445
<00:11:40.825>or <00:11:40.941>the <00:11:41.058>text, <00:11:41.175>uh, <00:11:41.291>we <00:11:41.408>want <00:11:41.525>the <00:11:41.641>room, <00:11:41.758>we're <00:11:41.875>gonna <00:11:41.991>store <00:11:42.108>it <00:11:42.225>in

216
00:11:44.745 --> 00:11:46.845
<00:11:44.745>and <00:11:44.900>remember, <00:11:45.056>that's <00:11:45.211>what <00:11:45.367>we're <00:11:45.522>gonna <00:11:45.678>use <00:11:45.833>for <00:11:45.989>the <00:11:46.145>partition.

217
00:11:48.105 --> 00:11:52.405
<00:11:48.105>And <00:11:48.232>then <00:11:48.359>finally, <00:11:48.486>I'm <00:11:48.614>gonna <00:11:48.741>add <00:11:48.868>a <00:11:48.995>timestamp <00:11:49.123>so <00:11:49.250>we <00:11:49.377>can <00:11:49.505>see

218
00:11:52.405 --> 00:11:54.525
<00:11:52.405>what <00:11:52.685>time <00:11:52.964>the <00:11:53.245>message <00:11:53.525>was <00:11:53.805>created,

219
00:11:55.145 --> 00:11:57.845
<00:11:55.145>and <00:11:55.319>we'll <00:11:55.495>just <00:11:55.670>initialize <00:11:55.845>that <00:11:56.020>to <00:11:56.194>the <00:11:56.370>current <00:11:56.545>date.

220
00:11:58.665 --> 00:12:01.765
<00:11:58.665>So <00:11:58.805>at <00:11:58.944>that <00:11:59.084>point, <00:11:59.224>we've <00:11:59.365>got <00:11:59.505>our <00:11:59.645>model, <00:11:59.785>we'll <00:11:59.925>go <00:12:00.064>back

221
00:12:01.865 --> 00:12:03.285
<00:12:01.865>to <00:12:02.504>the <00:12:03.143>view.

222
00:12:05.815 --> 00:12:07.795
<00:12:05.815>So <00:12:05.970>in <00:12:06.126>here, <00:12:06.281>we're <00:12:06.437>going <00:12:06.592>to <00:12:06.748>have <00:12:06.903>to <00:12:07.059>log <00:12:07.215>in

223
00:12:07.795 --> 00:12:09.755
<00:12:07.795>before <00:12:07.995>we <00:12:08.194>do <00:12:08.395>anything <00:12:08.594>else, <00:12:08.795>because <00:12:08.995>we <00:12:09.194>have

224
00:12:09.755 --> 00:12:11.275
<00:12:09.755>to <00:12:09.983>log <00:12:10.211>into <00:12:10.439>the <00:12:10.667>backend <00:12:10.895>rail <00:12:11.122>map.

225
00:12:11.535 --> 00:12:13.555
<00:12:11.535>And <00:12:11.709>once <00:12:11.885>we've <00:12:12.060>logged <00:12:12.235>in, <00:12:12.410>we'll <00:12:12.584>know <00:12:12.760>the <00:12:12.935>username.

226
00:12:13.895 --> 00:12:16.235
<00:12:13.895>So <00:12:14.069>we're <00:12:14.245>gonna <00:12:14.420>create <00:12:14.595>a <00:12:14.770>variable <00:12:14.944>for <00:12:15.120>that <00:12:15.295>username.

227
00:12:17.495 --> 00:12:19.115
<00:12:17.495>So <00:12:17.695>it's <00:12:17.895>a <00:12:18.095>string, <00:12:18.295>and <00:12:18.495>we'll <00:12:18.695>initialize <00:12:18.895>it

228
00:12:19.115 --> 00:12:21.435
<00:12:19.115>to <00:12:19.348>the <00:12:19.581>empty <00:12:19.815>string <00:12:20.048>with <00:12:20.281>Swift <00:12:20.515>ui.

229
00:12:21.495 --> 00:12:25.795
<00:12:21.495>If <00:12:21.650>you're <00:12:21.806>gonna <00:12:21.961>change <00:12:22.117>a <00:12:22.272>variable <00:12:22.428>within <00:12:22.583>your, <00:12:22.739>uh, <00:12:22.895>view,

230
00:12:26.225 --> 00:12:29.995
<00:12:26.225>then <00:12:26.352>you'd <00:12:26.479>need <00:12:26.606>to <00:12:26.734>stagger <00:12:26.861>it, <00:12:26.988>sta <00:12:27.115>uh, <00:12:27.243>annotate <00:12:27.370>it <00:12:27.497>to <00:12:27.625>say

231
00:12:29.995 --> 00:12:31.355
<00:12:29.995>that <00:12:30.301>it's <00:12:30.607>a <00:12:30.913>state <00:12:31.219>variable.

232
00:12:32.735 --> 00:12:37.235
<00:12:32.735>So <00:12:32.890>we <00:12:33.046>do <00:12:33.201>that, <00:12:33.357>uh, <00:12:33.512>in <00:12:33.668>our <00:12:33.823>body, <00:12:33.979>almost <00:12:34.135>always,

233
00:12:37.695 --> 00:12:39.635
<00:12:37.695>you <00:12:37.895>are <00:12:38.095>gonna <00:12:38.295>start <00:12:38.495>with <00:12:38.695>a <00:12:38.895>navigation <00:12:39.095>view,

234
00:12:40.135 --> 00:12:43.155
<00:12:40.135>and <00:12:40.290>that's <00:12:40.446>what <00:12:40.601>lets <00:12:40.757>you <00:12:40.912>put <00:12:41.068>things <00:12:41.223>in <00:12:41.379>the, <00:12:41.535>uh,

235
00:12:43.155 --> 00:12:46.795
<00:12:43.155>the <00:12:43.271>bar <00:12:43.388>at <00:12:43.505>the <00:12:43.621>top <00:12:43.738>of <00:12:43.855>the <00:12:43.971>screen, <00:12:44.088>uh, <00:12:44.204>have <00:12:44.321>links, <00:12:44.438>et <00:12:44.555>cetera.

236
00:12:47.015 --> 00:12:48.235
<00:12:47.015>You'll <00:12:47.289>have <00:12:47.564>a <00:12:47.838>navigation <00:12:48.113>view.

237
00:12:48.935 --> 00:12:49.995
<00:12:48.935>And <00:12:49.252>from <00:12:49.571>within <00:12:49.889>there,

238
00:12:50.205 --> 00:12:52.435
<00:12:50.205>we'll <00:12:50.405>check <00:12:50.605>whether <00:12:50.805>the <00:12:51.005>username <00:12:51.205>has <00:12:51.405>been <00:12:51.605>set.

239
00:12:53.415 --> 00:12:56.475
<00:12:53.415>So <00:12:53.555>if <00:12:53.694>it <00:12:53.834>hasn't <00:12:53.974>been <00:12:54.115>set, <00:12:54.255>then <00:12:54.395>that <00:12:54.535>means <00:12:54.675>that, <00:12:54.814>uh,

240
00:12:56.565 --> 00:12:57.635
<00:12:56.565>we're <00:12:56.805>not <00:12:57.046>logged <00:12:57.287>in <00:12:57.528>yet.

241
00:12:58.095 --> 00:12:59.675
<00:12:58.095>So <00:12:58.375>let's <00:12:58.655>just <00:12:58.935>put <00:12:59.215>a <00:12:59.495>placeholder,

242
00:13:01.435 --> 00:13:03.755
<00:13:01.435>a <00:13:01.668>text <00:13:01.901>message <00:13:02.135>saying <00:13:02.368>not <00:13:02.601>logged <00:13:02.834>in.

243
00:13:05.825 --> 00:13:09.595
<00:13:05.825>Otherwise <00:13:06.025>We <00:13:06.225>are <00:13:06.425>logged <00:13:06.625>in. <00:13:06.825>So <00:13:07.025>another <00:13:07.225>placeholder.

244
00:13:14.665 --> 00:13:17.785
<00:13:14.665>Okay, <00:13:14.944>let's <00:13:15.224>put <00:13:15.505>that <00:13:15.785>to <00:13:16.064>build.

245
00:13:18.605 --> 00:13:22.305
<00:13:18.605>So <00:13:18.721>now <00:13:18.838>we'll <00:13:18.955>have <00:13:19.071>a, <00:13:19.188>uh, <00:13:19.305>a <00:13:19.421>special <00:13:19.538>view <00:13:19.655>that <00:13:19.771>we're <00:13:19.888>gonna <00:13:20.005>use

246
00:13:22.305 --> 00:13:23.465
<00:13:22.305>to <00:13:22.513>actually <00:13:22.722>do <00:13:22.931>the <00:13:23.140>logging <00:13:23.349>in.

247
00:13:24.805 --> 00:13:28.225
<00:13:24.805>So <00:13:24.921>we'll <00:13:25.038>create <00:13:25.155>a <00:13:25.271>new <00:13:25.388>file, <00:13:25.505>it's <00:13:25.621>a <00:13:25.738>swift <00:13:25.854>UI <00:13:25.971>view <00:13:26.088>this <00:13:26.204>time,

248
00:13:30.165 --> 00:13:31.505
<00:13:30.165>and <00:13:30.406>we'll <00:13:30.647>call <00:13:30.888>it <00:13:31.129>login <00:13:31.371>view.

249
00:13:35.415 --> 00:13:37.155
<00:13:35.415>Uh, <00:13:35.765>I <00:13:36.115>hate <00:13:36.464>doing <00:13:36.814>it,

250
00:13:37.155 --> 00:13:39.115
<00:13:37.155>but <00:13:37.355>I'm <00:13:37.555>going <00:13:37.755>to <00:13:37.954>remove <00:13:38.155>the <00:13:38.355>preview <00:13:38.555>code.

251
00:13:39.375 --> 00:13:41.515
<00:13:39.375>Uh, <00:13:39.502>when <00:13:39.629>you <00:13:39.756>go <00:13:39.884>and <00:13:40.011>look <00:13:40.138>at <00:13:40.265>the <00:13:40.393>code <00:13:40.520>in <00:13:40.647>the <00:13:40.775>repo,

252
00:13:41.535 --> 00:13:43.195
<00:13:41.535>you'll <00:13:41.735>see <00:13:41.935>there's <00:13:42.135>some <00:13:42.334>extra <00:13:42.535>code <00:13:42.735>in <00:13:42.935>there

253
00:13:43.195 --> 00:13:45.315
<00:13:43.195>that <00:13:43.350>lets <00:13:43.506>you <00:13:43.661>have <00:13:43.817>live <00:13:43.972>previews <00:13:44.128>so <00:13:44.283>you <00:13:44.439>don't <00:13:44.595>have

254
00:13:45.315 --> 00:13:48.435
<00:13:45.315>to <00:13:45.548>keep <00:13:45.781>switching <00:13:46.015>to <00:13:46.248>the, <00:13:46.481>um, <00:13:46.715>simulator.

255
00:13:49.955 --> 00:13:53.695
<00:13:49.955>So <00:13:50.095>in <00:13:50.235>our <00:13:50.375>login <00:13:50.515>view, <00:13:50.655>instead <00:13:50.795>of <00:13:50.935>saying, <00:13:51.075>uh, <00:13:51.215>hello <00:13:51.355>world,

256
00:13:54.025 --> 00:13:55.295
<00:13:54.025>we'll <00:13:54.406>say, <00:13:54.786>logging <00:13:55.168>in.

257
00:14:00.715 --> 00:14:03.335
<00:14:00.715>And <00:14:00.915>when <00:14:01.115>this <00:14:01.315>view <00:14:01.515>appears, <00:14:01.715>we're <00:14:01.915>actually <00:14:02.115>going

258
00:14:03.335 --> 00:14:04.895
<00:14:03.335>to <00:14:03.615>run <00:14:03.895>the <00:14:04.175>code <00:14:04.455>to <00:14:04.735>login.

259
00:14:09.075 --> 00:14:12.055
<00:14:09.075>So <00:14:09.215>we're <00:14:09.355>gonna <00:14:09.495>call <00:14:09.635>login, <00:14:09.775>but <00:14:09.915>we <00:14:10.055>haven't <00:14:10.195>defined <00:14:10.335>that <00:14:10.475>yet.

260
00:14:12.055 --> 00:14:13.495
<00:14:12.055>So <00:14:12.271>there's <00:14:12.487>gonna <00:14:12.703>be <00:14:12.919>a <00:14:13.135>compiler <00:14:13.351>error.

261
00:14:15.025 --> 00:14:16.135
<00:14:15.025>Let's <00:14:15.358>write <00:14:15.691>that <00:14:16.024>function.

262
00:14:19.035 --> 00:14:21.895
<00:14:19.035>So <00:14:19.162>how <00:14:19.289>we're <00:14:19.416>gonna <00:14:19.544>log <00:14:19.671>in <00:14:19.798>is <00:14:19.925>that <00:14:20.053>rail <00:14:20.180>map <00:14:20.307>we <00:14:20.435>create.

263
00:14:22.035 --> 00:14:25.335
<00:14:22.035>Oh, <00:14:22.151>we <00:14:22.268>haven't <00:14:22.385>created <00:14:22.501>it <00:14:22.618>yet. <00:14:22.735>Let <00:14:22.851>me, <00:14:22.968>let <00:14:23.084>me <00:14:23.201>jump <00:14:23.318>to <00:14:23.435>that.

264
00:14:25.875 --> 00:14:28.575
<00:14:25.875>Um, <00:14:26.015>so <00:14:26.155>this <00:14:26.295>is <00:14:26.435>the <00:14:26.575>entry <00:14:26.715>point <00:14:26.855>and <00:14:26.995>we <00:14:27.135>know <00:14:27.275>that

265
00:14:28.575 --> 00:14:29.775
<00:14:28.575>because <00:14:28.845>it's <00:14:29.115>tagged <00:14:29.385>with <00:14:29.655>main.

266
00:14:29.875 --> 00:14:31.855
<00:14:29.875>And <00:14:30.108>this <00:14:30.341>is <00:14:30.575>what <00:14:30.808>calls <00:14:31.041>content <00:14:31.275>view,

267
00:14:31.855 --> 00:14:32.935
<00:14:31.855>which <00:14:32.049>is <00:14:32.243>our <00:14:32.438>top <00:14:32.632>level <00:14:32.827>view.

268
00:14:34.615 --> 00:14:37.595
<00:14:34.615>So <00:14:34.755>in <00:14:34.895>here, <00:14:35.035>we're <00:14:35.175>going <00:14:35.315>to <00:14:35.455>have <00:14:35.595>to <00:14:35.735>import <00:14:35.875>the <00:14:36.015>SEK

269
00:14:40.735 --> 00:14:44.755
<00:14:40.735>And <00:14:40.862>we <00:14:40.989>get <00:14:41.116>a <00:14:41.244>error <00:14:41.371>now, <00:14:41.498>and <00:14:41.625>that's <00:14:41.753>because <00:14:41.880>both <00:14:42.007>Swift <00:14:42.135>UI

270
00:14:44.975 --> 00:14:48.195
<00:14:44.975>and <00:14:45.150>our <00:14:45.325>SDK <00:14:45.500>decided <00:14:45.675>to <00:14:45.850>use <00:14:46.025>the <00:14:46.200>same <00:14:46.375>name.

271
00:14:48.455 --> 00:14:50.195
<00:14:48.455>So <00:14:48.630>we <00:14:48.805>just <00:14:48.980>need <00:14:49.155>to <00:14:49.330>qualify <00:14:49.505>that <00:14:49.680>to <00:14:49.855>say

272
00:14:50.335 --> 00:14:51.645
<00:14:50.335>that's <00:14:50.629>the <00:14:50.924>Swift <00:14:51.219>UI <00:14:51.514>app.

273
00:14:52.145 --> 00:14:56.085
<00:14:52.145>And <00:14:52.272>then <00:14:52.399>we're <00:14:52.526>gonna <00:14:52.654>create <00:14:52.781>our <00:14:52.908>own <00:14:53.035>app, <00:14:53.163>which <00:14:53.290>lets <00:14:53.417>us, <00:14:53.545>uh,

274
00:14:56.195 --> 00:14:58.845
<00:14:56.195>connect <00:14:56.545>to <00:14:56.895>our <00:14:57.245>realm <00:14:57.595>application.

275
00:15:03.845 --> 00:15:04.065
Uh,

276
00:15:09.935 --> 00:15:11.755
<00:15:09.935>so <00:15:10.090>if <00:15:10.246>I <00:15:10.401>have <00:15:10.557>time, <00:15:10.712>I'm <00:15:10.868>gonna <00:15:11.023>show <00:15:11.179>you <00:15:11.334>how

277
00:15:11.755 --> 00:15:13.115
<00:15:11.755>to <00:15:12.061>create <00:15:12.367>the <00:15:12.673>backend <00:15:12.979>app

278
00:15:13.115 --> 00:15:15.475
<00:15:13.115>because <00:15:13.465>it's, <00:15:13.815>it's <00:15:14.165>incredibly <00:15:14.515>simple,

279
00:15:15.975 --> 00:15:19.195
<00:15:15.975>but <00:15:16.102>for <00:15:16.229>now, <00:15:16.356>just <00:15:16.484>know <00:15:16.611>that <00:15:16.738>we've <00:15:16.865>got <00:15:16.993>this <00:15:17.120>backend, <00:15:17.247>uh, <00:15:17.375>app

280
00:15:19.345 --> 00:15:20.835
<00:15:19.345>that <00:15:19.536>is <00:15:19.728>gonna <00:15:19.919>do <00:15:20.111>the <00:15:20.302>sync <00:15:20.494>for <00:15:20.686>us.

281
00:15:20.935 --> 00:15:23.995
<00:15:20.935>So <00:15:21.062>all <00:15:21.189>we <00:15:21.316>need <00:15:21.444>to <00:15:21.571>do <00:15:21.698>is <00:15:21.825>copy <00:15:21.953>the <00:15:22.080>unique <00:15:22.207>ID <00:15:22.334>for

282
00:15:23.995 --> 00:15:27.005
<00:15:23.995>that <00:15:24.228>application <00:15:24.461>and <00:15:24.695>paste <00:15:24.928>that <00:15:25.161>in <00:15:25.395>here.

283
00:15:28.325 --> 00:15:30.295
<00:15:28.325>Okay, <00:15:28.465>so <00:15:28.605>now <00:15:28.745>we <00:15:28.885>can <00:15:29.025>go <00:15:29.165>back <00:15:29.305>to <00:15:29.445>our <00:15:29.585>login <00:15:29.725>view.

284
00:15:30.995 --> 00:15:32.535
<00:15:30.995>And <00:15:31.341>app <00:15:31.688>is <00:15:32.034>now <00:15:32.381>defined.

285
00:15:36.475 --> 00:15:37.815
<00:15:36.475>So <00:15:36.716>we <00:15:36.957>are <00:15:37.198>gonna <00:15:37.439>do <00:15:37.681>login

286
00:15:38.035 --> 00:15:39.095
<00:15:38.035>and <00:15:38.225>we're <00:15:38.416>gonna <00:15:38.607>use <00:15:38.798>a <00:15:38.989>type

287
00:15:39.095 --> 00:15:40.695
<00:15:39.095>of <00:15:39.561>authentication <00:15:40.028>called <00:15:40.495>anonymous.

288
00:15:41.555 --> 00:15:43.655
<00:15:41.555>And <00:15:41.729>so <00:15:41.905>that's <00:15:42.079>a <00:15:42.255>nice <00:15:42.430>quick <00:15:42.604>one <00:15:42.780>to <00:15:42.954>use

289
00:15:43.815 --> 00:15:45.815
<00:15:43.815>'cause <00:15:43.955>you <00:15:44.095>don't <00:15:44.235>have <00:15:44.375>to <00:15:44.515>provide <00:15:44.655>a <00:15:44.795>username <00:15:44.935>or <00:15:45.075>a <00:15:45.215>password.

290
00:15:45.995 --> 00:15:49.375
<00:15:45.995>It <00:15:46.150>just, <00:15:46.306>uh, <00:15:46.461>allocates <00:15:46.617>a <00:15:46.772>unique <00:15:46.928>ID <00:15:47.083>to <00:15:47.239>the <00:15:47.395>user.

291
00:15:51.395 --> 00:15:55.495
<00:15:51.395>And <00:15:51.522>when <00:15:51.649>we <00:15:51.776>call <00:15:51.904>the <00:15:52.031>login, <00:15:52.158>it's <00:15:52.285>gonna <00:15:52.413>call <00:15:52.540>back <00:15:52.667>our <00:15:52.795>code

292
00:15:56.035 --> 00:15:58.535
<00:15:56.035>and <00:15:56.235>it's <00:15:56.435>gonna <00:15:56.635>provide <00:15:56.834>an <00:15:57.035>object <00:15:57.235>called <00:15:57.435>result

293
00:16:00.845 --> 00:16:02.095
<00:16:00.845>Because <00:16:01.220>It's <00:16:01.595>a <00:16:01.970>callback,

294
00:16:02.095 --> 00:16:03.415
<00:16:02.095>it's <00:16:02.293>not <00:16:02.491>running <00:16:02.689>on <00:16:02.887>the <00:16:03.084>main <00:16:03.283>thread,

295
00:16:04.315 --> 00:16:08.775
<00:16:04.315>and <00:16:04.490>you <00:16:04.665>are <00:16:04.840>only <00:16:05.015>allowed <00:16:05.190>to, <00:16:05.365>uh, <00:16:05.540>update <00:16:05.715>the

296
00:16:09.955 --> 00:16:11.455
<00:16:09.955>UI <00:16:10.630>from <00:16:11.305>the,

297
00:16:14.395 --> 00:16:15.615
<00:16:14.395>um, <00:16:14.669>from <00:16:14.944>the <00:16:15.218>main <00:16:15.493>thread.

298
00:16:15.835 --> 00:16:19.855
<00:16:15.835>So <00:16:15.962>we <00:16:16.089>need <00:16:16.216>to <00:16:16.344>send <00:16:16.471>our <00:16:16.598>code <00:16:16.725>to <00:16:16.853>run <00:16:16.980>on <00:16:17.107>the, <00:16:17.235>no,

299
00:16:19.855 --> 00:16:21.215
<00:16:19.855>I <00:16:20.008>think <00:16:20.161>I've <00:16:20.314>got <00:16:20.467>that <00:16:20.620>the <00:16:20.773>wrong <00:16:20.926>way <00:16:21.079>around.

300
00:16:21.485 --> 00:16:23.695
<00:16:21.485>It's <00:16:21.951>main, <00:16:22.418>but <00:16:22.885>async

301
00:16:28.315 --> 00:16:29.315
<00:16:28.315>Bit <00:16:29.215>better.

302
00:16:29.745 --> 00:16:31.045
<00:16:29.745>So <00:16:29.979>what <00:16:30.213>we're <00:16:30.447>gonna <00:16:30.680>do <00:16:30.915>is

303
00:16:31.045 --> 00:16:32.245
<00:16:31.045>we're <00:16:31.261>gonna <00:16:31.477>check <00:16:31.693>that <00:16:31.909>return <00:16:32.125>code.

304
00:16:32.385 --> 00:16:33.605
<00:16:32.385>So <00:16:32.659>we'll <00:16:32.934>switch <00:16:33.208>on <00:16:33.483>results

305
00:16:39.935 --> 00:16:42.755
<00:16:39.935>and <00:16:40.285>there's <00:16:40.635>two <00:16:40.984>possible <00:16:41.334>outcomes.

306
00:16:43.295 --> 00:16:44.475
<00:16:43.295>One <00:16:43.472>is <00:16:43.649>that <00:16:43.826>it <00:16:44.003>was <00:16:44.180>a <00:16:44.357>failure,

307
00:16:45.255 --> 00:16:46.675
<00:16:45.255>and <00:16:45.437>that <00:16:45.620>will <00:16:45.802>give <00:16:45.985>us <00:16:46.167>an <00:16:46.350>error <00:16:46.532>object.

308
00:16:48.415 --> 00:16:53.075
<00:16:48.415>So <00:16:48.542>all <00:16:48.669>we'll <00:16:48.796>do, <00:16:48.924>if <00:16:49.051>it's <00:16:49.178>an <00:16:49.305>error, <00:16:49.433>is <00:16:49.560>we <00:16:49.687>will <00:16:49.814>print

309
00:16:53.305 --> 00:16:53.835
<00:16:53.305>that <00:16:53.782>error

310
00:16:59.235 --> 00:17:02.215
<00:16:59.235>and <00:16:59.410>we'll <00:16:59.585>have <00:16:59.760>another <00:16:59.935>case <00:17:00.110>if <00:17:00.285>it's <00:17:00.460>a <00:17:00.635>success.

311
00:17:04.315 --> 00:17:06.415
<00:17:04.315>In <00:17:04.455>that <00:17:04.595>case, <00:17:04.735>we're <00:17:04.875>given <00:17:05.015>a <00:17:05.155>user <00:17:05.295>object <00:17:05.435>to <00:17:05.575>work <00:17:05.715>with.

312
00:17:08.075 --> 00:17:10.895
<00:17:08.075>And <00:17:08.215>what <00:17:08.355>we'll <00:17:08.495>do <00:17:08.635>with <00:17:08.775>that <00:17:08.915>is <00:17:09.055>we're <00:17:09.194>gonna <00:17:09.335>update <00:17:09.475>the

313
00:17:11.615 --> 00:17:13.775
<00:17:11.615>username, <00:17:11.815>but <00:17:12.015>at <00:17:12.214>the <00:17:12.415>moment <00:17:12.615>we <00:17:12.815>don't <00:17:13.015>have

314
00:17:13.775 --> 00:17:14.935
<00:17:13.775>access <00:17:14.036>to <00:17:14.297>the <00:17:14.558>username <00:17:14.819>here.

315
00:17:15.435 --> 00:17:16.935
<00:17:15.435>So <00:17:15.603>that's <00:17:15.772>the <00:17:15.941>next <00:17:16.109>thing <00:17:16.278>for <00:17:16.447>us <00:17:16.616>to <00:17:16.784>do.

316
00:17:17.835 --> 00:17:19.695
<00:17:17.835>Uh, <00:17:18.115>remember, <00:17:18.395>because <00:17:18.675>we <00:17:18.954>want <00:17:19.235>this

317
00:17:20.255 --> 00:17:23.695
<00:17:20.255>updating <00:17:20.395>the <00:17:20.535>value <00:17:20.675>from <00:17:20.815>the <00:17:20.955>parent, <00:17:21.095>we <00:17:21.235>have <00:17:21.375>to <00:17:21.515>define <00:17:21.655>it

318
00:17:23.695 --> 00:17:24.895
<00:17:23.694>to <00:17:24.054>be <00:17:24.415>a <00:17:24.775>binding,

319
00:17:27.425 --> 00:17:31.445
<00:17:27.425>Uh, <00:17:27.704>Username <00:17:27.984>and <00:17:28.264>it's <00:17:28.544>a <00:17:28.825>string.

320
00:17:36.365 --> 00:17:41.195
<00:17:36.365>So <00:17:36.565>now <00:17:36.765>we <00:17:36.965>can <00:17:37.165>say <00:17:37.365>username <00:17:37.565>is <00:17:37.765>updated

321
00:17:41.295 --> 00:17:42.955
<00:17:41.295>to <00:17:41.528>be <00:17:41.761>the <00:17:41.995>ID <00:17:42.228>from <00:17:42.461>the <00:17:42.695>user.

322
00:17:48.705 --> 00:17:53.695
<00:17:48.705>Okay? <00:17:49.171>And <00:17:49.638>next <00:17:50.105>thing

323
00:17:53.695 --> 00:17:55.415
<00:17:53.695>we <00:17:53.850>need <00:17:54.006>to <00:17:54.161>do <00:17:54.317>is <00:17:54.472>we <00:17:54.628>can <00:17:54.783>now <00:17:54.939>get <00:17:55.095>rid

324
00:17:55.415 --> 00:17:56.615
<00:17:55.415>of <00:17:55.775>this <00:17:56.135>placeholder <00:17:56.495>view,

325
00:17:56.755 --> 00:18:00.775
<00:17:56.755>and <00:17:56.955>instead <00:17:57.155>we <00:17:57.355>can <00:17:57.555>pull <00:17:57.755>our <00:17:57.955>login <00:17:58.155>view.

326
00:18:01.475 --> 00:18:02.975
<00:18:01.475>Uh, <00:18:01.745>we've <00:18:02.014>gotta <00:18:02.284>provide <00:18:02.554>the <00:18:02.824>username

327
00:18:02.975 --> 00:18:05.215
<00:18:02.975>because <00:18:03.130>it's <00:18:03.286>a <00:18:03.441>binding, <00:18:03.597>we <00:18:03.752>have <00:18:03.908>to <00:18:04.063>add <00:18:04.219>a <00:18:04.375>dollar

328
00:18:05.215 --> 00:18:06.335
<00:18:05.215>before <00:18:05.551>the <00:18:05.887>variable <00:18:06.223>name.

329
00:18:09.015 --> 00:18:13.635
<00:18:09.015>And <00:18:09.155>now <00:18:09.295>hopefully <00:18:09.435>if <00:18:09.575>we <00:18:09.715>build <00:18:09.855>this, <00:18:09.995>it'll <00:18:10.135>take <00:18:10.275>a <00:18:10.415>second.

330
00:18:14.825 --> 00:18:16.865
<00:18:14.825>I <00:18:14.980>will <00:18:15.136>let, <00:18:15.291>we'll, <00:18:15.447>we'll <00:18:15.602>keep <00:18:15.758>going <00:18:15.913>while <00:18:16.069>that's <00:18:16.225>building.

331
00:18:18.205 --> 00:18:21.265
<00:18:18.205>So <00:18:18.332>the <00:18:18.459>next <00:18:18.586>thing <00:18:18.714>we <00:18:18.841>wanna <00:18:18.968>do <00:18:19.095>is <00:18:19.223>create <00:18:19.350>a <00:18:19.477>new <00:18:19.605>view

332
00:18:21.445 --> 00:18:22.985
<00:18:21.445>to, <00:18:21.907>uh, <00:18:22.369>replace <00:18:22.831>this.

333
00:18:25.315 --> 00:18:26.935
<00:18:25.315>So <00:18:25.665>again, <00:18:26.015>a <00:18:26.365>new <00:18:26.715>file,

334
00:18:28.745 --> 00:18:30.435
<00:18:28.745>it's <00:18:28.978>gonna <00:18:29.211>be <00:18:29.445>a <00:18:29.678>Swift <00:18:29.911>UI <00:18:30.145>view,

335
00:18:35.365 --> 00:18:36.945
<00:18:35.365>uh, <00:18:36.065>logged <00:18:36.765>in.

336
00:18:37.045 --> 00:18:39.825
<00:18:37.045>So <00:18:37.220>it's <00:18:37.395>now <00:18:37.570>logged <00:18:37.745>into <00:18:37.920>the <00:18:38.095>backend <00:18:38.270>rail <00:18:38.445>map.

337
00:18:41.635 --> 00:18:45.905
<00:18:41.635>So <00:18:41.810>we'll <00:18:41.985>call <00:18:42.160>this <00:18:42.335>chat <00:18:42.510>rooms, <00:18:42.685>chat <00:18:42.860>rooms <00:18:43.035>view.

338
00:18:54.805 --> 00:18:57.335
<00:18:54.805>Okay? <00:18:55.005>So <00:18:55.205>within <00:18:55.405>here <00:18:55.605>we <00:18:55.805>want <00:18:56.005>the <00:18:56.205>parent

339
00:18:57.335 --> 00:18:58.575
<00:18:57.335>to <00:18:57.614>pass <00:18:57.893>us <00:18:58.172>the <00:18:58.451>username.

340
00:19:00.265 --> 00:19:02.245
<00:19:00.265>Um, <00:19:00.498>if <00:19:00.731>you're <00:19:00.965>not <00:19:01.198>familiar <00:19:01.431>with <00:19:01.665>Swift,

341
00:19:02.665 --> 00:19:05.125
<00:19:02.665>let <00:19:02.805>is <00:19:02.945>actually <00:19:03.085>a <00:19:03.225>constant, <00:19:03.365>which <00:19:03.504>is <00:19:03.645>a <00:19:03.784>little <00:19:03.925>bit <00:19:04.065>confusing.

342
00:19:06.735 --> 00:19:08.515
<00:19:06.735>And <00:19:07.014>we <00:19:07.294>also <00:19:07.574>want <00:19:07.854>a <00:19:08.135>list

343
00:19:08.515 --> 00:19:10.555
<00:19:08.515>of <00:19:08.690>the <00:19:08.865>possible <00:19:09.040>chat <00:19:09.215>rooms <00:19:09.390>that <00:19:09.565>someone <00:19:09.740>could <00:19:09.915>join.

344
00:19:11.175 --> 00:19:13.035
<00:19:11.175>So <00:19:11.408>let's <00:19:11.641>just <00:19:11.875>make <00:19:12.108>that <00:19:12.341>a <00:19:12.575>constant.

345
00:19:13.095 --> 00:19:17.315
<00:19:13.095>And <00:19:13.270>so <00:19:13.445>could, <00:19:13.620>it <00:19:13.795>could <00:19:13.970>be <00:19:14.145>Java, <00:19:14.320>could <00:19:14.495>be

346
00:19:18.735 --> 00:19:21.235
<00:19:18.735>Lin, <00:19:19.201>could <00:19:19.668>be <00:19:20.135>Swift,

347
00:19:24.415 --> 00:19:26.195
<00:19:24.415>or <00:19:24.764>it <00:19:25.115>could <00:19:25.465>be <00:19:25.815>JavaScript.

348
00:19:31.745 --> 00:19:35.155
<00:19:31.745>Okay, <00:19:31.900>so <00:19:32.056>now <00:19:32.211>we <00:19:32.367>can <00:19:32.522>start <00:19:32.678>actually <00:19:32.833>defining <00:19:32.989>our <00:19:33.145>views.

349
00:19:36.215 --> 00:19:38.955
<00:19:36.215>So <00:19:36.370>we're <00:19:36.526>gonna <00:19:36.681>use <00:19:36.837>something, <00:19:36.992>a <00:19:37.148>view <00:19:37.303>called <00:19:37.459>a <00:19:37.615>list,

350
00:19:39.455 --> 00:19:40.915
<00:19:39.455>and <00:19:39.717>that <00:19:39.980>adds <00:19:40.243>a <00:19:40.506>certain <00:19:40.769>styling

351
00:19:40.915 --> 00:19:43.075
<00:19:40.915>that <00:19:41.148>you'll <00:19:41.381>see, <00:19:41.615>uh, <00:19:41.848>in <00:19:42.081>a <00:19:42.315>bit.

352
00:19:45.175 --> 00:19:47.115
<00:19:45.175>Uh, <00:19:45.455>'cause <00:19:45.735>we've <00:19:46.014>got <00:19:46.294>this <00:19:46.575>view.

353
00:19:47.255 --> 00:19:49.235
<00:19:47.255>We <00:19:47.430>may <00:19:47.605>as <00:19:47.780>well <00:19:47.955>add <00:19:48.130>a <00:19:48.305>navigation <00:19:48.480>bar <00:19:48.655>title,

354
00:19:55.715 --> 00:19:57.135
<00:19:55.715>and <00:19:55.928>we'll <00:19:56.140>just <00:19:56.354>have <00:19:56.567>a <00:19:56.780>fixed <00:19:56.993>string.

355
00:19:57.195 --> 00:19:58.455
<00:19:57.195>So <00:19:57.762>chat <00:19:58.329>rooms.

356
00:20:01.895 --> 00:20:06.395
<00:20:01.895>And <00:20:02.050>in <00:20:02.206>here, <00:20:02.361>uh, <00:20:02.517>we'll <00:20:02.672>loop <00:20:02.828>over <00:20:02.983>all <00:20:03.139>of <00:20:03.295>those,

357
00:20:07.975 --> 00:20:09.315
<00:20:07.975>uh, <00:20:08.276>rooms <00:20:08.578>that <00:20:08.879>we <00:20:09.181>defined.

358
00:20:12.725 --> 00:20:12.945
And,

359
00:20:18.905 --> 00:20:23.205
<00:20:18.905>and <00:20:19.045>in <00:20:19.185>our <00:20:19.325>code, <00:20:19.465>it's <00:20:19.605>gonna <00:20:19.745>pass <00:20:19.885>it <00:20:20.024>in <00:20:20.165>as, <00:20:20.305>um,

360
00:20:24.365 --> 00:20:25.525
<00:20:24.365>a <00:20:24.713>variable <00:20:25.061>called <00:20:25.409>room.

361
00:20:25.945 --> 00:20:30.365
<00:20:25.945>And <00:20:26.145>so <00:20:26.345>we <00:20:26.544>could <00:20:26.745>just <00:20:26.945>do, <00:20:27.145>uh, <00:20:27.345>uh,

362
00:20:32.115 --> 00:20:36.885
<00:20:32.115>text <00:20:32.290>room, <00:20:32.465>but <00:20:32.640>what <00:20:32.815>I <00:20:32.990>want <00:20:33.165>to <00:20:33.340>do <00:20:33.515>is

363
00:20:37.405 --> 00:20:41.245
<00:20:37.405>I <00:20:37.512>want <00:20:37.620>it <00:20:37.728>to <00:20:37.835>be <00:20:37.943>a <00:20:38.051>link <00:20:38.158>so <00:20:38.266>I <00:20:38.374>can <00:20:38.481>jump <00:20:38.589>to <00:20:38.697>another <00:20:38.805>view.

364
00:20:41.425 --> 00:20:43.645
<00:20:41.425>So <00:20:41.552>when <00:20:41.679>you <00:20:41.806>click <00:20:41.934>on <00:20:42.061>a <00:20:42.188>room, <00:20:42.315>you <00:20:42.443>jump <00:20:42.570>to <00:20:42.697>the <00:20:42.825>view

365
00:20:43.645 --> 00:20:44.925
<00:20:43.645>that's <00:20:43.875>specific <00:20:44.105>to <00:20:44.336>that <00:20:44.566>chat <00:20:44.797>room.

366
00:20:45.305 --> 00:20:47.340
<00:20:45.305>So <00:20:45.538>for <00:20:45.771>that <00:20:46.005>we <00:20:46.238>use <00:20:46.471>navigation <00:20:46.705>link.

367
00:20:51.815 --> 00:20:55.235
<00:20:51.815>Uh, <00:20:52.165>and <00:20:52.515>that <00:20:52.865>the <00:20:53.215>destination,

368
00:20:56.735 --> 00:20:57.885
<00:20:56.735>again, <00:20:57.080>as <00:20:57.425>a <00:20:57.770>placeholder,

369
00:20:58.195 --> 00:20:59.765
<00:20:58.195>there's <00:20:58.475>something <00:20:58.754>called <00:20:59.034>an <00:20:59.314>empty <00:20:59.595>view.

370
00:21:00.905 --> 00:21:01.965
<00:21:00.905>So <00:21:01.063>we'll <00:21:01.223>put <00:21:01.382>that <00:21:01.541>in <00:21:01.699>for <00:21:01.859>now.

371
00:21:01.965 --> 00:21:03.085
<00:21:01.965>So <00:21:02.109>it'll <00:21:02.253>be <00:21:02.397>build <00:21:02.541>and <00:21:02.685>run <00:21:02.829>at <00:21:02.973>least.

372
00:21:05.505 --> 00:21:07.845
<00:21:05.505>And <00:21:05.785>then <00:21:06.065>we'll <00:21:06.345>still <00:21:06.625>display <00:21:06.905>the,

373
00:21:08.185 --> 00:21:09.485
<00:21:08.185>the <00:21:08.379>room <00:21:08.574>for <00:21:08.770>all, <00:21:08.965>all <00:21:09.159>of <00:21:09.355>that.

374
00:21:10.435 --> 00:21:13.845
<00:21:10.435>Okay? <00:21:10.635>So <00:21:10.835>that's <00:21:11.034>this <00:21:11.235>view <00:21:11.435>created <00:21:11.635>for <00:21:11.835>now.

375
00:21:14.065 --> 00:21:16.885
<00:21:14.065>So <00:21:14.220>if <00:21:14.376>we <00:21:14.531>go <00:21:14.687>back <00:21:14.842>to <00:21:14.998>our <00:21:15.153>top <00:21:15.309>level <00:21:15.465>view,

376
00:21:17.745 --> 00:21:20.285
<00:21:17.745>we <00:21:17.919>can <00:21:18.094>again <00:21:18.270>get <00:21:18.445>rid <00:21:18.620>of <00:21:18.794>our <00:21:18.969>text <00:21:19.145>view

377
00:21:20.385 --> 00:21:24.805
<00:21:20.385>and <00:21:20.665>replace <00:21:20.945>it <00:21:21.225>with <00:21:21.504>chatroom's <00:21:21.785>view.

378
00:21:25.745 --> 00:21:27.485
<00:21:25.745>It <00:21:25.978>tells <00:21:26.211>us <00:21:26.445>the <00:21:26.678>parameters <00:21:26.911>it <00:21:27.145>expects

379
00:21:27.505 --> 00:21:29.325
<00:21:27.505>and <00:21:27.855>it <00:21:28.205>expects <00:21:28.555>the <00:21:28.905>username.

380
00:21:31.675 --> 00:21:33.025
<00:21:31.675>Yeah, <00:21:32.890>let

381
00:21:33.485 --> 00:21:34.485
<00:21:33.485>Put <00:21:33.784>that <00:21:34.084>to <00:21:34.385>build.

382
00:21:34.875 --> 00:21:37.965
<00:21:34.875>Okay. <00:21:35.030>So <00:21:35.186>the <00:21:35.341>final <00:21:35.497>view <00:21:35.652>we <00:21:35.808>need <00:21:35.963>is <00:21:36.119>the <00:21:36.275>one

383
00:21:37.965 --> 00:21:39.965
<00:21:37.965>that's <00:21:38.120>opened <00:21:38.276>when <00:21:38.431>you <00:21:38.587>actually <00:21:38.742>click <00:21:38.898>on <00:21:39.053>a <00:21:39.209>chat <00:21:39.365>room.

384
00:21:41.585 --> 00:21:45.635
<00:21:41.585>So <00:21:41.818>It's <00:21:42.051>a <00:21:42.285>Swift <00:21:42.518>UI <00:21:42.751>view, <00:21:42.985>uh,

385
00:21:46.015 --> 00:21:48.795
<00:21:46.015>and <00:21:46.295>we'll <00:21:46.575>call <00:21:46.855>it <00:21:47.135>chat <00:21:47.415>view.

386
00:21:50.065 --> 00:21:51.075
<00:21:50.065>Oops, <00:21:50.974>is

387
00:21:58.025 --> 00:21:58.585
<00:21:58.025>this <00:21:58.277>open <00:21:58.529>yet?

388
00:21:58.585 --> 00:21:59.585
<00:21:58.585>No, <00:21:58.885>that's <00:21:59.185>still <00:21:59.485>opening.

389
00:22:02.585 --> 00:22:06.965
<00:22:02.585>Okay. <00:22:02.818>And <00:22:03.051>if <00:22:03.285>you <00:22:03.518>look <00:22:03.751>at <00:22:03.985>this,

390
00:22:07.475 --> 00:22:08.485
<00:22:07.475>this <00:22:07.777>is <00:22:08.081>actually <00:22:08.384>starting

391
00:22:08.545 --> 00:22:11.005
<00:22:08.545>to <00:22:08.720>look <00:22:08.895>a <00:22:09.070>bit <00:22:09.245>like <00:22:09.420>a, <00:22:09.595>a <00:22:09.770>working <00:22:09.945>app.

392
00:22:11.145 --> 00:22:14.365
<00:22:11.145>We <00:22:11.300>can <00:22:11.456>go <00:22:11.611>backwards <00:22:11.767>and <00:22:11.922>forwards <00:22:12.078>between <00:22:12.233>the <00:22:12.389>empty <00:22:12.545>view.

393
00:22:17.445 --> 00:22:19.295
<00:22:17.445>Okay? <00:22:17.678>So <00:22:17.911>in <00:22:18.145>the <00:22:18.378>chat <00:22:18.611>view, <00:22:18.845>um,

394
00:22:20.585 --> 00:22:24.975
<00:22:20.585>we're <00:22:20.740>gonna <00:22:20.896>be <00:22:21.051>passed <00:22:21.207>in <00:22:21.362>a <00:22:21.518>couple <00:22:21.673>of, <00:22:21.829>uh, <00:22:21.985>constants.

395
00:22:25.395 --> 00:22:29.425
<00:22:25.395>So <00:22:25.535>we're <00:22:25.675>gonna <00:22:25.815>be <00:22:25.955>passed <00:22:26.095>in. <00:22:26.235>The <00:22:26.375>username <00:22:26.514>is <00:22:26.655>a <00:22:26.795>string.

396
00:22:30.275 --> 00:22:34.775
<00:22:30.275>We're <00:22:30.402>gonna <00:22:30.529>be <00:22:30.656>passed <00:22:30.784>in <00:22:30.911>the <00:22:31.038>name <00:22:31.165>of <00:22:31.293>the, <00:22:31.420>uh, <00:22:31.547>chat <00:22:31.675>room,

397
00:22:35.425 --> 00:22:36.615
<00:22:35.425>which <00:22:35.692>again <00:22:35.960>is <00:22:36.228>a <00:22:36.496>string.

398
00:22:38.315 --> 00:22:41.495
<00:22:38.315>And <00:22:38.490>finally, <00:22:38.665>we're <00:22:38.840>going <00:22:39.015>to <00:22:39.190>want <00:22:39.365>a <00:22:39.540>state <00:22:39.715>variable

399
00:22:41.995 --> 00:22:44.215
<00:22:41.995>to <00:22:42.195>store <00:22:42.395>the <00:22:42.594>new <00:22:42.794>message <00:22:42.995>that <00:22:43.195>someone's <00:22:43.395>typing.

400
00:22:48.475 --> 00:22:50.575
<00:22:48.475>And <00:22:48.675>we'll <00:22:48.875>initialize <00:22:49.074>that <00:22:49.274>to <00:22:49.475>the <00:22:49.675>empty <00:22:49.875>string.

401
00:22:52.555 --> 00:22:54.855
<00:22:52.555>Now, <00:22:52.788>the <00:22:53.021>fun <00:22:53.255>bits, <00:22:53.488>the <00:22:53.721>chat <00:22:53.955>messages,

402
00:22:55.175 --> 00:22:57.135
<00:22:55.175>remember <00:22:55.375>we're <00:22:55.575>actually <00:22:55.774>gonna <00:22:55.975>be <00:22:56.175>fetching <00:22:56.375>those <00:22:56.575>from

403
00:22:57.195 --> 00:22:58.335
<00:22:57.195>our <00:22:57.708>realm <00:22:58.221>database.

404
00:22:58.995 --> 00:23:02.335
<00:22:58.995>So <00:22:59.150>we're <00:22:59.306>gonna <00:22:59.461>need <00:22:59.617>to <00:22:59.772>import <00:22:59.928>the <00:23:00.083>realm, <00:23:00.239>swift <00:23:00.395>SDK,

405
00:23:03.555 --> 00:23:06.775
<00:23:03.555>and <00:23:03.835>use <00:23:04.115>something <00:23:04.395>called <00:23:04.675>observed <00:23:04.955>results.

406
00:23:07.235 --> 00:23:09.935
<00:23:07.235>So <00:23:07.409>this <00:23:07.584>is <00:23:07.760>actually <00:23:07.935>going <00:23:08.110>to <00:23:08.284>give <00:23:08.459>us <00:23:08.635>data

407
00:23:10.045 --> 00:23:11.815
<00:23:10.045>that <00:23:10.325>has <00:23:10.605>been <00:23:10.885>fetched <00:23:11.165>from <00:23:11.445>realm,

408
00:23:12.275 --> 00:23:13.615
<00:23:12.275>and <00:23:12.447>we <00:23:12.619>need <00:23:12.791>to <00:23:12.964>tell <00:23:13.136>it <00:23:13.308>what <00:23:13.481>kind

409
00:23:13.615 --> 00:23:14.855
<00:23:13.615>of <00:23:13.801>objects <00:23:13.987>are <00:23:14.173>gonna <00:23:14.359>be <00:23:14.545>in <00:23:14.731>there.

410
00:23:14.955 --> 00:23:16.415
<00:23:14.955>So <00:23:15.217>they're <00:23:15.480>gonna <00:23:15.743>be <00:23:16.006>chat <00:23:16.269>messages.

411
00:23:18.515 --> 00:23:22.095
<00:23:18.515>And <00:23:18.715>so <00:23:18.915>we <00:23:19.115>declare <00:23:19.315>a <00:23:19.515>variable, <00:23:19.715>uh, <00:23:19.915>messages.

412
00:23:24.355 --> 00:23:25.975
<00:23:24.355>We <00:23:24.635>can <00:23:24.915>also <00:23:25.195>sort <00:23:25.475>them, <00:23:25.755>uh,

413
00:23:25.975 --> 00:23:27.775
<00:23:25.975>because <00:23:26.254>they're <00:23:26.534>chat <00:23:26.814>messages, <00:23:27.094>we'd <00:23:27.375>like

414
00:23:27.775 --> 00:23:29.295
<00:23:27.775>to <00:23:27.970>see <00:23:28.165>the <00:23:28.361>most <00:23:28.556>recent <00:23:28.752>at <00:23:28.947>the <00:23:29.143>bottom.

415
00:23:29.755 --> 00:23:32.335
<00:23:29.755>So <00:23:29.955>we <00:23:30.155>add <00:23:30.355>something <00:23:30.555>called <00:23:30.755>a <00:23:30.955>sort <00:23:31.155>descriptor,

416
00:23:33.025 --> 00:23:34.175
<00:23:33.025>Which <00:23:33.232>We'll <00:23:33.439>do <00:23:33.646>that <00:23:33.853>for <00:23:34.060>us.

417
00:23:35.635 --> 00:23:35.855
Uh,

418
00:23:41.575 --> 00:23:45.645
<00:23:41.575>and <00:23:41.691>we <00:23:41.808>just <00:23:41.925>need <00:23:42.041>to <00:23:42.158>tell <00:23:42.275>it <00:23:42.391>the, <00:23:42.508>uh, <00:23:42.625>what <00:23:42.741>attribute <00:23:42.858>to <00:23:42.975>use.

419
00:23:46.025 --> 00:23:48.405
<00:23:46.025>And <00:23:46.200>so <00:23:46.375>it <00:23:46.550>was <00:23:46.725>the <00:23:46.900>one <00:23:47.075>we'd <00:23:47.250>call <00:23:47.425>timestamp.

420
00:23:48.915 --> 00:23:50.405
<00:23:48.915>Have <00:23:49.183>to <00:23:49.451>be <00:23:49.719>careful <00:23:49.987>typing <00:23:50.255>it

421
00:23:50.405 --> 00:23:53.965
<00:23:50.405>because <00:23:50.605>the <00:23:50.805>compiler <00:23:51.004>won't <00:23:51.205>find, <00:23:51.405>uh, <00:23:51.605>a <00:23:51.805>mistype.

422
00:23:54.225 --> 00:23:56.325
<00:23:54.225>You'll <00:23:54.399>first, <00:23:54.574>the <00:23:54.750>first <00:23:54.925>you'll <00:23:55.100>know <00:23:55.274>is <00:23:55.449>when <00:23:55.625>your

423
00:23:56.345 --> 00:23:57.445
<00:23:56.345>app <00:23:56.592>crashes <00:23:56.840>when <00:23:57.087>it <00:23:57.335>runs.

424
00:23:59.785 --> 00:24:03.895
<00:23:59.785>So <00:23:59.940>Once <00:24:00.096>more <00:24:00.251>we're <00:24:00.407>going <00:24:00.562>to <00:24:00.718>use <00:24:00.873>a <00:24:01.029>VS. <00:24:01.185>Stack.

425
00:24:07.205 --> 00:24:11.335
<00:24:07.205>Uh, <00:24:07.360>we'll <00:24:07.516>put <00:24:07.671>a <00:24:07.827>bit <00:24:07.982>of <00:24:08.138>spacing <00:24:08.293>around <00:24:08.449>it <00:24:08.605>so

426
00:24:11.335 --> 00:24:13.695
<00:24:11.335>that <00:24:11.475>it <00:24:11.615>doesn't <00:24:11.755>run <00:24:11.895>right <00:24:12.035>to <00:24:12.175>the <00:24:12.315>edges <00:24:12.455>of <00:24:12.595>our <00:24:12.735>screen.

427
00:24:14.635 --> 00:24:16.095
<00:24:14.635>And <00:24:14.854>again, <00:24:15.073>we'll <00:24:15.292>give <00:24:15.511>it <00:24:15.730>a <00:24:15.949>title.

428
00:24:19.755 --> 00:24:21.095
<00:24:19.755>So <00:24:20.157>navigating <00:24:20.559>bar <00:24:20.961>title.

429
00:24:23.915 --> 00:24:25.055
<00:24:23.915>And <00:24:24.171>here <00:24:24.428>we'll <00:24:24.684>use <00:24:24.941>string

430
00:24:25.055 --> 00:24:27.455
<00:24:25.055>and <00:24:25.195>interpolation <00:24:25.335>to <00:24:25.475>actually <00:24:25.615>use <00:24:25.755>the <00:24:25.895>name <00:24:26.035>of <00:24:26.175>the <00:24:26.315>chat <00:24:26.455>room,

431
00:24:28.455 --> 00:24:29.655
<00:24:28.455>followed <00:24:28.725>by <00:24:28.995>the <00:24:29.264>word <00:24:29.534>messages.

432
00:24:33.055 --> 00:24:35.505
<00:24:33.055>Okay, <00:24:33.210>so <00:24:33.366>in <00:24:33.521>the <00:24:33.677>vack <00:24:33.832>we're <00:24:33.988>gonna <00:24:34.143>have <00:24:34.299>two <00:24:34.455>things.

433
00:24:35.555 --> 00:24:38.025
<00:24:35.555>We're <00:24:35.730>gonna <00:24:35.905>have <00:24:36.080>our <00:24:36.255>list <00:24:36.430>of <00:24:36.605>existing <00:24:36.780>existing <00:24:36.955>messages,

434
00:24:38.125 --> 00:24:39.345
<00:24:38.125>and <00:24:38.308>then <00:24:38.491>a <00:24:38.674>box <00:24:38.857>at <00:24:39.040>the <00:24:39.223>bottom

435
00:24:39.435 --> 00:24:41.225
<00:24:39.435>where <00:24:39.635>you <00:24:39.835>can <00:24:40.034>type <00:24:40.235>in <00:24:40.435>a <00:24:40.635>new <00:24:40.835>message.

436
00:24:41.725 --> 00:24:43.105
<00:24:41.725>So <00:24:41.902>for <00:24:42.079>the <00:24:42.257>top <00:24:42.434>part, <00:24:42.612>we're <00:24:42.789>gonna <00:24:42.967>use

437
00:24:43.105 --> 00:24:44.225
<00:24:43.105>something <00:24:43.357>called <00:24:43.609>a <00:24:43.860>scroll <00:24:44.112>view.

438
00:24:45.005 --> 00:24:46.945
<00:24:45.005>So <00:24:45.205>because <00:24:45.405>there <00:24:45.605>could <00:24:45.805>be <00:24:46.005>lots <00:24:46.205>of <00:24:46.405>messages,

439
00:24:47.065 --> 00:24:50.145
<00:24:47.065>a <00:24:47.181>scroll <00:24:47.298>view <00:24:47.415>lets <00:24:47.531>you <00:24:47.648>use <00:24:47.765>your <00:24:47.881>thumb <00:24:47.998>to <00:24:48.115>navigate <00:24:48.231>up <00:24:48.348>or <00:24:48.465>down

440
00:24:50.145 --> 00:24:51.385
<00:24:50.145>or <00:24:50.331>swipe <00:24:50.517>up <00:24:50.703>or <00:24:50.889>down <00:24:51.075>through <00:24:51.261>them.

441
00:24:52.645 --> 00:24:55.545
<00:24:52.645>And <00:24:52.785>then <00:24:52.925>within <00:24:53.065>there, <00:24:53.205>we're <00:24:53.345>just <00:24:53.485>going <00:24:53.625>to <00:24:53.764>iterate <00:24:53.905>over <00:24:54.045>all

442
00:24:55.545 --> 00:24:56.225
<00:24:55.545>of <00:24:55.851>the <00:24:56.157>messages

443
00:25:04.785 --> 00:25:09.515
<00:25:04.785>and <00:25:04.985>we <00:25:05.185>can <00:25:05.385>just, <00:25:05.585>uh, <00:25:05.785>take <00:25:05.985>the <00:25:06.185>message,

444
00:25:10.625 --> 00:25:12.195
<00:25:10.625>text <00:25:11.091>and <00:25:11.558>display <00:25:12.025>it.

445
00:25:13.085 --> 00:25:14.875
<00:25:13.085>We're <00:25:13.285>gonna <00:25:13.485>make <00:25:13.685>it <00:25:13.885>a <00:25:14.085>bit <00:25:14.285>more <00:25:14.485>sophisticated

446
00:25:14.975 --> 00:25:16.475
<00:25:14.975>by <00:25:15.312>using <00:25:15.649>a <00:25:15.987>H <00:25:16.324>stack

447
00:25:16.745 --> 00:25:20.315
<00:25:16.745>because <00:25:16.885>I <00:25:17.024>want <00:25:17.165>messages <00:25:17.304>from <00:25:17.445>myself <00:25:17.584>to <00:25:17.725>appear <00:25:17.864>on <00:25:18.004>the <00:25:18.145>right

448
00:25:20.655 --> 00:25:23.435
<00:25:20.655>and <00:25:20.810>messages <00:25:20.966>from <00:25:21.121>other <00:25:21.277>people <00:25:21.432>to <00:25:21.588>appear <00:25:21.743>on <00:25:21.899>the <00:25:22.055>left.

449
00:25:25.135 --> 00:25:27.555
<00:25:25.135>So <00:25:25.310>The <00:25:25.485>way <00:25:25.660>we <00:25:25.835>do <00:25:26.010>that <00:25:26.185>is <00:25:26.360>we <00:25:26.535>check

450
00:25:28.375 --> 00:25:30.035
<00:25:28.375>the, <00:25:28.655>the <00:25:28.935>author <00:25:29.215>of <00:25:29.495>the <00:25:29.775>message.

451
00:25:33.585 --> 00:25:35.525
<00:25:33.585>If <00:25:33.818>that's <00:25:34.051>the <00:25:34.285>same <00:25:34.518>as <00:25:34.751>the <00:25:34.985>username,

452
00:25:37.915 --> 00:25:39.885
<00:25:37.915>then <00:25:38.148>we're <00:25:38.381>going <00:25:38.615>to <00:25:38.848>add <00:25:39.081>a <00:25:39.315>spacer

453
00:25:41.265 --> 00:25:43.925
<00:25:41.265>to <00:25:41.465>push <00:25:41.665>our <00:25:41.865>message <00:25:42.065>over <00:25:42.265>to <00:25:42.465>the <00:25:42.665>right.

454
00:25:45.065 --> 00:25:49.765
<00:25:45.065>And <00:25:45.345>similarly <00:25:45.625>if, <00:25:45.905>uh, <00:25:46.185>sorry, <00:25:46.465>uh,

455
00:25:49.865 --> 00:25:52.885
<00:25:49.865>if <00:25:50.005>it's <00:25:50.145>not <00:25:50.285>our <00:25:50.425>own <00:25:50.565>message, <00:25:50.705>then <00:25:50.845>we'll <00:25:50.985>put <00:25:51.125>the <00:25:51.265>spacer

456
00:25:52.885 --> 00:25:56.685
<00:25:52.885>after <00:25:53.025>the <00:25:53.165>message <00:25:53.305>so <00:25:53.445>it'll <00:25:53.585>push <00:25:53.725>our <00:25:53.865>text <00:25:54.004>to <00:25:54.145>the <00:25:54.285>left.

457
00:25:58.405 --> 00:26:00.825
<00:25:58.405>That's <00:25:58.560>good. <00:25:58.716>And <00:25:58.871>again, <00:25:59.027>we'll <00:25:59.182>put <00:25:59.338>a <00:25:59.493>bit <00:25:59.649>of, <00:25:59.805>um,

458
00:26:01.205 --> 00:26:02.265
<00:26:01.205>uh, <00:26:01.523>padding <00:26:01.841>around <00:26:02.159>that.

459
00:26:02.505 --> 00:26:03.545
<00:26:02.505>'cause <00:26:02.661>we <00:26:02.817>don't <00:26:02.973>want <00:26:03.129>all <00:26:03.285>the <00:26:03.441>messages

460
00:26:03.635 --> 00:26:04.945
<00:26:03.635>right <00:26:03.870>on <00:26:04.106>top <00:26:04.342>of <00:26:04.578>each <00:26:04.813>other.

461
00:26:08.335 --> 00:26:11.475
<00:26:08.335>So <00:26:08.475>after <00:26:08.615>the <00:26:08.755>scroll <00:26:08.895>view, <00:26:09.035>uh, <00:26:09.175>we're <00:26:09.315>gonna <00:26:09.455>put <00:26:09.595>a <00:26:09.735>spacer.

462
00:26:11.595 --> 00:26:14.315
<00:26:11.595>'cause <00:26:11.722>we <00:26:11.849>wanna <00:26:11.976>push <00:26:12.104>our <00:26:12.231>text <00:26:12.358>input <00:26:12.485>box <00:26:12.613>right <00:26:12.740>to <00:26:12.867>the <00:26:12.995>bottom.

463
00:26:16.955 --> 00:26:20.215
<00:26:16.955>And <00:26:17.082>then <00:26:17.209>our <00:26:17.336>input <00:26:17.464>box <00:26:17.591>again <00:26:17.718>is <00:26:17.845>gonna <00:26:17.973>be <00:26:18.100>a <00:26:18.227>horizontal <00:26:18.355>stack.

464
00:26:22.515 --> 00:26:24.815
<00:26:22.515>Uh, <00:26:22.642>the <00:26:22.769>first <00:26:22.896>part <00:26:23.024>of <00:26:23.151>that <00:26:23.278>is <00:26:23.405>gonna <00:26:23.533>be <00:26:23.660>a <00:26:23.787>text <00:26:23.915>field.

465
00:26:24.995 --> 00:26:27.295
<00:26:24.995>So <00:26:25.195>a <00:26:25.395>text <00:26:25.594>field <00:26:25.794>is <00:26:25.995>a <00:26:26.195>built-in <00:26:26.395>view

466
00:26:27.645 --> 00:26:29.935
<00:26:27.645>that <00:26:27.800>lets <00:26:27.956>you <00:26:28.111>add <00:26:28.267>a <00:26:28.422>UI <00:26:28.578>element <00:26:28.733>for <00:26:28.889>the <00:26:29.045>user

467
00:26:29.955 --> 00:26:32.495
<00:26:29.955>to <00:26:30.188>actually <00:26:30.421>type <00:26:30.655>in, <00:26:30.888>um, <00:26:31.121>some <00:26:31.355>text.

468
00:26:33.555 --> 00:26:35.255
<00:26:33.555>So <00:26:33.730>the <00:26:33.905>label, <00:26:34.080>we're <00:26:34.255>gonna <00:26:34.430>give <00:26:34.605>it <00:26:34.780>his <00:26:34.955>message,

469
00:26:35.915 --> 00:26:38.015
<00:26:35.915>and <00:26:36.148>when <00:26:36.381>they <00:26:36.615>type <00:26:36.848>in <00:26:37.081>their <00:26:37.315>text,

470
00:26:38.865 --> 00:26:41.575
<00:26:38.865>we're <00:26:39.040>gonna <00:26:39.215>have <00:26:39.390>it <00:26:39.565>update <00:26:39.740>our <00:26:39.915>new <00:26:40.090>message <00:26:40.265>variable.

471
00:26:44.425 --> 00:26:48.005
<00:26:44.425>The <00:26:44.580>second <00:26:44.736>item <00:26:44.891>we're <00:26:45.047>gonna <00:26:45.202>have <00:26:45.358>is, <00:26:45.513>uh, <00:26:45.669>a <00:26:45.825>button.

472
00:26:50.825 --> 00:26:55.405
<00:26:50.825>And <00:26:51.025>that <00:26:51.225>button <00:26:51.425>is, <00:26:51.625>Uh, <00:26:51.825>no, <00:26:52.025>it's <00:26:52.225>action.

473
00:26:56.825 --> 00:27:00.005
<00:26:56.825>It <00:26:56.952>is <00:26:57.079>going <00:26:57.206>to <00:26:57.334>run <00:26:57.461>a <00:26:57.588>function <00:26:57.715>that <00:26:57.843>we're <00:26:57.970>gonna <00:26:58.097>write, <00:26:58.225>call,

474
00:27:00.115 --> 00:27:03.245
<00:27:00.115>send, <00:27:01.515>and

475
00:27:04.495 --> 00:27:06.305
<00:27:04.495>what <00:27:04.695>they're <00:27:04.895>gonna <00:27:05.094>display, <00:27:05.294>what <00:27:05.495>they're <00:27:05.695>gonna <00:27:05.895>see,

476
00:27:06.765 --> 00:27:09.225
<00:27:06.765>in <00:27:06.940>other <00:27:07.115>words, <00:27:07.290>what <00:27:07.465>they're <00:27:07.640>gonna <00:27:07.815>press, <00:27:07.990>uh, <00:27:08.165>to,

477
00:27:09.645 --> 00:27:12.025
<00:27:09.645>to <00:27:09.845>execute <00:27:10.045>the <00:27:10.245>button <00:27:10.445>is, <00:27:10.645>uh, <00:27:10.845>an <00:27:11.045>image.

478
00:27:13.125 --> 00:27:15.345
<00:27:13.125>And <00:27:13.280>we're <00:27:13.436>just <00:27:13.591>gonna <00:27:13.747>use <00:27:13.902>one <00:27:14.058>of <00:27:14.213>the <00:27:14.369>built <00:27:14.525>in,

479
00:27:15.925 --> 00:27:17.265
<00:27:15.925>uh, <00:27:16.528>system <00:27:17.131>images.

480
00:27:18.005 --> 00:27:21.265
<00:27:18.005>So <00:27:18.145>again, <00:27:18.285>I <00:27:18.425>need <00:27:18.565>to <00:27:18.705>be <00:27:18.845>careful <00:27:18.985>'cause <00:27:19.125>it's <00:27:19.265>a <00:27:19.405>string.

481
00:27:21.325 --> 00:27:25.025
<00:27:21.325>So <00:27:21.480>the <00:27:21.636>compiler <00:27:21.791>is <00:27:21.947>not <00:27:22.102>gonna <00:27:22.258>notice <00:27:22.413>if <00:27:22.569>I've <00:27:22.725>mistyped.

482
00:27:27.225 --> 00:27:30.635
<00:27:27.225>Okay? <00:27:27.352>And <00:27:27.479>the <00:27:27.606>other <00:27:27.734>thing <00:27:27.861>we'll <00:27:27.988>do <00:27:28.115>is <00:27:28.243>we'll <00:27:28.370>add <00:27:28.497>a <00:27:28.625>bit

483
00:27:30.635 --> 00:27:33.235
<00:27:30.635>of <00:27:30.810>space <00:27:30.985>around <00:27:31.160>the <00:27:31.335>text <00:27:31.510>bot, <00:27:31.685>the <00:27:31.860>text <00:27:32.035>field.

484
00:27:35.335 --> 00:27:36.915
<00:27:35.335>Uh, <00:27:35.568>so <00:27:35.801>let's <00:27:36.035>make <00:27:36.268>it <00:27:36.501>eight <00:27:36.735>points.

485
00:27:37.205 --> 00:27:38.515
<00:27:37.205>We'll <00:27:37.440>give <00:27:37.676>it <00:27:37.912>a <00:27:38.148>yellow <00:27:38.384>background

486
00:27:45.355 --> 00:27:46.575
<00:27:45.355>and <00:27:45.574>we'll <00:27:45.794>give <00:27:46.013>it <00:27:46.233>a <00:27:46.453>shape.

487
00:27:46.835 --> 00:27:50.775
<00:27:46.835>So <00:27:47.010>we <00:27:47.185>use <00:27:47.360>a <00:27:47.535>modifier <00:27:47.710>modifier <00:27:47.885>called <00:27:48.060>clip <00:27:48.235>shape,

488
00:27:51.475 --> 00:27:54.215
<00:27:51.475>and <00:27:51.675>we <00:27:51.875>will <00:27:52.074>make <00:27:52.274>it <00:27:52.475>a <00:27:52.675>capsule <00:27:52.875>rule.

489
00:27:54.795 --> 00:27:58.295
<00:27:54.795>So <00:27:54.950>that <00:27:55.106>gives <00:27:55.261>us <00:27:55.417>a <00:27:55.572>nice, <00:27:55.728>uh, <00:27:55.883>rounded <00:27:56.039>rectangle <00:27:56.195>effect.

490
00:28:01.605 --> 00:28:06.305
<00:28:01.605>So <00:28:01.732>all <00:28:01.859>that <00:28:01.986>remains <00:28:02.114>in <00:28:02.241>this <00:28:02.368>view <00:28:02.495>is <00:28:02.623>we <00:28:02.750>now <00:28:02.877>need <00:28:03.005>to,

491
00:28:06.885 --> 00:28:08.665
<00:28:06.885>uh, <00:28:07.235>do <00:28:07.585>our <00:28:07.935>send <00:28:08.285>function.

492
00:28:09.805 --> 00:28:12.025
<00:28:09.805>And <00:28:10.038>so <00:28:10.271>what <00:28:10.505>does <00:28:10.738>sending <00:28:10.971>actually <00:28:11.205>mean?

493
00:28:12.695 --> 00:28:14.705
<00:28:12.695>What <00:28:12.850>it <00:28:13.006>means <00:28:13.161>is <00:28:13.317>we <00:28:13.472>create <00:28:13.628>a <00:28:13.783>new <00:28:13.939>chat <00:28:14.095>message

494
00:28:14.925 --> 00:28:16.985
<00:28:14.925>and <00:28:15.125>then <00:28:15.325>we <00:28:15.524>add <00:28:15.725>it <00:28:15.925>to <00:28:16.125>our <00:28:16.325>realm.

495
00:28:17.805 --> 00:28:20.505
<00:28:17.805>So <00:28:18.038>let's <00:28:18.271>create <00:28:18.505>a <00:28:18.738>new <00:28:18.971>chat <00:28:19.205>message

496
00:28:27.185 --> 00:28:30.605
<00:28:27.185>and <00:28:27.465>set <00:28:27.745>things <00:28:28.024>up <00:28:28.304>so, <00:28:28.585>uh,

497
00:28:37.895 --> 00:28:38.745
<00:28:37.895>it's <00:28:38.277>not <00:28:38.659>complete.

498
00:28:38.745 --> 00:28:41.825
<00:28:38.745>Completing <00:28:38.900>for <00:28:39.056>some <00:28:39.211>reason <00:28:39.367>starts <00:28:39.522>as <00:28:39.678>set <00:28:39.833>to <00:28:39.989>our <00:28:40.145>username.

499
00:28:43.945 --> 00:28:46.725
<00:28:43.945>And <00:28:44.145>then, <00:28:44.345>ah, <00:28:44.544>I <00:28:44.745>don't <00:28:44.945>need <00:28:45.145>to <00:28:45.345>let,

500
00:28:48.905 --> 00:28:50.085
<00:28:48.905>that's <00:28:49.117>why <00:28:49.329>I <00:28:49.542>didn't <00:28:49.754>like <00:28:49.967>it.

501
00:28:53.185 --> 00:28:56.885
<00:28:53.185>Uh, <00:28:53.385>the <00:28:53.585>text, <00:28:53.784>is <00:28:53.985>that <00:28:54.185>a <00:28:54.385>new <00:28:54.585>message?

502
00:29:00.145 --> 00:29:02.645
<00:29:00.145>And <00:29:00.345>the <00:29:00.545>what <00:29:00.745>are <00:29:00.945>we <00:29:01.145>missing <00:29:01.345>the <00:29:01.545>room?

503
00:29:08.465 --> 00:29:11.205
<00:29:08.465>So, <00:29:08.639>so <00:29:08.814>now <00:29:08.990>remember <00:29:09.165>we've <00:29:09.340>got <00:29:09.514>our <00:29:09.689>live <00:29:09.865>query,

504
00:29:11.335 --> 00:29:12.925
<00:29:11.335>which <00:29:11.801>we <00:29:12.268>called <00:29:12.735>messages.

505
00:29:13.345 --> 00:29:17.645
<00:29:13.345>So <00:29:13.472>all <00:29:13.599>we've <00:29:13.726>gotta <00:29:13.854>do <00:29:13.981>is <00:29:14.108>append <00:29:14.235>our <00:29:14.363>new <00:29:14.490>object <00:29:14.617>onto <00:29:14.745>messages

506
00:29:17.665 --> 00:29:19.365
<00:29:17.665>and <00:29:17.865>it <00:29:18.065>will <00:29:18.264>be <00:29:18.465>stored <00:29:18.665>in <00:29:18.865>the <00:29:19.065>database.

507
00:29:31.455 --> 00:29:33.915
<00:29:31.455>And <00:29:31.582>the <00:29:31.709>very <00:29:31.836>final <00:29:31.964>thing <00:29:32.091>we'll <00:29:32.218>do <00:29:32.345>is <00:29:32.473>we'll <00:29:32.600>just <00:29:32.727>clear <00:29:32.855>out

508
00:29:33.975 --> 00:29:37.315
<00:29:33.975>our <00:29:34.130>new <00:29:34.286>message <00:29:34.441>string <00:29:34.597>so <00:29:34.752>that <00:29:34.908>it's <00:29:35.063>a <00:29:35.219>visual <00:29:35.375>prompt,

509
00:29:37.415 --> 00:29:39.875
<00:29:37.415>the <00:29:37.570>user <00:29:37.726>that <00:29:37.881>they <00:29:38.037>can <00:29:38.192>now <00:29:38.348>send <00:29:38.503>in <00:29:38.659>another <00:29:38.815>message.

510
00:29:41.335 --> 00:29:42.675
<00:29:41.335>Uh, <00:29:41.636>oh <00:29:41.938>yeah, <00:29:42.239>let's <00:29:42.541>just,

511
00:29:50.965 --> 00:29:54.095
<00:29:50.965>okay, <00:29:51.139>so <00:29:51.314>let's <00:29:51.490>back <00:29:51.665>up <00:29:51.840>to <00:29:52.014>our <00:29:52.189>chatroom's <00:29:52.365>view.

512
00:29:54.915 --> 00:29:56.495
<00:29:54.915>And <00:29:55.148>remember <00:29:55.381>we <00:29:55.615>had <00:29:55.848>that <00:29:56.081>empty <00:29:56.315>view.

513
00:29:56.845 --> 00:29:58.175
<00:29:56.845>Well, <00:29:57.016>we <00:29:57.187>can <00:29:57.358>get <00:29:57.529>rid <00:29:57.700>of <00:29:57.870>that <00:29:58.042>now

514
00:29:59.595 --> 00:30:03.295
<00:29:59.595>and <00:29:59.875>let's <00:30:00.155>have <00:30:00.435>a <00:30:00.715>chat <00:30:00.995>mess.

515
00:30:03.355 --> 00:30:06.135
<00:30:03.355>Uh, <00:30:03.635>no, <00:30:03.915>a <00:30:04.195>chat <00:30:04.475>chat <00:30:04.755>view.

516
00:30:10.205 --> 00:30:12.845
<00:30:10.205>Hmm. <00:30:10.379>Why <00:30:10.554>is <00:30:10.730>it <00:30:10.905>not <00:30:11.080>giving <00:30:11.254>me <00:30:11.429>that <00:30:11.605>option?

517
00:30:17.465 --> 00:30:21.205
<00:30:17.465>Uh, <00:30:17.814>so <00:30:18.165>we <00:30:18.514>call <00:30:18.865>this,

518
00:30:23.055 --> 00:30:24.075
<00:30:23.055>so <00:30:23.361>it's <00:30:23.667>chat <00:30:23.973>view.

519
00:30:36.125 --> 00:30:38.035
<00:30:36.125>Lemme <00:30:36.475>try, <00:30:36.825>try <00:30:37.175>building <00:30:37.525>it.

520
00:30:46.075 --> 00:30:48.495
<00:30:46.075>That's <00:30:46.275>better. <00:30:46.475>It's <00:30:46.675>just, <00:30:46.875>it <00:30:47.075>needed <00:30:47.275>to <00:30:47.475>rebuild.

521
00:30:48.915 --> 00:30:52.295
<00:30:48.915>Uh, <00:30:49.090>so <00:30:49.264>the <00:30:49.440>username, <00:30:49.615>we <00:30:49.790>just <00:30:49.965>passing <00:30:50.139>the <00:30:50.315>username

522
00:30:52.795 --> 00:30:55.095
<00:30:52.795>and <00:30:53.075>the <00:30:53.355>name <00:30:53.635>of <00:30:53.915>the <00:30:54.195>room.

523
00:30:57.925 --> 00:31:01.725
<00:30:57.925>Uh, <00:30:58.100>the <00:30:58.274>other <00:30:58.450>thing <00:30:58.625>we <00:30:58.800>need <00:30:58.975>to <00:30:59.149>do <00:30:59.325>is

524
00:31:02.505 --> 00:31:03.635
<00:31:02.505>what <00:31:02.759>isn't <00:31:03.013>it <00:31:03.267>like <00:31:03.522>now?

525
00:31:07.545 --> 00:31:11.675
<00:31:07.545>Uh, <00:31:07.745>we're <00:31:07.945>just <00:31:08.145>missing <00:31:08.345>the <00:31:08.545>closing <00:31:08.745>parenthesis. <00:31:08.945>Okay?

526
00:31:12.215 --> 00:31:15.475
<00:31:12.215>Uh, <00:31:12.448>we <00:31:12.681>also <00:31:12.915>need <00:31:13.148>to <00:31:13.381>tell <00:31:13.615>it

527
00:31:15.595 --> 00:31:17.595
<00:31:15.595>what <00:31:15.828>partition <00:31:16.061>we <00:31:16.295>we're <00:31:16.528>going <00:31:16.761>to <00:31:16.995>use.

528
00:31:17.895 --> 00:31:20.435
<00:31:17.895>So <00:31:18.070>we <00:31:18.245>do <00:31:18.420>that <00:31:18.595>by <00:31:18.770>injecting <00:31:18.945>an <00:31:19.120>environment <00:31:19.295>variable

529
00:31:22.015 --> 00:31:23.155
<00:31:22.015>and <00:31:22.357>we <00:31:22.699>inject <00:31:23.041>it.

530
00:31:23.255 --> 00:31:26.315
<00:31:23.255>So <00:31:23.488>the <00:31:23.721>key <00:31:23.955>is <00:31:24.188>our <00:31:24.421>realm <00:31:24.655>configuration.

531
00:31:30.285 --> 00:31:32.635
<00:31:30.285>Again, <00:31:30.485>it's <00:31:30.685>struggling <00:31:30.885>to <00:31:31.085>keep <00:31:31.285>the <00:31:31.485>build <00:31:31.685>is

532
00:31:32.635 --> 00:31:33.835
<00:31:32.635>struggling <00:31:32.995>to <00:31:33.355>keep <00:31:33.715>up.

533
00:31:34.575 --> 00:31:35.875
<00:31:34.575>Uh, <00:31:34.721>I'm <00:31:34.867>going <00:31:35.013>to <00:31:35.160>keep <00:31:35.306>up, <00:31:35.452>uh, <00:31:35.598>realm <00:31:35.745>configuration

534
00:31:35.975 --> 00:31:40.195
<00:31:35.975>and <00:31:36.130>the <00:31:36.286>value <00:31:36.441>is <00:31:36.597>going <00:31:36.752>to <00:31:36.908>be <00:31:37.063>our <00:31:37.219>realm <00:31:37.375>application.

535
00:31:41.215 --> 00:31:45.715
<00:31:41.215>So <00:31:41.495>app <00:31:41.774>dots, <00:31:42.054>current <00:31:42.334>user, <00:31:42.615>uh,

536
00:31:45.895 --> 00:31:47.115
<00:31:45.895>create <00:31:46.444>a <00:31:46.993>configuration.

537
00:31:48.655 --> 00:31:51.275
<00:31:48.655>And <00:31:48.810>remember <00:31:48.966>that <00:31:49.121>we're <00:31:49.277>using <00:31:49.432>the <00:31:49.588>room <00:31:49.743>for <00:31:49.899>the <00:31:50.055>partitioning.

538
00:31:51.295 --> 00:31:53.795
<00:31:51.295>So <00:31:51.575>we <00:31:51.855>just <00:31:52.135>provide <00:31:52.415>the <00:31:52.695>room.

539
00:31:59.515 --> 00:32:04.265
<00:31:59.515>Uh, <00:31:59.715>what <00:31:59.915>are <00:32:00.115>we, <00:32:00.315>are <00:32:00.515>we <00:32:00.715>missing <00:32:00.915>another?

540
00:32:08.625 --> 00:32:09.555
<00:32:08.625>Doesn't <00:32:09.043>it <00:32:09.462>like,

541
00:32:14.805 --> 00:32:19.315
<00:32:14.805>so <00:32:14.980>we've <00:32:15.155>got <00:32:15.330>a <00:32:15.505>configuration, <00:32:15.680>we've <00:32:15.855>got <00:32:16.030>our <00:32:16.205>environment,

542
00:32:21.215 --> 00:32:23.315
<00:32:21.215>ah, <00:32:21.564>that <00:32:21.915>shouldn't <00:32:22.264>be <00:32:22.615>there

543
00:32:24.565 --> 00:32:27.055
<00:32:24.565>because <00:32:24.915>we, <00:32:25.265>it's <00:32:25.615>a, <00:32:25.965>um,

544
00:32:35.675 --> 00:32:39.245
<00:32:35.675>okay, <00:32:36.024>and <00:32:36.375>all <00:32:36.725>being, <00:32:37.075>well,

545
00:32:40.545 --> 00:32:44.945
<00:32:40.545>if <00:32:40.745>we <00:32:40.945>run <00:32:41.145>that <00:32:41.345>now <00:32:41.545>it's <00:32:41.745>building <00:32:41.945>again.

546
00:32:45.165 --> 00:32:47.725
<00:32:45.165>So <00:32:45.445>let's, <00:32:45.725>I'm <00:32:46.004>gonna <00:32:46.284>be <00:32:46.565>optimistic

547
00:32:47.725 --> 00:32:50.765
<00:32:47.725>and <00:32:47.865>bring <00:32:48.004>over <00:32:48.145>the, <00:32:48.284>uh, <00:32:48.425>the <00:32:48.564>other <00:32:48.705>version <00:32:48.844>of <00:32:48.985>this <00:32:49.125>app.

548
00:33:03.425 --> 00:33:07.995
<00:33:03.425>Yeah, <00:33:03.580>the, <00:33:03.736>uh, <00:33:03.891>the <00:33:04.047>streaming <00:33:04.202>software <00:33:04.358>is <00:33:04.513>chewing <00:33:04.669>up <00:33:04.825>most

549
00:33:08.015 --> 00:33:10.275
<00:33:08.015>of <00:33:08.365>my <00:33:08.715>CPU <00:33:09.065>it <00:33:09.415>seems.

550
00:33:10.345 --> 00:33:12.235
<00:33:10.345>Okay. <00:33:10.625>So <00:33:10.905>we've <00:33:11.185>now, <00:33:11.465>now <00:33:11.745>there,

551
00:33:12.695 --> 00:33:14.075
<00:33:12.695>and <00:33:12.902>we <00:33:13.109>can <00:33:13.316>open <00:33:13.523>our <00:33:13.730>chat <00:33:13.937>room,

552
00:33:14.075 --> 00:33:18.155
<00:33:14.075>we <00:33:14.275>can <00:33:14.475>see <00:33:14.675>our <00:33:14.875>existing <00:33:15.075>message <00:33:15.275>and <00:33:15.475>say,

553
00:33:25.535 --> 00:33:25.825
Okay.

554
00:33:25.885 --> 00:33:28.225
<00:33:25.885>And <00:33:26.040>you <00:33:26.196>can <00:33:26.351>see <00:33:26.507>the, <00:33:26.662>the <00:33:26.818>app <00:33:26.973>is <00:33:27.129>now <00:33:27.285>working.

555
00:33:28.965 --> 00:33:30.265
<00:33:28.965>Uh, <00:33:29.355>if <00:33:29.745>we <00:33:30.135>go

556
00:33:30.265 --> 00:33:34.785
<00:33:30.265>and <00:33:30.405>look <00:33:30.545>at <00:33:30.685>Atlas, <00:33:30.825>so <00:33:30.965>remember <00:33:31.105>this <00:33:31.245>is <00:33:31.385>the <00:33:31.525>cloud <00:33:31.665>database.

557
00:33:35.985 --> 00:33:37.215
<00:33:35.985>We'll <00:33:36.353>now <00:33:36.723>see <00:33:37.091>all

558
00:33:37.215 --> 00:33:40.455
<00:33:37.215>of <00:33:37.355>those <00:33:37.495>chat <00:33:37.635>messages <00:33:37.774>in <00:33:37.915>there <00:33:38.054>with <00:33:38.195>a <00:33:38.334>bit <00:33:38.475>of <00:33:38.615>luck.

559
00:33:40.875 --> 00:33:43.835
<00:33:40.875>Let <00:33:41.341>me <00:33:41.808>refresh. <00:33:42.275>Okay?

560
00:33:44.175 --> 00:33:47.625
<00:33:44.175>Uh, <00:33:44.315>I'm <00:33:44.455>gonna, <00:33:44.595>so <00:33:44.735>I'm, <00:33:44.875>I'm <00:33:45.014>gonna <00:33:45.155>clone <00:33:45.294>one <00:33:45.435>of <00:33:45.575>these

561
00:33:48.565 --> 00:33:49.905
<00:33:48.565>and <00:33:48.766>let <00:33:48.967>me <00:33:49.168>zoom <00:33:49.369>in <00:33:49.570>a <00:33:49.771>bit.

562
00:33:51.525 --> 00:33:53.785
<00:33:51.525>So <00:33:51.652>I'm <00:33:51.779>gonna <00:33:51.906>change <00:33:52.034>the <00:33:52.161>author <00:33:52.288>that <00:33:52.415>it <00:33:52.543>actually <00:33:52.670>came <00:33:52.797>from <00:33:52.925>me

563
00:33:58.525 --> 00:34:00.615
<00:33:58.525>and <00:33:59.225>say, <00:33:59.925>so.

564
00:34:00.635 --> 00:34:04.415
<00:34:00.635>And <00:34:00.775>then <00:34:00.915>we're <00:34:01.055>gonna <00:34:01.195>store <00:34:01.335>this <00:34:01.475>new <00:34:01.615>document <00:34:01.754>in <00:34:01.895>a <00:34:02.035>database

565
00:34:06.095 --> 00:34:07.875
<00:34:06.095>and <00:34:06.561>that <00:34:07.028>should <00:34:07.495>synchronize

566
00:34:07.875 --> 00:34:09.595
<00:34:07.875>with <00:34:08.225>the <00:34:08.574>embedded <00:34:08.925>realm <00:34:09.275>database.

567
00:34:09.695 --> 00:34:10.795
<00:34:09.695>And <00:34:09.893>we <00:34:10.091>can <00:34:10.289>see <00:34:10.487>it's <00:34:10.685>there.

568
00:34:11.535 --> 00:34:14.115
<00:34:11.534>Uh, <00:34:11.674>it <00:34:11.815>would've <00:34:11.955>been <00:34:12.094>nice <00:34:12.234>if <00:34:12.375>it <00:34:12.514>appeared <00:34:12.654>at <00:34:12.795>the <00:34:12.935>bottom,

569
00:34:14.175 --> 00:34:17.555
<00:34:14.175>but <00:34:14.375>remember, <00:34:14.575>we're <00:34:14.775>sorting <00:34:14.975>based <00:34:15.175>on <00:34:15.375>the <00:34:15.575>timestamp.

570
00:34:17.815 --> 00:34:18.835
<00:34:17.815>So <00:34:18.044>if <00:34:18.274>we <00:34:18.503>go <00:34:18.733>ahead

571
00:34:18.975 --> 00:34:20.955
<00:34:18.975>and <00:34:19.255>cheat <00:34:19.534>to <00:34:19.815>make <00:34:20.094>it <00:34:20.375>look

572
00:34:20.955 --> 00:34:24.435
<00:34:20.955>as <00:34:21.094>though <00:34:21.235>it <00:34:21.375>was <00:34:21.514>sent <00:34:21.654>a <00:34:21.795>second <00:34:21.935>later, <00:34:22.074>you <00:34:22.215>should <00:34:22.355>see

573
00:34:24.785 --> 00:34:27.995
<00:34:24.784>that <00:34:24.984>pop <00:34:25.185>down <00:34:25.384>and <00:34:25.585>change, <00:34:25.784>change <00:34:25.984>the <00:34:26.185>ordering.

574
00:34:30.105 --> 00:34:32.995
<00:34:30.105>There's <00:34:30.304>one <00:34:30.505>final <00:34:30.705>thing <00:34:30.905>I <00:34:31.105>wanted <00:34:31.304>to <00:34:31.505>demonstrate

575
00:34:32.995 --> 00:34:34.875
<00:34:32.995>to <00:34:33.170>you <00:34:33.344>is <00:34:33.520>I <00:34:33.694>promise <00:34:33.870>that <00:34:34.045>I'd <00:34:34.219>show <00:34:34.395>you

576
00:34:34.875 --> 00:34:37.715
<00:34:34.875>how <00:34:35.155>you <00:34:35.435>actually <00:34:35.715>create <00:34:35.995>the <00:34:36.275>backend.

577
00:34:37.935 --> 00:34:38.955
<00:34:37.935>So <00:34:38.118>I'll <00:34:38.302>do <00:34:38.485>that <00:34:38.669>very <00:34:38.853>quickly.

578
00:34:39.415 --> 00:34:42.875
<00:34:39.415>Uh, <00:34:39.531>I'm <00:34:39.648>gonna <00:34:39.764>switch <00:34:39.881>to, <00:34:39.998>so <00:34:40.114>this <00:34:40.231>is, <00:34:40.348>you <00:34:40.465>have <00:34:40.581>to <00:34:40.698>create <00:34:40.815>a,

579
00:34:43.415 --> 00:34:46.275
<00:34:43.415>um, <00:34:43.764>an <00:34:44.114>account <00:34:44.465>with <00:34:44.815>cloud.mongodb.com.

580
00:34:47.165 --> 00:34:49.705
<00:34:47.165>And <00:34:47.320>once <00:34:47.476>you're <00:34:47.631>in <00:34:47.787>there, <00:34:47.942>uh, <00:34:48.098>you <00:34:48.253>can <00:34:48.409>create <00:34:48.565>projects.

581
00:34:49.885 --> 00:34:52.345
<00:34:49.885>And <00:34:50.060>so <00:34:50.235>I'm <00:34:50.410>gonna <00:34:50.585>create <00:34:50.760>a <00:34:50.935>new <00:34:51.110>database <00:34:51.285>cluster,

582
00:34:54.225 --> 00:34:56.005
<00:34:54.225>and <00:34:54.424>you <00:34:54.625>get <00:34:54.824>a <00:34:55.025>bunch <00:34:55.225>of <00:34:55.424>options <00:34:55.625>here.

583
00:34:56.505 --> 00:34:58.085
<00:34:56.505>Uh, <00:34:56.705>I'm <00:34:56.905>gonna <00:34:57.105>go <00:34:57.305>for <00:34:57.505>the <00:34:57.705>free <00:34:57.905>one

584
00:34:58.085 --> 00:35:00.045
<00:34:58.085>because <00:34:58.318>I'm <00:34:58.551>a <00:34:58.785>bit <00:34:59.018>of <00:34:59.251>a <00:34:59.485>cheapskate.

585
00:35:00.355 --> 00:35:03.125
<00:35:00.355>I'll <00:35:00.530>choose <00:35:00.705>Island <00:35:00.880>'cause <00:35:01.055>that's <00:35:01.230>the <00:35:01.405>closest <00:35:01.580>to <00:35:01.755>me.

586
00:35:03.315 --> 00:35:05.765
<00:35:03.315>Make <00:35:03.455>sure <00:35:03.595>it's <00:35:03.735>an <00:35:03.875>M <00:35:04.015>zero, <00:35:04.155>which <00:35:04.295>is <00:35:04.435>the <00:35:04.575>free <00:35:04.715>version,

587
00:35:07.255 --> 00:35:09.275
<00:35:07.255>and <00:35:07.488>that's <00:35:07.721>gonna <00:35:07.955>build <00:35:08.188>our <00:35:08.421>database <00:35:08.655>cluster.

588
00:35:09.815 --> 00:35:11.435
<00:35:09.815>Uh, <00:35:10.095>it <00:35:10.375>takes <00:35:10.655>a <00:35:10.935>little <00:35:11.215>while.

589
00:35:11.575 --> 00:35:14.195
<00:35:11.575>So <00:35:11.730>I'm <00:35:11.886>actually <00:35:12.041>gonna <00:35:12.197>go <00:35:12.352>back <00:35:12.508>to <00:35:12.663>my <00:35:12.819>existing <00:35:12.975>project

590
00:35:14.405 --> 00:35:15.915
<00:35:14.405>where <00:35:14.676>I <00:35:14.948>already <00:35:15.220>have <00:35:15.492>a <00:35:15.764>cluster

591
00:35:16.535 --> 00:35:19.435
<00:35:16.535>and <00:35:16.734>I'm <00:35:16.935>gonna <00:35:17.134>create <00:35:17.335>a <00:35:17.535>new <00:35:17.734>realm <00:35:17.935>app.

592
00:35:21.875 --> 00:35:24.255
<00:35:21.875>I'm <00:35:22.030>feeling <00:35:22.186>creative, <00:35:22.341>so <00:35:22.497>I'll <00:35:22.652>call <00:35:22.808>it <00:35:22.963>live <00:35:23.119>Chat <00:35:23.275>two.

593
00:35:25.555 --> 00:35:27.455
<00:35:25.555>Uh, <00:35:25.754>that's <00:35:25.955>the <00:35:26.154>cluster <00:35:26.355>we're <00:35:26.555>connecting <00:35:26.754>it <00:35:26.955>to.

594
00:35:28.195 --> 00:35:29.415
<00:35:28.195>We <00:35:28.561>create <00:35:28.927>the <00:35:29.293>application.

595
00:35:33.815 --> 00:35:37.605
<00:35:33.815>Okay, <00:35:33.942>got <00:35:34.069>it. <00:35:34.196>So <00:35:34.324>all <00:35:34.451>we <00:35:34.578>have <00:35:34.705>to <00:35:34.833>do <00:35:34.960>here <00:35:35.087>is <00:35:35.215>go

596
00:35:37.605 --> 00:35:42.095
<00:35:37.605>to <00:35:37.885>the <00:35:38.165>realm <00:35:38.445>sync, <00:35:38.725>uh, <00:35:39.005>specify

597
00:35:42.245 --> 00:35:45.015
<00:35:42.245>what <00:35:42.400>cluster <00:35:42.556>we <00:35:42.711>want <00:35:42.867>to <00:35:43.022>sync <00:35:43.178>to <00:35:43.333>give <00:35:43.489>the <00:35:43.645>name

598
00:35:45.115 --> 00:35:46.175
<00:35:45.115>of <00:35:45.592>the <00:35:46.069>partition.

599
00:35:46.395 --> 00:35:49.415
<00:35:46.395>So <00:35:46.595>remember, <00:35:46.795>we're <00:35:46.995>using <00:35:47.195>Room, <00:35:47.395>it's <00:35:47.595>a <00:35:47.795>string

600
00:35:50.195 --> 00:35:51.655
<00:35:50.195>and <00:35:50.414>give <00:35:50.633>a <00:35:50.852>name <00:35:51.071>for <00:35:51.290>our <00:35:51.509>database.

601
00:35:51.715 --> 00:35:54.535
<00:35:51.715>So <00:35:51.915>again, <00:35:52.115>I'm <00:35:52.315>being <00:35:52.515>creative <00:35:52.715>with <00:35:52.915>live <00:35:53.115>chat

602
00:35:56.595 --> 00:35:59.785
<00:35:56.595>and <00:35:56.944>review, <00:35:57.294>draft <00:35:57.645>and <00:35:57.995>deploy.

603
00:36:00.605 --> 00:36:02.945
<00:36:00.605>And <00:36:00.780>so <00:36:00.955>that's <00:36:01.130>literally <00:36:01.305>all <00:36:01.480>you <00:36:01.655>have <00:36:01.830>to <00:36:02.005>do

604
00:36:02.965 --> 00:36:04.625
<00:36:02.965>to <00:36:03.315>create <00:36:03.665>your <00:36:04.015>backend <00:36:04.365>app.

605
00:36:06.105 --> 00:36:10.285
<00:36:06.105>And <00:36:06.221>then <00:36:06.338>in <00:36:06.455>our <00:36:06.571>code, <00:36:06.688>all <00:36:06.805>we <00:36:06.921>would <00:36:07.038>do <00:36:07.155>is <00:36:07.271>we <00:36:07.388>would <00:36:07.505>take

606
00:36:10.435 --> 00:36:11.485
<00:36:10.435>that <00:36:10.907>app <00:36:11.380>id,

607
00:36:12.355 --> 00:36:17.285
<00:36:12.355>and <00:36:12.555>if <00:36:12.755>I <00:36:12.955>go <00:36:13.155>back <00:36:13.355>to <00:36:13.555>Xcode, <00:36:13.755>uh,

608
00:36:17.285 --> 00:36:19.205
<00:36:17.285>we <00:36:17.460>would <00:36:17.634>just <00:36:17.810>use <00:36:17.984>that <00:36:18.160>string <00:36:18.335>instead <00:36:18.509>of <00:36:18.685>here.

609
00:36:19.985 --> 00:36:21.485
<00:36:19.985>And <00:36:20.255>so <00:36:20.525>now <00:36:20.795>if <00:36:21.065>I <00:36:21.335>rebuilt

610
00:36:21.485 --> 00:36:23.765
<00:36:21.485>and <00:36:21.640>ran <00:36:21.796>the <00:36:21.951>code, <00:36:22.107>it <00:36:22.262>would <00:36:22.418>now <00:36:22.573>be <00:36:22.729>running <00:36:22.885>against

611
00:36:23.765 --> 00:36:25.205
<00:36:23.765>that <00:36:24.024>rail <00:36:24.283>map <00:36:24.542>I've <00:36:24.801>just <00:36:25.060>created.

612
00:36:28.785 --> 00:36:31.715
<00:36:28.785>Okay, <00:36:28.960>so <00:36:29.134>I'm <00:36:29.310>gonna <00:36:29.484>jump <00:36:29.660>back <00:36:29.835>to <00:36:30.009>the <00:36:30.185>slides

613
00:36:32.255 --> 00:36:35.115
<00:36:32.255>and <00:36:32.488>I'm <00:36:32.721>gonna <00:36:32.955>skip <00:36:33.188>most <00:36:33.421>of <00:36:33.655>it

614
00:36:35.115 --> 00:36:36.595
<00:36:35.115>because <00:36:35.305>we <00:36:35.495>don't <00:36:35.685>have <00:36:35.876>a <00:36:36.066>lot <00:36:36.256>of <00:36:36.446>time.

615
00:36:37.415 --> 00:36:40.605
<00:36:37.415>And <00:36:37.648>I'll <00:36:37.881>just <00:36:38.115>let <00:36:38.348>you <00:36:38.581>know, <00:36:38.815>um,

616
00:36:41.435 --> 00:36:43.125
<00:36:41.435>that <00:36:41.668>we've <00:36:41.901>got <00:36:42.134>a <00:36:42.368>bunch <00:36:42.601>of <00:36:42.835>resources.

617
00:36:43.625 --> 00:36:45.325
<00:36:43.625>Uh, <00:36:43.975>so <00:36:44.325>these, <00:36:44.675>these <00:36:45.025>are,

618
00:36:45.325 --> 00:36:46.445
<00:36:45.325>these <00:36:45.493>are <00:36:45.661>all <00:36:45.829>good <00:36:45.997>things <00:36:46.165>to <00:36:46.333>follow.

619
00:36:46.865 --> 00:36:49.525
<00:36:46.865>The <00:36:46.981>good <00:36:47.098>thing <00:36:47.214>is <00:36:47.331>you <00:36:47.448>don't <00:36:47.564>have <00:36:47.681>to <00:36:47.798>know <00:36:47.915>all <00:36:48.031>of <00:36:48.148>these <00:36:48.265>links

620
00:36:49.525 --> 00:36:50.725
<00:36:49.525>because <00:36:49.705>if <00:36:49.885>you <00:36:50.065>go <00:36:50.245>to <00:36:50.425>the <00:36:50.605>repo

621
00:36:50.725 --> 00:36:53.485
<00:36:50.725>that <00:36:50.900>contains <00:36:51.075>the <00:36:51.250>code <00:36:51.424>from <00:36:51.600>this <00:36:51.775>session, <00:36:51.950>uh, <00:36:52.125>all

622
00:36:53.485 --> 00:36:55.245
<00:36:53.485>of <00:36:53.660>these <00:36:53.835>links <00:36:54.010>are <00:36:54.185>in <00:36:54.360>the <00:36:54.535>Read <00:36:54.710>Me <00:36:54.885>there.

623
00:36:55.625 --> 00:36:59.525
<00:36:55.625>So <00:36:55.752>you <00:36:55.879>just <00:36:56.006>need <00:36:56.134>to <00:36:56.261>take <00:36:56.388>a <00:36:56.515>copy <00:36:56.643>of, <00:36:56.770>um, <00:36:56.897>that <00:36:57.025>there,

624
00:37:00.755 --> 00:37:02.855
<00:37:00.755>and <00:37:00.930>again, <00:37:01.105>you <00:37:01.280>will <00:37:01.455>get <00:37:01.630>a <00:37:01.805>replay <00:37:01.980>of <00:37:02.155>this.

625
00:37:03.845 --> 00:37:05.905
<00:37:03.845>And <00:37:04.044>so <00:37:04.245>if <00:37:04.444>you <00:37:04.645>go <00:37:04.845>to <00:37:05.044>that <00:37:05.245>repo,

626
00:37:06.045 --> 00:37:08.225
<00:37:06.045>you'll <00:37:06.220>see <00:37:06.395>all <00:37:06.570>the <00:37:06.745>code <00:37:06.920>we <00:37:07.095>did <00:37:07.270>today <00:37:07.445>in

627
00:37:08.225 --> 00:37:10.745
<00:37:08.225>that <00:37:08.458>particular <00:37:08.691>branch, <00:37:08.924>the <00:37:09.158>45 <00:37:09.391>mins <00:37:09.625>branch.

628
00:37:11.045 --> 00:37:14.025
<00:37:11.045>But <00:37:11.185>if <00:37:11.325>you <00:37:11.465>go <00:37:11.605>to <00:37:11.745>Main, <00:37:11.885>you'll <00:37:12.025>actually <00:37:12.165>see <00:37:12.305>a <00:37:12.445>slightly

629
00:37:14.545 --> 00:37:17.625
<00:37:14.545>improved <00:37:14.778>version <00:37:15.011>that <00:37:15.245>uses <00:37:15.478>username, <00:37:15.711>password, <00:37:15.945>uh,

630
00:37:17.625 --> 00:37:20.865
<00:37:17.625>authentication <00:37:17.905>rather <00:37:18.185>than <00:37:18.465>the <00:37:18.745>anonymous <00:37:19.025>authentication.

631
00:37:21.325 --> 00:37:22.705
<00:37:21.325>And <00:37:21.635>in <00:37:21.946>the <00:37:22.256>repo, <00:37:22.567>all

632
00:37:22.705 --> 00:37:24.425
<00:37:22.705>of <00:37:22.880>the <00:37:23.055>preview <00:37:23.230>code <00:37:23.404>is <00:37:23.580>in <00:37:23.755>there <00:37:23.930>as <00:37:24.105>well.

633
00:37:24.725 --> 00:37:26.585
<00:37:24.725>So <00:37:24.958>if <00:37:25.191>you <00:37:25.424>attempting <00:37:25.658>to <00:37:25.891>do <00:37:26.125>this,

634
00:37:26.765 --> 00:37:29.225
<00:37:26.765>I'd <00:37:26.940>suggest <00:37:27.115>taking <00:37:27.290>a <00:37:27.464>look <00:37:27.640>at <00:37:27.815>that <00:37:27.990>repo <00:37:28.165>first.

635
00:37:32.155 --> 00:37:35.005
<00:37:32.155>Okay, <00:37:32.355>so <00:37:32.555>I <00:37:32.755>think <00:37:32.955>we <00:37:33.155>just <00:37:33.355>about <00:37:33.555>did

636
00:37:35.005 --> 00:37:36.525
<00:37:35.005>that <00:37:35.278>in <00:37:35.552>under <00:37:35.825>the <00:37:36.099>45 <00:37:36.373>minutes.

637
00:37:37.875 --> 00:37:42.325
<00:37:37.875>Yeah, <00:37:38.075>you <00:37:38.275>did <00:37:38.475>it <00:37:38.675>in <00:37:38.875>36, <00:37:39.075>37 <00:37:39.275>minutes.

638
00:37:42.505 --> 00:37:45.085
<00:37:42.505>So, <00:37:42.738>uh, <00:37:42.971>well <00:37:43.205>done. <00:37:43.438>Uh, <00:37:43.671>you <00:37:43.905>can

639
00:37:45.105 --> 00:37:46.805
<00:37:45.105>of <00:37:45.385>officially <00:37:45.665>do <00:37:45.945>some <00:37:46.225>speed <00:37:46.505>running,

640
00:37:46.985 --> 00:37:48.085
<00:37:46.985>uh, <00:37:47.232>games <00:37:47.480>also, <00:37:47.727>I <00:37:47.975>guess.

641
00:37:49.385 --> 00:37:52.365
<00:37:49.385>Um, <00:37:49.618>good, <00:37:49.851>good, <00:37:50.085>good <00:37:50.318>development <00:37:50.551>done <00:37:50.785>Quick.

642
00:37:52.655 --> 00:37:54.445
<00:37:52.655>Could <00:37:52.935>be <00:37:53.215>a <00:37:53.495>new <00:37:53.775>Twitch <00:37:54.055>channel.

643
00:37:55.025 --> 00:37:57.805
<00:37:55.025>Um, <00:37:55.225>we <00:37:55.425>could, <00:37:55.625>we <00:37:55.825>have <00:37:56.025>five <00:37:56.225>minutes <00:37:56.425>left,

644
00:37:57.865 --> 00:38:00.445
<00:37:57.865>so <00:37:58.040>I'm <00:37:58.214>gonna <00:37:58.390>jump <00:37:58.564>straight <00:37:58.740>into <00:37:58.915>the <00:37:59.089>audience <00:37:59.265>questions.

645
00:38:00.905 --> 00:38:03.985
<00:38:00.905>Um, <00:38:01.138>first <00:38:01.371>question <00:38:01.605>is <00:38:01.838>a <00:38:02.071>small <00:38:02.305>one,

646
00:38:03.985 --> 00:38:06.265
<00:38:03.985>but <00:38:04.185>important <00:38:04.385>for <00:38:04.585>the <00:38:04.785>speed <00:38:04.985>of <00:38:05.185>course, <00:38:05.385>uh,

647
00:38:06.265 --> 00:38:07.425
<00:38:06.265>people <00:38:06.613>want <00:38:06.961>to <00:38:07.309>know.

648
00:38:07.685 --> 00:38:09.345
<00:38:07.685>GGI <00:38:07.860>wants <00:38:08.035>to <00:38:08.210>know, <00:38:08.384>are <00:38:08.560>you <00:38:08.735>using <00:38:08.910>the <00:38:09.085>M1

649
00:38:09.405 --> 00:38:11.705
<00:38:09.405>or <00:38:09.638>an <00:38:09.871>Intel <00:38:10.105>check <00:38:10.338>chips <00:38:10.571>at <00:38:10.805>Mac?

650
00:38:12.405 --> 00:38:15.475
<00:38:12.405>Uh, <00:38:12.685>this <00:38:12.965>is <00:38:13.245>Intel. <00:38:13.525>Okay, <00:38:13.805>cool.

651
00:38:15.475 --> 00:38:19.075
<00:38:15.475>Sort <00:38:15.602>of, <00:38:15.729>I <00:38:15.856>I, <00:38:15.984>I, <00:38:16.111>I <00:38:16.238>didn't <00:38:16.365>for <00:38:16.493>one <00:38:16.620>thing, <00:38:16.747>MongoDB <00:38:16.875>doesn't,

652
00:38:19.105 --> 00:38:21.435
<00:38:19.105>they <00:38:19.260>wait <00:38:19.416>a <00:38:19.571>little <00:38:19.727>while <00:38:19.882>before <00:38:20.038>jumping <00:38:20.193>on <00:38:20.349>new <00:38:20.505>hardware,

653
00:38:21.735 --> 00:38:25.195
<00:38:21.735>but <00:38:21.862>the <00:38:21.989>M1, <00:38:22.116>uh, <00:38:22.244>it <00:38:22.371>only <00:38:22.498>lets <00:38:22.625>you <00:38:22.753>have <00:38:22.880>one <00:38:23.007>external <00:38:23.135>screen

654
00:38:25.735 --> 00:38:27.675
<00:38:25.735>and <00:38:26.085>sort <00:38:26.435>of, <00:38:26.785>I'm <00:38:27.135>greedy.

655
00:38:27.675 --> 00:38:29.035
<00:38:27.675>I <00:38:27.919>want, <00:38:28.164>I <00:38:28.409>want <00:38:28.654>more <00:38:28.899>screens,

656
00:38:29.825 --> 00:38:31.635
<00:38:29.825>Hold <00:38:30.024>the <00:38:30.225>estate, <00:38:30.424>I <00:38:30.625>want <00:38:30.825>hold <00:38:31.024>the <00:38:31.225>estate.

657
00:38:31.725 --> 00:38:33.155
<00:38:31.725>Understood. <00:38:33.012>Um,

658
00:38:33.815 --> 00:38:37.285
<00:38:33.815>and <00:38:33.970>GGE <00:38:34.126>also <00:38:34.281>wants <00:38:34.437>to <00:38:34.592>know, <00:38:34.748>is <00:38:34.903>MongoDB <00:38:35.059>realm <00:38:35.215>scalable

659
00:38:37.435 --> 00:38:38.725
<00:38:37.435>outside <00:38:37.822>of <00:38:38.209>these <00:38:38.596>demos,

660
00:38:40.735 --> 00:38:43.335
<00:38:40.735>Scalable <00:38:41.015>outside <00:38:41.295>of, <00:38:41.575>Outside <00:38:41.855>of <00:38:42.135>demos?

661
00:38:44.475 --> 00:38:46.255
<00:38:44.475>So <00:38:44.755>is <00:38:45.035>it <00:38:45.315>production <00:38:45.595>ready, <00:38:45.875>basically?

662
00:38:46.515 --> 00:38:48.255
<00:38:46.515>Oh, <00:38:46.865>yeah. <00:38:47.214>Uh, <00:38:47.565>uh, <00:38:47.915>absolutely.

663
00:38:48.355 --> 00:38:53.055
<00:38:48.355>Um, <00:38:48.471>so <00:38:48.588>I, <00:38:48.705>I <00:38:48.821>I'm <00:38:48.938>not <00:38:49.055>quite <00:38:49.171>sure <00:38:49.288>how <00:38:49.405>old <00:38:49.521>MongoDB <00:38:49.638>realm <00:38:49.755>is,

664
00:38:53.055 --> 00:38:55.655
<00:38:53.055>but <00:38:53.230>Atlas, <00:38:53.404>for <00:38:53.580>example, <00:38:53.754>which <00:38:53.930>is <00:38:54.105>the <00:38:54.279>cloud <00:38:54.455>database

665
00:38:55.685 --> 00:38:57.975
<00:38:55.685>that <00:38:55.884>we <00:38:56.085>using <00:38:56.285>that <00:38:56.485>had <00:38:56.685>its <00:38:56.884>fifth, <00:38:57.085>uh,

666
00:38:57.975 --> 00:38:59.495
<00:38:57.975>fifth <00:38:58.317>year <00:38:58.659>anniversary <00:38:59.000>this <00:38:59.343>year.

667
00:38:59.835 --> 00:39:01.015
<00:38:59.835>So <00:39:00.047>it, <00:39:00.259>so <00:39:00.472>it's <00:39:00.684>quite <00:39:00.897>mature

668
00:39:01.015 --> 00:39:02.935
<00:39:01.015>and <00:39:01.248>yes, <00:39:01.481>there's, <00:39:01.714>there's <00:39:01.948>people <00:39:02.181>running, <00:39:02.415>uh,

669
00:39:02.935 --> 00:39:06.855
<00:39:02.935>production <00:39:03.075>loads, <00:39:03.215>um, <00:39:03.355>on <00:39:03.495>the, <00:39:03.634>so, <00:39:03.775>uh, <00:39:03.915>seven <00:39:04.055>11 <00:39:04.195>for <00:39:04.335>example,

670
00:39:07.125 --> 00:39:08.375
<00:39:07.125>that <00:39:07.406>they're, <00:39:07.687>they're <00:39:07.968>using <00:39:08.250>realm

671
00:39:08.375 --> 00:39:10.735
<00:39:08.375>and <00:39:08.550>realm <00:39:08.725>sync <00:39:08.900>for <00:39:09.075>the, <00:39:09.250>uh, <00:39:09.425>point <00:39:09.600>of <00:39:09.775>sale

672
00:39:11.245 --> 00:39:13.095
<00:39:11.245>devices <00:39:11.525>in <00:39:11.805>their, <00:39:12.085>in <00:39:12.365>their <00:39:12.645>stores.

673
00:39:14.555 --> 00:39:16.135
<00:39:14.555>That's <00:39:14.835>pretty <00:39:15.115>important <00:39:15.395>that <00:39:15.674>that <00:39:15.955>works.

674
00:39:16.235 --> 00:39:20.515
<00:39:16.235>So <00:39:16.375>if <00:39:16.515>they <00:39:16.655>trust <00:39:16.795>it, <00:39:16.935>that's <00:39:17.075>a <00:39:17.215>good <00:39:17.355>thing. <00:39:17.495>All <00:39:17.635>right.

675
00:39:20.855 --> 00:39:22.355
<00:39:20.855>Uh, <00:39:21.125>next <00:39:21.395>question <00:39:21.665>is <00:39:21.935>from <00:39:22.205>Martin.

676
00:39:22.935 --> 00:39:26.355
<00:39:22.935>Uh, <00:39:23.075>strange <00:39:23.215>that <00:39:23.355>there <00:39:23.495>is <00:39:23.634>a <00:39:23.775>need <00:39:23.915>for <00:39:24.055>a <00:39:24.195>spacer <00:39:24.335>element

677
00:39:26.735 --> 00:39:28.195
<00:39:26.735>for <00:39:26.954>the <00:39:27.173>row <00:39:27.392>in <00:39:27.611>the <00:39:27.830>message <00:39:28.049>section.

678
00:39:28.855 --> 00:39:32.075
<00:39:28.855>Is <00:39:29.030>there <00:39:29.205>no <00:39:29.380>alignment <00:39:29.555>attribute <00:39:29.730>for <00:39:29.905>the <00:39:30.080>text <00:39:30.255>component

679
00:39:32.655 --> 00:39:34.515
<00:39:32.655>and <00:39:32.855>expand <00:39:33.055>it <00:39:33.255>to <00:39:33.455>the <00:39:33.655>whole <00:39:33.855>vertical <00:39:34.055>size?

680
00:39:35.625 --> 00:39:36.965
<00:39:35.625>Uh, <00:39:36.027>no. <00:39:36.429>Sort <00:39:36.831>of,

681
00:39:37.195 --> 00:39:40.085
<00:39:37.195>there's <00:39:37.395>probably <00:39:37.595>tweaks <00:39:37.795>you <00:39:37.995>can <00:39:38.195>do, <00:39:38.395>but <00:39:38.595>mm-hmm.

682
00:39:40.195 --> 00:39:42.925
<00:39:40.195>Sort <00:39:40.428>of <00:39:40.661>like <00:39:40.895>Swift <00:39:41.128>UI <00:39:41.361>really <00:39:41.595>is

683
00:39:43.095 --> 00:39:44.285
<00:39:43.095>let's <00:39:43.362>do <00:39:43.630>everything <00:39:43.898>with <00:39:44.165>views.

684
00:39:45.025 --> 00:39:47.645
<00:39:45.025>And <00:39:45.141>so <00:39:45.258>if <00:39:45.375>you <00:39:45.491>want <00:39:45.608>a <00:39:45.725>space, <00:39:45.841>you <00:39:45.958>put <00:39:46.075>a <00:39:46.191>view <00:39:46.308>in, <00:39:46.425>um,

685
00:39:47.985 --> 00:39:51.565
<00:39:47.985>if <00:39:48.112>you <00:39:48.239>want <00:39:48.366>an <00:39:48.494>image <00:39:48.621>that's, <00:39:48.748>that's <00:39:48.875>an, <00:39:49.003>uh, <00:39:49.130>a <00:39:49.257>new <00:39:49.385>view.

686
00:39:52.185 --> 00:39:55.205
<00:39:52.185>And <00:39:52.325>so <00:39:52.465>it <00:39:52.605>makes <00:39:52.745>it, <00:39:52.884>so <00:39:53.025>one <00:39:53.165>of <00:39:53.305>the <00:39:53.445>downsides <00:39:53.585>of

687
00:39:55.465 --> 00:39:59.205
<00:39:55.465>to <00:39:55.605>Swift <00:39:55.745>UI <00:39:55.885>is <00:39:56.025>if <00:39:56.165>you <00:39:56.305>want <00:39:56.445>to <00:39:56.585>design <00:39:56.725>your, <00:39:56.865>um,

688
00:40:00.665 --> 00:40:02.445
<00:40:00.665>app <00:40:00.898>to <00:40:01.131>the, <00:40:01.365>to <00:40:01.598>the <00:40:01.831>last <00:40:02.065>pixel

689
00:40:02.905 --> 00:40:05.285
<00:40:02.905>and <00:40:03.080>make <00:40:03.255>it <00:40:03.430>look <00:40:03.605>nothing <00:40:03.780>like <00:40:03.955>an <00:40:04.130>iOS <00:40:04.305>app,

690
00:40:05.545 --> 00:40:07.485
<00:40:05.545>but <00:40:05.895>look <00:40:06.245>something <00:40:06.595>completely <00:40:06.945>proprietary,

691
00:40:07.785 --> 00:40:10.125
<00:40:07.785>you <00:40:07.940>end <00:40:08.096>up <00:40:08.251>writing <00:40:08.407>a <00:40:08.562>lot <00:40:08.718>more <00:40:08.873>code <00:40:09.029>for <00:40:09.185>that.

692
00:40:10.145 --> 00:40:12.645
<00:40:10.145>But <00:40:10.320>if <00:40:10.495>it's <00:40:10.670>doing <00:40:10.845>things <00:40:11.020>like <00:40:11.195>setting <00:40:11.370>the <00:40:11.545>spacing

693
00:40:12.645 --> 00:40:14.325
<00:40:12.645>between <00:40:12.925>things <00:40:13.205>you <00:40:13.485>use <00:40:13.765>dot <00:40:14.045>padding,

694
00:40:14.385 --> 00:40:17.005
<00:40:14.385>if <00:40:14.560>it's <00:40:14.735>setting <00:40:14.910>the <00:40:15.085>color, <00:40:15.260>you <00:40:15.435>do <00:40:15.610>dot <00:40:15.785>background

695
00:40:17.425 --> 00:40:20.405
<00:40:17.425>and <00:40:17.625>so <00:40:17.825>yeah, <00:40:18.025>e <00:40:18.225>everything's <00:40:18.425>done <00:40:18.625>by <00:40:18.825>views.

696
00:40:20.705 --> 00:40:23.965
<00:40:20.705>And <00:40:20.904>in <00:40:21.105>fact, <00:40:21.305>even <00:40:21.505>when, <00:40:21.705>uh, <00:40:21.904>when <00:40:22.105>one

697
00:40:23.965 --> 00:40:26.445
<00:40:23.965>of <00:40:24.092>the <00:40:24.219>views <00:40:24.346>I <00:40:24.474>add <00:40:24.601>dot <00:40:24.728>padding <00:40:24.855>at <00:40:24.983>the <00:40:25.110>end <00:40:25.237>of <00:40:25.365>it,

698
00:40:26.875 --> 00:40:28.445
<00:40:26.875>that <00:40:27.155>actually <00:40:27.435>creates <00:40:27.715>a <00:40:27.995>new <00:40:28.275>view.

699
00:40:28.785 --> 00:40:30.245
<00:40:28.785>So <00:40:29.004>it <00:40:29.223>throws <00:40:29.442>away <00:40:29.661>the <00:40:29.880>original <00:40:30.098>view

700
00:40:30.245 --> 00:40:32.645
<00:40:30.245>and <00:40:30.361>creates <00:40:30.478>a <00:40:30.595>new <00:40:30.711>view <00:40:30.828>with <00:40:30.944>a <00:40:31.061>padding <00:40:31.178>on <00:40:31.295>when <00:40:31.411>I <00:40:31.528>add <00:40:31.645>the

701
00:40:32.645 --> 00:40:34.765
<00:40:32.645>color, <00:40:32.845>the <00:40:33.045>background <00:40:33.245>color, <00:40:33.445>that's <00:40:33.645>a <00:40:33.845>new <00:40:34.045>view.

702
00:40:35.185 --> 00:40:37.845
<00:40:35.185>So <00:40:35.360>it's, <00:40:35.535>so <00:40:35.710>it's <00:40:35.884>literally <00:40:36.060>everything <00:40:36.235>is, <00:40:36.410>um, <00:40:36.585>views

703
00:40:37.865 --> 00:40:41.245
<00:40:37.865>and <00:40:38.040>states, <00:40:38.214>and <00:40:38.390>then <00:40:38.564>you <00:40:38.740>can <00:40:38.915>put <00:40:39.089>the <00:40:39.265>modifiers.

704
00:40:41.245 --> 00:40:44.325
<00:40:41.245>So <00:40:41.384>for <00:40:41.525>example, <00:40:41.665>you <00:40:41.805>as <00:40:41.944>modifiers <00:40:42.085>for <00:40:42.225>text <00:40:42.365>fields <00:40:42.505>to <00:40:42.645>set

705
00:40:44.325 --> 00:40:46.565
<00:40:44.325>what <00:40:44.480>fonts <00:40:44.636>you're <00:40:44.791>going <00:40:44.947>to <00:40:45.102>use <00:40:45.258>and <00:40:45.413>things <00:40:45.569>like <00:40:45.725>that.

706
00:40:46.745 --> 00:40:50.245
<00:40:46.745>So <00:40:46.872>good <00:40:46.999>thing <00:40:47.126>is <00:40:47.254>you <00:40:47.381>don't <00:40:47.508>have <00:40:47.635>to <00:40:47.763>quit, <00:40:47.890>um, <00:40:48.017>keep <00:40:48.145>jumping

707
00:40:50.245 --> 00:40:54.165
<00:40:50.245>between <00:40:50.400>a <00:40:50.556>storyboard <00:40:50.711>or <00:40:50.867>an <00:40:51.022>XML <00:40:51.178>file <00:40:51.333>and <00:40:51.489>your <00:40:51.645>code.

708
00:40:54.425 --> 00:40:57.645
<00:40:54.425>You <00:40:54.552>can <00:40:54.679>just <00:40:54.806>do <00:40:54.934>everything, <00:40:55.061>uh, <00:40:55.188>in, <00:40:55.315>in <00:40:55.443>your <00:40:55.570>code <00:40:55.697>in <00:40:55.825>Swift.

709
00:40:59.035 --> 00:41:00.765
<00:40:59.035>Okay. <00:40:59.734>Thank <00:41:00.435>you.

710
00:41:01.145 --> 00:41:04.765
<00:41:01.145>Uh, <00:41:01.285>we <00:41:01.425>have <00:41:01.565>time <00:41:01.705>for <00:41:01.845>one <00:41:01.985>more <00:41:02.125>question, <00:41:02.265>I <00:41:02.405>think, <00:41:02.545>uh,

711
00:41:04.905 --> 00:41:06.125
<00:41:04.905>and <00:41:05.271>it's <00:41:05.637>from <00:41:06.003>Nicola.

712
00:41:07.185 --> 00:41:09.445
<00:41:07.185>And <00:41:07.340>Nicola <00:41:07.496>says, <00:41:07.651>hi, <00:41:07.807>and <00:41:07.962>thank <00:41:08.118>you <00:41:08.273>for <00:41:08.429>the <00:41:08.585>talk.

713
00:41:10.205 --> 00:41:12.925
<00:41:10.205>I <00:41:10.380>don't <00:41:10.555>have <00:41:10.730>that <00:41:10.904>much <00:41:11.080>experience <00:41:11.255>with <00:41:11.430>IRS <00:41:11.605>programming,

714
00:41:13.225 --> 00:41:15.245
<00:41:13.225>but <00:41:13.458>I'm <00:41:13.691>curious <00:41:13.924>about <00:41:14.158>the <00:41:14.391>following <00:41:14.625>scenario.

715
00:41:15.945 --> 00:41:19.525
<00:41:15.945>By <00:41:16.085>using <00:41:16.225>this <00:41:16.365>sort <00:41:16.505>of <00:41:16.645>Euro <00:41:16.785>UI <00:41:16.925>paradigm <00:41:17.065>with <00:41:17.205>Swift <00:41:17.345>UI

716
00:41:19.525 --> 00:41:22.685
<00:41:19.525>or <00:41:19.680>Jet <00:41:19.836>Jet <00:41:19.991>Pack <00:41:20.147>composure <00:41:20.302>Android, <00:41:20.458>how <00:41:20.613>do <00:41:20.769>we <00:41:20.925>deal

717
00:41:22.835 --> 00:41:25.645
<00:41:22.835>with <00:41:23.010>the <00:41:23.185>situation <00:41:23.360>in <00:41:23.535>which <00:41:23.710>we <00:41:23.885>need <00:41:24.060>to <00:41:24.235>interact

718
00:41:25.645 --> 00:41:28.405
<00:41:25.645>with <00:41:25.878>long <00:41:26.111>running <00:41:26.345>operations <00:41:26.578>like <00:41:26.811>web <00:41:27.045>APIs

719
00:41:28.985 --> 00:41:32.205
<00:41:28.985>or <00:41:29.185>frequent <00:41:29.385>updates <00:41:29.585>of <00:41:29.785>data <00:41:29.985>like <00:41:30.185>geolocation <00:41:30.385>updates,

720
00:41:32.945 --> 00:41:34.045
<00:41:32.945>for <00:41:33.192>example, <00:41:33.440>if <00:41:33.687>we <00:41:33.935>want

721
00:41:34.045 --> 00:41:36.365
<00:41:34.045>to <00:41:34.245>show <00:41:34.445>a <00:41:34.645>progress <00:41:34.845>dialogue <00:41:35.045>while <00:41:35.245>we're <00:41:35.445>waiting

722
00:41:36.945 --> 00:41:38.085
<00:41:36.945>for <00:41:37.287>results <00:41:37.629>of <00:41:37.971>something?

723
00:41:39.435 --> 00:41:41.725
<00:41:39.435>Yeah, <00:41:39.575>so <00:41:39.715>you, <00:41:39.855>so <00:41:39.995>you <00:41:40.134>can <00:41:40.275>run <00:41:40.415>things <00:41:40.555>on <00:41:40.695>the <00:41:40.835>background,

724
00:41:41.985 --> 00:41:43.165
<00:41:41.985>uh, <00:41:42.339>on <00:41:42.693>background <00:41:43.047>threads.

725
00:41:43.665 --> 00:41:45.725
<00:41:43.665>Mm-hmm. <00:41:43.840>Uh, <00:41:44.015>so, <00:41:44.190>so <00:41:44.365>the <00:41:44.540>code <00:41:44.715>I <00:41:44.890>did <00:41:45.065>show

726
00:41:45.745 --> 00:41:46.765
<00:41:45.745>was <00:41:46.051>actually <00:41:46.357>the <00:41:46.663>opposite.

727
00:41:47.025 --> 00:41:51.365
<00:41:47.025>So <00:41:47.165>when <00:41:47.305>we <00:41:47.445>logged <00:41:47.585>in, <00:41:47.725>uh, <00:41:47.865>we <00:41:48.005>provide <00:41:48.145>a <00:41:48.285>callback <00:41:48.425>function

728
00:41:52.265 --> 00:41:54.565
<00:41:52.265>and <00:41:52.545>that <00:41:52.825>callback <00:41:53.105>function <00:41:53.384>is, <00:41:53.665>uh,

729
00:41:54.635 --> 00:41:56.045
<00:41:54.635>invokes <00:41:54.952>on <00:41:55.269>a <00:41:55.586>background <00:41:55.904>thread.

730
00:41:56.465 --> 00:41:59.685
<00:41:56.465>So <00:41:56.581>in <00:41:56.698>that <00:41:56.815>case, <00:41:56.931>I <00:41:57.048>used <00:41:57.165>the <00:41:57.281>dispatch <00:41:57.398>queue <00:41:57.515>to <00:41:57.631>push <00:41:57.748>it <00:41:57.865>back

731
00:41:59.825 --> 00:42:02.525
<00:41:59.825>to <00:42:00.058>the, <00:42:00.291>uh, <00:42:00.524>the <00:42:00.758>main <00:42:00.991>foreground <00:42:01.225>thread.

732
00:42:03.105 --> 00:42:06.125
<00:42:03.105>Uh, <00:42:03.232>but <00:42:03.359>yet <00:42:03.486>if <00:42:03.614>you <00:42:03.741>were <00:42:03.868>doing <00:42:03.995>a <00:42:04.123>database <00:42:04.250>operation <00:42:04.377>that, <00:42:04.505>uh,

733
00:42:06.125 --> 00:42:08.125
<00:42:06.125>you <00:42:06.280>know, <00:42:06.436>for <00:42:06.591>example, <00:42:06.747>if <00:42:06.902>it's <00:42:07.058>doing <00:42:07.213>an <00:42:07.369>initial <00:42:07.525>sync

734
00:42:08.125 --> 00:42:11.565
<00:42:08.125>of <00:42:08.265>a <00:42:08.405>huge <00:42:08.545>data <00:42:08.685>set, <00:42:08.825>uh, <00:42:08.965>then <00:42:09.105>yes, <00:42:09.245>uh, <00:42:09.385>there's <00:42:09.525>a,

735
00:42:11.565 --> 00:42:13.685
<00:42:11.565>there's <00:42:11.740>a <00:42:11.915>function <00:42:12.090>where <00:42:12.265>you <00:42:12.440>can <00:42:12.615>run <00:42:12.790>that <00:42:12.965>asynchronously

736
00:42:14.025 --> 00:42:16.205
<00:42:14.025>and <00:42:14.225>then <00:42:14.425>just <00:42:14.625>use <00:42:14.825>the <00:42:15.025>results <00:42:15.225>when, <00:42:15.425>um,

737
00:42:16.235 --> 00:42:17.405
<00:42:16.235>when, <00:42:16.445>when <00:42:16.656>you <00:42:16.866>get <00:42:17.077>them <00:42:17.288>back.

738
00:42:17.585 --> 00:42:19.765
<00:42:17.585>So, <00:42:17.740>so <00:42:17.896>yeah, <00:42:18.051>you, <00:42:18.207>you <00:42:18.362>do <00:42:18.518>still <00:42:18.673>have <00:42:18.829>the <00:42:18.985>option

739
00:42:19.765 --> 00:42:21.725
<00:42:19.765>of <00:42:19.964>running <00:42:20.165>things <00:42:20.365>in <00:42:20.565>the, <00:42:20.765>in <00:42:20.964>the <00:42:21.165>background.

740
00:42:22.765 --> 00:42:25.455
<00:42:22.765>Okay. <00:42:22.920>Cool. <00:42:23.076>Well, <00:42:23.231>we <00:42:23.387>have <00:42:23.542>time <00:42:23.698>for <00:42:23.853>one <00:42:24.009>more <00:42:24.165>question.

741
00:42:25.845 --> 00:42:28.375
<00:42:25.845>Good. <00:42:26.078>Uh, <00:42:26.311>the <00:42:26.544>question <00:42:26.778>is <00:42:27.011>from <00:42:27.245>Jonas,

742
00:42:28.375 --> 00:42:30.575
<00:42:28.375>and <00:42:28.550>I <00:42:28.725>think <00:42:28.900>Jons <00:42:29.075>is <00:42:29.250>a <00:42:29.425>web <00:42:29.600>developer, <00:42:29.775>uh,

743
00:42:30.725 --> 00:42:32.095
<00:42:30.725>looking <00:42:31.136>into <00:42:31.547>Swift <00:42:31.957>ui.

744
00:42:32.675 --> 00:42:35.655
<00:42:32.675>Uh, <00:42:32.830>he's <00:42:32.986>asking <00:42:33.141>if <00:42:33.297>there's <00:42:33.452>a <00:42:33.608>storybook <00:42:33.763>just <00:42:33.919>alternative <00:42:34.075>are,

745
00:42:35.675 --> 00:42:36.815
<00:42:35.675>do <00:42:35.880>you <00:42:36.085>know <00:42:36.290>what <00:42:36.495>storybook <00:42:36.701>is?

746
00:42:37.675 --> 00:42:41.855
<00:42:37.675>Uh, <00:42:37.850>yes. <00:42:38.025>And <00:42:38.200>the <00:42:38.375>answer <00:42:38.550>is, <00:42:38.725>uh, <00:42:38.900>not <00:42:39.075>really.

747
00:42:42.355 --> 00:42:45.415
<00:42:42.355>Mm-hmm. <00:42:42.495>But <00:42:42.635>the <00:42:42.775>exception <00:42:42.915>to <00:42:43.055>that <00:42:43.195>is, <00:42:43.335>uh, <00:42:43.475>the <00:42:43.615>bit <00:42:43.755>I,

748
00:42:45.475 --> 00:42:49.535
<00:42:45.475>the <00:42:45.650>code <00:42:45.825>I <00:42:46.000>kept, <00:42:46.174>uh, <00:42:46.350>deleting <00:42:46.525>is <00:42:46.700>the <00:42:46.875>code

749
00:42:49.535 --> 00:42:52.455
<00:42:49.535>that <00:42:49.662>gives <00:42:49.789>you <00:42:49.916>a <00:42:50.044>live <00:42:50.171>preview <00:42:50.298>that <00:42:50.425>sits <00:42:50.553>next <00:42:50.680>to <00:42:50.807>your <00:42:50.935>code.

750
00:42:52.915 --> 00:42:55.535
<00:42:52.915>So <00:42:53.022>one <00:42:53.130>way <00:42:53.238>of <00:42:53.345>doing <00:42:53.453>it <00:42:53.561>is <00:42:53.668>you <00:42:53.776>are, <00:42:53.884>you <00:42:53.991>are <00:42:54.099>writing <00:42:54.207>your <00:42:54.315>code

751
00:42:55.955 --> 00:43:00.175
<00:42:55.955>and <00:42:56.130>then <00:42:56.305>you, <00:42:56.480>um, <00:42:56.654>uh, <00:42:56.830>you <00:42:57.005>see <00:42:57.180>the <00:42:57.355>results

752
00:43:00.595 --> 00:43:02.335
<00:43:00.595>as <00:43:00.944>you <00:43:01.294>type <00:43:01.645>appear <00:43:01.995>mm-hmm.

753
00:43:02.335 --> 00:43:05.175
<00:43:02.335>In <00:43:02.475>preview <00:43:02.615>window, <00:43:02.755>but <00:43:02.895>it <00:43:03.035>also <00:43:03.175>works <00:43:03.315>the <00:43:03.455>other <00:43:03.595>way <00:43:03.735>around.

754
00:43:05.475 --> 00:43:07.215
<00:43:05.475>So <00:43:05.650>you <00:43:05.825>can <00:43:06.000>actually <00:43:06.174>go <00:43:06.350>to <00:43:06.525>the <00:43:06.700>preview <00:43:06.875>window

755
00:43:07.315 --> 00:43:09.135
<00:43:07.315>and <00:43:07.548>make <00:43:07.781>changes <00:43:08.015>like <00:43:08.248>add <00:43:08.481>new <00:43:08.715>views.

756
00:43:09.915 --> 00:43:11.495
<00:43:09.915>And <00:43:10.265>then <00:43:10.615>so <00:43:10.965>you'll, <00:43:11.315>so,

757
00:43:11.675 --> 00:43:13.655
<00:43:11.675>so <00:43:11.908>you'll <00:43:12.141>actually <00:43:12.375>do <00:43:12.608>it, <00:43:12.841>um, <00:43:13.075>graphically.

758
00:43:13.915 --> 00:43:16.535
<00:43:13.915>So <00:43:14.090>you'll, <00:43:14.265>you'll <00:43:14.440>drag <00:43:14.615>in <00:43:14.790>a <00:43:14.965>new <00:43:15.140>view, <00:43:15.315>uh,

759
00:43:16.535 --> 00:43:19.335
<00:43:16.535>you'll <00:43:16.690>add <00:43:16.846>a <00:43:17.001>modifier, <00:43:17.157>you'll <00:43:17.312>see <00:43:17.468>the <00:43:17.623>results <00:43:17.779>straight <00:43:17.935>away.

760
00:43:19.755 --> 00:43:23.975
<00:43:19.755>And <00:43:19.895>then <00:43:20.035>also, <00:43:20.175>uh, <00:43:20.315>another <00:43:20.455>part <00:43:20.595>of <00:43:20.735>the <00:43:20.875>screen <00:43:21.015>I, <00:43:21.155>hi,

761
00:43:23.975 --> 00:43:26.855
<00:43:23.975>to <00:43:24.091>save <00:43:24.208>a <00:43:24.325>bit <00:43:24.441>of <00:43:24.558>space <00:43:24.674>is <00:43:24.791>you <00:43:24.908>can <00:43:25.025>click <00:43:25.141>on <00:43:25.258>a <00:43:25.375>view,

762
00:43:26.995 --> 00:43:29.575
<00:43:26.995>and <00:43:27.111>then <00:43:27.228>you <00:43:27.345>have <00:43:27.461>a <00:43:27.578>list <00:43:27.694>of <00:43:27.811>all <00:43:27.928>the <00:43:28.045>attributes <00:43:28.161>you <00:43:28.278>can <00:43:28.395>set.

763
00:43:29.875 --> 00:43:32.375
<00:43:29.875>So <00:43:30.030>for <00:43:30.186>example, <00:43:30.341>you <00:43:30.497>can <00:43:30.652>see, <00:43:30.808>oh, <00:43:30.963>there, <00:43:31.119>there's <00:43:31.275>padding.

764
00:43:32.375 --> 00:43:34.095
<00:43:32.375>So <00:43:32.608>you <00:43:32.841>can <00:43:33.075>do <00:43:33.308>the <00:43:33.541>choose <00:43:33.775>padding

765
00:43:34.235 --> 00:43:35.695
<00:43:34.235>and <00:43:34.454>you <00:43:34.673>can <00:43:34.892>see <00:43:35.111>what <00:43:35.330>values, <00:43:35.549>so,

766
00:43:35.835 --> 00:43:38.455
<00:43:35.835>so <00:43:35.951>you <00:43:36.068>can <00:43:36.185>do <00:43:36.301>it <00:43:36.418>a <00:43:36.535>bit <00:43:36.651>more <00:43:36.768>graphically <00:43:36.885>if <00:43:37.001>you <00:43:37.118>want <00:43:37.235>to.

767
00:43:38.715 --> 00:43:40.815
<00:43:38.715>Mm-hmm. <00:43:38.870>But <00:43:39.026>you <00:43:39.181>don't <00:43:39.337>have <00:43:39.492>anything <00:43:39.648>that <00:43:39.803>goes <00:43:39.959>as <00:43:40.115>far

768
00:43:40.875 --> 00:43:42.535
<00:43:40.875>as <00:43:41.341>the, <00:43:41.808>the <00:43:42.275>storyboard.

769
00:43:42.685 --> 00:43:44.975
<00:43:42.685>Yeah. <00:43:42.860>So <00:43:43.035>you <00:43:43.210>just <00:43:43.384>being <00:43:43.560>a <00:43:43.735>free <00:43:43.910>for <00:43:44.085>all,

770
00:43:45.515 --> 00:43:46.535
<00:43:45.515>um, <00:43:45.821>drag <00:43:46.127>things <00:43:46.433>around.

771
00:43:47.575 --> 00:43:49.745
<00:43:47.575>Yeah, <00:43:47.750>it <00:43:47.924>makes <00:43:48.100>sense <00:43:48.274>because, <00:43:48.450>well, <00:43:48.625>storybook <00:43:48.799>of <00:43:48.975>course,

772
00:43:49.845 --> 00:43:53.345
<00:43:49.845>is <00:43:49.972>for <00:43:50.099>web <00:43:50.226>and <00:43:50.354>web <00:43:50.481>components <00:43:50.608>can <00:43:50.735>be <00:43:50.863>exported <00:43:50.990>to <00:43:51.117>the <00:43:51.245>web,

773
00:43:53.345 --> 00:43:54.745
<00:43:53.345>and <00:43:53.524>this <00:43:53.705>is <00:43:53.884>not <00:43:54.065>for <00:43:54.245>web, <00:43:54.424>so <00:43:54.605>Yeah.

774
00:43:55.125 --> 00:43:57.745
<00:43:55.125>All <00:43:55.252>right. <00:43:55.379>Andrew, <00:43:55.506>thanks <00:43:55.634>a <00:43:55.761>lot <00:43:55.888>for <00:43:56.015>being <00:43:56.143>here <00:43:56.270>with <00:43:56.397>us <00:43:56.525>today

775
00:43:57.805 --> 00:43:58.985
<00:43:57.805>and <00:43:58.159>sharing <00:43:58.513>your <00:43:58.867>knowledge

776
00:43:59.165 --> 00:44:02.705
<00:43:59.165>and, <00:43:59.320>uh, <00:43:59.476>well <00:43:59.631>making <00:43:59.787>it <00:43:59.942>in <00:44:00.098>just <00:44:00.253>such <00:44:00.409>short <00:44:00.565>time.

777
00:44:03.205 --> 00:44:04.745
<00:44:03.205>Uh, <00:44:03.435>it <00:44:03.667>was, <00:44:03.898>it's <00:44:04.129>been <00:44:04.359>a <00:44:04.591>pleasure

778
00:44:05.105 --> 00:44:06.225
<00:44:05.105>watching <00:44:05.306>you <00:44:05.508>present. <00:44:05.709>Thanks <00:44:05.911>a <00:44:06.113>lot.

779
00:44:06.895 --> 00:44:07.185
Okay.