WEBVTT

1
00:00:02.825 --> 00:00:04.125
<00:00:02.825>So, <00:00:03.059>uh, <00:00:03.293>thank <00:00:03.527>you <00:00:03.761>all <00:00:03.995>coming.

2
00:00:04.345 --> 00:00:07.045
<00:00:04.345>Um, <00:00:04.500>in <00:00:04.656>this <00:00:04.811>talk, <00:00:04.967>we're <00:00:05.122>going <00:00:05.278>to, <00:00:05.433>uh, <00:00:05.589>go <00:00:05.744>over

3
00:00:07.105 --> 00:00:10.125
<00:00:07.105>how <00:00:07.232>you <00:00:07.359>can <00:00:07.486>go <00:00:07.614>from <00:00:07.741>boy <00:00:07.868>scouting <00:00:07.995>away <00:00:08.123>problems <00:00:08.250>in <00:00:08.377>your <00:00:08.505>code,

4
00:00:10.585 --> 00:00:12.645
<00:00:10.585>uh, <00:00:10.865>to <00:00:11.145>actually <00:00:11.425>redrawing <00:00:11.705>the <00:00:11.985>landscape

5
00:00:12.705 --> 00:00:14.405
<00:00:12.705>by <00:00:12.938>working <00:00:13.171>at <00:00:13.405>a <00:00:13.638>very <00:00:13.871>large <00:00:14.105>scale.

6
00:00:15.825 --> 00:00:18.445
<00:00:15.825>My <00:00:15.965>name's <00:00:16.105>Tim <00:00:16.244>Twick <00:00:16.384>and <00:00:16.525>I'm <00:00:16.665>a <00:00:16.805>staff <00:00:16.945>software <00:00:17.085>engineer <00:00:17.224>at

7
00:00:18.445 --> 00:00:20.285
<00:00:18.445>Modern, <00:00:18.725>where <00:00:19.005>I <00:00:19.285>am <00:00:19.565>the <00:00:19.845>head

8
00:00:20.305 --> 00:00:22.165
<00:00:20.305>of <00:00:20.585>the <00:00:20.865>community <00:00:21.145>for <00:00:21.425>Open <00:00:21.705>Rewind.

9
00:00:22.865 --> 00:00:25.245
<00:00:22.865>And <00:00:23.005>I <00:00:23.145>also <00:00:23.284>work <00:00:23.424>on <00:00:23.564>the <00:00:23.705>tooling <00:00:23.845>that <00:00:23.985>we <00:00:24.125>have <00:00:24.264>developed

10
00:00:25.245 --> 00:00:27.005
<00:00:25.245>around, <00:00:25.525>uh, <00:00:25.805>open <00:00:26.085>rewind <00:00:26.365>at <00:00:26.645>Modern,

11
00:00:27.625 --> 00:00:29.965
<00:00:27.625>and <00:00:27.825>occasionally <00:00:28.025>I <00:00:28.225>present <00:00:28.425>at <00:00:28.625>conferences <00:00:28.825>like <00:00:29.025>this

12
00:00:29.965 --> 00:00:31.005
<00:00:29.965>one, <00:00:30.277>uh, <00:00:30.589>or <00:00:30.901>online.

13
00:00:32.945 --> 00:00:34.845
<00:00:32.945>But <00:00:33.145>for <00:00:33.345>this <00:00:33.545>presentation <00:00:33.745>in <00:00:33.945>particular, <00:00:34.145>I <00:00:34.345>want

14
00:00:34.845 --> 00:00:37.685
<00:00:34.845>to <00:00:34.985>take <00:00:35.125>you <00:00:35.265>a <00:00:35.405>little <00:00:35.545>further <00:00:35.685>back <00:00:35.824>to <00:00:35.964>my <00:00:36.105>early <00:00:36.245>teens.

15
00:00:38.745 --> 00:00:43.405
<00:00:38.745>See, <00:00:38.861>I <00:00:38.978>was <00:00:39.095>a <00:00:39.211>shy, <00:00:39.328>socially <00:00:39.445>awkward <00:00:39.561>kid, <00:00:39.678>so <00:00:39.794>to <00:00:39.911>draw <00:00:40.028>me <00:00:40.144>out

16
00:00:43.405 --> 00:00:45.925
<00:00:43.405>of <00:00:43.560>my <00:00:43.716>shell, <00:00:43.871>my <00:00:44.027>parents <00:00:44.182>thought <00:00:44.338>to <00:00:44.493>put <00:00:44.649>me <00:00:44.805>up

17
00:00:45.925 --> 00:00:46.965
<00:00:45.925>with <00:00:46.237>the <00:00:46.549>Boy <00:00:46.861>Scouts,

18
00:00:47.665 --> 00:00:49.645
<00:00:47.665>and <00:00:47.839>that <00:00:48.015>meant <00:00:48.190>that <00:00:48.365>I <00:00:48.540>was <00:00:48.714>now <00:00:48.890>a <00:00:49.065>shy,

19
00:00:50.245 --> 00:00:51.765
<00:00:50.245>socially <00:00:50.701>awkward <00:00:51.157>kid <00:00:51.613>surrounded

20
00:00:51.765 --> 00:00:54.565
<00:00:51.765>by <00:00:51.965>other <00:00:52.165>similar <00:00:52.365>kids <00:00:52.565>wearing <00:00:52.765>a <00:00:52.965>nerd <00:00:53.165>outfit.

21
00:00:55.625 --> 00:00:58.525
<00:00:55.625>In <00:00:55.752>many <00:00:55.879>ways, <00:00:56.006>I <00:00:56.134>was <00:00:56.261>getting <00:00:56.388>a <00:00:56.515>head <00:00:56.643>start <00:00:56.770>on <00:00:56.897>my, <00:00:57.025>uh,

22
00:00:58.525 --> 00:00:59.605
<00:00:58.525>later <00:00:59.010>IT <00:00:59.497>career,

23
00:01:00.625 --> 00:01:02.765
<00:01:00.625>but <00:01:00.825>it <00:01:01.025>also <00:01:01.225>taught <00:01:01.425>me <00:01:01.625>some <00:01:01.825>valuable <00:01:02.025>lessons.

24
00:01:03.185 --> 00:01:04.325
<00:01:03.185>And <00:01:03.441>the <00:01:03.698>first <00:01:03.954>lesson <00:01:04.211>being

25
00:01:04.325 --> 00:01:06.125
<00:01:04.325>that <00:01:04.605>I <00:01:04.885>really <00:01:05.165>like <00:01:05.445>helping <00:01:05.725>people.

26
00:01:06.795 --> 00:01:09.405
<00:01:06.795>It's <00:01:06.902>part <00:01:07.010>of <00:01:07.118>why <00:01:07.225>I'm <00:01:07.333>here <00:01:07.441>and, <00:01:07.548>and <00:01:07.656>what <00:01:07.764>I <00:01:07.871>really <00:01:07.979>like <00:01:08.087>to <00:01:08.195>do,

27
00:01:09.705 --> 00:01:11.405
<00:01:09.705>and <00:01:09.880>it's <00:01:10.054>also <00:01:10.230>a <00:01:10.405>large <00:01:10.580>part <00:01:10.755>of <00:01:10.929>my <00:01:11.105>work.

28
00:01:12.745 --> 00:01:16.445
<00:01:12.745>Second <00:01:12.885>thing <00:01:13.025>I <00:01:13.165>learned <00:01:13.305>was <00:01:13.445>a <00:01:13.585>lot <00:01:13.725>about <00:01:13.865>knots <00:01:14.005>and <00:01:14.145>camping,

29
00:01:16.505 --> 00:01:19.445
<00:01:16.505>and <00:01:16.632>that's <00:01:16.759>the <00:01:16.886>things <00:01:17.014>I <00:01:17.141>like <00:01:17.268>to <00:01:17.395>apply <00:01:17.523>when <00:01:17.650>I'm <00:01:17.777>going <00:01:17.905>hiking

30
00:01:19.625 --> 00:01:21.165
<00:01:19.625>or <00:01:19.902>climbing <00:01:20.179>in <00:01:20.456>my <00:01:20.733>spare <00:01:21.011>time.

31
00:01:22.305 --> 00:01:24.805
<00:01:22.305>And <00:01:22.460>the <00:01:22.616>third <00:01:22.771>thing <00:01:22.927>I <00:01:23.082>learned <00:01:23.238>is <00:01:23.393>the <00:01:23.549>Scouts <00:01:23.705>rule.

32
00:01:25.305 --> 00:01:28.885
<00:01:25.305>And <00:01:25.432>if <00:01:25.559>you <00:01:25.686>haven't <00:01:25.814>been <00:01:25.941>a <00:01:26.068>scout, <00:01:26.195>then <00:01:26.323>this <00:01:26.450>is <00:01:26.577>the <00:01:26.705>rule.

33
00:01:29.105 --> 00:01:32.405
<00:01:29.105>It <00:01:29.245>says <00:01:29.385>to <00:01:29.525>leave <00:01:29.665>a <00:01:29.805>campground <00:01:29.945>better <00:01:30.085>than <00:01:30.225>you <00:01:30.365>found <00:01:30.505>it.

34
00:01:33.665 --> 00:01:35.445
<00:01:33.664>At <00:01:33.865>the <00:01:34.065>end <00:01:34.264>of <00:01:34.464>a <00:01:34.664>week <00:01:34.865>of <00:01:35.065>camping,

35
00:01:35.505 --> 00:01:37.485
<00:01:35.505>we <00:01:35.785>would <00:01:36.065>all <00:01:36.345>systematically <00:01:36.625>line <00:01:36.905>up

36
00:01:37.585 --> 00:01:39.845
<00:01:37.585>and <00:01:37.865>walk <00:01:38.145>the <00:01:38.425>campground <00:01:38.705>to, <00:01:38.985>um,

37
00:01:40.735 --> 00:01:42.925
<00:01:40.735>clean <00:01:40.968>up <00:01:41.201>anything <00:01:41.435>that <00:01:41.668>we <00:01:41.901>had <00:01:42.135>missed.

38
00:01:43.465 --> 00:01:45.325
<00:01:43.465>Um, <00:01:43.745>that <00:01:44.025>way <00:01:44.305>we <00:01:44.585>would <00:01:44.865>ensure

39
00:01:45.325 --> 00:01:48.325
<00:01:45.325>that <00:01:45.525>the <00:01:45.725>campground <00:01:45.925>would <00:01:46.125>gradually <00:01:46.325>improve <00:01:46.525>over <00:01:46.725>time.

40
00:01:49.225 --> 00:01:52.685
<00:01:49.225>And <00:01:49.380>this <00:01:49.536>has <00:01:49.691>carried <00:01:49.847>over <00:01:50.002>professionally <00:01:50.158>into <00:01:50.313>the <00:01:50.469>IT <00:01:50.625>field

41
00:01:52.685 --> 00:01:54.725
<00:01:52.685>that <00:01:52.965>I'm <00:01:53.245>now <00:01:53.525>work <00:01:53.805>in, <00:01:54.085>perhaps

42
00:01:54.725 --> 00:01:58.365
<00:01:54.725>because <00:01:54.899>some <00:01:55.074>of <00:01:55.250>those <00:01:55.425>same <00:01:55.600>kids <00:01:55.774>gravitated <00:01:55.949>towards <00:01:56.125>it

43
00:02:00.195 --> 00:02:01.405
<00:02:00.195>when <00:02:00.558>applied <00:02:00.920>to <00:02:01.284>code

44
00:02:01.515 --> 00:02:03.605
<00:02:01.515>that <00:02:01.748>Scouts <00:02:01.981>rule <00:02:02.215>looks <00:02:02.448>something <00:02:02.681>like <00:02:02.915>this.

45
00:02:04.335 --> 00:02:07.445
<00:02:04.335>First <00:02:04.490>you <00:02:04.646>decide <00:02:04.801>on <00:02:04.957>what <00:02:05.112>that <00:02:05.268>better <00:02:05.423>state <00:02:05.579>looks <00:02:05.735>like,

46
00:02:07.575 --> 00:02:12.045
<00:02:07.575>which <00:02:07.715>could <00:02:07.855>be <00:02:07.995>something <00:02:08.134>like <00:02:08.275>this <00:02:08.414>where <00:02:08.555>you <00:02:08.695>find <00:02:08.835>that <00:02:08.975>you,

47
00:02:12.305 --> 00:02:13.845
<00:02:12.305>uh, <00:02:12.582>do <00:02:12.859>things <00:02:13.136>a <00:02:13.413>certain <00:02:13.691>way,

48
00:02:13.905 --> 00:02:16.005
<00:02:13.905>but <00:02:14.080>you'd <00:02:14.255>rather <00:02:14.430>be <00:02:14.605>doing <00:02:14.780>them <00:02:14.955>some <00:02:15.130>other <00:02:15.305>way.

49
00:02:16.145 --> 00:02:19.285
<00:02:16.145>So <00:02:16.300>you <00:02:16.456>deprecate <00:02:16.611>a <00:02:16.767>method, <00:02:16.922>you <00:02:17.078>introduce <00:02:17.233>a <00:02:17.389>new <00:02:17.545>one,

50
00:02:19.585 --> 00:02:21.845
<00:02:19.585>and <00:02:19.818>then <00:02:20.051>you <00:02:20.285>gradually <00:02:20.518>over <00:02:20.751>time, <00:02:20.985>um,

51
00:02:22.265 --> 00:02:24.645
<00:02:22.265>change <00:02:22.440>into <00:02:22.614>using <00:02:22.790>the <00:02:22.964>new <00:02:23.140>way <00:02:23.315>of <00:02:23.489>doing <00:02:23.665>things.

52
00:02:25.745 --> 00:02:28.285
<00:02:25.745>Now, <00:02:25.872>in <00:02:25.999>principle, <00:02:26.126>this <00:02:26.254>is <00:02:26.381>a <00:02:26.508>good <00:02:26.635>way <00:02:26.763>to <00:02:26.890>go <00:02:27.017>about <00:02:27.145>it.

53
00:02:28.315 --> 00:02:31.165
<00:02:28.315>It's <00:02:28.470>a <00:02:28.626>very <00:02:28.781>natural <00:02:28.937>way <00:02:29.092>to <00:02:29.248>clean <00:02:29.403>up <00:02:29.559>your <00:02:29.715>coat,

54
00:02:32.505 --> 00:02:35.205
<00:02:32.505>but <00:02:32.660>I've <00:02:32.816>also <00:02:32.971>seen <00:02:33.127>it <00:02:33.282>being <00:02:33.438>used <00:02:33.593>to <00:02:33.749>postpone <00:02:33.905>work

55
00:02:35.205 --> 00:02:36.685
<00:02:35.204>that <00:02:35.427>you <00:02:35.649>don't <00:02:35.870>quite <00:02:36.093>want <00:02:36.315>to <00:02:36.537>do.

56
00:02:36.785 --> 00:02:40.565
<00:02:36.785>You <00:02:36.912>just <00:02:37.039>tag <00:02:37.166>on <00:02:37.294>it <00:02:37.421>to <00:02:37.548>do. <00:02:37.675>We'll <00:02:37.803>fix <00:02:37.930>this <00:02:38.057>in <00:02:38.185>2025.

57
00:02:41.705 --> 00:02:42.845
<00:02:41.704>And <00:02:42.218>it's <00:02:42.731>fair.

58
00:02:43.155 --> 00:02:46.725
<00:02:43.155>It's, <00:02:43.295>uh, <00:02:43.435>I've <00:02:43.575>never <00:02:43.715>as <00:02:43.855>a <00:02:43.995>scout <00:02:44.135>gone <00:02:44.275>out <00:02:44.415>to <00:02:44.555>campsites

59
00:02:46.725 --> 00:02:48.325
<00:02:46.725>that <00:02:47.005>I <00:02:47.285>haven't <00:02:47.565>visited <00:02:47.845>yet, <00:02:48.125>just

60
00:02:48.325 --> 00:02:49.765
<00:02:48.325>to <00:02:48.541>clean <00:02:48.756>them <00:02:48.972>up <00:02:49.189>and <00:02:49.404>leave <00:02:49.620>again.

61
00:02:50.385 --> 00:02:52.165
<00:02:50.385>So <00:02:50.665>perhaps <00:02:50.945>it's <00:02:51.225>a <00:02:51.505>fitting <00:02:51.785>analogy,

62
00:02:53.825 --> 00:02:56.485
<00:02:53.825>but <00:02:53.980>for <00:02:54.136>software, <00:02:54.291>it's, <00:02:54.447>it's <00:02:54.602>much <00:02:54.758>like <00:02:54.913>maintaining <00:02:55.069>your <00:02:55.225>car.

63
00:02:56.545 --> 00:02:58.165
<00:02:56.545>You <00:02:56.745>want <00:02:56.945>to <00:02:57.145>be <00:02:57.345>sure <00:02:57.545>that <00:02:57.745>your <00:02:57.945>tire

64
00:02:58.685 --> 00:02:59.845
<00:02:58.685>pressure <00:02:58.893>is <00:02:59.102>kept <00:02:59.311>up <00:02:59.520>to <00:02:59.728>date.

65
00:02:59.845 --> 00:03:01.965
<00:02:59.845>You <00:03:00.045>want <00:03:00.245>to <00:03:00.445>be <00:03:00.645>changing <00:03:00.845>your <00:03:01.045>oil <00:03:01.245>because

66
00:03:01.965 --> 00:03:04.725
<00:03:01.965>otherwise <00:03:02.165>things <00:03:02.365>might, <00:03:02.565>um, <00:03:02.765>start <00:03:02.965>to <00:03:03.165>break <00:03:03.365>down

67
00:03:05.465 --> 00:03:08.085
<00:03:05.465>and <00:03:05.581>you <00:03:05.698>don't <00:03:05.815>wanna <00:03:05.931>be <00:03:06.048>called <00:03:06.165>up <00:03:06.281>in <00:03:06.398>the <00:03:06.515>middle <00:03:06.631>of <00:03:06.748>the <00:03:06.865>night

68
00:03:08.145 --> 00:03:10.045
<00:03:08.145>to <00:03:08.345>hear <00:03:08.545>that <00:03:08.745>there <00:03:08.945>is <00:03:09.145>a <00:03:09.345>new <00:03:09.545>vulnerability.

69
00:03:10.545 --> 00:03:13.125
<00:03:10.545>And <00:03:10.720>to <00:03:10.894>actually <00:03:11.070>mitigate <00:03:11.244>that <00:03:11.420>vulnerability, <00:03:11.595>you <00:03:11.769>now <00:03:11.945>have

70
00:03:13.125 --> 00:03:14.365
<00:03:13.125>to <00:03:13.348>upgrade <00:03:13.571>to <00:03:13.794>Spring <00:03:14.017>Booth <00:03:14.241>three.

71
00:03:14.875 --> 00:03:19.165
<00:03:14.875>It's <00:03:15.015>not <00:03:15.155>a <00:03:15.295>fun <00:03:15.435>call <00:03:15.575>to <00:03:15.715>have <00:03:15.855>at <00:03:15.995>3:00 <00:03:16.135>AM <00:03:16.275>So

72
00:03:19.755 --> 00:03:23.485
<00:03:19.755>what <00:03:19.910>if <00:03:20.066>we <00:03:20.221>could <00:03:20.377>instead <00:03:20.532>automate <00:03:20.688>that <00:03:20.843>Scouts <00:03:20.999>rule <00:03:21.155>such

73
00:03:23.485 --> 00:03:25.925
<00:03:23.485>that <00:03:23.640>we <00:03:23.796>could <00:03:23.951>leave <00:03:24.107>our <00:03:24.262>code <00:03:24.418>in <00:03:24.573>a <00:03:24.729>better <00:03:24.885>state?

74
00:03:26.225 --> 00:03:29.245
<00:03:26.225>The <00:03:26.364>moment <00:03:26.505>that <00:03:26.644>we <00:03:26.785>have <00:03:26.924>decided <00:03:27.065>what <00:03:27.204>that <00:03:27.345>better <00:03:27.484>state <00:03:27.625>is,

75
00:03:30.955 --> 00:03:33.725
<00:03:30.954>that <00:03:31.130>is <00:03:31.304>exactly <00:03:31.480>what <00:03:31.654>we <00:03:31.829>do <00:03:32.005>with <00:03:32.179>Open <00:03:32.355>Rewrite.

76
00:03:33.985 --> 00:03:36.485
<00:03:33.985>Now, <00:03:34.185>as <00:03:34.385>a <00:03:34.585>quick <00:03:34.785>show <00:03:34.985>of <00:03:35.185>hands, <00:03:35.385>uh,

77
00:03:36.485 --> 00:03:38.405
<00:03:36.485>could <00:03:36.660>you <00:03:36.835>raise <00:03:37.010>your <00:03:37.185>hand <00:03:37.360>if <00:03:37.535>you <00:03:37.710>have <00:03:37.885>ever

78
00:03:38.415 --> 00:03:39.765
<00:03:38.415>heard <00:03:38.820>of <00:03:39.225>Open <00:03:39.630>Rewrite?

79
00:03:42.275 --> 00:03:45.245
<00:03:42.275>It's <00:03:42.508>about <00:03:42.741>15, <00:03:42.975>20% <00:03:43.208>of <00:03:43.441>the <00:03:43.675>room.

80
00:03:46.055 --> 00:03:49.155
<00:03:46.055>Um, <00:03:46.195>now <00:03:46.335>who <00:03:46.475>of <00:03:46.615>those <00:03:46.755>folks <00:03:46.895>have <00:03:47.035>actually <00:03:47.175>used <00:03:47.315>Open <00:03:47.455>Rewrite?

81
00:03:50.855 --> 00:03:53.275
<00:03:50.855>That's <00:03:51.030>two <00:03:51.204>folks. <00:03:51.380>That <00:03:51.554>is <00:03:51.730>not <00:03:51.905>a <00:03:52.079>great <00:03:52.255>score.

82
00:03:54.175 --> 00:03:57.595
<00:03:54.175>So <00:03:54.375>Open <00:03:54.575>Rewrite <00:03:54.775>is <00:03:54.975>a <00:03:55.175>open <00:03:55.375>source <00:03:55.575>framework

83
00:03:57.895 --> 00:04:00.195
<00:03:57.895>to <00:03:58.245>do <00:03:58.595>Safe <00:03:58.945>Code <00:03:59.295>Transformations.

84
00:04:00.815 --> 00:04:03.355
<00:04:00.815>You <00:04:00.954>might <00:04:01.095>have <00:04:01.234>heard <00:04:01.375>about <00:04:01.515>it <00:04:01.655>if <00:04:01.795>you've <00:04:01.935>ever <00:04:02.075>upgraded <00:04:02.215>your

85
00:04:03.355 --> 00:04:05.355
<00:04:03.355>spring <00:04:03.704>applications, <00:04:04.054>a <00:04:04.405>caucus <00:04:04.755>application

86
00:04:05.355 --> 00:04:06.635
<00:04:05.355>or <00:04:05.643>a <00:04:05.930>micro <00:04:06.219>node <00:04:06.507>application.

87
00:04:08.055 --> 00:04:10.475
<00:04:08.055>But <00:04:08.230>then <00:04:08.405>the <00:04:08.580>very <00:04:08.755>tricky <00:04:08.930>question <00:04:09.105>for <00:04:09.280>me <00:04:09.455>is

88
00:04:10.735 --> 00:04:11.995
<00:04:10.735>who <00:04:10.961>has <00:04:11.188>ever <00:04:11.415>heard <00:04:11.642>of <00:04:11.869>Modern?

89
00:04:13.025 --> 00:04:16.475
<00:04:13.025>Because <00:04:13.225>modern <00:04:13.425>is <00:04:13.625>the <00:04:13.825>company <00:04:14.025>behind <00:04:14.225>Open <00:04:14.425>Rewrite.

90
00:04:16.525 --> 00:04:18.755
<00:04:16.524>We've <00:04:16.680>done <00:04:16.836>our <00:04:16.991>best <00:04:17.147>to <00:04:17.302>keep <00:04:17.458>the <00:04:17.613>logos <00:04:17.769>very <00:04:17.924>similar,

91
00:04:19.175 --> 00:04:20.875
<00:04:19.175>but <00:04:19.350>not <00:04:19.525>a <00:04:19.700>lot <00:04:19.875>of <00:04:20.050>folks <00:04:20.225>have <00:04:20.400>figured <00:04:20.575>out

92
00:04:20.875 --> 00:04:23.955
<00:04:20.875>that <00:04:21.002>it's <00:04:21.129>just <00:04:21.256>the <00:04:21.384>same <00:04:21.511>logo <00:04:21.638>with <00:04:21.765>a <00:04:21.893>swipe <00:04:22.020>twist <00:04:22.147>to <00:04:22.275>it.

93
00:04:24.735 --> 00:04:28.435
<00:04:24.735>So <00:04:24.851>what <00:04:24.968>we <00:04:25.085>do <00:04:25.201>is <00:04:25.318>we <00:04:25.435>build <00:04:25.551>upon <00:04:25.668>Open <00:04:25.785>Rewrite <00:04:25.901>to <00:04:26.018>allow <00:04:26.135>you

94
00:04:28.435 --> 00:04:31.955
<00:04:28.435>to <00:04:28.590>run <00:04:28.746>those <00:04:28.901>transformation <00:04:29.057>recipes <00:04:29.212>at <00:04:29.368>a <00:04:29.523>very <00:04:29.679>large <00:04:29.835>scale.

95
00:04:32.885 --> 00:04:35.625
<00:04:32.885>We <00:04:33.040>do <00:04:33.196>that <00:04:33.351>by <00:04:33.507>serializing <00:04:33.662>the <00:04:33.818>model <00:04:33.973>that <00:04:34.129>we <00:04:34.284>build

96
00:04:35.625 --> 00:04:38.625
<00:04:35.625>of <00:04:35.780>your <00:04:35.936>code <00:04:36.091>such <00:04:36.247>that <00:04:36.402>you <00:04:36.558>can <00:04:36.713>do <00:04:36.869>faster <00:04:37.025>runs,

97
00:04:38.685 --> 00:04:40.385
<00:04:38.685>you <00:04:38.965>do <00:04:39.245>know <00:04:39.525>very <00:04:39.805>quick <00:04:40.085>analysis,

98
00:04:40.765 --> 00:04:43.065
<00:04:40.765>and <00:04:40.965>you <00:04:41.164>can <00:04:41.365>also <00:04:41.565>do <00:04:41.765>visualizations <00:04:41.965>and <00:04:42.164>exports.

99
00:04:43.965 --> 00:04:47.345
<00:04:43.965>Our <00:04:44.140>customers <00:04:44.315>then <00:04:44.490>use <00:04:44.665>this <00:04:44.840>to <00:04:45.015>help <00:04:45.190>maintain <00:04:45.365>tens

100
00:04:47.345 --> 00:04:48.785
<00:04:47.345>of <00:04:47.604>millions <00:04:47.863>of <00:04:48.122>lines <00:04:48.381>of <00:04:48.640>code.

101
00:04:50.605 --> 00:04:53.265
<00:04:50.605>So <00:04:50.760>as <00:04:50.916>a <00:04:51.071>quick <00:04:51.227>example, <00:04:51.382>if <00:04:51.538>you <00:04:51.693>want <00:04:51.849>to <00:04:52.005>see

102
00:04:53.295 --> 00:04:54.945
<00:04:53.295>what <00:04:53.645>automated <00:04:53.995>change <00:04:54.345>looks <00:04:54.695>like,

103
00:04:55.095 --> 00:04:59.625
<00:04:55.095>then <00:04:55.235>let's <00:04:55.375>have <00:04:55.515>a <00:04:55.655>look <00:04:55.795>at <00:04:55.935>this <00:04:56.075>particular <00:04:56.215>example <00:04:56.355>for <00:04:56.495>Java

104
00:04:59.685 --> 00:05:01.905
<00:04:59.685>and <00:04:59.918>EJ <00:05:00.151>Unit <00:05:00.385>four <00:05:00.618>to <00:05:00.851>five <00:05:01.085>upgrade.

105
00:05:02.525 --> 00:05:05.545
<00:05:02.525>Now, <00:05:02.664>if <00:05:02.804>you <00:05:02.945>are <00:05:03.085>a <00:05:03.224>leftover <00:05:03.364>Java <00:05:03.505>developer <00:05:03.645>from <00:05:03.784>the <00:05:03.924>previous

106
00:05:05.545 --> 00:05:09.265
<00:05:05.545>stock, <00:05:05.700>you've <00:05:05.856>probably <00:05:06.011>done <00:05:06.167>this <00:05:06.322>migration <00:05:06.478>in <00:05:06.633>the <00:05:06.789>past <00:05:06.945>where

107
00:05:09.965 --> 00:05:12.865
<00:05:09.965>INJ <00:05:10.104>unit <00:05:10.244>four <00:05:10.385>in <00:05:10.525>red <00:05:10.664>here, <00:05:10.804>if <00:05:10.945>you <00:05:11.085>wanted <00:05:11.224>to <00:05:11.364>assert

108
00:05:12.865 --> 00:05:15.905
<00:05:12.865>that <00:05:13.005>an <00:05:13.145>exception <00:05:13.285>was <00:05:13.425>thrown, <00:05:13.565>you <00:05:13.705>would <00:05:13.845>have <00:05:13.985>to <00:05:14.125>uh, <00:05:14.265>add

109
00:05:15.905 --> 00:05:17.145
<00:05:15.905>that <00:05:16.277>to <00:05:16.649>the <00:05:17.020>annotation.

110
00:05:17.855 --> 00:05:20.185
<00:05:17.855>Whereas <00:05:18.088>INJ <00:05:18.321>unit <00:05:18.555>five, <00:05:18.788>you <00:05:19.021>now <00:05:19.255>have

111
00:05:20.185 --> 00:05:22.625
<00:05:20.185>to <00:05:20.360>call <00:05:20.535>a <00:05:20.710>different <00:05:20.885>method <00:05:21.060>with <00:05:21.235>that <00:05:21.410>same, <00:05:21.585>uh,

112
00:05:22.945 --> 00:05:26.665
<00:05:22.945>argument <00:05:23.085>class <00:05:23.224>and <00:05:23.365>then <00:05:23.505>pass <00:05:23.645>in <00:05:23.784>alumni <00:05:23.925>using <00:05:24.065>the <00:05:24.205>same <00:05:24.344>body

113
00:05:26.665 --> 00:05:27.785
<00:05:26.665>that <00:05:27.001>you <00:05:27.337>had <00:05:27.673>before.

114
00:05:28.655 --> 00:05:30.705
<00:05:28.655>I've <00:05:28.810>spoken <00:05:28.966>to <00:05:29.121>quite <00:05:29.277>a <00:05:29.432>lot <00:05:29.588>of <00:05:29.743>folks <00:05:29.899>who <00:05:30.054>said

115
00:05:30.705 --> 00:05:33.425
<00:05:30.705>that <00:05:30.860>they <00:05:31.016>did <00:05:31.171>the <00:05:31.327>J <00:05:31.482>unit <00:05:31.638>four <00:05:31.793>to <00:05:31.949>five <00:05:32.104>migrations

116
00:05:33.455 --> 00:05:34.865
<00:05:33.455>with <00:05:34.089>regular <00:05:34.724>expressions.

117
00:05:36.135 --> 00:05:39.385
<00:05:36.135>Good <00:05:36.310>luck <00:05:36.485>doing <00:05:36.659>this <00:05:36.835>reliably <00:05:37.010>with <00:05:37.185>a <00:05:37.360>regular <00:05:37.534>expression.

118
00:05:39.415 --> 00:05:40.865
<00:05:39.415>It's <00:05:39.632>not <00:05:39.850>just <00:05:40.067>a <00:05:40.285>bunch <00:05:40.502>of <00:05:40.720>inputs.

119
00:05:40.865 --> 00:05:43.945
<00:05:40.865>You <00:05:41.020>really <00:05:41.176>have <00:05:41.331>to <00:05:41.487>do <00:05:41.642>structural <00:05:41.798>modification <00:05:41.953>to <00:05:42.109>your <00:05:42.265>code

120
00:05:46.325 --> 00:05:49.385
<00:05:46.325>In <00:05:46.465>a <00:05:46.604>way <00:05:46.745>that <00:05:46.885>we <00:05:47.025>are <00:05:47.164>able <00:05:47.305>to <00:05:47.445>achieve <00:05:47.585>these <00:05:47.724>accurate

121
00:05:49.445 --> 00:05:52.305
<00:05:49.445>and <00:05:49.620>targeted <00:05:49.795>changes <00:05:49.969>is <00:05:50.145>by <00:05:50.320>making <00:05:50.495>a <00:05:50.670>very, <00:05:50.844>uh,

122
00:05:52.305 --> 00:05:54.665
<00:05:52.305>specialized <00:05:52.655>representation <00:05:53.005>of <00:05:53.355>your <00:05:53.705>code.

123
00:05:55.565 --> 00:05:56.945
<00:05:55.565>We <00:05:55.875>turn <00:05:56.186>your <00:05:56.496>code <00:05:56.807>into

124
00:05:57.045 --> 00:05:59.365
<00:05:57.045>what <00:05:57.278>we <00:05:57.511>call <00:05:57.745>a <00:05:57.978>lossless <00:05:58.211>semantic <00:05:58.445>tree,

125
00:05:59.815 --> 00:06:03.485
<00:05:59.815>which <00:05:59.955>preserves <00:06:00.094>not <00:06:00.235>only <00:06:00.375>the <00:06:00.515>coat <00:06:00.655>itself, <00:06:00.795>but <00:06:00.935>also <00:06:01.075>the <00:06:01.215>style

126
00:06:03.585 --> 00:06:05.645
<00:06:03.585>and <00:06:03.818>any <00:06:04.051>comments <00:06:04.284>that <00:06:04.518>surround <00:06:04.751>that <00:06:04.984>coat.

127
00:06:06.905 --> 00:06:08.605
<00:06:06.905>And <00:06:07.255>we <00:06:07.604>use <00:06:07.955>this <00:06:08.304>LST

128
00:06:08.665 --> 00:06:11.005
<00:06:08.665>to <00:06:08.865>do <00:06:09.065>targeted <00:06:09.265>changes <00:06:09.465>by <00:06:09.665>running <00:06:09.865>a <00:06:10.065>recipe.

129
00:06:12.425 --> 00:06:15.005
<00:06:12.425>Uh, <00:06:12.552>the <00:06:12.679>result <00:06:12.806>will <00:06:12.934>be <00:06:13.061>a <00:06:13.188>diff <00:06:13.315>that <00:06:13.443>looks <00:06:13.570>like <00:06:13.697>it's, <00:06:13.825>uh,

130
00:06:15.185 --> 00:06:16.605
<00:06:15.185>was <00:06:15.504>created <00:06:15.824>by <00:06:16.143>a <00:06:16.463>colleague

131
00:06:16.605 --> 00:06:18.805
<00:06:16.605>because <00:06:16.885>we <00:06:17.165>adopt, <00:06:17.445>uh, <00:06:17.725>the <00:06:18.005>style

132
00:06:18.805 --> 00:06:20.645
<00:06:18.805>that <00:06:19.085>you <00:06:19.365>were <00:06:19.645>already <00:06:19.925>using <00:06:20.205>such

133
00:06:20.645 --> 00:06:23.285
<00:06:20.645>that <00:06:20.820>it's <00:06:20.995>not <00:06:21.169>gonna <00:06:21.344>suddenly <00:06:21.520>introduce <00:06:21.695>tabs <00:06:21.870>or <00:06:22.044>spaces.

134
00:06:24.865 --> 00:06:28.205
<00:06:24.865>Now, <00:06:25.020>openly <00:06:25.176>right, <00:06:25.331>can <00:06:25.487>do <00:06:25.642>much <00:06:25.798>more <00:06:25.953>than <00:06:26.109>uh, <00:06:26.265>uh,

135
00:06:28.205 --> 00:06:30.405
<00:06:28.205>conventional <00:06:28.438>fine <00:06:28.671>and <00:06:28.905>replace <00:06:29.138>type <00:06:29.371>of <00:06:29.604>solutions

136
00:06:30.795 --> 00:06:33.485
<00:06:30.795>because <00:06:31.028>we <00:06:31.261>not <00:06:31.495>only <00:06:31.728>understand <00:06:31.961>your <00:06:32.195>code,

137
00:06:33.905 --> 00:06:35.245
<00:06:33.905>but <00:06:34.306>also <00:06:34.709>any, <00:06:35.111>um,

138
00:06:35.875 --> 00:06:38.165
<00:06:35.875>type <00:06:36.155>add <00:06:36.435>any <00:06:36.715>type <00:06:36.995>attribution <00:06:37.275>from

139
00:06:38.165 --> 00:06:39.725
<00:06:38.165>dependencies <00:06:38.445>that <00:06:38.725>you <00:06:39.005>might <00:06:39.285>be <00:06:39.565>using.

140
00:06:39.865 --> 00:06:44.045
<00:06:39.865>So <00:06:40.020>if <00:06:40.176>we <00:06:40.331>wanna <00:06:40.487>very <00:06:40.642>reliably <00:06:40.798>match <00:06:40.953>these <00:06:41.109>spring <00:06:41.265>constructs

141
00:06:44.045 --> 00:06:46.725
<00:06:44.045>that <00:06:44.200>you're <00:06:44.356>using, <00:06:44.511>we <00:06:44.667>can <00:06:44.822>do <00:06:44.978>do <00:06:45.133>so <00:06:45.289>by <00:06:45.445>adding

142
00:06:46.725 --> 00:06:47.805
<00:06:46.725>that <00:06:47.049>to <00:06:47.373>our <00:06:47.697>model.

143
00:06:50.225 --> 00:06:54.245
<00:06:50.225>Now <00:06:50.352>on <00:06:50.479>top <00:06:50.606>of <00:06:50.734>this <00:06:50.861>LSD, <00:06:50.988>we <00:06:51.115>write <00:06:51.243>recipes <00:06:51.370>that <00:06:51.497>help <00:06:51.625>transform

144
00:06:54.245 --> 00:06:57.085
<00:06:54.245>that, <00:06:54.420>transform <00:06:54.595>that <00:06:54.770>model <00:06:54.945>from <00:06:55.120>one <00:06:55.295>state <00:06:55.470>to <00:06:55.645>another.

145
00:06:57.745 --> 00:07:02.165
<00:06:57.745>Um, <00:06:57.978>our <00:06:58.211>recipes <00:06:58.445>are <00:06:58.678>rule-based <00:06:58.911>transformations, <00:06:59.145>uh,

146
00:07:02.165 --> 00:07:05.645
<00:07:02.165>because <00:07:02.320>we <00:07:02.476>think <00:07:02.631>if <00:07:02.787>you, <00:07:02.942>uh, <00:07:03.098>want <00:07:03.253>to <00:07:03.409>use <00:07:03.565>AI

147
00:07:05.665 --> 00:07:08.405
<00:07:05.665>to <00:07:05.840>help <00:07:06.015>rewrite <00:07:06.190>your <00:07:06.365>code, <00:07:06.540>then <00:07:06.715>uh, <00:07:06.890>just <00:07:07.065>wait

148
00:07:08.405 --> 00:07:11.205
<00:07:08.405>until <00:07:08.544>you <00:07:08.684>have <00:07:08.825>a <00:07:08.965>couple <00:07:09.104>million <00:07:09.244>lines <00:07:09.385>of <00:07:09.525>code <00:07:09.664>to <00:07:09.804>maintain

149
00:07:11.545 --> 00:07:13.005
<00:07:11.545>and <00:07:11.807>very <00:07:12.070>quickly <00:07:12.333>you <00:07:12.596>will <00:07:12.859>learn

150
00:07:13.005 --> 00:07:16.845
<00:07:13.005>to <00:07:13.205>appreciate <00:07:13.405>predictable <00:07:13.605>changes <00:07:13.805>rather <00:07:14.005>than <00:07:14.205>the, <00:07:14.405>um,

151
00:07:16.985 --> 00:07:19.405
<00:07:16.985>hallucinations <00:07:17.218>that <00:07:17.451>might <00:07:17.685>come <00:07:17.918>with <00:07:18.151>running <00:07:18.385>ai.

152
00:07:20.785 --> 00:07:23.605
<00:07:20.785>Now, <00:07:20.940>there's <00:07:21.096>three <00:07:21.251>ways <00:07:21.407>that <00:07:21.562>we <00:07:21.718>can <00:07:21.873>write <00:07:22.029>these, <00:07:22.185>um,

153
00:07:23.635 --> 00:07:24.925
<00:07:23.635>migration <00:07:24.796>recipes.

154
00:07:25.025 --> 00:07:27.845
<00:07:25.025>Um, <00:07:25.200>the <00:07:25.375>very <00:07:25.549>simplest <00:07:25.724>one <00:07:25.900>being <00:07:26.075>on <00:07:26.250>the <00:07:26.424>left

155
00:07:27.935 --> 00:07:31.845
<00:07:27.935>where <00:07:28.062>we <00:07:28.189>just <00:07:28.316>write <00:07:28.444>a <00:07:28.571>yamo <00:07:28.698>file <00:07:28.825>where <00:07:28.953>you <00:07:29.080>define <00:07:29.207>these <00:07:29.335>types

156
00:07:31.865 --> 00:07:33.205
<00:07:31.865>of <00:07:32.166>transformation <00:07:32.468>that <00:07:32.769>you <00:07:33.070>want

157
00:07:33.205 --> 00:07:36.885
<00:07:33.205>to <00:07:33.380>happen <00:07:33.555>using <00:07:33.729>building <00:07:33.905>blocks <00:07:34.080>that <00:07:34.255>we've <00:07:34.430>already <00:07:34.604>defined.

158
00:07:37.835 --> 00:07:40.925
<00:07:37.835>This <00:07:37.974>is <00:07:38.114>perfect <00:07:38.255>for <00:07:38.395>the <00:07:38.534>silly <00:07:38.674>migration <00:07:38.815>steps <00:07:38.955>where <00:07:39.094>you <00:07:39.234>need

159
00:07:40.925 --> 00:07:43.605
<00:07:40.925>to <00:07:41.100>change <00:07:41.275>a <00:07:41.450>package, <00:07:41.625>a <00:07:41.800>dependency, <00:07:41.975>a <00:07:42.150>class <00:07:42.325>name

160
00:07:43.705 --> 00:07:46.685
<00:07:43.705>or <00:07:43.844>a <00:07:43.984>method <00:07:44.125>name, <00:07:44.265>or <00:07:44.405>you <00:07:44.544>need <00:07:44.685>to <00:07:44.825>add <00:07:44.965>an <00:07:45.104>the,

161
00:07:46.745 --> 00:07:47.805
<00:07:46.745>uh, <00:07:47.222>nullable <00:07:47.699>argument.

162
00:07:48.185 --> 00:07:49.805
<00:07:48.185>All <00:07:48.418>of <00:07:48.651>those <00:07:48.885>you <00:07:49.118>can <00:07:49.351>achieve <00:07:49.585>just

163
00:07:49.805 --> 00:07:52.805
<00:07:49.805>by <00:07:49.932>writing <00:07:50.059>a <00:07:50.186>quick <00:07:50.314>yamo <00:07:50.441>file <00:07:50.568>and <00:07:50.695>running <00:07:50.823>that <00:07:50.950>on <00:07:51.077>your <00:07:51.205>code.

164
00:07:54.145 --> 00:07:55.645
<00:07:54.145>Now <00:07:54.414>if <00:07:54.685>you <00:07:54.955>need <00:07:55.224>slightly <00:07:55.495>more,

165
00:07:55.675 --> 00:07:58.005
<00:07:55.675>then <00:07:55.830>we <00:07:55.986>have <00:07:56.141>a <00:07:56.297>very <00:07:56.452>convenient <00:07:56.608>way <00:07:56.763>in <00:07:56.919>the <00:07:57.075>middle

166
00:07:58.335 --> 00:08:00.885
<00:07:58.335>where <00:07:58.534>you <00:07:58.734>just <00:07:58.935>definer <00:07:59.135>class <00:07:59.335>with <00:07:59.534>two <00:07:59.734>methods

167
00:08:01.415 --> 00:08:04.045
<00:08:01.415>where <00:08:01.590>you <00:08:01.765>annotate <00:08:01.940>the <00:08:02.115>first <00:08:02.290>one <00:08:02.465>as <00:08:02.640>the <00:08:02.815>go,

168
00:08:04.045 --> 00:08:07.245
<00:08:04.045>find <00:08:04.200>me <00:08:04.356>this <00:08:04.511>pattern <00:08:04.667>in <00:08:04.822>my <00:08:04.978>code <00:08:05.133>and <00:08:05.289>you <00:08:05.445>annotate.

169
00:08:07.245 --> 00:08:10.845
<00:08:07.245>The <00:08:07.400>second <00:08:07.556>one <00:08:07.711>is <00:08:07.867>saying, <00:08:08.022>replace <00:08:08.178>whatever <00:08:08.333>you <00:08:08.489>found <00:08:08.645>with

170
00:08:10.845 --> 00:08:12.365
<00:08:10.845>what <00:08:11.073>you <00:08:11.301>see <00:08:11.529>in <00:08:11.757>this <00:08:11.985>second <00:08:12.213>method.

171
00:08:12.995 --> 00:08:15.565
<00:08:12.995>This <00:08:13.195>is <00:08:13.395>a <00:08:13.595>very <00:08:13.795>powerful <00:08:13.995>compiled <00:08:14.195>safe <00:08:14.395>way

172
00:08:15.825 --> 00:08:17.645
<00:08:15.825>and <00:08:16.025>we <00:08:16.224>will <00:08:16.425>figure <00:08:16.625>out <00:08:16.825>the <00:08:17.025>details <00:08:17.224>needed

173
00:08:17.705 --> 00:08:19.285
<00:08:17.705>to <00:08:17.938>get <00:08:18.171>you <00:08:18.405>from <00:08:18.638>A <00:08:18.871>to <00:08:19.104>B.

174
00:08:20.665 --> 00:08:22.365
<00:08:20.665>If <00:08:20.898>you <00:08:21.131>need <00:08:21.365>more <00:08:21.598>than <00:08:21.831>the <00:08:22.065>that,

175
00:08:22.475 --> 00:08:24.645
<00:08:22.475>then <00:08:22.650>we <00:08:22.825>have <00:08:23.000>a <00:08:23.175>third <00:08:23.350>option <00:08:23.525>on <00:08:23.700>the <00:08:23.875>right

176
00:08:24.775 --> 00:08:28.205
<00:08:24.775>where <00:08:24.930>you <00:08:25.086>get <00:08:25.241>full <00:08:25.397>access <00:08:25.552>to <00:08:25.708>that <00:08:25.863>lossless <00:08:26.019>semantic <00:08:26.174>tree

177
00:08:28.225 --> 00:08:29.565
<00:08:28.225>and <00:08:28.466>all <00:08:28.707>the <00:08:28.948>elements <00:08:29.189>within <00:08:29.431>it.

178
00:08:29.985 --> 00:08:33.045
<00:08:29.985>And <00:08:30.140>you <00:08:30.296>can <00:08:30.451>prefer <00:08:30.607>that <00:08:30.762>model <00:08:30.918>using <00:08:31.073>the <00:08:31.229>visitor <00:08:31.385>pattern

179
00:08:33.415 --> 00:08:37.345
<00:08:33.414>where <00:08:33.615>you <00:08:33.814>get, <00:08:34.015>um, <00:08:34.214>you <00:08:34.414>can <00:08:34.615>just, <00:08:34.814>uh,

180
00:08:37.805 --> 00:08:40.585
<00:08:37.804>add <00:08:38.038>new <00:08:38.271>elements, <00:08:38.505>you <00:08:38.738>can <00:08:38.971>modify <00:08:39.204>elements

181
00:08:40.805 --> 00:08:44.065
<00:08:40.804>or <00:08:40.960>completely <00:08:41.116>remove <00:08:41.271>elements <00:08:41.427>as <00:08:41.582>you <00:08:41.738>make <00:08:41.893>your <00:08:42.049>way <00:08:42.204>through.

182
00:08:45.715 --> 00:08:47.895
<00:08:45.715>Now <00:08:45.915>this <00:08:46.115>last <00:08:46.315>one <00:08:46.515>is <00:08:46.715>slightly <00:08:46.915>more <00:08:47.115>complex,

183
00:08:47.955 --> 00:08:50.455
<00:08:47.955>but <00:08:48.110>we've <00:08:48.266>added <00:08:48.421>some <00:08:48.577>utilities <00:08:48.732>to <00:08:48.888>really <00:08:49.043>help <00:08:49.199>you <00:08:49.355>there

184
00:08:50.515 --> 00:08:53.015
<00:08:50.515>to <00:08:50.748>make <00:08:50.981>development <00:08:51.215>of <00:08:51.448>these <00:08:51.681>recipes <00:08:51.915>easier.

185
00:08:55.825 --> 00:08:59.205
<00:08:55.825>Now <00:08:56.000>these <00:08:56.175>individual <00:08:56.350>recipes <00:08:56.525>can <00:08:56.700>then <00:08:56.875>be <00:08:57.050>composed <00:08:57.225>together

186
00:08:59.345 --> 00:09:01.445
<00:08:59.345>to <00:08:59.625>get <00:08:59.905>a <00:09:00.185>higher <00:09:00.465>level <00:09:00.745>migration.

187
00:09:01.825 --> 00:09:04.485
<00:09:01.825>So <00:09:01.980>if <00:09:02.136>you <00:09:02.291>want <00:09:02.447>to <00:09:02.602>do <00:09:02.758>a <00:09:02.913>spring <00:09:03.069>boot <00:09:03.225>upgrade,

188
00:09:04.815 --> 00:09:07.405
<00:09:04.815>we're <00:09:05.015>actually <00:09:05.215>going <00:09:05.415>to <00:09:05.615>run <00:09:05.815>some <00:09:06.015>2000, <00:09:06.215>uh,

189
00:09:07.405 --> 00:09:08.925
<00:09:07.405>individual <00:09:07.861>recipes <00:09:08.317>for <00:09:08.772>you

190
00:09:09.195 --> 00:09:11.645
<00:09:09.195>that <00:09:09.475>together <00:09:09.755>will <00:09:10.035>match <00:09:10.315>the <00:09:10.595>elements

191
00:09:11.645 --> 00:09:13.325
<00:09:11.645>that <00:09:11.845>you <00:09:12.045>are <00:09:12.245>actually <00:09:12.444>using <00:09:12.645>in <00:09:12.845>your <00:09:13.045>code

192
00:09:13.545 --> 00:09:15.325
<00:09:13.545>and <00:09:13.824>transform <00:09:14.104>them <00:09:14.385>into <00:09:14.665>you, <00:09:14.944>uh,

193
00:09:15.355 --> 00:09:17.005
<00:09:15.355>what <00:09:15.635>you <00:09:15.915>should <00:09:16.195>be <00:09:16.475>using <00:09:16.755>instead.

194
00:09:18.305 --> 00:09:20.765
<00:09:18.305>And <00:09:18.460>that <00:09:18.616>will <00:09:18.771>then <00:09:18.927>take <00:09:19.082>you <00:09:19.238>from <00:09:19.393>J <00:09:19.549>unit <00:09:19.704>four

195
00:09:20.765 --> 00:09:23.965
<00:09:20.765>to <00:09:20.920>five <00:09:21.076>from <00:09:21.231>Java <00:09:21.387>X <00:09:21.542>to <00:09:21.698>Jakarta, <00:09:21.853>from <00:09:22.009>Java <00:09:22.165>eight

196
00:09:23.985 --> 00:09:25.645
<00:09:23.985>to <00:09:24.335>17 <00:09:24.685>or <00:09:25.035>even <00:09:25.385>21.

197
00:09:27.305 --> 00:09:29.725
<00:09:27.305>But <00:09:27.479>it's <00:09:27.655>not <00:09:27.829>the <00:09:28.005>only <00:09:28.180>technology <00:09:28.354>that <00:09:28.530>we <00:09:28.704>support.

198
00:09:30.105 --> 00:09:31.725
<00:09:30.105>We, <00:09:30.338>uh, <00:09:30.571>as <00:09:30.805>you <00:09:31.038>can <00:09:31.271>see <00:09:31.505>here,

199
00:09:31.865 --> 00:09:33.925
<00:09:31.865>we <00:09:32.098>support <00:09:32.331>a <00:09:32.565>wide <00:09:32.798>range <00:09:33.031>of <00:09:33.265>languages.

200
00:09:34.065 --> 00:09:35.645
<00:09:34.065>We <00:09:34.415>very <00:09:34.765>recently <00:09:35.115>added <00:09:35.465>C

201
00:09:36.945 --> 00:09:39.725
<00:09:36.945>and <00:09:37.100>uh, <00:09:37.256>we <00:09:37.411>also <00:09:37.567>support <00:09:37.722>a <00:09:37.878>lot <00:09:38.033>of <00:09:38.189>frameworks, <00:09:38.345>uh,

202
00:09:39.745 --> 00:09:40.805
<00:09:39.745>as <00:09:39.904>you <00:09:40.063>can <00:09:40.222>see <00:09:40.381>in <00:09:40.540>the <00:09:40.699>middle.

203
00:09:41.505 --> 00:09:45.165
<00:09:41.505>And <00:09:41.680>the <00:09:41.855>neat <00:09:42.030>thing <00:09:42.205>here <00:09:42.380>is <00:09:42.555>that <00:09:42.730>we <00:09:42.905>collaborate

204
00:09:45.165 --> 00:09:48.045
<00:09:45.165>with <00:09:45.398>the <00:09:45.631>folks <00:09:45.865>behind <00:09:46.098>these, <00:09:46.331>uh, <00:09:46.564>frameworks

205
00:09:48.045 --> 00:09:52.005
<00:09:48.045>and <00:09:48.200>libraries <00:09:48.356>such <00:09:48.511>that <00:09:48.667>ideally <00:09:48.822>the <00:09:48.978>moment <00:09:49.133>they <00:09:49.289>come <00:09:49.444>out

206
00:09:52.005 --> 00:09:55.005
<00:09:52.005>with <00:09:52.180>a <00:09:52.355>breaking <00:09:52.530>change, <00:09:52.705>there's <00:09:52.880>already <00:09:53.055>a <00:09:53.230>recipe <00:09:53.405>there

207
00:09:55.025 --> 00:09:56.885
<00:09:55.025>to <00:09:55.225>help <00:09:55.425>you <00:09:55.625>migrate <00:09:55.824>to <00:09:56.025>the <00:09:56.225>new <00:09:56.425>version.

208
00:09:57.505 --> 00:10:01.885
<00:09:57.505>And <00:09:57.621>we <00:09:57.738>saw <00:09:57.855>that <00:09:57.971>with <00:09:58.088>the <00:09:58.205>folks <00:09:58.321>from <00:09:58.438>Spring <00:09:58.555>from <00:09:58.671>ox, <00:09:58.788>and <00:09:58.905>that

209
00:10:02.285 --> 00:10:03.485
<00:10:02.285>whenever <00:10:02.501>a <00:10:02.717>new <00:10:02.933>version <00:10:03.149>comes <00:10:03.365>out,

210
00:10:03.745 --> 00:10:04.925
<00:10:03.745>we <00:10:03.957>are <00:10:04.169>in <00:10:04.382>the <00:10:04.594>release <00:10:04.807>notes.

211
00:10:04.945 --> 00:10:07.765
<00:10:04.945>You <00:10:05.061>don't <00:10:05.178>have <00:10:05.295>to <00:10:05.411>do <00:10:05.528>it <00:10:05.645>by <00:10:05.761>hand, <00:10:05.878>you <00:10:05.995>just <00:10:06.111>run <00:10:06.228>a <00:10:06.345>command

212
00:10:08.225 --> 00:10:12.685
<00:10:08.225>and <00:10:08.352>we <00:10:08.479>will <00:10:08.606>get <00:10:08.734>you <00:10:08.861>to <00:10:08.988>the <00:10:09.115>latest <00:10:09.243>version, <00:10:09.370>But <00:10:09.497>it's <00:10:09.625>not,

213
00:10:12.695 --> 00:10:15.405
<00:10:12.695>migrations <00:10:12.850>are <00:10:13.006>not <00:10:13.161>the <00:10:13.317>only <00:10:13.472>use <00:10:13.628>case <00:10:13.783>that <00:10:13.939>we <00:10:14.095>have

214
00:10:15.425 --> 00:10:16.565
<00:10:15.425>for <00:10:15.681>this <00:10:15.938>type <00:10:16.194>of <00:10:16.451>technology.

215
00:10:16.675 --> 00:10:18.605
<00:10:16.675>It's <00:10:16.908>really <00:10:17.141>anything <00:10:17.375>that <00:10:17.608>you <00:10:17.841>might <00:10:18.074>want

216
00:10:18.605 --> 00:10:21.645
<00:10:18.605>to <00:10:18.885>automatically <00:10:19.165>change <00:10:19.445>across <00:10:19.725>your <00:10:20.005>organization.

217
00:10:22.345 --> 00:10:24.565
<00:10:22.345>So <00:10:22.500>we <00:10:22.656>have <00:10:22.811>a <00:10:22.967>lot <00:10:23.122>of <00:10:23.278>recipes <00:10:23.433>to <00:10:23.589>maybe, <00:10:23.745>uh,

218
00:10:24.615 --> 00:10:27.605
<00:10:24.615>fixed <00:10:24.790>security <00:10:24.965>issues <00:10:25.140>that, <00:10:25.315>uh, <00:10:25.490>are <00:10:25.665>in <00:10:25.840>your <00:10:26.015>code,

219
00:10:27.895 --> 00:10:30.485
<00:10:27.895>which <00:10:28.175>could <00:10:28.454>be <00:10:28.735>either <00:10:29.015>outdated <00:10:29.295>dependencies

220
00:10:30.485 --> 00:10:31.885
<00:10:30.485>that <00:10:30.737>you <00:10:30.989>merely <00:10:31.241>have <00:10:31.493>to <00:10:31.745>upgrade,

221
00:10:32.265 --> 00:10:35.565
<00:10:32.265>but <00:10:32.381>it <00:10:32.498>could <00:10:32.615>also <00:10:32.731>be <00:10:32.848>unsafe <00:10:32.965>ways <00:10:33.081>in <00:10:33.198>which <00:10:33.314>you <00:10:33.431>are <00:10:33.548>using <00:10:33.665>a

222
00:10:35.565 --> 00:10:38.565
<00:10:35.565>particular <00:10:35.798>API <00:10:36.031>If <00:10:36.265>you <00:10:36.498>are <00:10:36.731>using, <00:10:36.965>uh,

223
00:10:38.625 --> 00:10:40.485
<00:10:38.625>if <00:10:38.905>you're <00:10:39.185>creating <00:10:39.465>a <00:10:39.745>temporary <00:10:40.025>file

224
00:10:40.505 --> 00:10:42.845
<00:10:40.505>and <00:10:40.632>you <00:10:40.759>do <00:10:40.886>it <00:10:41.014>in <00:10:41.141>a <00:10:41.268>particular <00:10:41.395>way, <00:10:41.523>you <00:10:41.650>might <00:10:41.777>be <00:10:41.905>vulnerable,

225
00:10:43.305 --> 00:10:46.965
<00:10:43.305>uh, <00:10:43.460>uh, <00:10:43.616>whereas <00:10:43.771>if <00:10:43.927>you <00:10:44.082>use <00:10:44.238>a <00:10:44.393>slightly <00:10:44.549>different <00:10:44.704>variant,

226
00:10:47.465 --> 00:10:49.885
<00:10:47.465>we <00:10:47.665>were <00:10:47.865>able <00:10:48.065>to <00:10:48.265>detect <00:10:48.465>that, <00:10:48.665>correct <00:10:48.865>that

227
00:10:49.945 --> 00:10:51.725
<00:10:49.945>and <00:10:50.145>push <00:10:50.345>those <00:10:50.545>changes <00:10:50.745>out <00:10:50.945>to <00:10:51.145>your <00:10:51.345>software.

228
00:10:52.625 --> 00:10:56.005
<00:10:52.625>And <00:10:52.765>we <00:10:52.905>see <00:10:53.045>our <00:10:53.185>customers <00:10:53.325>use <00:10:53.465>this <00:10:53.605>in <00:10:53.745>very, <00:10:53.885>um, <00:10:54.025>yeah,

229
00:10:56.005 --> 00:10:58.645
<00:10:56.005>surprising <00:10:56.238>ways <00:10:56.471>from <00:10:56.705>time <00:10:56.938>to <00:10:57.171>time <00:10:57.405>switching

230
00:10:58.645 --> 00:11:02.685
<00:10:58.645>between <00:10:58.785>vendors <00:10:58.925>going <00:10:59.064>from <00:10:59.204>one <00:10:59.345>SDK <00:10:59.485>to <00:10:59.625>a <00:10:59.765>different <00:10:59.905>one <00:11:00.045>just

231
00:11:02.705 --> 00:11:05.245
<00:11:02.705>by <00:11:02.985>using <00:11:03.265>these <00:11:03.545>automated <00:11:03.825>migration <00:11:04.105>recipes.

232
00:11:06.745 --> 00:11:09.725
<00:11:06.745>So <00:11:06.885>for <00:11:07.025>the <00:11:07.165>remainder <00:11:07.305>of <00:11:07.445>this <00:11:07.585>presentation, <00:11:07.725>I'll <00:11:07.865>do <00:11:08.005>a <00:11:08.145>number

233
00:11:09.725 --> 00:11:13.005
<00:11:09.725>of <00:11:09.852>quick <00:11:09.979>demos <00:11:10.106>to <00:11:10.234>really <00:11:10.361>show <00:11:10.488>how <00:11:10.615>you <00:11:10.743>can <00:11:10.870>leverage <00:11:10.997>this <00:11:11.125>type

234
00:11:13.005 --> 00:11:14.925
<00:11:13.005>of <00:11:13.205>technology, <00:11:13.405>uh, <00:11:13.605>for <00:11:13.805>your <00:11:14.005>own <00:11:14.205>use <00:11:14.405>cases.

235
00:11:16.065 --> 00:11:18.565
<00:11:16.065>And <00:11:16.220>for <00:11:16.376>that <00:11:16.531>I'm <00:11:16.687>going <00:11:16.842>to, <00:11:16.998>uh, <00:11:17.153>switch <00:11:17.309>my <00:11:17.465>displays

236
00:11:19.545 --> 00:11:22.805
<00:11:19.545>and <00:11:19.745>then, <00:11:19.944>um, <00:11:20.145>show <00:11:20.344>you <00:11:20.545>first <00:11:20.745>my <00:11:20.944>IDE.

237
00:11:24.305 --> 00:11:28.615
<00:11:24.305>No, <00:11:24.771>this <00:11:25.238>place. <00:11:25.704>Yep.

238
00:11:32.645 --> 00:11:32.935
Here.

239
00:11:38.455 --> 00:11:39.075
<00:11:38.455>See <00:11:38.641>if <00:11:38.827>this <00:11:39.013>works.

240
00:11:46.445 --> 00:11:48.425
<00:11:46.445>No, <00:11:47.145>Not <00:11:47.845>yet.

241
00:11:49.635 --> 00:11:51.945
<00:11:49.635>There <00:11:49.790>was <00:11:49.946>a <00:11:50.101>fun <00:11:50.257>bit <00:11:50.412>leading <00:11:50.568>up <00:11:50.723>to <00:11:50.879>this <00:11:51.035>presentation

242
00:11:51.945 --> 00:11:53.485
<00:11:51.945>where <00:11:52.222>the <00:11:52.499>cable <00:11:52.776>was <00:11:53.053>actually <00:11:53.331>broken,

243
00:11:53.575 --> 00:11:56.845
<00:11:53.575>which <00:11:53.730>is <00:11:53.886>why <00:11:54.041>you <00:11:54.197>see <00:11:54.352>some, <00:11:54.508>uh, <00:11:54.663>interesting <00:11:54.819>setups <00:11:54.975>here.

244
00:11:57.985 --> 00:12:01.205
<00:11:57.985>So <00:11:58.185>we're <00:11:58.385>gonna <00:11:58.585>try <00:11:58.785>again <00:11:58.985>and <00:11:59.185>different <00:11:59.385>resolution

245
00:12:03.545 --> 00:12:04.765
<00:12:03.545>and <00:12:03.764>hope <00:12:03.984>that <00:12:04.203>this <00:12:04.423>actually <00:12:04.643>works.

246
00:12:06.615 --> 00:12:08.745
<00:12:06.615>This <00:12:06.790>is <00:12:06.965>always <00:12:07.140>the <00:12:07.315>fun <00:12:07.490>part <00:12:07.665>of <00:12:07.840>the <00:12:08.015>presentation.

247
00:12:08.975 --> 00:12:10.105
<00:12:08.975>Yeah, <00:12:09.992>cheers.

248
00:12:11.925 --> 00:12:15.545
<00:12:11.925>So <00:12:12.064>what <00:12:12.204>we're <00:12:12.344>gonna <00:12:12.484>do <00:12:12.625>is <00:12:12.765>we're <00:12:12.905>gonna <00:12:13.045>look <00:12:13.185>at <00:12:13.324>Intelli.

249
00:12:16.245 --> 00:12:19.585
<00:12:16.245>Now, <00:12:16.420>IntelliJ, <00:12:16.595>um, <00:12:16.770>didn't <00:12:16.945>use <00:12:17.120>to <00:12:17.295>be <00:12:17.470>my <00:12:17.645>favorite.

250
00:12:19.825 --> 00:12:21.505
<00:12:19.825>IDE, <00:12:20.105>you <00:12:20.385>can <00:12:20.665>see <00:12:20.945>that <00:12:21.225>sort

251
00:12:21.505 --> 00:12:23.585
<00:12:21.505>of <00:12:21.705>from <00:12:21.905>the <00:12:22.105>color <00:12:22.305>scheme <00:12:22.505>that <00:12:22.705>I'm <00:12:22.905>using.

252
00:12:24.485 --> 00:12:25.945
<00:12:24.485>But <00:12:24.747>recently <00:12:25.010>they <00:12:25.273>added <00:12:25.536>a <00:12:25.799>feature

253
00:12:26.015 --> 00:12:28.865
<00:12:26.015>that <00:12:26.189>is <00:12:26.365>now <00:12:26.540>making <00:12:26.715>it <00:12:26.890>my <00:12:27.064>very <00:12:27.240>favorite <00:12:27.415>IDE

254
00:12:28.925 --> 00:12:32.825
<00:12:28.925>and <00:12:29.125>that <00:12:29.324>is, <00:12:29.525>um, <00:12:29.724>integration <00:12:29.925>with <00:12:30.125>open <00:12:30.324>rewrite,

255
00:12:33.115 --> 00:12:35.945
<00:12:33.115>which <00:12:33.242>is <00:12:33.369>great <00:12:33.496>for <00:12:33.624>me <00:12:33.751>because <00:12:33.878>now <00:12:34.005>whenever <00:12:34.133>I <00:12:34.260>give <00:12:34.387>a <00:12:34.515>demo

256
00:12:36.045 --> 00:12:37.985
<00:12:36.045>and <00:12:36.172>I, <00:12:36.299>and <00:12:36.426>you <00:12:36.554>want <00:12:36.681>to <00:12:36.808>try <00:12:36.935>this <00:12:37.063>out <00:12:37.190>on <00:12:37.317>your <00:12:37.444>own,

257
00:12:38.505 --> 00:12:41.465
<00:12:38.505>I <00:12:38.645>can <00:12:38.785>just <00:12:38.925>say <00:12:39.064>step <00:12:39.205>one, <00:12:39.345>install <00:12:39.485>IntelliJ <00:12:39.625>and <00:12:39.765>you're <00:12:39.905>done.

258
00:12:42.165 --> 00:12:45.625
<00:12:42.165>Um, <00:12:42.320>and <00:12:42.476>you <00:12:42.631>can <00:12:42.787>see <00:12:42.942>that <00:12:43.098>very <00:12:43.253>subtly <00:12:43.409>by, <00:12:43.564>um,

259
00:12:46.005 --> 00:12:48.585
<00:12:46.005>on <00:12:46.145>the <00:12:46.285>left <00:12:46.425>you <00:12:46.564>can <00:12:46.705>see <00:12:46.845>the <00:12:46.985>rewrite <00:12:47.125>Dodge <00:12:47.265>Yamo <00:12:47.405>file.

260
00:12:49.055 --> 00:12:50.505
<00:12:49.055>That <00:12:49.241>is <00:12:49.427>all <00:12:49.614>you <00:12:49.800>need <00:12:49.987>to <00:12:50.173>get <00:12:50.360>started.

261
00:12:50.605 --> 00:12:53.465
<00:12:50.605>You <00:12:50.780>create <00:12:50.955>a <00:12:51.130>YAMA <00:12:51.305>file <00:12:51.480>in <00:12:51.655>your, <00:12:51.830>uh, <00:12:52.005>IDE.

262
00:12:53.925 --> 00:12:56.785
<00:12:53.925>And <00:12:54.052>the <00:12:54.179>neat <00:12:54.306>thing <00:12:54.434>here <00:12:54.561>is <00:12:54.688>if <00:12:54.815>I <00:12:54.943>uncommon <00:12:55.070>this <00:12:55.197>first <00:12:55.324>line,

263
00:12:56.965 --> 00:12:59.305
<00:12:56.965>you <00:12:57.198>see <00:12:57.431>the <00:12:57.665>logo <00:12:57.898>change, <00:12:58.131>that <00:12:58.365>means

264
00:12:59.305 --> 00:13:00.665
<00:12:59.305>that <00:12:59.549>you <00:12:59.794>actually <00:13:00.039>have <00:13:00.284>it <00:13:00.529>working.

265
00:13:01.085 --> 00:13:03.425
<00:13:01.085>If <00:13:01.212>you <00:13:01.339>don't <00:13:01.466>have <00:13:01.594>it <00:13:01.721>working, <00:13:01.848>get <00:13:01.975>on <00:13:02.103>the <00:13:02.230>latest <00:13:02.357>uh, <00:13:02.485>version.

266
00:13:03.965 --> 00:13:06.585
<00:13:03.965>And <00:13:04.105>then <00:13:04.245>from <00:13:04.385>there <00:13:04.525>you're <00:13:04.665>able <00:13:04.805>to <00:13:04.945>do <00:13:05.085>things <00:13:05.225>like <00:13:05.365>this

267
00:13:07.535 --> 00:13:09.145
<00:13:07.535>when <00:13:07.814>you <00:13:08.094>define <00:13:08.375>your <00:13:08.655>own <00:13:08.935>recipe.

268
00:13:09.485 --> 00:13:12.385
<00:13:09.485>And <00:13:09.640>we're <00:13:09.796>going <00:13:09.951>to <00:13:10.107>run <00:13:10.262>a <00:13:10.418>couple <00:13:10.573>of <00:13:10.729>existing <00:13:10.885>recipes

269
00:13:12.385 --> 00:13:15.625
<00:13:12.385>that <00:13:12.540>we <00:13:12.696>have <00:13:12.851>to <00:13:13.007>help <00:13:13.162>you, <00:13:13.318>um, <00:13:13.473>modernize <00:13:13.629>your <00:13:13.785>code.

270
00:13:16.285 --> 00:13:18.545
<00:13:16.285>And <00:13:16.440>the <00:13:16.596>very <00:13:16.751>neat <00:13:16.907>thing <00:13:17.062>here <00:13:17.218>is <00:13:17.373>this <00:13:17.529>play <00:13:17.685>button

271
00:13:19.285 --> 00:13:23.545
<00:13:19.285>and <00:13:19.425>we're <00:13:19.564>just <00:13:19.704>gonna <00:13:19.844>run <00:13:19.985>these <00:13:20.125>quick <00:13:20.265>things <00:13:20.405>on <00:13:20.545>a <00:13:20.685>demo

272
00:13:23.545 --> 00:13:24.705
<00:13:23.545>application <00:13:23.893>that <00:13:24.241>I've <00:13:24.589>built.

273
00:13:25.385 --> 00:13:29.765
<00:13:25.385>Now <00:13:25.540>this <00:13:25.696>is <00:13:25.851>a <00:13:26.007>sample <00:13:26.162>of <00:13:26.318>a <00:13:26.473>very <00:13:26.629>old <00:13:26.785>application

274
00:13:29.765 --> 00:13:31.205
<00:13:29.765>that <00:13:30.024>we <00:13:30.283>want <00:13:30.542>to <00:13:30.801>be <00:13:31.061>modernizing.

275
00:13:31.945 --> 00:13:35.805
<00:13:31.945>Um, <00:13:32.120>you <00:13:32.295>could <00:13:32.470>say <00:13:32.645>this <00:13:32.820>is, <00:13:32.995>um, <00:13:33.170>representative <00:13:33.345>of

276
00:13:36.035 --> 00:13:38.885
<00:13:36.035>what <00:13:36.268>would <00:13:36.501>be <00:13:36.735>a, <00:13:36.968>a <00:13:37.201>legacy <00:13:37.435>application,

277
00:13:39.255 --> 00:13:41.965
<00:13:39.255>maybe <00:13:39.430>something <00:13:39.605>you <00:13:39.780>would <00:13:39.955>describe <00:13:40.130>as <00:13:40.305>a <00:13:40.480>DHY <00:13:40.655>monolith,

278
00:13:42.345 --> 00:13:45.405
<00:13:42.345>but <00:13:42.500>we're <00:13:42.656>gonna <00:13:42.811>do <00:13:42.967>some <00:13:43.122>automated <00:13:43.278>changes <00:13:43.433>here <00:13:43.589>to <00:13:43.745>actually,

279
00:13:45.545 --> 00:13:48.205
<00:13:45.545>um, <00:13:45.700>make <00:13:45.856>it <00:13:46.011>into <00:13:46.167>something <00:13:46.322>you <00:13:46.478>would <00:13:46.633>rather <00:13:46.789>work <00:13:46.944>with.

280
00:13:49.545 --> 00:13:50.645
<00:13:49.545>Let <00:13:49.792>me <00:13:50.040>close <00:13:50.287>this <00:13:50.535>one.

281
00:13:51.585 --> 00:13:53.765
<00:13:51.585>So <00:13:51.865>as <00:13:52.145>this <00:13:52.425>execute, <00:13:52.705>it's <00:13:52.985>going

282
00:13:53.765 --> 00:13:55.565
<00:13:53.765>to <00:13:53.965>build <00:13:54.165>up <00:13:54.365>a <00:13:54.564>model <00:13:54.765>of <00:13:54.965>your <00:13:55.165>codes.

283
00:13:55.755 --> 00:13:59.285
<00:13:55.755>It's <00:13:55.930>going <00:13:56.105>to <00:13:56.280>run <00:13:56.455>all <00:13:56.630>these <00:13:56.805>2000 <00:13:56.980>plus <00:13:57.155>recipes

284
00:13:59.285 --> 00:14:01.645
<00:13:59.285>that <00:13:59.518>we <00:13:59.751>have <00:13:59.985>against <00:14:00.218>it, <00:14:00.451>transform <00:14:00.685>it

285
00:14:01.665 --> 00:14:04.085
<00:14:01.665>and <00:14:01.820>write <00:14:01.976>it <00:14:02.131>back <00:14:02.287>out <00:14:02.442>to <00:14:02.598>the <00:14:02.753>exact <00:14:02.909>same <00:14:03.064>files.

286
00:14:04.835 --> 00:14:07.325
<00:14:04.835>This <00:14:05.115>typically <00:14:05.395>takes <00:14:05.675>about <00:14:05.955>a <00:14:06.235>minute

287
00:14:07.325 --> 00:14:10.325
<00:14:07.325>or <00:14:07.432>so <00:14:07.540>where <00:14:07.648>you <00:14:07.755>can <00:14:07.863>see <00:14:07.971>in <00:14:08.078>this <00:14:08.186>case <00:14:08.294>we <00:14:08.401>took <00:14:08.509>some <00:14:08.617>45 <00:14:08.725>seconds

288
00:14:11.425 --> 00:14:13.525
<00:14:11.425>and, <00:14:11.625>uh, <00:14:11.824>if <00:14:12.025>you <00:14:12.224>scroll <00:14:12.425>through <00:14:12.625>the <00:14:12.824>output,

289
00:14:13.545 --> 00:14:15.005
<00:14:13.545>we <00:14:13.807>will <00:14:14.070>tell <00:14:14.333>you <00:14:14.596>exactly, <00:14:14.859>uh,

290
00:14:15.005 --> 00:14:17.325
<00:14:15.005>which <00:14:15.238>files <00:14:15.471>were <00:14:15.705>changed <00:14:15.938>by <00:14:16.171>which <00:14:16.405>recipes.

291
00:14:17.745 --> 00:14:19.205
<00:14:17.745>And <00:14:17.909>you <00:14:18.073>can <00:14:18.237>see <00:14:18.402>that <00:14:18.566>this <00:14:18.730>is <00:14:18.894>a <00:14:19.059>highly

292
00:14:19.605 --> 00:14:21.085
<00:14:19.605>hierarchical <00:14:20.049>structure <00:14:20.493>of <00:14:20.937>recipes.

293
00:14:22.185 --> 00:14:25.445
<00:14:22.185>The <00:14:22.324>very <00:14:22.464>neat <00:14:22.604>thing <00:14:22.744>here <00:14:22.885>is <00:14:23.025>that <00:14:23.165>we <00:14:23.305>added <00:14:23.444>this <00:14:23.584>estimate

294
00:14:25.465 --> 00:14:28.605
<00:14:25.465>of <00:14:25.665>time <00:14:25.865>savings, <00:14:26.065>which <00:14:26.265>says <00:14:26.465>that <00:14:26.665>we <00:14:26.865>think

295
00:14:28.605 --> 00:14:32.525
<00:14:28.605>that <00:14:28.732>we <00:14:28.859>took <00:14:28.986>45 <00:14:29.114>seconds <00:14:29.241>to <00:14:29.368>save <00:14:29.495>you <00:14:29.623>46 <00:14:29.750>minutes <00:14:29.877>of, <00:14:30.005>um,

296
00:14:32.915 --> 00:14:35.845
<00:14:32.915>automated <00:14:33.115>code <00:14:33.314>changes, <00:14:33.515>which <00:14:33.714>gets <00:14:33.915>me <00:14:34.115>quite <00:14:34.314>excited.

297
00:14:36.075 --> 00:14:37.565
<00:14:36.075>This <00:14:36.298>is <00:14:36.522>very <00:14:36.745>neat <00:14:36.969>way <00:14:37.192>to <00:14:37.416>work

298
00:14:37.565 --> 00:14:40.445
<00:14:37.565>with <00:14:37.798>all <00:14:38.031>the <00:14:38.265>software <00:14:38.498>making <00:14:38.731>automated <00:14:38.965>changes.

299
00:14:41.425 --> 00:14:44.205
<00:14:41.425>So <00:14:41.599>then <00:14:41.775>let's <00:14:41.949>look <00:14:42.125>over <00:14:42.300>some <00:14:42.474>of <00:14:42.650>the <00:14:42.824>things

300
00:14:44.205 --> 00:14:47.045
<00:14:44.205>that <00:14:44.405>we <00:14:44.605>did <00:14:44.805>very <00:14:45.005>rapidly <00:14:45.205>throughout <00:14:45.405>this <00:14:45.605>application.

301
00:14:47.865 --> 00:14:50.645
<00:14:47.865>Um, <00:14:48.040>first <00:14:48.215>up <00:14:48.390>in <00:14:48.565>this <00:14:48.740>case, <00:14:48.915>we're <00:14:49.090>gonna <00:14:49.265>see

302
00:14:50.645 --> 00:14:54.285
<00:14:50.645>that <00:14:50.800>we <00:14:50.956>have <00:14:51.111>migrated <00:14:51.267>you <00:14:51.422>away <00:14:51.578>from <00:14:51.733>J <00:14:51.889>unit <00:14:52.045>three

303
00:14:55.025 --> 00:14:56.205
<00:14:55.025>to <00:14:55.379>J <00:14:55.733>unit <00:14:56.087>five.

304
00:14:56.705 --> 00:14:58.965
<00:14:56.705>So <00:14:56.860>if <00:14:57.016>you've <00:14:57.171>been <00:14:57.327>a <00:14:57.482>Java <00:14:57.638>developer <00:14:57.793>for <00:14:57.949>a <00:14:58.105>while,

305
00:14:58.985 --> 00:15:01.645
<00:14:58.985>you <00:14:59.218>probably <00:14:59.451>recognize <00:14:59.685>this, <00:14:59.918>uh, <00:15:00.151>particular <00:15:00.385>pattern

306
00:15:02.055 --> 00:15:04.085
<00:15:02.055>where <00:15:02.288>you <00:15:02.521>extend <00:15:02.755>the <00:15:02.988>test <00:15:03.221>case <00:15:03.454>class.

307
00:15:04.515 --> 00:15:06.525
<00:15:04.515>This <00:15:04.655>was <00:15:04.795>fine <00:15:04.935>all <00:15:05.074>the <00:15:05.215>way <00:15:05.355>up <00:15:05.495>to <00:15:05.635>J <00:15:05.775>unit <00:15:05.915>four.

308
00:15:07.345 --> 00:15:10.605
<00:15:07.345>Uh, <00:15:07.500>but <00:15:07.656>the <00:15:07.811>issue <00:15:07.967>that <00:15:08.122>I <00:15:08.278>have <00:15:08.433>with <00:15:08.589>this <00:15:08.745>is

309
00:15:10.605 --> 00:15:13.765
<00:15:10.605>that <00:15:10.805>J <00:15:11.005>unit <00:15:11.205>four <00:15:11.405>came <00:15:11.605>out <00:15:11.805>in <00:15:12.005>2006.

310
00:15:14.595 --> 00:15:16.485
<00:15:14.595>This <00:15:14.828>pattern <00:15:15.061>is <00:15:15.295>old <00:15:15.528>enough <00:15:15.761>to <00:15:15.995>vote

311
00:15:16.505 --> 00:15:18.605
<00:15:16.505>and <00:15:16.738>buy <00:15:16.971>beer <00:15:17.205>if <00:15:17.438>you <00:15:17.671>really <00:15:17.905>want

312
00:15:18.605 --> 00:15:20.685
<00:15:18.605>to <00:15:18.885>be <00:15:19.165>using <00:15:19.445>something <00:15:19.725>more <00:15:20.005>recent.

313
00:15:21.345 --> 00:15:22.965
<00:15:21.345>And <00:15:21.545>this <00:15:21.745>is <00:15:21.945>not <00:15:22.145>something <00:15:22.345>that <00:15:22.545>you <00:15:22.745>want

314
00:15:22.965 --> 00:15:24.165
<00:15:22.965>to <00:15:23.181>boy <00:15:23.397>scout <00:15:23.613>your <00:15:23.829>way <00:15:24.045>through

315
00:15:24.165 --> 00:15:27.285
<00:15:24.165>because <00:15:24.320>I <00:15:24.476>see <00:15:24.631>folks <00:15:24.787>nodding, <00:15:24.942>they <00:15:25.098>still <00:15:25.253>see <00:15:25.409>this <00:15:25.564>pattern.

316
00:15:27.785 --> 00:15:31.525
<00:15:27.785>You <00:15:27.912>actually <00:15:28.039>wanna <00:15:28.166>apply <00:15:28.294>a <00:15:28.421>recipe, <00:15:28.548>get <00:15:28.675>rid <00:15:28.803>of <00:15:28.930>it, <00:15:29.057>move <00:15:29.185>on,

317
00:15:31.625 --> 00:15:33.765
<00:15:31.625>and <00:15:31.780>only <00:15:31.936>be <00:15:32.091>on <00:15:32.247>J <00:15:32.402>Unit <00:15:32.558>five <00:15:32.713>from <00:15:32.869>now <00:15:33.025>on.

318
00:15:34.305 --> 00:15:36.845
<00:15:34.305>So <00:15:34.460>what <00:15:34.616>we <00:15:34.771>do <00:15:34.927>with <00:15:35.082>the <00:15:35.238>automated <00:15:35.393>recipes <00:15:35.549>is <00:15:35.704>we

319
00:15:36.865 --> 00:15:38.085
<00:15:36.865>remove <00:15:37.414>this <00:15:37.963>extent.

320
00:15:38.345 --> 00:15:41.045
<00:15:38.345>We, <00:15:38.625>um, <00:15:38.905>remove <00:15:39.185>the <00:15:39.465>public <00:15:39.745>modifier

321
00:15:41.045 --> 00:15:42.165
<00:15:41.045>that <00:15:41.296>is <00:15:41.549>no <00:15:41.800>longer <00:15:42.053>necessary.

322
00:15:42.665 --> 00:15:45.085
<00:15:42.665>We <00:15:42.944>also <00:15:43.224>drop <00:15:43.505>the <00:15:43.785>test <00:15:44.064>prefix

323
00:15:45.085 --> 00:15:47.685
<00:15:45.085>that <00:15:45.260>you <00:15:45.435>had <00:15:45.610>in <00:15:45.785>your <00:15:45.960>test <00:15:46.135>names, <00:15:46.310>which <00:15:46.485>used

324
00:15:47.685 --> 00:15:51.725
<00:15:47.685>to <00:15:47.824>be <00:15:47.964>a <00:15:48.104>requirement <00:15:48.244>in <00:15:48.385>2006 <00:15:48.525>and <00:15:48.665>is <00:15:48.805>no <00:15:48.944>longer <00:15:49.084>necessary

325
00:15:51.725 --> 00:15:53.165
<00:15:51.725>because <00:15:52.049>we <00:15:52.373>now <00:15:52.697>have <00:15:53.021>annotations.

326
00:15:53.905 --> 00:15:56.965
<00:15:53.905>So <00:15:54.012>this <00:15:54.120>is <00:15:54.228>just <00:15:54.335>to <00:15:54.443>give <00:15:54.551>you <00:15:54.658>an <00:15:54.766>idea <00:15:54.874>of <00:15:54.981>the <00:15:55.089>types <00:15:55.197>of <00:15:55.305>changes

327
00:15:56.965 --> 00:16:00.365
<00:15:56.965>that <00:15:57.092>we <00:15:57.219>can <00:15:57.346>do <00:15:57.474>and <00:15:57.601>we'll <00:15:57.728>explore <00:15:57.855>a <00:15:57.983>few <00:15:58.110>more <00:15:58.237>patterns <00:15:58.365>here.

328
00:16:01.915 --> 00:16:03.615
<00:16:01.915>You <00:16:02.148>can <00:16:02.381>see <00:16:02.615>for, <00:16:02.848>uh, <00:16:03.081>this <00:16:03.314>case

329
00:16:03.615 --> 00:16:06.855
<00:16:03.615>where <00:16:03.770>we <00:16:03.926>actually <00:16:04.081>had <00:16:04.237>a <00:16:04.392>test <00:16:04.548>using <00:16:04.703>some <00:16:04.859>various <00:16:05.015>features

330
00:16:06.875 --> 00:16:10.975
<00:16:06.875>of <00:16:06.991>J <00:16:07.108>unit <00:16:07.225>four, <00:16:07.341>that <00:16:07.458>we <00:16:07.575>also <00:16:07.691>migrated <00:16:07.808>this <00:16:07.925>to <00:16:08.041>J <00:16:08.158>unit <00:16:08.275>five.

331
00:16:11.115 --> 00:16:14.695
<00:16:11.115>You <00:16:11.290>can <00:16:11.465>see <00:16:11.640>the <00:16:11.815>expected <00:16:11.990>exception <00:16:12.165>example <00:16:12.340>converted <00:16:12.515>here.

332
00:16:15.035 --> 00:16:17.455
<00:16:15.035>Uh, <00:16:15.190>but <00:16:15.346>we're <00:16:15.501>also <00:16:15.657>doing <00:16:15.812>the <00:16:15.968>same <00:16:16.123>for, <00:16:16.279>uh, <00:16:16.435>asserting

333
00:16:17.455 --> 00:16:20.175
<00:16:17.455>that <00:16:17.655>a <00:16:17.855>timeout <00:16:18.055>is <00:16:18.255>thrown, <00:16:18.455>um, <00:16:18.655>further <00:16:18.855>down.

334
00:16:20.445 --> 00:16:21.615
<00:16:20.445>This <00:16:20.708>is <00:16:20.971>an <00:16:21.234>interesting <00:16:21.498>one,

335
00:16:22.075 --> 00:16:23.695
<00:16:22.075>but <00:16:22.308>we <00:16:22.541>have <00:16:22.775>to <00:16:23.008>flip <00:16:23.241>the <00:16:23.475>order

336
00:16:23.955 --> 00:16:25.975
<00:16:23.955>of <00:16:24.188>the <00:16:24.421>arguments <00:16:24.655>as <00:16:24.888>you <00:16:25.121>move <00:16:25.355>through.

337
00:16:26.475 --> 00:16:29.815
<00:16:26.475>So <00:16:26.615>if <00:16:26.755>you've <00:16:26.895>manually <00:16:27.035>migrated <00:16:27.175>from <00:16:27.315>J <00:16:27.455>unit <00:16:27.595>four <00:16:27.735>to <00:16:27.875>five,

338
00:16:30.205 --> 00:16:32.255
<00:16:30.205>your <00:16:30.405>compiler <00:16:30.605>is <00:16:30.805>not <00:16:31.005>going <00:16:31.205>to <00:16:31.405>warn <00:16:31.605>you

339
00:16:32.255 --> 00:16:34.095
<00:16:32.255>that <00:16:32.488>you <00:16:32.721>should <00:16:32.955>have <00:16:33.188>flipped <00:16:33.421>those <00:16:33.655>arguments.

340
00:16:34.555 --> 00:16:36.495
<00:16:34.555>But <00:16:34.729>we <00:16:34.905>are <00:16:35.079>going <00:16:35.255>to <00:16:35.430>do <00:16:35.604>that <00:16:35.780>change <00:16:35.954>still.

341
00:16:36.875 --> 00:16:39.895
<00:16:36.875>So <00:16:37.030>if <00:16:37.186>even <00:16:37.341>if <00:16:37.497>you <00:16:37.652>already <00:16:37.808>migrated, <00:16:37.963>run <00:16:38.119>this <00:16:38.275>recipe

342
00:16:40.235 --> 00:16:41.615
<00:16:40.235>and <00:16:40.483>find <00:16:40.731>these <00:16:40.980>types <00:16:41.228>of <00:16:41.477>issues

343
00:16:41.615 --> 00:16:43.335
<00:16:41.615>because <00:16:41.965>you <00:16:42.315>might <00:16:42.665>be <00:16:43.015>asserting

344
00:16:43.335 --> 00:16:46.135
<00:16:43.335>that <00:16:43.490>your <00:16:43.646>message <00:16:43.801>is <00:16:43.957>not <00:16:44.112>null <00:16:44.268>instead <00:16:44.423>of <00:16:44.579>the <00:16:44.735>thing

345
00:16:46.135 --> 00:16:47.455
<00:16:46.135>that <00:16:46.333>you <00:16:46.531>actually <00:16:46.729>want <00:16:46.927>to <00:16:47.125>be <00:16:47.323>asserting.

346
00:16:48.375 --> 00:16:51.195
<00:16:48.375>Um, <00:16:48.575>further <00:16:48.775>down <00:16:48.975>test <00:16:49.175>rules, <00:16:49.375>they <00:16:49.575>are <00:16:49.775>migrated.

347
00:16:51.375 --> 00:16:54.875
<00:16:51.375>And <00:16:51.491>all <00:16:51.608>of <00:16:51.725>this <00:16:51.841>I <00:16:51.958>think <00:16:52.075>will <00:16:52.191>show, <00:16:52.308>um, <00:16:52.425>that <00:16:52.541>it's <00:16:52.658>very <00:16:52.775>handy

348
00:16:54.935 --> 00:16:56.395
<00:16:54.935>to <00:16:55.263>have <00:16:55.592>these <00:16:55.920>automated <00:16:56.249>migrations.

349
00:16:58.025 --> 00:16:59.925
<00:16:58.025>My <00:16:58.225>next <00:16:58.425>up <00:16:58.625>we <00:16:58.824>have <00:16:59.025>an <00:16:59.225>example <00:16:59.425>here

350
00:17:00.015 --> 00:17:03.405
<00:17:00.015>where <00:17:00.155>we're <00:17:00.295>not <00:17:00.435>just <00:17:00.574>going <00:17:00.715>to <00:17:00.855>upgrade <00:17:00.995>you <00:17:01.135>from <00:17:01.275>one <00:17:01.415>library,

351
00:17:03.705 --> 00:17:04.965
<00:17:03.705>uh, <00:17:03.988>to <00:17:04.271>an <00:17:04.555>next <00:17:04.839>version,

352
00:17:05.425 --> 00:17:06.765
<00:17:05.425>but <00:17:05.666>we <00:17:05.907>can <00:17:06.148>also <00:17:06.389>switch <00:17:06.631>you

353
00:17:06.795 --> 00:17:08.565
<00:17:06.795>between <00:17:07.495>different <00:17:08.195>implementations.

354
00:17:09.465 --> 00:17:12.885
<00:17:09.464>In <00:17:09.581>this <00:17:09.698>case, <00:17:09.814>we <00:17:09.931>are <00:17:10.048>switching <00:17:10.165>you <00:17:10.281>from <00:17:10.398>RET <00:17:10.514>to <00:17:10.631>a <00:17:10.748>assert <00:17:10.865>J.

355
00:17:13.585 --> 00:17:16.485
<00:17:13.585>Now <00:17:13.760>both <00:17:13.935>of <00:17:14.110>these <00:17:14.285>libraries <00:17:14.460>are <00:17:14.635>the <00:17:14.810>same <00:17:14.985>age.

356
00:17:16.485 --> 00:17:19.565
<00:17:16.484>They <00:17:16.612>have <00:17:16.739>roughly <00:17:16.866>the <00:17:16.994>same <00:17:17.121>style. <00:17:17.248>You <00:17:17.375>can <00:17:17.503>see <00:17:17.630>on <00:17:17.757>the <00:17:17.885>left.

357
00:17:19.905 --> 00:17:22.085
<00:17:19.905>It <00:17:20.060>pretty <00:17:20.216>much <00:17:20.371>reads <00:17:20.527>the <00:17:20.682>same <00:17:20.838>as <00:17:20.993>on <00:17:21.149>the <00:17:21.305>right,

358
00:17:22.785 --> 00:17:24.445
<00:17:22.785>but <00:17:23.065>the <00:17:23.345>main <00:17:23.625>difference <00:17:23.905>here <00:17:24.185>is

359
00:17:24.445 --> 00:17:28.085
<00:17:24.444>that <00:17:24.619>Crust <00:17:24.794>has <00:17:24.970>not <00:17:25.145>had <00:17:25.319>a <00:17:25.494>release <00:17:25.669>since <00:17:25.845>2019.

360
00:17:28.865 --> 00:17:30.725
<00:17:28.865>So <00:17:29.145>really <00:17:29.425>they <00:17:29.705>look <00:17:29.985>very <00:17:30.265>similar.

361
00:17:30.905 --> 00:17:32.205
<00:17:30.905>If <00:17:31.100>you <00:17:31.295>want <00:17:31.490>to <00:17:31.685>be <00:17:31.879>using <00:17:32.074>something

362
00:17:32.205 --> 00:17:33.765
<00:17:32.205>that <00:17:32.485>had <00:17:32.764>a <00:17:33.044>release <00:17:33.324>last <00:17:33.605>month,

363
00:17:34.155 --> 00:17:35.765
<00:17:34.155>then <00:17:34.355>a <00:17:34.555>surgery <00:17:34.754>is <00:17:34.955>the <00:17:35.155>way <00:17:35.355>to <00:17:35.555>go.

364
00:17:36.025 --> 00:17:38.925
<00:17:36.025>And <00:17:36.152>we <00:17:36.279>have <00:17:36.406>recipes <00:17:36.534>to <00:17:36.661>migrate <00:17:36.788>you <00:17:36.915>from <00:17:37.043>one <00:17:37.170>to <00:17:37.297>the <00:17:37.425>other.

365
00:17:39.575 --> 00:17:42.275
<00:17:39.575>And <00:17:39.691>the <00:17:39.808>neat <00:17:39.925>thing <00:17:40.041>here <00:17:40.158>is <00:17:40.275>you, <00:17:40.391>you <00:17:40.508>don't <00:17:40.625>have <00:17:40.741>to <00:17:40.858>tell <00:17:40.975>us

366
00:17:42.545 --> 00:17:43.675
<00:17:42.545>what <00:17:42.884>you <00:17:43.223>currently <00:17:43.562>have.

367
00:17:44.175 --> 00:17:46.755
<00:17:44.175>You <00:17:44.375>just <00:17:44.575>run <00:17:44.774>our <00:17:44.975>our <00:17:45.175>surgery <00:17:45.375>best <00:17:45.575>practices

368
00:17:47.015 --> 00:17:48.835
<00:17:47.015>and <00:17:47.295>we <00:17:47.575>will <00:17:47.855>migrate <00:17:48.135>everything <00:17:48.415>over

369
00:17:49.445 --> 00:17:50.925
<00:17:49.445>consolidating <00:17:49.711>you <00:17:49.977>on <00:17:50.244>the <00:17:50.510>text <00:17:50.777>stack

370
00:17:50.925 --> 00:17:52.285
<00:17:50.925>that <00:17:51.129>you <00:17:51.333>actually <00:17:51.537>want <00:17:51.741>to <00:17:51.945>be <00:17:52.149>using.

371
00:17:54.025 --> 00:17:55.445
<00:17:54.025>So <00:17:54.344>that's <00:17:54.664>looking <00:17:54.983>at <00:17:55.303>tests.

372
00:17:55.825 --> 00:17:59.405
<00:17:55.825>Uh, <00:17:56.000>we <00:17:56.175>also <00:17:56.350>have <00:17:56.525>similar <00:17:56.700>recipes <00:17:56.875>for, <00:17:57.050>um, <00:17:57.225>Java.

373
00:17:59.825 --> 00:18:01.805
<00:17:59.825>So <00:17:59.952>let's <00:18:00.079>have <00:18:00.206>a <00:18:00.334>look <00:18:00.461>at <00:18:00.588>this <00:18:00.715>one <00:18:00.843>where <00:18:00.970>you <00:18:01.097>can <00:18:01.225>see

374
00:18:01.805 --> 00:18:04.005
<00:18:01.805>that <00:18:02.038>we <00:18:02.271>are <00:18:02.505>introducing <00:18:02.738>a <00:18:02.971>text <00:18:03.205>block.

375
00:18:04.505 --> 00:18:07.085
<00:18:04.505>And <00:18:04.680>remember <00:18:04.855>when <00:18:05.030>Ron <00:18:05.205>called <00:18:05.380>out <00:18:05.555>the, <00:18:05.730>uh, <00:18:05.905>instance

376
00:18:07.105 --> 00:18:08.245
<00:18:07.105>of <00:18:07.618>pattern <00:18:08.130>matching,

377
00:18:08.665 --> 00:18:10.525
<00:18:08.665>we <00:18:08.898>actually <00:18:09.131>introduced <00:18:09.365>that <00:18:09.598>change <00:18:09.831>for <00:18:10.065>you.

378
00:18:10.785 --> 00:18:13.565
<00:18:10.785>We <00:18:10.912>will <00:18:11.039>detect <00:18:11.166>that <00:18:11.294>you're <00:18:11.421>doing <00:18:11.548>on <00:18:11.675>the <00:18:11.803>next <00:18:11.930>line <00:18:12.057>a <00:18:12.185>cast,

379
00:18:13.945 --> 00:18:15.965
<00:18:13.945>and <00:18:14.100>we <00:18:14.256>pull <00:18:14.411>that <00:18:14.567>up <00:18:14.722>to <00:18:14.878>the, <00:18:15.033>the <00:18:15.189>same <00:18:15.345>line.

380
00:18:17.065 --> 00:18:20.165
<00:18:17.065>And <00:18:17.240>my <00:18:17.415>favorite <00:18:17.590>example <00:18:17.765>is <00:18:17.940>actually <00:18:18.115>in <00:18:18.290>this <00:18:18.465>particular

381
00:18:20.165 --> 00:18:23.325
<00:18:20.165>controller <00:18:20.305>where <00:18:20.445>if <00:18:20.585>we <00:18:20.725>scroll <00:18:20.865>down <00:18:21.004>a <00:18:21.145>bit, <00:18:21.284>you <00:18:21.425>can <00:18:21.565>see

382
00:18:23.325 --> 00:18:25.285
<00:18:23.325>that <00:18:23.605>example <00:18:23.885>of <00:18:24.165>the <00:18:24.445>get <00:18:24.725>first

383
00:18:25.385 --> 00:18:27.405
<00:18:25.385>and <00:18:25.618>get <00:18:25.851>lost <00:18:26.085>in <00:18:26.318>the <00:18:26.551>sequence <00:18:26.785>collections.

384
00:18:28.655 --> 00:18:30.345
<00:18:28.655>This, <00:18:29.004>if <00:18:29.355>you're <00:18:29.705>using <00:18:30.055>21,

385
00:18:30.445 --> 00:18:32.225
<00:18:30.445>we <00:18:30.725>can <00:18:31.004>automatically <00:18:31.284>apply <00:18:31.564>for <00:18:31.845>you.

386
00:18:32.225 --> 00:18:35.185
<00:18:32.225>You've <00:18:32.380>had <00:18:32.536>25 <00:18:32.691>years <00:18:32.847>of <00:18:33.002>doing <00:18:33.158>it <00:18:33.313>some <00:18:33.469>other <00:18:33.625>way.

387
00:18:35.725 --> 00:18:38.945
<00:18:35.725>And <00:18:35.880>this <00:18:36.036>will <00:18:36.191>actually <00:18:36.347>get <00:18:36.502>you <00:18:36.658>onto <00:18:36.813>the, <00:18:36.969>the <00:18:37.125>patterns

388
00:18:38.945 --> 00:18:40.065
<00:18:38.945>that <00:18:39.113>you <00:18:39.281>want <00:18:39.449>to <00:18:39.617>be <00:18:39.785>using <00:18:39.953>instead.

389
00:18:40.165 --> 00:18:43.785
<00:18:40.165>So <00:18:40.340>take <00:18:40.514>those <00:18:40.690>45 <00:18:40.865>seconds, <00:18:41.040>run <00:18:41.215>this <00:18:41.389>one <00:18:41.565>recipe

390
00:18:44.285 --> 00:18:45.745
<00:18:44.285>and <00:18:44.613>see <00:18:44.942>your <00:18:45.270>code <00:18:45.599>changed

391
00:18:45.845 --> 00:18:47.865
<00:18:45.845>and <00:18:46.045>only <00:18:46.245>use <00:18:46.445>the <00:18:46.645>new <00:18:46.845>thing <00:18:47.045>going <00:18:47.245>forward.

392
00:18:49.165 --> 00:18:51.265
<00:18:49.165>And <00:18:49.365>then <00:18:49.565>we <00:18:49.764>also <00:18:49.965>do, <00:18:50.165>uh, <00:18:50.365>similar <00:18:50.565>recipes

393
00:18:51.265 --> 00:18:52.905
<00:18:51.265>to <00:18:51.545>help <00:18:51.825>you <00:18:52.105>modernize <00:18:52.385>your, <00:18:52.665>uh,

394
00:18:52.905 --> 00:18:55.505
<00:18:52.905>spring <00:18:53.185>applications <00:18:53.465>going <00:18:53.745>from <00:18:54.024>request <00:18:54.305>mapping

395
00:18:55.565 --> 00:18:57.105
<00:18:55.565>to <00:18:55.842>get <00:18:56.119>mapping <00:18:56.396>or <00:18:56.673>post <00:18:56.951>mapping.

396
00:18:57.885 --> 00:18:59.905
<00:18:57.885>All <00:18:58.165>those <00:18:58.445>2000 <00:18:58.725>recipes <00:18:59.004>come <00:18:59.285>together

397
00:19:00.205 --> 00:19:02.905
<00:19:00.205>to <00:19:00.379>make <00:19:00.554>it <00:19:00.730>feel <00:19:00.905>like <00:19:01.080>something <00:19:01.254>developed <00:19:01.429>on <00:19:01.605>spring

398
00:19:03.065 --> 00:19:05.065
<00:19:03.065>with <00:19:03.415>three <00:19:03.765>on <00:19:04.115>Java <00:19:04.465>21

399
00:19:05.365 --> 00:19:07.705
<00:19:05.365>and <00:19:05.540>really <00:19:05.715>make <00:19:05.890>it <00:19:06.065>fun <00:19:06.240>to <00:19:06.415>work <00:19:06.590>with <00:19:06.765>again,

400
00:19:08.045 --> 00:19:10.385
<00:19:08.045>rather <00:19:08.220>than <00:19:08.395>the <00:19:08.570>outdated <00:19:08.745>thing <00:19:08.920>that <00:19:09.095>you're <00:19:09.270>working <00:19:09.445>with.

401
00:19:11.745 --> 00:19:15.205
<00:19:11.745>So <00:19:11.900>then, <00:19:12.056>um, <00:19:12.211>furthermore, <00:19:12.367>we <00:19:12.522>do <00:19:12.678>some <00:19:12.833>things <00:19:12.989>like, <00:19:13.145>uh,

402
00:19:15.405 --> 00:19:17.485
<00:19:15.405>rename <00:19:15.580>those <00:19:15.754>properties <00:19:15.930>that <00:19:16.105>they <00:19:16.280>keep <00:19:16.455>renaming <00:19:16.629>for <00:19:16.805>you,

403
00:19:17.655 --> 00:19:20.365
<00:19:17.655>which <00:19:17.771>you <00:19:17.888>have <00:19:18.004>to <00:19:18.121>go <00:19:18.238>hunt <00:19:18.355>and <00:19:18.471>find <00:19:18.588>down <00:19:18.705>in <00:19:18.821>your <00:19:18.938>yamo <00:19:19.055>files.

404
00:19:20.905 --> 00:19:23.205
<00:19:20.905>We <00:19:21.105>also <00:19:21.305>update <00:19:21.504>your <00:19:21.705>dependencies <00:19:21.905>for <00:19:22.105>you <00:19:22.305>such

405
00:19:23.205 --> 00:19:25.565
<00:19:23.205>that <00:19:23.379>you <00:19:23.554>are <00:19:23.730>actually <00:19:23.905>now <00:19:24.080>using <00:19:24.254>the <00:19:24.429>latest <00:19:24.605>versions

406
00:19:26.105 --> 00:19:29.045
<00:19:26.105>and <00:19:26.245>we <00:19:26.385>argue <00:19:26.525>everything <00:19:26.665>that <00:19:26.805>needs <00:19:26.945>to <00:19:27.085>go <00:19:27.225>along <00:19:27.365>with <00:19:27.505>it,

407
00:19:29.045 --> 00:19:30.245
<00:19:29.045>like <00:19:29.315>a <00:19:29.585>newer <00:19:29.855>LOBO <00:19:30.125>version.

408
00:19:30.545 --> 00:19:34.605
<00:19:30.545>So <00:19:30.685>really <00:19:30.825>I <00:19:30.965>think <00:19:31.105>a <00:19:31.245>perfect <00:19:31.385>way <00:19:31.525>to <00:19:31.665>see <00:19:31.805>the <00:19:31.945>value

409
00:19:34.665 --> 00:19:35.845
<00:19:34.665>of <00:19:35.019>these <00:19:35.373>automated <00:19:35.727>changes.

410
00:19:36.985 --> 00:19:40.605
<00:19:36.985>But <00:19:37.125>this <00:19:37.264>is <00:19:37.405>still <00:19:37.544>looking <00:19:37.685>at <00:19:37.824>just <00:19:37.965>a <00:19:38.104>single <00:19:38.245>camp <00:19:38.385>ground.

411
00:19:40.945 --> 00:19:43.485
<00:19:40.945>We <00:19:41.100>actually <00:19:41.256>wanna <00:19:41.411>be <00:19:41.567>making <00:19:41.722>changes <00:19:41.878>at <00:19:42.033>a <00:19:42.189>larger <00:19:42.345>scale

412
00:19:43.825 --> 00:19:45.365
<00:19:43.825>to <00:19:44.171>really <00:19:44.518>change <00:19:44.864>that <00:19:45.211>landscape.

413
00:19:46.085 --> 00:19:50.225
<00:19:46.085>And <00:19:46.225>for <00:19:46.365>that <00:19:46.505>we <00:19:46.645>have <00:19:46.785>a, <00:19:46.925>um, <00:19:47.065>CLI <00:19:47.205>developed <00:19:47.345>at <00:19:47.485>Modern

414
00:19:50.695 --> 00:19:52.145
<00:19:50.695>that <00:19:51.021>you <00:19:51.347>can <00:19:51.673>similarly <00:19:52.000>use

415
00:19:52.145 --> 00:19:53.985
<00:19:52.145>to <00:19:52.320>make <00:19:52.495>these <00:19:52.670>changes <00:19:52.845>at <00:19:53.020>a <00:19:53.195>very <00:19:53.370>large <00:19:53.545>scale.

416
00:19:54.125 --> 00:19:58.265
<00:19:54.125>So <00:19:54.252>if <00:19:54.379>you <00:19:54.506>go <00:19:54.634>to <00:19:54.761>a <00:19:54.888>workspace <00:19:55.015>that <00:19:55.143>I <00:19:55.270>have <00:19:55.397>for, <00:19:55.525>uh,

417
00:19:58.365 --> 00:20:03.265
<00:19:58.365>all <00:19:58.505>the <00:19:58.645>Apache <00:19:58.785>Maven <00:19:58.925>projects, <00:19:59.065>I <00:19:59.205>can <00:19:59.345>do <00:19:59.485>a <00:19:59.625>mod <00:19:59.765>list.

418
00:20:03.925 --> 00:20:05.425
<00:20:03.925>Oh, <00:20:04.149>I <00:20:04.375>need <00:20:04.600>to <00:20:04.825>learn <00:20:05.050>a <00:20:05.274>type.

419
00:20:08.325 --> 00:20:10.305
<00:20:08.325>And <00:20:08.500>what <00:20:08.675>this <00:20:08.850>will <00:20:09.025>do <00:20:09.200>is <00:20:09.375>it'll <00:20:09.550>show <00:20:09.725>you

420
00:20:10.305 --> 00:20:14.105
<00:20:10.305>that <00:20:10.460>in <00:20:10.616>this <00:20:10.771>particular <00:20:10.927>folder <00:20:11.082>I <00:20:11.238>have <00:20:11.393>some <00:20:11.549>92 <00:20:11.705>repositories

421
00:20:14.685 --> 00:20:16.145
<00:20:14.685>for <00:20:15.013>Achi <00:20:15.341>Maven <00:20:15.670>checked <00:20:15.999>out.

422
00:20:16.885 --> 00:20:19.025
<00:20:16.885>And <00:20:17.025>what <00:20:17.165>I <00:20:17.305>actually <00:20:17.445>want <00:20:17.585>to <00:20:17.725>be <00:20:17.865>doing <00:20:18.004>is <00:20:18.145>I <00:20:18.285>want

423
00:20:19.025 --> 00:20:21.585
<00:20:19.025>to <00:20:19.180>help <00:20:19.336>them <00:20:19.491>out <00:20:19.647>by <00:20:19.802>doing <00:20:19.958>some <00:20:20.113>automated <00:20:20.269>code <00:20:20.425>changes

424
00:20:21.765 --> 00:20:22.985
<00:20:21.765>across <00:20:22.131>all <00:20:22.497>of <00:20:22.862>these.

425
00:20:23.605 --> 00:20:25.585
<00:20:23.605>And <00:20:23.805>for <00:20:24.005>that <00:20:24.205>we <00:20:24.405>have <00:20:24.605>that <00:20:24.805>modern <00:20:25.005>CLI

426
00:20:25.965 --> 00:20:30.825
<00:20:25.965>but <00:20:26.081>allows <00:20:26.198>me <00:20:26.314>to <00:20:26.431>do <00:20:26.548>a <00:20:26.665>mod <00:20:26.781>run <00:20:26.898>on <00:20:27.014>all <00:20:27.131>the <00:20:27.248>current <00:20:27.365>folders.

427
00:20:30.825 --> 00:20:34.345
<00:20:30.825>So <00:20:30.932>I <00:20:31.040>give <00:20:31.148>it <00:20:31.255>a <00:20:31.363>path <00:20:31.471>to <00:20:31.578>scan <00:20:31.686>this, <00:20:31.794>uh, <00:20:31.901>folder <00:20:32.009>of <00:20:32.117>93 <00:20:32.225>rep,

428
00:20:34.365 --> 00:20:35.505
<00:20:34.365>92 <00:20:35.391>repositories,

429
00:20:36.125 --> 00:20:40.945
<00:20:36.125>and <00:20:36.265>I <00:20:36.405>want <00:20:36.545>to <00:20:36.685>run <00:20:36.825>the <00:20:36.965>recipe <00:20:37.105>that's <00:20:37.245>called <00:20:37.385>common, <00:20:37.525>uh,

430
00:20:40.965 --> 00:20:43.385
<00:20:40.965>static <00:20:41.665>and <00:20:42.365>recipes.

431
00:20:44.735 --> 00:20:47.245
<00:20:44.735>I <00:20:44.890>get <00:20:45.046>two <00:20:45.201>options, <00:20:45.357>one <00:20:45.512>for <00:20:45.668>Python, <00:20:45.823>one <00:20:45.979>for <00:20:46.135>Java.

432
00:20:47.245 --> 00:20:50.125
<00:20:47.245>Since <00:20:47.372>this <00:20:47.499>is <00:20:47.626>Maven, <00:20:47.754>we're <00:20:47.881>gonna <00:20:48.008>go <00:20:48.135>for, <00:20:48.263>uh, <00:20:48.390>the <00:20:48.517>Java <00:20:48.645>one.

433
00:20:51.065 --> 00:20:54.805
<00:20:51.065>And <00:20:51.192>then <00:20:51.319>if <00:20:51.446>you <00:20:51.574>are <00:20:51.701>familiar <00:20:51.828>with <00:20:51.955>using <00:20:52.083>open <00:20:52.210>rebar <00:20:52.337>as <00:20:52.465>some

434
00:20:54.805 --> 00:20:56.965
<00:20:54.805>of <00:20:55.005>you <00:20:55.205>are, <00:20:55.405>um, <00:20:55.605>this <00:20:55.805>is <00:20:56.005>the <00:20:56.205>step

435
00:20:56.965 --> 00:20:59.325
<00:20:56.965>that <00:20:57.139>would <00:20:57.314>usually <00:20:57.490>take <00:20:57.665>quite <00:20:57.840>a <00:20:58.014>bit <00:20:58.189>of <00:20:58.365>time

436
00:20:59.325 --> 00:21:00.925
<00:20:59.325>where <00:20:59.500>we <00:20:59.675>build <00:20:59.850>up <00:21:00.025>a <00:21:00.200>model <00:21:00.375>of <00:21:00.550>your <00:21:00.725>code

437
00:21:01.305 --> 00:21:03.605
<00:21:01.305>and <00:21:01.505>then <00:21:01.705>only, <00:21:01.905>uh, <00:21:02.105>start <00:21:02.305>to <00:21:02.505>apply <00:21:02.705>changes

438
00:21:03.865 --> 00:21:05.765
<00:21:03.865>and <00:21:04.098>um, <00:21:04.331>print <00:21:04.565>them <00:21:04.798>back <00:21:05.031>out <00:21:05.265>again.

439
00:21:05.875 --> 00:21:08.205
<00:21:05.875>Whereas <00:21:06.075>with <00:21:06.275>the <00:21:06.475>CLI, <00:21:06.675>we <00:21:06.875>can <00:21:07.075>skip <00:21:07.275>over

440
00:21:08.205 --> 00:21:10.045
<00:21:08.205>that <00:21:08.438>whole <00:21:08.671>building <00:21:08.905>the <00:21:09.138>model <00:21:09.371>for <00:21:09.605>you

441
00:21:10.195 --> 00:21:12.485
<00:21:10.195>because <00:21:10.428>we <00:21:10.661>serialize <00:21:10.895>those <00:21:11.128>models <00:21:11.361>to <00:21:11.595>this.

442
00:21:12.505 --> 00:21:14.845
<00:21:12.505>You <00:21:12.705>can <00:21:12.905>download <00:21:13.105>them <00:21:13.305>from <00:21:13.505>our <00:21:13.705>uh, <00:21:13.905>platform

443
00:21:15.345 --> 00:21:18.365
<00:21:15.345>and <00:21:15.520>if <00:21:15.695>you <00:21:15.870>want <00:21:16.045>to <00:21:16.220>help <00:21:16.395>maintain <00:21:16.570>Apache <00:21:16.745>Maven,

444
00:21:18.555 --> 00:21:19.605
<00:21:18.555>then <00:21:18.744>you <00:21:18.933>can <00:21:19.122>run <00:21:19.311>a <00:21:19.500>recipe

445
00:21:19.705 --> 00:21:21.245
<00:21:19.705>as <00:21:19.878>you <00:21:20.051>see <00:21:20.224>here <00:21:20.398>in <00:21:20.571>just <00:21:20.744>a <00:21:20.917>couple <00:21:21.091>seconds.

446
00:21:22.105 --> 00:21:25.525
<00:21:22.105>And <00:21:22.232>what <00:21:22.359>that <00:21:22.486>then <00:21:22.614>produces <00:21:22.741>is <00:21:22.868>a <00:21:22.995>patch <00:21:23.123>file <00:21:23.250>like <00:21:23.377>this <00:21:23.505>one

447
00:21:26.015 --> 00:21:29.085
<00:21:26.015>where <00:21:26.142>you <00:21:26.269>can <00:21:26.396>see <00:21:26.524>that <00:21:26.651>we <00:21:26.778>are, <00:21:26.905>uh, <00:21:27.033>fixing <00:21:27.160>some <00:21:27.287>things <00:21:27.415>that,

448
00:21:29.585 --> 00:21:34.085
<00:21:29.585>um, <00:21:29.760>help <00:21:29.935>make, <00:21:30.110>um, <00:21:30.285>more <00:21:30.460>IME <00:21:30.635>use <00:21:30.810>of, <00:21:30.985>uh,

449
00:21:34.475 --> 00:21:37.605
<00:21:34.475>Java <00:21:34.630>in <00:21:34.786>this <00:21:34.941>case, <00:21:35.097>instead <00:21:35.252>of <00:21:35.408>checking <00:21:35.563>of <00:21:35.719>the <00:21:35.875>size

450
00:21:37.605 --> 00:21:39.405
<00:21:37.605>of <00:21:37.838>a <00:21:38.071>collection <00:21:38.305>is <00:21:38.538>larger <00:21:38.771>than <00:21:39.005>zero,

451
00:21:39.855 --> 00:21:42.565
<00:21:39.855>which <00:21:39.995>is <00:21:40.135>just <00:21:40.275>gonna <00:21:40.415>say <00:21:40.555>if <00:21:40.695>it <00:21:40.835>is <00:21:40.975>not <00:21:41.115>empty, <00:21:41.255>uh,

452
00:21:42.625 --> 00:21:44.125
<00:21:42.625>we <00:21:42.817>can <00:21:43.010>do <00:21:43.203>that <00:21:43.396>a <00:21:43.589>couple <00:21:43.782>more <00:21:43.975>times.

453
00:21:44.905 --> 00:21:46.765
<00:21:44.905>Uh, <00:21:45.138>it's <00:21:45.371>a <00:21:45.605>very <00:21:45.838>established <00:21:46.071>pattern <00:21:46.305>here.

454
00:21:47.345 --> 00:21:49.165
<00:21:47.345>Uh, <00:21:47.545>let's <00:21:47.745>scroll <00:21:47.945>if <00:21:48.145>we <00:21:48.345>find <00:21:48.545>some <00:21:48.745>more.

455
00:21:49.705 --> 00:21:52.245
<00:21:49.705>In <00:21:49.860>this <00:21:50.016>case, <00:21:50.171>we're <00:21:50.327>gonna, <00:21:50.482>uh, <00:21:50.638>flip <00:21:50.793>around <00:21:50.949>and <00:21:51.105>equals

456
00:21:52.245 --> 00:21:54.885
<00:21:52.245>because, <00:21:52.385>uh, <00:21:52.524>we <00:21:52.665>want <00:21:52.804>to <00:21:52.945>be <00:21:53.084>null <00:21:53.225>safe <00:21:53.364>in <00:21:53.504>our <00:21:53.645>comparison.

457
00:21:55.425 --> 00:21:58.045
<00:21:55.425>If <00:21:55.565>string <00:21:55.705>were <00:21:55.845>null <00:21:55.985>here, <00:21:56.125>we <00:21:56.264>get <00:21:56.405>a <00:21:56.544>null <00:21:56.685>pointer <00:21:56.825>exception.

458
00:21:58.745 --> 00:22:01.285
<00:21:58.745>All <00:21:58.945>of <00:21:59.145>these <00:21:59.344>are <00:21:59.544>things <00:21:59.745>that <00:21:59.945>your, <00:22:00.145>uh,

459
00:22:01.455 --> 00:22:03.605
<00:22:01.455>tools <00:22:01.655>like <00:22:01.855>Sonar <00:22:02.054>would <00:22:02.254>yell <00:22:02.455>at <00:22:02.655>you <00:22:02.855>about

460
00:22:03.905 --> 00:22:06.925
<00:22:03.905>and <00:22:04.045>they <00:22:04.185>probably <00:22:04.325>have <00:22:04.465>been <00:22:04.605>yelling <00:22:04.745>at <00:22:04.885>you <00:22:05.024>for <00:22:05.165>probably, <00:22:05.305>uh,

461
00:22:07.085 --> 00:22:08.325
<00:22:07.085>a <00:22:07.271>couple <00:22:07.457>years, <00:22:07.643>if <00:22:07.829>not <00:22:08.015>a <00:22:08.201>decade.

462
00:22:08.985 --> 00:22:13.125
<00:22:08.985>And <00:22:09.092>we <00:22:09.200>can <00:22:09.308>just <00:22:09.415>fix <00:22:09.523>them <00:22:09.631>all <00:22:09.738>in <00:22:09.846>one <00:22:09.954>go <00:22:10.061>on <00:22:10.169>this <00:22:10.277>one <00:22:10.385>project.

463
00:22:13.825 --> 00:22:15.925
<00:22:13.825>But <00:22:13.965>if <00:22:14.105>I <00:22:14.245>go <00:22:14.385>back <00:22:14.525>to <00:22:14.665>my <00:22:14.805>terminal, <00:22:14.945>you <00:22:15.085>will <00:22:15.225>see

464
00:22:15.925 --> 00:22:19.845
<00:22:15.925>that <00:22:16.065>we <00:22:16.205>have <00:22:16.345>actually <00:22:16.485>fixed <00:22:16.625>it <00:22:16.764>on <00:22:16.905>all <00:22:17.044>of <00:22:17.185>these <00:22:17.325>spreadsheets.

465
00:22:20.065 --> 00:22:23.285
<00:22:20.065>Uh, <00:22:20.265>lemme <00:22:20.465>check, <00:22:20.665>pull <00:22:20.865>up <00:22:21.065>the <00:22:21.265>terminal <00:22:21.465>again.

466
00:22:26.215 --> 00:22:29.845
<00:22:26.215>It's <00:22:26.448>right <00:22:26.681>here <00:22:26.915>and <00:22:27.148>it's <00:22:27.381>still <00:22:27.615>going.

467
00:22:29.945 --> 00:22:31.525
<00:22:29.945>And <00:22:30.145>we <00:22:30.345>have <00:22:30.544>all <00:22:30.745>these <00:22:30.945>prs <00:22:31.145>to <00:22:31.345>create

468
00:22:31.905 --> 00:22:34.485
<00:22:31.905>and <00:22:32.045>if <00:22:32.185>you <00:22:32.325>want <00:22:32.465>to <00:22:32.605>actually <00:22:32.745>push <00:22:32.885>this <00:22:33.024>out <00:22:33.165>to <00:22:33.305>prs,

469
00:22:34.485 --> 00:22:36.485
<00:22:34.485>then <00:22:34.612>we <00:22:34.739>have <00:22:34.866>a <00:22:34.994>very <00:22:35.121>quick <00:22:35.248>amount <00:22:35.375>to <00:22:35.503>do <00:22:35.630>so <00:22:35.757>as <00:22:35.885>well.

470
00:22:38.845 --> 00:22:40.975
<00:22:38.845>This <00:22:39.078>is <00:22:39.311>neat, <00:22:39.545>this <00:22:39.778>works <00:22:40.011>really <00:22:40.245>well

471
00:22:41.115 --> 00:22:43.175
<00:22:41.115>and <00:22:41.255>we <00:22:41.395>see, <00:22:41.535>uh, <00:22:41.675>a <00:22:41.815>lot <00:22:41.955>of <00:22:42.095>value <00:22:42.235>in <00:22:42.375>using <00:22:42.515>this,

472
00:22:43.195 --> 00:22:46.375
<00:22:43.195>but <00:22:43.370>it's <00:22:43.544>still <00:22:43.720>running <00:22:43.895>in <00:22:44.070>sequence <00:22:44.245>on <00:22:44.419>your <00:22:44.595>machine.

473
00:22:47.055 --> 00:22:49.095
<00:22:47.055>I <00:22:47.210>think <00:22:47.366>we <00:22:47.521>could <00:22:47.677>still <00:22:47.832>do, <00:22:47.988>uh, <00:22:48.143>one <00:22:48.299>bit <00:22:48.455>better.

474
00:22:49.195 --> 00:22:51.335
<00:22:49.195>And <00:22:49.395>that's <00:22:49.595>by <00:22:49.794>showing <00:22:49.995>you <00:22:50.195>the <00:22:50.395>mid <00:22:50.595>platform,

475
00:22:51.335 --> 00:22:55.015
<00:22:51.335>which <00:22:51.462>is <00:22:51.589>a <00:22:51.716>alternative <00:22:51.844>way <00:22:51.971>that <00:22:52.098>we <00:22:52.225>have <00:22:52.353>to <00:22:52.480>give <00:22:52.607>you <00:22:52.735>insight

476
00:22:55.015 --> 00:22:56.815
<00:22:55.015>and <00:22:55.248>run <00:22:55.481>these, <00:22:55.715>uh, <00:22:55.948>types <00:22:56.181>of <00:22:56.415>migrations.

477
00:22:57.555 --> 00:23:01.855
<00:22:57.555>And <00:22:57.671>for <00:22:57.788>that <00:22:57.905>I'm <00:22:58.021>going <00:22:58.138>to, <00:22:58.255>uh, <00:22:58.371>go <00:22:58.488>to <00:22:58.605>my, <00:22:58.721>uh, <00:22:58.838>terminal, <00:22:58.955>uh,

478
00:23:01.915 --> 00:23:05.945
<00:23:01.915>uh, <00:23:02.070>browser <00:23:02.226>and <00:23:02.381>we're <00:23:02.537>gonna <00:23:02.692>go, <00:23:02.848>uh, <00:23:03.003>open <00:23:03.159>a <00:23:03.315>couple

479
00:23:05.965 --> 00:23:10.255
<00:23:05.965>of <00:23:06.165>quick <00:23:06.365>tabs <00:23:06.564>And <00:23:06.764>we're <00:23:06.965>gonna <00:23:07.165>log <00:23:07.365>in.

480
00:23:10.795 --> 00:23:13.815
<00:23:10.795>So <00:23:10.935>this <00:23:11.075>is <00:23:11.215>the, <00:23:11.355>uh, <00:23:11.495>modern <00:23:11.635>platform <00:23:11.775>that <00:23:11.915>we <00:23:12.055>have, <00:23:12.195>um,

481
00:23:13.985 --> 00:23:16.895
<00:23:13.985>where <00:23:14.218>you <00:23:14.451>can <00:23:14.685>similarly <00:23:14.918>browse <00:23:15.151>the <00:23:15.385>recipes

482
00:23:16.895 --> 00:23:20.015
<00:23:16.895>that <00:23:17.035>we <00:23:17.175>have <00:23:17.315>available <00:23:17.455>and <00:23:17.595>you <00:23:17.735>can <00:23:17.875>very <00:23:18.014>quickly <00:23:18.155>run <00:23:18.295>them

483
00:23:20.015 --> 00:23:21.615
<00:23:20.015>against <00:23:20.481>open <00:23:20.948>source <00:23:21.415>projects.

484
00:23:22.115 --> 00:23:25.055
<00:23:22.115>Uh, <00:23:22.255>it's <00:23:22.395>taking <00:23:22.535>a <00:23:22.675>short <00:23:22.815>while <00:23:22.955>to <00:23:23.095>load <00:23:23.235>on <00:23:23.375>conference <00:23:23.515>wifi,

485
00:23:25.675 --> 00:23:26.735
<00:23:25.675>but <00:23:25.865>as <00:23:26.056>you <00:23:26.247>can <00:23:26.438>see <00:23:26.629>here,

486
00:23:26.795 --> 00:23:31.135
<00:23:26.795>we <00:23:27.028>have <00:23:27.261>some <00:23:27.495>2,630 <00:23:27.728>automated <00:23:27.961>migration <00:23:28.195>steps

487
00:23:31.135 --> 00:23:34.055
<00:23:31.135>that <00:23:31.275>you <00:23:31.415>can <00:23:31.555>run <00:23:31.695>to <00:23:31.835>help <00:23:31.975>maintain <00:23:32.115>your <00:23:32.254>code <00:23:32.395>across <00:23:32.535>a

488
00:23:34.205 --> 00:23:35.415
<00:23:34.205>variety <00:23:34.749>of <00:23:35.293>technologies.

489
00:23:35.475 --> 00:23:37.975
<00:23:35.475>So <00:23:35.615>we <00:23:35.754>have <00:23:35.895>quite <00:23:36.034>a <00:23:36.175>few <00:23:36.314>for <00:23:36.455>Java, <00:23:36.594>we <00:23:36.735>have <00:23:36.875>some

490
00:23:37.975 --> 00:23:39.935
<00:23:37.975>for <00:23:38.254>Java <00:23:38.534>Scripts, <00:23:38.814>and <00:23:39.094>we're <00:23:39.375>expounding

491
00:23:39.935 --> 00:23:40.975
<00:23:39.935>this <00:23:40.403>list <00:23:40.870>continuously.

492
00:23:41.715 --> 00:23:43.815
<00:23:41.715>And <00:23:41.889>if <00:23:42.064>you <00:23:42.240>want <00:23:42.415>to <00:23:42.590>try <00:23:42.764>out <00:23:42.939>these <00:23:43.115>recipes,

493
00:23:44.035 --> 00:23:46.965
<00:23:44.035>you <00:23:44.190>can <00:23:44.346>run <00:23:44.501>them <00:23:44.657>against <00:23:44.812>some <00:23:44.968>30,000 <00:23:45.123>open <00:23:45.279>source <00:23:45.435>projects

494
00:23:47.305 --> 00:23:49.365
<00:23:47.305>to <00:23:47.505>actually <00:23:47.705>see <00:23:47.905>what <00:23:48.105>that <00:23:48.305>does <00:23:48.505>at <00:23:48.705>scale.

495
00:23:50.225 --> 00:23:52.835
<00:23:50.225>And <00:23:50.458>a <00:23:50.691>neat <00:23:50.925>thing <00:23:51.158>that <00:23:51.391>we, <00:23:51.625>uh,

496
00:23:53.115 --> 00:23:56.715
<00:23:53.115>recently <00:23:53.270>added <00:23:53.426>is <00:23:53.581>this <00:23:53.737>developer <00:23:53.892>center <00:23:54.048>where <00:23:54.203>you <00:23:54.359>can <00:23:54.515>see,

497
00:23:56.935 --> 00:23:59.795
<00:23:56.935>um, <00:23:57.090>not <00:23:57.246>just <00:23:57.401>what <00:23:57.557>you <00:23:57.712>might <00:23:57.868>be <00:23:58.023>able <00:23:58.179>to <00:23:58.335>run,

498
00:23:59.975 --> 00:24:01.675
<00:23:59.975>but <00:24:00.254>also <00:24:00.534>where <00:24:00.814>you <00:24:01.094>currently <00:24:01.375>stand.

499
00:24:02.135 --> 00:24:04.915
<00:24:02.135>So <00:24:02.242>if <00:24:02.350>you <00:24:02.458>want <00:24:02.565>to <00:24:02.673>know <00:24:02.781>where <00:24:02.888>you <00:24:02.996>are <00:24:03.104>in <00:24:03.211>your <00:24:03.319>J <00:24:03.427>unit, <00:24:03.535>four

500
00:24:04.915 --> 00:24:07.115
<00:24:04.915>to <00:24:05.115>five <00:24:05.315>migration <00:24:05.514>or <00:24:05.715>your <00:24:05.915>spring <00:24:06.115>boot <00:24:06.315>upgrades,

501
00:24:07.655 --> 00:24:10.675
<00:24:07.655>or <00:24:07.795>in <00:24:07.935>this <00:24:08.075>case <00:24:08.215>for <00:24:08.355>Apache <00:24:08.495>Maven, <00:24:08.635>which <00:24:08.774>versions <00:24:08.915>of <00:24:09.055>parents

502
00:24:10.775 --> 00:24:11.835
<00:24:10.775>and <00:24:11.093>plugins <00:24:11.411>you're <00:24:11.729>using,

503
00:24:12.345 --> 00:24:14.315
<00:24:12.345>then <00:24:12.578>you <00:24:12.811>can <00:24:13.045>actually <00:24:13.278>get <00:24:13.511>that <00:24:13.745>insight.

504
00:24:14.775 --> 00:24:16.635
<00:24:14.775>But <00:24:14.975>we <00:24:15.175>don't <00:24:15.375>wanna <00:24:15.575>be <00:24:15.775>just <00:24:15.975>a <00:24:16.175>dashboard,

505
00:24:16.935 --> 00:24:18.315
<00:24:16.935>we <00:24:17.183>actually <00:24:17.431>want <00:24:17.680>to <00:24:17.928>be <00:24:18.177>actionable.

506
00:24:18.315 --> 00:24:20.915
<00:24:18.315>So <00:24:18.455>we <00:24:18.595>added <00:24:18.735>a <00:24:18.875>upgrade <00:24:19.015>button <00:24:19.155>to <00:24:19.295>all <00:24:19.435>of <00:24:19.575>these <00:24:19.715>charts

507
00:24:21.405 --> 00:24:23.235
<00:24:21.405>where <00:24:21.638>you <00:24:21.871>can, <00:24:22.105>uh, <00:24:22.338>click <00:24:22.571>this <00:24:22.805>button

508
00:24:23.695 --> 00:24:27.155
<00:24:23.695>and <00:24:23.850>very <00:24:24.006>quickly <00:24:24.161>migrate <00:24:24.317>all <00:24:24.472>of <00:24:24.628>the <00:24:24.783>Apache <00:24:24.939>Maven <00:24:25.095>projects

509
00:24:27.255 --> 00:24:30.875
<00:24:27.255>to, <00:24:27.371>in <00:24:27.488>this <00:24:27.605>case, <00:24:27.721>Java <00:24:27.838>17, <00:24:27.955>which <00:24:28.071>I <00:24:28.188>recently <00:24:28.305>had <00:24:28.421>a <00:24:28.538>vote <00:24:28.655>on

510
00:24:30.875 --> 00:24:32.835
<00:24:30.875>that <00:24:31.050>they <00:24:31.225>actually <00:24:31.400>want <00:24:31.575>to <00:24:31.750>move <00:24:31.925>to <00:24:32.100>Java <00:24:32.275>17.

511
00:24:33.375 --> 00:24:36.195
<00:24:33.375>And <00:24:33.515>we <00:24:33.655>might <00:24:33.795>then <00:24:33.935>as <00:24:34.075>well <00:24:34.215>adopt <00:24:34.355>all <00:24:34.495>those <00:24:34.635>language <00:24:34.775>features

512
00:24:36.195 --> 00:24:37.915
<00:24:36.195>that <00:24:36.475>come <00:24:36.754>with <00:24:37.034>using <00:24:37.314>Java <00:24:37.595>17.

513
00:24:38.775 --> 00:24:39.875
<00:24:38.775>And <00:24:38.973>very <00:24:39.171>quickly <00:24:39.369>you <00:24:39.567>can <00:24:39.765>see

514
00:24:39.875 --> 00:24:43.595
<00:24:39.875>that <00:24:40.075>we <00:24:40.275>now <00:24:40.475>have <00:24:40.675>upgraded <00:24:40.875>this <00:24:41.075>particular, <00:24:41.275>um,

515
00:24:43.595 --> 00:24:45.115
<00:24:43.595>module <00:24:44.051>over <00:24:44.507>Apache <00:24:44.963>Maven.

516
00:24:46.415 --> 00:24:49.155
<00:24:46.415>And <00:24:46.542>then, <00:24:46.669>uh, <00:24:46.796>from <00:24:46.924>here <00:24:47.051>you <00:24:47.178>can <00:24:47.305>see <00:24:47.433>we're <00:24:47.560>doing <00:24:47.687>all <00:24:47.815>the

517
00:24:49.155 --> 00:24:51.675
<00:24:49.155>things <00:24:49.330>that <00:24:49.504>you <00:24:49.680>expect <00:24:49.855>in <00:24:50.030>a <00:24:50.205>Java <00:24:50.379>17 <00:24:50.555>migration.

518
00:24:52.455 --> 00:24:55.355
<00:24:52.455>And <00:24:52.582>if <00:24:52.709>you <00:24:52.836>think <00:24:52.964>this <00:24:53.091>looks <00:24:53.218>good, <00:24:53.345>we <00:24:53.473>can, <00:24:53.600>um, <00:24:53.727>go <00:24:53.855>back

519
00:24:55.415 --> 00:24:57.995
<00:24:55.415>and <00:24:55.590>we <00:24:55.764>can <00:24:55.940>actually <00:24:56.115>commit <00:24:56.290>for <00:24:56.465>this <00:24:56.639>single <00:24:56.815>project

520
00:24:58.615 --> 00:25:00.435
<00:24:58.615>and <00:24:58.815>create <00:24:59.015>a <00:24:59.215>port <00:24:59.415>request <00:24:59.615>from <00:24:59.815>a <00:25:00.015>fork.

521
00:25:01.215 --> 00:25:04.275
<00:25:01.215>But <00:25:01.370>the <00:25:01.526>very <00:25:01.681>neat <00:25:01.837>thing <00:25:01.992>about <00:25:02.148>having <00:25:02.303>this <00:25:02.459>platform <00:25:02.615>is

522
00:25:04.275 --> 00:25:05.995
<00:25:04.275>that <00:25:04.508>I <00:25:04.741>can <00:25:04.975>select <00:25:05.208>all <00:25:05.441>these <00:25:05.675>projects

523
00:25:06.495 --> 00:25:08.275
<00:25:06.495>and <00:25:06.774>commit <00:25:07.054>across <00:25:07.334>all <00:25:07.614>these <00:25:07.895>projects

524
00:25:08.575 --> 00:25:11.955
<00:25:08.575>and <00:25:08.730>suddenly <00:25:08.886>all <00:25:09.041>of <00:25:09.197>Apache <00:25:09.352>Maven <00:25:09.508>is <00:25:09.663>using <00:25:09.819>Java <00:25:09.975>17

525
00:25:12.095 --> 00:25:13.955
<00:25:12.095>or <00:25:12.328>using <00:25:12.561>a <00:25:12.795>different <00:25:13.028>testing <00:25:13.261>library, <00:25:13.495>right?

526
00:25:14.175 --> 00:25:17.315
<00:25:14.175>And <00:25:14.291>this <00:25:14.408>is <00:25:14.524>really, <00:25:14.641>um, <00:25:14.758>why <00:25:14.875>we <00:25:14.991>say <00:25:15.108>that <00:25:15.225>you <00:25:15.341>can <00:25:15.458>really <00:25:15.575>start

527
00:25:17.335 --> 00:25:18.995
<00:25:17.335>to <00:25:17.801>change <00:25:18.268>that <00:25:18.735>landscape.

528
00:25:19.335 --> 00:25:21.195
<00:25:19.335>You <00:25:19.535>don't <00:25:19.735>have <00:25:19.935>to <00:25:20.135>settle <00:25:20.335>for <00:25:20.535>the <00:25:20.735>thing

529
00:25:21.195 --> 00:25:22.875
<00:25:21.195>that <00:25:21.370>you <00:25:21.544>might <00:25:21.720>have <00:25:21.895>been <00:25:22.070>using <00:25:22.245>for <00:25:22.419>a <00:25:22.595>while.

530
00:25:23.175 --> 00:25:25.555
<00:25:23.175>You <00:25:23.375>can <00:25:23.575>actually <00:25:23.774>do <00:25:23.975>something <00:25:24.175>productive <00:25:24.375>about <00:25:24.575>it

531
00:25:25.555 --> 00:25:26.555
<00:25:25.555>through <00:25:26.005>this <00:25:26.455>platform.

532
00:25:28.265 --> 00:25:30.885
<00:25:28.265>Um, <00:25:28.405>I'm <00:25:28.545>not <00:25:28.685>gonna <00:25:28.825>make <00:25:28.965>these <00:25:29.105>prs <00:25:29.245>right <00:25:29.385>now, <00:25:29.525>I'll <00:25:29.665>do

533
00:25:30.885 --> 00:25:32.525
<00:25:30.885>that <00:25:31.165>leisurely <00:25:31.445>next <00:25:31.725>week <00:25:32.004>or <00:25:32.285>so.

534
00:25:32.745 --> 00:25:34.045
<00:25:32.745>But, <00:25:33.330>um, <00:25:33.915>uh,

535
00:25:34.205 --> 00:25:37.125
<00:25:34.205>I <00:25:34.345>do <00:25:34.485>wanna <00:25:34.625>show <00:25:34.764>you <00:25:34.905>some <00:25:35.044>more <00:25:35.185>things <00:25:35.324>that <00:25:35.465>we <00:25:35.605>have.

536
00:25:37.265 --> 00:25:40.125
<00:25:37.265>So <00:25:37.405>in <00:25:37.545>this <00:25:37.685>case, <00:25:37.825>we <00:25:37.965>have <00:25:38.105>a <00:25:38.245>different <00:25:38.385>set <00:25:38.525>of <00:25:38.665>goals

537
00:25:40.125 --> 00:25:41.645
<00:25:40.125>that <00:25:40.353>we're <00:25:40.581>tracking <00:25:40.809>for <00:25:41.037>our <00:25:41.264>own, <00:25:41.493>uh,

538
00:25:41.645 --> 00:25:44.805
<00:25:41.645>open <00:25:41.878>rewrite <00:25:42.111>repositories <00:25:42.345>where <00:25:42.578>you <00:25:42.811>can <00:25:43.045>see

539
00:25:44.805 --> 00:25:46.885
<00:25:44.805>that <00:25:44.960>indeed <00:25:45.116>we <00:25:45.271>are <00:25:45.427>tracking <00:25:45.582>the <00:25:45.738>way <00:25:45.893>that <00:25:46.049>we <00:25:46.205>upgrade

540
00:25:46.945 --> 00:25:49.325
<00:25:46.945>to <00:25:47.120>spring <00:25:47.294>and <00:25:47.470>uh, <00:25:47.645>J <00:25:47.820>unit <00:25:47.995>four <00:25:48.169>to <00:25:48.345>five,

541
00:25:50.385 --> 00:25:51.845
<00:25:50.385>but <00:25:50.647>we <00:25:50.910>also <00:25:51.173>have <00:25:51.436>a <00:25:51.699>builder,

542
00:25:51.855 --> 00:25:55.565
<00:25:51.855>which <00:25:52.030>I'm <00:25:52.205>gonna <00:25:52.380>already <00:25:52.555>load <00:25:52.730>in <00:25:52.905>the <00:25:53.080>background, <00:25:53.255>uh,

543
00:25:56.065 --> 00:25:58.525
<00:25:56.065>and <00:25:56.205>that <00:25:56.345>we <00:25:56.485>can <00:25:56.625>track <00:25:56.765>some <00:25:56.905>security <00:25:57.045>issues <00:25:57.185>here <00:25:57.325>as <00:25:57.465>well.

544
00:25:59.185 --> 00:26:03.045
<00:25:59.185>So <00:25:59.301>the <00:25:59.418>builder <00:25:59.534>here <00:25:59.651>is <00:25:59.768>I <00:25:59.885>think, <00:26:00.001>very <00:26:00.118>neat <00:26:00.235>where <00:26:00.351>you <00:26:00.468>can, <00:26:00.585>uh,

545
00:26:03.155 --> 00:26:06.165
<00:26:03.155>when <00:26:03.310>I <00:26:03.466>showed <00:26:03.621>you <00:26:03.777>before <00:26:03.932>that <00:26:04.088>our <00:26:04.243>recipes <00:26:04.399>are <00:26:04.555>hierarchical,

546
00:26:06.835 --> 00:26:09.085
<00:26:06.835>this <00:26:07.010>one <00:26:07.185>shows <00:26:07.360>you <00:26:07.535>all <00:26:07.710>the <00:26:07.885>steps <00:26:08.060>involved <00:26:08.235>in

547
00:26:09.125 --> 00:26:10.165
<00:26:09.125>a <00:26:09.437>Spring <00:26:09.749>boot <00:26:10.061>migration.

548
00:26:10.745 --> 00:26:13.445
<00:26:10.745>And <00:26:10.885>if <00:26:11.024>you <00:26:11.165>want <00:26:11.304>to <00:26:11.445>add <00:26:11.584>a <00:26:11.725>step <00:26:11.864>to <00:26:12.004>this <00:26:12.145>migration,

549
00:26:13.475 --> 00:26:14.565
<00:26:13.475>make <00:26:13.720>it <00:26:13.965>really <00:26:14.210>your <00:26:14.456>own,

550
00:26:14.565 --> 00:26:18.285
<00:26:14.565>and <00:26:14.692>you <00:26:14.819>wanna <00:26:14.946>maybe <00:26:15.074>add <00:26:15.201>that <00:26:15.328>a <00:26:15.455>Azure <00:26:15.583>j <00:26:15.710>uh, <00:26:15.837>best <00:26:15.965>practices,

551
00:26:18.755 --> 00:26:21.925
<00:26:18.755>then <00:26:18.955>we <00:26:19.155>can <00:26:19.355>similarly <00:26:19.555>upgrade <00:26:19.755>this, <00:26:19.955>um, <00:26:20.155>recipe.

552
00:26:22.665 --> 00:26:25.565
<00:26:22.665>And <00:26:22.898>now <00:26:23.131>you <00:26:23.365>have <00:26:23.598>2200 <00:26:23.831>recipes <00:26:24.065>instead

553
00:26:25.565 --> 00:26:27.045
<00:26:25.565>of <00:26:25.787>the <00:26:26.009>2000 <00:26:26.231>that <00:26:26.453>we <00:26:26.675>started <00:26:26.897>with.

554
00:26:27.675 --> 00:26:30.415
<00:26:27.675>And <00:26:27.815>all <00:26:27.955>of <00:26:28.095>these <00:26:28.235>will <00:26:28.375>then <00:26:28.514>be <00:26:28.655>run <00:26:28.794>against <00:26:28.935>your <00:26:29.075>own

555
00:26:30.415 --> 00:26:32.695
<00:26:30.415>repositories <00:26:30.764>and <00:26:31.115>suddenly <00:26:31.465>you'll <00:26:31.815>find

556
00:26:32.695 --> 00:26:34.215
<00:26:32.695>that <00:26:33.037>things <00:26:33.379>look <00:26:33.721>very <00:26:34.062>different

557
00:26:34.235 --> 00:26:35.815
<00:26:34.235>by <00:26:34.514>tomorrow <00:26:34.794>than <00:26:35.074>they <00:26:35.354>do <00:26:35.635>today.

558
00:26:36.075 --> 00:26:38.375
<00:26:36.075>And <00:26:36.215>you <00:26:36.355>can <00:26:36.495>start <00:26:36.635>to <00:26:36.775>track <00:26:36.915>a <00:26:37.055>different <00:26:37.195>set <00:26:37.335>of <00:26:37.475>goals.

559
00:26:39.075 --> 00:26:40.855
<00:26:39.075>Now <00:26:39.355>this <00:26:39.635>gets <00:26:39.915>me <00:26:40.195>very <00:26:40.475>excited.

560
00:26:41.355 --> 00:26:44.165
<00:26:41.355>Um, <00:26:41.495>I <00:26:41.635>hope <00:26:41.775>you <00:26:41.915>see <00:26:42.055>the <00:26:42.195>value <00:26:42.335>in <00:26:42.475>this <00:26:42.615>as <00:26:42.755>well.

561
00:26:45.185 --> 00:26:48.125
<00:26:45.185>So, <00:26:45.360>um, <00:26:45.534>I <00:26:45.710>see <00:26:45.885>we <00:26:46.060>have <00:26:46.235>three <00:26:46.409>minutes <00:26:46.585>left.

562
00:26:48.185 --> 00:26:52.045
<00:26:48.185>So <00:26:48.325>I'm <00:26:48.465>going <00:26:48.605>to, <00:26:48.745>um, <00:26:48.885>switch <00:26:49.024>back <00:26:49.165>briefly <00:26:49.304>to <00:26:49.445>a <00:26:49.585>presentation.

563
00:26:54.685 --> 00:26:56.905
<00:26:54.685>So <00:26:54.918>I <00:26:55.151>showed <00:26:55.385>you <00:26:55.618>the <00:26:55.851>JetBrains <00:26:56.085>plugin

564
00:26:56.905 --> 00:26:59.505
<00:26:56.905>that <00:26:57.045>you <00:26:57.185>can <00:26:57.325>already <00:26:57.465>use <00:26:57.605>the <00:26:57.745>CLI, <00:26:57.885>which <00:26:58.024>you <00:26:58.165>can <00:26:58.305>use

565
00:26:59.505 --> 00:27:02.385
<00:26:59.505>to <00:26:59.660>run <00:26:59.816>very <00:26:59.971>quickly <00:27:00.127>across <00:27:00.282>multiple <00:27:00.438>projects <00:27:00.593>on <00:27:00.749>your <00:27:00.905>own

566
00:27:02.385 --> 00:27:05.505
<00:27:02.385>machine <00:27:02.512>and <00:27:02.639>the <00:27:02.766>platform <00:27:02.894>if <00:27:03.021>you <00:27:03.148>really <00:27:03.275>want <00:27:03.403>to <00:27:03.530>go <00:27:03.657>big <00:27:03.785>and,

567
00:27:05.565 --> 00:27:07.185
<00:27:05.565>and <00:27:05.845>make <00:27:06.125>the <00:27:06.405>sweeping <00:27:06.685>changes <00:27:06.965>there.

568
00:27:08.565 --> 00:27:10.785
<00:27:08.565>But <00:27:08.798>we <00:27:09.031>also <00:27:09.265>have <00:27:09.498>a <00:27:09.731>neat <00:27:09.965>integration

569
00:27:10.955 --> 00:27:12.705
<00:27:10.955>after <00:27:11.235>you've <00:27:11.514>already <00:27:11.794>cleaned <00:27:12.074>things <00:27:12.355>up.

570
00:27:13.125 --> 00:27:16.865
<00:27:13.125>If <00:27:13.280>you <00:27:13.436>think, <00:27:13.591>well, <00:27:13.747>I've <00:27:13.902>migrated <00:27:14.058>everything <00:27:14.213>to <00:27:14.369>Java <00:27:14.525>17

571
00:27:16.885 --> 00:27:20.785
<00:27:16.885>or <00:27:17.001>21 <00:27:17.118>and <00:27:17.235>I <00:27:17.351>now <00:27:17.468>want <00:27:17.585>to <00:27:17.701>make <00:27:17.818>sure <00:27:17.935>that <00:27:18.051>issues <00:27:18.168>don't <00:27:18.285>reoccur,

572
00:27:21.135 --> 00:27:23.865
<00:27:21.135>then <00:27:21.290>we <00:27:21.446>have <00:27:21.601>added <00:27:21.757>this <00:27:21.912>check <00:27:22.068>that <00:27:22.223>you <00:27:22.379>can <00:27:22.535>add

573
00:27:23.865 --> 00:27:27.425
<00:27:23.865>to <00:27:24.005>your <00:27:24.145>pull <00:27:24.285>request <00:27:24.425>where <00:27:24.565>we've <00:27:24.705>cleaned <00:27:24.845>up <00:27:24.985>the <00:27:25.125>all <00:27:25.265>those

574
00:27:27.425 --> 00:27:29.585
<00:27:27.425>tests <00:27:27.625>that <00:27:27.825>started <00:27:28.024>with <00:27:28.225>the <00:27:28.425>test <00:27:28.625>name <00:27:28.825>prefix,

575
00:27:30.205 --> 00:27:33.585
<00:27:30.205>and <00:27:30.345>we <00:27:30.485>wanted <00:27:30.625>to <00:27:30.764>have <00:27:30.905>the <00:27:31.044>least <00:27:31.185>intrusive <00:27:31.324>way <00:27:31.465>of <00:27:31.605>ensuring

576
00:27:33.615 --> 00:27:36.745
<00:27:33.615>that <00:27:33.755>going <00:27:33.895>forward, <00:27:34.035>this <00:27:34.175>issue, <00:27:34.315>um, <00:27:34.455>stays <00:27:34.595>out <00:27:34.735>of <00:27:34.875>your <00:27:35.015>code.

577
00:27:37.205 --> 00:27:40.345
<00:27:37.205>And <00:27:37.379>that <00:27:37.554>we <00:27:37.730>figured <00:27:37.905>out <00:27:38.080>by, <00:27:38.254>um, <00:27:38.429>adding <00:27:38.605>these

578
00:27:41.015 --> 00:27:44.505
<00:27:41.015>suggestions <00:27:41.170>on <00:27:41.326>your <00:27:41.481>prs, <00:27:41.637>we're <00:27:41.792>not <00:27:41.948>gonna <00:27:42.103>yell <00:27:42.259>at <00:27:42.415>you,

579
00:27:44.505 --> 00:27:46.305
<00:27:44.505>give <00:27:44.680>you <00:27:44.855>a <00:27:45.030>big <00:27:45.205>Red <00:27:45.380>Cross <00:27:45.555>on <00:27:45.730>a <00:27:45.905>PR

580
00:27:46.685 --> 00:27:48.105
<00:27:46.685>and <00:27:46.898>tell <00:27:47.110>you <00:27:47.324>to <00:27:47.537>do <00:27:47.750>things <00:27:47.963>differently.

581
00:27:48.525 --> 00:27:51.145
<00:27:48.525>Now <00:27:48.680>we're <00:27:48.836>just <00:27:48.991>gonna <00:27:49.147>gently <00:27:49.302>guide <00:27:49.458>you <00:27:49.613>to <00:27:49.769>the <00:27:49.925>patterns

582
00:27:51.145 --> 00:27:52.545
<00:27:51.145>that <00:27:51.355>we <00:27:51.565>hope <00:27:51.775>that <00:27:51.985>you <00:27:52.195>use <00:27:52.405>instead.

583
00:27:52.965 --> 00:27:55.705
<00:27:52.965>And <00:27:53.105>this <00:27:53.245>way <00:27:53.385>actually <00:27:53.524>get <00:27:53.665>rid <00:27:53.804>of <00:27:53.945>all <00:27:54.084>these, <00:27:54.225>um, <00:27:54.365>issues

584
00:27:55.885 --> 00:27:57.465
<00:27:55.885>and <00:27:56.085>make <00:27:56.285>sure <00:27:56.485>that <00:27:56.685>they <00:27:56.885>actually <00:27:57.085>stay <00:27:57.285>out.

585
00:27:59.815 --> 00:28:02.755
<00:27:59.815>Now <00:27:59.942>this <00:28:00.069>last <00:28:00.196>slide <00:28:00.324>that <00:28:00.451>I <00:28:00.578>have, <00:28:00.705>I <00:28:00.833>kind <00:28:00.960>of <00:28:01.087>wanna, <00:28:01.215>um,

586
00:28:03.145 --> 00:28:05.595
<00:28:03.145>tell <00:28:03.425>you <00:28:03.705>the <00:28:03.985>difference <00:28:04.264>that <00:28:04.545>arres

587
00:28:05.595 --> 00:28:07.355
<00:28:05.595>between <00:28:05.945>Open <00:28:06.295>Rewrite <00:28:06.645>and <00:28:06.995>Mudder.

588
00:28:07.775 --> 00:28:11.115
<00:28:07.775>Um, <00:28:07.902>so <00:28:08.029>on <00:28:08.156>the <00:28:08.284>left <00:28:08.411>you <00:28:08.538>can <00:28:08.665>see <00:28:08.793>all <00:28:08.920>the <00:28:09.047>various <00:28:09.175>ways

589
00:28:11.115 --> 00:28:13.315
<00:28:11.115>that <00:28:11.348>you <00:28:11.581>can <00:28:11.815>run <00:28:12.048>open <00:28:12.281>rewrite <00:28:12.515>recipes

590
00:28:13.625 --> 00:28:16.315
<00:28:13.625>through <00:28:13.858>existing <00:28:14.091>technologies <00:28:14.325>that <00:28:14.558>you <00:28:14.791>are, <00:28:15.025>um,

591
00:28:16.815 --> 00:28:18.275
<00:28:16.815>in <00:28:17.077>some <00:28:17.340>cases <00:28:17.603>free <00:28:17.866>to <00:28:18.129>use.

592
00:28:18.285 --> 00:28:20.995
<00:28:18.285>Other <00:28:18.425>cases <00:28:18.565>you <00:28:18.705>have <00:28:18.845>to, <00:28:18.985>uh, <00:28:19.125>pay <00:28:19.265>a <00:28:19.405>bit <00:28:19.545>to, <00:28:19.685>uh,

593
00:28:21.055 --> 00:28:22.395
<00:28:21.055>for <00:28:21.356>instance <00:28:21.658>use <00:28:21.959>Amazon <00:28:22.261>Queue.

594
00:28:23.015 --> 00:28:25.795
<00:28:23.015>All <00:28:23.170>of <00:28:23.326>those <00:28:23.481>use <00:28:23.637>the <00:28:23.792>underlying <00:28:23.948>recipes <00:28:24.103>that <00:28:24.259>we <00:28:24.415>have

595
00:28:25.795 --> 00:28:28.395
<00:28:25.795>for <00:28:25.970>Open <00:28:26.145>Rewind, <00:28:26.320>all <00:28:26.495>of <00:28:26.670>which <00:28:26.845>are <00:28:27.020>open <00:28:27.195>source

596
00:28:28.495 --> 00:28:29.715
<00:28:28.495>and <00:28:28.769>you <00:28:29.043>can <00:28:29.318>contribute <00:28:29.592>to.

597
00:28:29.775 --> 00:28:32.395
<00:28:29.775>So <00:28:29.902>if <00:28:30.029>you <00:28:30.156>have <00:28:30.284>your <00:28:30.411>own <00:28:30.538>use <00:28:30.665>cases, <00:28:30.793>come <00:28:30.920>talk <00:28:31.047>to <00:28:31.175>me,

598
00:28:32.495 --> 00:28:34.235
<00:28:32.495>we <00:28:32.728>will <00:28:32.961>get <00:28:33.195>your, <00:28:33.428>uh, <00:28:33.661>PR <00:28:33.895>in

599
00:28:34.255 --> 00:28:35.995
<00:28:34.255>and <00:28:34.455>then <00:28:34.655>you <00:28:34.855>can <00:28:35.055>do <00:28:35.255>the <00:28:35.455>also <00:28:35.655>automation.

600
00:28:36.655 --> 00:28:39.195
<00:28:36.655>The <00:28:36.795>thing <00:28:36.935>that <00:28:37.075>makes <00:28:37.215>modern <00:28:37.355>unique <00:28:37.495>is <00:28:37.635>that <00:28:37.774>we <00:28:37.915>are <00:28:38.055>able

601
00:28:39.195 --> 00:28:41.195
<00:28:39.195>to <00:28:39.428>serialize <00:28:39.661>the <00:28:39.895>model <00:28:40.128>of <00:28:40.361>your <00:28:40.595>code

602
00:28:41.615 --> 00:28:43.755
<00:28:41.615>to <00:28:41.848>really <00:28:42.081>run <00:28:42.315>these <00:28:42.548>recipes <00:28:42.781>very <00:28:43.015>quickly.

603
00:28:44.415 --> 00:28:46.435
<00:28:44.415>And <00:28:44.648>that <00:28:44.881>also <00:28:45.115>unlocks <00:28:45.348>new <00:28:45.581>use <00:28:45.815>cases.

604
00:28:47.055 --> 00:28:49.475
<00:28:47.055>If <00:28:47.288>you <00:28:47.521>spot <00:28:47.755>something <00:28:47.988>in <00:28:48.221>your <00:28:48.455>IEE

605
00:28:49.475 --> 00:28:52.115
<00:28:49.475>and <00:28:49.602>you <00:28:49.729>wanna <00:28:49.856>know <00:28:49.984>is <00:28:50.111>this <00:28:50.238>used <00:28:50.365>a <00:28:50.493>lot <00:28:50.620>in <00:28:50.747>my <00:28:50.875>organization,

606
00:28:52.655 --> 00:28:53.995
<00:28:52.655>you <00:28:52.896>can <00:28:53.137>just <00:28:53.378>right <00:28:53.619>click <00:28:53.860>it

607
00:28:54.095 --> 00:28:57.115
<00:28:54.095>and <00:28:54.211>we <00:28:54.328>will <00:28:54.445>tell <00:28:54.561>you <00:28:54.678>all <00:28:54.795>the <00:28:54.911>different <00:28:55.028>ways <00:28:55.145>it <00:28:55.261>is <00:28:55.378>being <00:28:55.495>used

608
00:28:57.995 --> 00:28:58.995
<00:28:57.995>directly <00:28:58.294>in <00:28:58.594>your <00:28:58.895>IDE

609
00:28:59.415 --> 00:29:01.835
<00:28:59.415>and <00:28:59.555>then <00:28:59.695>with <00:28:59.835>another <00:28:59.975>right <00:29:00.115>click, <00:29:00.254>you <00:29:00.395>can <00:29:00.534>create <00:29:00.675>a <00:29:00.815>recipe

610
00:29:02.055 --> 00:29:03.115
<00:29:02.055>to <00:29:02.373>actually <00:29:02.691>change <00:29:03.009>it

611
00:29:03.135 --> 00:29:04.915
<00:29:03.135>to <00:29:03.310>the <00:29:03.485>thing <00:29:03.660>you <00:29:03.835>want <00:29:04.010>to <00:29:04.185>be <00:29:04.360>using <00:29:04.535>instead.

612
00:29:05.535 --> 00:29:08.635
<00:29:05.535>So <00:29:05.690>that's <00:29:05.846>really, <00:29:06.001>um, <00:29:06.157>the <00:29:06.312>way <00:29:06.468>that, <00:29:06.623>uh, <00:29:06.779>we <00:29:06.935>operate.

613
00:29:08.775 --> 00:29:11.755
<00:29:08.775>We <00:29:09.008>aim <00:29:09.241>for <00:29:09.475>that <00:29:09.708>running <00:29:09.941>at <00:29:10.175>scale.

614
00:29:13.305 --> 00:29:15.125
<00:29:13.305>If <00:29:13.480>you <00:29:13.655>wanna <00:29:13.830>learn <00:29:14.005>more <00:29:14.180>about <00:29:14.355>any <00:29:14.530>of <00:29:14.705>this,

615
00:29:15.125 --> 00:29:16.525
<00:29:15.125>then <00:29:15.305>these <00:29:15.485>are <00:29:15.665>the <00:29:15.845>links <00:29:16.025>to <00:29:16.205>go <00:29:16.385>to.

616
00:29:16.705 --> 00:29:19.405
<00:29:16.705>Um, <00:29:16.832>of <00:29:16.959>course <00:29:17.086>we <00:29:17.214>have <00:29:17.341>our <00:29:17.468>docs, <00:29:17.595>uh, <00:29:17.723>with <00:29:17.850>all <00:29:17.977>the <00:29:18.105>recipes

617
00:29:19.405 --> 00:29:22.445
<00:29:19.405>that <00:29:19.560>we <00:29:19.716>have, <00:29:19.871>all <00:29:20.027>2,600 <00:29:20.182>of <00:29:20.338>them <00:29:20.493>are <00:29:20.649>on <00:29:20.805>there.

618
00:29:22.465 --> 00:29:24.845
<00:29:22.465>If <00:29:22.605>you <00:29:22.745>wanna <00:29:22.885>know <00:29:23.024>what <00:29:23.165>we <00:29:23.304>do, <00:29:23.445>if <00:29:23.584>you <00:29:23.725>wanna, <00:29:23.865>uh,

619
00:29:24.875 --> 00:29:27.485
<00:29:24.875>read <00:29:25.075>our <00:29:25.275>blog, <00:29:25.475>for <00:29:25.675>instance, <00:29:25.875>go <00:29:26.075>to <00:29:26.275>modern.ai.

620
00:29:27.825 --> 00:29:29.405
<00:29:27.825>If <00:29:28.058>you <00:29:28.291>want <00:29:28.525>to <00:29:28.758>see <00:29:28.991>that <00:29:29.225>platform

621
00:29:29.425 --> 00:29:31.885
<00:29:29.425>and <00:29:29.625>maybe <00:29:29.825>help <00:29:30.024>maintain <00:29:30.225>open <00:29:30.425>source <00:29:30.625>code, <00:29:30.825>then

622
00:29:31.885 --> 00:29:33.845
<00:29:31.885>that <00:29:33.285>is@app.modern.io.

623
00:29:34.825 --> 00:29:36.365
<00:29:34.825>All <00:29:35.056>of <00:29:35.287>our <00:29:35.518>development <00:29:35.749>is <00:29:35.980>on <00:29:36.211>GitHub.

624
00:29:36.385 --> 00:29:38.645
<00:29:36.385>If <00:29:36.540>you <00:29:36.696>wanna <00:29:36.851>contribute, <00:29:37.007>you're <00:29:37.162>gonna <00:29:37.318>come <00:29:37.473>through <00:29:37.629>me, <00:29:37.785>head

625
00:29:38.645 --> 00:29:40.965
<00:29:38.645>of <00:29:38.820>community, <00:29:38.995>you'll, <00:29:39.170>you, <00:29:39.345>I'll, <00:29:39.520>uh, <00:29:39.695>answer <00:29:39.870>all <00:29:40.045>the,

626
00:29:41.010 --> 00:29:42.170
<00:29:41.010>the <00:29:41.184>questions <00:29:41.358>you <00:29:41.532>have <00:29:41.706>in <00:29:41.880>our <00:29:42.054>Slack

627
00:29:42.625 --> 00:29:45.205
<00:29:42.625>and <00:29:42.800>we <00:29:42.975>also <00:29:43.150>do <00:29:43.325>some, <00:29:43.500>um, <00:29:43.675>video <00:29:43.850>instructions <00:29:44.025>and,

628
00:29:45.205 --> 00:29:46.285
<00:29:45.205>and <00:29:45.529>live <00:29:45.853>tutorials <00:29:46.177>on.

629
00:29:47.705 --> 00:29:48.925
<00:29:47.705>So <00:29:47.979>that's <00:29:48.254>all <00:29:48.528>I <00:29:48.803>have.

630
00:29:49.265 --> 00:29:51.125
<00:29:49.265>So, <00:29:49.465>uh, <00:29:49.665>thank <00:29:49.865>you <00:29:50.065>very <00:29:50.265>much <00:29:50.465>for <00:29:50.665>coming

631
00:29:51.185 --> 00:29:52.245
<00:29:51.185>and <00:29:51.423>listening <00:29:51.661>to <00:29:51.900>my <00:29:52.139>talk.

632
00:29:52.545 --> 00:29:52.965
Cheers.