WEBVTT

1
00:00:05.100 --> 00:00:09.800
it

2
00:00:11.700 --> 00:00:14.800
<00:00:11.700>Hello. <00:00:11.855>Hello, <00:00:12.011>can <00:00:12.166>you <00:00:12.322>hear <00:00:12.477>me? <00:00:12.633>Okay. <00:00:12.788>Yeah, <00:00:12.944>this <00:00:13.100>looks

3
00:00:14.800 --> 00:00:17.400
<00:00:14.800>so <00:00:15.080>professional. <00:00:15.360>So <00:00:15.640>cool. <00:00:15.920>Thank <00:00:16.200>you

4
00:00:17.400 --> 00:00:20.100
<00:00:17.400>very <00:00:17.540>much <00:00:17.680>everyone <00:00:17.820>for <00:00:17.959>coming. <00:00:18.099>We're <00:00:18.240>going <00:00:18.380>to <00:00:18.520>see <00:00:18.659>a <00:00:18.799>little

5
00:00:20.100 --> 00:00:23.400
<00:00:20.100>intro <00:00:20.300>to <00:00:20.500>fast <00:00:20.700>API <00:00:20.900>yet <00:00:21.100>first. <00:00:21.300>Let <00:00:21.500>me

6
00:00:23.400 --> 00:00:26.800
<00:00:23.400>ask <00:00:23.540>you <00:00:23.680>how <00:00:23.820>many <00:00:23.959>of <00:00:24.099>you <00:00:24.240>are <00:00:24.380>familiar <00:00:24.520>with <00:00:24.659>python. <00:00:24.799>Please

7
00:00:26.800 --> 00:00:27.500
<00:00:26.800>raise <00:00:27.115>your <00:00:27.430>hands.

8
00:00:28.600 --> 00:00:32.000
<00:00:28.600>Okay, <00:00:28.833>awesome <00:00:29.066>from <00:00:29.300>those <00:00:29.533>of <00:00:29.766>you <00:00:30.000>how

9
00:00:31.200 --> 00:00:34.900
<00:00:31.200>many <00:00:31.400>have <00:00:31.599>heard <00:00:31.800>the <00:00:32.000>first <00:00:32.199>API <00:00:32.400>or <00:00:32.600>have

10
00:00:34.900 --> 00:00:37.400
<00:00:34.900>used <00:00:35.180>it? <00:00:35.460>Okay, <00:00:35.739>awesome. <00:00:36.019>Perfect. <00:00:36.300>So

11
00:00:37.400 --> 00:00:40.600
<00:00:37.400>let's <00:00:37.633>get <00:00:37.866>to <00:00:38.100>it. <00:00:38.333>So <00:00:38.566>first <00:00:38.800>API

12
00:00:40.600 --> 00:00:43.400
<00:00:40.600>is <00:00:40.755>a <00:00:40.911>high <00:00:41.066>performance <00:00:41.222>easy <00:00:41.377>to <00:00:41.533>learn <00:00:41.688>a <00:00:41.844>fast <00:00:42.000>code

13
00:00:43.400 --> 00:00:46.600
<00:00:43.400>and <00:00:43.680>production <00:00:43.960>python <00:00:44.239>with <00:00:44.519>framework <00:00:44.800>or

14
00:00:46.600 --> 00:00:49.100
<00:00:46.600>framework <00:00:46.800>for <00:00:47.000>building <00:00:47.200>web <00:00:47.400>apis. <00:00:47.600>First <00:00:47.800>a <00:00:48.000>little

15
00:00:49.100 --> 00:00:52.600
<00:00:49.100>bit <00:00:49.300>about <00:00:49.500>me. <00:00:49.700>I'm <00:00:49.900>serious. <00:00:50.100>I'm <00:00:50.300>a <00:00:50.500>I'm

16
00:00:52.600 --> 00:00:55.400
<00:00:52.600>from <00:00:52.800>Colombia <00:00:53.000>South <00:00:53.200>America. <00:00:53.400>That's <00:00:53.600>why <00:00:53.800>the <00:00:54.000>accent

17
00:00:55.400 --> 00:00:58.500
<00:00:55.400>but <00:00:55.574>I <00:00:55.750>live <00:00:55.925>here <00:00:56.100>in <00:00:56.275>Berlin <00:00:56.449>Germany. <00:00:56.625>You <00:00:56.800>can

18
00:00:58.500 --> 00:01:01.500
<00:00:58.500>find <00:00:58.627>me <00:00:58.754>on <00:00:58.881>GitHub <00:00:59.009>LinkedIn <00:00:59.136>Twitter <00:00:59.263>all <00:00:59.390>those <00:00:59.518>things. <00:00:59.645>I <00:00:59.772>currently <00:00:59.900>work

19
00:01:01.500 --> 00:01:04.300
<00:01:01.500>for <00:01:01.850>Plus <00:01:02.200>or <00:01:02.550>companies <00:01:02.900>doing

20
00:01:04.300 --> 00:01:07.400
<00:01:04.300>some <00:01:04.474>consultancy <00:01:04.649>some <00:01:04.825>stuff. <00:01:05.000>I <00:01:05.175>have <00:01:05.349>built <00:01:05.524>so <00:01:05.700>many

21
00:01:07.400 --> 00:01:10.200
<00:01:07.400>open <00:01:07.633>source <00:01:07.866>packages <00:01:08.100>and <00:01:08.333>we're <00:01:08.566>gonna <00:01:08.800>talk

22
00:01:10.200 --> 00:01:13.100
<00:01:10.200>about <00:01:10.375>fast <00:01:10.550>API, <00:01:10.725>so <00:01:10.900>that's <00:01:11.075>why <00:01:11.250>I'm <00:01:11.425>here <00:01:11.600>with

23
00:01:13.100 --> 00:01:16.300
<00:01:13.100>you <00:01:13.240>today. <00:01:13.380>So <00:01:13.520>what <00:01:13.660>is <00:01:13.800>this <00:01:13.940>thing <00:01:14.080>about <00:01:14.220>CPA <00:01:14.360>is <00:01:14.500>a

24
00:01:16.300 --> 00:01:21.500
<00:01:16.300>python <00:01:16.416>web <00:01:16.533>framework. <00:01:16.649>It <00:01:16.766>has <00:01:16.883>been <00:01:17.000>growing <00:01:17.116>a <00:01:17.233>lot. <00:01:17.350>It <00:01:17.466>has <00:01:17.583>like <00:01:17.700>40,000

25
00:01:19.500 --> 00:01:22.100
<00:01:19.500>Stars <00:01:20.900>something

26
00:01:22.100 --> 00:01:25.100
<00:01:22.100>like <00:01:22.216>that <00:01:22.333>a <00:01:22.449>people <00:01:22.566>have <00:01:22.683>been <00:01:22.800>like <00:01:22.916>in <00:01:23.033>it <00:01:23.149>has <00:01:23.266>been <00:01:23.383>growing <00:01:23.500>like

27
00:01:25.100 --> 00:01:28.300
<00:01:25.100>1,000 <00:01:25.449>or <00:01:25.800>something. <00:01:26.149>It's <00:01:26.500>currently

28
00:01:28.500 --> 00:01:31.600
<00:01:28.500>By <00:01:28.655>Microsoft <00:01:28.811>over <00:01:28.966>Netflix <00:01:29.122>and <00:01:29.277>a <00:01:29.433>bunch <00:01:29.588>of <00:01:29.744>other <00:01:29.900>companies

29
00:01:31.600 --> 00:01:33.500
<00:01:31.600>using <00:01:32.300>fast <00:01:33.000>API.

30
00:01:34.200 --> 00:01:37.700
<00:01:34.200>It's <00:01:34.375>currently <00:01:34.550>the <00:01:34.725>third <00:01:34.900>most <00:01:35.075>used <00:01:35.250>python <00:01:35.425>framework. <00:01:35.600>This

31
00:01:37.700 --> 00:01:40.100
<00:01:37.700>is <00:01:37.900>from <00:01:38.100>the <00:01:38.300>python <00:01:38.500>developer <00:01:38.700>survey. <00:01:38.900>So <00:01:39.100>the

32
00:01:40.100 --> 00:01:43.400
<00:01:40.100>first <00:01:40.240>is <00:01:40.380>flask. <00:01:40.520>The <00:01:40.660>second <00:01:40.800>is <00:01:40.940>Django <00:01:41.080>a <00:01:41.220>fast <00:01:41.360>API <00:01:41.500>is

33
00:01:43.400 --> 00:01:46.600
<00:01:43.400>the <00:01:43.575>affair <00:01:43.750>there. <00:01:43.925>It <00:01:44.100>was <00:01:44.275>also <00:01:44.450>the <00:01:44.625>third <00:01:44.800>most

34
00:01:46.600 --> 00:01:49.400
<00:01:46.600>loved <00:01:46.949>a <00:01:47.300>framework <00:01:47.649>by <00:01:48.000>the

35
00:01:49.400 --> 00:01:52.700
<00:01:49.400>stack <00:01:49.600>Overflow <00:01:49.800>developer <00:01:50.000>survey <00:01:50.200>and <00:01:50.400>these <00:01:50.600>this <00:01:50.800>survey

36
00:01:52.700 --> 00:01:55.300
<00:01:52.700>mixed <00:01:52.980>front-end <00:01:53.260>with <00:01:53.540>backend <00:01:53.820>so <00:01:54.100>fast,

37
00:01:55.300 --> 00:01:58.900
<00:01:55.300>they <00:01:55.440>pay <00:01:55.580>was <00:01:55.720>right <00:01:55.860>on <00:01:56.000>top <00:01:56.140>of <00:01:56.280>UJS <00:01:56.420>and <00:01:56.560>react <00:01:56.700>which

38
00:01:58.900 --> 00:02:01.500
<00:01:58.900>is <00:01:59.180>unbelievable. <00:01:59.460>I <00:01:59.740>don't <00:02:00.020>think <00:02:00.300>it's

39
00:02:01.500 --> 00:02:04.100
<00:02:01.500>true. <00:02:01.700>But <00:02:01.900>anyway <00:02:02.100>people <00:02:02.300>like <00:02:02.500>it <00:02:02.700>that's <00:02:02.900>the

40
00:02:04.100 --> 00:02:07.600
<00:02:04.100>point <00:02:04.240>and <00:02:04.380>is <00:02:04.520>there <00:02:04.660>the <00:02:04.800>one <00:02:04.940>with <00:02:05.080>the <00:02:05.220>fastest <00:02:05.360>growth <00:02:05.500>in

41
00:02:07.600 --> 00:02:11.000
<00:02:07.600>the <00:02:07.774>python <00:02:07.949>world? <00:02:08.125>So <00:02:08.299>it's <00:02:08.475>been <00:02:08.650>growing <00:02:08.824>much <00:02:09.000>faster

42
00:02:10.500 --> 00:02:13.900
<00:02:10.500>than <00:02:10.780>the <00:02:11.060>other <00:02:11.340>Alternatives <00:02:11.620>in <00:02:11.900>adoption.

43
00:02:14.400 --> 00:02:17.100
<00:02:14.400>So <00:02:14.555>that's <00:02:14.711>that's <00:02:14.866>what <00:02:15.022>that's <00:02:15.177>the <00:02:15.333>case <00:02:15.488>a <00:02:15.644>little <00:02:15.800>bit

44
00:02:17.100 --> 00:02:20.100
<00:02:17.100>about <00:02:17.275>fast <00:02:17.450>API. <00:02:17.625>Now <00:02:17.799>let's <00:02:17.975>actually <00:02:18.150>see. <00:02:18.325>What <00:02:18.500>is

45
00:02:20.100 --> 00:02:23.000
<00:02:20.100>the <00:02:20.200>idea <00:02:20.299>with <00:02:20.400>first <00:02:20.500>API <00:02:20.600>fast <00:02:20.700>API <00:02:20.799>is <00:02:20.900>based <00:02:21.000>on <00:02:21.100>standards. <00:02:21.200>So <00:02:21.299>it's <00:02:21.400>based <00:02:21.500>on

46
00:02:23.300 --> 00:02:26.100
<00:02:23.300>open <00:02:23.475>API <00:02:23.650>open <00:02:23.825>API <00:02:24.000>internally <00:02:24.175>uses <00:02:24.350>Json <00:02:24.525>schema, <00:02:24.700>which

47
00:02:26.100 --> 00:02:29.100
<00:02:26.100>is <00:02:26.216>another <00:02:26.333>standard <00:02:26.450>and <00:02:26.566>also <00:02:26.683>integrated <00:02:26.799>with <00:02:26.916>all <00:02:27.033>I <00:02:27.150>was <00:02:27.266>too <00:02:27.383>which <00:02:27.500>is

48
00:02:29.100 --> 00:02:32.600
<00:02:29.100>the <00:02:29.216>standard <00:02:29.333>for <00:02:29.450>doing <00:02:29.566>authentication <00:02:29.683>and <00:02:29.799>authorization <00:02:29.916>and <00:02:30.033>all <00:02:30.150>these <00:02:30.266>things <00:02:30.383>whenever <00:02:30.500>you

49
00:02:32.600 --> 00:02:35.100
<00:02:32.600>go <00:02:32.775>to <00:02:32.950>a <00:02:33.125>website <00:02:33.299>and <00:02:33.475>you <00:02:33.650>say <00:02:33.825>login <00:02:34.000>with

50
00:02:35.100 --> 00:02:38.200
<00:02:35.100>Facebook <00:02:35.255>or <00:02:35.411>login <00:02:35.566>with <00:02:35.722>Google <00:02:35.877>login <00:02:36.033>with <00:02:36.188>GitHub. <00:02:36.344>All <00:02:36.500>these

51
00:02:38.200 --> 00:02:41.600
<00:02:38.200>is <00:02:38.339>using <00:02:38.480>all <00:02:38.619>those <00:02:38.760>two <00:02:38.899>on <00:02:39.040>their <00:02:39.179>needs. <00:02:39.320>So <00:02:39.459>fast <00:02:39.600>API

52
00:02:41.600 --> 00:02:44.100
<00:02:41.600>is <00:02:41.755>based <00:02:41.911>on <00:02:42.066>this <00:02:42.222>standards <00:02:42.377>that <00:02:42.533>integrate <00:02:42.688>all <00:02:42.844>these <00:02:43.000>things

53
00:02:44.100 --> 00:02:47.700
<00:02:44.100>together. <00:02:44.200>So <00:02:44.299>the <00:02:44.400>thing <00:02:44.500>is <00:02:44.600>that <00:02:44.700>when <00:02:44.799>you <00:02:44.900>build <00:02:45.000>an <00:02:45.100>application <00:02:45.200>with <00:02:45.299>fast <00:02:45.400>API, <00:02:45.500>hey,

54
00:02:47.700 --> 00:02:50.400
<00:02:47.700>you <00:02:47.855>get <00:02:48.011>something <00:02:48.166>that <00:02:48.322>is <00:02:48.477>based <00:02:48.633>on <00:02:48.788>those <00:02:48.944>standards <00:02:49.100>by

55
00:02:50.400 --> 00:02:50.800
default.

56
00:02:51.500 --> 00:02:54.600
<00:02:51.500>And <00:02:51.675>is <00:02:51.850>based <00:02:52.025>on <00:02:52.200>the <00:02:52.375>standard <00:02:52.550>python <00:02:52.725>type <00:02:52.900>annotations.

57
00:02:54.600 --> 00:02:57.700
<00:02:54.600>So <00:02:54.880>this <00:02:55.160>type <00:02:55.440>annotations <00:02:55.720>when <00:02:56.000>you

58
00:02:57.700 --> 00:03:00.200
<00:02:57.700>declare <00:02:57.899>the <00:02:58.100>type <00:02:58.299>notations <00:02:58.500>are <00:02:58.700>the <00:02:58.899>way <00:02:59.100>that

59
00:03:00.200 --> 00:03:03.600
<00:03:00.200>you <00:03:00.355>say <00:03:00.511>that <00:03:00.666>something <00:03:00.822>some <00:03:00.977>variable <00:03:01.133>has <00:03:01.288>some <00:03:01.444>particular <00:03:01.600>type.

60
00:03:03.600 --> 00:03:06.400
<00:03:03.600>If <00:03:03.799>you <00:03:04.000>don't <00:03:04.200>know <00:03:04.400>in <00:03:04.600>Python <00:03:04.799>any <00:03:05.000>variable

61
00:03:06.400 --> 00:03:09.700
<00:03:06.400>can <00:03:06.555>have <00:03:06.711>any <00:03:06.866>type <00:03:07.022>and <00:03:07.177>it <00:03:07.333>can <00:03:07.488>change <00:03:07.644>the <00:03:07.800>type

62
00:03:09.700 --> 00:03:12.200
<00:03:09.700>over <00:03:09.875>time. <00:03:10.049>So <00:03:10.225>it's <00:03:10.399>different <00:03:10.575>than <00:03:10.750>other <00:03:10.924>languages <00:03:11.100>that

63
00:03:12.200 --> 00:03:16.400
<00:03:12.200>are <00:03:12.480>strongly <00:03:12.760>typed <00:03:13.040>but <00:03:13.320>it's <00:03:13.600>encouraged

64
00:03:15.400 --> 00:03:18.200
<00:03:15.400>to <00:03:15.575>keep <00:03:15.750>the <00:03:15.925>same <00:03:16.100>types <00:03:16.275>in <00:03:16.450>variables <00:03:16.625>and <00:03:16.800>things

65
00:03:18.200 --> 00:03:21.200
<00:03:18.200>like <00:03:18.399>that. <00:03:18.600>And <00:03:18.799>now <00:03:19.000>in <00:03:19.200>New <00:03:19.399>in <00:03:19.600>recent

66
00:03:21.200 --> 00:03:24.300
<00:03:21.200>versions <00:03:21.339>of <00:03:21.480>python, <00:03:21.619>you <00:03:21.760>can <00:03:21.899>declare <00:03:22.040>whether <00:03:22.179>the <00:03:22.320>types <00:03:22.459>of <00:03:22.600>some

67
00:03:24.300 --> 00:03:27.200
<00:03:24.300>particular <00:03:24.475>variables <00:03:24.650>for <00:03:24.825>example, <00:03:25.000>the <00:03:25.175>parameters <00:03:25.350>in <00:03:25.525>functions. <00:03:25.700>And

68
00:03:27.200 --> 00:03:30.500
<00:03:27.200>when <00:03:27.327>you <00:03:27.454>declare <00:03:27.581>those <00:03:27.709>types, <00:03:27.836>you <00:03:27.963>get <00:03:28.090>these <00:03:28.218>very <00:03:28.345>nice <00:03:28.472>things <00:03:28.600>like

69
00:03:30.500 --> 00:03:33.200
<00:03:30.500>well <00:03:30.733>not <00:03:30.966>this <00:03:31.200>nice <00:03:31.433>thing <00:03:31.666>you <00:03:31.900>get

70
00:03:33.200 --> 00:03:36.500
<00:03:33.200>a <00:03:33.307>inline <00:03:33.415>errors <00:03:33.523>you <00:03:33.630>get <00:03:33.738>able <00:03:33.846>to <00:03:33.953>completion <00:03:34.061>and <00:03:34.169>you <00:03:34.276>get <00:03:34.384>those <00:03:34.492>things <00:03:34.600>provided

71
00:03:36.500 --> 00:03:40.000
<00:03:36.500>by <00:03:36.655>your <00:03:36.811>editor, <00:03:36.966>but <00:03:37.122>then <00:03:37.277>fast <00:03:37.433>API <00:03:37.588>uses <00:03:37.744>those <00:03:37.900>annotations

72
00:03:39.200 --> 00:03:42.300
<00:03:39.200>and <00:03:39.433>extends <00:03:39.666>that <00:03:39.899>functionality <00:03:40.133>for <00:03:40.366>the <00:03:40.600>to

73
00:03:42.300 --> 00:03:45.500
<00:03:42.300>give <00:03:42.475>you <00:03:42.650>data <00:03:42.825>validation <00:03:43.000>and <00:03:43.175>data <00:03:43.350>serialization <00:03:43.525>and <00:03:43.700>documentation.

74
00:03:46.200 --> 00:03:49.500
<00:03:46.200>So <00:03:46.339>now <00:03:46.480>you <00:03:46.619>get <00:03:46.760>something <00:03:46.899>that <00:03:47.040>is <00:03:47.179>based <00:03:47.320>on <00:03:47.459>standards <00:03:47.600>and

75
00:03:49.500 --> 00:03:52.200
<00:03:49.500>for <00:03:49.627>free <00:03:49.754>you <00:03:49.881>just <00:03:50.009>have <00:03:50.136>to <00:03:50.263>use <00:03:50.390>the <00:03:50.518>same <00:03:50.645>code <00:03:50.772>as <00:03:50.900>normal.

76
00:03:53.500 --> 00:03:56.200
<00:03:53.500>Now <00:03:53.607>the <00:03:53.715>thing <00:03:53.823>is <00:03:53.930>that <00:03:54.038>this <00:03:54.146>is <00:03:54.253>based <00:03:54.361>on <00:03:54.469>python <00:03:54.576>type <00:03:54.684>in <00:03:54.792>this <00:03:54.900>is

77
00:03:56.200 --> 00:03:59.600
<00:03:56.200>python <00:03:56.339>Syntax <00:03:56.480>for <00:03:56.619>those <00:03:56.760>that <00:03:56.899>are <00:03:57.040>not <00:03:57.179>familiar <00:03:57.320>with <00:03:57.459>the <00:03:57.600>way

78
00:03:59.600 --> 00:04:01.700
<00:03:59.600>that <00:03:59.799>you <00:04:00.000>declare. <00:04:00.200>Just <00:04:00.400>pay <00:04:00.600>attention <00:04:00.799>to <00:04:01.000>these.

79
00:04:02.200 --> 00:04:05.200
<00:04:02.200>Function <00:04:02.316>the <00:04:02.433>way <00:04:02.549>that <00:04:02.666>you <00:04:02.783>declare. <00:04:02.899>This <00:04:03.016>is <00:04:03.133>a <00:04:03.250>parameter <00:04:03.366>that <00:04:03.483>goes <00:04:03.600>to

80
00:04:05.200 --> 00:04:08.500
<00:04:05.200>the <00:04:05.299>function <00:04:05.399>and <00:04:05.500>this <00:04:05.600>is <00:04:05.700>the <00:04:05.799>standard <00:04:05.899>way <00:04:06.000>that <00:04:06.100>you <00:04:06.200>will <00:04:06.299>declare <00:04:06.399>that <00:04:06.500>this <00:04:06.600>parameter

81
00:04:08.500 --> 00:04:12.000
<00:04:08.500>is <00:04:08.675>will <00:04:08.850>be <00:04:09.025>an <00:04:09.200>instance <00:04:09.375>of <00:04:09.550>the <00:04:09.725>class <00:04:09.900>item.

82
00:04:11.500 --> 00:04:14.200
<00:04:11.500>So <00:04:11.733>this <00:04:11.966>is <00:04:12.200>standard <00:04:12.433>python. <00:04:12.666>This <00:04:12.900>is

83
00:04:14.200 --> 00:04:17.100
<00:04:14.200>not <00:04:14.316>something <00:04:14.433>new <00:04:14.549>you <00:04:14.666>don't <00:04:14.783>have <00:04:14.899>to <00:04:15.016>use <00:04:15.133>a <00:04:15.250>new <00:04:15.366>syntax <00:04:15.483>or <00:04:15.600>something.

84
00:04:17.100 --> 00:04:20.200
<00:04:17.100>It's <00:04:17.255>just <00:04:17.411>how <00:04:17.566>you <00:04:17.722>will <00:04:17.877>code <00:04:18.033>with <00:04:18.188>price <00:04:18.344>and <00:04:18.500>because

85
00:04:20.200 --> 00:04:23.100
<00:04:20.200>it <00:04:20.355>uses <00:04:20.511>this <00:04:20.666>standard <00:04:20.822>type <00:04:20.977>annotations <00:04:21.133>you <00:04:21.288>get <00:04:21.444>how <00:04:21.599>to

86
00:04:23.100 --> 00:04:26.100
<00:04:23.100>completion <00:04:23.275>and <00:04:23.450>a <00:04:23.625>inline <00:04:23.800>errors <00:04:23.975>and <00:04:24.150>all <00:04:24.325>the <00:04:24.500>stuff

87
00:04:26.100 --> 00:04:29.600
<00:04:26.100>everywhere <00:04:26.240>in <00:04:26.380>the <00:04:26.520>code. <00:04:26.660>So <00:04:26.800>it's <00:04:26.940>everything <00:04:27.080>is <00:04:27.220>designed. <00:04:27.360>I'm <00:04:27.500>a

88
00:04:29.600 --> 00:04:32.200
<00:04:29.600>very <00:04:29.775>bad <00:04:29.950>programmer. <00:04:30.125>I <00:04:30.300>don't <00:04:30.475>remember <00:04:30.650>the <00:04:30.825>names <00:04:31.000>of

89
00:04:32.200 --> 00:04:35.400
<00:04:32.200>the <00:04:32.307>attributes <00:04:32.415>and <00:04:32.523>the <00:04:32.630>methods <00:04:32.738>and <00:04:32.846>all <00:04:32.953>the <00:04:33.061>stuff. <00:04:33.169>So <00:04:33.276>I <00:04:33.384>build <00:04:33.492>this <00:04:33.599>thing

90
00:04:35.400 --> 00:04:38.500
<00:04:35.400>so <00:04:35.539>it <00:04:35.679>will <00:04:35.820>remember <00:04:35.960>me. <00:04:36.099>It <00:04:36.239>will <00:04:36.380>remind <00:04:36.520>me. <00:04:36.659>What <00:04:36.799>are

91
00:04:38.500 --> 00:04:41.400
<00:04:38.500>those <00:04:38.616>names <00:04:38.733>of <00:04:38.850>those <00:04:38.966>methods? <00:04:39.083>I <00:04:39.200>can <00:04:39.316>trigger <00:04:39.433>how <00:04:39.550>to <00:04:39.666>completion <00:04:39.783>everywhere. <00:04:39.900>So

92
00:04:41.400 --> 00:04:44.800
<00:04:41.400>the <00:04:41.539>idea <00:04:41.679>is <00:04:41.820>to <00:04:41.960>have <00:04:42.099>Auto <00:04:42.239>completion <00:04:42.380>and <00:04:42.520>these <00:04:42.659>tools <00:04:42.799>that

93
00:04:44.800 --> 00:04:47.300
<00:04:44.800>editors <00:04:44.975>can <00:04:45.150>provide <00:04:45.325>you <00:04:45.500>everywhere <00:04:45.675>in <00:04:45.850>the <00:04:46.025>code. <00:04:46.200>So

94
00:04:47.300 --> 00:04:50.700
<00:04:47.300>the <00:04:47.427>thing <00:04:47.554>is <00:04:47.681>that <00:04:47.809>that <00:04:47.936>way <00:04:48.063>you <00:04:48.190>can <00:04:48.318>how <00:04:48.445>to <00:04:48.572>completion <00:04:48.700>everywhere

95
00:04:50.700 --> 00:04:54.300
<00:04:50.700>and <00:04:50.933>be <00:04:51.166>happy <00:04:51.400>like <00:04:51.633>this <00:04:51.866>a <00:04:52.099>now

96
00:04:53.300 --> 00:04:56.100
<00:04:53.300>the <00:04:53.475>idea <00:04:53.650>with <00:04:53.825>first <00:04:54.000>API <00:04:54.175>is <00:04:54.350>that <00:04:54.525>it's <00:04:54.700>easy

97
00:04:56.100 --> 00:04:59.100
<00:04:56.100>and <00:04:56.216>short <00:04:56.333>it <00:04:56.450>should <00:04:56.566>be <00:04:56.683>very <00:04:56.800>little <00:04:56.916>code <00:04:57.033>that <00:04:57.150>you <00:04:57.266>need <00:04:57.383>to <00:04:57.500>write

98
00:04:59.100 --> 00:05:01.800
<00:04:59.100>for <00:04:59.300>fast <00:04:59.500>API <00:04:59.700>itself. <00:04:59.900>This <00:05:00.100>is <00:05:00.300>a <00:05:00.500>complete

99
00:05:02.200 --> 00:05:05.500
<00:05:02.200>Be <00:05:02.355>a <00:05:02.511>application. <00:05:02.666>So <00:05:02.822>you <00:05:02.977>just <00:05:03.133>import <00:05:03.288>files <00:05:03.444>API <00:05:03.599>create

100
00:05:05.500 --> 00:05:09.000
<00:05:05.500>a <00:05:05.640>fast <00:05:05.780>API <00:05:05.920>app <00:05:06.060>and <00:05:06.200>then <00:05:06.340>you <00:05:06.480>can <00:05:06.620>decorate <00:05:06.760>some <00:05:06.900>functions

101
00:05:08.800 --> 00:05:11.500
<00:05:08.800>this <00:05:09.266>at <00:05:09.733>symbol. <00:05:10.200>This

102
00:05:11.500 --> 00:05:14.100
<00:05:11.500>is <00:05:11.616>a <00:05:11.733>decorator. <00:05:11.850>It's <00:05:11.966>a <00:05:12.083>way <00:05:12.200>to <00:05:12.316>tell <00:05:12.433>hey, <00:05:12.550>I <00:05:12.666>want <00:05:12.783>you <00:05:12.900>to

103
00:05:14.100 --> 00:05:17.400
<00:05:14.100>do <00:05:14.255>something <00:05:14.411>with <00:05:14.566>the <00:05:14.722>function <00:05:14.877>that <00:05:15.033>is <00:05:15.188>below <00:05:15.344>and <00:05:15.500>that's

104
00:05:17.400 --> 00:05:20.800
<00:05:17.400>something <00:05:17.599>is <00:05:17.799>telling <00:05:18.000>fast <00:05:18.200>API <00:05:18.400>whenever <00:05:18.599>someone <00:05:18.799>sends

105
00:05:20.800 --> 00:05:24.000
<00:05:20.800>a <00:05:21.080>request <00:05:21.360>an <00:05:21.640>HTTP <00:05:21.920>get <00:05:22.200>request

106
00:05:23.100 --> 00:05:26.100
<00:05:23.100>actually <00:05:23.380>gonna <00:05:23.660>move <00:05:23.940>over <00:05:24.220>here <00:05:24.500>because

107
00:05:26.100 --> 00:05:29.900
<00:05:26.100>I'm <00:05:26.216>just <00:05:26.333>turning <00:05:26.450>around <00:05:26.566>a <00:05:26.683>lot <00:05:26.800>whenever <00:05:26.916>someone <00:05:27.033>says <00:05:27.150>I <00:05:27.266>get <00:05:27.383>HTTP <00:05:27.500>request

108
00:05:29.900 --> 00:05:32.400
<00:05:29.900>that <00:05:30.179>goes <00:05:30.460>to <00:05:30.739>this <00:05:31.020>path <00:05:31.299>in

109
00:05:32.400 --> 00:05:35.900
<00:05:32.400>the <00:05:32.527>URL. <00:05:32.654>I <00:05:32.781>want <00:05:32.909>that <00:05:33.036>request <00:05:33.163>to <00:05:33.290>be <00:05:33.418>handled <00:05:33.545>by <00:05:33.672>this <00:05:33.799>function.

110
00:05:35.900 --> 00:05:38.300
<00:05:35.900>And <00:05:36.027>the <00:05:36.154>thing <00:05:36.281>that <00:05:36.409>I <00:05:36.536>want <00:05:36.663>that <00:05:36.790>to <00:05:36.918>do <00:05:37.045>is <00:05:37.172>just <00:05:37.299>to

111
00:05:38.300 --> 00:05:41.400
<00:05:38.300>return <00:05:38.650>these <00:05:39.000>dictionary <00:05:39.350>then <00:05:39.700>first

112
00:05:41.400 --> 00:05:44.600
<00:05:41.400>API <00:05:41.575>will <00:05:41.750>automatically <00:05:41.924>convert <00:05:42.099>this <00:05:42.275>dictionary <00:05:42.450>to <00:05:42.625>Jason <00:05:42.799>and

113
00:05:44.600 --> 00:05:47.000
<00:05:44.600>then <00:05:44.800>Jason <00:05:45.000>back <00:05:45.200>to <00:05:45.400>the <00:05:45.600>to <00:05:45.800>the <00:05:46.000>user.

114
00:05:48.300 --> 00:05:51.300
<00:05:48.300>Now <00:05:48.475>with <00:05:48.650>this <00:05:48.825>the <00:05:49.000>idea <00:05:49.175>is <00:05:49.350>that <00:05:49.525>the <00:05:49.700>more

115
00:05:51.300 --> 00:05:54.200
<00:05:51.300>fast <00:05:51.455>API <00:05:51.611>code <00:05:51.766>you <00:05:51.922>write <00:05:52.077>the <00:05:52.233>less <00:05:52.388>API <00:05:52.544>call <00:05:52.700>you

116
00:05:54.200 --> 00:05:57.600
<00:05:54.200>right? <00:05:54.307>You <00:05:54.415>don't <00:05:54.523>have <00:05:54.630>to <00:05:54.738>do <00:05:54.846>like <00:05:54.953>all <00:05:55.061>the <00:05:55.169>data <00:05:55.276>validation <00:05:55.384>and <00:05:55.492>all <00:05:55.599>the

117
00:05:57.600 --> 00:06:00.400
<00:05:57.600>documentation <00:05:57.716>and <00:05:57.833>all <00:05:57.950>the <00:05:58.066>stuff <00:05:58.183>because <00:05:58.300>you <00:05:58.416>just <00:05:58.533>write <00:05:58.650>very <00:05:58.766>simple <00:05:58.883>code <00:05:59.000>and

118
00:06:00.400 --> 00:06:03.600
<00:06:00.400>then <00:06:00.527>you <00:06:00.654>can <00:06:00.781>focus <00:06:00.909>on <00:06:01.036>the <00:06:01.163>business <00:06:01.290>logic <00:06:01.418>of <00:06:01.545>your <00:06:01.672>application <00:06:01.799>so

119
00:06:03.600 --> 00:06:06.600
<00:06:03.600>you <00:06:03.775>can <00:06:03.950>focus <00:06:04.125>on <00:06:04.300>what <00:06:04.475>actually <00:06:04.650>matters <00:06:04.825>a <00:06:05.000>that's

120
00:06:06.600 --> 00:06:07.400
<00:06:06.600>the <00:06:06.960>whole <00:06:07.320>idea.

121
00:06:08.400 --> 00:06:11.500
<00:06:08.400>Now <00:06:08.599>let's <00:06:08.799>build <00:06:09.000>a <00:06:09.200>basic <00:06:09.400>app <00:06:09.599>that <00:06:09.799>has

122
00:06:11.500 --> 00:06:14.300
<00:06:11.500>a <00:06:11.627>little <00:06:11.754>bit <00:06:11.881>more <00:06:12.009>things. <00:06:12.136>So <00:06:12.263>this <00:06:12.390>is <00:06:12.518>just <00:06:12.645>this <00:06:12.772>is <00:06:12.900>the

123
00:06:14.300 --> 00:06:17.500
<00:06:14.300>same <00:06:14.416>code <00:06:14.533>that <00:06:14.650>we <00:06:14.766>have <00:06:14.883>before <00:06:15.000>now. <00:06:15.116>This <00:06:15.233>one <00:06:15.350>is <00:06:15.466>saying <00:06:15.583>whenever <00:06:15.700>someone

124
00:06:17.500 --> 00:06:19.300
<00:06:17.500>goes <00:06:17.850>to <00:06:18.200>his <00:06:18.550>last <00:06:18.900>items.

125
00:06:19.900 --> 00:06:22.400
<00:06:19.900>And <00:06:20.133>is <00:06:20.366>lash <00:06:20.599>and <00:06:20.833>these <00:06:21.066>is <00:06:21.299>a

126
00:06:22.400 --> 00:06:25.300
<00:06:22.400>path <00:06:22.633>parameter. <00:06:22.866>So <00:06:23.099>if <00:06:23.333>we <00:06:23.566>use <00:06:23.799>it

127
00:06:25.300 --> 00:06:28.500
<00:06:25.300>in <00:06:25.416>an <00:06:25.533>actual <00:06:25.650>domain <00:06:25.766>in <00:06:25.883>a <00:06:26.000>URL, <00:06:26.116>it <00:06:26.233>looks <00:06:26.350>like <00:06:26.466>this <00:06:26.583>let's <00:06:26.700>say

128
00:06:28.500 --> 00:06:30.500
<00:06:28.500>that <00:06:28.733>our <00:06:28.966>application <00:06:29.200>leaves <00:06:29.433>at <00:06:29.666>some <00:06:29.900>domain.com.

129
00:06:31.200 --> 00:06:34.200
<00:06:31.200>Someone <00:06:31.340>goes <00:06:31.479>to <00:06:31.620>slash <00:06:31.760>items <00:06:31.900>and <00:06:32.039>then <00:06:32.180>these <00:06:32.320>will <00:06:32.460>be <00:06:32.599>the

130
00:06:34.200 --> 00:06:37.500
<00:06:34.200>parameter. <00:06:34.300>This <00:06:34.400>will <00:06:34.500>be <00:06:34.599>the <00:06:34.700>path <00:06:34.800>parameter <00:06:34.900>that <00:06:35.000>says <00:06:35.099>hey, <00:06:35.200>this <00:06:35.300>is <00:06:35.400>the <00:06:35.500>particular <00:06:35.599>item

131
00:06:37.500 --> 00:06:40.600
<00:06:37.500>that <00:06:37.627>I <00:06:37.754>want <00:06:37.881>to <00:06:38.009>get. <00:06:38.136>So <00:06:38.263>we're <00:06:38.390>declaring <00:06:38.518>is <00:06:38.645>here <00:06:38.772>and <00:06:38.900>then

132
00:06:40.600 --> 00:06:43.600
<00:06:40.600>this <00:06:40.755>past <00:06:40.911>parameter. <00:06:41.066>We're <00:06:41.222>putting <00:06:41.377>it <00:06:41.533>in <00:06:41.688>the <00:06:41.844>parameters <00:06:42.000>that

133
00:06:43.600 --> 00:06:46.600
<00:06:43.600>I <00:06:43.800>received <00:06:44.000>by <00:06:44.200>the <00:06:44.400>function. <00:06:44.600>And <00:06:44.800>again, <00:06:45.000>this

134
00:06:46.600 --> 00:06:49.300
<00:06:46.600>is <00:06:46.833>a <00:06:47.066>standard <00:06:47.300>python <00:06:47.533>syntax <00:06:47.766>to <00:06:48.000>say

135
00:06:49.300 --> 00:06:51.600
<00:06:49.300>that <00:06:49.580>the <00:06:49.860>parameter <00:06:50.140>is <00:06:50.420>an <00:06:50.700>integer.

136
00:06:52.800 --> 00:06:55.400
<00:06:52.800>And <00:06:53.000>then <00:06:53.200>a <00:06:53.400>fast <00:06:53.600>API <00:06:53.800>will <00:06:54.000>use <00:06:54.200>this

137
00:06:55.400 --> 00:06:58.300
<00:06:55.400>information <00:06:55.679>to <00:06:55.960>do <00:06:56.239>data <00:06:56.520>serialization <00:06:56.799>and

138
00:06:58.300 --> 00:06:59.100
<00:06:58.300>data <00:06:59.020>conversion.

139
00:06:59.900 --> 00:07:02.700
<00:06:59.900>And <00:07:00.250>evalidation <00:07:00.599>of <00:07:00.950>the <00:07:01.299>input

140
00:07:02.700 --> 00:07:05.400
<00:07:02.700>that <00:07:02.827>we <00:07:02.954>are <00:07:03.081>receiving. <00:07:03.209>So <00:07:03.336>if <00:07:03.463>you <00:07:03.590>see <00:07:03.718>this <00:07:03.845>five <00:07:03.972>here, <00:07:04.099>this

141
00:07:05.400 --> 00:07:09.800
<00:07:05.400>is <00:07:05.527>actually <00:07:05.654>coming <00:07:05.781>from <00:07:05.909>the <00:07:06.036>URL <00:07:06.163>and <00:07:06.290>a <00:07:06.418>URL <00:07:06.545>is <00:07:06.672>intrinsically <00:07:06.799>a

142
00:07:08.800 --> 00:07:11.600
<00:07:08.800>string. <00:07:09.033>There's <00:07:09.266>no <00:07:09.500>way <00:07:09.733>to <00:07:09.966>send <00:07:10.200>a

143
00:07:11.600 --> 00:07:14.300
<00:07:11.600>number <00:07:11.727>in <00:07:11.854>the <00:07:11.981>URL <00:07:12.109>because <00:07:12.236>it's <00:07:12.363>just <00:07:12.490>a <00:07:12.618>string <00:07:12.745>and <00:07:12.872>fast <00:07:13.000>API

144
00:07:14.300 --> 00:07:17.500
<00:07:14.300>will <00:07:14.500>convert <00:07:14.700>this <00:07:14.900>to <00:07:15.100>an <00:07:15.300>actual <00:07:15.500>integer. <00:07:15.700>And

145
00:07:17.500 --> 00:07:20.200
<00:07:17.500>then <00:07:17.655>what <00:07:17.811>you <00:07:17.966>will <00:07:18.122>receive <00:07:18.277>in <00:07:18.433>your <00:07:18.588>code <00:07:18.744>in <00:07:18.900>the

146
00:07:20.200 --> 00:07:23.000
<00:07:20.200>function <00:07:20.327>will <00:07:20.454>be <00:07:20.581>an <00:07:20.709>integer. <00:07:20.836>So <00:07:20.963>you <00:07:21.090>will <00:07:21.218>receive <00:07:21.345>whatever <00:07:21.472>it <00:07:21.599>is

147
00:07:23.100 --> 00:07:26.300
<00:07:23.100>that <00:07:23.200>you <00:07:23.300>declare <00:07:23.400>that <00:07:23.500>you <00:07:23.600>will <00:07:23.700>receive <00:07:23.800>and <00:07:23.900>fast <00:07:24.000>API <00:07:24.100>will <00:07:24.200>make <00:07:24.300>sure <00:07:24.400>that <00:07:24.500>that

148
00:07:26.300 --> 00:07:27.100
<00:07:26.300>is <00:07:26.540>what <00:07:26.780>you <00:07:27.020>receive.

149
00:07:28.200 --> 00:07:31.600
<00:07:28.200>Now <00:07:28.355>because <00:07:28.511>first <00:07:28.666>apis <00:07:28.822>is <00:07:28.977>that <00:07:29.133>this <00:07:29.288>parameter <00:07:29.444>is <00:07:29.599>here

150
00:07:31.600 --> 00:07:34.200
<00:07:31.600>in <00:07:31.755>the <00:07:31.911>past. <00:07:32.066>It <00:07:32.222>will <00:07:32.377>extract <00:07:32.533>that <00:07:32.688>information <00:07:32.844>from <00:07:33.000>the

151
00:07:34.200 --> 00:07:37.100
<00:07:34.200>path. <00:07:34.327>But <00:07:34.454>it's <00:07:34.581>a <00:07:34.709>it <00:07:34.836>sees <00:07:34.963>that <00:07:35.090>we <00:07:35.218>have <00:07:35.345>this <00:07:35.472>queue <00:07:35.599>here

152
00:07:37.100 --> 00:07:40.200
<00:07:37.100>and <00:07:37.240>this <00:07:37.380>queue <00:07:37.520>is <00:07:37.660>not <00:07:37.800>in <00:07:37.940>the <00:07:38.080>path. <00:07:38.220>So <00:07:38.360>it <00:07:38.500>will

153
00:07:40.200 --> 00:07:43.400
<00:07:40.200>extract <00:07:40.327>that <00:07:40.454>from <00:07:40.581>the <00:07:40.709>query <00:07:40.836>parameters <00:07:40.963>and <00:07:41.090>the <00:07:41.218>query <00:07:41.345>parameters <00:07:41.472>that <00:07:41.599>this

154
00:07:43.400 --> 00:07:46.400
<00:07:43.400>thing <00:07:43.527>that <00:07:43.654>goes <00:07:43.781>after <00:07:43.909>the <00:07:44.036>question <00:07:44.163>mark <00:07:44.290>which <00:07:44.418>is <00:07:44.545>just <00:07:44.672>like <00:07:44.799>key

155
00:07:46.400 --> 00:07:50.300
<00:07:46.400>value <00:07:46.539>Pairs <00:07:46.679>and <00:07:46.820>you <00:07:46.960>have <00:07:47.099>that <00:07:47.239>in <00:07:47.380>every <00:07:47.520>URL <00:07:47.659>and <00:07:47.799>supported

156
00:07:49.300 --> 00:07:52.500
<00:07:49.300>by <00:07:49.455>all <00:07:49.611>the <00:07:49.766>Frameworks <00:07:49.922>and <00:07:50.077>all <00:07:50.233>the <00:07:50.388>stuff <00:07:50.544>in <00:07:50.700>this

157
00:07:52.500 --> 00:07:55.700
<00:07:52.500>case. <00:07:52.655>If <00:07:52.811>we <00:07:52.966>go <00:07:53.122>to <00:07:53.277>this <00:07:53.433>URL <00:07:53.588>then <00:07:53.744>this <00:07:53.900>text

158
00:07:55.700 --> 00:07:58.800
<00:07:55.700>some <00:07:55.875>query <00:07:56.050>we'll <00:07:56.224>end <00:07:56.400>up <00:07:56.575>in <00:07:56.750>this <00:07:56.925>parameter <00:07:57.099>Cube.

159
00:07:59.500 --> 00:08:02.400
<00:07:59.500>And <00:07:59.700>now <00:07:59.900>because <00:08:00.100>these <00:08:00.300>parameter <00:08:00.500>Q <00:08:00.700>has <00:08:00.900>a

160
00:08:02.400 --> 00:08:05.200
<00:08:02.400>default <00:08:02.539>value <00:08:02.679>of <00:08:02.820>none. <00:08:02.960>This <00:08:03.099>means <00:08:03.239>that <00:08:03.380>this <00:08:03.520>is <00:08:03.659>not <00:08:03.799>required.

161
00:08:05.900 --> 00:08:08.300
<00:08:05.900>So <00:08:06.055>by <00:08:06.211>default, <00:08:06.366>it <00:08:06.522>just <00:08:06.677>will <00:08:06.833>be <00:08:06.988>none. <00:08:07.144>But <00:08:07.299>if

162
00:08:08.300 --> 00:08:11.400
<00:08:08.300>someone <00:08:08.533>sends <00:08:08.766>the <00:08:09.000>queue <00:08:09.233>query <00:08:09.466>parameter <00:08:09.700>in

163
00:08:11.400 --> 00:08:14.400
<00:08:11.400>the <00:08:11.507>URL, <00:08:11.615>then <00:08:11.723>that <00:08:11.830>is <00:08:11.938>the <00:08:12.046>string <00:08:12.153>that <00:08:12.261>we're <00:08:12.369>going <00:08:12.476>to <00:08:12.584>receive <00:08:12.692>in <00:08:12.799>the

164
00:08:14.400 --> 00:08:17.100
<00:08:14.400>in <00:08:14.539>the <00:08:14.679>body <00:08:14.820>in <00:08:14.960>the <00:08:15.099>body <00:08:15.239>in <00:08:15.380>the <00:08:15.520>body <00:08:15.659>or <00:08:15.799>the

165
00:08:17.100 --> 00:08:18.600
<00:08:17.100>function <00:08:17.325>in <00:08:17.550>the <00:08:17.775>in <00:08:18.000>the <00:08:18.225>actual <00:08:18.450>code.

166
00:08:20.300 --> 00:08:23.700
<00:08:20.300>And <00:08:20.427>the <00:08:20.554>thing <00:08:20.681>is <00:08:20.809>and <00:08:20.936>this <00:08:21.063>is <00:08:21.190>probably <00:08:21.318>like <00:08:21.445>the <00:08:21.572>nice <00:08:21.700>trick

167
00:08:23.700 --> 00:08:24.600
<00:08:23.700>from <00:08:24.105>Fast <00:08:24.510>API.

168
00:08:25.400 --> 00:08:28.400
<00:08:25.400>You <00:08:25.516>build <00:08:25.633>that <00:08:25.750>same <00:08:25.866>application <00:08:25.983>that <00:08:26.099>I <00:08:26.216>just <00:08:26.333>show <00:08:26.450>you <00:08:26.566>you <00:08:26.683>write <00:08:26.799>that

169
00:08:28.400 --> 00:08:31.800
<00:08:28.400>code <00:08:28.527>and <00:08:28.654>then <00:08:28.781>you <00:08:28.909>can <00:08:29.036>go <00:08:29.163>to <00:08:29.290>slashdogs <00:08:29.418>and <00:08:29.545>you <00:08:29.672>get <00:08:29.799>automatically

170
00:08:31.800 --> 00:08:35.300
<00:08:31.800>this <00:08:32.266>interactive <00:08:32.733>web <00:08:33.200>API

171
00:08:34.300 --> 00:08:37.600
<00:08:34.299>documentation <00:08:34.766>interface <00:08:35.233>that <00:08:35.699>has

172
00:08:37.600 --> 00:08:40.300
<00:08:37.600>the <00:08:37.775>parameters <00:08:37.950>the <00:08:38.125>past <00:08:38.300>parameters <00:08:38.475>that <00:08:38.650>we <00:08:38.825>find <00:08:39.000>or

173
00:08:40.300 --> 00:08:43.100
<00:08:40.299>the <00:08:40.416>endpoints. <00:08:40.533>So <00:08:40.650>we <00:08:40.766>have <00:08:40.883>the <00:08:41.000>first <00:08:41.116>one <00:08:41.233>that <00:08:41.349>was <00:08:41.466>just <00:08:41.583>going <00:08:41.699>to

174
00:08:43.100 --> 00:08:46.300
<00:08:43.100>the <00:08:43.275>root <00:08:43.450>path <00:08:43.625>to <00:08:43.800>just <00:08:43.975>slash <00:08:44.150>and <00:08:44.325>anyone <00:08:44.500>that

175
00:08:46.300 --> 00:08:49.200
<00:08:46.300>goes <00:08:46.427>to <00:08:46.554>slide <00:08:46.681>a <00:08:46.809>slash <00:08:46.936>items <00:08:47.063>slash <00:08:47.190>Item <00:08:47.318>ID <00:08:47.445>and <00:08:47.572>this <00:08:47.699>item

176
00:08:49.200 --> 00:08:52.200
<00:08:49.200>id <00:08:49.340>this <00:08:49.480>is <00:08:49.620>a <00:08:49.760>parameter <00:08:49.900>and <00:08:50.040>we <00:08:50.180>can <00:08:50.320>see <00:08:50.460>that <00:08:50.600>we

177
00:08:52.200 --> 00:08:55.400
<00:08:52.200>get <00:08:52.355>the <00:08:52.511>interface <00:08:52.666>here <00:08:52.822>for <00:08:52.977>interacting <00:08:53.133>with <00:08:53.288>that. <00:08:53.444>It <00:08:53.600>was

178
00:08:55.400 --> 00:08:57.400
<00:08:55.400>required <00:08:55.600>these <00:08:55.800>required <00:08:56.000>because <00:08:56.199>it's <00:08:56.400>in <00:08:56.600>the <00:08:56.800>past.

179
00:08:58.100 --> 00:09:01.300
<00:08:58.100>And <00:08:58.227>it's <00:08:58.354>an <00:08:58.481>integer. <00:08:58.609>It <00:08:58.736>has <00:08:58.863>to <00:08:58.990>be <00:08:59.118>an <00:08:59.245>integer. <00:08:59.372>We <00:08:59.500>also

180
00:09:01.300 --> 00:09:04.300
<00:09:01.300>have <00:09:01.474>the <00:09:01.650>Q <00:09:01.824>which <00:09:02.000>is <00:09:02.175>a <00:09:02.349>query <00:09:02.525>parameter <00:09:02.699>and

181
00:09:04.300 --> 00:09:07.200
<00:09:04.300>this <00:09:04.500>is <00:09:04.699>a <00:09:04.900>string <00:09:05.099>because <00:09:05.300>that <00:09:05.500>what <00:09:05.699>we

182
00:09:07.200 --> 00:09:07.700
Define.

183
00:09:08.400 --> 00:09:11.600
<00:09:08.400>Now <00:09:08.540>in <00:09:08.680>this <00:09:08.819>interface <00:09:08.959>if <00:09:09.100>we <00:09:09.240>go <00:09:09.380>and <00:09:09.520>click <00:09:09.660>try <00:09:09.800>it

184
00:09:11.600 --> 00:09:11.600
out.

185
00:09:12.500 --> 00:09:15.400
<00:09:12.500>I <00:09:12.640>will <00:09:12.780>first <00:09:12.920>the <00:09:13.060>idea <00:09:13.200>is <00:09:13.340>that <00:09:13.480>you <00:09:13.620>write <00:09:13.760>some <00:09:13.900>bicycle

186
00:09:15.400 --> 00:09:19.000
<00:09:15.400>basic <00:09:15.527>code <00:09:15.654>and <00:09:15.781>then <00:09:15.909>good <00:09:16.036>guy <00:09:16.163>fast <00:09:16.290>API <00:09:16.418>makes <00:09:16.545>a <00:09:16.672>nice <00:09:16.800>docs

187
00:09:18.400 --> 00:09:20.800
<00:09:18.400>UI <00:09:18.633>for <00:09:18.866>you. <00:09:19.100>That's <00:09:19.333>the <00:09:19.566>whole <00:09:19.800>point.

188
00:09:21.500 --> 00:09:24.300
<00:09:21.500>Hey <00:09:21.700>cool. <00:09:21.900>Now <00:09:22.100>a <00:09:22.300>let's <00:09:22.500>see <00:09:22.700>how <00:09:22.900>to

189
00:09:24.300 --> 00:09:27.200
<00:09:24.300>create <00:09:24.439>a <00:09:24.579>body. <00:09:24.719>So <00:09:24.859>after <00:09:25.000>now <00:09:25.140>we <00:09:25.280>receive <00:09:25.420>data <00:09:25.560>from <00:09:25.699>the

190
00:09:27.200 --> 00:09:30.400
<00:09:27.200>from <00:09:27.355>the <00:09:27.511>path <00:09:27.666>and <00:09:27.822>from <00:09:27.977>the <00:09:28.133>query <00:09:28.288>parameters, <00:09:28.444>but <00:09:28.600>we

191
00:09:30.400 --> 00:09:33.200
<00:09:30.400>want <00:09:30.540>to <00:09:30.680>receive <00:09:30.819>a <00:09:30.959>Json <00:09:31.100>payload <00:09:31.240>in <00:09:31.380>the <00:09:31.520>body <00:09:31.660>of <00:09:31.800>the

192
00:09:33.200 --> 00:09:33.500
request.

193
00:09:34.200 --> 00:09:37.300
<00:09:34.200>So <00:09:34.340>now <00:09:34.480>instead <00:09:34.620>of <00:09:34.760>saying <00:09:34.900>get <00:09:35.040>we <00:09:35.180>are <00:09:35.320>saying <00:09:35.460>post <00:09:35.600>because

194
00:09:37.300 --> 00:09:40.000
<00:09:37.300>we <00:09:37.500>want <00:09:37.699>to <00:09:37.900>receive <00:09:38.099>an <00:09:38.300>HTTP <00:09:38.500>post <00:09:38.699>request.

195
00:09:40.900 --> 00:09:43.300
<00:09:40.900>And <00:09:41.074>we <00:09:41.250>say <00:09:41.425>whenever <00:09:41.600>someone <00:09:41.775>goes <00:09:41.949>to <00:09:42.125>slash <00:09:42.300>food

196
00:09:43.300 --> 00:09:46.100
<00:09:43.300>slash <00:09:43.455>with <00:09:43.611>a <00:09:43.766>post <00:09:43.922>request. <00:09:44.077>I <00:09:44.233>want <00:09:44.388>this <00:09:44.544>function <00:09:44.699>to

197
00:09:46.100 --> 00:09:46.700
<00:09:46.100>handle <00:09:46.640>that.

198
00:09:47.400 --> 00:09:50.100
<00:09:47.400>And <00:09:47.574>then <00:09:47.750>now <00:09:47.925>again <00:09:48.100>in <00:09:48.275>the <00:09:48.449>parameters <00:09:48.625>of <00:09:48.800>the

199
00:09:50.100 --> 00:09:53.500
<00:09:50.100>function, <00:09:50.227>we <00:09:50.354>are <00:09:50.481>saying <00:09:50.609>that <00:09:50.736>we <00:09:50.863>want <00:09:50.990>this <00:09:51.118>parameter <00:09:51.245>food <00:09:51.372>to <00:09:51.500>be

200
00:09:53.500 --> 00:09:56.300
<00:09:53.500>an <00:09:53.700>instance <00:09:53.900>of <00:09:54.100>the <00:09:54.300>class <00:09:54.500>food. <00:09:54.700>Now, <00:09:54.900>let's

201
00:09:56.300 --> 00:09:59.100
<00:09:56.300>see <00:09:56.416>how <00:09:56.533>we <00:09:56.650>declare <00:09:56.766>this <00:09:56.883>class <00:09:57.000>foot. <00:09:57.116>So <00:09:57.233>first <00:09:57.349>API <00:09:57.466>is <00:09:57.583>based <00:09:57.699>on

202
00:09:59.100 --> 00:10:02.300
<00:09:59.100>top <00:09:59.275>of <00:09:59.450>pythmic <00:09:59.625>is <00:09:59.800>the <00:09:59.975>thing <00:10:00.150>that <00:10:00.325>those <00:10:00.500>all

203
00:10:02.300 --> 00:10:05.600
<00:10:02.300>the <00:10:02.474>data <00:10:02.650>validation <00:10:02.824>data <00:10:03.000>serialization <00:10:03.175>and <00:10:03.349>the <00:10:03.525>internal <00:10:03.699>parts

204
00:10:05.600 --> 00:10:08.000
<00:10:05.600>of <00:10:05.800>the <00:10:06.000>data <00:10:06.200>documentation. <00:10:06.400>So <00:10:06.600>what <00:10:06.800>we <00:10:07.000>do

205
00:10:08.100 --> 00:10:09.100
<00:10:08.100>is <00:10:08.280>that <00:10:08.460>we <00:10:08.640>create <00:10:08.820>this <00:10:09.000>class.

206
00:10:10.100 --> 00:10:13.700
<00:10:10.100>With <00:10:10.227>a <00:10:10.354>class <00:10:10.481>food <00:10:10.609>that <00:10:10.736>innates <00:10:10.863>from <00:10:10.990>the <00:10:11.118>base <00:10:11.245>model <00:10:11.372>and <00:10:11.500>we

207
00:10:13.700 --> 00:10:15.500
<00:10:13.700>just <00:10:14.166>Define <00:10:14.633>these <00:10:15.100>fields.

208
00:10:16.400 --> 00:10:19.300
<00:10:16.400>This <00:10:16.574>attributes <00:10:16.750>of <00:10:16.925>this <00:10:17.100>class <00:10:17.275>again. <00:10:17.449>This <00:10:17.625>is <00:10:17.800>using

209
00:10:19.300 --> 00:10:22.700
<00:10:19.300>standard <00:10:19.427>python <00:10:19.554>syntax. <00:10:19.681>This <00:10:19.809>is <00:10:19.936>the <00:10:20.063>way <00:10:20.190>that <00:10:20.318>you <00:10:20.445>will <00:10:20.572>declare <00:10:20.699>any

210
00:10:22.700 --> 00:10:25.100
<00:10:22.700>other <00:10:23.166>type <00:10:23.633>saying <00:10:24.100>hey,

211
00:10:25.100 --> 00:10:28.200
<00:10:25.100>this <00:10:25.216>is <00:10:25.333>a <00:10:25.450>string <00:10:25.566>the <00:10:25.683>name <00:10:25.800>is <00:10:25.916>a <00:10:26.033>string <00:10:26.150>and <00:10:26.266>ingredients <00:10:26.383>is <00:10:26.500>a

212
00:10:28.200 --> 00:10:31.900
<00:10:28.200>list <00:10:28.433>of <00:10:28.666>strings <00:10:28.900>these <00:10:29.133>lists <00:10:29.366>these <00:10:29.600>if

213
00:10:31.900 --> 00:10:34.300
<00:10:31.900>you <00:10:32.074>are <00:10:32.250>using <00:10:32.425>python <00:10:32.600>3.10, <00:10:32.775>you <00:10:32.949>don't <00:10:33.125>even <00:10:33.300>need

214
00:10:34.300 --> 00:10:37.600
<00:10:34.300>to <00:10:34.439>import <00:10:34.579>these <00:10:34.719>things <00:10:34.859>here. <00:10:35.000>You <00:10:35.140>can <00:10:35.280>just <00:10:35.420>use <00:10:35.560>the <00:10:35.699>normal

215
00:10:37.600 --> 00:10:40.300
<00:10:37.600>list <00:10:37.800>that <00:10:38.000>will <00:10:38.200>be <00:10:38.400>with <00:10:38.600>lowercase <00:10:38.800>and <00:10:39.000>use

216
00:10:40.300 --> 00:10:43.400
<00:10:40.300>these <00:10:40.416>same <00:10:40.533>syntax. <00:10:40.650>But <00:10:40.766>if <00:10:40.883>you <00:10:41.000>are <00:10:41.116>in <00:10:41.233>Python <00:10:41.349>type <00:10:41.466>on <00:10:41.583>9 <00:10:41.699>or

217
00:10:43.400 --> 00:10:46.600
<00:10:43.400>something <00:10:43.540>like <00:10:43.680>that. <00:10:43.819>Hey, <00:10:43.959>then <00:10:44.100>you <00:10:44.240>if <00:10:44.380>you're <00:10:44.520>in <00:10:44.660>Python <00:10:44.800>3.8

218
00:10:46.600 --> 00:10:50.300
<00:10:46.600>or <00:10:46.716>something <00:10:46.833>like <00:10:46.950>that, <00:10:47.066>then <00:10:47.183>you <00:10:47.300>will <00:10:47.416>need <00:10:47.533>to <00:10:47.650>use <00:10:47.766>this <00:10:47.883>this <00:10:48.000>list

219
00:10:49.300 --> 00:10:52.900
<00:10:49.300>imported <00:10:49.500>from <00:10:49.699>typing. <00:10:49.900>But <00:10:50.099>again <00:10:50.300>this <00:10:50.500>typing <00:10:50.699>this

220
00:10:52.900 --> 00:10:55.300
<00:10:52.900>is <00:10:53.074>part <00:10:53.250>of <00:10:53.425>the <00:10:53.600>standard <00:10:53.775>Library. <00:10:53.949>So <00:10:54.125>this <00:10:54.300>is

221
00:10:55.300 --> 00:10:58.100
<00:10:55.300>the <00:10:55.439>standard <00:10:55.579>way <00:10:55.719>to <00:10:55.859>declare <00:10:56.000>kind <00:10:56.140>of <00:10:56.280>interest <00:10:56.420>in <00:10:56.560>Python. <00:10:56.699>You

222
00:10:58.100 --> 00:11:01.400
<00:10:58.100>don't <00:10:58.227>have <00:10:58.354>to <00:10:58.481>learn <00:10:58.609>a <00:10:58.736>new <00:10:58.863>class <00:10:58.990>or <00:10:59.118>a <00:10:59.245>new <00:10:59.372>particular <00:10:59.500>function

223
00:11:01.400 --> 00:11:04.000
<00:11:01.400>or <00:11:01.574>a <00:11:01.750>new <00:11:01.925>syntax. <00:11:02.100>It's <00:11:02.275>just <00:11:02.449>the <00:11:02.625>standard <00:11:02.800>python.

224
00:11:04.900 --> 00:11:07.600
<00:11:04.900>Then <00:11:05.100>we <00:11:05.300>don't <00:11:05.500>even <00:11:05.699>have <00:11:05.900>to <00:11:06.100>create <00:11:06.300>the

225
00:11:07.600 --> 00:11:10.200
<00:11:07.600>construction <00:11:07.833>matter <00:11:08.066>or <00:11:08.300>they <00:11:08.533>need <00:11:08.766>metal <00:11:09.000>or

226
00:11:10.200 --> 00:11:13.700
<00:11:10.200>like <00:11:10.316>what <00:11:10.433>is <00:11:10.550>the <00:11:10.666>way <00:11:10.783>to <00:11:10.900>create <00:11:11.016>this <00:11:11.133>class? <00:11:11.250>Because <00:11:11.366>it's <00:11:11.483>created <00:11:11.600>automatically

227
00:11:13.700 --> 00:11:16.500
<00:11:13.700>by <00:11:13.875>identic <00:11:14.050>and <00:11:14.225>then <00:11:14.400>we <00:11:14.575>can <00:11:14.750>just <00:11:14.925>pass <00:11:15.100>this

228
00:11:16.500 --> 00:11:19.600
<00:11:16.500>class <00:11:16.675>as <00:11:16.850>the <00:11:17.025>type <00:11:17.200>annotation <00:11:17.375>for <00:11:17.550>this <00:11:17.725>parameter <00:11:17.900>fast.

229
00:11:19.600 --> 00:11:22.300
<00:11:19.600>API <00:11:19.740>will <00:11:19.880>make <00:11:20.020>sure <00:11:20.160>that <00:11:20.300>what <00:11:20.440>we <00:11:20.580>receive <00:11:20.720>in <00:11:20.860>this <00:11:21.000>parameter

230
00:11:22.300 --> 00:11:25.500
<00:11:22.300>inside <00:11:22.439>of <00:11:22.579>this <00:11:22.719>code <00:11:22.859>is <00:11:23.000>actually <00:11:23.140>going <00:11:23.280>to <00:11:23.420>be <00:11:23.560>an <00:11:23.699>instance

231
00:11:25.500 --> 00:11:27.600
<00:11:25.500>of <00:11:25.780>the <00:11:26.060>class <00:11:26.340>that <00:11:26.620>we <00:11:26.900>Define.

232
00:11:29.200 --> 00:11:32.800
<00:11:29.200>A <00:11:29.375>so <00:11:29.550>if <00:11:29.725>we <00:11:29.900>go <00:11:30.075>to <00:11:30.250>the <00:11:30.425>interactive <00:11:30.600>docs

233
00:11:32.800 --> 00:11:35.400
<00:11:32.800>UI <00:11:32.974>that <00:11:33.150>is <00:11:33.324>generated <00:11:33.500>automatically <00:11:33.675>from <00:11:33.849>your <00:11:34.025>code. <00:11:34.199>You

234
00:11:35.400 --> 00:11:38.500
<00:11:35.400>don't <00:11:35.482>have <00:11:35.564>to <00:11:35.647>do <00:11:35.729>anything <00:11:35.811>for <00:11:35.894>that <00:11:35.976>to <00:11:36.058>happen. <00:11:36.141>We <00:11:36.223>can <00:11:36.305>see <00:11:36.388>that <00:11:36.470>now <00:11:36.552>we <00:11:36.635>have <00:11:36.717>a <00:11:36.800>post

235
00:11:38.500 --> 00:11:41.600
<00:11:38.500>request <00:11:38.700>that <00:11:38.900>goes <00:11:39.100>to <00:11:39.300>slash <00:11:39.500>food <00:11:39.700>and <00:11:39.900>that

236
00:11:41.600 --> 00:11:44.200
<00:11:41.600>receives <00:11:41.775>a <00:11:41.950>body <00:11:42.125>and <00:11:42.300>they <00:11:42.475>body <00:11:42.650>has <00:11:42.825>a <00:11:43.000>name

237
00:11:44.200 --> 00:11:47.600
<00:11:44.200>that <00:11:44.340>is <00:11:44.480>a <00:11:44.620>string <00:11:44.760>and <00:11:44.900>has <00:11:45.040>ingredients <00:11:45.180>which <00:11:45.320>is <00:11:45.460>a <00:11:45.600>list

238
00:11:47.600 --> 00:11:50.200
<00:11:47.600>of <00:11:47.755>strings. <00:11:47.911>So <00:11:48.066>this <00:11:48.222>is <00:11:48.377>the <00:11:48.533>same <00:11:48.688>types <00:11:48.844>that <00:11:49.000>we

239
00:11:50.200 --> 00:11:53.700
<00:11:50.200>Define <00:11:50.375>and <00:11:50.550>it's <00:11:50.725>all <00:11:50.900>integrated <00:11:51.075>with <00:11:51.250>open <00:11:51.425>API <00:11:51.600>agencies

240
00:11:53.700 --> 00:11:56.300
<00:11:53.700>schema <00:11:53.875>all <00:11:54.050>the <00:11:54.225>stuff. <00:11:54.400>This <00:11:54.575>is <00:11:54.750>all <00:11:54.925>thanks <00:11:55.100>to

241
00:11:56.300 --> 00:12:00.500
<00:11:56.300>open <00:11:56.439>API, <00:11:56.579>which <00:11:56.719>is <00:11:56.859>the <00:11:57.000>standard <00:11:57.140>for <00:11:57.280>building <00:11:57.420>apis. <00:11:57.560>These <00:11:57.699>nice

242
00:11:59.500 --> 00:12:02.200
<00:11:59.500>user <00:11:59.966>interfaces <00:12:00.433>provided <00:12:00.900>by

243
00:12:02.200 --> 00:12:05.200
<00:12:02.200>another <00:12:02.400>therapy <00:12:02.600>called <00:12:02.800>Swagger <00:12:03.000>UI, <00:12:03.200>but <00:12:03.400>it's <00:12:03.600>all

244
00:12:05.200 --> 00:12:08.900
<00:12:05.200>because <00:12:05.300>this <00:12:05.400>is <00:12:05.500>all <00:12:05.600>based <00:12:05.700>on <00:12:05.800>standards. <00:12:05.900>So <00:12:06.000>it's <00:12:06.100>very <00:12:06.200>easy <00:12:06.300>to <00:12:06.400>integrate <00:12:06.500>different <00:12:06.600>tools

245
00:12:08.900 --> 00:12:09.900
together.

246
00:12:12.300 --> 00:12:15.200
<00:12:12.300>Now <00:12:12.533>if <00:12:12.766>we <00:12:13.000>hit <00:12:13.233>the <00:12:13.466>tribe <00:12:13.699>button

247
00:12:15.200 --> 00:12:18.600
<00:12:15.200>and <00:12:15.340>we <00:12:15.480>try <00:12:15.620>to <00:12:15.760>execute <00:12:15.900>inside <00:12:16.040>of <00:12:16.180>this <00:12:16.320>same <00:12:16.460>user <00:12:16.600>interface

248
00:12:18.600 --> 00:12:21.300
<00:12:18.600>that <00:12:18.716>we <00:12:18.833>can <00:12:18.950>say <00:12:19.066>in <00:12:19.183>the <00:12:19.300>browser. <00:12:19.416>We <00:12:19.533>can <00:12:19.650>send <00:12:19.766>an <00:12:19.883>actual <00:12:20.000>request.

249
00:12:21.300 --> 00:12:24.700
<00:12:21.300>So <00:12:21.427>for <00:12:21.554>example, <00:12:21.681>we <00:12:21.809>can <00:12:21.936>send <00:12:22.063>some <00:12:22.190>tacos <00:12:22.318>with <00:12:22.445>some <00:12:22.572>ingredients <00:12:22.699>that

250
00:12:24.700 --> 00:12:27.600
<00:12:24.700>it <00:12:24.900>has <00:12:25.100>so <00:12:25.300>it <00:12:25.500>has <00:12:25.700>some <00:12:25.900>frequency <00:12:26.100>taco

251
00:12:27.600 --> 00:12:30.300
<00:12:27.600>shell <00:12:27.833>and <00:12:28.066>sabrasura, <00:12:28.300>of <00:12:28.533>course <00:12:28.766>and <00:12:29.000>if

252
00:12:30.300 --> 00:12:33.300
<00:12:30.300>we <00:12:30.416>we <00:12:30.533>can <00:12:30.650>click <00:12:30.766>execute <00:12:30.883>and <00:12:31.000>we <00:12:31.116>can <00:12:31.233>send <00:12:31.349>these <00:12:31.466>requests <00:12:31.583>and <00:12:31.699>then

253
00:12:33.300 --> 00:12:36.600
<00:12:33.300>the <00:12:33.500>actual <00:12:33.699>code <00:12:33.900>that <00:12:34.099>we <00:12:34.300>have <00:12:34.500>there <00:12:34.699>running

254
00:12:36.600 --> 00:12:39.000
<00:12:36.600>in <00:12:36.775>our <00:12:36.950>laptop. <00:12:37.125>It's <00:12:37.300>gonna <00:12:37.475>execute <00:12:37.650>that <00:12:37.825>request <00:12:38.000>and

255
00:12:39.300 --> 00:12:42.100
<00:12:39.300>we're <00:12:39.416>going <00:12:39.533>to <00:12:39.650>receive <00:12:39.766>the <00:12:39.883>result <00:12:40.000>back <00:12:40.116>so <00:12:40.233>we <00:12:40.349>can <00:12:40.466>see <00:12:40.583>that <00:12:40.699>we

256
00:12:42.100 --> 00:12:42.900
<00:12:42.100>are <00:12:42.340>receiving <00:12:42.580>it <00:12:42.819>here.

257
00:12:44.800 --> 00:12:47.200
<00:12:44.800>So <00:12:44.927>you <00:12:45.054>can <00:12:45.181>send <00:12:45.309>a <00:12:45.436>request <00:12:45.563>full <00:12:45.690>of <00:12:45.818>tacos, <00:12:45.945>which <00:12:46.072>is <00:12:46.199>very

258
00:12:47.200 --> 00:12:50.200
<00:12:47.200>nice. <00:12:47.433>I'm <00:12:47.666>very <00:12:47.900>important. <00:12:48.133>Now, <00:12:48.366>let's <00:12:48.600>say

259
00:12:50.200 --> 00:12:53.600
<00:12:50.200>that <00:12:50.340>we <00:12:50.480>want <00:12:50.620>to <00:12:50.760>have <00:12:50.900>a <00:12:51.040>body <00:12:51.180>request <00:12:51.320>that <00:12:51.460>also <00:12:51.600>receives

260
00:12:53.600 --> 00:12:56.100
<00:12:53.600>query <00:12:53.833>parameters. <00:12:54.066>You <00:12:54.300>just <00:12:54.533>do <00:12:54.766>the <00:12:55.000>same

261
00:12:56.100 --> 00:12:59.800
<00:12:56.100>thing <00:12:56.207>that <00:12:56.315>we <00:12:56.423>were <00:12:56.530>doing <00:12:56.638>before <00:12:56.746>you <00:12:56.853>just <00:12:56.961>put <00:12:57.069>more <00:12:57.176>parameters <00:12:57.284>in <00:12:57.392>the <00:12:57.500>specification

262
00:12:59.800 --> 00:13:02.500
<00:12:59.800>of <00:12:59.939>the <00:13:00.079>function. <00:13:00.219>So <00:13:00.359>we <00:13:00.500>say <00:13:00.640>now <00:13:00.780>we're <00:13:00.920>using <00:13:01.060>food, <00:13:01.199>but

263
00:13:02.500 --> 00:13:03.700
<00:13:02.500>we <00:13:02.716>also <00:13:02.932>want <00:13:03.148>to <00:13:03.364>receive <00:13:03.580>delivery.

264
00:13:04.400 --> 00:13:07.700
<00:13:04.400>If <00:13:04.574>it's <00:13:04.750>for <00:13:04.925>delivery <00:13:05.100>or <00:13:05.275>not <00:13:05.449>and <00:13:05.625>delivery <00:13:05.800>by

265
00:13:07.700 --> 00:13:10.200
<00:13:07.700>default <00:13:07.875>is <00:13:08.050>false <00:13:08.225>because <00:13:08.400>it <00:13:08.575>has <00:13:08.750>a <00:13:08.925>default <00:13:09.100>value

266
00:13:10.200 --> 00:13:13.600
<00:13:10.200>then <00:13:10.375>delivery. <00:13:10.550>If <00:13:10.725>we <00:13:10.900>were <00:13:11.075>calling <00:13:11.250>the <00:13:11.425>function <00:13:11.600>by

267
00:13:13.600 --> 00:13:16.200
<00:13:13.600>ourselves. <00:13:13.800>This <00:13:14.000>will <00:13:14.200>mean <00:13:14.400>that <00:13:14.600>this <00:13:14.800>parameter <00:13:15.000>or

268
00:13:16.200 --> 00:13:19.300
<00:13:16.200>this <00:13:16.340>argument <00:13:16.480>will <00:13:16.620>not <00:13:16.760>be <00:13:16.900>required <00:13:17.040>the <00:13:17.180>same <00:13:17.320>happens <00:13:17.460>with <00:13:17.600>fast

269
00:13:19.300 --> 00:13:22.500
<00:13:19.300>API <00:13:19.416>if <00:13:19.533>it <00:13:19.650>has <00:13:19.766>a <00:13:19.883>full <00:13:20.000>value, <00:13:20.116>then <00:13:20.233>it <00:13:20.349>is <00:13:20.466>not <00:13:20.583>required <00:13:20.699>because

270
00:13:22.500 --> 00:13:25.800
<00:13:22.500>by <00:13:22.675>default <00:13:22.850>is <00:13:23.025>false. <00:13:23.200>It's <00:13:23.375>also <00:13:23.550>a <00:13:23.725>Boolean <00:13:23.900>first

271
00:13:25.800 --> 00:13:28.300
<00:13:25.800>APA <00:13:25.974>will <00:13:26.150>make <00:13:26.324>sure <00:13:26.500>that <00:13:26.675>these <00:13:26.849>query <00:13:27.025>parameter <00:13:27.199>is

272
00:13:28.300 --> 00:13:31.600
<00:13:28.300>converted <00:13:28.427>to <00:13:28.554>a <00:13:28.681>Boolean <00:13:28.809>and <00:13:28.936>what <00:13:29.063>we <00:13:29.190>receive <00:13:29.318>in <00:13:29.445>the <00:13:29.572>code <00:13:29.699>is

273
00:13:31.600 --> 00:13:34.800
<00:13:31.600>going <00:13:31.740>to <00:13:31.880>be <00:13:32.020>a <00:13:32.160>Boolean. <00:13:32.300>We <00:13:32.440>won't <00:13:32.580>receive <00:13:32.720>a <00:13:32.860>string <00:13:33.000>with

274
00:13:34.800 --> 00:13:37.200
<00:13:34.800>the <00:13:35.033>text <00:13:35.266>Falls <00:13:35.500>or <00:13:35.733>something <00:13:35.966>like <00:13:36.199>that.

275
00:13:37.200 --> 00:13:40.000
<00:13:37.200>We <00:13:37.375>will <00:13:37.550>receive <00:13:37.725>a <00:13:37.900>natural <00:13:38.075>Boolean <00:13:38.250>inside <00:13:38.425>of <00:13:38.600>it.

276
00:13:40.900 --> 00:13:42.600
<00:13:40.900>And <00:13:41.100>then <00:13:41.300>we <00:13:41.500>are <00:13:41.699>just <00:13:41.900>returning <00:13:42.100>the <00:13:42.300>content.

277
00:13:43.100 --> 00:13:46.400
<00:13:43.100>And <00:13:43.207>if <00:13:43.315>we <00:13:43.423>go <00:13:43.530>to <00:13:43.638>the <00:13:43.746>docks <00:13:43.853>again <00:13:43.961>now <00:13:44.069>we <00:13:44.176>can <00:13:44.284>see <00:13:44.392>that <00:13:44.500>now

278
00:13:46.400 --> 00:13:49.500
<00:13:46.400>we <00:13:46.540>have <00:13:46.680>the <00:13:46.819>the <00:13:46.959>same <00:13:47.100>example <00:13:47.240>before <00:13:47.380>but <00:13:47.520>now <00:13:47.660>we <00:13:47.800>have

279
00:13:49.500 --> 00:13:52.500
<00:13:49.500>the <00:13:49.655>user <00:13:49.811>interface <00:13:49.966>is <00:13:50.122>updated <00:13:50.277>to <00:13:50.433>include <00:13:50.588>that <00:13:50.744>we <00:13:50.900>declare

280
00:13:52.500 --> 00:13:55.100
<00:13:52.500>the <00:13:52.640>query <00:13:52.780>parameter <00:13:52.920>and <00:13:53.060>that <00:13:53.200>the <00:13:53.340>only <00:13:53.480>possible <00:13:53.620>values <00:13:53.760>are <00:13:53.900>true

281
00:13:55.100 --> 00:13:58.100
<00:13:55.100>or <00:13:55.255>false <00:13:55.411>because <00:13:55.566>this <00:13:55.722>is <00:13:55.877>a <00:13:56.033>Boolean. <00:13:56.188>So <00:13:56.344>this <00:13:56.500>is

282
00:13:58.100 --> 00:14:01.400
<00:13:58.100>all <00:13:58.275>just <00:13:58.450>handle <00:13:58.625>automatically <00:13:58.800>from <00:13:58.975>the <00:13:59.150>from <00:13:59.325>the <00:13:59.500>type

283
00:14:01.400 --> 00:14:04.000
<00:14:01.400>annotations. <00:14:01.527>You <00:14:01.654>don't <00:14:01.781>have <00:14:01.909>to <00:14:02.036>put <00:14:02.163>everything <00:14:02.290>in <00:14:02.418>the <00:14:02.545>body. <00:14:02.672>You <00:14:02.800>can

284
00:14:04.100 --> 00:14:07.800
<00:14:04.100>put <00:14:04.207>stuff <00:14:04.315>in <00:14:04.423>the <00:14:04.530>query <00:14:04.638>parameters <00:14:04.746>to <00:14:04.853>customize <00:14:04.961>how <00:14:05.069>the <00:14:05.176>request <00:14:05.284>is <00:14:05.392>being <00:14:05.500>handled.

285
00:14:09.400 --> 00:14:12.400
<00:14:09.400>And <00:14:09.540>now <00:14:09.680>let's <00:14:09.819>say <00:14:09.959>that <00:14:10.100>we <00:14:10.240>want <00:14:10.380>to <00:14:10.520>have <00:14:10.660>something <00:14:10.800>that

286
00:14:12.400 --> 00:14:15.500
<00:14:12.400>is <00:14:12.516>a <00:14:12.633>little <00:14:12.750>bit <00:14:12.866>more <00:14:12.983>complex. <00:14:13.100>Not <00:14:13.216>just <00:14:13.333>a <00:14:13.449>plain <00:14:13.566>body. <00:14:13.683>Just <00:14:13.800>a

287
00:14:15.500 --> 00:14:18.800
<00:14:15.500>Json <00:14:15.675>object. <00:14:15.850>We <00:14:16.025>want <00:14:16.200>to <00:14:16.375>have <00:14:16.550>internal <00:14:16.725>parts. <00:14:16.900>So

288
00:14:18.800 --> 00:14:21.800
<00:14:18.800>now <00:14:18.955>we <00:14:19.111>want <00:14:19.266>to <00:14:19.422>have <00:14:19.577>an <00:14:19.733>array <00:14:19.888>of <00:14:20.044>Json <00:14:20.199>objects

289
00:14:21.800 --> 00:14:24.700
<00:14:21.800>or <00:14:21.974>in <00:14:22.150>Python <00:14:22.324>terms. <00:14:22.500>It <00:14:22.675>will <00:14:22.849>be <00:14:23.025>a <00:14:23.199>list

290
00:14:24.700 --> 00:14:25.400
<00:14:24.700>of <00:14:25.329>dictionaries.

291
00:14:26.300 --> 00:14:29.300
<00:14:26.300>Again, <00:14:26.427>we <00:14:26.554>just <00:14:26.681>use <00:14:26.809>the <00:14:26.936>standard <00:14:27.063>python <00:14:27.190>type <00:14:27.318>annotations. <00:14:27.445>So <00:14:27.572>now <00:14:27.699>instead

292
00:14:29.300 --> 00:14:32.200
<00:14:29.300>of <00:14:29.455>a <00:14:29.611>single <00:14:29.766>full <00:14:29.922>item <00:14:30.077>where <00:14:30.233>declaring <00:14:30.388>a <00:14:30.544>parameter <00:14:30.699>or

293
00:14:32.200 --> 00:14:35.300
<00:14:32.200>there's <00:14:32.340>that <00:14:32.480>is <00:14:32.620>a <00:14:32.760>list <00:14:32.900>of <00:14:33.040>instances <00:14:33.180>of <00:14:33.320>the <00:14:33.460>class <00:14:33.600>food.

294
00:14:35.300 --> 00:14:38.400
<00:14:35.300>Again. <00:14:35.455>This <00:14:35.611>is <00:14:35.766>a <00:14:35.922>standard <00:14:36.077>python <00:14:36.233>type <00:14:36.388>annotations, <00:14:36.544>which <00:14:36.699>means

295
00:14:38.400 --> 00:14:41.400
<00:14:38.400>that <00:14:38.507>you <00:14:38.615>will <00:14:38.723>get <00:14:38.830>Auto <00:14:38.938>completion <00:14:39.046>in <00:14:39.153>the <00:14:39.261>errors <00:14:39.369>everything <00:14:39.476>and <00:14:39.584>then <00:14:39.692>fast <00:14:39.800>API

296
00:14:41.400 --> 00:14:44.300
<00:14:41.400>will <00:14:41.516>do <00:14:41.633>the <00:14:41.750>right <00:14:41.866>thing <00:14:41.983>to <00:14:42.100>make <00:14:42.216>sure <00:14:42.333>that <00:14:42.449>this <00:14:42.566>is <00:14:42.683>what <00:14:42.800>you

297
00:14:44.300 --> 00:14:45.200
<00:14:44.300>receive <00:14:44.569>in <00:14:44.840>your <00:14:45.110>code.

298
00:14:45.900 --> 00:14:48.300
<00:14:45.900>Now <00:14:46.180>we <00:14:46.459>can <00:14:46.740>iterate <00:14:47.020>for <00:14:47.300>each

299
00:14:48.300 --> 00:14:51.100
<00:14:48.300>one <00:14:48.416>of <00:14:48.533>the <00:14:48.650>orders <00:14:48.766>because <00:14:48.883>these <00:14:49.000>will <00:14:49.116>indeed <00:14:49.233>be <00:14:49.349>a <00:14:49.466>list <00:14:49.583>we <00:14:49.699>can

300
00:14:51.100 --> 00:14:54.600
<00:14:51.100>iterate <00:14:51.240>for <00:14:51.380>each <00:14:51.520>one <00:14:51.660>of <00:14:51.800>those <00:14:51.940>items <00:14:52.080>and <00:14:52.220>because <00:14:52.360>each <00:14:52.500>one

301
00:14:54.600 --> 00:14:57.400
<00:14:54.600>of <00:14:54.775>these <00:14:54.950>food <00:14:55.125>items <00:14:55.300>will <00:14:55.475>indeed <00:14:55.650>be <00:14:55.825>an <00:14:56.000>instance

302
00:14:57.400 --> 00:15:00.300
<00:14:57.400>of <00:14:57.633>that <00:14:57.866>class <00:14:58.100>food. <00:14:58.333>Then <00:14:58.566>it <00:14:58.800>will

303
00:15:00.300 --> 00:15:03.700
<00:15:00.300>have <00:15:00.455>a <00:15:00.611>it <00:15:00.766>will <00:15:00.922>have <00:15:01.077>each <00:15:01.233>one <00:15:01.388>of <00:15:01.544>the <00:15:01.699>parameters

304
00:15:03.700 --> 00:15:06.200
<00:15:03.700>that <00:15:03.855>we <00:15:04.011>Define <00:15:04.166>each <00:15:04.322>of <00:15:04.477>the <00:15:04.633>fields <00:15:04.788>or <00:15:04.944>the <00:15:05.100>attribute

305
00:15:06.200 --> 00:15:09.300
<00:15:06.200>that <00:15:06.355>we <00:15:06.511>Define <00:15:06.666>we <00:15:06.822>say <00:15:06.977>that <00:15:07.133>ingredients <00:15:07.288>in <00:15:07.444>each <00:15:07.600>one

306
00:15:09.300 --> 00:15:12.800
<00:15:09.300>of <00:15:09.455>these <00:15:09.611>food <00:15:09.766>items <00:15:09.922>is <00:15:10.077>a <00:15:10.233>list <00:15:10.388>of <00:15:10.544>strings <00:15:10.699>so

307
00:15:12.800 --> 00:15:15.600
<00:15:12.800>we <00:15:12.974>can <00:15:13.150>iterate <00:15:13.324>for <00:15:13.500>each <00:15:13.675>food <00:15:13.849>that <00:15:14.025>ingredients. <00:15:14.199>This

308
00:15:15.600 --> 00:15:18.400
<00:15:15.600>is <00:15:15.716>also <00:15:15.833>going <00:15:15.950>to <00:15:16.066>be <00:15:16.183>at <00:15:16.300>least <00:15:16.416>we <00:15:16.533>can <00:15:16.650>iterate <00:15:16.766>on <00:15:16.883>that <00:15:17.000>and

309
00:15:18.400 --> 00:15:21.100
<00:15:18.400>get <00:15:18.507>each <00:15:18.615>one <00:15:18.723>of <00:15:18.830>the <00:15:18.938>ingredients <00:15:19.046>and <00:15:19.153>they <00:15:19.261>just <00:15:19.369>do <00:15:19.476>some <00:15:19.584>stuff <00:15:19.692>with <00:15:19.800>that.

310
00:15:22.400 --> 00:15:26.200
<00:15:22.400>The <00:15:22.680>thing <00:15:22.959>is <00:15:23.240>a <00:15:23.520>that <00:15:23.800>also

311
00:15:25.200 --> 00:15:29.000
<00:15:25.200>worse. <00:15:25.433>That's <00:15:25.666>also <00:15:25.900>a <00:15:26.133>automated <00:15:26.366>automatically <00:15:26.600>generated

312
00:15:28.200 --> 00:15:31.300
<00:15:28.200>in <00:15:28.355>the <00:15:28.511>documentation. <00:15:28.666>And <00:15:28.822>it's <00:15:28.977>also <00:15:29.133>using <00:15:29.288>the <00:15:29.444>standard <00:15:29.600>type

313
00:15:31.300 --> 00:15:34.500
<00:15:31.300>annotations <00:15:31.474>and <00:15:31.650>you <00:15:31.824>can <00:15:32.000>see <00:15:32.175>that <00:15:32.349>it's <00:15:32.525>a <00:15:32.699>updated

314
00:15:34.500 --> 00:15:37.900
<00:15:34.500>now <00:15:34.675>we <00:15:34.850>have <00:15:35.025>instead <00:15:35.200>of <00:15:35.375>a <00:15:35.550>single <00:15:35.725>adjacent <00:15:35.900>object

315
00:15:37.900 --> 00:15:40.500
<00:15:37.900>or <00:15:38.055>instead <00:15:38.211>of <00:15:38.366>a <00:15:38.522>single. <00:15:38.677>The <00:15:38.833>equivalent <00:15:38.988>is <00:15:39.144>a <00:15:39.300>python

316
00:15:40.500 --> 00:15:43.300
<00:15:40.500>dictionary. <00:15:40.700>We're <00:15:40.900>getting <00:15:41.100>an <00:15:41.300>array <00:15:41.500>of <00:15:41.700>Json <00:15:41.900>objects.

317
00:15:43.300 --> 00:15:46.200
<00:15:43.300>This <00:15:43.474>has <00:15:43.650>the <00:15:43.824>square <00:15:44.000>brackets <00:15:44.175>here. <00:15:44.349>So <00:15:44.525>it's <00:15:44.699>going

318
00:15:46.200 --> 00:15:48.400
<00:15:46.200>to <00:15:46.400>expect <00:15:46.600>an <00:15:46.800>array <00:15:47.000>or <00:15:47.200>a <00:15:47.400>python <00:15:47.600>list.

319
00:15:49.900 --> 00:15:52.300
<00:15:49.900>So <00:15:50.074>if <00:15:50.250>we <00:15:50.425>want <00:15:50.600>to <00:15:50.775>have <00:15:50.949>Jason <00:15:51.125>and <00:15:51.300>we

320
00:15:52.300 --> 00:15:55.300
<00:15:52.300>want <00:15:52.393>to <00:15:52.486>have <00:15:52.579>it <00:15:52.673>inside <00:15:52.766>of <00:15:52.859>Json <00:15:52.953>we <00:15:53.046>can <00:15:53.140>just <00:15:53.233>do <00:15:53.326>that. <00:15:53.420>You <00:15:53.513>can <00:15:53.606>declare <00:15:53.699>any

321
00:15:55.300 --> 00:15:58.200
<00:15:55.300>complex <00:15:55.766>data <00:15:56.233>structures <00:15:56.699>that

322
00:15:58.200 --> 00:16:01.400
<00:15:58.200>can <00:15:58.316>be <00:15:58.433>deeply <00:15:58.550>nested <00:15:58.666>and <00:15:58.783>you <00:15:58.900>just <00:15:59.016>have <00:15:59.133>to <00:15:59.250>use <00:15:59.366>standard <00:15:59.483>python <00:15:59.600>type

323
00:16:01.400 --> 00:16:04.300
<00:16:01.400>annotations <00:16:01.633>for <00:16:01.866>that <00:16:02.100>and <00:16:02.333>all <00:16:02.566>all <00:16:02.800>that

324
00:16:04.300 --> 00:16:07.800
<00:16:04.300>would <00:16:04.439>be <00:16:04.579>handled <00:16:04.719>for <00:16:04.859>you <00:16:05.000>all <00:16:05.140>the <00:16:05.280>data <00:16:05.420>validations <00:16:05.560>serialization <00:16:05.699>documentation

325
00:16:07.800 --> 00:16:08.200
everything.

326
00:16:09.400 --> 00:16:12.500
<00:16:09.400>Now <00:16:09.600>what <00:16:09.800>happens <00:16:10.000>with <00:16:10.199>we <00:16:10.400>send <00:16:10.600>invalid <00:16:10.800>data.

327
00:16:12.500 --> 00:16:15.100
<00:16:12.500>So <00:16:12.655>how <00:16:12.811>is <00:16:12.966>this <00:16:13.122>thing <00:16:13.277>of <00:16:13.433>automatic <00:16:13.588>data <00:16:13.744>validation <00:16:13.900>and

328
00:16:15.100 --> 00:16:19.600
<00:16:15.100>all <00:16:15.216>that <00:16:15.333>stuff? <00:16:15.450>Let's <00:16:15.566>say <00:16:15.683>that <00:16:15.800>we <00:16:15.916>are <00:16:16.033>sending <00:16:16.150>invalidate. <00:16:16.266>This <00:16:16.383>is <00:16:16.500>validation.

329
00:16:18.600 --> 00:16:21.900
<00:16:18.600>It's <00:16:18.880>not <00:16:19.160>that <00:16:19.440>the <00:16:19.720>Json <00:16:20.000>is

330
00:16:21.900 --> 00:16:24.500
<00:16:21.900>missing <00:16:22.055>the <00:16:22.211>last <00:16:22.366>home <00:16:22.522>or <00:16:22.677>something <00:16:22.833>like <00:16:22.988>that <00:16:23.144>or <00:16:23.300>have

331
00:16:24.500 --> 00:16:26.100
<00:16:24.500>an <00:16:24.780>extra <00:16:25.060>comma <00:16:25.340>this <00:16:25.620>is <00:16:25.900>validation.

332
00:16:26.700 --> 00:16:29.100
<00:16:26.700>But <00:16:26.900>the <00:16:27.100>content <00:16:27.300>is <00:16:27.500>not <00:16:27.700>exactly <00:16:27.900>what <00:16:28.100>we

333
00:16:29.100 --> 00:16:32.900
<00:16:29.100>Define. <00:16:29.216>It <00:16:29.333>doesn't <00:16:29.450>conform <00:16:29.566>to <00:16:29.683>what <00:16:29.800>we <00:16:29.916>Define. <00:16:30.033>Let's <00:16:30.150>see <00:16:30.266>how <00:16:30.383>so <00:16:30.500>the

334
00:16:32.900 --> 00:16:35.500
<00:16:32.900>first <00:16:33.180>this <00:16:33.459>is <00:16:33.740>effectively <00:16:34.020>a <00:16:34.300>python

335
00:16:35.500 --> 00:16:38.700
<00:16:35.500>list <00:16:35.655>or <00:16:35.811>adjacent <00:16:35.966>array. <00:16:36.122>So <00:16:36.277>that's <00:16:36.433>that's <00:16:36.588>fine. <00:16:36.744>It <00:16:36.900>contains

336
00:16:38.700 --> 00:16:41.200
<00:16:38.700>Json <00:16:39.166>objects <00:16:39.633>the <00:16:40.100>equivalent

337
00:16:41.200 --> 00:16:44.400
<00:16:41.200>of <00:16:41.316>python <00:16:41.433>dictionaries. <00:16:41.550>So <00:16:41.666>that's <00:16:41.783>fine. <00:16:41.900>Let's <00:16:42.016>see <00:16:42.133>the <00:16:42.250>first <00:16:42.366>one. <00:16:42.483>The <00:16:42.600>first

338
00:16:44.400 --> 00:16:47.100
<00:16:44.400>one <00:16:44.555>has <00:16:44.711>a <00:16:44.866>name <00:16:45.022>which <00:16:45.177>is <00:16:45.333>a <00:16:45.488>string <00:16:45.644>that <00:16:45.800>is

339
00:16:47.100 --> 00:16:50.400
<00:16:47.100>fine. <00:16:47.300>It <00:16:47.500>has <00:16:47.700>ingredients <00:16:47.900>which <00:16:48.100>is <00:16:48.300>at <00:16:48.500>least

340
00:16:50.400 --> 00:16:53.300
<00:16:50.400>of <00:16:50.600>strings <00:16:50.800>that <00:16:51.000>is <00:16:51.199>fine. <00:16:51.400>After <00:16:51.600>now <00:16:51.800>we're

341
00:16:53.300 --> 00:16:56.300
<00:16:53.300>fine. <00:16:53.500>Now <00:16:53.699>the <00:16:53.900>next <00:16:54.099>one <00:16:54.300>this <00:16:54.500>has <00:16:54.699>a

342
00:16:56.300 --> 00:16:59.600
<00:16:56.300>name <00:16:56.455>which <00:16:56.611>is <00:16:56.766>a <00:16:56.922>string <00:16:57.077>these <00:16:57.233>next <00:16:57.388>one <00:16:57.544>doesn't <00:16:57.699>have

343
00:16:59.600 --> 00:17:02.200
<00:16:59.600>ingredients. <00:16:59.833>But <00:17:00.066>if <00:17:00.300>you <00:17:00.533>remember <00:17:00.766>when <00:17:01.000>we

344
00:17:02.200 --> 00:17:05.500
<00:17:02.200>declare <00:17:02.433>the <00:17:02.666>code <00:17:02.900>ingredients <00:17:03.133>by <00:17:03.366>default <00:17:03.600>was

345
00:17:05.500 --> 00:17:08.900
<00:17:05.500>an <00:17:05.655>empty <00:17:05.811>list. <00:17:05.966>So <00:17:06.122>ingredient <00:17:06.277>is <00:17:06.433>actually <00:17:06.588>not <00:17:06.744>required <00:17:06.900>which

346
00:17:08.900 --> 00:17:11.500
<00:17:08.900>means <00:17:09.055>that <00:17:09.211>these <00:17:09.366>when <00:17:09.522>it's <00:17:09.677>also <00:17:09.833>valid <00:17:09.988>because <00:17:10.144>that's <00:17:10.300>what

347
00:17:11.500 --> 00:17:14.300
<00:17:11.500>we <00:17:11.640>Define <00:17:11.780>that <00:17:11.920>hey <00:17:12.060>ingredients <00:17:12.200>is <00:17:12.339>at <00:17:12.480>least <00:17:12.619>but <00:17:12.760>by <00:17:12.900>default

348
00:17:14.300 --> 00:17:15.800
<00:17:14.300>is <00:17:14.450>just <00:17:14.599>empty <00:17:14.750>so <00:17:14.899>we <00:17:15.050>don't <00:17:15.200>have <00:17:15.349>to <00:17:15.500>send <00:17:15.649>it.

349
00:17:16.500 --> 00:17:19.200
<00:17:16.500>Now <00:17:16.675>the <00:17:16.849>next <00:17:17.025>one <00:17:17.200>the <00:17:17.375>name <00:17:17.550>is <00:17:17.724>a <00:17:17.900>string.

350
00:17:19.200 --> 00:17:22.500
<00:17:19.200>This <00:17:19.400>is <00:17:19.600>fine <00:17:19.800>ingredients <00:17:20.000>is <00:17:20.200>a <00:17:20.400>list <00:17:20.600>so

351
00:17:22.500 --> 00:17:25.300
<00:17:22.500>up <00:17:22.655>to <00:17:22.811>now <00:17:22.966>that's <00:17:23.122>fine. <00:17:23.277>The <00:17:23.433>first <00:17:23.588>ingredient <00:17:23.744>is <00:17:23.900>a

352
00:17:25.300 --> 00:17:28.700
<00:17:25.300>string. <00:17:25.474>That's <00:17:25.649>fine. <00:17:25.825>But <00:17:26.000>then <00:17:26.175>the <00:17:26.349>second <00:17:26.524>ingredient <00:17:26.700>this

353
00:17:28.700 --> 00:17:31.100
<00:17:28.700>is <00:17:28.980>not <00:17:29.260>a <00:17:29.540>string. <00:17:29.820>This <00:17:30.100>is

354
00:17:31.100 --> 00:17:34.200
<00:17:31.100>as <00:17:31.255>Nicky <00:17:31.411>object <00:17:31.566>that <00:17:31.722>is <00:17:31.877>put <00:17:32.033>there <00:17:32.188>inside <00:17:32.344>of <00:17:32.500>the

355
00:17:34.200 --> 00:17:37.500
<00:17:34.200>Json <00:17:34.433>so <00:17:34.666>we <00:17:34.900>have <00:17:35.133>a <00:17:35.366>error <00:17:35.600>in

356
00:17:37.500 --> 00:17:40.300
<00:17:37.500>the <00:17:37.733>data <00:17:37.966>that <00:17:38.200>is <00:17:38.433>invalid. <00:17:38.666>But <00:17:38.900>this

357
00:17:40.300 --> 00:17:43.100
<00:17:40.300>is <00:17:40.455>deeply <00:17:40.611>nested <00:17:40.766>inside <00:17:40.922>of <00:17:41.077>the <00:17:41.233>whole <00:17:41.388>data <00:17:41.544>structure <00:17:41.700>that

358
00:17:43.100 --> 00:17:43.600
<00:17:43.100>we <00:17:43.324>are <00:17:43.550>sending.

359
00:17:44.600 --> 00:17:47.200
<00:17:44.600>Now <00:17:44.755>the <00:17:44.911>last <00:17:45.066>one <00:17:45.222>this <00:17:45.377>has <00:17:45.533>a <00:17:45.688>food <00:17:45.844>name, <00:17:46.000>which

360
00:17:47.200 --> 00:17:50.300
<00:17:47.200>is <00:17:47.300>a <00:17:47.400>string <00:17:47.500>but <00:17:47.600>we <00:17:47.700>didn't <00:17:47.800>declare <00:17:47.900>that. <00:17:48.000>We <00:17:48.100>wanted <00:17:48.200>a <00:17:48.300>full <00:17:48.400>name <00:17:48.500>and <00:17:48.600>we

361
00:17:50.300 --> 00:17:53.700
<00:17:50.300>declared <00:17:50.500>that <00:17:50.700>the <00:17:50.899>name <00:17:51.100>was <00:17:51.300>required. <00:17:51.500>Now, <00:17:51.700>if

362
00:17:53.700 --> 00:17:56.700
<00:17:53.700>we <00:17:53.875>try <00:17:54.050>to <00:17:54.225>send <00:17:54.400>these <00:17:54.575>requests <00:17:54.750>to <00:17:54.925>the <00:17:55.100>application

363
00:17:56.700 --> 00:17:59.500
<00:17:56.700>built <00:17:56.900>with <00:17:57.100>fast <00:17:57.300>API, <00:17:57.500>it <00:17:57.700>will <00:17:57.900>automatically <00:17:58.100>send

364
00:17:59.500 --> 00:18:01.100
<00:17:59.500>an <00:17:59.850>error <00:18:00.200>to <00:18:00.550>the <00:18:00.900>client.

365
00:18:01.900 --> 00:18:04.300
<00:18:01.900>Saying <00:18:02.250>hey <00:18:02.600>you're <00:18:02.950>request <00:18:03.300>has

366
00:18:04.300 --> 00:18:07.400
<00:18:04.300>some <00:18:04.440>errors <00:18:04.580>but <00:18:04.720>it <00:18:04.860>will <00:18:05.000>not <00:18:05.139>just <00:18:05.280>say <00:18:05.419>hey <00:18:05.560>you <00:18:05.700>request

367
00:18:07.400 --> 00:18:10.600
<00:18:07.400>has <00:18:07.555>Sailors. <00:18:07.711>It <00:18:07.866>will <00:18:08.022>tell <00:18:08.177>the <00:18:08.333>client <00:18:08.488>exactly <00:18:08.644>where <00:18:08.800>those

368
00:18:10.600 --> 00:18:13.500
<00:18:10.600>errors <00:18:10.879>are <00:18:11.159>and <00:18:11.439>that <00:18:11.719>the <00:18:12.000>difference

369
00:18:13.500 --> 00:18:16.400
<00:18:13.500>between <00:18:13.655>saying <00:18:13.811>there's <00:18:13.966>an <00:18:14.122>error <00:18:14.277>and <00:18:14.433>saying <00:18:14.588>exactly <00:18:14.744>what <00:18:14.900>the

370
00:18:16.400 --> 00:18:19.600
<00:18:16.400>error <00:18:16.575>is <00:18:16.750>is <00:18:16.925>hours <00:18:17.100>of <00:18:17.275>the <00:18:17.450>working. <00:18:17.625>So <00:18:17.800>this

371
00:18:19.600 --> 00:18:23.200
<00:18:19.600>can <00:18:19.740>be <00:18:19.879>very <00:18:20.020>useful. <00:18:20.159>We <00:18:20.300>can <00:18:20.439>see <00:18:20.580>that <00:18:20.719>the <00:18:20.860>it <00:18:21.000>has

372
00:18:23.200 --> 00:18:26.500
<00:18:23.200>to <00:18:23.316>errors. <00:18:23.433>The <00:18:23.550>first <00:18:23.666>one <00:18:23.783>is <00:18:23.900>in <00:18:24.016>the <00:18:24.133>body <00:18:24.250>inside <00:18:24.366>of <00:18:24.483>the <00:18:24.600>orders

373
00:18:26.500 --> 00:18:29.200
<00:18:26.500>the <00:18:26.733>item <00:18:26.966>with <00:18:27.200>index <00:18:27.433>two <00:18:27.666>inside <00:18:27.900>of

374
00:18:29.200 --> 00:18:32.900
<00:18:29.200>the <00:18:29.355>ingredients <00:18:29.511>and <00:18:29.666>inside <00:18:29.822>of <00:18:29.977>ingredients <00:18:30.133>in <00:18:30.288>index <00:18:30.444>one <00:18:30.600>a

375
00:18:32.900 --> 00:18:34.000
<00:18:32.900>string <00:18:33.230>type <00:18:33.560>was <00:18:33.890>expected.

376
00:18:34.700 --> 00:18:37.200
<00:18:34.700>And <00:18:34.855>instead <00:18:35.011>we <00:18:35.166>send <00:18:35.322>that <00:18:35.477>sneaky <00:18:35.633>object. <00:18:35.788>Now <00:18:35.944>the <00:18:36.100>second

377
00:18:37.200 --> 00:18:40.900
<00:18:37.200>error <00:18:37.327>is <00:18:37.454>also <00:18:37.581>inside <00:18:37.709>of <00:18:37.836>the <00:18:37.963>body <00:18:38.090>inside <00:18:38.218>of <00:18:38.345>the <00:18:38.472>orders <00:18:38.600>index

378
00:18:40.900 --> 00:18:43.200
<00:18:40.900>3 <00:18:41.133>the <00:18:41.366>name <00:18:41.600>was <00:18:41.833>a <00:18:42.066>field <00:18:42.300>that

379
00:18:43.200 --> 00:18:46.400
<00:18:43.200>was <00:18:43.307>required, <00:18:43.415>but <00:18:43.523>we <00:18:43.630>didn't <00:18:43.738>send <00:18:43.846>it <00:18:43.953>because <00:18:44.061>we <00:18:44.169>just <00:18:44.276>end <00:18:44.384>a <00:18:44.492>full <00:18:44.600>name,

380
00:18:46.400 --> 00:18:49.300
<00:18:46.400>which <00:18:46.540>is <00:18:46.680>a <00:18:46.820>different <00:18:46.960>thing. <00:18:47.100>So <00:18:47.240>we <00:18:47.380>get <00:18:47.520>like <00:18:47.660>all <00:18:47.800>this

381
00:18:49.300 --> 00:18:52.300
<00:18:49.300>is <00:18:49.533>done <00:18:49.766>automatically <00:18:50.000>for <00:18:50.233>us. <00:18:50.466>This <00:18:50.700>means

382
00:18:52.300 --> 00:18:55.600
<00:18:52.300>that <00:18:52.500>by <00:18:52.700>the <00:18:52.899>point <00:18:53.100>that <00:18:53.300>our <00:18:53.500>code <00:18:53.700>the

383
00:18:55.600 --> 00:18:57.800
<00:18:55.600>code <00:18:55.774>that <00:18:55.949>we <00:18:56.125>write <00:18:56.300>in <00:18:56.475>the <00:18:56.649>function <00:18:56.824>is <00:18:57.000>executive.

384
00:18:58.400 --> 00:19:01.400
<00:18:58.400>All <00:18:58.516>the <00:18:58.633>data <00:18:58.750>that <00:18:58.866>we <00:18:58.983>have <00:18:59.100>inside <00:18:59.216>of <00:18:59.333>that <00:18:59.450>code. <00:18:59.566>It's <00:18:59.683>already <00:18:59.800>valid

385
00:19:01.400 --> 00:19:04.400
<00:19:01.400>with <00:19:01.575>the <00:19:01.750>types <00:19:01.925>that <00:19:02.100>we <00:19:02.275>Define. <00:19:02.450>So <00:19:02.625>with <00:19:02.800>this

386
00:19:04.400 --> 00:19:07.300
<00:19:04.400>is <00:19:04.516>saving <00:19:04.633>us. <00:19:04.750>I <00:19:04.866>don't <00:19:04.983>know <00:19:05.100>50 <00:19:05.216>lines <00:19:05.333>of <00:19:05.450>code <00:19:05.566>per <00:19:05.683>function <00:19:05.800>doing

387
00:19:07.300 --> 00:19:10.600
<00:19:07.300>custom <00:19:07.455>data <00:19:07.611>validation <00:19:07.766>and <00:19:07.922>handling <00:19:08.077>a <00:19:08.233>lot <00:19:08.388>of <00:19:08.544>edge <00:19:08.700>cases

388
00:19:10.600 --> 00:19:11.500
<00:19:10.600>just <00:19:11.004>by <00:19:11.410>default.

389
00:19:12.700 --> 00:19:15.800
<00:19:12.700>So <00:19:12.900>if <00:19:13.100>we <00:19:13.300>send <00:19:13.500>in <00:19:13.700>a <00:19:13.900>invalid <00:19:14.100>data,

390
00:19:15.800 --> 00:19:18.800
<00:19:15.800>we <00:19:15.955>are <00:19:16.111>sending <00:19:16.266>invalid <00:19:16.422>data <00:19:16.577>fast <00:19:16.733>API <00:19:16.888>is <00:19:17.044>gonna <00:19:17.200>protect

391
00:19:18.800 --> 00:19:21.400
<00:19:18.800>our <00:19:19.033>little <00:19:19.266>code <00:19:19.500>from <00:19:19.733>running <00:19:19.966>with <00:19:20.200>that.

392
00:19:21.400 --> 00:19:24.000
<00:19:21.400>But <00:19:21.540>if <00:19:21.680>we <00:19:21.820>send <00:19:21.960>valid <00:19:22.100>data <00:19:22.240>then <00:19:22.380>everything <00:19:22.520>is <00:19:22.660>you <00:19:22.800>know,

393
00:19:24.800 --> 00:19:27.500
<00:19:24.800>go <00:19:25.080>happily <00:19:25.360>like <00:19:25.639>Lily <00:19:25.919>Lily <00:19:26.200>do

394
00:19:28.200 --> 00:19:28.400
nice

395
00:19:29.300 --> 00:19:32.600
<00:19:29.300>Now <00:19:29.440>what <00:19:29.580>is <00:19:29.720>this <00:19:29.860>thing <00:19:30.000>about <00:19:30.139>Auto <00:19:30.280>completion <00:19:30.419>and <00:19:30.560>in <00:19:30.700>Eros

396
00:19:32.600 --> 00:19:35.800
<00:19:32.600>and <00:19:32.755>stuff. <00:19:32.911>So <00:19:33.066>we <00:19:33.222>are <00:19:33.377>using <00:19:33.533>standard <00:19:33.688>type <00:19:33.844>annotations <00:19:34.000>everywhere.

397
00:19:35.800 --> 00:19:38.800
<00:19:35.800>We <00:19:36.000>are <00:19:36.200>not <00:19:36.399>importing <00:19:36.600>some <00:19:36.800>particular <00:19:37.000>list <00:19:37.200>class

398
00:19:38.800 --> 00:19:41.300
<00:19:38.800>from <00:19:38.975>past <00:19:39.149>API <00:19:39.325>or <00:19:39.500>some <00:19:39.675>particular <00:19:39.850>object <00:19:40.024>type <00:19:40.200>or

399
00:19:41.300 --> 00:19:44.200
<00:19:41.300>something <00:19:41.500>where <00:19:41.700>the <00:19:41.899>clearing <00:19:42.100>everything <00:19:42.300>with <00:19:42.500>standard <00:19:42.700>type

400
00:19:44.200 --> 00:19:47.600
<00:19:44.200>annotations. <00:19:44.340>This <00:19:44.480>means <00:19:44.620>that <00:19:44.760>editors <00:19:44.900>will <00:19:45.040>be <00:19:45.180>able <00:19:45.320>to <00:19:45.460>know <00:19:45.600>where

401
00:19:47.600 --> 00:19:51.200
<00:19:47.600>the <00:19:47.740>types <00:19:47.879>of <00:19:48.020>the <00:19:48.159>data <00:19:48.300>that <00:19:48.439>we <00:19:48.580>have. <00:19:48.719>So <00:19:48.860>look <00:19:49.000>this

402
00:19:51.200 --> 00:19:54.400
<00:19:51.200>one. <00:19:51.316>This <00:19:51.433>one <00:19:51.550>is <00:19:51.666>an <00:19:51.783>orders <00:19:51.900>which <00:19:52.016>is <00:19:52.133>a <00:19:52.250>list <00:19:52.366>of <00:19:52.483>instances <00:19:52.600>of

403
00:19:54.400 --> 00:19:57.600
<00:19:54.400>the <00:19:54.555>class <00:19:54.711>food <00:19:54.866>and <00:19:55.022>the <00:19:55.177>each <00:19:55.333>one <00:19:55.488>of <00:19:55.644>these <00:19:55.800>so

404
00:19:57.600 --> 00:20:01.200
<00:19:57.600>we <00:19:57.727>can <00:19:57.854>iterate <00:19:57.981>in <00:19:58.109>that <00:19:58.236>and <00:19:58.363>each <00:19:58.490>instance <00:19:58.618>of <00:19:58.745>this <00:19:58.872>class <00:19:59.000>for

405
00:20:00.200 --> 00:20:03.700
<00:20:00.200>each <00:20:00.400>one <00:20:00.600>of <00:20:00.800>these <00:20:01.000>orders <00:20:01.200>Has <00:20:01.400>a <00:20:01.600>Field

406
00:20:03.700 --> 00:20:06.400
<00:20:03.700>ingredients <00:20:03.875>and <00:20:04.050>each <00:20:04.225>one <00:20:04.400>of <00:20:04.575>those <00:20:04.750>ingredients <00:20:04.925>is <00:20:05.100>actually

407
00:20:06.400 --> 00:20:09.200
<00:20:06.400>it's <00:20:06.866>actually <00:20:07.333>each <00:20:07.800>one

408
00:20:09.200 --> 00:20:10.800
<00:20:09.200>of <00:20:09.480>those <00:20:09.760>ingredients <00:20:10.040>actually <00:20:10.320>a <00:20:10.600>string.

409
00:20:11.600 --> 00:20:14.200
<00:20:11.600>And <00:20:11.800>if <00:20:12.000>you <00:20:12.199>see <00:20:12.399>where <00:20:12.600>have <00:20:12.800>a <00:20:13.000>double

410
00:20:14.200 --> 00:20:17.300
<00:20:14.200>nested <00:20:14.433>for <00:20:14.666>Loop <00:20:14.900>and <00:20:15.133>still <00:20:15.366>inside <00:20:15.600>of

411
00:20:17.300 --> 00:20:20.400
<00:20:17.300>that <00:20:17.455>even <00:20:17.611>though <00:20:17.766>it's <00:20:17.922>a <00:20:18.077>complex <00:20:18.233>data <00:20:18.388>structure. <00:20:18.544>The <00:20:18.700>editor

412
00:20:20.400 --> 00:20:23.800
<00:20:20.400>has <00:20:20.507>been <00:20:20.615>able <00:20:20.723>to <00:20:20.830>give <00:20:20.938>us <00:20:21.046>out <00:20:21.153>the <00:20:21.261>completion <00:20:21.369>for <00:20:21.476>the <00:20:21.584>correct <00:20:21.692>data <00:20:21.800>type

413
00:20:23.800 --> 00:20:26.500
<00:20:23.800>is <00:20:23.907>going <00:20:24.015>to <00:20:24.123>be <00:20:24.230>able <00:20:24.338>to <00:20:24.446>tell <00:20:24.553>us. <00:20:24.661>Hey, <00:20:24.769>this <00:20:24.876>is <00:20:24.984>a <00:20:25.092>string. <00:20:25.200>So

414
00:20:26.500 --> 00:20:28.000
<00:20:26.500>this <00:20:26.668>is <00:20:26.837>what <00:20:27.006>you <00:20:27.175>can <00:20:27.343>do <00:20:27.512>with <00:20:27.681>a <00:20:27.850>string.

415
00:20:29.300 --> 00:20:32.600
<00:20:29.300>And <00:20:29.533>if <00:20:29.766>we <00:20:30.000>try <00:20:30.233>to <00:20:30.466>do <00:20:30.700>operations

416
00:20:32.600 --> 00:20:35.600
<00:20:32.600>that <00:20:32.879>have <00:20:33.159>errors <00:20:33.439>that <00:20:33.719>have <00:20:34.000>diapers,

417
00:20:35.600 --> 00:20:38.400
<00:20:35.600>for <00:20:35.755>example, <00:20:35.911>if <00:20:36.066>we <00:20:36.222>try <00:20:36.377>to <00:20:36.533>some <00:20:36.688>a <00:20:36.844>string <00:20:37.000>with

418
00:20:38.400 --> 00:20:41.700
<00:20:38.400>an <00:20:38.516>integer, <00:20:38.633>we're <00:20:38.750>going <00:20:38.866>to <00:20:38.983>be <00:20:39.100>able <00:20:39.216>to <00:20:39.333>see <00:20:39.450>the <00:20:39.566>red <00:20:39.683>squiggly <00:20:39.800>line

419
00:20:41.700 --> 00:20:45.100
<00:20:41.700>saying <00:20:41.900>hey, <00:20:42.100>there's <00:20:42.300>an <00:20:42.500>error <00:20:42.700>here. <00:20:42.900>If <00:20:43.100>we

420
00:20:44.100 --> 00:20:48.200
<00:20:44.100>didn't <00:20:44.379>have <00:20:44.659>all <00:20:44.939>these <00:20:45.219>information <00:20:45.500>inside

421
00:20:47.200 --> 00:20:50.500
<00:20:47.200>of <00:20:47.400>the <00:20:47.600>way <00:20:47.800>that <00:20:48.000>the <00:20:48.200>code <00:20:48.400>is <00:20:48.600>written.

422
00:20:50.500 --> 00:20:53.100
<00:20:50.500>These <00:20:50.700>will <00:20:50.900>have <00:20:51.100>been <00:20:51.300>a <00:20:51.500>production <00:20:51.700>error <00:20:51.900>and

423
00:20:53.100 --> 00:20:56.500
<00:20:53.100>a <00:20:53.300>century <00:20:53.500>report <00:20:53.699>or <00:20:53.899>something <00:20:54.100>and <00:20:54.300>a <00:20:54.500>client

424
00:20:56.500 --> 00:20:59.800
<00:20:56.500>complaining <00:20:56.780>and <00:20:57.060>you <00:20:57.340>know <00:20:57.620>Uncle <00:20:57.900>ringing

425
00:20:59.800 --> 00:21:02.100
<00:20:59.800>so <00:21:00.080>this <00:21:00.360>can <00:21:00.639>say <00:21:00.919>and <00:21:01.200>prevent

426
00:21:02.100 --> 00:21:05.100
<00:21:02.100>a <00:21:02.274>lot <00:21:02.449>of <00:21:02.625>different <00:21:02.800>types <00:21:02.975>of <00:21:03.149>bugs <00:21:03.324>that <00:21:03.500>we

427
00:21:05.100 --> 00:21:08.400
<00:21:05.100>can <00:21:05.240>introduce <00:21:05.379>just <00:21:05.520>because <00:21:05.659>we're <00:21:05.800>having <00:21:05.939>access <00:21:06.080>to <00:21:06.219>all <00:21:06.360>these <00:21:06.500>information

428
00:21:08.400 --> 00:21:11.400
<00:21:08.400>for <00:21:08.555>the <00:21:08.711>type <00:21:08.866>annotations <00:21:09.022>because <00:21:09.177>the <00:21:09.333>editors <00:21:09.488>and <00:21:09.644>the <00:21:09.800>tooling

429
00:21:11.400 --> 00:21:14.400
<00:21:11.400>that <00:21:11.540>we <00:21:11.680>use <00:21:11.820>can <00:21:11.960>help <00:21:12.100>us <00:21:12.240>because <00:21:12.380>it <00:21:12.520>has <00:21:12.660>all <00:21:12.800>that

430
00:21:14.400 --> 00:21:15.000
information.

431
00:21:16.300 --> 00:21:18.900
<00:21:16.300>And <00:21:16.475>this <00:21:16.649>is <00:21:16.825>all <00:21:17.000>based <00:21:17.175>on <00:21:17.350>standard <00:21:17.524>python <00:21:17.700>types.

432
00:21:20.400 --> 00:21:23.300
<00:21:20.400>And <00:21:20.555>now <00:21:20.711>a <00:21:20.866>little <00:21:21.022>bit <00:21:21.177>about <00:21:21.333>the <00:21:21.488>performance. <00:21:21.644>What <00:21:21.800>is

433
00:21:23.300 --> 00:21:26.000
<00:21:23.300>this <00:21:23.475>thing <00:21:23.649>about <00:21:23.825>fast <00:21:24.000>API <00:21:24.175>so <00:21:24.350>fast <00:21:24.524>apis <00:21:24.700>fast.

434
00:21:26.900 --> 00:21:29.200
<00:21:26.900>One <00:21:27.133>because <00:21:27.366>it <00:21:27.600>allows <00:21:27.833>you <00:21:28.066>to <00:21:28.300>build

435
00:21:29.200 --> 00:21:32.400
<00:21:29.200>things <00:21:29.433>fast <00:21:29.666>on <00:21:29.900>the <00:21:30.133>other <00:21:30.366>hand <00:21:30.600>also

436
00:21:32.400 --> 00:21:35.300
<00:21:32.400>because <00:21:32.633>it's <00:21:32.866>kind <00:21:33.100>of <00:21:33.333>fast. <00:21:33.566>The <00:21:33.800>idea

437
00:21:35.300 --> 00:21:38.700
<00:21:35.300>is <00:21:35.500>that <00:21:35.700>it <00:21:35.899>uses <00:21:36.100>very <00:21:36.300>powerful <00:21:36.500>tools <00:21:36.700>underneath

438
00:21:39.300 --> 00:21:42.000
<00:21:39.300>to <00:21:39.427>be <00:21:39.554>able <00:21:39.681>to <00:21:39.809>have <00:21:39.936>a <00:21:40.063>very <00:21:40.190>good <00:21:40.318>performance. <00:21:40.445>So <00:21:40.572>this <00:21:40.700>is

439
00:21:42.400 --> 00:21:43.400
<00:21:42.400>this <00:21:42.700>is <00:21:43.000>a <00:21:43.300>whoops.

440
00:21:44.200 --> 00:21:47.300
<00:21:44.200>Now <00:21:44.433>that <00:21:44.666>this <00:21:44.900>is <00:21:45.133>a <00:21:45.366>benchmark <00:21:45.600>run

441
00:21:47.300 --> 00:21:50.300
<00:21:47.300>by <00:21:47.455>a <00:21:47.611>third <00:21:47.766>party <00:21:47.922>called <00:21:48.077>taken <00:21:48.233>power <00:21:48.388>and <00:21:48.544>here <00:21:48.700>I'm

442
00:21:50.300 --> 00:21:53.300
<00:21:50.300>just <00:21:50.475>they <00:21:50.649>compare <00:21:50.825>a <00:21:51.000>bunch <00:21:51.175>of <00:21:51.350>different <00:21:51.524>Frameworks <00:21:51.700>on

443
00:21:53.300 --> 00:21:56.800
<00:21:53.300>a <00:21:53.416>bunch <00:21:53.533>of <00:21:53.649>different <00:21:53.766>languages <00:21:53.883>and <00:21:54.000>a <00:21:54.116>bunch <00:21:54.233>of <00:21:54.350>different <00:21:54.466>things <00:21:54.583>here. <00:21:54.700>I'm

444
00:21:56.800 --> 00:21:59.700
<00:21:56.800>only <00:21:57.033>showing <00:21:57.266>you <00:21:57.500>Python <00:21:57.733>and <00:21:57.966>go <00:21:58.200>longer

445
00:21:59.700 --> 00:22:02.400
<00:21:59.700>go <00:21:59.933>is <00:22:00.166>the <00:22:00.400>green <00:22:00.633>ones <00:22:00.866>python <00:22:01.100>is

446
00:22:02.400 --> 00:22:02.800
<00:22:02.400>the <00:22:02.580>blue <00:22:02.760>ones.

447
00:22:03.600 --> 00:22:06.400
<00:22:03.600>Go <00:22:03.774>is <00:22:03.949>a <00:22:04.125>compiled <00:22:04.300>language. <00:22:04.475>So <00:22:04.649>it <00:22:04.824>has <00:22:05.000>to

448
00:22:06.400 --> 00:22:09.300
<00:22:06.400>be <00:22:06.633>faster <00:22:06.866>than <00:22:07.100>python <00:22:07.333>it <00:22:07.566>has <00:22:07.800>to.

449
00:22:10.300 --> 00:22:13.200
<00:22:10.300>But <00:22:10.766>with <00:22:11.233>the <00:22:11.700>first

450
00:22:13.200 --> 00:22:17.200
<00:22:13.200>API <00:22:13.300>and <00:22:13.400>a <00:22:13.500>couple <00:22:13.600>of <00:22:13.700>others <00:22:13.800>here, <00:22:13.900>you're <00:22:14.000>gonna <00:22:14.100>be <00:22:14.200>able <00:22:14.300>to <00:22:14.400>have <00:22:14.500>speed <00:22:14.600>or

451
00:22:16.200 --> 00:22:19.100
<00:22:16.200>performance <00:22:16.400>and <00:22:16.600>performance. <00:22:16.800>This <00:22:17.000>is <00:22:17.200>in <00:22:17.400>terms <00:22:17.600>of

452
00:22:19.100 --> 00:22:22.800
<00:22:19.100>throughput <00:22:19.240>in <00:22:19.379>terms <00:22:19.520>of <00:22:19.659>concurrency, <00:22:19.800>in <00:22:19.939>terms <00:22:20.080>of <00:22:20.219>the <00:22:20.360>number <00:22:20.500>of

453
00:22:22.800 --> 00:22:25.400
<00:22:22.800>requests <00:22:23.000>that <00:22:23.200>you <00:22:23.399>can <00:22:23.600>handle <00:22:23.800>per <00:22:24.000>second. <00:22:24.200>You

454
00:22:25.400 --> 00:22:28.200
<00:22:25.400>can <00:22:25.600>have <00:22:25.800>performance <00:22:26.000>that <00:22:26.200>is <00:22:26.400>a <00:22:26.600>kind <00:22:26.800>of

455
00:22:28.200 --> 00:22:32.300
<00:22:28.200>similar <00:22:28.340>to <00:22:28.480>what <00:22:28.620>you <00:22:28.760>could <00:22:28.900>have <00:22:29.040>with <00:22:29.180>some <00:22:29.320>of <00:22:29.460>these <00:22:29.600>goal-lang

456
00:22:31.300 --> 00:22:34.400
<00:22:31.300>Frameworks. <00:22:31.500>So <00:22:31.700>you <00:22:31.899>can <00:22:32.100>have <00:22:32.300>all <00:22:32.500>the <00:22:32.700>benefits

457
00:22:34.400 --> 00:22:37.600
<00:22:34.400>of <00:22:34.575>python <00:22:34.750>all <00:22:34.925>the <00:22:35.100>community <00:22:35.275>all <00:22:35.450>the <00:22:35.625>packages <00:22:35.800>the

458
00:22:37.600 --> 00:22:38.300
<00:22:37.600>Simplicity <00:22:37.810>of <00:22:38.020>the <00:22:38.230>code.

459
00:22:38.900 --> 00:22:41.200
<00:22:38.900>Well <00:22:39.075>Machine <00:22:39.250>learning <00:22:39.425>that <00:22:39.600>is <00:22:39.775>all <00:22:39.950>done <00:22:40.125>in <00:22:40.300>Python.

460
00:22:41.900 --> 00:22:45.300
<00:22:41.900>But <00:22:42.180>still <00:22:42.460>have <00:22:42.740>pretty <00:22:43.020>decent <00:22:43.300>performance.

461
00:22:46.100 --> 00:22:49.200
<00:22:46.100>So <00:22:46.207>this <00:22:46.315>is <00:22:46.423>fast <00:22:46.530>API. <00:22:46.638>There <00:22:46.746>are <00:22:46.853>a <00:22:46.961>bunch <00:22:47.069>of <00:22:47.176>others <00:22:47.284>here <00:22:47.392>flask <00:22:47.500>is

462
00:22:49.200 --> 00:22:53.000
<00:22:49.200>around <00:22:49.375>here <00:22:49.550>jungle <00:22:49.725>will <00:22:49.900>be <00:22:50.075>somewhere <00:22:50.250>below <00:22:50.425>a <00:22:50.600>the

463
00:22:52.100 --> 00:22:55.700
<00:22:52.100>idea <00:22:52.240>is <00:22:52.379>just <00:22:52.520>that <00:22:52.659>because <00:22:52.800>it <00:22:52.939>can <00:22:53.080>use <00:22:53.219>the <00:22:53.360>new <00:22:53.500>features

464
00:22:55.700 --> 00:22:58.600
<00:22:55.700>of <00:22:55.840>the <00:22:55.980>language. <00:22:56.120>It <00:22:56.260>can <00:22:56.400>use <00:22:56.540>async <00:22:56.680>and <00:22:56.820>wait <00:22:56.960>and <00:22:57.100>all

465
00:22:58.600 --> 00:23:01.400
<00:22:58.600>these <00:22:58.774>things <00:22:58.949>and <00:22:59.125>underneath <00:22:59.300>it <00:22:59.475>can <00:22:59.649>is <00:22:59.824>powered <00:23:00.000>by

466
00:23:01.400 --> 00:23:04.700
<00:23:01.400>something <00:23:01.527>called <00:23:01.654>you <00:23:01.781>will <00:23:01.909>Loop <00:23:02.036>that <00:23:02.163>is <00:23:02.290>a <00:23:02.418>very <00:23:02.545>high <00:23:02.672>performance <00:23:02.800>drop

467
00:23:04.700 --> 00:23:07.800
<00:23:04.700>in <00:23:04.933>replacement <00:23:05.166>for <00:23:05.400>a <00:23:05.633>asyncio <00:23:05.866>a <00:23:06.100>that

468
00:23:07.800 --> 00:23:10.400
<00:23:07.800>uses <00:23:08.033>the <00:23:08.266>same <00:23:08.500>tools <00:23:08.733>underneath <00:23:08.966>used <00:23:09.200>by

469
00:23:10.400 --> 00:23:13.500
<00:23:10.400>nodejs. <00:23:10.555>So <00:23:10.711>this <00:23:10.866>is <00:23:11.022>again <00:23:11.177>all <00:23:11.333>building <00:23:11.488>on <00:23:11.644>top <00:23:11.800>of

470
00:23:13.500 --> 00:23:16.400
<00:23:13.500>each <00:23:13.733>other's <00:23:13.966>the <00:23:14.200>work <00:23:14.433>done <00:23:14.666>by <00:23:14.900>each

471
00:23:16.400 --> 00:23:19.200
<00:23:16.400>other <00:23:16.540>so <00:23:16.680>we <00:23:16.820>can <00:23:16.960>get <00:23:17.100>all <00:23:17.240>the <00:23:17.380>benefits <00:23:17.520>from <00:23:17.660>all <00:23:17.800>that

472
00:23:19.200 --> 00:23:22.200
<00:23:19.200>and <00:23:19.316>get <00:23:19.433>like <00:23:19.550>very <00:23:19.666>high <00:23:19.783>performance <00:23:19.900>now <00:23:20.016>which <00:23:20.133>one <00:23:20.250>of <00:23:20.366>these <00:23:20.483>is <00:23:20.600>the

473
00:23:22.200 --> 00:23:25.200
<00:23:22.200>fastest <00:23:22.400>is <00:23:22.600>not <00:23:22.800>necessarily <00:23:23.000>that <00:23:23.200>precise. <00:23:23.400>It <00:23:23.600>has

474
00:23:25.200 --> 00:23:28.400
<00:23:25.200>some <00:23:25.375>random <00:23:25.550>noise <00:23:25.725>for <00:23:25.900>example <00:23:26.075>uvicorn <00:23:26.250>is <00:23:26.425>the <00:23:26.600>server.

475
00:23:28.400 --> 00:23:31.200
<00:23:28.400>This <00:23:28.516>is <00:23:28.633>not <00:23:28.750>a <00:23:28.866>framework <00:23:28.983>you <00:23:29.100>will <00:23:29.216>use <00:23:29.333>unicorn <00:23:29.450>to <00:23:29.566>run <00:23:29.683>fast <00:23:29.800>API.

476
00:23:31.200 --> 00:23:35.000
<00:23:31.200>So <00:23:31.316>ubercon <00:23:31.433>is <00:23:31.550>used <00:23:31.666>to <00:23:31.783>run <00:23:31.900>all <00:23:32.016>of <00:23:32.133>these <00:23:32.250>so <00:23:32.366>you <00:23:32.483>can <00:23:32.600>has

477
00:23:34.100 --> 00:23:37.200
<00:23:34.100>to <00:23:34.274>be <00:23:34.449>on <00:23:34.625>top <00:23:34.800>of <00:23:34.975>everyone <00:23:35.149>it <00:23:35.324>just <00:23:35.500>has

478
00:23:37.200 --> 00:23:40.700
<00:23:37.200>to <00:23:37.287>be <00:23:37.375>faster <00:23:37.462>because <00:23:37.550>you <00:23:37.637>just <00:23:37.725>lower <00:23:37.812>level <00:23:37.900>thing. <00:23:37.987>But <00:23:38.075>I <00:23:38.162>think <00:23:38.250>is <00:23:38.337>that <00:23:38.425>you <00:23:38.512>get <00:23:38.600>on

479
00:23:40.700 --> 00:23:43.400
<00:23:40.700>the <00:23:40.793>wall <00:23:40.886>Park <00:23:40.980>of <00:23:41.073>the <00:23:41.166>best <00:23:41.260>performance <00:23:41.353>that <00:23:41.446>you <00:23:41.540>can <00:23:41.633>get. <00:23:41.726>And <00:23:41.820>in <00:23:41.913>this <00:23:42.006>case <00:23:42.100>in

480
00:23:43.400 --> 00:23:45.900
<00:23:43.400>this <00:23:43.633>Venture <00:23:43.866>markets <00:23:44.100>15,000 <00:23:44.333>requests <00:23:44.566>per <00:23:44.800>second.

481
00:23:45.900 --> 00:23:48.600
<00:23:45.900>Which <00:23:46.075>is <00:23:46.250>not <00:23:46.425>that <00:23:46.600>and <00:23:46.775>well <00:23:46.950>it's <00:23:47.125>over <00:23:47.300>9,000

482
00:23:48.600 --> 00:23:49.800
<00:23:48.600>now <00:23:48.815>I <00:23:49.032>can <00:23:49.248>show <00:23:49.464>this <00:23:49.679>one.

483
00:23:50.600 --> 00:23:53.600
<00:23:50.600>And <00:23:50.774>cool <00:23:50.949>some <00:23:51.125>other <00:23:51.300>features <00:23:51.475>fast <00:23:51.649>API <00:23:51.824>has <00:23:52.000>dependency

484
00:23:53.600 --> 00:23:56.300
<00:23:53.600>injection <00:23:53.755>built <00:23:53.911>in <00:23:54.066>which <00:23:54.222>means <00:23:54.377>that <00:23:54.533>you <00:23:54.688>can <00:23:54.844>integrate <00:23:55.000>with

485
00:23:56.300 --> 00:24:00.000
<00:23:56.300>a <00:23:56.407>bunch <00:23:56.515>of <00:23:56.623>different <00:23:56.730>packages <00:23:56.838>and <00:23:56.946>do <00:23:57.053>a <00:23:57.161>bunch <00:23:57.269>of <00:23:57.376>different <00:23:57.484>things <00:23:57.592>like <00:23:57.700>authentication

486
00:23:59.800 --> 00:24:02.500
<00:23:59.800>authorization <00:24:00.149>integration <00:24:00.500>with <00:24:00.850>all <00:24:01.200>the

487
00:24:02.500 --> 00:24:05.300
<00:24:02.500>databases <00:24:02.675>that <00:24:02.850>you <00:24:03.025>might <00:24:03.200>want <00:24:03.375>SQL <00:24:03.550>no <00:24:03.725>SQL <00:24:03.900>or

488
00:24:05.300 --> 00:24:08.800
<00:24:05.300>whatever <00:24:05.440>or <00:24:05.580>nothing <00:24:05.720>at <00:24:05.860>all <00:24:06.000>you <00:24:06.139>can <00:24:06.280>have <00:24:06.419>users <00:24:06.560>or <00:24:06.700>nothing

489
00:24:08.800 --> 00:24:10.300
<00:24:08.800>at <00:24:08.992>all. <00:24:09.185>You <00:24:09.378>can <00:24:09.571>have <00:24:09.764>tokens <00:24:09.957>or <00:24:10.149>whatever.

490
00:24:11.300 --> 00:24:14.400
<00:24:11.300>There's <00:24:11.455>integration <00:24:11.611>with <00:24:11.766>the <00:24:11.922>security <00:24:12.077>with <00:24:12.233>all <00:24:12.388>else <00:24:12.544>too. <00:24:12.700>So

491
00:24:14.400 --> 00:24:17.300
<00:24:14.400>you <00:24:14.600>can <00:24:14.800>define <00:24:15.000>a <00:24:15.200>you <00:24:15.400>can <00:24:15.600>integrate <00:24:15.800>with

492
00:24:17.300 --> 00:24:20.000
<00:24:17.300>providers <00:24:17.500>like <00:24:17.700>Google <00:24:17.899>Facebook <00:24:18.100>GitHub <00:24:18.300>all <00:24:18.500>that <00:24:18.700>stuff

493
00:24:20.300 --> 00:24:23.200
<00:24:20.300>to <00:24:20.500>do <00:24:20.700>they <00:24:20.899>authenticate <00:24:21.100>with <00:24:21.300>or <00:24:21.500>you <00:24:21.700>can

494
00:24:23.200 --> 00:24:26.800
<00:24:23.200>create <00:24:23.375>a <00:24:23.550>server <00:24:23.725>that <00:24:23.900>provides <00:24:24.075>that <00:24:24.250>thing <00:24:24.425>of <00:24:24.600>authenticate

495
00:24:26.800 --> 00:24:29.900
<00:24:26.800>with <00:24:27.033>my <00:24:27.266>super <00:24:27.500>application <00:24:27.733>for <00:24:27.966>others <00:24:28.200>to

496
00:24:29.900 --> 00:24:32.700
<00:24:29.900>use <00:24:30.100>because <00:24:30.300>it's <00:24:30.500>all <00:24:30.700>integrated <00:24:30.900>with <00:24:31.100>this <00:24:31.300>all

497
00:24:32.700 --> 00:24:35.500
<00:24:32.700>stuff. <00:24:32.855>There's <00:24:33.011>a <00:24:33.166>support <00:24:33.322>for <00:24:33.477>web <00:24:33.633>sockets <00:24:33.788>because <00:24:33.944>it's <00:24:34.100>actually

498
00:24:35.500 --> 00:24:38.500
<00:24:35.500>first <00:24:35.780>and <00:24:36.060>asynchronous <00:24:36.340>framework <00:24:36.620>a <00:24:36.900>even

499
00:24:38.500 --> 00:24:41.100
<00:24:38.500>though <00:24:38.627>you <00:24:38.754>don't <00:24:38.881>have <00:24:39.009>to <00:24:39.136>use <00:24:39.263>async <00:24:39.390>in <00:24:39.518>the <00:24:39.645>functions <00:24:39.772>and <00:24:39.900>you

500
00:24:41.100 --> 00:24:44.200
<00:24:41.100>don't <00:24:41.216>have <00:24:41.333>to <00:24:41.449>use <00:24:41.566>async <00:24:41.683>animate. <00:24:41.800>If <00:24:41.916>you <00:24:42.033>don't <00:24:42.149>then <00:24:42.266>fast <00:24:42.383>API <00:24:42.500>will

501
00:24:44.200 --> 00:24:47.400
<00:24:44.200>run <00:24:44.307>that <00:24:44.415>thing <00:24:44.523>inside <00:24:44.630>of <00:24:44.738>a <00:24:44.846>thread <00:24:44.953>pool <00:24:45.061>so <00:24:45.169>it <00:24:45.276>won't <00:24:45.384>block <00:24:45.492>the <00:24:45.600>main

502
00:24:47.400 --> 00:24:50.200
<00:24:47.400>event <00:24:47.500>Loop. <00:24:47.600>The <00:24:47.700>thing <00:24:47.800>is <00:24:47.900>that <00:24:48.000>they <00:24:48.100>will <00:24:48.200>do <00:24:48.300>this <00:24:48.400>smart <00:24:48.500>thing. <00:24:48.600>So <00:24:48.700>you <00:24:48.800>will

503
00:24:50.200 --> 00:24:53.200
<00:24:50.200>have <00:24:50.375>like <00:24:50.550>The <00:24:50.725>Best <00:24:50.900>of <00:24:51.075>Both <00:24:51.250>Worlds <00:24:51.425>and <00:24:51.600>then

504
00:24:53.200 --> 00:24:57.200
<00:24:53.200>you <00:24:53.375>can <00:24:53.550>optimize <00:24:53.725>whatever <00:24:53.900>the <00:24:54.075>most <00:24:54.250>a <00:24:54.425>complex <00:24:54.600>path

505
00:24:56.200 --> 00:24:59.700
<00:24:56.200>that <00:24:56.400>need <00:24:56.600>extra <00:24:56.800>performance <00:24:57.000>and <00:24:57.200>then <00:24:57.400>use <00:24:57.600>acing

506
00:24:59.700 --> 00:25:02.500
<00:24:59.700>on <00:24:59.807>a <00:24:59.915>way <00:25:00.023>there <00:25:00.130>but <00:25:00.238>you <00:25:00.346>don't <00:25:00.453>have <00:25:00.561>to <00:25:00.669>do <00:25:00.776>that. <00:25:00.884>So <00:25:00.992>it's <00:25:01.100>you

507
00:25:02.500 --> 00:25:05.800
<00:25:02.500>can <00:25:02.616>easily <00:25:02.733>make <00:25:02.850>great <00:25:02.966>for <00:25:03.083>anything <00:25:03.200>else <00:25:03.316>that <00:25:03.433>you <00:25:03.550>might <00:25:03.666>have <00:25:03.783>and <00:25:03.900>there's

508
00:25:05.800 --> 00:25:08.900
<00:25:05.800>a <00:25:06.000>power. <00:25:06.200>Well, <00:25:06.399>of <00:25:06.600>course <00:25:06.800>files <00:25:07.000>templates <00:25:07.200>like

509
00:25:08.900 --> 00:25:11.000
<00:25:08.900>all <00:25:09.040>the <00:25:09.180>stuff <00:25:09.320>that <00:25:09.460>you <00:25:09.600>will <00:25:09.740>use <00:25:09.880>in <00:25:10.020>a <00:25:10.160>normal <00:25:10.300>frame.

510
00:25:11.300 --> 00:25:14.600
<00:25:11.300>Also <00:25:11.455>a <00:25:11.611>simple <00:25:11.766>background <00:25:11.922>tasks <00:25:12.077>for <00:25:12.233>example <00:25:12.388>to <00:25:12.544>send <00:25:12.700>an

511
00:25:14.600 --> 00:25:14.800
email.

512
00:25:15.600 --> 00:25:18.200
<00:25:15.600>After <00:25:15.774>the <00:25:15.949>response <00:25:16.125>is <00:25:16.300>sent <00:25:16.475>back. <00:25:16.649>But <00:25:16.824>if <00:25:17.000>you

513
00:25:18.200 --> 00:25:21.100
<00:25:18.200>have <00:25:18.327>something <00:25:18.454>that <00:25:18.581>has <00:25:18.709>a <00:25:18.836>heavy <00:25:18.963>workload <00:25:19.090>like <00:25:19.218>training <00:25:19.345>a <00:25:19.472>machine <00:25:19.600>learning

514
00:25:21.100 --> 00:25:24.300
<00:25:21.100>model, <00:25:21.199>then <00:25:21.300>you <00:25:21.399>will <00:25:21.500>need <00:25:21.600>an <00:25:21.699>external <00:25:21.800>queue <00:25:21.899>or <00:25:22.000>something <00:25:22.100>like <00:25:22.199>that. <00:25:22.300>But <00:25:22.399>I <00:25:22.500>think

515
00:25:24.300 --> 00:25:27.700
<00:25:24.300>is <00:25:24.416>that <00:25:24.533>for <00:25:24.649>lightweight <00:25:24.766>stuff <00:25:24.883>you <00:25:25.000>can <00:25:25.116>use <00:25:25.233>the <00:25:25.350>integrated <00:25:25.466>background <00:25:25.583>tasks. <00:25:25.700>There's

516
00:25:27.700 --> 00:25:30.100
<00:25:27.700>easy <00:25:27.933>graphql <00:25:28.166>integration. <00:25:28.400>If <00:25:28.633>you're <00:25:28.866>into <00:25:29.100>that

517
00:25:30.100 --> 00:25:33.200
<00:25:30.100>there's <00:25:30.240>a <00:25:30.379>bunch <00:25:30.520>of <00:25:30.659>other <00:25:30.800>things <00:25:30.939>that <00:25:31.080>you <00:25:31.219>can <00:25:31.360>have. <00:25:31.500>But

518
00:25:33.200 --> 00:25:36.500
<00:25:33.200>the <00:25:33.375>thing <00:25:33.550>is <00:25:33.725>that <00:25:33.900>it's <00:25:34.075>all <00:25:34.250>made <00:25:34.425>for <00:25:34.600>building

519
00:25:36.500 --> 00:25:39.900
<00:25:36.500>web <00:25:36.627>apis <00:25:36.754>with <00:25:36.881>all <00:25:37.009>the <00:25:37.136>stuff <00:25:37.263>that <00:25:37.390>you <00:25:37.518>could <00:25:37.645>have <00:25:37.772>a <00:25:37.900>and

520
00:25:39.900 --> 00:25:42.700
<00:25:39.900>a <00:25:40.133>you <00:25:40.366>can <00:25:40.600>actually <00:25:40.833>also <00:25:41.066>build <00:25:41.300>many

521
00:25:42.700 --> 00:25:43.400
<00:25:42.700>other <00:25:42.910>types <00:25:43.120>of <00:25:43.330>things.

522
00:25:44.400 --> 00:25:47.100
<00:25:44.400>A <00:25:44.516>that's <00:25:44.633>what <00:25:44.750>I <00:25:44.866>have <00:25:44.983>for <00:25:45.100>you. <00:25:45.216>Thank <00:25:45.333>you <00:25:45.450>very <00:25:45.566>much. <00:25:45.683>I <00:25:45.800>think

523
00:25:47.100 --> 00:25:50.500
<00:25:47.100>we <00:25:47.199>still <00:25:47.300>have <00:25:47.399>a <00:25:47.500>little <00:25:47.600>bit <00:25:47.699>of <00:25:47.800>time <00:25:47.899>for <00:25:48.000>questions. <00:25:48.100>If <00:25:48.199>you <00:25:48.300>are <00:25:48.399>interested <00:25:48.500>in

524
00:25:50.500 --> 00:25:53.200
<00:25:50.500>checking <00:25:50.640>out <00:25:50.780>a <00:25:50.920>little <00:25:51.060>bit <00:25:51.200>more <00:25:51.340>about <00:25:51.480>that <00:25:51.620>documentation <00:25:51.760>is <00:25:51.900>here

525
00:25:53.200 --> 00:25:56.200
<00:25:53.200>fast <00:25:53.400>API <00:25:53.600>a <00:25:53.800>yeah. <00:25:54.000>Thank <00:25:54.200>you <00:25:54.400>very <00:25:54.600>much.

526
00:26:03.100 --> 00:26:05.000
<00:26:03.100>Let's <00:26:03.333>see <00:26:03.566>if <00:26:03.800>we <00:26:04.033>have <00:26:04.266>some <00:26:04.500>questions.

527
00:26:08.900 --> 00:26:09.900
<00:26:08.900>Yes, <00:26:09.350>we <00:26:09.800>do.

528
00:26:13.400 --> 00:26:16.600
<00:26:13.400>One <00:26:13.633>of <00:26:13.866>them <00:26:14.100>starts <00:26:14.333>with <00:26:14.566>would <00:26:14.800>you

529
00:26:16.600 --> 00:26:19.700
<00:26:16.600>recommend <00:26:16.800>to <00:26:17.000>use <00:26:17.199>fast <00:26:17.399>API <00:26:17.600>in <00:26:17.800>a <00:26:18.000>serverless

530
00:26:19.700 --> 00:26:21.800
<00:26:19.700>environment <00:26:19.980>like <00:26:20.260>in <00:26:20.540>a <00:26:20.820>Lambda <00:26:21.100>function?

531
00:26:22.500 --> 00:26:25.200
<00:26:22.500>So <00:26:22.780>a <00:26:23.060>are <00:26:23.340>you <00:26:23.620>hear <00:26:23.900>me?

532
00:26:25.200 --> 00:26:28.600
<00:26:25.200>Okay. <00:26:25.355>Yeah <00:26:25.511>now <00:26:25.666>so <00:26:25.822>in <00:26:25.977>Atlanta <00:26:26.133>function <00:26:26.288>a <00:26:26.444>Lambda <00:26:26.600>has

533
00:26:28.600 --> 00:26:31.200
<00:26:28.600>its <00:26:28.740>own <00:26:28.879>framework <00:26:29.020>the <00:26:29.159>same <00:26:29.300>as <00:26:29.439>usual <00:26:29.580>and <00:26:29.719>Google <00:26:29.860>like <00:26:30.000>they

534
00:26:31.200 --> 00:26:34.400
<00:26:31.200>will <00:26:31.340>have <00:26:31.480>their <00:26:31.620>own <00:26:31.760>waste <00:26:31.900>of <00:26:32.040>doing <00:26:32.180>things <00:26:32.320>in <00:26:32.460>Lambda. <00:26:32.600>There's

535
00:26:34.400 --> 00:26:37.200
<00:26:34.400>there's <00:26:34.633>an <00:26:34.866>extension <00:26:35.100>called <00:26:35.333>Mangum <00:26:35.566>that <00:26:35.800>you

536
00:26:37.200 --> 00:26:40.500
<00:26:37.200>can <00:26:37.375>use <00:26:37.550>to <00:26:37.725>put <00:26:37.900>fast <00:26:38.075>API <00:26:38.250>inside <00:26:38.425>of <00:26:38.600>Lambda.

537
00:26:40.500 --> 00:26:43.200
<00:26:40.500>That <00:26:40.675>way <00:26:40.850>you <00:26:41.025>can <00:26:41.200>develop <00:26:41.375>locally <00:26:41.550>and <00:26:41.725>the <00:26:41.900>book

538
00:26:43.200 --> 00:26:46.500
<00:26:43.200>locally <00:26:43.375>which <00:26:43.550>is <00:26:43.725>very <00:26:43.900>important <00:26:44.075>for <00:26:44.250>iteration <00:26:44.425>speed <00:26:44.600>when

539
00:26:46.500 --> 00:26:49.200
<00:26:46.500>you <00:26:46.627>are <00:26:46.754>building <00:26:46.881>something <00:26:47.009>and <00:26:47.136>then <00:26:47.263>you <00:26:47.390>can <00:26:47.518>deploy <00:26:47.645>to <00:26:47.772>Lambda. <00:26:47.900>If

540
00:26:49.200 --> 00:26:52.500
<00:26:49.200>you <00:26:49.316>are <00:26:49.433>into <00:26:49.550>that <00:26:49.666>you <00:26:49.783>can <00:26:49.900>also <00:26:50.016>use <00:26:50.133>Google <00:26:50.250>Cloud <00:26:50.366>run <00:26:50.483>and <00:26:50.600>also

541
00:26:52.500 --> 00:26:55.600
<00:26:52.500>Azure <00:26:52.616>the <00:26:52.733>people <00:26:52.850>from <00:26:52.966>Azure <00:26:53.083>are <00:26:53.200>building <00:26:53.316>a <00:26:53.433>bunch <00:26:53.550>of <00:26:53.666>stuff <00:26:53.783>to <00:26:53.900>add

542
00:26:55.600 --> 00:26:58.500
<00:26:55.600>custom <00:26:55.699>integration <00:26:55.800>for <00:26:55.899>fast <00:26:56.000>API <00:26:56.100>and <00:26:56.199>things <00:26:56.300>like <00:26:56.399>that. <00:26:56.500>So <00:26:56.600>yeah, <00:26:56.699>you <00:26:56.800>can <00:26:56.899>use <00:26:57.000>any

543
00:26:58.500 --> 00:27:01.400
<00:26:58.500>of <00:26:58.733>those <00:26:58.966>Services <00:26:59.200>if <00:26:59.433>you're <00:26:59.666>into <00:26:59.900>those

544
00:27:02.400 --> 00:27:05.900
<00:27:02.400>On <00:27:02.575>a <00:27:02.750>critical <00:27:02.925>note, <00:27:03.100>somebody <00:27:03.275>says <00:27:03.450>as <00:27:03.625>of <00:27:03.800>today

545
00:27:05.900 --> 00:27:08.500
<00:27:05.900>first <00:27:06.250>API <00:27:06.600>as <00:27:06.950>one <00:27:07.300>4K

546
00:27:08.500 --> 00:27:11.400
<00:27:08.500>issues <00:27:08.675>on <00:27:08.850>GitHub. <00:27:09.025>What <00:27:09.200>is <00:27:09.375>the <00:27:09.550>plan <00:27:09.725>for <00:27:09.900>fixing

547
00:27:11.400 --> 00:27:15.200
<00:27:11.400>them <00:27:11.633>and <00:27:11.866>handling <00:27:12.100>of <00:27:12.333>these <00:27:12.566>issues? <00:27:12.800>That's

548
00:27:14.200 --> 00:27:18.600
<00:27:14.200>a <00:27:14.400>very <00:27:14.600>funny <00:27:14.800>question. <00:27:15.000>So <00:27:15.200>a <00:27:15.400>the <00:27:15.600>issues

549
00:27:18.600 --> 00:27:21.600
<00:27:18.600>in <00:27:18.774>first <00:27:18.949>API <00:27:19.125>are <00:27:19.300>used <00:27:19.475>for <00:27:19.649>questions. <00:27:19.824>I <00:27:20.000>use

550
00:27:21.600 --> 00:27:24.300
<00:27:21.600>the <00:27:21.755>questions <00:27:21.911>in <00:27:22.066>the <00:27:22.222>issues <00:27:22.377>because <00:27:22.533>the <00:27:22.688>issues <00:27:22.844>allow <00:27:23.000>me

551
00:27:24.300 --> 00:27:27.300
<00:27:24.300>to <00:27:24.416>have <00:27:24.533>templates <00:27:24.649>that <00:27:24.766>are <00:27:24.883>very <00:27:25.000>strict <00:27:25.116>so <00:27:25.233>that <00:27:25.350>people <00:27:25.466>don't <00:27:25.583>come <00:27:25.700>and

552
00:27:27.300 --> 00:27:30.300
<00:27:27.300>say <00:27:27.407>hey <00:27:27.515>this <00:27:27.623>is <00:27:27.730>not <00:27:27.838>working <00:27:27.946>and <00:27:28.053>then <00:27:28.161>I <00:27:28.269>say <00:27:28.376>what <00:27:28.484>is <00:27:28.592>not <00:27:28.700>working

553
00:27:30.300 --> 00:27:33.600
<00:27:30.300>and <00:27:30.455>they <00:27:30.611>say <00:27:30.766>my <00:27:30.922>application. <00:27:31.077>How <00:27:31.233>is <00:27:31.388>your <00:27:31.544>application <00:27:31.700>and

554
00:27:33.600 --> 00:27:36.600
<00:27:33.600>then <00:27:33.716>like, <00:27:33.833>you <00:27:33.949>know <00:27:34.066>all <00:27:34.183>these <00:27:34.300>back <00:27:34.416>and <00:27:34.533>forth <00:27:34.649>so <00:27:34.766>issues <00:27:34.883>have <00:27:35.000>a

555
00:27:36.600 --> 00:27:40.200
<00:27:36.600>way <00:27:36.833>to <00:27:37.066>define <00:27:37.300>templates <00:27:37.533>most <00:27:37.766>like <00:27:38.000>95%

556
00:27:39.200 --> 00:27:42.400
<00:27:39.200>or <00:27:39.355>something <00:27:39.511>of <00:27:39.666>the <00:27:39.822>issues <00:27:39.977>are <00:27:40.133>actually <00:27:40.288>questions <00:27:40.444>and <00:27:40.600>most

557
00:27:42.400 --> 00:27:45.500
<00:27:42.400>of <00:27:42.527>those <00:27:42.654>are <00:27:42.781>actually <00:27:42.909>answered <00:27:43.036>by <00:27:43.163>the <00:27:43.290>same <00:27:43.418>community <00:27:43.545>and <00:27:43.672>those <00:27:43.800>that

558
00:27:45.500 --> 00:27:48.200
<00:27:45.500>answer <00:27:45.640>questions <00:27:45.780>in <00:27:45.920>the <00:27:46.060>community <00:27:46.200>are <00:27:46.340>the <00:27:46.480>ones <00:27:46.620>that <00:27:46.760>end <00:27:46.900>up

559
00:27:48.200 --> 00:27:51.400
<00:27:48.200>being <00:27:48.316>the <00:27:48.433>fast <00:27:48.550>API <00:27:48.666>experts <00:27:48.783>which <00:27:48.900>is <00:27:49.016>a <00:27:49.133>whole <00:27:49.250>section <00:27:49.366>in <00:27:49.483>the <00:27:49.600>first

560
00:27:51.400 --> 00:27:54.600
<00:27:51.400>API <00:27:51.680>documentation. <00:27:51.960>Now, <00:27:52.240>I <00:27:52.520>don't <00:27:52.800>close

561
00:27:54.600 --> 00:27:57.200
<00:27:54.600>them <00:27:54.755>immediately <00:27:54.911>because <00:27:55.066>I <00:27:55.222>want <00:27:55.377>to <00:27:55.533>check <00:27:55.688>each <00:27:55.844>one <00:27:56.000>of

562
00:27:57.200 --> 00:28:00.200
<00:27:57.200>them <00:27:57.307>to <00:27:57.415>make <00:27:57.523>sure <00:27:57.630>that <00:27:57.738>they <00:27:57.846>are <00:27:57.953>actually <00:27:58.061>correctly <00:27:58.169>answered <00:27:58.276>but <00:27:58.384>in <00:27:58.492>many <00:27:58.600>cases

563
00:28:00.200 --> 00:28:01.800
<00:28:00.200>it <00:28:00.550>makes <00:28:00.900>more <00:28:01.250>sense <00:28:01.600>to

564
00:28:02.400 --> 00:28:06.800
<00:28:02.400>Our <00:28:02.555>condoc <00:28:02.711>documentation <00:28:02.866>that <00:28:03.022>will <00:28:03.177>explain <00:28:03.333>those <00:28:03.488>things <00:28:03.644>better <00:28:03.800>instead

565
00:28:05.800 --> 00:28:08.100
<00:28:05.800>of <00:28:06.033>just <00:28:06.266>like <00:28:06.500>going <00:28:06.733>to <00:28:06.966>each <00:28:07.200>one

566
00:28:08.100 --> 00:28:11.400
<00:28:08.100>of <00:28:08.207>the <00:28:08.315>issues <00:28:08.423>and <00:28:08.530>closing <00:28:08.638>each <00:28:08.746>one <00:28:08.853>of <00:28:08.961>them, <00:28:09.069>but <00:28:09.176>they <00:28:09.284>usually <00:28:09.392>just <00:28:09.500>questions.

567
00:28:12.400 --> 00:28:15.800
<00:28:12.400>This <00:28:12.540>is <00:28:12.680>a <00:28:12.820>funny <00:28:12.960>question, <00:28:13.100>but <00:28:13.240>it <00:28:13.380>has <00:28:13.520>three <00:28:13.660>uploads. <00:28:13.800>So

568
00:28:15.800 --> 00:28:18.000
<00:28:15.800>I <00:28:15.975>have <00:28:16.149>to <00:28:16.325>ask <00:28:16.500>you <00:28:16.675>how <00:28:16.850>does <00:28:17.024>it <00:28:17.200>feel

569
00:28:18.400 --> 00:28:21.300
<00:28:18.400>being <00:28:18.633>a <00:28:18.866>genius <00:28:19.100>Superstar? <00:28:19.333>Thank <00:28:19.566>you <00:28:19.800>very

570
00:28:21.300 --> 00:28:23.300
<00:28:21.300>much <00:28:21.533>Whoever <00:28:21.766>thought <00:28:22.000>that <00:28:22.233>thank <00:28:22.466>you <00:28:22.700>very

571
00:28:25.600 --> 00:28:26.400
<00:28:25.600>much <00:28:25.780>the <00:28:25.960>only <00:28:26.140>one <00:28:26.320>that

572
00:28:28.300 --> 00:28:31.700
<00:28:28.300>For <00:28:28.533>Pep <00:28:28.766>five, <00:28:29.000>six <00:28:29.233>three <00:28:29.466>annotation <00:28:29.700>objects

573
00:28:31.700 --> 00:28:33.500
<00:28:31.700>becoming <00:28:32.400>strings. <00:28:33.100>Sorry.

574
00:28:34.600 --> 00:28:37.600
<00:28:34.600>Yeah, <00:28:34.740>if <00:28:34.879>I <00:28:35.020>yeah, <00:28:35.159>well <00:28:35.300>for <00:28:35.439>those <00:28:35.580>that <00:28:35.719>don't <00:28:35.860>know <00:28:36.000>a

575
00:28:37.600 --> 00:28:40.900
<00:28:37.600>the <00:28:37.800>Python <00:28:38.000>language <00:28:38.199>has <00:28:38.399>been <00:28:38.600>evolving <00:28:38.800>and <00:28:39.000>recently

576
00:28:40.900 --> 00:28:43.600
<00:28:40.900>there <00:28:41.075>was <00:28:41.250>the <00:28:41.425>idea <00:28:41.600>of <00:28:41.775>changing <00:28:41.950>the <00:28:42.125>way <00:28:42.300>that

577
00:28:43.600 --> 00:28:46.100
<00:28:43.600>this <00:28:43.774>type <00:28:43.949>annotations <00:28:44.125>work <00:28:44.300>internally. <00:28:44.475>This <00:28:44.649>is <00:28:44.824>this <00:28:45.000>is

578
00:28:46.100 --> 00:28:48.200
<00:28:46.100>one <00:28:46.274>of <00:28:46.449>the <00:28:46.625>great <00:28:46.800>features <00:28:46.975>of <00:28:47.149>python <00:28:47.324>is <00:28:47.500>that

579
00:28:48.900 --> 00:28:51.600
<00:28:48.900>we <00:28:49.133>can <00:28:49.366>use <00:28:49.600>this <00:28:49.833>type <00:28:50.066>annotations <00:28:50.300>internally

580
00:28:51.600 --> 00:28:54.100
<00:28:51.600>so <00:28:51.774>fast <00:28:51.949>API <00:28:52.125>at <00:28:52.300>runtime <00:28:52.475>will <00:28:52.649>be <00:28:52.824>able <00:28:53.000>to

581
00:28:54.100 --> 00:28:57.500
<00:28:54.100>extract <00:28:54.207>that <00:28:54.315>information <00:28:54.423>of <00:28:54.530>the <00:28:54.638>type <00:28:54.746>annotations <00:28:54.853>to <00:28:54.961>do <00:28:55.069>all <00:28:55.176>the <00:28:55.284>data <00:28:55.392>validation <00:28:55.500>and

582
00:28:57.500 --> 00:29:00.700
<00:28:57.500>all <00:28:57.640>that <00:28:57.780>stuff. <00:28:57.920>For <00:28:58.060>example, <00:28:58.200>you <00:28:58.340>wouldn't <00:28:58.480>have <00:28:58.620>that <00:28:58.760>in <00:28:58.900>typescript

583
00:29:00.700 --> 00:29:03.300
<00:29:00.700>or <00:29:00.855>other <00:29:01.011>languages <00:29:01.166>easy <00:29:01.322>all <00:29:01.477>that <00:29:01.633>information <00:29:01.788>about <00:29:01.944>the <00:29:02.100>type

584
00:29:03.300 --> 00:29:07.000
<00:29:03.300>annotations. <00:29:03.475>Now <00:29:03.649>they <00:29:03.825>were <00:29:04.000>going <00:29:04.175>to <00:29:04.350>change <00:29:04.524>something <00:29:04.700>in

585
00:29:06.200 --> 00:29:09.400
<00:29:06.200>the <00:29:06.375>way <00:29:06.550>that <00:29:06.725>this <00:29:06.900>type <00:29:07.075>annotations <00:29:07.250>work <00:29:07.425>that <00:29:07.600>will

586
00:29:09.400 --> 00:29:12.400
<00:29:09.400>break <00:29:09.750>some <00:29:10.100>complex <00:29:10.450>Corner <00:29:10.800>cases

587
00:29:12.400 --> 00:29:15.900
<00:29:12.400>for <00:29:12.633>users <00:29:12.866>of <00:29:13.100>fast <00:29:13.333>API, <00:29:13.566>but <00:29:13.800>then

588
00:29:15.900 --> 00:29:19.000
<00:29:15.900>the <00:29:16.100>staying <00:29:16.300>console <00:29:16.500>of <00:29:16.700>python <00:29:16.900>a <00:29:17.100>checked <00:29:17.300>all

589
00:29:18.200 --> 00:29:21.400
<00:29:18.200>the <00:29:18.340>Asian <00:29:18.480>all <00:29:18.620>the <00:29:18.760>thing <00:29:18.900>and <00:29:19.040>they <00:29:19.180>actually <00:29:19.320>reverted <00:29:19.460>the <00:29:19.600>code

590
00:29:21.400 --> 00:29:24.400
<00:29:21.400>that <00:29:21.600>was <00:29:21.800>already <00:29:22.000>committed <00:29:22.200>into <00:29:22.400>python <00:29:22.600>do <00:29:22.800>be

591
00:29:24.400 --> 00:29:27.800
<00:29:24.400>able <00:29:24.540>to <00:29:24.680>support <00:29:24.820>all <00:29:24.960>these <00:29:25.100>all <00:29:25.240>the <00:29:25.380>community <00:29:25.520>of <00:29:25.660>python <00:29:25.800>of

592
00:29:27.800 --> 00:29:31.000
<00:29:27.800>fast <00:29:27.955>API <00:29:28.111>identity <00:29:28.266>and <00:29:28.422>all <00:29:28.577>these <00:29:28.733>things. <00:29:28.888>So <00:29:29.044>the <00:29:29.200>steering

593
00:29:30.400 --> 00:29:33.100
<00:29:30.400>Council <00:29:30.600>the <00:29:30.800>people <00:29:31.000>the <00:29:31.200>core <00:29:31.400>developers <00:29:31.600>the <00:29:31.800>people

594
00:29:33.100 --> 00:29:36.600
<00:29:33.100>that <00:29:33.255>make <00:29:33.411>python <00:29:33.566>are <00:29:33.722>very <00:29:33.877>aware <00:29:34.033>of <00:29:34.188>the <00:29:34.344>community <00:29:34.500>using

595
00:29:36.600 --> 00:29:39.400
<00:29:36.600>Python <00:29:36.774>and <00:29:36.949>are <00:29:37.125>very <00:29:37.300>supportive <00:29:37.475>of <00:29:37.649>like <00:29:37.824>making <00:29:38.000>sure

596
00:29:39.400 --> 00:29:42.200
<00:29:39.400>that <00:29:39.540>we <00:29:39.680>have <00:29:39.820>a <00:29:39.960>way <00:29:40.100>to <00:29:40.240>to <00:29:40.380>use <00:29:40.520>all <00:29:40.660>these <00:29:40.800>tools

597
00:29:42.200 --> 00:29:45.100
<00:29:42.200>and <00:29:42.400>all <00:29:42.600>these <00:29:42.800>features <00:29:43.000>a <00:29:43.200>and <00:29:43.400>like <00:29:43.600>to

598
00:29:45.100 --> 00:29:48.700
<00:29:45.100>keep <00:29:45.255>a <00:29:45.411>to <00:29:45.566>keep <00:29:45.722>doing <00:29:45.877>that. <00:29:46.033>There's <00:29:46.188>still <00:29:46.344>the <00:29:46.500>the

599
00:29:48.800 --> 00:29:51.300
<00:29:48.800>Ongoing <00:29:49.000>of <00:29:49.200>how <00:29:49.399>do <00:29:49.600>we <00:29:49.800>manage <00:29:50.000>this <00:29:50.200>thing

600
00:29:51.300 --> 00:29:54.500
<00:29:51.300>that <00:29:51.455>they <00:29:51.611>wanted <00:29:51.766>to <00:29:51.922>change <00:29:52.077>but <00:29:52.233>without <00:29:52.388>breaking <00:29:52.544>these <00:29:52.700>use

601
00:29:54.500 --> 00:29:57.400
<00:29:54.500>cases <00:29:54.675>and <00:29:54.850>it's <00:29:55.025>just <00:29:55.200>like <00:29:55.375>still <00:29:55.550>an <00:29:55.725>ongoing <00:29:55.900>issue

602
00:29:57.400 --> 00:30:00.100
<00:29:57.400>that <00:29:57.516>they <00:29:57.633>are <00:29:57.750>figuring <00:29:57.866>out <00:29:57.983>different <00:29:58.100>ways. <00:29:58.216>There <00:29:58.333>are <00:29:58.450>several <00:29:58.566>people <00:29:58.683>trying <00:29:58.800>to

603
00:30:00.100 --> 00:30:03.600
<00:30:00.100>solve <00:30:00.216>it <00:30:00.333>in <00:30:00.449>different <00:30:00.566>ways. <00:30:00.683>But <00:30:00.800>like <00:30:00.916>yeah, <00:30:01.033>the <00:30:01.149>the <00:30:01.266>question <00:30:01.383>was <00:30:01.500>is

604
00:30:03.600 --> 00:30:06.400
<00:30:03.600>going <00:30:03.755>to <00:30:03.911>break. <00:30:04.066>No, <00:30:04.222>it's <00:30:04.377>not <00:30:04.533>going <00:30:04.688>to <00:30:04.844>break <00:30:05.000>and

605
00:30:06.400 --> 00:30:09.300
<00:30:06.400>even <00:30:06.633>less <00:30:06.866>now <00:30:07.100>that <00:30:07.333>they <00:30:07.566>that <00:30:07.800>the

606
00:30:09.300 --> 00:30:12.400
<00:30:09.300>same <00:30:09.416>closing <00:30:09.533>a <00:30:09.649>council <00:30:09.766>and <00:30:09.883>the <00:30:10.000>core <00:30:10.116>developers <00:30:10.233>and <00:30:10.350>everyone <00:30:10.466>has <00:30:10.583>shown <00:30:10.700>so

607
00:30:12.400 --> 00:30:15.600
<00:30:12.400>much <00:30:12.600>support <00:30:12.800>into <00:30:13.000>this <00:30:13.200>use <00:30:13.400>cases <00:30:13.600>of <00:30:13.800>python

608
00:30:15.600 --> 00:30:16.500
<00:30:15.600>of <00:30:16.004>modern <00:30:16.410>python.

609
00:30:17.600 --> 00:30:20.300
<00:30:17.600>Can <00:30:17.774>I <00:30:17.949>use <00:30:18.125>fast <00:30:18.300>API <00:30:18.475>to <00:30:18.649>just <00:30:18.824>export <00:30:19.000>the

610
00:30:20.300 --> 00:30:22.300
<00:30:20.300>open <00:30:20.766>API <00:30:21.233>yamls <00:30:21.700>best?

611
00:30:22.800 --> 00:30:25.800
<00:30:22.800>Yeah, <00:30:23.266>yeah, <00:30:23.733>you <00:30:24.200>can

612
00:30:25.800 --> 00:30:29.100
<00:30:25.800>use <00:30:25.940>first <00:30:26.080>API <00:30:26.220>to <00:30:26.360>just <00:30:26.500>export <00:30:26.639>the <00:30:26.780>open <00:30:26.919>API <00:30:27.060>specification <00:30:27.200>that

613
00:30:28.100 --> 00:30:31.500
<00:30:28.100>will <00:30:28.274>mean <00:30:28.449>that <00:30:28.625>you <00:30:28.800>are <00:30:28.975>just <00:30:29.149>declaring <00:30:29.324>the <00:30:29.500>the

614
00:30:31.500 --> 00:30:34.600
<00:30:31.500>classes <00:30:31.640>and <00:30:31.780>the <00:30:31.920>endpoints <00:30:32.060>and <00:30:32.200>then <00:30:32.340>you <00:30:32.480>just <00:30:32.620>generate <00:30:32.760>the <00:30:32.900>Json

615
00:30:34.600 --> 00:30:36.200
<00:30:34.600>and <00:30:34.833>then <00:30:35.066>you <00:30:35.300>don't <00:30:35.533>use <00:30:35.766>the <00:30:36.000>code.

616
00:30:36.800 --> 00:30:39.200
<00:30:36.800>I <00:30:36.975>think <00:30:37.149>it <00:30:37.325>will <00:30:37.500>be <00:30:37.675>viable <00:30:37.850>because <00:30:38.024>otherwise <00:30:38.200>you

617
00:30:39.200 --> 00:30:42.300
<00:30:39.200>will <00:30:39.355>have <00:30:39.511>to <00:30:39.666>be <00:30:39.822>writing <00:30:39.977>that <00:30:40.133>Json <00:30:40.288>by <00:30:40.444>hand <00:30:40.600>in

618
00:30:42.300 --> 00:30:45.100
<00:30:42.300>an <00:30:42.427>editor <00:30:42.554>making <00:30:42.681>sure <00:30:42.809>that <00:30:42.936>you'll <00:30:43.063>make <00:30:43.190>mistakes <00:30:43.318>and <00:30:43.445>in <00:30:43.572>some <00:30:43.700>cases.

619
00:30:45.100 --> 00:30:48.500
<00:30:45.100>It's <00:30:45.240>easier <00:30:45.379>just <00:30:45.520>to <00:30:45.659>write <00:30:45.800>code <00:30:45.939>and <00:30:46.080>write <00:30:46.219>Json. <00:30:46.360>So <00:30:46.500>yeah,

620
00:30:48.500 --> 00:30:49.700
<00:30:48.500>that's <00:30:49.040>totally <00:30:49.580>possible.

621
00:30:50.500 --> 00:30:53.600
<00:30:50.500>One <00:30:50.675>of <00:30:50.850>the <00:30:51.025>question <00:30:51.200>is <00:30:51.375>which <00:30:51.550>IDE <00:30:51.725>will <00:30:51.900>do

622
00:30:53.600 --> 00:30:54.900
<00:30:53.600>you <00:30:53.990>use <00:30:54.380>or <00:30:54.770>recommend?

623
00:30:55.600 --> 00:30:58.300
<00:30:55.600>So <00:30:55.833>a <00:30:56.066>I <00:30:56.300>will <00:30:56.533>recommend <00:30:56.766>like <00:30:57.000>one

624
00:30:58.300 --> 00:31:01.600
<00:30:58.300>of <00:30:58.475>the <00:30:58.649>popular <00:30:58.825>ones <00:30:59.000>vs <00:30:59.175>code <00:30:59.350>or <00:30:59.524>pycharm. <00:30:59.700>Both

625
00:31:01.600 --> 00:31:04.300
<00:31:01.600>of <00:31:01.774>them <00:31:01.949>have <00:31:02.125>Integrations <00:31:02.300>and <00:31:02.475>things <00:31:02.649>to <00:31:02.824>support <00:31:03.000>better

626
00:31:04.300 --> 00:31:07.600
<00:31:04.300>fast <00:31:04.440>API. <00:31:04.580>Both <00:31:04.720>of <00:31:04.860>them <00:31:05.000>have <00:31:05.139>done <00:31:05.280>work <00:31:05.419>to <00:31:05.560>improve <00:31:05.700>all

627
00:31:07.600 --> 00:31:11.100
<00:31:07.600>the <00:31:07.774>ecosystem <00:31:07.949>around <00:31:08.125>that <00:31:08.300>for <00:31:08.475>example <00:31:08.649>recently <00:31:08.824>vs <00:31:09.000>code

628
00:31:10.100 --> 00:31:13.300
<00:31:10.100>the <00:31:10.300>people <00:31:10.500>from <00:31:10.699>BS <00:31:10.899>code <00:31:11.100>created <00:31:11.300>a <00:31:11.500>new

629
00:31:13.300 --> 00:31:16.700
<00:31:13.300>standard <00:31:13.440>that <00:31:13.580>is <00:31:13.720>now <00:31:13.860>accepted <00:31:14.000>into <00:31:14.139>python <00:31:14.280>that <00:31:14.419>allows <00:31:14.560>having <00:31:14.700>burial

630
00:31:16.700 --> 00:31:19.300
<00:31:16.700>to <00:31:16.816>completion <00:31:16.933>for <00:31:17.050>identic <00:31:17.166>models <00:31:17.283>and <00:31:17.400>things <00:31:17.516>like <00:31:17.633>that. <00:31:17.750>So <00:31:17.866>you <00:31:17.983>can <00:31:18.100>you

631
00:31:19.300 --> 00:31:22.300
<00:31:19.300>can <00:31:19.455>have <00:31:19.611>like <00:31:19.766>the <00:31:19.922>best <00:31:20.077>editor <00:31:20.233>support <00:31:20.388>with <00:31:20.544>these <00:31:20.700>things

632
00:31:22.300 --> 00:31:25.800
<00:31:22.300>and <00:31:22.455>those <00:31:22.611>are <00:31:22.766>now <00:31:22.922>becoming <00:31:23.077>standards <00:31:23.233>into <00:31:23.388>python <00:31:23.544>Itself <00:31:23.700>by

633
00:31:25.800 --> 00:31:28.400
<00:31:25.800>channel <00:31:26.033>has <00:31:26.266>integration <00:31:26.500>for <00:31:26.733>for <00:31:26.966>fast <00:31:27.200>API

634
00:31:28.400 --> 00:31:31.300
<00:31:28.400>directly <00:31:28.575>for <00:31:28.750>example <00:31:28.925>for <00:31:29.100>refactory <00:31:29.275>and <00:31:29.450>doing <00:31:29.625>some <00:31:29.800>things

635
00:31:31.300 --> 00:31:34.400
<00:31:31.300>that <00:31:31.440>there's <00:31:31.580>no <00:31:31.720>other <00:31:31.860>way <00:31:32.000>to <00:31:32.139>do <00:31:32.280>easily. <00:31:32.419>So <00:31:32.560>any <00:31:32.700>of

636
00:31:34.400 --> 00:31:37.000
<00:31:34.400>those <00:31:34.680>will <00:31:34.960>work <00:31:35.240>there <00:31:35.520>are <00:31:35.800>some

637
00:31:37.100 --> 00:31:40.400
<00:31:37.100>people <00:31:37.240>that <00:31:37.379>use <00:31:37.520>beam <00:31:37.659>I <00:31:37.800>tried <00:31:37.939>using <00:31:38.080>beam <00:31:38.219>but <00:31:38.360>then <00:31:38.500>I

638
00:31:40.400 --> 00:31:43.200
<00:31:40.400>couldn't <00:31:40.507>exit <00:31:40.615>I <00:31:40.723>had <00:31:40.830>to <00:31:40.938>restart <00:31:41.046>the <00:31:41.153>machine. <00:31:41.261>So <00:31:41.369>I <00:31:41.476>just <00:31:41.584>came <00:31:41.692>back <00:31:41.800>to

639
00:31:43.200 --> 00:31:46.200
<00:31:43.200>visual <00:31:43.340>studio <00:31:43.480>code. <00:31:43.620>But <00:31:43.760>yeah <00:31:43.900>for <00:31:44.040>all <00:31:44.180>of <00:31:44.320>these <00:31:44.460>you <00:31:44.600>can

640
00:31:46.200 --> 00:31:49.100
<00:31:46.200>you <00:31:46.293>can <00:31:46.386>have <00:31:46.480>very <00:31:46.573>good <00:31:46.666>support. <00:31:46.760>The <00:31:46.853>thing <00:31:46.946>is <00:31:47.040>that <00:31:47.133>fast <00:31:47.226>API <00:31:47.320>is <00:31:47.413>all <00:31:47.506>based <00:31:47.600>on

641
00:31:49.100 --> 00:31:52.400
<00:31:49.100>standard <00:31:49.333>python <00:31:49.566>standard <00:31:49.800>python <00:31:50.033>type <00:31:50.266>annotations. <00:31:50.500>You

642
00:31:52.400 --> 00:31:55.300
<00:31:52.400>never <00:31:52.600>have <00:31:52.800>any <00:31:53.000>type <00:31:53.200>of <00:31:53.400>a <00:31:53.600>syntax <00:31:53.800>inside.

643
00:31:55.600 --> 00:31:58.600
<00:31:55.600>A <00:31:55.879>string <00:31:56.159>like <00:31:56.439>almost <00:31:56.719>never <00:31:57.000>so

644
00:31:58.600 --> 00:32:01.500
<00:31:58.600>anything <00:31:58.949>that <00:31:59.300>supports <00:31:59.649>standard <00:32:00.000>python

645
00:32:01.500 --> 00:32:04.100
<00:32:01.500>will <00:32:01.733>support <00:32:01.966>your <00:32:02.200>workflow <00:32:02.433>with <00:32:02.666>fast <00:32:02.900>API.

646
00:32:04.500 --> 00:32:07.600
<00:32:04.500>Is <00:32:04.675>there <00:32:04.850>a <00:32:05.025>way <00:32:05.200>to <00:32:05.375>disable <00:32:05.550>the <00:32:05.725>automatic <00:32:05.900>serving

647
00:32:07.600 --> 00:32:08.300
<00:32:07.600>of <00:32:07.915>the <00:32:08.230>docs?

648
00:32:08.800 --> 00:32:10.900
<00:32:08.800>Can <00:32:09.000>you <00:32:09.200>generate <00:32:09.399>a <00:32:09.600>static <00:32:09.800>version <00:32:10.000>of <00:32:10.200>them?

649
00:32:11.600 --> 00:32:14.100
<00:32:11.600>Yes, <00:32:11.800>you <00:32:12.000>can <00:32:12.199>there's <00:32:12.399>a <00:32:12.600>parameter <00:32:12.800>when <00:32:13.000>you

650
00:32:14.100 --> 00:32:17.900
<00:32:14.100>create <00:32:14.255>a <00:32:14.411>fast <00:32:14.566>API <00:32:14.722>instance. <00:32:14.877>You <00:32:15.033>can <00:32:15.188>say <00:32:15.344>open <00:32:15.500>API

651
00:32:17.900 --> 00:32:20.900
<00:32:17.900>URL <00:32:18.100>equals <00:32:18.300>none. <00:32:18.500>That's <00:32:18.700>it. <00:32:18.900>And <00:32:19.100>that <00:32:19.300>disables

652
00:32:20.900 --> 00:32:26.000
<00:32:20.900>the <00:32:21.027>whole <00:32:21.154>open <00:32:21.281>API <00:32:21.409>that <00:32:21.536>this <00:32:21.663>level <00:32:21.790>documentation <00:32:21.918>that <00:32:22.045>I <00:32:22.172>automatic <00:32:22.300>documentation

653
00:32:25.300 --> 00:32:28.400
<00:32:25.300>is <00:32:25.533>all <00:32:25.766>generated <00:32:26.000>from <00:32:26.233>open <00:32:26.466>API. <00:32:26.700>Open

654
00:32:28.400 --> 00:32:31.400
<00:32:28.400>API <00:32:28.555>is <00:32:28.711>this <00:32:28.866>standard <00:32:29.022>and <00:32:29.177>the <00:32:29.333>way <00:32:29.488>that <00:32:29.644>the <00:32:29.800>system

655
00:32:31.400 --> 00:32:34.300
<00:32:31.400>that <00:32:31.516>works <00:32:31.633>is <00:32:31.750>that <00:32:31.866>is <00:32:31.983>just <00:32:32.100>a <00:32:32.216>huge <00:32:32.333>Json <00:32:32.450>that <00:32:32.566>defines <00:32:32.683>all <00:32:32.800>the

656
00:32:34.300 --> 00:32:37.500
<00:32:34.300>information <00:32:34.533>about <00:32:34.766>your <00:32:35.000>API, <00:32:35.233>please <00:32:35.466>documentation <00:32:35.700>sites

657
00:32:37.500 --> 00:32:40.700
<00:32:37.500>are <00:32:37.700>based <00:32:37.900>on <00:32:38.100>that <00:32:38.300>on <00:32:38.500>that <00:32:38.700>open <00:32:38.900>API

658
00:32:40.700 --> 00:32:43.200
<00:32:40.700>schema. <00:32:40.980>Hey, <00:32:41.260>the <00:32:41.540>current <00:32:41.820>ones <00:32:42.100>that

659
00:32:43.200 --> 00:32:46.100
<00:32:43.200>are <00:32:43.327>provided <00:32:43.454>by <00:32:43.581>iced <00:32:43.709>API. <00:32:43.836>I <00:32:43.963>showed <00:32:44.090>you <00:32:44.218>one <00:32:44.345>but <00:32:44.472>there <00:32:44.600>are

660
00:32:46.100 --> 00:32:49.200
<00:32:46.100>actually <00:32:46.207>two <00:32:46.315>including <00:32:46.423>fast <00:32:46.530>API <00:32:46.638>stronger <00:32:46.746>UI <00:32:46.853>and <00:32:46.961>the <00:32:47.069>other <00:32:47.176>one <00:32:47.284>is <00:32:47.392>real <00:32:47.500>quick.

661
00:32:49.200 --> 00:32:52.400
<00:32:49.200>Those <00:32:49.480>are <00:32:49.760>normally <00:32:50.040>generated <00:32:50.320>live <00:32:50.600>from

662
00:32:52.400 --> 00:32:56.000
<00:32:52.400>the <00:32:52.507>code, <00:32:52.615>but <00:32:52.723>you <00:32:52.830>can <00:32:52.938>also <00:32:53.046>generate <00:32:53.153>that <00:32:53.261>or <00:32:53.369>you <00:32:53.476>can <00:32:53.584>also <00:32:53.692>use <00:32:53.800>third-party

663
00:32:55.100 --> 00:32:58.700
<00:32:55.100>services <00:32:55.333>that <00:32:55.566>integrate <00:32:55.800>with <00:32:56.033>that <00:32:56.266>directly <00:32:56.500>and

664
00:32:58.700 --> 00:33:01.700
<00:32:58.700>that <00:32:58.933>just <00:32:59.166>generate <00:32:59.400>the <00:32:59.633>final <00:32:59.866>static <00:33:00.100>code

665
00:33:01.700 --> 00:33:02.800
<00:33:01.700>or <00:33:02.030>something <00:33:02.360>like <00:33:02.690>that.

666
00:33:03.900 --> 00:33:06.600
<00:33:03.900>Python <00:33:04.133>seems <00:33:04.366>to <00:33:04.600>be <00:33:04.833>proportionally <00:33:05.066>less <00:33:05.300>represented

667
00:33:06.600 --> 00:33:09.500
<00:33:06.600>here <00:33:06.800>than <00:33:07.000>in <00:33:07.199>the <00:33:07.399>world <00:33:07.600>from <00:33:07.800>your <00:33:08.000>point

668
00:33:09.500 --> 00:33:11.500
<00:33:09.500>of <00:33:09.780>view. <00:33:10.060>Is <00:33:10.340>it <00:33:10.620>this <00:33:10.900>conference?

669
00:33:12.600 --> 00:33:14.000
<00:33:12.600>Berlin <00:33:13.230>or <00:33:13.860>Germany

670
00:33:14.800 --> 00:33:17.400
<00:33:14.800>a <00:33:15.080>I <00:33:15.360>don't <00:33:15.639>know <00:33:15.919>because <00:33:16.200>this

671
00:33:17.400 --> 00:33:20.200
<00:33:17.400>conference <00:33:17.575>is <00:33:17.750>so <00:33:17.925>huge <00:33:18.100>but <00:33:18.275>I <00:33:18.450>have <00:33:18.625>seen <00:33:18.800>so

672
00:33:20.200 --> 00:33:23.200
<00:33:20.200>many <00:33:20.340>Java <00:33:20.480>developers <00:33:20.620>and <00:33:20.760>don't <00:33:20.900>know <00:33:21.040>developers <00:33:21.180>that <00:33:21.320>I <00:33:21.460>normally <00:33:21.600>don't

673
00:33:23.200 --> 00:33:26.600
<00:33:23.200>don't <00:33:23.355>talk <00:33:23.511>to <00:33:23.666>so <00:33:23.822>it's <00:33:23.977>a <00:33:24.133>I <00:33:24.288>guess <00:33:24.444>it's <00:33:24.600>also

674
00:33:26.600 --> 00:33:28.700
<00:33:26.600>like <00:33:26.833>probably <00:33:27.066>a <00:33:27.300>different <00:33:27.533>type <00:33:27.766>of <00:33:28.000>conference.

675
00:33:29.300 --> 00:33:32.600
<00:33:29.300>I <00:33:29.475>don't <00:33:29.649>think <00:33:29.825>it's <00:33:30.000>necessarily <00:33:30.175>Germany <00:33:30.350>because <00:33:30.524>like <00:33:30.700>by

676
00:33:32.600 --> 00:33:35.400
<00:33:32.600>the <00:33:33.066>latest <00:33:33.533>rankings <00:33:34.000>of

677
00:33:35.400 --> 00:33:38.300
<00:33:35.400>languages <00:33:35.507>and <00:33:35.615>like <00:33:35.723>the <00:33:35.830>trb <00:33:35.938>in <00:33:36.046>this <00:33:36.153>and <00:33:36.261>like <00:33:36.369>I <00:33:36.476>don't <00:33:36.584>know. <00:33:36.692>What <00:33:36.800>are

678
00:33:38.300 --> 00:33:41.300
<00:33:38.300>the <00:33:38.500>others <00:33:38.700>pythony's <00:33:38.899>the <00:33:39.100>most <00:33:39.300>popular <00:33:39.500>programming <00:33:39.700>language.

679
00:33:41.300 --> 00:33:44.500
<00:33:41.300>So <00:33:41.455>I <00:33:41.611>don't <00:33:41.766>think <00:33:41.922>it's <00:33:42.077>necessarily <00:33:42.233>unpopular. <00:33:42.388>But <00:33:42.544>like <00:33:42.700>I

680
00:33:44.500 --> 00:33:47.300
<00:33:44.500>guess <00:33:44.627>it's <00:33:44.754>all <00:33:44.881>that <00:33:45.009>this <00:33:45.136>conference <00:33:45.263>is <00:33:45.390>so <00:33:45.518>big <00:33:45.645>that <00:33:45.772>there <00:33:45.900>are

681
00:33:47.300 --> 00:33:50.300
<00:33:47.300>so <00:33:47.440>many <00:33:47.580>languages <00:33:47.720>so <00:33:47.860>many <00:33:48.000>tools <00:33:48.139>together <00:33:48.280>that <00:33:48.419>like <00:33:48.560>we <00:33:48.700>can

682
00:33:50.300 --> 00:33:53.400
<00:33:50.300>just <00:33:50.455>like <00:33:50.611>share <00:33:50.766>with <00:33:50.922>each <00:33:51.077>other. <00:33:51.233>I <00:33:51.388>guess. <00:33:51.544>That's <00:33:51.700>probably

683
00:33:53.400 --> 00:33:54.100
<00:33:53.400>what's <00:33:54.030>happening.

684
00:33:54.800 --> 00:33:57.200
<00:33:54.800>Why <00:33:55.000>does <00:33:55.200>it <00:33:55.399>call <00:33:55.600>fast <00:33:55.800>API <00:33:56.000>because <00:33:56.200>it

685
00:33:57.200 --> 00:33:59.000
<00:33:57.200>is <00:33:57.400>fast <00:33:57.600>to <00:33:57.800>run <00:33:58.000>or <00:33:58.200>fast <00:33:58.400>to <00:33:58.600>create.

686
00:33:59.500 --> 00:34:02.300
<00:33:59.500>Both <00:33:59.700>it's <00:33:59.900>fast <00:34:00.100>to <00:34:00.300>run <00:34:00.500>the <00:34:00.700>code <00:34:00.900>will

687
00:34:02.300 --> 00:34:05.200
<00:34:02.300>run <00:34:02.455>fast. <00:34:02.611>You <00:34:02.766>will <00:34:02.922>have <00:34:03.077>very <00:34:03.233>high <00:34:03.388>performance <00:34:03.544>in <00:34:03.700>terms

688
00:34:05.200 --> 00:34:08.500
<00:34:05.200>of <00:34:05.340>throughputs. <00:34:05.480>And <00:34:05.620>it's <00:34:05.760>also <00:34:05.900>very <00:34:06.040>fast <00:34:06.180>to <00:34:06.320>create <00:34:06.460>applications <00:34:06.600>with

689
00:34:08.500 --> 00:34:11.200
<00:34:08.500>it. <00:34:08.616>That's <00:34:08.733>one <00:34:08.850>of <00:34:08.966>the <00:34:09.083>main <00:34:09.199>points <00:34:09.316>that <00:34:09.433>you <00:34:09.550>can <00:34:09.666>iterate <00:34:09.783>very <00:34:09.900>fast

690
00:34:11.200 --> 00:34:15.800
<00:34:11.199>and <00:34:11.375>you <00:34:11.549>can <00:34:11.725>have <00:34:11.899>called <00:34:12.074>a <00:34:12.250>book <00:34:12.424>free <00:34:12.600>code

691
00:34:14.800 --> 00:34:17.600
<00:34:14.800>very <00:34:15.266>easily <00:34:15.733>just <00:34:16.200>because

692
00:34:17.600 --> 00:34:20.300
<00:34:17.600>a <00:34:17.799>lot <00:34:18.000>of <00:34:18.199>those <00:34:18.400>errors <00:34:18.600>are <00:34:18.799>detected <00:34:19.000>by

693
00:34:20.300 --> 00:34:21.700
<00:34:20.300>the <00:34:20.552>editor <00:34:20.804>while <00:34:21.056>you <00:34:21.308>are <00:34:21.560>coding.

694
00:34:22.900 --> 00:34:25.400
<00:34:22.900>Do <00:34:23.250>you <00:34:23.600>know <00:34:23.950>do <00:34:24.300>you

695
00:34:25.400 --> 00:34:28.100
<00:34:25.400>know <00:34:25.633>how <00:34:25.866>fast <00:34:26.100>API <00:34:26.333>compares <00:34:26.566>speedwise <00:34:26.800>to

696
00:34:28.100 --> 00:34:30.800
<00:34:28.100>EG <00:34:28.566>flask <00:34:29.033>with <00:34:29.500>unicorn?

697
00:34:32.200 --> 00:34:35.200
<00:34:32.199>Yes <00:34:32.399>in <00:34:32.600>that <00:34:32.799>Benchmark <00:34:33.000>that <00:34:33.199>I <00:34:33.399>was <00:34:33.600>showing

698
00:34:35.200 --> 00:34:38.200
<00:34:35.199>a <00:34:35.327>fast <00:34:35.454>API <00:34:35.581>is <00:34:35.709>like <00:34:35.836>one <00:34:35.963>of <00:34:36.090>the <00:34:36.218>top <00:34:36.345>things <00:34:36.472>that <00:34:36.600>you

699
00:34:38.200 --> 00:34:41.500
<00:34:38.199>can <00:34:38.327>get <00:34:38.454>plus <00:34:38.581>kids <00:34:38.709>a <00:34:38.836>little <00:34:38.963>bit <00:34:39.090>below. <00:34:39.218>This <00:34:39.345>is <00:34:39.472>especially <00:34:39.600>because

700
00:34:41.500 --> 00:34:44.500
<00:34:41.500>flask <00:34:41.675>and <00:34:41.850>jungle. <00:34:42.025>These <00:34:42.199>were <00:34:42.375>made <00:34:42.550>when <00:34:42.725>python <00:34:42.900>didn't

701
00:34:44.500 --> 00:34:47.300
<00:34:44.500>even <00:34:44.639>have <00:34:44.780>async <00:34:44.920>and <00:34:45.060>weight. <00:34:45.199>So <00:34:45.340>they <00:34:45.480>cannot <00:34:45.620>take <00:34:45.760>advantage <00:34:45.900>of

702
00:34:47.300 --> 00:34:51.000
<00:34:47.300>all <00:34:47.440>those <00:34:47.580>things <00:34:47.720>because <00:34:47.860>they <00:34:48.000>were <00:34:48.140>they <00:34:48.280>were <00:34:48.420>designed <00:34:48.560>way <00:34:48.700>way

703
00:34:50.100 --> 00:34:53.400
<00:34:50.100>back. <00:34:50.275>They <00:34:50.449>didn't <00:34:50.625>have <00:34:50.799>a <00:34:50.975>way <00:34:51.150>to <00:34:51.324>explore <00:34:51.500>these

704
00:34:53.400 --> 00:34:56.300
<00:34:53.400>things <00:34:53.555>first <00:34:53.711>API <00:34:53.866>a <00:34:54.022>learned <00:34:54.177>a <00:34:54.333>lot <00:34:54.488>of <00:34:54.644>things <00:34:54.800>from

705
00:34:56.300 --> 00:35:00.100
<00:34:56.300>all <00:34:56.427>these <00:34:56.554>previous <00:34:56.681>work <00:34:56.809>and <00:34:56.936>all <00:34:57.063>these <00:34:57.190>previous <00:34:57.318>Frameworks <00:34:57.445>and <00:34:57.572>Incorporated <00:34:57.700>a

706
00:34:59.100 --> 00:35:02.800
<00:34:59.100>lot <00:34:59.333>of <00:34:59.566>their <00:34:59.799>ideas <00:35:00.033>a <00:35:00.266>but <00:35:00.500>then

707
00:35:02.800 --> 00:35:06.500
<00:35:02.800>like <00:35:02.940>it <00:35:03.080>also <00:35:03.220>has <00:35:03.360>like <00:35:03.500>these <00:35:03.640>advantages <00:35:03.780>of <00:35:03.920>new <00:35:04.060>ideas <00:35:04.200>in

708
00:35:06.500 --> 00:35:08.600
<00:35:06.500>Python <00:35:06.675>that <00:35:06.850>allow <00:35:07.025>it <00:35:07.200>to <00:35:07.375>have <00:35:07.550>very <00:35:07.725>high <00:35:07.900>performance.

709
00:35:09.700 --> 00:35:13.100
<00:35:09.700>Which <00:35:09.980>web <00:35:10.259>which <00:35:10.540>web <00:35:10.819>framework <00:35:11.100>does

710
00:35:12.100 --> 00:35:15.200
<00:35:12.100>fast <00:35:12.450>API <00:35:12.799>use <00:35:13.150>as <00:35:13.500>a

711
00:35:15.200 --> 00:35:18.300
<00:35:15.200>backend <00:35:15.433>flask. <00:35:15.666>If <00:35:15.899>not, <00:35:16.133>is <00:35:16.366>it <00:35:16.600>possible

712
00:35:18.300 --> 00:35:20.100
<00:35:18.300>to <00:35:18.533>combine <00:35:18.766>this <00:35:19.000>with <00:35:19.233>a <00:35:19.466>flask <00:35:19.700>cap?

713
00:35:20.500 --> 00:35:23.700
<00:35:20.500>So <00:35:20.640>a <00:35:20.780>fast <00:35:20.920>API <00:35:21.060>is <00:35:21.200>built <00:35:21.340>on <00:35:21.480>top <00:35:21.620>of <00:35:21.760>two <00:35:21.900>main

714
00:35:23.700 --> 00:35:26.500
<00:35:23.700>libraries <00:35:23.827>one <00:35:23.954>is <00:35:24.081>pedantic <00:35:24.209>that <00:35:24.336>I <00:35:24.463>show <00:35:24.590>you <00:35:24.718>for <00:35:24.845>doing <00:35:24.972>data <00:35:25.100>validation

715
00:35:26.500 --> 00:35:29.900
<00:35:26.500>civilization <00:35:26.655>and <00:35:26.811>documentation. <00:35:26.966>The <00:35:27.122>other <00:35:27.277>one <00:35:27.433>is <00:35:27.588>started <00:35:27.744>Starlet <00:35:27.900>is

716
00:35:29.900 --> 00:35:32.600
<00:35:29.900>the <00:35:30.075>thing <00:35:30.250>that <00:35:30.425>does <00:35:30.600>all <00:35:30.775>the <00:35:30.950>the <00:35:31.125>web <00:35:31.300>Parts

717
00:35:32.600 --> 00:35:36.000
<00:35:32.600>underneath <00:35:32.775>when <00:35:32.950>I <00:35:33.125>show <00:35:33.299>you <00:35:33.475>the <00:35:33.650>Benchmark <00:35:33.825>a <00:35:34.000>Starlet

718
00:35:35.200 --> 00:35:38.200
<00:35:35.200>was <00:35:35.316>the <00:35:35.433>thing <00:35:35.549>that <00:35:35.666>was <00:35:35.783>on <00:35:35.899>top <00:35:36.016>of <00:35:36.133>fast <00:35:36.250>API <00:35:36.366>that <00:35:36.483>it <00:35:36.600>has

719
00:35:38.200 --> 00:35:41.200
<00:35:38.200>to <00:35:38.339>be <00:35:38.480>on <00:35:38.620>top <00:35:38.759>because <00:35:38.899>first <00:35:39.040>API <00:35:39.180>just <00:35:39.319>adds <00:35:39.460>stuff <00:35:39.600>to

720
00:35:41.200 --> 00:35:44.800
<00:35:41.200>Starlet <00:35:41.375>a <00:35:41.549>Starlet <00:35:41.725>was <00:35:41.899>created <00:35:42.075>by <00:35:42.250>the <00:35:42.424>same <00:35:42.600>author

721
00:35:44.800 --> 00:35:47.200
<00:35:44.800>of <00:35:45.000>uvicorn <00:35:45.200>which <00:35:45.400>is <00:35:45.600>the <00:35:45.800>service <00:35:46.000>that <00:35:46.200>runs

722
00:35:47.200 --> 00:35:50.000
<00:35:47.200>fast <00:35:47.399>API, <00:35:47.600>which <00:35:47.799>is <00:35:48.000>the <00:35:48.200>same <00:35:48.399>outer <00:35:48.600>that

723
00:35:50.100 --> 00:35:53.900
<00:35:50.100>is <00:35:50.240>creating <00:35:50.380>httpx, <00:35:50.520>which <00:35:50.660>is <00:35:50.799>the <00:35:50.940>next <00:35:51.080>version <00:35:51.220>of <00:35:51.360>requests <00:35:51.500>sort

724
00:35:53.900 --> 00:35:56.400
<00:35:53.900>of <00:35:54.075>the <00:35:54.250>Next <00:35:54.425>Generation <00:35:54.600>version <00:35:54.775>of <00:35:54.950>requests. <00:35:55.125>It's <00:35:55.300>also

725
00:35:56.400 --> 00:35:59.400
<00:35:56.400>the <00:35:56.540>same <00:35:56.680>after <00:35:56.820>of <00:35:56.960>Django <00:35:57.100>rest <00:35:57.240>framework. <00:35:57.380>So <00:35:57.520>there's <00:35:57.660>a <00:35:57.800>lot

726
00:35:59.400 --> 00:36:02.200
<00:35:59.400>of <00:35:59.680>knowledge <00:35:59.960>Innovative <00:36:00.240>in <00:36:00.520>this <00:36:00.800>project

727
00:36:02.200 --> 00:36:05.000
<00:36:02.200>from <00:36:02.355>like <00:36:02.511>many <00:36:02.666>different <00:36:02.822>projects <00:36:02.977>and <00:36:03.133>I <00:36:03.288>work <00:36:03.444>a <00:36:03.600>lot

728
00:36:05.200 --> 00:36:08.600
<00:36:05.200>of <00:36:05.399>work <00:36:05.600>from <00:36:05.799>many <00:36:06.000>other <00:36:06.200>developers <00:36:06.399>before <00:36:06.600>that

729
00:36:08.600 --> 00:36:11.600
<00:36:08.600>is <00:36:08.755>just <00:36:08.911>incorporated <00:36:09.066>into <00:36:09.222>that. <00:36:09.377>But <00:36:09.533>the <00:36:09.688>question <00:36:09.844>it <00:36:10.000>runs

730
00:36:11.600 --> 00:36:15.000
<00:36:11.600>on <00:36:11.833>top <00:36:12.066>of <00:36:12.299>Starlet. <00:36:12.533>Now <00:36:12.766>first <00:36:13.000>API

731
00:36:14.200 --> 00:36:17.100
<00:36:14.200>uses <00:36:14.433>a <00:36:14.666>new <00:36:14.899>standard <00:36:15.133>before <00:36:15.366>there <00:36:15.600>was

732
00:36:17.100 --> 00:36:19.900
<00:36:17.100>the <00:36:17.275>standard <00:36:17.450>called <00:36:17.625>whiskey <00:36:17.799>and <00:36:17.975>this <00:36:18.150>is <00:36:18.325>standard <00:36:18.500>whiskey.

733
00:36:20.500 --> 00:36:23.500
<00:36:20.500>Didn't <00:36:20.607>have <00:36:20.715>support <00:36:20.823>for <00:36:20.930>async <00:36:21.038>and <00:36:21.146>await. <00:36:21.253>There's <00:36:21.361>no <00:36:21.469>way <00:36:21.576>to <00:36:21.684>do <00:36:21.792>web <00:36:21.900>sockets

734
00:36:23.500 --> 00:36:26.500
<00:36:23.500>with <00:36:23.700>that. <00:36:23.900>That's <00:36:24.100>that's <00:36:24.300>under <00:36:24.500>is <00:36:24.700>what <00:36:24.900>flask

735
00:36:26.500 --> 00:36:29.300
<00:36:26.500>and <00:36:26.655>Django <00:36:26.811>are <00:36:26.966>built <00:36:27.122>on <00:36:27.277>top. <00:36:27.433>Then <00:36:27.588>they <00:36:27.744>created <00:36:27.900>these

736
00:36:29.300 --> 00:36:32.100
<00:36:29.300>new <00:36:29.440>standard <00:36:29.580>called <00:36:29.720>asgi, <00:36:29.860>which <00:36:30.000>is <00:36:30.140>the <00:36:30.280>async <00:36:30.420>version <00:36:30.560>of <00:36:30.700>that

737
00:36:32.100 --> 00:36:35.000
<00:36:32.100>first <00:36:32.227>API <00:36:32.354>is <00:36:32.481>built <00:36:32.609>on <00:36:32.736>top <00:36:32.863>of <00:36:32.990>that. <00:36:33.118>So <00:36:33.245>it's <00:36:33.372>kind <00:36:33.500>of

738
00:36:35.300 --> 00:36:38.500
<00:36:35.300>a <00:36:35.455>different <00:36:35.611>standard <00:36:35.766>nevertheless. <00:36:35.922>You <00:36:36.077>can <00:36:36.233>mount <00:36:36.388>a <00:36:36.544>flask <00:36:36.700>application

739
00:36:38.500 --> 00:36:40.600
<00:36:38.500>inside <00:36:38.780>of <00:36:39.060>a <00:36:39.340>fast <00:36:39.620>API <00:36:39.900>application.

740
00:36:41.400 --> 00:36:44.500
<00:36:41.400>Or <00:36:41.507>you <00:36:41.615>can <00:36:41.723>share <00:36:41.830>the <00:36:41.938>code <00:36:42.046>with <00:36:42.153>both <00:36:42.261>and <00:36:42.369>you <00:36:42.476>can <00:36:42.584>run <00:36:42.692>both <00:36:42.800>applications

741
00:36:44.500 --> 00:36:48.000
<00:36:44.500>at <00:36:44.600>the <00:36:44.700>same <00:36:44.800>time <00:36:44.900>or <00:36:45.000>you <00:36:45.100>can <00:36:45.200>do <00:36:45.300>a <00:36:45.400>bunch <00:36:45.500>of <00:36:45.600>things <00:36:45.700>to <00:36:45.800>yeah <00:36:45.900>to

742
00:36:47.200 --> 00:36:50.400
<00:36:47.200>facilitate <00:36:47.549>running <00:36:47.899>the <00:36:48.250>two <00:36:48.600>things

743
00:36:50.400 --> 00:36:53.100
<00:36:50.400>at <00:36:50.527>the <00:36:50.654>same <00:36:50.781>time <00:36:50.909>sharing <00:36:51.036>the <00:36:51.163>code <00:36:51.290>or <00:36:51.418>migrating <00:36:51.545>from <00:36:51.672>one <00:36:51.800>to

744
00:36:53.100 --> 00:36:56.300
<00:36:53.100>another <00:36:53.227>and <00:36:53.354>yeah, <00:36:53.481>like <00:36:53.609>all <00:36:53.736>those <00:36:53.863>things. <00:36:53.990>I <00:36:54.118>have <00:36:54.245>done <00:36:54.372>all <00:36:54.500>those

745
00:36:56.300 --> 00:36:56.800
<00:36:56.300>so <00:36:56.750>yeah.

746
00:36:57.700 --> 00:37:00.900
<00:36:57.700>How <00:36:57.980>can <00:36:58.259>you <00:36:58.540>handle <00:36:58.819>sub-resources <00:36:59.100>in

747
00:37:00.900 --> 00:37:03.300
<00:37:00.900>fast <00:37:01.366>API <00:37:01.833>sub <00:37:02.300>resources?

748
00:37:04.300 --> 00:37:07.400
<00:37:04.300>I'm <00:37:04.500>not <00:37:04.700>sure <00:37:04.900>what <00:37:05.100>server <00:37:05.300>resources <00:37:05.500>will <00:37:05.700>mean.

749
00:37:08.200 --> 00:37:10.800
<00:37:08.200>Is <00:37:08.375>the <00:37:08.549>one <00:37:08.725>person <00:37:08.899>that <00:37:09.075>asked <00:37:09.250>that <00:37:09.424>question <00:37:09.600>around?

750
00:37:11.400 --> 00:37:14.400
<00:37:11.400>Or <00:37:11.575>maybe <00:37:11.750>you <00:37:11.925>can <00:37:12.100>catch <00:37:12.275>me <00:37:12.450>later <00:37:12.625>and <00:37:12.800>like

751
00:37:14.400 --> 00:37:17.200
<00:37:14.400>we <00:37:14.507>can <00:37:14.615>we <00:37:14.723>can <00:37:14.830>we <00:37:14.938>can <00:37:15.046>discuss <00:37:15.153>because <00:37:15.261>I <00:37:15.369>don't <00:37:15.476>know. <00:37:15.584>What <00:37:15.692>is <00:37:15.800>a

752
00:37:17.200 --> 00:37:17.900
<00:37:17.200>resources. <00:37:17.410>I'm <00:37:17.620>not <00:37:17.830>sure.

753
00:37:18.700 --> 00:37:21.800
<00:37:18.700>Can <00:37:18.980>you <00:37:19.259>identify <00:37:19.540>similarities <00:37:19.819>and <00:37:20.100>differences

754
00:37:21.800 --> 00:37:22.500
<00:37:21.800>with <00:37:22.430>nest?

755
00:37:23.100 --> 00:37:26.300
<00:37:23.100>Yes, <00:37:23.333>I <00:37:23.566>missed <00:37:23.799>an <00:37:24.033>sjs <00:37:24.266>is <00:37:24.500>a

756
00:37:26.300 --> 00:37:29.400
<00:37:26.300>typescript <00:37:26.475>framework <00:37:26.650>that <00:37:26.825>has <00:37:27.000>a <00:37:27.175>bunch <00:37:27.350>of <00:37:27.525>similar <00:37:27.700>ideas.

757
00:37:29.400 --> 00:37:32.200
<00:37:29.400>In <00:37:29.680>fact <00:37:29.960>an <00:37:30.240>essays <00:37:30.520>inspired <00:37:30.800>a

758
00:37:32.200 --> 00:37:35.000
<00:37:32.200>bunch <00:37:32.282>of <00:37:32.364>the <00:37:32.447>things <00:37:32.529>in <00:37:32.611>fast <00:37:32.694>API. <00:37:32.776>If <00:37:32.858>you <00:37:32.941>go <00:37:33.023>to <00:37:33.105>the <00:37:33.188>first <00:37:33.270>API <00:37:33.352>documentation, <00:37:33.435>you <00:37:33.517>can <00:37:33.600>see

759
00:37:35.500 --> 00:37:38.500
<00:37:35.500>in <00:37:35.733>the <00:37:35.966>Alternatives <00:37:36.200>and <00:37:36.433>comparisons <00:37:36.666>and <00:37:36.900>inspiration

760
00:37:38.500 --> 00:37:41.600
<00:37:38.500>section. <00:37:38.675>There's <00:37:38.850>a <00:37:39.025>lot <00:37:39.200>of <00:37:39.375>information <00:37:39.550>of <00:37:39.725>all <00:37:39.900>the

761
00:37:41.600 --> 00:37:44.500
<00:37:41.600>tools <00:37:41.799>that <00:37:42.000>inspired <00:37:42.200>different <00:37:42.400>parts <00:37:42.600>of <00:37:42.799>a <00:37:43.000>fast

762
00:37:44.500 --> 00:37:48.000
<00:37:44.500>API. <00:37:44.675>I <00:37:44.850>was <00:37:45.025>about <00:37:45.200>to <00:37:45.375>switch <00:37:45.550>to <00:37:45.725>typescript <00:37:45.900>just

763
00:37:47.200 --> 00:37:50.300
<00:37:47.200>to <00:37:47.375>be <00:37:47.549>able <00:37:47.725>to <00:37:47.899>use <00:37:48.075>an <00:37:48.250>sjs. <00:37:48.424>But <00:37:48.600>then

764
00:37:50.300 --> 00:37:53.300
<00:37:50.300>like <00:37:50.416>there <00:37:50.533>were <00:37:50.650>some <00:37:50.766>couple <00:37:50.883>of <00:37:51.000>features <00:37:51.116>that <00:37:51.233>I <00:37:51.350>needed <00:37:51.466>that <00:37:51.583>were <00:37:51.700>not

765
00:37:53.300 --> 00:37:56.100
<00:37:53.300>supported <00:37:53.416>and <00:37:53.533>then <00:37:53.650>I <00:37:53.766>needed <00:37:53.883>to <00:37:54.000>be <00:37:54.116>able <00:37:54.233>to <00:37:54.350>have <00:37:54.466>them <00:37:54.583>so <00:37:54.700>I

766
00:37:56.100 --> 00:37:59.300
<00:37:56.100>ended <00:37:56.227>up <00:37:56.354>just <00:37:56.481>like <00:37:56.609>building <00:37:56.736>first <00:37:56.863>API <00:37:56.990>for <00:37:57.118>example <00:37:57.245>deeply <00:37:57.372>nested <00:37:57.500>data

767
00:37:59.300 --> 00:38:02.200
<00:37:59.300>structures <00:37:59.533>were <00:37:59.766>not <00:38:00.000>supported. <00:38:00.233>So <00:38:00.466>I <00:38:00.700>ended

768
00:38:02.200 --> 00:38:06.200
<00:38:02.200>up <00:38:02.307>just <00:38:02.415>using <00:38:02.523>this <00:38:02.630>but <00:38:02.738>you <00:38:02.846>could <00:38:02.953>say <00:38:03.061>that <00:38:03.169>is <00:38:03.276>kind <00:38:03.384>of <00:38:03.492>similar. <00:38:03.600>It's

769
00:38:05.200 --> 00:38:08.500
<00:38:05.200>a <00:38:05.399>similar <00:38:05.600>spirit <00:38:05.799>and <00:38:06.000>like <00:38:06.200>like <00:38:06.399>similar <00:38:06.600>things.

770
00:38:08.500 --> 00:38:12.500
<00:38:08.500>The <00:38:08.675>other <00:38:08.850>thing <00:38:09.025>is <00:38:09.200>that <00:38:09.375>in <00:38:09.550>typescript, <00:38:09.725>the <00:38:09.900>type

771
00:38:12.500 --> 00:38:15.500
<00:38:12.500>system <00:38:12.700>is <00:38:12.900>probably <00:38:13.100>the <00:38:13.300>best <00:38:13.500>type <00:38:13.700>system <00:38:13.900>available.

772
00:38:15.500 --> 00:38:18.400
<00:38:15.500>Hey, <00:38:15.733>you <00:38:15.966>can <00:38:16.200>declare <00:38:16.433>very <00:38:16.666>complex <00:38:16.900>things

773
00:38:18.400 --> 00:38:21.300
<00:38:18.400>with <00:38:18.540>that <00:38:18.680>but <00:38:18.820>you <00:38:18.960>don't <00:38:19.100>have <00:38:19.240>access <00:38:19.380>to <00:38:19.520>that <00:38:19.660>those <00:38:19.800>types

774
00:38:21.300 --> 00:38:22.600
<00:38:21.300>of <00:38:21.592>running <00:38:21.885>which <00:38:22.177>means <00:38:22.470>that

775
00:38:23.400 --> 00:38:26.800
<00:38:23.400>Energy. <00:38:23.575>Yes <00:38:23.750>a <00:38:23.925>cannot <00:38:24.100>easily <00:38:24.275>use <00:38:24.450>the <00:38:24.625>information. <00:38:24.800>Hey,

776
00:38:26.800 --> 00:38:29.200
<00:38:26.800>this <00:38:26.940>is <00:38:27.080>a <00:38:27.220>string <00:38:27.360>to <00:38:27.500>validate <00:38:27.640>that <00:38:27.780>it <00:38:27.920>is <00:38:28.060>a <00:38:28.200>string.

777
00:38:29.200 --> 00:38:32.200
<00:38:29.200>You <00:38:29.307>will <00:38:29.415>normally <00:38:29.523>have <00:38:29.630>to <00:38:29.738>decorate <00:38:29.846>the <00:38:29.953>thing <00:38:30.061>and <00:38:30.169>say <00:38:30.276>again, <00:38:30.384>this <00:38:30.492>is <00:38:30.600>a

778
00:38:32.200 --> 00:38:35.100
<00:38:32.200>string <00:38:32.293>so <00:38:32.386>you <00:38:32.480>have <00:38:32.573>to <00:38:32.666>put <00:38:32.759>information <00:38:32.853>in <00:38:32.946>two <00:38:33.040>places <00:38:33.133>for <00:38:33.226>the <00:38:33.319>type <00:38:33.413>and <00:38:33.506>for <00:38:33.600>the

779
00:38:35.100 --> 00:38:38.400
<00:38:35.100>validation <00:38:35.216>in <00:38:35.333>fast <00:38:35.450>API <00:38:35.566>because <00:38:35.683>in <00:38:35.799>Python <00:38:35.916>we <00:38:36.033>can <00:38:36.150>have <00:38:36.266>access <00:38:36.383>to <00:38:36.500>this

780
00:38:38.400 --> 00:38:41.800
<00:38:38.400>type <00:38:38.540>annotations. <00:38:38.680>You <00:38:38.820>just <00:38:38.960>have <00:38:39.100>to <00:38:39.240>do <00:38:39.380>it. <00:38:39.520>Once <00:38:39.660>the <00:38:39.800>same

781
00:38:41.800 --> 00:38:44.300
<00:38:41.800>that <00:38:41.927>you <00:38:42.054>will <00:38:42.181>do <00:38:42.309>just <00:38:42.436>to <00:38:42.563>have <00:38:42.690>proper <00:38:42.818>way <00:38:42.945>to <00:38:43.072>completion <00:38:43.200>and

782
00:38:44.300 --> 00:38:47.500
<00:38:44.300>in <00:38:44.455>errors <00:38:44.611>and <00:38:44.766>then <00:38:44.922>have <00:38:45.077>like <00:38:45.233>this <00:38:45.388>extra <00:38:45.544>features, <00:38:45.700>but

783
00:38:47.500 --> 00:38:50.800
<00:38:47.500>you <00:38:47.675>will <00:38:47.850>say <00:38:48.025>that <00:38:48.200>those <00:38:48.375>are <00:38:48.550>quite <00:38:48.725>comparable <00:38:48.900>one

784
00:38:50.800 --> 00:38:52.400
<00:38:50.800>for <00:38:51.080>typescript <00:38:51.360>and <00:38:51.640>work <00:38:51.920>for <00:38:52.200>python.

785
00:38:53.200 --> 00:38:56.400
<00:38:53.200>This <00:38:53.355>is <00:38:53.511>a <00:38:53.666>beautifully <00:38:53.822>framed <00:38:53.977>question. <00:38:54.133>What <00:38:54.288>is <00:38:54.444>the <00:38:54.600>secret

786
00:38:56.400 --> 00:39:00.900
<00:38:56.400>sauce <00:38:56.555>to <00:38:56.711>create <00:38:56.866>such <00:38:57.022>a <00:38:57.177>beautiful <00:38:57.333>framework <00:38:57.488>in <00:38:57.644>Python? <00:38:57.800>Thank

787
00:38:59.900 --> 00:39:02.200
<00:38:59.900>you <00:39:00.180>for <00:39:00.460>that <00:39:00.740>question. <00:39:01.020>I <00:39:01.300>feel

788
00:39:02.200 --> 00:39:06.000
<00:39:02.200>nothing. <00:39:02.399>So <00:39:02.600>a <00:39:02.799>I <00:39:03.000>think <00:39:03.200>that <00:39:03.399>the <00:39:03.600>main

789
00:39:05.100 --> 00:39:08.300
<00:39:05.100>thing <00:39:05.299>is <00:39:05.500>is <00:39:05.700>build <00:39:05.900>on <00:39:06.100>top <00:39:06.299>of <00:39:06.500>the

790
00:39:08.300 --> 00:39:11.100
<00:39:08.300>learnings <00:39:08.475>from <00:39:08.650>many <00:39:08.825>other <00:39:09.000>Frameworks. <00:39:09.175>So <00:39:09.350>it's <00:39:09.525>built <00:39:09.700>on

791
00:39:11.100 --> 00:39:14.600
<00:39:11.100>top <00:39:11.200>of <00:39:11.299>giants <00:39:11.400>of <00:39:11.500>like <00:39:11.600>all <00:39:11.700>the <00:39:11.799>people <00:39:11.900>that <00:39:12.000>came <00:39:12.100>before <00:39:12.200>and <00:39:12.299>that <00:39:12.400>build <00:39:12.500>amazing

792
00:39:14.600 --> 00:39:17.400
<00:39:14.600>things <00:39:14.775>and <00:39:14.950>that <00:39:15.125>allows <00:39:15.299>us <00:39:15.475>to <00:39:15.650>use <00:39:15.825>and <00:39:16.000>create

793
00:39:17.400 --> 00:39:20.400
<00:39:17.400>all <00:39:17.540>these <00:39:17.680>great <00:39:17.820>application <00:39:17.960>and <00:39:18.100>I <00:39:18.240>was <00:39:18.380>this <00:39:18.520>great <00:39:18.660>applications <00:39:18.800>and

794
00:39:20.400 --> 00:39:23.400
<00:39:20.400>I <00:39:20.540>was <00:39:20.680>just <00:39:20.820>trying <00:39:20.960>to <00:39:21.100>mix <00:39:21.240>and <00:39:21.380>combine <00:39:21.520>all <00:39:21.660>these <00:39:21.800>features

795
00:39:23.400 --> 00:39:26.500
<00:39:23.400>and <00:39:23.540>these <00:39:23.680>ideas <00:39:23.820>that <00:39:23.960>I <00:39:24.100>was <00:39:24.240>learning <00:39:24.380>from <00:39:24.520>different <00:39:24.660>Frameworks <00:39:24.800>and

796
00:39:26.500 --> 00:39:29.100
<00:39:26.500>even <00:39:26.655>different <00:39:26.811>languages <00:39:26.966>and <00:39:27.122>even <00:39:27.277>from <00:39:27.433>front <00:39:27.588>and <00:39:27.744>for <00:39:27.900>example

797
00:39:29.100 --> 00:39:33.100
<00:39:29.100>that <00:39:29.200>use <00:39:29.299>a <00:39:29.400>lot <00:39:29.500>of <00:39:29.600>dependency <00:39:29.700>injection. <00:39:29.799>So <00:39:29.900>I <00:39:30.000>wanted <00:39:30.100>to <00:39:30.200>bring <00:39:30.299>that <00:39:30.400>to <00:39:30.500>backend.

798
00:39:32.100 --> 00:39:35.100
<00:39:32.100>It's <00:39:32.566>just <00:39:33.033>built <00:39:33.500>on

799
00:39:35.100 --> 00:39:38.600
<00:39:35.100>top <00:39:35.207>of <00:39:35.315>all <00:39:35.423>these <00:39:35.530>learning <00:39:35.638>and <00:39:35.746>like <00:39:35.853>all <00:39:35.961>these <00:39:36.069>all <00:39:36.176>these <00:39:36.284>stuff. <00:39:36.392>I <00:39:36.500>also

800
00:39:38.600 --> 00:39:41.500
<00:39:38.600>wanted <00:39:38.799>to <00:39:39.000>make <00:39:39.200>it <00:39:39.400>very <00:39:39.600>like <00:39:39.799>I <00:39:40.000>was

801
00:39:41.500 --> 00:39:44.200
<00:39:41.500>trying <00:39:41.733>to <00:39:41.966>please <00:39:42.200>myself <00:39:42.433>as <00:39:42.666>a <00:39:42.900>developer.

802
00:39:44.200 --> 00:39:47.400
<00:39:44.200>I <00:39:44.327>wanted <00:39:44.454>to <00:39:44.581>have <00:39:44.709>a <00:39:44.836>very <00:39:44.963>good <00:39:45.090>experience. <00:39:45.218>So <00:39:45.345>I <00:39:45.472>spend <00:39:45.600>a

803
00:39:47.400 --> 00:39:50.400
<00:39:47.400>lot <00:39:47.540>of <00:39:47.680>time <00:39:47.820>just <00:39:47.960>making <00:39:48.100>sure <00:39:48.240>that <00:39:48.380>whenever <00:39:48.520>I <00:39:48.660>was <00:39:48.800>coding

804
00:39:50.400 --> 00:39:52.900
<00:39:50.400>with <00:39:50.555>that <00:39:50.711>it <00:39:50.866>was <00:39:51.022>actually <00:39:51.177>nice <00:39:51.333>to <00:39:51.488>code <00:39:51.644>I <00:39:51.800>had

805
00:39:53.100 --> 00:39:56.900
<00:39:53.100>Proper <00:39:53.255>Auto <00:39:53.411>completion <00:39:53.566>inline <00:39:53.722>errors <00:39:53.877>all <00:39:54.033>that <00:39:54.188>stuff <00:39:54.344>before <00:39:54.500>writing

806
00:39:56.900 --> 00:39:59.400
<00:39:56.900>the <00:39:57.055>internal <00:39:57.211>code <00:39:57.366>and <00:39:57.522>I <00:39:57.677>made <00:39:57.833>sure <00:39:57.988>that <00:39:58.144>all <00:39:58.300>these

807
00:39:59.400 --> 00:40:02.000
<00:39:59.400>experiments <00:39:59.527>worked <00:39:59.654>in <00:39:59.781>all <00:39:59.909>the <00:40:00.036>editors <00:40:00.163>because <00:40:00.290>I <00:40:00.418>wanted <00:40:00.545>everyone <00:40:00.672>to <00:40:00.800>have

808
00:40:02.200 --> 00:40:05.500
<00:40:02.200>a <00:40:02.307>very <00:40:02.415>good <00:40:02.523>experience <00:40:02.630>with <00:40:02.738>that <00:40:02.846>the <00:40:02.953>same <00:40:03.061>with <00:40:03.169>the <00:40:03.276>documentation. <00:40:03.384>I <00:40:03.492>wrote <00:40:03.600>the

809
00:40:05.500 --> 00:40:09.400
<00:40:05.500>documentation <00:40:05.700>in <00:40:05.900>the <00:40:06.100>way <00:40:06.300>that <00:40:06.500>I <00:40:06.700>hoped <00:40:06.900>people

810
00:40:08.400 --> 00:40:11.600
<00:40:08.400>will <00:40:08.633>have <00:40:08.866>explained <00:40:09.100>to <00:40:09.333>me <00:40:09.566>how <00:40:09.800>apis

811
00:40:11.600 --> 00:40:14.500
<00:40:11.600>work <00:40:11.755>how <00:40:11.911>to <00:40:12.066>write <00:40:12.222>code <00:40:12.377>how <00:40:12.533>to <00:40:12.688>write <00:40:12.844>apis. <00:40:13.000>So

812
00:40:14.500 --> 00:40:17.500
<00:40:14.500>there <00:40:14.733>was <00:40:14.966>so <00:40:15.200>much <00:40:15.433>time <00:40:15.666>writing <00:40:15.900>Market

813
00:40:17.500 --> 00:40:20.200
<00:40:17.500>down <00:40:17.655>for <00:40:17.811>the <00:40:17.966>documentation <00:40:18.122>because <00:40:18.277>I <00:40:18.433>wanted <00:40:18.588>to <00:40:18.744>have <00:40:18.900>it

814
00:40:20.200 --> 00:40:23.500
<00:40:20.200>approachable <00:40:20.375>and <00:40:20.549>to <00:40:20.725>make <00:40:20.899>it <00:40:21.075>easy <00:40:21.250>for <00:40:21.424>developers <00:40:21.600>and

815
00:40:23.500 --> 00:40:27.200
<00:40:23.500>for <00:40:23.640>newcomers <00:40:23.780>to <00:40:23.920>have <00:40:24.060>something <00:40:24.200>that <00:40:24.340>is <00:40:24.480>easy <00:40:24.620>to <00:40:24.760>learn <00:40:24.900>but

816
00:40:26.200 --> 00:40:29.400
<00:40:26.200>that <00:40:26.355>has <00:40:26.511>like <00:40:26.666>all <00:40:26.822>the <00:40:26.977>best <00:40:27.133>practices <00:40:27.288>by <00:40:27.444>default <00:40:27.600>and

817
00:40:29.400 --> 00:40:32.900
<00:40:29.400>that <00:40:29.540>you <00:40:29.680>can <00:40:29.820>have <00:40:29.960>like <00:40:30.100>a <00:40:30.240>very <00:40:30.380>robust <00:40:30.520>application <00:40:30.660>but <00:40:30.800>you

818
00:40:32.900 --> 00:40:35.500
<00:40:32.900>can <00:40:33.075>go <00:40:33.250>there <00:40:33.425>and <00:40:33.600>start <00:40:33.775>from <00:40:33.950>there <00:40:34.125>from <00:40:34.300>scratch

819
00:40:35.500 --> 00:40:38.000
<00:40:35.500>just <00:40:35.655>like <00:40:35.811>you <00:40:35.966>come <00:40:36.122>and <00:40:36.277>you <00:40:36.433>just <00:40:36.588>Learn <00:40:36.744>Python <00:40:36.900>and

820
00:40:38.200 --> 00:40:41.500
<00:40:38.200>you <00:40:38.307>can <00:40:38.415>go <00:40:38.523>directly <00:40:38.630>to <00:40:38.738>that <00:40:38.846>and <00:40:38.953>learn <00:40:39.061>a <00:40:39.169>bunch <00:40:39.276>of <00:40:39.384>things <00:40:39.492>about <00:40:39.600>security

821
00:40:41.500 --> 00:40:44.500
<00:40:41.500>authentication <00:40:41.850>validation <00:40:42.200>and <00:40:42.550>python <00:40:42.900>while

822
00:40:44.500 --> 00:40:47.200
<00:40:44.500>you're <00:40:44.627>also <00:40:44.754>learning <00:40:44.881>fast <00:40:45.009>API, <00:40:45.136>so <00:40:45.263>that <00:40:45.390>was <00:40:45.518>the <00:40:45.645>idea. <00:40:45.772>I <00:40:45.900>guess

823
00:40:47.200 --> 00:40:51.400
<00:40:47.200>that's <00:40:47.433>probably <00:40:47.666>what <00:40:47.899>makes <00:40:48.133>it <00:40:48.366>approachable <00:40:48.600>and

824
00:40:51.400 --> 00:40:52.900
<00:40:51.400>makes <00:40:51.737>people <00:40:52.075>like <00:40:52.412>it <00:40:52.750>sometimes

825
00:40:53.500 --> 00:40:56.300
<00:40:53.500>Yeah, <00:40:53.640>I <00:40:53.780>think <00:40:53.920>that <00:40:54.060>was <00:40:54.200>already <00:40:54.340>also <00:40:54.480>the <00:40:54.620>answer <00:40:54.760>to <00:40:54.900>why

826
00:40:56.300 --> 00:41:00.200
<00:40:56.300>did <00:40:56.533>you <00:40:56.766>create <00:40:57.000>fast <00:40:57.233>API? <00:40:57.466>What's <00:40:57.700>next

827
00:40:59.200 --> 00:41:02.500
<00:40:59.200>feature <00:40:59.433>you <00:40:59.666>want <00:40:59.899>to <00:41:00.133>create <00:41:00.366>in <00:41:00.600>fast

828
00:41:02.500 --> 00:41:05.000
<00:41:02.500>API? <00:41:02.675>There <00:41:02.850>are <00:41:03.025>several <00:41:03.200>things <00:41:03.375>that <00:41:03.550>I <00:41:03.725>want <00:41:03.900>to

829
00:41:05.400 --> 00:41:09.500
<00:41:05.400>add <00:41:05.507>and <00:41:05.615>I <00:41:05.723>want <00:41:05.830>to <00:41:05.938>improve <00:41:06.046>infest <00:41:06.153>API. <00:41:06.261>One <00:41:06.369>of <00:41:06.476>those <00:41:06.584>is <00:41:06.692>is <00:41:06.800>a

830
00:41:09.500 --> 00:41:12.700
<00:41:09.500>bit <00:41:09.600>of <00:41:09.700>the <00:41:09.800>technical <00:41:09.900>details, <00:41:10.000>but <00:41:10.100>I <00:41:10.200>want <00:41:10.300>to <00:41:10.400>have <00:41:10.500>support <00:41:10.600>for <00:41:10.700>the <00:41:10.800>annotated <00:41:10.900>type

831
00:41:12.700 --> 00:41:15.600
<00:41:12.700>annotation <00:41:12.899>that <00:41:13.100>will <00:41:13.299>allow <00:41:13.500>having <00:41:13.700>even <00:41:13.899>less <00:41:14.100>code

832
00:41:15.600 --> 00:41:18.400
<00:41:15.600>whenever <00:41:15.755>you <00:41:15.911>are <00:41:16.066>for <00:41:16.222>those <00:41:16.377>that <00:41:16.533>might <00:41:16.688>have <00:41:16.844>used <00:41:17.000>first

833
00:41:18.400 --> 00:41:21.900
<00:41:18.400>API <00:41:18.555>whenever <00:41:18.711>you're <00:41:18.866>declaring <00:41:19.022>a <00:41:19.177>dependency, <00:41:19.333>if <00:41:19.488>you <00:41:19.644>use <00:41:19.800>the

834
00:41:21.900 --> 00:41:24.600
<00:41:21.900>return <00:41:22.055>value, <00:41:22.211>then <00:41:22.366>you <00:41:22.522>have <00:41:22.677>to <00:41:22.833>declare <00:41:22.988>the <00:41:23.144>dependency <00:41:23.300>wherever

835
00:41:24.600 --> 00:41:27.800
<00:41:24.600>you <00:41:24.727>need <00:41:24.854>to <00:41:24.981>use <00:41:25.109>it, <00:41:25.236>but <00:41:25.363>with <00:41:25.490>the <00:41:25.618>new <00:41:25.745>annotated <00:41:25.872>type <00:41:26.000>annotation,

836
00:41:27.800 --> 00:41:30.400
<00:41:27.800>you <00:41:27.940>can <00:41:28.080>have <00:41:28.220>the <00:41:28.360>information <00:41:28.500>of <00:41:28.640>the <00:41:28.780>type <00:41:28.920>and <00:41:29.060>the <00:41:29.200>dependency

837
00:41:30.400 --> 00:41:33.300
<00:41:30.400>in <00:41:30.516>the <00:41:30.633>same <00:41:30.750>place <00:41:30.866>is <00:41:30.983>something <00:41:31.100>that <00:41:31.216>is <00:41:31.333>not <00:41:31.450>just <00:41:31.566>supported <00:41:31.683>right <00:41:31.800>that

838
00:41:33.300 --> 00:41:36.700
<00:41:33.300>I <00:41:33.400>want <00:41:33.500>to <00:41:33.600>support <00:41:33.700>because <00:41:33.800>it <00:41:33.900>will <00:41:34.000>facilitate <00:41:34.100>a <00:41:34.200>lot <00:41:34.300>of <00:41:34.400>the <00:41:34.500>work <00:41:34.600>and <00:41:34.700>there's

839
00:41:36.700 --> 00:41:39.400
<00:41:36.700>a <00:41:36.875>also <00:41:37.049>a <00:41:37.225>lot <00:41:37.399>of <00:41:37.575>work <00:41:37.750>done <00:41:37.924>in <00:41:38.100>the

840
00:41:39.400 --> 00:41:42.900
<00:41:39.400>family <00:41:39.633>of <00:41:39.866>tools <00:41:40.100>and <00:41:40.333>like <00:41:40.566>the <00:41:40.800>friends

841
00:41:42.900 --> 00:41:45.200
<00:41:42.900>of <00:41:43.075>fast <00:41:43.250>API <00:41:43.425>and <00:41:43.600>the <00:41:43.775>things <00:41:43.950>that <00:41:44.125>integrate <00:41:44.300>with

842
00:41:45.200 --> 00:41:48.300
<00:41:45.200>first <00:41:45.327>API <00:41:45.454>that <00:41:45.581>will <00:41:45.709>facilitate <00:41:45.836>a <00:41:45.963>lot <00:41:46.090>of <00:41:46.218>things <00:41:46.345>for <00:41:46.472>example <00:41:46.600>right

843
00:41:48.300 --> 00:41:51.400
<00:41:48.300>now. <00:41:48.475>I'm <00:41:48.650>working <00:41:48.825>a <00:41:49.000>bunch <00:41:49.175>on <00:41:49.350>a <00:41:49.525>disintegration <00:41:49.700>for

844
00:41:51.400 --> 00:41:53.300
<00:41:51.400>mongodb <00:41:51.750>to <00:41:52.100>have <00:41:52.450>something <00:41:52.800>based.

845
00:41:53.500 --> 00:41:56.400
<00:41:53.500>Identic <00:41:53.700>the <00:41:53.900>same <00:41:54.100>tool <00:41:54.300>but <00:41:54.500>that <00:41:54.700>supports <00:41:54.900>async

846
00:41:56.400 --> 00:41:59.600
<00:41:56.400>and <00:41:56.680>non-nasync <00:41:56.960>using <00:41:57.240>a <00:41:57.520>tool <00:41:57.800>that

847
00:41:59.600 --> 00:42:02.400
<00:41:59.600>is <00:41:59.775>already <00:41:59.950>there. <00:42:00.125>I'm <00:42:00.299>just <00:42:00.475>contributing <00:42:00.650>to <00:42:00.825>developers <00:42:01.000>projects.

848
00:42:02.400 --> 00:42:04.300
<00:42:02.400>So <00:42:02.600>this <00:42:02.800>a <00:42:03.000>bunch <00:42:03.200>of <00:42:03.400>things <00:42:03.600>going <00:42:03.800>in.

849
00:42:04.800 --> 00:42:07.200
<00:42:04.800>Well, <00:42:04.975>I <00:42:05.150>will <00:42:05.325>say <00:42:05.500>that <00:42:05.675>there <00:42:05.850>was <00:42:06.025>one <00:42:06.200>question

850
00:42:07.200 --> 00:42:10.500
<00:42:07.200>left. <00:42:07.316>The <00:42:07.433>person <00:42:07.549>can <00:42:07.666>come <00:42:07.783>to <00:42:07.899>you <00:42:08.016>and <00:42:08.133>ask <00:42:08.250>you <00:42:08.366>because <00:42:08.483>our <00:42:08.600>time

851
00:42:10.500 --> 00:42:13.100
<00:42:10.500>is <00:42:10.616>up <00:42:10.733>a <00:42:10.850>big <00:42:10.966>round <00:42:11.083>of <00:42:11.200>applause <00:42:11.316>to <00:42:11.433>you. <00:42:11.550>Thank <00:42:11.666>you <00:42:11.783>very <00:42:11.900>much.