WEBVTT

1
00:00:16.975 --> 00:00:17.325
Hello,

2
00:00:17.795 --> 00:00:21.165
<00:00:17.795>This <00:00:18.028>is <00:00:18.261>about <00:00:18.495>sustainable <00:00:18.728>architectures <00:00:18.961>with <00:00:19.195>Angola

3
00:00:21.745 --> 00:00:25.765
<00:00:21.745>and <00:00:21.872>I <00:00:21.999>will <00:00:22.126>start <00:00:22.254>with <00:00:22.381>a <00:00:22.508>question, <00:00:22.635>namely, <00:00:22.763>what <00:00:22.890>do <00:00:23.017>you <00:00:23.145>think?

4
00:00:26.035 --> 00:00:29.325
<00:00:26.035>What <00:00:26.210>does <00:00:26.385>it <00:00:26.560>take <00:00:26.735>to <00:00:26.910>create <00:00:27.085>a <00:00:27.260>good <00:00:27.435>architecture,

5
00:00:29.965 --> 00:00:31.525
<00:00:29.965>a <00:00:30.665>maintainable <00:00:31.365>architecture

6
00:00:32.025 --> 00:00:35.125
<00:00:32.025>and <00:00:32.199>architecture <00:00:32.375>that <00:00:32.549>can <00:00:32.725>evolve <00:00:32.900>over <00:00:33.074>years <00:00:33.250>or <00:00:33.425>decades?

7
00:00:36.635 --> 00:00:39.325
<00:00:36.635>Well, <00:00:36.915>if <00:00:37.195>you <00:00:37.474>ask <00:00:37.754>me <00:00:38.035>first

8
00:00:39.385 --> 00:00:43.605
<00:00:39.385>and <00:00:39.559>foremost, <00:00:39.735>we <00:00:39.910>need <00:00:40.085>an <00:00:40.260>experience <00:00:40.434>team, <00:00:40.610>a <00:00:40.785>team

9
00:00:43.675 --> 00:00:45.765
<00:00:43.675>with <00:00:43.908>a <00:00:44.141>DS <00:00:44.375>group <00:00:44.608>of <00:00:44.841>team <00:00:45.074>members

10
00:00:46.175 --> 00:00:49.645
<00:00:46.175>where <00:00:46.349>everyone <00:00:46.525>can <00:00:46.699>bring <00:00:46.875>in <00:00:47.050>his <00:00:47.224>or <00:00:47.400>her <00:00:47.574>experiences

11
00:00:50.425 --> 00:00:53.765
<00:00:50.425>and <00:00:50.565>then <00:00:50.705>they <00:00:50.845>need <00:00:50.985>to <00:00:51.125>sit <00:00:51.265>down <00:00:51.404>and <00:00:51.544>talk <00:00:51.684>about <00:00:51.824>this

12
00:00:53.945 --> 00:00:55.925
<00:00:53.945>and <00:00:54.225>find <00:00:54.505>a <00:00:54.785>good <00:00:55.065>common <00:00:55.345>solution.

13
00:00:57.105 --> 00:00:58.725
<00:00:57.105>And <00:00:57.455>of <00:00:57.805>course, <00:00:58.154>besides <00:00:58.504>this,

14
00:00:59.065 --> 00:01:00.885
<00:00:59.065>you <00:00:59.415>can <00:00:59.765>accelerate <00:01:00.114>this <00:01:00.464>process.

15
00:01:01.605 --> 00:01:05.685
<00:01:01.605>I <00:01:01.732>found <00:01:01.859>out <00:01:01.986>you <00:01:02.114>can <00:01:02.241>accelerate <00:01:02.368>it <00:01:02.495>by <00:01:02.623>giving <00:01:02.750>them <00:01:02.877>some <00:01:03.004>coffee

16
00:01:06.465 --> 00:01:08.525
<00:01:06.465>or <00:01:06.745>by <00:01:07.025>feeding <00:01:07.305>them <00:01:07.585>with <00:01:07.865>pizza.

17
00:01:09.795 --> 00:01:13.515
<00:01:09.795>I <00:01:09.995>really <00:01:10.195>made <00:01:10.395>good <00:01:10.595>experiences <00:01:10.795>with <00:01:10.995>pizza <00:01:11.195>cia,

18
00:01:13.885 --> 00:01:17.155
<00:01:13.885>which <00:01:14.040>is <00:01:14.196>the <00:01:14.351>pizza <00:01:14.507>with <00:01:14.662>koan <00:01:14.818>and <00:01:14.973>baking <00:01:15.129>on <00:01:15.285>it.

19
00:01:17.495 --> 00:01:20.395
<00:01:17.495>It <00:01:17.775>really <00:01:18.055>works <00:01:18.335>perfectly, <00:01:18.615>uh, <00:01:18.895>also

20
00:01:20.415 --> 00:01:22.075
<00:01:20.414>for <00:01:21.115>architectural <00:01:21.815>meetings,

21
00:01:22.855 --> 00:01:25.915
<00:01:22.855>but <00:01:23.030>for <00:01:23.205>the <00:01:23.380>time <00:01:23.555>being, <00:01:23.730>let's <00:01:23.905>stick <00:01:24.080>with <00:01:24.255>experiences.

22
00:01:27.015 --> 00:01:30.635
<00:01:27.015>So <00:01:27.131>in <00:01:27.248>the <00:01:27.365>past <00:01:27.481>a <00:01:27.598>lot <00:01:27.715>of <00:01:27.831>people <00:01:27.948>tried <00:01:28.065>to <00:01:28.181>find <00:01:28.298>out <00:01:28.415>how

23
00:01:30.635 --> 00:01:31.995
<00:01:30.635>to <00:01:31.247>share <00:01:31.859>experiences.

24
00:01:32.855 --> 00:01:37.395
<00:01:32.854>And <00:01:33.010>so <00:01:33.166>some <00:01:33.321>people <00:01:33.477>started <00:01:33.632>with <00:01:33.788>writing <00:01:33.943>down <00:01:34.099>best <00:01:34.255>practices,

25
00:01:37.575 --> 00:01:38.955
<00:01:37.575>do <00:01:37.989>this, <00:01:38.403>avoid <00:01:38.817>that.

26
00:01:39.365 --> 00:01:41.755
<00:01:39.365>Other <00:01:39.598>people <00:01:39.831>took <00:01:40.065>him <00:01:40.298>more <00:01:40.531>formal <00:01:40.765>approach.

27
00:01:41.865 --> 00:01:44.755
<00:01:41.865>They <00:01:42.145>wrote <00:01:42.425>down <00:01:42.705>balance, <00:01:42.985>design <00:01:43.265>balance

28
00:01:44.935 --> 00:01:46.315
<00:01:44.935>or <00:01:45.556>architectural <00:01:46.176>balance.

29
00:01:46.775 --> 00:01:49.355
<00:01:46.775>And <00:01:47.008>other <00:01:47.241>people <00:01:47.475>took <00:01:47.708>some <00:01:47.941>best <00:01:48.175>practices,

30
00:01:49.385 --> 00:01:52.835
<00:01:49.384>they <00:01:49.585>took <00:01:49.785>some <00:01:49.984>balance, <00:01:50.184>they <00:01:50.384>added <00:01:50.585>a <00:01:50.785>philosophy.

31
00:01:53.215 --> 00:01:55.675
<00:01:53.215>And <00:01:53.448>what <00:01:53.681>came <00:01:53.915>out <00:01:54.148>was, <00:01:54.381>um, <00:01:54.615>methodology

32
00:01:57.165 --> 00:02:00.665
<00:01:57.164>and <00:01:57.365>domain-driven <00:01:57.565>design <00:01:57.764>is <00:01:57.964>one <00:01:58.164>of <00:01:58.365>those <00:01:58.565>methodologies.

33
00:02:01.335 --> 00:02:05.465
<00:02:01.335>Perhaps <00:02:01.509>it's <00:02:01.684>the <00:02:01.860>only <00:02:02.035>methodology <00:02:02.210>which <00:02:02.384>bridges <00:02:02.559>the <00:02:02.735>gap

34
00:02:05.535 --> 00:02:07.065
<00:02:05.535>between <00:02:06.223>your <00:02:06.911>requirements

35
00:02:07.525 --> 00:02:12.265
<00:02:07.525>and <00:02:07.725>uh, <00:02:07.925>architecture <00:02:08.125>that <00:02:08.325>will <00:02:08.525>fulfill <00:02:08.725>those <00:02:08.925>requirements.

36
00:02:13.365 --> 00:02:16.985
<00:02:13.365>And <00:02:13.505>that's <00:02:13.645>why <00:02:13.785>I <00:02:13.925>will <00:02:14.065>answer <00:02:14.205>one <00:02:14.345>question <00:02:14.485>with <00:02:14.625>this <00:02:14.765>talk.

37
00:02:17.165 --> 00:02:21.345
<00:02:17.165>Namely, <00:02:17.364>how <00:02:17.565>can <00:02:17.765>we <00:02:17.965>create <00:02:18.165>sustainable <00:02:18.364>Angola <00:02:18.565>architectures

38
00:02:21.655 --> 00:02:24.145
<00:02:21.655>with <00:02:21.935>ideas <00:02:22.215>from <00:02:22.495>domain <00:02:22.775>driven <00:02:23.055>design?

39
00:02:25.165 --> 00:02:27.375
<00:02:25.165>Here <00:02:25.364>two <00:02:25.565>words <00:02:25.765>are <00:02:25.965>very <00:02:26.165>important <00:02:26.364>For <00:02:26.565>me,

40
00:02:27.715 --> 00:02:29.495
<00:02:27.715>the <00:02:28.065>first <00:02:28.415>word <00:02:28.765>is <00:02:29.115>sustainable.

41
00:02:30.505 --> 00:02:33.755
<00:02:30.505>This <00:02:30.680>means <00:02:30.855>this <00:02:31.030>is <00:02:31.204>not <00:02:31.380>about <00:02:31.555>creating <00:02:31.730>something <00:02:31.905>quick

42
00:02:33.775 --> 00:02:38.635
<00:02:33.775>and <00:02:33.930>no, <00:02:34.086>it <00:02:34.241>is <00:02:34.397>about <00:02:34.552>creating <00:02:34.708>something <00:02:34.863>that <00:02:35.019>will <00:02:35.175>last

43
00:02:38.895 --> 00:02:42.195
<00:02:38.895>for <00:02:39.070>let's <00:02:39.245>say <00:02:39.420>10 <00:02:39.595>years, <00:02:39.770>15 <00:02:39.945>years, <00:02:40.120>20 <00:02:40.295>years.

44
00:02:42.655 --> 00:02:45.715
<00:02:42.655>And <00:02:42.830>that <00:02:43.005>can <00:02:43.180>be <00:02:43.355>maintained <00:02:43.530>in <00:02:43.705>this <00:02:43.880>time <00:02:44.055>period.

45
00:02:46.605 --> 00:02:49.625
<00:02:46.605>And <00:02:46.804>it's <00:02:47.005>about <00:02:47.204>ideas <00:02:47.405>from <00:02:47.605>domain <00:02:47.804>driven <00:02:48.005>design.

46
00:02:50.085 --> 00:02:53.145
<00:02:50.085>For <00:02:50.260>me, <00:02:50.435>TDD <00:02:50.610>is <00:02:50.785>not <00:02:50.960>a <00:02:51.135>religion <00:02:51.310>for <00:02:51.485>me.

47
00:02:53.385 --> 00:02:54.745
<00:02:53.385>TDD <00:02:53.793>is <00:02:54.201>a <00:02:54.609>toolbox

48
00:02:55.245 --> 00:02:57.945
<00:02:55.245>and <00:02:55.478>several <00:02:55.711>tools <00:02:55.945>fits <00:02:56.178>quite <00:02:56.411>well <00:02:56.645>for

49
00:02:57.945 --> 00:02:59.285
<00:02:57.945>what <00:02:58.246>I <00:02:58.548>want <00:02:58.849>to <00:02:59.151>achieve.

50
00:02:59.785 --> 00:03:01.965
<00:02:59.785>And <00:02:59.984>so <00:03:00.185>I'm <00:03:00.385>just <00:03:00.585>going <00:03:00.785>with <00:03:00.984>those <00:03:01.185>ideas,

51
00:03:02.225 --> 00:03:04.365
<00:03:02.225>but <00:03:02.400>I <00:03:02.575>don't <00:03:02.750>make <00:03:02.924>a <00:03:03.100>religion <00:03:03.275>out <00:03:03.450>of <00:03:03.625>it.

52
00:03:06.345 --> 00:03:08.485
<00:03:06.345>So <00:03:06.545>what <00:03:06.745>are <00:03:06.945>the <00:03:07.145>contents <00:03:07.345>of <00:03:07.545>this <00:03:07.745>talk?

53
00:03:08.695 --> 00:03:11.285
<00:03:08.695>First <00:03:08.870>of <00:03:09.045>all, <00:03:09.220>I <00:03:09.394>will <00:03:09.570>give <00:03:09.745>you <00:03:09.920>an <00:03:10.095>overview

54
00:03:11.385 --> 00:03:12.845
<00:03:11.385>of <00:03:11.822>domain <00:03:12.261>driven <00:03:12.699>design

55
00:03:13.625 --> 00:03:16.645
<00:03:13.625>and <00:03:13.825>then <00:03:14.025>I <00:03:14.225>will <00:03:14.425>talk <00:03:14.625>about <00:03:14.825>mono <00:03:15.025>repositories.

56
00:03:17.145 --> 00:03:21.125
<00:03:17.145>And <00:03:17.300>at <00:03:17.456>first <00:03:17.611>side, <00:03:17.767>the <00:03:17.922>second <00:03:18.078>topic <00:03:18.233>does <00:03:18.389>not <00:03:18.545>fit

57
00:03:21.125 --> 00:03:23.885
<00:03:21.125>to <00:03:21.325>the <00:03:21.525>first <00:03:21.725>one <00:03:21.925>because <00:03:22.125>domain <00:03:22.325>driven <00:03:22.525>design

58
00:03:24.065 --> 00:03:25.125
<00:03:24.065>is <00:03:24.542>a <00:03:25.019>methodology.

59
00:03:25.925 --> 00:03:28.165
<00:03:25.925>Monorepo <00:03:26.275>is <00:03:26.625>one <00:03:26.975>concrete <00:03:27.325>technique

60
00:03:28.225 --> 00:03:30.845
<00:03:28.225>to <00:03:28.575>implement <00:03:28.924>systems, <00:03:29.275>software <00:03:29.625>systems.

61
00:03:31.385 --> 00:03:34.845
<00:03:31.385>But <00:03:31.512>at <00:03:31.639>the <00:03:31.766>end <00:03:31.894>of <00:03:32.021>the <00:03:32.148>second <00:03:32.275>part, <00:03:32.403>we <00:03:32.530>will <00:03:32.657>find <00:03:32.785>out

62
00:03:34.845 --> 00:03:38.165
<00:03:34.845>that <00:03:35.020>both <00:03:35.195>topics <00:03:35.370>are <00:03:35.545>sides <00:03:35.720>of <00:03:35.895>the <00:03:36.070>same <00:03:36.245>coin.

63
00:03:38.905 --> 00:03:41.725
<00:03:38.905>And <00:03:39.045>so <00:03:39.185>in <00:03:39.325>the <00:03:39.465>third <00:03:39.605>part, <00:03:39.745>I <00:03:39.885>will <00:03:40.025>show <00:03:40.165>you <00:03:40.305>how

64
00:03:41.785 --> 00:03:43.605
<00:03:41.785>to <00:03:42.065>bring <00:03:42.345>those <00:03:42.625>two <00:03:42.905>topics <00:03:43.185>together

65
00:03:44.065 --> 00:03:45.925
<00:03:44.065>to <00:03:44.531>produce <00:03:44.998>something <00:03:45.465>beautiful.

66
00:03:47.335 --> 00:03:51.115
<00:03:47.335>But <00:03:47.475>first <00:03:47.615>of <00:03:47.755>all, <00:03:47.895>let <00:03:48.035>me <00:03:48.175>introduce <00:03:48.315>myself. <00:03:48.455>I <00:03:48.595>am <00:03:48.735>Manfred.

67
00:03:51.475 --> 00:03:53.515
<00:03:51.475>I <00:03:51.674>am <00:03:51.875>a <00:03:52.075>train <00:03:52.275>and <00:03:52.475>consultant <00:03:52.674>for <00:03:52.875>Angela.

68
00:03:54.235 --> 00:03:58.475
<00:03:54.235>I <00:03:54.390>am <00:03:54.546>doing <00:03:54.701>a <00:03:54.857>lot <00:03:55.012>of <00:03:55.168>in-house <00:03:55.323>trainings <00:03:55.479>and <00:03:55.635>consultancy

69
00:03:59.095 --> 00:04:03.435
<00:03:59.095>and <00:03:59.211>in <00:03:59.328>this <00:03:59.445>time <00:03:59.561>where <00:03:59.678>we <00:03:59.795>have <00:03:59.911>uh, <00:04:00.028>COVID, <00:04:00.145>I <00:04:00.261>am <00:04:00.378>doing <00:04:00.495>most

70
00:04:03.455 --> 00:04:06.395
<00:04:03.455>of <00:04:03.630>my <00:04:03.805>work <00:04:03.980>remotely <00:04:04.155>and <00:04:04.330>it <00:04:04.505>really <00:04:04.680>works <00:04:04.855>well.

71
00:04:06.555 --> 00:04:08.635
<00:04:06.555>I <00:04:06.755>was <00:04:06.955>really <00:04:07.155>surprised <00:04:07.355>how <00:04:07.555>well <00:04:07.755>this <00:04:07.955>works.

72
00:04:09.415 --> 00:04:12.835
<00:04:09.415>My <00:04:09.614>main <00:04:09.815>product <00:04:10.015>is <00:04:10.215>uh, <00:04:10.415>workshop <00:04:10.614>about <00:04:10.815>Angola

73
00:04:12.855 --> 00:04:14.755
<00:04:12.855>for <00:04:13.554>enterprise <00:04:14.255>architectures.

74
00:04:14.905 --> 00:04:17.995
<00:04:14.905>It's <00:04:15.255>an <00:04:15.605>advanced <00:04:15.955>workshop <00:04:16.305>and

75
00:04:17.995 --> 00:04:21.435
<00:04:17.995>besides <00:04:18.170>this, <00:04:18.345>I'm <00:04:18.519>quite <00:04:18.695>connected <00:04:18.870>to <00:04:19.045>the <00:04:19.220>Angola <00:04:19.394>community.

76
00:04:21.575 --> 00:04:25.755
<00:04:21.575>As <00:04:21.691>you <00:04:21.808>see <00:04:21.925>here, <00:04:22.041>I'm <00:04:22.158>doing <00:04:22.275>most <00:04:22.391>of <00:04:22.508>my <00:04:22.625>work <00:04:22.741>in <00:04:22.858>the <00:04:22.974>German

77
00:04:26.475 --> 00:04:30.315
<00:04:26.475>speaking <00:04:26.755>area, <00:04:27.035>Austria, <00:04:27.315>Germany, <00:04:27.595>the <00:04:27.875>Switzerlands.

78
00:04:30.315 --> 00:04:34.235
<00:04:30.315>And <00:04:30.515>sometimes <00:04:30.715>if <00:04:30.915>I <00:04:31.115>promise <00:04:31.315>to <00:04:31.515>behave <00:04:31.715>well,

79
00:04:34.535 --> 00:04:37.195
<00:04:34.534>I'm <00:04:34.734>also <00:04:34.934>allowed <00:04:35.135>to <00:04:35.335>work <00:04:35.534>with <00:04:35.734>other <00:04:35.934>countries,

80
00:04:37.225 --> 00:04:38.955
<00:04:37.225>with <00:04:37.575>companies <00:04:37.925>in <00:04:38.275>other <00:04:38.625>countries,

81
00:04:39.365 --> 00:04:41.595
<00:04:39.365>which <00:04:39.645>is <00:04:39.925>quite <00:04:40.205>simple <00:04:40.485>nowadays <00:04:40.765>because

82
00:04:42.265 --> 00:04:45.315
<00:04:42.265>because <00:04:42.440>of <00:04:42.615>the <00:04:42.789>current <00:04:42.965>situation <00:04:43.140>we <00:04:43.315>are <00:04:43.490>doing <00:04:43.664>most

83
00:04:45.335 --> 00:04:46.795
<00:04:45.335>of <00:04:45.772>the <00:04:46.211>things <00:04:46.649>remotely.

84
00:04:47.495 --> 00:04:50.595
<00:04:47.495>So <00:04:47.695>let's <00:04:47.895>get <00:04:48.095>started <00:04:48.295>with <00:04:48.495>the <00:04:48.695>first <00:04:48.895>chapter.

85
00:04:50.925 --> 00:04:54.875
<00:04:50.925>Let's <00:04:51.080>get <00:04:51.236>started <00:04:51.391>with <00:04:51.547>an <00:04:51.702>overview <00:04:51.858>of <00:04:52.013>domain <00:04:52.169>driven <00:04:52.325>design.

86
00:04:55.575 --> 00:04:58.075
<00:04:55.575>So <00:04:55.775>when <00:04:55.974>we <00:04:56.175>look <00:04:56.375>at <00:04:56.575>domain <00:04:56.775>driven <00:04:56.974>design,

87
00:04:58.575 --> 00:05:00.715
<00:04:58.575>we <00:04:58.925>can <00:04:59.275>identify <00:04:59.625>two <00:04:59.974>disciplines.

88
00:05:01.295 --> 00:05:03.955
<00:05:01.295>The <00:05:01.528>first <00:05:01.761>discipline <00:05:01.995>is <00:05:02.228>called <00:05:02.461>strategic <00:05:02.695>design

89
00:05:04.335 --> 00:05:06.595
<00:05:04.335>and <00:05:04.534>the <00:05:04.734>second <00:05:04.935>one <00:05:05.135>is <00:05:05.335>called <00:05:05.534>tactical <00:05:05.734>design.

90
00:05:07.955 --> 00:05:09.515
<00:05:07.955>Strategic <00:05:08.421>design <00:05:08.888>is <00:05:09.354>about

91
00:05:10.025 --> 00:05:14.115
<00:05:10.025>decomposing <00:05:10.200>a <00:05:10.375>big <00:05:10.549>system <00:05:10.724>into <00:05:10.900>dining <00:05:11.075>parts, <00:05:11.250>dining <00:05:11.424>parts

92
00:05:14.225 --> 00:05:15.955
<00:05:14.225>that <00:05:14.575>can <00:05:14.925>easily <00:05:15.275>be <00:05:15.625>made.

93
00:05:17.055 --> 00:05:20.515
<00:05:17.055>And <00:05:17.255>tactical <00:05:17.455>design <00:05:17.655>is <00:05:17.855>more <00:05:18.055>about <00:05:18.255>design <00:05:18.455>balance

94
00:05:20.735 --> 00:05:21.995
<00:05:20.735>and <00:05:21.302>best <00:05:21.869>practices.

95
00:05:22.735 --> 00:05:25.595
<00:05:22.735>So <00:05:22.890>as <00:05:23.046>you <00:05:23.201>can <00:05:23.357>tell <00:05:23.512>by <00:05:23.668>looking <00:05:23.823>at <00:05:23.979>this <00:05:24.135>slide,

96
00:05:26.435 --> 00:05:28.555
<00:05:26.435>strategic <00:05:26.785>design <00:05:27.135>is <00:05:27.485>more <00:05:27.835>about

97
00:05:28.585 --> 00:05:30.875
<00:05:28.585>what <00:05:28.864>we <00:05:29.145>are <00:05:29.424>calling <00:05:29.705>architecture <00:05:29.984>nowadays.

98
00:05:31.295 --> 00:05:33.755
<00:05:31.295>And <00:05:31.575>tactical <00:05:31.855>design <00:05:32.135>is <00:05:32.415>more <00:05:32.695>about

99
00:05:33.785 --> 00:05:36.435
<00:05:33.784>what <00:05:34.018>we <00:05:34.251>are <00:05:34.484>calling <00:05:34.718>program <00:05:34.951>design <00:05:35.184>nowadays

100
00:05:36.855 --> 00:05:39.955
<00:05:36.855>and <00:05:37.030>that's <00:05:37.205>why <00:05:37.380>I <00:05:37.555>will <00:05:37.730>stick <00:05:37.905>with <00:05:38.080>strategic <00:05:38.255>design

101
00:05:40.055 --> 00:05:41.435
<00:05:40.055>for <00:05:40.469>the <00:05:40.883>time <00:05:41.297>being

102
00:05:41.545 --> 00:05:43.475
<00:05:41.545>because <00:05:41.895>the <00:05:42.245>overall <00:05:42.595>question <00:05:42.945>is

103
00:05:43.735 --> 00:05:47.395
<00:05:43.735>how <00:05:43.910>do <00:05:44.085>decompose <00:05:44.260>a <00:05:44.435>big <00:05:44.610>system <00:05:44.785>into <00:05:44.960>tiny <00:05:45.135>parts

104
00:05:47.665 --> 00:05:51.955
<00:05:47.665>that <00:05:47.805>can <00:05:47.945>be <00:05:48.085>maintained <00:05:48.225>for <00:05:48.365>10 <00:05:48.505>years, <00:05:48.645>15 <00:05:48.785>years, <00:05:48.925>20 <00:05:49.065>years,

105
00:05:52.105 --> 00:05:53.235
<00:05:52.105>something <00:05:52.613>like <00:05:53.122>that.

106
00:05:54.425 --> 00:05:55.605
<00:05:54.425>If <00:05:54.690>you <00:05:54.956>ask <00:05:55.221>me, <00:05:55.487>well,

107
00:05:55.715 --> 00:05:58.885
<00:05:55.715>what <00:05:55.915>is <00:05:56.115>the <00:05:56.315>strategic <00:05:56.515>domain <00:05:56.715>driven <00:05:56.915>design <00:05:57.115>about?

108
00:05:59.125 --> 00:06:02.725
<00:05:59.125>I <00:05:59.280>would <00:05:59.436>say <00:05:59.591>it <00:05:59.747>is <00:05:59.902>trying <00:06:00.058>to <00:06:00.213>prevent <00:06:00.369>this <00:06:00.525>very

109
00:06:03.365 --> 00:06:05.315
<00:06:03.365>situation <00:06:03.831>here, <00:06:04.298>a <00:06:04.765>situation

110
00:06:05.565 --> 00:06:08.555
<00:06:05.565>where <00:06:05.740>everything <00:06:05.915>is <00:06:06.090>in <00:06:06.265>the <00:06:06.440>mingled <00:06:06.615>with <00:06:06.790>everything <00:06:06.965>else.

111
00:06:09.655 --> 00:06:12.395
<00:06:09.655>If <00:06:09.830>everything <00:06:10.005>is <00:06:10.179>in <00:06:10.354>the <00:06:10.530>mingled <00:06:10.705>with <00:06:10.880>everything <00:06:11.054>else,

112
00:06:12.815 --> 00:06:14.515
<00:06:12.815>it <00:06:13.165>is <00:06:13.515>not <00:06:13.865>maintainable <00:06:14.215>anymore.

113
00:06:15.415 --> 00:06:18.625
<00:06:15.415>Then <00:06:15.570>we <00:06:15.726>have <00:06:15.881>a <00:06:16.037>situation <00:06:16.192>where <00:06:16.348>you <00:06:16.503>change <00:06:16.659>something <00:06:16.815>here

114
00:06:19.005 --> 00:06:20.625
<00:06:19.005>and <00:06:19.284>where <00:06:19.565>you <00:06:19.844>break <00:06:20.125>something <00:06:20.405>there.

115
00:06:21.005 --> 00:06:24.985
<00:06:21.005>And <00:06:21.132>of <00:06:21.259>course <00:06:21.386>this <00:06:21.514>is <00:06:21.641>a <00:06:21.768>situation <00:06:21.895>we <00:06:22.023>really <00:06:22.150>want <00:06:22.277>to <00:06:22.405>avoid

116
00:06:25.805 --> 00:06:27.345
<00:06:25.805>and <00:06:26.082>that's <00:06:26.359>why <00:06:26.636>first <00:06:26.913>of <00:06:27.191>all,

117
00:06:27.785 --> 00:06:30.905
<00:06:27.785>strategic <00:06:27.985>design <00:06:28.185>is <00:06:28.385>demanding <00:06:28.585>you <00:06:28.785>to <00:06:28.985>do <00:06:29.185>something

118
00:06:30.905 --> 00:06:32.945
<00:06:30.905>that <00:06:31.184>looks <00:06:31.465>easy <00:06:31.744>at <00:06:32.025>first <00:06:32.304>sight.

119
00:06:33.755 --> 00:06:35.175
<00:06:33.755>Namely, <00:06:34.181>it <00:06:34.607>demands <00:06:35.033>you

120
00:06:35.555 --> 00:06:39.215
<00:06:35.555>to <00:06:35.730>not <00:06:35.905>write <00:06:36.080>a <00:06:36.255>big <00:06:36.430>system <00:06:36.605>like <00:06:36.780>e-procurement <00:06:36.955>system.

121
00:06:39.725 --> 00:06:42.415
<00:06:39.725>Instead <00:06:39.900>of <00:06:40.075>this, <00:06:40.250>it <00:06:40.425>is <00:06:40.600>telling <00:06:40.775>you <00:06:40.950>you <00:06:41.125>have

122
00:06:42.415 --> 00:06:43.815
<00:06:42.415>to <00:06:42.835>subdivide <00:06:43.255>the <00:06:43.675>system

123
00:06:44.635 --> 00:06:47.655
<00:06:44.635>in <00:06:44.810>let's <00:06:44.985>say <00:06:45.159>a <00:06:45.335>catalog <00:06:45.510>in <00:06:45.685>an <00:06:45.860>approval <00:06:46.034>system

124
00:06:47.745 --> 00:06:52.535
<00:06:47.745>where <00:06:47.885>the <00:06:48.025>manager <00:06:48.165>is <00:06:48.305>saying, <00:06:48.445>no, <00:06:48.585>your <00:06:48.725>don't <00:06:48.865>get <00:06:49.005>this <00:06:49.145>laptop,

125
00:06:52.915 --> 00:06:56.815
<00:06:52.915>an <00:06:53.090>ordering <00:06:53.265>system <00:06:53.440>that <00:06:53.615>sends <00:06:53.790>out <00:06:53.965>your <00:06:54.140>uh, <00:06:54.315>order

126
00:06:57.115 --> 00:06:59.575
<00:06:57.115>to <00:06:57.315>the <00:06:57.515>right <00:06:57.715>vendor <00:06:57.915>to <00:06:58.115>the <00:06:58.315>right <00:06:58.515>one

127
00:06:59.635 --> 00:07:01.975
<00:06:59.635>or <00:06:59.868>to <00:07:00.101>the <00:07:00.335>cheapest <00:07:00.568>one <00:07:00.801>it <00:07:01.034>belongs.

128
00:07:02.515 --> 00:07:05.095
<00:07:02.515>And <00:07:02.748>then <00:07:02.981>there <00:07:03.215>is <00:07:03.448>a <00:07:03.681>specification <00:07:03.914>system

129
00:07:05.505 --> 00:07:09.535
<00:07:05.505>where <00:07:05.680>the <00:07:05.855>ID <00:07:06.030>department <00:07:06.205>is <00:07:06.380>specifying <00:07:06.555>your <00:07:06.730>current <00:07:06.905>needs.

130
00:07:09.995 --> 00:07:11.775
<00:07:09.995>You <00:07:10.228>are <00:07:10.461>saying <00:07:10.695>you <00:07:10.928>need <00:07:11.161>a <00:07:11.395>laptop

131
00:07:12.075 --> 00:07:15.655
<00:07:12.075>and <00:07:12.215>the <00:07:12.354>IT <00:07:12.495>department <00:07:12.635>is <00:07:12.775>saying, <00:07:12.914>oh, <00:07:13.055>you <00:07:13.195>are <00:07:13.335>a <00:07:13.474>programmer

132
00:07:15.655 --> 00:07:17.855
<00:07:15.655>and <00:07:15.854>that's <00:07:16.054>why <00:07:16.255>you <00:07:16.455>get <00:07:16.655>this <00:07:16.854>great <00:07:17.054>laptop

133
00:07:18.155 --> 00:07:20.735
<00:07:18.155>and <00:07:18.388>oh, <00:07:18.621>you <00:07:18.854>are <00:07:19.088>an <00:07:19.321>office <00:07:19.554>worker.

134
00:07:20.915 --> 00:07:22.135
<00:07:20.915>That's <00:07:21.189>why <00:07:21.464>you <00:07:21.738>get <00:07:22.013>this.

135
00:07:22.415 --> 00:07:24.975
<00:07:22.415>I <00:07:22.590>don't <00:07:22.765>know <00:07:22.940>this <00:07:23.115>I <00:07:23.290>three <00:07:23.465>with <00:07:23.640>something <00:07:23.815>else.

136
00:07:26.105 --> 00:07:29.685
<00:07:26.105>So <00:07:26.260>at <00:07:26.416>first <00:07:26.571>side, <00:07:26.727>this <00:07:26.882>uh, <00:07:27.038>seems <00:07:27.193>to <00:07:27.349>be <00:07:27.505>easy

137
00:07:29.945 --> 00:07:32.165
<00:07:29.945>but <00:07:30.178>it <00:07:30.411>is <00:07:30.645>not <00:07:30.878>easy <00:07:31.111>at <00:07:31.344>all.

138
00:07:32.865 --> 00:07:36.965
<00:07:32.865>But <00:07:33.065>because <00:07:33.265>in <00:07:33.465>uh <00:07:33.665>practice <00:07:33.865>you <00:07:34.065>really <00:07:34.265>have

139
00:07:36.965 --> 00:07:39.405
<00:07:36.965>to <00:07:37.165>look <00:07:37.365>at <00:07:37.565>your <00:07:37.765>processes, <00:07:37.965>you <00:07:38.165>really <00:07:38.365>have

140
00:07:39.405 --> 00:07:42.845
<00:07:39.405>to <00:07:39.560>know <00:07:39.716>your <00:07:39.871>business <00:07:40.027>so <00:07:40.182>that <00:07:40.338>you <00:07:40.493>can <00:07:40.649>find <00:07:40.804>out

141
00:07:43.095 --> 00:07:47.965
<00:07:43.095>where <00:07:43.235>you <00:07:43.375>can <00:07:43.515>draw <00:07:43.655>the <00:07:43.795>line, <00:07:43.935>where <00:07:44.075>to <00:07:44.215>use <00:07:44.355>your <00:07:44.495>knife

142
00:07:48.065 --> 00:07:50.005
<00:07:48.065>to <00:07:48.415>cut <00:07:48.765>everything <00:07:49.115>into <00:07:49.465>pieces.

143
00:07:51.065 --> 00:07:52.365
<00:07:51.065>One <00:07:51.357>thing <00:07:51.650>is <00:07:51.942>important <00:07:52.235>here.

144
00:07:52.715 --> 00:07:56.485
<00:07:52.715>Most <00:07:52.870>of <00:07:53.026>the <00:07:53.181>use <00:07:53.337>cases <00:07:53.492>should <00:07:53.648>just <00:07:53.803>take <00:07:53.959>happen <00:07:54.115>in

145
00:07:56.665 --> 00:07:57.885
<00:07:56.665>one <00:07:57.031>of <00:07:57.397>those <00:07:57.763>domains.

146
00:07:58.385 --> 00:08:02.045
<00:07:58.385>If <00:07:58.540>a <00:07:58.696>use <00:07:58.851>case, <00:07:59.007>uh, <00:07:59.162>takes <00:07:59.318>part <00:07:59.473>in <00:07:59.629>free <00:07:59.784>domains,

147
00:08:02.065 --> 00:08:04.925
<00:08:02.065>if <00:08:02.205>the <00:08:02.344>user <00:08:02.485>has <00:08:02.625>to <00:08:02.765>switch <00:08:02.905>the <00:08:03.045>domains <00:08:03.185>all <00:08:03.325>the <00:08:03.465>time,

148
00:08:05.275 --> 00:08:08.165
<00:08:05.275>then <00:08:05.474>this <00:08:05.674>is <00:08:05.875>not <00:08:06.075>a <00:08:06.275>good <00:08:06.474>user <00:08:06.674>experiments.

149
00:08:09.065 --> 00:08:11.085
<00:08:09.065>So <00:08:09.344>please <00:08:09.625>take <00:08:09.905>care <00:08:10.185>about <00:08:10.465>this.

150
00:08:12.635 --> 00:08:15.855
<00:08:12.635>So <00:08:12.868>domain <00:08:13.101>driven <00:08:13.335>design <00:08:13.568>calls <00:08:13.801>this <00:08:14.034>sub-domains

151
00:08:16.035 --> 00:08:19.095
<00:08:16.035>and <00:08:16.268>when <00:08:16.501>you <00:08:16.735>have <00:08:16.968>identified <00:08:17.201>the <00:08:17.435>sub-domains,

152
00:08:19.395 --> 00:08:21.535
<00:08:19.395>you <00:08:19.674>can <00:08:19.955>think <00:08:20.234>about <00:08:20.515>implementing <00:08:20.794>them.

153
00:08:22.425 --> 00:08:25.365
<00:08:22.425>And <00:08:22.565>this <00:08:22.705>leads <00:08:22.845>to <00:08:22.985>the <00:08:23.125>second <00:08:23.265>topic <00:08:23.405>I've <00:08:23.545>prepared <00:08:23.685>for <00:08:23.825>you.

154
00:08:25.715 --> 00:08:27.965
<00:08:25.715>This <00:08:26.065>is <00:08:26.414>about <00:08:26.765>mono <00:08:27.114>repositories.

155
00:08:28.905 --> 00:08:33.765
<00:08:28.905>So <00:08:29.060>basically <00:08:29.216>a <00:08:29.371>mono <00:08:29.527>repository <00:08:29.682>is <00:08:29.838>just <00:08:29.993>one <00:08:30.149>big <00:08:30.304>fall

156
00:08:34.535 --> 00:08:36.845
<00:08:34.534>containing <00:08:34.885>a <00:08:35.235>lot <00:08:35.584>of <00:08:35.934>sub-projects.

157
00:08:37.255 --> 00:08:38.765
<00:08:37.255>Everything <00:08:37.934>that <00:08:38.614>belongs

158
00:08:38.765 --> 00:08:41.045
<00:08:38.765>to <00:08:38.998>your <00:08:39.231>overall <00:08:39.465>system <00:08:39.698>is <00:08:39.931>puts <00:08:40.164>there.

159
00:08:41.555 --> 00:08:45.445
<00:08:41.554>Here <00:08:41.729>we <00:08:41.905>see <00:08:42.079>a <00:08:42.255>mono <00:08:42.429>repository <00:08:42.604>implemented <00:08:42.780>with <00:08:42.954>Angola

160
00:08:45.945 --> 00:08:49.645
<00:08:45.945>and <00:08:46.120>such <00:08:46.295>a <00:08:46.470>mono <00:08:46.645>repository <00:08:46.820>has <00:08:46.995>a <00:08:47.170>projects <00:08:47.345>folder

161
00:08:50.035 --> 00:08:52.245
<00:08:50.035>with <00:08:50.314>all <00:08:50.594>your <00:08:50.875>libraries <00:08:51.155>and <00:08:51.435>applications.

162
00:08:53.245 --> 00:08:56.845
<00:08:53.245>And <00:08:53.420>here <00:08:53.595>I <00:08:53.770>have <00:08:53.945>already <00:08:54.120>libraries <00:08:54.295>for <00:08:54.470>some <00:08:54.645>subdomains

163
00:08:56.905 --> 00:08:59.605
<00:08:56.905>for <00:08:57.185>instance, <00:08:57.464>for <00:08:57.745>the <00:08:58.025>approval <00:08:58.305>subdomain

164
00:08:59.605 --> 00:09:01.645
<00:08:59.605>or <00:08:59.955>for <00:09:00.305>the <00:09:00.655>catalog <00:09:01.005>subdomain.

165
00:09:02.085 --> 00:09:05.845
<00:09:02.085>I <00:09:02.260>even <00:09:02.435>have <00:09:02.610>an <00:09:02.785>application <00:09:02.960>which <00:09:03.135>holds <00:09:03.310>everything <00:09:03.485>together

166
00:09:06.505 --> 00:09:09.965
<00:09:06.505>and <00:09:06.660>I <00:09:06.816>have <00:09:06.971>this <00:09:07.127>validation <00:09:07.282>library <00:09:07.438>which <00:09:07.593>is <00:09:07.749>also <00:09:07.905>shared

167
00:09:10.025 --> 00:09:11.285
<00:09:10.025>across <00:09:10.592>my <00:09:11.159>domains.

168
00:09:11.285 --> 00:09:15.325
<00:09:11.285>It's <00:09:11.485>a <00:09:11.685>technical <00:09:11.885>library <00:09:12.084>so <00:09:12.285>everything <00:09:12.485>that <00:09:12.685>belongs

169
00:09:15.325 --> 00:09:17.165
<00:09:15.325>to <00:09:15.605>a <00:09:15.885>system <00:09:16.165>goes <00:09:16.445>in <00:09:16.725>here.

170
00:09:17.985 --> 00:09:20.045
<00:09:17.985>And <00:09:18.265>there's <00:09:18.545>also <00:09:18.825>another <00:09:19.105>nice <00:09:19.385>thing,

171
00:09:20.465 --> 00:09:22.365
<00:09:20.465>namely <00:09:20.815>this <00:09:21.165>node <00:09:21.515>modules <00:09:21.865>folder.

172
00:09:22.985 --> 00:09:25.445
<00:09:22.985>It <00:09:23.218>is <00:09:23.451>really <00:09:23.685>nice <00:09:23.918>that <00:09:24.151>in <00:09:24.385>this

173
00:09:26.045 --> 00:09:28.685
<00:09:26.045>monorepo <00:09:26.324>setup <00:09:26.604>it <00:09:26.885>only <00:09:27.165>exists <00:09:27.444>once.

174
00:09:29.235 --> 00:09:30.525
<00:09:29.235>This <00:09:29.622>is <00:09:30.009>by <00:09:30.396>design.

175
00:09:30.745 --> 00:09:33.765
<00:09:30.745>It <00:09:30.945>only <00:09:31.145>exists <00:09:31.345>once <00:09:31.545>and <00:09:31.745>this <00:09:31.945>is <00:09:32.145>beautiful

176
00:09:33.995 --> 00:09:37.725
<00:09:33.995>because <00:09:34.170>this <00:09:34.345>guarantee <00:09:34.520>that <00:09:34.695>you <00:09:34.870>only <00:09:35.045>have <00:09:35.220>one <00:09:35.395>version

177
00:09:37.785 --> 00:09:42.005
<00:09:37.785>of <00:09:37.940>Angola, <00:09:38.096>one <00:09:38.251>version <00:09:38.407>of <00:09:38.562>rx, <00:09:38.718>one <00:09:38.873>version <00:09:39.029>of <00:09:39.185>bootstrap.

178
00:09:43.165 --> 00:09:47.255
<00:09:43.165>Just <00:09:43.305>imagine <00:09:43.444>you <00:09:43.584>had <00:09:43.724>Angola <00:09:43.865>five <00:09:44.005>fear <00:09:44.145>and <00:09:44.285>Angola <00:09:44.425>nine <00:09:44.564>there

179
00:09:47.635 --> 00:09:50.775
<00:09:47.635>and <00:09:47.835>then <00:09:48.035>you <00:09:48.235>try <00:09:48.435>to <00:09:48.635>compile <00:09:48.835>everything <00:09:49.035>together.

180
00:09:51.295 --> 00:09:54.015
<00:09:51.295>I <00:09:51.495>guarantee <00:09:51.694>you <00:09:51.895>all <00:09:52.094>hell <00:09:52.295>would <00:09:52.495>break <00:09:52.694>loose

181
00:09:54.595 --> 00:09:56.895
<00:09:54.595>and <00:09:54.828>this <00:09:55.061>is <00:09:55.295>prevented <00:09:55.528>here <00:09:55.761>by <00:09:55.995>design.

182
00:09:57.195 --> 00:09:59.735
<00:09:57.195>You <00:09:57.395>only <00:09:57.595>have <00:09:57.795>one <00:09:57.995>version <00:09:58.195>within <00:09:58.395>your <00:09:58.595>node

183
00:10:00.005 --> 00:10:01.135
<00:10:00.005>modules <00:10:00.513>folder <00:10:01.021>here.

184
00:10:01.755 --> 00:10:06.405
<00:10:01.755>Beautiful, <00:10:01.910>isn't <00:10:02.066>it? <00:10:02.221>So <00:10:02.377>this <00:10:02.532>brings <00:10:02.688>a <00:10:02.843>lot <00:10:02.999>of <00:10:03.155>advantages.

185
00:10:06.505 --> 00:10:08.245
<00:10:06.505>You <00:10:06.855>don't <00:10:07.205>have <00:10:07.555>version <00:10:07.905>conflicts

186
00:10:08.355 --> 00:10:12.325
<00:10:08.355>because <00:10:08.530>everyone <00:10:08.705>is <00:10:08.880>using <00:10:09.055>the <00:10:09.230>same <00:10:09.405>version <00:10:09.580>of <00:10:09.755>Angola,

187
00:10:12.625 --> 00:10:16.445
<00:10:12.625>but <00:10:12.765>also <00:10:12.905>everyone <00:10:13.045>is <00:10:13.185>using <00:10:13.325>the <00:10:13.465>same <00:10:13.605>version <00:10:13.745>of <00:10:13.885>your <00:10:14.025>library.

188
00:10:17.195 --> 00:10:19.365
<00:10:17.195>There's <00:10:17.428>only <00:10:17.661>one <00:10:17.895>version <00:10:18.128>of <00:10:18.361>your <00:10:18.595>library.

189
00:10:19.825 --> 00:10:22.845
<00:10:19.825>You <00:10:20.000>only <00:10:20.175>have <00:10:20.350>to <00:10:20.525>maintain <00:10:20.700>one <00:10:20.875>version <00:10:21.050>of <00:10:21.225>it.

190
00:10:23.265 --> 00:10:26.165
<00:10:23.265>You <00:10:23.405>don't <00:10:23.545>have <00:10:23.685>to <00:10:23.824>think, <00:10:23.965>oh, <00:10:24.105>I <00:10:24.245>have <00:10:24.385>updated <00:10:24.525>my <00:10:24.665>library

191
00:10:26.345 --> 00:10:30.205
<00:10:26.345>but <00:10:26.485>I <00:10:26.625>have <00:10:26.765>to <00:10:26.905>maintain <00:10:27.045>the <00:10:27.185>last <00:10:27.325>version <00:10:27.465>and <00:10:27.605>the <00:10:27.745>version

192
00:10:30.345 --> 00:10:32.845
<00:10:30.345>before <00:10:30.625>the <00:10:30.905>last <00:10:31.185>version <00:10:31.465>in <00:10:31.745>addition

193
00:10:32.845 --> 00:10:34.805
<00:10:32.845>because <00:10:33.195>someone <00:10:33.545>could <00:10:33.895>use <00:10:34.245>it.

194
00:10:34.905 --> 00:10:38.565
<00:10:34.905>No, <00:10:35.060>you <00:10:35.216>only <00:10:35.371>have <00:10:35.527>to <00:10:35.682>maintain <00:10:35.838>one <00:10:35.993>version <00:10:36.149>of <00:10:36.305>each

195
00:10:38.665 --> 00:10:39.965
<00:10:38.665>and <00:10:39.250>every <00:10:39.835>library.

196
00:10:40.555 --> 00:10:42.605
<00:10:40.555>This <00:10:40.834>is <00:10:41.114>also <00:10:41.395>done <00:10:41.675>at <00:10:41.954>Google,

197
00:10:42.715 --> 00:10:45.325
<00:10:42.715>they <00:10:42.890>call <00:10:43.065>it <00:10:43.240>the <00:10:43.415>have <00:10:43.590>a <00:10:43.765>green <00:10:43.940>version <00:10:44.115>policy.

198
00:10:46.985 --> 00:10:50.125
<00:10:46.985>And <00:10:47.160>another <00:10:47.335>advantage <00:10:47.510>is <00:10:47.685>you <00:10:47.860>don't <00:10:48.035>have <00:10:48.210>the <00:10:48.385>burden

199
00:10:50.195 --> 00:10:51.925
<00:10:50.195>with <00:10:50.895>distributing <00:10:51.595>libraries.

200
00:10:52.675 --> 00:10:53.925
<00:10:52.675>What <00:10:52.900>do <00:10:53.125>I <00:10:53.349>mean <00:10:53.574>with <00:10:53.800>that?

201
00:10:54.075 --> 00:10:58.925
<00:10:54.075>Well, <00:10:54.250>if <00:10:54.425>you <00:10:54.600>distributed <00:10:54.775>your <00:10:54.950>libraries <00:10:55.125>using <00:10:55.300>an <00:10:55.475>NPM

202
00:10:59.205 --> 00:11:02.565
<00:10:59.205>repository, <00:10:59.380>you <00:10:59.555>needed <00:10:59.730>to <00:10:59.905>write <00:11:00.080>a <00:11:00.255>library <00:11:00.430>that's <00:11:00.605>clear

203
00:11:02.865 --> 00:11:04.925
<00:11:02.865>and <00:11:03.040>then <00:11:03.215>you <00:11:03.390>have <00:11:03.565>to <00:11:03.740>assign <00:11:03.915>a <00:11:04.090>version <00:11:04.265>number,

204
00:11:04.935 --> 00:11:08.005
<00:11:04.935>let's <00:11:05.074>say <00:11:05.214>version <00:11:05.354>one, <00:11:05.494>and <00:11:05.635>then <00:11:05.775>you <00:11:05.915>have <00:11:06.055>to <00:11:06.194>publish <00:11:06.334>it.

205
00:11:08.395 --> 00:11:11.725
<00:11:08.395>Then <00:11:08.522>you <00:11:08.649>have <00:11:08.776>to <00:11:08.904>go <00:11:09.031>over <00:11:09.158>to <00:11:09.285>your <00:11:09.413>application, <00:11:09.540>which <00:11:09.667>is <00:11:09.795>part

206
00:11:11.725 --> 00:11:13.085
<00:11:11.725>of <00:11:12.337>another <00:11:12.949>repository.

207
00:11:13.465 --> 00:11:16.365
<00:11:13.465>You <00:11:13.640>have <00:11:13.815>to <00:11:13.990>NBM <00:11:14.165>install <00:11:14.340>the <00:11:14.515>library, <00:11:14.690>you <00:11:14.865>have

208
00:11:16.365 --> 00:11:17.725
<00:11:16.365>to <00:11:16.773>integrate <00:11:17.181>the <00:11:17.589>library.

209
00:11:17.985 --> 00:11:20.685
<00:11:17.985>And <00:11:18.125>of <00:11:18.265>course <00:11:18.405>you <00:11:18.545>will <00:11:18.685>find <00:11:18.825>out <00:11:18.965>there <00:11:19.105>is <00:11:19.245>a <00:11:19.385>pack

210
00:11:20.715 --> 00:11:22.965
<00:11:20.715>because <00:11:20.948>there's <00:11:21.181>always <00:11:21.415>a <00:11:21.648>pack, <00:11:21.881>isn't <00:11:22.115>it?

211
00:11:23.505 --> 00:11:27.085
<00:11:23.505>You <00:11:23.632>will <00:11:23.759>file <00:11:23.886>the <00:11:24.014>pack, <00:11:24.141>you <00:11:24.268>will <00:11:24.395>switch <00:11:24.523>over <00:11:24.650>to <00:11:24.777>the <00:11:24.905>project

212
00:11:27.275 --> 00:11:29.605
<00:11:27.275>with <00:11:27.475>the <00:11:27.675>library, <00:11:27.875>you <00:11:28.074>will <00:11:28.275>fix <00:11:28.475>the <00:11:28.675>pack,

213
00:11:29.665 --> 00:11:33.405
<00:11:29.665>you <00:11:29.839>will <00:11:30.015>assign <00:11:30.189>a <00:11:30.365>new <00:11:30.540>version <00:11:30.714>number <00:11:30.890>1.1, <00:11:31.064>1.2,

214
00:11:33.465 --> 00:11:34.485
<00:11:33.465>and <00:11:33.648>so <00:11:33.832>on <00:11:34.015>and <00:11:34.199>so <00:11:34.383>forth.

215
00:11:34.785 --> 00:11:35.845
<00:11:34.785>You <00:11:35.103>will <00:11:35.421>publish <00:11:35.739>it.

216
00:11:35.865 --> 00:11:39.005
<00:11:35.865>You <00:11:36.005>have <00:11:36.145>to <00:11:36.285>make <00:11:36.425>sure <00:11:36.565>that <00:11:36.705>the <00:11:36.845>newest <00:11:36.985>version <00:11:37.125>is <00:11:37.265>installed

217
00:11:39.195 --> 00:11:41.965
<00:11:39.195>into <00:11:39.395>your <00:11:39.595>application <00:11:39.795>and <00:11:39.995>you <00:11:40.195>try <00:11:40.395>it <00:11:40.595>again

218
00:11:42.185 --> 00:11:44.405
<00:11:42.185>and <00:11:42.418>you <00:11:42.651>see <00:11:42.885>it's <00:11:43.118>really <00:11:43.351>a <00:11:43.584>burden.

219
00:11:45.335 --> 00:11:49.275
<00:11:45.335>And <00:11:45.510>this <00:11:45.685>is <00:11:45.860>prevented <00:11:46.035>by <00:11:46.210>using <00:11:46.385>a <00:11:46.560>mono <00:11:46.735>repository.

220
00:11:49.785 --> 00:11:52.635
<00:11:49.785>Just <00:11:49.985>check <00:11:50.185>it <00:11:50.385>in <00:11:50.584>into <00:11:50.785>your <00:11:50.985>big <00:11:51.185>repository

221
00:11:53.105 --> 00:11:54.765
<00:11:53.105>and <00:11:53.455>everyone <00:11:53.805>can <00:11:54.155>use <00:11:54.505>it.

222
00:11:55.525 --> 00:12:00.185
<00:11:55.525>And <00:11:55.665>that <00:11:55.805>clearly <00:11:55.944>shows <00:11:56.084>that <00:11:56.225>the <00:11:56.365>mono <00:11:56.505>repository <00:11:56.645>is <00:11:56.785>the <00:11:56.925>way

223
00:12:00.185 --> 00:12:03.625
<00:12:00.185>to <00:12:00.359>go <00:12:00.535>if <00:12:00.709>you <00:12:00.885>need <00:12:01.060>libraries <00:12:01.234>not <00:12:01.410>for <00:12:01.584>sharing

224
00:12:03.775 --> 00:12:05.785
<00:12:03.775>with <00:12:04.125>other <00:12:04.475>people, <00:12:04.824>but <00:12:05.175>for

225
00:12:06.295 --> 00:12:09.385
<00:12:06.295>subdividing <00:12:06.528>a <00:12:06.761>big <00:12:06.995>application <00:12:07.228>into <00:12:07.461>tiny <00:12:07.694>parts,

226
00:12:12.155 --> 00:12:16.035
<00:12:12.155>creating <00:12:12.329>a <00:12:12.505>workspace, <00:12:12.680>a <00:12:12.855>monorepo <00:12:13.030>workspace <00:12:13.204>is <00:12:13.380>really <00:12:13.555>easy.

227
00:12:16.105 --> 00:12:20.275
<00:12:16.105>With <00:12:16.260>angular, <00:12:16.416>all <00:12:16.571>you <00:12:16.727>need <00:12:16.882>is <00:12:17.038>the <00:12:17.193>angular <00:12:17.349>CLII <00:12:17.505>guess

228
00:12:20.335 --> 00:12:21.355
<00:12:20.335>you <00:12:20.641>already <00:12:20.947>have <00:12:21.253>it.

229
00:12:21.655 --> 00:12:24.195
<00:12:21.655>And <00:12:21.829>then <00:12:22.005>you <00:12:22.180>can <00:12:22.355>new <00:12:22.530>up <00:12:22.704>a <00:12:22.880>new <00:12:23.055>workspace

230
00:12:24.655 --> 00:12:27.675
<00:12:24.655>and <00:12:24.855>within <00:12:25.055>this <00:12:25.255>workspace <00:12:25.454>you <00:12:25.655>can <00:12:25.855>generate <00:12:26.055>applications,

231
00:12:28.015 --> 00:12:29.515
<00:12:28.015>you <00:12:28.465>can <00:12:28.915>generate <00:12:29.365>libraries.

232
00:12:30.245 --> 00:12:34.035
<00:12:30.245>After <00:12:30.400>that, <00:12:30.556>you <00:12:30.711>can <00:12:30.867>serve <00:12:31.022>your <00:12:31.178>applications <00:12:31.333>to <00:12:31.489>test <00:12:31.645>it

233
00:12:34.455 --> 00:12:36.955
<00:12:34.455>or <00:12:34.630>you <00:12:34.805>can <00:12:34.980>build <00:12:35.155>the <00:12:35.330>application <00:12:35.505>and <00:12:35.680>the <00:12:35.855>library

234
00:12:37.535 --> 00:12:41.025
<00:12:37.535>and <00:12:37.735>that's <00:12:37.935>it <00:12:38.135>really <00:12:38.334>a <00:12:38.535>piece <00:12:38.735>of <00:12:38.935>cake.

235
00:12:41.315 --> 00:12:43.065
<00:12:41.315>Everything <00:12:42.015>is <00:12:42.715>co-located.

236
00:12:43.525 --> 00:12:45.385
<00:12:43.525>You <00:12:43.725>only <00:12:43.925>need <00:12:44.125>to <00:12:44.324>check <00:12:44.525>out <00:12:44.725>the <00:12:44.925>current,

237
00:12:45.915 --> 00:12:48.785
<00:12:45.915>let's <00:12:46.148>say <00:12:46.381>master <00:12:46.615>branch <00:12:46.848>or <00:12:47.081>development <00:12:47.314>branch.

238
00:12:48.845 --> 00:12:52.105
<00:12:48.845>It <00:12:49.020>depends <00:12:49.195>on <00:12:49.370>your <00:12:49.545>strategy <00:12:49.720>and <00:12:49.895>you <00:12:50.070>are <00:12:50.245>good.

239
00:12:54.085 --> 00:12:57.265
<00:12:54.085>So <00:12:54.201>if <00:12:54.318>you're <00:12:54.435>not <00:12:54.551>sure <00:12:54.668>if <00:12:54.785>this <00:12:54.901>is <00:12:55.018>the <00:12:55.135>right <00:12:55.251>solution <00:12:55.368>for <00:12:55.485>you,

240
00:12:57.685 --> 00:12:58.945
<00:12:57.685>let <00:12:57.911>me <00:12:58.138>tell <00:12:58.365>you <00:12:58.592>one <00:12:58.819>thing.

241
00:12:59.545 --> 00:13:02.585
<00:12:59.545>A <00:12:59.745>mono <00:12:59.944>repository <00:13:00.145>is <00:13:00.344>not <00:13:00.545>a <00:13:00.745>one-way <00:13:00.944>street.

242
00:13:03.125 --> 00:13:05.265
<00:13:03.125>You <00:13:03.300>can <00:13:03.475>move <00:13:03.650>back <00:13:03.825>and <00:13:04.000>forth <00:13:04.175>all <00:13:04.350>the <00:13:04.525>time.

243
00:13:05.795 --> 00:13:09.345
<00:13:05.795>Let's <00:13:05.969>say <00:13:06.145>you <00:13:06.319>have <00:13:06.495>this <00:13:06.670>validation <00:13:06.844>library, <00:13:07.020>it's <00:13:07.194>part

244
00:13:09.345 --> 00:13:14.265
<00:13:09.345>of <00:13:09.520>your <00:13:09.695>mono <00:13:09.870>repository, <00:13:10.045>so <00:13:10.220>it'll <00:13:10.395>evolve <00:13:10.570>alongside <00:13:10.745>your

245
00:13:14.775 --> 00:13:16.385
<00:13:14.775>e-procurement <00:13:16.175>application

246
00:13:17.125 --> 00:13:20.025
<00:13:17.125>and <00:13:17.358>uh, <00:13:17.591>that's <00:13:17.825>why <00:13:18.058>it's <00:13:18.291>quite <00:13:18.525>major

247
00:13:20.335 --> 00:13:23.505
<00:13:20.335>because <00:13:20.490>it <00:13:20.646>has <00:13:20.801>been <00:13:20.957>used <00:13:21.112>in <00:13:21.268>production <00:13:21.423>with <00:13:21.579>this <00:13:21.735>application

248
00:13:23.525 --> 00:13:24.985
<00:13:23.525>for <00:13:23.853>quite <00:13:24.182>a <00:13:24.510>long <00:13:24.839>time.

249
00:13:25.565 --> 00:13:29.425
<00:13:25.565>But <00:13:25.705>now <00:13:25.845>another <00:13:25.985>division <00:13:26.125>of <00:13:26.265>your <00:13:26.405>company <00:13:26.545>wants <00:13:26.685>to <00:13:26.825>use <00:13:26.965>it

250
00:13:29.805 --> 00:13:32.665
<00:13:29.805>and <00:13:30.005>so <00:13:30.204>you <00:13:30.405>can <00:13:30.604>easily <00:13:30.805>also <00:13:31.005>export <00:13:31.204>it

251
00:13:32.725 --> 00:13:35.545
<00:13:32.725>for <00:13:33.005>them <00:13:33.285>using <00:13:33.565>an <00:13:33.845>NBM <00:13:34.125>registry.

252
00:13:36.175 --> 00:13:38.475
<00:13:36.175>And <00:13:36.349>so <00:13:36.525>you <00:13:36.699>have <00:13:36.875>the <00:13:37.050>best <00:13:37.224>of <00:13:37.400>both <00:13:37.574>worlds.

253
00:13:39.015 --> 00:13:41.395
<00:13:39.015>You <00:13:39.189>have <00:13:39.365>it <00:13:39.540>as <00:13:39.715>part <00:13:39.890>of <00:13:40.064>your <00:13:40.240>mono <00:13:40.415>repository,

254
00:13:41.935 --> 00:13:43.515
<00:13:41.935>you <00:13:42.285>can <00:13:42.635>use <00:13:42.984>it <00:13:43.334>easily,

255
00:13:43.965 --> 00:13:46.515
<00:13:43.965>it'll <00:13:44.315>evolve <00:13:44.665>alongside <00:13:45.015>your <00:13:45.365>application

256
00:13:46.975 --> 00:13:49.035
<00:13:46.975>and <00:13:47.175>you <00:13:47.375>can <00:13:47.575>share <00:13:47.775>it <00:13:47.975>with <00:13:48.175>other <00:13:48.375>people

257
00:13:50.125 --> 00:13:53.385
<00:13:50.125>so <00:13:50.265>you <00:13:50.405>can <00:13:50.545>really <00:13:50.685>move <00:13:50.825>back <00:13:50.965>and <00:13:51.105>forth <00:13:51.245>as <00:13:51.385>you <00:13:51.525>see.

258
00:13:53.805 --> 00:13:56.505
<00:13:53.805>If <00:13:53.979>you're <00:13:54.155>not <00:13:54.329>sure, <00:13:54.505>start <00:13:54.680>with <00:13:54.854>a <00:13:55.030>mono <00:13:55.204>repository.

259
00:13:56.645 --> 00:13:58.345
<00:13:56.645>You <00:13:56.878>can <00:13:57.111>change <00:13:57.345>it <00:13:57.578>every <00:13:57.811>time <00:13:58.045>after.

260
00:14:00.205 --> 00:14:03.305
<00:14:00.205>If <00:14:00.380>you <00:14:00.555>laugh <00:14:00.730>this <00:14:00.905>idea <00:14:01.080>with <00:14:01.255>the <00:14:01.430>mono <00:14:01.605>repository,

261
00:14:03.925 --> 00:14:05.785
<00:14:03.925>you <00:14:04.158>will <00:14:04.391>laugh <00:14:04.625>and <00:14:04.858>ask <00:14:05.091>even <00:14:05.324>more.

262
00:14:06.835 --> 00:14:09.755
<00:14:06.835>NX <00:14:06.990>is <00:14:07.146>what <00:14:07.301>I'm <00:14:07.457>calling <00:14:07.612>the <00:14:07.768>sugar <00:14:07.923>dip <00:14:08.079>on <00:14:08.235>top

263
00:14:09.755 --> 00:14:11.235
<00:14:09.755>of <00:14:10.199>the <00:14:10.643>angular <00:14:11.087>CLI.

264
00:14:11.655 --> 00:14:14.315
<00:14:11.655>It <00:14:11.888>teaches <00:14:12.121>the <00:14:12.355>angular <00:14:12.588>CLI <00:14:12.821>new <00:14:13.055>drex.

265
00:14:15.535 --> 00:14:17.275
<00:14:15.535>One <00:14:15.768>of <00:14:16.001>those <00:14:16.235>DREX <00:14:16.468>is <00:14:16.701>this <00:14:16.935>year.

266
00:14:17.855 --> 00:14:19.875
<00:14:17.855>It <00:14:18.205>allows <00:14:18.555>your <00:14:18.905>angular <00:14:19.255>CLI

267
00:14:19.935 --> 00:14:22.555
<00:14:19.935>to <00:14:20.285>visualize <00:14:20.635>your <00:14:20.984>library <00:14:21.334>structure.

268
00:14:23.265 --> 00:14:26.915
<00:14:23.265>This <00:14:23.439>shows <00:14:23.615>which <00:14:23.790>library <00:14:23.965>is <00:14:24.140>accessing <00:14:24.314>which <00:14:24.490>other <00:14:24.665>library.

269
00:14:27.535 --> 00:14:31.835
<00:14:27.535>And <00:14:27.675>this <00:14:27.814>is <00:14:27.954>vital <00:14:28.094>for <00:14:28.235>a <00:14:28.375>big <00:14:28.515>application <00:14:28.655>because <00:14:28.795>as <00:14:28.935>mentioned

270
00:14:31.835 --> 00:14:34.155
<00:14:31.835>before, <00:14:32.115>we <00:14:32.395>really <00:14:32.675>want <00:14:32.955>to <00:14:33.235>prevent

271
00:14:34.185 --> 00:14:36.915
<00:14:34.185>that <00:14:34.385>everything <00:14:34.584>is <00:14:34.785>in <00:14:34.984>doming <00:14:35.185>with <00:14:35.385>everything <00:14:35.584>else.

272
00:14:37.495 --> 00:14:39.515
<00:14:37.495>And <00:14:37.728>this <00:14:37.961>can <00:14:38.195>be <00:14:38.428>done <00:14:38.661>here <00:14:38.895>visually.

273
00:14:40.455 --> 00:14:44.715
<00:14:40.455>We <00:14:40.610>will <00:14:40.766>find <00:14:40.921>out <00:14:41.077>about <00:14:41.232>other <00:14:41.388>tricks <00:14:41.543>to <00:14:41.699>prevent <00:14:41.855>this,

274
00:14:45.255 --> 00:14:48.595
<00:14:45.255>but <00:14:45.371>for <00:14:45.488>the <00:14:45.605>time <00:14:45.721>being, <00:14:45.838>this <00:14:45.955>is <00:14:46.071>our <00:14:46.188>first <00:14:46.305>trick <00:14:46.421>we <00:14:46.538>can <00:14:46.655>use.

275
00:14:48.905 --> 00:14:50.355
<00:14:48.905>Just <00:14:49.340>display <00:14:49.775>your <00:14:50.210>graph.

276
00:14:53.165 --> 00:14:56.015
<00:14:53.165>What <00:14:53.339>does <00:14:53.515>it <00:14:53.689>gets <00:14:53.865>to <00:14:54.040>create <00:14:54.214>an <00:14:54.390>NX <00:14:54.564>workspace?

277
00:14:56.165 --> 00:14:57.855
<00:14:56.165>Well, <00:14:56.631>everything <00:14:57.098>is <00:14:57.564>as

278
00:14:57.855 --> 00:15:01.855
<00:14:57.855>before, <00:14:58.030>that's <00:14:58.205>why <00:14:58.380>I've <00:14:58.555>graded <00:14:58.730>out <00:14:58.905>all <00:14:59.080>the <00:14:59.255>commands.

279
00:15:02.275 --> 00:15:05.015
<00:15:02.275>But <00:15:02.508>this <00:15:02.741>one <00:15:02.975>with <00:15:03.208>the <00:15:03.441>red <00:15:03.675>la,

280
00:15:05.485 --> 00:15:08.255
<00:15:05.485>this <00:15:05.765>command <00:15:06.045>changes <00:15:06.325>instead <00:15:06.605>of <00:15:06.885>engine,

281
00:15:08.315 --> 00:15:11.975
<00:15:08.315>you <00:15:08.515>are <00:15:08.715>using <00:15:08.915>NBM <00:15:09.115>in <00:15:09.315>it <00:15:09.515>X <00:15:09.715>workspace.

282
00:15:12.725 --> 00:15:14.175
<00:15:12.725>This <00:15:13.051>is <00:15:13.377>downloading <00:15:13.703>a <00:15:14.030>script

283
00:15:14.595 --> 00:15:16.975
<00:15:14.595>and <00:15:14.795>the <00:15:14.995>script <00:15:15.195>is <00:15:15.395>creating <00:15:15.595>a <00:15:15.795>new <00:15:15.995>workspace.

284
00:15:17.795 --> 00:15:21.255
<00:15:17.795>And <00:15:17.950>for <00:15:18.106>this, <00:15:18.261>it <00:15:18.417>is <00:15:18.572>delegating <00:15:18.728>to <00:15:18.883>your <00:15:19.039>Angular <00:15:19.194>CLI,

285
00:15:21.705 --> 00:15:23.095
<00:15:21.705>which <00:15:22.017>means <00:15:22.330>at <00:15:22.643>the <00:15:22.956>end

286
00:15:23.115 --> 00:15:26.375
<00:15:23.115>of <00:15:23.290>the <00:15:23.465>day <00:15:23.640>you <00:15:23.815>have <00:15:23.990>a <00:15:24.165>traditional <00:15:24.340>CLI <00:15:24.515>project.

287
00:15:26.715 --> 00:15:29.295
<00:15:26.715>It <00:15:26.948>is <00:15:27.181>really <00:15:27.415>a <00:15:27.648>traditional <00:15:27.881>CLI <00:15:28.115>project.

288
00:15:29.715 --> 00:15:34.335
<00:15:29.715>That's <00:15:29.855>why <00:15:29.995>you <00:15:30.135>can <00:15:30.275>use, <00:15:30.415>let's <00:15:30.555>say <00:15:30.695>Angie <00:15:30.835>generate <00:15:30.975>an <00:15:31.115>gerv,

289
00:15:34.545 --> 00:15:36.615
<00:15:34.545>Angie <00:15:34.778>build <00:15:35.011>and <00:15:35.245>all <00:15:35.478>the <00:15:35.711>other <00:15:35.944>commands.

290
00:15:37.195 --> 00:15:39.575
<00:15:37.195>And <00:15:37.545>besides <00:15:37.895>this, <00:15:38.245>this <00:15:38.595>angle

291
00:15:39.675 --> 00:15:44.055
<00:15:39.675>of <00:15:39.814>project <00:15:39.954>has <00:15:40.094>some <00:15:40.234>new <00:15:40.375>tricks <00:15:40.515>which <00:15:40.655>come <00:15:40.795>from <00:15:40.935>annex <00:15:41.074>like

292
00:15:44.145 --> 00:15:45.815
<00:15:44.145>displaying <00:15:44.611>the <00:15:45.078>dependency <00:15:45.545>graph.

293
00:15:48.065 --> 00:15:51.715
<00:15:48.065>Okay? <00:15:48.240>Now <00:15:48.415>we <00:15:48.590>have <00:15:48.765>seen <00:15:48.940>domain <00:15:49.115>driven <00:15:49.290>design, <00:15:49.465>especially

294
00:15:52.475 --> 00:15:54.155
<00:15:52.475>strategic <00:15:52.941>design <00:15:53.408>helps <00:15:53.875>us

295
00:15:54.185 --> 00:15:57.235
<00:15:54.185>with <00:15:54.418>subdividing <00:15:54.651>a <00:15:54.885>big <00:15:55.118>application <00:15:55.351>into <00:15:55.584>parts.

296
00:15:58.055 --> 00:16:02.395
<00:15:58.055>And <00:15:58.182>the <00:15:58.309>lesser <00:15:58.436>the <00:15:58.564>parts <00:15:58.691>know <00:15:58.818>from <00:15:58.945>each <00:15:59.073>other <00:15:59.200>the <00:15:59.327>better <00:15:59.454>it

297
00:16:02.395 --> 00:16:06.235
<00:16:02.395>is <00:16:02.569>because <00:16:02.745>that <00:16:02.920>prevents <00:16:03.095>the <00:16:03.270>change <00:16:03.444>here <00:16:03.620>is <00:16:03.795>affecting

298
00:16:06.235 --> 00:16:07.315
<00:16:06.235>another <00:16:06.721>domain <00:16:07.207>there.

299
00:16:08.055 --> 00:16:11.235
<00:16:08.055>And <00:16:08.255>we <00:16:08.454>have <00:16:08.655>seen <00:16:08.854>that <00:16:09.055>uh, <00:16:09.255>mono <00:16:09.454>repository,

300
00:16:11.405 --> 00:16:16.275
<00:16:11.405>especially <00:16:11.579>an <00:16:11.755>an <00:16:11.930>XMO <00:16:12.105>repository <00:16:12.280>helps <00:16:12.454>you <00:16:12.630>to <00:16:12.805>uh,

301
00:16:16.425 --> 00:16:18.315
<00:16:16.425>deal <00:16:16.775>with <00:16:17.125>all <00:16:17.474>those <00:16:17.824>domains,

302
00:16:18.315 --> 00:16:21.955
<00:16:18.315>with <00:16:18.490>all <00:16:18.665>those <00:16:18.840>parts <00:16:19.015>your <00:16:19.190>overall <00:16:19.365>system <00:16:19.540>consists <00:16:19.715>of.

303
00:16:22.665 --> 00:16:26.525
<00:16:22.665>And <00:16:22.820>now <00:16:22.976>let's <00:16:23.131>try <00:16:23.287>to <00:16:23.442>bring <00:16:23.598>those <00:16:23.753>two <00:16:23.909>topics <00:16:24.064>together.

304
00:16:27.755 --> 00:16:30.175
<00:16:27.755>If <00:16:27.930>I <00:16:28.105>try <00:16:28.280>to <00:16:28.455>do <00:16:28.630>this, <00:16:28.805>first <00:16:28.980>of <00:16:29.155>all,

305
00:16:30.335 --> 00:16:34.255
<00:16:30.335>I <00:16:30.490>would <00:16:30.646>create <00:16:30.801>some <00:16:30.957>sub <00:16:31.112>folders <00:16:31.268>in <00:16:31.423>my <00:16:31.579>mono <00:16:31.735>repository.

306
00:16:35.755 --> 00:16:38.195
<00:16:35.755>I <00:16:35.988>would <00:16:36.221>create <00:16:36.455>one <00:16:36.688>subfolder <00:16:36.921>the <00:16:37.155>domain

307
00:16:38.535 --> 00:16:40.675
<00:16:38.535>for <00:16:38.814>instance <00:16:39.094>one <00:16:39.375>catalog <00:16:39.655>sub <00:16:39.935>folder

308
00:16:40.815 --> 00:16:42.555
<00:16:40.815>or <00:16:41.165>one <00:16:41.515>ordering <00:16:41.865>sub <00:16:42.215>folder.

309
00:16:43.335 --> 00:16:47.235
<00:16:43.335>And <00:16:43.475>then <00:16:43.615>I <00:16:43.755>would <00:16:43.895>create <00:16:44.035>a <00:16:44.175>shared <00:16:44.315>sub <00:16:44.455>folder <00:16:44.595>which <00:16:44.735>consists

310
00:16:47.235 --> 00:16:48.915
<00:16:47.235>the <00:16:47.701>so-called <00:16:48.168>shared <00:16:48.635>kernel.

311
00:16:49.255 --> 00:16:52.915
<00:16:49.255>The <00:16:49.395>shared <00:16:49.535>kernel <00:16:49.675>is <00:16:49.814>a <00:16:49.955>term <00:16:50.095>which <00:16:50.235>comes <00:16:50.375>from <00:16:50.515>domain <00:16:50.655>driven

312
00:16:53.015 --> 00:16:56.475
<00:16:53.015>design <00:16:53.170>and <00:16:53.326>it <00:16:53.481>is <00:16:53.637>just <00:16:53.792>a <00:16:53.948>bunch <00:16:54.103>of <00:16:54.259>shared <00:16:54.415>libraries.

313
00:16:58.325 --> 00:16:59.745
<00:16:58.325>And <00:16:58.580>when <00:16:58.836>you <00:16:59.091>have <00:16:59.347>done <00:16:59.603>this,

314
00:16:59.925 --> 00:17:03.025
<00:16:59.925>you <00:17:00.125>can <00:17:00.324>start <00:17:00.525>filling <00:17:00.724>those <00:17:00.925>folders <00:17:01.125>with <00:17:01.324>libraries

315
00:17:03.925 --> 00:17:05.985
<00:17:03.925>and <00:17:04.099>to <00:17:04.274>make <00:17:04.450>it <00:17:04.625>a <00:17:04.800>bit <00:17:04.974>easier <00:17:05.149>for <00:17:05.325>you

316
00:17:06.375 --> 00:17:10.505
<00:17:06.375>that <00:17:06.530>an <00:17:06.686>X <00:17:06.841>team <00:17:06.997>has <00:17:07.152>defined <00:17:07.308>several <00:17:07.463>categories <00:17:07.619>of <00:17:07.775>libraries

317
00:17:11.175 --> 00:17:15.865
<00:17:11.175>from <00:17:11.349>ola, <00:17:11.524>from <00:17:11.700>Angola's <00:17:11.875>perspective, <00:17:12.050>there <00:17:12.224>is <00:17:12.399>no <00:17:12.575>difference

318
00:17:15.865 --> 00:17:17.505
<00:17:15.865>between <00:17:16.331>all <00:17:16.798>those <00:17:17.265>libraries.

319
00:17:17.895 --> 00:17:21.455
<00:17:17.895>From <00:17:18.128>our <00:17:18.361>perspective <00:17:18.595>this <00:17:18.828>is, <00:17:19.061>that <00:17:19.295>shows

320
00:17:21.455 --> 00:17:25.575
<00:17:21.454>that <00:17:21.595>this <00:17:21.734>is <00:17:21.875>just <00:17:22.014>a <00:17:22.155>thought <00:17:22.294>category <00:17:22.435>which <00:17:22.574>really <00:17:22.714>helps <00:17:22.855>us

321
00:17:25.635 --> 00:17:28.495
<00:17:25.635>to <00:17:25.868>reduce <00:17:26.101>the <00:17:26.335>complexity <00:17:26.568>of <00:17:26.801>our <00:17:27.035>system.

322
00:17:29.595 --> 00:17:32.175
<00:17:29.595>The <00:17:29.828>first <00:17:30.061>category <00:17:30.295>is <00:17:30.528>here, <00:17:30.761>the <00:17:30.995>category

323
00:17:32.205 --> 00:17:33.495
<00:17:32.205>with <00:17:32.785>feature <00:17:33.366>libraries.

324
00:17:34.275 --> 00:17:37.495
<00:17:34.275>It <00:17:34.475>consists <00:17:34.675>of <00:17:34.875>your <00:17:35.075>features, <00:17:35.275>your <00:17:35.475>use <00:17:35.675>cases,

325
00:17:37.995 --> 00:17:40.375
<00:17:37.995>or <00:17:38.195>we <00:17:38.395>could <00:17:38.594>also <00:17:38.794>call <00:17:38.995>it <00:17:39.195>smart <00:17:39.395>components.

326
00:17:41.715 --> 00:17:44.775
<00:17:41.715>It <00:17:41.948>is <00:17:42.181>quite <00:17:42.415>common <00:17:42.648>nowadays <00:17:42.881>to <00:17:43.115>speak

327
00:17:44.795 --> 00:17:48.495
<00:17:44.795>of <00:17:44.950>your <00:17:45.106>components <00:17:45.261>in <00:17:45.417>terms <00:17:45.572>of <00:17:45.728>smart <00:17:45.883>and <00:17:46.039>dumb <00:17:46.195>components.

328
00:17:49.445 --> 00:17:52.125
<00:17:49.445>A <00:17:49.645>smart <00:17:49.845>component <00:17:50.044>knows <00:17:50.245>about <00:17:50.445>your <00:17:50.645>use <00:17:50.845>case

329
00:17:53.065 --> 00:17:56.125
<00:17:53.065>and <00:17:53.265>that's <00:17:53.465>why <00:17:53.665>it <00:17:53.865>is <00:17:54.065>not <00:17:54.265>that <00:17:54.465>reusable

330
00:17:56.195 --> 00:17:59.205
<00:17:56.195>because <00:17:56.350>it <00:17:56.506>really <00:17:56.661>needs <00:17:56.817>to <00:17:56.972>fit <00:17:57.128>this <00:17:57.283>one <00:17:57.439>use <00:17:57.595>case.

331
00:18:00.105 --> 00:18:02.725
<00:18:00.105>On <00:18:00.280>the <00:18:00.455>other <00:18:00.630>side, <00:18:00.805>we <00:18:00.980>have <00:18:01.155>the <00:18:01.330>utility <00:18:01.505>layer

332
00:18:02.795 --> 00:18:04.205
<00:18:02.795>with <00:18:03.429>utility <00:18:04.063>libraries

333
00:18:04.585 --> 00:18:07.565
<00:18:04.585>and <00:18:04.865>those <00:18:05.145>libraries <00:18:05.425>contain <00:18:05.705>dump <00:18:05.985>components

334
00:18:08.305 --> 00:18:11.725
<00:18:08.305>and <00:18:08.460>they <00:18:08.616>don't <00:18:08.771>know <00:18:08.927>at <00:18:09.082>all <00:18:09.238>about <00:18:09.393>your <00:18:09.549>use <00:18:09.705>cases.

335
00:18:12.635 --> 00:18:15.405
<00:18:12.635>They <00:18:12.915>are <00:18:13.195>not <00:18:13.475>even <00:18:13.754>interested, <00:18:14.035>but

336
00:18:15.405 --> 00:18:18.525
<00:18:15.405>because <00:18:15.638>of <00:18:15.871>that <00:18:16.105>they <00:18:16.338>are <00:18:16.571>really <00:18:16.805>reusable.

337
00:18:19.465 --> 00:18:22.195
<00:18:19.465>Just <00:18:19.745>think <00:18:20.024>about <00:18:20.304>a <00:18:20.584>datetime <00:18:20.865>component.

338
00:18:22.835 --> 00:18:27.075
<00:18:22.835>A <00:18:22.990>DATETIME <00:18:23.146>component <00:18:23.301>not <00:18:23.457>knows <00:18:23.612>nothing <00:18:23.768>about <00:18:23.923>your <00:18:24.079>use <00:18:24.235>case,

339
00:18:27.345 --> 00:18:31.955
<00:18:27.345>nothing, <00:18:28.045>absolutely <00:18:28.745>nothing.

340
00:18:32.615 --> 00:18:36.795
<00:18:32.615>And <00:18:32.755>because <00:18:32.895>it <00:18:33.035>knows <00:18:33.175>nothing, <00:18:33.315>we <00:18:33.455>can <00:18:33.595>reuse <00:18:33.735>it <00:18:33.875>within <00:18:34.015>each

341
00:18:36.855 --> 00:18:37.915
<00:18:36.855>and <00:18:37.173>every <00:18:37.491>use <00:18:37.809>case.

342
00:18:37.915 --> 00:18:42.135
<00:18:37.915>Dealing <00:18:38.090>somehow <00:18:38.264>with <00:18:38.440>dates, <00:18:38.615>dealing <00:18:38.790>with <00:18:38.965>a <00:18:39.139>deadline, <00:18:39.315>dealing

343
00:18:42.165 --> 00:18:45.535
<00:18:42.165>with <00:18:42.340>a <00:18:42.514>delivery <00:18:42.690>date, <00:18:42.865>dealing <00:18:43.040>with <00:18:43.215>an <00:18:43.389>ordering <00:18:43.565>date,

344
00:18:46.575 --> 00:18:48.275
<00:18:46.575>it <00:18:47.041>is <00:18:47.508>really <00:18:47.975>reusable

345
00:18:48.275 --> 00:18:51.835
<00:18:48.275>because <00:18:48.475>it <00:18:48.675>does <00:18:48.875>not <00:18:49.075>come <00:18:49.275>with <00:18:49.475>any <00:18:49.675>assumptions

346
00:18:52.335 --> 00:18:54.955
<00:18:52.335>and <00:18:52.535>that <00:18:52.735>clearly <00:18:52.935>shows <00:18:53.135>it <00:18:53.335>really <00:18:53.535>makes <00:18:53.735>sense

347
00:18:55.015 --> 00:18:57.355
<00:18:55.015>to <00:18:55.215>make <00:18:55.415>these <00:18:55.615>cuts <00:18:55.815>to <00:18:56.015>divide <00:18:56.215>your <00:18:56.415>components

348
00:18:57.905 --> 00:18:59.395
<00:18:57.905>into <00:18:58.351>those <00:18:58.799>two <00:18:59.246>categories.

349
00:18:59.735 --> 00:19:03.475
<00:18:59.735>The <00:18:59.909>later <00:19:00.084>one <00:19:00.260>dump <00:19:00.435>components <00:19:00.610>can <00:19:00.784>be <00:19:00.959>reused <00:19:01.135>over

350
00:19:03.655 --> 00:19:04.955
<00:19:03.655>all <00:19:04.045>your <00:19:04.435>use <00:19:04.824>cases.

351
00:19:06.025 --> 00:19:09.355
<00:19:06.025>Another <00:19:06.200>category, <00:19:06.375>it's <00:19:06.550>what <00:19:06.725>I'm <00:19:06.900>calling <00:19:07.075>the <00:19:07.250>domain <00:19:07.425>library.

352
00:19:10.345 --> 00:19:13.955
<00:19:10.345>This <00:19:10.500>has <00:19:10.656>several <00:19:10.811>names, <00:19:10.967>I'm <00:19:11.122>calling <00:19:11.278>it <00:19:11.433>the <00:19:11.589>domain <00:19:11.745>library.

353
00:19:14.525 --> 00:19:16.835
<00:19:14.525>Other <00:19:14.725>people <00:19:14.925>are <00:19:15.125>calling <00:19:15.325>it <00:19:15.525>the <00:19:15.725>data <00:19:15.925>library.

354
00:19:17.285 --> 00:19:19.555
<00:19:17.285>Other <00:19:17.485>people <00:19:17.685>are <00:19:17.885>calling <00:19:18.085>it <00:19:18.285>the <00:19:18.485>state <00:19:18.685>library

355
00:19:19.905 --> 00:19:23.035
<00:19:19.905>because <00:19:20.105>it's <00:19:20.305>about <00:19:20.504>all <00:19:20.705>of <00:19:20.905>those <00:19:21.105>free <00:19:21.305>things.

356
00:19:23.545 --> 00:19:25.195
<00:19:23.545>It's <00:19:23.895>about <00:19:24.245>your <00:19:24.595>domain <00:19:24.945>model.

357
00:19:25.465 --> 00:19:27.355
<00:19:25.465>Your <00:19:25.745>domain <00:19:26.024>model <00:19:26.304>is <00:19:26.584>about <00:19:26.865>data

358
00:19:27.535 --> 00:19:31.115
<00:19:27.535>and <00:19:27.710>of <00:19:27.885>course <00:19:28.060>holding <00:19:28.235>some <00:19:28.410>state <00:19:28.585>in <00:19:28.760>your <00:19:28.935>application.

359
00:19:31.945 --> 00:19:33.995
<00:19:31.945>This <00:19:32.225>is <00:19:32.504>where <00:19:32.784>your <00:19:33.064>model <00:19:33.345>lives.

360
00:19:34.425 --> 00:19:39.195
<00:19:34.425>This <00:19:34.565>is <00:19:34.705>also <00:19:34.845>where <00:19:34.985>classes <00:19:35.125>live, <00:19:35.264>where <00:19:35.405>uh, <00:19:35.544>the <00:19:35.685>which <00:19:35.825>uh,

361
00:19:39.265 --> 00:19:42.395
<00:19:39.265>work <00:19:39.545>which <00:19:39.825>operate <00:19:40.105>upon <00:19:40.385>your <00:19:40.665>models

362
00:19:43.025 --> 00:19:46.515
<00:19:43.025>like <00:19:43.258>classes <00:19:43.491>which <00:19:43.725>are <00:19:43.958>validating <00:19:44.191>your <00:19:44.425>models

363
00:19:46.735 --> 00:19:50.555
<00:19:46.735>or <00:19:46.935>classes <00:19:47.135>which <00:19:47.334>are <00:19:47.534>communicating <00:19:47.735>with <00:19:47.935>the <00:19:48.135>backend

364
00:19:50.655 --> 00:19:51.835
<00:19:50.655>to <00:19:51.009>load <00:19:51.363>or <00:19:51.717>store.

365
00:19:52.145 --> 00:19:56.635
<00:19:52.145>Some <00:19:52.320>models <00:19:52.495>Besides <00:19:52.670>this, <00:19:52.845>we <00:19:53.020>have <00:19:53.195>a <00:19:53.370>utility <00:19:53.545>layer.

366
00:19:57.065 --> 00:20:00.235
<00:19:57.065>This <00:19:57.298>is <00:19:57.531>just <00:19:57.765>for <00:19:57.998>general <00:19:58.231>purpose <00:19:58.465>utility

367
00:20:00.755 --> 00:20:03.275
<00:20:00.755>functions <00:20:01.221>like <00:20:01.688>authentication, <00:20:02.155>locking

368
00:20:03.575 --> 00:20:06.555
<00:20:03.575>or <00:20:03.730>converting <00:20:03.886>a <00:20:04.041>string <00:20:04.197>to <00:20:04.352>a <00:20:04.508>date <00:20:04.663>and <00:20:04.819>vice <00:20:04.975>versa.

369
00:20:08.705 --> 00:20:12.165
<00:20:08.705>If <00:20:08.845>you <00:20:08.985>have <00:20:09.125>the <00:20:09.264>structure, <00:20:09.405>you <00:20:09.544>have <00:20:09.685>a <00:20:09.824>first <00:20:09.965>big <00:20:10.105>advantage.

370
00:20:12.705 --> 00:20:14.805
<00:20:12.705>You <00:20:12.879>bring <00:20:13.054>a <00:20:13.230>lot <00:20:13.405>of <00:20:13.580>order <00:20:13.754>into <00:20:13.929>your <00:20:14.105>system.

371
00:20:15.565 --> 00:20:19.385
<00:20:15.565>It <00:20:15.705>is <00:20:15.845>quite <00:20:15.985>clear <00:20:16.125>which <00:20:16.265>part <00:20:16.405>of <00:20:16.545>the <00:20:16.685>system <00:20:16.825>belongs <00:20:16.965>where.

372
00:20:20.095 --> 00:20:22.955
<00:20:20.095>If <00:20:20.295>it <00:20:20.495>is <00:20:20.695>a <00:20:20.895>feature <00:20:21.095>which <00:20:21.295>deals <00:20:21.495>around

373
00:20:23.025 --> 00:20:24.955
<00:20:23.025>with <00:20:23.305>the <00:20:23.585>catalog, <00:20:23.865>it <00:20:24.145>goes <00:20:24.425>here.

374
00:20:25.735 --> 00:20:30.035
<00:20:25.735>If <00:20:25.890>it <00:20:26.046>is <00:20:26.201>a <00:20:26.357>reusable <00:20:26.512>component, <00:20:26.668>which <00:20:26.823>is <00:20:26.979>general <00:20:27.135>purpose,

375
00:20:30.335 --> 00:20:32.255
<00:20:30.335>it <00:20:30.685>goes <00:20:31.035>there <00:20:31.385>it <00:20:31.735>is.

376
00:20:32.355 --> 00:20:35.775
<00:20:32.355>If <00:20:32.495>it <00:20:32.635>is <00:20:32.775>about <00:20:32.915>your <00:20:33.055>domain <00:20:33.195>model <00:20:33.335>for <00:20:33.475>creating <00:20:33.615>an <00:20:33.755>order,

377
00:20:36.035 --> 00:20:40.015
<00:20:36.035>it <00:20:36.190>goes <00:20:36.346>into <00:20:36.501>the <00:20:36.657>domain <00:20:36.812>layer <00:20:36.968>of <00:20:37.123>the <00:20:37.279>ordering <00:20:37.435>domain.

378
00:20:40.235 --> 00:20:41.575
<00:20:40.235>So <00:20:40.476>this <00:20:40.717>is <00:20:40.958>a <00:20:41.199>big <00:20:41.441>advantage.

379
00:20:41.995 --> 00:20:44.855
<00:20:41.995>We <00:20:42.195>have <00:20:42.395>less <00:20:42.594>discussion <00:20:42.794>about <00:20:42.995>which <00:20:43.195>goes <00:20:43.395>there.

380
00:20:47.045 --> 00:20:50.455
<00:20:47.045>Another <00:20:47.278>advantage <00:20:47.511>is <00:20:47.745>we <00:20:47.978>can <00:20:48.211>easily <00:20:48.445>introduce

381
00:20:50.595 --> 00:20:51.815
<00:20:50.595>access <00:20:51.693>restrictions.

382
00:20:52.595 --> 00:20:56.135
<00:20:52.595>For <00:20:52.795>instance, <00:20:52.995>we <00:20:53.195>could <00:20:53.395>introduce <00:20:53.595>this <00:20:53.795>access <00:20:53.995>restriction

383
00:20:56.135 --> 00:20:58.015
<00:20:56.135>which <00:20:56.485>is <00:20:56.835>known <00:20:57.185>as <00:20:57.535>layering.

384
00:20:58.475 --> 00:21:01.415
<00:20:58.475>And <00:20:58.675>it <00:20:58.875>means <00:20:59.074>one <00:20:59.274>layer <00:20:59.475>is <00:20:59.675>only <00:20:59.875>allowed

385
00:21:01.475 --> 00:21:03.455
<00:21:01.475>to <00:21:01.941>access <00:21:02.408>layers <00:21:02.875>below.

386
00:21:04.525 --> 00:21:07.465
<00:21:04.525>In <00:21:04.680>this <00:21:04.836>case <00:21:04.991>the <00:21:05.147>feature <00:21:05.302>layer <00:21:05.458>would <00:21:05.613>only <00:21:05.769>be <00:21:05.925>allowed

387
00:21:07.485 --> 00:21:10.185
<00:21:07.485>to <00:21:07.764>access <00:21:08.044>UI <00:21:08.324>domain <00:21:08.604>and <00:21:08.885>utility.

388
00:21:10.645 --> 00:21:12.705
<00:21:10.645>The <00:21:10.925>domain <00:21:11.205>layer <00:21:11.485>is <00:21:11.764>only <00:21:12.045>allowed

389
00:21:12.705 --> 00:21:14.225
<00:21:12.705>to <00:21:13.047>access <00:21:13.389>the <00:21:13.731>utility <00:21:14.072>layer.

390
00:21:15.165 --> 00:21:17.385
<00:21:15.165>And <00:21:15.514>this <00:21:15.865>brings <00:21:16.215>several <00:21:16.565>advantages.

391
00:21:17.885 --> 00:21:21.465
<00:21:17.885>One <00:21:18.060>advantage <00:21:18.235>is <00:21:18.410>not <00:21:18.585>everything <00:21:18.760>can <00:21:18.935>be <00:21:19.110>in <00:21:19.285>the

392
00:21:21.545 --> 00:21:22.585
<00:21:21.545>Ming <00:21:21.857>with <00:21:22.169>everything <00:21:22.481>else.

393
00:21:23.215 --> 00:21:25.225
<00:21:23.215>This <00:21:23.495>is <00:21:23.774>exactly <00:21:24.054>what <00:21:24.334>we <00:21:24.615>want

394
00:21:25.245 --> 00:21:27.945
<00:21:25.245>to <00:21:25.524>prevent <00:21:25.804>when <00:21:26.084>doing <00:21:26.364>strategic <00:21:26.645>design.

395
00:21:28.445 --> 00:21:32.185
<00:21:28.445>And <00:21:28.600>another <00:21:28.756>advantage <00:21:28.911>is <00:21:29.067>you <00:21:29.222>cannot <00:21:29.378>end <00:21:29.533>up <00:21:29.689>with <00:21:29.845>cyclists

396
00:21:33.095 --> 00:21:36.185
<00:21:33.095>because <00:21:33.295>utility <00:21:33.495>is <00:21:33.695>not <00:21:33.895>allowed <00:21:34.095>to <00:21:34.295>use <00:21:34.495>feature.

397
00:21:36.585 --> 00:21:39.505
<00:21:36.585>I <00:21:36.725>mean <00:21:36.865>that <00:21:37.005>would <00:21:37.145>be <00:21:37.285>a <00:21:37.425>cycle <00:21:37.565>feature <00:21:37.705>is <00:21:37.845>using <00:21:37.985>utility.

398
00:21:39.775 --> 00:21:41.225
<00:21:39.775>Utility <00:21:40.210>is <00:21:40.645>using <00:21:41.080>feature

399
00:21:41.725 --> 00:21:44.945
<00:21:41.725>and <00:21:41.899>as <00:21:42.074>we <00:21:42.250>all <00:21:42.425>know, <00:21:42.600>the <00:21:42.774>compiler <00:21:42.949>is <00:21:43.125>not

400
00:21:44.945 --> 00:21:46.545
<00:21:44.945>that <00:21:45.411>happy <00:21:45.878>about <00:21:46.345>cyclist.

401
00:21:47.005 --> 00:21:51.185
<00:21:47.005>It <00:21:47.132>can <00:21:47.259>lead <00:21:47.386>to <00:21:47.514>worm <00:21:47.641>messages <00:21:47.768>or <00:21:47.895>just <00:21:48.023>to <00:21:48.150>a <00:21:48.277>strange <00:21:48.405>behavior.

402
00:21:51.645 --> 00:21:56.185
<00:21:51.645>It <00:21:51.772>really <00:21:51.899>depends. <00:21:52.026>And <00:21:52.154>so <00:21:52.281>we <00:21:52.408>can <00:21:52.535>just <00:21:52.663>get <00:21:52.790>rid <00:21:52.917>of <00:21:53.045>them

403
00:21:56.325 --> 00:22:00.065
<00:21:56.325>by <00:21:56.675>this <00:21:57.025>easy <00:21:57.375>convention <00:21:57.725>layering

404
00:22:00.625 --> 00:22:03.865
<00:22:00.625>a <00:22:00.858>first <00:22:01.091>convention, <00:22:01.325>a <00:22:01.558>first <00:22:01.791>access <00:22:02.025>restriction,

405
00:22:03.925 --> 00:22:07.265
<00:22:03.925>we <00:22:04.205>can <00:22:04.485>introduce <00:22:04.764>another <00:22:05.044>access <00:22:05.325>restriction.

406
00:22:07.285 --> 00:22:10.985
<00:22:07.285>And <00:22:07.412>if <00:22:07.539>you <00:22:07.666>ask <00:22:07.794>me <00:22:07.921>this <00:22:08.048>is <00:22:08.175>more <00:22:08.303>important <00:22:08.430>is <00:22:08.557>an <00:22:08.685>access

407
00:22:11.055 --> 00:22:12.465
<00:22:11.055>restriction <00:22:11.689>about <00:22:12.323>layers.

408
00:22:13.535 --> 00:22:17.585
<00:22:13.535>Here <00:22:13.675>I'm <00:22:13.815>saying <00:22:13.955>the <00:22:14.095>catalog <00:22:14.235>domain <00:22:14.375>is <00:22:14.515>only <00:22:14.655>allowed <00:22:14.795>to <00:22:14.935>talk

409
00:22:17.585 --> 00:22:20.545
<00:22:17.585>with <00:22:17.785>other <00:22:17.985>parts <00:22:18.185>of <00:22:18.385>catalog <00:22:18.585>and <00:22:18.785>we <00:22:18.985>shared

410
00:22:21.565 --> 00:22:24.785
<00:22:21.565>and <00:22:21.740>the <00:22:21.915>ordering <00:22:22.090>domain <00:22:22.265>is <00:22:22.440>only <00:22:22.615>allowed <00:22:22.790>to <00:22:22.965>talk

411
00:22:24.815 --> 00:22:27.305
<00:22:24.815>with <00:22:25.015>other <00:22:25.215>parts <00:22:25.415>of <00:22:25.615>ordering <00:22:25.815>and <00:22:26.015>with <00:22:26.215>shared.

412
00:22:28.165 --> 00:22:31.105
<00:22:28.165>Shared <00:22:28.340>is <00:22:28.514>not <00:22:28.690>allowed <00:22:28.865>to <00:22:29.040>talk <00:22:29.215>with <00:22:29.389>other <00:22:29.565>domains.

413
00:22:31.405 --> 00:22:34.385
<00:22:31.405>And <00:22:31.560>also <00:22:31.716>ordering <00:22:31.871>is <00:22:32.027>not <00:22:32.182>allowed <00:22:32.338>to <00:22:32.493>talk <00:22:32.649>with <00:22:32.805>catalog.

414
00:22:35.105 --> 00:22:37.885
<00:22:35.105>And <00:22:35.280>so <00:22:35.455>one <00:22:35.630>more <00:22:35.805>time, <00:22:35.980>by <00:22:36.155>using <00:22:36.330>this <00:22:36.505>idea

415
00:22:37.885 --> 00:22:41.845
<00:22:37.885>of <00:22:38.040>wrong <00:22:38.196>domain <00:22:38.351>driven <00:22:38.507>design, <00:22:38.662>we <00:22:38.818>prevent <00:22:38.973>this <00:22:39.129>in <00:22:39.285>doming

416
00:22:42.445 --> 00:22:45.565
<00:22:42.445>situation <00:22:42.678>where <00:22:42.911>everything <00:22:43.145>depends <00:22:43.378>on <00:22:43.611>everything <00:22:43.845>else.

417
00:22:47.285 --> 00:22:50.865
<00:22:47.285>This <00:22:47.565>makes <00:22:47.845>sure <00:22:48.125>your <00:22:48.405>partial <00:22:48.685>systems,

418
00:22:51.095 --> 00:22:54.025
<00:22:51.095>your <00:22:51.295>sub-domains <00:22:51.495>are <00:22:51.695>loosely <00:22:51.895>coupled <00:22:52.095>to <00:22:52.295>each <00:22:52.495>other.

419
00:22:54.725 --> 00:22:56.665
<00:22:54.725>But <00:22:54.958>please <00:22:55.191>bevy <00:22:55.425>at <00:22:55.658>the <00:22:55.891>shared <00:22:56.125>kernel.

420
00:22:57.245 --> 00:23:00.705
<00:22:57.245>The <00:22:57.419>shared <00:22:57.594>kernel <00:22:57.770>is <00:22:57.945>described <00:22:58.120>by <00:22:58.294>domain <00:22:58.469>driven <00:22:58.645>design,

421
00:23:01.285 --> 00:23:03.665
<00:23:01.285>but <00:23:01.485>it <00:23:01.685>is <00:23:01.885>not <00:23:02.085>the <00:23:02.285>most <00:23:02.485>famous <00:23:02.685>aspect

422
00:23:03.685 --> 00:23:04.945
<00:23:03.685>of <00:23:04.062>domain <00:23:04.441>driven <00:23:04.819>design.

423
00:23:05.405 --> 00:23:07.625
<00:23:05.405>It <00:23:05.605>comes <00:23:05.805>with <00:23:06.004>a <00:23:06.205>specific <00:23:06.405>kind <00:23:06.605>of <00:23:06.805>danger.

424
00:23:08.535 --> 00:23:11.785
<00:23:08.535>Just <00:23:08.675>imagine <00:23:08.815>you <00:23:08.955>have <00:23:09.095>a <00:23:09.235>feature <00:23:09.375>component <00:23:09.515>you <00:23:09.655>want <00:23:09.795>to <00:23:09.935>share

425
00:23:12.285 --> 00:23:14.905
<00:23:12.285>and <00:23:12.460>that's <00:23:12.635>why <00:23:12.810>you <00:23:12.985>are <00:23:13.160>putting <00:23:13.335>this <00:23:13.510>feature <00:23:13.685>component

426
00:23:15.375 --> 00:23:16.465
<00:23:15.375>into <00:23:15.702>the <00:23:16.029>shared <00:23:16.356>handle.

427
00:23:17.755 --> 00:23:20.355
<00:23:17.755>Normally <00:23:17.955>a <00:23:18.155>component <00:23:18.355>component <00:23:18.555>is <00:23:18.755>not <00:23:18.955>an <00:23:19.155>island.

428
00:23:20.955 --> 00:23:23.835
<00:23:20.955>Normally <00:23:21.235>a <00:23:21.514>component <00:23:21.794>belongs <00:23:22.074>upon <00:23:22.355>other

429
00:23:23.835 --> 00:23:25.275
<00:23:23.835>components <00:23:24.483>and <00:23:25.131>services.

430
00:23:25.775 --> 00:23:29.315
<00:23:25.775>And <00:23:25.950>so <00:23:26.125>you <00:23:26.300>also <00:23:26.475>need <00:23:26.650>to <00:23:26.825>move <00:23:27.000>those <00:23:27.175>components

431
00:23:29.615 --> 00:23:31.915
<00:23:29.615>and <00:23:29.895>services <00:23:30.175>into <00:23:30.455>the <00:23:30.735>shared <00:23:31.015>kernel.

432
00:23:32.295 --> 00:23:36.995
<00:23:32.295>And <00:23:32.470>guess <00:23:32.645>what? <00:23:32.820>Also <00:23:32.995>the <00:23:33.170>dependencies <00:23:33.345>can <00:23:33.520>have <00:23:33.695>dependencies.

433
00:23:37.335 --> 00:23:40.075
<00:23:37.335>And <00:23:37.510>so <00:23:37.685>you <00:23:37.860>also <00:23:38.035>need <00:23:38.210>to <00:23:38.385>pull <00:23:38.560>the <00:23:38.735>dependencies

434
00:23:40.135 --> 00:23:41.275
<00:23:40.135>of <00:23:40.648>the <00:23:41.161>dependencies

435
00:23:41.375 --> 00:23:44.715
<00:23:41.375>and <00:23:41.550>the <00:23:41.725>dependencies <00:23:41.900>of <00:23:42.075>the <00:23:42.250>dependencies <00:23:42.425>of <00:23:42.600>the <00:23:42.775>dependencies

436
00:23:44.855 --> 00:23:47.445
<00:23:44.855>and <00:23:45.010>so <00:23:45.166>on <00:23:45.321>and <00:23:45.477>so <00:23:45.632>forth <00:23:45.788>into <00:23:45.943>your <00:23:46.099>shared <00:23:46.255>candle.

437
00:23:48.105 --> 00:23:51.845
<00:23:48.105>And <00:23:48.245>so <00:23:48.385>if <00:23:48.525>you <00:23:48.665>don't <00:23:48.805>take <00:23:48.945>care, <00:23:49.085>you <00:23:49.225>will <00:23:49.365>wake <00:23:49.505>up

438
00:23:52.035 --> 00:23:53.565
<00:23:52.035>with <00:23:52.379>a <00:23:52.723>big <00:23:53.067>shared <00:23:53.412>candle

439
00:23:53.835 --> 00:23:56.365
<00:23:53.835>with <00:23:54.068>a <00:23:54.301>shared <00:23:54.535>candle <00:23:54.768>having <00:23:55.001>two <00:23:55.235>thirds

440
00:23:56.365 --> 00:23:58.245
<00:23:56.365>of <00:23:56.715>the <00:23:57.065>whole <00:23:57.415>software <00:23:57.765>system.

441
00:23:58.745 --> 00:24:02.365
<00:23:58.745>And <00:23:58.919>if <00:23:59.094>the <00:23:59.270>shared <00:23:59.445>candle <00:23:59.620>consists <00:23:59.794>of <00:23:59.969>two <00:24:00.145>thirds

442
00:24:02.385 --> 00:24:04.445
<00:24:02.385>of <00:24:02.735>the <00:24:03.085>whole <00:24:03.435>overall <00:24:03.785>system,

443
00:24:05.195 --> 00:24:08.165
<00:24:05.195>this <00:24:05.395>whole <00:24:05.595>game <00:24:05.794>does <00:24:05.995>not <00:24:06.195>make <00:24:06.395>sense <00:24:06.595>anymore,

444
00:24:08.835 --> 00:24:12.445
<00:24:08.835>then <00:24:09.035>you <00:24:09.235>still <00:24:09.435>have <00:24:09.635>this <00:24:09.835>not <00:24:10.035>maintainable <00:24:10.235>monolith.

445
00:24:13.165 --> 00:24:15.025
<00:24:13.165>So <00:24:13.445>please <00:24:13.725>take <00:24:14.004>care <00:24:14.284>about <00:24:14.565>this.

446
00:24:15.805 --> 00:24:19.665
<00:24:15.805>One <00:24:15.945>strategy <00:24:16.085>to <00:24:16.225>deal <00:24:16.365>with <00:24:16.505>with <00:24:16.645>this <00:24:16.785>is <00:24:16.925>also <00:24:17.065>taking <00:24:17.205>out

447
00:24:20.175 --> 00:24:22.585
<00:24:20.175>from <00:24:20.375>the <00:24:20.575>world <00:24:20.774>of <00:24:20.975>the <00:24:21.175>main <00:24:21.375>driven <00:24:21.575>design.

448
00:24:23.125 --> 00:24:24.825
<00:24:23.125>I'm <00:24:23.475>calling <00:24:23.825>it <00:24:24.175>an <00:24:24.525>API.

449
00:24:25.575 --> 00:24:28.915
<00:24:25.575>The <00:24:25.750>official <00:24:25.925>term <00:24:26.100>is <00:24:26.275>open <00:24:26.450>service <00:24:26.625>or <00:24:26.800>host <00:24:26.975>service.

450
00:24:30.015 --> 00:24:34.155
<00:24:30.015>But <00:24:30.155>uh, <00:24:30.295>the <00:24:30.435>term <00:24:30.575>service <00:24:30.715>has <00:24:30.855>a <00:24:30.995>different <00:24:31.135>meaning <00:24:31.275>in <00:24:31.415>Angola.

451
00:24:34.375 --> 00:24:37.635
<00:24:34.375>And <00:24:34.530>so <00:24:34.686>I'm <00:24:34.841>just <00:24:34.997>sticking <00:24:35.152>with <00:24:35.308>the <00:24:35.463>tiny <00:24:35.619>word <00:24:35.775>API.

452
00:24:38.215 --> 00:24:42.475
<00:24:38.215>It <00:24:38.322>also <00:24:38.430>fits <00:24:38.538>my <00:24:38.645>box <00:24:38.753>here, <00:24:38.861>so <00:24:38.968>I <00:24:39.076>guess <00:24:39.184>it's <00:24:39.291>quite <00:24:39.399>a <00:24:39.507>nice <00:24:39.615>name.

453
00:24:42.695 --> 00:24:44.555
<00:24:42.695>So <00:24:42.928>what's <00:24:43.161>an <00:24:43.395>API <00:24:43.628>in <00:24:43.861>that <00:24:44.095>sense?

454
00:24:44.625 --> 00:24:48.675
<00:24:44.625>Well, <00:24:44.780>an <00:24:44.936>API <00:24:45.091>in <00:24:45.247>that <00:24:45.402>sense <00:24:45.558>is <00:24:45.713>just <00:24:45.869>a <00:24:46.025>library

455
00:24:49.465 --> 00:24:53.395
<00:24:49.465>exporting <00:24:49.639>selected <00:24:49.814>stuff <00:24:49.990>from <00:24:50.165>a <00:24:50.340>domain <00:24:50.514>for <00:24:50.689>other <00:24:50.865>domains,

456
00:24:53.785 --> 00:24:55.635
<00:24:53.785>only <00:24:54.135>selected <00:24:54.485>stuff, <00:24:54.835>not <00:24:55.185>everything.

457
00:24:55.905 --> 00:24:59.115
<00:24:55.905>Perhaps <00:24:56.105>just <00:24:56.305>one <00:24:56.504>model <00:24:56.705>here, <00:24:56.905>the <00:24:57.105>product <00:24:57.305>model

458
00:24:59.535 --> 00:25:04.515
<00:24:59.535>and <00:24:59.710>perhaps <00:24:59.885>just <00:25:00.060>one <00:25:00.235>UI <00:25:00.410>element, <00:25:00.585>the <00:25:00.760>product <00:25:00.935>component

459
00:25:04.975 --> 00:25:05.995
<00:25:04.975>but <00:25:05.434>nothing <00:25:05.892>else.

460
00:25:06.775 --> 00:25:09.915
<00:25:06.775>And <00:25:06.930>so <00:25:07.086>you <00:25:07.241>can <00:25:07.397>expose <00:25:07.552>a <00:25:07.708>tiny <00:25:07.863>set <00:25:08.019>of <00:25:08.175>things

461
00:25:10.015 --> 00:25:12.515
<00:25:10.015>for <00:25:10.248>other <00:25:10.481>domains, <00:25:10.715>they <00:25:10.948>can <00:25:11.181>reuse <00:25:11.415>it.

462
00:25:13.095 --> 00:25:16.835
<00:25:13.095>And <00:25:13.295>when <00:25:13.495>we <00:25:13.695>speak <00:25:13.895>about <00:25:14.095>backwards <00:25:14.295>compat <00:25:14.495>backwards

463
00:25:16.835 --> 00:25:19.555
<00:25:16.835>compatibility, <00:25:17.068>we <00:25:17.301>only <00:25:17.535>need <00:25:17.768>to <00:25:18.001>make <00:25:18.235>sure

464
00:25:19.825 --> 00:25:23.595
<00:25:19.825>that <00:25:20.058>those <00:25:20.291>exported <00:25:20.525>things <00:25:20.758>stay <00:25:20.991>backwards <00:25:21.225>compatible.

465
00:25:24.335 --> 00:25:28.395
<00:25:24.335>The <00:25:24.475>rest <00:25:24.615>can <00:25:24.755>be <00:25:24.895>rewritten, <00:25:25.035>thrown <00:25:25.175>away, <00:25:25.315>bought <00:25:25.455>by <00:25:25.595>a <00:25:25.735>vendor.

466
00:25:28.695 --> 00:25:29.755
<00:25:28.695>It <00:25:29.013>does <00:25:29.331>not <00:25:29.649>matter.

467
00:25:30.135 --> 00:25:33.075
<00:25:30.135>You <00:25:30.485>cannot <00:25:30.835>break <00:25:31.185>something <00:25:31.535>outside

468
00:25:33.095 --> 00:25:36.835
<00:25:33.095>of <00:25:33.250>the <00:25:33.406>domain <00:25:33.561>if <00:25:33.717>you <00:25:33.872>are <00:25:34.028>just <00:25:34.183>changing <00:25:34.339>internal <00:25:34.495>stuff.

469
00:25:37.645 --> 00:25:41.665
<00:25:37.645>But <00:25:37.800>if <00:25:37.956>you <00:25:38.111>change <00:25:38.267>something <00:25:38.422>that <00:25:38.578>affects <00:25:38.733>your <00:25:38.889>API <00:25:39.045>this

470
00:25:41.685 --> 00:25:44.305
<00:25:41.685>or <00:25:41.860>that <00:25:42.034>way, <00:25:42.210>then <00:25:42.385>you <00:25:42.560>have <00:25:42.735>to <00:25:42.909>make <00:25:43.085>sure

471
00:25:44.495 --> 00:25:47.425
<00:25:44.495>because <00:25:44.728>it <00:25:44.961>can <00:25:45.195>cause <00:25:45.428>breaking <00:25:45.661>changes <00:25:45.895>in

472
00:25:47.425 --> 00:25:48.665
<00:25:47.425>other <00:25:47.704>parts <00:25:47.983>of <00:25:48.262>your <00:25:48.541>system.

473
00:25:51.035 --> 00:25:53.925
<00:25:51.035>Okay, <00:25:51.210>perhaps <00:25:51.385>you're <00:25:51.560>seeing <00:25:51.735>yeah, <00:25:51.910>that <00:25:52.085>really <00:25:52.260>makes <00:25:52.435>sense.

474
00:25:54.145 --> 00:25:57.725
<00:25:54.145>We <00:25:54.300>have <00:25:54.456>a <00:25:54.611>lot <00:25:54.767>of <00:25:54.922>order, <00:25:55.078>we <00:25:55.233>have <00:25:55.389>access <00:25:55.545>restrictions

475
00:25:58.075 --> 00:26:02.125
<00:25:58.075>that <00:25:58.275>prevents <00:25:58.475>this <00:25:58.675>intermingled <00:25:58.875>situation <00:25:59.075>and <00:25:59.275>also <00:25:59.475>cycles.

476
00:26:02.745 --> 00:26:06.005
<00:26:02.745>But <00:26:02.978>somehow <00:26:03.211>this <00:26:03.445>looks <00:26:03.678>exhausting, <00:26:03.911>doesn't <00:26:04.145>it?

477
00:26:06.515 --> 00:26:10.125
<00:26:06.515>Well <00:26:06.670>the <00:26:06.826>answer <00:26:06.981>is <00:26:07.137>it's <00:26:07.292>not <00:26:07.448>that <00:26:07.603>exhausting <00:26:07.759>at <00:26:07.915>all

478
00:26:10.395 --> 00:26:12.805
<00:26:10.395>because <00:26:10.675>it's <00:26:10.955>not <00:26:11.235>a <00:26:11.514>full <00:26:11.795>rectangle.

479
00:26:14.145 --> 00:26:17.505
<00:26:14.145>Normally <00:26:14.345>the <00:26:14.545>great <00:26:14.745>out <00:26:14.945>elements <00:26:15.145>are <00:26:15.345>quite <00:26:15.545>rare

480
00:26:18.405 --> 00:26:22.785
<00:26:18.405>in <00:26:18.545>those <00:26:18.685>domains <00:26:18.825>or <00:26:18.965>in <00:26:19.105>the <00:26:19.245>shared <00:26:19.385>candle <00:26:19.524>because <00:26:19.665>a <00:26:19.805>feature

481
00:26:22.925 --> 00:26:26.625
<00:26:22.925>and <00:26:23.080>a <00:26:23.236>domain <00:26:23.391>library <00:26:23.547>is <00:26:23.702>always <00:26:23.858>very <00:26:24.013>use <00:26:24.169>case <00:26:24.325>specific.

482
00:26:27.045 --> 00:26:31.465
<00:26:27.045>And <00:26:27.172>so <00:26:27.299>it <00:26:27.426>belongs <00:26:27.554>into <00:26:27.681>a <00:26:27.808>domain <00:26:27.935>which <00:26:28.063>is <00:26:28.190>always <00:26:28.317>about <00:26:28.445>use

483
00:26:31.465 --> 00:26:33.865
<00:26:31.465>cases, <00:26:31.814>never <00:26:32.165>about <00:26:32.514>technical <00:26:32.865>stuff.

484
00:26:34.845 --> 00:26:36.585
<00:26:34.845>And <00:26:35.125>on <00:26:35.405>the <00:26:35.685>other <00:26:35.965>side, <00:26:36.245>UI

485
00:26:36.685 --> 00:26:40.745
<00:26:36.685>and <00:26:36.885>utility <00:26:37.085>is <00:26:37.284>most <00:26:37.485>likely <00:26:37.685>something <00:26:37.885>you <00:26:38.085>want

486
00:26:40.745 --> 00:26:42.825
<00:26:40.745>to <00:26:41.024>share <00:26:41.304>across <00:26:41.584>all <00:26:41.864>the <00:26:42.145>domains.

487
00:26:43.355 --> 00:26:47.245
<00:26:43.355>It's <00:26:43.588>most <00:26:43.821>likely <00:26:44.055>something <00:26:44.288>technically <00:26:44.521>like <00:26:44.755>authentication

488
00:26:48.025 --> 00:26:50.485
<00:26:48.025>or <00:26:48.491>uh, <00:26:48.958>like <00:26:49.425>locking

489
00:26:50.745 --> 00:26:52.485
<00:26:50.745>or <00:26:51.094>like <00:26:51.445>displaying <00:26:51.794>a <00:26:52.145>date

490
00:26:53.105 --> 00:26:55.645
<00:26:53.105>is <00:26:53.305>not <00:26:53.505>use <00:26:53.705>case <00:26:53.905>specific <00:26:54.105>displaying <00:26:54.305>a <00:26:54.505>date.

491
00:26:55.985 --> 00:26:59.165
<00:26:55.985>And <00:26:56.140>so <00:26:56.296>it <00:26:56.451>very <00:26:56.607>likely <00:26:56.762>goes <00:26:56.918>into <00:26:57.073>the <00:26:57.229>shared <00:26:57.385>connel.

492
00:26:59.855 --> 00:27:02.835
<00:26:59.855>Of <00:27:00.088>course <00:27:00.321>there <00:27:00.555>is <00:27:00.788>always <00:27:01.021>an <00:27:01.255>exception

493
00:27:02.855 --> 00:27:04.075
<00:27:02.855>for <00:27:03.129>each <00:27:03.404>and <00:27:03.678>every <00:27:03.953>rule.

494
00:27:04.535 --> 00:27:07.395
<00:27:04.535>It <00:27:04.710>might <00:27:04.885>be <00:27:05.060>that <00:27:05.235>you <00:27:05.410>have <00:27:05.585>a <00:27:05.760>product <00:27:05.935>uh,

495
00:27:07.395 --> 00:27:09.995
<00:27:07.395>component <00:27:07.675>which <00:27:07.955>is <00:27:08.235>only <00:27:08.514>needed <00:27:08.795>here

496
00:27:10.415 --> 00:27:13.795
<00:27:10.415>and <00:27:10.542>in <00:27:10.669>this <00:27:10.796>case <00:27:10.924>it <00:27:11.051>would <00:27:11.178>just <00:27:11.305>place <00:27:11.433>it <00:27:11.560>into <00:27:11.687>the <00:27:11.815>catalog

497
00:27:13.935 --> 00:27:18.695
<00:27:13.935>domain <00:27:14.075>because <00:27:14.215>in <00:27:14.355>this <00:27:14.495>case <00:27:14.635>you <00:27:14.774>cannot <00:27:14.915>share <00:27:15.054>it <00:27:15.195>by <00:27:15.335>accident

498
00:27:19.005 --> 00:27:20.055
<00:27:19.005>with <00:27:19.477>other <00:27:19.950>domains.

499
00:27:20.055 --> 00:27:23.975
<00:27:20.055>And <00:27:20.195>you <00:27:20.335>know, <00:27:20.475>the <00:27:20.615>less <00:27:20.755>you <00:27:20.895>share <00:27:21.035>the <00:27:21.175>better <00:27:21.315>it <00:27:21.455>is

500
00:27:24.245 --> 00:27:28.375
<00:27:24.245>because <00:27:24.445>it <00:27:24.645>allows <00:27:24.844>you <00:27:25.044>to <00:27:25.245>loosely <00:27:25.445>couple <00:27:25.645>everything

501
00:27:28.715 --> 00:27:30.095
<00:27:28.715>to <00:27:28.963>the <00:27:29.211>rest <00:27:29.460>of <00:27:29.708>your <00:27:29.957>system.

502
00:27:30.435 --> 00:27:33.775
<00:27:30.435>And <00:27:30.668>loosely <00:27:30.901>coupling <00:27:31.135>preventing <00:27:31.368>this <00:27:31.601>situation <00:27:31.835>is

503
00:27:33.965 --> 00:27:35.495
<00:27:33.965>what <00:27:34.240>this <00:27:34.515>is <00:27:34.791>all <00:27:35.066>about <00:27:35.341>it.

504
00:27:36.915 --> 00:27:38.845
<00:27:36.915>Okay? <00:27:37.195>So <00:27:37.475>it's <00:27:37.754>not <00:27:38.034>that <00:27:38.315>exhausting.

505
00:27:39.505 --> 00:27:43.365
<00:27:39.505>And <00:27:39.680>another <00:27:39.855>reason <00:27:40.030>why <00:27:40.205>it's <00:27:40.380>not <00:27:40.555>that <00:27:40.730>exhausting <00:27:40.905>is

506
00:27:44.005 --> 00:27:46.725
<00:27:44.005>creating <00:27:44.180>a <00:27:44.355>library <00:27:44.530>is <00:27:44.705>really <00:27:44.880>a <00:27:45.055>piece <00:27:45.230>of <00:27:45.405>cake.

507
00:27:47.265 --> 00:27:50.365
<00:27:47.265>We <00:27:47.420>will <00:27:47.576>see <00:27:47.731>it's <00:27:47.887>in <00:27:48.042>some <00:27:48.198>seconds, <00:27:48.353>it's <00:27:48.509>really <00:27:48.665>easy,

508
00:27:50.515 --> 00:27:53.325
<00:27:50.515>it's <00:27:50.715>just <00:27:50.915>one <00:27:51.115>comment <00:27:51.315>and <00:27:51.515>she <00:27:51.715>generate <00:27:51.915>library

509
00:27:53.785 --> 00:27:55.085
<00:27:53.785>and <00:27:54.175>we <00:27:54.565>have <00:27:54.955>everything

510
00:27:58.995 --> 00:28:03.445
<00:27:58.995>just <00:27:59.169>one <00:27:59.344>tiny <00:27:59.520>piece <00:27:59.695>of <00:27:59.870>theory <00:28:00.044>about <00:28:00.219>the <00:28:00.395>domain

511
00:28:03.545 --> 00:28:05.445
<00:28:03.545>before <00:28:03.825>we <00:28:04.105>look <00:28:04.385>into <00:28:04.665>an <00:28:04.945>example.

512
00:28:06.465 --> 00:28:09.965
<00:28:06.465>If <00:28:06.592>we <00:28:06.719>go <00:28:06.846>by <00:28:06.974>the <00:28:07.101>book, <00:28:07.228>we <00:28:07.355>would <00:28:07.483>isolate <00:28:07.610>our <00:28:07.737>domain <00:28:07.865>model,

513
00:28:10.185 --> 00:28:12.885
<00:28:10.185>the <00:28:10.418>domain <00:28:10.651>model <00:28:10.885>with <00:28:11.118>the <00:28:11.351>product <00:28:11.585>interface

514
00:28:13.395 --> 00:28:16.525
<00:28:13.395>with <00:28:13.675>the <00:28:13.955>let's <00:28:14.235>say <00:28:14.514>category <00:28:14.795>class

515
00:28:16.825 --> 00:28:18.165
<00:28:16.825>or <00:28:17.227>with <00:28:17.629>the <00:28:18.031>class

516
00:28:18.195 --> 00:28:21.285
<00:28:18.195>that <00:28:18.395>is <00:28:18.595>loading <00:28:18.794>the <00:28:18.995>product <00:28:19.195>from <00:28:19.395>the <00:28:19.595>backend.

517
00:28:22.185 --> 00:28:26.485
<00:28:22.185>And <00:28:22.340>when <00:28:22.496>doing <00:28:22.651>so, <00:28:22.807>according <00:28:22.962>the <00:28:23.118>book, <00:28:23.273>according <00:28:23.429>the <00:28:23.585>theory

518
00:28:26.665 --> 00:28:28.005
<00:28:26.665>of <00:28:27.067>domain <00:28:27.469>driven <00:28:27.871>design,

519
00:28:28.385 --> 00:28:30.805
<00:28:28.385>we <00:28:28.618>would <00:28:28.851>subdivide <00:28:29.085>it <00:28:29.318>into <00:28:29.551>three <00:28:29.785>bots.

520
00:28:31.185 --> 00:28:35.155
<00:28:31.185>In <00:28:31.325>the <00:28:31.465>middle <00:28:31.605>we <00:28:31.745>have <00:28:31.885>the <00:28:32.024>domain <00:28:32.165>logic, <00:28:32.304>the <00:28:32.445>domain <00:28:32.585>model

521
00:28:35.155 --> 00:28:39.595
<00:28:35.155>with <00:28:35.355>the <00:28:35.555>logic <00:28:35.754>and <00:28:35.955>our <00:28:36.155>entities <00:28:36.355>behind <00:28:36.555>it.

522
00:28:39.695 --> 00:28:41.315
<00:28:39.695>We <00:28:39.975>have <00:28:40.254>the <00:28:40.534>data <00:28:40.814>access <00:28:41.095>layer,

523
00:28:41.365 --> 00:28:43.595
<00:28:41.365>which <00:28:41.645>is <00:28:41.925>called <00:28:42.205>the <00:28:42.485>infrastructure <00:28:42.765>layer.

524
00:28:43.695 --> 00:28:44.915
<00:28:43.695>In <00:28:44.061>domain <00:28:44.427>driven <00:28:44.793>design,

525
00:28:45.335 --> 00:28:49.355
<00:28:45.335>it <00:28:45.535>abstracts <00:28:45.735>your <00:28:45.935>whole <00:28:46.135>infrastructure, <00:28:46.335>which <00:28:46.535>is <00:28:46.735>first

526
00:28:49.455 --> 00:28:52.035
<00:28:49.455>and <00:28:49.655>foremost <00:28:49.855>your <00:28:50.054>backend <00:28:50.254>with <00:28:50.455>the <00:28:50.655>data <00:28:50.855>services.

527
00:28:52.575 --> 00:28:56.515
<00:28:52.575>But <00:28:52.775>the <00:28:52.975>infrastructure <00:28:53.175>is <00:28:53.375>also <00:28:53.575>about <00:28:53.775>browser <00:28:53.975>APIs.

528
00:28:57.095 --> 00:29:00.715
<00:28:57.095>We <00:28:57.328>want <00:28:57.561>uh, <00:28:57.795>ourselves <00:28:58.028>loosely <00:28:58.261>coupled <00:28:58.495>to.

529
00:29:01.495 --> 00:29:04.395
<00:29:01.495>And <00:29:01.669>then <00:29:01.844>we <00:29:02.020>have <00:29:02.195>the <00:29:02.370>application <00:29:02.544>layer <00:29:02.719>with <00:29:02.895>facades.

530
00:29:04.775 --> 00:29:08.915
<00:29:04.775>Uh, <00:29:04.950>facade <00:29:05.125>takes <00:29:05.300>care <00:29:05.475>about <00:29:05.650>state <00:29:05.825>management <00:29:06.000>plus <00:29:06.175>it

531
00:29:09.275 --> 00:29:11.235
<00:29:09.275>orchestrates <00:29:09.555>all <00:29:09.835>the <00:29:10.115>bits <00:29:10.395>in <00:29:10.675>here.

532
00:29:11.575 --> 00:29:13.035
<00:29:11.575>For <00:29:11.903>a <00:29:12.232>specific <00:29:12.560>use <00:29:12.889>case.

533
00:29:13.905 --> 00:29:17.915
<00:29:13.905>That <00:29:14.080>means <00:29:14.254>your <00:29:14.430>smart <00:29:14.605>component <00:29:14.780>here <00:29:14.955>does <00:29:15.129>not <00:29:15.305>need

534
00:29:17.915 --> 00:29:20.195
<00:29:17.915>to <00:29:18.195>know <00:29:18.475>the <00:29:18.754>full <00:29:19.034>domain <00:29:19.315>model

535
00:29:20.295 --> 00:29:22.715
<00:29:20.295>and <00:29:20.645>the <00:29:20.995>full <00:29:21.345>infrastructure <00:29:21.695>classes.

536
00:29:23.415 --> 00:29:25.395
<00:29:23.415>It <00:29:23.648>only <00:29:23.881>needs <00:29:24.115>to <00:29:24.348>know <00:29:24.581>one <00:29:24.815>facade.

537
00:29:25.695 --> 00:29:27.035
<00:29:25.695>It <00:29:25.996>talks <00:29:26.298>to <00:29:26.599>the <00:29:26.901>facade

538
00:29:27.095 --> 00:29:29.915
<00:29:27.095>and <00:29:27.375>the <00:29:27.655>facade <00:29:27.935>orchestrates <00:29:28.215>everything <00:29:28.495>so

539
00:29:29.915 --> 00:29:33.355
<00:29:29.915>that <00:29:30.148>the <00:29:30.381>parts <00:29:30.615>here <00:29:30.848>work <00:29:31.081>seamlessly <00:29:31.315>together

540
00:29:33.815 --> 00:29:35.955
<00:29:33.815>to <00:29:34.048>fulfill <00:29:34.281>this <00:29:34.515>or <00:29:34.748>that <00:29:34.981>use <00:29:35.215>case.

541
00:29:37.065 --> 00:29:41.885
<00:29:37.065>And <00:29:37.220>besides <00:29:37.376>this, <00:29:37.531>it <00:29:37.687>can <00:29:37.842>take <00:29:37.998>care <00:29:38.153>about <00:29:38.309>state <00:29:38.465>management,

542
00:29:42.015 --> 00:29:44.205
<00:29:42.015>which <00:29:42.248>means <00:29:42.481>it <00:29:42.715>can <00:29:42.948>cache <00:29:43.181>some <00:29:43.415>data.

543
00:29:45.455 --> 00:29:48.795
<00:29:45.455>You <00:29:45.629>don't <00:29:45.804>want <00:29:45.980>to <00:29:46.155>download <00:29:46.330>the <00:29:46.504>same <00:29:46.679>data <00:29:46.855>time.

544
00:29:48.895 --> 00:29:51.715
<00:29:48.895>And <00:29:49.095>again, <00:29:49.295>that's <00:29:49.495>why <00:29:49.695>we <00:29:49.895>need <00:29:50.095>state <00:29:50.295>management.

545
00:29:52.655 --> 00:29:56.035
<00:29:52.655>And <00:29:52.795>for <00:29:52.935>this <00:29:53.075>we <00:29:53.215>can <00:29:53.355>get <00:29:53.495>started <00:29:53.635>with <00:29:53.774>a <00:29:53.915>simple <00:29:54.055>solution

546
00:29:56.825 --> 00:29:58.395
<00:29:56.825>like <00:29:57.291>a <00:29:57.758>behavior <00:29:58.225>subject.

547
00:29:58.935 --> 00:30:03.195
<00:29:58.935>And <00:29:59.051>then <00:29:59.168>later <00:29:59.284>if <00:29:59.401>you <00:29:59.518>feel <00:29:59.635>the <00:29:59.751>need, <00:29:59.868>we <00:29:59.985>can <00:30:00.101>switch <00:30:00.218>it <00:30:00.335>out

548
00:30:03.815 --> 00:30:07.995
<00:30:03.815>by <00:30:04.048>uh, <00:30:04.281>solution <00:30:04.515>like <00:30:04.748>redux <00:30:04.981>and <00:30:05.215>cx.

549
00:30:09.405 --> 00:30:11.705
<00:30:09.405>The <00:30:09.580>rest <00:30:09.754>of <00:30:09.930>the <00:30:10.105>system <00:30:10.280>will <00:30:10.455>not <00:30:10.629>even <00:30:10.805>notice

550
00:30:12.015 --> 00:30:15.145
<00:30:12.015>because <00:30:12.170>the <00:30:12.326>rest <00:30:12.481>of <00:30:12.637>the <00:30:12.792>system <00:30:12.948>only <00:30:13.103>talks <00:30:13.259>with <00:30:13.415>the

551
00:30:15.805 --> 00:30:19.225
<00:30:15.805>and <00:30:15.960>the <00:30:16.116>rest <00:30:16.271>of <00:30:16.427>the <00:30:16.582>system <00:30:16.738>is <00:30:16.893>not <00:30:17.049>interested <00:30:17.205>into

552
00:30:19.605 --> 00:30:21.465
<00:30:19.605>how <00:30:19.885>the <00:30:20.165>F <00:30:20.445>is <00:30:20.725>managing <00:30:21.005>data.

553
00:30:22.345 --> 00:30:25.835
<00:30:22.345>This <00:30:22.578>really <00:30:22.811>allows <00:30:23.045>you <00:30:23.278>to <00:30:23.511>introduce <00:30:23.745>redux

554
00:30:25.975 --> 00:30:30.935
<00:30:25.975>and <00:30:26.091>share <00:30:26.208>X <00:30:26.324>When <00:30:26.441>you <00:30:26.558>feel <00:30:26.675>you <00:30:26.791>need <00:30:26.908>it, <00:30:27.024>you <00:30:27.141>can <00:30:27.258>postpone <00:30:27.375>it

555
00:30:31.305 --> 00:30:36.135
<00:30:31.305>until <00:30:31.421>you <00:30:31.538>really <00:30:31.655>uh, <00:30:31.771>can <00:30:31.888>use <00:30:32.005>it <00:30:32.121>or <00:30:32.238>it <00:30:32.355>makes <00:30:32.471>sense <00:30:32.588>for <00:30:32.705>you.

556
00:30:37.445 --> 00:30:39.255
<00:30:37.445>Okay, <00:30:37.794>so <00:30:38.145>much <00:30:38.495>for <00:30:38.845>theory,

557
00:30:40.055 --> 00:30:42.615
<00:30:40.055>I <00:30:40.230>would <00:30:40.405>say <00:30:40.580>we <00:30:40.755>have <00:30:40.930>seen <00:30:41.105>enough <00:30:41.280>of <00:30:41.455>theory.

558
00:30:43.155 --> 00:30:45.775
<00:30:43.155>Now <00:30:43.355>let's <00:30:43.555>have <00:30:43.754>a <00:30:43.955>look <00:30:44.155>into <00:30:44.355>an <00:30:44.555>example

559
00:30:52.515 --> 00:30:53.015
<00:30:52.515>For <00:30:52.965>this.

560
00:30:53.355 --> 00:30:57.415
<00:30:53.355>Let <00:30:53.495>me <00:30:53.635>switch <00:30:53.775>over <00:30:53.915>to <00:30:54.055>an <00:30:54.195>application <00:30:54.335>I <00:30:54.475>brought <00:30:54.615>with <00:30:54.755>me.

561
00:30:59.275 --> 00:31:02.585
<00:30:59.275>Where <00:30:59.508>is <00:30:59.741>this <00:30:59.975>application? <00:31:00.208>It's <00:31:00.441>not <00:31:00.675>here.

562
00:31:03.375 --> 00:31:06.775
<00:31:03.375>It's <00:31:04.775>VR

563
00:31:07.065 --> 00:31:08.895
<00:31:07.065>developers, <00:31:07.765>it's <00:31:08.465>there.

564
00:31:12.095 --> 00:31:14.035
<00:31:12.095>And <00:31:12.270>let's <00:31:12.445>have <00:31:12.620>a <00:31:12.795>look <00:31:12.970>at <00:31:13.145>the <00:31:13.320>source <00:31:13.495>code.

565
00:31:17.645 --> 00:31:21.105
<00:31:17.645>So <00:31:17.800>what <00:31:17.956>we <00:31:18.111>see <00:31:18.267>here, <00:31:18.422>it's <00:31:18.578>already <00:31:18.733>a <00:31:18.889>mono <00:31:19.045>repository.

566
00:31:21.695 --> 00:31:23.385
<00:31:21.695>I've <00:31:21.975>created <00:31:22.254>it <00:31:22.534>with <00:31:22.814>an <00:31:23.095>ax,

567
00:31:23.405 --> 00:31:27.505
<00:31:23.405>but <00:31:23.545>at <00:31:23.685>first <00:31:23.825>side <00:31:23.965>it <00:31:24.105>looks <00:31:24.245>like <00:31:24.385>a <00:31:24.524>traditional <00:31:24.665>CLI <00:31:24.805>project.

568
00:31:28.125 --> 00:31:31.465
<00:31:28.125>The <00:31:28.405>only <00:31:28.685>tiny <00:31:28.965>difference <00:31:29.245>is <00:31:29.525>instead

569
00:31:31.465 --> 00:31:34.545
<00:31:31.465>of <00:31:31.620>having <00:31:31.776>a <00:31:31.931>projects <00:31:32.087>folder, <00:31:32.242>we <00:31:32.398>have <00:31:32.553>an <00:31:32.709>apps <00:31:32.865>folder

570
00:31:34.685 --> 00:31:38.185
<00:31:34.685>and <00:31:34.860>a <00:31:35.034>lips <00:31:35.210>folder <00:31:35.385>and <00:31:35.560>you <00:31:35.735>can <00:31:35.909>guess <00:31:36.085>what's

571
00:31:38.185 --> 00:31:39.545
<00:31:38.185>what <00:31:38.491>those <00:31:38.797>folders <00:31:39.103>are <00:31:39.409>about.

572
00:31:40.045 --> 00:31:43.385
<00:31:40.045>The <00:31:40.278>apps <00:31:40.511>folder <00:31:40.745>is <00:31:40.978>about <00:31:41.211>your <00:31:41.445>applications.

573
00:31:43.815 --> 00:31:46.665
<00:31:43.815>Here <00:31:44.048>I <00:31:44.281>have <00:31:44.515>a <00:31:44.748>pick <00:31:44.981>monolith, <00:31:45.215>uh,

574
00:31:46.675 --> 00:31:49.225
<00:31:46.675>deployment <00:31:47.024>monolith <00:31:47.375>just <00:31:47.725>called <00:31:48.075>ui.

575
00:31:50.215 --> 00:31:54.025
<00:31:50.215>This <00:31:50.342>is <00:31:50.469>not <00:31:50.596>by <00:31:50.724>definition <00:31:50.851>you <00:31:50.978>also <00:31:51.105>could <00:31:51.233>go <00:31:51.360>with <00:31:51.487>a <00:31:51.615>lot

576
00:31:54.025 --> 00:31:55.425
<00:31:54.025>of <00:31:54.655>tiny <00:31:55.284>applications.

577
00:31:56.055 --> 00:32:00.025
<00:31:56.055>Then <00:31:56.195>we <00:31:56.335>will <00:31:56.475>talk <00:31:56.615>about <00:31:56.755>micro <00:31:56.895>front, <00:31:57.035>which <00:31:57.175>is <00:31:57.315>also <00:31:57.455>an

578
00:32:00.745 --> 00:32:04.025
<00:32:00.745>exciting <00:32:00.919>topic <00:32:01.094>and <00:32:01.270>I'm <00:32:01.445>doing <00:32:01.620>it <00:32:01.794>a <00:32:01.969>lot <00:32:02.145>nowadays.

579
00:32:04.205 --> 00:32:07.545
<00:32:04.205>But <00:32:04.360>for <00:32:04.516>the <00:32:04.671>time <00:32:04.827>being <00:32:04.982>for <00:32:05.138>this <00:32:05.293>talk, <00:32:05.449>let's <00:32:05.605>stick

580
00:32:07.545 --> 00:32:10.985
<00:32:07.545>with <00:32:07.720>just <00:32:07.895>one <00:32:08.070>topic, <00:32:08.245>namely <00:32:08.420>with <00:32:08.595>domain <00:32:08.770>driven <00:32:08.945>design.

581
00:32:11.045 --> 00:32:15.105
<00:32:11.045>And <00:32:11.200>for <00:32:11.356>this <00:32:11.511>going <00:32:11.667>with <00:32:11.822>uh, <00:32:11.978>deployment <00:32:12.133>monolith <00:32:12.289>is <00:32:12.445>okay,

582
00:32:15.445 --> 00:32:16.545
<00:32:15.445>not <00:32:15.775>the <00:32:16.105>only <00:32:16.435>option

583
00:32:16.565 --> 00:32:20.185
<00:32:16.565>but <00:32:16.915>okay, <00:32:17.265>far <00:32:17.615>more <00:32:17.965>important

584
00:32:20.805 --> 00:32:22.145
<00:32:20.805>is <00:32:21.207>the <00:32:21.609>library <00:32:22.011>folder

585
00:32:22.335 --> 00:32:26.185
<00:32:22.335>because <00:32:22.475>as <00:32:22.615>you <00:32:22.755>see <00:32:22.895>here, <00:32:23.035>it <00:32:23.175>is <00:32:23.315>subdivided <00:32:23.455>in <00:32:23.595>the <00:32:23.735>domains

586
00:32:26.485 --> 00:32:28.665
<00:32:26.485>and <00:32:26.659>here <00:32:26.834>is <00:32:27.010>a <00:32:27.185>folder <00:32:27.360>for <00:32:27.534>the <00:32:27.709>shared <00:32:27.885>current.

587
00:32:29.675 --> 00:32:31.815
<00:32:29.675>If <00:32:29.908>we <00:32:30.141>look <00:32:30.375>into <00:32:30.608>the <00:32:30.841>catalog <00:32:31.075>domain,

588
00:32:32.275 --> 00:32:35.495
<00:32:32.275>we <00:32:32.402>see <00:32:32.529>it <00:32:32.656>is <00:32:32.784>just <00:32:32.911>a <00:32:33.038>folder <00:32:33.165>with <00:32:33.293>a <00:32:33.420>bunch <00:32:33.547>of <00:32:33.675>libraries.

589
00:32:35.825 --> 00:32:37.375
<00:32:35.825>There <00:32:36.173>is <00:32:36.522>a <00:32:36.871>feature <00:32:37.220>library

590
00:32:37.835 --> 00:32:41.845
<00:32:37.835>and <00:32:38.010>feature <00:32:38.185>library, <00:32:38.360>a <00:32:38.535>library <00:32:38.710>with <00:32:38.885>my <00:32:39.060>domain <00:32:39.235>logic.

591
00:32:42.665 --> 00:32:45.285
<00:32:42.665>And <00:32:42.898>uh, <00:32:43.131>there <00:32:43.365>is <00:32:43.598>even <00:32:43.831>an <00:32:44.065>API.

592
00:32:46.735 --> 00:32:49.595
<00:32:46.735>If <00:32:46.968>we <00:32:47.201>look <00:32:47.435>into <00:32:47.668>the <00:32:47.901>feature <00:32:48.135>module,

593
00:32:54.325 --> 00:32:56.185
<00:32:54.325>we <00:32:54.558>see <00:32:54.791>there <00:32:55.025>is <00:32:55.258>an <00:32:55.491>index <00:32:55.725>tier.

594
00:32:57.265 --> 00:33:01.585
<00:32:57.265>Honestly, <00:32:57.420>each <00:32:57.576>and <00:32:57.731>every <00:32:57.887>library <00:32:58.042>has <00:32:58.198>such <00:32:58.353>an <00:32:58.509>index <00:32:58.665>ds

595
00:33:02.125 --> 00:33:03.425
<00:33:02.125>and <00:33:02.514>I'm <00:33:02.905>always <00:33:03.295>saying

596
00:33:03.495 --> 00:33:07.385
<00:33:03.495>because <00:33:03.669>of <00:33:03.844>this <00:33:04.020>index <00:33:04.195>Ds, <00:33:04.370>it <00:33:04.544>already <00:33:04.719>makes <00:33:04.895>sense

597
00:33:07.525 --> 00:33:10.265
<00:33:07.525>to <00:33:07.805>subdivide <00:33:08.085>an <00:33:08.365>application <00:33:08.645>into <00:33:08.925>libraries

598
00:33:10.735 --> 00:33:13.625
<00:33:10.735>because <00:33:11.014>this <00:33:11.294>is <00:33:11.574>what <00:33:11.854>other <00:33:12.135>parts

599
00:33:13.645 --> 00:33:15.905
<00:33:13.645>of <00:33:13.845>your <00:33:14.045>system <00:33:14.245>will <00:33:14.445>see <00:33:14.645>from <00:33:14.845>your <00:33:15.045>library.

600
00:33:16.795 --> 00:33:20.865
<00:33:16.795>Everything <00:33:16.995>you <00:33:17.195>export <00:33:17.395>here <00:33:17.595>should <00:33:17.795>be <00:33:17.995>backwards <00:33:18.195>compatible.

601
00:33:21.275 --> 00:33:24.945
<00:33:21.275>Everything <00:33:21.450>you <00:33:21.625>don't <00:33:21.800>export <00:33:21.975>here <00:33:22.150>can <00:33:22.325>be <00:33:22.500>changed <00:33:22.675>afterwards

602
00:33:25.215 --> 00:33:29.665
<00:33:25.215>because <00:33:25.448>it's <00:33:25.681>only <00:33:25.915>seen <00:33:26.148>within <00:33:26.381>your <00:33:26.615>one

603
00:33:29.845 --> 00:33:30.945
<00:33:29.845>and <00:33:30.340>only <00:33:30.835>library.

604
00:33:31.925 --> 00:33:34.585
<00:33:31.925>So <00:33:32.125>we <00:33:32.325>are <00:33:32.524>really <00:33:32.725>talking <00:33:32.925>about <00:33:33.125>secrets <00:33:33.325>here

605
00:33:35.205 --> 00:33:39.025
<00:33:35.205>and <00:33:35.405>I'm <00:33:35.605>always <00:33:35.804>seeing <00:33:36.004>secrets <00:33:36.205>are <00:33:36.405>one <00:33:36.605>aspect

606
00:33:39.045 --> 00:33:40.665
<00:33:39.045>of <00:33:39.511>a <00:33:39.978>solid <00:33:40.445>architecture.

607
00:33:41.045 --> 00:33:42.665
<00:33:41.045>It <00:33:41.325>is <00:33:41.605>good <00:33:41.885>to <00:33:42.165>have <00:33:42.445>secrets

608
00:33:42.855 --> 00:33:46.025
<00:33:42.855>because <00:33:43.030>everything <00:33:43.205>you <00:33:43.380>keep <00:33:43.555>a <00:33:43.730>secret <00:33:43.905>can <00:33:44.080>be <00:33:44.255>changed

609
00:33:46.025 --> 00:33:47.105
<00:33:46.025>easily <00:33:46.997>afterwards.

610
00:33:48.335 --> 00:33:51.865
<00:33:48.335>That <00:33:48.490>means <00:33:48.646>we <00:33:48.801>have <00:33:48.957>two <00:33:49.112>levels <00:33:49.268>of <00:33:49.423>visibility <00:33:49.579>in <00:33:49.735>here.

611
00:33:52.325 --> 00:33:56.745
<00:33:52.325>We <00:33:52.480>have <00:33:52.636>the <00:33:52.791>visibility <00:33:52.947>for <00:33:53.102>your <00:33:53.258>library <00:33:53.413>within <00:33:53.569>the <00:33:53.725>domain,

612
00:33:57.315 --> 00:34:00.105
<00:33:57.315>which <00:33:57.548>is <00:33:57.781>defined <00:33:58.015>by <00:33:58.248>the <00:33:58.481>index <00:33:58.715>desks.

613
00:34:00.525 --> 00:34:03.705
<00:34:00.525>And <00:34:00.700>we <00:34:00.875>have <00:34:01.050>the <00:34:01.225>visibility <00:34:01.400>for <00:34:01.575>your <00:34:01.750>whole <00:34:01.925>domain,

614
00:34:04.035 --> 00:34:07.505
<00:34:04.035>which <00:34:04.235>is <00:34:04.435>just <00:34:04.635>defined <00:34:04.835>by <00:34:05.035>your <00:34:05.235>API <00:34:05.435>layer.

615
00:34:07.755 --> 00:34:10.305
<00:34:07.755>Everything <00:34:07.988>you <00:34:08.221>are <00:34:08.455>exporting <00:34:08.688>here <00:34:08.921>can <00:34:09.155>be

616
00:34:10.305 --> 00:34:11.505
<00:34:10.304>seen <00:34:10.665>by <00:34:11.025>other <00:34:11.385>domains.

617
00:34:11.715 --> 00:34:15.145
<00:34:11.715>Everything <00:34:11.890>you <00:34:12.065>are <00:34:12.240>exporting <00:34:12.415>there <00:34:12.590>within <00:34:12.765>the <00:34:12.940>index <00:34:13.115>test

618
00:34:15.685 --> 00:34:18.705
<00:34:15.685>can <00:34:15.860>be <00:34:16.034>seen <00:34:16.210>by <00:34:16.384>other <00:34:16.560>libraries <00:34:16.735>of <00:34:16.909>your <00:34:17.085>domain.

619
00:34:20.215 --> 00:34:23.905
<00:34:20.215>Yeah, <00:34:20.342>and <00:34:20.469>when <00:34:20.596>we <00:34:20.724>look <00:34:20.851>into <00:34:20.978>this <00:34:21.105>domain, <00:34:21.233>we <00:34:21.360>see <00:34:21.487>a <00:34:21.615>lot

620
00:34:23.905 --> 00:34:28.425
<00:34:23.905>of <00:34:24.138>typically <00:34:24.371>angular <00:34:24.605>building <00:34:24.838>blocks <00:34:25.071>like <00:34:25.305>NG

621
00:34:28.575 --> 00:34:31.705
<00:34:28.574>modules, <00:34:28.924>angular <00:34:29.274>components, <00:34:29.625>angular <00:34:29.975>services,

622
00:34:32.035 --> 00:34:33.465
<00:34:32.034>pipes <00:34:32.464>and <00:34:32.893>so <00:34:33.322>on.

623
00:34:33.725 --> 00:34:37.225
<00:34:33.725>So <00:34:33.852>it <00:34:33.979>is <00:34:34.106>really <00:34:34.234>not <00:34:34.361>the <00:34:34.488>big <00:34:34.615>deal, <00:34:34.743>it <00:34:34.870>is <00:34:34.997>just <00:34:35.125>about

624
00:34:37.935 --> 00:34:39.225
<00:34:37.935>decomposing <00:34:38.515>epic <00:34:39.096>system.

625
00:34:41.045 --> 00:34:43.265
<00:34:41.045>If <00:34:41.220>you <00:34:41.395>look <00:34:41.570>here, <00:34:41.745>you <00:34:41.920>see <00:34:42.095>that <00:34:42.270>my <00:34:42.445>feature,

626
00:34:43.525 --> 00:34:48.145
<00:34:43.525>my <00:34:43.700>catalog <00:34:43.875>feature <00:34:44.050>is <00:34:44.225>importing <00:34:44.400>my <00:34:44.575>catalog <00:34:44.750>domain <00:34:44.925>module.

627
00:34:48.975 --> 00:34:52.275
<00:34:48.975>Of <00:34:49.114>course <00:34:49.255>we <00:34:49.395>need <00:34:49.534>it. <00:34:49.674>A <00:34:49.815>feature <00:34:49.955>needs <00:34:50.094>the <00:34:50.235>domain <00:34:50.375>model

628
00:34:52.535 --> 00:34:55.755
<00:34:52.534>and <00:34:52.710>all <00:34:52.884>the <00:34:53.060>classes <00:34:53.234>operating <00:34:53.409>upon <00:34:53.585>your <00:34:53.759>domain <00:34:53.935>model

629
00:34:56.095 --> 00:34:57.795
<00:34:56.094>and <00:34:56.444>that's <00:34:56.794>why <00:34:57.145>it's <00:34:57.495>imported.

630
00:34:58.295 --> 00:35:01.635
<00:34:58.295>And <00:34:58.435>for <00:34:58.575>this <00:34:58.715>of <00:34:58.855>course <00:34:58.995>I'm <00:34:59.135>using <00:34:59.275>an <00:34:59.415>ECMO <00:34:59.555>script <00:34:59.695>import

631
00:35:03.015 --> 00:35:04.795
<00:35:03.015>and <00:35:03.295>perhaps <00:35:03.575>you've <00:35:03.855>already <00:35:04.134>seen <00:35:04.415>it.

632
00:35:05.225 --> 00:35:08.515
<00:35:05.225>This <00:35:05.424>ECMO <00:35:05.625>script <00:35:05.825>import <00:35:06.025>has <00:35:06.225>a <00:35:06.424>tiny <00:35:06.625>difference.

633
00:35:09.025 --> 00:35:10.355
<00:35:09.025>It's <00:35:09.324>not <00:35:09.623>like <00:35:09.922>the <00:35:10.222>others,

634
00:35:11.065 --> 00:35:15.555
<00:35:11.065>it's <00:35:11.765>not <00:35:12.465>about.do/slash

635
00:35:16.215 --> 00:35:18.795
<00:35:16.215>sounds <00:35:16.448>a <00:35:16.681>bit <00:35:16.915>like <00:35:17.148>Vienna <00:35:17.381>style <00:35:17.615>vaults.

636
00:35:19.015 --> 00:35:22.515
<00:35:19.015>No <00:35:19.142>it's <00:35:19.269>not <00:35:19.396>this. <00:35:19.524>Instead <00:35:19.651>of <00:35:19.778>this <00:35:19.905>we <00:35:20.033>have <00:35:20.160>a <00:35:20.287>maps <00:35:20.415>name.

637
00:35:23.715 --> 00:35:27.805
<00:35:23.715>This <00:35:23.870>is <00:35:24.026>possible <00:35:24.181>within <00:35:24.337>a <00:35:24.492>mono <00:35:24.648>repository <00:35:24.803>you <00:35:24.959>can <00:35:25.115>assign

638
00:35:27.995 --> 00:35:31.965
<00:35:27.995>beautiful <00:35:28.170>names <00:35:28.345>to <00:35:28.520>your <00:35:28.694>parts, <00:35:28.870>to <00:35:29.045>your <00:35:29.220>sub <00:35:29.395>domains,

639
00:35:31.965 --> 00:35:35.045
<00:35:31.965>to <00:35:32.120>your <00:35:32.276>libraries <00:35:32.431>and <00:35:32.587>then <00:35:32.742>you <00:35:32.898>can <00:35:33.053>easily <00:35:33.209>access <00:35:33.365>them.

640
00:35:37.295 --> 00:35:40.965
<00:35:37.295>Those <00:35:37.470>B <00:35:37.645>mappings <00:35:37.820>are <00:35:37.995>done <00:35:38.170>within <00:35:38.345>the <00:35:38.520>DS <00:35:38.695>config

641
00:35:41.035 --> 00:35:42.525
<00:35:41.035>CHAS <00:35:41.705>and <00:35:42.376>access.

642
00:35:42.525 --> 00:35:45.805
<00:35:42.525>Doing <00:35:42.725>this <00:35:42.925>automatically <00:35:43.125>for <00:35:43.325>you, <00:35:43.525>you <00:35:43.725>just <00:35:43.925>need

643
00:35:45.805 --> 00:35:48.365
<00:35:45.805>to <00:35:45.960>create <00:35:46.116>a <00:35:46.271>library <00:35:46.427>and <00:35:46.582>you <00:35:46.738>get <00:35:46.893>the <00:35:47.049>B <00:35:47.205>mapping

644
00:35:48.475 --> 00:35:52.925
<00:35:48.475>that <00:35:48.591>maps <00:35:48.708>this <00:35:48.825>nice <00:35:48.941>name <00:35:49.058>to <00:35:49.174>the <00:35:49.291>index, <00:35:49.408>the <00:35:49.525>S <00:35:49.641>of <00:35:49.758>your <00:35:49.875>library

645
00:35:53.105 --> 00:35:56.965
<00:35:53.105>by <00:35:53.245>the <00:35:53.385>way, <00:35:53.525>this <00:35:53.665>is <00:35:53.805>where <00:35:53.945>the <00:35:54.085>psychic <00:35:54.225>theosis <00:35:54.365>the <00:35:54.505>cycle

646
00:35:57.715 --> 00:36:00.605
<00:35:57.715>between <00:35:57.995>your <00:35:58.275>name <00:35:58.555>of <00:35:58.835>the <00:35:59.115>library

647
00:36:01.225 --> 00:36:03.965
<00:36:01.225>and <00:36:01.458>the <00:36:01.691>public <00:36:01.924>API, <00:36:02.158>the <00:36:02.391>index <00:36:02.625>tier.

648
00:36:06.295 --> 00:36:08.745
<00:36:06.295>Okay, <00:36:06.470>cool. <00:36:06.645>So <00:36:06.820>at <00:36:06.995>the <00:36:07.170>end <00:36:07.345>of <00:36:07.520>the <00:36:07.695>day,

649
00:36:09.225 --> 00:36:10.745
<00:36:09.225>a <00:36:09.681>traditional <00:36:10.136>Angola <00:36:10.593>project,

650
00:36:10.965 --> 00:36:14.185
<00:36:10.965>it <00:36:11.245>is <00:36:11.525>just <00:36:11.805>subdivided <00:36:12.085>into <00:36:12.365>domains

651
00:36:15.085 --> 00:36:19.185
<00:36:15.085>and <00:36:15.240>into <00:36:15.396>libraries <00:36:15.551>which <00:36:15.707>are <00:36:15.862>the <00:36:16.018>layers <00:36:16.173>of <00:36:16.329>your <00:36:16.485>domains.

652
00:36:20.645 --> 00:36:25.425
<00:36:20.645>Now <00:36:20.785>let's <00:36:20.925>do <00:36:21.065>something <00:36:21.205>that <00:36:21.345>is <00:36:21.485>possible <00:36:21.625>because <00:36:21.765>of <00:36:21.905>an <00:36:22.045>X.

653
00:36:25.995 --> 00:36:28.545
<00:36:25.995>Let's <00:36:26.345>create <00:36:26.694>an <00:36:27.045>dependency <00:36:27.395>graph,

654
00:36:29.625 --> 00:36:31.385
<00:36:29.625>NPM <00:36:30.091>run <00:36:30.558>dependency <00:36:31.025>graph

655
00:36:34.635 --> 00:36:38.165
<00:36:34.635>and <00:36:35.101>here <00:36:35.568>we <00:36:36.035>go.

656
00:36:38.475 --> 00:36:39.765
<00:36:38.475>Beautiful. <00:36:39.055>Isn't <00:36:39.636>it?

657
00:36:40.345 --> 00:36:41.525
<00:36:40.345>So <00:36:40.699>here <00:36:41.053>you <00:36:41.407>see

658
00:36:41.875 --> 00:36:46.605
<00:36:41.875>that <00:36:42.050>your <00:36:42.225>deployment <00:36:42.400>monolith <00:36:42.575>is <00:36:42.750>connected <00:36:42.925>to <00:36:43.100>some <00:36:43.275>domains

659
00:36:46.705 --> 00:36:48.605
<00:36:46.705>and <00:36:46.938>they <00:36:47.171>are <00:36:47.404>using <00:36:47.638>some <00:36:47.871>shared <00:36:48.105>stuff.

660
00:36:49.855 --> 00:36:52.755
<00:36:49.855>So <00:36:50.055>for <00:36:50.255>this, <00:36:50.455>now <00:36:50.655>let's <00:36:50.855>take <00:36:51.055>a <00:36:51.255>screenshot

661
00:36:54.045 --> 00:36:57.145
<00:36:54.045>and <00:36:54.245>let, <00:36:54.445>let's <00:36:54.645>move <00:36:54.845>over <00:36:55.045>to <00:36:55.245>one <00:36:55.445>node.

662
00:37:00.855 --> 00:37:05.345
<00:37:00.855>Let's <00:37:01.030>delete <00:37:01.205>this <00:37:01.380>here, <00:37:01.555>let's <00:37:01.730>add <00:37:01.905>the <00:37:02.080>new <00:37:02.255>page

663
00:37:08.365 --> 00:37:13.345
<00:37:08.365>and <00:37:08.564>let's <00:37:08.765>insert <00:37:08.964>my <00:37:09.165>screenshot <00:37:09.365>full <00:37:09.564>screen <00:37:09.765>mode.

664
00:37:14.045 --> 00:37:16.345
<00:37:14.045>And <00:37:14.278>now <00:37:14.511>let's <00:37:14.745>zoom <00:37:14.978>in <00:37:15.211>a <00:37:15.445>bit.

665
00:37:18.655 --> 00:37:21.315
<00:37:18.655>So <00:37:18.935>what <00:37:19.215>do <00:37:19.495>we <00:37:19.775>see <00:37:20.055>here?

666
00:37:22.025 --> 00:37:26.315
<00:37:22.025>Well <00:37:22.180>first <00:37:22.336>of <00:37:22.491>all <00:37:22.647>we <00:37:22.802>see <00:37:22.958>here <00:37:23.113>that <00:37:23.269>we <00:37:23.425>have

667
00:37:26.945 --> 00:37:28.355
<00:37:26.945>here <00:37:27.368>a <00:37:27.791>catalog <00:37:28.214>feature

668
00:37:31.945 --> 00:37:33.765
<00:37:31.945>and <00:37:32.178>it <00:37:32.411>is <00:37:32.645>using <00:37:32.878>the <00:37:33.111>domain <00:37:33.345>catalog.

669
00:37:36.155 --> 00:37:38.125
<00:37:36.155>Here <00:37:36.435>we <00:37:36.715>have <00:37:36.995>another <00:37:37.275>catalog <00:37:37.555>feature

670
00:37:39.555 --> 00:37:41.585
<00:37:39.555>which <00:37:39.788>is <00:37:40.021>also <00:37:40.254>using <00:37:40.488>the <00:37:40.721>domain <00:37:40.955>catalog.

671
00:37:43.205 --> 00:37:45.815
<00:37:43.205>Besides <00:37:43.404>this, <00:37:43.605>we <00:37:43.805>have <00:37:44.005>an <00:37:44.205>ordering <00:37:44.404>feature <00:37:44.605>here

672
00:37:47.195 --> 00:37:50.695
<00:37:47.195>and <00:37:47.370>the <00:37:47.545>ordering <00:37:47.720>feature <00:37:47.895>is <00:37:48.070>using <00:37:48.245>the <00:37:48.420>ordering <00:37:48.595>domain

673
00:37:51.075 --> 00:37:52.935
<00:37:51.075>but <00:37:51.424>also <00:37:51.774>the <00:37:52.125>catalog <00:37:52.475>API.

674
00:37:57.275 --> 00:37:59.935
<00:37:57.275>And <00:37:57.741>then <00:37:58.208>our <00:37:58.675>libraries

675
00:38:00.575 --> 00:38:04.015
<00:38:00.575>reuse <00:38:00.750>some <00:38:00.924>shared <00:38:01.100>other <00:38:01.274>libraries <00:38:01.450>like <00:38:01.625>shared <00:38:01.799>UI <00:38:01.975>address

676
00:38:04.285 --> 00:38:06.335
<00:38:04.285>with <00:38:04.634>my <00:38:04.984>beautiful <00:38:05.335>address <00:38:05.685>component

677
00:38:06.795 --> 00:38:08.455
<00:38:06.795>and <00:38:07.145>she <00:38:07.495>had <00:38:07.845>a <00:38:08.195>indication.

678
00:38:09.835 --> 00:38:13.135
<00:38:09.835>And <00:38:09.990>just <00:38:10.146>by <00:38:10.301>looking <00:38:10.457>at <00:38:10.612>those <00:38:10.768>colors, <00:38:10.923>you <00:38:11.079>can <00:38:11.235>tell

679
00:38:13.445 --> 00:38:16.415
<00:38:13.445>that <00:38:13.620>your <00:38:13.795>domains <00:38:13.970>are <00:38:14.145>loosely <00:38:14.320>coupled <00:38:14.495>to <00:38:14.670>each <00:38:14.845>other.

680
00:38:17.115 --> 00:38:20.855
<00:38:17.115>One <00:38:17.314>domain <00:38:17.515>is <00:38:17.714>not <00:38:17.915>easily <00:38:18.115>accessing <00:38:18.314>another <00:38:18.515>domain.

681
00:38:21.605 --> 00:38:23.455
<00:38:21.605>This <00:38:21.955>is <00:38:22.305>forbidden <00:38:22.655>by <00:38:23.005>definition.

682
00:38:23.875 --> 00:38:27.055
<00:38:23.875>If <00:38:24.050>we <00:38:24.225>need <00:38:24.400>something <00:38:24.575>from <00:38:24.750>another <00:38:24.925>domain, <00:38:25.100>we <00:38:25.275>have

683
00:38:27.055 --> 00:38:31.295
<00:38:27.055>to <00:38:27.194>use <00:38:27.335>an <00:38:27.475>API <00:38:27.615>or <00:38:27.754>we <00:38:27.895>have <00:38:28.035>to <00:38:28.174>use <00:38:28.315>shared <00:38:28.455>libraries.

684
00:38:31.645 --> 00:38:35.285
<00:38:31.645>This <00:38:31.800>is <00:38:31.956>the <00:38:32.111>only <00:38:32.267>allowed <00:38:32.422>way <00:38:32.578>to <00:38:32.733>access <00:38:32.889>shared <00:38:33.045>stuff.

685
00:38:35.825 --> 00:38:39.925
<00:38:35.825>And <00:38:35.980>so <00:38:36.136>it's <00:38:36.291>somehow <00:38:36.447>guaranteed <00:38:36.602>that <00:38:36.758>we <00:38:36.913>don't <00:38:37.069>end <00:38:37.225>up

686
00:38:39.925 --> 00:38:41.885
<00:38:39.925>with <00:38:40.275>this <00:38:40.625>highly <00:38:40.975>coupled <00:38:41.325>situation.

687
00:38:43.675 --> 00:38:47.775
<00:38:43.675>That's <00:38:43.802>beautiful, <00:38:43.929>isn't <00:38:44.056>it? <00:38:44.184>But <00:38:44.311>now <00:38:44.438>let <00:38:44.565>me <00:38:44.693>be <00:38:44.820>the <00:38:44.947>bad <00:38:45.075>guy.

688
00:38:47.925 --> 00:38:50.735
<00:38:47.925>Once <00:38:48.065>in <00:38:48.205>a <00:38:48.345>time <00:38:48.485>I <00:38:48.625>want <00:38:48.765>to <00:38:48.905>be <00:38:49.045>the <00:38:49.185>bad <00:38:49.325>guy

689
00:38:52.005 --> 00:38:54.575
<00:38:52.005>because <00:38:52.285>the <00:38:52.565>bad <00:38:52.845>guy <00:38:53.125>always <00:38:53.405>seems

690
00:38:54.575 --> 00:38:57.495
<00:38:54.575>to <00:38:54.808>be <00:38:55.041>a <00:38:55.274>bit <00:38:55.508>mysterious <00:38:55.741>and <00:38:55.975>attractive.

691
00:38:57.675 --> 00:39:00.575
<00:38:57.675>So <00:38:57.802>let <00:38:57.929>me <00:38:58.056>try <00:38:58.184>this <00:38:58.311>out. <00:38:58.438>Perhaps <00:38:58.565>it <00:38:58.693>even <00:38:58.820>works <00:38:58.947>for <00:38:59.075>me.

692
00:39:00.875 --> 00:39:04.375
<00:39:00.875>So <00:39:01.002>in <00:39:01.129>this <00:39:01.256>case, <00:39:01.384>I <00:39:01.511>just <00:39:01.638>try <00:39:01.765>to <00:39:01.893>break <00:39:02.020>my <00:39:02.147>own <00:39:02.275>rules.

693
00:39:04.875 --> 00:39:06.215
<00:39:04.875>Oh <00:39:05.176>that <00:39:05.478>was <00:39:05.779>too <00:39:06.081>far.

694
00:39:08.555 --> 00:39:11.255
<00:39:08.555>Let <00:39:08.904>me <00:39:09.254>do <00:39:09.605>access <00:39:09.955>that

695
00:39:12.045 --> 00:39:14.865
<00:39:12.045>UI <00:39:12.278>layer <00:39:12.511>from <00:39:12.745>within <00:39:12.978>the <00:39:13.211>utility <00:39:13.445>layer.

696
00:39:15.415 --> 00:39:19.305
<00:39:15.415>This <00:39:15.648>is <00:39:15.881>forbidden <00:39:16.115>according <00:39:16.348>to <00:39:16.581>my <00:39:16.815>architecture,

697
00:39:19.305 --> 00:39:20.305
<00:39:19.305>this <00:39:19.754>is <00:39:20.205>forbidden

698
00:39:20.375 --> 00:39:22.825
<00:39:20.375>because <00:39:20.655>my <00:39:20.935>architecture <00:39:21.215>is <00:39:21.495>telling <00:39:21.775>us

699
00:39:23.255 --> 00:39:27.425
<00:39:23.255>that <00:39:23.430>libraries <00:39:23.605>are <00:39:23.780>only <00:39:23.955>allowed <00:39:24.130>to <00:39:24.305>access <00:39:24.480>libraries <00:39:24.655>below.

700
00:39:28.685 --> 00:39:31.465
<00:39:28.685>And <00:39:28.918>if <00:39:29.151>you <00:39:29.384>remember <00:39:29.618>my <00:39:29.851>layering <00:39:30.085>structure,

701
00:39:32.085 --> 00:39:35.785
<00:39:32.085>the <00:39:32.260>UI <00:39:32.435>library <00:39:32.610>was <00:39:32.785>somewhere <00:39:32.960>on <00:39:33.135>the <00:39:33.310>top <00:39:33.485>under

702
00:39:36.005 --> 00:39:37.025
<00:39:36.005>the <00:39:36.464>feature <00:39:36.923>library.

703
00:39:37.485 --> 00:39:39.465
<00:39:37.485>The <00:39:37.718>utility <00:39:37.951>library <00:39:38.185>was <00:39:38.418>on <00:39:38.651>the <00:39:38.885>bottom.

704
00:39:39.645 --> 00:39:41.705
<00:39:39.645>It <00:39:39.845>was <00:39:40.045>the <00:39:40.245>last <00:39:40.445>library <00:39:40.645>in <00:39:40.845>this <00:39:41.045>stack.

705
00:39:42.325 --> 00:39:46.825
<00:39:42.325>And <00:39:42.500>so <00:39:42.674>accessing <00:39:42.850>from <00:39:43.024>UI <00:39:43.200>utility <00:39:43.375>would <00:39:43.549>be <00:39:43.725>fine.

706
00:39:47.235 --> 00:39:51.945
<00:39:47.235>Doing <00:39:47.375>the <00:39:47.515>other <00:39:47.655>way <00:39:47.795>round <00:39:47.935>is <00:39:48.075>just <00:39:48.215>about <00:39:48.355>breaking <00:39:48.495>my <00:39:48.635>rules.

707
00:39:52.325 --> 00:39:53.745
<00:39:52.325>So <00:39:52.580>let <00:39:52.836>me <00:39:53.091>try <00:39:53.347>this <00:39:53.603>out.

708
00:39:54.235 --> 00:39:58.585
<00:39:54.235>Let's <00:39:54.410>find <00:39:54.585>out <00:39:54.760>how <00:39:54.935>an <00:39:55.110>axi <00:39:55.285>directing <00:39:55.460>to <00:39:55.635>this.

709
00:39:59.555 --> 00:40:03.175
<00:39:59.555>For <00:39:59.694>this, <00:39:59.835>I'm <00:39:59.975>switching <00:40:00.115>over <00:40:00.254>to <00:40:00.395>my <00:40:00.535>sheet, <00:40:00.674>the <00:40:00.815>off <00:40:00.955>module.

710
00:40:03.995 --> 00:40:06.735
<00:40:03.995>And <00:40:04.150>here <00:40:04.306>I <00:40:04.461>have <00:40:04.617>already <00:40:04.772>prepared <00:40:04.928>two <00:40:05.083>lines <00:40:05.239>of <00:40:05.395>code.

711
00:40:07.105 --> 00:40:08.855
<00:40:07.105>Let's <00:40:07.455>me <00:40:07.805>remove <00:40:08.155>the <00:40:08.505>commands

712
00:40:08.875 --> 00:40:13.095
<00:40:08.875>and <00:40:09.002>here <00:40:09.129>we <00:40:09.256>see <00:40:09.384>bang, <00:40:09.511>we <00:40:09.638>get <00:40:09.765>a <00:40:09.893>slap <00:40:10.020>into <00:40:10.147>the <00:40:10.275>face.

713
00:40:13.515 --> 00:40:15.895
<00:40:13.515>It <00:40:13.690>is <00:40:13.865>telling <00:40:14.040>us <00:40:14.214>that <00:40:14.390>a <00:40:14.565>broad <00:40:14.740>check <00:40:14.915>tacked

714
00:40:15.895 --> 00:40:20.295
<00:40:15.895>with <00:40:16.050>dibutyl <00:40:16.206>can <00:40:16.361>only <00:40:16.517>depend <00:40:16.672>on <00:40:16.828>libraries <00:40:16.983>tacked <00:40:17.139>with <00:40:17.295>type.

715
00:40:21.795 --> 00:40:25.095
<00:40:21.795>So <00:40:22.028>somehow <00:40:22.261>NX <00:40:22.495>knows <00:40:22.728>about <00:40:22.961>my <00:40:23.195>rules

716
00:40:26.265 --> 00:40:29.365
<00:40:26.265>and <00:40:26.440>now <00:40:26.615>they <00:40:26.790>are <00:40:26.964>not <00:40:27.140>hard <00:40:27.315>coded <00:40:27.490>into <00:40:27.665>nx.

717
00:40:30.225 --> 00:40:34.685
<00:40:30.225>Uh, <00:40:30.400>NX <00:40:30.575>just <00:40:30.750>allows <00:40:30.924>me <00:40:31.100>to <00:40:31.275>categorize <00:40:31.450>my <00:40:31.625>libraries.

718
00:40:35.345 --> 00:40:39.525
<00:40:35.345>In <00:40:35.484>this <00:40:35.625>case <00:40:35.765>I <00:40:35.904>have <00:40:36.044>a <00:40:36.185>category <00:40:36.325>called <00:40:36.464>dibutyl, <00:40:36.605>which <00:40:36.745>is

719
00:40:39.525 --> 00:40:40.685
<00:40:39.525>for <00:40:39.873>my <00:40:40.221>identity <00:40:40.569>layer.

720
00:40:41.105 --> 00:40:44.325
<00:40:41.105>And <00:40:41.280>then <00:40:41.455>we <00:40:41.630>can <00:40:41.805>define <00:40:41.980>access <00:40:42.155>restrictions <00:40:42.330>on <00:40:42.505>top

721
00:40:44.325 --> 00:40:45.445
<00:40:44.325>of <00:40:44.829>those <00:40:45.333>categories.

722
00:40:46.685 --> 00:40:50.105
<00:40:46.685>At <00:40:46.825>the <00:40:46.965>end <00:40:47.105>of <00:40:47.245>the <00:40:47.384>day <00:40:47.525>it <00:40:47.665>is <00:40:47.805>just <00:40:47.945>about <00:40:48.085>configuring

723
00:40:50.245 --> 00:40:51.505
<00:40:50.245>two <00:40:50.623>chase <00:40:51.001>and <00:40:51.379>files.

724
00:40:51.765 --> 00:40:55.465
<00:40:51.765>One <00:40:51.940>with <00:40:52.115>the <00:40:52.290>categories, <00:40:52.464>one <00:40:52.640>with <00:40:52.815>the <00:40:52.990>access <00:40:53.165>restrictions.

725
00:40:56.715 --> 00:40:59.855
<00:40:56.715>But <00:40:56.890>it <00:40:57.065>is <00:40:57.240>even <00:40:57.415>better <00:40:57.590>than <00:40:57.765>this <00:40:57.940>for <00:40:58.115>this.

726
00:40:59.995 --> 00:41:04.245
<00:40:59.995>Let <00:41:00.122>me <00:41:00.249>go <00:41:00.376>out <00:41:00.504>to <00:41:00.631>the <00:41:00.758>console, <00:41:00.885>let <00:41:01.013>me <00:41:01.140>link <00:41:01.267>my <00:41:01.395>project

727
00:41:04.865 --> 00:41:08.045
<00:41:04.865>and <00:41:05.145>she <00:41:05.424>link <00:41:05.705>share <00:41:05.984>deal <00:41:06.265>out.

728
00:41:12.785 --> 00:41:17.765
<00:41:12.785>And <00:41:13.065>here <00:41:13.345>we <00:41:13.625>see <00:41:13.904>the <00:41:14.185>same

729
00:41:18.515 --> 00:41:21.165
<00:41:18.515>because <00:41:18.795>all <00:41:19.075>of <00:41:19.355>this <00:41:19.634>is <00:41:19.915>done

730
00:41:21.305 --> 00:41:23.845
<00:41:21.305>by <00:41:21.585>just <00:41:21.865>tweaking <00:41:22.145>the <00:41:22.424>a <00:41:22.705>bit.

731
00:41:26.095 --> 00:41:28.505
<00:41:26.095>This <00:41:26.294>is <00:41:26.495>just <00:41:26.694>a <00:41:26.895>hook <00:41:27.095>into <00:41:27.294>the <00:41:27.495>Linda.

732
00:41:29.205 --> 00:41:33.965
<00:41:29.205>And <00:41:29.332>so <00:41:29.459>it <00:41:29.586>is <00:41:29.714>quite <00:41:29.841>easy <00:41:29.968>to <00:41:30.095>get <00:41:30.223>this <00:41:30.350>on <00:41:30.477>your <00:41:30.605>console.

733
00:41:34.735 --> 00:41:35.795
<00:41:34.735>And <00:41:34.973>I <00:41:35.212>really <00:41:35.450>like <00:41:35.689>this

734
00:41:35.795 --> 00:41:37.675
<00:41:35.795>because <00:41:36.028>if <00:41:36.261>it <00:41:36.495>works <00:41:36.728>in <00:41:36.961>the <00:41:37.195>console,

735
00:41:38.375 --> 00:41:42.475
<00:41:38.375>it <00:41:38.530>can <00:41:38.686>be <00:41:38.841>automated <00:41:38.997>within <00:41:39.152>the <00:41:39.308>CI <00:41:39.463>process <00:41:39.619>for <00:41:39.775>instance,

736
00:41:43.045 --> 00:41:47.555
<00:41:43.045>which <00:41:43.245>means <00:41:43.445>that <00:41:43.645>I <00:41:43.845>can <00:41:44.045>easily <00:41:44.245>automate <00:41:44.445>this

737
00:41:47.815 --> 00:41:50.675
<00:41:47.815>and <00:41:48.095>if <00:41:48.375>someone <00:41:48.655>breaks <00:41:48.935>the <00:41:49.215>architecture,

738
00:41:50.875 --> 00:41:53.355
<00:41:50.875>I <00:41:51.030>can <00:41:51.186>send <00:41:51.341>out <00:41:51.497>an <00:41:51.652>email <00:41:51.808>to <00:41:51.963>the <00:41:52.119>whole <00:41:52.275>team

739
00:41:53.775 --> 00:41:57.115
<00:41:53.775>and <00:41:53.975>tell <00:41:54.175>them, <00:41:54.375>Hey, <00:41:54.575>Manfred <00:41:54.775>broke <00:41:54.975>your <00:41:55.175>architecture,

740
00:41:57.415 --> 00:42:02.115
<00:41:57.415>please <00:41:57.555>go <00:41:57.695>to <00:41:57.835>Manfred <00:41:57.975>and <00:41:58.115>help <00:41:58.255>him <00:41:58.395>to <00:41:58.535>grow <00:41:58.675>his <00:41:58.815>awareness.

741
00:42:03.265 --> 00:42:05.115
<00:42:03.265>Well <00:42:03.615>there <00:42:03.964>are <00:42:04.315>several <00:42:04.665>ways

742
00:42:05.175 --> 00:42:07.555
<00:42:05.175>to <00:42:05.455>help <00:42:05.735>people <00:42:06.015>growing <00:42:06.295>their <00:42:06.575>awareness.

743
00:42:08.415 --> 00:42:13.035
<00:42:08.415>Uh, <00:42:08.542>it's <00:42:08.669>up <00:42:08.796>to <00:42:08.924>you, <00:42:09.051>but <00:42:09.178>please <00:42:09.305>be <00:42:09.433>nice. <00:42:09.560>Always <00:42:09.687>be <00:42:09.815>nice.

744
00:42:14.535 --> 00:42:18.625
<00:42:14.535>Okay, <00:42:14.662>let <00:42:14.789>me <00:42:14.916>show <00:42:15.044>you <00:42:15.171>another <00:42:15.298>thing <00:42:15.425>that <00:42:15.553>is <00:42:15.680>quite <00:42:15.807>nice <00:42:15.935>here.

745
00:42:19.365 --> 00:42:22.345
<00:42:19.365>Uh, <00:42:19.645>let's <00:42:19.924>do <00:42:20.205>another <00:42:20.484>thought <00:42:20.765>experiment.

746
00:42:22.955 --> 00:42:27.625
<00:42:22.955>Let's <00:42:23.188>think <00:42:23.421>about <00:42:23.654>changing <00:42:23.888>this <00:42:24.121>library <00:42:24.355>here.

747
00:42:30.345 --> 00:42:32.795
<00:42:30.345>What <00:42:30.578>can <00:42:30.811>be <00:42:31.044>affected <00:42:31.278>by <00:42:31.511>this <00:42:31.745>change?

748
00:42:33.265 --> 00:42:36.195
<00:42:33.265>What <00:42:33.420>can <00:42:33.576>be <00:42:33.731>affected <00:42:33.887>by <00:42:34.042>a <00:42:34.198>breaking <00:42:34.353>change <00:42:34.509>in <00:42:34.665>there?

749
00:42:36.885 --> 00:42:40.495
<00:42:36.885>Well <00:42:37.085>of <00:42:37.285>course <00:42:37.485>everything <00:42:37.685>that <00:42:37.885>depends <00:42:38.085>upon <00:42:38.285>it,

750
00:42:40.665 --> 00:42:42.855
<00:42:40.665>which <00:42:40.945>is <00:42:41.225>here, <00:42:41.505>my <00:42:41.785>UI <00:42:42.065>application,

751
00:42:43.435 --> 00:42:46.255
<00:42:43.435>but <00:42:43.610>the <00:42:43.785>rest <00:42:43.960>of <00:42:44.134>the <00:42:44.310>system <00:42:44.485>is <00:42:44.660>not <00:42:44.835>affected

752
00:42:46.315 --> 00:42:47.455
<00:42:46.315>by <00:42:46.657>this <00:42:46.999>change <00:42:47.341>here.

753
00:42:48.125 --> 00:42:52.055
<00:42:48.125>That <00:42:48.265>means <00:42:48.405>if <00:42:48.545>we <00:42:48.685>change <00:42:48.825>something <00:42:48.965>here, <00:42:49.105>we <00:42:49.245>only <00:42:49.385>need <00:42:49.525>to

754
00:42:52.615 --> 00:42:56.815
<00:42:52.615>retest <00:42:52.848>this <00:42:53.081>library <00:42:53.314>and <00:42:53.548>the <00:42:53.781>UI <00:42:54.015>application

755
00:42:57.155 --> 00:43:00.255
<00:42:57.155>and <00:42:57.330>we <00:42:57.505>only <00:42:57.680>need <00:42:57.855>to <00:42:58.030>recompile <00:42:58.205>those <00:42:58.380>two <00:42:58.555>parts.

756
00:43:01.435 --> 00:43:05.855
<00:43:01.435>We <00:43:01.562>can <00:43:01.689>completely <00:43:01.816>skip <00:43:01.944>the <00:43:02.071>rest <00:43:02.198>of <00:43:02.325>the <00:43:02.453>system <00:43:02.580>And <00:43:02.707>this <00:43:02.835>is

757
00:43:05.965 --> 00:43:09.055
<00:43:05.965>what <00:43:06.198>makes <00:43:06.431>this <00:43:06.665>mono <00:43:06.898>book <00:43:07.131>quite <00:43:07.365>fast.

758
00:43:10.665 --> 00:43:13.685
<00:43:10.665>And <00:43:10.945>of <00:43:11.225>course <00:43:11.505>without <00:43:11.785>an <00:43:12.065>X

759
00:43:13.865 --> 00:43:16.645
<00:43:13.865>or <00:43:14.064>some <00:43:14.265>tooling, <00:43:14.464>it <00:43:14.665>would <00:43:14.865>be <00:43:15.064>quite <00:43:15.265>difficult

760
00:43:16.745 --> 00:43:18.365
<00:43:16.745>to <00:43:17.095>accomplish <00:43:17.444>something <00:43:17.795>like <00:43:18.145>this.

761
00:43:18.745 --> 00:43:21.485
<00:43:18.745>But <00:43:18.884>with <00:43:19.025>an <00:43:19.165>X, <00:43:19.305>this <00:43:19.444>is <00:43:19.585>really <00:43:19.725>a <00:43:19.865>piece <00:43:20.005>of <00:43:20.145>cake.

762
00:43:22.075 --> 00:43:23.365
<00:43:22.075>Just <00:43:22.268>let <00:43:22.462>me <00:43:22.655>show <00:43:22.848>it <00:43:23.042>to <00:43:23.236>you.

763
00:43:23.775 --> 00:43:27.805
<00:43:23.775>Let's <00:43:23.915>go <00:43:24.055>out <00:43:24.195>to <00:43:24.335>the <00:43:24.475>console, <00:43:24.615>let's <00:43:24.755>do <00:43:24.895>GI <00:43:25.035>reset, <00:43:25.175>set

764
00:43:29.225 --> 00:43:30.285
<00:43:29.225>and <00:43:29.702>get <00:43:30.179>team.

765
00:43:33.875 --> 00:43:36.685
<00:43:33.875>Okay, <00:43:34.225>and <00:43:34.575>then <00:43:34.925>let's <00:43:35.275>move

766
00:43:37.595 --> 00:43:38.965
<00:43:37.595>into <00:43:38.211>my <00:43:38.828>application

767
00:43:39.825 --> 00:43:44.685
<00:43:39.825>and <00:43:40.024>let's <00:43:40.225>change <00:43:40.424>this <00:43:40.625>very <00:43:40.825>catalog <00:43:41.024>feature <00:43:41.225>request

768
00:43:44.685 --> 00:43:45.165
product

769
00:43:49.395 --> 00:43:53.125
<00:43:49.395>over <00:43:49.595>in <00:43:49.795>my <00:43:49.995>application <00:43:50.195>catalog <00:43:50.395>feature <00:43:50.595>request <00:43:50.795>product.

770
00:43:53.515 --> 00:43:55.925
<00:43:53.515>Here <00:43:53.795>I'm <00:43:54.075>introducing <00:43:54.355>a <00:43:54.634>major <00:43:54.915>change.

771
00:43:56.915 --> 00:44:00.925
<00:43:56.915>This <00:43:57.148>is <00:43:57.381>my <00:43:57.615>major <00:43:57.848>change, <00:43:58.081>major <00:43:58.315>change.

772
00:44:02.345 --> 00:44:03.925
<00:44:02.345>And <00:44:02.578>then <00:44:02.811>let's <00:44:03.044>go <00:44:03.278>to <00:44:03.511>the <00:44:03.745>console

773
00:44:04.545 --> 00:44:06.765
<00:44:04.545>and <00:44:04.895>create <00:44:05.245>another <00:44:05.595>dependency <00:44:05.945>graph.

774
00:44:06.865 --> 00:44:08.485
<00:44:06.865>Let <00:44:07.145>me <00:44:07.424>close <00:44:07.705>the <00:44:07.984>old <00:44:08.265>one

775
00:44:11.705 --> 00:44:15.625
<00:44:11.705>NPM <00:44:12.404>run <00:44:13.105>depth

776
00:44:17.445 --> 00:44:19.405
<00:44:17.445>graph <00:44:17.795>with <00:44:18.145>the <00:44:18.495>prefix <00:44:18.845>affected.

777
00:44:25.235 --> 00:44:27.375
<00:44:25.235>And <00:44:25.468>here <00:44:25.701>we <00:44:25.935>go. <00:44:26.168>It <00:44:26.401>clearly <00:44:26.635>shows

778
00:44:27.375 --> 00:44:29.975
<00:44:27.375>that <00:44:27.608>only <00:44:27.841>those <00:44:28.075>two <00:44:28.308>elements <00:44:28.541>are <00:44:28.775>affected

779
00:44:30.075 --> 00:44:32.845
<00:44:30.075>and <00:44:30.274>of <00:44:30.475>course <00:44:30.674>our <00:44:30.875>our <00:44:31.075>end-to-end <00:44:31.274>testing <00:44:31.475>suite,

780
00:44:33.385 --> 00:44:36.285
<00:44:33.385>but <00:44:33.560>the <00:44:33.735>rest <00:44:33.910>of <00:44:34.085>the <00:44:34.260>system <00:44:34.435>is <00:44:34.610>not <00:44:34.785>affected.

781
00:44:36.465 --> 00:44:39.845
<00:44:36.465>So <00:44:36.620>it <00:44:36.776>does <00:44:36.931>not <00:44:37.087>need <00:44:37.242>to <00:44:37.398>get <00:44:37.553>retested <00:44:37.709>in <00:44:37.865>terms

782
00:44:39.905 --> 00:44:42.325
<00:44:39.905>of <00:44:40.185>end-to-end <00:44:40.465>tests <00:44:40.745>and <00:44:41.025>unit <00:44:41.305>tests

783
00:44:42.945 --> 00:44:45.325
<00:44:42.945>and <00:44:43.145>it <00:44:43.345>does <00:44:43.545>not <00:44:43.745>need <00:44:43.945>to <00:44:44.145>get <00:44:44.345>recompiled.

784
00:44:45.545 --> 00:44:49.325
<00:44:45.545>So <00:44:45.720>compiling <00:44:45.895>this <00:44:46.070>is <00:44:46.245>just <00:44:46.420>a <00:44:46.595>piece <00:44:46.770>of <00:44:46.945>cake.

785
00:44:49.825 --> 00:44:52.445
<00:44:49.825>We <00:44:50.024>just <00:44:50.225>need <00:44:50.424>to <00:44:50.625>recompile <00:44:50.825>the <00:44:51.024>affected <00:44:51.225>parts.

786
00:44:53.265 --> 00:44:57.645
<00:44:53.265>And <00:44:53.440>for <00:44:53.615>this <00:44:53.790>NX <00:44:53.964>brings <00:44:54.140>you <00:44:54.315>several, <00:44:54.490>uh, <00:44:54.665>several

787
00:44:58.645 --> 00:45:01.845
<00:44:58.645>comments <00:44:58.845>which <00:44:59.045>are <00:44:59.245>part <00:44:59.445>of <00:44:59.645>your <00:44:59.845>packaged <00:45:00.045>cheese

788
00:45:05.995 --> 00:45:08.205
<00:45:05.995>here <00:45:06.345>for <00:45:06.694>instance, <00:45:07.045>we <00:45:07.395>see

789
00:45:10.635 --> 00:45:13.415
<00:45:10.635>effect <00:45:10.915>that <00:45:11.195>test <00:45:11.475>it <00:45:11.755>is <00:45:12.035>just

790
00:45:13.935 --> 00:45:17.455
<00:45:13.935>retesting <00:45:14.134>the <00:45:14.335>affected <00:45:14.535>libraries, <00:45:14.735>executing <00:45:14.935>the <00:45:15.134>unit <00:45:15.335>tests

791
00:45:17.475 --> 00:45:20.735
<00:45:17.475>of <00:45:17.674>them <00:45:17.875>affected <00:45:18.075>end-to-end <00:45:18.275>for <00:45:18.475>the <00:45:18.674>end-to-end <00:45:18.875>tests

792
00:45:21.455 --> 00:45:25.655
<00:45:21.455>affected <00:45:21.688>build <00:45:21.921>for <00:45:22.154>just <00:45:22.388>compiling <00:45:22.621>what's <00:45:22.855>changed.

793
00:45:27.875 --> 00:45:31.965
<00:45:27.875>Okay, <00:45:27.991>so <00:45:28.108>you'll <00:45:28.225>see <00:45:28.341>you <00:45:28.458>have <00:45:28.575>a <00:45:28.691>lot <00:45:28.808>of <00:45:28.925>nice <00:45:29.041>features <00:45:29.158>in <00:45:29.275>there

794
00:45:32.985 --> 00:45:35.285
<00:45:32.985>and <00:45:33.218>perhaps <00:45:33.451>you're <00:45:33.685>saying, <00:45:33.918>yeah, <00:45:34.151>that's <00:45:34.385>nice

795
00:45:35.545 --> 00:45:37.925
<00:45:35.545>but <00:45:35.720>I <00:45:35.895>have <00:45:36.070>to <00:45:36.245>create <00:45:36.420>a <00:45:36.595>lot <00:45:36.770>of <00:45:36.945>libraries.

796
00:45:37.955 --> 00:45:39.885
<00:45:37.955>Well, <00:45:38.305>it's <00:45:38.654>not <00:45:39.005>that <00:45:39.355>exhausting

797
00:45:39.885 --> 00:45:44.165
<00:45:39.885>because <00:45:40.012>it <00:45:40.139>does <00:45:40.266>not <00:45:40.394>matter <00:45:40.521>if <00:45:40.648>you <00:45:40.775>type <00:45:40.903>in <00:45:41.030>NG <00:45:41.157>generate <00:45:41.285>module

798
00:45:44.625 --> 00:45:47.925
<00:45:44.625>or <00:45:44.780>if <00:45:44.936>you <00:45:45.091>type <00:45:45.247>in <00:45:45.402>NG <00:45:45.558>generate <00:45:45.713>library <00:45:45.869>for <00:45:46.025>you.

799
00:45:48.075 --> 00:45:49.805
<00:45:48.075>It's <00:45:48.424>the <00:45:48.774>same <00:45:49.125>effort <00:45:49.475>here.

800
00:45:49.855 --> 00:45:54.605
<00:45:49.855>Let's <00:45:50.055>create <00:45:50.255>a <00:45:50.455>feature <00:45:50.655>library, <00:45:50.855>um, <00:45:51.055>for <00:45:51.255>our,

801
00:45:55.455 --> 00:45:56.965
<00:45:55.455>let's <00:45:55.908>say <00:45:56.361>ordering <00:45:56.814>domain

802
00:45:57.385 --> 00:45:59.165
<00:45:57.385>or <00:45:57.618>let's <00:45:57.851>go <00:45:58.085>with <00:45:58.318>the <00:45:58.551>catalog <00:45:58.785>domain.

803
00:45:59.645 --> 00:46:02.765
<00:45:59.645>I <00:45:59.820>want <00:45:59.995>to <00:46:00.170>compare <00:46:00.345>two <00:46:00.520>products, <00:46:00.695>the <00:46:00.870>cheap <00:46:01.045>laptop

804
00:46:02.765 --> 00:46:07.525
<00:46:02.765>and <00:46:02.998>the <00:46:03.231>expansive <00:46:03.464>laptop <00:46:03.698>And <00:46:03.931>I <00:46:04.165>want

805
00:46:07.525 --> 00:46:11.645
<00:46:07.525>to <00:46:07.700>put <00:46:07.875>it <00:46:08.050>into <00:46:08.225>the <00:46:08.400>rectory <00:46:08.575>which <00:46:08.750>is <00:46:08.925>called

806
00:46:13.135 --> 00:46:17.345
<00:46:13.135>um, <00:46:13.415>what <00:46:13.695>was <00:46:13.975>the <00:46:14.255>name <00:46:14.535>catalog,

807
00:46:18.995 --> 00:46:21.665
<00:46:18.995>which <00:46:19.170>is <00:46:19.345>always <00:46:19.520>in <00:46:19.694>my <00:46:19.870>case <00:46:20.045>my <00:46:20.220>domain <00:46:20.395>name.

808
00:46:24.605 --> 00:46:27.775
<00:46:24.605>Okay, <00:46:24.780>everything <00:46:24.955>is <00:46:25.130>generated <00:46:25.305>for <00:46:25.480>me, <00:46:25.655>even <00:46:25.830>my <00:46:26.005>angle

809
00:46:27.875 --> 00:46:31.255
<00:46:27.875>and <00:46:28.030>module, <00:46:28.186>my <00:46:28.341>index <00:46:28.497>ts <00:46:28.652>and <00:46:28.808>all <00:46:28.963>the <00:46:29.119>other <00:46:29.275>stuff.

810
00:46:31.915 --> 00:46:35.335
<00:46:31.915>And <00:46:32.070>if <00:46:32.226>we <00:46:32.381>look <00:46:32.537>now <00:46:32.692>into <00:46:32.848>my <00:46:33.003>source <00:46:33.159>code <00:46:33.315>example

811
00:46:35.925 --> 00:46:38.815
<00:46:35.925>into <00:46:36.080>the <00:46:36.236>domain <00:46:36.391>catalog, <00:46:36.547>we <00:46:36.702>will <00:46:36.858>see <00:46:37.013>a <00:46:37.169>new <00:46:37.325>part

812
00:46:38.815 --> 00:46:41.255
<00:46:38.815>of <00:46:39.015>the <00:46:39.215>feature <00:46:39.415>layer <00:46:39.615>which <00:46:39.815>is <00:46:40.015>called <00:46:40.215>compare.

813
00:46:41.435 --> 00:46:44.495
<00:46:41.435>And <00:46:41.610>now <00:46:41.785>we <00:46:41.960>can <00:46:42.134>fill <00:46:42.310>it <00:46:42.485>with <00:46:42.660>our <00:46:42.835>implementation.

814
00:46:45.075 --> 00:46:48.535
<00:46:45.075>Now <00:46:45.274>we <00:46:45.475>only <00:46:45.674>have <00:46:45.875>to <00:46:46.075>implement <00:46:46.274>this <00:46:46.475>feature,

815
00:46:50.025 --> 00:46:52.135
<00:46:50.025>which <00:46:50.305>is <00:46:50.585>hopefully <00:46:50.865>the <00:46:51.145>funny <00:46:51.425>part.

816
00:46:54.305 --> 00:46:55.995
<00:46:54.305>Okay, <00:46:55.004>cool <00:46:55.705>stuff.

817
00:46:57.095 --> 00:46:59.475
<00:46:57.095>Let <00:46:57.250>me <00:46:57.406>sum <00:46:57.561>up <00:46:57.717>what <00:46:57.872>we <00:46:58.028>have <00:46:58.183>seen <00:46:58.339>so <00:46:58.495>far.

818
00:47:00.975 --> 00:47:03.915
<00:47:00.975>We <00:47:01.102>have <00:47:01.229>seen <00:47:01.356>that <00:47:01.484>we <00:47:01.611>have <00:47:01.738>a <00:47:01.865>lot <00:47:01.993>of <00:47:02.120>fine <00:47:02.247>grain <00:47:02.375>libraries

819
00:47:04.335 --> 00:47:05.755
<00:47:04.335>and <00:47:04.654>this <00:47:04.974>for <00:47:05.293>the <00:47:05.613>better

820
00:47:06.025 --> 00:47:09.795
<00:47:06.025>because <00:47:06.200>the <00:47:06.375>library <00:47:06.550>can <00:47:06.725>be <00:47:06.900>the <00:47:07.075>unit <00:47:07.250>of <00:47:07.425>recombination,

821
00:47:10.255 --> 00:47:13.475
<00:47:10.255>the <00:47:10.455>unit <00:47:10.655>of <00:47:10.855>retesting <00:47:11.055>which <00:47:11.255>speeds <00:47:11.455>up <00:47:11.655>everything.

822
00:47:14.575 --> 00:47:18.635
<00:47:14.575>Uh, <00:47:14.750>the <00:47:14.924>unit <00:47:15.100>is <00:47:15.274>uh, <00:47:15.450>for <00:47:15.625>defining <00:47:15.799>access <00:47:15.975>restrictions.

823
00:47:19.105 --> 00:47:22.355
<00:47:19.105>That <00:47:19.260>means <00:47:19.416>I <00:47:19.571>can <00:47:19.727>define <00:47:19.882>access <00:47:20.038>restrictions <00:47:20.193>from <00:47:20.349>a <00:47:20.505>fine

824
00:47:22.355 --> 00:47:25.315
<00:47:22.355>grain <00:47:22.635>libraries <00:47:22.915>to <00:47:23.195>prevent <00:47:23.475>this <00:47:23.755>situation,

825
00:47:25.495 --> 00:47:26.595
<00:47:25.495>to <00:47:25.990>prevent <00:47:26.484>cyclists.

826
00:47:27.145 --> 00:47:28.875
<00:47:27.145>It's <00:47:27.611>about <00:47:28.078>information <00:47:28.545>hiding.

827
00:47:29.425 --> 00:47:32.845
<00:47:29.425>We <00:47:29.580>can <00:47:29.736>decide <00:47:29.891>what <00:47:30.047>is <00:47:30.202>known <00:47:30.358>outside <00:47:30.513>of <00:47:30.669>the <00:47:30.825>library

828
00:47:33.065 --> 00:47:35.485
<00:47:33.065>and <00:47:33.265>what <00:47:33.465>is <00:47:33.665>a <00:47:33.865>secret <00:47:34.065>of <00:47:34.265>the <00:47:34.465>library.

829
00:47:36.225 --> 00:47:39.685
<00:47:36.225>And <00:47:36.380>it <00:47:36.536>is <00:47:36.691>a <00:47:36.847>quite <00:47:37.002>nice <00:47:37.158>alternative <00:47:37.313>to <00:47:37.469>energy <00:47:37.625>modules.

830
00:47:40.355 --> 00:47:43.285
<00:47:40.355>They <00:47:40.588>might <00:47:40.821>become <00:47:41.055>optional <00:47:41.288>in <00:47:41.521>the <00:47:41.755>future

831
00:47:44.365 --> 00:47:48.815
<00:47:44.365>because <00:47:44.520>uh, <00:47:44.676>they <00:47:44.831>have <00:47:44.987>never <00:47:45.142>been <00:47:45.298>a <00:47:45.453>child <00:47:45.609>of <00:47:45.765>wish

832
00:47:49.475 --> 00:47:51.415
<00:47:49.475>we <00:47:49.755>needed <00:47:50.035>them <00:47:50.315>for <00:47:50.595>technical <00:47:50.875>reasons,

833
00:47:51.635 --> 00:47:55.535
<00:47:51.635>but <00:47:51.762>now <00:47:51.889>as <00:47:52.016>we <00:47:52.144>have <00:47:52.271>ivy, <00:47:52.398>it's <00:47:52.525>possible <00:47:52.653>to <00:47:52.780>work <00:47:52.907>without <00:47:53.035>them.

834
00:47:56.295 --> 00:47:57.755
<00:47:56.295>And <00:47:56.623>I'm <00:47:56.952>really <00:47:57.280>saying <00:47:57.609>optional,

835
00:47:58.205 --> 00:48:00.035
<00:47:58.205>which <00:47:58.485>means <00:47:58.765>they <00:47:59.045>won't <00:47:59.325>go <00:47:59.605>away,

836
00:48:00.575 --> 00:48:02.955
<00:48:00.575>but <00:48:00.750>uh, <00:48:00.924>you <00:48:01.100>don't <00:48:01.274>have <00:48:01.450>to <00:48:01.625>use <00:48:01.799>them <00:48:01.975>anymore.

837
00:48:03.685 --> 00:48:04.825
<00:48:03.685>That's <00:48:04.198>really <00:48:04.711>important

838
00:48:04.825 --> 00:48:08.945
<00:48:04.825>because <00:48:04.964>if <00:48:05.105>we <00:48:05.245>remove <00:48:05.384>them <00:48:05.524>that <00:48:05.665>would <00:48:05.805>be <00:48:05.944>a <00:48:06.085>breaking <00:48:06.225>change.

839
00:48:09.045 --> 00:48:11.865
<00:48:09.045>And <00:48:09.220>you <00:48:09.395>know, <00:48:09.570>the <00:48:09.745>angular <00:48:09.920>theme <00:48:10.095>did <00:48:10.270>not <00:48:10.445>make

840
00:48:11.935 --> 00:48:15.025
<00:48:11.935>that <00:48:12.134>much <00:48:12.335>good <00:48:12.535>experience <00:48:12.735>as <00:48:12.935>with <00:48:13.134>breaking <00:48:13.335>changes.

841
00:48:15.245 --> 00:48:16.545
<00:48:15.245>So <00:48:15.634>better <00:48:16.025>keep <00:48:16.415>them.

842
00:48:17.205 --> 00:48:20.345
<00:48:17.205>And <00:48:17.360>also <00:48:17.516>antigen <00:48:17.671>red <00:48:17.827>library <00:48:17.982>is <00:48:18.138>a <00:48:18.293>piece <00:48:18.449>of <00:48:18.605>cake.

843
00:48:20.735 --> 00:48:22.505
<00:48:20.735>It's <00:48:21.201>not <00:48:21.668>difficult. <00:48:22.135>Um,

844
00:48:23.975 --> 00:48:28.665
<00:48:23.975>just <00:48:24.115>type <00:48:24.255>it <00:48:24.395>in <00:48:24.535>instead <00:48:24.674>of <00:48:24.815>generate <00:48:24.955>module <00:48:25.095>the <00:48:25.235>same <00:48:25.375>effort

845
00:48:28.725 --> 00:48:31.825
<00:48:28.725>for <00:48:28.924>you, <00:48:29.125>but <00:48:29.325>you <00:48:29.525>have <00:48:29.725>all <00:48:29.924>those <00:48:30.125>advantages.

846
00:48:33.705 --> 00:48:35.995
<00:48:33.705>Okay, <00:48:33.985>let <00:48:34.265>me <00:48:34.545>skip <00:48:34.825>this <00:48:35.105>demonstration

847
00:48:36.895 --> 00:48:38.995
<00:48:36.895>and <00:48:37.095>just <00:48:37.295>let <00:48:37.495>me <00:48:37.695>tell <00:48:37.895>you <00:48:38.095>one <00:48:38.295>thing.

848
00:48:39.575 --> 00:48:42.035
<00:48:39.575>If <00:48:39.774>you <00:48:39.975>liked <00:48:40.174>what <00:48:40.375>you <00:48:40.575>have <00:48:40.774>seen <00:48:40.975>here,

849
00:48:42.455 --> 00:48:45.395
<00:48:42.455>you <00:48:42.688>will <00:48:42.921>also <00:48:43.154>like <00:48:43.388>my <00:48:43.621>free <00:48:43.855>ebook.

850
00:48:45.895 --> 00:48:49.315
<00:48:45.895>You <00:48:46.050>can <00:48:46.206>find <00:48:46.361>it <00:48:46.517>on <00:48:46.672>Angola <00:48:46.828>architect <00:48:46.983>io <00:48:47.139>slash <00:48:47.295>book.

851
00:48:49.775 --> 00:48:51.395
<00:48:49.775>It <00:48:50.125>contains <00:48:50.475>all <00:48:50.825>this <00:48:51.175>stuff

852
00:48:51.615 --> 00:48:56.035
<00:48:51.615>and <00:48:51.770>a <00:48:51.926>lot <00:48:52.081>of <00:48:52.237>additional <00:48:52.392>topics <00:48:52.548>like <00:48:52.703>how <00:48:52.859>this <00:48:53.015>leads

853
00:48:56.055 --> 00:48:58.955
<00:48:56.055>to <00:48:56.230>micro <00:48:56.404>front <00:48:56.580>dance <00:48:56.754>and <00:48:56.930>how <00:48:57.105>to <00:48:57.279>implement <00:48:57.455>them.

854
00:48:59.535 --> 00:49:01.475
<00:48:59.535>And <00:48:59.768>if <00:49:00.001>you <00:49:00.234>didn't <00:49:00.468>like <00:49:00.701>this <00:49:00.935>doc,

855
00:49:01.665 --> 00:49:04.275
<00:49:01.665>well <00:49:01.945>check <00:49:02.225>out <00:49:02.505>my <00:49:02.785>ebook <00:49:03.065>anyway.

856
00:49:04.545 --> 00:49:08.315
<00:49:04.545>Perhaps <00:49:04.700>I <00:49:04.856>am <00:49:05.011>writing <00:49:05.167>bad <00:49:05.322>than <00:49:05.478>I'm <00:49:05.633>speaking. <00:49:05.789>Who <00:49:05.945>knows?

857
00:49:10.165 --> 00:49:12.455
<00:49:10.165>Okay, <00:49:10.398>now <00:49:10.631>let's <00:49:10.865>come <00:49:11.098>to <00:49:11.331>the <00:49:11.565>summary.

858
00:49:13.155 --> 00:49:14.815
<00:49:13.155>We <00:49:13.435>have <00:49:13.715>seen <00:49:13.995>several <00:49:14.275>things <00:49:14.555>here.

859
00:49:15.105 --> 00:49:18.055
<00:49:15.105>First <00:49:15.280>of <00:49:15.455>all, <00:49:15.630>we've <00:49:15.805>seen <00:49:15.980>that <00:49:16.155>it <00:49:16.330>is <00:49:16.505>beneficial

860
00:49:18.315 --> 00:49:22.215
<00:49:18.315>to <00:49:18.515>subdivide <00:49:18.715>your <00:49:18.915>big <00:49:19.115>application <00:49:19.315>into <00:49:19.515>sub <00:49:19.715>domains,

861
00:49:22.915 --> 00:49:26.335
<00:49:22.915>sub <00:49:23.148>subdomains <00:49:23.381>that <00:49:23.615>decrease <00:49:23.848>the <00:49:24.081>overall <00:49:24.315>complexity.

862
00:49:27.145 --> 00:49:30.205
<00:49:27.145>The <00:49:27.285>less <00:49:27.425>than <00:49:27.565>know <00:49:27.705>about <00:49:27.845>each <00:49:27.985>other, <00:49:28.125>the <00:49:28.265>better <00:49:28.405>it <00:49:28.545>is

863
00:49:30.475 --> 00:49:34.045
<00:49:30.475>because <00:49:30.630>in <00:49:30.786>this <00:49:30.941>case <00:49:31.097>you <00:49:31.252>cannot <00:49:31.408>easily <00:49:31.563>break <00:49:31.719>something <00:49:31.875>here

864
00:49:34.235 --> 00:49:35.885
<00:49:34.235>when <00:49:34.701>changing <00:49:35.168>something <00:49:35.635>there.

865
00:49:36.455 --> 00:49:39.245
<00:49:36.455>We've <00:49:36.630>also <00:49:36.805>seen <00:49:36.980>that <00:49:37.154>you <00:49:37.330>can <00:49:37.505>further <00:49:37.680>subdivide <00:49:37.855>your

866
00:49:39.495 --> 00:49:41.165
<00:49:39.495>subdomains <00:49:40.194>into <00:49:40.895>layers.

867
00:49:42.375 --> 00:49:44.605
<00:49:42.375>We've <00:49:42.655>talked <00:49:42.935>about <00:49:43.215>fine <00:49:43.495>grained <00:49:43.775>libraries

868
00:49:44.665 --> 00:49:46.645
<00:49:44.665>and <00:49:44.898>all <00:49:45.131>the <00:49:45.365>advantages <00:49:45.598>they <00:49:45.831>come <00:49:46.065>with.

869
00:49:46.955 --> 00:49:50.805
<00:49:46.955>They <00:49:47.095>are <00:49:47.235>the <00:49:47.375>unit <00:49:47.515>of <00:49:47.654>reation <00:49:47.795>and <00:49:47.935>the <00:49:48.075>unit <00:49:48.215>of <00:49:48.355>retesting.

870
00:49:51.705 --> 00:49:54.325
<00:49:51.705>And <00:49:51.904>we <00:49:52.105>have <00:49:52.305>seen <00:49:52.505>that <00:49:52.705>Nax <00:49:52.904>helps <00:49:53.105>us

871
00:49:54.425 --> 00:49:57.725
<00:49:54.425>to <00:49:54.705>enforce <00:49:54.985>access <00:49:55.265>restrictions <00:49:55.545>to <00:49:55.825>guarantee

872
00:49:57.875 --> 00:50:01.525
<00:49:57.875>that <00:49:58.108>not <00:49:58.341>everything <00:49:58.575>depends <00:49:58.808>upon <00:49:59.041>everything <00:49:59.275>else.

873
00:50:02.485 --> 00:50:06.105
<00:50:02.485>And <00:50:02.625>there <00:50:02.765>is <00:50:02.905>a <00:50:03.045>last <00:50:03.185>thing <00:50:03.325>I <00:50:03.465>never <00:50:03.605>wanted <00:50:03.745>to <00:50:03.885>forget.

874
00:50:06.645 --> 00:50:09.265
<00:50:06.645>If <00:50:06.925>you <00:50:07.205>forget <00:50:07.485>everything, <00:50:07.765>please <00:50:08.045>always

875
00:50:09.825 --> 00:50:11.505
<00:50:09.825>remember <00:50:10.174>this <00:50:10.524>one <00:50:10.875>last <00:50:11.225>thing.

876
00:50:12.205 --> 00:50:17.155
<00:50:12.205>Namely, <00:50:12.438>you <00:50:12.671>can <00:50:12.904>accelerate <00:50:13.138>a <00:50:13.371>software <00:50:13.605>architecture

877
00:50:17.155 --> 00:50:20.835
<00:50:17.155>process <00:50:17.330>by <00:50:17.505>feeding <00:50:17.680>the <00:50:17.855>team <00:50:18.030>with <00:50:18.205>in <00:50:18.380>and <00:50:18.555>pizza.

878
00:50:21.375 --> 00:50:25.075
<00:50:21.375>And <00:50:21.515>when <00:50:21.655>it <00:50:21.795>comes <00:50:21.935>to <00:50:22.075>pizza, <00:50:22.215>I <00:50:22.355>really <00:50:22.495>recommend <00:50:22.635>pizza <00:50:22.775>cia,

879
00:50:25.485 --> 00:50:28.245
<00:50:25.485>which <00:50:25.640>is <00:50:25.796>the <00:50:25.951>pizza <00:50:26.107>with <00:50:26.262>corn <00:50:26.418>and <00:50:26.573>baking <00:50:26.729>on <00:50:26.885>it.

880
00:50:28.645 --> 00:50:31.285
<00:50:28.645>I <00:50:28.878>only <00:50:29.111>made <00:50:29.345>good <00:50:29.578>experiences <00:50:29.811>with <00:50:30.045>it.

881
00:50:31.385 --> 00:50:33.205
<00:50:31.385>So <00:50:31.665>please <00:50:31.945>keep <00:50:32.225>this <00:50:32.505>in <00:50:32.785>mind.

882
00:50:34.315 --> 00:50:36.495
<00:50:34.315>So <00:50:34.595>here <00:50:34.875>you <00:50:35.155>have <00:50:35.435>my <00:50:35.715>coordinates.

883
00:50:36.755 --> 00:50:40.215
<00:50:36.755>You <00:50:36.988>will <00:50:37.221>find <00:50:37.455>the <00:50:37.688>whole, <00:50:37.921>uh, <00:50:38.155>presentation

884
00:50:40.555 --> 00:50:43.535
<00:50:40.555>and <00:50:40.754>the <00:50:40.955>example <00:50:41.154>I've <00:50:41.355>used <00:50:41.555>in <00:50:41.754>my <00:50:41.955>blog.

885
00:50:44.155 --> 00:50:46.895
<00:50:44.155>And <00:50:44.330>if <00:50:44.505>you <00:50:44.680>want, <00:50:44.855>follow <00:50:45.030>me <00:50:45.205>on <00:50:45.380>Twitter <00:50:45.555>so

886
00:50:46.895 --> 00:50:48.855
<00:50:46.895>that <00:50:47.175>we <00:50:47.455>can <00:50:47.735>keep <00:50:48.015>in <00:50:48.295>contact.

887
00:50:49.555 --> 00:50:54.215
<00:50:49.555>So <00:50:49.682>thanks <00:50:49.809>for <00:50:49.936>having <00:50:50.064>me <00:50:50.191>and <00:50:50.318>have <00:50:50.445>a <00:50:50.573>nice <00:50:50.700>day. <00:50:50.827>Thank <00:50:50.955>you.