WEBVTT

1
00:00:03.095 --> 00:00:03.445
Hello.

2
00:00:04.265 --> 00:00:07.805
<00:00:04.265>Uh, <00:00:04.465>so, <00:00:04.665>uh, <00:00:04.864>the <00:00:05.064>stage <00:00:05.265>managers <00:00:05.465>told <00:00:05.664>me,

3
00:00:07.805 --> 00:00:10.485
<00:00:07.805>if <00:00:07.932>you <00:00:08.059>can't <00:00:08.186>hear <00:00:08.314>me, <00:00:08.441>just <00:00:08.568>raise <00:00:08.695>your <00:00:08.823>hand <00:00:08.950>in <00:00:09.077>the <00:00:09.205>back

4
00:00:10.505 --> 00:00:11.525
<00:00:10.505>and <00:00:10.811>I'll <00:00:11.117>talk <00:00:11.423>louder.

5
00:00:12.305 --> 00:00:17.285
<00:00:12.305>Uh, <00:00:12.480>you <00:00:12.655>can't <00:00:12.830>hear <00:00:13.004>me. <00:00:13.180>Okay. <00:00:13.355>Are <00:00:13.530>you <00:00:13.705>good?

6
00:00:17.555 --> 00:00:22.245
<00:00:17.555>Okay, <00:00:17.730>nice. <00:00:17.905>Uh, <00:00:18.080>so <00:00:18.255>today <00:00:18.430>I'll <00:00:18.605>talk, <00:00:18.780>uh, <00:00:18.955>about,

7
00:00:22.585 --> 00:00:24.685
<00:00:22.585>uh, <00:00:22.935>standardizing <00:00:23.285>your <00:00:23.635>development <00:00:23.985>environment.

8
00:00:24.685 --> 00:00:26.125
<00:00:24.685>We'll <00:00:24.901>do <00:00:25.116>a <00:00:25.333>deep <00:00:25.549>dive <00:00:25.765>into <00:00:25.981>some

9
00:00:26.125 --> 00:00:28.205
<00:00:26.125>of <00:00:26.405>the <00:00:26.685>most <00:00:26.965>popular <00:00:27.245>development <00:00:27.525>environment

10
00:00:28.525 --> 00:00:29.565
<00:00:28.525>configuration <00:00:29.461>standards.

11
00:00:30.305 --> 00:00:33.645
<00:00:30.305>So <00:00:30.421>my <00:00:30.538>name <00:00:30.655>is <00:00:30.771>Toma, <00:00:30.888>uh, <00:00:31.005>TOMA <00:00:31.121>Pak, <00:00:31.238>if <00:00:31.355>you <00:00:31.471>can <00:00:31.588>pronounce <00:00:31.705>that.

12
00:00:34.145 --> 00:00:35.525
<00:00:34.145>Uh, <00:00:34.455>I'm <00:00:34.766>a <00:00:35.076>sourcer <00:00:35.387>developer

13
00:00:35.905 --> 00:00:37.845
<00:00:35.905>and <00:00:36.255>developer <00:00:36.605>advocate <00:00:36.955>at <00:00:37.305>Daytona.

14
00:00:38.305 --> 00:00:41.125
<00:00:38.305>I'm <00:00:38.480>24. <00:00:38.655>I've <00:00:38.830>been <00:00:39.005>active <00:00:39.180>as <00:00:39.355>a <00:00:39.530>software <00:00:39.705>developer

15
00:00:41.125 --> 00:00:42.565
<00:00:41.125>for <00:00:41.449>about <00:00:41.772>eight <00:00:42.097>years <00:00:42.421>now.

16
00:00:43.145 --> 00:00:45.445
<00:00:43.145>Uh, <00:00:43.345>and <00:00:43.545>I'm <00:00:43.745>also <00:00:43.945>an <00:00:44.145>open <00:00:44.345>source <00:00:44.545>maintainer

17
00:00:45.585 --> 00:00:47.045
<00:00:45.585>for <00:00:46.023>the <00:00:46.461>Daytona <00:00:46.899>project.

18
00:00:48.225 --> 00:00:49.725
<00:00:48.225>So <00:00:48.562>two <00:00:48.900>lines <00:00:49.237>about <00:00:49.575>Daytona.

19
00:00:49.875 --> 00:00:52.205
<00:00:49.875>Daytona <00:00:50.108>is <00:00:50.341>an <00:00:50.575>open <00:00:50.808>source <00:00:51.041>development, <00:00:51.275>uh,

20
00:00:52.205 --> 00:00:56.285
<00:00:52.205>environment <00:00:52.379>manager, <00:00:52.555>uh, <00:00:52.730>whose <00:00:52.905>purpose <00:00:53.080>is <00:00:53.254>to <00:00:53.430>eliminate <00:00:53.605>all,

21
00:00:56.745 --> 00:00:59.605
<00:00:56.745>um, <00:00:56.919>all <00:00:57.095>the <00:00:57.269>fuss <00:00:57.445>about <00:00:57.620>setting <00:00:57.794>up <00:00:57.970>your <00:00:58.144>environment

22
00:00:59.705 --> 00:01:01.325
<00:00:59.705>and <00:00:59.985>doing <00:01:00.265>it <00:01:00.545>from <00:01:00.824>a <00:01:01.105>simple

23
00:01:01.385 --> 00:01:04.325
<00:01:01.385>and <00:01:01.585>intuitive <00:01:01.785>CLI <00:01:01.985>that <00:01:02.184>you <00:01:02.385>can <00:01:02.585>use <00:01:02.785>locally

24
00:01:04.585 --> 00:01:07.485
<00:01:04.584>and <00:01:04.818>spin <00:01:05.051>up, <00:01:05.285>uh, <00:01:05.518>standardized <00:01:05.751>development <00:01:05.985>environment.

25
00:01:08.545 --> 00:01:12.165
<00:01:08.545>So, <00:01:08.700>uh, <00:01:08.856>the, <00:01:09.011>this <00:01:09.167>talk <00:01:09.322>will <00:01:09.478>go <00:01:09.633>over <00:01:09.789>first, <00:01:09.945>uh,

26
00:01:12.355 --> 00:01:14.245
<00:01:12.355>what <00:01:12.635>even <00:01:12.915>is <00:01:13.195>a <00:01:13.475>development <00:01:13.755>environment.

27
00:01:14.705 --> 00:01:16.165
<00:01:14.705>Uh, <00:01:14.923>most <00:01:15.143>of <00:01:15.362>you <00:01:15.580>probably <00:01:15.800>here <00:01:16.018>know

28
00:01:16.165 --> 00:01:17.485
<00:01:16.164>what <00:01:16.461>the <00:01:16.759>development <00:01:17.056>environment <00:01:17.353>is,

29
00:01:17.485 --> 00:01:19.205
<00:01:17.485>but <00:01:17.765>we'll <00:01:18.045>just <00:01:18.325>cover <00:01:18.605>the <00:01:18.885>basics.

30
00:01:19.825 --> 00:01:23.045
<00:01:19.825>Uh, <00:01:20.000>then <00:01:20.175>we'll <00:01:20.350>talk <00:01:20.525>about <00:01:20.700>what <00:01:20.875>even <00:01:21.050>to <00:01:21.225>standardize

31
00:01:23.345 --> 00:01:24.925
<00:01:23.345>inside <00:01:23.811>these <00:01:24.278>development <00:01:24.745>environments.

32
00:01:24.925 --> 00:01:26.805
<00:01:24.925>And <00:01:25.100>as <00:01:25.274>you'll <00:01:25.450>see <00:01:25.625>some <00:01:25.800>of, <00:01:25.975>uh, <00:01:26.149>the <00:01:26.325>parts

33
00:01:26.825 --> 00:01:28.965
<00:01:26.825>of <00:01:27.105>your <00:01:27.385>DE <00:01:27.665>is <00:01:27.945>already <00:01:28.225>standardized.

34
00:01:29.625 --> 00:01:32.605
<00:01:29.625>Uh, <00:01:29.765>then <00:01:29.905>we'll <00:01:30.045>go <00:01:30.185>over <00:01:30.325>some <00:01:30.465>of <00:01:30.605>the <00:01:30.745>most <00:01:30.885>popular <00:01:31.025>development,

35
00:01:32.705 --> 00:01:34.165
<00:01:32.705>uh, <00:01:33.362>environment <00:01:34.018>standards.

36
00:01:34.225 --> 00:01:36.485
<00:01:34.225>And <00:01:34.425>then <00:01:34.625>lastly, <00:01:34.824>I'll <00:01:35.024>talk <00:01:35.225>you <00:01:35.425>through <00:01:35.625>how

37
00:01:36.545 --> 00:01:39.805
<00:01:36.545>to <00:01:36.745>actually <00:01:36.945>choose <00:01:37.145>one <00:01:37.345>most <00:01:37.545>appropriate <00:01:37.745>to <00:01:37.945>yourself,

38
00:01:39.865 --> 00:01:42.325
<00:01:39.865>to <00:01:40.040>your <00:01:40.215>project, <00:01:40.390>to <00:01:40.565>your <00:01:40.740>team <00:01:40.915>and <00:01:41.090>your <00:01:41.265>company.

39
00:01:43.745 --> 00:01:46.205
<00:01:43.745>Uh, <00:01:43.900>before <00:01:44.056>we <00:01:44.211>begin, <00:01:44.367>I <00:01:44.522>wanna <00:01:44.678>talk <00:01:44.833>about <00:01:44.989>a <00:01:45.145>concept

40
00:01:46.395 --> 00:01:47.445
<00:01:46.395>that <00:01:46.710>is <00:01:47.025>very, <00:01:47.339>uh,

41
00:01:47.445 --> 00:01:50.005
<00:01:47.445>important <00:01:47.725>when <00:01:48.005>talking <00:01:48.285>about <00:01:48.565>development <00:01:48.845>environments

42
00:01:50.065 --> 00:01:52.525
<00:01:50.065>and <00:01:50.345>your <00:01:50.625>entire <00:01:50.905>develop <00:01:51.185>developer <00:01:51.465>workflow.

43
00:01:53.185 --> 00:01:56.285
<00:01:53.185>Uh, <00:01:53.325>and <00:01:53.465>that's <00:01:53.605>the <00:01:53.745>concept <00:01:53.885>of <00:01:54.025>the <00:01:54.165>inner <00:01:54.305>and <00:01:54.445>outer <00:01:54.585>loop.

44
00:01:56.625 --> 00:01:58.685
<00:01:56.625>So <00:01:56.905>the <00:01:57.185>inner <00:01:57.465>loop <00:01:57.745>is <00:01:58.025>something

45
00:01:58.685 --> 00:02:01.925
<00:01:58.685>that <00:01:58.965>encompasses <00:01:59.245>your <00:01:59.525>entire <00:01:59.805>development <00:02:00.085>environment.

46
00:02:02.345 --> 00:02:06.725
<00:02:02.345>It <00:02:02.520>has <00:02:02.695>os <00:02:02.870>libraries, <00:02:03.045>your <00:02:03.220>IDE <00:02:03.395>debugger <00:02:03.570>support, <00:02:03.745>uh,

47
00:02:06.865 --> 00:02:10.005
<00:02:06.865>any <00:02:07.098>system-wide <00:02:07.331>packages <00:02:07.565>needed <00:02:07.798>for <00:02:08.031>developing, <00:02:08.264>like,

48
00:02:10.125 --> 00:02:13.045
<00:02:10.125>I <00:02:10.358>dunno, <00:02:10.591>git, <00:02:10.824>uh, <00:02:11.058>curl <00:02:11.291>or <00:02:11.525>whatever.

49
00:02:13.625 --> 00:02:14.965
<00:02:13.625>And <00:02:13.826>then <00:02:14.027>you <00:02:14.228>have <00:02:14.429>the <00:02:14.630>outer <00:02:14.831>loop.

50
00:02:15.105 --> 00:02:17.125
<00:02:15.105>The <00:02:15.338>outer <00:02:15.571>loop <00:02:15.804>is <00:02:16.038>something <00:02:16.271>that, <00:02:16.505>uh,

51
00:02:17.265 --> 00:02:19.405
<00:02:17.265>covers <00:02:17.545>the <00:02:17.825>deployment <00:02:18.105>side <00:02:18.385>of <00:02:18.665>things.

52
00:02:19.595 --> 00:02:21.805
<00:02:19.595>It's <00:02:19.770>something <00:02:19.945>that <00:02:20.120>happens <00:02:20.295>when <00:02:20.470>you <00:02:20.645>do <00:02:20.820>git <00:02:20.995>push

53
00:02:21.945 --> 00:02:23.605
<00:02:21.945>and <00:02:22.178>then <00:02:22.411>the <00:02:22.644>outer <00:02:22.878>loop <00:02:23.111>takes <00:02:23.345>over.

54
00:02:23.915 --> 00:02:26.965
<00:02:23.915>It's <00:02:24.070>something <00:02:24.226>that <00:02:24.381>mostly <00:02:24.537>is <00:02:24.692>done <00:02:24.848>inside <00:02:25.003>the <00:02:25.159>CI <00:02:25.315>pipeline.

55
00:02:27.105 --> 00:02:30.205
<00:02:27.105>And <00:02:27.280>the <00:02:27.454>important <00:02:27.630>thing <00:02:27.804>is <00:02:27.980>that <00:02:28.155>there's <00:02:28.329>no <00:02:28.505>debuggers,

56
00:02:30.305 --> 00:02:32.885
<00:02:30.305>no <00:02:30.585>LSPs, <00:02:30.865>no <00:02:31.145>curl <00:02:31.425>or <00:02:31.705>whatever.

57
00:02:33.355 --> 00:02:36.405
<00:02:33.355>It's <00:02:33.510>the <00:02:33.666>bare <00:02:33.821>minimum <00:02:33.977>of <00:02:34.132>what <00:02:34.288>you <00:02:34.443>need <00:02:34.599>to <00:02:34.755>securely

58
00:02:36.465 --> 00:02:38.525
<00:02:36.465>and <00:02:36.815>efficiently <00:02:37.165>package <00:02:37.515>your <00:02:37.865>application

59
00:02:38.525 --> 00:02:39.965
<00:02:38.525>and <00:02:38.849>deploy <00:02:39.173>it <00:02:39.497>to <00:02:39.821>production.

60
00:02:40.915 --> 00:02:43.725
<00:02:40.915>This <00:02:41.054>talk <00:02:41.195>will <00:02:41.334>mostly <00:02:41.475>focus <00:02:41.614>on <00:02:41.755>the <00:02:41.894>inner <00:02:42.035>side <00:02:42.174>of <00:02:42.315>things

61
00:02:43.725 --> 00:02:45.965
<00:02:43.725>because <00:02:43.958>that's <00:02:44.191>the <00:02:44.424>development <00:02:44.658>side <00:02:44.891>of <00:02:45.125>things,

62
00:02:46.025 --> 00:02:47.845
<00:02:46.025>but <00:02:46.225>we'll <00:02:46.425>also <00:02:46.625>touch <00:02:46.825>on <00:02:47.025>the <00:02:47.225>outer <00:02:47.425>loop,

63
00:02:47.905 --> 00:02:49.365
<00:02:47.905>as <00:02:48.167>you'll <00:02:48.430>see <00:02:48.693>in <00:02:48.956>a <00:02:49.219>bit.

64
00:02:50.705 --> 00:02:53.805
<00:02:50.704>So, <00:02:50.938>what <00:02:51.171>even <00:02:51.404>is <00:02:51.638>a <00:02:51.871>development <00:02:52.105>environment?

65
00:02:53.875 --> 00:02:55.885
<00:02:53.875>Most <00:02:54.155>of <00:02:54.435>you <00:02:54.715>here <00:02:54.995>probably <00:02:55.275>use

66
00:02:55.885 --> 00:02:57.245
<00:02:55.885>development <00:02:56.293>environments <00:02:56.701>every <00:02:57.109>day.

67
00:02:57.705 --> 00:03:01.085
<00:02:57.704>Um, <00:02:57.860>so <00:02:58.016>your <00:02:58.171>development <00:02:58.327>environment, <00:02:58.482>of <00:02:58.638>course, <00:02:58.793>has <00:02:58.949>to, <00:02:59.105>has,

68
00:03:01.425 --> 00:03:04.005
<00:03:01.425>has <00:03:01.625>to <00:03:01.825>have <00:03:02.025>access <00:03:02.225>to <00:03:02.425>your <00:03:02.625>code, <00:03:02.825>has

69
00:03:04.005 --> 00:03:05.885
<00:03:04.005>to <00:03:04.238>have <00:03:04.471>some <00:03:04.704>project <00:03:04.938>libraries, <00:03:05.171>for <00:03:05.405>example,

70
00:03:05.885 --> 00:03:08.725
<00:03:05.885>you're <00:03:06.084>using <00:03:06.285>Node, <00:03:06.484>you <00:03:06.685>have <00:03:06.885>some <00:03:07.084>MPM <00:03:07.285>packages

71
00:03:08.725 --> 00:03:10.565
<00:03:08.725>that <00:03:08.958>you <00:03:09.191>use <00:03:09.424>while <00:03:09.658>developing <00:03:09.891>the <00:03:10.125>project.

72
00:03:11.315 --> 00:03:13.045
<00:03:11.315>Then <00:03:11.665>you <00:03:12.015>need <00:03:12.365>system-wide <00:03:12.715>packages.

73
00:03:13.175 --> 00:03:16.045
<00:03:13.175>Again, <00:03:13.641>get <00:03:14.108>Vim <00:03:14.575>Curl

74
00:03:16.625 --> 00:03:18.965
<00:03:16.625>or <00:03:16.858>any <00:03:17.091>other <00:03:17.325>OS <00:03:17.558>library <00:03:17.791>you <00:03:18.025>need.

75
00:03:19.675 --> 00:03:20.925
<00:03:19.675>Then <00:03:19.956>you <00:03:20.237>have <00:03:20.518>your <00:03:20.800>ID

76
00:03:21.345 --> 00:03:24.805
<00:03:21.345>and <00:03:21.484>setting <00:03:21.625>up <00:03:21.765>your <00:03:21.905>id, <00:03:22.045>uh, <00:03:22.185>might <00:03:22.325>seem <00:03:22.465>like <00:03:22.605>a <00:03:22.745>given.

77
00:03:24.915 --> 00:03:26.725
<00:03:24.915>It's <00:03:25.114>just <00:03:25.315>open <00:03:25.515>up <00:03:25.715>vs <00:03:25.915>code, <00:03:26.114>you're <00:03:26.315>done.

78
00:03:26.785 --> 00:03:30.205
<00:03:26.785>But <00:03:26.960>no, <00:03:27.135>uh, <00:03:27.310>you <00:03:27.484>have <00:03:27.660>to <00:03:27.835>configure <00:03:28.010>your <00:03:28.185>settings,

79
00:03:30.205 --> 00:03:32.725
<00:03:30.204>your <00:03:30.438>extensions, <00:03:30.671>and <00:03:30.904>that's <00:03:31.138>all <00:03:31.371>project <00:03:31.605>specific.

80
00:03:32.785 --> 00:03:35.285
<00:03:32.785>So <00:03:33.018>for <00:03:33.251>example, <00:03:33.484>you <00:03:33.718>have <00:03:33.951>rust <00:03:34.185>projects

81
00:03:35.285 --> 00:03:36.725
<00:03:35.285>that <00:03:35.716>require <00:03:36.149>rust <00:03:36.581>extensions.

82
00:03:36.725 --> 00:03:38.805
<00:03:36.725>You <00:03:37.005>have <00:03:37.285>Python <00:03:37.565>projects <00:03:37.845>requiring <00:03:38.125>Python

83
00:03:38.815 --> 00:03:40.285
<00:03:38.815>extensions <00:03:39.256>and <00:03:39.697>et <00:03:40.138>cetera.

84
00:03:40.285 --> 00:03:42.405
<00:03:40.285>And <00:03:40.484>I, <00:03:40.685>I <00:03:40.885>know <00:03:41.085>personally <00:03:41.285>I <00:03:41.484>hate <00:03:41.685>doing

85
00:03:42.405 --> 00:03:43.805
<00:03:42.405>that <00:03:42.825>whenever <00:03:43.245>switching <00:03:43.665>projects.

86
00:03:43.845 --> 00:03:47.245
<00:03:43.845>I <00:03:43.984>always <00:03:44.125>forget <00:03:44.265>which <00:03:44.405>extensions <00:03:44.545>I <00:03:44.685>need <00:03:44.825>to <00:03:44.965>install <00:03:45.105>to <00:03:45.245>be,

87
00:03:47.665 --> 00:03:49.285
<00:03:47.665>uh, <00:03:48.015>as <00:03:48.364>efficient <00:03:48.715>as <00:03:49.065>possible.

88
00:03:50.105 --> 00:03:52.325
<00:03:50.105>And <00:03:50.304>then <00:03:50.505>lastly, <00:03:50.704>you <00:03:50.905>need <00:03:51.105>some <00:03:51.304>compute <00:03:51.505>resources.

89
00:03:52.985 --> 00:03:54.765
<00:03:52.985>You <00:03:53.265>of <00:03:53.545>course, <00:03:53.825>need <00:03:54.105>compute <00:03:54.385>resources

90
00:03:54.765 --> 00:03:57.445
<00:03:54.765>to <00:03:54.940>efficiently <00:03:55.114>run <00:03:55.290>your <00:03:55.464>project <00:03:55.640>to <00:03:55.815>ensure, <00:03:55.989>let's <00:03:56.165>say,

91
00:03:57.445 --> 00:03:59.485
<00:03:57.445>smooth <00:03:57.795>operation <00:03:58.144>when, <00:03:58.495>uh, <00:03:58.845>developing

92
00:03:59.485 --> 00:04:01.645
<00:03:59.485>so <00:03:59.718>you <00:03:59.951>don't <00:04:00.185>get <00:04:00.418>any <00:04:00.651>resource <00:04:00.885>bottlenecks.

93
00:04:02.225 --> 00:04:05.005
<00:04:02.225>And <00:04:02.364>in <00:04:02.505>this <00:04:02.644>AI <00:04:02.785>era, <00:04:02.924>I <00:04:03.065>have <00:04:03.204>to <00:04:03.345>mention <00:04:03.484>it, <00:04:03.625>you

94
00:04:05.065 --> 00:04:07.925
<00:04:05.065>of <00:04:05.220>course <00:04:05.376>need <00:04:05.531>a <00:04:05.687>lot <00:04:05.842>of <00:04:05.998>C-P-U-G-P-U <00:04:06.153>to <00:04:06.309>run <00:04:06.465>all

95
00:04:07.925 --> 00:04:10.005
<00:04:07.925>of <00:04:08.205>your <00:04:08.485>agents <00:04:08.765>training <00:04:09.045>and <00:04:09.325>whatever.

96
00:04:10.065 --> 00:04:12.725
<00:04:10.065>So <00:04:10.265>compute <00:04:10.465>resources <00:04:10.665>are <00:04:10.865>really <00:04:11.065>an <00:04:11.265>important <00:04:11.465>part

97
00:04:13.145 --> 00:04:14.725
<00:04:13.145>of <00:04:13.611>your <00:04:14.078>development <00:04:14.545>environment.

98
00:04:16.185 --> 00:04:19.045
<00:04:16.185>Uh, <00:04:16.360>setting <00:04:16.535>all <00:04:16.709>this <00:04:16.885>up <00:04:17.060>is <00:04:17.235>of <00:04:17.410>course, <00:04:17.584>tedious

99
00:04:19.045 --> 00:04:20.725
<00:04:19.045>and <00:04:19.395>that's <00:04:19.745>where <00:04:20.095>standardized <00:04:20.445>development

100
00:04:20.725 --> 00:04:22.125
<00:04:20.725>environments <00:04:21.145>come <00:04:21.565>into <00:04:21.985>play.

101
00:04:23.145 --> 00:04:25.965
<00:04:23.145>And <00:04:23.378>standardizing <00:04:23.611>your <00:04:23.844>development <00:04:24.078>environment <00:04:24.311>is <00:04:24.544>something

102
00:04:25.965 --> 00:04:28.085
<00:04:25.965>that <00:04:26.140>should <00:04:26.315>be <00:04:26.489>an <00:04:26.664>essential <00:04:26.840>part <00:04:27.015>of <00:04:27.190>your <00:04:27.364>workflow,

103
00:04:28.085 --> 00:04:30.365
<00:04:28.085>and <00:04:28.260>it's <00:04:28.435>something <00:04:28.609>that <00:04:28.784>will <00:04:28.960>boost <00:04:29.135>your <00:04:29.310>developer <00:04:29.484>velocity

104
00:04:31.185 --> 00:04:32.405
<00:04:31.185>to <00:04:31.734>different <00:04:32.282>levels.

105
00:04:33.425 --> 00:04:37.005
<00:04:33.425>Um, <00:04:33.580>but <00:04:33.736>what <00:04:33.891>do <00:04:34.047>we <00:04:34.202>even <00:04:34.358>have <00:04:34.513>to <00:04:34.669>standardize, <00:04:34.825>uh,

106
00:04:37.065 --> 00:04:38.445
<00:04:37.065>in <00:04:37.479>our <00:04:37.893>development <00:04:38.307>environment?

107
00:04:38.475 --> 00:04:40.565
<00:04:38.475>It's <00:04:38.675>not <00:04:38.875>everything <00:04:39.075>that <00:04:39.275>needs <00:04:39.475>to <00:04:39.675>be <00:04:39.875>standardized

108
00:04:40.715 --> 00:04:42.165
<00:04:40.715>because <00:04:41.367>your <00:04:42.020>code

109
00:04:42.185 --> 00:04:44.125
<00:04:42.185>and <00:04:42.465>your <00:04:42.745>project <00:04:43.025>libraries <00:04:43.305>are <00:04:43.585>already,

110
00:04:44.175 --> 00:04:46.085
<00:04:44.175>let's <00:04:44.525>say <00:04:44.875>quote <00:04:45.225>unquote <00:04:45.575>standardized

111
00:04:46.595 --> 00:04:50.045
<00:04:46.595>code <00:04:46.750>is <00:04:46.906>hosted <00:04:47.061>on <00:04:47.217>some <00:04:47.372>Git <00:04:47.528>provider <00:04:47.683>like <00:04:47.839>GitHub, <00:04:47.995>GitLab,

112
00:04:50.385 --> 00:04:53.725
<00:04:50.385>or <00:04:50.585>any, <00:04:50.784>I <00:04:50.985>dunno, <00:04:51.185>enterprise <00:04:51.385>self-hosted <00:04:51.585>Git <00:04:51.784>solution.

113
00:04:54.655 --> 00:04:58.405
<00:04:54.655>While <00:04:54.794>project <00:04:54.934>libraries <00:04:55.075>are, <00:04:55.215>uh, <00:04:55.354>more <00:04:55.494>often <00:04:55.635>than <00:04:55.775>not <00:04:55.914>a <00:04:56.054>part

114
00:04:58.545 --> 00:05:00.685
<00:04:58.545>of <00:04:58.825>the, <00:04:59.105>uh, <00:04:59.385>programming <00:04:59.665>language <00:04:59.945>itself.

115
00:05:01.025 --> 00:05:05.525
<00:05:01.025>So <00:05:01.164>for <00:05:01.304>example, <00:05:01.445>node <00:05:01.585>has <00:05:01.724>yarn, <00:05:01.864>has <00:05:02.005>MPM, <00:05:02.145>Java <00:05:02.284>has <00:05:02.424>Gradle

116
00:05:05.525 --> 00:05:08.045
<00:05:05.525>or <00:05:05.724>Maven, <00:05:05.924>and <00:05:06.125>I <00:05:06.325>know <00:05:06.525>Rust <00:05:06.724>has <00:05:06.924>cargo

117
00:05:08.045 --> 00:05:11.165
<00:05:08.045>that's <00:05:08.220>already <00:05:08.395>standardized <00:05:08.570>and <00:05:08.745>part <00:05:08.920>of <00:05:09.095>your <00:05:09.270>code <00:05:09.445>itself.

118
00:05:12.635 --> 00:05:15.805
<00:05:12.635>What <00:05:12.775>we <00:05:12.914>will <00:05:13.055>focus <00:05:13.195>on <00:05:13.335>standardizing <00:05:13.474>here <00:05:13.615>is <00:05:13.755>the <00:05:13.895>system <00:05:14.034>wide

119
00:05:15.805 --> 00:05:18.765
<00:05:15.805>packages, <00:05:16.038>the <00:05:16.271>IDE <00:05:16.505>and <00:05:16.738>the <00:05:16.971>compute <00:05:17.205>resources.

120
00:05:18.985 --> 00:05:20.125
<00:05:18.985>That's <00:05:19.327>the <00:05:19.669>hard <00:05:20.011>part.

121
00:05:20.235 --> 00:05:23.045
<00:05:20.235>It's <00:05:20.375>hard <00:05:20.515>to <00:05:20.655>know <00:05:20.795>which <00:05:20.935>always <00:05:21.075>dependencies <00:05:21.215>you <00:05:21.355>need <00:05:21.495>on <00:05:21.635>your

122
00:05:23.205 --> 00:05:24.805
<00:05:23.205>Linux <00:05:23.484>machine, <00:05:23.765>on <00:05:24.044>your <00:05:24.325>Mac <00:05:24.604>windows.

123
00:05:25.355 --> 00:05:28.325
<00:05:25.355>It's <00:05:25.530>hard <00:05:25.705>to <00:05:25.880>configure <00:05:26.055>all <00:05:26.230>the, <00:05:26.405>uh, <00:05:26.580>ID <00:05:26.755>extensions.

124
00:05:28.355 --> 00:05:30.965
<00:05:28.355>It's <00:05:28.510>hard <00:05:28.666>to <00:05:28.821>move <00:05:28.977>machines <00:05:29.132>from <00:05:29.288>one <00:05:29.443>machine <00:05:29.599>to <00:05:29.755>another.

125
00:05:31.465 --> 00:05:33.965
<00:05:31.465>And <00:05:31.698>standardizing <00:05:31.931>your <00:05:32.164>development <00:05:32.398>environment <00:05:32.631>will <00:05:32.864>solve

126
00:05:34.065 --> 00:05:35.845
<00:05:34.065>all <00:05:34.298>of <00:05:34.531>these, <00:05:34.765>uh, <00:05:34.998>let's <00:05:35.231>say <00:05:35.465>headaches.

127
00:05:37.265 --> 00:05:38.325
<00:05:37.265>Um, <00:05:38.219>so

128
00:05:38.555 --> 00:05:41.485
<00:05:38.555>what <00:05:38.730>I'll <00:05:38.905>talk <00:05:39.080>about <00:05:39.255>today <00:05:39.430>is <00:05:39.605>standardizing <00:05:39.780>your <00:05:39.955>development

129
00:05:41.485 --> 00:05:42.765
<00:05:41.485>environment <00:05:42.061>through <00:05:42.637>code.

130
00:05:42.765 --> 00:05:43.925
<00:05:42.765>And <00:05:42.938>that <00:05:43.113>means <00:05:43.287>you <00:05:43.461>can <00:05:43.635>view <00:05:43.809>this

131
00:05:43.945 --> 00:05:46.325
<00:05:43.945>as <00:05:44.224>a <00:05:44.505>development <00:05:44.784>environment <00:05:45.065>as <00:05:45.344>code.

132
00:05:46.585 --> 00:05:47.965
<00:05:46.585>You <00:05:46.792>can <00:05:46.999>draw <00:05:47.206>the <00:05:47.413>parallel <00:05:47.620>of <00:05:47.827>course

133
00:05:48.025 --> 00:05:49.325
<00:05:48.025>to <00:05:48.414>infrastructure <00:05:48.805>as <00:05:49.195>code.

134
00:05:49.665 --> 00:05:51.165
<00:05:49.665>And <00:05:49.935>here <00:05:50.205>we <00:05:50.475>focus <00:05:50.745>on <00:05:51.015>your

135
00:05:51.165 --> 00:05:52.485
<00:05:51.165>development <00:05:51.561>environment, <00:05:51.957>of <00:05:52.353>course.

136
00:05:53.545 --> 00:05:55.845
<00:05:53.545>So <00:05:53.825>let's <00:05:54.105>now <00:05:54.385>go <00:05:54.665>over <00:05:54.945>some

137
00:05:55.845 --> 00:05:59.085
<00:05:55.845>of <00:05:56.078>the <00:05:56.311>most <00:05:56.545>popular <00:05:56.778>development <00:05:57.011>environment <00:05:57.245>standards.

138
00:05:59.255 --> 00:06:00.845
<00:05:59.255>We'll <00:05:59.488>walk <00:05:59.721>through <00:05:59.955>some <00:06:00.188>of <00:06:00.421>the, <00:06:00.655>uh,

139
00:06:00.845 --> 00:06:02.245
<00:06:00.845>development <00:06:01.475>environment <00:06:02.105>standards,

140
00:06:02.245 --> 00:06:03.565
<00:06:02.245>let's <00:06:02.482>say <00:06:02.720>used <00:06:02.957>in <00:06:03.195>the <00:06:03.433>wild.

141
00:06:04.145 --> 00:06:07.325
<00:06:04.145>But <00:06:04.272>of <00:06:04.399>course, <00:06:04.526>we <00:06:04.654>have <00:06:04.781>to <00:06:04.908>start <00:06:05.035>with, <00:06:05.163>let's <00:06:05.290>say <00:06:05.417>the <00:06:05.544>standard

142
00:06:07.425 --> 00:06:09.325
<00:06:07.425>of <00:06:07.705>the <00:06:07.985>standards, <00:06:08.265>which <00:06:08.545>is <00:06:08.825>Docker.

143
00:06:09.385 --> 00:06:12.085
<00:06:09.385>We <00:06:09.664>can't <00:06:09.945>talk <00:06:10.224>about <00:06:10.505>standardizing <00:06:10.784>something

144
00:06:12.085 --> 00:06:13.405
<00:06:12.085>without <00:06:12.679>mentioning <00:06:13.272>Docker.

145
00:06:13.825 --> 00:06:15.405
<00:06:13.825>Docker <00:06:14.104>has <00:06:14.385>been <00:06:14.664>around <00:06:14.945>for <00:06:15.224>years,

146
00:06:15.745 --> 00:06:18.565
<00:06:15.745>and <00:06:15.945>who <00:06:16.145>here <00:06:16.345>uses <00:06:16.545>Docker <00:06:16.745>day <00:06:16.945>to <00:06:17.145>day?

147
00:06:19.925 --> 00:06:21.375
<00:06:19.925>Yeah, <00:06:20.577>everyone <00:06:21.230>basically.

148
00:06:22.075 --> 00:06:25.175
<00:06:22.075>Uh, <00:06:22.215>so <00:06:22.354>I <00:06:22.495>don't <00:06:22.635>need <00:06:22.775>to <00:06:22.914>talk <00:06:23.055>about <00:06:23.195>Docker <00:06:23.335>more, <00:06:23.474>uh,

149
00:06:25.175 --> 00:06:28.855
<00:06:25.175>than <00:06:25.302>I <00:06:25.429>should, <00:06:25.556>but <00:06:25.684>if <00:06:25.811>you <00:06:25.938>know, <00:06:26.065>uh, <00:06:26.193>Docker <00:06:26.320>from <00:06:26.447>the <00:06:26.575>start,

150
00:06:29.115 --> 00:06:31.375
<00:06:29.115>its <00:06:29.348>primary <00:06:29.581>purpose <00:06:29.815>was <00:06:30.048>to <00:06:30.281>package <00:06:30.515>applications

151
00:06:31.515 --> 00:06:34.175
<00:06:31.515>for <00:06:31.794>easier <00:06:32.075>deployments <00:06:32.354>onto <00:06:32.635>different <00:06:32.914>environments.

152
00:06:34.715 --> 00:06:35.775
<00:06:34.715>Docker <00:06:35.192>is <00:06:35.669>powerful

153
00:06:35.775 --> 00:06:37.775
<00:06:35.775>because <00:06:36.054>when <00:06:36.335>you <00:06:36.614>containerize <00:06:36.895>an <00:06:37.174>application,

154
00:06:37.775 --> 00:06:39.815
<00:06:37.775>you <00:06:37.950>can <00:06:38.125>deploy <00:06:38.299>it <00:06:38.474>to <00:06:38.650>any <00:06:38.825>environment <00:06:39.000>you <00:06:39.174>want.

155
00:06:40.635 --> 00:06:43.815
<00:06:40.635>But <00:06:40.835>recently <00:06:41.034>Docker <00:06:41.235>has <00:06:41.435>been <00:06:41.635>used <00:06:41.835>for <00:06:42.034>development.

156
00:06:44.005 --> 00:06:47.255
<00:06:44.005>More <00:06:44.160>and <00:06:44.316>more <00:06:44.471>people <00:06:44.627>have <00:06:44.782>been <00:06:44.938>using, <00:06:45.093>uh, <00:06:45.249>Docker <00:06:45.405>files

157
00:06:47.475 --> 00:06:48.775
<00:06:47.475>and <00:06:47.865>uh, <00:06:48.255>docker <00:06:48.645>containers

158
00:06:48.835 --> 00:06:51.255
<00:06:48.835>to <00:06:49.114>standardize <00:06:49.395>development <00:06:49.674>environments <00:06:49.955>as <00:06:50.234>well.

159
00:06:52.245 --> 00:06:55.105
<00:06:52.245>So <00:06:52.385>if <00:06:52.525>we <00:06:52.665>take <00:06:52.805>a <00:06:52.945>look <00:06:53.085>at <00:06:53.225>an <00:06:53.365>example <00:06:53.505>here, <00:06:53.645>uh,

160
00:06:55.105 --> 00:06:58.065
<00:06:55.105>this <00:06:55.280>is <00:06:55.455>just <00:06:55.630>a <00:06:55.805>bare <00:06:55.980>bones <00:06:56.155>simple <00:06:56.330>docker <00:06:56.505>file

161
00:06:58.095 --> 00:07:00.345
<00:06:58.095>that <00:06:58.445>has <00:06:58.795>no <00:06:59.145>installed <00:06:59.495>configures.

162
00:07:00.405 --> 00:07:03.625
<00:07:00.405>The <00:07:00.580>user <00:07:00.755>has <00:07:00.929>installed, <00:07:01.104>I <00:07:01.280>dunno, <00:07:01.455>git <00:07:01.630>Vim <00:07:01.804>again,

163
00:07:03.825 --> 00:07:05.305
<00:07:03.825>I <00:07:04.091>keep <00:07:04.357>repeating <00:07:04.624>Git <00:07:04.890>and <00:07:05.157>Vim.

164
00:07:05.885 --> 00:07:10.265
<00:07:05.885>Um, <00:07:06.012>and <00:07:06.139>this <00:07:06.266>Docker <00:07:06.394>file <00:07:06.521>then <00:07:06.648>can <00:07:06.775>be <00:07:06.903>used <00:07:07.030>to, <00:07:07.157>uh, <00:07:07.284>safely

165
00:07:10.645 --> 00:07:13.465
<00:07:10.645>and, <00:07:10.924>uh, <00:07:11.205>let's <00:07:11.484>say <00:07:11.765>efficiently <00:07:12.044>develop

166
00:07:13.495 --> 00:07:14.745
<00:07:13.495>your <00:07:14.057>node <00:07:14.620>application.

167
00:07:15.165 --> 00:07:18.265
<00:07:15.165>The <00:07:15.320>Docker <00:07:15.476>file <00:07:15.631>can <00:07:15.787>be <00:07:15.942>used <00:07:16.098>to <00:07:16.253>develop <00:07:16.409>your <00:07:16.565>application,

168
00:07:18.405 --> 00:07:21.465
<00:07:18.405>but <00:07:18.560>if <00:07:18.716>you <00:07:18.871>notice <00:07:19.027>this <00:07:19.182>Docker <00:07:19.338>file <00:07:19.493>is <00:07:19.649>not <00:07:19.804>exactly

169
00:07:21.905 --> 00:07:22.985
<00:07:21.905>suitable <00:07:22.390>for <00:07:22.877>production.

170
00:07:23.285 --> 00:07:25.665
<00:07:23.285>It <00:07:23.425>has <00:07:23.565>a <00:07:23.705>lot <00:07:23.845>of <00:07:23.985>bloat <00:07:24.125>where <00:07:24.265>it's <00:07:24.405>configuring <00:07:24.545>some <00:07:24.685>users.

171
00:07:25.735 --> 00:07:28.585
<00:07:25.735>There's <00:07:25.910>no <00:07:26.085>need <00:07:26.260>for <00:07:26.435>a <00:07:26.610>lot <00:07:26.785>of <00:07:26.960>these <00:07:27.135>dependencies

172
00:07:28.585 --> 00:07:29.625
<00:07:28.585>to <00:07:28.897>go <00:07:29.209>into <00:07:29.521>production.

173
00:07:30.605 --> 00:07:34.825
<00:07:30.605>Um, <00:07:30.780>also, <00:07:30.955>again, <00:07:31.130>if <00:07:31.305>you <00:07:31.480>have <00:07:31.655>more <00:07:31.830>service <00:07:32.005>dependencies,

174
00:07:35.125 --> 00:07:37.505
<00:07:35.125>Docker <00:07:35.405>composed <00:07:35.685>to <00:07:35.965>the <00:07:36.245>rescue, <00:07:36.525>uh,

175
00:07:37.765 --> 00:07:40.745
<00:07:37.765>you <00:07:38.044>can <00:07:38.325>configure <00:07:38.604>databases, <00:07:38.885>caches, <00:07:39.164>whatever.

176
00:07:41.045 --> 00:07:43.545
<00:07:41.045>And <00:07:41.220>that's <00:07:41.395>already <00:07:41.570>a <00:07:41.745>part <00:07:41.920>of <00:07:42.095>your <00:07:42.270>code <00:07:42.445>base.

177
00:07:43.575 --> 00:07:44.825
<00:07:43.575>It's <00:07:43.950>standardized <00:07:44.325>through <00:07:44.700>code.

178
00:07:44.845 --> 00:07:47.745
<00:07:44.845>And <00:07:45.000>you <00:07:45.156>can <00:07:45.311>share <00:07:45.467>this <00:07:45.622>composed <00:07:45.778>file <00:07:45.933>inside <00:07:46.089>your <00:07:46.245>project,

179
00:07:47.975 --> 00:07:51.385
<00:07:47.975>committed <00:07:48.130>to <00:07:48.286>Git <00:07:48.441>or <00:07:48.597>share <00:07:48.752>it <00:07:48.908>manually <00:07:49.063>if <00:07:49.219>you <00:07:49.375>wish.

180
00:07:52.325 --> 00:07:56.865
<00:07:52.325>Um, <00:07:52.465>and <00:07:52.604>while <00:07:52.745>Docker <00:07:52.885>is <00:07:53.025>a <00:07:53.164>great <00:07:53.305>solution <00:07:53.445>for <00:07:53.585>actually, <00:07:53.724>uh,

181
00:07:57.305 --> 00:08:00.305
<00:07:57.305>configuring <00:07:57.445>all <00:07:57.585>the <00:07:57.725>system <00:07:57.865>wide <00:07:58.005>packages <00:07:58.145>you <00:07:58.285>need <00:07:58.425>on <00:07:58.565>N <00:07:58.705>os,

182
00:08:00.815 --> 00:08:03.985
<00:08:00.815>what <00:08:00.990>about <00:08:01.165>the <00:08:01.340>id, <00:08:01.515>how <00:08:01.690>to <00:08:01.865>install <00:08:02.040>extensions, <00:08:02.215>how

183
00:08:03.985 --> 00:08:06.625
<00:08:03.985>to <00:08:04.185>configure <00:08:04.385>settings, <00:08:04.585>and <00:08:04.785>what <00:08:04.985>about <00:08:05.185>compute <00:08:05.385>resources?

184
00:08:06.725 --> 00:08:10.425
<00:08:06.725>How <00:08:06.852>do <00:08:06.979>you <00:08:07.106>tell <00:08:07.234>Docker <00:08:07.361>that <00:08:07.488>you <00:08:07.615>need, <00:08:07.743>I <00:08:07.870>dunno, <00:08:07.997>three <00:08:08.125>gigs

185
00:08:10.425 --> 00:08:11.985
<00:08:10.425>of <00:08:10.625>RAM <00:08:10.825>every <00:08:11.025>time <00:08:11.225>you <00:08:11.425>run <00:08:11.625>this <00:08:11.825>project?

186
00:08:12.165 --> 00:08:15.465
<00:08:12.165>How <00:08:12.281>do <00:08:12.398>you <00:08:12.515>tell <00:08:12.631>Docker <00:08:12.748>you <00:08:12.865>need <00:08:12.981>a <00:08:13.098>GPU <00:08:13.215>every <00:08:13.331>time <00:08:13.448>you, <00:08:13.565>uh,

187
00:08:15.465 --> 00:08:16.705
<00:08:15.465>every <00:08:15.688>time <00:08:15.911>you <00:08:16.134>run <00:08:16.357>this <00:08:16.580>project?

188
00:08:18.005 --> 00:08:19.865
<00:08:18.005>And <00:08:18.238>that's <00:08:18.471>where <00:08:18.705>a <00:08:18.938>couple <00:08:19.171>of, <00:08:19.405>uh,

189
00:08:20.075 --> 00:08:21.985
<00:08:20.075>let's <00:08:20.541>say <00:08:21.008>real <00:08:21.474>development

190
00:08:21.985 --> 00:08:23.465
<00:08:21.985>environment <00:08:22.318>standards <00:08:22.651>come <00:08:22.984>into <00:08:23.317>play.

191
00:08:24.525 --> 00:08:27.145
<00:08:24.525>Uh, <00:08:24.724>we'll <00:08:24.924>start <00:08:25.125>by <00:08:25.325>talking <00:08:25.525>about <00:08:25.724>dev <00:08:25.924>containers

192
00:08:27.325 --> 00:08:29.545
<00:08:27.325>and <00:08:27.480>dev <00:08:27.636>files <00:08:27.791>as <00:08:27.947>soon <00:08:28.102>as <00:08:28.258>I <00:08:28.413>have <00:08:28.569>a <00:08:28.724>drink.

193
00:08:36.065 --> 00:08:39.875
<00:08:36.065>Okay, <00:08:36.240>so <00:08:36.415>to <00:08:36.590>start, <00:08:36.765>let's <00:08:36.940>talk <00:08:37.115>about <00:08:37.290>dev <00:08:37.465>containers.

194
00:08:40.815 --> 00:08:43.595
<00:08:40.815>Who <00:08:40.955>here <00:08:41.095>heard <00:08:41.235>about <00:08:41.375>dev <00:08:41.515>containers <00:08:41.655>or <00:08:41.795>is <00:08:41.935>using <00:08:42.075>them <00:08:42.215>today?

195
00:08:44.685 --> 00:08:47.175
<00:08:44.685>Okay, <00:08:44.885>nice. <00:08:45.084>I'll <00:08:45.285>educate <00:08:45.484>a <00:08:45.685>lot <00:08:45.885>of <00:08:46.084>people.

196
00:08:48.075 --> 00:08:51.535
<00:08:48.075>Um, <00:08:48.275>so <00:08:48.475>dev <00:08:48.675>containers <00:08:48.875>are <00:08:49.075>open <00:08:49.275>source <00:08:49.475>standard,

197
00:08:51.535 --> 00:08:52.735
<00:08:51.535>developed <00:08:52.075>by <00:08:52.615>Microsoft.

198
00:08:53.665 --> 00:08:56.845
<00:08:53.665>They <00:08:53.805>have <00:08:53.944>a <00:08:54.084>great <00:08:54.224>CLI <00:08:54.365>tool <00:08:54.505>that <00:08:54.645>is, <00:08:54.785>again, <00:08:54.925>open <00:08:55.064>source.

199
00:08:57.545 --> 00:09:00.645
<00:08:57.545>Um, <00:08:57.719>the <00:08:57.895>CLI <00:08:58.069>tool <00:08:58.245>itself <00:08:58.420>can <00:08:58.594>be <00:08:58.770>used <00:08:58.944>standalone

200
00:09:00.785 --> 00:09:04.125
<00:09:00.785>as <00:09:00.925>a <00:09:01.064>CLI <00:09:01.204>tool, <00:09:01.344>but <00:09:01.485>it <00:09:01.625>also <00:09:01.765>has <00:09:01.905>great <00:09:02.045>IDE <00:09:02.185>integrations

201
00:09:04.145 --> 00:09:06.125
<00:09:04.145>as <00:09:04.378>well, <00:09:04.611>which <00:09:04.845>I'll <00:09:05.078>mention, <00:09:05.311>uh, <00:09:05.545>shortly.

202
00:09:06.945 --> 00:09:09.725
<00:09:06.945>Uh, <00:09:07.085>the <00:09:07.225>dev <00:09:07.365>container <00:09:07.505>is <00:09:07.645>based <00:09:07.785>on <00:09:07.925>a <00:09:08.065>very, <00:09:08.205>very <00:09:08.345>simple,

203
00:09:10.025 --> 00:09:11.805
<00:09:10.025>um, <00:09:10.725>JSON <00:09:11.425>schema.

204
00:09:11.865 --> 00:09:14.565
<00:09:11.865>As <00:09:11.992>you <00:09:12.119>can <00:09:12.246>see <00:09:12.374>here. <00:09:12.501>This <00:09:12.628>is <00:09:12.755>like <00:09:12.883>the <00:09:13.010>bare <00:09:13.137>minimum <00:09:13.265>dev

205
00:09:14.565 --> 00:09:16.645
<00:09:14.565>container, <00:09:14.798>JSON <00:09:15.031>to <00:09:15.265>run <00:09:15.498>a <00:09:15.731>rust <00:09:15.965>project.

206
00:09:17.665 --> 00:09:20.245
<00:09:17.665>So <00:09:17.805>if <00:09:17.944>we <00:09:18.084>take <00:09:18.224>a <00:09:18.365>look <00:09:18.505>at <00:09:18.645>what, <00:09:18.785>what's <00:09:18.925>happening <00:09:19.064>here,

207
00:09:20.265 --> 00:09:22.805
<00:09:20.265>you <00:09:20.420>can <00:09:20.576>see <00:09:20.731>there's <00:09:20.887>a <00:09:21.042>name <00:09:21.198>of <00:09:21.353>the <00:09:21.509>dev <00:09:21.665>container.

208
00:09:22.905 --> 00:09:25.565
<00:09:22.905>We <00:09:23.138>have, <00:09:23.371>uh, <00:09:23.605>Docker <00:09:23.838>composed <00:09:24.071>file <00:09:24.305>referenced.

209
00:09:26.025 --> 00:09:28.125
<00:09:26.025>We <00:09:26.199>have <00:09:26.375>the <00:09:26.550>service, <00:09:26.725>which <00:09:26.900>is <00:09:27.074>our <00:09:27.250>let's <00:09:27.425>say,

210
00:09:28.125 --> 00:09:31.685
<00:09:28.125>service <00:09:28.280>container <00:09:28.436>where <00:09:28.591>we <00:09:28.747>wanna <00:09:28.902>run <00:09:29.058>the <00:09:29.213>actual <00:09:29.369>code, <00:09:29.525>uh,

211
00:09:31.685 --> 00:09:34.285
<00:09:31.685>the <00:09:31.859>workspace <00:09:32.035>folder, <00:09:32.209>which <00:09:32.385>is <00:09:32.560>just <00:09:32.734>a <00:09:32.910>mound <00:09:33.084>point.

212
00:09:34.545 --> 00:09:36.485
<00:09:34.545>And <00:09:34.745>then <00:09:34.944>we <00:09:35.145>have <00:09:35.344>the <00:09:35.545>post <00:09:35.745>create <00:09:35.944>command,

213
00:09:36.485 --> 00:09:39.325
<00:09:36.485>which <00:09:36.660>is <00:09:36.835>actually <00:09:37.010>the <00:09:37.185>interesting <00:09:37.360>part <00:09:37.535>about <00:09:37.710>dev <00:09:37.885>containers.

214
00:09:39.945 --> 00:09:42.005
<00:09:39.945>The <00:09:40.145>post <00:09:40.345>create <00:09:40.545>command <00:09:40.745>tells <00:09:40.945>the <00:09:41.145>dev <00:09:41.345>container,

215
00:09:42.005 --> 00:09:44.245
<00:09:42.005>when <00:09:42.180>you <00:09:42.355>actually <00:09:42.530>create <00:09:42.705>the <00:09:42.880>container, <00:09:43.055>I <00:09:43.230>want <00:09:43.405>you

216
00:09:44.245 --> 00:09:46.805
<00:09:44.245>to <00:09:44.400>run <00:09:44.556>this <00:09:44.711>command, <00:09:44.867>which <00:09:45.022>will <00:09:45.178>install <00:09:45.333>all <00:09:45.489>the <00:09:45.645>cargo

217
00:09:46.805 --> 00:09:47.965
<00:09:46.805>dependencies <00:09:47.849>automatically.

218
00:09:48.355 --> 00:09:51.085
<00:09:48.355>This <00:09:48.510>means, <00:09:48.666>again, <00:09:48.821>when <00:09:48.977>you <00:09:49.132>share <00:09:49.288>the <00:09:49.443>project <00:09:49.599>across <00:09:49.755>the

219
00:09:51.085 --> 00:09:53.325
<00:09:51.085>entire <00:09:51.260>team, <00:09:51.435>no <00:09:51.610>one <00:09:51.785>has <00:09:51.960>to <00:09:52.135>manually <00:09:52.310>run <00:09:52.485>cargo.

220
00:09:53.505 --> 00:09:55.565
<00:09:53.505>And <00:09:53.680>this <00:09:53.855>can <00:09:54.030>be <00:09:54.205>as <00:09:54.380>complicated <00:09:54.555>as <00:09:54.730>you <00:09:54.905>want.

221
00:09:56.065 --> 00:09:59.005
<00:09:56.065>So <00:09:56.240>imagine <00:09:56.415>a <00:09:56.590>junior <00:09:56.765>developer <00:09:56.940>getting <00:09:57.115>onboarded <00:09:57.290>into <00:09:57.465>your

222
00:09:59.005 --> 00:10:00.645
<00:09:59.005>company <00:09:59.205>and <00:09:59.405>you <00:09:59.605>don't <00:09:59.805>have <00:10:00.005>to <00:10:00.205>tell <00:10:00.405>them

223
00:10:00.705 --> 00:10:04.005
<00:10:00.705>to <00:10:00.845>read <00:10:00.985>the <00:10:01.125>documentation <00:10:01.265>to <00:10:01.405>paste <00:10:01.545>10 <00:10:01.685>lines <00:10:01.825>into <00:10:01.965>their <00:10:02.105>CLI.

224
00:10:04.005 --> 00:10:05.405
<00:10:04.005>You <00:10:04.215>can <00:10:04.425>just <00:10:04.635>give <00:10:04.845>them <00:10:05.055>the <00:10:05.265>file,

225
00:10:05.405 --> 00:10:08.725
<00:10:05.405>they <00:10:05.560>create <00:10:05.716>the <00:10:05.871>dev <00:10:06.027>container <00:10:06.182>and <00:10:06.338>it <00:10:06.493>all <00:10:06.649>magically <00:10:06.805>works.

226
00:10:10.265 --> 00:10:11.725
<00:10:10.265>Uh, <00:10:10.527>the <00:10:10.790>great <00:10:11.053>thing <00:10:11.316>is, <00:10:11.579>uh,

227
00:10:11.725 --> 00:10:15.405
<00:10:11.725>that <00:10:11.925>dev <00:10:12.125>containers <00:10:12.325>also <00:10:12.525>support <00:10:12.725>ID <00:10:12.925>customizations <00:10:13.125>natively.

228
00:10:15.785 --> 00:10:19.165
<00:10:15.785>So <00:10:15.959>the <00:10:16.135>customizations <00:10:16.310>field <00:10:16.485>of <00:10:16.660>the <00:10:16.834>dev <00:10:17.010>container, <00:10:17.185>JSON,

229
00:10:19.165 --> 00:10:21.965
<00:10:19.165>allows <00:10:19.398>you <00:10:19.631>to <00:10:19.865>configure <00:10:20.098>tool <00:10:20.331>specific <00:10:20.564>customizations.

230
00:10:22.345 --> 00:10:24.245
<00:10:22.345>So <00:10:22.545>in <00:10:22.745>this <00:10:22.945>case, <00:10:23.145>we <00:10:23.345>configure <00:10:23.545>vs <00:10:23.745>code

231
00:10:24.265 --> 00:10:27.325
<00:10:24.265>to <00:10:24.465>include <00:10:24.665>some <00:10:24.865>extensions <00:10:25.064>to <00:10:25.265>include <00:10:25.465>some <00:10:25.665>settings,

232
00:10:27.985 --> 00:10:29.125
<00:10:27.985>and <00:10:28.327>that <00:10:28.669>will, <00:10:29.011>again,

233
00:10:29.145 --> 00:10:32.165
<00:10:29.145>be <00:10:29.345>automatically <00:10:29.545>configured <00:10:29.745>when <00:10:29.944>you <00:10:30.145>open <00:10:30.345>the <00:10:30.545>container

234
00:10:32.235 --> 00:10:33.325
<00:10:32.235>with <00:10:32.725>VS <00:10:33.216>code.

235
00:10:33.825 --> 00:10:37.525
<00:10:33.825>Uh, <00:10:34.025>interesting <00:10:34.225>thing, <00:10:34.425>uh, <00:10:34.625>with, <00:10:34.825>uh, <00:10:35.025>customizations <00:10:35.225>is

236
00:10:37.525 --> 00:10:40.845
<00:10:37.525>that <00:10:37.665>vs <00:10:37.805>code <00:10:37.944>is <00:10:38.084>not <00:10:38.225>like <00:10:38.365>hard <00:10:38.505>coded <00:10:38.645>as <00:10:38.785>in, <00:10:38.925>um,

237
00:10:40.985 --> 00:10:42.205
<00:10:40.985>as <00:10:41.351>a <00:10:41.717>customization <00:10:42.083>option.

238
00:10:42.205 --> 00:10:44.645
<00:10:42.205>This <00:10:42.380>can <00:10:42.555>be <00:10:42.730>any <00:10:42.905>tool <00:10:43.080>that <00:10:43.255>supports <00:10:43.430>dev <00:10:43.605>containers.

239
00:10:44.645 --> 00:10:49.205
<00:10:44.645>So <00:10:44.785>for <00:10:44.925>example, <00:10:45.064>JetBrains <00:10:45.204>browser <00:10:45.345>IDs, <00:10:45.485>uh, <00:10:45.625>it <00:10:45.765>can <00:10:45.905>be, <00:10:46.045>uh,

240
00:10:49.235 --> 00:10:52.245
<00:10:49.235>code <00:10:49.390>spaces, <00:10:49.546>it <00:10:49.701>can <00:10:49.857>be <00:10:50.012>any <00:10:50.168>tool <00:10:50.323>supporting <00:10:50.479>dev <00:10:50.635>containers.

241
00:10:53.425 --> 00:10:56.885
<00:10:53.425>And <00:10:53.599>lastly, <00:10:53.775>I <00:10:53.949>wanna <00:10:54.125>talk <00:10:54.300>about <00:10:54.474>the, <00:10:54.650>uh, <00:10:54.824>features

242
00:10:57.145 --> 00:10:58.165
<00:10:57.145>of <00:10:57.603>dev <00:10:58.063>containers.

243
00:10:58.185 --> 00:10:59.605
<00:10:58.185>And <00:10:58.611>they're <00:10:59.037>called <00:10:59.463>features.

244
00:11:00.265 --> 00:11:03.165
<00:11:00.265>Uh, <00:11:00.405>features <00:11:00.545>are <00:11:00.685>a <00:11:00.824>way <00:11:00.965>to, <00:11:01.105>let's <00:11:01.245>say, <00:11:01.385>add <00:11:01.525>on <00:11:01.665>top

245
00:11:03.465 --> 00:11:05.765
<00:11:03.465>of <00:11:03.815>a <00:11:04.165>development, <00:11:04.515>uh, <00:11:04.865>container

246
00:11:05.865 --> 00:11:07.205
<00:11:05.865>or <00:11:06.166>actually <00:11:06.468>a <00:11:06.769>development <00:11:07.071>image.

247
00:11:07.825 --> 00:11:10.605
<00:11:07.825>And <00:11:08.000>they <00:11:08.175>are <00:11:08.350>very, <00:11:08.525>um, <00:11:08.700>very <00:11:08.875>simple <00:11:09.050>to <00:11:09.225>add.

248
00:11:10.605 --> 00:11:11.965
<00:11:10.605>So <00:11:10.809>for <00:11:11.013>example, <00:11:11.217>here <00:11:11.421>you <00:11:11.625>can <00:11:11.829>see

249
00:11:11.965 --> 00:11:13.485
<00:11:11.965>that <00:11:12.238>I <00:11:12.512>added <00:11:12.785>a <00:11:13.059>rust <00:11:13.333>feature,

250
00:11:13.495 --> 00:11:15.765
<00:11:13.495>which <00:11:13.728>will <00:11:13.961>add <00:11:14.195>the <00:11:14.428>rust <00:11:14.661>language <00:11:14.895>runtime.

251
00:11:15.815 --> 00:11:18.325
<00:11:15.815>It'll <00:11:16.095>add <00:11:16.375>any, <00:11:16.655>uh, <00:11:16.935>development <00:11:17.215>dependencies

252
00:11:18.325 --> 00:11:20.885
<00:11:18.325>that <00:11:18.500>RU <00:11:18.675>rust <00:11:18.850>needs <00:11:19.025>to <00:11:19.200>run <00:11:19.375>inside <00:11:19.550>the <00:11:19.725>container.

253
00:11:21.385 --> 00:11:23.685
<00:11:21.385>We <00:11:21.665>also <00:11:21.944>configured <00:11:22.225>some <00:11:22.505>common <00:11:22.785>utilities.

254
00:11:23.705 --> 00:11:26.565
<00:11:23.705>We <00:11:23.880>installed, <00:11:24.055>uh, <00:11:24.230>z <00:11:24.405>shell, <00:11:24.580>we <00:11:24.755>configured <00:11:24.930>the <00:11:25.105>username

255
00:11:26.625 --> 00:11:29.485
<00:11:26.625>and, <00:11:26.825>uh, <00:11:27.025>UID <00:11:27.225>and <00:11:27.425>GID <00:11:27.625>of <00:11:27.825>a <00:11:28.025>user.

256
00:11:30.145 --> 00:11:32.845
<00:11:30.145>And <00:11:30.378>what <00:11:30.611>happens <00:11:30.845>in <00:11:31.078>the <00:11:31.311>backend, <00:11:31.545>uh,

257
00:11:33.065 --> 00:11:36.125
<00:11:33.065>the <00:11:33.220>dev <00:11:33.376>container <00:11:33.531>actually <00:11:33.687>starts <00:11:33.842>off <00:11:33.998>with <00:11:34.153>the <00:11:34.309>base <00:11:34.465>image,

258
00:11:36.125 --> 00:11:37.925
<00:11:36.125>which <00:11:36.405>was <00:11:36.685>referenced <00:11:36.965>inside <00:11:37.245>the <00:11:37.525>file

259
00:11:38.105 --> 00:11:41.245
<00:11:38.105>and <00:11:38.280>then <00:11:38.455>adds <00:11:38.630>layers <00:11:38.805>on <00:11:38.980>top <00:11:39.155>from <00:11:39.330>these <00:11:39.505>features.

260
00:11:41.705 --> 00:11:42.845
<00:11:41.705>And <00:11:41.961>why <00:11:42.218>is <00:11:42.474>this <00:11:42.731>important?

261
00:11:43.755 --> 00:11:46.045
<00:11:43.755>This <00:11:43.930>is <00:11:44.105>important <00:11:44.280>because <00:11:44.455>it <00:11:44.630>allows <00:11:44.805>you <00:11:44.980>to <00:11:45.155>actually

262
00:11:46.725 --> 00:11:49.965
<00:11:46.725>reuse <00:11:46.925>a <00:11:47.125>docker <00:11:47.325>file <00:11:47.525>between <00:11:47.725>development <00:11:47.925>and <00:11:48.125>production.

263
00:11:49.965 --> 00:11:53.245
<00:11:49.965>For <00:11:50.120>example, <00:11:50.276>you <00:11:50.431>can <00:11:50.587>have <00:11:50.742>a <00:11:50.898>bare <00:11:51.053>bones <00:11:51.209>docker <00:11:51.365>file

264
00:11:53.245 --> 00:11:55.445
<00:11:53.245>that <00:11:53.445>is <00:11:53.645>ready <00:11:53.845>for <00:11:54.045>production, <00:11:54.245>that <00:11:54.445>packages <00:11:54.645>nothing

265
00:11:55.585 --> 00:11:58.005
<00:11:55.585>but <00:11:55.760>the <00:11:55.935>bare <00:11:56.110>minimum <00:11:56.285>needed <00:11:56.460>to <00:11:56.635>run <00:11:56.810>your <00:11:56.985>deployment.

266
00:11:58.385 --> 00:12:00.165
<00:11:58.385>And <00:11:58.665>then <00:11:58.944>with <00:11:59.225>these <00:11:59.505>development <00:11:59.785>features,

267
00:12:00.165 --> 00:12:03.365
<00:12:00.165>you <00:12:00.320>can <00:12:00.476>add <00:12:00.631>development <00:12:00.787>dependencies <00:12:00.942>on <00:12:01.098>top <00:12:01.253>of <00:12:01.409>that <00:12:01.564>image,

268
00:12:03.825 --> 00:12:06.405
<00:12:03.825>and <00:12:03.965>it <00:12:04.105>truly <00:12:04.245>gives <00:12:04.385>you <00:12:04.525>the <00:12:04.665>power <00:12:04.805>to <00:12:04.945>be <00:12:05.085>as <00:12:05.225>flexible

269
00:12:06.405 --> 00:12:09.445
<00:12:06.405>as <00:12:06.579>possible <00:12:06.755>while <00:12:06.930>reducing <00:12:07.105>bloat, <00:12:07.280>while <00:12:07.454>reducing <00:12:07.630>the <00:12:07.805>number

270
00:12:09.445 --> 00:12:13.485
<00:12:09.445>of <00:12:09.678>docker <00:12:09.911>files <00:12:10.145>or <00:12:10.378>I <00:12:10.611>What, <00:12:10.845>uh,

271
00:12:13.545 --> 00:12:15.525
<00:12:13.545>and <00:12:13.778>lastly <00:12:14.011>about <00:12:14.245>dev <00:12:14.478>containers <00:12:14.711>are <00:12:14.944>the

272
00:12:15.525 --> 00:12:16.805
<00:12:15.525>host <00:12:16.101>resource <00:12:16.676>requirements.

273
00:12:17.065 --> 00:12:20.005
<00:12:17.065>As <00:12:17.220>I <00:12:17.376>mentioned <00:12:17.531>in <00:12:17.687>the <00:12:17.842>start, <00:12:17.998>uh, <00:12:18.153>standardizing <00:12:18.309>host, <00:12:18.465>uh,

274
00:12:20.275 --> 00:12:22.405
<00:12:20.275>compute <00:12:20.625>resources <00:12:20.975>is <00:12:21.324>actually <00:12:21.675>hard.

275
00:12:22.785 --> 00:12:24.605
<00:12:22.785>And <00:12:22.985>with <00:12:23.185>dev <00:12:23.385>containers <00:12:23.584>you <00:12:23.785>can <00:12:23.985>say, <00:12:24.185>okay,

276
00:12:24.605 --> 00:12:26.405
<00:12:24.605>this <00:12:24.955>project <00:12:25.305>needs <00:12:25.655>two <00:12:26.005>CPUs.

277
00:12:26.405 --> 00:12:30.285
<00:12:26.405>It <00:12:26.521>needs <00:12:26.638>four <00:12:26.755>gigs <00:12:26.871>of <00:12:26.988>Ram <00:12:27.105>32 <00:12:27.221>gigs <00:12:27.338>of <00:12:27.454>storage <00:12:27.571>and <00:12:27.688>A <00:12:27.805>GPU.

278
00:12:30.545 --> 00:12:34.965
<00:12:30.545>And <00:12:30.700>then <00:12:30.856>the, <00:12:31.011>uh, <00:12:31.167>service <00:12:31.322>that's <00:12:31.478>running <00:12:31.633>the <00:12:31.789>ization <00:12:31.944>process

279
00:12:35.345 --> 00:12:38.045
<00:12:35.345>of, <00:12:35.578>uh, <00:12:35.811>the <00:12:36.045>dev <00:12:36.278>container <00:12:36.511>is <00:12:36.745>responsible

280
00:12:38.045 --> 00:12:40.045
<00:12:38.045>for <00:12:38.324>providing <00:12:38.604>these <00:12:38.885>resources <00:12:39.165>for <00:12:39.444>you

281
00:12:40.045 --> 00:12:43.645
<00:12:40.045>because <00:12:40.200>you <00:12:40.356>said, <00:12:40.511>okay, <00:12:40.667>I <00:12:40.822>need <00:12:40.978>this, <00:12:41.133>uh, <00:12:41.289>these <00:12:41.444>resources

282
00:12:43.645 --> 00:12:44.885
<00:12:43.645>to <00:12:43.924>run <00:12:44.203>my <00:12:44.482>project <00:12:44.761>smoothly.

283
00:12:46.385 --> 00:12:48.485
<00:12:46.385>Uh, <00:12:46.585>as <00:12:46.785>I <00:12:46.985>mentioned, <00:12:47.185>dev <00:12:47.385>containers <00:12:47.585>have <00:12:47.785>great

284
00:12:48.485 --> 00:12:49.805
<00:12:48.485>integrations <00:12:49.079>into <00:12:49.673>VS.

285
00:12:49.805 --> 00:12:51.205
<00:12:49.805>Code. <00:12:50.435>Uh, <00:12:51.065>vs.

286
00:12:51.205 --> 00:12:53.045
<00:12:51.205>Code <00:12:51.405>has <00:12:51.605>an <00:12:51.805>extension <00:12:52.005>that <00:12:52.205>you <00:12:52.405>can <00:12:52.605>install

287
00:12:53.045 --> 00:12:54.205
<00:12:53.045>and <00:12:53.253>then <00:12:53.462>just <00:12:53.671>run <00:12:53.880>a <00:12:54.089>command

288
00:12:54.265 --> 00:12:56.005
<00:12:54.265>to <00:12:54.498>open <00:12:54.731>up <00:12:54.965>the <00:12:55.198>dev <00:12:55.431>container <00:12:55.665>locally

289
00:12:56.185 --> 00:12:57.885
<00:12:56.185>and <00:12:56.418>it'll <00:12:56.651>take <00:12:56.885>care <00:12:57.118>of <00:12:57.351>ev <00:12:57.584>everything,

290
00:12:58.145 --> 00:12:59.245
<00:12:58.145>set <00:12:58.392>up <00:12:58.640>the <00:12:58.887>dev <00:12:59.135>container

291
00:12:59.265 --> 00:13:02.245
<00:12:59.265>and <00:12:59.439>automatically <00:12:59.615>open <00:12:59.790>it <00:12:59.965>inside <00:13:00.140>your <00:13:00.314>VS <00:13:00.490>code <00:13:00.665>session.

292
00:13:03.185 --> 00:13:05.765
<00:13:03.185>Um, <00:13:03.359>then <00:13:03.535>you <00:13:03.709>can <00:13:03.885>view <00:13:04.060>dev <00:13:04.234>containers, <00:13:04.410>list <00:13:04.584>them,

293
00:13:06.265 --> 00:13:07.885
<00:13:06.265>attach <00:13:06.731>shells, <00:13:07.198>view <00:13:07.665>logs,

294
00:13:07.885 --> 00:13:09.965
<00:13:07.885>manage <00:13:08.118>them <00:13:08.351>all <00:13:08.585>from <00:13:08.818>VS <00:13:09.051>code <00:13:09.285>itself.

295
00:13:10.785 --> 00:13:13.325
<00:13:10.785>And <00:13:11.018>for, <00:13:11.251>for <00:13:11.485>the <00:13:11.718>JetBrains <00:13:11.951>SLRs, <00:13:12.185>uh,

296
00:13:13.325 --> 00:13:14.925
<00:13:13.325>there's <00:13:13.605>a <00:13:13.885>JetBrains <00:13:14.165>extension <00:13:14.445>as <00:13:14.725>well,

297
00:13:14.925 --> 00:13:17.285
<00:13:14.925>which <00:13:15.080>when <00:13:15.236>you <00:13:15.391>open <00:13:15.547>a <00:13:15.702>dev <00:13:15.858>container <00:13:16.013>file <00:13:16.169>allows <00:13:16.324>you

298
00:13:17.285 --> 00:13:19.405
<00:13:17.285>to <00:13:17.518>open <00:13:17.751>the <00:13:17.985>dev <00:13:18.218>container <00:13:18.451>with <00:13:18.685>JetBrains

299
00:13:19.405 --> 00:13:22.565
<00:13:19.405>and <00:13:19.560>then <00:13:19.716>again, <00:13:19.871>attach <00:13:20.027>your <00:13:20.182>IDE <00:13:20.338>into <00:13:20.493>the <00:13:20.649>container <00:13:20.805>itself.

300
00:13:23.905 --> 00:13:25.925
<00:13:23.905>Uh, <00:13:24.138>so <00:13:24.371>that <00:13:24.605>has <00:13:24.838>been <00:13:25.071>dev <00:13:25.305>containers.

301
00:13:25.985 --> 00:13:29.645
<00:13:25.985>So <00:13:26.160>again, <00:13:26.335>it's <00:13:26.510>open <00:13:26.685>source, <00:13:26.860>it's <00:13:27.035>container <00:13:27.210>based, <00:13:27.385>it's,

302
00:13:29.705 --> 00:13:32.885
<00:13:29.705>it <00:13:29.845>has <00:13:29.985>great <00:13:30.125>IDE <00:13:30.265>integrations <00:13:30.405>and <00:13:30.545>it's <00:13:30.685>very <00:13:30.825>easy <00:13:30.965>to <00:13:31.105>learn.

303
00:13:33.595 --> 00:13:36.285
<00:13:33.595>It's, <00:13:33.750>uh, <00:13:33.906>very <00:13:34.061>easy <00:13:34.217>to <00:13:34.372>pick <00:13:34.528>up <00:13:34.683>the <00:13:34.839>JSO <00:13:34.995>schema.

304
00:13:36.285 --> 00:13:37.605
<00:13:36.285>There's <00:13:36.522>a <00:13:36.760>lot <00:13:36.997>of <00:13:37.235>resources <00:13:37.473>online

305
00:13:37.665 --> 00:13:39.485
<00:13:37.665>and <00:13:37.865>you <00:13:38.064>can <00:13:38.265>check <00:13:38.464>it <00:13:38.665>out, <00:13:38.865>uh, <00:13:39.064>today

306
00:13:39.485 --> 00:13:40.885
<00:13:39.485>and <00:13:39.737>integrate <00:13:39.989>it <00:13:40.241>into <00:13:40.493>your <00:13:40.745>project.

307
00:13:42.565 --> 00:13:45.825
<00:13:42.565>Now <00:13:42.740>another <00:13:42.915>container <00:13:43.090>based <00:13:43.265>standard, <00:13:43.440>and <00:13:43.615>that's <00:13:43.790>dev <00:13:43.965>file.

308
00:13:46.365 --> 00:13:47.425
<00:13:46.365>And <00:13:46.603>dev <00:13:46.842>file <00:13:47.080>is <00:13:47.319>managed

309
00:13:47.445 --> 00:13:49.465
<00:13:47.445>by <00:13:47.725>the <00:13:48.005>Cloud <00:13:48.285>Native <00:13:48.565>Computing <00:13:48.845>Foundation,

310
00:13:49.465 --> 00:13:50.545
<00:13:49.465>which <00:13:49.789>manages <00:13:50.113>a <00:13:50.437>lot

311
00:13:50.545 --> 00:13:52.865
<00:13:50.545>of <00:13:50.778>cloud <00:13:51.011>native <00:13:51.245>open <00:13:51.478>source <00:13:51.711>projects <00:13:51.944>like

312
00:13:53.145 --> 00:13:54.185
<00:13:53.145>Kubernetes, <00:13:53.613>for <00:13:54.080>example.

313
00:13:55.125 --> 00:13:58.025
<00:13:55.125>And <00:13:55.300>dev <00:13:55.475>file <00:13:55.650>has, <00:13:55.825>uh, <00:13:56.000>a <00:13:56.175>ya <00:13:56.350>o <00:13:56.525>schema

314
00:13:58.025 --> 00:14:01.185
<00:13:58.025>and <00:13:58.152>I, <00:13:58.279>I <00:13:58.406>won't <00:13:58.534>get <00:13:58.661>into <00:13:58.788>the <00:13:58.915>whole <00:13:59.043>js <00:13:59.170>o <00:13:59.297>yamo <00:13:59.425>thing.

315
00:14:01.445 --> 00:14:03.345
<00:14:01.445>I'm <00:14:01.911>A-J-S-O-N <00:14:02.378>person <00:14:02.845>myself.

316
00:14:04.005 --> 00:14:08.225
<00:14:04.005>Um, <00:14:04.132>the <00:14:04.259>dev <00:14:04.386>file <00:14:04.514>schema <00:14:04.641>is, <00:14:04.768>uh, <00:14:04.895>if <00:14:05.023>you <00:14:05.150>check <00:14:05.277>out <00:14:05.405>again,

317
00:14:08.225 --> 00:14:10.945
<00:14:08.225>container <00:14:08.400>based <00:14:08.575>and <00:14:08.750>you <00:14:08.925>can <00:14:09.100>configure <00:14:09.275>the, <00:14:09.450>uh, <00:14:09.625>image,

318
00:14:11.045 --> 00:14:13.945
<00:14:11.045>the <00:14:11.219>memory <00:14:11.395>limits, <00:14:11.569>you <00:14:11.745>can <00:14:11.920>configure <00:14:12.094>basically <00:14:12.270>anything <00:14:12.444>you

319
00:14:13.945 --> 00:14:16.065
<00:14:13.945>need <00:14:14.178>to <00:14:14.411>run <00:14:14.645>a <00:14:14.878>cloud <00:14:15.111>native <00:14:15.345>workspace

320
00:14:16.405 --> 00:14:18.785
<00:14:16.405>and <00:14:16.638>dev <00:14:16.871>file <00:14:17.105>themselves <00:14:17.338>in <00:14:17.571>the <00:14:17.805>documentation,

321
00:14:18.925 --> 00:14:23.185
<00:14:18.925>say <00:14:19.064>they <00:14:19.204>are <00:14:19.344>a <00:14:19.484>cube <00:14:19.625>native, <00:14:19.765>API <00:14:19.905>for <00:14:20.045>cloud <00:14:20.185>native <00:14:20.324>workspaces.

322
00:14:23.765 --> 00:14:27.185
<00:14:23.765>And <00:14:23.905>why <00:14:24.045>do <00:14:24.185>they <00:14:24.324>advertise <00:14:24.465>this <00:14:24.605>cube <00:14:24.745>native <00:14:24.885>API <00:14:25.025>that <00:14:25.165>they're,

323
00:14:27.185 --> 00:14:28.385
<00:14:27.185>let's <00:14:27.545>say <00:14:27.905>Kubernetes <00:14:28.265>based?

324
00:14:28.405 --> 00:14:29.625
<00:14:28.405>You'll <00:14:28.624>see <00:14:28.844>that <00:14:29.063>in <00:14:29.283>a <00:14:29.503>bit,

325
00:14:30.005 --> 00:14:32.225
<00:14:30.005>but <00:14:30.205>it <00:14:30.405>essentially <00:14:30.605>means <00:14:30.805>that <00:14:31.005>if <00:14:31.205>your, <00:14:31.405>uh,

326
00:14:32.255 --> 00:14:34.585
<00:14:32.255>development <00:14:32.535>team <00:14:32.814>is <00:14:33.095>familiar <00:14:33.375>with <00:14:33.655>Kubernetes

327
00:14:34.585 --> 00:14:37.465
<00:14:34.585>or <00:14:34.712>you <00:14:34.839>have <00:14:34.966>a <00:14:35.094>DevOps <00:14:35.221>that <00:14:35.348>loves <00:14:35.475>Kubernetes <00:14:35.603>dev <00:14:35.730>file <00:14:35.857>might <00:14:35.985>be

328
00:14:37.465 --> 00:14:38.545
<00:14:37.465>the <00:14:37.627>way <00:14:37.789>to <00:14:37.951>go <00:14:38.113>in <00:14:38.275>the <00:14:38.437>end.

329
00:14:39.925 --> 00:14:43.265
<00:14:39.925>Uh, <00:14:40.080>dev <00:14:40.236>file <00:14:40.391>is <00:14:40.547>also <00:14:40.702>advocating <00:14:40.858>its <00:14:41.013>ecosystem <00:14:41.169>a <00:14:41.324>lot.

330
00:14:43.455 --> 00:14:46.065
<00:14:43.455>This <00:14:43.610>means <00:14:43.766>that <00:14:43.921>you <00:14:44.077>can <00:14:44.232>push <00:14:44.388>dev <00:14:44.543>files <00:14:44.699>to <00:14:44.855>private

331
00:14:46.325 --> 00:14:49.865
<00:14:46.325>or <00:14:46.480>public <00:14:46.636>re <00:14:46.791>registries <00:14:46.947>and <00:14:47.102>then <00:14:47.258>reference <00:14:47.413>them <00:14:47.569>as <00:14:47.725>parents.

332
00:14:50.775 --> 00:14:52.845
<00:14:50.775>This <00:14:50.949>means <00:14:51.125>that <00:14:51.300>you <00:14:51.475>can <00:14:51.650>easily <00:14:51.824>extend <00:14:52.000>dev <00:14:52.175>files.

333
00:14:52.905 --> 00:14:55.285
<00:14:52.905>So <00:14:53.079>for <00:14:53.255>example, <00:14:53.430>you <00:14:53.605>can <00:14:53.780>have <00:14:53.954>a <00:14:54.130>company <00:14:54.305>registry

334
00:14:55.545 --> 00:14:58.565
<00:14:55.545>of <00:14:55.685>your <00:14:55.824>dev <00:14:55.964>files <00:14:56.104>and <00:14:56.245>then <00:14:56.385>add <00:14:56.525>a <00:14:56.665>new <00:14:56.805>project, <00:14:56.944>change

335
00:14:58.565 --> 00:15:01.125
<00:14:58.565>around <00:14:58.705>a <00:14:58.845>few <00:14:58.985>things, <00:14:59.125>and <00:14:59.265>then <00:14:59.405>you <00:14:59.545>have <00:14:59.685>an <00:14:59.825>entire <00:14:59.965>project

336
00:15:01.555 --> 00:15:03.365
<00:15:01.555>with <00:15:01.755>a <00:15:01.954>dev <00:15:02.155>file <00:15:02.354>ready <00:15:02.555>to <00:15:02.755>set <00:15:02.954>up.

337
00:15:03.715 --> 00:15:05.885
<00:15:03.715>This <00:15:03.915>really <00:15:04.115>goes <00:15:04.315>into <00:15:04.515>the, <00:15:04.715>let's <00:15:04.915>say, <00:15:05.115>extensibility

338
00:15:06.105 --> 00:15:08.565
<00:15:06.105>of <00:15:06.305>dev <00:15:06.505>file <00:15:06.705>and <00:15:06.905>the <00:15:07.105>whole <00:15:07.305>ecosystem <00:15:07.505>story.

339
00:15:09.625 --> 00:15:13.365
<00:15:09.625>Um, <00:15:09.780>but <00:15:09.936>also <00:15:10.091>there <00:15:10.247>is <00:15:10.402>a <00:15:10.558>very, <00:15:10.713>let's <00:15:10.869>say, <00:15:11.025>special

340
00:15:13.425 --> 00:15:16.285
<00:15:13.425>and <00:15:13.625>powerful, <00:15:13.824>uh, <00:15:14.025>CLI <00:15:14.224>tool <00:15:14.425>for <00:15:14.625>dev <00:15:14.824>files.

341
00:15:16.515 --> 00:15:18.805
<00:15:16.515>It's <00:15:16.795>called <00:15:17.074>odo. <00:15:17.355>And <00:15:17.635>ODO <00:15:17.915>is,

342
00:15:18.905 --> 00:15:21.165
<00:15:18.905>I'd <00:15:19.105>say <00:15:19.305>the <00:15:19.505>prime <00:15:19.704>dev <00:15:19.905>file <00:15:20.105>CLI <00:15:20.305>tool.

343
00:15:22.025 --> 00:15:23.885
<00:15:22.025>Uh, <00:15:22.305>what's <00:15:22.584>interesting <00:15:22.865>about <00:15:23.145>odo <00:15:23.425>is

344
00:15:23.885 --> 00:15:26.285
<00:15:23.885>that <00:15:24.040>there's <00:15:24.196>an <00:15:24.351>in <00:15:24.507>it <00:15:24.662>command, <00:15:24.818>a <00:15:24.973>part <00:15:25.129>of <00:15:25.285>odo,

345
00:15:26.285 --> 00:15:29.285
<00:15:26.285>which <00:15:26.425>can <00:15:26.564>help <00:15:26.704>you <00:15:26.844>out <00:15:26.985>with <00:15:27.125>a <00:15:27.265>sort <00:15:27.405>of <00:15:27.545>CLI <00:15:27.685>wizard

346
00:15:29.425 --> 00:15:30.965
<00:15:29.425>to <00:15:29.656>get <00:15:29.887>you <00:15:30.117>started <00:15:30.349>with <00:15:30.580>their <00:15:30.811>files

347
00:15:31.065 --> 00:15:33.085
<00:15:31.065>and <00:15:31.298>easily <00:15:31.531>add <00:15:31.765>it <00:15:31.998>into <00:15:32.231>your <00:15:32.465>projects.

348
00:15:34.185 --> 00:15:37.965
<00:15:34.185>But <00:15:34.340>let's <00:15:34.496>say <00:15:34.651>the <00:15:34.807>more <00:15:34.962>interesting <00:15:35.118>parts <00:15:35.273>that, <00:15:35.429>uh, <00:15:35.584>uh,

349
00:15:37.965 --> 00:15:40.765
<00:15:37.965>about <00:15:38.140>todo <00:15:38.315>I <00:15:38.490>think <00:15:38.665>is <00:15:38.840>leaning <00:15:39.015>into <00:15:39.190>the <00:15:39.365>inner

350
00:15:40.865 --> 00:15:43.245
<00:15:40.865>and <00:15:41.040>outer <00:15:41.215>loop <00:15:41.390>story <00:15:41.565>I <00:15:41.740>mentioned <00:15:41.915>from <00:15:42.090>the <00:15:42.265>beginning,

351
00:15:43.745 --> 00:15:45.125
<00:15:43.745>if <00:15:43.922>you <00:15:44.099>check <00:15:44.277>out <00:15:44.454>their <00:15:44.632>docs, <00:15:44.809>you'll <00:15:44.987>see

352
00:15:45.125 --> 00:15:47.005
<00:15:45.125>that <00:15:45.325>they <00:15:45.525>mentioned <00:15:45.725>the <00:15:45.925>inner <00:15:46.125>and <00:15:46.325>outer <00:15:46.525>loop,

353
00:15:47.065 --> 00:15:48.165
<00:15:47.065>uh, <00:15:47.395>part <00:15:47.725>a <00:15:48.055>lot.

354
00:15:48.185 --> 00:15:51.685
<00:15:48.185>And <00:15:48.359>that's <00:15:48.535>because <00:15:48.709>they <00:15:48.885>have <00:15:49.060>the <00:15:49.234>OD <00:15:49.410>dev <00:15:49.584>command,

355
00:15:51.685 --> 00:15:53.605
<00:15:51.685>which <00:15:51.885>is <00:15:52.084>the <00:15:52.285>inner <00:15:52.484>part <00:15:52.685>of <00:15:52.885>the <00:15:53.084>story.

356
00:15:54.205 --> 00:15:55.485
<00:15:54.205>OD <00:15:54.435>dev <00:15:54.665>will <00:15:54.896>spin <00:15:55.126>up <00:15:55.357>all

357
00:15:55.485 --> 00:15:58.165
<00:15:55.485>of <00:15:55.765>your <00:15:56.045>containers <00:15:56.325>in <00:15:56.605>development <00:15:56.885>mode

358
00:15:58.165 --> 00:15:59.845
<00:15:58.165>with <00:15:58.515>all <00:15:58.865>the <00:15:59.214>development <00:15:59.564>dependencies.

359
00:16:00.265 --> 00:16:02.845
<00:16:00.265>And <00:16:00.420>when <00:16:00.576>you're <00:16:00.731>done, <00:16:00.887>you <00:16:01.042>can <00:16:01.198>just <00:16:01.353>run, <00:16:01.509>whoop, <00:16:01.665>sorry,

360
00:16:04.625 --> 00:16:06.315
<00:16:04.625>this <00:16:04.780>is <00:16:04.936>the <00:16:05.091>inner <00:16:05.247>and <00:16:05.402>this <00:16:05.558>is <00:16:05.713>the <00:16:05.869>outer <00:16:06.025>loop.

361
00:16:06.535 --> 00:16:08.475
<00:16:06.535>And <00:16:06.735>then <00:16:06.935>you <00:16:07.135>can <00:16:07.334>just <00:16:07.535>run <00:16:07.735>odo <00:16:07.935>Deploy

362
00:16:09.255 --> 00:16:11.115
<00:16:09.255>to <00:16:09.535>actually <00:16:09.814>deploy <00:16:10.095>your <00:16:10.375>entire <00:16:10.655>application

363
00:16:11.175 --> 00:16:13.915
<00:16:11.175>to <00:16:11.408>production <00:16:11.641>without <00:16:11.875>doing <00:16:12.108>a <00:16:12.341>single <00:16:12.574>modification.

364
00:16:14.215 --> 00:16:15.595
<00:16:14.215>That's <00:16:14.463>the <00:16:14.711>power <00:16:14.960>of <00:16:15.208>dev <00:16:15.457>file

365
00:16:15.595 --> 00:16:17.875
<00:16:15.595>because <00:16:15.828>it's <00:16:16.061>so <00:16:16.295>easily, <00:16:16.528>let's <00:16:16.761>say, <00:16:16.995>extensible

366
00:16:17.895 --> 00:16:19.075
<00:16:17.895>for <00:16:18.107>the <00:16:18.319>inner <00:16:18.532>and <00:16:18.744>outer <00:16:18.957>loop.

367
00:16:19.075 --> 00:16:23.035
<00:16:19.075>And <00:16:19.191>with <00:16:19.308>odo <00:16:19.425>you <00:16:19.541>can <00:16:19.658>use <00:16:19.775>the <00:16:19.891>exact <00:16:20.008>same <00:16:20.125>CLI <00:16:20.241>to <00:16:20.358>push, <00:16:20.475>uh,

368
00:16:23.255 --> 00:16:24.475
<00:16:23.255>to <00:16:23.621>production <00:16:23.987>as <00:16:24.353>well.

369
00:16:25.895 --> 00:16:27.995
<00:16:25.895>odo <00:16:26.128>is <00:16:26.361>supported <00:16:26.595>again <00:16:26.828>in <00:16:27.061>VS <00:16:27.295>code

370
00:16:27.995 --> 00:16:29.035
<00:16:27.995>through <00:16:28.307>the <00:16:28.619>OpenShift <00:16:28.930>toolkit,

371
00:16:29.205 --> 00:16:32.395
<00:16:29.205>which <00:16:29.380>manages <00:16:29.555>your <00:16:29.730>workspaces, <00:16:29.905>which <00:16:30.080>manages <00:16:30.255>your <00:16:30.430>dev <00:16:30.605>files.

372
00:16:32.985 --> 00:16:35.155
<00:16:32.985>Also <00:16:33.160>has <00:16:33.335>a <00:16:33.510>wizard <00:16:33.685>to <00:16:33.860>help <00:16:34.035>you <00:16:34.210>out, <00:16:34.385>uh,

373
00:16:35.265 --> 00:16:37.075
<00:16:35.265>with <00:16:35.465>adding <00:16:35.665>a <00:16:35.865>dev <00:16:36.064>file <00:16:36.265>into <00:16:36.465>your <00:16:36.665>project.

374
00:16:37.375 --> 00:16:39.835
<00:16:37.375>And <00:16:37.502>it <00:16:37.629>uses <00:16:37.756>odo <00:16:37.884>in <00:16:38.011>the <00:16:38.138>backend <00:16:38.265>to <00:16:38.393>handle <00:16:38.520>all <00:16:38.647>of <00:16:38.775>this,

375
00:16:39.835 --> 00:16:42.995
<00:16:39.835>which <00:16:39.990>means <00:16:40.146>Odo <00:16:40.301>is <00:16:40.457>the <00:16:40.612>prime <00:16:40.768>tool <00:16:40.923>for <00:16:41.079>dev <00:16:41.235>file.

376
00:16:43.935 --> 00:16:47.075
<00:16:43.935>Uh, <00:16:44.090>and <00:16:44.246>of <00:16:44.401>course <00:16:44.557>can't <00:16:44.712>leave <00:16:44.868>out <00:16:45.023>the <00:16:45.179>JetBrains <00:16:45.334>SLRs

377
00:16:47.425 --> 00:16:49.275
<00:16:47.425>JetBrains <00:16:47.775>extension <00:16:48.125>available <00:16:48.474>as <00:16:48.824>well.

378
00:16:50.695 --> 00:16:52.155
<00:16:50.695>Uh, <00:16:50.957>I <00:16:51.220>mentioned <00:16:51.483>in <00:16:51.746>the <00:16:52.009>beginning

379
00:16:52.155 --> 00:16:55.435
<00:16:52.155>that <00:16:52.310>the <00:16:52.466>dev <00:16:52.621>file <00:16:52.777>is <00:16:52.932>cube <00:16:53.088>native, <00:16:53.243>uh, <00:16:53.399>which <00:16:53.555>means

380
00:16:55.435 --> 00:16:57.955
<00:16:55.435>that <00:16:55.668>you <00:16:55.901>can <00:16:56.135>actually <00:16:56.368>write <00:16:56.601>entire <00:16:56.834>Kubernetes

381
00:16:58.275 --> 00:16:59.915
<00:16:58.275>manifests <00:16:58.555>directly <00:16:58.834>in <00:16:59.115>the <00:16:59.395>dev <00:16:59.675>file.

382
00:17:00.465 --> 00:17:02.635
<00:17:00.465>This <00:17:00.665>means <00:17:00.865>that <00:17:01.065>your <00:17:01.265>DevOps, <00:17:01.465>that <00:17:01.665>love <00:17:01.865>Kubernetes,

383
00:17:02.635 --> 00:17:05.155
<00:17:02.635>that <00:17:02.810>love, <00:17:02.985>love <00:17:03.160>to <00:17:03.335>get <00:17:03.510>down, <00:17:03.685>um, <00:17:03.860>uh, <00:17:04.035>down

384
00:17:05.155 --> 00:17:06.235
<00:17:05.155>and <00:17:05.479>dirty <00:17:05.802>with, <00:17:06.127>uh,

385
00:17:06.515 --> 00:17:08.835
<00:17:06.515>defining <00:17:06.715>all <00:17:06.915>the <00:17:07.115>resources <00:17:07.315>can <00:17:07.515>actually <00:17:07.715>write <00:17:07.915>entire

386
00:17:09.195 --> 00:17:12.115
<00:17:09.194>manifest <00:17:09.428>inside <00:17:09.661>and <00:17:09.895>configure <00:17:10.128>every <00:17:10.361>single <00:17:10.595>option

387
00:17:12.175 --> 00:17:14.715
<00:17:12.175>of <00:17:12.349>the <00:17:12.524>workspace <00:17:12.700>that <00:17:12.875>will <00:17:13.050>end <00:17:13.224>up <00:17:13.399>being <00:17:13.575>provisioned.

388
00:17:15.895 --> 00:17:17.595
<00:17:15.895>Dev <00:17:16.128>file <00:17:16.361>can <00:17:16.595>be <00:17:16.828>used <00:17:17.061>also, <00:17:17.295>um,

389
00:17:17.855 --> 00:17:20.915
<00:17:17.855>in <00:17:18.055>hosted <00:17:18.255>solutions <00:17:18.454>like <00:17:18.655>AWS <00:17:18.855>Code <00:17:19.055>catalyst <00:17:19.255>today.

390
00:17:21.215 --> 00:17:22.835
<00:17:21.214>And <00:17:21.564>interestingly, <00:17:21.915>if <00:17:22.264>you <00:17:22.615>try

391
00:17:22.835 --> 00:17:24.795
<00:17:22.835>to <00:17:23.068>create <00:17:23.301>a <00:17:23.535>project <00:17:23.768>in <00:17:24.001>Code <00:17:24.235>Catalyst

392
00:17:24.795 --> 00:17:26.835
<00:17:24.795>that <00:17:25.028>doesn't <00:17:25.261>have <00:17:25.495>a <00:17:25.728>dev <00:17:25.961>file <00:17:26.195>code,

393
00:17:27.115 --> 00:17:29.955
<00:17:27.115>catalyst <00:17:27.255>will <00:17:27.395>actually <00:17:27.535>add <00:17:27.675>a <00:17:27.815>dev <00:17:27.954>file <00:17:28.095>for <00:17:28.234>you <00:17:28.375>inside <00:17:28.515>the,

394
00:17:30.215 --> 00:17:31.715
<00:17:30.215>inside <00:17:30.552>the <00:17:30.889>container <00:17:31.227>as <00:17:31.564>well.

395
00:17:32.095 --> 00:17:33.515
<00:17:32.095>And <00:17:32.308>you <00:17:32.521>can <00:17:32.734>use <00:17:32.947>it <00:17:33.160>with <00:17:33.373>OpenShift

396
00:17:33.515 --> 00:17:35.115
<00:17:33.515>natively, <00:17:33.865>uh, <00:17:34.215>today <00:17:34.565>as <00:17:34.915>well.

397
00:17:36.655 --> 00:17:39.115
<00:17:36.655>Uh, <00:17:36.830>so <00:17:37.004>that <00:17:37.180>has <00:17:37.355>been <00:17:37.530>dev <00:17:37.705>file <00:17:37.879>and <00:17:38.055>odo.

398
00:17:39.345 --> 00:17:41.235
<00:17:39.345>It's <00:17:39.625>again, <00:17:39.905>an <00:17:40.185>open <00:17:40.465>source <00:17:40.745>tool.

399
00:17:41.385 --> 00:17:44.235
<00:17:41.385>It's <00:17:41.560>cube <00:17:41.735>native, <00:17:41.910>it <00:17:42.085>has <00:17:42.260>a <00:17:42.435>great <00:17:42.610>ecosystem <00:17:42.785>story

400
00:17:44.695 --> 00:17:46.595
<00:17:44.695>and <00:17:44.975>it's <00:17:45.254>inner <00:17:45.534>and <00:17:45.814>outer <00:17:46.095>loop,

401
00:17:46.725 --> 00:17:48.475
<00:17:46.725>let's <00:17:47.074>say <00:17:47.425>compliant <00:17:47.774>by <00:17:48.125>design.

402
00:17:49.945 --> 00:17:52.245
<00:17:49.945>And <00:17:50.178>those <00:17:50.411>were <00:17:50.645>the <00:17:50.878>container <00:17:51.111>based <00:17:51.345>standards.

403
00:17:52.505 --> 00:17:54.245
<00:17:52.505>And <00:17:52.971>now <00:17:53.438>something <00:17:53.905>completely

404
00:17:54.265 --> 00:17:55.405
<00:17:54.265>on <00:17:54.436>the <00:17:54.607>other <00:17:54.778>end <00:17:54.949>of <00:17:55.120>the <00:17:55.291>spectrum.

405
00:17:55.665 --> 00:17:59.645
<00:17:55.665>And <00:17:55.865>that's <00:17:56.065>ns. <00:17:56.264>NS <00:17:56.465>is <00:17:56.665>not <00:17:56.865>a <00:17:57.065>development

406
00:17:59.645 --> 00:18:01.125
<00:17:59.645>environment <00:18:00.089>standard <00:18:00.533>per <00:18:00.977>se.

407
00:18:01.635 --> 00:18:04.685
<00:18:01.635>It's <00:18:01.810>a <00:18:01.985>purely <00:18:02.160>functional <00:18:02.335>package <00:18:02.510>manager, <00:18:02.685>which <00:18:02.860>means <00:18:03.035>that

408
00:18:05.245 --> 00:18:07.885
<00:18:05.245>o <00:18:05.524>uh, <00:18:05.804>NS <00:18:06.084>treats <00:18:06.364>package <00:18:06.645>dependencies

409
00:18:08.025 --> 00:18:10.085
<00:18:08.025>as <00:18:08.375>values <00:18:08.725>in <00:18:09.075>functional <00:18:09.425>languages.

410
00:18:10.585 --> 00:18:13.325
<00:18:10.585>So <00:18:10.760>for <00:18:10.935>example, <00:18:11.110>when <00:18:11.285>you <00:18:11.460>install <00:18:11.635>a <00:18:11.810>next <00:18:11.985>package,

411
00:18:13.345 --> 00:18:15.885
<00:18:13.345>you'll <00:18:13.500>see <00:18:13.656>you'll <00:18:13.811>get <00:18:13.967>this <00:18:14.122>long <00:18:14.278>name <00:18:14.433>of <00:18:14.589>the <00:18:14.745>package

412
00:18:16.405 --> 00:18:19.165
<00:18:16.405>directory <00:18:16.532>and <00:18:16.659>the <00:18:16.786>first <00:18:16.914>part <00:18:17.041>of <00:18:17.168>the <00:18:17.295>name <00:18:17.423>is <00:18:17.550>actually <00:18:17.677>a <00:18:17.805>hash

413
00:18:19.545 --> 00:18:21.845
<00:18:19.545>of <00:18:19.778>all <00:18:20.011>the <00:18:20.245>dependencies <00:18:20.478>of <00:18:20.711>that <00:18:20.945>package.

414
00:18:22.345 --> 00:18:24.285
<00:18:22.345>Why <00:18:22.625>is <00:18:22.905>that <00:18:23.185>important? <00:18:23.465>That's <00:18:23.745>important

415
00:18:24.285 --> 00:18:27.045
<00:18:24.285>because <00:18:24.440>when <00:18:24.596>you <00:18:24.751>install <00:18:24.907>a <00:18:25.062>package <00:18:25.218>for <00:18:25.373>the <00:18:25.529>first <00:18:25.685>time,

416
00:18:27.065 --> 00:18:29.765
<00:18:27.065>you're <00:18:27.265>guaranteed <00:18:27.465>that <00:18:27.665>it'll <00:18:27.865>run <00:18:28.065>on <00:18:28.265>your <00:18:28.465>machine

417
00:18:29.995 --> 00:18:33.085
<00:18:29.995>because <00:18:30.150>all <00:18:30.306>the <00:18:30.461>dependencies <00:18:30.617>are <00:18:30.772>part <00:18:30.928>of <00:18:31.083>the <00:18:31.239>package <00:18:31.395>itself

418
00:18:33.105 --> 00:18:35.325
<00:18:33.105>and <00:18:33.385>the <00:18:33.665>package <00:18:33.945>is <00:18:34.225>completely <00:18:34.505>immutable.

419
00:18:35.585 --> 00:18:37.285
<00:18:35.585>If <00:18:35.865>you <00:18:36.145>wanna <00:18:36.425>change <00:18:36.705>the <00:18:36.985>version

420
00:18:37.345 --> 00:18:39.365
<00:18:37.345>of <00:18:37.625>some <00:18:37.905>Firefox <00:18:38.185>dependencies, <00:18:38.465>you <00:18:38.745>have

421
00:18:39.365 --> 00:18:40.685
<00:18:39.365>to <00:18:39.662>update <00:18:39.959>the <00:18:40.255>entire <00:18:40.553>package.

422
00:18:42.425 --> 00:18:45.325
<00:18:42.425>Uh, <00:18:42.565>nix <00:18:42.705>also <00:18:42.845>has <00:18:42.985>a <00:18:43.125>powerful <00:18:43.264>CLI <00:18:43.405>tool <00:18:43.544>that <00:18:43.685>allows <00:18:43.825>you

423
00:18:45.325 --> 00:18:47.805
<00:18:45.325>to <00:18:45.558>create <00:18:45.791>so-called <00:18:46.025>ad <00:18:46.258>hoc <00:18:46.491>shell <00:18:46.725>environments.

424
00:18:48.425 --> 00:18:50.885
<00:18:48.425>And <00:18:48.565>for <00:18:48.705>example, <00:18:48.845>here <00:18:48.985>you <00:18:49.125>can <00:18:49.264>create <00:18:49.405>an <00:18:49.544>ad <00:18:49.685>hoc <00:18:49.825>shell

425
00:18:50.885 --> 00:18:52.485
<00:18:50.885>environment <00:18:51.235>with <00:18:51.585>Git, <00:18:51.935>Neo <00:18:52.285>Wim

426
00:18:52.485 --> 00:18:54.765
<00:18:52.485>and <00:18:52.659>O <00:18:52.834>js, <00:18:53.010>which <00:18:53.185>gives <00:18:53.360>you <00:18:53.534>the <00:18:53.709>the <00:18:53.885>ability

427
00:18:54.825 --> 00:18:58.605
<00:18:54.825>to <00:18:55.000>easily <00:18:55.175>test <00:18:55.350>out <00:18:55.525>your <00:18:55.700>project <00:18:55.875>projects <00:18:56.050>using, <00:18:56.225>uh,

428
00:18:58.605 --> 00:19:01.325
<00:18:58.605>different, <00:18:58.805>let's <00:18:59.005>say <00:18:59.205>environment <00:18:59.405>set <00:18:59.605>up <00:18:59.805>different <00:19:00.005>OS

429
00:19:01.325 --> 00:19:03.925
<00:19:01.325>dependency <00:19:01.525>set <00:19:01.725>up <00:19:01.925>using <00:19:02.125>just <00:19:02.325>a <00:19:02.525>single <00:19:02.725>command.

430
00:19:05.465 --> 00:19:08.685
<00:19:05.465>And <00:19:05.665>also <00:19:05.865>it <00:19:06.064>wouldn't <00:19:06.264>be <00:19:06.465>a <00:19:06.665>development <00:19:06.865>environment

431
00:19:08.685 --> 00:19:12.125
<00:19:08.685>as <00:19:08.825>code <00:19:08.965>if, <00:19:09.105>uh, <00:19:09.245>let's <00:19:09.385>say <00:19:09.524>code <00:19:09.665>solution <00:19:09.804>wasn't <00:19:09.945>present <00:19:10.085>here,

432
00:19:12.625 --> 00:19:15.485
<00:19:12.625>you <00:19:12.780>can <00:19:12.936>use, <00:19:13.091>uh, <00:19:13.247>the <00:19:13.402>next <00:19:13.558>language <00:19:13.713>to <00:19:13.869>define <00:19:14.025>these.

433
00:19:15.585 --> 00:19:17.045
<00:19:15.585>Uh, <00:19:15.913>always <00:19:16.242>dependencies <00:19:16.570>as <00:19:16.899>well.

434
00:19:17.065 --> 00:19:20.485
<00:19:17.065>So <00:19:17.220>for <00:19:17.376>example, <00:19:17.531>here <00:19:17.687>again <00:19:17.842>no <00:19:17.998>JS <00:19:18.153>application <00:19:18.309>yarn <00:19:18.465>Git

435
00:19:20.505 --> 00:19:23.045
<00:19:20.505>and <00:19:20.738>a <00:19:20.971>TypeScript <00:19:21.205>LSPI <00:19:21.438>think <00:19:21.671>is <00:19:21.905>installed.

436
00:19:23.515 --> 00:19:26.205
<00:19:23.515>This <00:19:23.622>is <00:19:23.730>the <00:19:23.838>bare <00:19:23.945>minimum <00:19:24.053>of <00:19:24.161>a <00:19:24.268>next <00:19:24.376>file <00:19:24.484>that <00:19:24.591>will <00:19:24.699>get <00:19:24.807>you <00:19:24.915>up

437
00:19:26.205 --> 00:19:29.445
<00:19:26.205>and <00:19:26.360>running <00:19:26.516>to <00:19:26.671>create <00:19:26.827>your <00:19:26.982>and <00:19:27.138>develop <00:19:27.293>your <00:19:27.449>node <00:19:27.605>project.

438
00:19:31.265 --> 00:19:34.085
<00:19:31.265>Uh, <00:19:31.405>I <00:19:31.545>can <00:19:31.685>do <00:19:31.825>what's <00:19:31.965>called <00:19:32.105>separate <00:19:32.245>talk <00:19:32.385>about <00:19:32.525>Nix <00:19:32.665>itself

439
00:19:34.085 --> 00:19:35.525
<00:19:34.085>because <00:19:34.344>it's <00:19:34.603>such <00:19:34.862>a <00:19:35.121>large <00:19:35.381>ecosystem

440
00:19:35.625 --> 00:19:37.885
<00:19:35.625>and <00:19:35.858>the <00:19:36.091>Nix <00:19:36.325>community <00:19:36.558>again <00:19:36.791>is <00:19:37.025>great.

441
00:19:37.915 --> 00:19:41.045
<00:19:37.915>They're <00:19:38.090>all, <00:19:38.264>uh, <00:19:38.440>if <00:19:38.615>you <00:19:38.790>wanna <00:19:38.965>check <00:19:39.139>out <00:19:39.315>Nix

442
00:19:41.045 --> 00:19:42.805
<00:19:41.045>and <00:19:41.245>the <00:19:41.445>community <00:19:41.645>itself, <00:19:41.845>go <00:19:42.045>to <00:19:42.245>this <00:19:42.445>link

443
00:19:42.905 --> 00:19:44.445
<00:19:42.905>and <00:19:43.182>uh, <00:19:43.459>uh, <00:19:43.736>check <00:19:44.013>it <00:19:44.291>out.

444
00:19:44.585 --> 00:19:46.605
<00:19:44.585>We <00:19:44.785>are <00:19:44.985>a <00:19:45.185>part <00:19:45.385>of <00:19:45.585>the <00:19:45.785>NIX <00:19:45.985>community

445
00:19:46.625 --> 00:19:49.685
<00:19:46.625>and <00:19:46.765>push <00:19:46.905>Daytona <00:19:47.045>to <00:19:47.185>nix, <00:19:47.325>uh, <00:19:47.465>as <00:19:47.605>well <00:19:47.745>as <00:19:47.885>a <00:19:48.025>package,

446
00:19:49.985 --> 00:19:51.125
<00:19:49.985>um, <00:19:50.498>uh, <00:19:51.011>today.

447
00:19:52.105 --> 00:19:56.365
<00:19:52.105>So <00:19:52.232>if <00:19:52.359>Nix <00:19:52.486>by <00:19:52.614>itself <00:19:52.741>isn't <00:19:52.868>enough, <00:19:52.995>NIX <00:19:53.123>also <00:19:53.250>has <00:19:53.377>Nix <00:19:53.505>os,

448
00:19:56.375 --> 00:20:00.725
<00:19:56.375>which <00:19:56.515>is <00:19:56.655>an <00:19:56.795>entire <00:19:56.935>operating <00:19:57.075>system <00:19:57.215>that <00:19:57.355>is <00:19:57.495>operated <00:19:57.635>by <00:19:57.775>Nix.

449
00:20:01.235 --> 00:20:02.685
<00:20:01.235>What <00:20:01.495>does <00:20:01.756>this <00:20:02.018>mean? <00:20:02.279>This <00:20:02.540>means

450
00:20:02.685 --> 00:20:05.605
<00:20:02.685>that <00:20:02.860>the <00:20:03.034>entire <00:20:03.210>operating <00:20:03.385>system <00:20:03.560>is <00:20:03.735>actually <00:20:03.909>a <00:20:04.085>set

451
00:20:05.605 --> 00:20:08.645
<00:20:05.605>of <00:20:05.955>configuration <00:20:06.305>files, <00:20:06.655>everything <00:20:07.005>down

452
00:20:08.645 --> 00:20:09.845
<00:20:08.645>to <00:20:08.915>the <00:20:09.185>boot <00:20:09.455>loader <00:20:09.725>itself.

453
00:20:10.025 --> 00:20:12.645
<00:20:10.025>The <00:20:10.375>file <00:20:10.725>system <00:20:11.075>configuring <00:20:11.425>SHD,

454
00:20:12.785 --> 00:20:14.845
<00:20:12.785>any <00:20:13.135>actual <00:20:13.485>always <00:20:13.835>dependency <00:20:14.185>has

455
00:20:14.845 --> 00:20:16.365
<00:20:14.845>to <00:20:15.118>be <00:20:15.392>written <00:20:15.665>through <00:20:15.939>a <00:20:16.213>file.

456
00:20:17.555 --> 00:20:20.125
<00:20:17.555>This <00:20:17.730>takes <00:20:17.905>security <00:20:18.080>actually <00:20:18.255>to <00:20:18.430>a <00:20:18.605>whole <00:20:18.780>different <00:20:18.955>level.

457
00:20:20.815 --> 00:20:24.065
<00:20:20.815>There's <00:20:20.970>no <00:20:21.126>way <00:20:21.281>that <00:20:21.437>Nicks <00:20:21.592>os <00:20:21.748>runs <00:20:21.903>a <00:20:22.059>malicious <00:20:22.215>package

458
00:20:24.175 --> 00:20:26.625
<00:20:24.175>that <00:20:24.408>wasn't <00:20:24.641>introduced <00:20:24.875>into <00:20:25.108>the <00:20:25.341>file <00:20:25.575>itself

459
00:20:26.625 --> 00:20:27.865
<00:20:26.625>and <00:20:26.904>then <00:20:27.183>rebuilt <00:20:27.462>by <00:20:27.741>you.

460
00:20:28.115 --> 00:20:30.465
<00:20:28.115>Every <00:20:28.315>single <00:20:28.515>change <00:20:28.715>of <00:20:28.915>the <00:20:29.115>operating <00:20:29.315>system <00:20:29.515>has

461
00:20:30.465 --> 00:20:33.345
<00:20:30.465>to <00:20:30.592>be <00:20:30.719>written <00:20:30.846>down <00:20:30.974>through <00:20:31.101>a <00:20:31.228>file <00:20:31.355>and <00:20:31.483>then <00:20:31.610>rebuild <00:20:31.737>the <00:20:31.865>uh,

462
00:20:33.405 --> 00:20:35.665
<00:20:33.405>and <00:20:33.580>then <00:20:33.754>you <00:20:33.930>have <00:20:34.105>to <00:20:34.280>rebuild <00:20:34.455>the <00:20:34.629>entire <00:20:34.805>OS

463
00:20:36.525 --> 00:20:38.945
<00:20:36.525>and <00:20:36.758>rebuilding <00:20:36.991>the <00:20:37.225>entire <00:20:37.458>OS <00:20:37.691>might <00:20:37.925>seem

464
00:20:38.955 --> 00:20:40.705
<00:20:38.955>scary <00:20:39.421>for <00:20:39.888>Windows <00:20:40.355>users.

465
00:20:41.365 --> 00:20:44.745
<00:20:41.365>Uh, <00:20:41.540>but <00:20:41.715>rebuilding <00:20:41.890>Nix <00:20:42.065>OS <00:20:42.240>is <00:20:42.415>just <00:20:42.590>a <00:20:42.765>couple

466
00:20:44.745 --> 00:20:45.985
<00:20:44.745>of <00:20:45.117>diffs <00:20:45.488>rebuilding <00:20:45.860>it

467
00:20:46.045 --> 00:20:48.005
<00:20:46.045>and <00:20:46.220>you <00:20:46.395>should <00:20:46.570>be <00:20:46.745>done <00:20:46.920>in <00:20:47.095>a <00:20:47.270>few <00:20:47.445>minutes.

468
00:20:48.385 --> 00:20:51.045
<00:20:48.385>But <00:20:48.560>if <00:20:48.735>it <00:20:48.910>fails, <00:20:49.085>so <00:20:49.260>for <00:20:49.435>example, <00:20:49.610>you <00:20:49.785>know

469
00:20:51.075 --> 00:20:54.245
<00:20:51.075>that <00:20:51.250>big <00:20:51.425>huge <00:20:51.600>Windows <00:20:51.775>warning, <00:20:51.950>don't <00:20:52.125>disconnect <00:20:52.300>from <00:20:52.475>power,

470
00:20:54.475 --> 00:20:56.445
<00:20:54.475>keep <00:20:54.754>it <00:20:55.034>online <00:20:55.314>with <00:20:55.594>next <00:20:55.875>os.

471
00:20:56.445 --> 00:20:58.805
<00:20:56.445>If <00:20:56.600>you <00:20:56.756>disconnect <00:20:56.911>from <00:20:57.067>power, <00:20:57.222>if <00:20:57.378>your <00:20:57.533>laptop <00:20:57.689>dies <00:20:57.845>out,

472
00:20:58.825 --> 00:21:00.725
<00:20:58.825>you <00:20:59.000>will <00:20:59.175>just <00:20:59.350>get <00:20:59.525>reverted <00:20:59.700>to <00:20:59.875>the <00:21:00.050>last <00:21:00.225>state

473
00:21:00.785 --> 00:21:02.125
<00:21:00.785>to <00:21:00.986>the <00:21:01.187>last <00:21:01.388>version <00:21:01.589>that <00:21:01.790>was <00:21:01.991>working.

474
00:21:02.745 --> 00:21:04.805
<00:21:02.745>Or <00:21:02.945>if <00:21:03.145>you <00:21:03.344>mess <00:21:03.544>something <00:21:03.745>up, <00:21:03.945>no <00:21:04.145>worries,

475
00:21:05.055 --> 00:21:06.765
<00:21:05.055>start <00:21:05.405>over, <00:21:05.755>rebuild <00:21:06.105>it <00:21:06.455>again.

476
00:21:07.625 --> 00:21:09.805
<00:21:07.625>Uh, <00:21:07.858>this <00:21:08.091>means <00:21:08.325>rollbacks <00:21:08.558>are <00:21:08.791>very <00:21:09.025>easy.

477
00:21:09.905 --> 00:21:12.125
<00:21:09.905>You <00:21:10.105>upgrade <00:21:10.305>n <00:21:10.504>os <00:21:10.705>you <00:21:10.905>can <00:21:11.105>roll <00:21:11.305>back

478
00:21:12.145 --> 00:21:14.285
<00:21:12.145>to <00:21:12.345>an <00:21:12.545>older <00:21:12.745>version <00:21:12.945>of <00:21:13.145>the <00:21:13.345>OS <00:21:13.545>itself.

479
00:21:14.355 --> 00:21:18.485
<00:21:14.355>Very <00:21:14.471>easy. <00:21:14.588>So <00:21:14.705>one <00:21:14.821>use <00:21:14.938>case <00:21:15.055>that <00:21:15.171>comes <00:21:15.288>to <00:21:15.405>my <00:21:15.521>mind <00:21:15.638>is, <00:21:15.755>uh,

480
00:21:18.625 --> 00:21:20.885
<00:21:18.625>you <00:21:18.800>have <00:21:18.975>some <00:21:19.150>legacy <00:21:19.325>code <00:21:19.500>that <00:21:19.675>has, <00:21:19.850>I <00:21:20.025>dunno,

481
00:21:20.885 --> 00:21:22.965
<00:21:20.885>some <00:21:21.118>dependencies <00:21:21.351>from <00:21:21.585>10 <00:21:21.818>years <00:21:22.051>ago <00:21:22.285>running.

482
00:21:23.385 --> 00:21:27.525
<00:21:23.385>You <00:21:23.512>keep <00:21:23.639>Nix <00:21:23.766>os <00:21:23.894>let's <00:21:24.021>say, <00:21:24.148>uh, <00:21:24.275>um, <00:21:24.403>the <00:21:24.530>n <00:21:24.657>os <00:21:24.785>configuration

483
00:21:27.525 --> 00:21:30.245
<00:21:27.525>around <00:21:27.700>for <00:21:27.875>10 <00:21:28.050>years <00:21:28.225>to <00:21:28.400>develop <00:21:28.575>the <00:21:28.750>legacy <00:21:28.925>code,

484
00:21:30.245 --> 00:21:32.765
<00:21:30.245>you <00:21:30.445>just <00:21:30.645>switch <00:21:30.844>the <00:21:31.044>entire <00:21:31.245>operating <00:21:31.445>system <00:21:31.645>version

485
00:21:32.905 --> 00:21:34.885
<00:21:32.905>to <00:21:33.080>10 <00:21:33.254>years <00:21:33.430>ago <00:21:33.605>and <00:21:33.780>you're <00:21:33.955>good <00:21:34.129>to <00:21:34.305>go.

486
00:21:35.305 --> 00:21:37.605
<00:21:35.305>No <00:21:35.538>configuring, <00:21:35.771>I <00:21:36.005>dunno, <00:21:36.238>Java <00:21:36.471>version <00:21:36.705>two

487
00:21:37.705 --> 00:21:39.765
<00:21:37.705>or <00:21:38.054>I <00:21:38.405>dunno, <00:21:38.754>PHP <00:21:39.105>one.

488
00:21:39.795 --> 00:21:41.245
<00:21:39.795>It's <00:21:40.056>all <00:21:40.317>a <00:21:40.578>set <00:21:40.839>of <00:21:41.100>files

489
00:21:41.345 --> 00:21:43.845
<00:21:41.345>and <00:21:41.520>it's <00:21:41.695>all <00:21:41.870>very, <00:21:42.045>very <00:21:42.220>easy <00:21:42.395>to <00:21:42.570>roll <00:21:42.745>back.

490
00:21:45.225 --> 00:21:48.405
<00:21:45.225>So <00:21:45.365>that <00:21:45.504>has <00:21:45.645>been <00:21:45.784>Nix <00:21:45.925>and <00:21:46.064>Nix <00:21:46.205>os. <00:21:46.344>Again, <00:21:46.485>open <00:21:46.625>source.

491
00:21:48.545 --> 00:21:49.845
<00:21:48.545>We <00:21:48.837>love <00:21:49.130>open <00:21:49.422>source <00:21:49.715>standards.

492
00:21:50.305 --> 00:21:52.125
<00:21:50.305>Uh, <00:21:50.585>it's <00:21:50.865>a <00:21:51.145>functional <00:21:51.425>package <00:21:51.705>manager

493
00:21:52.225 --> 00:21:56.045
<00:21:52.225>and <00:21:52.365>it's <00:21:52.504>a <00:21:52.645>fully <00:21:52.784>secure <00:21:52.925>os <00:21:53.064>uh, <00:21:53.205>that <00:21:53.344>is <00:21:53.485>fully <00:21:53.625>immutable.

494
00:21:56.045 --> 00:21:59.005
<00:21:56.045>As <00:21:56.185>I <00:21:56.325>said. <00:21:56.465>It <00:21:56.605>has <00:21:56.745>atomic <00:21:56.885>upgrades <00:21:57.025>which <00:21:57.165>allow <00:21:57.305>you <00:21:57.445>to,

495
00:21:59.325 --> 00:22:01.525
<00:21:59.325>I <00:21:59.525>dunno, <00:21:59.725>disconnect <00:21:59.925>from <00:22:00.125>power, <00:22:00.325>which <00:22:00.525>allow <00:22:00.725>you

496
00:22:01.525 --> 00:22:05.205
<00:22:01.525>to <00:22:01.680>easily <00:22:01.836>roll <00:22:01.991>back <00:22:02.147>to <00:22:02.302>any <00:22:02.458>OS <00:22:02.613>version <00:22:02.769>previously <00:22:02.925>installed.

497
00:22:06.865 --> 00:22:09.285
<00:22:06.865>So <00:22:07.065>those <00:22:07.265>were <00:22:07.465>the <00:22:07.665>three <00:22:07.865>most <00:22:08.065>popular, <00:22:08.265>um,

498
00:22:09.845 --> 00:22:11.765
<00:22:09.845>configuration <00:22:10.311>standards <00:22:10.778>plus <00:22:11.245>docker.

499
00:22:12.265 --> 00:22:14.285
<00:22:12.265>Uh, <00:22:12.465>so <00:22:12.665>how <00:22:12.865>do <00:22:13.065>you <00:22:13.265>actually <00:22:13.465>choose <00:22:13.665>a

500
00:22:14.445 --> 00:22:15.805
<00:22:14.445>configuration <00:22:14.751>standard <00:22:15.057>for <00:22:15.363>your <00:22:15.669>project?

501
00:22:16.185 --> 00:22:17.605
<00:22:16.185>How <00:22:16.367>do <00:22:16.550>you <00:22:16.732>choose <00:22:16.915>it <00:22:17.097>for <00:22:17.280>your <00:22:17.463>team,

502
00:22:17.785 --> 00:22:19.285
<00:22:17.785>for <00:22:18.122>your <00:22:18.460>company, <00:22:18.797>et <00:22:19.135>cetera.

503
00:22:19.785 --> 00:22:22.285
<00:22:19.785>So <00:22:19.925>you <00:22:20.065>can <00:22:20.205>define <00:22:20.345>a <00:22:20.485>table <00:22:20.625>like, <00:22:20.765>uh, <00:22:20.905>this, <00:22:21.045>for <00:22:21.185>example,

504
00:22:22.285 --> 00:22:23.485
<00:22:22.285>this <00:22:22.555>is <00:22:22.825>defined <00:22:23.095>by <00:22:23.365>me.

505
00:22:23.985 --> 00:22:26.885
<00:22:23.985>Uh, <00:22:24.140>if <00:22:24.296>for <00:22:24.451>example, <00:22:24.607>if <00:22:24.762>you <00:22:24.918>want <00:22:25.073>something <00:22:25.229>container <00:22:25.385>based

506
00:22:27.515 --> 00:22:30.565
<00:22:27.515>because <00:22:27.748>your <00:22:27.981>application <00:22:28.215>is <00:22:28.448>already, <00:22:28.681>uh, <00:22:28.915>containerized,

507
00:22:30.565 --> 00:22:32.565
<00:22:30.565>it <00:22:30.740>has <00:22:30.915>a <00:22:31.090>docker <00:22:31.265>file, <00:22:31.440>it <00:22:31.615>might <00:22:31.790>be <00:22:31.965>easiest

508
00:22:32.705 --> 00:22:33.885
<00:22:32.705>to <00:22:33.059>choose <00:22:33.413>dev <00:22:33.767>containers.

509
00:22:33.885 --> 00:22:35.925
<00:22:33.885>For <00:22:34.235>example, <00:22:34.585>if <00:22:34.935>your <00:22:35.285>company,

510
00:22:35.985 --> 00:22:39.285
<00:22:35.985>if <00:22:36.140>your <00:22:36.296>DevOps <00:22:36.451>loves <00:22:36.607>Kubernetes, <00:22:36.762>if <00:22:36.918>uh, <00:22:37.073>they <00:22:37.229>love, <00:22:37.385>uh,

511
00:22:39.375 --> 00:22:40.605
<00:22:39.375>going <00:22:39.744>down <00:22:40.113>and <00:22:40.482>dirty

512
00:22:40.625 --> 00:22:43.085
<00:22:40.625>and <00:22:40.858>configuring <00:22:41.091>everything <00:22:41.325>about <00:22:41.558>the <00:22:41.791>deployment <00:22:42.025>itself,

513
00:22:43.395 --> 00:22:47.405
<00:22:43.395>then <00:22:43.550>maybe <00:22:43.706>the <00:22:43.861>the <00:22:44.017>dev <00:22:44.172>file <00:22:44.328>standard <00:22:44.483>is <00:22:44.639>most <00:22:44.795>appropriate.

514
00:22:47.865 --> 00:22:50.405
<00:22:47.865>If <00:22:48.098>you <00:22:48.331>want <00:22:48.565>hard <00:22:48.798>os <00:22:49.031>level <00:22:49.265>security,

515
00:22:50.545 --> 00:22:53.245
<00:22:50.545>if <00:22:50.745>you <00:22:50.945>want <00:22:51.145>immutability, <00:22:51.345>if <00:22:51.545>you <00:22:51.745>want, <00:22:51.945>uh,

516
00:22:53.315 --> 00:22:55.205
<00:22:53.315>autonom <00:22:53.781>rollbacks, <00:22:54.248>then <00:22:54.715>next

517
00:22:55.265 --> 00:22:57.325
<00:22:55.265>and <00:22:55.440>next <00:22:55.615>os <00:22:55.790>might <00:22:55.965>be <00:22:56.140>the <00:22:56.315>way <00:22:56.490>to <00:22:56.665>go.

518
00:22:57.985 --> 00:23:02.365
<00:22:57.985>The <00:22:58.125>important <00:22:58.264>thing <00:22:58.405>here <00:22:58.544>is <00:22:58.685>that <00:22:58.824>you're <00:22:58.965>not, <00:22:59.104>let's <00:22:59.245>say, <00:22:59.385>uh,

519
00:23:02.475 --> 00:23:04.125
<00:23:02.475>hard <00:23:02.708>stuck <00:23:02.941>on <00:23:03.175>any <00:23:03.408>of <00:23:03.641>these <00:23:03.875>standards.

520
00:23:04.155 --> 00:23:07.085
<00:23:04.155>It's <00:23:04.330>important <00:23:04.504>that <00:23:04.680>you <00:23:04.855>choose <00:23:05.030>whichever <00:23:05.205>standard <00:23:05.379>you <00:23:05.555>want.

521
00:23:07.625 --> 00:23:10.925
<00:23:07.625>The <00:23:07.765>important <00:23:07.905>thing <00:23:08.045>is <00:23:08.185>that <00:23:08.325>you <00:23:08.465>realize <00:23:08.605>that <00:23:08.745>by <00:23:08.885>adopting <00:23:09.025>one

522
00:23:10.925 --> 00:23:12.805
<00:23:10.925>of <00:23:11.205>these <00:23:11.485>standards <00:23:11.764>or <00:23:12.044>a <00:23:12.325>fourth

523
00:23:12.865 --> 00:23:15.005
<00:23:12.865>or <00:23:13.145>fifth <00:23:13.425>standard, <00:23:13.705>whatever, <00:23:13.985>you <00:23:14.265>realize

524
00:23:15.075 --> 00:23:16.645
<00:23:15.075>what <00:23:15.425>it <00:23:15.775>brings <00:23:16.125>in <00:23:16.475>terms

525
00:23:16.665 --> 00:23:19.565
<00:23:16.665>of <00:23:16.945>developer <00:23:17.225>velocity <00:23:17.504>about <00:23:17.784>reducing <00:23:18.065>headaches,

526
00:23:19.805 --> 00:23:22.965
<00:23:19.805>reducing <00:23:19.960>stress <00:23:20.116>not <00:23:20.271>only <00:23:20.427>to <00:23:20.582>yourself <00:23:20.738>but <00:23:20.893>your <00:23:21.049>entire <00:23:21.205>team.

527
00:23:22.965 --> 00:23:26.045
<00:23:22.965>Because <00:23:23.139>once <00:23:23.314>this <00:23:23.490>is <00:23:23.665>configured <00:23:23.840>once <00:23:24.014>inside <00:23:24.189>your <00:23:24.365>project,

528
00:23:26.305 --> 00:23:29.365
<00:23:26.305>it <00:23:26.480>can <00:23:26.655>be <00:23:26.830>reused <00:23:27.005>across <00:23:27.180>the <00:23:27.355>entire <00:23:27.530>development <00:23:27.705>team.

529
00:23:29.635 --> 00:23:31.005
<00:23:29.635>Only <00:23:29.840>one <00:23:30.046>person <00:23:30.251>has <00:23:30.457>to <00:23:30.662>do <00:23:30.868>it.

530
00:23:31.005 --> 00:23:33.765
<00:23:31.005>There's <00:23:31.180>no <00:23:31.355>more <00:23:31.530>bothering <00:23:31.705>juniors <00:23:31.880>with <00:23:32.055>setting <00:23:32.230>up <00:23:32.405>your,

531
00:23:33.765 --> 00:23:35.085
<00:23:33.765>their <00:23:34.161>laptops <00:23:34.557>or <00:23:34.953>whatever.

532
00:23:35.215 --> 00:23:37.125
<00:23:35.215>Everything <00:23:35.564>works <00:23:35.915>outta <00:23:36.264>the <00:23:36.615>box.

533
00:23:38.305 --> 00:23:40.365
<00:23:38.305>And <00:23:38.480>of <00:23:38.655>course, <00:23:38.830>they <00:23:39.005>told <00:23:39.180>us <00:23:39.355>strives <00:23:39.530>to <00:23:39.705>uh,

534
00:23:40.725 --> 00:23:42.205
<00:23:40.725>actually <00:23:40.991>support <00:23:41.257>all <00:23:41.524>of <00:23:41.790>these <00:23:42.057>standards.

535
00:23:42.545 --> 00:23:45.685
<00:23:42.545>Uh, <00:23:42.672>we <00:23:42.799>support <00:23:42.926>dev <00:23:43.054>containers <00:23:43.181>out <00:23:43.308>of <00:23:43.435>the <00:23:43.563>box <00:23:43.690>with <00:23:43.817>our <00:23:43.945>CLI,

536
00:23:45.985 --> 00:23:49.165
<00:23:45.985>you <00:23:46.125>can <00:23:46.264>use <00:23:46.405>Daytona <00:23:46.544>create <00:23:46.685>and <00:23:46.824>then <00:23:46.965>paste <00:23:47.104>the <00:23:47.245>repo <00:23:47.385>URL.

537
00:23:49.265 --> 00:23:50.485
<00:23:49.265>We <00:23:49.539>will <00:23:49.814>create <00:23:50.088>the <00:23:50.362>project

538
00:23:50.665 --> 00:23:53.085
<00:23:50.665>for <00:23:50.805>you <00:23:50.945>even <00:23:51.085>if <00:23:51.225>it <00:23:51.365>doesn't <00:23:51.504>have <00:23:51.645>a <00:23:51.784>dev <00:23:51.925>container <00:23:52.065>file.

539
00:23:53.705 --> 00:23:55.765
<00:23:53.705>Uh, <00:23:53.985>we're <00:23:54.264>a <00:23:54.544>development <00:23:54.824>environment <00:23:55.105>manager,

540
00:23:55.775 --> 00:23:58.405
<00:23:55.775>which <00:23:55.975>means <00:23:56.175>we <00:23:56.375>alleviate <00:23:56.575>all <00:23:56.775>of <00:23:56.975>these <00:23:57.175>headaches

541
00:23:58.405 --> 00:24:02.325
<00:23:58.405>and <00:23:58.545>we, <00:23:58.685>uh, <00:23:58.825>hope <00:23:58.965>that <00:23:59.105>you, <00:23:59.245>uh, <00:23:59.385>will <00:23:59.524>adopt <00:23:59.665>these <00:23:59.805>standards

542
00:24:02.425 --> 00:24:03.965
<00:24:02.425>inside <00:24:02.771>your <00:24:03.118>companies <00:24:03.464>as <00:24:03.811>well.

543
00:24:05.065 --> 00:24:07.805
<00:24:05.065>So <00:24:05.192>that's <00:24:05.319>been <00:24:05.446>me. <00:24:05.574>Uh, <00:24:05.701>thank <00:24:05.828>you <00:24:05.955>so <00:24:06.083>much <00:24:06.210>for <00:24:06.337>staying <00:24:06.465>around.

544
00:24:07.985 --> 00:24:10.045
<00:24:07.985>Uh, <00:24:08.185>you <00:24:08.385>can <00:24:08.584>follow <00:24:08.784>me <00:24:08.985>on <00:24:09.185>Twitter, <00:24:09.385>LinkedIn.

545
00:24:10.545 --> 00:24:12.965
<00:24:10.545>You <00:24:10.720>can <00:24:10.895>email <00:24:11.070>me <00:24:11.245>about <00:24:11.420>any <00:24:11.595>question <00:24:11.770>about <00:24:11.945>any

546
00:24:12.965 --> 00:24:14.805
<00:24:12.965>of <00:24:13.245>these <00:24:13.524>standards, <00:24:13.804>about <00:24:14.084>Deone <00:24:14.365>itself.

547
00:24:15.385 --> 00:24:17.445
<00:24:15.385>Uh, <00:24:15.540>and <00:24:15.696>I'll <00:24:15.851>stay <00:24:16.007>around <00:24:16.162>for <00:24:16.318>a <00:24:16.473>q <00:24:16.629>and <00:24:16.785>a.

548
00:24:17.585 --> 00:24:19.445
<00:24:17.585>And, <00:24:17.760>uh, <00:24:17.935>thank <00:24:18.110>you <00:24:18.285>so <00:24:18.460>much <00:24:18.635>for <00:24:18.810>being <00:24:18.985>here.