WEBVTT

1
00:00:06.875 --> 00:00:07.135
<00:00:06.875>All <00:00:07.109>right.

2
00:00:07.135 --> 00:00:10.135
<00:00:07.135>Good <00:00:07.335>afternoon. <00:00:07.535>How's <00:00:07.734>everybody's <00:00:07.935>conference <00:00:08.135>going <00:00:08.334>so <00:00:08.535>far?

3
00:00:10.245 --> 00:00:12.545
<00:00:10.245>Good, <00:00:10.944>good <00:00:11.645>sessions.

4
00:00:12.695 --> 00:00:14.265
<00:00:12.695>This <00:00:12.835>is <00:00:12.975>gonna <00:00:13.115>be <00:00:13.255>the <00:00:13.395>best <00:00:13.535>one <00:00:13.675>of <00:00:13.815>the <00:00:13.955>day, <00:00:14.095>right?

5
00:00:14.265 --> 00:00:15.385
<00:00:14.265>You're <00:00:14.466>all <00:00:14.668>here <00:00:14.869>'cause <00:00:15.071>you <00:00:15.273>figured

6
00:00:15.385 --> 00:00:16.545
<00:00:15.385>this <00:00:15.559>one's <00:00:15.733>gonna <00:00:15.907>be <00:00:16.081>the <00:00:16.255>best <00:00:16.429>one.

7
00:00:17.895 --> 00:00:19.355
<00:00:17.895>All <00:00:18.114>right, <00:00:18.333>so <00:00:18.552>before <00:00:18.771>we <00:00:18.990>get <00:00:19.209>started,

8
00:00:19.765 --> 00:00:23.115
<00:00:19.765>we're <00:00:19.892>at <00:00:20.019>the <00:00:20.146>Red <00:00:20.274>Hat <00:00:20.401>booth <00:00:20.528>this <00:00:20.655>afternoon <00:00:20.783>at <00:00:20.910>6:00 <00:00:21.037>PM <00:00:21.165>We're

9
00:00:23.115 --> 00:00:27.875
<00:00:23.115>doing <00:00:23.242>a, <00:00:23.369>a <00:00:23.496>raffle <00:00:23.624>for <00:00:23.751>a <00:00:23.878>pair <00:00:24.005>of <00:00:24.133>meta <00:00:24.260>ray <00:00:24.387>band <00:00:24.514>sunglasses.

10
00:00:28.235 --> 00:00:30.115
<00:00:28.235>I <00:00:28.375>don't <00:00:28.515>know <00:00:28.655>much <00:00:28.794>about <00:00:28.935>them, <00:00:29.075>but <00:00:29.215>they <00:00:29.355>seem <00:00:29.494>pretty <00:00:29.634>cool.

11
00:00:30.255 --> 00:00:32.715
<00:00:30.255>So <00:00:30.410>you <00:00:30.566>gotta <00:00:30.721>scan, <00:00:30.877>you <00:00:31.032>gotta <00:00:31.188>be <00:00:31.343>there <00:00:31.499>to <00:00:31.654>win.

12
00:00:32.855 --> 00:00:35.835
<00:00:32.855>So <00:00:32.995>take <00:00:33.135>take <00:00:33.275>a <00:00:33.415>scan <00:00:33.555>and <00:00:33.694>and <00:00:33.834>be <00:00:33.974>there <00:00:34.114>to <00:00:34.254>win.

13
00:00:35.855 --> 00:00:38.195
<00:00:35.855>So <00:00:35.995>a <00:00:36.135>little <00:00:36.275>bit <00:00:36.415>about <00:00:36.555>me. <00:00:36.694>My <00:00:36.834>name's <00:00:36.974>Eric <00:00:37.114>De <00:00:37.254>Andrea.

14
00:00:38.295 --> 00:00:40.635
<00:00:38.295>I'm <00:00:38.470>from <00:00:38.645>the <00:00:38.820>us. <00:00:38.995>I <00:00:39.170>am <00:00:39.345>a <00:00:39.520>Java <00:00:39.695>champion.

15
00:00:41.065 --> 00:00:44.035
<00:00:41.065>I've <00:00:41.220>been <00:00:41.376>doing <00:00:41.531>software <00:00:41.687>development <00:00:41.842>for, <00:00:41.998>for <00:00:42.153>a <00:00:42.309>long <00:00:42.464>time.

16
00:00:44.185 --> 00:00:47.435
<00:00:44.185>I've <00:00:44.325>been <00:00:44.465>a <00:00:44.605>committer <00:00:44.745>and <00:00:44.885>a <00:00:45.025>contributor <00:00:45.165>to <00:00:45.305>open <00:00:45.445>source, <00:00:45.585>um,

17
00:00:48.095 --> 00:00:50.515
<00:00:48.095>in <00:00:48.295>spring <00:00:48.495>in, <00:00:48.695>in <00:00:48.894>the <00:00:49.095>past <00:00:49.295>currently <00:00:49.495>caucus.

18
00:00:50.735 --> 00:00:52.755
<00:00:50.735>I'm <00:00:50.862>one <00:00:50.989>of <00:00:51.116>the <00:00:51.244>committers <00:00:51.371>on <00:00:51.498>the <00:00:51.625>lang <00:00:51.753>chain <00:00:51.880>for <00:00:52.007>J <00:00:52.135>Project,

19
00:00:52.845 --> 00:00:56.155
<00:00:52.845>which, <00:00:52.985>uh, <00:00:53.125>Alex, <00:00:53.265>if <00:00:53.405>you <00:00:53.545>just <00:00:53.685>attended <00:00:53.824>his <00:00:53.964>last <00:00:54.105>session <00:00:54.245>on,

20
00:00:56.255 --> 00:00:58.315
<00:00:56.255>on <00:00:56.488>guardrails, <00:00:56.721>I <00:00:56.955>was <00:00:57.188>the <00:00:57.421>implementer <00:00:57.655>of

21
00:00:58.315 --> 00:01:00.315
<00:00:58.315>that <00:00:58.548>feature <00:00:58.781>in <00:00:59.015>Lang <00:00:59.248>Jane <00:00:59.481>for <00:00:59.714>J.

22
00:01:00.895 --> 00:01:03.955
<00:01:00.895>Um, <00:01:01.035>I <00:01:01.175>also <00:01:01.315>help <00:01:01.455>run <00:01:01.595>my, <00:01:01.735>I'm <00:01:01.875>from <00:01:02.015>the <00:01:02.155>Boston <00:01:02.295>area,

23
00:01:03.975 --> 00:01:06.475
<00:01:03.975>so <00:01:04.130>I <00:01:04.286>help <00:01:04.441>run <00:01:04.597>my <00:01:04.752>local <00:01:04.908>Boston <00:01:05.063>Java <00:01:05.219>users <00:01:05.375>group.

24
00:01:06.475 --> 00:01:08.275
<00:01:06.475>So <00:01:06.649>if <00:01:06.824>you're <00:01:07.000>not <00:01:07.175>involved <00:01:07.350>in <00:01:07.524>the <00:01:07.699>Java <00:01:07.875>community,

25
00:01:08.275 --> 00:01:09.795
<00:01:08.275>in <00:01:08.503>your <00:01:08.731>local <00:01:08.959>community, <00:01:09.187>wherever <00:01:09.415>you <00:01:09.643>live,

26
00:01:10.115 --> 00:01:11.875
<00:01:10.115>I <00:01:10.348>highly <00:01:10.581>suggest <00:01:10.815>getting <00:01:11.048>involved <00:01:11.281>in <00:01:11.515>it.

27
00:01:13.025 --> 00:01:15.395
<00:01:13.025>I've <00:01:13.200>also <00:01:13.375>written <00:01:13.550>this <00:01:13.725>book <00:01:13.900>about <00:01:14.075>corcus <00:01:14.250>and <00:01:14.425>spring

28
00:01:15.395 --> 00:01:18.595
<00:01:15.395>and <00:01:15.570>that's <00:01:15.744>kind <00:01:15.920>of <00:01:16.095>where <00:01:16.270>this <00:01:16.445>talk <00:01:16.619>came <00:01:16.795>from,

29
00:01:18.595 --> 00:01:20.715
<00:01:18.595>looking <00:01:18.875>at <00:01:19.155>corcus <00:01:19.435>and, <00:01:19.715>and <00:01:19.995>spring.

30
00:01:20.815 --> 00:01:23.635
<00:01:20.815>So <00:01:20.990>show <00:01:21.164>of <00:01:21.340>hands, <00:01:21.515>who's <00:01:21.690>running <00:01:21.865>spring <00:01:22.039>in <00:01:22.215>production?

31
00:01:24.535 --> 00:01:27.515
<00:01:24.535>That's <00:01:24.710>kind <00:01:24.884>of <00:01:25.060>what <00:01:25.235>I <00:01:25.410>expected, <00:01:25.585>right? <00:01:25.759>Spring <00:01:25.935>three.

32
00:01:29.225 --> 00:01:32.955
<00:01:29.225>Anybody <00:01:29.399>doing <00:01:29.574>native <00:01:29.750>builds <00:01:29.925>native <00:01:30.100>image <00:01:30.274>now <00:01:30.449>that, <00:01:30.625>okay,

33
00:01:32.955 --> 00:01:34.035
<00:01:32.955>that's <00:01:33.117>kind <00:01:33.279>of <00:01:33.441>what <00:01:33.603>I <00:01:33.765>expected <00:01:33.926>too.

34
00:01:34.355 --> 00:01:36.155
<00:01:34.354>Reactive <00:01:34.821>development, <00:01:35.288>web <00:01:35.755>flux.

35
00:01:37.585 --> 00:01:39.235
<00:01:37.585>Yeah, <00:01:37.785>again, <00:01:37.985>that's <00:01:38.185>kind <00:01:38.385>of <00:01:38.585>what <00:01:38.785>I <00:01:38.985>expected.

36
00:01:39.465 --> 00:01:42.515
<00:01:39.465>Alright, <00:01:39.665>so <00:01:39.865>who's <00:01:40.065>running <00:01:40.265>corcus <00:01:40.465>in <00:01:40.665>production? <00:01:40.865>Anybody?

37
00:01:43.515 --> 00:01:46.845
<00:01:43.515>Awesome. <00:01:43.655>So <00:01:43.795>let's <00:01:43.935>talk <00:01:44.075>a <00:01:44.215>little <00:01:44.355>bit <00:01:44.495>about <00:01:44.635>just <00:01:44.775>in <00:01:44.915>time

38
00:01:46.965 --> 00:01:51.485
<00:01:46.965>compiler <00:01:47.120>and <00:01:47.276>warmup <00:01:47.431>and, <00:01:47.587>and <00:01:47.742>how <00:01:47.898>the <00:01:48.053>JVM <00:01:48.209>actually <00:01:48.365>works.

39
00:01:51.505 --> 00:01:53.085
<00:01:51.505>So <00:01:51.785>if <00:01:52.065>you <00:01:52.345>think <00:01:52.625>about <00:01:52.905>Java

40
00:01:53.085 --> 00:01:56.485
<00:01:53.085>and <00:01:53.240>its <00:01:53.396>30 <00:01:53.551>year <00:01:53.707>history, <00:01:53.862>it <00:01:54.018>was, <00:01:54.173>it <00:01:54.329>was <00:01:54.485>invented

41
00:01:56.545 --> 00:01:58.285
<00:01:56.545>to <00:01:56.895>solve <00:01:57.245>this <00:01:57.595>run, <00:01:57.945>right?

42
00:01:58.285 --> 00:02:00.045
<00:01:58.285>Once <00:01:58.634>run <00:01:58.985>anywhere <00:01:59.335>problem, <00:01:59.685>right?

43
00:02:00.435 --> 00:02:03.125
<00:02:00.435>Back <00:02:00.551>in <00:02:00.668>the <00:02:00.785>day <00:02:00.901>when <00:02:01.018>it <00:02:01.135>was, <00:02:01.251>wasn't <00:02:01.368>just <00:02:01.485>Linux, <00:02:01.601>you <00:02:01.718>had <00:02:01.835>Unix

44
00:02:03.125 --> 00:02:05.765
<00:02:03.125>and <00:02:03.300>Solaris <00:02:03.475>and <00:02:03.650>a <00:02:03.825>IX <00:02:04.000>and <00:02:04.175>H, <00:02:04.350>hp, <00:02:04.525>ux

45
00:02:05.765 --> 00:02:07.245
<00:02:05.765>and <00:02:05.955>all <00:02:06.145>these <00:02:06.335>different <00:02:06.526>variants <00:02:06.716>that <00:02:06.906>you <00:02:07.097>had

46
00:02:07.245 --> 00:02:09.605
<00:02:07.245>to <00:02:07.445>compile <00:02:07.645>down <00:02:07.845>to, <00:02:08.045>and <00:02:08.245>Java <00:02:08.445>came <00:02:08.645>along

47
00:02:09.605 --> 00:02:11.045
<00:02:09.604>and <00:02:09.821>tried <00:02:10.036>to <00:02:10.252>solve <00:02:10.469>that <00:02:10.685>problem, <00:02:10.900>but,

48
00:02:11.225 --> 00:02:12.525
<00:02:11.225>or <00:02:11.615>everybody's <00:02:12.005>a <00:02:12.395>developer,

49
00:02:12.545 --> 00:02:15.245
<00:02:12.545>or <00:02:12.744>most <00:02:12.945>people <00:02:13.144>were <00:02:13.345>developers, <00:02:13.545>engineers, <00:02:13.744>you <00:02:13.945>know,

50
00:02:15.245 --> 00:02:16.685
<00:02:15.245>there's, <00:02:15.569>there's <00:02:15.893>trade-offs <00:02:16.217>in <00:02:16.541>everything.

51
00:02:16.685 --> 00:02:17.885
<00:02:16.685>You <00:02:16.901>know, <00:02:17.117>there's <00:02:17.333>no <00:02:17.549>silver <00:02:17.765>bullet.

52
00:02:17.885 --> 00:02:20.005
<00:02:17.885>There's, <00:02:18.084>there's <00:02:18.285>no <00:02:18.484>perfect <00:02:18.685>solution <00:02:18.885>to <00:02:19.084>every <00:02:19.285>problem.

53
00:02:20.335 --> 00:02:22.405
<00:02:20.335>Every <00:02:20.535>problem <00:02:20.735>has, <00:02:20.935>oh <00:02:21.135>yeah, <00:02:21.335>you <00:02:21.535>get <00:02:21.735>this,

54
00:02:22.425 --> 00:02:24.805
<00:02:22.425>but <00:02:22.565>you <00:02:22.705>have <00:02:22.845>to <00:02:22.985>bring <00:02:23.125>along <00:02:23.265>this <00:02:23.405>baggage <00:02:23.545>with <00:02:23.685>you, <00:02:23.825>right?

55
00:02:25.345 --> 00:02:28.885
<00:02:25.345>So <00:02:25.500>the <00:02:25.656>baggage <00:02:25.811>that <00:02:25.967>Java <00:02:26.122>brings <00:02:26.278>along <00:02:26.433>is <00:02:26.589>this <00:02:26.745>heavyweight

56
00:02:29.155 --> 00:02:33.005
<00:02:29.155>dynamic <00:02:29.310>runtime <00:02:29.466>that <00:02:29.621>can <00:02:29.777>adapt <00:02:29.932>to <00:02:30.088>things <00:02:30.243>on <00:02:30.399>the <00:02:30.555>fly.

57
00:02:33.745 --> 00:02:36.965
<00:02:33.745>And <00:02:33.885>if <00:02:34.025>you <00:02:34.165>start <00:02:34.305>to <00:02:34.445>look <00:02:34.585>at <00:02:34.725>your <00:02:34.865>startup, <00:02:35.005>uh, <00:02:35.145>metrics

58
00:02:37.185 --> 00:02:38.645
<00:02:37.185>and <00:02:37.513>your, <00:02:37.842>your <00:02:38.170>heap <00:02:38.499>sizes,

59
00:02:39.025 --> 00:02:42.485
<00:02:39.025>and <00:02:39.200>you <00:02:39.375>have <00:02:39.550>this <00:02:39.725>big <00:02:39.900>burst <00:02:40.075>of <00:02:40.250>resource <00:02:40.425>utilization

60
00:02:42.485 --> 00:02:45.165
<00:02:42.485>that <00:02:42.625>you <00:02:42.765>need <00:02:42.905>when <00:02:43.045>a <00:02:43.185>Java <00:02:43.325>application <00:02:43.465>starts <00:02:43.605>even <00:02:43.745>a <00:02:43.885>whole

61
00:02:45.165 --> 00:02:47.565
<00:02:45.165>world <00:02:45.445>application <00:02:45.725>and <00:02:46.005>then <00:02:46.285>it <00:02:46.565>kind

62
00:02:47.565 --> 00:02:49.165
<00:02:47.565>of <00:02:47.845>trails <00:02:48.125>off <00:02:48.405>over <00:02:48.685>time, <00:02:48.965>right?

63
00:02:49.705 --> 00:02:50.885
<00:02:49.704>So <00:02:49.970>that's <00:02:50.236>just <00:02:50.501>a <00:02:50.767>startup.

64
00:02:51.185 --> 00:02:53.965
<00:02:51.185>But <00:02:51.340>then <00:02:51.496>you <00:02:51.651>have <00:02:51.807>the, <00:02:51.962>the <00:02:52.118>just <00:02:52.273>in <00:02:52.429>time <00:02:52.585>compiler

65
00:02:53.965 --> 00:02:57.885
<00:02:53.965>that's <00:02:54.105>in <00:02:54.245>the <00:02:54.385>JVM <00:02:54.525>is <00:02:54.665>really <00:02:54.805>good <00:02:54.945>at <00:02:55.085>optimizing <00:02:55.225>your <00:02:55.365>bike

66
00:02:57.885 --> 00:02:59.885
<00:02:57.885>code <00:02:58.118>over <00:02:58.351>time <00:02:58.584>and <00:02:58.818>kind <00:02:59.051>of <00:02:59.285>rewriting

67
00:02:59.905 --> 00:03:02.525
<00:02:59.905>and <00:03:00.185>retiming <00:03:00.465>what <00:03:00.745>the <00:03:01.025>code <00:03:01.305>does

68
00:03:02.545 --> 00:03:05.885
<00:03:02.545>and <00:03:02.672>how <00:03:02.799>it <00:03:02.926>works <00:03:03.054>to, <00:03:03.181>to, <00:03:03.308>to <00:03:03.435>make <00:03:03.563>it <00:03:03.690>faster <00:03:03.817>based <00:03:03.945>on

69
00:03:05.885 --> 00:03:07.245
<00:03:05.885>what <00:03:06.191>your <00:03:06.497>application <00:03:06.803>is <00:03:07.109>doing.

70
00:03:07.345 --> 00:03:10.885
<00:03:07.345>And <00:03:07.500>depending <00:03:07.656>on <00:03:07.811>your <00:03:07.967>application <00:03:08.122>size, <00:03:08.278>what <00:03:08.433>it, <00:03:08.589>you <00:03:08.745>know,

71
00:03:10.885 --> 00:03:14.125
<00:03:10.885>whatnot, <00:03:11.060>that <00:03:11.234>could <00:03:11.410>be <00:03:11.584>anywhere <00:03:11.760>from <00:03:11.935>minutes <00:03:12.109>to <00:03:12.285>hours,

72
00:03:14.125 --> 00:03:16.885
<00:03:14.125>especially <00:03:14.280>if <00:03:14.436>it's <00:03:14.591>a, <00:03:14.747>it's <00:03:14.902>a <00:03:15.058>big <00:03:15.213>application <00:03:15.369>that <00:03:15.525>runs

73
00:03:17.025 --> 00:03:18.165
<00:03:17.025>for <00:03:17.230>a <00:03:17.435>long <00:03:17.640>period <00:03:17.845>of <00:03:18.051>time.

74
00:03:19.065 --> 00:03:21.925
<00:03:19.065>And <00:03:19.204>so <00:03:19.345>kind <00:03:19.484>of <00:03:19.625>the, <00:03:19.765>the, <00:03:19.905>the <00:03:20.045>point <00:03:20.185>of <00:03:20.325>this <00:03:20.465>is,

75
00:03:21.975 --> 00:03:24.605
<00:03:21.975>especially <00:03:22.208>if <00:03:22.441>you're <00:03:22.674>running <00:03:22.908>in <00:03:23.141>running <00:03:23.375>microservices

76
00:03:24.665 --> 00:03:26.005
<00:03:24.665>or <00:03:24.966>you're <00:03:25.268>doing <00:03:25.569>horizontal <00:03:25.870>scaling

77
00:03:26.105 --> 00:03:30.925
<00:03:26.105>or <00:03:26.280>building <00:03:26.454>stateless <00:03:26.630>applications, <00:03:26.804>the <00:03:26.980>faster <00:03:27.155>you <00:03:27.329>can <00:03:27.505>get

78
00:03:31.025 --> 00:03:34.885
<00:03:31.025>to <00:03:31.180>that <00:03:31.336>peak <00:03:31.491>SLA, <00:03:31.647>which <00:03:31.802>means <00:03:31.958>your <00:03:32.113>application <00:03:32.269>is <00:03:32.425>warm

79
00:03:34.885 --> 00:03:37.725
<00:03:34.885>and <00:03:35.060>ready <00:03:35.234>to <00:03:35.410>service <00:03:35.584>the, <00:03:35.760>the <00:03:35.935>number <00:03:36.109>of <00:03:36.285>requests

80
00:03:37.725 --> 00:03:39.565
<00:03:37.725>that <00:03:37.924>it <00:03:38.125>can, <00:03:38.325>that <00:03:38.525>it's <00:03:38.725>meant <00:03:38.924>to <00:03:39.125>serve.

81
00:03:40.105 --> 00:03:42.085
<00:03:40.105>It <00:03:40.280>can't <00:03:40.454>do <00:03:40.630>that <00:03:40.804>right <00:03:40.980>off <00:03:41.155>the <00:03:41.329>the <00:03:41.505>bat.

82
00:03:42.155 --> 00:03:43.205
<00:03:42.155>It's <00:03:42.470>gotta <00:03:42.785>warm <00:03:43.100>up

83
00:03:43.625 --> 00:03:46.565
<00:03:43.625>and <00:03:43.800>it's <00:03:43.975>kind <00:03:44.150>of <00:03:44.325>just <00:03:44.500>the, <00:03:44.675>the, <00:03:44.850>the <00:03:45.025>baggage

84
00:03:46.565 --> 00:03:48.205
<00:03:46.565>that <00:03:46.798>we're <00:03:47.031>bringing <00:03:47.265>with <00:03:47.498>us <00:03:47.731>with <00:03:47.965>Java.

85
00:03:48.205 --> 00:03:49.525
<00:03:48.204>And <00:03:48.353>so <00:03:48.501>if <00:03:48.650>you, <00:03:48.799>if <00:03:48.947>you <00:03:49.096>wanna <00:03:49.244>know <00:03:49.393>more,

86
00:03:49.525 --> 00:03:51.645
<00:03:49.525>Simon <00:03:49.652>Riter <00:03:49.779>from <00:03:49.906>his <00:03:50.034>old <00:03:50.161>systems <00:03:50.288>does <00:03:50.415>a <00:03:50.543>whole <00:03:50.670>talk <00:03:50.797>on <00:03:50.925>this.

87
00:03:51.715 --> 00:03:52.965
<00:03:51.715>He's <00:03:52.090>the <00:03:52.465>JVM <00:03:52.840>expert

88
00:03:52.985 --> 00:03:56.205
<00:03:52.985>and <00:03:53.185>talks <00:03:53.385>about <00:03:53.585>the <00:03:53.785>warmup <00:03:53.985>versus <00:03:54.185>startup <00:03:54.385>time

89
00:03:56.305 --> 00:04:00.165
<00:03:56.305>and <00:03:56.432>be <00:03:56.559>able <00:03:56.686>to, <00:03:56.814>to, <00:03:56.941>so, <00:03:57.068>so <00:03:57.195>this <00:03:57.323>is <00:03:57.450>really <00:03:57.577>the, <00:03:57.705>the,

90
00:04:00.185 --> 00:04:01.445
<00:04:00.185>the <00:04:00.374>problem <00:04:00.563>that <00:04:00.752>we're <00:04:00.941>trying <00:04:01.130>to <00:04:01.319>solve.

91
00:04:02.025 --> 00:04:04.725
<00:04:02.025>And <00:04:02.180>as <00:04:02.336>we <00:04:02.491>started <00:04:02.647>to <00:04:02.802>do <00:04:02.958>this <00:04:03.113>with <00:04:03.269>in <00:04:03.425>containers

92
00:04:04.725 --> 00:04:07.245
<00:04:04.725>and <00:04:04.880>Kubernetes, <00:04:05.036>what <00:04:05.191>did <00:04:05.347>we <00:04:05.502>find <00:04:05.658>out <00:04:05.813>as <00:04:05.969>Java <00:04:06.125>developers?

93
00:04:07.275 --> 00:04:08.765
<00:04:07.275>That <00:04:07.543>it <00:04:07.811>kind <00:04:08.079>of <00:04:08.347>sucks, <00:04:08.616>right?

94
00:04:09.075 --> 00:04:11.045
<00:04:09.075>When <00:04:09.274>you <00:04:09.475>start <00:04:09.674>running <00:04:09.875>Java <00:04:10.075>in <00:04:10.274>a <00:04:10.475>container,

95
00:04:11.045 --> 00:04:14.205
<00:04:11.045>because <00:04:11.511>is <00:04:11.978>anybody <00:04:12.445>running

96
00:04:14.755 --> 00:04:17.565
<00:04:14.755>Java <00:04:14.988>applications <00:04:15.221>on <00:04:15.454>a, <00:04:15.688>on <00:04:15.921>a <00:04:16.154>VM

97
00:04:17.565 --> 00:04:19.565
<00:04:17.565>or <00:04:17.692>not <00:04:17.819>in <00:04:17.946>a <00:04:18.074>container <00:04:18.201>where <00:04:18.328>you're <00:04:18.455>giving <00:04:18.583>it <00:04:18.710>more <00:04:18.837>than <00:04:18.964>16

98
00:04:19.675 --> 00:04:23.125
<00:04:19.675>gigs <00:04:19.791>of <00:04:19.908>heap <00:04:20.025>or <00:04:20.141>giving <00:04:20.258>it <00:04:20.375>more <00:04:20.491>than <00:04:20.608>two <00:04:20.725>cores <00:04:20.841>or <00:04:20.958>four <00:04:21.075>cores

99
00:04:23.125 --> 00:04:24.485
<00:04:23.125>or <00:04:23.431>six <00:04:23.737>cores <00:04:24.043>of <00:04:24.349>resources.

100
00:04:25.105 --> 00:04:26.805
<00:04:25.105>So <00:04:25.280>when <00:04:25.455>you <00:04:25.630>run <00:04:25.805>it <00:04:25.980>in <00:04:26.155>containers, <00:04:26.330>you <00:04:26.505>tend

101
00:04:26.805 --> 00:04:28.205
<00:04:26.805>to <00:04:27.057>shrink <00:04:27.309>the <00:04:27.561>amount <00:04:27.813>of <00:04:28.065>resources

102
00:04:28.205 --> 00:04:29.405
<00:04:28.205>that <00:04:28.421>you <00:04:28.637>give <00:04:28.852>each <00:04:29.068>app, <00:04:29.284>right?

103
00:04:29.705 --> 00:04:31.765
<00:04:29.705>So <00:04:29.880>I <00:04:30.055>could <00:04:30.229>run <00:04:30.405>a <00:04:30.580>whole <00:04:30.755>world <00:04:30.930>Java <00:04:31.104>app

104
00:04:31.925 --> 00:04:34.805
<00:04:31.925>and <00:04:32.052>give <00:04:32.179>it <00:04:32.306>like <00:04:32.434>two <00:04:32.561>milli <00:04:32.688>cores <00:04:32.815>and <00:04:32.943>20 <00:04:33.070>megs <00:04:33.197>of <00:04:33.325>Ram

105
00:04:34.825 --> 00:04:37.645
<00:04:34.825>and <00:04:34.980>make <00:04:35.136>it <00:04:35.291>take <00:04:35.447>two <00:04:35.602>minutes <00:04:35.758>to <00:04:35.913>start <00:04:36.069>up, <00:04:36.224>right?

106
00:04:37.665 --> 00:04:39.725
<00:04:37.665>So <00:04:37.865>the, <00:04:38.065>the, <00:04:38.265>the <00:04:38.465>size <00:04:38.665>of <00:04:38.865>the <00:04:39.065>application

107
00:04:39.725 --> 00:04:40.965
<00:04:39.725>and <00:04:40.097>the <00:04:40.469>resource <00:04:40.841>utilization

108
00:04:40.965 --> 00:04:42.525
<00:04:40.965>of <00:04:41.315>your <00:04:41.665>application <00:04:42.015>depends <00:04:42.365>on

109
00:04:42.525 --> 00:04:43.845
<00:04:42.525>the <00:04:42.762>resources <00:04:43.000>that <00:04:43.237>you <00:04:43.475>give <00:04:43.713>it.

110
00:04:44.105 --> 00:04:46.325
<00:04:44.105>And <00:04:44.305>as <00:04:44.505>you <00:04:44.705>start <00:04:44.905>to <00:04:45.105>run <00:04:45.305>these <00:04:45.505>applications

111
00:04:46.345 --> 00:04:49.445
<00:04:46.345>and <00:04:46.485>containers, <00:04:46.625>you <00:04:46.765>tend <00:04:46.905>to <00:04:47.045>give <00:04:47.185>it <00:04:47.325>less <00:04:47.465>and <00:04:47.605>less <00:04:47.745>resources.

112
00:04:49.445 --> 00:04:51.005
<00:04:49.445>And <00:04:49.724>so <00:04:50.005>that's <00:04:50.284>the <00:04:50.565>challenge <00:04:50.844>we

113
00:04:51.005 --> 00:04:53.365
<00:04:51.005>as <00:04:51.205>Java <00:04:51.405>developers <00:04:51.605>have <00:04:51.805>been <00:04:52.005>facing <00:04:52.205>over <00:04:52.405>the

114
00:04:53.365 --> 00:04:54.485
<00:04:53.365>last, <00:04:53.701>what, <00:04:54.037>10 <00:04:54.373>years?

115
00:04:54.675 --> 00:04:56.245
<00:04:54.675>Five, <00:04:54.908>five <00:04:55.141>to <00:04:55.375>10 <00:04:55.608>years <00:04:55.841>or <00:04:56.075>so.

116
00:04:56.865 --> 00:04:59.685
<00:04:56.865>And <00:04:57.020>so <00:04:57.176>that's <00:04:57.331>kind <00:04:57.487>of <00:04:57.642>where, <00:04:57.798>where <00:04:57.953>Corcus <00:04:58.109>came <00:04:58.265>along

117
00:04:59.945 --> 00:05:03.525
<00:04:59.945>and <00:05:00.085>kind <00:05:00.224>of <00:05:00.365>decided <00:05:00.505>that <00:05:00.645>we, <00:05:00.784>we <00:05:00.925>need <00:05:01.065>a <00:05:01.205>better <00:05:01.344>solution,

118
00:05:03.525 --> 00:05:04.845
<00:05:03.525>you <00:05:03.722>know, <00:05:03.921>rather <00:05:04.119>than <00:05:04.317>going <00:05:04.515>off <00:05:04.713>and,

119
00:05:04.905 --> 00:05:06.725
<00:05:04.905>and <00:05:05.138>is <00:05:05.371>anybody <00:05:05.604>a <00:05:05.838>Python <00:05:06.071>developer <00:05:06.304>here?

120
00:05:08.245 --> 00:05:10.345
<00:05:08.245>Uh, <00:05:08.400>sorry. <00:05:08.556>You <00:05:08.711>can <00:05:08.867>cover <00:05:09.022>your <00:05:09.178>ears <00:05:09.333>for <00:05:09.489>the <00:05:09.645>next,

121
00:05:10.445 --> 00:05:11.745
<00:05:10.445>for <00:05:10.640>the <00:05:10.835>next <00:05:11.030>couple <00:05:11.225>of <00:05:11.420>minutes <00:05:11.615>here.

122
00:05:12.205 --> 00:05:14.545
<00:05:12.205>So <00:05:12.380>rather <00:05:12.555>than <00:05:12.729>switching <00:05:12.905>to <00:05:13.080>another <00:05:13.255>language <00:05:13.430>like <00:05:13.604>Python

123
00:05:14.725 --> 00:05:18.065
<00:05:14.725>or <00:05:14.880>Node, <00:05:15.036>I <00:05:15.191>mean <00:05:15.347>our <00:05:15.502>organizations, <00:05:15.658>you're <00:05:15.813>all <00:05:15.969>here <00:05:16.125>for,

124
00:05:18.065 --> 00:05:19.305
<00:05:18.065>to <00:05:18.344>learn <00:05:18.623>more <00:05:18.902>about <00:05:19.181>Java,

125
00:05:19.405 --> 00:05:21.985
<00:05:19.405>our <00:05:19.604>organizations <00:05:19.804>are <00:05:20.005>entrenched <00:05:20.205>in <00:05:20.405>in <00:05:20.604>Java, <00:05:20.804>right?

126
00:05:21.985 --> 00:05:23.065
<00:05:21.985>You <00:05:22.179>don't <00:05:22.373>want <00:05:22.568>to <00:05:22.762>go <00:05:22.957>back

127
00:05:23.065 --> 00:05:24.665
<00:05:23.065>and <00:05:23.220>say, <00:05:23.376>oh <00:05:23.531>yeah, <00:05:23.687>I <00:05:23.842>learned <00:05:23.998>at <00:05:24.153>this <00:05:24.309>Java <00:05:24.465>conference

128
00:05:24.665 --> 00:05:26.185
<00:05:24.665>that <00:05:24.893>we <00:05:25.121>have <00:05:25.349>to <00:05:25.577>learn <00:05:25.805>Python, <00:05:26.033>right?

129
00:05:27.035 --> 00:05:29.625
<00:05:27.035>Would, <00:05:27.210>would <00:05:27.385>they <00:05:27.560>approve <00:05:27.735>your <00:05:27.910>expense <00:05:28.085>report <00:05:28.260>if <00:05:28.435>that's

130
00:05:29.625 --> 00:05:31.545
<00:05:29.625>what <00:05:29.752>you <00:05:29.879>told <00:05:30.006>them <00:05:30.134>when <00:05:30.261>you <00:05:30.388>got <00:05:30.515>back <00:05:30.643>to, <00:05:30.770>to <00:05:30.897>work <00:05:31.025>on

131
00:05:31.935 --> 00:05:33.185
<00:05:31.935>what <00:05:32.216>next <00:05:32.497>week, <00:05:32.778>next <00:05:33.060>Monday?

132
00:05:33.825 --> 00:05:35.625
<00:05:33.825>Probably <00:05:34.025>not. <00:05:34.224>So <00:05:34.425>we <00:05:34.625>wanted <00:05:34.825>to <00:05:35.025>look <00:05:35.224>at

133
00:05:35.965 --> 00:05:38.465
<00:05:35.965>how <00:05:36.120>do <00:05:36.276>we <00:05:36.431>solve <00:05:36.587>this <00:05:36.742>problem <00:05:36.898>without <00:05:37.053>having <00:05:37.209>to <00:05:37.365>force

134
00:05:39.075 --> 00:05:41.865
<00:05:39.075>developers <00:05:39.250>to <00:05:39.425>learn <00:05:39.599>something <00:05:39.775>new <00:05:39.950>using <00:05:40.125>all <00:05:40.300>the <00:05:40.474>same

135
00:05:41.865 --> 00:05:43.905
<00:05:41.865>technologies <00:05:42.215>that <00:05:42.565>we're <00:05:42.915>using <00:05:43.265>today.

136
00:05:44.885 --> 00:05:46.105
<00:05:44.885>And <00:05:45.041>so <00:05:45.198>if <00:05:45.355>you <00:05:45.512>think <00:05:45.669>about <00:05:45.826>a <00:05:45.983>framework,

137
00:05:46.285 --> 00:05:48.465
<00:05:46.284>and <00:05:46.518>I'm <00:05:46.751>gonna <00:05:46.984>talk <00:05:47.218>specifically <00:05:47.451>about <00:05:47.684>Spring.

138
00:05:48.565 --> 00:05:51.025
<00:05:48.565>Has <00:05:48.798>anybody <00:05:49.031>built <00:05:49.265>custom <00:05:49.498>spring <00:05:49.731>boot <00:05:49.965>starters

139
00:05:51.445 --> 00:05:53.945
<00:05:51.445>or <00:05:51.561>custom <00:05:51.678>opinions <00:05:51.795>or <00:05:51.911>you <00:05:52.028>just <00:05:52.145>use <00:05:52.261>all <00:05:52.378>out <00:05:52.495>of <00:05:52.611>the <00:05:52.728>box <00:05:52.844>stuff?

140
00:05:54.685 --> 00:05:56.865
<00:05:54.685>Out <00:05:54.860>of <00:05:55.035>the <00:05:55.210>box <00:05:55.385>stuff <00:05:55.560>for <00:05:55.735>most <00:05:55.910>people? <00:05:56.085>Okay?

141
00:05:57.385 --> 00:05:58.685
<00:05:57.385>So <00:05:57.677>the <00:05:57.969>way <00:05:58.262>Spring <00:05:58.555>works

142
00:05:58.705 --> 00:06:01.405
<00:05:58.705>and <00:05:58.860>the <00:05:59.016>way <00:05:59.171>spring <00:05:59.327>auto <00:05:59.482>configuration <00:05:59.638>works <00:05:59.793>is <00:05:59.949>you've <00:06:00.104>got

143
00:06:01.405 --> 00:06:04.685
<00:06:01.405>this <00:06:01.638>separation <00:06:01.871>between <00:06:02.104>build <00:06:02.338>time <00:06:02.571>and <00:06:02.804>runtime.

144
00:06:04.685 --> 00:06:06.205
<00:06:04.685>And <00:06:04.880>it's, <00:06:05.075>and <00:06:05.271>it's <00:06:05.466>pretty <00:06:05.662>obvious, <00:06:05.857>you <00:06:06.053>know,

145
00:06:06.405 --> 00:06:09.205
<00:06:06.405>Maven <00:06:06.544>Integr <00:06:06.684>will <00:06:06.825>build <00:06:06.965>and <00:06:07.104>you <00:06:07.244>get <00:06:07.385>a, <00:06:07.525>a <00:06:07.664>executable <00:06:07.804>jar

146
00:06:09.825 --> 00:06:11.485
<00:06:09.825>and <00:06:10.058>then <00:06:10.291>at <00:06:10.525>runtime <00:06:10.758>it <00:06:10.991>goes <00:06:11.224>through

147
00:06:11.545 --> 00:06:13.805
<00:06:11.545>and <00:06:11.778>it <00:06:12.011>has <00:06:12.245>to <00:06:12.478>find <00:06:12.711>your <00:06:12.945>configuration,

148
00:06:13.915 --> 00:06:16.245
<00:06:13.915>it's <00:06:14.115>gotta <00:06:14.315>read <00:06:14.515>your <00:06:14.715>environment <00:06:14.915>variables, <00:06:15.115>figure <00:06:15.315>out,

149
00:06:16.245 --> 00:06:17.645
<00:06:16.245>you <00:06:16.497>know, <00:06:16.749>you've <00:06:17.001>got <00:06:17.253>spring <00:06:17.505>profiles.

150
00:06:17.645 --> 00:06:19.565
<00:06:17.645>So <00:06:17.820>you've <00:06:17.995>got <00:06:18.169>this <00:06:18.344>like <00:06:18.520>level <00:06:18.695>of <00:06:18.870>inheritance <00:06:19.044>of

151
00:06:20.085 --> 00:06:22.045
<00:06:20.085>configuration <00:06:20.318>properties <00:06:20.551>and <00:06:20.784>then <00:06:21.018>based <00:06:21.251>off <00:06:21.484>the

152
00:06:22.205 --> 00:06:25.125
<00:06:22.205>configuration <00:06:22.380>properties, <00:06:22.555>it <00:06:22.729>figures <00:06:22.905>out <00:06:23.080>what <00:06:23.255>beans <00:06:23.430>it <00:06:23.604>need.

153
00:06:25.125 --> 00:06:27.845
<00:06:25.125>Anybody <00:06:25.358>ever <00:06:25.591>use <00:06:25.825>like <00:06:26.058>conditional <00:06:26.291>on <00:06:26.525>bean,

154
00:06:27.845 --> 00:06:30.605
<00:06:27.845>conditional <00:06:28.045>on <00:06:28.245>property, <00:06:28.445>conditional <00:06:28.645>on <00:06:28.845>this, <00:06:29.045>conditional <00:06:29.245>on

155
00:06:30.605 --> 00:06:34.485
<00:06:30.605>that <00:06:30.760>to, <00:06:30.916>to <00:06:31.071>define <00:06:31.227>behavior <00:06:31.382>in <00:06:31.538>your, <00:06:31.693>in <00:06:31.849>your <00:06:32.005>applications.

156
00:06:34.905 --> 00:06:37.365
<00:06:34.905>So <00:06:35.032>it's <00:06:35.159>gotta <00:06:35.286>go <00:06:35.414>through <00:06:35.541>and <00:06:35.668>it's <00:06:35.795>gotta <00:06:35.923>figure <00:06:36.050>out <00:06:36.177>the <00:06:36.304>order

157
00:06:37.365 --> 00:06:39.925
<00:06:37.365>of <00:06:37.492>the <00:06:37.619>beans <00:06:37.746>that <00:06:37.874>it <00:06:38.001>needs <00:06:38.128>to <00:06:38.255>inject <00:06:38.383>in <00:06:38.510>the <00:06:38.637>right <00:06:38.765>order.

158
00:06:40.085 --> 00:06:41.525
<00:06:40.085>'cause <00:06:40.270>you <00:06:40.455>know, <00:06:40.640>you <00:06:40.825>can <00:06:41.010>inject <00:06:41.195>one <00:06:41.381>bean

159
00:06:41.525 --> 00:06:42.725
<00:06:41.525>into <00:06:41.885>another <00:06:42.245>bean <00:06:42.605>definition.

160
00:06:43.025 --> 00:06:46.125
<00:06:43.025>So <00:06:43.200>it's <00:06:43.375>gotta <00:06:43.549>assemble <00:06:43.724>all <00:06:43.900>this <00:06:44.075>stuff <00:06:44.250>at <00:06:44.424>runtime

161
00:06:46.265 --> 00:06:49.045
<00:06:46.265>before <00:06:46.465>it <00:06:46.664>can <00:06:46.865>actually <00:06:47.065>start <00:06:47.265>your <00:06:47.465>application, <00:06:47.664>right?

162
00:06:49.045 --> 00:06:52.045
<00:06:49.045>So <00:06:49.172>this <00:06:49.299>is <00:06:49.426>all <00:06:49.554>happening <00:06:49.681>at <00:06:49.808>the <00:06:49.935>framework <00:06:50.063>level <00:06:50.190>to <00:06:50.317>be <00:06:50.445>able

163
00:06:52.045 --> 00:06:53.205
<00:06:52.045>to <00:06:52.306>build <00:06:52.567>its <00:06:52.828>model <00:06:53.089>world

164
00:06:53.205 --> 00:06:55.925
<00:06:53.205>before <00:06:53.405>your <00:06:53.604>application <00:06:53.805>is <00:06:54.005>ready <00:06:54.205>to <00:06:54.405>serve <00:06:54.604>requests,

165
00:06:55.925 --> 00:06:58.605
<00:06:55.925>nevermind <00:06:56.100>ready <00:06:56.275>to <00:06:56.450>warm <00:06:56.625>up <00:06:56.800>to <00:06:56.975>get <00:06:57.150>to <00:06:57.325>your,

166
00:06:58.605 --> 00:07:00.645
<00:06:58.605>your <00:06:59.071>peak <00:06:59.538>SLA, <00:07:00.005>right?

167
00:07:00.645 --> 00:07:03.845
<00:07:00.645>And <00:07:00.752>so <00:07:00.860>what <00:07:00.968>we <00:07:01.075>did <00:07:01.183>with <00:07:01.291>Corcus <00:07:01.398>is <00:07:01.506>we <00:07:01.614>kind <00:07:01.721>of <00:07:01.829>took <00:07:01.937>this <00:07:02.044>model

168
00:07:04.425 --> 00:07:05.765
<00:07:04.425>and <00:07:04.666>flipped <00:07:04.907>it <00:07:05.148>on <00:07:05.389>its <00:07:05.631>head

169
00:07:05.765 --> 00:07:07.725
<00:07:05.765>and <00:07:05.905>said, <00:07:06.044>well, <00:07:06.185>if <00:07:06.325>you're <00:07:06.465>running <00:07:06.604>your <00:07:06.745>app <00:07:06.885>in <00:07:07.025>a <00:07:07.164>container,

170
00:07:08.575 --> 00:07:10.445
<00:07:08.575>every <00:07:08.854>instance <00:07:09.135>of <00:07:09.414>the <00:07:09.695>same <00:07:09.974>version

171
00:07:10.465 --> 00:07:13.005
<00:07:10.465>of <00:07:10.640>the <00:07:10.815>same <00:07:10.989>container <00:07:11.164>is <00:07:11.340>exactly <00:07:11.515>the <00:07:11.690>same, <00:07:11.864>right?

172
00:07:13.265 --> 00:07:15.565
<00:07:13.265>So <00:07:13.465>why, <00:07:13.664>if <00:07:13.865>you're <00:07:14.065>gonna <00:07:14.265>scale <00:07:14.465>your <00:07:14.664>applications

173
00:07:15.565 --> 00:07:17.485
<00:07:15.565>horizontally, <00:07:15.798>why <00:07:16.031>should <00:07:16.265>you <00:07:16.498>have <00:07:16.731>to <00:07:16.965>pay

174
00:07:17.585 --> 00:07:20.125
<00:07:17.585>and <00:07:17.784>do <00:07:17.984>that <00:07:18.185>every <00:07:18.385>single <00:07:18.585>time, <00:07:18.784>every <00:07:18.984>instance

175
00:07:20.125 --> 00:07:21.445
<00:07:20.125>of <00:07:20.422>your <00:07:20.719>application <00:07:21.016>starts <00:07:21.313>up?

176
00:07:21.445 --> 00:07:23.365
<00:07:21.445>Because <00:07:21.678>most <00:07:21.911>of <00:07:22.145>the <00:07:22.378>time, <00:07:22.611>most <00:07:22.844>of

177
00:07:23.365 --> 00:07:24.405
<00:07:23.365>what <00:07:23.599>you're <00:07:23.832>doing <00:07:24.067>is <00:07:24.301>static.

178
00:07:25.385 --> 00:07:27.685
<00:07:25.385>Now <00:07:25.512>I <00:07:25.639>know <00:07:25.766>like <00:07:25.894>in <00:07:26.021>the <00:07:26.148>spring <00:07:26.275>security <00:07:26.403>use <00:07:26.530>case, <00:07:26.657>you <00:07:26.784>could,

179
00:07:28.025 --> 00:07:30.405
<00:07:28.025>you <00:07:28.180>know, <00:07:28.336>as <00:07:28.491>a <00:07:28.647>developer <00:07:28.802>you <00:07:28.958>configure <00:07:29.113>it <00:07:29.269>when <00:07:29.424>you're

180
00:07:30.405 --> 00:07:32.485
<00:07:30.405>running <00:07:30.560>it <00:07:30.716>on <00:07:30.871>your <00:07:31.027>laptop <00:07:31.182>that <00:07:31.338>you <00:07:31.493>have <00:07:31.649>no <00:07:31.804>security.

181
00:07:32.905 --> 00:07:34.325
<00:07:32.905>And <00:07:33.087>then <00:07:33.270>when <00:07:33.452>you <00:07:33.635>run <00:07:33.817>it <00:07:34.000>in <00:07:34.183>production,

182
00:07:34.325 --> 00:07:35.485
<00:07:34.325>you've <00:07:34.586>got <00:07:34.847>full <00:07:35.108>security, <00:07:35.369>right?

183
00:07:35.645 --> 00:07:37.365
<00:07:35.645>'cause <00:07:35.800>you <00:07:35.956>don't <00:07:36.111>wanna <00:07:36.267>deal <00:07:36.422>with <00:07:36.578>security <00:07:36.733>on <00:07:36.889>your <00:07:37.044>laptop

184
00:07:37.365 --> 00:07:39.805
<00:07:37.365>and <00:07:37.565>then <00:07:37.765>you <00:07:37.965>do <00:07:38.165>it <00:07:38.365>through <00:07:38.565>configuration, <00:07:38.765>right?

185
00:07:40.025 --> 00:07:41.165
<00:07:40.025>That's, <00:07:40.366>that's <00:07:40.709>the <00:07:41.051>magic.

186
00:07:41.165 --> 00:07:42.885
<00:07:41.165>That's <00:07:41.515>something <00:07:41.865>like <00:07:42.215>spring <00:07:42.565>brings

187
00:07:42.885 --> 00:07:45.245
<00:07:42.885>because <00:07:43.118>you <00:07:43.351>can <00:07:43.585>dynamically <00:07:43.818>change <00:07:44.051>the <00:07:44.284>behavior

188
00:07:45.305 --> 00:07:47.965
<00:07:45.305>of <00:07:45.655>your <00:07:46.005>application <00:07:46.355>through <00:07:46.705>configuration.

189
00:07:48.505 --> 00:07:51.085
<00:07:48.505>Now, <00:07:48.645>if <00:07:48.784>you're <00:07:48.925>only <00:07:49.065>a <00:07:49.205>couple <00:07:49.344>people <00:07:49.485>raise <00:07:49.625>their <00:07:49.765>hand <00:07:49.905>when

190
00:07:51.085 --> 00:07:53.005
<00:07:51.085>they, <00:07:51.224>when <00:07:51.364>I <00:07:51.505>asked <00:07:51.645>if <00:07:51.784>you <00:07:51.924>were <00:07:52.065>doing <00:07:52.205>a <00:07:52.344>native <00:07:52.484>build,

191
00:07:53.005 --> 00:07:55.245
<00:07:53.005>you're <00:07:53.132>not <00:07:53.259>gonna <00:07:53.386>do <00:07:53.514>that <00:07:53.641>when <00:07:53.768>you <00:07:53.895>do <00:07:54.023>a <00:07:54.150>native <00:07:54.277>build, <00:07:54.405>right?

192
00:07:55.265 --> 00:07:58.005
<00:07:55.265>You <00:07:55.405>have <00:07:55.544>to <00:07:55.685>figure <00:07:55.825>out <00:07:55.965>what's <00:07:56.104>the <00:07:56.245>behavior <00:07:56.385>that <00:07:56.525>you <00:07:56.664>want

193
00:07:58.005 --> 00:07:59.445
<00:07:58.005>and <00:07:58.264>then <00:07:58.523>build <00:07:58.782>that, <00:07:59.041>that <00:07:59.301>image

194
00:07:59.445 --> 00:08:01.845
<00:07:59.445>because <00:07:59.572>you <00:07:59.699>have <00:07:59.826>to <00:07:59.954>know <00:08:00.081>ahead <00:08:00.208>of <00:08:00.335>time <00:08:00.463>what <00:08:00.590>you <00:08:00.717>wanna <00:08:00.844>do.

195
00:08:02.105 --> 00:08:05.685
<00:08:02.105>And <00:08:02.260>Corcus <00:08:02.416>tries <00:08:02.571>to <00:08:02.727>take <00:08:02.882>a <00:08:03.038>similar <00:08:03.193>approach, <00:08:03.349>not <00:08:03.505>not

196
00:08:05.685 --> 00:08:06.885
<00:08:05.685>as <00:08:05.955>closed <00:08:06.225>world, <00:08:06.495>but <00:08:06.765>a,

197
00:08:06.925 --> 00:08:09.565
<00:08:06.925>a <00:08:07.125>more <00:08:07.325>closed <00:08:07.525>world <00:08:07.725>approach <00:08:07.925>at <00:08:08.125>build <00:08:08.325>time.

198
00:08:10.025 --> 00:08:13.805
<00:08:10.025>So <00:08:10.180>that <00:08:10.336>all <00:08:10.491>of <00:08:10.647>that <00:08:10.802>stuff <00:08:10.958>and <00:08:11.113>the <00:08:11.269>beam <00:08:11.424>definitions

199
00:08:13.805 --> 00:08:15.405
<00:08:13.805>and <00:08:14.005>the <00:08:14.205>proxies, <00:08:14.405>anybody <00:08:14.605>ever <00:08:14.805>put <00:08:15.005>a <00:08:15.205>break

200
00:08:15.405 --> 00:08:16.605
<00:08:15.405>point <00:08:15.674>in <00:08:15.945>your <00:08:16.215>spring <00:08:16.485>application?

201
00:08:16.605 --> 00:08:19.045
<00:08:16.605>And <00:08:16.760>when <00:08:16.916>you <00:08:17.071>debug <00:08:17.227>into <00:08:17.382>like <00:08:17.538>an <00:08:17.693>auto <00:08:17.849>wired <00:08:18.005>field,

202
00:08:19.185 --> 00:08:20.405
<00:08:19.185>you've <00:08:19.404>gotta <00:08:19.624>go <00:08:19.843>through <00:08:20.063>like <00:08:20.282>five

203
00:08:20.405 --> 00:08:22.605
<00:08:20.405>or <00:08:20.638>six <00:08:20.871>layers <00:08:21.104>of <00:08:21.338>GDK <00:08:21.571>dynamic <00:08:21.804>proxies

204
00:08:22.605 --> 00:08:25.165
<00:08:22.605>before <00:08:22.805>you <00:08:23.005>get <00:08:23.205>to <00:08:23.405>the <00:08:23.605>actual <00:08:23.805>thing, <00:08:24.005>right?

205
00:08:25.205 --> 00:08:26.565
<00:08:25.205>I <00:08:25.379>see <00:08:25.554>a <00:08:25.729>couple <00:08:25.904>of <00:08:26.079>people <00:08:26.254>head <00:08:26.429>nodding

206
00:08:26.865 --> 00:08:28.925
<00:08:26.865>and <00:08:27.040>corcus <00:08:27.215>that <00:08:27.390>injection <00:08:27.565>is <00:08:27.740>done <00:08:27.915>at <00:08:28.090>build <00:08:28.265>time

207
00:08:28.945 --> 00:08:31.325
<00:08:28.945>and <00:08:29.178>at <00:08:29.411>runtime <00:08:29.645>it's <00:08:29.878>just <00:08:30.111>directly <00:08:30.344>linked

208
00:08:31.325 --> 00:08:33.725
<00:08:31.325>and <00:08:31.465>statically <00:08:31.604>linked <00:08:31.745>and <00:08:31.885>the <00:08:32.025>just <00:08:32.164>in <00:08:32.304>time <00:08:32.444>compiler <00:08:32.585>code <00:08:32.725>is

209
00:08:33.725 --> 00:08:35.205
<00:08:33.725>already <00:08:34.169>generated <00:08:34.613>for <00:08:35.057>you.

210
00:08:35.225 --> 00:08:38.365
<00:08:35.225>So <00:08:35.425>your <00:08:35.625>application <00:08:35.825>is <00:08:36.025>already <00:08:36.225>kind <00:08:36.425>of <00:08:36.625>prewarm.

211
00:08:39.875 --> 00:08:42.845
<00:08:39.875>Does <00:08:40.030>that <00:08:40.186>make <00:08:40.341>sense? <00:08:40.497>It's <00:08:40.652>kind <00:08:40.808>of <00:08:40.963>like, <00:08:41.119>it's <00:08:41.275>something

212
00:08:42.845 --> 00:08:44.725
<00:08:42.845>that <00:08:42.985>you, <00:08:43.125>we <00:08:43.265>should <00:08:43.405>have <00:08:43.545>thought <00:08:43.685>of <00:08:43.825>a <00:08:43.965>long <00:08:44.105>time <00:08:44.245>ago

213
00:08:44.725 --> 00:08:45.725
<00:08:44.725>and <00:08:44.905>said, <00:08:45.085>oh <00:08:45.265>yeah, <00:08:45.445>that, <00:08:45.625>that

214
00:08:45.725 --> 00:08:46.885
<00:08:45.725>makes, <00:08:45.899>that <00:08:46.073>makes <00:08:46.247>a <00:08:46.421>lot <00:08:46.595>of <00:08:46.769>sense.

215
00:08:46.945 --> 00:08:48.485
<00:08:46.945>Why <00:08:47.143>didn't <00:08:47.341>we <00:08:47.539>do <00:08:47.737>that <00:08:47.935>20 <00:08:48.133>years <00:08:48.331>ago?

216
00:08:48.555 --> 00:08:50.565
<00:08:48.555>Well, <00:08:48.834>because <00:08:49.114>we've <00:08:49.395>kind <00:08:49.675>of, <00:08:49.954>we've,

217
00:08:50.565 --> 00:08:51.605
<00:08:50.565>we've <00:08:50.799>gone <00:08:51.033>through <00:08:51.267>this <00:08:51.501>right?

218
00:08:51.605 --> 00:08:54.165
<00:08:51.605>Once <00:08:51.760>run <00:08:51.916>anywhere, <00:08:52.071>but <00:08:52.227>now <00:08:52.382>we <00:08:52.538>always <00:08:52.693>run <00:08:52.849>on <00:08:53.005>anybody

219
00:08:54.185 --> 00:08:55.360
<00:08:54.185>run <00:08:54.396>in <00:08:54.608>production <00:08:54.819>on, <00:08:55.031>on <00:08:55.242>Windows?

220
00:08:56.475 --> 00:08:59.645
<00:08:56.475>Okay <00:08:56.615>good. <00:08:56.755>So <00:08:56.895>we <00:08:57.035>all <00:08:57.175>run <00:08:57.315>in <00:08:57.455>production <00:08:57.595>on <00:08:57.735>Linux, <00:08:57.875>right?

221
00:09:00.105 --> 00:09:03.085
<00:09:00.105>So <00:09:00.280>if <00:09:00.455>you <00:09:00.630>know <00:09:00.805>your <00:09:00.980>target <00:09:01.155>environment <00:09:01.330>is <00:09:01.505>Linux,

222
00:09:03.345 --> 00:09:05.485
<00:09:03.345>you <00:09:03.520>could <00:09:03.695>then <00:09:03.870>take <00:09:04.045>your <00:09:04.220>application, <00:09:04.395>compile <00:09:04.570>it <00:09:04.745>down

223
00:09:05.485 --> 00:09:06.485
<00:09:05.485>and <00:09:05.785>remove <00:09:06.085>the <00:09:06.385>JVM.

224
00:09:06.485 --> 00:09:07.725
<00:09:06.485>So <00:09:06.671>we've <00:09:06.857>kind <00:09:07.043>of <00:09:07.229>come <00:09:07.415>full <00:09:07.601>circle,

225
00:09:07.785 --> 00:09:09.085
<00:09:07.785>we <00:09:08.077>build <00:09:08.370>a <00:09:08.662>Java <00:09:08.955>application

226
00:09:09.385 --> 00:09:12.285
<00:09:09.385>and <00:09:09.501>then <00:09:09.618>we <00:09:09.735>use <00:09:09.851>GU <00:09:09.968>VM <00:09:10.085>to <00:09:10.201>compile <00:09:10.318>it <00:09:10.435>to <00:09:10.551>a <00:09:10.668>native <00:09:10.785>image

227
00:09:12.285 --> 00:09:13.885
<00:09:12.285>and <00:09:12.518>we <00:09:12.751>remove <00:09:12.985>the <00:09:13.218>JVM <00:09:13.451>from <00:09:13.685>it.

228
00:09:13.885 --> 00:09:17.965
<00:09:13.885>So <00:09:14.025>now <00:09:14.165>we <00:09:14.305>have <00:09:14.444>uh, <00:09:14.585>an <00:09:14.725>application <00:09:14.865>that's, <00:09:15.005>uh, <00:09:15.145>that's <00:09:15.285>meant

229
00:09:17.985 --> 00:09:20.725
<00:09:17.985>for <00:09:18.265>our, <00:09:18.545>our <00:09:18.825>our <00:09:19.105>target <00:09:19.385>platform.

230
00:09:21.065 --> 00:09:23.085
<00:09:21.065>So <00:09:21.298>anybody <00:09:21.531>on <00:09:21.765>the <00:09:21.998>operations <00:09:22.231>side <00:09:22.465>here?

231
00:09:24.155 --> 00:09:25.655
<00:09:24.155>No, <00:09:24.425>no <00:09:24.694>op, <00:09:24.964>no <00:09:25.235>ops <00:09:25.505>people.

232
00:09:25.875 --> 00:09:29.255
<00:09:25.875>So <00:09:25.975>what <00:09:26.075>if <00:09:26.175>I <00:09:26.275>told <00:09:26.375>you <00:09:26.475>if, <00:09:26.575>if <00:09:26.675>you <00:09:26.775>have <00:09:26.875>any <00:09:26.975>idea <00:09:27.075>what <00:09:27.175>it <00:09:27.275>costs

233
00:09:29.255 --> 00:09:32.615
<00:09:29.255>to <00:09:29.430>run <00:09:29.605>all <00:09:29.780>your <00:09:29.955>job <00:09:30.130>real <00:09:30.305>estate <00:09:30.480>in <00:09:30.655>production,

234
00:09:32.685 --> 00:09:35.095
<00:09:32.685>what <00:09:32.801>if <00:09:32.918>you <00:09:33.035>could <00:09:33.151>cut <00:09:33.268>that <00:09:33.385>cost <00:09:33.501>in <00:09:33.618>half, <00:09:33.734>you <00:09:33.851>could <00:09:33.968>go <00:09:34.084>back

235
00:09:35.095 --> 00:09:37.655
<00:09:35.095>to <00:09:35.295>your, <00:09:35.495>your <00:09:35.695>operations <00:09:35.895>team, <00:09:36.095>your <00:09:36.295>DevOps <00:09:36.495>team

236
00:09:37.655 --> 00:09:39.415
<00:09:37.655>and <00:09:37.829>say, <00:09:38.005>Hey, <00:09:38.180>I <00:09:38.355>was <00:09:38.530>at, <00:09:38.704>we <00:09:38.880>are <00:09:39.055>developers

237
00:09:39.555 --> 00:09:42.015
<00:09:39.555>and <00:09:39.729>I <00:09:39.905>learned <00:09:40.079>just <00:09:40.255>we <00:09:40.430>could <00:09:40.604>save <00:09:40.780>half <00:09:40.954>of

238
00:09:42.015 --> 00:09:43.295
<00:09:42.015>what <00:09:42.207>we <00:09:42.399>spend <00:09:42.591>Do <00:09:42.783>you, <00:09:42.975>do <00:09:43.166>you,

239
00:09:43.795 --> 00:09:45.215
<00:09:43.795>do <00:09:43.977>you <00:09:44.160>think <00:09:44.342>they <00:09:44.525>they <00:09:44.707>would <00:09:44.890>like <00:09:45.073>you

240
00:09:45.395 --> 00:09:46.535
<00:09:45.395>and <00:09:45.523>they <00:09:45.651>pay <00:09:45.779>for <00:09:45.908>you <00:09:46.036>to <00:09:46.164>go <00:09:46.292>to <00:09:46.420>more

241
00:09:46.535 --> 00:09:48.015
<00:09:46.535>conferences <00:09:46.867>in <00:09:47.201>in <00:09:47.534>the <00:09:47.867>future?

242
00:09:48.675 --> 00:09:50.335
<00:09:48.675>So <00:09:48.802>that's <00:09:48.929>what <00:09:49.056>I <00:09:49.184>wanna <00:09:49.311>do. <00:09:49.438>I <00:09:49.565>wanna <00:09:49.693>prove <00:09:49.820>it <00:09:49.947>to <00:09:50.074>you

243
00:09:50.535 --> 00:09:52.255
<00:09:50.535>and <00:09:50.709>I'm <00:09:50.885>gonna <00:09:51.060>apologize <00:09:51.235>for <00:09:51.410>people <00:09:51.584>in <00:09:51.760>the <00:09:51.935>back

244
00:09:52.255 --> 00:09:53.375
<00:09:52.255>because <00:09:52.591>I'm <00:09:52.927>not <00:09:53.263>sure

245
00:09:53.375 --> 00:09:55.015
<00:09:53.375>how <00:09:53.550>much <00:09:53.725>you're <00:09:53.900>actually <00:09:54.075>gonna <00:09:54.250>be <00:09:54.425>able <00:09:54.600>to <00:09:54.775>see.

246
00:09:58.215 --> 00:09:59.115
<00:09:58.215>You're <00:09:58.350>not <00:09:58.485>gonna <00:09:58.620>be <00:09:58.755>able <00:09:58.890>to <00:09:59.025>see

247
00:09:59.275 --> 00:10:00.435
<00:09:59.275>anything <00:09:59.449>'cause <00:09:59.622>it <00:09:59.796>didn't <00:09:59.971>switch <00:10:00.145>up <00:10:00.319>here.

248
00:10:04.385 --> 00:10:08.335
<00:10:04.385>It's, <00:10:05.785>yeah,

249
00:10:08.335 --> 00:10:09.775
<00:10:08.335>what <00:10:08.520>I'm <00:10:08.705>seeing <00:10:08.890>here <00:10:09.075>is <00:10:09.260>not <00:10:09.445>what's <00:10:09.631>here.

250
00:10:17.875 --> 00:10:19.265
<00:10:17.875>Sorry. <00:10:18.292>Technical <00:10:18.709>glitch <00:10:19.126>here.

251
00:10:20.755 --> 00:10:22.325
<00:10:20.755>Yeah, <00:10:20.988>what <00:10:21.221>I'm <00:10:21.455>seeing <00:10:21.688>here, <00:10:21.921>isn't <00:10:22.155>there

252
00:10:22.945 --> 00:10:25.565
<00:10:22.945>The <00:10:23.411>same <00:10:23.878>mirror <00:10:24.345>desktop?

253
00:10:25.565 --> 00:10:30.295
<00:10:25.565>Yes. <00:10:25.765>Yeah. <00:10:25.965>Ah, <00:10:26.165>you <00:10:26.365>uh, <00:10:26.565>close <00:10:26.765>the <00:10:26.965>presentation.

254
00:10:30.985 --> 00:10:33.765
<00:10:30.985>Ah, <00:10:31.185>there <00:10:31.385>we <00:10:31.585>go. <00:10:31.785>My <00:10:31.985>fault. <00:10:32.185>Thank <00:10:32.385>you.

255
00:10:34.515 --> 00:10:36.805
<00:10:34.515>Alright, <00:10:34.715>so <00:10:34.915>I've <00:10:35.115>got <00:10:35.314>a <00:10:35.515>spring <00:10:35.715>boot <00:10:35.915>application

256
00:10:36.825 --> 00:10:38.485
<00:10:36.825>and <00:10:37.105>I <00:10:37.385>picked, <00:10:37.665>everybody <00:10:37.945>is <00:10:38.225>familiar

257
00:10:38.485 --> 00:10:39.765
<00:10:38.485>with <00:10:38.715>Spring <00:10:38.945>NBC <00:10:39.176>and <00:10:39.406>spring <00:10:39.637>data.

258
00:10:39.965 --> 00:10:42.445
<00:10:39.965>JPA, <00:10:40.245>not <00:10:40.525>nothing <00:10:40.805>rocket <00:10:41.085>science <00:10:41.365>here.

259
00:10:42.785 --> 00:10:44.365
<00:10:42.785>Um, <00:10:43.018>so <00:10:43.251>I've <00:10:43.485>got <00:10:43.718>a <00:10:43.951>spring <00:10:44.185>application

260
00:10:44.365 --> 00:10:46.085
<00:10:44.365>and <00:10:44.565>this <00:10:44.765>example <00:10:44.965>is <00:10:45.165>actually <00:10:45.365>in <00:10:45.565>my <00:10:45.765>book.

261
00:10:46.225 --> 00:10:48.645
<00:10:46.225>So <00:10:46.380>it <00:10:46.536>comes <00:10:46.691>right <00:10:46.847>from, <00:10:47.002>right <00:10:47.158>from <00:10:47.313>the, <00:10:47.469>my <00:10:47.625>book.

262
00:10:49.155 --> 00:10:50.605
<00:10:49.155>I've <00:10:49.481>got <00:10:49.807>a <00:10:50.133>simple <00:10:50.460>application.

263
00:10:50.675 --> 00:10:53.165
<00:10:50.675>I've <00:10:50.830>got <00:10:50.986>the <00:10:51.141>spring <00:10:51.297>boot <00:10:51.452>main <00:10:51.608>class <00:10:51.763>that <00:10:51.919>everybody <00:10:52.074>has

264
00:10:53.195 --> 00:10:56.485
<00:10:53.195>that <00:10:53.350>nobody <00:10:53.506>ever <00:10:53.661>touches <00:10:53.817>except <00:10:53.972>when <00:10:54.128>you <00:10:54.283>do <00:10:54.439>live <00:10:54.595>demos

265
00:10:56.485 --> 00:10:58.485
<00:10:56.485>and <00:10:56.640>you <00:10:56.796>code <00:10:56.951>your <00:10:57.107>whole <00:10:57.262>application <00:10:57.418>in <00:10:57.573>that <00:10:57.729>one <00:10:57.885>class.

266
00:10:59.195 --> 00:11:02.805
<00:10:59.195>I've <00:10:59.370>got <00:10:59.545>a <00:10:59.720>JPA <00:10:59.895>entity <00:11:00.070>class, <00:11:00.245>which, <00:11:00.420>you <00:11:00.595>know,

267
00:11:02.875 --> 00:11:04.565
<00:11:02.875>it's <00:11:03.075>got <00:11:03.275>a <00:11:03.475>couple <00:11:03.675>fields, <00:11:03.875>it's <00:11:04.075>pretty <00:11:04.275>simple,

268
00:11:05.225 --> 00:11:06.445
<00:11:05.225>not <00:11:05.408>a <00:11:05.591>whole <00:11:05.774>lot <00:11:05.957>going <00:11:06.140>on <00:11:06.323>there.

269
00:11:06.515 --> 00:11:09.765
<00:11:06.515>I've <00:11:06.670>got <00:11:06.826>a <00:11:06.981>spring <00:11:07.137>data, <00:11:07.292>JPA <00:11:07.448>repository <00:11:07.603>class <00:11:07.759>or <00:11:07.915>interface.

270
00:11:10.625 --> 00:11:13.205
<00:11:10.625>And <00:11:10.800>then <00:11:10.975>I've <00:11:11.150>got <00:11:11.325>a <00:11:11.500>Spring <00:11:11.675>MVC <00:11:11.850>controller <00:11:12.025>class,

271
00:11:13.205 --> 00:11:14.605
<00:11:13.205>which <00:11:13.457>has <00:11:13.709>a <00:11:13.961>couple <00:11:14.213>of <00:11:14.465>endpoints.

272
00:11:14.975 --> 00:11:17.365
<00:11:14.975>Looks <00:11:15.175>pretty <00:11:15.375>simple. <00:11:15.575>I'm, <00:11:15.775>I'm <00:11:15.975>wearing <00:11:16.175>short <00:11:16.375>sleeves,

273
00:11:17.365 --> 00:11:19.205
<00:11:17.365>I <00:11:17.520>don't <00:11:17.676>have <00:11:17.831>any <00:11:17.987>magic <00:11:18.142>up <00:11:18.298>my <00:11:18.453>sleeves <00:11:18.609>or <00:11:18.765>anything.

274
00:11:19.785 --> 00:11:22.205
<00:11:19.785>So <00:11:19.912>what <00:11:20.039>I'm <00:11:20.166>gonna <00:11:20.294>do <00:11:20.421>is <00:11:20.548>I'm, <00:11:20.675>first, <00:11:20.803>I'm <00:11:20.930>gonna <00:11:21.057>compile <00:11:21.185>this,

275
00:11:22.335 --> 00:11:23.525
<00:11:22.335>which <00:11:22.549>I <00:11:22.763>should <00:11:22.977>have <00:11:23.191>done <00:11:23.406>beforehand

276
00:11:26.525 --> 00:11:28.585
<00:11:26.525>and <00:11:26.665>I <00:11:26.805>removed <00:11:26.944>all <00:11:27.084>the <00:11:27.225>tests <00:11:27.365>'cause <00:11:27.505>nobody <00:11:27.645>cares <00:11:27.785>about <00:11:27.925>tests.

277
00:11:28.605 --> 00:11:30.545
<00:11:28.605>If <00:11:28.732>you <00:11:28.859>care <00:11:28.986>about <00:11:29.114>tests, <00:11:29.241>I <00:11:29.368>have <00:11:29.495>another <00:11:29.623>talk <00:11:29.750>at <00:11:29.877>three <00:11:30.005>30

278
00:11:30.545 --> 00:11:33.145
<00:11:30.545>where <00:11:30.719>I'm <00:11:30.895>gonna <00:11:31.069>talk <00:11:31.245>not <00:11:31.420>about <00:11:31.594>anything <00:11:31.770>but <00:11:31.944>tests.

279
00:11:33.285 --> 00:11:34.705
<00:11:33.285>So <00:11:33.604>come <00:11:33.924>back <00:11:34.243>to <00:11:34.563>that.

280
00:11:34.705 --> 00:11:36.545
<00:11:34.705>Talk <00:11:34.985>about, <00:11:35.265>about <00:11:35.545>test <00:11:35.825>driven <00:11:36.105>development.

281
00:11:37.245 --> 00:11:40.065
<00:11:37.245>Um, <00:11:37.361>so <00:11:37.478>what <00:11:37.595>I'm <00:11:37.711>gonna <00:11:37.828>do <00:11:37.945>here <00:11:38.061>is <00:11:38.178>I <00:11:38.295>have, <00:11:38.411>uh, <00:11:38.528>I'm <00:11:38.645>gonna,

282
00:11:40.205 --> 00:11:41.345
<00:11:40.205>it <00:11:40.547>requires <00:11:40.889>a <00:11:41.231>database.

283
00:11:41.345 --> 00:11:44.945
<00:11:41.345>So <00:11:41.545>I'm <00:11:41.745>just <00:11:41.945>gonna <00:11:42.145>run <00:11:42.345>a <00:11:42.545>Postgres <00:11:42.745>database

284
00:11:45.145 --> 00:11:46.785
<00:11:45.145>'cause <00:11:45.319>that's <00:11:45.495>our, <00:11:45.670>you <00:11:45.845>know, <00:11:46.020>in <00:11:46.194>development <00:11:46.370>that's <00:11:46.545>kind

285
00:11:46.785 --> 00:11:49.025
<00:11:46.785>of <00:11:46.912>our <00:11:47.039>favorite <00:11:47.166>database <00:11:47.294>and <00:11:47.421>I'm <00:11:47.548>gonna <00:11:47.675>run <00:11:47.803>it <00:11:47.930>as <00:11:48.057>a <00:11:48.185>container

286
00:11:49.725 --> 00:11:52.825
<00:11:49.725>and <00:11:49.925>then <00:11:50.125>I'm <00:11:50.325>going <00:11:50.525>to <00:11:50.725>run <00:11:50.925>my <00:11:51.125>application.

287
00:11:53.185 --> 00:11:57.615
<00:11:53.185>But <00:11:53.340>when <00:11:53.496>you <00:11:53.651>start <00:11:53.807>doing <00:11:53.962>benchmarking, <00:11:54.118>there's <00:11:54.273>kind <00:11:54.429>of <00:11:54.584>a,

288
00:11:57.655 --> 00:11:58.855
<00:11:57.655>a <00:11:57.925>golden <00:11:58.194>rule <00:11:58.465>of <00:11:58.735>benchmarking.

289
00:11:58.855 --> 00:12:00.215
<00:11:58.855>You <00:11:59.059>never <00:11:59.263>just <00:11:59.467>wanna <00:11:59.671>run <00:11:59.875>it <00:12:00.079>once.

290
00:12:00.435 --> 00:12:02.895
<00:12:00.435>And <00:12:00.590>when <00:12:00.746>you <00:12:00.901>start <00:12:01.057>up <00:12:01.212>an <00:12:01.368>application, <00:12:01.523>you <00:12:01.679>know, <00:12:01.834>spring

291
00:12:02.955 --> 00:12:04.375
<00:12:02.955>or <00:12:03.274>micro <00:12:03.594>no <00:12:03.913>or <00:12:04.233>Hedon

292
00:12:04.375 --> 00:12:07.215
<00:12:04.375>or <00:12:04.515>Corcus, <00:12:04.655>they <00:12:04.795>all <00:12:04.935>say, <00:12:05.075>Hey, <00:12:05.215>I <00:12:05.355>started <00:12:05.495>my <00:12:05.635>application <00:12:05.775>in

293
00:12:07.805 --> 00:12:09.095
<00:12:07.805>five <00:12:08.192>seconds, <00:12:08.579>two <00:12:08.966>seconds.

294
00:12:09.125 --> 00:12:12.255
<00:12:09.125>Does <00:12:09.325>anybody <00:12:09.525>trust <00:12:09.725>that <00:12:09.925>number? <00:12:10.125>They <00:12:10.325>all <00:12:10.525>lie.

295
00:12:12.805 --> 00:12:14.575
<00:12:12.805>Even <00:12:13.084>Corcus <00:12:13.364>lies. <00:12:13.645>They <00:12:13.925>all <00:12:14.204>lie.

296
00:12:14.675 --> 00:12:16.535
<00:12:14.675>So <00:12:14.908>the <00:12:15.141>the <00:12:15.375>metric <00:12:15.608>that <00:12:15.841>I <00:12:16.074>like

297
00:12:16.535 --> 00:12:18.215
<00:12:16.535>to <00:12:16.768>use <00:12:17.001>is <00:12:17.235>time <00:12:17.468>to <00:12:17.701>first <00:12:17.935>request.

298
00:12:18.455 --> 00:12:20.655
<00:12:18.455>'cause <00:12:18.688>that's, <00:12:18.921>to <00:12:19.155>me <00:12:19.388>that's <00:12:19.621>more <00:12:19.855>meaningful

299
00:12:20.655 --> 00:12:22.735
<00:12:20.655>because <00:12:20.935>some <00:12:21.214>frameworks <00:12:21.495>are <00:12:21.775>very <00:12:22.055>lazy.

300
00:12:22.965 --> 00:12:24.455
<00:12:22.965>Like <00:12:23.233>they'll <00:12:23.501>start <00:12:23.769>up <00:12:24.037>really <00:12:24.306>fast,

301
00:12:24.515 --> 00:12:26.335
<00:12:24.515>but <00:12:24.689>you <00:12:24.865>pay <00:12:25.040>the <00:12:25.215>price <00:12:25.390>on <00:12:25.564>that <00:12:25.740>first <00:12:25.915>request.

302
00:12:26.345 --> 00:12:29.535
<00:12:26.345>Other <00:12:26.545>frameworks <00:12:26.745>will, <00:12:26.945>are, <00:12:27.145>will <00:12:27.345>initialize <00:12:27.545>things <00:12:27.745>eagerly.

303
00:12:29.635 --> 00:12:31.775
<00:12:29.635>So <00:12:29.790>they <00:12:29.946>may <00:12:30.101>take <00:12:30.257>a <00:12:30.412>little <00:12:30.568>bit <00:12:30.723>longer <00:12:30.879>to <00:12:31.035>start,

304
00:12:31.835 --> 00:12:34.575
<00:12:31.835>but <00:12:31.990>the <00:12:32.146>first <00:12:32.301>request <00:12:32.457>is <00:12:32.612>really <00:12:32.768>fast <00:12:32.923>to <00:12:33.079>me <00:12:33.235>as,

305
00:12:34.795 --> 00:12:37.095
<00:12:34.795>as <00:12:35.074>someone <00:12:35.354>who's <00:12:35.635>building <00:12:35.915>an <00:12:36.194>application,

306
00:12:37.115 --> 00:12:39.735
<00:12:37.115>all <00:12:37.242>I <00:12:37.369>care <00:12:37.496>about <00:12:37.624>is <00:12:37.751>my <00:12:37.878>application <00:12:38.005>ready <00:12:38.133>to <00:12:38.260>do <00:12:38.387>the <00:12:38.515>work

307
00:12:39.735 --> 00:12:40.735
<00:12:39.735>that <00:12:39.915>I <00:12:40.095>need <00:12:40.275>it <00:12:40.455>to <00:12:40.635>do.

308
00:12:40.915 --> 00:12:43.535
<00:12:40.915>And <00:12:41.089>to <00:12:41.265>me <00:12:41.439>that's <00:12:41.615>time <00:12:41.790>to <00:12:41.964>first <00:12:42.140>request, <00:12:42.314>right?

309
00:12:44.195 --> 00:12:46.135
<00:12:44.195>So, <00:12:44.395>and <00:12:44.595>rather <00:12:44.795>than <00:12:44.995>do <00:12:45.195>it <00:12:45.395>just <00:12:45.595>once,

310
00:12:46.215 --> 00:12:48.295
<00:12:46.215>I <00:12:46.370>wanna <00:12:46.526>do <00:12:46.681>it <00:12:46.837>multiple <00:12:46.992>times <00:12:47.148>and <00:12:47.303>take <00:12:47.459>an <00:12:47.615>average.

311
00:12:48.535 --> 00:12:50.015
<00:12:48.535>'cause <00:12:48.801>there's <00:12:49.067>always <00:12:49.334>an <00:12:49.600>outlier, <00:12:49.867>right?

312
00:12:50.035 --> 00:12:51.575
<00:12:50.035>So <00:12:50.312>you <00:12:50.589>wanna <00:12:50.866>eliminate <00:12:51.143>the <00:12:51.421>outlier.

313
00:12:51.575 --> 00:12:53.695
<00:12:51.575>So <00:12:51.715>when <00:12:51.855>I <00:12:51.995>do <00:12:52.135>this <00:12:52.275>in <00:12:52.415>a, <00:12:52.555>in <00:12:52.695>a <00:12:52.835>benchmarking <00:12:52.975>environment,

314
00:12:53.735 --> 00:12:57.015
<00:12:53.735>I <00:12:53.851>like <00:12:53.968>to <00:12:54.085>do <00:12:54.201>it <00:12:54.318>10 <00:12:54.435>times, <00:12:54.551>but <00:12:54.668>I've <00:12:54.785>only <00:12:54.901>got <00:12:55.018>17 <00:12:55.135>minutes.

315
00:12:57.275 --> 00:12:58.735
<00:12:57.275>So <00:12:57.420>I'm <00:12:57.567>only <00:12:57.713>gonna <00:12:57.859>do <00:12:58.005>it <00:12:58.151>a <00:12:58.297>couple <00:12:58.443>of <00:12:58.589>times.

316
00:12:59.395 --> 00:13:03.735
<00:12:59.395>So <00:12:59.535>I <00:12:59.675>have <00:12:59.814>a <00:12:59.954>script <00:13:00.095>here <00:13:00.235>where <00:13:00.375>I <00:13:00.515>can <00:13:00.655>say <00:13:00.795>time

317
00:13:03.735 --> 00:13:08.375
<00:13:03.735>to <00:13:03.875>first <00:13:04.015>request <00:13:04.155>and <00:13:04.295>I <00:13:04.435>can <00:13:04.575>run <00:13:04.715>my <00:13:04.855>application <00:13:04.995>three <00:13:05.135>times

318
00:13:08.635 --> 00:13:10.255
<00:13:08.635>and <00:13:08.915>it's <00:13:09.194>gonna <00:13:09.475>keep <00:13:09.755>track <00:13:10.035>of

319
00:13:10.255 --> 00:13:12.415
<00:13:10.255>and <00:13:10.410>it's <00:13:10.566>gonna <00:13:10.721>aggregate <00:13:10.877>time <00:13:11.032>to <00:13:11.188>first <00:13:11.343>request <00:13:11.499>as <00:13:11.655>well

320
00:13:12.415 --> 00:13:15.495
<00:13:12.415>as <00:13:12.589>RSS <00:13:12.765>and <00:13:12.939>RSS <00:13:13.115>being <00:13:13.290>the <00:13:13.464>resident <00:13:13.640>set <00:13:13.814>size,

321
00:13:15.495 --> 00:13:18.335
<00:13:15.495>which <00:13:15.670>is <00:13:15.845>the <00:13:16.020>total <00:13:16.195>memory <00:13:16.370>usage <00:13:16.545>of <00:13:16.720>my <00:13:16.895>application,

322
00:13:18.405 --> 00:13:21.095
<00:13:18.405>heap <00:13:18.605>off <00:13:18.805>heap, <00:13:19.005>how <00:13:19.204>much <00:13:19.405>space, <00:13:19.605>the <00:13:19.805>the

323
00:13:21.475 --> 00:13:23.775
<00:13:21.475>or <00:13:21.630>how, <00:13:21.786>what <00:13:21.941>the <00:13:22.097>total <00:13:22.252>process <00:13:22.408>space <00:13:22.563>for <00:13:22.719>that <00:13:22.875>is.

324
00:13:24.555 --> 00:13:28.015
<00:13:24.555>And <00:13:24.694>if <00:13:24.834>I <00:13:24.974>run <00:13:25.114>this <00:13:25.255>application, <00:13:25.395>it's <00:13:25.535>gonna <00:13:25.675>go <00:13:25.814>a <00:13:25.954>couple

325
00:13:28.015 --> 00:13:30.015
<00:13:28.015>of <00:13:28.155>times <00:13:28.295>and <00:13:28.435>I'm <00:13:28.574>gonna <00:13:28.715>start <00:13:28.855>to <00:13:28.995>take <00:13:29.135>some <00:13:29.275>notes <00:13:29.415>here

326
00:13:30.015 --> 00:13:32.375
<00:13:30.015>and <00:13:30.155>I'm <00:13:30.295>just <00:13:30.435>gonna <00:13:30.574>do <00:13:30.715>it <00:13:30.855>in <00:13:30.995>my <00:13:31.135>read <00:13:31.275>me <00:13:31.415>here.

327
00:13:32.595 --> 00:13:37.485
<00:13:32.595>Spring <00:13:32.875>time <00:13:33.155>to <00:13:33.435>first <00:13:33.715>request <00:13:33.995>was

328
00:13:38.145 --> 00:13:39.845
<00:13:38.145>2.135 <00:13:39.545>seconds

329
00:13:40.105 --> 00:13:42.205
<00:13:40.105>and <00:13:40.571>my <00:13:41.038>RSS <00:13:41.505>was

330
00:13:42.755 --> 00:13:46.525
<00:13:42.755>4 <00:13:43.221>27 <00:13:43.688>0.6 <00:13:44.155>megs.

331
00:13:46.635 --> 00:13:48.485
<00:13:46.635>Does <00:13:46.915>anybody <00:13:47.194>think <00:13:47.475>that <00:13:47.755>that's <00:13:48.035>unreasonable

332
00:13:48.485 --> 00:13:49.565
<00:13:48.485>for <00:13:48.809>a <00:13:49.133>spring <00:13:49.457>application?

333
00:13:49.585 --> 00:13:53.045
<00:13:49.585>It <00:13:49.818>seem <00:13:50.051>sounds <00:13:50.285>pretty, <00:13:50.518>pretty, <00:13:50.751>somewhat <00:13:50.985>normal.

334
00:13:54.005 --> 00:13:56.375
<00:13:54.005>Does <00:13:54.180>anybody <00:13:54.355>think <00:13:54.530>that's <00:13:54.705>abnormal <00:13:54.880>for <00:13:55.055>a <00:13:55.230>spring <00:13:55.405>app?

335
00:13:56.995 --> 00:13:59.735
<00:13:56.995>No, <00:13:57.122>I <00:13:57.249>got <00:13:57.376>one <00:13:57.504>hand <00:13:57.631>in <00:13:57.758>the <00:13:57.885>back <00:13:58.013>that <00:13:58.140>thinks <00:13:58.267>it's <00:13:58.395>abnormal.

336
00:13:59.735 --> 00:14:01.375
<00:13:59.735>Come <00:13:59.910>see <00:14:00.085>me <00:14:00.260>after <00:14:00.435>we <00:14:00.610>can <00:14:00.785>talk <00:14:00.960>about <00:14:01.135>it.

337
00:14:03.685 --> 00:14:06.975
<00:14:03.685>Anybody <00:14:03.859>doing <00:14:04.035>the, <00:14:04.209>the <00:14:04.385>a <00:14:04.560>OT <00:14:04.734>compilation <00:14:04.910>with <00:14:05.084>spring,

338
00:14:07.035 --> 00:14:09.375
<00:14:07.035>you <00:14:07.209>know <00:14:07.385>with <00:14:07.560>spring <00:14:07.735>three <00:14:07.910>they <00:14:08.084>started <00:14:08.260>to <00:14:08.435>introduce

339
00:14:09.375 --> 00:14:13.015
<00:14:09.375>that <00:14:09.530>a <00:14:09.686>OT <00:14:09.841>thing <00:14:09.997>where <00:14:10.152>they, <00:14:10.308>they <00:14:10.463>do <00:14:10.619>some <00:14:10.775>ahead

340
00:14:13.015 --> 00:14:15.495
<00:14:13.015>of <00:14:13.365>time <00:14:13.715>compilation <00:14:14.064>to <00:14:14.415>try

341
00:14:15.495 --> 00:14:17.015
<00:14:15.495>to <00:14:15.723>boost <00:14:15.951>the <00:14:16.179>performance <00:14:16.407>of <00:14:16.635>the <00:14:16.863>application.

342
00:14:17.015 --> 00:14:19.015
<00:14:17.015>So <00:14:17.155>I <00:14:17.295>saw <00:14:17.435>one <00:14:17.574>hand <00:14:17.715>over <00:14:17.855>there <00:14:17.995>that <00:14:18.135>that's <00:14:18.275>using <00:14:18.415>it.

343
00:14:19.015 --> 00:14:22.335
<00:14:19.015>So <00:14:19.170>let's, <00:14:19.326>let's, <00:14:19.481>let's <00:14:19.637>see <00:14:19.792>what <00:14:19.948>that, <00:14:20.103>what <00:14:20.259>that <00:14:20.415>does.

344
00:14:22.675 --> 00:14:26.935
<00:14:22.675>So <00:14:22.814>if <00:14:22.954>I <00:14:23.094>do <00:14:23.234>spring <00:14:23.375>with <00:14:23.515>a <00:14:23.655>OT, <00:14:23.795>so <00:14:23.935>I <00:14:24.074>have

345
00:14:26.935 --> 00:14:30.685
<00:14:26.935>to <00:14:27.401>recompile <00:14:27.868>it, <00:14:28.334>right?

346
00:14:31.025 --> 00:14:34.005
<00:14:31.025>So <00:14:31.132>I <00:14:31.240>have <00:14:31.348>to <00:14:31.455>recompile <00:14:31.563>the <00:14:31.671>app <00:14:31.778>and <00:14:31.886>turn <00:14:31.994>on <00:14:32.101>the <00:14:32.209>a <00:14:32.317>OT <00:14:32.425>mode

347
00:14:34.925 --> 00:14:39.605
<00:14:34.925>and <00:14:35.125>then <00:14:35.324>I <00:14:35.525>can <00:14:35.724>rerun <00:14:35.925>it <00:14:36.125>java <00:14:36.324>dash

348
00:14:40.585 --> 00:14:44.525
<00:14:40.585>oh <00:14:40.701>dash <00:14:40.818>D <00:14:40.935>and <00:14:41.051>then <00:14:41.168>I <00:14:41.285>have <00:14:41.401>to <00:14:41.518>tell <00:14:41.635>it <00:14:41.751>to <00:14:41.868>use <00:14:41.985>that.

349
00:14:44.585 --> 00:14:46.805
<00:14:44.585>So <00:14:44.785>what <00:14:44.985>it <00:14:45.185>actually <00:14:45.385>did <00:14:45.585>is <00:14:45.785>some <00:14:45.985>of

350
00:14:46.805 --> 00:14:51.085
<00:14:46.805>that <00:14:46.944>spring <00:14:47.084>auto <00:14:47.224>configuration, <00:14:47.364>if <00:14:47.505>you <00:14:47.645>start <00:14:47.785>to <00:14:47.925>look <00:14:48.064>in <00:14:48.204>the,

351
00:14:51.265 --> 00:14:55.365
<00:14:51.265>the <00:14:51.465>generated <00:14:51.665>the <00:14:51.865>spring <00:14:52.064>a <00:14:52.265>OT <00:14:52.465>folder, <00:14:52.665>there's,

352
00:14:55.585 --> 00:14:57.085
<00:14:55.585>it <00:14:55.922>generates <00:14:56.260>some <00:14:56.597>source <00:14:56.935>code.

353
00:14:57.105 --> 00:14:59.845
<00:14:57.105>So <00:14:57.338>for <00:14:57.571>every <00:14:57.805>spring <00:14:58.038>auto <00:14:58.271>configuration <00:14:58.505>class

354
00:14:59.845 --> 00:15:02.245
<00:14:59.845>that's <00:15:00.045>on <00:15:00.245>your <00:15:00.445>class <00:15:00.645>path, <00:15:00.845>rather <00:15:01.045>than <00:15:01.245>trying

355
00:15:02.265 --> 00:15:04.045
<00:15:02.265>to <00:15:02.615>figure <00:15:02.965>out <00:15:03.314>the <00:15:03.665>bindings

356
00:15:04.045 --> 00:15:05.845
<00:15:04.045>and <00:15:04.278>which <00:15:04.511>beans <00:15:04.745>it <00:15:04.978>needs <00:15:05.211>at <00:15:05.444>runtime,

357
00:15:06.225 --> 00:15:08.965
<00:15:06.225>it <00:15:06.458>does <00:15:06.691>some <00:15:06.925>compilation <00:15:07.158>at <00:15:07.391>build <00:15:07.625>time,

358
00:15:08.985 --> 00:15:12.085
<00:15:08.985>but <00:15:09.160>it <00:15:09.335>just <00:15:09.510>generates <00:15:09.685>Java <00:15:09.860>code <00:15:10.035>that <00:15:10.210>it <00:15:10.385>compiles.

359
00:15:12.545 --> 00:15:14.925
<00:15:12.545>So <00:15:12.824>something, <00:15:13.104>where <00:15:13.385>is <00:15:13.665>it <00:15:13.944>here?

360
00:15:15.305 --> 00:15:16.805
<00:15:15.305>Me <00:15:15.979>Meta <00:15:16.655>sources,

361
00:15:17.465 --> 00:15:19.965
<00:15:17.465>I'm <00:15:17.665>just <00:15:17.865>gonna <00:15:18.065>pick <00:15:18.265>something <00:15:18.465>from <00:15:18.665>random <00:15:18.865>spring

362
00:15:20.595 --> 00:15:22.925
<00:15:20.595>boot <00:15:21.061>auto <00:15:21.528>configured <00:15:21.995>data.

363
00:15:23.325 --> 00:15:26.005
<00:15:23.325>J-P-A-J-P-A <00:15:24.025>repository <00:15:24.725>auto,

364
00:15:26.005 --> 00:15:27.285
<00:15:26.005>there's <00:15:26.293>nothing <00:15:26.581>exciting <00:15:26.869>in <00:15:27.156>here,

365
00:15:27.285 --> 00:15:30.685
<00:15:27.285>but <00:15:27.440>it <00:15:27.596>essentially <00:15:27.751>generates <00:15:27.907>a <00:15:28.062>beam <00:15:28.218>definition <00:15:28.373>for <00:15:28.529>this <00:15:28.685>is

366
00:15:30.685 --> 00:15:33.485
<00:15:30.685>what <00:15:30.859>the <00:15:31.035>spring <00:15:31.209>auto <00:15:31.385>configuration <00:15:31.560>would've <00:15:31.734>done <00:15:31.910>at <00:15:32.084>runtime.

367
00:15:33.825 --> 00:15:38.165
<00:15:33.825>And <00:15:33.952>so <00:15:34.079>all <00:15:34.206>these <00:15:34.334>are <00:15:34.461>laid <00:15:34.588>out <00:15:34.715>as <00:15:34.843>source <00:15:34.970>code <00:15:35.097>in <00:15:35.225>kind

368
00:15:38.165 --> 00:15:39.885
<00:15:38.165>of <00:15:38.320>in <00:15:38.476>the <00:15:38.631>order <00:15:38.787>that <00:15:38.942>they <00:15:39.098>need <00:15:39.253>to <00:15:39.409>be <00:15:39.564>run.

369
00:15:39.885 --> 00:15:42.085
<00:15:39.885>And <00:15:40.060>so <00:15:40.235>that's <00:15:40.410>what <00:15:40.585>spring <00:15:40.760>kind <00:15:40.935>of <00:15:41.110>spring's <00:15:41.285>answer

370
00:15:42.105 --> 00:15:43.845
<00:15:42.105>to <00:15:42.571>a <00:15:43.038>OT <00:15:43.505>was.

371
00:15:44.345 --> 00:15:46.125
<00:15:44.345>But <00:15:44.520>the <00:15:44.695>question <00:15:44.870>is, <00:15:45.045>does <00:15:45.220>it <00:15:45.395>actually <00:15:45.570>buy <00:15:45.745>you

372
00:15:46.805 --> 00:15:48.485
<00:15:46.805>anything <00:15:47.084>at <00:15:47.364>runtime <00:15:47.645>isn't <00:15:47.925>what <00:15:48.204>I,

373
00:15:48.485 --> 00:15:50.085
<00:15:48.485>what <00:15:48.660>I <00:15:48.835>kind <00:15:49.010>of <00:15:49.185>want <00:15:49.360>to <00:15:49.535>prove <00:15:49.710>out <00:15:49.885>here.

374
00:15:50.545 --> 00:15:52.725
<00:15:50.545>So <00:15:50.719>if <00:15:50.895>I <00:15:51.069>do <00:15:51.245>my <00:15:51.420>first <00:15:51.594>request <00:15:51.770>here, <00:15:51.944>oops.

375
00:15:55.155 --> 00:15:59.215
<00:15:55.155>If <00:15:55.295>I <00:15:55.435>do <00:15:55.574>my <00:15:55.714>first <00:15:55.855>request <00:15:55.995>spring <00:15:56.135>with <00:15:56.275>a <00:15:56.415>OT <00:15:56.555>time

376
00:15:59.235 --> 00:16:02.095
<00:15:59.235>to <00:15:59.701>first <00:16:00.168>request, <00:16:00.635>right?

377
00:16:02.355 --> 00:16:07.255
<00:16:02.355>My <00:16:02.495>RSS <00:16:02.635>So <00:16:02.775>my <00:16:02.915>time <00:16:03.055>to <00:16:03.195>first <00:16:03.335>request <00:16:03.475>is <00:16:03.615>1.941 <00:16:03.755>seconds

378
00:16:07.635 --> 00:16:08.775
<00:16:07.635>and <00:16:08.148>my <00:16:08.661>oops,

379
00:16:11.985 --> 00:16:13.845
<00:16:11.985>1.941 <00:16:13.385>seconds.

380
00:16:13.985 --> 00:16:18.205
<00:16:13.985>And <00:16:14.265>my <00:16:14.545>RSS <00:16:14.825>was <00:16:15.105>four <00:16:15.385>18.9.

381
00:16:18.385 --> 00:16:19.605
<00:16:18.385>So <00:16:18.659>what <00:16:18.934>did <00:16:19.208>we <00:16:19.483>do?

382
00:16:19.625 --> 00:16:23.205
<00:16:19.625>We <00:16:19.780>shaved <00:16:19.936>Yeah, <00:16:20.091>a <00:16:20.247>few, <00:16:20.402>few <00:16:20.558>milliseconds <00:16:20.713>a <00:16:20.869>you <00:16:21.025>know,

383
00:16:23.965 --> 00:16:25.245
<00:16:23.965>a <00:16:24.349>couple <00:16:24.733>hundred <00:16:25.117>milliseconds

384
00:16:25.245 --> 00:16:28.645
<00:16:25.245>and <00:16:25.400>we <00:16:25.556>shaved <00:16:25.711>about <00:16:25.867>10 <00:16:26.022>megs <00:16:26.178>of, <00:16:26.333>of <00:16:26.489>memory <00:16:26.645>usage.

385
00:16:29.425 --> 00:16:30.925
<00:16:29.425>And <00:16:29.694>the <00:16:29.964>penalty <00:16:30.234>we <00:16:30.505>paid <00:16:30.775>for

386
00:16:30.925 --> 00:16:34.925
<00:16:30.925>that <00:16:31.099>is <00:16:31.275>our <00:16:31.449>compilation <00:16:31.625>took <00:16:31.800>maybe <00:16:31.974>two <00:16:32.150>seconds <00:16:32.324>longer,

387
00:16:35.105 --> 00:16:37.845
<00:16:35.105>but <00:16:35.221>we've <00:16:35.338>got <00:16:35.455>a <00:16:35.571>little <00:16:35.688>bit <00:16:35.805>more <00:16:35.921>of <00:16:36.038>a <00:16:36.155>closed <00:16:36.271>world <00:16:36.388>view <00:16:36.505>of

388
00:16:37.845 --> 00:16:39.725
<00:16:37.845>what <00:16:38.125>our <00:16:38.405>application <00:16:38.685>looks <00:16:38.965>like, <00:16:39.245>right?

389
00:16:39.725 --> 00:16:42.125
<00:16:39.725>Everybody's <00:16:40.005>good <00:16:40.285>with <00:16:40.565>that. <00:16:40.845>Alright, <00:16:41.125>so

390
00:16:42.125 --> 00:16:45.005
<00:16:42.125>what <00:16:42.252>I'm <00:16:42.379>gonna <00:16:42.506>do <00:16:42.634>now <00:16:42.761>is <00:16:42.888>I'm <00:16:43.015>gonna <00:16:43.143>go <00:16:43.270>into <00:16:43.397>Palm <00:16:43.525>XML

391
00:16:45.465 --> 00:16:48.805
<00:16:45.465>and <00:16:45.605>I'm <00:16:45.745>gonna <00:16:45.885>just <00:16:46.025>delete <00:16:46.165>it <00:16:46.305>and <00:16:46.445>I'm <00:16:46.585>gonna <00:16:46.725>replace <00:16:46.865>it.

392
00:16:49.065 --> 00:16:50.805
<00:16:49.065>And <00:16:49.298>what <00:16:49.531>I'm <00:16:49.765>gonna <00:16:49.998>replace <00:16:50.231>it <00:16:50.465>with

393
00:16:53.805 --> 00:16:54.945
<00:16:53.805>is <00:16:54.010>a <00:16:54.215>bunch <00:16:54.420>of <00:16:54.625>corcus <00:16:54.831>stuff.

394
00:16:56.545 --> 00:17:00.485
<00:16:56.545>And <00:16:56.685>so <00:16:56.824>instead <00:16:56.964>of <00:16:57.104>spring, <00:16:57.245>I'm <00:16:57.385>pulling <00:16:57.525>in <00:16:57.665>corcus <00:16:57.805>corcus <00:16:57.944>ships

395
00:17:00.515 --> 00:17:04.005
<00:17:00.515>with <00:17:00.689>what <00:17:00.865>we, <00:17:01.040>the, <00:17:01.215>the, <00:17:01.390>the <00:17:01.564>Corcus, <00:17:01.740>um, <00:17:01.915>equivalent

396
00:17:04.005 --> 00:17:05.765
<00:17:04.005>of <00:17:04.180>a <00:17:04.355>spring <00:17:04.530>boot <00:17:04.705>starter <00:17:04.880>is <00:17:05.055>called <00:17:05.230>an <00:17:05.405>extension.

397
00:17:06.305 --> 00:17:09.725
<00:17:06.305>And <00:17:06.480>so <00:17:06.655>we <00:17:06.830>have <00:17:07.005>extensions <00:17:07.180>for <00:17:07.355>common <00:17:07.530>spring <00:17:07.705>libraries.

398
00:17:09.725 --> 00:17:13.165
<00:17:09.724>So <00:17:09.925>spring <00:17:10.125>data, <00:17:10.324>JPA <00:17:10.524>spring, <00:17:10.724>MBC, <00:17:10.925>spring <00:17:11.125>security,

399
00:17:13.345 --> 00:17:14.845
<00:17:13.345>spring <00:17:13.795>cloud <00:17:14.245>config <00:17:14.694>server,

400
00:17:14.875 --> 00:17:16.085
<00:17:14.875>there's, <00:17:15.056>there's <00:17:15.238>a <00:17:15.419>whole <00:17:15.601>bunch <00:17:15.782>of <00:17:15.964>them.

401
00:17:16.705 --> 00:17:20.085
<00:17:16.704>So <00:17:16.938>I've <00:17:17.171>replaced <00:17:17.405>all <00:17:17.638>of <00:17:17.871>my <00:17:18.105>dependencies

402
00:17:20.555 --> 00:17:24.485
<00:17:20.555>with <00:17:20.730>corcus <00:17:20.905>dependencies <00:17:21.080>and <00:17:21.255>now <00:17:21.430>I <00:17:21.605>can <00:17:21.780>go <00:17:21.955>back

403
00:17:24.485 --> 00:17:26.925
<00:17:24.484>and <00:17:24.718>I <00:17:24.951>can <00:17:25.185>recompile <00:17:25.418>my <00:17:25.651>application, <00:17:25.885>right?

404
00:17:27.305 --> 00:17:30.845
<00:17:27.305>And <00:17:27.771>say <00:17:28.238>clean <00:17:28.705>package.

405
00:17:33.725 --> 00:17:35.735
<00:17:33.725>Nope. <00:17:33.925>So <00:17:34.125>it <00:17:34.324>failed. <00:17:34.524>Why <00:17:34.725>did <00:17:34.925>it <00:17:35.125>fail?

406
00:17:35.735 --> 00:17:37.735
<00:17:35.735>Oh, <00:17:35.935>'cause <00:17:36.135>I <00:17:36.334>have <00:17:36.534>this <00:17:36.735>stupid <00:17:36.935>application <00:17:37.135>class

407
00:17:37.735 --> 00:17:39.255
<00:17:37.735>that <00:17:37.963>I <00:17:38.191>always <00:17:38.419>have <00:17:38.647>to <00:17:38.875>write, <00:17:39.103>right?

408
00:17:39.265 --> 00:17:40.495
<00:17:39.265>Which <00:17:39.634>I <00:17:40.003>don't <00:17:40.371>need.

409
00:17:40.995 --> 00:17:42.095
<00:17:40.995>So <00:17:41.242>I <00:17:41.490>can <00:17:41.737>go <00:17:41.985>ahead

410
00:17:42.155 --> 00:17:44.775
<00:17:42.155>and <00:17:42.295>I <00:17:42.435>can <00:17:42.575>just <00:17:42.715>delete <00:17:42.855>that <00:17:42.995>'cause <00:17:43.135>we <00:17:43.274>don't <00:17:43.415>need <00:17:43.555>that.

411
00:17:45.675 --> 00:17:47.695
<00:17:45.675>The <00:17:45.830>other <00:17:45.986>thing <00:17:46.141>I <00:17:46.297>need <00:17:46.452>to <00:17:46.608>do <00:17:46.763>is <00:17:46.919>in <00:17:47.075>application,

412
00:17:47.695 --> 00:17:49.725
<00:17:47.695>my <00:17:47.928>application <00:17:48.161>properties <00:17:48.395>are <00:17:48.628>EMI <00:17:48.861>like <00:17:49.095>YAML

413
00:17:49.725 --> 00:17:51.405
<00:17:49.725>because <00:17:50.074>it's <00:17:50.425>hierarchical <00:17:50.774>and <00:17:51.125>structured,

414
00:17:51.425 --> 00:17:55.005
<00:17:51.425>but <00:17:51.580>just <00:17:51.736>personal <00:17:51.891>preference <00:17:52.047>is <00:17:52.202>I <00:17:52.358>need <00:17:52.513>to <00:17:52.669>replace <00:17:52.825>this

415
00:17:55.035 --> 00:17:58.375
<00:17:55.035>with <00:17:55.385>corcus <00:17:55.735>configuration <00:17:56.085>here, <00:17:56.435>right?

416
00:17:58.635 --> 00:18:01.215
<00:17:58.635>So <00:17:58.762>it <00:17:58.889>looks <00:17:59.016>very <00:17:59.144>similar <00:17:59.271>but, <00:17:59.398>and <00:17:59.525>it <00:17:59.653>does <00:17:59.780>the <00:17:59.907>same <00:18:00.035>thing.

417
00:18:01.215 --> 00:18:02.375
<00:18:01.215>It's <00:18:01.476>just <00:18:01.736>a <00:18:01.998>corcus <00:18:02.259>application.

418
00:18:02.535 --> 00:18:04.415
<00:18:02.535>'cause <00:18:02.735>even <00:18:02.935>though <00:18:03.135>my <00:18:03.335>code <00:18:03.535>is <00:18:03.735>still <00:18:03.935>spray,

419
00:18:04.495 --> 00:18:06.455
<00:18:04.495>I <00:18:04.728>haven't <00:18:04.961>changed <00:18:05.195>any <00:18:05.428>of <00:18:05.661>my <00:18:05.895>code,

420
00:18:06.765 --> 00:18:10.575
<00:18:06.765>what <00:18:06.892>those <00:18:07.019>extensions <00:18:07.146>do <00:18:07.274>is <00:18:07.401>they <00:18:07.528>adapt <00:18:07.655>my <00:18:07.783>code <00:18:07.910>at <00:18:08.037>build <00:18:08.165>time

421
00:18:11.115 --> 00:18:12.295
<00:18:11.115>to <00:18:11.646>Java <00:18:12.177>standards.

422
00:18:12.295 --> 00:18:14.215
<00:18:12.295>Like, <00:18:12.495>so <00:18:12.695>for <00:18:12.895>spring <00:18:13.095>NC <00:18:13.295>it <00:18:13.495>adapts <00:18:13.695>it

423
00:18:14.215 --> 00:18:16.495
<00:18:14.215>to <00:18:14.495>Jakarta <00:18:14.774>RS <00:18:15.054>for <00:18:15.334>spring <00:18:15.615>data.

424
00:18:16.655 --> 00:18:20.615
<00:18:16.655>JPA <00:18:16.810>it, <00:18:16.966>it <00:18:17.121>adapts <00:18:17.277>it <00:18:17.432>to <00:18:17.588>JPA <00:18:17.743>down <00:18:17.899>to <00:18:18.055>JPA.

425
00:18:20.615 --> 00:18:21.695
<00:18:20.615>So <00:18:20.753>if <00:18:20.892>you <00:18:21.031>were <00:18:21.170>to <00:18:21.309>run <00:18:21.448>this <00:18:21.587>app

426
00:18:21.695 --> 00:18:23.855
<00:18:21.695>and <00:18:21.835>put <00:18:21.975>a <00:18:22.115>break <00:18:22.254>point, <00:18:22.395>there <00:18:22.534>wouldn't <00:18:22.675>be <00:18:22.814>a <00:18:22.955>single <00:18:23.095>spring

427
00:18:23.855 --> 00:18:25.215
<00:18:23.855>class <00:18:24.161>on <00:18:24.466>your <00:18:24.773>class <00:18:25.079>path.

428
00:18:25.215 --> 00:18:27.255
<00:18:25.215>That's <00:18:25.495>all <00:18:25.774>eliminated <00:18:26.054>at <00:18:26.334>build <00:18:26.615>time.

429
00:18:27.835 --> 00:18:29.895
<00:18:27.835>And <00:18:28.035>so <00:18:28.235>now <00:18:28.435>when <00:18:28.635>I <00:18:28.835>run <00:18:29.035>this <00:18:29.235>compilation,

430
00:18:32.125 --> 00:18:33.225
<00:18:32.125>it <00:18:32.455>should <00:18:32.784>all <00:18:33.115>compile

431
00:18:33.285 --> 00:18:35.945
<00:18:33.285>and <00:18:33.460>now <00:18:33.635>if <00:18:33.810>I <00:18:33.985>rerun <00:18:34.160>my <00:18:34.335>tests, <00:18:34.510>I'm <00:18:34.685>gonna,

432
00:18:35.945 --> 00:18:37.185
<00:18:35.945>it's <00:18:36.168>just <00:18:36.391>gonna <00:18:36.614>bounce <00:18:36.837>my <00:18:37.061>database.

433
00:18:39.205 --> 00:18:42.465
<00:18:39.205>And <00:18:39.379>now <00:18:39.554>if <00:18:39.730>I <00:18:39.905>rerun <00:18:40.080>my <00:18:40.254>tests <00:18:40.429>first <00:18:40.605>request

434
00:18:43.695 --> 00:18:47.865
<00:18:43.695>Java <00:18:44.161>dash <00:18:44.628>jar <00:18:45.095>target

435
00:18:50.285 --> 00:18:52.105
<00:18:50.285>and <00:18:50.440>I <00:18:50.596>don't <00:18:50.751>need <00:18:50.907>to <00:18:51.062>do <00:18:51.218>that <00:18:51.373>a <00:18:51.529>OT <00:18:51.685>thing

436
00:18:52.105 --> 00:18:55.825
<00:18:52.105>because <00:18:52.305>corcus <00:18:52.505>is <00:18:52.705>a <00:18:52.905>OT <00:18:53.105>by <00:18:53.305>by <00:18:53.505>default.

437
00:18:55.885 --> 00:18:58.865
<00:18:55.885>The <00:18:56.001>fact <00:18:56.118>that <00:18:56.235>I <00:18:56.351>can <00:18:56.468>do <00:18:56.585>a <00:18:56.701>growl <00:18:56.818>VM <00:18:56.935>native <00:18:57.051>image <00:18:57.168>is <00:18:57.285>almost

438
00:18:58.865 --> 00:19:00.665
<00:18:58.865>like <00:18:59.098>a <00:18:59.331>side <00:18:59.565>effect <00:18:59.798>of <00:19:00.031>the <00:19:00.265>design

439
00:19:00.665 --> 00:19:01.745
<00:19:00.665>of <00:19:00.827>the <00:19:00.989>framework <00:19:01.150>in <00:19:01.312>the <00:19:01.475>first <00:19:01.637>place

440
00:19:01.745 --> 00:19:04.425
<00:19:01.745>because <00:19:01.945>of <00:19:02.145>all <00:19:02.344>of <00:19:02.544>this <00:19:02.745>build <00:19:02.945>time <00:19:03.145>optimization

441
00:19:04.605 --> 00:19:07.305
<00:19:04.605>and <00:19:04.760>just <00:19:04.916>in <00:19:05.071>time <00:19:05.227>compile <00:19:05.382>a <00:19:05.538>code <00:19:05.693>that <00:19:05.849>we <00:19:06.005>do.

442
00:19:07.365 --> 00:19:11.105
<00:19:07.365>So <00:19:07.505>if <00:19:07.645>I <00:19:07.785>run <00:19:07.925>the <00:19:08.065>same <00:19:08.205>test <00:19:08.345>here, <00:19:08.485>I <00:19:08.625>go <00:19:08.765>back

443
00:19:11.105 --> 00:19:13.425
<00:19:11.105>to <00:19:11.805>my <00:19:12.505>code.

444
00:19:13.485 --> 00:19:18.005
<00:19:13.485>If <00:19:13.685>I <00:19:13.885>say <00:19:14.084>corcas <00:19:14.284>time <00:19:14.485>to <00:19:14.685>first <00:19:14.885>request

445
00:19:18.545 --> 00:19:20.165
<00:19:18.545>1.157 <00:19:19.945>seconds

446
00:19:20.545 --> 00:19:23.085
<00:19:20.545>and <00:19:20.895>my <00:19:21.245>RSS <00:19:21.595>size <00:19:21.945>is

447
00:19:23.695 --> 00:19:27.085
<00:19:23.695>3 <00:19:24.161>42 <00:19:24.628>megs, <00:19:25.095>right?

448
00:19:27.505 --> 00:19:29.125
<00:19:27.505>So <00:19:27.738>what <00:19:27.971>did <00:19:28.205>I <00:19:28.438>do? <00:19:28.671>Two <00:19:28.905>point.

449
00:19:30.745 --> 00:19:33.245
<00:19:30.745>So <00:19:31.024>I'm <00:19:31.304>significantly <00:19:31.584>faster <00:19:31.864>in <00:19:32.145>time

450
00:19:33.245 --> 00:19:37.785
<00:19:33.245>to <00:19:33.400>first <00:19:33.556>request <00:19:33.711>I've <00:19:33.867>reduced <00:19:34.022>my <00:19:34.178>RSS <00:19:34.333>size <00:19:34.489>by <00:19:34.645>what?

451
00:19:38.985 --> 00:19:41.625
<00:19:38.985>A <00:19:39.140>bit, <00:19:39.296>right? <00:19:39.451>I <00:19:39.607>can't <00:19:39.762>really <00:19:39.918>do <00:19:40.073>a <00:19:40.229>throughput <00:19:40.385>test.

452
00:19:41.765 --> 00:19:45.225
<00:19:41.765>If <00:19:41.905>I <00:19:42.045>were <00:19:42.185>to <00:19:42.325>do <00:19:42.465>throughput, <00:19:42.605>you <00:19:42.745>would <00:19:42.885>see <00:19:43.025>that <00:19:43.165>the,

453
00:19:45.225 --> 00:19:47.425
<00:19:45.225>the <00:19:45.425>CUS <00:19:45.625>application <00:19:45.824>probably <00:19:46.024>has <00:19:46.225>about <00:19:46.425>four <00:19:46.625>times

454
00:19:47.645 --> 00:19:48.705
<00:19:47.645>the <00:19:47.963>amount <00:19:48.281>of <00:19:48.599>throughput.

455
00:19:48.925 --> 00:19:51.025
<00:19:48.925>So <00:19:49.158>if <00:19:49.391>the <00:19:49.625>spring <00:19:49.858>application <00:19:50.091>can <00:19:50.325>handle,

456
00:19:51.405 --> 00:19:53.665
<00:19:51.405>I'm <00:19:51.560>just <00:19:51.716>gonna <00:19:51.871>say <00:19:52.027>a <00:19:52.182>thousand <00:19:52.338>requests <00:19:52.493>per <00:19:52.649>second <00:19:52.805>just

457
00:19:53.665 --> 00:19:55.785
<00:19:53.665>to <00:19:53.898>pick <00:19:54.131>round <00:19:54.365>numbers, <00:19:54.598>the <00:19:54.831>caucus <00:19:55.065>version

458
00:19:55.885 --> 00:19:58.945
<00:19:55.885>of <00:19:56.060>it <00:19:56.235>could <00:19:56.410>handle <00:19:56.585>about <00:19:56.760>4,000 <00:19:56.935>requests <00:19:57.110>per <00:19:57.285>second.

459
00:20:00.475 --> 00:20:03.695
<00:20:00.475>Now <00:20:00.630>you <00:20:00.786>can't <00:20:00.941>do <00:20:01.097>throughput <00:20:01.252>on <00:20:01.408>the <00:20:01.563>same <00:20:01.719>machine, <00:20:01.875>right?

460
00:20:03.755 --> 00:20:05.695
<00:20:03.755>You <00:20:03.930>know, <00:20:04.105>it's <00:20:04.280>one <00:20:04.455>of <00:20:04.630>the <00:20:04.805>the <00:20:04.980>golden <00:20:05.155>rules

461
00:20:05.695 --> 00:20:08.175
<00:20:05.695>of <00:20:05.895>benchmarking <00:20:06.095>is <00:20:06.294>you <00:20:06.495>can't <00:20:06.695>run, <00:20:06.895>generate, <00:20:07.095>load

462
00:20:08.275 --> 00:20:10.535
<00:20:08.275>and <00:20:08.430>run <00:20:08.586>the <00:20:08.741>app <00:20:08.897>under <00:20:09.052>test <00:20:09.208>on <00:20:09.363>the <00:20:09.519>same <00:20:09.675>machine.

463
00:20:10.915 --> 00:20:13.255
<00:20:10.915>So <00:20:11.148>we, <00:20:11.381>I, <00:20:11.615>I <00:20:11.848>unfortunately <00:20:12.081>can't <00:20:12.315>do

464
00:20:13.255 --> 00:20:15.015
<00:20:13.255>that <00:20:13.488>in <00:20:13.721>this <00:20:13.955>in <00:20:14.188>this <00:20:14.421>particular <00:20:14.655>talk.

465
00:20:15.235 --> 00:20:18.135
<00:20:15.235>But <00:20:15.351>if <00:20:15.468>we <00:20:15.584>look <00:20:15.701>at, <00:20:15.818>um, <00:20:15.935>native, <00:20:16.051>I <00:20:16.168>had, <00:20:16.284>there <00:20:16.401>were <00:20:16.518>a <00:20:16.635>couple

466
00:20:18.135 --> 00:20:19.375
<00:20:18.135>of <00:20:18.358>people <00:20:18.581>who <00:20:18.804>do <00:20:19.027>native <00:20:19.251>image.

467
00:20:19.495 --> 00:20:21.495
<00:20:19.495>I <00:20:19.669>saw <00:20:19.844>a <00:20:20.020>couple <00:20:20.195>hands. <00:20:20.370>Yep, <00:20:20.544>a <00:20:20.719>couple <00:20:20.895>hands.

468
00:20:21.755 --> 00:20:23.575
<00:20:21.755>So <00:20:21.988>if <00:20:22.221>I <00:20:22.455>kind <00:20:22.688>of <00:20:22.921>go <00:20:23.155>back

469
00:20:24.195 --> 00:20:29.015
<00:20:24.195>or <00:20:24.302>if <00:20:24.410>I <00:20:24.518>compile <00:20:24.625>this <00:20:24.733>to <00:20:24.841>native <00:20:24.948>image, <00:20:25.056>if <00:20:25.164>I <00:20:25.271>do <00:20:25.379>a <00:20:25.487>Maven <00:20:25.595>clean

470
00:20:29.805 --> 00:20:32.935
<00:20:29.805>package <00:20:30.271>dash <00:20:30.738>p <00:20:31.205>native.

471
00:20:33.115 --> 00:20:36.655
<00:20:33.115>So <00:20:33.290>this <00:20:33.465>is <00:20:33.640>going <00:20:33.815>to <00:20:33.990>run <00:20:34.165>thel <00:20:34.340>VM <00:20:34.515>compiler

472
00:20:36.655 --> 00:20:38.735
<00:20:36.655>and <00:20:36.782>it's <00:20:36.909>gonna <00:20:37.036>take <00:20:37.164>about <00:20:37.291>a <00:20:37.418>minute <00:20:37.545>or <00:20:37.673>so <00:20:37.800>to <00:20:37.927>do <00:20:38.055>that.

473
00:20:39.675 --> 00:20:42.975
<00:20:39.675>Um, <00:20:39.875>kind <00:20:40.075>of <00:20:40.274>what <00:20:40.475>I <00:20:40.675>say <00:20:40.875>in <00:20:41.075>my,

474
00:20:43.075 --> 00:20:45.935
<00:20:43.075>my <00:20:43.230>opinion <00:20:43.386>on <00:20:43.541>native <00:20:43.697>image <00:20:43.852>is, <00:20:44.008>you <00:20:44.163>know, <00:20:44.319>when, <00:20:44.475>when,

475
00:20:46.525 --> 00:20:48.925
<00:20:46.525>when <00:20:46.665>it <00:20:46.805>first <00:20:46.945>came <00:20:47.085>out, <00:20:47.225>when <00:20:47.365>Grl <00:20:47.505>VM <00:20:47.645>first <00:20:47.785>came <00:20:47.925>out,

476
00:20:48.925 --> 00:20:51.245
<00:20:48.925>it <00:20:49.065>was <00:20:49.205>kind <00:20:49.345>of <00:20:49.485>like <00:20:49.625>the <00:20:49.764>shiny <00:20:49.905>widget <00:20:50.044>that <00:20:50.185>was <00:20:50.325>flying

477
00:20:51.245 --> 00:20:53.685
<00:20:51.245>through <00:20:51.385>outer <00:20:51.524>space, <00:20:51.665>kind <00:20:51.804>of <00:20:51.945>like <00:20:52.084>Kafka <00:20:52.225>was <00:20:52.364>about <00:20:52.504>five <00:20:52.645>years

478
00:20:53.745 --> 00:20:56.245
<00:20:53.745>ago, <00:20:53.885>five <00:20:54.024>or <00:20:54.165>six <00:20:54.304>years <00:20:54.445>ago, <00:20:54.584>where <00:20:54.725>everybody <00:20:54.864>was <00:20:55.004>saying, <00:20:55.145>oh,

479
00:20:56.285 --> 00:20:58.285
<00:20:56.285>I <00:20:56.412>gotta <00:20:56.539>do <00:20:56.666>Kafka, <00:20:56.794>I <00:20:56.921>gotta <00:20:57.048>do <00:20:57.175>Kafka, <00:20:57.303>I <00:20:57.430>gotta <00:20:57.557>do <00:20:57.685>Kafka.

480
00:20:58.285 --> 00:21:00.565
<00:20:58.285>Well, <00:20:58.412>why <00:20:58.539>do <00:20:58.666>you <00:20:58.794>wanna <00:20:58.921>do <00:20:59.048>Kaka? <00:20:59.175>Oh <00:20:59.303>'cause <00:20:59.430>they're <00:20:59.557>doing <00:20:59.685>it.

481
00:21:00.715 --> 00:21:03.365
<00:21:00.715>Well, <00:21:00.842>you <00:21:00.969>know, <00:21:01.096>what's <00:21:01.224>your <00:21:01.351>use <00:21:01.478>case? <00:21:01.605>Look <00:21:01.733>at <00:21:01.860>your <00:21:01.987>use <00:21:02.115>case.

482
00:21:04.025 --> 00:21:06.525
<00:21:04.025>My <00:21:04.180>personal <00:21:04.336>opinion, <00:21:04.491>and <00:21:04.647>I <00:21:04.802>feel <00:21:04.958>like <00:21:05.113>this <00:21:05.269>native <00:21:05.425>binary

483
00:21:06.615 --> 00:21:08.245
<00:21:06.615>thing <00:21:06.965>is <00:21:07.315>like <00:21:07.665>a <00:21:08.015>very,

484
00:21:08.705 --> 00:21:11.165
<00:21:08.705>solves <00:21:08.879>a <00:21:09.054>very <00:21:09.230>small <00:21:09.405>amount <00:21:09.580>of, <00:21:09.754>of <00:21:09.929>use <00:21:10.105>cases.

485
00:21:11.475 --> 00:21:14.245
<00:21:11.475>It's <00:21:11.708>if <00:21:11.941>your <00:21:12.175>application <00:21:12.408>is <00:21:12.641>long <00:21:12.875>running

486
00:21:14.665 --> 00:21:16.845
<00:21:14.665>and <00:21:14.865>it's <00:21:15.065>gonna <00:21:15.264>run <00:21:15.465>for <00:21:15.665>days, <00:21:15.865>weeks, <00:21:16.065>months,

487
00:21:16.845 --> 00:21:18.605
<00:21:16.845>everybody <00:21:17.125>has <00:21:17.405>applications <00:21:17.685>that <00:21:17.965>you <00:21:18.245>start

488
00:21:18.605 --> 00:21:21.045
<00:21:18.605>and <00:21:18.780>you <00:21:18.955>don't <00:21:19.130>stop <00:21:19.305>for <00:21:19.480>a <00:21:19.655>long <00:21:19.830>time, <00:21:20.005>right?

489
00:21:21.645 --> 00:21:24.085
<00:21:21.645>I <00:21:21.800>say <00:21:21.956>lots <00:21:22.111>of <00:21:22.267>hands, <00:21:22.422>you're <00:21:22.578>actually <00:21:22.733>gonna <00:21:22.889>get <00:21:23.045>better

490
00:21:24.085 --> 00:21:27.485
<00:21:24.085>throughput <00:21:24.225>on <00:21:24.365>the <00:21:24.505>JVM <00:21:24.645>than <00:21:24.785>you <00:21:24.925>are <00:21:25.065>in <00:21:25.205>native <00:21:25.345>art <00:21:25.485>regardless

491
00:21:27.505 --> 00:21:30.005
<00:21:27.505>of <00:21:27.680>what <00:21:27.855>framework <00:21:28.030>you're <00:21:28.205>using, <00:21:28.380>whether <00:21:28.555>it's <00:21:28.730>spring, <00:21:28.905>corcus,

492
00:21:30.025 --> 00:21:31.605
<00:21:30.025>heldon, <00:21:30.375>micron, <00:21:30.725>it <00:21:31.075>doesn't <00:21:31.425>matter

493
00:21:31.675 --> 00:21:35.005
<00:21:31.675>because <00:21:31.955>the <00:21:32.235>JVM <00:21:32.514>has <00:21:32.794>garbage <00:21:33.075>collection,

494
00:21:35.005 --> 00:21:36.245
<00:21:35.005>it <00:21:35.191>has <00:21:35.377>a <00:21:35.563>just <00:21:35.749>in <00:21:35.935>time <00:21:36.120>compile

495
00:21:36.245 --> 00:21:37.485
<00:21:36.245>or <00:21:36.430>has <00:21:36.617>all <00:21:36.803>these <00:21:36.988>really <00:21:37.175>good <00:21:37.360>things

496
00:21:37.485 --> 00:21:39.485
<00:21:37.485>that <00:21:37.718>are <00:21:37.951>really <00:21:38.185>good <00:21:38.418>at <00:21:38.651>optimizing <00:21:38.885>that.

497
00:21:39.485 --> 00:21:41.165
<00:21:39.485>When <00:21:39.764>you <00:21:40.044>do <00:21:40.324>this <00:21:40.604>native <00:21:40.885>compilation,

498
00:21:41.505 --> 00:21:44.085
<00:21:41.505>you've <00:21:41.680>pretty <00:21:41.855>much <00:21:42.030>done <00:21:42.205>your <00:21:42.380>optimization <00:21:42.555>at <00:21:42.730>build <00:21:42.905>time

499
00:21:45.345 --> 00:21:47.685
<00:21:45.345>and <00:21:45.578>there's <00:21:45.811>no <00:21:46.045>more <00:21:46.278>optimizing <00:21:46.511>at <00:21:46.745>runtime.

500
00:21:47.715 --> 00:21:49.485
<00:21:47.715>It's <00:21:48.064>just <00:21:48.415>a <00:21:48.764>binary <00:21:49.115>application.

501
00:21:49.745 --> 00:21:52.205
<00:21:49.745>So <00:21:49.919>if <00:21:50.094>you <00:21:50.270>need <00:21:50.445>something <00:21:50.620>serverless <00:21:50.794>like <00:21:50.969>that <00:21:51.145>needs

502
00:21:52.205 --> 00:21:54.285
<00:21:52.205>to <00:21:52.379>start <00:21:52.554>up <00:21:52.730>really <00:21:52.905>fast, <00:21:53.080>do <00:21:53.254>something <00:21:53.429>really <00:21:53.605>fast

503
00:21:54.285 --> 00:21:57.285
<00:21:54.285>and <00:21:54.425>go <00:21:54.565>away, <00:21:54.705>or <00:21:54.845>you <00:21:54.985>need <00:21:55.125>it <00:21:55.265>to <00:21:55.405>run <00:21:55.545>on <00:21:55.685>a,

504
00:21:57.405 --> 00:22:00.565
<00:21:57.405>a <00:21:57.580>resource <00:21:57.754>constrained <00:21:57.930>hardware <00:21:58.105>like <00:21:58.280>an <00:21:58.455>edge <00:21:58.629>device <00:21:58.805>or,

505
00:22:00.865 --> 00:22:02.805
<00:22:00.865>or <00:22:01.215>raspberry <00:22:01.565>pie <00:22:01.915>or <00:22:02.265>something.

506
00:22:03.185 --> 00:22:04.965
<00:22:03.185>It, <00:22:03.385>it's <00:22:03.585>an <00:22:03.784>excellent <00:22:03.985>use <00:22:04.185>case <00:22:04.385>for <00:22:04.585>that.

507
00:22:05.225 --> 00:22:08.805
<00:22:05.225>But <00:22:05.352>as <00:22:05.479>you <00:22:05.606>saw <00:22:05.734>this <00:22:05.861>thing, <00:22:05.988>the <00:22:06.115>build <00:22:06.243>process <00:22:06.370>took <00:22:06.497>48 <00:22:06.625>seconds

508
00:22:08.985 --> 00:22:13.405
<00:22:08.985>to <00:22:09.140>do <00:22:09.296>and <00:22:09.451>it <00:22:09.607>used, <00:22:09.762>where's <00:22:09.918>my <00:22:10.073>little <00:22:10.229>log <00:22:10.385>here?

509
00:22:14.785 --> 00:22:16.845
<00:22:14.785>It <00:22:15.135>used <00:22:15.485>or <00:22:15.835>is <00:22:16.185>it

510
00:22:18.365 --> 00:22:21.795
<00:22:18.365>8.99 <00:22:18.565>gigs <00:22:18.765>of <00:22:18.965>RAM <00:22:19.165>to <00:22:19.365>do <00:22:19.565>that <00:22:19.765>build,

511
00:22:22.815 --> 00:22:27.195
<00:22:22.815>but <00:22:22.990>it <00:22:23.165>produced <00:22:23.340>an <00:22:23.515>artifact <00:22:23.690>that's <00:22:23.865>89 <00:22:24.040>megs <00:22:24.215>big.

512
00:22:27.335 --> 00:22:29.355
<00:22:27.335>So <00:22:27.535>let's, <00:22:27.735>let's <00:22:27.935>write <00:22:28.135>these <00:22:28.335>numbers <00:22:28.535>down <00:22:28.735>here.

513
00:22:30.665 --> 00:22:31.725
<00:22:30.665>So <00:22:30.855>if <00:22:31.046>I <00:22:31.237>come <00:22:31.428>back <00:22:31.619>here

514
00:22:31.785 --> 00:22:36.335
<00:22:31.785>and <00:22:31.985>I <00:22:32.185>say <00:22:32.385>native, <00:22:32.585>you <00:22:32.785>know, <00:22:32.985>build <00:22:33.185>time

515
00:22:37.315 --> 00:22:38.415
<00:22:37.315>was <00:22:37.645>what, <00:22:37.975>48 <00:22:38.305>seconds?

516
00:22:38.475 --> 00:22:42.175
<00:22:38.475>Is <00:22:38.630>that <00:22:38.786>what <00:22:38.941>I <00:22:39.097>said? <00:22:39.252>You <00:22:39.408>know, <00:22:39.563>my <00:22:39.719>build <00:22:39.875>RSS

517
00:22:43.155 --> 00:22:44.255
<00:22:43.155>was, <00:22:43.402>what <00:22:43.650>did <00:22:43.897>I <00:22:44.145>say?

518
00:22:44.825 --> 00:22:45.935
8.99

519
00:22:48.895 --> 00:22:50.835
<00:22:48.895>and <00:22:49.361>my <00:22:49.828>binary <00:22:50.295>size

520
00:22:53.585 --> 00:22:54.605
<00:22:53.585>was, <00:22:53.814>what <00:22:54.044>did <00:22:54.273>I <00:22:54.503>say?

521
00:22:55.005 --> 00:22:57.645
<00:22:55.005>I <00:22:55.145>I <00:22:55.285>can <00:22:55.425>never <00:22:55.565>remember <00:22:55.705>what <00:22:55.845>I <00:22:55.985>say. <00:22:56.125>Where <00:22:56.265>is <00:22:56.405>it?

522
00:22:58.345 --> 00:23:02.665
89.5656

523
00:23:03.285 --> 00:23:03.505
meg.

524
00:23:03.685 --> 00:23:07.135
<00:23:03.685>But <00:23:03.840>now <00:23:03.996>if <00:23:04.151>I <00:23:04.307>were <00:23:04.462>to <00:23:04.618>run <00:23:04.773>this <00:23:04.929>first <00:23:05.085>request,

525
00:23:15.195 --> 00:23:15.545
Right?

526
00:23:15.545 --> 00:23:19.065
<00:23:15.545>So <00:23:15.672>it <00:23:15.799>ran <00:23:15.926>it <00:23:16.054>three <00:23:16.181>times. <00:23:16.308>Oops, <00:23:16.435>I <00:23:16.563>only <00:23:16.690>ran <00:23:16.817>it <00:23:16.945>once.

527
00:23:19.075 --> 00:23:20.065
<00:23:19.075>Lemme <00:23:19.297>run <00:23:19.520>it <00:23:19.743>three <00:23:19.966>times

528
00:23:23.385 --> 00:23:24.345
<00:23:23.385>that <00:23:23.557>run <00:23:23.730>it <00:23:23.903>three <00:23:24.076>times, <00:23:24.249>yeah.

529
00:23:24.365 --> 00:23:27.105
<00:23:24.365>Ran <00:23:24.520>it <00:23:24.676>three <00:23:24.831>times. <00:23:24.987>So <00:23:25.142>now <00:23:25.298>my, <00:23:25.453>my <00:23:25.609>average <00:23:25.765>time

530
00:23:27.105 --> 00:23:31.825
<00:23:27.105>to <00:23:27.385>first <00:23:27.665>request <00:23:27.945>is <00:23:28.225>0.076 <00:23:28.505>seconds

531
00:23:32.445 --> 00:23:34.305
<00:23:32.445>and <00:23:32.911>my <00:23:33.378>RSS <00:23:33.845>is

532
00:23:34.305 --> 00:23:38.305
<00:23:34.305>66.9 <00:23:35.005>megs, <00:23:35.705>right?

533
00:23:38.365 --> 00:23:41.505
<00:23:38.365>So <00:23:38.565>I, <00:23:38.765>again, <00:23:38.965>everything <00:23:39.165>is <00:23:39.365>a <00:23:39.565>trade <00:23:39.765>off.

534
00:23:41.625 --> 00:23:42.905
<00:23:41.625>I <00:23:41.855>took <00:23:42.085>48 <00:23:42.316>seconds <00:23:42.546>to <00:23:42.777>build

535
00:23:42.905 --> 00:23:44.985
<00:23:42.905>and <00:23:43.045>I <00:23:43.185>needed <00:23:43.325>nine <00:23:43.465>gigs <00:23:43.605>of <00:23:43.745>ram <00:23:43.885>to <00:23:44.024>build <00:23:44.165>this <00:23:44.305>thing.

536
00:23:45.225 --> 00:23:48.845
<00:23:45.225>But <00:23:45.332>now <00:23:45.440>I <00:23:45.548>have <00:23:45.655>a <00:23:45.763>binary <00:23:45.871>that's <00:23:45.978>only <00:23:46.086>80 <00:23:46.194>megs <00:23:46.301>big <00:23:46.409>starts <00:23:46.517>up <00:23:46.625>in

537
00:23:49.695 --> 00:23:51.805
<00:23:49.695>super <00:23:49.928>fast <00:23:50.161>and <00:23:50.395>uses <00:23:50.628>way <00:23:50.861>less <00:23:51.095>memory.

538
00:23:52.505 --> 00:23:54.125
<00:23:52.505>But <00:23:52.738>the <00:23:52.971>memory <00:23:53.205>footprint <00:23:53.438>isn't <00:23:53.671>gonna <00:23:53.905>grow

539
00:23:54.125 --> 00:23:57.325
<00:23:54.125>and <00:23:54.265>it's <00:23:54.405>not <00:23:54.545>gonna <00:23:54.685>have <00:23:54.825>the <00:23:54.965>same <00:23:55.105>capabilities <00:23:55.245>in <00:23:55.385>terms <00:23:55.525>of

540
00:23:57.325 --> 00:23:59.325
<00:23:57.325>how <00:23:57.525>many <00:23:57.725>requests <00:23:57.925>I <00:23:58.125>can <00:23:58.325>serve <00:23:58.525>over <00:23:58.725>time.

541
00:24:00.225 --> 00:24:01.645
<00:24:00.225>So <00:24:00.407>now <00:24:00.590>if <00:24:00.772>we <00:24:00.955>go <00:24:01.137>back <00:24:01.320>to <00:24:01.503>spraying

542
00:24:01.645 --> 00:24:05.085
<00:24:01.645>and <00:24:01.800>I <00:24:01.956>just <00:24:02.111>kind <00:24:02.267>of <00:24:02.422>undo <00:24:02.578>what <00:24:02.733>I <00:24:02.889>did <00:24:03.045>here

543
00:24:05.085 --> 00:24:06.805
<00:24:05.085>and <00:24:05.365>I <00:24:05.645>do <00:24:05.925>the <00:24:06.205>reconation <00:24:06.485>here,

544
00:24:09.665 --> 00:24:13.175
<00:24:09.665>clean <00:24:09.898>native, <00:24:10.131>compile, <00:24:10.365>and <00:24:10.598>you'll <00:24:10.831>see <00:24:11.065>it.

545
00:24:13.325 --> 00:24:16.735
<00:24:13.325>Oops. <00:24:13.500>Oh <00:24:13.675>'cause <00:24:13.850>I <00:24:14.025>deleted <00:24:14.200>my <00:24:14.375>main <00:24:14.550>class, <00:24:14.725>right?

546
00:24:17.815 --> 00:24:21.475
<00:24:17.815>I <00:24:17.931>gotta <00:24:18.048>put <00:24:18.165>this <00:24:18.281>back <00:24:18.398>and <00:24:18.515>I <00:24:18.631>gotta <00:24:18.748>put <00:24:18.865>my <00:24:18.981>main <00:24:19.098>class <00:24:19.215>back

547
00:24:25.185 --> 00:24:27.635
<00:24:25.185>ring <00:24:25.418>boot, <00:24:25.651>doesn't <00:24:25.885>matter <00:24:26.118>what <00:24:26.351>it's <00:24:26.585>called.

548
00:24:30.205 --> 00:24:32.345
<00:24:30.205>Uh, <00:24:30.671>string <00:24:31.138>boot <00:24:31.605>application.

549
00:24:36.715 --> 00:24:37.735
<00:24:36.715>That's <00:24:36.898>what <00:24:37.082>you <00:24:37.265>get <00:24:37.449>when <00:24:37.632>you

550
00:24:37.735 --> 00:24:38.895
<00:24:37.735>don't <00:24:37.995>use <00:24:38.256>version <00:24:38.518>control, <00:24:38.779>right?

551
00:24:39.005 --> 00:24:43.795
<00:24:39.005>When <00:24:39.180>you <00:24:39.355>delete <00:24:39.530>stuff. <00:24:39.705>Yep. <00:24:39.880>Now <00:24:40.055>we <00:24:40.230>can <00:24:40.405>compile.

552
00:24:44.775 --> 00:24:47.595
<00:24:44.775>So <00:24:44.930>when <00:24:45.086>you <00:24:45.241>do <00:24:45.397>native <00:24:45.552>compilation <00:24:45.708>with <00:24:45.863>spring, <00:24:46.019>you <00:24:46.175>have

553
00:24:47.595 --> 00:24:48.795
<00:24:47.595>to <00:24:47.811>do <00:24:48.027>that <00:24:48.243>a <00:24:48.459>OT <00:24:48.675>thing.

554
00:24:48.985 --> 00:24:50.195
<00:24:48.985>It's <00:24:49.257>kind <00:24:49.529>of <00:24:49.801>a <00:24:50.073>requirement

555
00:24:50.195 --> 00:24:53.675
<00:24:50.195>because <00:24:50.350>it <00:24:50.506>has <00:24:50.661>to <00:24:50.817>do <00:24:50.972>that, <00:24:51.128>that <00:24:51.283>closed <00:24:51.439>world <00:24:51.595>view

556
00:24:54.055 --> 00:24:55.355
<00:24:54.055>of, <00:24:54.445>of <00:24:54.835>the <00:24:55.225>application.

557
00:24:55.375 --> 00:24:57.795
<00:24:55.375>So <00:24:55.550>it's, <00:24:55.725>it's <00:24:55.900>gonna <00:24:56.075>force <00:24:56.250>you <00:24:56.425>into <00:24:56.600>doing <00:24:56.775>that.

558
00:24:58.015 --> 00:24:59.875
<00:24:58.015>And <00:24:58.155>it's, <00:24:58.295>so <00:24:58.435>what <00:24:58.575>that <00:24:58.715>means <00:24:58.855>is <00:24:58.995>it's <00:24:59.135>gonna <00:24:59.275>force <00:24:59.415>you

559
00:24:59.875 --> 00:25:00.955
<00:24:59.875>to <00:25:00.199>make <00:25:00.523>certain <00:25:00.847>decisions.

560
00:25:00.955 --> 00:25:04.195
<00:25:00.955>So <00:25:01.129>changing <00:25:01.304>your <00:25:01.480>spring <00:25:01.655>security <00:25:01.830>configuration <00:25:02.004>on <00:25:02.179>the <00:25:02.355>fly

561
00:25:04.195 --> 00:25:05.355
<00:25:04.195>based <00:25:04.403>on <00:25:04.612>where <00:25:04.821>you're <00:25:05.030>running <00:25:05.239>it,

562
00:25:05.355 --> 00:25:06.715
<00:25:05.355>it's <00:25:05.661>not <00:25:05.966>gonna <00:25:06.273>happen, <00:25:06.579>right?

563
00:25:06.715 --> 00:25:08.515
<00:25:06.715>But <00:25:06.870>if <00:25:07.026>you <00:25:07.181>think <00:25:07.337>about <00:25:07.492>it, <00:25:07.648>if <00:25:07.803>you're <00:25:07.959>building <00:25:08.115>containers,

564
00:25:08.515 --> 00:25:10.075
<00:25:08.515>containers <00:25:08.795>are <00:25:09.075>supposed <00:25:09.355>to <00:25:09.635>be <00:25:09.915>ephemeral.

565
00:25:10.655 --> 00:25:13.075
<00:25:10.655>And <00:25:10.795>if <00:25:10.935>you <00:25:11.075>want <00:25:11.215>to <00:25:11.355>change <00:25:11.495>the <00:25:11.635>behavior <00:25:11.774>of <00:25:11.915>your <00:25:12.055>container,

566
00:25:13.175 --> 00:25:14.635
<00:25:13.175>you <00:25:13.437>should <00:25:13.700>build <00:25:13.963>a <00:25:14.226>new <00:25:14.489>container,

567
00:25:15.095 --> 00:25:16.955
<00:25:15.095>not <00:25:15.445>take <00:25:15.795>the <00:25:16.145>same <00:25:16.495>container

568
00:25:17.135 --> 00:25:19.195
<00:25:17.135>and <00:25:17.310>have <00:25:17.485>it <00:25:17.660>behave <00:25:17.835>one <00:25:18.010>way <00:25:18.185>in <00:25:18.360>one <00:25:18.535>environment,

569
00:25:19.195 --> 00:25:21.115
<00:25:19.195>in <00:25:19.350>a <00:25:19.506>different <00:25:19.661>way, <00:25:19.817>in <00:25:19.972>a, <00:25:20.128>in <00:25:20.283>another <00:25:20.439>environment, <00:25:20.595>right?

570
00:25:21.115 --> 00:25:23.955
<00:25:21.115>That, <00:25:21.348>that's <00:25:21.581>kind <00:25:21.815>of <00:25:22.048>what <00:25:22.281>ephemeral <00:25:22.515>means.

571
00:25:24.495 --> 00:25:29.225
<00:25:24.495>And <00:25:24.635>so <00:25:24.774>if <00:25:24.915>we <00:25:25.054>go <00:25:25.195>back <00:25:25.334>to <00:25:25.475>our <00:25:25.614>spring, <00:25:25.754>spring <00:25:25.895>native,

572
00:25:31.685 --> 00:25:35.955
<00:25:31.685>our <00:25:32.034>build <00:25:32.385>time <00:25:32.735>build <00:25:33.085>RSS

573
00:25:37.195 --> 00:25:41.635
<00:25:37.195>binary <00:25:37.370>size, <00:25:37.544>and <00:25:37.720>then <00:25:37.895>our <00:25:38.070>time <00:25:38.245>to <00:25:38.419>first <00:25:38.595>request

574
00:25:41.895 --> 00:25:43.395
<00:25:41.895>and <00:25:42.570>our <00:25:43.245>RSS,

575
00:25:45.175 --> 00:25:47.155
<00:25:45.175>So <00:25:45.375>our <00:25:45.575>build <00:25:45.774>time, <00:25:45.975>it's <00:25:46.175>almost <00:25:46.375>done <00:25:46.575>building.

576
00:25:47.155 --> 00:25:48.395
<00:25:47.155>So <00:25:47.434>I'm <00:25:47.713>using <00:25:47.992>grl <00:25:48.271>vm,

577
00:25:48.395 --> 00:25:50.035
<00:25:48.395>I <00:25:48.570>have <00:25:48.745>GRL <00:25:48.920>VM <00:25:49.095>just <00:25:49.270>installed <00:25:49.445>on <00:25:49.620>my <00:25:49.795>laptop.

578
00:25:50.135 --> 00:25:54.115
<00:25:50.135>I'm <00:25:50.275>using <00:25:50.415>Java <00:25:50.555>21, <00:25:50.695>so <00:25:50.835>it <00:25:50.975>took <00:25:51.115>one <00:25:51.254>minute <00:25:51.395>nine <00:25:51.535>seconds.

579
00:25:55.055 --> 00:25:56.235
<00:25:55.055>So <00:25:55.206>you <00:25:55.358>can <00:25:55.510>see <00:25:55.661>even <00:25:55.813>the <00:25:55.965>build <00:25:56.117>time

580
00:25:56.535 --> 00:25:58.955
<00:25:56.535>for <00:25:56.885>spring <00:25:57.235>is <00:25:57.585>significantly <00:25:57.935>longer.

581
00:25:58.975 --> 00:26:00.395
<00:25:58.975>You <00:25:59.187>know, <00:25:59.400>it's <00:25:59.614>a, <00:25:59.827>it's <00:26:00.040>an <00:26:00.253>order

582
00:26:00.395 --> 00:26:02.355
<00:26:00.395>of <00:26:00.595>magnitude <00:26:00.795>longer <00:26:00.995>than <00:26:01.195>it <00:26:01.395>took <00:26:01.595>in <00:26:01.795>Corcus,

583
00:26:02.355 --> 00:26:05.235
<00:26:02.355>it's <00:26:02.510>the <00:26:02.666>same <00:26:02.821>code, <00:26:02.977>it's <00:26:03.132>the <00:26:03.288>same <00:26:03.443>grl <00:26:03.599>VM <00:26:03.755>compiler,

584
00:26:05.465 --> 00:26:07.355
<00:26:05.465>it's <00:26:05.665>just <00:26:05.865>spring <00:26:06.064>has <00:26:06.264>to <00:26:06.465>do <00:26:06.665>more <00:26:06.865>stuff

585
00:26:07.355 --> 00:26:09.475
<00:26:07.355>and <00:26:07.510>grl <00:26:07.666>VM <00:26:07.821>has <00:26:07.977>to <00:26:08.132>do <00:26:08.288>more <00:26:08.443>stuff <00:26:08.599>for <00:26:08.755>it.

586
00:26:10.055 --> 00:26:13.275
<00:26:10.055>My <00:26:10.405>build <00:26:10.755>RSS <00:26:11.105>was <00:26:11.455>seven.

587
00:26:13.375 --> 00:26:15.195
<00:26:13.375>So <00:26:13.530>it <00:26:13.686>actually <00:26:13.841>used <00:26:13.997>less <00:26:14.152>memory <00:26:14.308>for <00:26:14.463>the <00:26:14.619>build <00:26:14.775>process.

588
00:26:16.735 --> 00:26:18.075
<00:26:16.735>My <00:26:17.338>binary <00:26:17.941>size

589
00:26:18.795 --> 00:26:23.325
<00:26:18.795>148.85 <00:26:20.195>meg.

590
00:26:23.345 --> 00:26:26.165
<00:26:23.345>So <00:26:23.545>my <00:26:23.745>binary <00:26:23.945>is <00:26:24.145>almost <00:26:24.345>twice <00:26:24.545>as <00:26:24.745>big.

591
00:26:26.505 --> 00:26:30.525
<00:26:26.505>And <00:26:26.705>now <00:26:26.905>if <00:26:27.105>I <00:26:27.305>run <00:26:27.505>my <00:26:27.705>first <00:26:27.905>request

592
00:26:34.195 --> 00:26:37.265
<00:26:34.195>three <00:26:34.544>times, <00:26:34.895>So <00:26:35.245>my <00:26:35.595>time

593
00:26:37.265 --> 00:26:40.425
<00:26:37.265>to <00:26:37.615>first <00:26:37.965>request <00:26:38.315>was <00:26:38.665>0.427

594
00:26:42.245 --> 00:26:43.645
<00:26:42.245>and <00:26:42.665>my <00:26:43.085>RSS <00:26:43.504>is

595
00:26:43.725 --> 00:26:47.925
<00:26:43.725>143.3 <00:26:44.425>megs, <00:26:45.125>right?

596
00:26:47.925 --> 00:26:50.205
<00:26:47.925>So <00:26:48.065>now <00:26:48.205>if <00:26:48.345>we <00:26:48.485>kind <00:26:48.625>of <00:26:48.764>do <00:26:48.905>a <00:26:49.044>little <00:26:49.185>comparison <00:26:49.325>here,

597
00:26:51.175 --> 00:26:54.205
<00:26:51.175>0.427 <00:26:51.455>into, <00:26:51.735>where <00:26:52.014>is <00:26:52.294>it <00:26:52.575>here,

598
00:26:57.185 --> 00:26:59.495
<00:26:57.185>0.076, <00:26:57.651>that's <00:26:58.118>like <00:26:58.585>what?

599
00:26:59.495 --> 00:27:04.205
<00:26:59.495>400% <00:26:59.774>take <00:27:00.054>takes <00:27:00.334>400% <00:27:00.614>longer <00:27:00.895>to,

600
00:27:04.205 --> 00:27:07.645
<00:27:04.205>to <00:27:04.345>do <00:27:04.485>time <00:27:04.625>to <00:27:04.764>first <00:27:04.905>request <00:27:05.044>RS <00:27:05.185>has <00:27:05.324>143 <00:27:05.465>to <00:27:05.605>89.

601
00:27:07.645 --> 00:27:10.125
<00:27:07.645>So <00:27:07.785>it's <00:27:07.925>about <00:27:08.065>half <00:27:08.205>the <00:27:08.345>size. <00:27:08.485>See <00:27:08.625>the <00:27:08.764>exact <00:27:08.905>same <00:27:09.045>code.

602
00:27:10.125 --> 00:27:11.605
<00:27:10.125>You <00:27:10.315>see, <00:27:10.505>I <00:27:10.695>didn't <00:27:10.886>change <00:27:11.076>any <00:27:11.266>source <00:27:11.457>code.

603
00:27:11.625 --> 00:27:13.925
<00:27:11.625>All <00:27:11.780>I <00:27:11.936>did <00:27:12.091>was <00:27:12.247>switch <00:27:12.402>the <00:27:12.558>framework <00:27:12.713>under <00:27:12.869>the <00:27:13.025>covers.

604
00:27:15.305 --> 00:27:16.845
<00:27:15.305>So <00:27:15.503>what <00:27:15.701>does <00:27:15.899>this <00:27:16.097>mean? <00:27:16.295>I <00:27:16.493>got <00:27:16.691>like

605
00:27:16.845 --> 00:27:18.005
<00:27:16.845>two <00:27:17.053>minutes <00:27:17.262>to <00:27:17.471>wrap <00:27:17.680>up <00:27:17.889>here.

606
00:27:18.785 --> 00:27:22.285
<00:27:18.785>So <00:27:19.018>does <00:27:19.251>this <00:27:19.485>mean <00:27:19.718>performance <00:27:19.951>matters, <00:27:20.185>right?

607
00:27:22.285 --> 00:27:24.485
<00:27:22.285>Especially <00:27:22.460>in <00:27:22.635>every, <00:27:22.810>is <00:27:22.985>it <00:27:23.160>people <00:27:23.335>running <00:27:23.510>on <00:27:23.685>cube,

608
00:27:24.805 --> 00:27:27.125
<00:27:24.805>Kubernetes, <00:27:25.005>some, <00:27:25.205>some <00:27:25.405>version <00:27:25.605>of <00:27:25.805>Kubernetes <00:27:26.005>or <00:27:26.205>containers

609
00:27:27.185 --> 00:27:29.845
<00:27:27.185>or, <00:27:27.385>or <00:27:27.585>something <00:27:27.784>You <00:27:27.985>wanna <00:27:28.185>do <00:27:28.385>capacity <00:27:28.585>planning

610
00:27:29.865 --> 00:27:30.885
<00:27:29.865>and <00:27:30.094>you <00:27:30.324>wanna <00:27:30.553>figure <00:27:30.783>out

611
00:27:30.905 --> 00:27:33.125
<00:27:30.905>how <00:27:31.080>much <00:27:31.254>stuff <00:27:31.430>can <00:27:31.605>I <00:27:31.780>jam <00:27:31.955>into <00:27:32.129>an <00:27:32.305>instance

612
00:27:33.125 --> 00:27:35.765
<00:27:33.125>before <00:27:33.252>I <00:27:33.379>have <00:27:33.506>to <00:27:33.634>add <00:27:33.761>more <00:27:33.888>nodes <00:27:34.015>to <00:27:34.143>cost <00:27:34.270>me <00:27:34.397>more <00:27:34.525>money?

613
00:27:35.995 --> 00:27:38.405
<00:27:35.995>Well, <00:27:36.150>if <00:27:36.306>my <00:27:36.461>application <00:27:36.617>uses <00:27:36.772>half <00:27:36.928>the <00:27:37.083>amount <00:27:37.239>of <00:27:37.395>resources,

614
00:27:38.425 --> 00:27:42.445
<00:27:38.425>my <00:27:38.541>time <00:27:38.658>to <00:27:38.774>first <00:27:38.891>request <00:27:39.008>is <00:27:39.125>four <00:27:39.241>times <00:27:39.358>as <00:27:39.475>fast, <00:27:39.591>I <00:27:39.708>can <00:27:39.825>shrink

615
00:27:43.025 --> 00:27:45.285
<00:27:43.025>my, <00:27:43.491>my <00:27:43.958>resource <00:27:44.425>utilization.

616
00:27:45.315 --> 00:27:48.125
<00:27:45.315>Plus <00:27:45.470>if <00:27:45.626>I <00:27:45.781>can <00:27:45.937>now <00:27:46.092>get <00:27:46.248>four <00:27:46.403>times <00:27:46.559>the <00:27:46.715>throughput,

617
00:27:48.205 --> 00:27:49.885
<00:27:48.205>I <00:27:48.405>need <00:27:48.605>four <00:27:48.804>times <00:27:49.004>less <00:27:49.205>of <00:27:49.405>the <00:27:49.605>amount

618
00:27:49.885 --> 00:27:51.045
<00:27:49.885>of <00:27:50.146>instances <00:27:50.407>that <00:27:50.668>I <00:27:50.929>need.

619
00:27:51.425 --> 00:27:53.125
<00:27:51.425>So <00:27:51.625>that <00:27:51.825>would <00:27:52.024>you, <00:27:52.225>how <00:27:52.425>would <00:27:52.625>you <00:27:52.825>like

620
00:27:53.125 --> 00:27:54.925
<00:27:53.125>to <00:27:53.280>save <00:27:53.436>50% <00:27:53.591>is <00:27:53.747>more <00:27:53.902>like <00:27:54.058>how <00:27:54.213>would <00:27:54.369>you <00:27:54.525>like

621
00:27:54.925 --> 00:27:58.045
<00:27:54.925>to <00:27:55.041>save <00:27:55.158>82 <00:27:55.274>point <00:27:55.391>a <00:27:55.508>half <00:27:55.625>percent <00:27:55.741>of <00:27:55.858>your, <00:27:55.975>of <00:27:56.091>your, <00:27:56.208>of <00:27:56.325>your,

622
00:27:58.395 --> 00:28:00.605
<00:27:58.395>your <00:27:58.675>budget <00:27:58.955>running <00:27:59.235>your <00:27:59.514>Java <00:27:59.795>portfolio?

623
00:28:01.065 --> 00:28:03.125
<00:28:01.065>And, <00:28:01.298>and, <00:28:01.531>and <00:28:01.765>it's <00:28:01.998>a <00:28:02.231>real <00:28:02.465>thing.

624
00:28:03.175 --> 00:28:05.125
<00:28:03.175>We've <00:28:03.375>actually <00:28:03.575>seen <00:28:03.774>lots <00:28:03.975>of <00:28:04.175>customers <00:28:04.375>doing <00:28:04.575>this.

625
00:28:05.145 --> 00:28:06.805
<00:28:05.145>I'm <00:28:05.378>not <00:28:05.611>gonna <00:28:05.845>read <00:28:06.078>every <00:28:06.311>case <00:28:06.545>study.

626
00:28:06.885 --> 00:28:08.405
<00:28:06.885>I <00:28:07.037>have <00:28:07.189>a <00:28:07.341>link <00:28:07.493>to <00:28:07.645>the <00:28:07.797>slides <00:28:07.949>at <00:28:08.101>the <00:28:08.253>end,

627
00:28:08.425 --> 00:28:11.445
<00:28:08.425>but <00:28:08.580>there's <00:28:08.736>plenty <00:28:08.891>of <00:28:09.047>customers <00:28:09.202>in <00:28:09.358>the <00:28:09.513>US <00:28:09.669>and <00:28:09.825>Europe

628
00:28:11.625 --> 00:28:14.405
<00:28:11.625>and <00:28:11.780>Asia, <00:28:11.936>pa, <00:28:12.091>Asia <00:28:12.247>Pacific <00:28:12.402>that <00:28:12.558>have <00:28:12.713>talked <00:28:12.869>about <00:28:13.025>this

629
00:28:14.405 --> 00:28:18.245
<00:28:14.405>and <00:28:14.560>how <00:28:14.716>easy <00:28:14.871>the <00:28:15.027>transition <00:28:15.182>is <00:28:15.338>from <00:28:15.493>spring <00:28:15.649>to <00:28:15.805>caucus.

630
00:28:18.385 --> 00:28:19.445
<00:28:18.385>Now <00:28:18.521>am <00:28:18.657>I <00:28:18.793>saying <00:28:18.930>you <00:28:19.066>should <00:28:19.202>go <00:28:19.339>out

631
00:28:19.445 --> 00:28:20.965
<00:28:19.445>and <00:28:19.673>rewrite <00:28:19.900>all <00:28:20.129>of <00:28:20.357>your <00:28:20.585>spring <00:28:20.812>applications?

632
00:28:21.325 --> 00:28:24.045
<00:28:21.325>Absolutely <00:28:21.525>not. <00:28:21.725>But <00:28:21.925>if <00:28:22.125>you're <00:28:22.325>starting <00:28:22.525>something <00:28:22.725>new,

633
00:28:24.715 --> 00:28:27.205
<00:28:24.715>take <00:28:24.855>a <00:28:24.995>look <00:28:25.135>at <00:28:25.274>it <00:28:25.415>because <00:28:25.554>it <00:28:25.695>could <00:28:25.834>actually <00:28:25.975>save <00:28:26.115>you

634
00:28:27.225 --> 00:28:29.485
<00:28:27.225>and <00:28:27.458>your <00:28:27.691>organizations <00:28:27.925>a <00:28:28.158>lot <00:28:28.391>of <00:28:28.625>money.

635
00:28:30.545 --> 00:28:31.845
<00:28:30.545>Um, <00:28:30.740>you <00:28:30.935>know, <00:28:31.130>a <00:28:31.325>bunch <00:28:31.520>of <00:28:31.715>stuff.

636
00:28:31.845 --> 00:28:34.165
<00:28:31.845>So <00:28:31.972>if <00:28:32.099>you <00:28:32.226>want <00:28:32.354>to <00:28:32.481>get <00:28:32.608>started, <00:28:32.735>we <00:28:32.863>also <00:28:32.990>did <00:28:33.117>this, <00:28:33.245>um,

637
00:28:35.355 --> 00:28:39.205
<00:28:35.355>this <00:28:35.588>experiment, <00:28:35.821>which <00:28:36.055>how <00:28:36.288>the <00:28:36.521>people, <00:28:36.755>um,

638
00:28:39.315 --> 00:28:40.725
<00:28:39.315>care <00:28:39.632>about <00:28:39.949>like <00:28:40.266>carbon <00:28:40.583>efficiency

639
00:28:40.725 --> 00:28:42.565
<00:28:40.725>and <00:28:40.958>how <00:28:41.191>carbon <00:28:41.425>neutral <00:28:41.658>your <00:28:41.891>organization <00:28:42.125>is.

640
00:28:42.825 --> 00:28:45.645
<00:28:42.825>We <00:28:42.952>looked <00:28:43.079>at <00:28:43.206>what <00:28:43.334>does <00:28:43.461>the <00:28:43.588>framework <00:28:43.715>of <00:28:43.843>choice <00:28:43.970>have <00:28:44.097>to <00:28:44.225>do

641
00:28:45.675 --> 00:28:47.445
<00:28:45.675>with <00:28:46.024>the <00:28:46.375>cost <00:28:46.725>of <00:28:47.075>electricity

642
00:28:47.445 --> 00:28:49.285
<00:28:47.445>to <00:28:47.678>help <00:28:47.911>offset <00:28:48.145>everybody's <00:28:48.378>doing <00:28:48.611>ai, <00:28:48.845>right?

643
00:28:49.285 --> 00:28:51.085
<00:28:49.285>And <00:28:49.518>everybody's <00:28:49.751>racking <00:28:49.985>up <00:28:50.218>their <00:28:50.451>GPU <00:28:50.685>bills.

644
00:28:51.505 --> 00:28:54.325
<00:28:51.505>How, <00:28:51.645>you <00:28:51.785>know, <00:28:51.925>if <00:28:52.065>we <00:28:52.205>could <00:28:52.345>be <00:28:52.485>somewhat <00:28:52.625>carbon <00:28:52.765>efficient <00:28:52.905>on

645
00:28:54.325 --> 00:28:55.405
<00:28:54.325>the <00:28:54.811>application <00:28:55.297>side

646
00:28:55.465 --> 00:28:57.605
<00:28:55.465>and <00:28:55.665>reduce <00:28:55.865>some <00:28:56.064>of <00:28:56.264>those <00:28:56.465>costs, <00:28:56.665>then <00:28:56.865>we,

647
00:28:57.605 --> 00:28:59.245
<00:28:57.605>we <00:28:57.805>make <00:28:58.005>AI <00:28:58.205>a <00:28:58.405>little <00:28:58.605>bit <00:28:58.805>more <00:28:59.005>affordable.

648
00:28:59.465 --> 00:29:01.525
<00:28:59.465>I'm <00:28:59.572>still <00:28:59.680>on <00:28:59.788>the <00:28:59.895>AI <00:29:00.003>fence, <00:29:00.111>I <00:29:00.218>don't <00:29:00.326>know <00:29:00.434>if <00:29:00.541>it's <00:29:00.649>a <00:29:00.757>good <00:29:00.865>thing

649
00:29:01.525 --> 00:29:04.605
<00:29:01.525>or <00:29:01.641>a <00:29:01.758>bad <00:29:01.875>thing <00:29:01.991>yet, <00:29:02.108>but <00:29:02.225>I <00:29:02.341>know <00:29:02.458>we're <00:29:02.575>going <00:29:02.691>in <00:29:02.808>the <00:29:02.925>wrong

650
00:29:04.605 --> 00:29:07.725
<00:29:04.605>direction <00:29:04.760>with <00:29:04.916>that <00:29:05.071>in <00:29:05.227>terms <00:29:05.382>of <00:29:05.538>carbon <00:29:05.693>efficiency <00:29:05.849>and <00:29:06.005>um,

651
00:29:08.185 --> 00:29:10.045
<00:29:08.185>and, <00:29:08.651>um, <00:29:09.118>and <00:29:09.585>cost.

652
00:29:10.045 --> 00:29:14.005
<00:29:10.045>But <00:29:10.172>what <00:29:10.299>we, <00:29:10.426>what <00:29:10.554>we <00:29:10.681>saw <00:29:10.808>was <00:29:10.935>when <00:29:11.063>we <00:29:11.190>ran <00:29:11.317>this <00:29:11.445>experiment

653
00:29:14.005 --> 00:29:17.725
<00:29:14.005>that <00:29:14.180>the <00:29:14.355>Corcus <00:29:14.530>applications <00:29:14.705>used <00:29:14.880>about <00:29:15.055>three <00:29:15.230>times <00:29:15.405>less

654
00:29:17.745 --> 00:29:19.365
<00:29:17.745>or <00:29:18.024>produced <00:29:18.304>three <00:29:18.584>times <00:29:18.864>less <00:29:19.145>carbon

655
00:29:19.435 --> 00:29:20.605
<00:29:19.435>than <00:29:19.786>the <00:29:20.137>spring <00:29:20.488>equivalent.

656
00:29:20.865 --> 00:29:23.005
<00:29:20.865>We <00:29:21.020>also <00:29:21.176>found <00:29:21.331>that <00:29:21.487>we <00:29:21.642>could <00:29:21.798>take <00:29:21.953>the <00:29:22.109>same <00:29:22.265>application

657
00:29:23.065 --> 00:29:25.165
<00:29:23.065>and <00:29:23.265>in <00:29:23.465>in <00:29:23.665>the <00:29:23.865>CORCUS <00:29:24.065>version <00:29:24.265>we <00:29:24.465>could

658
00:29:25.165 --> 00:29:26.205
<00:29:25.165>run <00:29:25.321>it <00:29:25.476>on <00:29:25.633>a <00:29:25.789>T <00:29:25.945>two <00:29:26.101>micro.

659
00:29:26.385 --> 00:29:28.725
<00:29:26.385>And <00:29:26.525>in <00:29:26.665>whereas <00:29:26.805>the <00:29:26.945>spring <00:29:27.085>we <00:29:27.225>needed <00:29:27.365>a <00:29:27.504>T <00:29:27.645>two <00:29:27.785>medium.

660
00:29:29.065 --> 00:29:32.605
<00:29:29.065>And <00:29:29.181>we <00:29:29.298>all <00:29:29.415>know <00:29:29.531>like <00:29:29.648>in <00:29:29.765>an <00:29:29.881>Amazon <00:29:29.998>instant <00:29:30.115>type <00:29:30.231>cost <00:29:30.348>per <00:29:30.465>hour

661
00:29:32.705 --> 00:29:33.885
<00:29:32.705>is <00:29:33.059>not <00:29:33.413>linear, <00:29:33.767>right?

662
00:29:33.885 --> 00:29:35.405
<00:29:33.885>So <00:29:34.080>the <00:29:34.275>bigger <00:29:34.471>the <00:29:34.666>instance <00:29:34.862>type <00:29:35.057>you <00:29:35.253>have,

663
00:29:35.405 --> 00:29:37.605
<00:29:35.405>the <00:29:35.605>more <00:29:35.805>it <00:29:36.004>costs <00:29:36.205>you <00:29:36.405>over <00:29:36.605>over <00:29:36.805>time.

664
00:29:38.425 --> 00:29:39.765
<00:29:38.425>So <00:29:38.726>the <00:29:39.028>other <00:29:39.329>thing <00:29:39.631>just

665
00:29:39.765 --> 00:29:41.365
<00:29:39.765>to <00:29:39.965>mention <00:29:40.165>on <00:29:40.365>corcus <00:29:40.565>is <00:29:40.765>fully <00:29:40.965>open <00:29:41.165>source.

666
00:29:41.515 --> 00:29:43.525
<00:29:41.515>It's <00:29:41.715>not <00:29:41.915>owned <00:29:42.115>by <00:29:42.315>any <00:29:42.515>one <00:29:42.715>particular <00:29:42.915>vendor.

667
00:29:43.595 --> 00:29:46.045
<00:29:43.595>It's <00:29:43.795>part <00:29:43.995>of <00:29:44.195>an <00:29:44.395>open <00:29:44.595>source <00:29:44.795>foundation, <00:29:44.995>whereas

668
00:29:46.925 --> 00:29:48.245
<00:29:46.925>I <00:29:47.073>don't <00:29:47.222>know <00:29:47.370>if <00:29:47.519>any, <00:29:47.667>does <00:29:47.815>anybody <00:29:47.964>use <00:29:48.112>Spring

669
00:29:48.245 --> 00:29:49.285
<00:29:48.245>Cloud <00:29:48.479>data <00:29:48.713>flow <00:29:48.947>out <00:29:49.181>there?

670
00:29:49.765 --> 00:29:52.005
<00:29:49.765>I <00:29:49.920>know <00:29:50.076>Spring <00:29:50.231>cloud <00:29:50.387>data <00:29:50.542>flow <00:29:50.698>has <00:29:50.853>just <00:29:51.009>closed <00:29:51.165>sourced

671
00:29:52.015 --> 00:29:53.525
<00:29:52.015>their, <00:29:52.468>the, <00:29:52.921>the <00:29:53.374>product.

672
00:29:53.625 --> 00:29:55.245
<00:29:53.625>So <00:29:53.800>there's <00:29:53.975>no <00:29:54.150>more <00:29:54.325>open <00:29:54.500>source <00:29:54.675>version <00:29:54.850>of <00:29:55.025>it.

673
00:29:55.705 --> 00:29:57.925
<00:29:55.705>What's <00:29:55.938>gonna <00:29:56.171>happen <00:29:56.405>with <00:29:56.638>other <00:29:56.871>spring <00:29:57.105>projects?

674
00:29:57.965 --> 00:29:59.645
<00:29:57.965>I <00:29:58.105>don't <00:29:58.245>know. <00:29:58.385>I'm <00:29:58.524>not, <00:29:58.665>I <00:29:58.804>don't <00:29:58.945>have <00:29:59.084>a <00:29:59.225>crystal <00:29:59.365>ball,

675
00:29:59.665 --> 00:30:00.805
<00:29:59.665>but <00:29:59.921>it's, <00:30:00.178>you <00:30:00.434>know, <00:30:00.691>something

676
00:30:00.805 --> 00:30:01.885
<00:30:00.805>to <00:30:00.943>keep <00:30:01.082>in <00:30:01.221>the <00:30:01.360>back <00:30:01.499>of <00:30:01.638>your <00:30:01.777>mind.

677
00:30:02.345 --> 00:30:03.885
<00:30:02.345>If <00:30:02.543>you <00:30:02.741>want <00:30:02.939>to <00:30:03.137>get <00:30:03.335>started <00:30:03.533>with <00:30:03.731>Corcus,

678
00:30:03.885 --> 00:30:05.325
<00:30:03.885>there's <00:30:04.317>the <00:30:04.749>sample <00:30:05.181>application.

679
00:30:05.985 --> 00:30:07.725
<00:30:05.985>And <00:30:06.218>again, <00:30:06.451>thank <00:30:06.685>you <00:30:06.918>for, <00:30:07.151>for <00:30:07.385>coming.

680
00:30:07.925 --> 00:30:09.765
<00:30:07.925>I <00:30:08.125>have <00:30:08.325>a <00:30:08.524>talk <00:30:08.725>later <00:30:08.925>about <00:30:09.125>test <00:30:09.325>driven

681
00:30:09.765 --> 00:30:11.475
<00:30:09.765>development <00:30:10.231>and <00:30:10.698>thank <00:30:11.165>you.

682
00:30:11.475 --> 00:30:12.275
<00:30:11.475>There's <00:30:11.715>all <00:30:11.955>the <00:30:12.195>slides.