WEBVTT

1
00:00:04.915 --> 00:00:06.135
<00:00:04.915>So, <00:00:05.134>hi, <00:00:05.354>my <00:00:05.573>name <00:00:05.793>is <00:00:06.013>Marco.

2
00:00:06.495 --> 00:00:08.575
<00:00:06.495>I <00:00:06.695>think <00:00:06.895>I've <00:00:07.095>been <00:00:07.295>like, <00:00:07.495>uh, <00:00:07.695>thoroughly <00:00:07.895>introduced.

3
00:00:08.775 --> 00:00:11.975
<00:00:08.775>I <00:00:08.950>will <00:00:09.125>talk <00:00:09.300>to <00:00:09.475>you <00:00:09.650>about <00:00:09.825>end-to-end <00:00:10.000>type <00:00:10.175>script

4
00:00:12.315 --> 00:00:14.815
<00:00:12.315>and <00:00:12.490>how <00:00:12.665>you <00:00:12.840>can <00:00:13.014>complete <00:00:13.190>the <00:00:13.364>modern <00:00:13.540>development <00:00:13.715>stack.

5
00:00:15.055 --> 00:00:17.655
<00:00:15.055>I <00:00:15.182>will <00:00:15.309>dive <00:00:15.436>into <00:00:15.564>like <00:00:15.691>all <00:00:15.818>of <00:00:15.945>the <00:00:16.073>words <00:00:16.200>basically <00:00:16.327>that <00:00:16.455>are,

6
00:00:17.655 --> 00:00:19.135
<00:00:17.655>um, <00:00:17.921>on <00:00:18.187>screen <00:00:18.454>at <00:00:18.720>this <00:00:18.987>moment.

7
00:00:19.915 --> 00:00:23.335
<00:00:19.915>I'm <00:00:20.090>a <00:00:20.265>developer <00:00:20.439>relations <00:00:20.615>advocate <00:00:20.790>at <00:00:20.965>the <00:00:21.140>Aran <00:00:21.314>Foundation,

8
00:00:23.475 --> 00:00:26.895
<00:00:23.475>and <00:00:23.675>the <00:00:23.875>Aran <00:00:24.075>Foundation <00:00:24.275>is <00:00:24.475>fostering <00:00:24.675>an <00:00:24.875>ecosystem

9
00:00:26.895 --> 00:00:28.295
<00:00:26.895>around <00:00:27.210>the <00:00:27.525>a <00:00:27.840>Goran <00:00:28.155>blockchain.

10
00:00:28.295 --> 00:00:30.415
<00:00:28.295>Something <00:00:28.450>that <00:00:28.606>I <00:00:28.761>would <00:00:28.917>all <00:00:29.072>of <00:00:29.228>you, <00:00:29.383>I <00:00:29.539>would <00:00:29.695>like

11
00:00:30.415 --> 00:00:32.895
<00:00:30.415>to <00:00:30.542>invite <00:00:30.669>all <00:00:30.796>of <00:00:30.924>you <00:00:31.051>to <00:00:31.178>talk <00:00:31.305>to <00:00:31.433>me <00:00:31.560>more <00:00:31.687>about, <00:00:31.814>uh,

12
00:00:33.195 --> 00:00:35.135
<00:00:33.195>at <00:00:33.395>the <00:00:33.595>Boost <00:00:33.795>2 <00:00:33.995>22 <00:00:34.195>right <00:00:34.395>over <00:00:34.595>there.

13
00:00:35.235 --> 00:00:36.455
<00:00:35.235>But <00:00:35.391>I <00:00:35.548>will <00:00:35.705>also <00:00:35.862>get <00:00:36.019>back <00:00:36.176>to <00:00:36.333>that

14
00:00:36.515 --> 00:00:38.735
<00:00:36.515>and <00:00:36.642>I <00:00:36.769>hope <00:00:36.896>I <00:00:37.024>can <00:00:37.151>give <00:00:37.278>you <00:00:37.405>a <00:00:37.533>little <00:00:37.660>bit <00:00:37.787>of <00:00:37.915>appetite

15
00:00:38.955 --> 00:00:41.295
<00:00:38.955>for <00:00:39.129>a <00:00:39.305>couple <00:00:39.480>of <00:00:39.655>topics <00:00:39.830>we <00:00:40.004>might <00:00:40.180>discuss <00:00:40.355>there.

16
00:00:42.285 --> 00:00:43.695
<00:00:42.285>Aran <00:00:42.602>is <00:00:42.919>an <00:00:43.236>energy <00:00:43.554>efficient,

17
00:00:43.695 --> 00:00:46.735
<00:00:43.695>quantum <00:00:43.895>secure <00:00:44.095>single <00:00:44.295>layer <00:00:44.495>blockchain <00:00:44.695>with <00:00:44.895>instant <00:00:45.095>ity,

18
00:00:46.735 --> 00:00:48.455
<00:00:46.735>consistently <00:00:47.015>high <00:00:47.295>throughput <00:00:47.575>and <00:00:47.855>low <00:00:48.135>fees.

19
00:00:48.645 --> 00:00:51.295
<00:00:48.645>It's <00:00:48.820>been <00:00:48.995>operating <00:00:49.170>at <00:00:49.345>100% <00:00:49.520>uptime <00:00:49.695>for <00:00:49.870>six <00:00:50.045>years,

20
00:00:51.755 --> 00:00:54.855
<00:00:51.755>and <00:00:51.871>that <00:00:51.988>will <00:00:52.105>be <00:00:52.221>all <00:00:52.338>of <00:00:52.455>it, <00:00:52.571>uh, <00:00:52.688>about <00:00:52.805>Aran <00:00:52.921>for <00:00:53.038>the <00:00:53.155>rest

21
00:00:54.855 --> 00:00:56.535
<00:00:54.855>of <00:00:55.088>this <00:00:55.321>talk <00:00:55.555>until <00:00:55.788>the <00:00:56.021>very <00:00:56.254>end.

22
00:00:57.155 --> 00:01:00.295
<00:00:57.155>So <00:00:57.355>we <00:00:57.555>want <00:00:57.755>to <00:00:57.955>first <00:00:58.155>dig <00:00:58.355>into <00:00:58.555>TypeScript.

23
00:01:01.155 --> 00:01:03.575
<00:01:01.155>Who <00:01:01.388>of <00:01:01.621>you <00:01:01.855>is <00:01:02.088>a <00:01:02.321>TypeScript <00:01:02.555>developer?

24
00:01:05.115 --> 00:01:07.215
<00:01:05.114>That's, <00:01:05.289>that's <00:01:05.464>kind <00:01:05.640>of <00:01:05.815>a <00:01:05.990>lot. <00:01:06.164>That's <00:01:06.339>very <00:01:06.515>good.

25
00:01:07.915 --> 00:01:09.455
<00:01:07.915>So <00:01:08.146>I <00:01:08.377>can <00:01:08.608>probably <00:01:08.839>cut <00:01:09.070>this <00:01:09.301>short.

26
00:01:09.595 --> 00:01:13.095
<00:01:09.595>So <00:01:09.795>TypeScript <00:01:09.995>is <00:01:10.195>consistently <00:01:10.395>among <00:01:10.595>the <00:01:10.795>most <00:01:10.995>popular

27
00:01:13.695 --> 00:01:16.295
<00:01:13.695>languages <00:01:13.928>for <00:01:14.161>a <00:01:14.395>number <00:01:14.628>of <00:01:14.861>use <00:01:15.095>cases

28
00:01:16.555 --> 00:01:18.095
<00:01:16.555>for <00:01:16.901>a <00:01:17.248>number <00:01:17.594>of <00:01:17.941>frameworks.

29
00:01:18.475 --> 00:01:20.095
<00:01:18.475>Um, <00:01:18.675>we <00:01:18.875>have <00:01:19.074>a <00:01:19.274>couple <00:01:19.475>of <00:01:19.675>examples <00:01:19.875>here.

30
00:01:20.575 --> 00:01:24.095
<00:01:20.575>A <00:01:20.702>lot <00:01:20.829>of <00:01:20.956>them <00:01:21.084>are, <00:01:21.211>um, <00:01:21.338>to <00:01:21.465>be <00:01:21.593>fair, <00:01:21.720>written <00:01:21.847>in, <00:01:21.975>uh,

31
00:01:24.095 --> 00:01:26.855
<00:01:24.095>JavaScript, <00:01:24.375>but <00:01:24.655>you <00:01:24.935>have <00:01:25.215>TypeScript <00:01:25.495>ports

32
00:01:26.875 --> 00:01:28.295
<00:01:26.875>for <00:01:27.130>basically <00:01:27.386>all <00:01:27.641>of <00:01:27.897>them, <00:01:28.153>right?

33
00:01:28.555 --> 00:01:30.975
<00:01:28.555>So <00:01:28.755>it's <00:01:28.955>fair <00:01:29.155>to <00:01:29.355>say <00:01:29.555>that <00:01:29.755>TypeScript <00:01:29.955>is

34
00:01:30.985 --> 00:01:33.015
<00:01:30.985>among <00:01:31.265>the <00:01:31.545>most <00:01:31.825>popular <00:01:32.105>programming <00:01:32.385>languages

35
00:01:33.015 --> 00:01:34.175
<00:01:33.015>that <00:01:33.363>are <00:01:33.711>around <00:01:34.059>nowadays.

36
00:01:35.385 --> 00:01:38.575
<00:01:35.384>TypeScript <00:01:35.585>is <00:01:35.785>a <00:01:35.984>superset <00:01:36.184>of <00:01:36.384>JavaScript <00:01:36.585>has <00:01:36.785>been

37
00:01:38.575 --> 00:01:43.215
<00:01:38.575>around <00:01:38.750>since <00:01:38.925>2012 <00:01:39.100>and <00:01:39.275>is <00:01:39.450>primarily <00:01:39.625>supported <00:01:39.800>by <00:01:39.975>Microsoft

38
00:01:43.475 --> 00:01:46.455
<00:01:43.475>and <00:01:43.708>was, <00:01:43.941>uh, <00:01:44.175>conceived <00:01:44.408>by <00:01:44.641>ANDAs <00:01:44.875>Berg.

39
00:01:46.795 --> 00:01:49.815
<00:01:46.795>And <00:01:46.935>he <00:01:47.075>is <00:01:47.215>actually <00:01:47.355>behind <00:01:47.495>like <00:01:47.635>a <00:01:47.775>lot <00:01:47.915>of <00:01:48.055>other, <00:01:48.195>um,

40
00:01:49.815 --> 00:01:52.375
<00:01:49.815>programming <00:01:50.095>languages <00:01:50.375>and <00:01:50.655>programming <00:01:50.935>language <00:01:51.215>projects.

41
00:01:52.675 --> 00:01:54.615
<00:01:52.675>So <00:01:52.830>if <00:01:52.986>you <00:01:53.141>want <00:01:53.297>to <00:01:53.452>learn <00:01:53.608>more <00:01:53.763>about <00:01:53.919>that, <00:01:54.075>um,

42
00:01:54.895 --> 00:01:56.455
<00:01:54.895>I <00:01:55.095>guess <00:01:55.295>you <00:01:55.495>can <00:01:55.695>look <00:01:55.895>it <00:01:56.095>up <00:01:56.295>yourself.

43
00:01:58.655 --> 00:02:00.255
<00:01:58.655>I <00:01:58.855>don't <00:01:59.055>think <00:01:59.255>I <00:01:59.455>have <00:01:59.655>to <00:01:59.855>tell <00:02:00.055>most

44
00:02:00.255 --> 00:02:03.095
<00:02:00.255>of <00:02:00.488>you <00:02:00.721>why <00:02:00.955>TypeScript <00:02:01.188>is <00:02:01.421>so <00:02:01.655>powerful.

45
00:02:03.955 --> 00:02:08.055
<00:02:03.955>Who <00:02:04.188>of <00:02:04.421>you <00:02:04.655>prefers <00:02:04.888>TypeScript <00:02:05.121>over <00:02:05.355>JavaScript?

46
00:02:10.095 --> 00:02:11.615
<00:02:10.095>I <00:02:10.368>think <00:02:10.642>that's, <00:02:10.915>that's <00:02:11.189>basically <00:02:11.463>everyone,

47
00:02:11.795 --> 00:02:14.655
<00:02:11.795>and <00:02:11.950>I <00:02:12.106>hope <00:02:12.261>this <00:02:12.417>is <00:02:12.572>mostly <00:02:12.728>because <00:02:12.883>of <00:02:13.039>this, <00:02:13.195>right?

48
00:02:14.655 --> 00:02:16.215
<00:02:14.655>It's <00:02:14.888>in <00:02:15.121>the <00:02:15.355>name <00:02:15.588>because <00:02:15.821>of <00:02:16.055>types.

49
00:02:16.915 --> 00:02:20.255
<00:02:16.915>You <00:02:17.148>have <00:02:17.381>the <00:02:17.614>possibility <00:02:17.848>to <00:02:18.081>define <00:02:18.315>types

50
00:02:21.365 --> 00:02:23.695
<00:02:21.365>that <00:02:21.715>basically <00:02:22.065>give <00:02:22.415>you <00:02:22.765>certainty

51
00:02:23.705 --> 00:02:24.935
<00:02:23.704>about <00:02:23.926>the <00:02:24.147>code <00:02:24.369>that <00:02:24.590>you <00:02:24.812>write.

52
00:02:25.075 --> 00:02:26.935
<00:02:25.075>You <00:02:25.541>can <00:02:26.008>assert <00:02:26.475>expectations

53
00:02:26.935 --> 00:02:28.215
<00:02:26.935>against <00:02:27.165>the <00:02:27.395>structure <00:02:27.626>that <00:02:27.856>you <00:02:28.087>have.

54
00:02:28.755 --> 00:02:30.975
<00:02:28.755>Um, <00:02:29.105>you <00:02:29.454>can <00:02:29.805>improve <00:02:30.155>readability

55
00:02:31.435 --> 00:02:34.015
<00:02:31.435>and <00:02:31.635>with <00:02:31.835>readability <00:02:32.035>comes <00:02:32.235>a <00:02:32.435>whole <00:02:32.635>red <00:02:32.835>tail

56
00:02:34.075 --> 00:02:38.335
<00:02:34.075>of <00:02:34.308>things <00:02:34.541>like <00:02:34.774>testing, <00:02:35.008>refactoring, <00:02:35.241>programming <00:02:35.475>velocity,

57
00:02:38.335 --> 00:02:40.575
<00:02:38.335>because <00:02:38.510>you <00:02:38.685>can <00:02:38.860>skip <00:02:39.035>all <00:02:39.210>the <00:02:39.385>type <00:02:39.560>checking <00:02:39.735>stuff.

58
00:02:40.925 --> 00:02:43.255
<00:02:40.925>It's <00:02:41.158>collaboration, <00:02:41.391>it's <00:02:41.625>easier <00:02:41.858>to <00:02:42.091>onboard <00:02:42.325>people.

59
00:02:43.635 --> 00:02:45.375
<00:02:43.635>The <00:02:44.101>code <00:02:44.568>itself <00:02:45.035>documenting

60
00:02:45.875 --> 00:02:48.655
<00:02:45.875>and <00:02:46.030>the <00:02:46.186>velocity <00:02:46.341>actually <00:02:46.497>repeated <00:02:46.652>here <00:02:46.808>with <00:02:46.963>a <00:02:47.119>question <00:02:47.275>mark

61
00:02:48.655 --> 00:02:52.015
<00:02:48.655>because <00:02:48.830>sometimes <00:02:49.005>it <00:02:49.180>takes <00:02:49.355>a <00:02:49.530>little <00:02:49.705>bit <00:02:49.880>longer <00:02:50.055>actually

62
00:02:52.015 --> 00:02:53.455
<00:02:52.015>to <00:02:52.446>write <00:02:52.879>types, <00:02:53.310>right?

63
00:02:53.595 --> 00:02:55.455
<00:02:53.595>So <00:02:53.795>who <00:02:53.995>would <00:02:54.195>agree <00:02:54.395>that <00:02:54.595>types <00:02:54.795>are <00:02:54.995>not

64
00:02:55.455 --> 00:02:57.015
<00:02:55.454>always <00:02:56.855>straightforward.

65
00:02:58.415 --> 00:03:00.605
<00:02:58.415>Okay, <00:02:58.614>that's <00:02:58.815>a <00:02:59.015>lot <00:02:59.215>less. <00:02:59.415>So <00:02:59.614>very <00:02:59.815>good.

66
00:03:00.665 --> 00:03:02.085
<00:03:00.665>You <00:03:00.878>most <00:03:01.091>of <00:03:01.304>you <00:03:01.517>think <00:03:01.730>that, <00:03:01.943>uh,

67
00:03:02.325 --> 00:03:03.365
<00:03:02.325>creating <00:03:02.637>types <00:03:02.949>are <00:03:03.261>straightforward.

68
00:03:03.685 --> 00:03:06.005
<00:03:03.685>I <00:03:03.812>will <00:03:03.939>have <00:03:04.066>an <00:03:04.194>example <00:03:04.321>or <00:03:04.448>like <00:03:04.575>I <00:03:04.703>will <00:03:04.830>have <00:03:04.957>a <00:03:05.085>quote

69
00:03:06.005 --> 00:03:07.725
<00:03:06.005>of <00:03:06.238>someone <00:03:06.471>who <00:03:06.704>might <00:03:06.938>disagree <00:03:07.171>with <00:03:07.405>you

70
00:03:08.025 --> 00:03:10.085
<00:03:08.025>and <00:03:08.200>he <00:03:08.375>has <00:03:08.550>a <00:03:08.725>bit <00:03:08.900>of <00:03:09.075>background <00:03:09.250>for <00:03:09.425>that.

71
00:03:10.435 --> 00:03:11.885
<00:03:10.435>Whoever <00:03:10.696>you <00:03:10.957>knows <00:03:11.218>who <00:03:11.478>that <00:03:11.739>is.

72
00:03:13.565 --> 00:03:14.585
<00:03:13.565>Oh, <00:03:13.748>that's <00:03:13.932>not <00:03:14.115>too <00:03:14.299>many <00:03:14.483>people.

73
00:03:14.685 --> 00:03:16.065
<00:03:14.685>So <00:03:15.099>this <00:03:15.513>is <00:03:15.927>DHH

74
00:03:16.525 --> 00:03:19.865
<00:03:16.525>and <00:03:16.641>of <00:03:16.758>course <00:03:16.875>you <00:03:16.991>can <00:03:17.108>see <00:03:17.225>here <00:03:17.341>on <00:03:17.458>the <00:03:17.575>slide <00:03:17.691>that <00:03:17.808>he's <00:03:17.925>one

75
00:03:19.865 --> 00:03:22.825
<00:03:19.865>of <00:03:19.981>my <00:03:20.098>best <00:03:20.215>homies <00:03:20.331>and <00:03:20.448>this <00:03:20.565>is <00:03:20.681>totally <00:03:20.798>not <00:03:20.915>a <00:03:21.031>random <00:03:21.148>selfie <00:03:21.265>I

76
00:03:22.825 --> 00:03:24.345
<00:03:22.825>took <00:03:23.098>last <00:03:23.372>year <00:03:23.645>at <00:03:23.919>this <00:03:24.192>conference.

77
00:03:25.045 --> 00:03:29.465
<00:03:25.045>And <00:03:25.172>this <00:03:25.299>is <00:03:25.426>the <00:03:25.554>guy <00:03:25.681>who <00:03:25.808>presented <00:03:25.935>in <00:03:26.063>2005 <00:03:26.190>Ruby <00:03:26.317>on <00:03:26.445>Rails.

78
00:03:29.715 --> 00:03:32.025
<00:03:29.715>David <00:03:29.995>Meyer <00:03:30.275>Hanson, <00:03:30.555>who <00:03:30.835>has <00:03:31.115>heard

79
00:03:32.025 --> 00:03:33.265
<00:03:32.025>that <00:03:32.248>or <00:03:32.471>one <00:03:32.694>of <00:03:32.917>those <00:03:33.141>things.

80
00:03:33.335 --> 00:03:36.665
<00:03:33.335>Ruby <00:03:33.615>on <00:03:33.895>Rails. <00:03:34.175>David <00:03:34.455>Meyer <00:03:34.735>Hanson.

81
00:03:36.845 --> 00:03:38.705
<00:03:36.845>So <00:03:37.125>he's <00:03:37.405>also <00:03:37.685>operating <00:03:37.965>a <00:03:38.245>couple

82
00:03:38.705 --> 00:03:40.745
<00:03:38.704>of <00:03:39.054>other <00:03:39.404>open <00:03:39.755>source <00:03:40.105>libraries.

83
00:03:40.745 --> 00:03:41.865
<00:03:40.745>He <00:03:40.997>has <00:03:41.249>this <00:03:41.501>email <00:03:41.753>service

84
00:03:41.965 --> 00:03:43.545
<00:03:41.965>hey.com, <00:03:42.245>maybe <00:03:42.525>you've <00:03:42.805>heard <00:03:43.085>of <00:03:43.365>that.

85
00:03:43.615 --> 00:03:45.185
<00:03:43.615>That <00:03:43.895>has <00:03:44.175>been <00:03:44.455>pretty <00:03:44.735>popular <00:03:45.015>lately.

86
00:03:45.845 --> 00:03:48.345
<00:03:45.845>And <00:03:46.125>um, <00:03:46.405>in <00:03:46.685>his <00:03:46.965>TypeScript <00:03:47.245>projects,

87
00:03:49.265 --> 00:03:51.165
<00:03:49.265>he <00:03:49.614>actually <00:03:49.964>started <00:03:50.315>ditching <00:03:50.665>TypeScript

88
00:03:51.345 --> 00:03:52.965
<00:03:51.345>for <00:03:51.695>the <00:03:52.045>library <00:03:52.395>development <00:03:52.745>itself

89
00:03:52.995 --> 00:03:57.035
<00:03:52.995>because <00:03:53.275>types <00:03:53.555>can <00:03:53.835>become <00:03:54.115>very <00:03:54.395>complex.

90
00:03:57.785 --> 00:04:01.755
<00:03:57.785>There's <00:03:57.924>a <00:03:58.065>long <00:03:58.204>post <00:03:58.345>where <00:03:58.484>he <00:03:58.625>is <00:03:58.765>like <00:03:58.905>elaborating <00:03:59.045>on <00:03:59.185>that.

91
00:04:02.335 --> 00:04:04.235
<00:04:02.335>But <00:04:02.510>what <00:04:02.685>he's <00:04:02.860>saying <00:04:03.035>in <00:04:03.210>the <00:04:03.385>end <00:04:03.560>is <00:04:03.735>that

92
00:04:04.255 --> 00:04:07.435
<00:04:04.255>as <00:04:04.454>the <00:04:04.655>library <00:04:04.855>vendors <00:04:05.055>satisfying <00:04:05.255>all <00:04:05.454>the <00:04:05.655>clients

93
00:04:07.435 --> 00:04:09.875
<00:04:07.435>that <00:04:07.610>may <00:04:07.785>consume <00:04:07.960>your <00:04:08.135>stuff, <00:04:08.310>it's <00:04:08.485>the <00:04:08.660>difficult <00:04:08.835>part.

94
00:04:10.135 --> 00:04:12.835
<00:04:10.135>He <00:04:10.310>does <00:04:10.484>not <00:04:10.660>advocate <00:04:10.834>against <00:04:11.010>types <00:04:11.185>strip <00:04:11.359>per <00:04:11.535>se,

95
00:04:13.135 --> 00:04:14.795
<00:04:13.135>and <00:04:13.601>he <00:04:14.068>keeps <00:04:14.535>providing

96
00:04:14.825 --> 00:04:17.755
<00:04:14.825>through <00:04:15.058>a <00:04:15.291>library <00:04:15.524>called <00:04:15.758>JS <00:04:15.991>Doc <00:04:16.224>compatibility

97
00:04:17.815 --> 00:04:18.915
<00:04:17.815>to <00:04:18.310>TypeScript <00:04:18.805>projects.

98
00:04:19.135 --> 00:04:22.275
<00:04:19.135>So <00:04:19.310>I <00:04:19.485>hope <00:04:19.659>that <00:04:19.834>most <00:04:20.010>of <00:04:20.185>you <00:04:20.360>actually <00:04:20.534>tend

99
00:04:22.275 --> 00:04:25.115
<00:04:22.275>to <00:04:22.414>disagree <00:04:22.554>apparently <00:04:22.695>with <00:04:22.835>me, <00:04:22.974>but <00:04:23.114>types <00:04:23.255>are <00:04:23.395>kind <00:04:23.534>of <00:04:23.674>hard

100
00:04:25.135 --> 00:04:27.195
<00:04:25.135>and <00:04:25.368>getting <00:04:25.601>types <00:04:25.835>right <00:04:26.068>is <00:04:26.301>double <00:04:26.534>hard.

101
00:04:27.265 --> 00:04:30.675
<00:04:27.265>This <00:04:27.440>is <00:04:27.615>why <00:04:27.789>I <00:04:27.965>think <00:04:28.140>that <00:04:28.315>types <00:04:28.490>don't <00:04:28.664>always

102
00:04:32.865 --> 00:04:35.395
<00:04:32.865>improve <00:04:33.145>the <00:04:33.425>velocity <00:04:33.705>of <00:04:33.985>creating <00:04:34.265>code.

103
00:04:36.225 --> 00:04:37.675
<00:04:36.225>They <00:04:37.530>undeniably,

104
00:04:37.675 --> 00:04:40.675
<00:04:37.675>however, <00:04:37.850>in <00:04:38.025>my <00:04:38.200>opinion, <00:04:38.375>make <00:04:38.550>it <00:04:38.725>easier <00:04:38.900>to <00:04:39.075>maintain

105
00:04:40.735 --> 00:04:43.355
<00:04:40.735>and <00:04:40.935>over <00:04:41.135>time <00:04:41.335>they <00:04:41.535>will <00:04:41.735>increase <00:04:41.935>the <00:04:42.135>velocity,

106
00:04:45.055 --> 00:04:48.365
<00:04:45.055>especially <00:04:45.288>when <00:04:45.521>you <00:04:45.755>use <00:04:45.988>the <00:04:46.221>whole <00:04:46.455>toolbox

107
00:04:48.625 --> 00:04:50.165
<00:04:48.625>around <00:04:49.318>TypeScript <00:04:50.011>itself.

108
00:04:50.625 --> 00:04:53.365
<00:04:50.625>It <00:04:50.858>starts <00:04:51.091>with, <00:04:51.325>um, <00:04:51.558>the <00:04:51.791>TypeScript <00:04:52.025>compiler.

109
00:04:54.145 --> 00:04:57.085
<00:04:54.145>So <00:04:54.300>the, <00:04:54.456>the <00:04:54.611>TSC <00:04:54.767>is <00:04:54.922>probably <00:04:55.078>something <00:04:55.233>that, <00:04:55.389>um, <00:04:55.544>most

110
00:04:57.085 --> 00:05:00.005
<00:04:57.085>of <00:04:57.240>you <00:04:57.396>have <00:04:57.551>have <00:04:57.707>used <00:04:57.862>and <00:04:58.018>seen <00:04:58.173>who <00:04:58.329>used <00:04:58.484>TSC.

111
00:05:01.665 --> 00:05:03.555
<00:05:01.665>Okay, <00:05:01.898>that's, <00:05:02.131>that's <00:05:02.365>fewer <00:05:02.598>people <00:05:02.831>than <00:05:03.065>before.

112
00:05:03.815 --> 00:05:06.935
<00:05:03.815>Um, <00:05:04.165>we <00:05:04.515>have <00:05:04.865>TSX. <00:05:05.215>Okay?

113
00:05:06.935 --> 00:05:09.935
<00:05:06.935>There's <00:05:07.135>like <00:05:07.335>NPX, <00:05:07.535>you <00:05:07.735>can <00:05:07.935>like <00:05:08.135>directly <00:05:08.335>execute.

114
00:05:10.235 --> 00:05:13.775
<00:05:10.235>Um, <00:05:10.375>it's <00:05:10.515>like <00:05:10.655>something <00:05:10.795>that <00:05:10.935>you <00:05:11.075>grab <00:05:11.215>from, <00:05:11.355>from <00:05:11.495>npm <00:05:11.635>uh,

115
00:05:13.915 --> 00:05:16.135
<00:05:13.915>js.org <00:05:14.090>or <00:05:14.265>from <00:05:14.440>from <00:05:14.615>one <00:05:14.790>of <00:05:14.965>the <00:05:15.140>other <00:05:15.315>libraries

116
00:05:16.675 --> 00:05:18.575
<00:05:16.675>or <00:05:16.908>the <00:05:17.141>directories <00:05:17.375>that <00:05:17.608>are <00:05:17.841>around <00:05:18.075>now.

117
00:05:18.915 --> 00:05:20.455
<00:05:18.915>And <00:05:19.192>we <00:05:19.469>have <00:05:19.746>the <00:05:20.023>TS <00:05:20.301>config.

118
00:05:20.485 --> 00:05:22.695
<00:05:20.485>This <00:05:20.685>is <00:05:20.885>one <00:05:21.085>of <00:05:21.285>your <00:05:21.485>most <00:05:21.685>powerful <00:05:21.885>allies.

119
00:05:22.695 --> 00:05:23.775
<00:05:22.695>When <00:05:23.019>you <00:05:23.342>write <00:05:23.667>TypeScript,

120
00:05:24.285 --> 00:05:25.575
<00:05:24.285>when <00:05:24.517>you <00:05:24.749>start <00:05:24.981>a <00:05:25.213>TypeScript <00:05:25.445>project,

121
00:05:25.955 --> 00:05:28.335
<00:05:25.955>who <00:05:26.234>is <00:05:26.515>touching <00:05:26.794>the <00:05:27.075>TS <00:05:27.354>config

122
00:05:28.475 --> 00:05:29.935
<00:05:28.475>or <00:05:28.662>do <00:05:28.850>you <00:05:29.038>just <00:05:29.225>go <00:05:29.413>with <00:05:29.601>a <00:05:29.789>default?

123
00:05:30.745 --> 00:05:34.275
<00:05:30.745>Okay, <00:05:30.920>that's, <00:05:31.095>that's <00:05:31.270>about <00:05:31.445>half <00:05:31.620>of <00:05:31.795>the <00:05:31.970>people. <00:05:32.145>Okay?

124
00:05:34.335 --> 00:05:35.475
<00:05:34.335>So <00:05:34.677>most <00:05:35.019>people <00:05:35.361>like,

125
00:05:35.475 --> 00:05:37.235
<00:05:35.475>or <00:05:35.650>half <00:05:35.825>of <00:05:36.000>the <00:05:36.175>people <00:05:36.350>go <00:05:36.525>with <00:05:36.700>a <00:05:36.875>default.

126
00:05:38.195 --> 00:05:39.515
<00:05:38.195>I <00:05:38.343>would <00:05:38.492>say <00:05:38.640>there <00:05:38.789>are <00:05:38.937>a <00:05:39.086>couple <00:05:39.234>of <00:05:39.383>things

127
00:05:39.515 --> 00:05:40.915
<00:05:39.515>that <00:05:39.724>you <00:05:39.935>might <00:05:40.145>want <00:05:40.355>to <00:05:40.565>look <00:05:40.775>into.

128
00:05:41.055 --> 00:05:43.475
<00:05:41.055>You <00:05:41.210>maybe <00:05:41.366>want <00:05:41.521>to <00:05:41.677>be <00:05:41.832>compatible <00:05:41.988>to <00:05:42.143>the <00:05:42.299>newest <00:05:42.455>features.

129
00:05:43.535 --> 00:05:45.315
<00:05:43.534>You <00:05:43.734>can <00:05:43.934>set <00:05:44.135>that <00:05:44.335>in <00:05:44.534>the <00:05:44.734>ts <00:05:44.934>confis

130
00:05:45.315 --> 00:05:48.635
<00:05:45.315>or <00:05:45.470>you <00:05:45.626>can <00:05:45.781>work <00:05:45.937>against <00:05:46.092>uh, <00:05:46.248>the <00:05:46.403>news, <00:05:46.559>JavaScript <00:05:46.715>features,

131
00:05:48.975 --> 00:05:50.235
<00:05:48.975>the <00:05:49.353>news, <00:05:49.731>TypeScript <00:05:50.109>features.

132
00:05:50.655 --> 00:05:52.155
<00:05:50.655>And <00:05:50.880>there's <00:05:51.104>like <00:05:51.330>one <00:05:51.554>thing <00:05:51.780>in <00:05:52.005>there

133
00:05:52.385 --> 00:05:54.755
<00:05:52.385>that <00:05:52.618>I <00:05:52.851>specifically <00:05:53.085>find <00:05:53.318>like <00:05:53.551>super <00:05:53.784>important,

134
00:05:55.045 --> 00:05:59.005
<00:05:55.045>especially <00:05:55.220>following, <00:05:55.395>uh, <00:05:55.570>the <00:05:55.745>quote <00:05:55.920>here <00:05:56.095>that, <00:05:56.270>um, <00:05:56.445>things

135
00:05:59.005 --> 00:06:00.285
<00:05:59.005>that <00:05:59.235>should <00:05:59.465>be <00:05:59.696>easy <00:05:59.926>become <00:06:00.157>hard

136
00:06:00.285 --> 00:06:04.765
<00:06:00.285>and <00:06:00.412>things <00:06:00.539>that <00:06:00.666>are <00:06:00.794>hard <00:06:00.921>become <00:06:01.048>any <00:06:01.175>and <00:06:01.303>any <00:06:01.430>is <00:06:01.557>your <00:06:01.685>enemy.

137
00:06:05.665 --> 00:06:08.205
<00:06:05.665>Any <00:06:05.898>me, <00:06:06.131>huh? <00:06:06.365>Pardon? <00:06:06.598>Not <00:06:06.831>intended <00:06:07.065>actually.

138
00:06:08.755 --> 00:06:11.765
<00:06:08.755>Because <00:06:08.930>when <00:06:09.105>you <00:06:09.280>have <00:06:09.455>this <00:06:09.630>option <00:06:09.805>of <00:06:09.980>opting <00:06:10.155>out

139
00:06:11.765 --> 00:06:15.685
<00:06:11.765>of <00:06:11.920>the <00:06:12.076>type <00:06:12.231>system, <00:06:12.387>sometimes <00:06:12.542>there's <00:06:12.698>like <00:06:12.853>no <00:06:13.009>point <00:06:13.164>in

140
00:06:15.685 --> 00:06:17.365
<00:06:15.685>having <00:06:15.885>this <00:06:16.085>type <00:06:16.285>system <00:06:16.485>in <00:06:16.685>the <00:06:16.885>first <00:06:17.085>place.

141
00:06:17.585 --> 00:06:20.965
<00:06:17.585>So <00:06:17.692>you <00:06:17.800>can <00:06:17.908>set <00:06:18.015>a <00:06:18.123>strict <00:06:18.231>mode <00:06:18.338>in <00:06:18.446>a <00:06:18.554>way <00:06:18.661>in <00:06:18.769>the <00:06:18.877>ts <00:06:18.984>config

142
00:06:21.075 --> 00:06:23.125
<00:06:21.075>that <00:06:21.425>will <00:06:21.775>allow <00:06:22.125>you, <00:06:22.474>um,

143
00:06:24.105 --> 00:06:26.485
<00:06:24.105>to <00:06:24.260>have <00:06:24.416>a <00:06:24.571>very <00:06:24.727>strict <00:06:24.882>check <00:06:25.038>on <00:06:25.193>this <00:06:25.349>any <00:06:25.505>type.

144
00:06:26.705 --> 00:06:28.965
<00:06:26.705>And <00:06:26.860>when <00:06:27.016>you <00:06:27.171>do <00:06:27.327>that, <00:06:27.482>and <00:06:27.638>maybe <00:06:27.793>for <00:06:27.949>the <00:06:28.104>people

145
00:06:29.305 --> 00:06:32.205
<00:06:29.305>who <00:06:29.432>do <00:06:29.559>not <00:06:29.686>find <00:06:29.814>types <00:06:29.941>hard, <00:06:30.068>try <00:06:30.195>that, <00:06:30.323>try <00:06:30.450>to <00:06:30.577>be <00:06:30.705>strict

146
00:06:32.385 --> 00:06:34.765
<00:06:32.385>and <00:06:32.512>then <00:06:32.639>we <00:06:32.766>talk <00:06:32.894>again <00:06:33.021>if <00:06:33.148>you <00:06:33.275>find <00:06:33.403>types <00:06:33.530>hard <00:06:33.657>or <00:06:33.784>not,

147
00:06:35.305 --> 00:06:37.325
<00:06:35.305>but <00:06:35.445>I, <00:06:35.585>I <00:06:35.725>still <00:06:35.865>think <00:06:36.005>that <00:06:36.145>types <00:06:36.285>are <00:06:36.425>totally <00:06:36.565>worth <00:06:36.705>it.

148
00:06:37.465 --> 00:06:39.605
<00:06:37.465>And <00:06:37.640>of <00:06:37.815>course <00:06:37.990>when <00:06:38.165>you <00:06:38.340>use <00:06:38.515>TypeScript, <00:06:38.690>you <00:06:38.865>uh,

149
00:06:39.625 --> 00:06:43.205
<00:06:39.625>get <00:06:39.858>compatibility, <00:06:40.091>um, <00:06:40.325>through <00:06:40.558>linta <00:06:40.791>and <00:06:41.025>everything.

150
00:06:43.315 --> 00:06:46.005
<00:06:43.315>It's, <00:06:43.470>it's <00:06:43.626>basically <00:06:43.781>baked <00:06:43.937>into <00:06:44.092>VS <00:06:44.248>code <00:06:44.403>I <00:06:44.559>think <00:06:44.715>vs.

151
00:06:46.005 --> 00:06:48.245
<00:06:46.005>Code <00:06:46.160>itself <00:06:46.316>is <00:06:46.471>written <00:06:46.627>in, <00:06:46.782>in <00:06:46.938>TypeScript <00:06:47.093>that <00:06:47.249>is <00:06:47.405>partially,

152
00:06:48.865 --> 00:06:51.925
<00:06:48.865>uh, <00:06:49.020>you <00:06:49.176>have <00:06:49.331>run <00:06:49.487>times <00:06:49.642>like <00:06:49.798>no <00:06:49.953>js, <00:06:50.109>no <00:06:50.265>js

153
00:06:51.925 --> 00:06:56.605
<00:06:51.925>for <00:06:52.065>a <00:06:52.205>long <00:06:52.345>time <00:06:52.485>was <00:06:52.625>a, <00:06:52.765>a <00:06:52.905>pain <00:06:53.045>in <00:06:53.185>something, <00:06:53.325>um,

154
00:06:57.625 --> 00:07:00.165
<00:06:57.625>in <00:06:57.825>terms <00:06:58.025>that <00:06:58.225>it <00:06:58.425>did <00:06:58.625>not <00:06:58.825>support <00:06:59.025>TypeScript.

155
00:07:00.715 --> 00:07:04.165
<00:07:00.715>That <00:07:00.870>means <00:07:01.026>you <00:07:01.181>had <00:07:01.337>to <00:07:01.492>run <00:07:01.648>the <00:07:01.803>TypeScript <00:07:01.959>compiler <00:07:02.114>TSC

156
00:07:04.265 --> 00:07:05.925
<00:07:04.265>and <00:07:04.498>then <00:07:04.731>pipe <00:07:04.965>the <00:07:05.198>output <00:07:05.431>of <00:07:05.664>that,

157
00:07:05.925 --> 00:07:08.925
<00:07:05.925>like <00:07:06.125>the <00:07:06.325>compiled <00:07:06.525>on <00:07:06.725>JavaScript <00:07:06.925>into <00:07:07.125>no <00:07:07.325>JS

158
00:07:09.545 --> 00:07:12.405
<00:07:09.545>by <00:07:09.700>now <00:07:09.856>modern <00:07:10.011>versions <00:07:10.167>of <00:07:10.322>node <00:07:10.478>js <00:07:10.633>actually <00:07:10.789>allow <00:07:10.945>you

159
00:07:12.405 --> 00:07:13.965
<00:07:12.405>to <00:07:13.104>execute <00:07:13.804>TypeScript.

160
00:07:15.785 --> 00:07:17.405
<00:07:15.785>I'm <00:07:16.018>not <00:07:16.251>sure <00:07:16.485>about <00:07:16.718>the <00:07:16.951>latest <00:07:17.185>versions,

161
00:07:17.405 --> 00:07:19.245
<00:07:17.405>but <00:07:17.638>I <00:07:17.871>saw <00:07:18.104>like <00:07:18.338>some <00:07:18.571>experimental <00:07:18.804>versions

162
00:07:19.245 --> 00:07:21.685
<00:07:19.245>that <00:07:19.445>would <00:07:19.645>mostly <00:07:19.845>only <00:07:20.045>strip <00:07:20.245>the <00:07:20.445>type <00:07:20.645>information.

163
00:07:21.825 --> 00:07:23.845
<00:07:21.825>So <00:07:22.104>might <00:07:22.385>create <00:07:22.664>some <00:07:22.945>weird <00:07:23.224>things,

164
00:07:23.865 --> 00:07:25.005
<00:07:23.865>but <00:07:24.036>come <00:07:24.207>and <00:07:24.378>challenge <00:07:24.549>me <00:07:24.720>on <00:07:24.891>that.

165
00:07:25.025 --> 00:07:29.245
<00:07:25.025>I'm <00:07:25.180>not <00:07:25.336>sure <00:07:25.491>about <00:07:25.647>that. <00:07:25.802>There <00:07:25.958>are <00:07:26.113>more <00:07:26.269>modern, <00:07:26.424>uh,

166
00:07:29.335 --> 00:07:30.605
<00:07:29.335>JavaScript <00:07:30.478>runtime

167
00:07:31.345 --> 00:07:33.245
<00:07:31.345>or <00:07:31.578>like, <00:07:31.811>let's <00:07:32.045>say <00:07:32.278>alternative <00:07:32.511>JavaScript <00:07:32.745>run

168
00:07:33.245 --> 00:07:34.325
<00:07:33.245>times <00:07:33.731>like <00:07:34.217>Dino.

169
00:07:34.385 --> 00:07:38.125
<00:07:34.385>Did <00:07:34.540>anyone <00:07:34.696>play <00:07:34.851>with <00:07:35.007>Dino? <00:07:35.162>Oh, <00:07:35.318>that's <00:07:35.473>very <00:07:35.629>few <00:07:35.784>people.

170
00:07:38.265 --> 00:07:41.285
<00:07:38.265>So <00:07:38.381>Dino <00:07:38.498>is, <00:07:38.615>uh, <00:07:38.731>by <00:07:38.848>the <00:07:38.965>same <00:07:39.081>guy <00:07:39.198>who <00:07:39.315>actually <00:07:39.431>started <00:07:39.548>no <00:07:39.664>jazz

171
00:07:41.665 --> 00:07:45.605
<00:07:41.665>and <00:07:41.820>fun <00:07:41.976>fact <00:07:42.131>Dino <00:07:42.287>written <00:07:42.442>DENO <00:07:42.598>is <00:07:42.753>the <00:07:42.909>same <00:07:43.065>letters

172
00:07:45.745 --> 00:07:47.645
<00:07:45.745>as <00:07:46.025>note <00:07:46.305>just <00:07:46.585>in <00:07:46.865>alphabetical <00:07:47.145>order

173
00:07:48.105 --> 00:07:49.685
<00:07:48.105>and <00:07:48.455>it's <00:07:48.805>like <00:07:49.155>very <00:07:49.505>intentional.

174
00:07:49.905 --> 00:07:53.845
<00:07:49.905>And <00:07:50.032>for <00:07:50.159>me <00:07:50.286>as <00:07:50.414>having <00:07:50.541>a <00:07:50.668>mild <00:07:50.795>OCD, <00:07:50.923>I'm <00:07:51.050>very <00:07:51.177>happy <00:07:51.304>about,

175
00:07:53.865 --> 00:07:54.885
<00:07:53.865>um, <00:07:54.171>that <00:07:54.477>naming <00:07:54.783>choice.

176
00:07:55.825 --> 00:07:59.525
<00:07:55.825>And <00:07:55.965>then <00:07:56.104>my <00:07:56.245>personal <00:07:56.385>favorite <00:07:56.525>bun, <00:07:56.664>has <00:07:56.805>anyone <00:07:56.945>used <00:07:57.085>BUN <00:07:57.224>here?

177
00:08:00.405 --> 00:08:02.825
<00:08:00.405>Oh <00:08:00.560>wow, <00:08:00.716>that's <00:08:00.871>not <00:08:01.027>a <00:08:01.182>lot <00:08:01.338>of <00:08:01.493>people <00:08:01.649>come <00:08:01.804>talk

178
00:08:02.825 --> 00:08:03.825
<00:08:02.825>to <00:08:03.050>me <00:08:03.275>at <00:08:03.500>our <00:08:03.724>booth.

179
00:08:03.945 --> 00:08:05.465
<00:08:03.945>I <00:08:04.218>will <00:08:04.492>evangelize <00:08:04.765>BUN <00:08:05.039>for <00:08:05.313>you.

180
00:08:05.485 --> 00:08:06.905
<00:08:05.485>I'm <00:08:05.804>not <00:08:06.124>affiliated <00:08:06.443>with <00:08:06.763>bun

181
00:08:07.085 --> 00:08:09.305
<00:08:07.085>and <00:08:07.224>I'll <00:08:07.364>also <00:08:07.505>talk <00:08:07.645>to <00:08:07.784>you <00:08:07.924>about <00:08:08.065>Aand <00:08:08.205>at <00:08:08.344>the <00:08:08.484>booth,

182
00:08:09.405 --> 00:08:11.785
<00:08:09.405>but <00:08:09.604>you <00:08:09.804>will <00:08:10.005>learn, <00:08:10.205>uh, <00:08:10.405>something <00:08:10.604>about <00:08:10.804>ban

183
00:08:12.205 --> 00:08:14.385
<00:08:12.205>and <00:08:12.484>um, <00:08:12.765>these <00:08:13.044>run <00:08:13.325>times <00:08:13.604>Dino

184
00:08:14.385 --> 00:08:16.985
<00:08:14.385>and <00:08:14.664>BUN <00:08:14.945>actually <00:08:15.224>support <00:08:15.505>native <00:08:15.784>typescripts,

185
00:08:16.985 --> 00:08:18.505
<00:08:16.985>no <00:08:17.441>compilation <00:08:17.897>step <00:08:18.353>required,

186
00:08:18.725 --> 00:08:21.225
<00:08:18.725>and <00:08:18.880>that <00:08:19.036>is <00:08:19.191>just <00:08:19.347>awesome <00:08:19.502>to <00:08:19.658>work <00:08:19.813>with <00:08:19.969>these <00:08:20.125>things.

187
00:08:22.885 --> 00:08:25.305
<00:08:22.885>So <00:08:23.060>what <00:08:23.235>do <00:08:23.409>I <00:08:23.585>mean <00:08:23.760>by <00:08:23.935>end <00:08:24.110>to <00:08:24.284>end?

188
00:08:25.895 --> 00:08:29.585
<00:08:25.895>Usually <00:08:26.050>you <00:08:26.206>would <00:08:26.361>have <00:08:26.517>like <00:08:26.672>a <00:08:26.828>a <00:08:26.983>three <00:08:27.139>tier <00:08:27.294>architecture

189
00:08:29.725 --> 00:08:32.025
<00:08:29.725>and <00:08:29.900>most <00:08:30.075>projects <00:08:30.250>that <00:08:30.425>happen <00:08:30.600>to <00:08:30.775>be <00:08:30.950>web <00:08:31.125>projects,

190
00:08:32.045 --> 00:08:33.185
<00:08:32.044>at <00:08:32.301>least <00:08:32.558>in <00:08:32.814>my <00:08:33.070>experience,

191
00:08:33.365 --> 00:08:35.065
<00:08:33.365>you <00:08:33.598>have <00:08:33.831>always <00:08:34.065>like <00:08:34.298>the <00:08:34.531>same <00:08:34.765>structure

192
00:08:35.085 --> 00:08:36.945
<00:08:35.085>of <00:08:35.365>database <00:08:35.645>backend <00:08:35.925>and <00:08:36.205>front <00:08:36.485>end.

193
00:08:37.485 --> 00:08:39.065
<00:08:37.485>And <00:08:37.765>many <00:08:38.044>people <00:08:38.325>when <00:08:38.605>they <00:08:38.885>have

194
00:08:39.065 --> 00:08:40.745
<00:08:39.065>that <00:08:39.265>maybe <00:08:39.465>adding <00:08:39.665>a <00:08:39.865>little <00:08:40.065>bit <00:08:40.265>of, <00:08:40.465>uh,

195
00:08:40.965 --> 00:08:44.985
<00:08:40.965>DevOps <00:08:41.120>into <00:08:41.276>the <00:08:41.431>mix <00:08:41.587>call <00:08:41.742>themselves <00:08:41.898>a <00:08:42.053>full <00:08:42.209>stack <00:08:42.365>developer

196
00:08:45.205 --> 00:08:49.345
<00:08:45.205>who <00:08:45.405>self-identifies <00:08:45.605>as <00:08:45.805>a <00:08:46.005>full <00:08:46.205>stack <00:08:46.405>developer, <00:08:46.605>okay?

197
00:08:50.325 --> 00:08:52.505
<00:08:50.325>Um, <00:08:50.480>for <00:08:50.636>the <00:08:50.791>same <00:08:50.947>people <00:08:51.102>who <00:08:51.258>just <00:08:51.413>lifted <00:08:51.569>their <00:08:51.725>arm,

198
00:08:53.125 --> 00:08:55.460
<00:08:53.125>do <00:08:53.325>you <00:08:53.525>use <00:08:53.725>typescripts <00:08:53.925>across <00:08:54.125>the <00:08:54.325>full <00:08:54.525>stack?

199
00:08:57.145 --> 00:08:58.805
<00:08:57.145>And <00:08:57.319>that's <00:08:57.495>not <00:08:57.670>all <00:08:57.845>of <00:08:58.020>you. <00:08:58.194>Okay, <00:08:58.370>that's <00:08:58.545>cool.

200
00:09:00.225 --> 00:09:03.445
<00:09:00.225>So <00:09:00.365>we <00:09:00.505>want <00:09:00.645>to <00:09:00.785>talk <00:09:00.925>about <00:09:01.065>all <00:09:01.205>of <00:09:01.345>these <00:09:01.485>layers, <00:09:01.625>maybe

201
00:09:03.465 --> 00:09:06.285
<00:09:03.465>how <00:09:03.640>we <00:09:03.815>can, <00:09:03.990>uh, <00:09:04.165>extend <00:09:04.340>this <00:09:04.515>model <00:09:04.690>of <00:09:04.865>the,

202
00:09:06.315 --> 00:09:11.205
<00:09:06.315>just <00:09:06.442>the <00:09:06.569>three <00:09:06.696>layers <00:09:06.824>and <00:09:06.951>how <00:09:07.078>can <00:09:07.205>we <00:09:07.333>use <00:09:07.460>types <00:09:07.587>in <00:09:07.715>there

203
00:09:11.425 --> 00:09:14.085
<00:09:11.425>and <00:09:11.580>maybe <00:09:11.736>what <00:09:11.891>we <00:09:12.047>should <00:09:12.202>do <00:09:12.358>different <00:09:12.513>in <00:09:12.669>the <00:09:12.824>end

204
00:09:14.085 --> 00:09:15.285
<00:09:14.085>under <00:09:14.625>certain <00:09:15.165>circumstances.

205
00:09:15.945 --> 00:09:17.805
<00:09:15.945>So <00:09:16.295>more <00:09:16.645>often <00:09:16.995>than <00:09:17.345>not,

206
00:09:17.905 --> 00:09:20.565
<00:09:17.905>you <00:09:18.079>start <00:09:18.255>creating <00:09:18.430>a <00:09:18.605>type <00:09:18.780>system <00:09:18.954>from <00:09:19.130>the <00:09:19.305>database

207
00:09:21.425 --> 00:09:24.205
<00:09:21.425>and <00:09:21.580>you <00:09:21.736>often <00:09:21.891>can <00:09:22.047>infer <00:09:22.202>the <00:09:22.358>types <00:09:22.513>from <00:09:22.669>the <00:09:22.824>schema

208
00:09:24.225 --> 00:09:26.565
<00:09:24.225>or <00:09:24.365>the <00:09:24.505>other <00:09:24.645>way <00:09:24.785>around, <00:09:24.925>and <00:09:25.065>you <00:09:25.205>define <00:09:25.345>it <00:09:25.485>in <00:09:25.625>code

209
00:09:26.595 --> 00:09:28.285
<00:09:26.595>that <00:09:26.770>is <00:09:26.945>already <00:09:27.120>like <00:09:27.295>a, <00:09:27.470>a <00:09:27.645>very <00:09:27.820>good <00:09:27.995>thing

210
00:09:28.285 --> 00:09:31.085
<00:09:28.285>because <00:09:28.440>you <00:09:28.596>have <00:09:28.751>a <00:09:28.907>mechanism <00:09:29.062>that <00:09:29.218>makes <00:09:29.373>it <00:09:29.529>very <00:09:29.685>easy

211
00:09:31.585 --> 00:09:34.165
<00:09:31.585>to <00:09:31.785>bind <00:09:31.985>your <00:09:32.185>code <00:09:32.385>to <00:09:32.585>the <00:09:32.785>database <00:09:32.985>schema

212
00:09:34.305 --> 00:09:36.645
<00:09:34.305>and <00:09:34.505>also <00:09:34.704>to <00:09:34.905>have <00:09:35.104>the <00:09:35.305>database <00:09:35.505>schema <00:09:35.704>in

213
00:09:36.645 --> 00:09:37.765
<00:09:36.645>code <00:09:36.981>under <00:09:37.317>version <00:09:37.653>control.

214
00:09:37.905 --> 00:09:38.925
<00:09:37.905>Of <00:09:38.088>course <00:09:38.272>you <00:09:38.455>could <00:09:38.639>do <00:09:38.823>that

215
00:09:38.925 --> 00:09:41.965
<00:09:38.925>with <00:09:39.080>like <00:09:39.236>plain <00:09:39.391>SQL <00:09:39.547>given <00:09:39.702>you <00:09:39.858>have <00:09:40.013>an <00:09:40.169>SQL <00:09:40.324>database.

216
00:09:41.985 --> 00:09:43.285
<00:09:41.985>Of <00:09:42.180>course <00:09:42.375>that's <00:09:42.569>not <00:09:42.765>always <00:09:42.960>the <00:09:43.155>case,

217
00:09:43.785 --> 00:09:46.845
<00:09:43.785>but <00:09:43.940>that <00:09:44.096>already <00:09:44.251>like <00:09:44.407>takes <00:09:44.562>a <00:09:44.718>bunch <00:09:44.873>of <00:09:45.029>headaches <00:09:45.185>away

218
00:09:47.465 --> 00:09:48.485
<00:09:47.465>and <00:09:47.924>very <00:09:48.383>popular.

219
00:09:49.105 --> 00:09:53.845
<00:09:49.105>Um, <00:09:49.260>our <00:09:49.416>ORMs <00:09:49.571>in <00:09:49.727>your <00:09:49.882>projects, <00:09:50.038>who <00:09:50.193>is <00:09:50.349>using <00:09:50.505>ORMs?

220
00:09:55.335 --> 00:09:57.445
<00:09:55.335>There <00:09:55.510>is <00:09:55.685>a <00:09:55.860>lot <00:09:56.035>fewer <00:09:56.210>people <00:09:56.385>than <00:09:56.560>I <00:09:56.735>thought.

221
00:09:57.545 --> 00:09:59.445
<00:09:57.545>So, <00:09:57.745>but <00:09:57.944>I <00:09:58.145>hope <00:09:58.344>that <00:09:58.545>you <00:09:58.745>are, <00:09:58.944>uh,

222
00:09:59.445 --> 00:10:01.685
<00:09:59.445>doing <00:09:59.678>some <00:09:59.911>like <00:10:00.145>domain <00:10:00.378>driven <00:10:00.611>approach <00:10:00.845>when

223
00:10:01.685 --> 00:10:02.885
<00:10:01.685>you're <00:10:02.045>not <00:10:02.405>using <00:10:02.765>ORMs.

224
00:10:03.755 --> 00:10:08.125
<00:10:03.755>ORMs <00:10:03.910>can <00:10:04.066>make <00:10:04.221>it <00:10:04.377>very, <00:10:04.532>let's <00:10:04.688>say <00:10:04.843>comfy <00:10:04.999>to <00:10:05.155>do

225
00:10:08.685 --> 00:10:11.965
<00:10:08.685>standard <00:10:08.885>use <00:10:09.084>cases <00:10:09.285>like <00:10:09.484>CRU <00:10:09.685>applications, <00:10:09.885>create <00:10:10.084>reads,

226
00:10:12.065 --> 00:10:14.805
<00:10:12.065>update, <00:10:12.345>delete, <00:10:12.625>like <00:10:12.905>just <00:10:13.185>standard <00:10:13.465>stuff

227
00:10:14.805 --> 00:10:17.285
<00:10:14.805>where <00:10:14.979>you <00:10:15.155>manipulate <00:10:15.329>a <00:10:15.505>little <00:10:15.680>bit <00:10:15.854>in <00:10:16.030>the <00:10:16.204>database.

228
00:10:18.115 --> 00:10:20.245
<00:10:18.115>That <00:10:18.315>can <00:10:18.515>become <00:10:18.715>a <00:10:18.915>pain <00:10:19.115>when <00:10:19.315>you <00:10:19.515>want

229
00:10:20.245 --> 00:10:21.765
<00:10:20.245>to <00:10:20.701>decouple <00:10:21.157>your <00:10:21.613>dependencies.

230
00:10:21.765 --> 00:10:23.285
<00:10:21.765>But <00:10:21.992>that's <00:10:22.221>a <00:10:22.449>little <00:10:22.677>bit <00:10:22.905>deeper <00:10:23.132>topic.

231
00:10:24.065 --> 00:10:26.525
<00:10:24.065>The <00:10:24.298>two <00:10:24.531>most <00:10:24.765>popular <00:10:24.998>choices <00:10:25.231>for <00:10:25.465>ORMs

232
00:10:26.525 --> 00:10:30.005
<00:10:26.525>and <00:10:26.652>TypeScript <00:10:26.779>that <00:10:26.906>I <00:10:27.034>find <00:10:27.161>I <00:10:27.288>found, <00:10:27.415>um, <00:10:27.543>apart <00:10:27.670>from <00:10:27.797>type <00:10:27.925>ORM,

233
00:10:30.315 --> 00:10:32.165
<00:10:30.315>what <00:10:30.595>are, <00:10:30.875>uh, <00:10:31.155>prisma <00:10:31.435>and <00:10:31.715>drizzle

234
00:10:33.065 --> 00:10:34.565
<00:10:33.065>and <00:10:33.257>we <00:10:33.450>will <00:10:33.643>have <00:10:33.836>a, <00:10:34.029>a <00:10:34.222>brief <00:10:34.415>look

235
00:10:34.565 --> 00:10:37.165
<00:10:34.565>how <00:10:34.765>you <00:10:34.965>can <00:10:35.165>actually <00:10:35.365>use <00:10:35.565>type <00:10:35.765>systems <00:10:35.965>in

236
00:10:37.215 --> 00:10:38.245
<00:10:37.215>those <00:10:37.678>two <00:10:38.142>libraries.

237
00:10:38.625 --> 00:10:42.095
<00:10:38.625>And <00:10:38.800>Prisma, <00:10:38.975>who <00:10:39.150>knows <00:10:39.325>Prisma <00:10:39.500>keep <00:10:39.675>your <00:10:39.850>hands <00:10:40.025>up.

238
00:10:42.595 --> 00:10:45.215
<00:10:42.595>Who <00:10:43.061>uses <00:10:43.528>Prisma? <00:10:43.995>Okay.

239
00:10:45.215 --> 00:10:46.815
<00:10:45.215>It's <00:10:45.448>almost <00:10:45.681>the <00:10:45.915>same <00:10:46.148>number <00:10:46.381>of <00:10:46.615>people.

240
00:10:47.395 --> 00:10:51.365
<00:10:47.395>Um, <00:10:47.535>Prisma <00:10:47.675>is <00:10:47.814>also <00:10:47.954>around <00:10:48.095>for <00:10:48.235>a <00:10:48.375>while <00:10:48.515>has <00:10:48.655>been, <00:10:48.795>uh,

241
00:10:51.365 --> 00:10:54.925
<00:10:51.365>open <00:10:51.520>source <00:10:51.676>by <00:10:51.831>a <00:10:51.987>company <00:10:52.142>called <00:10:52.298>Graph <00:10:52.453>Cool <00:10:52.609>in <00:10:52.765>2016.

242
00:10:55.505 --> 00:10:58.485
<00:10:55.505>It <00:10:55.705>has <00:10:55.905>a <00:10:56.105>domain <00:10:56.305>specific <00:10:56.505>language, <00:10:56.705>A <00:10:56.905>DSL

243
00:10:58.545 --> 00:11:00.685
<00:10:58.545>to <00:10:58.719>define <00:10:58.895>your <00:10:59.069>types <00:10:59.245>and <00:10:59.420>it <00:10:59.594>looks <00:10:59.770>like <00:10:59.944>you

244
00:11:00.705 --> 00:11:01.885
<00:11:00.705>see <00:11:00.917>on <00:11:01.129>screen <00:11:01.342>at <00:11:01.554>the <00:11:01.767>moment.

245
00:11:02.345 --> 00:11:05.125
<00:11:02.345>So <00:11:02.500>I <00:11:02.656>think <00:11:02.811>it's <00:11:02.967>kind <00:11:03.122>of <00:11:03.278>straightforward <00:11:03.433>to <00:11:03.589>read <00:11:03.745>that

246
00:11:05.395 --> 00:11:07.805
<00:11:05.395>because <00:11:05.628>the <00:11:05.861>example <00:11:06.095>is <00:11:06.328>like <00:11:06.561>relatively <00:11:06.795>simple.

247
00:11:08.785 --> 00:11:10.725
<00:11:08.785>For <00:11:09.064>a <00:11:09.344>long <00:11:09.625>time <00:11:09.905>they <00:11:10.185>had

248
00:11:11.245 --> 00:11:12.965
<00:11:11.245>a <00:11:11.525>compiler <00:11:11.805>running <00:11:12.085>in <00:11:12.365>the <00:11:12.645>background

249
00:11:13.155 --> 00:11:17.565
<00:11:13.155>that <00:11:13.295>was <00:11:13.435>written <00:11:13.574>in <00:11:13.714>Rust <00:11:13.855>that <00:11:13.995>made <00:11:14.135>it <00:11:14.275>very, <00:11:14.415>very <00:11:14.555>complicated

250
00:11:17.705 --> 00:11:20.965
<00:11:17.705>for <00:11:17.905>TypeScript <00:11:18.105>developers <00:11:18.305>to <00:11:18.505>actually <00:11:18.705>like <00:11:18.905>do <00:11:19.105>anything.

251
00:11:21.305 --> 00:11:23.845
<00:11:21.305>Um, <00:11:21.444>when <00:11:21.584>they <00:11:21.724>wanted <00:11:21.864>to <00:11:22.005>work <00:11:22.145>with <00:11:22.285>the <00:11:22.425>compiler, <00:11:22.564>of <00:11:22.704>course

252
00:11:23.865 --> 00:11:27.365
<00:11:23.865>that's <00:11:23.981>like <00:11:24.098>we <00:11:24.215>can <00:11:24.331>discuss <00:11:24.448>is <00:11:24.565>that <00:11:24.681>in <00:11:24.798>edge <00:11:24.915>case <00:11:25.031>to <00:11:25.148>put, <00:11:25.265>um,

253
00:11:27.475 --> 00:11:30.565
<00:11:27.475>like <00:11:27.630>a <00:11:27.786>TypeScript <00:11:27.941>developer <00:11:28.097>to, <00:11:28.252>to <00:11:28.408>work <00:11:28.563>on <00:11:28.719>the <00:11:28.875>compiler

254
00:11:30.705 --> 00:11:34.405
<00:11:30.705>for <00:11:30.985>um, <00:11:31.265>this <00:11:31.545>database <00:11:31.825>library <00:11:32.105>basically.

255
00:11:34.745 --> 00:11:37.565
<00:11:34.745>But <00:11:34.920>um, <00:11:35.095>it <00:11:35.270>was <00:11:35.445>apparently <00:11:35.620>enough <00:11:35.795>of <00:11:35.970>a <00:11:36.145>problem

256
00:11:37.595 --> 00:11:39.725
<00:11:37.595>that <00:11:37.750>I <00:11:37.906>think <00:11:38.061>a <00:11:38.217>couple <00:11:38.372>of <00:11:38.528>years <00:11:38.683>ago <00:11:38.839>they <00:11:38.995>decided

257
00:11:39.725 --> 00:11:42.285
<00:11:39.725>to <00:11:39.925>actually <00:11:40.125>rewrite <00:11:40.325>the <00:11:40.525>whole <00:11:40.725>rusting <00:11:40.925>in <00:11:41.125>TypeScript.

258
00:11:42.995 --> 00:11:47.605
<00:11:42.995>Another <00:11:43.135>problem <00:11:43.275>with <00:11:43.415>that <00:11:43.555>Russ <00:11:43.695>compiler <00:11:43.835>was <00:11:43.975>that, <00:11:44.115>um, <00:11:44.255>on, <00:11:44.395>on

259
00:11:48.355 --> 00:11:50.445
<00:11:48.355>slim <00:11:48.635>run <00:11:48.915>times <00:11:49.195>like <00:11:49.475>cloud <00:11:49.755>functions

260
00:11:50.445 --> 00:11:51.845
<00:11:50.445>or <00:11:50.697>something <00:11:50.949>like <00:11:51.201>that, <00:11:51.453>you <00:11:51.705>had

261
00:11:51.845 --> 00:11:54.045
<00:11:51.845>to <00:11:52.078>bring <00:11:52.311>huge <00:11:52.545>binaries <00:11:52.778>when <00:11:53.011>you <00:11:53.245>wanted

262
00:11:54.045 --> 00:11:55.125
<00:11:54.045>to <00:11:54.288>use <00:11:54.531>Prisma <00:11:54.774>in <00:11:55.017>there.

263
00:11:55.785 --> 00:11:59.845
<00:11:55.785>And <00:11:55.925>that <00:11:56.064>could <00:11:56.204>also <00:11:56.344>like <00:11:56.485>make <00:11:56.625>an <00:11:56.765>approach <00:11:56.905>that <00:11:57.045>is <00:11:57.185>supposed

264
00:11:59.845 --> 00:12:01.565
<00:11:59.845>to <00:12:00.195>be <00:12:00.545>lightweight, <00:12:00.895>rather <00:12:01.245>heavy,

265
00:12:01.595 --> 00:12:03.005
<00:12:01.595>however, <00:12:02.229>still <00:12:02.864>one

266
00:12:03.005 --> 00:12:04.885
<00:12:03.005>of <00:12:03.205>the <00:12:03.405>most <00:12:03.605>popular <00:12:03.805>options <00:12:04.005>you <00:12:04.205>have <00:12:04.405>there.

267
00:12:05.075 --> 00:12:06.565
<00:12:05.075>However, <00:12:05.410>over <00:12:05.745>the <00:12:06.080>last <00:12:06.416>couple

268
00:12:06.565 --> 00:12:10.125
<00:12:06.565>of <00:12:06.765>years <00:12:06.965>they <00:12:07.165>had <00:12:07.365>a <00:12:07.565>challenger <00:12:07.765>called <00:12:07.965>drizzle.

269
00:12:10.305 --> 00:12:13.885
<00:12:10.305>And <00:12:10.538>drizzle <00:12:10.771>is <00:12:11.005>intentionally <00:12:11.238>very, <00:12:11.471>very <00:12:11.704>lightweight

270
00:12:14.065 --> 00:12:16.205
<00:12:14.065>and <00:12:14.345>it <00:12:14.625>is <00:12:14.905>only <00:12:15.185>pure <00:12:15.465>TypeScript.

271
00:12:16.625 --> 00:12:20.045
<00:12:16.625>And <00:12:16.825>your <00:12:17.025>table <00:12:17.225>definitions <00:12:17.425>are <00:12:17.625>written <00:12:17.825>in <00:12:18.025>TypeScript

272
00:12:20.385 --> 00:12:23.125
<00:12:20.385>and <00:12:20.540>I <00:12:20.696>think <00:12:20.851>the <00:12:21.007>TypeScript <00:12:21.162>developers <00:12:21.318>here, <00:12:21.473>which <00:12:21.629>is <00:12:21.785>most

273
00:12:23.125 --> 00:12:27.285
<00:12:23.125>of <00:12:23.265>you <00:12:23.405>can <00:12:23.545>easily <00:12:23.685>understand <00:12:23.825>like, <00:12:23.965>um, <00:12:24.105>what <00:12:24.245>this <00:12:24.385>is <00:12:24.525>doing.

274
00:12:27.385 --> 00:12:29.005
<00:12:27.385>It <00:12:27.618>looks <00:12:27.851>a <00:12:28.085>bit <00:12:28.318>more <00:12:28.551>chaotic <00:12:28.785>than

275
00:12:29.755 --> 00:12:32.845
<00:12:29.755>what <00:12:29.895>we <00:12:30.035>just <00:12:30.175>saw <00:12:30.314>from <00:12:30.455>Prisma, <00:12:30.595>but <00:12:30.735>it <00:12:30.875>is <00:12:31.015>pure <00:12:31.155>TypeScript.

276
00:12:32.845 --> 00:12:34.485
<00:12:32.845>You <00:12:33.045>will <00:12:33.245>have <00:12:33.445>auto <00:12:33.645>completion, <00:12:33.845>you <00:12:34.045>will <00:12:34.245>have,

277
00:12:34.485 --> 00:12:36.245
<00:12:34.485>you <00:12:34.660>will <00:12:34.835>have <00:12:35.010>type <00:12:35.185>ins, <00:12:35.360>you <00:12:35.535>will <00:12:35.710>have <00:12:35.885>errors

278
00:12:36.785 --> 00:12:37.845
<00:12:36.785>and, <00:12:37.023>and <00:12:37.262>all <00:12:37.500>these <00:12:37.739>things.

279
00:12:37.985 --> 00:12:40.565
<00:12:37.985>And <00:12:38.218>who <00:12:38.451>has <00:12:38.685>actually <00:12:38.918>heard <00:12:39.151>of <00:12:39.385>drizzle?

280
00:12:41.665 --> 00:12:42.925
<00:12:41.665>Oh, <00:12:41.853>that's, <00:12:42.043>uh, <00:12:42.232>not <00:12:42.420>too <00:12:42.609>many <00:12:42.799>people.

281
00:12:42.985 --> 00:12:46.965
<00:12:42.985>And <00:12:43.112>hands <00:12:43.239>up, <00:12:43.366>keep <00:12:43.494>your <00:12:43.621>hands <00:12:43.748>up <00:12:43.875>who <00:12:44.003>use <00:12:44.130>drizzle. <00:12:44.257>Oh <00:12:44.385>wow.

282
00:12:47.555 --> 00:12:49.285
<00:12:47.555>Just <00:12:47.834>you, <00:12:48.114>we <00:12:48.395>need <00:12:48.675>to <00:12:48.954>talk.

283
00:12:50.785 --> 00:12:54.325
<00:12:50.785>Um, <00:12:51.064>okay, <00:12:51.344>so <00:12:51.625>uh, <00:12:51.905>try <00:12:52.185>it.

284
00:12:54.845 --> 00:12:56.125
<00:12:54.845>I <00:12:55.075>tried <00:12:55.305>it, <00:12:55.536>I <00:12:55.766>liked <00:12:55.997>it.

285
00:12:56.785 --> 00:12:59.885
<00:12:56.785>Um, <00:12:56.940>but <00:12:57.096>like <00:12:57.251>most <00:12:57.407>of <00:12:57.562>you <00:12:57.718>apparently <00:12:57.873>I <00:12:58.029>also <00:12:58.185>tend

286
00:12:59.905 --> 00:13:02.845
<00:12:59.905>to <00:13:00.021>not <00:13:00.138>use <00:13:00.255>ORMs <00:13:00.371>too <00:13:00.488>much, <00:13:00.605>but <00:13:00.721>I <00:13:00.838>will <00:13:00.954>get <00:13:01.071>back <00:13:01.188>to <00:13:01.305>that

287
00:13:02.845 --> 00:13:04.125
<00:13:02.845>and <00:13:03.075>I <00:13:03.305>have <00:13:03.536>very <00:13:03.766>specific <00:13:03.997>reason

288
00:13:04.125 --> 00:13:06.325
<00:13:04.125>and <00:13:04.252>a <00:13:04.379>couple <00:13:04.506>of <00:13:04.634>years <00:13:04.761>of <00:13:04.888>experience <00:13:05.015>why <00:13:05.143>I <00:13:05.270>don't <00:13:05.397>do <00:13:05.525>that.

289
00:13:07.275 --> 00:13:09.045
<00:13:07.275>Then <00:13:07.475>the <00:13:07.675>next <00:13:07.875>stack <00:13:08.074>in <00:13:08.275>our <00:13:08.475>three <00:13:08.675>tier

290
00:13:09.325 --> 00:13:10.645
<00:13:09.325>approach <00:13:09.721>is <00:13:10.117>the <00:13:10.513>backend.

291
00:13:11.425 --> 00:13:13.725
<00:13:11.425>And <00:13:11.552>um, <00:13:11.679>a <00:13:11.806>lot <00:13:11.934>of <00:13:12.061>times <00:13:12.188>you <00:13:12.315>have <00:13:12.443>like <00:13:12.570>definitions <00:13:12.697>of <00:13:12.824>types,

292
00:13:13.945 --> 00:13:15.205
<00:13:13.945>you <00:13:14.228>have <00:13:14.512>validations <00:13:14.795>of <00:13:15.079>types

293
00:13:15.545 --> 00:13:18.685
<00:13:15.545>and <00:13:15.745>a <00:13:15.944>backend <00:13:16.145>is <00:13:16.344>also <00:13:16.545>in <00:13:16.745>web <00:13:16.944>applications.

294
00:13:18.685 --> 00:13:21.645
<00:13:18.685>More <00:13:18.859>often <00:13:19.035>than <00:13:19.209>not, <00:13:19.385>basically <00:13:19.560>just <00:13:19.734>a <00:13:19.910>communication <00:13:20.084>gateway

295
00:13:21.985 --> 00:13:24.725
<00:13:21.985>for <00:13:22.218>something <00:13:22.451>like <00:13:22.685>HTTP <00:13:22.918>for <00:13:23.151>an <00:13:23.385>API.

296
00:13:24.745 --> 00:13:26.445
<00:13:24.745>So <00:13:24.978>data <00:13:25.211>comes <00:13:25.445>in, <00:13:25.678>data <00:13:25.911>goes <00:13:26.145>out,

297
00:13:26.865 --> 00:13:28.925
<00:13:26.865>and <00:13:27.020>sometimes <00:13:27.176>you <00:13:27.331>have <00:13:27.487>like <00:13:27.642>a <00:13:27.798>little <00:13:27.953>bit <00:13:28.109>of <00:13:28.265>logic,

298
00:13:29.065 --> 00:13:31.525
<00:13:29.065>but <00:13:29.298>again <00:13:29.531>in <00:13:29.765>very <00:13:29.998>simple <00:13:30.231>CRU <00:13:30.465>applications

299
00:13:31.545 --> 00:13:35.005
<00:13:31.545>and <00:13:31.685>that <00:13:31.824>tend <00:13:31.964>to <00:13:32.104>be <00:13:32.245>the <00:13:32.385>majority <00:13:32.525>of <00:13:32.665>applications <00:13:32.805>with <00:13:32.944>little

300
00:13:35.025 --> 00:13:36.525
<00:13:35.025>to <00:13:35.475>no <00:13:35.925>additional <00:13:36.375>logic.

301
00:13:37.625 --> 00:13:39.685
<00:13:37.625>Uh, <00:13:37.858>you <00:13:38.091>don't <00:13:38.325>have <00:13:38.558>any <00:13:38.791>domain <00:13:39.025>objects

302
00:13:39.685 --> 00:13:41.725
<00:13:39.685>or <00:13:39.885>like <00:13:40.084>something <00:13:40.285>additional <00:13:40.484>to <00:13:40.685>take <00:13:40.885>care <00:13:41.084>of.

303
00:13:42.535 --> 00:13:45.165
<00:13:42.535>There <00:13:42.675>are <00:13:42.814>a <00:13:42.954>ton <00:13:43.094>of <00:13:43.235>frameworks <00:13:43.375>out <00:13:43.515>there, <00:13:43.655>I <00:13:43.795>will <00:13:43.935>assume.

304
00:13:45.345 --> 00:13:47.805
<00:13:45.345>So <00:13:45.485>many <00:13:45.625>types <00:13:45.765>of <00:13:45.905>developers <00:13:46.045>you <00:13:46.185>have <00:13:46.325>heard <00:13:46.465>of <00:13:46.605>next <00:13:46.745>js.

305
00:13:49.945 --> 00:13:52.045
<00:13:49.945>Yes, <00:13:50.145>I <00:13:50.345>expected <00:13:50.545>a <00:13:50.745>lot <00:13:50.945>more <00:13:51.145>hands <00:13:51.345>even.

306
00:13:52.545 --> 00:13:54.085
<00:13:52.545>And <00:13:52.891>um, <00:13:53.238>my <00:13:53.584>personal <00:13:53.931>favorite

307
00:13:54.265 --> 00:13:56.925
<00:13:54.265>for <00:13:54.420>something <00:13:54.576>like <00:13:54.731>this <00:13:54.887>lately <00:13:55.042>is <00:13:55.198>the <00:13:55.353>ho <00:13:55.509>no <00:13:55.665>framework.

308
00:13:57.145 --> 00:14:00.205
<00:13:57.145>Who <00:13:57.425>knows <00:13:57.704>Ho <00:13:57.985>No. <00:13:58.265>Oh <00:13:58.545>wow.

309
00:14:00.795 --> 00:14:03.765
<00:14:00.795>Come, <00:14:00.969>come <00:14:01.145>to <00:14:01.319>the <00:14:01.495>booth, <00:14:01.670>let's <00:14:01.844>talk. <00:14:02.020>Who <00:14:02.194>knows?

310
00:14:03.765 --> 00:14:07.125
<00:14:03.765>Uh, <00:14:03.905>just <00:14:04.045>great <00:14:04.185>express <00:14:04.324>js <00:14:04.465>who <00:14:04.605>has <00:14:04.745>heard <00:14:04.885>of <00:14:05.025>express <00:14:05.165>js?

311
00:14:07.475 --> 00:14:10.965
<00:14:07.475>Okay, <00:14:07.630>whoo. <00:14:07.786>Is <00:14:07.941>kind <00:14:08.097>of <00:14:08.252>like <00:14:08.408>the <00:14:08.563>the <00:14:08.719>new <00:14:08.875>express

312
00:14:11.345 --> 00:14:12.765
<00:14:11.345>that's, <00:14:11.664>uh, <00:14:11.984>my <00:14:12.303>personal <00:14:12.623>opinion.

313
00:14:12.765 --> 00:14:13.845
<00:14:12.765>That's <00:14:13.008>not <00:14:13.251>an <00:14:13.494>official <00:14:13.737>quote.

314
00:14:13.995 --> 00:14:15.765
<00:14:13.995>It's <00:14:14.345>a <00:14:14.695>very <00:14:15.045>complete <00:14:15.395>framework

315
00:14:15.945 --> 00:14:17.645
<00:14:15.945>and <00:14:16.145>it <00:14:16.345>was <00:14:16.545>like <00:14:16.745>largely <00:14:16.945>built <00:14:17.145>to <00:14:17.345>work

316
00:14:17.645 --> 00:14:19.045
<00:14:17.645>with <00:14:17.959>something <00:14:18.275>like <00:14:18.589>CloudFlare <00:14:18.905>workers

317
00:14:19.425 --> 00:14:20.445
<00:14:19.425>and <00:14:19.654>it's, <00:14:19.884>it's <00:14:20.113>just <00:14:20.343>great.

318
00:14:20.515 --> 00:14:21.805
<00:14:20.515>Like <00:14:20.708>come <00:14:20.901>talk <00:14:21.095>to <00:14:21.289>me. <00:14:21.482>I <00:14:21.675>will

319
00:14:21.805 --> 00:14:23.325
<00:14:21.805>evangelize <00:14:22.033>you <00:14:22.261>about <00:14:22.489>like <00:14:22.717>all <00:14:22.945>of <00:14:23.173>this.

320
00:14:23.405 --> 00:14:25.325
<00:14:23.405>I <00:14:23.560>will <00:14:23.716>give <00:14:23.871>you <00:14:24.027>my, <00:14:24.182>my <00:14:24.338>private <00:14:24.493>text, <00:14:24.649>like <00:14:24.805>basically

321
00:14:26.745 --> 00:14:29.365
<00:14:26.745>and <00:14:26.978>um, <00:14:27.211>there's <00:14:27.445>this <00:14:27.678>library <00:14:27.911>called <00:14:28.145>z

322
00:14:29.665 --> 00:14:33.085
<00:14:29.665>and <00:14:29.820>z <00:14:29.976>like <00:14:30.131>in <00:14:30.287>my <00:14:30.442>bubble <00:14:30.598>at <00:14:30.753>least <00:14:30.909>is <00:14:31.064>extremely

323
00:14:33.085 --> 00:14:34.645
<00:14:33.085>popular <00:14:33.365>for <00:14:33.645>all <00:14:33.925>sorts <00:14:34.205>of <00:14:34.485>things.

324
00:14:34.885 --> 00:14:36.925
<00:14:34.885>Schema <00:14:35.085>validation, <00:14:35.285>schema <00:14:35.485>definition, <00:14:35.685>all <00:14:35.885>of <00:14:36.085>those <00:14:36.285>things.

325
00:14:37.585 --> 00:14:41.645
<00:14:37.585>Who <00:14:37.712>knows? <00:14:37.839>Z. <00:14:37.966>Okay, <00:14:38.094>that's <00:14:38.221>not <00:14:38.348>too <00:14:38.475>bad. <00:14:38.603>Keep <00:14:38.730>your <00:14:38.857>hands <00:14:38.985>up.

326
00:14:41.865 --> 00:14:44.965
<00:14:41.865>Who <00:14:42.065>uses <00:14:42.265>sword? <00:14:42.465>Okay, <00:14:42.665>that's <00:14:42.865>most <00:14:43.065>of <00:14:43.265>you.

327
00:14:45.025 --> 00:14:46.165
<00:14:45.025>Or <00:14:45.230>like <00:14:45.435>most <00:14:45.640>of <00:14:45.845>the <00:14:46.050>people

328
00:14:46.165 --> 00:14:47.805
<00:14:46.165>who <00:14:46.339>have <00:14:46.515>had <00:14:46.689>their <00:14:46.865>hands <00:14:47.040>up <00:14:47.214>before, <00:14:47.390>that's <00:14:47.564>good.

329
00:14:47.805 --> 00:14:49.805
<00:14:47.805>Then <00:14:47.944>I <00:14:48.084>also <00:14:48.224>don't <00:14:48.364>need <00:14:48.505>to <00:14:48.645>dig <00:14:48.785>too <00:14:48.925>deep <00:14:49.064>into <00:14:49.204>that.

330
00:14:50.105 --> 00:14:52.805
<00:14:50.105>So <00:14:50.260>here <00:14:50.416>as <00:14:50.571>well, <00:14:50.727>like <00:14:50.882>kind <00:14:51.038>of <00:14:51.193>like <00:14:51.349>in <00:14:51.505>drizzle,

331
00:14:52.985 --> 00:14:56.285
<00:14:52.985>you <00:14:53.160>have <00:14:53.335>a <00:14:53.510>very <00:14:53.685>straightforward, <00:14:53.860>very <00:14:54.035>TypeScript <00:14:54.210>native <00:14:54.385>way

332
00:14:56.345 --> 00:15:01.285
<00:14:56.345>to <00:14:56.545>define <00:14:56.745>your <00:14:56.945>schemas <00:14:57.145>with, <00:14:57.345>uh, <00:14:57.545>conditions <00:14:57.745>with,

333
00:15:01.385 --> 00:15:02.965
<00:15:01.385>uh, <00:15:01.735>requirements <00:15:02.085>on <00:15:02.435>your <00:15:02.785>fields.

334
00:15:03.145 --> 00:15:04.645
<00:15:03.145>And <00:15:03.337>it's <00:15:03.530>just <00:15:03.723>a <00:15:03.916>breeze <00:15:04.109>to <00:15:04.302>work <00:15:04.495>with.

335
00:15:04.645 --> 00:15:06.245
<00:15:04.645>And <00:15:04.995>it's <00:15:05.345>like <00:15:05.694>largely <00:15:06.045>compatible

336
00:15:06.305 --> 00:15:07.405
<00:15:06.305>to <00:15:06.469>like <00:15:06.635>a <00:15:06.800>lot <00:15:06.964>of <00:15:07.130>the <00:15:07.295>things.

337
00:15:07.505 --> 00:15:10.965
<00:15:07.505>Um, <00:15:07.705>we <00:15:07.905>talked <00:15:08.105>about <00:15:08.305>you <00:15:08.505>have <00:15:08.705>a <00:15:08.905>possibility

338
00:15:11.105 --> 00:15:15.125
<00:15:11.105>to <00:15:11.260>get <00:15:11.416>a <00:15:11.571>Z <00:15:11.727>schema <00:15:11.882>out <00:15:12.038>of <00:15:12.193>your <00:15:12.349>drizzle <00:15:12.505>configuration.

339
00:15:15.145 --> 00:15:17.005
<00:15:15.145>We <00:15:15.300>will <00:15:15.456>get <00:15:15.611>back <00:15:15.767>to <00:15:15.922>why <00:15:16.078>this <00:15:16.233>might <00:15:16.389>be <00:15:16.545>cool.

340
00:15:17.265 --> 00:15:20.565
<00:15:17.265>And <00:15:17.439>you <00:15:17.615>can <00:15:17.790>also <00:15:17.965>use <00:15:18.140>Z <00:15:18.314>as <00:15:18.490>basically, <00:15:18.665>um,

341
00:15:20.905 --> 00:15:24.925
<00:15:20.905>the <00:15:21.105>validation <00:15:21.305>layer <00:15:21.505>for, <00:15:21.704>uh, <00:15:21.905>your <00:15:22.105>honu <00:15:22.305>application.

342
00:15:24.985 --> 00:15:29.365
<00:15:24.985>So <00:15:25.101>you <00:15:25.218>can <00:15:25.335>tell <00:15:25.451>a <00:15:25.568>honu <00:15:25.685>endpoint, <00:15:25.801>this <00:15:25.918>is <00:15:26.035>the <00:15:26.151>data <00:15:26.268>you <00:15:26.385>want

343
00:15:29.365 --> 00:15:31.525
<00:15:29.365>to <00:15:29.520>give <00:15:29.676>out, <00:15:29.831>this <00:15:29.987>is <00:15:30.142>the <00:15:30.298>data <00:15:30.453>you <00:15:30.609>you <00:15:30.765>expect

344
00:15:31.545 --> 00:15:32.885
<00:15:31.545>and <00:15:31.786>you <00:15:32.027>can <00:15:32.268>validate <00:15:32.509>against <00:15:32.751>that.

345
00:15:32.905 --> 00:15:35.965
<00:15:32.905>And <00:15:33.105>you <00:15:33.305>have <00:15:33.505>basically <00:15:33.704>a <00:15:33.905>self-documenting <00:15:34.105>API <00:15:34.305>definition.

346
00:15:36.025 --> 00:15:38.805
<00:15:36.025>You <00:15:36.225>can <00:15:36.425>extract, <00:15:36.625>um, <00:15:36.824>an <00:15:37.025>open <00:15:37.225>API <00:15:37.425>definition.

347
00:15:38.925 --> 00:15:40.045
<00:15:38.925>I <00:15:39.050>will <00:15:39.176>come <00:15:39.303>back <00:15:39.429>to <00:15:39.555>that <00:15:39.680>in <00:15:39.806>a <00:15:39.933>second.

348
00:15:40.625 --> 00:15:42.845
<00:15:40.625>And, <00:15:40.780>um, <00:15:40.936>it's <00:15:41.091>just <00:15:41.247>great <00:15:41.402>and <00:15:41.558>it's <00:15:41.713>very, <00:15:41.869>very <00:15:42.025>popular.

349
00:15:43.555 --> 00:15:45.445
<00:15:43.555>There's <00:15:43.834>one <00:15:44.114>downside <00:15:44.395>to <00:15:44.675>this <00:15:44.954>popularity,

350
00:15:45.445 --> 00:15:47.365
<00:15:45.445>but <00:15:45.645>I <00:15:45.845>will <00:15:46.045>also <00:15:46.245>get <00:15:46.445>back <00:15:46.645>to <00:15:46.845>that.

351
00:15:48.185 --> 00:15:50.445
<00:15:48.185>We <00:15:48.464>have <00:15:48.744>TRPC <00:15:49.025>who <00:15:49.305>uses <00:15:49.584>TRPC.

352
00:15:50.955 --> 00:15:54.005
<00:15:50.955>Okay, <00:15:51.095>that's <00:15:51.235>not, <00:15:51.375>that's <00:15:51.515>actually <00:15:51.655>like <00:15:51.795>3, <00:15:51.935>4, <00:15:52.075>5 <00:15:52.215>people, <00:15:52.355>okay?

353
00:15:54.205 --> 00:15:55.605
<00:15:54.205>TRPC <00:15:54.520>is <00:15:54.835>also <00:15:55.150>pretty <00:15:55.465>cool.

354
00:15:55.985 --> 00:15:58.885
<00:15:55.985>And, <00:15:56.185>um, <00:15:56.385>you <00:15:56.585>basically <00:15:56.785>define <00:15:56.985>what <00:15:57.185>the <00:15:57.385>communication

355
00:15:58.885 --> 00:16:00.725
<00:15:58.885>between <00:15:59.085>your <00:15:59.285>server <00:15:59.485>and <00:15:59.685>your <00:15:59.885>client <00:16:00.085>looks <00:16:00.285>like

356
00:16:01.185 --> 00:16:04.805
<00:16:01.185>and <00:16:01.359>you <00:16:01.535>get, <00:16:01.709>um, <00:16:01.885>zero <00:16:02.060>schema, <00:16:02.234>zero <00:16:02.410>boiler <00:16:02.584>plates

357
00:16:05.645 --> 00:16:09.125
<00:16:05.645>possibility <00:16:05.878>of <00:16:06.111>like <00:16:06.345>having <00:16:06.578>type <00:16:06.811>safe <00:16:07.045>communication

358
00:16:09.125 --> 00:16:10.285
<00:16:09.125>between <00:16:09.473>client <00:16:09.821>and <00:16:10.169>server.

359
00:16:10.665 --> 00:16:12.565
<00:16:10.665>And <00:16:10.805>you <00:16:10.944>can <00:16:11.084>just <00:16:11.224>like <00:16:11.365>have <00:16:11.505>them <00:16:11.645>talk <00:16:11.785>to <00:16:11.925>each <00:16:12.064>other

360
00:16:12.565 --> 00:16:16.045
<00:16:12.565>and <00:16:12.705>only <00:16:12.845>at <00:16:12.985>compile <00:16:13.125>time <00:16:13.265>will <00:16:13.405>this <00:16:13.545>actually <00:16:13.685>be <00:16:13.825>like <00:16:13.965>probably

361
00:16:16.045 --> 00:16:18.245
<00:16:16.045>people <00:16:16.278>here <00:16:16.511>know <00:16:16.745>more <00:16:16.978>details <00:16:17.211>about <00:16:17.444>that.

362
00:16:18.435 --> 00:16:21.245
<00:16:18.435>Only <00:16:18.609>at <00:16:18.785>compile <00:16:18.959>time <00:16:19.135>will <00:16:19.310>this <00:16:19.484>actually <00:16:19.660>be, <00:16:19.834>um,

363
00:16:21.435 --> 00:16:24.205
<00:16:21.435>like <00:16:21.668>created <00:16:21.901>into <00:16:22.135>a <00:16:22.368>client <00:16:22.601>server <00:16:22.834>communication.

364
00:16:24.225 --> 00:16:26.285
<00:16:24.225>So <00:16:24.458>you <00:16:24.691>basically <00:16:24.925>have <00:16:25.158>a <00:16:25.391>seamless <00:16:25.625>experience

365
00:16:26.285 --> 00:16:28.205
<00:16:26.285>after <00:16:26.564>you <00:16:26.844>configured <00:16:27.125>that <00:16:27.405>properly, <00:16:27.685>uh,

366
00:16:28.305 --> 00:16:31.245
<00:16:28.305>across <00:16:28.460>your <00:16:28.616>at <00:16:28.771>least <00:16:28.927>front <00:16:29.082>end <00:16:29.238>and, <00:16:29.393>uh, <00:16:29.549>backend <00:16:29.704>layers.

367
00:16:32.065 --> 00:16:34.365
<00:16:32.065>Um, <00:16:32.192>there <00:16:32.319>are <00:16:32.446>people <00:16:32.574>out <00:16:32.701>there, <00:16:32.828>I <00:16:32.955>don't <00:16:33.083>know <00:16:33.210>if <00:16:33.337>you <00:16:33.465>know,

368
00:16:34.505 --> 00:16:39.005
<00:16:34.505>um, <00:16:34.645>Theo, <00:16:34.785>he's <00:16:34.925>like <00:16:35.064>a <00:16:35.205>favorite <00:16:35.345>YouTuber <00:16:35.485>and <00:16:35.625>um, <00:16:35.765>he <00:16:35.905>is

369
00:16:39.345 --> 00:16:41.845
<00:16:39.345>or <00:16:39.545>was, <00:16:39.745>I <00:16:39.945>don't <00:16:40.145>know, <00:16:40.345>advocating <00:16:40.545>for <00:16:40.745>TRPC

370
00:16:41.985 --> 00:16:43.765
<00:16:41.985>and <00:16:42.265>it's <00:16:42.545>uh, <00:16:42.825>actually <00:16:43.105>it's <00:16:43.385>a,

371
00:16:43.765 --> 00:16:48.205
<00:16:43.765>it's <00:16:43.939>a <00:16:44.115>pretty <00:16:44.290>great <00:16:44.465>experience <00:16:44.640>using <00:16:44.814>TRPC <00:16:44.990>front <00:16:45.165>end.

372
00:16:48.865 --> 00:16:51.565
<00:16:48.865>Who <00:16:49.065>of <00:16:49.265>you <00:16:49.465>is <00:16:49.665>a <00:16:49.865>front <00:16:50.065>end <00:16:50.265>developer

373
00:16:51.875 --> 00:16:54.205
<00:16:51.875>that <00:16:52.050>includes <00:16:52.225>the <00:16:52.400>full <00:16:52.575>stack <00:16:52.750>developers, <00:16:52.925>I <00:16:53.100>would <00:16:53.275>guess.

374
00:16:55.075 --> 00:16:58.205
<00:16:55.075>Okay, <00:16:55.230>that's, <00:16:55.386>yeah, <00:16:55.541>I <00:16:55.697>would've <00:16:55.852>expected <00:16:56.008>more <00:16:56.163>even <00:16:56.319>of, <00:16:56.475>of

375
00:16:58.205 --> 00:16:59.285
<00:16:58.205>what <00:16:58.367>it <00:16:58.529>was <00:16:58.691>already <00:16:58.853>a <00:16:59.015>lot <00:16:59.177>more.

376
00:16:59.625 --> 00:17:01.885
<00:16:59.625>And <00:16:59.780>um, <00:16:59.936>the <00:17:00.091>elephant <00:17:00.247>in <00:17:00.402>the <00:17:00.558>room <00:17:00.713>for <00:17:00.869>front <00:17:01.025>end

377
00:17:01.905 --> 00:17:03.245
<00:17:01.905>of <00:17:02.307>course <00:17:02.709>is <00:17:03.111>react.

378
00:17:03.355 --> 00:17:05.605
<00:17:03.355>Then <00:17:03.705>there's <00:17:04.055>view <00:17:04.405>and <00:17:04.755>um,

379
00:17:06.665 --> 00:17:09.565
<00:17:06.665>we <00:17:06.944>can <00:17:07.224>have <00:17:07.504>automatically <00:17:07.784>generated <00:17:08.065>APIs

380
00:17:09.565 --> 00:17:11.565
<00:17:09.565>that <00:17:09.798>we <00:17:10.031>can <00:17:10.265>use <00:17:10.498>in <00:17:10.731>these <00:17:10.965>frameworks.

381
00:17:11.585 --> 00:17:14.045
<00:17:11.585>Or <00:17:11.760>you <00:17:11.935>can <00:17:12.110>also <00:17:12.285>use <00:17:12.460>vanilla <00:17:12.635>JavaScript, <00:17:12.810>vanilla <00:17:12.985>TypeScript,

382
00:17:14.445 --> 00:17:16.845
<00:17:14.444>whatever <00:17:14.619>you <00:17:14.794>feel <00:17:14.970>like <00:17:15.145>we <00:17:15.319>just <00:17:15.494>talked <00:17:15.669>about <00:17:15.845>TRPC.

383
00:17:17.275 --> 00:17:20.245
<00:17:17.275>Then <00:17:17.508>there <00:17:17.741>is, <00:17:17.975>um, <00:17:18.208>graph <00:17:18.441>QR <00:17:18.675>GraphQL.

384
00:17:21.715 --> 00:17:26.005
<00:17:21.714>Okay, <00:17:21.915>wow, <00:17:22.115>that's <00:17:22.314>surprising. <00:17:22.514>An <00:17:22.714>open <00:17:22.915>API, <00:17:23.115>no.

385
00:17:26.315 --> 00:17:28.765
<00:17:26.315>Okay, <00:17:26.515>A <00:17:26.715>lot <00:17:26.915>more <00:17:27.115>things <00:17:27.315>to <00:17:27.515>talk <00:17:27.715>about.

386
00:17:28.785 --> 00:17:33.005
<00:17:28.785>So <00:17:29.065>GraphQL, <00:17:29.345>um, <00:17:29.625>was <00:17:29.905>created <00:17:30.185>2012

387
00:17:33.505 --> 00:17:36.285
<00:17:33.505>and <00:17:33.785>open <00:17:34.065>source <00:17:34.345>2015 <00:17:34.625>by <00:17:34.905>Facebook

388
00:17:36.385 --> 00:17:38.525
<00:17:36.385>and <00:17:36.665>it's <00:17:36.945>basically <00:17:37.225>like <00:17:37.504>a, <00:17:37.785>again,

389
00:17:38.565 --> 00:17:43.205
<00:17:38.565>A-D-S-L-A <00:17:38.765>domain <00:17:38.965>specific <00:17:39.165>language <00:17:39.365>to <00:17:39.565>create, <00:17:39.765>um, <00:17:39.965>queries

390
00:17:43.735 --> 00:17:47.445
<00:17:43.735>query, <00:17:43.909>uh, <00:17:44.084>yeah, <00:17:44.260>basically <00:17:44.435>queries <00:17:44.610>against <00:17:44.784>your <00:17:44.959>database <00:17:45.135>so

391
00:17:47.445 --> 00:17:49.925
<00:17:47.445>that <00:17:47.645>you <00:17:47.845>can <00:17:48.044>define <00:17:48.245>against <00:17:48.445>the <00:17:48.645>graphical <00:17:48.845>endpoint

392
00:17:50.185 --> 00:17:51.965
<00:17:50.185>how <00:17:50.360>the <00:17:50.534>data <00:17:50.710>that <00:17:50.885>you <00:17:51.060>want <00:17:51.235>should <00:17:51.409>look <00:17:51.585>like.

393
00:17:51.985 --> 00:17:56.325
<00:17:51.985>So <00:17:52.140>you <00:17:52.296>basically <00:17:52.451>can <00:17:52.607>define <00:17:52.762>your <00:17:52.918>response <00:17:53.073>from <00:17:53.229>the <00:17:53.385>client

394
00:17:56.325 --> 00:17:57.405
<00:17:56.325>side, <00:17:56.568>from <00:17:56.811>the <00:17:57.054>front <00:17:57.297>end.

395
00:17:58.225 --> 00:18:00.645
<00:17:58.225>And <00:17:58.365>it <00:17:58.504>works <00:17:58.645>a <00:17:58.784>lot <00:17:58.925>with <00:17:59.064>code <00:17:59.205>generation <00:17:59.344>in <00:17:59.485>the <00:17:59.625>background,

396
00:18:00.645 --> 00:18:01.765
<00:18:00.645>like, <00:18:00.846>like <00:18:01.048>the <00:18:01.249>others <00:18:01.451>as <00:18:01.653>well.

397
00:18:02.075 --> 00:18:03.765
<00:18:02.075>Then <00:18:02.275>we <00:18:02.475>have <00:18:02.675>open <00:18:02.875>API <00:18:03.075>for <00:18:03.275>the <00:18:03.475>people

398
00:18:03.765 --> 00:18:06.445
<00:18:03.765>who <00:18:03.920>did <00:18:04.076>not <00:18:04.231>raise <00:18:04.387>their <00:18:04.542>hand <00:18:04.698>look <00:18:04.853>up <00:18:05.009>open <00:18:05.165>API

399
00:18:07.205 --> 00:18:08.565
<00:18:07.205>is <00:18:07.817>basically <00:18:08.429>everywhere.

400
00:18:08.755 --> 00:18:09.885
<00:18:08.755>It's <00:18:09.263>basically <00:18:09.772>just

401
00:18:09.945 --> 00:18:13.605
<00:18:09.945>or <00:18:10.100>not <00:18:10.256>basically <00:18:10.411>it <00:18:10.567>is <00:18:10.722>a, <00:18:10.878>um, <00:18:11.033>API <00:18:11.189>definition <00:18:11.345>language.

402
00:18:13.745 --> 00:18:16.965
<00:18:13.745>So <00:18:13.885>you <00:18:14.024>can <00:18:14.165>also <00:18:14.304>define <00:18:14.445>your <00:18:14.584>API <00:18:14.725>in <00:18:14.864>this <00:18:15.004>YAML <00:18:15.145>format

403
00:18:17.305 --> 00:18:18.525
<00:18:17.305>and <00:18:17.579>then <00:18:17.854>have <00:18:18.128>your <00:18:18.403>client

404
00:18:18.625 --> 00:18:20.405
<00:18:18.625>and <00:18:18.858>your <00:18:19.091>server <00:18:19.325>code <00:18:19.558>generated <00:18:19.791>from <00:18:20.025>that.

405
00:18:21.195 --> 00:18:22.245
<00:18:21.195>It's <00:18:21.384>a <00:18:21.572>brief <00:18:21.762>to <00:18:21.950>work <00:18:22.139>with.

406
00:18:22.345 --> 00:18:24.805
<00:18:22.345>It <00:18:22.500>used <00:18:22.656>to <00:18:22.811>be <00:18:22.967>called <00:18:23.122>swagger <00:18:23.278>maybe <00:18:23.433>from <00:18:23.589>the <00:18:23.745>people

407
00:18:25.065 --> 00:18:28.085
<00:18:25.065>who <00:18:25.220>do <00:18:25.376>not <00:18:25.531>know <00:18:25.687>open <00:18:25.842>API <00:18:25.998>have <00:18:26.153>you <00:18:26.309>heard <00:18:26.465>swagger?

408
00:18:28.675 --> 00:18:29.845
<00:18:28.675>That <00:18:28.938>might <00:18:29.201>be <00:18:29.464>the <00:18:29.728>case.

409
00:18:30.035 --> 00:18:32.325
<00:18:30.035>It's <00:18:30.190>like <00:18:30.346>you <00:18:30.501>also <00:18:30.657>get <00:18:30.812>like, <00:18:30.968>uh, <00:18:31.123>from <00:18:31.279>a <00:18:31.435>lot

410
00:18:32.325 --> 00:18:35.365
<00:18:32.325>of <00:18:32.558>different <00:18:32.791>libraries, <00:18:33.025>this, <00:18:33.258>uh, <00:18:33.491>fancy <00:18:33.725>UI

411
00:18:35.365 --> 00:18:37.845
<00:18:35.365>where <00:18:35.565>you <00:18:35.765>can <00:18:35.965>click <00:18:36.165>together <00:18:36.365>your <00:18:36.565>API <00:18:36.765>requests.

412
00:18:37.985 --> 00:18:39.045
<00:18:37.985>So <00:18:38.303>I <00:18:38.621>am <00:18:38.939>sure

413
00:18:39.045 --> 00:18:41.525
<00:18:39.045>that <00:18:39.185>more <00:18:39.325>people <00:18:39.465>than <00:18:39.605>raise <00:18:39.745>their <00:18:39.885>hand <00:18:40.025>actually <00:18:40.165>work <00:18:40.305>with <00:18:40.445>that.

414
00:18:41.775 --> 00:18:46.085
<00:18:41.775>Maybe <00:18:41.930>not <00:18:42.086>knowingly, <00:18:42.241>but <00:18:42.397>I'm <00:18:42.552>pretty, <00:18:42.708>pretty <00:18:42.863>sure <00:18:43.019>you <00:18:43.175>did.

415
00:18:46.425 --> 00:18:49.565
<00:18:46.425>So <00:18:46.658>we <00:18:46.891>have <00:18:47.125>a <00:18:47.358>bunch <00:18:47.591>of <00:18:47.825>libraries,

416
00:18:50.225 --> 00:18:53.205
<00:18:50.225>domain <00:18:50.574>specific <00:18:50.925>languages <00:18:51.274>partially <00:18:51.625>compatible.

417
00:18:54.195 --> 00:18:55.925
<00:18:54.195>What <00:18:54.395>do <00:18:54.595>we <00:18:54.794>do <00:18:54.995>with <00:18:55.195>that? <00:18:55.395>Or <00:18:55.595>like

418
00:18:56.275 --> 00:18:57.565
<00:18:56.275>what <00:18:56.468>is <00:18:56.662>the <00:18:56.855>coolest <00:18:57.049>thing <00:18:57.242>about <00:18:57.436>that?

419
00:18:58.025 --> 00:18:59.765
<00:18:58.025>For <00:18:58.305>me, <00:18:58.585>this <00:18:58.865>is <00:18:59.145>the <00:18:59.425>code

420
00:18:59.765 --> 00:19:01.165
<00:18:59.765>generation <00:19:00.017>that <00:19:00.269>happens <00:19:00.521>in <00:19:00.773>the <00:19:01.025>background.

421
00:19:01.165 --> 00:19:02.725
<00:19:01.165>So <00:19:01.365>you <00:19:01.565>don't <00:19:01.764>have <00:19:01.965>to <00:19:02.165>do <00:19:02.365>everything <00:19:02.565>yourself.

422
00:19:02.885 --> 00:19:05.445
<00:19:02.885>I <00:19:03.085>worked <00:19:03.285>on <00:19:03.485>projects, <00:19:03.685>I <00:19:03.885>created <00:19:04.085>projects <00:19:04.285>myself,

423
00:19:05.465 --> 00:19:08.245
<00:19:05.465>but <00:19:05.592>that <00:19:05.719>was <00:19:05.846>hopefully <00:19:05.974>a <00:19:06.101>long <00:19:06.228>time <00:19:06.355>ago <00:19:06.483>where <00:19:06.610>I <00:19:06.737>did <00:19:06.865>most

424
00:19:08.245 --> 00:19:09.805
<00:19:08.245>of <00:19:08.594>these <00:19:08.945>things <00:19:09.294>by <00:19:09.645>myself.

425
00:19:10.675 --> 00:19:12.405
<00:19:10.675>Luckily <00:19:10.955>nowadays <00:19:11.235>we <00:19:11.514>have <00:19:11.794>this <00:19:12.075>code

426
00:19:12.405 --> 00:19:13.925
<00:19:12.405>generation, <00:19:13.089>code <00:19:13.773>generation.

427
00:19:14.465 --> 00:19:16.565
<00:19:14.465>We <00:19:14.665>can <00:19:14.865>also <00:19:15.064>talk <00:19:15.264>for <00:19:15.465>ages <00:19:15.665>about <00:19:15.865>like

428
00:19:16.565 --> 00:19:17.885
<00:19:16.565>how <00:19:16.734>this <00:19:16.904>helps <00:19:17.074>what <00:19:17.243>the <00:19:17.413>trade <00:19:17.583>offs <00:19:17.753>are.

429
00:19:18.625 --> 00:19:22.765
<00:19:18.625>Uh, <00:19:18.780>but <00:19:18.936>it <00:19:19.091>definitely <00:19:19.247>helps <00:19:19.402>you <00:19:19.558>with <00:19:19.713>making <00:19:19.869>fewer <00:19:20.025>mistakes.

430
00:19:23.475 --> 00:19:25.125
<00:19:23.475>Most <00:19:23.708>of <00:19:23.941>it <00:19:24.175>happens <00:19:24.408>at <00:19:24.641>compile <00:19:24.875>time.

431
00:19:25.395 --> 00:19:29.245
<00:19:25.395>That <00:19:25.570>means <00:19:25.745>most <00:19:25.920>of <00:19:26.095>the <00:19:26.270>type <00:19:26.445>incompatibilities <00:19:26.620>are <00:19:26.795>already,

432
00:19:29.385 --> 00:19:32.565
<00:19:29.385>um, <00:19:29.525>caught <00:19:29.665>for <00:19:29.805>you <00:19:29.945>before <00:19:30.085>stuff <00:19:30.225>even <00:19:30.365>hits <00:19:30.504>like <00:19:30.645>a <00:19:30.785>staging

433
00:19:32.565 --> 00:19:34.725
<00:19:32.565>system <00:19:32.798>or <00:19:33.031>something <00:19:33.265>like <00:19:33.498>that, <00:19:33.731>hopefully <00:19:33.965>even

434
00:19:34.745 --> 00:19:37.605
<00:19:34.745>before, <00:19:34.978>um, <00:19:35.211>the <00:19:35.445>central <00:19:35.678>repository <00:19:35.911>allows <00:19:36.145>you

435
00:19:37.605 --> 00:19:41.445
<00:19:37.605>to <00:19:37.760>check <00:19:37.916>code <00:19:38.071>in, <00:19:38.227>um, <00:19:38.382>you <00:19:38.538>have <00:19:38.693>consistency <00:19:38.849>across <00:19:39.005>types.

436
00:19:41.865 --> 00:19:43.605
<00:19:41.865>And, <00:19:42.098>um, <00:19:42.331>as <00:19:42.565>a <00:19:42.798>reminder <00:19:43.031>for <00:19:43.265>myself,

437
00:19:43.925 --> 00:19:45.685
<00:19:43.925>I <00:19:44.158>put <00:19:44.391>this <00:19:44.625>little <00:19:44.858>rocket <00:19:45.091>here, <00:19:45.325>um,

438
00:19:45.685 --> 00:19:48.325
<00:19:45.685>because <00:19:45.918>I, <00:19:46.151>I <00:19:46.385>had <00:19:46.618>one <00:19:46.851>example <00:19:47.085>where

439
00:19:50.105 --> 00:19:54.715
<00:19:50.105>consistency <00:19:50.280>across <00:19:50.455>types <00:19:50.630>was <00:19:50.805>actually, <00:19:50.980>um, <00:19:51.155>a <00:19:51.330>big <00:19:51.505>fail

440
00:19:54.895 --> 00:19:57.195
<00:19:54.895>for <00:19:55.070>I <00:19:55.245>think <00:19:55.420>it <00:19:55.595>was <00:19:55.770>the <00:19:55.945>ESA, <00:19:56.120>the <00:19:56.295>aza,

441
00:19:57.215 --> 00:19:58.755
<00:19:57.215>the <00:19:57.677>European <00:19:58.139>Space <00:19:58.601>Agency.

442
00:19:58.965 --> 00:20:01.515
<00:19:58.965>There <00:19:59.198>was <00:19:59.431>a, <00:19:59.665>an <00:19:59.898>Arianna <00:20:00.131>five <00:20:00.365>rocket,

443
00:20:01.835 --> 00:20:03.955
<00:20:01.835>I <00:20:02.068>think <00:20:02.301>this <00:20:02.535>is <00:20:02.768>the <00:20:03.001>last <00:20:03.235>generation.

444
00:20:03.955 --> 00:20:05.555
<00:20:03.955>We <00:20:04.155>have <00:20:04.355>Arianna <00:20:04.554>six <00:20:04.754>now, <00:20:04.955>I <00:20:05.155>don't <00:20:05.355>know.

445
00:20:06.055 --> 00:20:09.995
<00:20:06.055>And <00:20:06.335>they <00:20:06.615>used <00:20:06.895>a <00:20:07.175>computer <00:20:07.455>system

446
00:20:10.145 --> 00:20:14.835
<00:20:10.145>with <00:20:10.345>a <00:20:10.545>32 <00:20:10.745>bit <00:20:10.945>floating <00:20:11.145>point, <00:20:11.345>uh, <00:20:11.545>variable

447
00:20:15.135 --> 00:20:18.635
<00:20:15.135>and <00:20:15.310>they <00:20:15.485>copy <00:20:15.660>pasted <00:20:15.835>code <00:20:16.010>from <00:20:16.185>the <00:20:16.360>prior <00:20:16.535>generation

448
00:20:19.135 --> 00:20:22.835
<00:20:19.135>of <00:20:19.275>this <00:20:19.415>aviana <00:20:19.555>rocket <00:20:19.695>with <00:20:19.835>a <00:20:19.975>16 <00:20:20.115>bit <00:20:20.254>floating <00:20:20.395>point <00:20:20.535>variable

449
00:20:23.375 --> 00:20:27.675
<00:20:23.375>and <00:20:23.550>had <00:20:23.725>an <00:20:23.900>overflow <00:20:24.075>surprisingly, <00:20:24.250>and <00:20:24.425>the <00:20:24.600>rocket <00:20:24.775>crashed

450
00:20:28.025 --> 00:20:29.275
<00:20:28.025>because <00:20:28.587>of <00:20:29.150>laziness,

451
00:20:29.385 --> 00:20:32.995
<00:20:29.385>because <00:20:29.560>of <00:20:29.735>a, <00:20:29.910>a <00:20:30.085>very, <00:20:30.260>very <00:20:30.435>minor <00:20:30.610>type <00:20:30.785>incompatibility.

452
00:20:33.335 --> 00:20:37.195
<00:20:33.335>So, <00:20:33.615>uh, <00:20:33.895>consistency <00:20:34.175>across <00:20:34.455>types <00:20:34.735>is

453
00:20:37.865 --> 00:20:41.555
<00:20:37.865>important <00:20:38.098>and <00:20:38.331>desirable, <00:20:38.565>but <00:20:38.798>it's <00:20:39.031>also <00:20:39.265>complicated.

454
00:20:41.735 --> 00:20:46.075
<00:20:41.735>So, <00:20:41.862>um, <00:20:41.989>there's <00:20:42.116>a <00:20:42.244>trade <00:20:42.371>off <00:20:42.498>you <00:20:42.625>take, <00:20:42.753>uh, <00:20:42.880>but <00:20:43.007>it's <00:20:43.135>important

455
00:20:46.135 --> 00:20:47.605
<00:20:46.135>and <00:20:46.324>it's <00:20:46.513>important <00:20:46.702>that <00:20:46.891>you <00:20:47.080>look <00:20:47.269>into <00:20:47.458>that.

456
00:20:47.875 --> 00:20:50.325
<00:20:47.875>Another <00:20:48.050>trade <00:20:48.225>off <00:20:48.400>that <00:20:48.575>you <00:20:48.750>have <00:20:48.925>to <00:20:49.100>consider <00:20:49.275>is

457
00:20:50.585 --> 00:20:54.005
<00:20:50.585>how <00:20:50.712>do <00:20:50.839>you <00:20:50.966>sync <00:20:51.094>the <00:20:51.221>types <00:20:51.348>across <00:20:51.475>the <00:20:51.603>systems <00:20:51.730>we <00:20:51.857>looked <00:20:51.985>at?

458
00:20:54.005 --> 00:20:57.565
<00:20:54.005>Sometimes <00:20:54.180>you <00:20:54.355>have <00:20:54.530>the, <00:20:54.705>the <00:20:54.880>possibility <00:20:55.055>to <00:20:55.230>do <00:20:55.405>that

459
00:20:58.075 --> 00:21:00.125
<00:20:58.075>through <00:20:58.308>the <00:20:58.541>libraries <00:20:58.775>that <00:20:59.008>we <00:20:59.241>looked <00:20:59.475>at.

460
00:21:00.795 --> 00:21:04.365
<00:21:00.795>Sometimes <00:21:00.950>they, <00:21:01.106>um, <00:21:01.261>create <00:21:01.417>code <00:21:01.572>for <00:21:01.728>like <00:21:01.883>two <00:21:02.039>sites, <00:21:02.195>um,

461
00:21:04.365 --> 00:21:06.885
<00:21:04.365>of <00:21:04.540>something <00:21:04.715>like <00:21:04.890>the, <00:21:05.065>the <00:21:05.240>database <00:21:05.415>and <00:21:05.590>the <00:21:05.765>backend

462
00:21:06.885 --> 00:21:08.165
<00:21:06.885>or <00:21:07.077>the <00:21:07.269>backend <00:21:07.461>and <00:21:07.653>the <00:21:07.845>front <00:21:08.037>end.

463
00:21:08.465 --> 00:21:09.565
<00:21:08.465>But <00:21:08.629>a <00:21:08.795>lot <00:21:08.960>of <00:21:09.125>times <00:21:09.290>you <00:21:09.455>have

464
00:21:09.565 --> 00:21:12.365
<00:21:09.565>to <00:21:09.740>create <00:21:09.915>something <00:21:10.090>like <00:21:10.265>a <00:21:10.440>monorepo <00:21:10.615>where <00:21:10.790>you <00:21:10.965>have

465
00:21:12.365 --> 00:21:15.405
<00:21:12.365>to <00:21:12.520>have <00:21:12.676>all <00:21:12.831>of <00:21:12.987>the <00:21:13.142>projects <00:21:13.298>basically <00:21:13.453>in <00:21:13.609>an <00:21:13.765>umbrella

466
00:21:15.725 --> 00:21:18.565
<00:21:15.725>repository <00:21:15.958>so <00:21:16.191>that <00:21:16.425>you <00:21:16.658>can <00:21:16.891>easier, <00:21:17.125>um,

467
00:21:18.875 --> 00:21:20.405
<00:21:18.875>sync <00:21:19.219>the <00:21:19.563>types <00:21:19.907>between <00:21:20.252>those.

468
00:21:20.665 --> 00:21:22.165
<00:21:20.665>And <00:21:20.857>that <00:21:21.050>comes <00:21:21.243>with <00:21:21.436>the <00:21:21.629>whole <00:21:21.822>red <00:21:22.014>tail

469
00:21:22.165 --> 00:21:24.085
<00:21:22.165>of <00:21:22.340>other <00:21:22.514>trade <00:21:22.690>offs <00:21:22.865>that <00:21:23.040>you <00:21:23.215>have <00:21:23.389>to <00:21:23.565>make.

470
00:21:24.345 --> 00:21:27.245
<00:21:24.345>Um, <00:21:24.485>a <00:21:24.625>lot <00:21:24.765>of <00:21:24.905>companies, <00:21:25.045>I <00:21:25.185>think <00:21:25.325>Google's <00:21:25.465>code <00:21:25.605>for <00:21:25.745>example,

471
00:21:27.415 --> 00:21:30.085
<00:21:27.415>lives <00:21:27.615>in <00:21:27.815>like <00:21:28.014>one <00:21:28.215>big <00:21:28.415>repository <00:21:28.615>that's <00:21:28.815>hearsay.

472
00:21:30.435 --> 00:21:32.885
<00:21:30.435>Like <00:21:30.610>don't, <00:21:30.784>don't, <00:21:30.960>uh, <00:21:31.135>challenge <00:21:31.310>me <00:21:31.485>on <00:21:31.659>that <00:21:31.835>please.

473
00:21:33.225 --> 00:21:35.445
<00:21:33.225>Um, <00:21:33.399>but <00:21:33.574>there <00:21:33.750>are <00:21:33.925>companies <00:21:34.100>where, <00:21:34.274>um, <00:21:34.449>this <00:21:34.625>is

474
00:21:35.445 --> 00:21:38.125
<00:21:35.445>for <00:21:35.572>sure <00:21:35.699>the <00:21:35.826>case <00:21:35.954>that <00:21:36.081>makes <00:21:36.208>a <00:21:36.335>lot <00:21:36.463>of <00:21:36.590>things <00:21:36.717>easier, <00:21:36.845>makes,

475
00:21:38.145 --> 00:21:39.285
<00:21:38.145>um, <00:21:38.316>a <00:21:38.487>lot <00:21:38.658>of <00:21:38.829>other <00:21:39.000>things <00:21:39.171>harder.

476
00:21:39.425 --> 00:21:41.725
<00:21:39.425>So <00:21:39.625>everything <00:21:39.825>in <00:21:40.024>life <00:21:40.225>is <00:21:40.425>a <00:21:40.625>trade <00:21:40.825>off

477
00:21:41.825 --> 00:21:45.485
<00:21:41.825>and <00:21:41.952>you <00:21:42.079>have <00:21:42.206>to <00:21:42.334>decide, <00:21:42.461>um, <00:21:42.588>which <00:21:42.715>trade <00:21:42.843>offs <00:21:42.970>you <00:21:43.097>are <00:21:43.225>willing

478
00:21:45.485 --> 00:21:48.165
<00:21:45.485>to <00:21:45.685>take <00:21:45.885>for <00:21:46.084>what <00:21:46.284>advantages <00:21:46.485>that <00:21:46.685>you <00:21:46.885>gain.

479
00:21:48.985 --> 00:21:52.765
<00:21:48.985>But, <00:21:49.185>and <00:21:49.385>I <00:21:49.584>uh, <00:21:49.784>repeat <00:21:49.985>that <00:21:50.185>thing <00:21:50.385>here

480
00:21:53.665 --> 00:21:55.605
<00:21:53.665>for <00:21:53.898>I <00:21:54.131>think <00:21:54.365>over <00:21:54.598>10 <00:21:54.831>years <00:21:55.065>now.

481
00:21:56.275 --> 00:21:58.325
<00:21:56.275>There's <00:21:56.508>a <00:21:56.741>book <00:21:56.975>called <00:21:57.208>the <00:21:57.441>Pragmatic <00:21:57.675>Programmer.

482
00:21:58.325 --> 00:22:00.325
<00:21:58.325>It's <00:21:58.605>a <00:21:58.885>great <00:21:59.165>general <00:21:59.445>development <00:21:59.725>book

483
00:22:00.555 --> 00:22:03.045
<00:22:00.555>that <00:22:00.755>has <00:22:00.955>a <00:22:01.155>chapter <00:22:01.355>about <00:22:01.555>code <00:22:01.755>generation <00:22:01.955>tools

484
00:22:03.465 --> 00:22:05.045
<00:22:03.465>and <00:22:03.814>that <00:22:04.165>has <00:22:04.514>a <00:22:04.865>sub-chapter

485
00:22:05.045 --> 00:22:06.725
<00:22:05.045>that <00:22:05.245>is <00:22:05.445>called <00:22:05.645>Don't <00:22:05.845>Trust <00:22:06.045>the <00:22:06.245>Evil <00:22:06.445>Wizard.

486
00:22:07.115 --> 00:22:09.605
<00:22:07.115>Even <00:22:07.270>if <00:22:07.426>all <00:22:07.581>these <00:22:07.737>tools <00:22:07.892>do <00:22:08.048>those <00:22:08.203>things <00:22:08.359>for <00:22:08.515>you,

487
00:22:10.105 --> 00:22:11.645
<00:22:10.105>you <00:22:10.303>still <00:22:10.501>need <00:22:10.699>to <00:22:10.897>know <00:22:11.095>what's <00:22:11.293>happening <00:22:11.491>there.

488
00:22:11.745 --> 00:22:13.245
<00:22:11.745>You <00:22:11.937>still <00:22:12.130>need <00:22:12.323>to <00:22:12.516>know <00:22:12.709>what <00:22:12.902>they <00:22:13.094>produce

489
00:22:13.545 --> 00:22:14.925
<00:22:13.545>and <00:22:13.855>you <00:22:14.166>are <00:22:14.476>still <00:22:14.787>responsible.

490
00:22:15.075 --> 00:22:16.805
<00:22:15.075>Even <00:22:15.308>if <00:22:15.541>the <00:22:15.775>tool <00:22:16.008>is <00:22:16.241>called <00:22:16.475>AI

491
00:22:17.265 --> 00:22:20.045
<00:22:17.265>or <00:22:17.498>something <00:22:17.731>like <00:22:17.965>that, <00:22:18.198>you <00:22:18.431>are <00:22:18.665>responsible

492
00:22:20.085 --> 00:22:21.165
<00:22:20.085>for <00:22:20.328>what <00:22:20.571>those <00:22:20.814>things <00:22:21.057>produce.

493
00:22:21.475 --> 00:22:24.525
<00:22:21.475>This <00:22:21.615>is <00:22:21.754>also <00:22:21.895>why <00:22:22.034>for <00:22:22.175>a <00:22:22.314>long <00:22:22.455>time, <00:22:22.594>in <00:22:22.735>my <00:22:22.875>opinion,

494
00:22:24.825 --> 00:22:27.485
<00:22:24.825>you <00:22:24.965>will <00:22:25.105>still <00:22:25.245>have <00:22:25.385>the <00:22:25.525>human <00:22:25.665>in <00:22:25.805>the <00:22:25.945>loop <00:22:26.085>as <00:22:26.225>one

495
00:22:27.485 --> 00:22:30.245
<00:22:27.485>of <00:22:27.659>the <00:22:27.834>most <00:22:28.010>important <00:22:28.185>subsystems <00:22:28.360>in <00:22:28.534>any <00:22:28.709>AI <00:22:28.885>system.

496
00:22:31.625 --> 00:22:33.585
<00:22:31.625>Personal <00:22:31.858>opinion. <00:22:32.091>Also <00:22:32.325>happy <00:22:32.558>to <00:22:32.791>discuss <00:22:33.025>that.

497
00:22:34.085 --> 00:22:36.705
<00:22:34.085>Um, <00:22:34.435>anyone <00:22:34.785>knows <00:22:35.135>hexagonal <00:22:35.485>architecture.

498
00:22:37.775 --> 00:22:40.505
<00:22:37.775>Okay, <00:22:37.930>that's <00:22:38.086>more <00:22:38.241>than <00:22:38.397>I <00:22:38.552>expected. <00:22:38.708>Uh, <00:22:38.863>domain <00:22:39.019>driven <00:22:39.175>design.

499
00:22:41.605 --> 00:22:46.265
<00:22:41.605>Oh <00:22:41.760>wow, <00:22:41.916>okay. <00:22:42.071>So, <00:22:42.227>um, <00:22:42.382>a <00:22:42.538>lightweight <00:22:42.693>approach <00:22:42.849>of <00:22:43.005>one

500
00:22:46.265 --> 00:22:49.465
<00:22:46.265>of <00:22:46.420>these <00:22:46.576>I <00:22:46.731>would <00:22:46.887>recommend <00:22:47.042>if <00:22:47.198>you <00:22:47.353>go <00:22:47.509>like <00:22:47.665>from

501
00:22:50.585 --> 00:22:51.905
<00:22:50.585>a <00:22:50.882>one-off <00:22:51.179>project <00:22:51.476>to <00:22:51.773>something

502
00:22:51.905 --> 00:22:53.905
<00:22:51.905>that <00:22:52.185>might <00:22:52.465>be <00:22:52.745>slightly <00:22:53.024>more <00:22:53.305>complicated.

503
00:22:53.965 --> 00:22:57.745
<00:22:53.965>So <00:22:54.120>create <00:22:54.276>your <00:22:54.431>own <00:22:54.587>abstractions <00:22:54.742>is <00:22:54.898>like <00:22:55.053>what <00:22:55.209>I <00:22:55.365>want

504
00:22:57.745 --> 00:23:01.385
<00:22:57.745>to <00:22:57.885>say <00:22:58.024>there <00:22:58.165>and <00:22:58.304>avoid, <00:22:58.445>try <00:22:58.584>to <00:22:58.725>avoid <00:22:58.864>vendor <00:22:59.004>lock <00:22:59.145>in

505
00:23:02.105 --> 00:23:03.225
<00:23:02.105>Z <00:23:02.441>is <00:23:02.777>super <00:23:03.112>powerful

506
00:23:03.285 --> 00:23:06.985
<00:23:03.285>and <00:23:03.392>I <00:23:03.500>will, <00:23:03.608>um, <00:23:03.715>like <00:23:03.823>in <00:23:03.931>a, <00:23:04.038>in <00:23:04.146>a <00:23:04.254>minute <00:23:04.361>show <00:23:04.469>like <00:23:04.577>a <00:23:04.685>flow

507
00:23:06.985 --> 00:23:09.665
<00:23:06.985>where <00:23:07.140>you <00:23:07.296>can <00:23:07.451>use <00:23:07.607>Z <00:23:07.762>almost <00:23:07.918>on <00:23:08.073>on <00:23:08.229>every <00:23:08.385>step,

508
00:23:10.605 --> 00:23:13.785
<00:23:10.605>but <00:23:10.780>Z <00:23:10.955>probably <00:23:11.130>at <00:23:11.305>some <00:23:11.480>point <00:23:11.655>goes <00:23:11.830>the <00:23:12.005>way

509
00:23:13.785 --> 00:23:16.625
<00:23:13.785>that <00:23:14.065>most <00:23:14.345>successful <00:23:14.625>developer <00:23:14.905>tools <00:23:15.185>go.

510
00:23:18.445 --> 00:23:21.705
<00:23:18.445>And <00:23:18.572>um, <00:23:18.699>I <00:23:18.826>I <00:23:18.954>love <00:23:19.081>those <00:23:19.208>tools <00:23:19.335>and <00:23:19.463>I <00:23:19.590>don't <00:23:19.717>blame <00:23:19.845>anyone,

511
00:23:21.925 --> 00:23:23.425
<00:23:21.925>but <00:23:22.375>they <00:23:22.825>are <00:23:23.274>successful.

512
00:23:23.425 --> 00:23:25.905
<00:23:23.425>They <00:23:23.580>get <00:23:23.736>bigger <00:23:23.891>clients. <00:23:24.047>Bigger <00:23:24.202>clients <00:23:24.358>come <00:23:24.513>with <00:23:24.669>like, <00:23:24.825>uh,

513
00:23:26.215 --> 00:23:29.065
<00:23:26.215>support <00:23:26.448>requirements <00:23:26.681>and <00:23:26.915>then <00:23:27.148>they <00:23:27.381>need <00:23:27.615>contracts.

514
00:23:29.345 --> 00:23:31.785
<00:23:29.345>Contract <00:23:29.578>contracts <00:23:29.811>require <00:23:30.045>like <00:23:30.278>a <00:23:30.511>commercial <00:23:30.745>agreements

515
00:23:32.125 --> 00:23:36.345
<00:23:32.125>and <00:23:32.300>um, <00:23:32.475>it's <00:23:32.650>almost <00:23:32.825>ever, <00:23:33.000>uh, <00:23:33.175>the <00:23:33.350>same <00:23:33.525>story.

516
00:23:36.345 --> 00:23:38.065
<00:23:36.345>There <00:23:36.578>are <00:23:36.811>of <00:23:37.045>course <00:23:37.278>like <00:23:37.511>big <00:23:37.745>examples.

517
00:23:38.265 --> 00:23:40.865
<00:23:38.265>I <00:23:38.440>think <00:23:38.615>Curl <00:23:38.790>is <00:23:38.965>like <00:23:39.140>one <00:23:39.315>guy <00:23:39.490>in <00:23:39.665>Sweden

518
00:23:40.885 --> 00:23:45.245
<00:23:40.885>or <00:23:41.001>so <00:23:41.118>who <00:23:41.235>knows <00:23:41.351>Curl <00:23:41.468>I <00:23:41.585>bet <00:23:41.701>more, <00:23:41.818>I <00:23:41.935>bet <00:23:42.051>more <00:23:42.168>of <00:23:42.285>you

519
00:23:45.825 --> 00:23:47.205
<00:23:45.825>not <00:23:46.073>only <00:23:46.321>know, <00:23:46.570>but <00:23:46.818>use <00:23:47.067>Curl.

520
00:23:48.145 --> 00:23:51.405
<00:23:48.145>So, <00:23:48.425>and <00:23:48.705>then <00:23:48.985>for <00:23:49.264>me, <00:23:49.545>end

521
00:23:51.405 --> 00:23:54.605
<00:23:51.405>to <00:23:51.605>end <00:23:51.805>doesn't <00:23:52.004>actually <00:23:52.205>end <00:23:52.405>at <00:23:52.605>this <00:23:52.805>three

522
00:23:54.835 --> 00:23:56.245
<00:23:54.835>tier <00:23:55.258>full <00:23:55.681>stack <00:23:56.103>thing.

523
00:23:56.385 --> 00:23:58.245
<00:23:56.385>So <00:23:56.618>for <00:23:56.851>me <00:23:57.085>there <00:23:57.318>is <00:23:57.551>a <00:23:57.785>sidecar

524
00:23:58.245 --> 00:23:59.925
<00:23:58.245>because <00:23:58.594>more <00:23:58.945>often <00:23:59.294>than <00:23:59.645>not,

525
00:23:59.945 --> 00:24:01.725
<00:23:59.945>you <00:24:00.225>also <00:24:00.504>have <00:24:00.784>additional <00:24:01.064>data <00:24:01.345>sources.

526
00:24:01.905 --> 00:24:03.965
<00:24:01.905>Of <00:24:02.080>course, <00:24:02.254>like <00:24:02.430>in <00:24:02.605>these <00:24:02.780>simple <00:24:02.955>credit <00:24:03.129>applications <00:24:03.305>you

527
00:24:03.965 --> 00:24:07.365
<00:24:03.965>don't, <00:24:04.165>but <00:24:04.365>especially <00:24:04.564>with <00:24:04.764>the <00:24:04.965>advent <00:24:05.165>of <00:24:05.365>LLMs

528
00:24:07.365 --> 00:24:08.605
<00:24:07.365>and <00:24:07.923>decentralized <00:24:08.481>technologies,

529
00:24:08.945 --> 00:24:10.045
<00:24:08.945>you <00:24:09.110>have <00:24:09.275>more <00:24:09.440>and <00:24:09.605>more <00:24:09.770>of <00:24:09.935>this.

530
00:24:10.385 --> 00:24:12.765
<00:24:10.385>Of <00:24:10.585>course <00:24:10.785>this <00:24:10.985>sidecar <00:24:11.185>looks <00:24:11.385>a <00:24:11.585>bit <00:24:11.785>s****y,

531
00:24:12.825 --> 00:24:14.805
<00:24:12.825>but <00:24:13.000>it's <00:24:13.175>like <00:24:13.350>the, <00:24:13.525>what's <00:24:13.700>the <00:24:13.875>best <00:24:14.050>that, <00:24:14.225>um,

532
00:24:14.825 --> 00:24:17.725
<00:24:14.825>the <00:24:14.965>AI <00:24:15.105>generated <00:24:15.245>for <00:24:15.385>me <00:24:15.525>it <00:24:15.665>should <00:24:15.805>look <00:24:15.945>more <00:24:16.085>like <00:24:16.225>this.

533
00:24:18.105 --> 00:24:21.485
<00:24:18.105>So <00:24:18.260>across <00:24:18.416>the <00:24:18.571>layers <00:24:18.727>you <00:24:18.882>have <00:24:19.038>additional <00:24:19.193>data <00:24:19.349>sources <00:24:19.505>you

534
00:24:21.485 --> 00:24:23.525
<00:24:21.485>can <00:24:21.659>connect <00:24:21.834>them <00:24:22.010>on <00:24:22.185>in <00:24:22.360>your <00:24:22.534>front <00:24:22.709>end <00:24:22.885>applications

535
00:24:23.525 --> 00:24:24.645
<00:24:23.525>and <00:24:23.861>your <00:24:24.197>backend <00:24:24.533>applications

536
00:24:24.905 --> 00:24:26.645
<00:24:24.905>and <00:24:25.185>also, <00:24:25.465>um, <00:24:25.745>in <00:24:26.024>your <00:24:26.305>database.

537
00:24:26.645 --> 00:24:30.365
<00:24:26.645>Sometimes <00:24:26.800>like <00:24:26.956>you <00:24:27.111>can <00:24:27.267>sometimes <00:24:27.422>directly <00:24:27.578>plug <00:24:27.733>in <00:24:27.889>an <00:24:28.045>AI

538
00:24:30.425 --> 00:24:32.765
<00:24:30.425>for <00:24:30.625>example, <00:24:30.825>for <00:24:31.024>embedding <00:24:31.225>generation, <00:24:31.425>something <00:24:31.625>like <00:24:31.825>that.

539
00:24:33.385 --> 00:24:38.085
<00:24:33.385>And <00:24:33.525>um, <00:24:33.665>big <00:24:33.805>examples <00:24:33.945>for <00:24:34.085>that <00:24:34.225>for <00:24:34.365>me <00:24:34.504>are <00:24:34.645>for <00:24:34.785>example,

540
00:24:38.185 --> 00:24:39.525
<00:24:38.185>the <00:24:38.587>open <00:24:38.989>ai <00:24:39.391>SDK.

541
00:24:39.625 --> 00:24:42.405
<00:24:39.625>And <00:24:39.825>here <00:24:40.025>again <00:24:40.225>we <00:24:40.425>find <00:24:40.625>something <00:24:40.825>that, <00:24:41.025>oops,

542
00:24:42.435 --> 00:24:43.485
<00:24:42.435>that <00:24:42.671>was <00:24:42.907>not <00:24:43.143>my <00:24:43.379>intention.

543
00:24:43.825 --> 00:24:46.725
<00:24:43.825>You'll <00:24:44.025>find <00:24:44.225>something <00:24:44.425>that <00:24:44.625>we <00:24:44.825>just <00:24:45.025>talked <00:24:45.225>about.

544
00:24:46.835 --> 00:24:50.365
<00:24:46.835>There's <00:24:46.990>this <00:24:47.146>little <00:24:47.301>function <00:24:47.457>that <00:24:47.612>can <00:24:47.768>transform <00:24:47.923>a <00:24:48.079>ZO <00:24:48.235>schema

545
00:24:50.365 --> 00:24:51.765
<00:24:50.365>to <00:24:50.995>adjacent <00:24:51.625>schema.

546
00:24:51.925 --> 00:24:53.005
<00:24:51.925>Adjacent <00:24:52.249>schema <00:24:52.573>is <00:24:52.897>something

547
00:24:53.115 --> 00:24:54.965
<00:24:53.115>that <00:24:53.348>the <00:24:53.581>AI <00:24:53.815>understands <00:24:54.048>when <00:24:54.281>you <00:24:54.515>want

548
00:24:54.965 --> 00:24:56.885
<00:24:54.965>to <00:24:55.165>give <00:24:55.365>it <00:24:55.564>instructions <00:24:55.764>for <00:24:55.965>a <00:24:56.165>structured <00:24:56.365>output.

549
00:24:57.265 --> 00:25:00.205
<00:24:57.265>So <00:24:57.498>again, <00:24:57.731>like <00:24:57.965>an <00:24:58.198>additional <00:24:58.431>data <00:24:58.665>source

550
00:25:00.395 --> 00:25:03.245
<00:25:00.395>that <00:25:00.595>we <00:25:00.795>can <00:25:00.995>include <00:25:01.195>in <00:25:01.395>our <00:25:01.595>type <00:25:01.795>systems.

551
00:25:03.385 --> 00:25:05.805
<00:25:03.385>And <00:25:03.540>of <00:25:03.696>course <00:25:03.851>like <00:25:04.007>when <00:25:04.162>you <00:25:04.318>write <00:25:04.473>your <00:25:04.629>own <00:25:04.785>abstraction

552
00:25:05.805 --> 00:25:07.765
<00:25:05.805>around <00:25:06.038>that, <00:25:06.271>because <00:25:06.505>what <00:25:06.738>you <00:25:06.971>get <00:25:07.205>out

553
00:25:07.765 --> 00:25:09.485
<00:25:07.765>of <00:25:08.115>there <00:25:08.465>sometimes <00:25:08.815>is <00:25:09.165>non-deterministic.

554
00:25:09.945 --> 00:25:12.245
<00:25:09.945>You, <00:25:10.145>uh, <00:25:10.345>have <00:25:10.544>to <00:25:10.745>create <00:25:10.945>your <00:25:11.145>own <00:25:11.345>abstraction.

555
00:25:12.585 --> 00:25:15.565
<00:25:12.585>That's <00:25:12.785>like <00:25:12.985>one <00:25:13.185>of <00:25:13.385>my <00:25:13.585>underlying <00:25:13.785>themes <00:25:13.985>here.

556
00:25:15.665 --> 00:25:18.365
<00:25:15.665>Create <00:25:15.820>your <00:25:15.976>own <00:25:16.131>abstractions <00:25:16.287>but <00:25:16.442>still <00:25:16.598>use <00:25:16.753>all <00:25:16.909>this <00:25:17.065>tooling.

557
00:25:19.105 --> 00:25:22.605
<00:25:19.105>And <00:25:19.245>then <00:25:19.385>something <00:25:19.525>I <00:25:19.665>would <00:25:19.805>love <00:25:19.945>to <00:25:20.085>tell <00:25:20.225>you <00:25:20.365>more <00:25:20.505>about

558
00:25:23.185 --> 00:25:27.525
<00:25:23.185>is <00:25:23.465>the, <00:25:23.745>um, <00:25:24.024>a <00:25:24.304>typed <00:25:24.585>clients,

559
00:25:27.785 --> 00:25:30.445
<00:25:27.785>so <00:25:28.018>basically <00:25:28.251>decentralized <00:25:28.485>technologies <00:25:28.718>for <00:25:28.951>the <00:25:29.185>people

560
00:25:30.545 --> 00:25:33.685
<00:25:30.545>who <00:25:30.720>had <00:25:30.895>a <00:25:31.070>bit <00:25:31.245>of <00:25:31.420>contact <00:25:31.595>with <00:25:31.770>blockchain <00:25:31.945>technologies.

561
00:25:34.295 --> 00:25:36.125
<00:25:34.295>Those <00:25:34.575>are <00:25:34.855>basically <00:25:35.135>ways <00:25:35.415>to <00:25:35.695>very,

562
00:25:36.205 --> 00:25:38.645
<00:25:36.205>very <00:25:36.379>easily <00:25:36.554>write <00:25:36.730>something <00:25:36.905>that's <00:25:37.080>called <00:25:37.254>a <00:25:37.429>smart <00:25:37.605>contract.

563
00:25:38.665 --> 00:25:40.605
<00:25:38.665>So <00:25:38.898>there's <00:25:39.131>a <00:25:39.365>bit <00:25:39.598>of, <00:25:39.831>uh, <00:25:40.065>code

564
00:25:40.605 --> 00:25:42.005
<00:25:40.605>that <00:25:40.857>is <00:25:41.109>running <00:25:41.361>on <00:25:41.613>a <00:25:41.865>blockchain.

565
00:25:42.145 --> 00:25:43.245
<00:25:42.145>Who <00:25:42.392>has <00:25:42.639>heard <00:25:42.887>of <00:25:43.135>that?

566
00:25:43.585 --> 00:25:45.285
<00:25:43.585>Or <00:25:43.935>the <00:25:44.285>smart <00:25:44.635>contractors, <00:25:44.985>okay,

567
00:25:45.325 --> 00:25:46.765
<00:25:45.325>I <00:25:45.541>would've <00:25:45.757>hoped <00:25:45.973>those <00:25:46.189>would <00:25:46.405>be <00:25:46.621>more.

568
00:25:46.865 --> 00:25:49.085
<00:25:46.865>So <00:25:47.020>please, <00:25:47.176>please <00:25:47.331>come <00:25:47.487>and <00:25:47.642>talk <00:25:47.798>to <00:25:47.953>me <00:25:48.109>about <00:25:48.265>that

569
00:25:49.085 --> 00:25:51.565
<00:25:49.085>because <00:25:49.225>um, <00:25:49.365>I <00:25:49.505>will <00:25:49.645>open <00:25:49.785>like <00:25:49.925>a, <00:25:50.065>a <00:25:50.205>whole <00:25:50.345>new <00:25:50.485>world

570
00:25:51.565 --> 00:25:53.005
<00:25:51.565>of <00:25:51.889>programming <00:25:52.213>paradigms <00:25:52.537>for <00:25:52.861>you.

571
00:25:53.825 --> 00:25:57.725
<00:25:53.825>But <00:25:53.941>here <00:25:54.058>as <00:25:54.175>well, <00:25:54.291>you <00:25:54.408>can <00:25:54.525>do <00:25:54.641>that <00:25:54.758>with <00:25:54.875>a <00:25:54.991>couple <00:25:55.108>of <00:25:55.225>lines

572
00:25:57.985 --> 00:26:00.725
<00:25:57.985>of <00:25:58.218>TypeScript <00:25:58.451>code <00:25:58.685>that <00:25:58.918>is <00:25:59.151>fully <00:25:59.385>typed

573
00:26:01.105 --> 00:26:02.965
<00:26:01.105>and <00:26:01.305>this <00:26:01.505>will <00:26:01.705>create <00:26:01.905>a <00:26:02.105>client <00:26:02.305>for <00:26:02.505>you

574
00:26:02.985 --> 00:26:06.525
<00:26:02.985>to <00:26:03.159>access <00:26:03.334>this <00:26:03.510>contract <00:26:03.685>code <00:26:03.860>also <00:26:04.034>fully <00:26:04.209>in <00:26:04.385>TypeScript.

575
00:26:06.825 --> 00:26:09.285
<00:26:06.825>And <00:26:07.025>uh, <00:26:07.225>when <00:26:07.425>you <00:26:07.625>come <00:26:07.825>to <00:26:08.025>our <00:26:08.225>booth,

576
00:26:09.475 --> 00:26:11.485
<00:26:09.475>hopefully <00:26:09.754>later <00:26:10.034>we <00:26:10.314>can <00:26:10.594>show <00:26:10.875>you

577
00:26:11.585 --> 00:26:13.485
<00:26:11.585>how <00:26:11.785>you <00:26:11.985>can <00:26:12.185>get <00:26:12.385>this <00:26:12.585>up <00:26:12.785>and <00:26:12.985>running.

578
00:26:13.845 --> 00:26:16.725
<00:26:13.845>I <00:26:13.985>want <00:26:14.125>to <00:26:14.265>say <00:26:14.405>in <00:26:14.545>two <00:26:14.685>minutes <00:26:14.825>it's <00:26:14.965>actually <00:26:15.105>more <00:26:15.245>four,

579
00:26:16.825 --> 00:26:19.805
<00:26:16.825>but <00:26:16.980>two <00:26:17.136>of <00:26:17.291>them <00:26:17.447>are <00:26:17.602>waiting <00:26:17.758>for <00:26:17.913>the <00:26:18.069>NPM <00:26:18.225>dependencies.

580
00:26:19.945 --> 00:26:22.565
<00:26:19.945>So <00:26:20.120>I <00:26:20.294>would <00:26:20.470>say <00:26:20.645>it's <00:26:20.820>uh, <00:26:20.995>actually <00:26:21.169>just <00:26:21.345>two

581
00:26:23.305 --> 00:26:27.725
<00:26:23.305>and <00:26:23.480>on <00:26:23.655>your <00:26:23.830>end-to-end <00:26:24.005>journey <00:26:24.180>you <00:26:24.355>can <00:26:24.530>use <00:26:24.705>drizzle

582
00:26:27.985 --> 00:26:30.125
<00:26:27.985>to <00:26:28.218>the <00:26:28.451>communicate <00:26:28.685>directly <00:26:28.918>with <00:26:29.151>the <00:26:29.385>database.

583
00:26:30.385 --> 00:26:32.805
<00:26:30.385>You <00:26:30.585>can <00:26:30.785>export <00:26:30.985>a <00:26:31.185>z <00:26:31.385>schema <00:26:31.585>from <00:26:31.785>drizzle,

584
00:26:33.315 --> 00:26:35.205
<00:26:33.315>then <00:26:33.595>hopefully <00:26:33.875>this <00:26:34.155>might <00:26:34.435>be <00:26:34.715>optional.

585
00:26:35.225 --> 00:26:37.245
<00:26:35.225>You <00:26:35.425>have <00:26:35.625>some <00:26:35.824>domain <00:26:36.024>codes <00:26:36.225>where <00:26:36.425>you, <00:26:36.625>um,

586
00:26:37.305 --> 00:26:38.645
<00:26:37.305>do <00:26:37.908>custom <00:26:38.511>transformations.

587
00:26:39.075 --> 00:26:43.445
<00:26:39.075>Then <00:26:39.202>you <00:26:39.329>can <00:26:39.456>use <00:26:39.584>horno <00:26:39.711>s <00:26:39.838>the <00:26:39.965>ATT <00:26:40.093>http <00:26:40.220>slash <00:26:40.347>API <00:26:40.475>layer.

588
00:26:43.785 --> 00:26:45.525
<00:26:43.785>And <00:26:43.985>from <00:26:44.185>ho <00:26:44.385>no, <00:26:44.585>you <00:26:44.785>can <00:26:44.985>create <00:26:45.185>something

589
00:26:45.525 --> 00:26:47.205
<00:26:45.525>that's <00:26:45.758>called <00:26:45.991>the <00:26:46.225>HO <00:26:46.458>no <00:26:46.691>HTTP <00:26:46.925>client.

590
00:26:47.265 --> 00:26:49.645
<00:26:47.265>So <00:26:47.420>basically <00:26:47.576>like <00:26:47.731>a <00:26:47.887>client <00:26:48.042>for <00:26:48.198>your <00:26:48.353>ho <00:26:48.509>no <00:26:48.665>API,

591
00:26:49.755 --> 00:26:51.325
<00:26:49.755>that <00:26:49.988>you <00:26:50.221>can <00:26:50.455>then <00:26:50.688>consume <00:26:50.921>and <00:26:51.155>react.

592
00:26:51.625 --> 00:26:54.205
<00:26:51.625>And <00:26:51.800>all <00:26:51.975>of <00:26:52.150>this <00:26:52.325>is <00:26:52.500>roughly <00:26:52.675>based <00:26:52.850>on <00:26:53.025>Z,

593
00:26:54.985 --> 00:26:56.445
<00:26:54.985>you <00:26:55.204>can <00:26:55.423>use <00:26:55.641>Z <00:26:55.860>end <00:26:56.080>to <00:26:56.299>end.

594
00:26:56.625 --> 00:26:59.325
<00:26:56.625>But <00:26:56.800>keep <00:26:56.975>in <00:26:57.150>mind <00:26:57.325>I <00:26:57.500>warn <00:26:57.675>you, <00:26:57.850>don't, <00:26:58.025>uh,

595
00:26:59.385 --> 00:27:00.565
<00:26:59.385>get <00:26:59.650>too <00:26:59.916>excited <00:27:00.181>about <00:27:00.447>that

596
00:27:00.595 --> 00:27:02.485
<00:27:00.595>because <00:27:00.828>you <00:27:01.061>have <00:27:01.295>this <00:27:01.528>vendor <00:27:01.761>lock <00:27:01.995>in.

597
00:27:02.545 --> 00:27:05.765
<00:27:02.545>So <00:27:02.720>a <00:27:02.895>more <00:27:03.070>professional <00:27:03.245>approach <00:27:03.420>might <00:27:03.595>actually <00:27:03.770>look <00:27:03.945>like

598
00:27:05.765 --> 00:27:09.485
<00:27:05.765>this, <00:27:05.940>where <00:27:06.115>you <00:27:06.290>have <00:27:06.465>like <00:27:06.640>this <00:27:06.815>hexagonal <00:27:06.990>design <00:27:07.165>which

599
00:27:09.485 --> 00:27:11.085
<00:27:09.485>basically <00:27:09.834>protects <00:27:10.185>your <00:27:10.534>domain <00:27:10.885>layer.

600
00:27:11.425 --> 00:27:13.685
<00:27:11.425>So <00:27:11.580>like <00:27:11.736>I <00:27:11.891>am <00:27:12.047>happy <00:27:12.202>to <00:27:12.358>discuss <00:27:12.513>this <00:27:12.669>more, <00:27:12.825>um,

601
00:27:13.705 --> 00:27:16.245
<00:27:13.705>at <00:27:13.832>our <00:27:13.959>booth <00:27:14.086>2 <00:27:14.214>22, <00:27:14.341>right <00:27:14.468>over <00:27:14.595>there, <00:27:14.723>I <00:27:14.850>keep <00:27:14.977>repeating <00:27:15.105>that.

602
00:27:16.785 --> 00:27:20.045
<00:27:16.785>And <00:27:16.985>you <00:27:17.185>would <00:27:17.385>basically <00:27:17.585>only <00:27:17.785>use, <00:27:17.985>um, <00:27:18.185>types

603
00:27:20.475 --> 00:27:23.205
<00:27:20.475>that <00:27:20.649>you <00:27:20.824>can <00:27:21.000>also <00:27:21.175>extract <00:27:21.350>actually <00:27:21.524>of <00:27:21.699>thought <00:27:21.875>when,

604
00:27:23.275 --> 00:27:25.885
<00:27:23.275>when <00:27:23.430>you <00:27:23.586>go <00:27:23.741>in <00:27:23.897>and <00:27:24.052>out <00:27:24.208>of <00:27:24.363>your <00:27:24.519>domain <00:27:24.675>layer

605
00:27:25.905 --> 00:27:28.325
<00:27:25.905>and <00:27:26.105>you <00:27:26.305>communicate <00:27:26.504>with <00:27:26.705>systems <00:27:26.905>that <00:27:27.105>are <00:27:27.305>like

606
00:27:28.385 --> 00:27:30.125
<00:27:28.385>around <00:27:28.735>your <00:27:29.085>actual <00:27:29.435>domain <00:27:29.785>code.

607
00:27:30.505 --> 00:27:31.885
<00:27:30.505>And <00:27:30.815>um, <00:27:31.126>for <00:27:31.436>the <00:27:31.747>people

608
00:27:31.945 --> 00:27:34.445
<00:27:31.945>who <00:27:32.100>wonder <00:27:32.256>why <00:27:32.411>I <00:27:32.567>keep <00:27:32.722>saying <00:27:32.878>domain <00:27:33.033>code, <00:27:33.189>this <00:27:33.345>is

609
00:27:34.445 --> 00:27:36.645
<00:27:34.445>where <00:27:34.620>you <00:27:34.794>actually <00:27:34.970>create <00:27:35.145>value <00:27:35.320>most <00:27:35.495>of <00:27:35.669>the <00:27:35.845>time.

610
00:27:37.945 --> 00:27:39.165
<00:27:37.945>So <00:27:38.311>for <00:27:38.677>me <00:27:39.043>personally,

611
00:27:39.165 --> 00:27:41.805
<00:27:39.165>this <00:27:39.320>is <00:27:39.476>most <00:27:39.631>the <00:27:39.787>most <00:27:39.942>important <00:27:40.098>component <00:27:40.253>of <00:27:40.409>your <00:27:40.565>system.

612
00:27:41.935 --> 00:27:45.965
<00:27:41.935>Everything <00:27:42.110>else <00:27:42.284>is <00:27:42.460>just, <00:27:42.635>uh, <00:27:42.810>in <00:27:42.985>an <00:27:43.159>output <00:27:43.335>channels.

613
00:27:46.865 --> 00:27:50.205
<00:27:46.865>So <00:27:47.020>this <00:27:47.176>is <00:27:47.331>the <00:27:47.487>end-to-end <00:27:47.642>plus <00:27:47.798>this <00:27:47.953>is <00:27:48.109>like, <00:27:48.265>uh,

614
00:27:50.205 --> 00:27:52.645
<00:27:50.205>an <00:27:50.360>architecture <00:27:50.516>like <00:27:50.671>when <00:27:50.827>you <00:27:50.982>are <00:27:51.138>a <00:27:51.293>little <00:27:51.449>bit <00:27:51.605>like,

615
00:27:52.665 --> 00:27:54.005
<00:27:52.665>uh, <00:27:53.067>experience <00:27:53.469>with <00:27:53.871>that.

616
00:27:54.595 --> 00:27:56.405
<00:27:54.595>This <00:27:54.828>is <00:27:55.061>how <00:27:55.295>this <00:27:55.528>could <00:27:55.761>look <00:27:55.995>like.

617
00:27:56.825 --> 00:28:00.365
<00:27:56.825>So <00:27:56.941>what, <00:27:57.058>what <00:27:57.175>do <00:27:57.291>I <00:27:57.408>wanted <00:27:57.525>you <00:27:57.641>to <00:27:57.758>take <00:27:57.875>home <00:27:57.991>from <00:27:58.108>this <00:27:58.225>one?

618
00:28:00.575 --> 00:28:05.205
<00:28:00.575>Types <00:28:00.715>are <00:28:00.855>hard. <00:28:00.995>Remember <00:28:01.135>DHH <00:28:01.275>said <00:28:01.415>that, <00:28:01.555>but <00:28:01.695>they're <00:28:01.835>worth <00:28:01.975>it

619
00:28:05.205 --> 00:28:07.165
<00:28:05.205>because <00:28:05.405>they <00:28:05.605>save <00:28:05.804>you <00:28:06.004>a <00:28:06.205>lot <00:28:06.405>of <00:28:06.605>headaches.

620
00:28:07.235 --> 00:28:09.245
<00:28:07.235>They <00:28:07.409>give <00:28:07.584>you <00:28:07.760>confidence <00:28:07.935>to <00:28:08.110>go <00:28:08.284>home <00:28:08.459>on <00:28:08.635>time

621
00:28:09.265 --> 00:28:12.445
<00:28:09.265>and <00:28:09.420>your <00:28:09.576>coat <00:28:09.731>will <00:28:09.887>probably <00:28:10.042>not <00:28:10.198>break, <00:28:10.353>at <00:28:10.509>least <00:28:10.665>not

622
00:28:12.445 --> 00:28:14.085
<00:28:12.445>because <00:28:12.678>of <00:28:12.911>the <00:28:13.145>type <00:28:13.378>decisions <00:28:13.611>you <00:28:13.845>made

623
00:28:14.595 --> 00:28:16.045
<00:28:14.595>When <00:28:14.921>you <00:28:15.247>use <00:28:15.573>strict <00:28:15.900>mode.

624
00:28:16.225 --> 00:28:21.035
<00:28:16.225>And <00:28:16.425>remember, <00:28:16.625>you <00:28:16.824>are <00:28:17.024>any <00:28:17.225>me <00:28:17.425>automate <00:28:17.625>stuff.

625
00:28:21.175 --> 00:28:22.315
<00:28:21.175>We <00:28:21.346>have <00:28:21.517>this <00:28:21.688>out <00:28:21.859>of <00:28:22.030>the <00:28:22.201>box

626
00:28:22.315 --> 00:28:25.315
<00:28:22.315>and <00:28:22.431>the <00:28:22.548>tools <00:28:22.665>that <00:28:22.781>I <00:28:22.898>told <00:28:23.015>you <00:28:23.131>about <00:28:23.248>all <00:28:23.365>the <00:28:23.481>way <00:28:23.598>from <00:28:23.715>drizzle

627
00:28:25.315 --> 00:28:28.475
<00:28:25.315>to <00:28:25.470>a <00:28:25.626>typing <00:28:25.781>is <00:28:25.937>basically <00:28:26.092>taken <00:28:26.248>care <00:28:26.403>of <00:28:26.559>for <00:28:26.715>you.

628
00:28:29.145 --> 00:28:30.475
<00:28:29.145>Integrate <00:28:29.444>things <00:28:29.743>with <00:28:30.042>each <00:28:30.341>other

629
00:28:30.975 --> 00:28:33.955
<00:28:30.975>but <00:28:31.175>use <00:28:31.375>your <00:28:31.574>own <00:28:31.774>abstractions <00:28:31.975>for <00:28:32.175>the <00:28:32.375>code

630
00:28:33.955 --> 00:28:35.355
<00:28:33.955>that <00:28:34.375>actually <00:28:34.795>generates <00:28:35.215>value

631
00:28:35.355 --> 00:28:38.995
<00:28:35.355>because <00:28:35.482>you <00:28:35.609>do <00:28:35.736>not <00:28:35.864>want <00:28:35.991>to <00:28:36.118>bind <00:28:36.245>that <00:28:36.373>to, <00:28:36.500>uh, <00:28:36.627>a <00:28:36.755>library

632
00:28:39.305 --> 00:28:42.795
<00:28:39.305>that <00:28:39.460>might <00:28:39.616>take <00:28:39.771>a <00:28:39.927>path <00:28:40.082>that <00:28:40.238>you <00:28:40.393>don't <00:28:40.549>agree <00:28:40.705>with.

633
00:28:43.735 --> 00:28:47.035
<00:28:43.735>Use <00:28:43.909>everything <00:28:44.084>across <00:28:44.260>the <00:28:44.435>stack. <00:28:44.610>It's <00:28:44.784>an <00:28:44.959>end-to-end <00:28:45.135>journey.

634
00:28:48.015 --> 00:28:50.515
<00:28:48.015>Go <00:28:48.155>beyond <00:28:48.295>the <00:28:48.435>three <00:28:48.575>tier. <00:28:48.715>We <00:28:48.855>talked <00:28:48.995>about <00:28:49.135>the <00:28:49.275>ugly <00:28:49.415>sidecar.

635
00:28:50.765 --> 00:28:52.955
<00:28:50.765>Definitely <00:28:50.940>have <00:28:51.115>to <00:28:51.290>find <00:28:51.465>a <00:28:51.640>better <00:28:51.815>picture <00:28:51.990>for <00:28:52.165>that.

636
00:28:53.975 --> 00:28:57.155
<00:28:53.975>And <00:28:54.130>visit <00:28:54.286>us <00:28:54.441>at <00:28:54.597>Boost <00:28:54.752>2 <00:28:54.908>22 <00:28:55.063>right <00:28:55.219>over <00:28:55.375>there.

637
00:28:57.495 --> 00:28:59.395
<00:28:57.495>I'm <00:28:57.669>happy <00:28:57.844>to <00:28:58.020>talk <00:28:58.195>about <00:28:58.370>all <00:28:58.544>of <00:28:58.719>those <00:28:58.895>topics

638
00:28:59.615 --> 00:29:02.955
<00:28:59.615>and <00:28:59.790>I <00:28:59.965>guess <00:29:00.140>in <00:29:00.315>like, <00:29:00.490>uh, <00:29:00.665>20 <00:29:00.840>ish <00:29:01.015>minutes,

639
00:29:03.095 --> 00:29:06.795
<00:29:03.095>we <00:29:03.211>will <00:29:03.328>have <00:29:03.445>this <00:29:03.561>two <00:29:03.678>to <00:29:03.795>four <00:29:03.911>minute <00:29:04.028>demo <00:29:04.145>for <00:29:04.261>you <00:29:04.378>to <00:29:04.495>see

640
00:29:06.795 --> 00:29:08.395
<00:29:06.795>how <00:29:06.995>easy <00:29:07.195>it <00:29:07.395>can <00:29:07.595>be <00:29:07.795>to <00:29:07.995>get <00:29:08.195>started

641
00:29:08.395 --> 00:29:09.835
<00:29:08.395>with <00:29:09.043>decentralized <00:29:09.691>technologies.

642
00:29:10.925 --> 00:29:11.475
<00:29:10.925>Thank <00:29:11.419>you.