WEBVTT

1
00:00:02.625 --> 00:00:02.925
<00:00:02.625>All <00:00:02.895>right.

2
00:00:03.385 --> 00:00:05.965
<00:00:03.385>Hi <00:00:03.559>everyone. <00:00:03.735>Uh, <00:00:03.909>my <00:00:04.085>name <00:00:04.260>is <00:00:04.435>Marcus. <00:00:04.609>Marcus <00:00:04.785>Stiller.

3
00:00:06.065 --> 00:00:08.925
<00:00:06.065>I'm <00:00:06.265>a <00:00:06.465>solution <00:00:06.665>at <00:00:06.865>AWS <00:00:07.065>Amazon <00:00:07.265>Web <00:00:07.465>Services

4
00:00:09.825 --> 00:00:12.525
<00:00:09.825>and <00:00:10.000>today <00:00:10.174>I <00:00:10.350>want <00:00:10.524>to <00:00:10.700>talk <00:00:10.875>about <00:00:11.049>polyglot <00:00:11.225>virus

5
00:00:12.825 --> 00:00:17.645
<00:00:12.825>and <00:00:12.965>in <00:00:13.104>particular <00:00:13.245>how <00:00:13.385>AWS <00:00:13.524>builds <00:00:13.665>polyglot <00:00:13.805>virus <00:00:13.944>based <00:00:14.084>on <00:00:14.225>a

6
00:00:17.825 --> 00:00:20.325
<00:00:17.825>single <00:00:18.105>TypeScript <00:00:18.384>code, <00:00:18.665>TypeScript <00:00:18.945>code <00:00:19.224>base.

7
00:00:20.835 --> 00:00:25.405
<00:00:20.835>However, <00:00:20.951>before <00:00:21.068>I <00:00:21.185>dive <00:00:21.301>deep <00:00:21.418>into <00:00:21.535>the <00:00:21.651>how <00:00:21.768>I <00:00:21.885>want <00:00:22.001>to <00:00:22.118>zoom <00:00:22.235>out,

8
00:00:25.745 --> 00:00:29.125
<00:00:25.745>uh, <00:00:25.872>for <00:00:25.999>a <00:00:26.126>bit <00:00:26.254>and <00:00:26.381>talk <00:00:26.508>about <00:00:26.635>why <00:00:26.763>this <00:00:26.890>is <00:00:27.017>actually <00:00:27.145>required.

9
00:00:30.065 --> 00:00:33.405
<00:00:30.065>And <00:00:30.220>at <00:00:30.376>the <00:00:30.531>end <00:00:30.687>it <00:00:30.842>comes <00:00:30.998>down <00:00:31.153>to <00:00:31.309>something <00:00:31.465>that

10
00:00:34.025 --> 00:00:35.485
<00:00:34.025>Amazon <00:00:34.463>realized <00:00:34.900>real <00:00:35.339>quick,

11
00:00:35.545 --> 00:00:39.885
<00:00:35.545>and <00:00:35.700>that <00:00:35.856>is <00:00:36.011>in <00:00:36.167>order <00:00:36.322>to <00:00:36.478>remain <00:00:36.633>competitive, <00:00:36.789>you <00:00:36.945>need

12
00:00:39.885 --> 00:00:40.965
<00:00:39.885>to <00:00:40.371>be <00:00:40.857>adaptive.

13
00:00:41.945 --> 00:00:44.125
<00:00:41.945>And <00:00:42.225>for <00:00:42.505>Amazon, <00:00:42.785>a <00:00:43.065>key <00:00:43.345>driver

14
00:00:44.185 --> 00:00:46.845
<00:00:44.185>of <00:00:44.465>this <00:00:44.745>has <00:00:45.025>always <00:00:45.305>been <00:00:45.585>decomposition.

15
00:00:47.185 --> 00:00:49.605
<00:00:47.185>So <00:00:47.418>we <00:00:47.651>decompose <00:00:47.885>on <00:00:48.118>many <00:00:48.351>different <00:00:48.585>layers.

16
00:00:50.305 --> 00:00:51.845
<00:00:50.305>So <00:00:50.651>we <00:00:50.998>decompose <00:00:51.344>our <00:00:51.691>business.

17
00:00:51.865 --> 00:00:53.045
<00:00:51.865>If <00:00:52.219>you're <00:00:52.573>using <00:00:52.927>AWS,

18
00:00:53.095 --> 00:00:55.525
<00:00:53.095>every <00:00:53.295>service <00:00:53.495>like <00:00:53.695>EC2 <00:00:53.894>has <00:00:54.095>a <00:00:54.295>general <00:00:54.495>manager

19
00:00:55.625 --> 00:00:58.605
<00:00:55.625>and <00:00:55.800>it's <00:00:55.975>really <00:00:56.150>operates <00:00:56.325>as <00:00:56.500>its <00:00:56.675>own <00:00:56.850>little <00:00:57.025>business.

20
00:00:59.025 --> 00:01:02.245
<00:00:59.025>But <00:00:59.180>we <00:00:59.336>also <00:00:59.491>decompose <00:00:59.647>on <00:00:59.802>the, <00:00:59.958>in <00:01:00.113>the <00:01:00.269>tech <00:01:00.425>part

21
00:01:02.245 --> 00:01:03.805
<00:01:02.245>that <00:01:02.711>underpins <00:01:03.178>our <00:01:03.644>business.

22
00:01:04.745 --> 00:01:08.925
<00:01:04.745>And <00:01:05.025>for <00:01:05.305>that, <00:01:05.585>we <00:01:05.865>as <00:01:06.145>early

23
00:01:08.945 --> 00:01:11.725
<00:01:08.945>as <00:01:09.145>2004 <00:01:09.345>realized <00:01:09.544>that <00:01:09.744>we <00:01:09.945>cannot <00:01:10.145>move <00:01:10.345>forward

24
00:01:11.725 --> 00:01:14.005
<00:01:11.725>with <00:01:11.880>the <00:01:12.036>existing <00:01:12.191>monolith <00:01:12.347>that <00:01:12.502>we <00:01:12.658>had <00:01:12.813>at <00:01:12.969>the <00:01:13.125>time.

25
00:01:14.905 --> 00:01:17.965
<00:01:14.905>And <00:01:15.045>we <00:01:15.185>decided <00:01:15.325>to <00:01:15.465>go <00:01:15.605>with <00:01:15.745>something <00:01:15.885>that <00:01:16.025>is <00:01:16.165>today <00:01:16.305>known

26
00:01:17.985 --> 00:01:19.605
<00:01:17.985>as <00:01:18.451>a <00:01:18.918>microservice <00:01:19.385>architecture.

27
00:01:20.625 --> 00:01:24.605
<00:01:20.625>And <00:01:20.765>it's <00:01:20.905>probably <00:01:21.045>something <00:01:21.185>you <00:01:21.325>see <00:01:21.465>in <00:01:21.605>your <00:01:21.745>domains <00:01:21.885>as <00:01:22.025>well.

28
00:01:24.945 --> 00:01:27.045
<00:01:24.945>So <00:01:25.225>you <00:01:25.505>have <00:01:25.785>this <00:01:26.065>legacy <00:01:26.345>application,

29
00:01:27.045 --> 00:01:28.485
<00:01:27.045>this <00:01:27.693>monolithic <00:01:28.341>applications,

30
00:01:28.715 --> 00:01:30.085
<00:01:28.715>they're <00:01:29.023>written <00:01:29.331>in <00:01:29.639>one <00:01:29.948>language

31
00:01:30.705 --> 00:01:33.205
<00:01:30.705>and <00:01:30.905>there's <00:01:31.105>nothing <00:01:31.304>wrong <00:01:31.505>with <00:01:31.705>them <00:01:31.905>per <00:01:32.105>se,

32
00:01:33.345 --> 00:01:36.045
<00:01:33.345>but <00:01:33.545>at <00:01:33.745>some <00:01:33.945>point <00:01:34.145>you've, <00:01:34.345>they've <00:01:34.545>sort <00:01:34.745>of,

33
00:01:36.045 --> 00:01:38.245
<00:01:36.045>your <00:01:36.245>requirements <00:01:36.445>from <00:01:36.645>the <00:01:36.845>business <00:01:37.045>have <00:01:37.245>outgrow <00:01:37.445>them

34
00:01:38.505 --> 00:01:42.445
<00:01:38.505>and <00:01:38.679>you <00:01:38.854>move <00:01:39.030>towards <00:01:39.205>a <00:01:39.380>more <00:01:39.554>microservice <00:01:39.729>based <00:01:39.905>architecture

35
00:01:42.505 --> 00:01:43.565
<00:01:42.505>and <00:01:42.982>you <00:01:43.459>decompose.

36
00:01:44.065 --> 00:01:47.125
<00:01:44.065>So <00:01:44.265>where <00:01:44.465>you <00:01:44.664>previously <00:01:44.865>had <00:01:45.065>just <00:01:45.265>one <00:01:45.465>language

37
00:01:47.265 --> 00:01:49.925
<00:01:47.265>and <00:01:47.440>all <00:01:47.615>the <00:01:47.790>functionality <00:01:47.965>was <00:01:48.140>implemented <00:01:48.315>in <00:01:48.490>libraries <00:01:48.665>in

38
00:01:49.925 --> 00:01:52.685
<00:01:49.925>that <00:01:50.125>one <00:01:50.325>language, <00:01:50.524>you <00:01:50.725>now <00:01:50.925>have <00:01:51.125>multiple <00:01:51.325>languages.

39
00:01:53.425 --> 00:01:55.285
<00:01:53.425>And <00:01:53.774>that <00:01:54.125>poses <00:01:54.475>a <00:01:54.825>challenge

40
00:01:55.285 --> 00:01:58.045
<00:01:55.285>because <00:01:55.518>you <00:01:55.751>still <00:01:55.985>have <00:01:56.218>this <00:01:56.451>cross-cutting <00:01:56.685>concerns

41
00:01:58.435 --> 00:02:01.005
<00:01:58.435>that <00:01:58.590>you <00:01:58.746>sort <00:01:58.901>of <00:01:59.057>need <00:01:59.212>to <00:01:59.368>implement <00:01:59.523>in <00:01:59.679>all <00:01:59.835>those,

42
00:02:01.305 --> 00:02:03.805
<00:02:01.305>in <00:02:01.480>all <00:02:01.655>those <00:02:01.830>languages <00:02:02.005>that <00:02:02.180>affect <00:02:02.355>all <00:02:02.530>those <00:02:02.705>services.

43
00:02:05.185 --> 00:02:07.205
<00:02:05.185>And <00:02:05.885>if <00:02:06.585>you

44
00:02:08.025 --> 00:02:10.245
<00:02:08.025>do <00:02:08.258>software <00:02:08.491>engineering <00:02:08.725>at <00:02:08.958>the <00:02:09.191>Amazon <00:02:09.425>scale

45
00:02:10.375 --> 00:02:12.445
<00:02:10.375>where <00:02:10.725>you <00:02:11.075>have <00:02:11.425>literally <00:02:11.775>thousands

46
00:02:12.445 --> 00:02:15.485
<00:02:12.445>of <00:02:12.725>teams <00:02:13.005>doing <00:02:13.285>microservices <00:02:13.565>using <00:02:13.845>dozens

47
00:02:15.485 --> 00:02:18.645
<00:02:15.485>of <00:02:15.640>different <00:02:15.796>languages <00:02:15.951>and <00:02:16.107>you <00:02:16.262>rely <00:02:16.418>a <00:02:16.573>lot <00:02:16.729>on <00:02:16.885>tooling

48
00:02:18.645 --> 00:02:20.925
<00:02:18.645>and <00:02:18.878>automation, <00:02:19.111>this <00:02:19.345>becomes <00:02:19.578>a <00:02:19.811>real <00:02:20.045>challenge.

49
00:02:21.825 --> 00:02:23.125
<00:02:21.825>And <00:02:22.410>for <00:02:22.995>Amazon

50
00:02:23.145 --> 00:02:26.405
<00:02:23.145>and <00:02:23.285>for <00:02:23.425>AWS, <00:02:23.565>one <00:02:23.705>of <00:02:23.845>the <00:02:23.985>biggest <00:02:24.125>cross <00:02:24.265>country <00:02:24.405>concerns <00:02:24.545>is

51
00:02:26.425 --> 00:02:29.485
<00:02:26.425>how <00:02:26.658>to <00:02:26.891>efficiently <00:02:27.125>do <00:02:27.358>infrastructure <00:02:27.591>as <00:02:27.825>code.

52
00:02:30.265 --> 00:02:34.405
<00:02:30.265>And <00:02:30.404>that <00:02:30.545>is <00:02:30.684>something <00:02:30.825>that <00:02:30.964>we've <00:02:31.105>been <00:02:31.244>doing <00:02:31.385>for <00:02:31.524>a <00:02:31.665>while.

53
00:02:34.465 --> 00:02:37.445
<00:02:34.465>All <00:02:34.640>of <00:02:34.815>Amazon <00:02:34.990>and <00:02:35.165>AWS <00:02:35.340>essentially <00:02:35.515>runs <00:02:35.690>on <00:02:35.865>AWS.

54
00:02:37.445 --> 00:02:38.965
<00:02:37.445>So <00:02:37.673>we <00:02:37.901>dog <00:02:38.129>food <00:02:38.357>our <00:02:38.585>own <00:02:38.813>services

55
00:02:39.985 --> 00:02:42.085
<00:02:39.985>and <00:02:40.160>we <00:02:40.335>want <00:02:40.510>to <00:02:40.685>do <00:02:40.860>infrastructure <00:02:41.035>as <00:02:41.210>code, <00:02:41.385>right?

56
00:02:42.185 --> 00:02:44.645
<00:02:42.185>And <00:02:42.360>something <00:02:42.535>that <00:02:42.710>came <00:02:42.885>out <00:02:43.060>of <00:02:43.235>this <00:02:43.410>is <00:02:43.585>the

57
00:02:45.285 --> 00:02:48.805
<00:02:45.285>AWS <00:02:45.484>Cloud <00:02:45.685>development <00:02:45.885>kit, <00:02:46.085>so <00:02:46.285>called <00:02:46.484>the <00:02:46.685>CDK.

58
00:02:49.305 --> 00:02:54.005
<00:02:49.305>The <00:02:49.460>CDK <00:02:49.616>is <00:02:49.771>a <00:02:49.927>software <00:02:50.082>development <00:02:50.238>framework <00:02:50.393>that <00:02:50.549>allows <00:02:50.705>you

59
00:02:54.025 --> 00:02:57.205
<00:02:54.025>to <00:02:54.200>define <00:02:54.375>your <00:02:54.550>infrastructure <00:02:54.725>that <00:02:54.900>runs <00:02:55.075>in <00:02:55.250>the <00:02:55.425>cloud

60
00:02:57.205 --> 00:02:59.605
<00:02:57.204>and <00:02:57.554>AWS <00:02:57.904>as <00:02:58.255>actual <00:02:58.605>code.

61
00:03:00.305 --> 00:03:02.565
<00:03:00.305>And <00:03:00.505>this <00:03:00.705>really <00:03:00.905>has <00:03:01.105>been <00:03:01.305>a <00:03:01.505>paradigm <00:03:01.705>shift.

62
00:03:03.185 --> 00:03:06.405
<00:03:03.185>So <00:03:03.360>those <00:03:03.535>of <00:03:03.710>you <00:03:03.885>that <00:03:04.060>already <00:03:04.235>work <00:03:04.410>on <00:03:04.585>AWS,

63
00:03:06.405 --> 00:03:08.245
<00:03:06.405>you're <00:03:06.685>certainly <00:03:06.965>familiar <00:03:07.245>with <00:03:07.525>cloud <00:03:07.805>formation

64
00:03:08.915 --> 00:03:12.085
<00:03:08.915>that <00:03:09.195>is <00:03:09.475>our <00:03:09.755>service <00:03:10.035>to <00:03:10.315>deploy

65
00:03:12.145 --> 00:03:13.725
<00:03:12.145>or <00:03:12.378>to <00:03:12.611>manage <00:03:12.845>resources <00:03:13.078>in <00:03:13.311>the <00:03:13.545>cloud.

66
00:03:13.785 --> 00:03:16.205
<00:03:13.785>So <00:03:13.960>you <00:03:14.135>have <00:03:14.310>a <00:03:14.484>declarative <00:03:14.660>template <00:03:14.835>where <00:03:15.010>you <00:03:15.185>describe

67
00:03:16.205 --> 00:03:18.925
<00:03:16.204>what <00:03:16.380>you <00:03:16.554>want <00:03:16.730>to <00:03:16.904>have <00:03:17.079>some <00:03:17.255>network, <00:03:17.429>some <00:03:17.605>storage,

68
00:03:19.115 --> 00:03:23.285
<00:03:19.115>some <00:03:19.315>virtual <00:03:19.515>machine, <00:03:19.715>and <00:03:19.915>you <00:03:20.115>write <00:03:20.315>those <00:03:20.515>templates

69
00:03:23.285 --> 00:03:25.005
<00:03:23.285>and <00:03:23.460>you <00:03:23.635>send <00:03:23.810>them <00:03:23.984>to <00:03:24.160>the <00:03:24.335>cloud <00:03:24.510>formation <00:03:24.685>service

70
00:03:25.145 --> 00:03:27.165
<00:03:25.145>and <00:03:25.345>you <00:03:25.545>get <00:03:25.745>those <00:03:25.945>resources <00:03:26.145>in <00:03:26.345>the <00:03:26.545>cloud.

71
00:03:27.345 --> 00:03:29.845
<00:03:27.345>And <00:03:27.578>this <00:03:27.811>works <00:03:28.045>well. <00:03:28.278>But <00:03:28.511>those <00:03:28.745>templates,

72
00:03:30.155 --> 00:03:32.405
<00:03:30.155>they <00:03:30.355>are <00:03:30.555>quite <00:03:30.755>a <00:03:30.955>lot <00:03:31.155>effort <00:03:31.355>to <00:03:31.555>maintain.

73
00:03:32.405 --> 00:03:34.285
<00:03:32.405>They <00:03:32.755>are <00:03:33.105>long <00:03:33.455>and <00:03:33.805>complicated

74
00:03:34.305 --> 00:03:36.205
<00:03:34.305>and <00:03:34.505>then <00:03:34.705>just <00:03:34.905>not <00:03:35.105>fun <00:03:35.305>to <00:03:35.505>work <00:03:35.705>with.

75
00:03:36.785 --> 00:03:40.775
<00:03:36.785>So <00:03:36.901>what <00:03:37.018>teams <00:03:37.135>were <00:03:37.251>looking <00:03:37.368>for <00:03:37.484>was <00:03:37.601>a <00:03:37.718>better <00:03:37.835>way <00:03:37.951>to <00:03:38.068>do <00:03:38.185>this.

76
00:03:41.195 --> 00:03:43.215
<00:03:41.195>And <00:03:41.394>that <00:03:41.595>was <00:03:41.795>when <00:03:41.995>the <00:03:42.195>CDK <00:03:42.394>was <00:03:42.595>born,

77
00:03:43.215 --> 00:03:44.895
<00:03:43.215>when <00:03:43.448>they <00:03:43.681>introduced <00:03:43.915>a <00:03:44.148>layer <00:03:44.381>in <00:03:44.615>front

78
00:03:44.915 --> 00:03:48.095
<00:03:44.915>of <00:03:45.114>those <00:03:45.315>cloud <00:03:45.515>formation <00:03:45.715>templates <00:03:45.915>that <00:03:46.114>allowed <00:03:46.315>you

79
00:03:48.095 --> 00:03:49.615
<00:03:48.095>to <00:03:48.551>write <00:03:49.007>proper <00:03:49.463>code

80
00:03:49.685 --> 00:03:53.575
<00:03:49.685>with <00:03:49.825>all <00:03:49.965>the <00:03:50.105>nice <00:03:50.245>things <00:03:50.385>we <00:03:50.525>have <00:03:50.665>in <00:03:50.805>code <00:03:50.945>loops, <00:03:51.085>conditions,

81
00:03:53.685 --> 00:03:55.775
<00:03:53.685>inheritance <00:03:53.965>writing <00:03:54.245>tests <00:03:54.525>and <00:03:54.805>so <00:03:55.085>on.

82
00:03:56.035 --> 00:03:59.735
<00:03:56.035>And <00:03:56.210>that <00:03:56.385>then <00:03:56.560>translates <00:03:56.734>to <00:03:56.910>the <00:03:57.085>cloud <00:03:57.260>formation <00:03:57.435>template.

83
00:04:00.435 --> 00:04:03.055
<00:04:00.435>And <00:04:00.635>what <00:04:00.835>we <00:04:01.035>do <00:04:01.235>is <00:04:01.435>we <00:04:01.635>do <00:04:01.835>constructs

84
00:04:03.235 --> 00:04:05.175
<00:04:03.235>and <00:04:03.435>constructs <00:04:03.635>come <00:04:03.835>in <00:04:04.035>a <00:04:04.235>number <00:04:04.435>of <00:04:04.635>forms.

85
00:04:05.315 --> 00:04:08.415
<00:04:05.315>So <00:04:05.548>level <00:04:05.781>one <00:04:06.015>construct <00:04:06.248>that's <00:04:06.481>not <00:04:06.715>very,

86
00:04:08.565 --> 00:04:10.855
<00:04:08.565>it's <00:04:08.720>not <00:04:08.876>very <00:04:09.031>spectacular, <00:04:09.187>it's <00:04:09.342>just <00:04:09.498>maps <00:04:09.653>one <00:04:09.809>to <00:04:09.965>one,

87
00:04:10.855 --> 00:04:12.495
<00:04:10.855>to <00:04:11.204>a <00:04:11.554>cloud <00:04:11.905>formation <00:04:12.255>resource.

88
00:04:12.995 --> 00:04:15.655
<00:04:12.995>So <00:04:13.150>in <00:04:13.306>this <00:04:13.461>case, <00:04:13.617>it's <00:04:13.772>a <00:04:13.928>bucket <00:04:14.083>under <00:04:14.239>three <00:04:14.395>buckets.

89
00:04:16.115 --> 00:04:18.055
<00:04:16.115>Um, <00:04:16.465>this <00:04:16.815>is <00:04:17.165>already <00:04:17.515>nice

90
00:04:18.055 --> 00:04:20.455
<00:04:18.055>because <00:04:18.195>you <00:04:18.334>can <00:04:18.475>do <00:04:18.615>this <00:04:18.755>in <00:04:18.894>code, <00:04:19.035>you <00:04:19.175>get <00:04:19.315>code <00:04:19.454>completion,

91
00:04:20.755 --> 00:04:21.935
<00:04:20.755>but <00:04:20.967>it's <00:04:21.179>not <00:04:21.392>a <00:04:21.604>game <00:04:21.817>changer.

92
00:04:22.275 --> 00:04:24.975
<00:04:22.275>Things <00:04:22.474>become <00:04:22.674>much <00:04:22.875>more <00:04:23.075>interesting <00:04:23.275>if <00:04:23.474>you <00:04:23.674>leverage

93
00:04:25.285 --> 00:04:28.215
<00:04:25.285>what <00:04:25.425>you <00:04:25.565>can <00:04:25.705>now <00:04:25.845>do <00:04:25.985>by <00:04:26.125>having <00:04:26.265>a <00:04:26.405>program <00:04:26.545>language <00:04:26.685>by

94
00:04:28.765 --> 00:04:31.375
<00:04:28.765>combining <00:04:29.044>those <00:04:29.325>objects <00:04:29.604>that <00:04:29.885>you <00:04:30.164>have

95
00:04:31.395 --> 00:04:32.935
<00:04:31.395>to <00:04:31.857>higher <00:04:32.319>level <00:04:32.781>constructs.

96
00:04:33.115 --> 00:04:36.535
<00:04:33.115>So <00:04:33.255>a <00:04:33.395>level <00:04:33.535>two <00:04:33.675>construct <00:04:33.815>for <00:04:33.955>instance, <00:04:34.095>that <00:04:34.235>is <00:04:34.375>still <00:04:34.515>tied

97
00:04:36.555 --> 00:04:39.495
<00:04:36.555>to <00:04:36.682>a <00:04:36.809>service, <00:04:36.936>but <00:04:37.064>it <00:04:37.191>allows <00:04:37.318>you <00:04:37.445>to <00:04:37.573>build <00:04:37.700>much <00:04:37.827>more <00:04:37.955>complex,

98
00:04:40.675 --> 00:04:42.095
<00:04:40.675>um, <00:04:41.953>scenarios.

99
00:04:42.555 --> 00:04:44.775
<00:04:42.555>So <00:04:42.710>where <00:04:42.866>you <00:04:43.021>can <00:04:43.177>then <00:04:43.332>with <00:04:43.488>one <00:04:43.643>line <00:04:43.799>of <00:04:43.955>code,

100
00:04:44.845 --> 00:04:46.895
<00:04:44.845>spin <00:04:45.078>up <00:04:45.311>an <00:04:45.545>entire <00:04:45.778>virtual <00:04:46.011>private <00:04:46.245>network

101
00:04:46.965 --> 00:04:49.375
<00:04:46.965>with <00:04:47.120>all <00:04:47.276>the <00:04:47.431>firewall <00:04:47.587>rules <00:04:47.742>and <00:04:47.898>so <00:04:48.053>on <00:04:48.209>in <00:04:48.365>it.

102
00:04:49.955 --> 00:04:53.735
<00:04:49.955>And <00:04:50.155>through <00:04:50.354>the <00:04:50.555>power <00:04:50.755>of <00:04:50.955>the, <00:04:51.155>of <00:04:51.354>TypeScript

103
00:04:53.735 --> 00:04:56.215
<00:04:53.735>of <00:04:53.910>the <00:04:54.085>object <00:04:54.260>orientation, <00:04:54.435>we <00:04:54.610>can <00:04:54.785>have <00:04:54.960>default <00:04:55.135>values,

104
00:04:56.325 --> 00:04:58.895
<00:04:56.325>same <00:04:56.525>default <00:04:56.724>values <00:04:56.925>that <00:04:57.125>we <00:04:57.325>can <00:04:57.525>just <00:04:57.724>apply

105
00:04:58.915 --> 00:05:00.735
<00:04:58.915>and <00:04:59.148>can <00:04:59.381>can <00:04:59.615>then <00:04:59.848>turn <00:05:00.081>one <00:05:00.315>line

106
00:05:00.735 --> 00:05:03.215
<00:05:00.735>of <00:05:01.015>code <00:05:01.295>into <00:05:01.575>this <00:05:01.855>complex <00:05:02.135>architecture.

107
00:05:03.355 --> 00:05:04.495
<00:05:03.355>And <00:05:03.560>we <00:05:03.765>can <00:05:03.970>go <00:05:04.175>even <00:05:04.381>further.

108
00:05:05.035 --> 00:05:06.535
<00:05:05.035>So <00:05:05.305>with <00:05:05.575>there <00:05:05.845>were <00:05:06.115>two <00:05:06.385>constructs,

109
00:05:06.535 --> 00:05:09.335
<00:05:06.535>which <00:05:06.768>still <00:05:07.001>were <00:05:07.235>tied <00:05:07.468>within <00:05:07.701>one <00:05:07.935>service,

110
00:05:09.375 --> 00:05:12.175
<00:05:09.375>well <00:05:09.530>within <00:05:09.686>one <00:05:09.841>service, <00:05:09.997>but <00:05:10.152>we <00:05:10.308>can <00:05:10.463>also <00:05:10.619>build <00:05:10.775>constructs

111
00:05:12.525 --> 00:05:14.575
<00:05:12.525>that <00:05:12.875>span <00:05:13.224>across <00:05:13.575>multiple <00:05:13.924>services.

112
00:05:14.795 --> 00:05:17.855
<00:05:14.795>So <00:05:15.028>this <00:05:15.261>construct <00:05:15.495>is <00:05:15.728>level <00:05:15.961>three <00:05:16.195>construct.

113
00:05:18.115 --> 00:05:20.815
<00:05:18.115>It <00:05:18.315>deploys <00:05:18.515>a <00:05:18.715>container <00:05:18.915>in <00:05:19.115>a <00:05:19.315>fargate <00:05:19.515>cluster.

114
00:05:20.925 --> 00:05:23.615
<00:05:20.925>Fargate <00:05:21.158>is <00:05:21.391>our <00:05:21.625>own <00:05:21.858>container <00:05:22.091>runtime <00:05:22.325>essentially.

115
00:05:24.195 --> 00:05:25.895
<00:05:24.195>And <00:05:24.370>it <00:05:24.545>does <00:05:24.719>all <00:05:24.895>the <00:05:25.070>things <00:05:25.245>required <00:05:25.420>to <00:05:25.594>do.

116
00:05:26.075 --> 00:05:29.055
<00:05:26.075>And <00:05:26.250>by <00:05:26.425>doing <00:05:26.599>so, <00:05:26.775>it <00:05:26.950>turns <00:05:27.125>these <00:05:27.300>six <00:05:27.474>lines

117
00:05:29.055 --> 00:05:31.975
<00:05:29.055>of <00:05:29.255>TypeScript <00:05:29.455>code <00:05:29.655>into <00:05:29.855>a <00:05:30.055>cloud <00:05:30.255>formation <00:05:30.455>template

118
00:05:31.975 --> 00:05:34.175
<00:05:31.975>that <00:05:32.175>is <00:05:32.375>over <00:05:32.575>800 <00:05:32.775>lines <00:05:32.975>of <00:05:33.175>codes <00:05:33.375>long.

119
00:05:34.755 --> 00:05:37.575
<00:05:34.755>So <00:05:35.034>it's <00:05:35.315>a <00:05:35.594>factor <00:05:35.875>of <00:05:36.155>like

120
00:05:38.765 --> 00:05:40.335
<00:05:38.765>over <00:05:39.115>a <00:05:39.465>hundred, <00:05:39.815>that's <00:05:40.164>code.

121
00:05:40.335 --> 00:05:41.975
<00:05:40.335>You <00:05:40.510>just <00:05:40.685>don't <00:05:40.859>have <00:05:41.034>to <00:05:41.210>write <00:05:41.385>and <00:05:41.560>to <00:05:41.734>maintain,

122
00:05:42.915 --> 00:05:44.615
<00:05:42.915>and <00:05:43.265>this <00:05:43.615>is <00:05:43.965>really <00:05:44.315>powerful

123
00:05:44.875 --> 00:05:47.415
<00:05:44.875>and <00:05:45.108>we <00:05:45.341>first <00:05:45.575>use <00:05:45.808>this <00:05:46.041>only <00:05:46.275>internally.

124
00:05:47.515 --> 00:05:50.215
<00:05:47.515>So <00:05:47.690>this <00:05:47.865>was <00:05:48.039>an <00:05:48.215>internal <00:05:48.390>project <00:05:48.565>by <00:05:48.740>Amazon <00:05:48.914>developers

125
00:05:50.595 --> 00:05:53.175
<00:05:50.595>to <00:05:50.795>ease <00:05:50.995>the <00:05:51.195>pain <00:05:51.395>of <00:05:51.595>writing <00:05:51.795>those <00:05:51.995>templates.

126
00:05:53.595 --> 00:05:55.935
<00:05:53.595>But <00:05:53.828>at <00:05:54.061>some <00:05:54.295>point <00:05:54.528>we <00:05:54.761>realized, <00:05:54.995>okay,

127
00:05:55.935 --> 00:05:57.530
<00:05:55.935>this <00:05:56.168>is <00:05:56.401>useful <00:05:56.635>for <00:05:56.868>many <00:05:57.101>more <00:05:57.335>people.

128
00:05:57.585 --> 00:06:00.325
<00:05:57.585>So <00:05:57.760>we <00:05:57.935>open <00:05:58.109>sourced <00:05:58.284>this <00:05:58.460>thing <00:05:58.635>in <00:05:58.810>August, <00:05:58.984>2018,

129
00:06:00.545 --> 00:06:01.565
<00:06:00.545>so <00:06:00.851>develop <00:06:01.157>a <00:06:01.463>preview

130
00:06:02.385 --> 00:06:05.725
<00:06:02.385>and <00:06:02.585>our, <00:06:02.784>like <00:06:02.985>the <00:06:03.185>AWS <00:06:03.385>customers <00:06:03.585>loved <00:06:03.784>it.

131
00:06:05.785 --> 00:06:07.685
<00:06:05.785>The <00:06:06.135>adoption <00:06:06.485>was <00:06:06.835>really <00:06:07.185>strong.

132
00:06:07.685 --> 00:06:09.885
<00:06:07.685>There <00:06:07.860>were <00:06:08.035>some <00:06:08.210>rough <00:06:08.385>edges <00:06:08.560>which <00:06:08.735>we <00:06:08.910>ironed <00:06:09.085>out

133
00:06:10.465 --> 00:06:13.685
<00:06:10.465>and <00:06:10.664>put <00:06:10.864>it <00:06:11.065>into <00:06:11.265>GA <00:06:11.465>in <00:06:11.664>July, <00:06:11.864>2019.

134
00:06:14.145 --> 00:06:15.725
<00:06:14.145>We <00:06:14.611>supported <00:06:15.078>just <00:06:15.544>TypeScript

135
00:06:15.785 --> 00:06:19.045
<00:06:15.785>and <00:06:15.985>JavaScript, <00:06:16.185>which <00:06:16.385>TypeScript <00:06:16.585>transpires <00:06:16.785>to <00:06:16.985>and <00:06:17.185>Python.

136
00:06:19.625 --> 00:06:21.485
<00:06:19.625>And <00:06:19.975>that <00:06:20.325>PO <00:06:20.675>a <00:06:21.025>challenge

137
00:06:21.485 --> 00:06:24.165
<00:06:21.485>because <00:06:21.640>we <00:06:21.796>wanted <00:06:21.951>to <00:06:22.107>meet <00:06:22.262>our <00:06:22.418>customers <00:06:22.573>where <00:06:22.729>they <00:06:22.885>are.

138
00:06:24.165 --> 00:06:25.525
<00:06:24.165>And <00:06:24.409>not <00:06:24.654>everyone <00:06:24.899>is <00:06:25.144>doing <00:06:25.389>Python

139
00:06:25.705 --> 00:06:28.805
<00:06:25.705>or <00:06:26.055>TypeScript <00:06:26.405>And <00:06:26.755>customers <00:06:27.104>were

140
00:06:28.805 --> 00:06:30.045
<00:06:28.805>requesting, <00:06:29.084>okay, <00:06:29.363>two <00:06:29.642>more <00:06:29.921>languages.

141
00:06:30.045 --> 00:06:32.005
<00:06:30.045>We <00:06:30.220>are <00:06:30.395>using <00:06:30.570>Java, <00:06:30.745>we <00:06:30.920>want <00:06:31.095>to <00:06:31.270>do <00:06:31.445>Java.

142
00:06:32.105 --> 00:06:33.925
<00:06:32.105>So <00:06:32.338>we <00:06:32.571>added <00:06:32.805>Java <00:06:33.038>within <00:06:33.271>two <00:06:33.505>months.

143
00:06:34.235 --> 00:06:37.085
<00:06:34.235>Then <00:06:34.410>we <00:06:34.585>added <00:06:34.760>support <00:06:34.935>for <00:06:35.110>CA <00:06:35.285>few <00:06:35.460>months <00:06:35.635>later

144
00:06:37.625 --> 00:06:39.565
<00:06:37.625>and <00:06:37.858>the <00:06:38.091>latest <00:06:38.325>edition <00:06:38.558>that <00:06:38.791>is <00:06:39.025>go,

145
00:06:39.565 --> 00:06:42.125
<00:06:39.565>which <00:06:39.844>we <00:06:40.125>added <00:06:40.405>in <00:06:40.685>March, <00:06:40.965>2022.

146
00:06:42.865 --> 00:06:46.805
<00:06:42.865>And <00:06:43.020>the <00:06:43.176>cool <00:06:43.331>thing <00:06:43.487>is <00:06:43.642>these <00:06:43.798>are <00:06:43.953>not <00:06:44.109>separate <00:06:44.265>libraries.

147
00:06:46.805 --> 00:06:48.805
<00:06:46.805>They <00:06:46.980>are <00:06:47.155>all <00:06:47.330>based <00:06:47.505>on <00:06:47.680>the <00:06:47.855>same <00:06:48.030>code <00:06:48.205>base.

148
00:06:49.065 --> 00:06:52.245
<00:06:49.065>So <00:06:49.220>whenever <00:06:49.376>release <00:06:49.531>a <00:06:49.687>new <00:06:49.842>version, <00:06:49.998>roughly <00:06:50.153>every <00:06:50.309>two <00:06:50.465>weeks

149
00:06:52.305 --> 00:06:55.365
<00:06:52.305>or <00:06:52.432>so <00:06:52.559>for <00:06:52.686>a <00:06:52.814>minor <00:06:52.941>version, <00:06:53.068>we <00:06:53.195>already <00:06:53.323>have <00:06:53.450>at <00:06:53.577>the <00:06:53.705>time

150
00:06:55.365 --> 00:06:57.285
<00:06:55.365>of <00:06:55.645>release, <00:06:55.925>we <00:06:56.205>have <00:06:56.485>feature <00:06:56.765>parity.

151
00:06:58.145 --> 00:07:00.685
<00:06:58.145>And <00:06:58.300>this <00:06:58.456>raises <00:06:58.611>the <00:06:58.767>question, <00:06:58.922>how <00:06:59.078>do <00:06:59.233>we <00:06:59.389>do <00:06:59.544>it?

152
00:07:00.905 --> 00:07:03.845
<00:07:00.905>Is <00:07:01.044>there <00:07:01.184>like <00:07:01.325>an <00:07:01.465>army <00:07:01.604>of <00:07:01.744>of <00:07:01.885>developers <00:07:02.025>that <00:07:02.164>does <00:07:02.304>this?

153
00:07:04.435 --> 00:07:06.605
<00:07:04.435>Obviously <00:07:04.715>not. <00:07:04.995>The <00:07:05.275>answer <00:07:05.555>is <00:07:05.835>tooling.

154
00:07:06.605 --> 00:07:08.045
<00:07:06.605>The <00:07:06.929>answer <00:07:07.253>is <00:07:07.577>with <00:07:07.901>frameworks

155
00:07:08.545 --> 00:07:12.685
<00:07:08.545>and <00:07:08.700>the <00:07:08.856>framework <00:07:09.011>we <00:07:09.167>have <00:07:09.322>that <00:07:09.478>is <00:07:09.633>JSII, <00:07:09.789>that <00:07:09.945>is

156
00:07:13.545 --> 00:07:16.445
<00:07:13.545>the <00:07:13.778>tool <00:07:14.011>chain <00:07:14.245>that <00:07:14.478>underpins <00:07:14.711>the <00:07:14.945>CDK

157
00:07:16.465 --> 00:07:19.725
<00:07:16.465>and <00:07:16.604>the <00:07:16.744>polyglot <00:07:16.885>development <00:07:17.025>that <00:07:17.164>we <00:07:17.304>do <00:07:17.445>with <00:07:17.585>for <00:07:17.724>the <00:07:17.864>CDK.

158
00:07:21.345 --> 00:07:26.285
<00:07:21.345>The <00:07:21.520>CDK <00:07:21.695>is <00:07:21.870>it <00:07:22.045>allows <00:07:22.220>code <00:07:22.395>in <00:07:22.570>any <00:07:22.745>language

159
00:07:26.285 --> 00:07:28.685
<00:07:26.285>to <00:07:26.565>naturally <00:07:26.845>interact <00:07:27.125>with <00:07:27.405>JavaScript <00:07:27.685>code

160
00:07:28.825 --> 00:07:31.005
<00:07:28.825>and <00:07:29.058>they <00:07:29.291>put <00:07:29.525>an <00:07:29.758>emphasis <00:07:29.991>on <00:07:30.224>Intacct

161
00:07:31.005 --> 00:07:33.645
<00:07:31.005>because <00:07:31.160>what <00:07:31.316>it <00:07:31.471>does <00:07:31.627>not, <00:07:31.782>it <00:07:31.938>does <00:07:32.093>not <00:07:32.249>transpire <00:07:32.405>code,

162
00:07:33.645 --> 00:07:35.205
<00:07:33.645>it <00:07:33.924>does <00:07:34.205>not <00:07:34.484>take <00:07:34.765>JavaScript <00:07:35.044>code

163
00:07:35.425 --> 00:07:37.565
<00:07:35.425>and <00:07:35.600>converts <00:07:35.775>it <00:07:35.950>to <00:07:36.125>Java <00:07:36.300>code <00:07:36.475>or <00:07:36.650>Python <00:07:36.825>code,

164
00:07:37.745 --> 00:07:41.125
<00:07:37.745>but <00:07:37.920>it <00:07:38.095>allows <00:07:38.270>Java <00:07:38.445>code, <00:07:38.620>Python <00:07:38.795>code <00:07:38.970>to <00:07:39.145>interact

165
00:07:41.125 --> 00:07:42.845
<00:07:41.125>with <00:07:41.358>the <00:07:41.591>JavaScript <00:07:41.825>code <00:07:42.058>that <00:07:42.291>you <00:07:42.525>wrote.

166
00:07:43.785 --> 00:07:46.605
<00:07:43.784>So <00:07:43.924>on <00:07:44.064>a <00:07:44.205>high <00:07:44.344>abstract <00:07:44.484>level, <00:07:44.624>this <00:07:44.765>is <00:07:44.905>how <00:07:45.044>it <00:07:45.184>works.

167
00:07:47.065 --> 00:07:49.685
<00:07:47.065>You <00:07:47.205>start <00:07:47.344>with <00:07:47.485>your <00:07:47.625>code <00:07:47.765>base <00:07:47.905>that <00:07:48.045>is <00:07:48.185>written <00:07:48.325>in <00:07:48.465>TypeScript

168
00:07:50.225 --> 00:07:53.405
<00:07:50.225>and <00:07:50.341>then <00:07:50.458>you <00:07:50.575>have <00:07:50.691>the <00:07:50.808>JSII <00:07:50.925>tooling, <00:07:51.041>uh, <00:07:51.158>which <00:07:51.275>is <00:07:51.391>at <00:07:51.508>the <00:07:51.625>end

169
00:07:53.405 --> 00:07:55.405
<00:07:53.405>of <00:07:53.604>the <00:07:53.804>day <00:07:54.005>a <00:07:54.205>TypeScript <00:07:54.405>compiler <00:07:54.604>which <00:07:54.804>turns

170
00:07:55.405 --> 00:07:56.885
<00:07:55.405>TypeScript <00:07:56.070>into <00:07:56.736>JavaScript.

171
00:07:56.885 --> 00:07:57.925
<00:07:56.885>That <00:07:57.197>is <00:07:57.509>not <00:07:57.821>spectacular.

172
00:07:58.465 --> 00:08:00.685
<00:07:58.465>But <00:07:58.640>then <00:07:58.815>there's <00:07:58.990>the <00:07:59.165>JSII <00:07:59.340>tool <00:07:59.515>chain <00:07:59.690>which <00:07:59.865>start,

173
00:08:00.685 --> 00:08:02.165
<00:08:00.685>which <00:08:00.907>does <00:08:01.129>the <00:08:01.351>magic <00:08:01.573>under <00:08:01.795>the <00:08:02.017>covers

174
00:08:02.225 --> 00:08:06.925
<00:08:02.225>and <00:08:02.380>creates, <00:08:02.536>so-called <00:08:02.691>bindings <00:08:02.847>in <00:08:03.002>Java <00:08:03.158>pipe <00:08:03.313>and <00:08:03.469>C <00:08:03.625>go.

175
00:08:07.075 --> 00:08:10.805
<00:08:07.075>That <00:08:07.230>allows <00:08:07.386>us <00:08:07.541>now <00:08:07.697>to <00:08:07.852>run <00:08:08.008>Java <00:08:08.163>code <00:08:08.319>for <00:08:08.474>instance

176
00:08:10.805 --> 00:08:13.205
<00:08:10.805>and <00:08:11.038>interact <00:08:11.271>with <00:08:11.505>the <00:08:11.738>JavaScript <00:08:11.971>classes <00:08:12.205>generated.

177
00:08:14.385 --> 00:08:17.685
<00:08:14.385>So <00:08:14.540>the <00:08:14.696>tool <00:08:14.851>chain <00:08:15.007>consists <00:08:15.162>of <00:08:15.318>a <00:08:15.473>number <00:08:15.629>of <00:08:15.784>tools.

178
00:08:17.825 --> 00:08:20.125
<00:08:17.825>One <00:08:18.025>is <00:08:18.224>for <00:08:18.425>configuration <00:08:18.625>that's <00:08:18.825>not <00:08:19.025>super <00:08:19.224>spectacular.

179
00:08:20.665 --> 00:08:23.085
<00:08:20.665>The <00:08:20.840>interesting <00:08:21.015>bit <00:08:21.190>is <00:08:21.365>when <00:08:21.540>it <00:08:21.715>comes <00:08:21.890>to <00:08:22.065>code,

180
00:08:23.625 --> 00:08:25.965
<00:08:23.625>and <00:08:23.905>that <00:08:24.185>is <00:08:24.465>the <00:08:24.745>JSII <00:08:25.025>compiler,

181
00:08:26.015 --> 00:08:29.405
<00:08:26.015>which <00:08:26.170>looks <00:08:26.326>at <00:08:26.481>the <00:08:26.637>TypeScript <00:08:26.792>code <00:08:26.948>and <00:08:27.103>understands <00:08:27.259>the <00:08:27.414>types

182
00:08:29.625 --> 00:08:33.165
<00:08:29.625>and <00:08:29.765>how <00:08:29.905>this <00:08:30.045>works <00:08:30.185>and <00:08:30.325>creates <00:08:30.465>a <00:08:30.605>So-called <00:08:30.745>JSII <00:08:30.885>file <00:08:31.025>meta

183
00:08:33.165 --> 00:08:34.925
<00:08:33.164>file <00:08:33.444>where <00:08:33.724>it <00:08:34.005>stores <00:08:34.284>this <00:08:34.564>data.

184
00:08:35.355 --> 00:08:37.125
<00:08:35.355>Then <00:08:35.635>there <00:08:35.914>are <00:08:36.195>tools <00:08:36.475>for <00:08:36.755>documentation.

185
00:08:37.305 --> 00:08:40.165
<00:08:37.304>So <00:08:37.444>if <00:08:37.584>you <00:08:37.724>want <00:08:37.864>to <00:08:38.005>publish <00:08:38.145>your <00:08:38.284>framework <00:08:38.424>SDK <00:08:38.564>in <00:08:38.704>another

186
00:08:40.445 --> 00:08:43.685
<00:08:40.445>language, <00:08:40.600>um, <00:08:40.756>you <00:08:40.911>want <00:08:41.067>to <00:08:41.222>also <00:08:41.378>transpire <00:08:41.533>the <00:08:41.689>sample <00:08:41.845>code.

187
00:08:44.265 --> 00:08:46.885
<00:08:44.265>And <00:08:44.545>then <00:08:44.824>most <00:08:45.105>importantly, <00:08:45.385>you <00:08:45.665>want

188
00:08:46.885 --> 00:08:48.005
<00:08:46.885>to <00:08:47.221>publish <00:08:47.557>this <00:08:47.893>somewhere.

189
00:08:48.385 --> 00:08:52.285
<00:08:48.385>You <00:08:48.540>only <00:08:48.696>really <00:08:48.851>generate <00:08:49.007>value <00:08:49.162>if <00:08:49.318>your <00:08:49.473>end <00:08:49.629>users <00:08:49.785>can

190
00:08:52.285 --> 00:08:53.325
<00:08:52.285>use <00:08:52.753>those <00:08:53.221>packages.

191
00:08:53.505 --> 00:08:55.405
<00:08:53.505>So <00:08:53.705>there <00:08:53.905>are <00:08:54.105>tools <00:08:54.305>to <00:08:54.505>pack, <00:08:54.705>to <00:08:54.905>publish

192
00:08:55.505 --> 00:08:56.965
<00:08:55.505>to <00:08:55.767>package <00:08:56.030>this <00:08:56.293>and <00:08:56.556>publish <00:08:56.819>this.

193
00:08:58.105 --> 00:09:02.325
<00:08:58.105>And <00:08:58.245>if <00:08:58.385>we <00:08:58.525>look <00:08:58.665>into <00:08:58.805>the <00:08:58.945>development <00:08:59.085>workflow, <00:08:59.225>well, <00:08:59.365>we <00:08:59.505>start

194
00:09:02.325 --> 00:09:04.045
<00:09:02.325>with <00:09:02.525>the <00:09:02.725>code <00:09:02.925>base, <00:09:03.125>we <00:09:03.325>write <00:09:03.525>source <00:09:03.725>code

195
00:09:04.505 --> 00:09:07.605
<00:09:04.505>and <00:09:04.738>nothing, <00:09:04.971>nothing <00:09:05.205>special <00:09:05.438>about <00:09:05.671>that <00:09:05.905>yet.

196
00:09:08.065 --> 00:09:11.645
<00:09:08.065>But <00:09:08.172>then <00:09:08.280>we <00:09:08.388>add <00:09:08.495>the <00:09:08.603>JSII <00:09:08.711>magic <00:09:08.818>and <00:09:08.926>we <00:09:09.034>do <00:09:09.141>that <00:09:09.249>via <00:09:09.357>JSI <00:09:09.465>file

197
00:09:11.645 --> 00:09:14.125
<00:09:11.645>or <00:09:11.878>JSI <00:09:12.111>configuration <00:09:12.345>in <00:09:12.578>the <00:09:12.811>package <00:09:13.045>Jason,

198
00:09:14.375 --> 00:09:15.725
<00:09:14.375>we're <00:09:14.548>going <00:09:14.722>to <00:09:14.895>see <00:09:15.069>that <00:09:15.242>in <00:09:15.416>a <00:09:15.590>bit.

199
00:09:16.395 --> 00:09:19.325
<00:09:16.395>Then <00:09:16.595>we <00:09:16.795>generate <00:09:16.995>the <00:09:17.194>code, <00:09:17.395>the <00:09:17.595>code <00:09:17.795>bindings,

200
00:09:20.345 --> 00:09:24.165
<00:09:20.345>we <00:09:20.578>publish <00:09:20.811>them <00:09:21.045>to <00:09:21.278>respective <00:09:21.511>package <00:09:21.745>managers

201
00:09:24.265 --> 00:09:27.605
<00:09:24.265>and <00:09:24.405>then <00:09:24.545>we <00:09:24.685>can <00:09:24.824>just <00:09:24.965>use <00:09:25.105>them <00:09:25.245>in <00:09:25.385>those <00:09:25.525>package <00:09:25.665>managers.

202
00:09:29.395 --> 00:09:30.425
<00:09:29.395>Let's <00:09:29.626>look <00:09:29.858>at <00:09:30.090>an <00:09:30.322>example.

203
00:09:30.685 --> 00:09:34.105
<00:09:30.685>So <00:09:30.824>what <00:09:30.964>I <00:09:31.104>build <00:09:31.244>is <00:09:31.385>the <00:09:31.525>we <00:09:31.665>are <00:09:31.805>developers <00:09:31.944>program <00:09:32.084>guide.

204
00:09:34.615 --> 00:09:37.705
<00:09:34.615>That <00:09:34.848>is <00:09:35.081>a <00:09:35.315>very <00:09:35.548>simple <00:09:35.781>TypeScript <00:09:36.015>program.

205
00:09:38.325 --> 00:09:39.785
<00:09:38.325>It <00:09:38.544>doesn't <00:09:38.763>do <00:09:38.982>much. <00:09:39.201>There's <00:09:39.420>no <00:09:39.639>magic.

206
00:09:39.965 --> 00:09:42.185
<00:09:39.965>So <00:09:40.315>it's <00:09:40.665>just <00:09:41.015>TypeScript <00:09:41.365>code.

207
00:09:42.185 --> 00:09:45.105
<00:09:42.185>It <00:09:42.359>turns <00:09:42.535>transpires <00:09:42.709>to <00:09:42.885>pi, <00:09:43.060>uh, <00:09:43.234>to <00:09:43.410>JavaScript <00:09:43.584>code.

208
00:09:45.365 --> 00:09:46.505
<00:09:45.365>It <00:09:45.621>runs <00:09:45.878>on <00:09:46.134>no <00:09:46.391>gs.

209
00:09:46.965 --> 00:09:49.465
<00:09:46.965>Uh, <00:09:47.120>we <00:09:47.276>can <00:09:47.431>use <00:09:47.587>third <00:09:47.742>party <00:09:47.898>libraries <00:09:48.053>at <00:09:48.209>moment <00:09:48.365>gs.

210
00:09:50.205 --> 00:09:52.785
<00:09:50.205>Uh, <00:09:50.555>when <00:09:50.905>the <00:09:51.255>code <00:09:51.605>initializes,

211
00:09:52.805 --> 00:09:55.225
<00:09:52.805>it <00:09:52.979>loads <00:09:53.155>adjacent <00:09:53.329>file <00:09:53.505>from <00:09:53.680>the, <00:09:53.854>from <00:09:54.030>the <00:09:54.204>disc

212
00:09:55.255 --> 00:09:57.705
<00:09:55.255>that <00:09:55.430>contains <00:09:55.605>a <00:09:55.780>few <00:09:55.955>samples <00:09:56.130>of <00:09:56.305>this <00:09:56.480>very <00:09:56.655>conference

213
00:09:57.845 --> 00:09:59.105
<00:09:57.845>and <00:09:58.034>then <00:09:58.223>it <00:09:58.412>is <00:09:58.601>kept <00:09:58.790>in <00:09:58.979>memory.

214
00:09:59.725 --> 00:10:00.865
<00:09:59.725>Uh, <00:09:59.981>we <00:10:00.238>have <00:10:00.494>type <00:10:00.751>safety

215
00:10:00.865 --> 00:10:02.985
<00:10:00.865>through <00:10:01.215>typescripts, <00:10:01.565>the <00:10:01.915>type <00:10:02.265>system.

216
00:10:04.205 --> 00:10:07.545
<00:10:04.205>Uh, <00:10:04.345>and <00:10:04.485>then <00:10:04.625>the <00:10:04.765>instance <00:10:04.905>of <00:10:05.045>the <00:10:05.185>program <00:10:05.325>guide <00:10:05.465>allows <00:10:05.605>you

217
00:10:07.545 --> 00:10:10.305
<00:10:07.545>to <00:10:07.778>search <00:10:08.011>this <00:10:08.245>catalog <00:10:08.478>to <00:10:08.711>discover <00:10:08.944>sessions,

218
00:10:10.305 --> 00:10:11.945
<00:10:10.305>get <00:10:10.655>recommendations <00:10:11.005>and <00:10:11.354>so <00:10:11.704>on.

219
00:10:12.645 --> 00:10:15.945
<00:10:12.645>Um, <00:10:12.772>since <00:10:12.899>this <00:10:13.026>is <00:10:13.154>just <00:10:13.281>TypeScript <00:10:13.408>code, <00:10:13.535>we <00:10:13.663>can <00:10:13.790>also <00:10:13.917>test <00:10:14.045>it.

220
00:10:15.945 --> 00:10:18.585
<00:10:15.945>We <00:10:16.100>can <00:10:16.256>run <00:10:16.411>unit <00:10:16.567>tests <00:10:16.722>to <00:10:16.878>test <00:10:17.033>for <00:10:17.189>functional <00:10:17.345>correctness.

221
00:10:19.485 --> 00:10:23.465
<00:10:19.485>And <00:10:19.625>as <00:10:19.765>you <00:10:19.905>see, <00:10:20.045>there <00:10:20.185>is <00:10:20.325>nothing <00:10:20.465>special <00:10:20.605>about <00:10:20.745>this <00:10:20.885>yet.

222
00:10:23.465 --> 00:10:24.665
<00:10:23.465>This <00:10:23.681>is <00:10:23.897>just <00:10:24.113>the <00:10:24.329>TypeScript <00:10:24.545>program.

223
00:10:25.485 --> 00:10:29.335
<00:10:25.485>But <00:10:25.640>what <00:10:25.796>we <00:10:25.951>can <00:10:26.107>do <00:10:26.262>is <00:10:26.418>we <00:10:26.573>can <00:10:26.729>now <00:10:26.885>sort

224
00:10:29.335 --> 00:10:30.695
<00:10:29.335>of <00:10:29.641>add <00:10:29.947>the <00:10:30.253>JSI <00:10:30.559>magic

225
00:10:30.875 --> 00:10:34.215
<00:10:30.875>and <00:10:31.015>we <00:10:31.155>do <00:10:31.295>that <00:10:31.435>via <00:10:31.575>the <00:10:31.715>configuration <00:10:31.855>in <00:10:31.995>the <00:10:32.135>package <00:10:32.275>Jasons,

226
00:10:34.525 --> 00:10:36.775
<00:10:34.525>that <00:10:34.725>again <00:10:34.925>is <00:10:35.125>just <00:10:35.324>a <00:10:35.525>regular <00:10:35.725>MPM <00:10:35.925>package.

227
00:10:36.875 --> 00:10:39.055
<00:10:36.875>Jasons <00:10:37.155>that <00:10:37.435>has <00:10:37.715>some <00:10:37.995>meta <00:10:38.275>information.

228
00:10:39.275 --> 00:10:41.895
<00:10:39.275>We <00:10:39.449>need <00:10:39.625>to <00:10:39.800>add <00:10:39.975>some <00:10:40.150>author <00:10:40.324>information <00:10:40.500>for <00:10:40.675>some

229
00:10:41.895 --> 00:10:44.615
<00:10:41.895>of <00:10:42.035>the <00:10:42.175>package <00:10:42.314>managers, <00:10:42.454>Python <00:10:42.595>I <00:10:42.735>think, <00:10:42.875>and <00:10:43.015>a <00:10:43.155>few <00:10:43.295>others.

230
00:10:45.445 --> 00:10:46.495
<00:10:45.445>Then <00:10:45.760>there <00:10:46.075>are <00:10:46.390>scripts

231
00:10:46.695 --> 00:10:49.415
<00:10:46.695>and <00:10:46.850>tooling, <00:10:47.006>so <00:10:47.161>just <00:10:47.317>NPM <00:10:47.472>scripts <00:10:47.628>that <00:10:47.783>you <00:10:47.939>can <00:10:48.095>run.

232
00:10:51.835 --> 00:10:53.815
<00:10:51.835>And <00:10:52.010>then <00:10:52.185>we <00:10:52.360>need <00:10:52.535>to <00:10:52.710>define <00:10:52.885>the <00:10:53.060>entry <00:10:53.235>point.

233
00:10:53.875 --> 00:10:54.895
<00:10:53.875>So <00:10:54.181>whenever <00:10:54.487>the <00:10:54.793>code

234
00:10:54.895 --> 00:10:57.495
<00:10:54.895>that <00:10:55.069>we <00:10:55.245>generated <00:10:55.420>the <00:10:55.595>JavaScript <00:10:55.770>code <00:10:55.944>is <00:10:56.120>uh, <00:10:56.295>generated,

235
00:10:58.155 --> 00:11:00.775
<00:10:58.155>it <00:10:58.355>needs <00:10:58.555>to <00:10:58.755>like <00:10:58.954>enter <00:10:59.155>the <00:10:59.355>execution <00:10:59.555>somewhere.

236
00:11:00.775 --> 00:11:03.455
<00:11:00.775>That's <00:11:00.930>where <00:11:01.086>what <00:11:01.241>we <00:11:01.397>define <00:11:01.552>here <00:11:01.708>together <00:11:01.863>with <00:11:02.019>a <00:11:02.175>file

237
00:11:03.455 --> 00:11:06.375
<00:11:03.455>where <00:11:03.595>we <00:11:03.735>store <00:11:03.875>the <00:11:04.015>types <00:11:04.155>that <00:11:04.295>we <00:11:04.435>identified <00:11:04.575>in <00:11:04.715>our <00:11:04.855>code,

238
00:11:07.855 --> 00:11:09.835
<00:11:07.855>we <00:11:08.135>can <00:11:08.415>make <00:11:08.695>external <00:11:08.975>packages <00:11:09.255>available,

239
00:11:10.215 --> 00:11:12.195
<00:11:10.215>or <00:11:10.415>in <00:11:10.615>this <00:11:10.815>case <00:11:11.015>moment <00:11:11.215>JS <00:11:11.415>for <00:11:11.615>time

240
00:11:12.195 --> 00:11:13.595
<00:11:12.195>and <00:11:12.615>date <00:11:13.035>based <00:11:13.455>manipulation.

241
00:11:14.735 --> 00:11:18.635
<00:11:14.735>Um, <00:11:14.935>and <00:11:15.135>then <00:11:15.335>we <00:11:15.535>have <00:11:15.735>the <00:11:15.935>JSII <00:11:16.135>attribute

242
00:11:18.635 --> 00:11:21.715
<00:11:18.635>where <00:11:18.835>we <00:11:19.035>define <00:11:19.235>meta <00:11:19.435>information <00:11:19.635>for <00:11:19.835>the <00:11:20.035>packages

243
00:11:21.715 --> 00:11:23.515
<00:11:21.715>that <00:11:21.948>are <00:11:22.181>generated <00:11:22.415>in <00:11:22.648>the <00:11:22.881>target <00:11:23.115>languages.

244
00:11:23.515 --> 00:11:26.515
<00:11:23.515>So <00:11:23.670>this <00:11:23.826>is <00:11:23.981>really <00:11:24.137>just <00:11:24.292>meta <00:11:24.448>information <00:11:24.603>artifact <00:11:24.759>that <00:11:24.915>the,

245
00:11:27.015 --> 00:11:29.195
<00:11:27.015>and <00:11:27.155>a <00:11:27.295>few <00:11:27.435>other <00:11:27.574>things <00:11:27.715>that <00:11:27.855>you <00:11:27.995>need <00:11:28.135>to <00:11:28.275>bundle <00:11:28.415>this

246
00:11:29.195 --> 00:11:31.195
<00:11:29.195>and <00:11:29.428>publish <00:11:29.661>it <00:11:29.895>to, <00:11:30.128>to <00:11:30.361>package <00:11:30.595>managers.

247
00:11:32.815 --> 00:11:36.795
<00:11:32.815>Uh, <00:11:32.942>and <00:11:33.069>lastly, <00:11:33.196>we <00:11:33.324>can <00:11:33.451>use <00:11:33.578>dependencies <00:11:33.705>like <00:11:33.833>we <00:11:33.960>used <00:11:34.087>to <00:11:34.215>do.

248
00:11:36.895 --> 00:11:39.355
<00:11:36.895>We <00:11:37.069>import <00:11:37.245>moment <00:11:37.420>and <00:11:37.595>we <00:11:37.770>have <00:11:37.944>some <00:11:38.120>deaf <00:11:38.295>dependencies,

249
00:11:39.355 --> 00:11:40.995
<00:11:39.355>which <00:11:39.705>is <00:11:40.055>mostly <00:11:40.405>JSRI <00:11:40.755>tooling.

250
00:11:42.015 --> 00:11:43.955
<00:11:42.015>So <00:11:42.142>once <00:11:42.269>we <00:11:42.396>have <00:11:42.524>this, <00:11:42.651>this <00:11:42.778>is <00:11:42.905>all <00:11:43.033>we <00:11:43.160>need <00:11:43.287>to <00:11:43.415>do.

251
00:11:44.175 --> 00:11:46.235
<00:11:44.175>And <00:11:44.408>when <00:11:44.641>we <00:11:44.875>then <00:11:45.108>run <00:11:45.341>JSII <00:11:45.574>watch

252
00:11:46.695 --> 00:11:49.635
<00:11:46.695>or <00:11:46.811>just <00:11:46.928>JSII, <00:11:47.045>if <00:11:47.161>we <00:11:47.278>don't <00:11:47.395>want <00:11:47.511>to <00:11:47.628>have <00:11:47.745>to <00:11:47.861>watch <00:11:47.978>it, <00:11:48.095>um,

253
00:11:49.705 --> 00:11:53.525
<00:11:49.705>this <00:11:49.832>is <00:11:49.959>going <00:11:50.086>to <00:11:50.214>create <00:11:50.341>the, <00:11:50.468>so-called <00:11:50.595>JSII <00:11:50.723>file, <00:11:50.850>it's <00:11:50.977>JS <00:11:51.105>II

254
00:11:53.555 --> 00:11:56.205
<00:11:53.555>that <00:11:53.710>is <00:11:53.866>in <00:11:54.021>the <00:11:54.177>root, <00:11:54.332>uh, <00:11:54.488>folder <00:11:54.643>of <00:11:54.799>the <00:11:54.954>project.

255
00:11:56.425 --> 00:11:58.925
<00:11:56.425>And <00:11:56.552>that <00:11:56.679>is <00:11:56.806>a <00:11:56.934>very <00:11:57.061>long <00:11:57.188>file <00:11:57.315>even <00:11:57.443>for <00:11:57.570>this <00:11:57.697>simple <00:11:57.824>project.

256
00:11:59.035 --> 00:12:00.445
<00:11:59.035>It's <00:11:59.246>a <00:11:59.458>few <00:11:59.669>hundred <00:11:59.881>lines <00:12:00.092>of, <00:12:00.304>uh,

257
00:12:00.545 --> 00:12:02.245
<00:12:00.545>of <00:12:00.745>adjacent <00:12:00.944>at <00:12:01.145>the <00:12:01.344>end <00:12:01.545>of <00:12:01.745>the <00:12:01.944>day.

258
00:12:03.065 --> 00:12:07.125
<00:12:03.065>And <00:12:03.240>this <00:12:03.415>is <00:12:03.590>a <00:12:03.765>metadata <00:12:03.940>file <00:12:04.115>that <00:12:04.290>describes <00:12:04.465>the,

259
00:12:07.265 --> 00:12:09.365
<00:12:07.265>the <00:12:07.545>interfaces <00:12:07.824>and <00:12:08.105>the <00:12:08.385>overall <00:12:08.665>structure

260
00:12:09.745 --> 00:12:11.125
<00:12:09.745>of <00:12:10.159>the <00:12:10.573>project <00:12:10.987>rewrote,

261
00:12:11.785 --> 00:12:14.845
<00:12:11.785>and <00:12:11.940>it <00:12:12.096>contains <00:12:12.251>all <00:12:12.407>the <00:12:12.562>informations <00:12:12.718>to <00:12:12.873>then <00:12:13.029>generate <00:12:13.185>the,

262
00:12:14.845 --> 00:12:17.485
<00:12:14.845>so-called <00:12:15.125>bindings <00:12:15.405>in <00:12:15.685>other <00:12:15.965>target <00:12:16.245>languages.

263
00:12:18.025 --> 00:12:21.245
<00:12:18.025>So <00:12:18.225>type <00:12:18.425>definitions, <00:12:18.625>annotations <00:12:18.824>that <00:12:19.025>might <00:12:19.225>be <00:12:19.425>required

264
00:12:21.245 --> 00:12:24.005
<00:12:21.245>and <00:12:21.445>many <00:12:21.645>more <00:12:21.845>things <00:12:22.045>that <00:12:22.245>it <00:12:22.445>just <00:12:22.645>express

265
00:12:24.185 --> 00:12:25.605
<00:12:24.185>how <00:12:24.504>this <00:12:24.824>interface <00:12:25.143>looks <00:12:25.463>like.

266
00:12:27.345 --> 00:12:29.965
<00:12:27.345>It <00:12:27.520>ensures <00:12:27.695>the, <00:12:27.870>the <00:12:28.045>type <00:12:28.220>safety <00:12:28.395>that <00:12:28.570>is <00:12:28.745>required.

267
00:12:30.665 --> 00:12:35.165
<00:12:30.665>And <00:12:30.781>this <00:12:30.898>is <00:12:31.015>the <00:12:31.131>magic <00:12:31.248>that <00:12:31.365>tells <00:12:31.481>the, <00:12:31.598>the <00:12:31.714>JSI <00:12:31.831>run <00:12:31.948>times <00:12:32.064>how

268
00:12:35.165 --> 00:12:36.285
<00:12:35.165>to <00:12:36.173>marshal

269
00:12:36.285 --> 00:12:39.245
<00:12:36.285>and <00:12:36.459>un <00:12:36.635>marshal <00:12:36.810>the <00:12:36.985>objects <00:12:37.160>that <00:12:37.334>are <00:12:37.510>exchanged, <00:12:37.685>exchanged

270
00:12:39.245 --> 00:12:40.725
<00:12:39.245>between <00:12:39.578>the <00:12:39.911>two <00:12:40.244>different <00:12:40.577>languages.

271
00:12:41.745 --> 00:12:43.165
<00:12:41.745>So <00:12:42.064>with <00:12:42.384>this <00:12:42.703>file <00:12:43.022>generated

272
00:12:43.185 --> 00:12:44.285
<00:12:43.185>and <00:12:43.515>the <00:12:43.844>JavaScript <00:12:44.175>code,

273
00:12:44.345 --> 00:12:46.365
<00:12:44.345>the <00:12:44.695>TypeScript <00:12:45.045>code <00:12:45.395>trans <00:12:45.745>JavaScript,

274
00:12:46.365 --> 00:12:50.045
<00:12:46.365>we <00:12:46.520>can <00:12:46.676>then <00:12:46.831>run <00:12:46.987>ppac <00:12:47.142>Mac <00:12:47.298>and <00:12:47.453>Ppac <00:12:47.609>Mac <00:12:47.765>packages.

275
00:12:50.045 --> 00:12:54.485
<00:12:50.045>It, <00:12:50.200>it <00:12:50.356>takes <00:12:50.511>the <00:12:50.667>metadata <00:12:50.822>file, <00:12:50.978>creates <00:12:51.133>packages <00:12:51.289>for <00:12:51.444>Python,

276
00:12:54.905 --> 00:12:59.125
<00:12:54.905>for <00:12:55.045>Java, <00:12:55.185>for <00:12:55.324>node <00:12:55.464>that <00:12:55.605>can, <00:12:55.745>you <00:12:55.885>can <00:12:56.025>now <00:12:56.165>then <00:12:56.305>publish

277
00:12:59.265 --> 00:13:01.205
<00:12:59.265>to <00:12:59.731>some, <00:13:00.198>um, <00:13:00.665>wherever,

278
00:13:01.205 --> 00:13:02.725
<00:13:01.205>store <00:13:01.478>your <00:13:01.752>artifacts <00:13:02.025>to <00:13:02.299>some <00:13:02.573>repository.

279
00:13:03.585 --> 00:13:06.625
<00:13:03.585>And <00:13:03.785>from <00:13:03.985>there <00:13:04.185>on <00:13:04.385>you <00:13:04.585>can <00:13:04.785>then <00:13:04.985>just

280
00:13:07.425 --> 00:13:08.465
<00:13:07.425>download <00:13:07.659>those <00:13:07.893>and <00:13:08.127>use <00:13:08.361>those.

281
00:13:08.645 --> 00:13:12.625
<00:13:08.645>So <00:13:08.819>we've <00:13:08.995>come <00:13:09.170>from <00:13:09.345>TypeScript <00:13:09.520>code <00:13:09.694>that <00:13:09.870>we've <00:13:10.045>written.

282
00:13:13.805 --> 00:13:17.625
<00:13:13.805>Um, <00:13:13.979>we <00:13:14.155>compile <00:13:14.329>this <00:13:14.505>transpi <00:13:14.680>this <00:13:14.854>to <00:13:15.030>JavaScript <00:13:15.204>code.

283
00:13:17.805 --> 00:13:20.585
<00:13:17.805>So <00:13:18.005>this <00:13:18.204>is <00:13:18.405>just <00:13:18.604>JavaScript <00:13:18.805>codes <00:13:19.005>like <00:13:19.204>uh,

284
00:13:20.585 --> 00:13:22.265
<00:13:20.585>that <00:13:20.818>runs <00:13:21.051>on, <00:13:21.285>uh, <00:13:21.518>on <00:13:21.751>no <00:13:21.985>jazz.

285
00:13:23.445 --> 00:13:26.905
<00:13:23.445>And <00:13:23.561>this <00:13:23.678>is <00:13:23.795>the <00:13:23.911>actual <00:13:24.028>code <00:13:24.145>that <00:13:24.261>is <00:13:24.378>going <00:13:24.495>to <00:13:24.611>be <00:13:24.728>ran <00:13:24.845>when

286
00:13:27.965 --> 00:13:31.705
<00:13:27.965>you <00:13:28.198>are, <00:13:28.431>when <00:13:28.665>you <00:13:28.898>call, <00:13:29.131>uh, <00:13:29.365>via

287
00:13:32.335 --> 00:13:34.865
<00:13:32.335>when <00:13:32.535>you <00:13:32.735>from <00:13:32.935>target <00:13:33.135>language, <00:13:33.335>use <00:13:33.535>those <00:13:33.735>bindings

288
00:13:34.925 --> 00:13:37.545
<00:13:34.925>to <00:13:35.204>call <00:13:35.484>the <00:13:35.765>the <00:13:36.045>actual <00:13:36.324>functionality.

289
00:13:40.105 --> 00:13:42.725
<00:13:40.105>And <00:13:40.280>from <00:13:40.455>there <00:13:40.630>we <00:13:40.805>can <00:13:40.980>go <00:13:41.155>to <00:13:41.330>Java <00:13:41.505>bindings.

290
00:13:42.825 --> 00:13:45.045
<00:13:42.825>So <00:13:43.105>for <00:13:43.385>Java, <00:13:43.665>we <00:13:43.945>require <00:13:44.225>the,

291
00:13:46.265 --> 00:13:47.925
<00:13:46.265>the <00:13:46.615>JDK <00:13:46.965>in <00:13:47.314>version <00:13:47.665>eight.

292
00:13:47.945 --> 00:13:51.325
<00:13:47.945>At <00:13:48.120>the <00:13:48.295>very <00:13:48.470>least <00:13:48.645>we <00:13:48.820>require <00:13:48.995>May <00:13:49.170>from <00:13:49.345>3.6.

293
00:13:52.025 --> 00:13:54.405
<00:13:52.025>And <00:13:52.258>the <00:13:52.491>nice <00:13:52.725>thing <00:13:52.958>about <00:13:53.191>Java <00:13:53.425>is

294
00:13:54.405 --> 00:13:56.925
<00:13:54.405>that <00:13:54.638>it's <00:13:54.871>strong <00:13:55.105>type <00:13:55.338>system <00:13:55.571>nicely <00:13:55.805>aligned

295
00:13:57.035 --> 00:13:59.165
<00:13:57.035>with <00:13:57.209>the <00:13:57.385>typing <00:13:57.560>we <00:13:57.735>require <00:13:57.910>for <00:13:58.084>this <00:13:58.260>to <00:13:58.435>work.

296
00:13:59.945 --> 00:14:02.325
<00:13:59.945>Uh, <00:14:00.145>it <00:14:00.345>also <00:14:00.545>has <00:14:00.745>the, <00:14:00.945>the <00:14:01.145>highest <00:14:01.345>coverage

297
00:14:02.585 --> 00:14:03.725
<00:14:02.585>for <00:14:02.927>the <00:14:03.269>compliance <00:14:03.611>suit.

298
00:14:03.785 --> 00:14:06.885
<00:14:03.785>So <00:14:03.940>the <00:14:04.096>compliance <00:14:04.251>suit <00:14:04.407>is <00:14:04.562>just <00:14:04.718>a <00:14:04.873>number <00:14:05.029>of <00:14:05.185>tests

299
00:14:07.035 --> 00:14:10.925
<00:14:07.035>that <00:14:07.235>test <00:14:07.435>languages <00:14:07.635>against <00:14:07.834>the <00:14:08.035>features <00:14:08.235>of <00:14:08.435>JSI.

300
00:14:10.945 --> 00:14:13.845
<00:14:10.945>So <00:14:11.178>compatibility, <00:14:11.411>because <00:14:11.645>every <00:14:11.878>language <00:14:12.111>have <00:14:12.345>different,

301
00:14:13.845 --> 00:14:15.405
<00:14:13.845>there <00:14:14.125>has <00:14:14.405>different <00:14:14.685>aspects, <00:14:14.965>different <00:14:15.245>things,

302
00:14:15.405 --> 00:14:16.805
<00:14:15.405>how <00:14:15.584>they <00:14:15.765>work, <00:14:15.944>and <00:14:16.125>there <00:14:16.305>is <00:14:16.484>some <00:14:16.665>sort

303
00:14:16.805 --> 00:14:19.445
<00:14:16.805>of <00:14:16.979>common <00:14:17.155>denominator <00:14:17.329>we <00:14:17.505>need <00:14:17.680>to <00:14:17.854>find <00:14:18.030>and <00:14:18.204>test.

304
00:14:21.665 --> 00:14:25.085
<00:14:21.665>Um, <00:14:21.865>the, <00:14:22.064>if <00:14:22.265>you <00:14:22.464>use <00:14:22.665>the <00:14:22.865>Java <00:14:23.064>bindings,

305
00:14:25.085 --> 00:14:26.405
<00:14:25.085>there <00:14:25.322>is <00:14:25.560>a <00:14:25.797>dependency <00:14:26.035>you <00:14:26.273>need

306
00:14:26.405 --> 00:14:29.805
<00:14:26.405>to <00:14:26.545>install <00:14:26.685>in <00:14:26.824>your <00:14:26.964>target <00:14:27.105>project, <00:14:27.245>which <00:14:27.385>is <00:14:27.525>the <00:14:27.665>JSI <00:14:27.805>runtime.

307
00:14:30.745 --> 00:14:33.805
<00:14:30.745>And <00:14:30.872>there <00:14:30.999>are <00:14:31.126>a <00:14:31.254>few <00:14:31.381>things <00:14:31.508>to <00:14:31.635>consider, <00:14:31.763>a <00:14:31.890>few <00:14:32.017>rough <00:14:32.145>edges

308
00:14:33.805 --> 00:14:35.165
<00:14:33.805>that <00:14:33.979>you <00:14:34.154>just <00:14:34.329>need <00:14:34.504>to <00:14:34.679>be <00:14:34.854>aware <00:14:35.029>of.

309
00:14:35.745 --> 00:14:39.725
<00:14:35.745>So <00:14:35.920>when <00:14:36.095>JSII <00:14:36.270>generates <00:14:36.445>the <00:14:36.620>bindings <00:14:36.795>for <00:14:36.970>Java, <00:14:37.145>uh,

310
00:14:39.745 --> 00:14:40.805
<00:14:39.745>it <00:14:40.222>generates <00:14:40.699>getta.

311
00:14:40.805 --> 00:14:44.765
<00:14:40.805>And <00:14:40.979>so <00:14:41.155>what <00:14:41.329>you <00:14:41.505>cannot <00:14:41.680>do, <00:14:41.854>uh, <00:14:42.030>you <00:14:42.204>cannot

312
00:14:45.505 --> 00:14:49.365
<00:14:45.505>define <00:14:45.705>an <00:14:45.905>argument <00:14:46.105>function <00:14:46.305>like <00:14:46.505>get <00:14:46.705>all <00:14:46.905>sessions.

313
00:14:49.785 --> 00:14:51.685
<00:14:49.785>If <00:14:50.018>you <00:14:50.251>had <00:14:50.485>a <00:14:50.718>keen <00:14:50.951>eye <00:14:51.185>earlier,

314
00:14:52.225 --> 00:14:54.165
<00:14:52.225>the <00:14:52.458>function <00:14:52.691>was <00:14:52.925>called <00:14:53.158>retrieve <00:14:53.391>all <00:14:53.625>sessions.

315
00:14:54.165 --> 00:14:56.645
<00:14:54.165>That <00:14:54.365>is <00:14:54.564>for <00:14:54.765>reasons <00:14:54.964>because <00:14:55.165>get <00:14:55.365>all <00:14:55.564>sessions,

316
00:14:56.645 --> 00:14:59.685
<00:14:56.645>that <00:14:56.800>would <00:14:56.956>potentially <00:14:57.111>lead <00:14:57.267>to <00:14:57.422>a <00:14:57.578>conflict <00:14:57.733>with <00:14:57.889>the, <00:14:58.045>um,

317
00:15:00.425 --> 00:15:02.965
<00:15:00.425>the <00:15:00.625>get <00:15:00.824>us <00:15:01.025>that <00:15:01.224>are <00:15:01.425>generated <00:15:01.625>by <00:15:01.824>JSI

318
00:15:02.965 --> 00:15:04.645
<00:15:02.965>to <00:15:03.198>make <00:15:03.431>it <00:15:03.665>just <00:15:03.898>compatible <00:15:04.131>with <00:15:04.365>Java.

319
00:15:06.035 --> 00:15:08.375
<00:15:06.035>So <00:15:06.235>that's <00:15:06.435>Java. <00:15:06.635>We <00:15:06.834>can <00:15:07.035>also <00:15:07.235>do <00:15:07.435>Python.

320
00:15:08.595 --> 00:15:12.015
<00:15:08.595>So <00:15:08.702>Python, <00:15:08.810>we <00:15:08.918>can <00:15:09.025>go <00:15:09.133>back <00:15:09.241>to <00:15:09.348>work <00:15:09.456>in <00:15:09.564>3.8 <00:15:09.671>to <00:15:09.779>fairly <00:15:09.887>far <00:15:09.995>back.

321
00:15:12.795 --> 00:15:15.135
<00:15:12.795>And <00:15:12.969>with <00:15:13.145>Python <00:15:13.319>we <00:15:13.495>have <00:15:13.670>sort <00:15:13.844>of <00:15:14.020>a <00:15:14.194>challenge

322
00:15:15.135 --> 00:15:19.135
<00:15:15.135>because <00:15:15.275>Python <00:15:15.415>has <00:15:15.555>not <00:15:15.694>this <00:15:15.835>strong <00:15:15.975>of <00:15:16.115>typing <00:15:16.255>like <00:15:16.395>Java <00:15:16.535>has,

323
00:15:19.135 --> 00:15:20.575
<00:15:19.135>for <00:15:19.394>instance, <00:15:19.653>we <00:15:19.912>have <00:15:20.171>dynamic <00:15:20.431>typing

324
00:15:21.355 --> 00:15:25.255
<00:15:21.355>and <00:15:21.471>that <00:15:21.588>requires <00:15:21.705>JISI <00:15:21.821>to <00:15:21.938>do <00:15:22.055>a <00:15:22.171>lot <00:15:22.288>of <00:15:22.405>work <00:15:22.521>to <00:15:22.638>make <00:15:22.755>sure

325
00:15:25.255 --> 00:15:27.255
<00:15:25.255>that <00:15:25.455>we <00:15:25.655>have <00:15:25.855>this <00:15:26.055>type <00:15:26.255>safety <00:15:26.455>in <00:15:26.655>place.

326
00:15:27.835 --> 00:15:30.935
<00:15:27.835>And <00:15:27.962>you <00:15:28.089>can <00:15:28.216>see <00:15:28.344>this <00:15:28.471>when <00:15:28.598>you <00:15:28.725>look <00:15:28.853>at <00:15:28.980>the, <00:15:29.107>the <00:15:29.235>length

327
00:15:30.955 --> 00:15:32.695
<00:15:30.955>of <00:15:31.421>the <00:15:31.888>generated <00:15:32.355>bindings.

328
00:15:32.995 --> 00:15:36.215
<00:15:32.995>So <00:15:33.135>where <00:15:33.275>we <00:15:33.415>had <00:15:33.555>like <00:15:33.695>66 <00:15:33.835>lines <00:15:33.975>of <00:15:34.115>code <00:15:34.255>for <00:15:34.395>Java,

329
00:15:36.795 --> 00:15:40.015
<00:15:36.795>we <00:15:36.969>have <00:15:37.145>almost <00:15:37.319>fifth, <00:15:37.495>uh, <00:15:37.670>five <00:15:37.844>times <00:15:38.020>that <00:15:38.194>amount

330
00:15:40.015 --> 00:15:41.575
<00:15:40.015>of <00:15:40.365>code <00:15:40.715>entire, <00:15:41.064>uh, <00:15:41.415>Python

331
00:15:41.605 --> 00:15:45.695
<00:15:41.605>because <00:15:41.721>we <00:15:41.838>need <00:15:41.955>to <00:15:42.071>do <00:15:42.188>so <00:15:42.305>many <00:15:42.421>things <00:15:42.538>to <00:15:42.655>check <00:15:42.771>for, <00:15:42.888>for <00:15:43.005>null

332
00:15:45.755 --> 00:15:47.295
<00:15:45.755>and <00:15:46.101>for <00:15:46.448>many <00:15:46.794>other <00:15:47.141>things.

333
00:15:48.555 --> 00:15:51.775
<00:15:48.555>Uh, <00:15:48.710>the <00:15:48.866>JSI <00:15:49.021>dependency, <00:15:49.177>the <00:15:49.332>runtime <00:15:49.488>is <00:15:49.643>bundled <00:15:49.799>with <00:15:49.954>Python,

334
00:15:51.875 --> 00:15:53.415
<00:15:51.875>so <00:15:52.221>there's <00:15:52.568>no <00:15:52.914>extra <00:15:53.261>dependency.

335
00:15:54.475 --> 00:15:57.695
<00:15:54.475>And <00:15:54.650>another <00:15:54.825>thing <00:15:55.000>that <00:15:55.175>you're <00:15:55.350>going <00:15:55.525>to <00:15:55.700>realize <00:15:55.875>is

336
00:15:57.695 --> 00:16:00.735
<00:15:57.695>that <00:15:57.850>it <00:15:58.006>forces <00:15:58.161>us <00:15:58.317>to <00:15:58.472>write <00:15:58.628>non <00:15:58.783>idiomatic <00:15:58.939>Python <00:15:59.095>code.

337
00:16:00.845 --> 00:16:03.335
<00:16:00.845>This <00:16:00.972>is <00:16:01.099>again <00:16:01.226>for <00:16:01.354>the <00:16:01.481>same <00:16:01.608>reason <00:16:01.735>like <00:16:01.863>we <00:16:01.990>have <00:16:02.117>with <00:16:02.245>Java

338
00:16:03.405 --> 00:16:06.695
<00:16:03.405>because <00:16:03.579>there <00:16:03.755>are <00:16:03.930>some <00:16:04.105>trade-offs <00:16:04.280>to <00:16:04.454>be <00:16:04.630>made, <00:16:04.805>um,

339
00:16:06.725 --> 00:16:08.375
<00:16:06.725>because <00:16:06.958>we <00:16:07.191>need <00:16:07.425>to <00:16:07.658>bridge <00:16:07.891>the <00:16:08.125>gap

340
00:16:08.375 --> 00:16:10.895
<00:16:08.375>between <00:16:08.725>two <00:16:09.075>different <00:16:09.425>languages <00:16:09.775>essentially.

341
00:16:11.355 --> 00:16:13.935
<00:16:11.355>So <00:16:11.555>this <00:16:11.755>is <00:16:11.955>notable <00:16:12.155>when <00:16:12.355>you <00:16:12.555>do <00:16:12.755>interfaces

342
00:16:14.545 --> 00:16:17.055
<00:16:14.545>where <00:16:14.700>you <00:16:14.856>would <00:16:15.011>normally <00:16:15.167>do <00:16:15.322>this <00:16:15.478>via <00:16:15.633>the <00:16:15.789>inheritance <00:16:15.944>chain,

343
00:16:17.075 --> 00:16:19.615
<00:16:17.075>you <00:16:17.230>now <00:16:17.386>need <00:16:17.541>to <00:16:17.697>do <00:16:17.852>it <00:16:18.008>via <00:16:18.163>a <00:16:18.319>particular <00:16:18.475>annotation

344
00:16:19.615 --> 00:16:21.215
<00:16:19.615>that <00:16:19.895>you <00:16:20.175>provide <00:16:20.455>to <00:16:20.735>that <00:16:21.015>function.

345
00:16:22.275 --> 00:16:26.055
<00:16:22.275>Uh, <00:16:22.415>same <00:16:22.555>for <00:16:22.694>if <00:16:22.834>you <00:16:22.975>want <00:16:23.115>to <00:16:23.255>extend <00:16:23.395>or <00:16:23.535>implement <00:16:23.675>types.

346
00:16:26.055 --> 00:16:28.255
<00:16:26.055>There's <00:16:26.229>a <00:16:26.405>particular <00:16:26.579>way <00:16:26.755>to <00:16:26.930>do <00:16:27.104>this <00:16:27.280>as <00:16:27.454>well.

347
00:16:30.035 --> 00:16:33.015
<00:16:30.035>So <00:16:30.314>for <00:16:30.594>C <00:16:30.875>it's <00:16:31.155>pretty <00:16:31.435>unspectacular,

348
00:16:33.205 --> 00:16:35.255
<00:16:33.205>it's <00:16:33.405>strong <00:16:33.605>typing <00:16:33.805>again, <00:16:34.005>so <00:16:34.205>this <00:16:34.405>is <00:16:34.605>convenient.

349
00:16:35.355 --> 00:16:37.695
<00:16:35.355>We <00:16:35.510>require <00:16:35.666>net <00:16:35.821>in <00:16:35.977>version <00:16:36.132>six <00:16:36.288>at <00:16:36.443>the <00:16:36.599>very <00:16:36.755>least.

350
00:16:38.235 --> 00:16:41.735
<00:16:38.235>Um, <00:16:38.468>again, <00:16:38.701>there <00:16:38.935>are <00:16:39.168>potential <00:16:39.401>conflicts, <00:16:39.635>uh,

351
00:16:41.735 --> 00:16:43.895
<00:16:41.735>with <00:16:42.201>reserve <00:16:42.668>keywords <00:16:43.135>in.net.

352
00:16:44.315 --> 00:16:47.095
<00:16:44.315>So <00:16:44.548>those <00:16:44.781>are <00:16:45.015>also <00:16:45.248>some <00:16:45.481>rough <00:16:45.715>edges

353
00:16:47.115 --> 00:16:49.175
<00:16:47.115>or <00:16:47.255>some <00:16:47.395>sharp <00:16:47.535>edges <00:16:47.675>that <00:16:47.815>you <00:16:47.955>need <00:16:48.095>to <00:16:48.235>be <00:16:48.375>aware <00:16:48.515>of.

354
00:16:50.475 --> 00:16:52.975
<00:16:50.475>And <00:16:50.941>lastly, <00:16:51.408>go, <00:16:51.875>uh,

355
00:16:52.975 --> 00:16:56.135
<00:16:52.975>would <00:16:53.115>you <00:16:53.255>call <00:16:53.395>version <00:16:53.535>one <00:16:53.675>point <00:16:53.815>18 <00:16:53.955>And <00:16:54.095>go <00:16:54.235>was <00:16:54.375>the

356
00:16:56.165 --> 00:16:57.535
<00:16:56.165>last <00:16:56.473>language <00:16:56.781>that <00:16:57.089>we <00:16:57.397>released.

357
00:16:57.595 --> 00:16:58.615
<00:16:57.595>And <00:16:57.778>that <00:16:57.962>is <00:16:58.145>for <00:16:58.329>a <00:16:58.513>reason

358
00:16:58.615 --> 00:17:02.265
<00:16:58.615>because <00:16:58.848>GO <00:16:59.081>is <00:16:59.315>has <00:16:59.548>a <00:16:59.781>different <00:17:00.015>paradigm

359
00:17:02.405 --> 00:17:04.945
<00:17:02.405>how <00:17:02.605>the <00:17:02.805>language <00:17:03.005>has <00:17:03.204>been, <00:17:03.405>has <00:17:03.605>been <00:17:03.805>designed.

360
00:17:05.165 --> 00:17:07.785
<00:17:05.165>So <00:17:05.865>where <00:17:06.565>JavaScript

361
00:17:08.125 --> 00:17:10.985
<00:17:08.125>and <00:17:08.591>JSII <00:17:09.058>favors <00:17:09.525>inheritance,

362
00:17:12.365 --> 00:17:13.745
<00:17:12.365>go <00:17:12.985>favors <00:17:13.607>composition.

363
00:17:13.805 --> 00:17:18.505
<00:17:13.805>So <00:17:13.960>just <00:17:14.116>how <00:17:14.271>you, <00:17:14.427>um, <00:17:14.582>there <00:17:14.738>are <00:17:14.893>different <00:17:15.049>design <00:17:15.205>principles

364
00:17:18.505 --> 00:17:20.785
<00:17:18.505>behind <00:17:18.680>the <00:17:18.855>language <00:17:19.030>and <00:17:19.205>that <00:17:19.380>makes <00:17:19.555>it <00:17:19.730>really <00:17:19.905>tough

365
00:17:20.805 --> 00:17:21.825
<00:17:20.805>to <00:17:21.034>to <00:17:21.264>bridge <00:17:21.493>the <00:17:21.723>gap.

366
00:17:22.365 --> 00:17:25.185
<00:17:22.365>So <00:17:22.492>there <00:17:22.619>are <00:17:22.746>a <00:17:22.874>few <00:17:23.001>things <00:17:23.128>that <00:17:23.255>you <00:17:23.383>would, <00:17:23.510>that <00:17:23.637>you <00:17:23.765>need

367
00:17:25.185 --> 00:17:26.465
<00:17:25.185>to <00:17:25.473>do <00:17:25.761>that <00:17:26.049>are <00:17:26.337>again,

368
00:17:26.565 --> 00:17:28.945
<00:17:26.565>non <00:17:26.765>idiomatic <00:17:26.965>when <00:17:27.165>you <00:17:27.365>write, <00:17:27.565>uh, <00:17:27.765>go <00:17:27.965>code.

369
00:17:29.045 --> 00:17:31.915
<00:17:29.045>So <00:17:29.325>you <00:17:29.605>need <00:17:29.885>to <00:17:30.165>implement <00:17:30.445>interfaces

370
00:17:31.915 --> 00:17:34.115
<00:17:31.915>by <00:17:32.115>just <00:17:32.315>defining <00:17:32.514>the <00:17:32.715>methods <00:17:32.915>on <00:17:33.115>the <00:17:33.315>gort.

371
00:17:34.455 --> 00:17:37.635
<00:17:34.455>Um, <00:17:34.629>you <00:17:34.804>cannot <00:17:34.980>use, <00:17:35.155>well <00:17:35.330>you <00:17:35.504>receivers, <00:17:35.679>you <00:17:35.855>need

372
00:17:37.835 --> 00:17:38.995
<00:17:37.835>to <00:17:38.183>use <00:17:38.531>pointer <00:17:38.879>receivers,

373
00:17:39.105 --> 00:17:43.635
<00:17:39.105>otherwise <00:17:39.338>you <00:17:39.571>can <00:17:39.805>lead <00:17:40.038>to <00:17:40.271>runtime <00:17:40.505>errors.

374
00:17:44.765 --> 00:17:48.025
<00:17:44.765>Um, <00:17:44.940>we <00:17:45.115>prefer <00:17:45.290>composition <00:17:45.465>over <00:17:45.640>extension. <00:17:45.815>We <00:17:45.990>discussed <00:17:46.165>this.

375
00:17:48.025 --> 00:17:49.925
<00:17:48.025>This <00:17:48.305>is <00:17:48.585>just <00:17:48.865>the <00:17:49.145>fundamental <00:17:49.425>difference.

376
00:17:50.625 --> 00:17:53.565
<00:17:50.625>And <00:17:50.765>there <00:17:50.905>might <00:17:51.045>be <00:17:51.185>cases <00:17:51.325>where <00:17:51.465>you <00:17:51.605>need <00:17:51.745>to <00:17:51.885>downcast <00:17:52.025>values.

377
00:17:53.745 --> 00:17:56.245
<00:17:53.745>So <00:17:53.900>in <00:17:54.056>that <00:17:54.211>case <00:17:54.367>you <00:17:54.522>need <00:17:54.678>to <00:17:54.833>use <00:17:54.989>unsafe <00:17:55.145>cost,

378
00:17:56.505 --> 00:17:58.205
<00:17:56.505>but <00:17:56.738>that <00:17:56.971>can <00:17:57.205>use <00:17:57.438>to, <00:17:57.671>to <00:17:57.905>panic.

379
00:17:58.305 --> 00:17:59.885
<00:17:58.305>So <00:17:58.538>you <00:17:58.771>need <00:17:59.005>to <00:17:59.238>handle <00:17:59.471>this <00:17:59.705>appropriately.

380
00:18:01.725 --> 00:18:03.185
<00:18:01.725>If <00:18:01.944>we <00:18:02.163>now <00:18:02.381>have <00:18:02.601>all <00:18:02.820>those <00:18:03.039>findings

381
00:18:03.325 --> 00:18:04.985
<00:18:03.325>and <00:18:03.500>we've <00:18:03.675>taken <00:18:03.850>care <00:18:04.025>of <00:18:04.200>all <00:18:04.375>those <00:18:04.550>edge <00:18:04.725>cases

382
00:18:05.085 --> 00:18:07.935
<00:18:05.085>and <00:18:05.225>know <00:18:05.365>what <00:18:05.505>we <00:18:05.645>are <00:18:05.785>doing, <00:18:05.925>that's <00:18:06.065>how <00:18:06.205>it <00:18:06.345>looks <00:18:06.485>like.

383
00:18:08.315 --> 00:18:10.775
<00:18:08.315>So <00:18:08.595>we <00:18:08.875>can <00:18:09.155>just <00:18:09.435>go <00:18:09.715>ahead

384
00:18:11.395 --> 00:18:13.535
<00:18:11.395>and <00:18:11.861>use <00:18:12.328>those <00:18:12.795>bindings.

385
00:18:13.955 --> 00:18:16.695
<00:18:13.955>So <00:18:14.095>we <00:18:14.235>can <00:18:14.375>import <00:18:14.514>them <00:18:14.655>like <00:18:14.794>any <00:18:14.935>other <00:18:15.074>package <00:18:15.215>we <00:18:15.355>would

386
00:18:16.695 --> 00:18:19.695
<00:18:16.695>import, <00:18:16.870>we <00:18:17.044>can <00:18:17.220>make <00:18:17.395>them <00:18:17.570>available, <00:18:17.745>uh, <00:18:17.919>PIP <00:18:18.095>install

387
00:18:19.795 --> 00:18:21.575
<00:18:19.795>or <00:18:20.495>Maven, <00:18:21.195>whatever.

388
00:18:21.675 --> 00:18:24.375
<00:18:21.675>And <00:18:21.791>we <00:18:21.908>just <00:18:22.024>import <00:18:22.141>them. <00:18:22.258>And <00:18:22.375>in <00:18:22.491>this <00:18:22.608>case, <00:18:22.725>this <00:18:22.841>is <00:18:22.958>a <00:18:23.075>sample

389
00:18:24.375 --> 00:18:28.535
<00:18:24.375>for <00:18:24.530>Python <00:18:24.686>and <00:18:24.841>for <00:18:24.997>uh, <00:18:25.152>for <00:18:25.308>Java, <00:18:25.463>we <00:18:25.619>input <00:18:25.775>them.

390
00:18:29.035 --> 00:18:31.575
<00:18:29.035>We <00:18:29.501>instantiate <00:18:29.968>an <00:18:30.435>instance

391
00:18:31.635 --> 00:18:33.575
<00:18:31.635>of <00:18:31.868>the <00:18:32.101>we <00:18:32.335>are <00:18:32.568>developers <00:18:32.801>program <00:18:33.035>guide.

392
00:18:33.995 --> 00:18:37.175
<00:18:33.995>And <00:18:34.150>then <00:18:34.306>we <00:18:34.461>retrieve <00:18:34.617>all <00:18:34.772>sessions, <00:18:34.928>again, <00:18:35.083>retrieve, <00:18:35.239>not <00:18:35.395>get

393
00:18:37.395 --> 00:18:38.575
<00:18:37.395>for <00:18:37.926>reasons <00:18:38.457>explained.

394
00:18:39.155 --> 00:18:40.375
<00:18:39.155>And <00:18:39.429>we <00:18:39.704>print <00:18:39.978>the <00:18:40.253>number.

395
00:18:40.475 --> 00:18:42.655
<00:18:40.475>In <00:18:40.615>this <00:18:40.754>case <00:18:40.895>it's <00:18:41.034>just <00:18:41.175>20, <00:18:41.314>it's <00:18:41.455>not <00:18:41.594>the <00:18:41.735>entire <00:18:41.875>catalog.

396
00:18:43.955 --> 00:18:48.335
<00:18:43.955>And <00:18:44.110>then <00:18:44.266>we <00:18:44.421>search <00:18:44.577>those <00:18:44.732>sessions <00:18:44.888>and <00:18:45.043>search <00:18:45.199>for <00:18:45.355>AI

397
00:18:48.335 --> 00:18:52.975
<00:18:48.335>and <00:18:48.475>we <00:18:48.615>print <00:18:48.755>all <00:18:48.895>the <00:18:49.035>sessions <00:18:49.175>that, <00:18:49.315>um, <00:18:49.455>that <00:18:49.595>contain <00:18:49.735>ai.

398
00:18:53.675 --> 00:18:57.025
<00:18:53.675>So <00:18:53.955>this, <00:18:54.235>this <00:18:54.514>is <00:18:54.794>the <00:18:55.075>output

399
00:18:57.025 --> 00:18:58.345
<00:18:57.025>that <00:18:57.194>we're <00:18:57.364>going <00:18:57.534>to <00:18:57.703>get <00:18:57.873>from <00:18:58.043>both <00:18:58.213>things.

400
00:18:58.345 --> 00:19:01.665
<00:18:58.345>And <00:18:58.520>this <00:18:58.695>is <00:18:58.870>then, <00:18:59.045>um, <00:18:59.220>the <00:18:59.395>output <00:18:59.570>is <00:18:59.745>written

401
00:19:01.665 --> 00:19:03.345
<00:19:01.665>by <00:19:01.865>the <00:19:02.065>Java <00:19:02.264>code <00:19:02.465>or <00:19:02.665>the <00:19:02.865>Python <00:19:03.065>code.

402
00:19:04.125 --> 00:19:08.705
<00:19:04.125>Um, <00:19:04.252>but <00:19:04.379>what <00:19:04.506>we <00:19:04.634>get <00:19:04.761>is <00:19:04.888>a <00:19:05.015>result <00:19:05.143>from <00:19:05.270>the <00:19:05.397>JavaScript <00:19:05.525>code.

403
00:19:09.365 --> 00:19:10.865
<00:19:09.365>So <00:19:09.702>how <00:19:10.040>does <00:19:10.377>this <00:19:10.715>work?

404
00:19:10.865 --> 00:19:12.585
<00:19:10.865>Like <00:19:11.065>let's <00:19:11.265>look <00:19:11.465>under <00:19:11.665>the <00:19:11.865>covers <00:19:12.065>a <00:19:12.265>bit.

405
00:19:14.045 --> 00:19:17.385
<00:19:14.045>The <00:19:14.220>execution <00:19:14.395>model <00:19:14.570>is <00:19:14.745>on <00:19:14.920>the <00:19:15.095>same <00:19:15.270>operating <00:19:15.445>system.

406
00:19:17.805 --> 00:19:22.545
<00:19:17.805>So <00:19:17.945>we <00:19:18.085>have <00:19:18.225>an <00:19:18.365>operating <00:19:18.505>system, <00:19:18.645>that's <00:19:18.785>where <00:19:18.925>JSII <00:19:19.065>runs <00:19:19.205>on

407
00:19:22.725 --> 00:19:26.425
<00:19:22.725>and <00:19:22.880>on <00:19:23.036>that <00:19:23.191>operating <00:19:23.347>system, <00:19:23.502>we <00:19:23.658>have <00:19:23.813>a <00:19:23.969>host <00:19:24.125>runtime

408
00:19:27.205 --> 00:19:29.665
<00:19:27.205>and <00:19:27.485>we <00:19:27.764>have <00:19:28.044>the <00:19:28.324>JSR <00:19:28.605>runtime.

409
00:19:29.965 --> 00:19:32.905
<00:19:29.965>So <00:19:30.120>the <00:19:30.276>host <00:19:30.431>runtime <00:19:30.587>can <00:19:30.742>be <00:19:30.898>that <00:19:31.053>is <00:19:31.209>the <00:19:31.365>language

410
00:19:32.905 --> 00:19:36.305
<00:19:32.905>that <00:19:33.060>you <00:19:33.216>want <00:19:33.371>to <00:19:33.527>run <00:19:33.682>the <00:19:33.838>bindings <00:19:33.993>in <00:19:34.149>JVM, <00:19:34.305>Python

411
00:19:36.845 --> 00:19:38.545
<00:19:36.845>go.net <00:19:37.311>and <00:19:37.778>so <00:19:38.245>on.

412
00:19:39.015 --> 00:19:41.145
<00:19:39.015>Then <00:19:39.248>we <00:19:39.481>also <00:19:39.715>have <00:19:39.948>the <00:19:40.181>JSR <00:19:40.415>runtime.

413
00:19:41.535 --> 00:19:43.945
<00:19:41.535>This <00:19:41.662>is <00:19:41.789>no <00:19:41.916>jazz <00:19:42.044>and <00:19:42.171>this <00:19:42.298>is <00:19:42.425>where <00:19:42.553>your <00:19:42.680>actual <00:19:42.807>code <00:19:42.935>runs.

414
00:19:43.975 --> 00:19:46.865
<00:19:43.975>This <00:19:44.102>needs <00:19:44.229>to <00:19:44.356>be <00:19:44.484>no <00:19:44.611>jazz <00:19:44.738>version <00:19:44.865>18 <00:19:44.993>at <00:19:45.120>the <00:19:45.247>very <00:19:45.375>least.

415
00:19:47.845 --> 00:19:50.625
<00:19:47.845>And <00:19:48.000>on <00:19:48.156>top <00:19:48.311>of <00:19:48.467>that <00:19:48.622>we <00:19:48.778>have <00:19:48.933>the, <00:19:49.089>the <00:19:49.245>applications.

416
00:19:50.725 --> 00:19:52.185
<00:19:50.725>So <00:19:50.987>we <00:19:51.250>have <00:19:51.513>the <00:19:51.776>host <00:19:52.039>application

417
00:19:52.485 --> 00:19:54.825
<00:19:52.485>and <00:19:52.640>then <00:19:52.796>we <00:19:52.951>have <00:19:53.107>all <00:19:53.262>the <00:19:53.418>components <00:19:53.573>that <00:19:53.729>are <00:19:53.885>required

418
00:19:54.825 --> 00:19:58.065
<00:19:54.825>to <00:19:54.965>run <00:19:55.105>JSII <00:19:55.245>running <00:19:55.385>in <00:19:55.525>the <00:19:55.665>JSII <00:19:55.805>runtime <00:19:55.945>and <00:19:56.085>no <00:19:56.225>jazz.

419
00:19:58.765 --> 00:20:01.305
<00:19:58.765>And <00:19:58.965>within <00:19:59.165>that <00:19:59.365>you <00:19:59.565>run <00:19:59.765>the <00:19:59.965>actual <00:20:00.165>application.

420
00:20:01.305 --> 00:20:02.985
<00:20:01.305>So <00:20:01.655>we <00:20:02.005>have <00:20:02.355>generated <00:20:02.705>bindings

421
00:20:03.765 --> 00:20:07.335
<00:20:03.765>and <00:20:03.998>we <00:20:04.231>have <00:20:04.465>the <00:20:04.698>hosted <00:20:04.931>JSI <00:20:05.165>library.

422
00:20:07.845 --> 00:20:10.015
<00:20:07.845>Sometimes <00:20:08.125>that <00:20:08.405>library <00:20:08.685>is <00:20:08.965>bundled <00:20:09.245>already,

423
00:20:10.015 --> 00:20:11.575
<00:20:10.015>sometimes <00:20:10.295>it <00:20:10.575>needs <00:20:10.855>to <00:20:11.135>be <00:20:11.415>part

424
00:20:11.575 --> 00:20:13.575
<00:20:11.575>of <00:20:11.855>the <00:20:12.135>dependencies <00:20:12.415>of <00:20:12.695>your <00:20:12.975>project.

425
00:20:14.595 --> 00:20:16.975
<00:20:14.595>And <00:20:14.770>then <00:20:14.945>we <00:20:15.120>have, <00:20:15.295>uh, <00:20:15.470>just <00:20:15.645>the <00:20:15.820>JavaScript <00:20:15.995>code.

426
00:20:16.975 --> 00:20:19.135
<00:20:16.975>That's <00:20:17.441>the <00:20:17.908>JavaScript <00:20:18.375>code

427
00:20:19.175 --> 00:20:20.775
<00:20:19.175>that <00:20:19.455>has <00:20:19.735>been <00:20:20.014>transpired <00:20:20.294>from <00:20:20.575>the

428
00:20:20.775 --> 00:20:21.935
<00:20:20.775>TypeScript <00:20:21.036>code <00:20:21.297>that <00:20:21.558>you <00:20:21.819>wrote.

429
00:20:22.675 --> 00:20:25.775
<00:20:22.675>And <00:20:22.850>now <00:20:23.024>when <00:20:23.200>the, <00:20:23.375>the <00:20:23.550>first <00:20:23.725>request <00:20:23.899>comes <00:20:24.075>in,

430
00:20:25.955 --> 00:20:27.775
<00:20:25.955>or <00:20:26.188>when <00:20:26.421>the <00:20:26.655>host <00:20:26.888>application <00:20:27.121>starts <00:20:27.355>up,

431
00:20:27.775 --> 00:20:31.375
<00:20:27.775>it <00:20:27.915>starts <00:20:28.055>in <00:20:28.195>its <00:20:28.335>own <00:20:28.475>runtime, <00:20:28.615>then <00:20:28.755>we <00:20:28.895>execute <00:20:29.035>the <00:20:29.175>code

432
00:20:31.375 --> 00:20:34.335
<00:20:31.375>and <00:20:31.575>at <00:20:31.775>some <00:20:31.975>point <00:20:32.175>we <00:20:32.375>encounter <00:20:32.575>those <00:20:32.775>findings.

433
00:20:34.755 --> 00:20:39.735
<00:20:34.755>So <00:20:34.930>then <00:20:35.105>the, <00:20:35.280>the <00:20:35.455>runtime <00:20:35.630>creates <00:20:35.805>a <00:20:35.980>child <00:20:36.155>process

434
00:20:40.065 --> 00:20:42.455
<00:20:40.065>where <00:20:40.240>this <00:20:40.415>runs <00:20:40.590>in, <00:20:40.765>where <00:20:40.940>the <00:20:41.115>bindings <00:20:41.290>run <00:20:41.465>in.

435
00:20:42.995 --> 00:20:45.375
<00:20:42.995>And <00:20:43.195>at <00:20:43.395>some <00:20:43.594>point <00:20:43.794>that's <00:20:43.995>the <00:20:44.195>interesting <00:20:44.395>bit.

436
00:20:45.375 --> 00:20:46.535
<00:20:45.375>That's <00:20:45.636>where <00:20:45.897>the <00:20:46.158>magic <00:20:46.419>happens.

437
00:20:46.875 --> 00:20:49.285
<00:20:46.875>It <00:20:47.050>wants <00:20:47.225>to <00:20:47.400>communicate <00:20:47.575>back <00:20:47.750>to <00:20:47.925>the <00:20:48.100>JavaScript <00:20:48.275>code.

438
00:20:49.465 --> 00:20:53.045
<00:20:49.465>And <00:20:49.665>that's <00:20:49.865>where <00:20:50.064>we <00:20:50.264>rely <00:20:50.465>on <00:20:50.665>those <00:20:50.865>findings

439
00:20:53.045 --> 00:20:56.365
<00:20:53.045>that <00:20:53.220>we <00:20:53.395>generated <00:20:53.570>in <00:20:53.745>this <00:20:53.920>JSII <00:20:54.095>file <00:20:54.270>through <00:20:54.445>analysis

440
00:20:56.505 --> 00:21:00.645
<00:20:56.505>of <00:20:56.645>the <00:20:56.785>TypeScript <00:20:56.925>code <00:20:57.065>because <00:20:57.205>now <00:20:57.345>we <00:20:57.485>know <00:20:57.625>how <00:20:57.765>to <00:20:57.905>marshal

441
00:21:00.645 --> 00:21:03.205
<00:21:00.645>and <00:21:00.761>un <00:21:00.878>marshal <00:21:00.995>the <00:21:01.111>data <00:21:01.228>that <00:21:01.345>we <00:21:01.461>need <00:21:01.578>to <00:21:01.695>send <00:21:01.811>back <00:21:01.928>and <00:21:02.045>forth.

442
00:21:03.465 --> 00:21:07.005
<00:21:03.465>So <00:21:03.665>the <00:21:03.865>request <00:21:04.064>comes <00:21:04.264>in <00:21:04.465>this <00:21:04.665>case, <00:21:04.865>uh,

443
00:21:07.365 --> 00:21:09.205
<00:21:07.365>retrieve <00:21:07.645>all <00:21:07.925>sessions <00:21:08.205>when <00:21:08.485>we <00:21:08.765>know

444
00:21:09.505 --> 00:21:13.725
<00:21:09.505>or <00:21:09.645>JS <00:21:09.785>iis <00:21:09.925>knows <00:21:10.065>how <00:21:10.205>to <00:21:10.345>marshal <00:21:10.485>this <00:21:10.625>into <00:21:10.765>adjacent <00:21:10.905>object

445
00:21:14.035 --> 00:21:16.045
<00:21:14.035>that <00:21:14.385>the <00:21:14.735>other <00:21:15.085>side <00:21:15.435>understands.

446
00:21:16.185 --> 00:21:17.325
<00:21:16.185>And <00:21:16.390>this <00:21:16.595>is <00:21:16.800>then <00:21:17.005>just <00:21:17.211>sent

447
00:21:17.345 --> 00:21:19.485
<00:21:17.345>by <00:21:17.545>a <00:21:17.745>standard <00:21:17.945>in <00:21:18.145>standard <00:21:18.345>out <00:21:18.545>standard <00:21:18.745>error

448
00:21:20.305 --> 00:21:23.845
<00:21:20.305>and <00:21:20.538>is <00:21:20.771>retrieved <00:21:21.005>by <00:21:21.238>the <00:21:21.471>JavaScript <00:21:21.705>process

449
00:21:24.655 --> 00:21:26.765
<00:21:24.655>where <00:21:24.855>then <00:21:25.055>when <00:21:25.254>the <00:21:25.455>first <00:21:25.655>request <00:21:25.855>comes <00:21:26.055>in,

450
00:21:26.905 --> 00:21:29.285
<00:21:26.905>the <00:21:27.080>process <00:21:27.254>is <00:21:27.430>started, <00:21:27.605>the <00:21:27.780>JavaScript <00:21:27.955>code <00:21:28.129>is <00:21:28.305>running,

451
00:21:29.665 --> 00:21:32.645
<00:21:29.665>it <00:21:29.820>processes <00:21:29.976>the <00:21:30.131>data <00:21:30.287>in <00:21:30.442>this <00:21:30.598>case <00:21:30.753>filtering <00:21:30.909>the <00:21:31.065>session

452
00:21:32.645 --> 00:21:35.445
<00:21:32.645>catalog <00:21:32.878>for <00:21:33.111>instance, <00:21:33.345>gets <00:21:33.578>a <00:21:33.811>result <00:21:34.045>back

453
00:21:35.905 --> 00:21:37.485
<00:21:35.905>and <00:21:36.254>goes <00:21:36.605>the <00:21:36.955>way <00:21:37.305>back.

454
00:21:37.545 --> 00:21:39.605
<00:21:37.545>It, <00:21:37.895>um, <00:21:38.245>returns <00:21:38.595>the <00:21:38.945>results.

455
00:21:39.605 --> 00:21:43.085
<00:21:39.605>It's <00:21:39.732>going <00:21:39.859>to <00:21:39.986>get <00:21:40.114>marshaled <00:21:40.241>by <00:21:40.368>the <00:21:40.495>runtime <00:21:40.623>sent <00:21:40.750>back <00:21:40.877>to <00:21:41.005>the,

456
00:21:43.345 --> 00:21:44.485
<00:21:43.345>to <00:21:43.550>the <00:21:43.755>where <00:21:43.960>it <00:21:44.165>came <00:21:44.370>from

457
00:21:44.545 --> 00:21:47.045
<00:21:44.545>to <00:21:44.778>the <00:21:45.011>target <00:21:45.245>language <00:21:45.478>is <00:21:45.711>un <00:21:45.945>marshaled

458
00:21:47.305 --> 00:21:51.565
<00:21:47.305>and <00:21:47.445>then <00:21:47.585>can <00:21:47.725>be <00:21:47.865>used <00:21:48.005>in <00:21:48.145>the <00:21:48.285>Java <00:21:48.425>program <00:21:48.565>for <00:21:48.705>instance.

459
00:21:53.835 --> 00:21:56.165
<00:21:53.835>So <00:21:54.068>what <00:21:54.301>do <00:21:54.535>we <00:21:54.768>make <00:21:55.001>of <00:21:55.235>this?

460
00:21:56.395 --> 00:21:59.605
<00:21:56.395>What <00:21:56.535>is, <00:21:56.675>what <00:21:56.815>do <00:21:56.955>we, <00:21:57.095>what <00:21:57.235>do <00:21:57.375>we <00:21:57.514>go <00:21:57.655>from <00:21:57.795>here?

461
00:22:00.445 --> 00:22:02.495
<00:22:00.445>Well, <00:22:00.678>there <00:22:00.911>are <00:22:01.145>some <00:22:01.378>strengths <00:22:01.611>to <00:22:01.845>this.

462
00:22:02.995 --> 00:22:06.655
<00:22:02.995>One <00:22:03.195>is <00:22:03.395>it <00:22:03.594>allows <00:22:03.794>you <00:22:03.995>to <00:22:04.195>build <00:22:04.395>SDKs

463
00:22:06.725 --> 00:22:07.975
<00:22:06.725>with <00:22:07.287>cross-functional <00:22:07.850>support

464
00:22:07.975 --> 00:22:11.135
<00:22:07.975>or <00:22:08.149>in <00:22:08.324>general <00:22:08.500>libraries <00:22:08.675>with <00:22:08.850>cross <00:22:09.024>cross <00:22:09.199>language <00:22:09.375>support.

465
00:22:11.675 --> 00:22:14.575
<00:22:11.675>That's <00:22:11.802>the <00:22:11.929>very <00:22:12.056>problem <00:22:12.184>we <00:22:12.311>try <00:22:12.438>to <00:22:12.565>solve <00:22:12.693>in <00:22:12.820>the <00:22:12.947>first <00:22:13.075>place.

466
00:22:14.595 --> 00:22:17.935
<00:22:14.595>And <00:22:14.770>that <00:22:14.945>is <00:22:15.120>great. <00:22:15.295>The <00:22:15.470>tooling <00:22:15.645>that <00:22:15.820>we <00:22:15.995>have

467
00:22:18.645 --> 00:22:21.015
<00:22:18.645>that <00:22:18.995>is <00:22:19.345>surprisingly <00:22:19.695>low <00:22:20.045>touch.

468
00:22:21.115 --> 00:22:22.295
<00:22:21.115>So <00:22:21.327>there's <00:22:21.539>not <00:22:21.752>much <00:22:21.964>to <00:22:22.177>do.

469
00:22:22.315 --> 00:22:25.255
<00:22:22.315>You <00:22:22.548>start <00:22:22.781>writing <00:22:23.015>your <00:22:23.248>application, <00:22:23.481>you <00:22:23.715>stick

470
00:22:25.255 --> 00:22:27.455
<00:22:25.255>to <00:22:25.455>some <00:22:25.655>principles, <00:22:25.855>you <00:22:26.055>need <00:22:26.255>to <00:22:26.455>do <00:22:26.655>classes,

471
00:22:28.395 --> 00:22:31.095
<00:22:28.395>and <00:22:28.570>then <00:22:28.745>there's <00:22:28.920>some <00:22:29.095>magic <00:22:29.270>happening <00:22:29.445>under <00:22:29.620>the <00:22:29.795>covers.

472
00:22:32.715 --> 00:22:35.015
<00:22:32.715>It <00:22:32.948>allows <00:22:33.181>us <00:22:33.415>to <00:22:33.648>reuse <00:22:33.881>JavaScript <00:22:34.115>libraries.

473
00:22:35.235 --> 00:22:37.895
<00:22:35.235>Um, <00:22:35.390>for <00:22:35.546>instance, <00:22:35.701>the <00:22:35.857>moment <00:22:36.012>jazz <00:22:36.168>library <00:22:36.323>that <00:22:36.479>I <00:22:36.635>use,

474
00:22:37.895 --> 00:22:39.975
<00:22:37.895>which <00:22:38.050>in <00:22:38.206>my <00:22:38.361>opinion <00:22:38.517>is <00:22:38.672>one <00:22:38.828>of <00:22:38.983>the <00:22:39.139>best <00:22:39.295>time

475
00:22:39.975 --> 00:22:41.495
<00:22:39.975>and <00:22:40.317>database <00:22:40.658>libraries <00:22:41.001>out <00:22:41.342>there,

476
00:22:41.705 --> 00:22:43.175
<00:22:41.705>super <00:22:42.035>convenient <00:22:42.366>to <00:22:42.697>work <00:22:43.028>with.

477
00:22:43.715 --> 00:22:46.695
<00:22:43.715>Um, <00:22:43.855>and <00:22:43.995>it's <00:22:44.135>nice <00:22:44.274>to <00:22:44.415>make <00:22:44.554>this <00:22:44.695>available <00:22:44.834>to <00:22:44.975>other <00:22:45.115>languages.

478
00:22:48.175 --> 00:22:52.435
<00:22:48.175>The <00:22:48.330>community <00:22:48.486>and <00:22:48.641>the <00:22:48.797>ecosystem <00:22:48.952>of <00:22:49.108>JSAI <00:22:49.263>is <00:22:49.419>really <00:22:49.575>strong.

479
00:22:52.495 --> 00:22:55.035
<00:22:52.495>So <00:22:52.669>it <00:22:52.844>has <00:22:53.020>a <00:22:53.195>rough <00:22:53.370>around <00:22:53.544>200, <00:22:53.719>uh, <00:22:53.895>two

480
00:22:55.035 --> 00:22:56.475
<00:22:55.035>and <00:22:55.251>a <00:22:55.467>half <00:22:55.683>K <00:22:55.899>stars <00:22:56.115>on <00:22:56.331>GitHub

481
00:22:56.935 --> 00:22:58.795
<00:22:56.935>and <00:22:57.168>it's, <00:22:57.401>the <00:22:57.635>community <00:22:57.868>is <00:22:58.101>quite <00:22:58.335>active.

482
00:22:58.975 --> 00:23:00.915
<00:22:58.975>We <00:22:59.175>are <00:22:59.375>working <00:22:59.574>on <00:22:59.774>support <00:22:59.975>for <00:23:00.175>other <00:23:00.375>languages.

483
00:23:01.075 --> 00:23:02.235
<00:23:01.075>I <00:23:01.336>think <00:23:01.597>Kotlin <00:23:01.858>is <00:23:02.119>next.

484
00:23:03.295 --> 00:23:06.835
<00:23:03.295>And <00:23:03.495>even <00:23:03.695>more <00:23:03.895>important, <00:23:04.095>it <00:23:04.295>underpins <00:23:04.495>the <00:23:04.695>CDK,

485
00:23:06.835 --> 00:23:07.955
<00:23:06.835>which <00:23:07.087>is <00:23:07.339>growing <00:23:07.591>a <00:23:07.842>lot

486
00:23:07.975 --> 00:23:10.035
<00:23:07.975>and <00:23:08.175>which <00:23:08.375>has <00:23:08.574>a <00:23:08.774>even <00:23:08.975>more <00:23:09.175>active <00:23:09.375>community,

487
00:23:10.145 --> 00:23:11.675
<00:23:10.145>15 <00:23:10.489>K <00:23:10.833>stars <00:23:11.177>on <00:23:11.522>GitHub.

488
00:23:12.375 --> 00:23:14.315
<00:23:12.375>And <00:23:12.608>this <00:23:12.841>is <00:23:13.075>really <00:23:13.308>the <00:23:13.541>foundation <00:23:13.775>of

489
00:23:14.315 --> 00:23:15.755
<00:23:14.315>that <00:23:14.639>makes <00:23:14.963>the <00:23:15.287>CDK <00:23:15.611>work.

490
00:23:16.015 --> 00:23:18.275
<00:23:16.015>So <00:23:16.295>GSI <00:23:16.575>is <00:23:16.855>not <00:23:17.135>going <00:23:17.415>anywhere.

491
00:23:18.505 --> 00:23:21.115
<00:23:18.505>However, <00:23:18.738>with <00:23:18.971>everything <00:23:19.205>there <00:23:19.438>are <00:23:19.671>some <00:23:19.905>drawbacks

492
00:23:21.535 --> 00:23:22.675
<00:23:21.535>and <00:23:21.791>there <00:23:22.048>are <00:23:22.304>some <00:23:22.561>challenges.

493
00:23:23.015 --> 00:23:26.715
<00:23:23.015>For <00:23:23.155>one, <00:23:23.295>the <00:23:23.435>complex, <00:23:23.575>uh, <00:23:23.715>the <00:23:23.855>setup <00:23:23.995>can <00:23:24.135>be <00:23:24.275>really <00:23:24.415>complex.

494
00:23:27.175 --> 00:23:29.595
<00:23:27.175>So <00:23:27.350>there <00:23:27.524>are <00:23:27.700>many <00:23:27.875>things <00:23:28.050>you <00:23:28.225>need <00:23:28.399>to <00:23:28.575>consider.

495
00:23:29.685 --> 00:23:33.395
<00:23:29.685>There <00:23:29.840>are, <00:23:29.996>um, <00:23:30.151>it's <00:23:30.307>easy <00:23:30.462>to <00:23:30.618>start <00:23:30.773>with <00:23:30.929>the <00:23:31.085>project

496
00:23:33.395 --> 00:23:34.875
<00:23:33.395>to <00:23:33.728>write <00:23:34.061>the <00:23:34.394>TypeScript <00:23:34.727>code,

497
00:23:35.095 --> 00:23:37.635
<00:23:35.095>but <00:23:35.295>then <00:23:35.495>getting <00:23:35.695>to <00:23:35.895>a <00:23:36.095>more <00:23:36.295>sophisticated <00:23:36.495>project

498
00:23:37.635 --> 00:23:38.635
<00:23:37.635>that <00:23:37.935>can <00:23:38.235>be <00:23:38.535>complex

499
00:23:38.975 --> 00:23:42.355
<00:23:38.975>and <00:23:39.149>the <00:23:39.324>limited <00:23:39.500>documentation <00:23:39.675>frankly <00:23:39.850>does <00:23:40.024>not <00:23:40.199>really <00:23:40.375>help.

500
00:23:42.935 --> 00:23:45.445
<00:23:42.935>So <00:23:43.110>this <00:23:43.284>is <00:23:43.460>something <00:23:43.635>that <00:23:43.810>JSI <00:23:43.985>can <00:23:44.159>really <00:23:44.335>improve.

501
00:23:45.825 --> 00:23:48.405
<00:23:45.825>And <00:23:46.058>when <00:23:46.291>it <00:23:46.525>comes <00:23:46.758>to, <00:23:46.991>uh, <00:23:47.225>documentation,

502
00:23:49.515 --> 00:23:51.965
<00:23:49.515>then <00:23:49.795>there's <00:23:50.075>apparently <00:23:50.355>the <00:23:50.635>performance <00:23:50.915>overhead.

503
00:23:52.065 --> 00:23:55.445
<00:23:52.065>So <00:23:52.220>if <00:23:52.376>you <00:23:52.531>need <00:23:52.687>to <00:23:52.842>code <00:23:52.998>your <00:23:53.153>message <00:23:53.309>into <00:23:53.465>Jason

504
00:23:55.585 --> 00:23:57.325
<00:23:55.585>and <00:23:55.785>Uncode <00:23:55.985>every <00:23:56.185>time <00:23:56.385>you <00:23:56.585>send <00:23:56.785>it <00:23:56.985>back

505
00:23:57.325 --> 00:23:59.485
<00:23:57.325>and <00:23:57.500>forth, <00:23:57.675>that <00:23:57.850>is <00:23:58.025>going <00:23:58.200>to <00:23:58.375>cause <00:23:58.550>compute <00:23:58.725>cycles.

506
00:23:59.485 --> 00:24:00.685
<00:23:59.485>And <00:23:59.665>that <00:23:59.844>can <00:24:00.024>easily <00:24:00.205>be <00:24:00.385>an <00:24:00.565>order

507
00:24:00.705 --> 00:24:03.245
<00:24:00.705>or <00:24:00.905>magnitude, <00:24:01.105>an <00:24:01.304>order <00:24:01.504>of <00:24:01.705>magnitude <00:24:01.905>or <00:24:02.105>two.

508
00:24:03.505 --> 00:24:05.245
<00:24:03.505>So <00:24:03.680>this <00:24:03.855>is <00:24:04.030>something <00:24:04.205>you <00:24:04.380>should <00:24:04.555>be <00:24:04.730>aware <00:24:04.905>of.

509
00:24:05.825 --> 00:24:08.885
<00:24:05.825>And <00:24:06.000>if <00:24:06.175>you <00:24:06.350>have <00:24:06.525>a <00:24:06.700>super <00:24:06.875>critical <00:24:07.050>execution <00:24:07.225>path,

510
00:24:09.215 --> 00:24:10.645
<00:24:09.215>don't <00:24:09.429>put <00:24:09.644>such <00:24:09.858>a <00:24:10.072>library <00:24:10.287>in <00:24:10.502>there.

511
00:24:10.645 --> 00:24:13.685
<00:24:10.645>But <00:24:10.772>because <00:24:10.899>there <00:24:11.026>is <00:24:11.154>going <00:24:11.281>to <00:24:11.408>be <00:24:11.535>a <00:24:11.663>tax <00:24:11.790>for, <00:24:11.917>uh, <00:24:12.045>the,

512
00:24:13.685 --> 00:24:15.285
<00:24:13.685>the <00:24:13.965>polyglot <00:24:14.245>nature <00:24:14.524>that <00:24:14.804>we <00:24:15.085>have,

513
00:24:15.995 --> 00:24:17.685
<00:24:15.995>debugging <00:24:16.344>is <00:24:16.695>not <00:24:17.044>always <00:24:17.395>easy.

514
00:24:19.205 --> 00:24:20.645
<00:24:19.205>Actually, <00:24:19.529>it's <00:24:19.853>almost <00:24:20.177>never <00:24:20.501>easy

515
00:24:20.645 --> 00:24:23.645
<00:24:20.645>because <00:24:20.845>the <00:24:21.045>debugging <00:24:21.245>messages <00:24:21.445>are <00:24:21.645>hard <00:24:21.845>to <00:24:22.045>read

516
00:24:23.745 --> 00:24:25.565
<00:24:23.745>and <00:24:24.024>often <00:24:24.304>hide <00:24:24.584>the <00:24:24.864>actual <00:24:25.145>problem.

517
00:24:26.065 --> 00:24:28.605
<00:24:26.065>So <00:24:26.265>that's <00:24:26.465>an <00:24:26.665>issue. <00:24:26.865>And <00:24:27.065>as <00:24:27.265>I <00:24:27.465>said,

518
00:24:28.625 --> 00:24:32.245
<00:24:28.625>or <00:24:28.752>as <00:24:28.879>I <00:24:29.006>outline <00:24:29.134>for <00:24:29.261>the <00:24:29.388>different <00:24:29.515>languages, <00:24:29.643>it <00:24:29.770>is, <00:24:29.897>you <00:24:30.025>try

519
00:24:32.245 --> 00:24:35.125
<00:24:32.245>to <00:24:32.478>find <00:24:32.711>a <00:24:32.945>common <00:24:33.178>denominator <00:24:33.411>between <00:24:33.645>languages

520
00:24:35.125 --> 00:24:36.925
<00:24:35.125>that <00:24:35.405>are <00:24:35.685>often <00:24:35.965>completely <00:24:36.245>different <00:24:36.525>in

521
00:24:36.925 --> 00:24:38.165
<00:24:36.925>their <00:24:37.483>design <00:24:38.041>principles.

522
00:24:38.795 --> 00:24:42.455
<00:24:38.795>That <00:24:38.970>is <00:24:39.145>also <00:24:39.320>a <00:24:39.495>challenge. <00:24:39.670>What <00:24:39.845>are <00:24:40.020>use <00:24:40.195>cases?

523
00:24:42.835 --> 00:24:45.615
<00:24:42.835>Uh, <00:24:43.010>so <00:24:43.185>infrastructures <00:24:43.360>code, <00:24:43.535>that's <00:24:43.710>where <00:24:43.885>we <00:24:44.060>started, <00:24:44.235>that's

524
00:24:45.615 --> 00:24:47.175
<00:24:45.615>where <00:24:45.895>it's <00:24:46.175>most <00:24:46.455>heavily <00:24:46.735>used <00:24:47.015>still.

525
00:24:47.675 --> 00:24:49.775
<00:24:47.675>Um, <00:24:47.830>and <00:24:47.986>it's <00:24:48.141>doing <00:24:48.297>a <00:24:48.452>great <00:24:48.608>job <00:24:48.763>with <00:24:48.919>the <00:24:49.075>CDK,

526
00:24:50.115 --> 00:24:51.455
<00:24:50.115>so <00:24:50.517>it's <00:24:50.918>really <00:24:51.321>fantastic.

527
00:24:52.195 --> 00:24:55.855
<00:24:52.195>Um, <00:24:52.395>for <00:24:52.595>the <00:24:52.794>CDK <00:24:52.995>for <00:24:53.195>cross <00:24:53.395>language <00:24:53.595>libraries,

528
00:24:56.155 --> 00:24:57.335
<00:24:56.155>um, <00:24:56.509>in <00:24:56.863>any <00:24:57.217>form.

529
00:24:57.555 --> 00:25:00.775
<00:24:57.555>So <00:24:57.695>assuming <00:24:57.835>you <00:24:57.975>want <00:24:58.115>to <00:24:58.255>make <00:24:58.395>like <00:24:58.535>moment <00:24:58.675>js <00:24:58.815>available <00:24:58.955>to

530
00:25:00.835 --> 00:25:02.615
<00:25:00.835>to <00:25:01.068>Java, <00:25:01.301>that's <00:25:01.535>something <00:25:01.768>you <00:25:02.001>can <00:25:02.235>consider.

531
00:25:02.995 --> 00:25:07.135
<00:25:02.995>Uh, <00:25:03.122>if <00:25:03.249>you <00:25:03.376>build <00:25:03.504>SDKs, <00:25:03.631>again, <00:25:03.758>be <00:25:03.885>aware <00:25:04.013>that <00:25:04.140>there <00:25:04.267>is, <00:25:04.395>uh,

532
00:25:07.605 --> 00:25:10.735
<00:25:07.605>latency <00:25:07.760>tax <00:25:07.916>in <00:25:08.071>the <00:25:08.227>sense <00:25:08.382>because <00:25:08.538>you <00:25:08.693>need <00:25:08.849>to <00:25:09.005>marshal

533
00:25:10.735 --> 00:25:13.095
<00:25:10.735>and <00:25:10.935>un <00:25:11.135>marshal <00:25:11.334>this <00:25:11.534>or <00:25:11.735>for <00:25:11.935>tooling <00:25:12.135>frameworks.

534
00:25:13.155 --> 00:25:15.455
<00:25:13.155>So <00:25:13.295>if <00:25:13.435>you <00:25:13.575>do <00:25:13.715>a <00:25:13.855>lot <00:25:13.995>of <00:25:14.135>DevOps <00:25:14.274>tooling, <00:25:14.415>coming <00:25:14.555>back

535
00:25:15.455 --> 00:25:18.175
<00:25:15.455>to <00:25:15.655>the <00:25:15.855>initial <00:25:16.054>example <00:25:16.254>where <00:25:16.455>you <00:25:16.655>have <00:25:16.855>microservices

536
00:25:18.435 --> 00:25:20.535
<00:25:18.435>and <00:25:18.610>you <00:25:18.784>have <00:25:18.960>this <00:25:19.135>cross-cutting <00:25:19.310>concerns, <00:25:19.485>I <00:25:19.659>don't <00:25:19.835>know,

537
00:25:20.535 --> 00:25:24.855
<00:25:20.535>logging, <00:25:20.710>whatever, <00:25:20.885>um, <00:25:21.060>this <00:25:21.235>can <00:25:21.410>be <00:25:21.585>a <00:25:21.760>good <00:25:21.935>choice.

538
00:25:26.715 --> 00:25:31.055
<00:25:26.715>So <00:25:26.855>coming <00:25:26.995>to <00:25:27.135>the <00:25:27.274>end, <00:25:27.415>um, <00:25:27.554>I <00:25:27.695>collected <00:25:27.834>all <00:25:27.975>those <00:25:28.115>resources.

539
00:25:31.135 --> 00:25:33.655
<00:25:31.135>I <00:25:31.335>linked <00:25:31.535>the, <00:25:31.735>the <00:25:31.935>Chase <00:25:32.135>I <00:25:32.335>documentation, <00:25:32.535>uh,

540
00:25:33.755 --> 00:25:35.935
<00:25:33.755>the <00:25:33.988>sample <00:25:34.221>I <00:25:34.455>wrote, <00:25:34.688>that's <00:25:34.921>on <00:25:35.155>GitHub.

541
00:25:36.395 --> 00:25:38.135
<00:25:36.395>Uh, <00:25:36.570>you <00:25:36.745>can <00:25:36.920>get <00:25:37.095>the <00:25:37.270>slides <00:25:37.445>there <00:25:37.620>as <00:25:37.795>well.

542
00:25:38.195 --> 00:25:41.615
<00:25:38.195>So <00:25:38.322>if <00:25:38.449>you <00:25:38.576>go <00:25:38.704>just <00:25:38.831>follow <00:25:38.958>the <00:25:39.085>QR <00:25:39.213>code <00:25:39.340>of, <00:25:39.467>um, <00:25:39.595>go

543
00:25:41.615 --> 00:25:43.895
<00:25:41.615>to <00:25:41.770>the <00:25:41.926>domain, <00:25:42.081>it <00:25:42.237>should <00:25:42.392>be <00:25:42.548>fairly <00:25:42.703>easy <00:25:42.859>to <00:25:43.015>remember.

544
00:25:44.195 --> 00:25:45.735
<00:25:44.195>You <00:25:44.393>will <00:25:44.591>find <00:25:44.789>the <00:25:44.986>slides <00:25:45.185>there <00:25:45.382>as <00:25:45.581>well.

545
00:25:46.835 --> 00:25:49.215
<00:25:46.835>And <00:25:47.068>yeah, <00:25:47.301>I <00:25:47.535>hope <00:25:47.768>you <00:25:48.001>learned <00:25:48.235>something

546
00:25:49.515 --> 00:25:53.215
<00:25:49.515>and <00:25:49.655>you're <00:25:49.795>not <00:25:49.935>trying <00:25:50.075>out <00:25:50.215>JSII, <00:25:50.355>I <00:25:50.495>want <00:25:50.635>to <00:25:50.775>thank <00:25:50.915>you

547
00:25:53.215 --> 00:25:55.095
<00:25:53.215>for <00:25:53.564>your <00:25:53.915>time <00:25:54.264>and <00:25:54.615>want

548
00:25:55.095 --> 00:25:56.895
<00:25:55.095>to <00:25:55.270>kindly <00:25:55.445>ask <00:25:55.620>you <00:25:55.795>to <00:25:55.970>fill <00:25:56.145>out <00:25:56.320>the <00:25:56.495>survey.

549
00:25:56.955 --> 00:25:59.815
<00:25:56.955>So <00:25:57.095>this <00:25:57.235>is <00:25:57.375>a <00:25:57.514>survey. <00:25:57.655>Just <00:25:57.794>give <00:25:57.935>feedback, <00:25:58.074>takes <00:25:58.215>10 <00:25:58.355>seconds

550
00:26:00.555 --> 00:26:02.655
<00:26:00.555>and <00:26:00.695>let <00:26:00.835>me <00:26:00.975>know <00:26:01.115>what <00:26:01.255>you <00:26:01.395>liked, <00:26:01.535>what <00:26:01.675>you <00:26:01.815>didn't <00:26:01.955>like,

551
00:26:03.315 --> 00:26:04.935
<00:26:03.315>and <00:26:03.548>yeah, <00:26:03.781>thank <00:26:04.015>you <00:26:04.248>for <00:26:04.481>your <00:26:04.715>time.

552
00:26:04.935 --> 00:26:05.935
<00:26:04.935>And <00:26:05.159>then <00:26:05.385>enjoy <00:26:05.610>your <00:26:05.835>party.