WEBVTT

1
00:00:03.075 --> 00:00:04.785
<00:00:03.075>Hello, <00:00:03.355>welcome <00:00:03.635>back <00:00:03.915>to <00:00:04.195>stage <00:00:04.475>six.

2
00:00:05.285 --> 00:00:09.225
<00:00:05.285>Um, <00:00:05.412>we're <00:00:05.539>ready <00:00:05.666>for <00:00:05.794>our <00:00:05.921>next <00:00:06.048>talk. <00:00:06.175>Uh, <00:00:06.303>my <00:00:06.430>name <00:00:06.557>is <00:00:06.685>Rowdy.

3
00:00:09.245 --> 00:00:10.345
<00:00:09.245>I'm <00:00:09.443>from <00:00:09.641>the <00:00:09.839>Netherlands. <00:00:10.037>There <00:00:10.235>are

4
00:00:10.345 --> 00:00:11.465
<00:00:10.345>still <00:00:10.597>some <00:00:10.849>STR <00:00:11.101>offers <00:00:11.353>here.

5
00:00:11.465 --> 00:00:13.185
<00:00:11.465>If <00:00:11.665>you <00:00:11.865>weren't <00:00:12.065>here <00:00:12.265>at <00:00:12.465>the <00:00:12.665>first <00:00:12.865>talk

6
00:00:13.955 --> 00:00:15.945
<00:00:13.955>after <00:00:14.235>this <00:00:14.515>one, <00:00:14.795>grab <00:00:15.075>a <00:00:15.355>Stroop.

7
00:00:15.945 --> 00:00:18.825
<00:00:15.945>Awful. <00:00:16.178>Um, <00:00:16.411>our <00:00:16.645>next <00:00:16.878>speaker <00:00:17.111>is <00:00:17.345>Peter.

8
00:00:18.975 --> 00:00:21.665
<00:00:18.975>He's <00:00:19.091>from <00:00:19.208>Kil <00:00:19.325>in <00:00:19.441>Germany. <00:00:19.558>Uh, <00:00:19.675>and <00:00:19.791>I <00:00:19.908>had <00:00:20.025>to <00:00:20.141>look <00:00:20.258>it <00:00:20.375>up.

9
00:00:21.935 --> 00:00:24.225
<00:00:21.935>It's <00:00:22.110>a <00:00:22.285>port, <00:00:22.459>uh, <00:00:22.634>port <00:00:22.810>C <00:00:22.985>north <00:00:23.160>of <00:00:23.334>Hamburg.

10
00:00:24.665 --> 00:00:25.745
<00:00:24.665>I <00:00:24.908>have <00:00:25.151>learned <00:00:25.394>something <00:00:25.637>today.

11
00:00:26.325 --> 00:00:28.865
<00:00:26.325>Uh, <00:00:26.605>he <00:00:26.884>is, <00:00:27.165>uh, <00:00:27.445>a <00:00:27.724>trainer

12
00:00:28.885 --> 00:00:32.025
<00:00:28.885>and <00:00:29.085>consultant <00:00:29.285>for <00:00:29.485>JavaScripts, <00:00:29.685>HTML <00:00:29.885>five <00:00:30.085>React, <00:00:30.285>TypeScript,

13
00:00:32.025 --> 00:00:33.825
<00:00:32.025>and <00:00:32.375>other <00:00:32.725>amazing <00:00:33.074>web <00:00:33.425>technologies.

14
00:00:34.845 --> 00:00:38.425
<00:00:34.845>In <00:00:35.000>2010 <00:00:35.156>already, <00:00:35.311>he <00:00:35.467>wrote <00:00:35.622>an <00:00:35.778>HTML <00:00:35.933>five <00:00:36.089>book, <00:00:36.245>uh,

15
00:00:38.425 --> 00:00:40.425
<00:00:38.425>that <00:00:38.705>was <00:00:38.985>called <00:00:39.265>Website <00:00:39.544>and <00:00:39.824>Innovative.

16
00:00:43.095 --> 00:00:44.585
<00:00:43.095>It's <00:00:43.430>a <00:00:43.765>German <00:00:44.100>book. <00:00:44.436>Yeah.

17
00:00:45.005 --> 00:00:47.865
<00:00:45.005>And <00:00:45.145>he's <00:00:45.285>also <00:00:45.425>the <00:00:45.565>host <00:00:45.705>of <00:00:45.845>Working <00:00:45.985>Draft, <00:00:46.125>a <00:00:46.265>weekly <00:00:46.405>podcast

18
00:00:48.125 --> 00:00:50.865
<00:00:48.125>for <00:00:48.325>web <00:00:48.525>designers <00:00:48.725>and <00:00:48.925>developers <00:00:49.125>also <00:00:49.325>in <00:00:49.525>German.

19
00:00:51.925 --> 00:00:55.665
<00:00:51.925>And <00:00:52.052>you <00:00:52.179>can, <00:00:52.306>uh, <00:00:52.434>find <00:00:52.561>him <00:00:52.688>on <00:00:52.815>social <00:00:52.943>media <00:00:53.070>as <00:00:53.197>Sir <00:00:53.324>Pepper.

20
00:00:55.805 --> 00:00:58.265
<00:00:55.805>You <00:00:55.945>have <00:00:56.085>to <00:00:56.225>ask <00:00:56.365>him <00:00:56.505>later <00:00:56.644>why <00:00:56.785>he's <00:00:56.925>called <00:00:57.065>Sir <00:00:57.205>Pepper.

21
00:00:58.385 --> 00:01:01.785
<00:00:58.385>I <00:00:58.512>dunno. <00:00:58.639>But <00:00:58.766>we're <00:00:58.894>gonna <00:00:59.021>find <00:00:59.148>out <00:00:59.275>at <00:00:59.403>some <00:00:59.530>point. <00:00:59.657>All <00:00:59.785>right.

22
00:01:01.845 --> 00:01:04.065
<00:01:01.845>His <00:01:02.045>talk <00:01:02.245>is <00:01:02.445>called <00:01:02.644>Defeat <00:01:02.845>the <00:01:03.045>Legacy <00:01:03.245>Monster.

23
00:01:04.915 --> 00:01:06.865
<00:01:04.915>Golia <00:01:05.195>are <00:01:05.475>refactoring <00:01:05.755>with <00:01:06.035>web <00:01:06.315>standards,

24
00:01:07.525 --> 00:01:10.905
<00:01:07.525>and <00:01:07.680>I <00:01:07.836>know <00:01:07.991>I <00:01:08.147>had <00:01:08.302>to <00:01:08.458>deal <00:01:08.613>with <00:01:08.769>some, <00:01:08.925>uh,

25
00:01:10.965 --> 00:01:15.425
<00:01:10.965>rotten <00:01:11.120>old <00:01:11.276>legacy <00:01:11.431>web <00:01:11.587>frontend <00:01:11.742>code <00:01:11.898>in <00:01:12.053>my <00:01:12.209>career, <00:01:12.365>probably

26
00:01:15.425 --> 00:01:17.585
<00:01:15.425>because <00:01:15.625>I <00:01:15.825>created <00:01:16.024>it <00:01:16.225>five <00:01:16.425>years <00:01:16.625>when <00:01:16.825>I

27
00:01:17.585 --> 00:01:18.825
<00:01:17.585>was <00:01:17.864>already <00:01:18.143>in <00:01:18.422>the <00:01:18.701>project.

28
00:01:19.565 --> 00:01:21.425
<00:01:19.565>And <00:01:19.845>Peter <00:01:20.125>will <00:01:20.405>tell <00:01:20.685>you <00:01:20.965>how

29
00:01:21.565 --> 00:01:24.825
<00:01:21.565>and <00:01:21.705>why <00:01:21.845>web <00:01:21.985>standards <00:01:22.125>can <00:01:22.265>be <00:01:22.405>used <00:01:22.545>to <00:01:22.685>refactor <00:01:22.825>those, <00:01:22.965>uh,

30
00:01:25.835 --> 00:01:27.465
<00:01:25.835>those <00:01:26.301>legacy <00:01:26.768>web <00:01:27.235>projects.

31
00:01:28.565 --> 00:01:30.745
<00:01:28.565>So <00:01:28.740>let's, <00:01:28.914>uh, <00:01:29.090>give <00:01:29.265>it <00:01:29.440>up <00:01:29.615>for <00:01:29.789>Peter, <00:01:29.965>please.

32
00:01:51.525 --> 00:01:53.015
<00:01:51.525>Okay, <00:01:52.195>good <00:01:52.866>morning

33
00:01:53.315 --> 00:01:57.175
<00:01:53.315>and <00:01:53.548>welcome <00:01:53.781>to <00:01:54.015>refactoring <00:01:54.248>with <00:01:54.481>web <00:01:54.715>standards

34
00:01:57.895 --> 00:01:59.415
<00:01:57.895>re <00:01:58.237>refactoring <00:01:58.579>with <00:01:58.920>web <00:01:59.262>standards.

35
00:02:01.415 --> 00:02:05.055
<00:02:01.415>So <00:02:01.648>this <00:02:01.881>giant <00:02:02.115>conference, <00:02:02.348>hundreds <00:02:02.581>of <00:02:02.815>talks,

36
00:02:05.195 --> 00:02:08.575
<00:02:05.195>and <00:02:05.369>you <00:02:05.544>decide <00:02:05.720>to <00:02:05.895>concern <00:02:06.070>yourselves <00:02:06.244>with <00:02:06.419>legacy <00:02:06.595>projects.

37
00:02:08.995 --> 00:02:11.375
<00:02:08.995>That's <00:02:09.195>a <00:02:09.395>choice. <00:02:09.595>Okay, <00:02:09.795>but <00:02:09.995>let's <00:02:10.195>do <00:02:10.395>this.

38
00:02:11.875 --> 00:02:14.255
<00:02:11.875>So <00:02:12.108>you <00:02:12.341>probably <00:02:12.575>know <00:02:12.808>this <00:02:13.041>guy, <00:02:13.275>right?

39
00:02:15.045 --> 00:02:18.415
<00:02:15.045>This <00:02:15.184>is <00:02:15.325>a <00:02:15.464>legacy <00:02:15.605>web <00:02:15.744>project, <00:02:15.885>an <00:02:16.024>ugly <00:02:16.165>ball <00:02:16.304>of <00:02:16.445>spaghetti,

40
00:02:19.335 --> 00:02:21.815
<00:02:19.335>a <00:02:19.568>bunch <00:02:19.801>of <00:02:20.035>ancient <00:02:20.268>technologies, <00:02:20.501>bad <00:02:20.735>patterns,

41
00:02:22.035 --> 00:02:25.295
<00:02:22.035>old <00:02:22.190>frameworks, <00:02:22.346>and <00:02:22.501>generally <00:02:22.657>a <00:02:22.812>big <00:02:22.968>pain <00:02:23.123>to <00:02:23.279>be <00:02:23.435>around.

42
00:02:25.915 --> 00:02:29.495
<00:02:25.915>And <00:02:26.022>we <00:02:26.130>are <00:02:26.238>going <00:02:26.345>to <00:02:26.453>talk <00:02:26.561>a <00:02:26.668>bit <00:02:26.776>about <00:02:26.884>how <00:02:26.991>we <00:02:27.099>can <00:02:27.207>maybe, <00:02:27.315>um,

43
00:02:30.405 --> 00:02:33.815
<00:02:30.405>deal <00:02:30.605>with, <00:02:30.805>uh, <00:02:31.005>Carl <00:02:31.205>here <00:02:31.405>using <00:02:31.605>web <00:02:31.805>standards

44
00:02:33.915 --> 00:02:35.775
<00:02:33.915>and <00:02:34.195>a <00:02:34.475>bit <00:02:34.755>of <00:02:35.035>career <00:02:35.315>warfare.

45
00:02:36.145 --> 00:02:38.535
<00:02:36.145>Let's <00:02:36.378>be <00:02:36.611>honest. <00:02:36.845>So <00:02:37.078>you <00:02:37.311>already <00:02:37.545>heard

46
00:02:38.535 --> 00:02:40.015
<00:02:38.535>everything <00:02:38.978>important <00:02:39.423>about <00:02:39.867>me.

47
00:02:40.035 --> 00:02:41.655
<00:02:40.035>Hi, <00:02:40.315>I'm <00:02:40.595>Peter. <00:02:40.875>I <00:02:41.155>do <00:02:41.435>talks

48
00:02:41.655 --> 00:02:44.655
<00:02:41.655>and <00:02:41.855>workshops <00:02:42.055>about <00:02:42.255>web <00:02:42.455>technologies, <00:02:42.655>mostly <00:02:42.855>web <00:02:43.055>standards,

49
00:02:44.655 --> 00:02:47.295
<00:02:44.655>not <00:02:44.830>so <00:02:45.005>much <00:02:45.180>frameworks <00:02:45.355>and <00:02:45.530>libraries <00:02:45.705>and <00:02:45.880>so <00:02:46.055>on.

50
00:02:47.615 --> 00:02:49.615
<00:02:47.615>I <00:02:47.965>don't <00:02:48.315>regurgitate, <00:02:48.665>uh, <00:02:49.015>documentation.

51
00:02:49.775 --> 00:02:52.895
<00:02:49.775>I <00:02:49.902>tell <00:02:50.029>you <00:02:50.156>how <00:02:50.284>the <00:02:50.411>sausage <00:02:50.538>is <00:02:50.665>really <00:02:50.793>made <00:02:50.920>down <00:02:51.047>in <00:02:51.175>the

52
00:02:52.895 --> 00:02:54.935
<00:02:52.895>browser <00:02:53.050>as <00:02:53.206>close <00:02:53.361>to <00:02:53.517>the <00:02:53.672>metal <00:02:53.828>as <00:02:53.983>you <00:02:54.139>can <00:02:54.295>be.

53
00:02:55.565 --> 00:02:57.775
<00:02:55.565>Okay? <00:02:55.740>And <00:02:55.915>today <00:02:56.090>we <00:02:56.265>are <00:02:56.440>going <00:02:56.615>to <00:02:56.790>talk <00:02:56.965>about

54
00:02:58.865 --> 00:03:01.925
<00:02:58.865>legacy <00:02:59.065>web <00:02:59.265>projects <00:02:59.465>from <00:02:59.665>a <00:02:59.865>software <00:03:00.065>development <00:03:00.265>perspective

55
00:03:01.945 --> 00:03:04.685
<00:03:01.945>and <00:03:02.100>how <00:03:02.256>we <00:03:02.411>can <00:03:02.567>deal <00:03:02.722>with <00:03:02.878>them <00:03:03.033>using <00:03:03.189>web <00:03:03.345>standards.

56
00:03:05.225 --> 00:03:08.045
<00:03:05.225>Now, <00:03:05.400>there's <00:03:05.575>many <00:03:05.750>ways <00:03:05.924>in <00:03:06.100>which <00:03:06.275>a <00:03:06.450>legacy <00:03:06.625>web

57
00:03:08.045 --> 00:03:09.325
<00:03:08.045>project <00:03:08.428>can <00:03:08.813>be <00:03:09.197>broken.

58
00:03:09.905 --> 00:03:11.405
<00:03:09.905>Um, <00:03:10.097>there <00:03:10.290>are <00:03:10.483>some <00:03:10.676>that <00:03:10.869>can <00:03:11.062>be <00:03:11.255>fixed

59
00:03:11.405 --> 00:03:12.685
<00:03:11.405>with <00:03:11.981>software <00:03:12.557>engineering

60
00:03:12.905 --> 00:03:14.485
<00:03:12.905>and <00:03:13.138>somewhere <00:03:13.371>this <00:03:13.605>is <00:03:13.838>not <00:03:14.071>the <00:03:14.305>case.

61
00:03:14.985 --> 00:03:18.085
<00:03:14.985>You <00:03:15.140>probably <00:03:15.296>know <00:03:15.451>in <00:03:15.607>which <00:03:15.762>situation <00:03:15.918>you <00:03:16.073>are <00:03:16.229>in, <00:03:16.385>right?

62
00:03:18.525 --> 00:03:21.765
<00:03:18.525>I <00:03:18.700>mean, <00:03:18.875>there's <00:03:19.050>legacy <00:03:19.225>projects <00:03:19.400>that <00:03:19.575>are <00:03:19.750>broken <00:03:19.925>thanks

63
00:03:21.785 --> 00:03:24.165
<00:03:21.785>to <00:03:22.065>software, <00:03:22.345>and <00:03:22.625>there's <00:03:22.905>legacy <00:03:23.185>projects

64
00:03:24.165 --> 00:03:25.965
<00:03:24.165>that <00:03:24.398>are <00:03:24.631>broken <00:03:24.864>thanks <00:03:25.098>to <00:03:25.331>something <00:03:25.565>else

65
00:03:27.155 --> 00:03:30.245
<00:03:27.155>like <00:03:27.310>your <00:03:27.466>entire <00:03:27.621>company <00:03:27.777>being <00:03:27.932>a <00:03:28.088>legacy <00:03:28.243>project <00:03:28.399>in <00:03:28.555>itself.

66
00:03:30.605 --> 00:03:32.685
<00:03:30.605>A <00:03:30.885>legacy <00:03:31.165>project <00:03:31.445>where, <00:03:31.725>you <00:03:32.005>know,

67
00:03:32.755 --> 00:03:36.325
<00:03:32.755>your <00:03:32.930>software <00:03:33.105>is <00:03:33.280>simply <00:03:33.454>a <00:03:33.630>symptom <00:03:33.805>of <00:03:33.980>this <00:03:34.155>broken.

68
00:03:38.025 --> 00:03:41.525
<00:03:38.025>That's <00:03:38.180>a <00:03:38.336>bit <00:03:38.491>stretchy, <00:03:38.647>not <00:03:38.802>supposed <00:03:38.958>to <00:03:39.113>look <00:03:39.269>like <00:03:39.425>that,

69
00:03:41.545 --> 00:03:44.695
<00:03:41.545>but <00:03:41.778>nevermind, <00:03:42.011>you <00:03:42.245>get <00:03:42.478>the <00:03:42.711>idea, <00:03:42.945>right?

70
00:03:44.955 --> 00:03:48.295
<00:03:44.954>If <00:03:45.082>this <00:03:45.209>is <00:03:45.336>you, <00:03:45.464>I <00:03:45.591>mean, <00:03:45.718>not <00:03:45.845>that <00:03:45.973>you <00:03:46.100>look <00:03:46.227>like <00:03:46.355>this,

71
00:03:48.315 --> 00:03:49.335
<00:03:48.315>you, <00:03:48.544>you <00:03:48.774>get <00:03:49.003>the <00:03:49.233>idea.

72
00:03:49.875 --> 00:03:51.775
<00:03:49.875>If <00:03:50.050>you <00:03:50.225>are <00:03:50.400>in <00:03:50.575>this <00:03:50.750>situation, <00:03:50.925>you <00:03:51.100>go <00:03:51.275>talk

73
00:03:51.775 --> 00:03:54.335
<00:03:51.775>to <00:03:51.915>anyone <00:03:52.055>out <00:03:52.195>there <00:03:52.335>who <00:03:52.475>wants <00:03:52.615>to <00:03:52.755>offer <00:03:52.895>you <00:03:53.035>a <00:03:53.175>job,

74
00:03:54.555 --> 00:03:57.815
<00:03:54.555>and <00:03:54.682>then <00:03:54.809>your <00:03:54.936>legacy <00:03:55.064>project <00:03:55.191>is <00:03:55.318>soft <00:03:55.445>for <00:03:55.573>you <00:03:55.700>in <00:03:55.827>this <00:03:55.955>way

75
00:03:57.815 --> 00:04:00.015
<00:03:57.815>and <00:03:57.954>you <00:03:58.095>don't <00:03:58.234>need <00:03:58.375>to <00:03:58.515>deal <00:03:58.655>with <00:03:58.795>code <00:03:58.935>or <00:03:59.075>anything <00:03:59.215>else.

76
00:04:00.805 --> 00:04:02.295
<00:04:00.805>Okay? <00:04:01.140>But <00:04:01.475>let's <00:04:01.810>be <00:04:02.146>real.

77
00:04:02.675 --> 00:04:05.535
<00:04:02.675>How <00:04:02.830>do <00:04:02.986>legacy <00:04:03.141>projects <00:04:03.297>get <00:04:03.452>so <00:04:03.608>broken <00:04:03.763>as <00:04:03.919>they <00:04:04.075>are?

78
00:04:06.355 --> 00:04:07.605
<00:04:06.355>Well, <00:04:06.730>my <00:04:07.105>theory <00:04:07.480>is

79
00:04:07.605 --> 00:04:09.725
<00:04:07.605>that <00:04:07.744>this <00:04:07.885>is <00:04:08.024>simply <00:04:08.165>a <00:04:08.304>matter <00:04:08.445>of <00:04:08.584>the <00:04:08.725>march <00:04:08.864>of <00:04:09.005>time.

80
00:04:10.385 --> 00:04:13.525
<00:04:10.385>Um, <00:04:10.524>no <00:04:10.665>one <00:04:10.804>sets <00:04:10.945>out <00:04:11.084>to <00:04:11.225>build <00:04:11.364>an <00:04:11.505>unmaintainable <00:04:11.644>legacy <00:04:11.785>mess,

81
00:04:13.785 --> 00:04:14.885
<00:04:13.785>but <00:04:14.115>this <00:04:14.445>just <00:04:14.774>happens.

82
00:04:15.345 --> 00:04:17.685
<00:04:15.345>And <00:04:15.520>to <00:04:15.695>a <00:04:15.870>certain <00:04:16.045>extent, <00:04:16.220>there's <00:04:16.394>not <00:04:16.570>much <00:04:16.745>yet

83
00:04:17.685 --> 00:04:20.445
<00:04:17.685>that <00:04:17.825>you <00:04:17.964>can <00:04:18.105>do <00:04:18.245>about <00:04:18.385>it <00:04:18.524>because <00:04:18.665>when <00:04:18.805>you <00:04:18.945>decide <00:04:19.084>on

84
00:04:20.445 --> 00:04:23.125
<00:04:20.445>technologies <00:04:20.584>and <00:04:20.724>when <00:04:20.865>you <00:04:21.005>decide <00:04:21.144>on <00:04:21.284>patterns <00:04:21.425>on <00:04:21.565>how <00:04:21.704>to <00:04:21.844>work

85
00:04:23.355 --> 00:04:25.725
<00:04:23.355>with <00:04:23.555>your <00:04:23.755>project, <00:04:23.955>you <00:04:24.155>decide <00:04:24.355>on <00:04:24.555>a <00:04:24.755>framework.

86
00:04:25.915 --> 00:04:29.205
<00:04:25.915>This <00:04:26.115>framework <00:04:26.315>is <00:04:26.515>not <00:04:26.715>necessarily <00:04:26.915>software <00:04:27.115>in <00:04:27.315>itself,

87
00:04:29.465 --> 00:04:32.485
<00:04:29.465>but <00:04:29.620>just <00:04:29.776>the <00:04:29.931>general <00:04:30.087>way <00:04:30.242>of <00:04:30.398>going <00:04:30.553>about <00:04:30.709>doing <00:04:30.864>things.

88
00:04:33.065 --> 00:04:35.725
<00:04:33.065>And <00:04:33.220>if <00:04:33.376>you <00:04:33.531>decide <00:04:33.687>on <00:04:33.842>patterns, <00:04:33.998>on <00:04:34.153>frameworks, <00:04:34.309>on <00:04:34.465>tools,

89
00:04:35.745 --> 00:04:38.645
<00:04:35.745>on <00:04:35.945>software, <00:04:36.145>you <00:04:36.345>could <00:04:36.545>work <00:04:36.745>with <00:04:36.945>incomplete <00:04:37.145>information.

90
00:04:38.665 --> 00:04:40.205
<00:04:38.665>You <00:04:38.863>don't <00:04:39.061>know <00:04:39.259>what <00:04:39.457>the <00:04:39.655>future <00:04:39.853>will <00:04:40.051>bring,

91
00:04:40.345 --> 00:04:42.685
<00:04:40.345>how <00:04:40.500>the <00:04:40.656>company <00:04:40.811>will <00:04:40.967>change, <00:04:41.122>how <00:04:41.278>your <00:04:41.433>goals <00:04:41.589>will <00:04:41.745>change,

92
00:04:42.945 --> 00:04:44.485
<00:04:42.945>how <00:04:43.176>the <00:04:43.407>software <00:04:43.638>is <00:04:43.869>going <00:04:44.100>to <00:04:44.331>support.

93
00:04:44.785 --> 00:04:47.085
<00:04:44.784>So <00:04:44.960>whatever <00:04:45.135>you <00:04:45.309>do, <00:04:45.484>whatever <00:04:45.659>you <00:04:45.835>decide <00:04:46.010>on <00:04:46.184>tooling,

94
00:04:47.085 --> 00:04:49.165
<00:04:47.085>on <00:04:47.364>software, <00:04:47.645>on <00:04:47.924>patterns, <00:04:48.205>it's <00:04:48.484>going

95
00:04:49.165 --> 00:04:51.125
<00:04:49.165>to <00:04:49.365>break <00:04:49.565>in <00:04:49.765>some <00:04:49.965>way <00:04:50.165>in <00:04:50.365>the <00:04:50.565>future.

96
00:04:51.315 --> 00:04:52.805
<00:04:51.315>There's <00:04:51.538>nothing <00:04:51.762>you <00:04:51.985>can <00:04:52.209>do <00:04:52.432>about <00:04:52.656>it.

97
00:04:52.945 --> 00:04:54.245
<00:04:52.945>You <00:04:53.140>just <00:04:53.335>have <00:04:53.530>to <00:04:53.725>deal <00:04:53.920>with <00:04:54.115>it.

98
00:04:54.625 --> 00:04:58.045
<00:04:54.625>The <00:04:54.741>best <00:04:54.858>way <00:04:54.975>to <00:04:55.091>deal <00:04:55.208>with <00:04:55.325>it <00:04:55.441>is <00:04:55.558>of <00:04:55.675>course, <00:04:55.791>to <00:04:55.908>do <00:04:56.025>maintenance

99
00:04:58.185 --> 00:05:00.285
<00:04:58.185>and <00:04:58.418>to <00:04:58.651>keep <00:04:58.885>technical <00:04:59.118>debt <00:04:59.351>in <00:04:59.585>check.

100
00:05:00.585 --> 00:05:03.005
<00:05:00.585>But <00:05:00.784>we <00:05:00.984>all <00:05:01.185>know <00:05:01.385>how <00:05:01.585>this <00:05:01.784>works, <00:05:01.984>right?

101
00:05:03.515 --> 00:05:05.285
<00:05:03.515>Sometimes <00:05:04.215>better, <00:05:04.914>most

102
00:05:05.285 --> 00:05:06.845
<00:05:05.285>of <00:05:05.518>the <00:05:05.751>time <00:05:05.985>there's <00:05:06.218>more <00:05:06.451>important <00:05:06.685>things

103
00:05:06.845 --> 00:05:08.165
<00:05:06.845>to <00:05:07.142>do <00:05:07.439>than <00:05:07.736>just <00:05:08.033>maintenance,

104
00:05:08.745 --> 00:05:11.085
<00:05:08.745>and <00:05:08.920>then <00:05:09.095>we <00:05:09.270>end <00:05:09.445>up <00:05:09.620>with <00:05:09.795>a <00:05:09.970>broken <00:05:10.145>project.

105
00:05:12.625 --> 00:05:15.605
<00:05:12.625>But <00:05:12.800>this <00:05:12.975>broken <00:05:13.150>project, <00:05:13.325>um, <00:05:13.500>in <00:05:13.675>my <00:05:13.850>view, <00:05:14.025>needs

106
00:05:15.605 --> 00:05:19.045
<00:05:15.605>to <00:05:15.732>be <00:05:15.859>considered <00:05:15.986>as <00:05:16.114>a <00:05:16.241>special <00:05:16.368>case <00:05:16.495>of <00:05:16.623>software <00:05:16.750>that <00:05:16.877>we <00:05:17.005>work

107
00:05:19.045 --> 00:05:22.285
<00:05:19.045>with <00:05:19.245>because <00:05:19.445>a <00:05:19.645>truly <00:05:19.845>unmaintainable <00:05:20.045>project, <00:05:20.245>a <00:05:20.445>project

108
00:05:22.305 --> 00:05:25.085
<00:05:22.305>that's <00:05:22.480>broken <00:05:22.655>beyond <00:05:22.830>repair <00:05:23.005>is <00:05:23.180>not <00:05:23.355>just <00:05:23.530>a <00:05:23.705>bunch

109
00:05:25.085 --> 00:05:27.645
<00:05:25.085>of <00:05:25.224>broken <00:05:25.364>software <00:05:25.505>that <00:05:25.645>you <00:05:25.784>just <00:05:25.924>have <00:05:26.065>to <00:05:26.205>deal <00:05:26.344>with <00:05:26.484>it,

110
00:05:27.945 --> 00:05:29.005
<00:05:27.945>but <00:05:28.421>I <00:05:28.899>believe

111
00:05:29.005 --> 00:05:31.725
<00:05:29.005>that <00:05:29.205>software <00:05:29.405>like <00:05:29.605>this <00:05:29.805>is <00:05:30.005>actually <00:05:30.205>your <00:05:30.405>enemy.

112
00:05:33.405 --> 00:05:35.945
<00:05:33.405>And <00:05:33.580>it's <00:05:33.755>maybe <00:05:33.929>even <00:05:34.104>worth <00:05:34.280>worse <00:05:34.455>than <00:05:34.630>an <00:05:34.804>enemy

113
00:05:35.945 --> 00:05:38.785
<00:05:35.945>because <00:05:36.178>it <00:05:36.411>not <00:05:36.645>only <00:05:36.878>fights <00:05:37.111>against <00:05:37.344>change,

114
00:05:39.165 --> 00:05:41.905
<00:05:39.165>but <00:05:39.281>if <00:05:39.398>you <00:05:39.515>work <00:05:39.631>on <00:05:39.748>the <00:05:39.865>project <00:05:39.981>once <00:05:40.098>it's <00:05:40.215>gotten <00:05:40.331>to <00:05:40.448>a <00:05:40.565>state

115
00:05:41.905 --> 00:05:44.545
<00:05:41.905>where <00:05:42.080>it's <00:05:42.255>beyond <00:05:42.429>repair, <00:05:42.604>where <00:05:42.780>you <00:05:42.955>can <00:05:43.130>never <00:05:43.304>even

116
00:05:45.135 --> 00:05:47.465
<00:05:45.135>turn <00:05:45.335>it <00:05:45.534>into <00:05:45.735>something <00:05:45.935>reasonable <00:05:46.135>in <00:05:46.335>the <00:05:46.534>future,

117
00:05:47.885 --> 00:05:49.865
<00:05:47.885>you <00:05:48.164>actually <00:05:48.445>make <00:05:48.724>your <00:05:49.005>enemy <00:05:49.284>stronger

118
00:05:49.865 --> 00:05:53.385
<00:05:49.865>because <00:05:49.992>you <00:05:50.119>add <00:05:50.246>to <00:05:50.374>it, <00:05:50.501>you <00:05:50.628>add <00:05:50.755>more <00:05:50.883>features, <00:05:51.010>you <00:05:51.137>get <00:05:51.265>it

119
00:05:53.385 --> 00:05:54.785
<00:05:53.385>to <00:05:53.594>work <00:05:53.805>just <00:05:54.015>a <00:05:54.224>little <00:05:54.434>bit <00:05:54.645>better.

120
00:05:55.245 --> 00:05:58.645
<00:05:55.245>And <00:05:55.400>if, <00:05:55.556>if <00:05:55.711>the <00:05:55.867>software <00:05:56.022>survives <00:05:56.178>for <00:05:56.333>a <00:05:56.489>long <00:05:56.645>amount,

121
00:05:58.665 --> 00:06:01.045
<00:05:58.665>longer <00:05:58.898>period <00:05:59.131>of <00:05:59.365>time, <00:05:59.598>it <00:05:59.831>gets <00:06:00.065>more

122
00:06:01.045 --> 00:06:02.925
<00:06:01.045>and <00:06:01.325>more <00:06:01.605>integral <00:06:01.885>to <00:06:02.165>your <00:06:02.445>company.

123
00:06:03.685 --> 00:06:06.645
<00:06:03.685>I <00:06:03.860>mean, <00:06:04.035>you <00:06:04.210>can't <00:06:04.385>just <00:06:04.560>replace <00:06:04.735>most <00:06:04.910>legacy <00:06:05.085>projects

124
00:06:06.645 --> 00:06:08.165
<00:06:06.645>because <00:06:06.918>they <00:06:07.192>are <00:06:07.465>just <00:06:07.739>too <00:06:08.013>important.

125
00:06:08.505 --> 00:06:10.085
<00:06:08.505>You <00:06:08.855>can't <00:06:09.205>simply <00:06:09.555>rewrite <00:06:09.905>them

126
00:06:10.085 --> 00:06:12.605
<00:06:10.085>because <00:06:10.318>they <00:06:10.551>are <00:06:10.784>simply <00:06:11.018>just <00:06:11.251>too <00:06:11.484>large.

127
00:06:12.905 --> 00:06:15.285
<00:06:12.905>And <00:06:13.080>if <00:06:13.255>you <00:06:13.429>add <00:06:13.604>to <00:06:13.780>this <00:06:13.955>already <00:06:14.130>large <00:06:14.304>monster,

128
00:06:15.785 --> 00:06:17.245
<00:06:15.785>you <00:06:16.047>just <00:06:16.310>make <00:06:16.573>the <00:06:16.836>problem <00:06:17.099>worse.

129
00:06:18.065 --> 00:06:21.125
<00:06:18.065>So <00:06:18.265>we <00:06:18.465>need <00:06:18.665>to <00:06:18.865>rethink <00:06:19.065>how <00:06:19.265>we <00:06:19.465>relate

130
00:06:21.225 --> 00:06:22.525
<00:06:21.225>to <00:06:21.517>our <00:06:21.810>legacy <00:06:22.102>web <00:06:22.395>project.

131
00:06:22.945 --> 00:06:25.725
<00:06:22.945>Our <00:06:23.085>legacy <00:06:23.224>web <00:06:23.365>project <00:06:23.505>is <00:06:23.645>not <00:06:23.784>simply <00:06:23.925>a <00:06:24.065>bunch <00:06:24.205>of <00:06:24.344>software,

132
00:06:25.805 --> 00:06:28.365
<00:06:25.805>a <00:06:25.980>bunch <00:06:26.155>of <00:06:26.330>tools, <00:06:26.505>but <00:06:26.680>it's <00:06:26.855>actually <00:06:27.030>a <00:06:27.205>monster.

133
00:06:29.065 --> 00:06:30.605
<00:06:29.065>Now, <00:06:29.527>I'm <00:06:29.989>not <00:06:30.451>suggesting

134
00:06:30.605 --> 00:06:33.125
<00:06:30.605>that <00:06:30.838>your <00:06:31.071>legacy <00:06:31.305>web <00:06:31.538>project <00:06:31.771>is <00:06:32.005>sentient.

135
00:06:33.685 --> 00:06:35.405
<00:06:33.685>I <00:06:33.885>mean, <00:06:34.085>unless <00:06:34.285>you <00:06:34.485>work <00:06:34.685>on <00:06:34.885>an <00:06:35.085>ai,

136
00:06:35.465 --> 00:06:36.965
<00:06:35.465>in <00:06:35.735>which <00:06:36.005>case <00:06:36.275>I <00:06:36.545>don't <00:06:36.815>know.

137
00:06:37.425 --> 00:06:41.365
<00:06:37.425>But <00:06:37.600>in <00:06:37.775>general, <00:06:37.950>your <00:06:38.125>web <00:06:38.300>project <00:06:38.475>doesn't <00:06:38.650>really <00:06:38.825>exist

138
00:06:41.475 --> 00:06:42.885
<00:06:41.475>with <00:06:41.728>a <00:06:41.982>goal <00:06:42.236>to <00:06:42.490>hurt <00:06:42.744>you.

139
00:06:43.185 --> 00:06:44.685
<00:06:43.185>It <00:06:43.455>just <00:06:43.725>happens <00:06:43.995>to <00:06:44.265>hurt <00:06:44.535>you.

140
00:06:45.025 --> 00:06:46.645
<00:06:45.025>And <00:06:45.258>this <00:06:45.491>is <00:06:45.724>totally <00:06:45.958>in <00:06:46.191>the <00:06:46.424>realm

141
00:06:46.645 --> 00:06:48.325
<00:06:46.645>of <00:06:46.995>possibility, <00:06:47.344>things <00:06:47.695>that <00:06:48.044>hurt.

142
00:06:48.325 --> 00:06:51.085
<00:06:48.325>You <00:06:48.500>don't <00:06:48.675>need <00:06:48.849>to <00:06:49.025>be <00:06:49.200>engineered <00:06:49.375>to <00:06:49.550>hurt <00:06:49.724>you.

143
00:06:51.525 --> 00:06:53.205
<00:06:51.525>I <00:06:51.700>mean, <00:06:51.875>I <00:06:52.049>can <00:06:52.224>take <00:06:52.400>this <00:06:52.575>glass <00:06:52.750>of <00:06:52.924>water

144
00:06:53.225 --> 00:06:54.245
<00:06:53.225>and <00:06:53.408>throw <00:06:53.592>it <00:06:53.775>in <00:06:53.959>your <00:06:54.143>face.

145
00:06:54.475 --> 00:06:55.925
<00:06:54.475>This <00:06:54.692>wasn't <00:06:54.910>engineered <00:06:55.127>to <00:06:55.345>be <00:06:55.562>a <00:06:55.780>weapon,

146
00:06:55.945 --> 00:06:57.085
<00:06:55.945>but <00:06:56.091>I <00:06:56.238>can <00:06:56.384>use <00:06:56.531>it <00:06:56.677>as <00:06:56.824>a <00:06:56.971>weapon.

147
00:06:57.945 --> 00:07:00.645
<00:06:57.945>Things <00:06:58.100>don't <00:06:58.256>need <00:06:58.411>to <00:06:58.567>be <00:06:58.722>sentient <00:06:58.878>to <00:06:59.033>be <00:06:59.189>your <00:06:59.344>enemy.

148
00:07:00.995 --> 00:07:03.445
<00:07:00.995>They <00:07:01.150>can <00:07:01.306>simply <00:07:01.461>be <00:07:01.617>machines <00:07:01.772>that <00:07:01.928>work <00:07:02.083>in <00:07:02.239>a <00:07:02.395>way

149
00:07:03.635 --> 00:07:07.285
<00:07:03.635>that <00:07:03.775>hurts <00:07:03.914>you <00:07:04.055>and <00:07:04.195>that <00:07:04.335>might <00:07:04.474>even <00:07:04.615>use <00:07:04.755>you <00:07:04.895>to, <00:07:05.034>um,

150
00:07:07.285 --> 00:07:08.365
<00:07:07.285>further <00:07:07.771>their <00:07:08.257>existence.

151
00:07:08.625 --> 00:07:10.965
<00:07:08.625>If <00:07:08.765>you <00:07:08.905>just <00:07:09.045>maintain <00:07:09.185>the <00:07:09.325>project, <00:07:09.465>if <00:07:09.605>you <00:07:09.745>add <00:07:09.885>to <00:07:10.025>it,

152
00:07:11.185 --> 00:07:12.765
<00:07:11.185>it <00:07:11.465>gets <00:07:11.745>more <00:07:12.025>and <00:07:12.305>more <00:07:12.585>powerful.

153
00:07:14.855 --> 00:07:18.075
<00:07:14.855>If <00:07:15.030>there <00:07:15.205>only <00:07:15.380>was <00:07:15.555>something <00:07:15.730>kind <00:07:15.905>of <00:07:16.080>like <00:07:16.255>this

154
00:07:18.785 --> 00:07:22.875
<00:07:18.785>that <00:07:18.940>everyone <00:07:19.096>in <00:07:19.251>this <00:07:19.407>day <00:07:19.562>and <00:07:19.718>age, <00:07:19.873>um, <00:07:20.029>remembers, <00:07:20.185>right?

155
00:07:25.305 --> 00:07:28.195
<00:07:25.305>This <00:07:25.480>true, <00:07:25.655>this <00:07:25.830>too <00:07:26.005>is <00:07:26.180>not <00:07:26.355>really, <00:07:26.530>I <00:07:26.705>mean,

156
00:07:28.195 --> 00:07:31.075
<00:07:28.195>unless <00:07:28.428>your <00:07:28.661>belief <00:07:28.895>in, <00:07:29.128>uh, <00:07:29.361>conspiracy <00:07:29.594>theories,

157
00:07:31.225 --> 00:07:34.155
<00:07:31.225>this <00:07:31.400>isn't <00:07:31.575>engineered <00:07:31.750>to <00:07:31.925>hurt <00:07:32.100>you, <00:07:32.275>it <00:07:32.450>just <00:07:32.625>happened

158
00:07:34.175 --> 00:07:38.275
<00:07:34.175>to <00:07:34.291>hurt <00:07:34.408>you <00:07:34.525>and <00:07:34.641>it <00:07:34.758>just <00:07:34.875>happened <00:07:34.991>to <00:07:35.108>use <00:07:35.225>you <00:07:35.341>for, <00:07:35.458>um, <00:07:35.575>yeah,

159
00:07:38.335 --> 00:07:40.595
<00:07:38.335>for <00:07:38.801>proliferation <00:07:39.268>purposes, <00:07:39.734>again,

160
00:07:40.865 --> 00:07:43.275
<00:07:40.865>your <00:07:41.020>software <00:07:41.176>doesn't <00:07:41.331>need <00:07:41.487>to <00:07:41.642>be <00:07:41.798>engineered <00:07:41.953>to <00:07:42.109>be <00:07:42.265>evil.

161
00:07:43.415 --> 00:07:44.515
<00:07:43.415>It <00:07:43.662>just <00:07:43.910>can <00:07:44.157>be <00:07:44.405>evil.

162
00:07:44.815 --> 00:07:47.275
<00:07:44.815>And <00:07:45.015>you <00:07:45.215>cannot <00:07:45.415>really <00:07:45.615>guard <00:07:45.815>yourself <00:07:46.015>against <00:07:46.215>this

163
00:07:47.275 --> 00:07:49.915
<00:07:47.275>because <00:07:47.474>the <00:07:47.674>march <00:07:47.875>of <00:07:48.075>time <00:07:48.275>makes, <00:07:48.474>makes <00:07:48.674>patterns

164
00:07:49.915 --> 00:07:52.315
<00:07:49.915>that <00:07:50.195>look <00:07:50.475>reasonable <00:07:50.755>today <00:07:51.035>look <00:07:51.315>less

165
00:07:52.315 --> 00:07:53.395
<00:07:52.315>reasonable <00:07:52.639>in <00:07:52.962>the <00:07:53.287>future.

166
00:07:54.075 --> 00:07:56.315
<00:07:54.075>I <00:07:54.308>mean, <00:07:54.541>take <00:07:54.775>a <00:07:55.008>look <00:07:55.241>at <00:07:55.474>this.

167
00:07:58.365 --> 00:08:01.585
<00:07:58.365>Oh, <00:07:58.598>that's <00:07:58.831>low <00:07:59.065>res <00:07:59.298>that's <00:07:59.531>actually <00:07:59.765>supposed

168
00:08:01.585 --> 00:08:03.665
<00:08:01.585>to <00:08:01.740>look <00:08:01.896>like <00:08:02.051>this <00:08:02.207>because <00:08:02.362>this <00:08:02.518>is <00:08:02.673>the <00:08:02.829>highest <00:08:02.984>resolution

169
00:08:03.665 --> 00:08:04.745
<00:08:03.665>logo <00:08:03.827>that <00:08:03.989>I <00:08:04.151>was <00:08:04.313>able <00:08:04.475>to <00:08:04.637>find.

170
00:08:07.805 --> 00:08:09.895
<00:08:07.805>Okay? <00:08:08.085>So, <00:08:08.365>um, <00:08:08.645>this <00:08:08.925>is <00:08:09.205>ancient

171
00:08:10.595 --> 00:08:13.895
<00:08:10.595>and <00:08:10.722>um, <00:08:10.849>I'm <00:08:10.976>not <00:08:11.104>going <00:08:11.231>to <00:08:11.358>go <00:08:11.485>into, <00:08:11.613>uh, <00:08:11.740>the <00:08:11.867>details <00:08:11.995>of

172
00:08:13.895 --> 00:08:14.935
<00:08:13.895>what <00:08:14.207>this <00:08:14.519>exactly <00:08:14.831>is,

173
00:08:15.075 --> 00:08:18.575
<00:08:15.075>but <00:08:15.191>this <00:08:15.308>is <00:08:15.425>back <00:08:15.541>in <00:08:15.658>the <00:08:15.775>day <00:08:15.891>when <00:08:16.008>XML <00:08:16.125>was <00:08:16.241>all <00:08:16.358>the <00:08:16.474>rage

174
00:08:18.635 --> 00:08:20.895
<00:08:18.635>and <00:08:18.868>you <00:08:19.101>used <00:08:19.335>XML <00:08:19.568>front <00:08:19.801>to <00:08:20.034>back

175
00:08:20.895 --> 00:08:22.535
<00:08:20.895>to <00:08:21.174>describe <00:08:21.455>your <00:08:21.734>entire <00:08:22.015>web <00:08:22.294>application,

176
00:08:22.635 --> 00:08:24.655
<00:08:22.635>you <00:08:22.985>have <00:08:23.335>automatically <00:08:23.685>generated <00:08:24.034>JavaScript.

177
00:08:24.755 --> 00:08:27.615
<00:08:24.755>And <00:08:24.882>generally <00:08:25.009>this <00:08:25.136>is <00:08:25.264>a <00:08:25.391>pain <00:08:25.518>in <00:08:25.645>the <00:08:25.773>butt <00:08:25.900>to <00:08:26.027>work <00:08:26.155>with.

178
00:08:29.345 --> 00:08:32.305
<00:08:29.345>I <00:08:29.545>mean, <00:08:29.745>there's <00:08:29.945>no <00:08:30.145>web <00:08:30.345>development <00:08:30.545>happening, <00:08:30.745>really.

179
00:08:32.445 --> 00:08:35.625
<00:08:32.445>Is <00:08:32.585>there <00:08:32.725>anything <00:08:32.865>that <00:08:33.005>looks <00:08:33.145>like <00:08:33.285>HTML <00:08:33.425>or <00:08:33.565>CSS <00:08:33.705>or <00:08:33.845>JavaScript?

180
00:08:36.415 --> 00:08:41.345
<00:08:36.414>It's <00:08:36.554>all <00:08:36.694>just <00:08:36.834>custom <00:08:36.974>text <00:08:37.115>and <00:08:37.255>a <00:08:37.395>mess <00:08:37.534>of <00:08:37.674>abstracted <00:08:37.814>nonsense.

181
00:08:41.655 --> 00:08:43.225
<00:08:41.655>Kind <00:08:41.829>of <00:08:42.005>looks <00:08:42.179>like <00:08:42.355>reactive <00:08:42.530>if <00:08:42.704>you <00:08:42.880>ask <00:08:43.054>me.

182
00:08:44.645 --> 00:08:48.505
<00:08:44.645>But <00:08:44.819>again, <00:08:44.995>this <00:08:45.170>is <00:08:45.345>just <00:08:45.520>what <00:08:45.694>you <00:08:45.870>end <00:08:46.045>up

183
00:08:48.505 --> 00:08:51.345
<00:08:48.505>with <00:08:48.705>in <00:08:48.905>large <00:08:49.105>legacy <00:08:49.305>projects <00:08:49.505>and <00:08:49.705>large <00:08:49.905>corporations.

184
00:08:51.655 --> 00:08:53.865
<00:08:51.655>Okay? <00:08:51.888>How <00:08:52.121>can <00:08:52.355>we <00:08:52.588>deal <00:08:52.821>with <00:08:53.055>this?

185
00:08:54.135 --> 00:08:57.445
<00:08:54.135>Well, <00:08:54.275>as <00:08:54.415>I <00:08:54.555>already <00:08:54.694>said, <00:08:54.835>we <00:08:54.975>cannot <00:08:55.115>simply <00:08:55.255>work <00:08:55.395>with <00:08:55.535>this

186
00:08:57.445 --> 00:09:00.525
<00:08:57.445>because <00:08:57.678>there's <00:08:57.911>no <00:08:58.145>real <00:08:58.378>web <00:08:58.611>development <00:08:58.845>technique

187
00:09:00.525 --> 00:09:02.205
<00:09:00.525>that <00:09:00.758>we <00:09:00.991>can <00:09:01.225>apply <00:09:01.458>to <00:09:01.691>this <00:09:01.925>monstrosity

188
00:09:02.345 --> 00:09:03.805
<00:09:02.345>and <00:09:02.607>we <00:09:02.870>cannot <00:09:03.133>simply <00:09:03.396>rewrite <00:09:03.659>it

189
00:09:03.805 --> 00:09:05.925
<00:09:03.805>because <00:09:04.005>it's <00:09:04.204>just <00:09:04.405>too <00:09:04.604>big <00:09:04.805>and <00:09:05.005>too <00:09:05.204>important.

190
00:09:06.385 --> 00:09:09.565
<00:09:06.385>So <00:09:06.540>what <00:09:06.696>do <00:09:06.851>we <00:09:07.007>do? <00:09:07.162>Well, <00:09:07.318>if <00:09:07.473>you <00:09:07.629>can't <00:09:07.785>negotiate,

191
00:09:09.625 --> 00:09:12.765
<00:09:09.625>you <00:09:09.825>should <00:09:10.025>maybe <00:09:10.225>declare <00:09:10.425>war <00:09:10.625>like <00:09:10.825>Korea <00:09:11.025>war,

192
00:09:12.765 --> 00:09:15.245
<00:09:12.765>because <00:09:12.965>this <00:09:13.165>is <00:09:13.365>an <00:09:13.564>all, <00:09:13.765>all <00:09:13.965>powerful <00:09:14.165>monster

193
00:09:15.315 --> 00:09:16.365
<00:09:15.315>that <00:09:15.551>wants <00:09:15.787>to <00:09:16.023>fight <00:09:16.260>us.

194
00:09:16.665 --> 00:09:20.085
<00:09:16.665>And <00:09:16.792>maybe <00:09:16.919>taking <00:09:17.046>up <00:09:17.174>the <00:09:17.301>fight <00:09:17.428>is <00:09:17.555>not <00:09:17.683>the <00:09:17.810>worst <00:09:17.937>of <00:09:18.064>ideas.

195
00:09:20.985 --> 00:09:23.525
<00:09:20.985>The <00:09:21.140>important <00:09:21.296>bit <00:09:21.451>is <00:09:21.607>how <00:09:21.762>we <00:09:21.918>think <00:09:22.073>about <00:09:22.229>this <00:09:22.385>monster.

196
00:09:23.915 --> 00:09:25.645
<00:09:23.915>It's <00:09:24.148>not <00:09:24.381>something <00:09:24.615>we <00:09:24.848>work <00:09:25.081>with <00:09:25.314>with,

197
00:09:25.645 --> 00:09:27.805
<00:09:25.645>and <00:09:25.800>it's <00:09:25.956>not <00:09:26.111>even <00:09:26.267>an <00:09:26.422>asset <00:09:26.578>to <00:09:26.733>our <00:09:26.889>company <00:09:27.045>anymore.

198
00:09:28.035 --> 00:09:31.605
<00:09:28.035>It's <00:09:28.175>something <00:09:28.314>that <00:09:28.454>wants <00:09:28.594>to <00:09:28.735>hurt <00:09:28.875>us <00:09:29.015>again, <00:09:29.155>not <00:09:29.295>by <00:09:29.435>itself,

199
00:09:31.705 --> 00:09:33.085
<00:09:31.705>but <00:09:32.119>simply <00:09:32.533>happens <00:09:32.947>to.

200
00:09:33.235 --> 00:09:35.085
<00:09:33.235>Okay, <00:09:33.585>so <00:09:33.935>what's <00:09:34.285>Korea <00:09:34.635>warfare?

201
00:09:35.795 --> 00:09:38.405
<00:09:35.795>Well, <00:09:36.145>it's <00:09:36.495>essentially <00:09:36.844>a <00:09:37.194>war

202
00:09:38.405 --> 00:09:40.725
<00:09:38.405>of <00:09:38.638>attrition <00:09:38.871>ranged <00:09:39.105>on <00:09:39.338>a <00:09:39.571>small <00:09:39.805>scale.

203
00:09:41.225 --> 00:09:44.085
<00:09:41.225>We <00:09:41.400>cannot, <00:09:41.575>for <00:09:41.750>whatever <00:09:41.925>reason <00:09:42.100>replace <00:09:42.275>the <00:09:42.450>entire <00:09:42.625>project.

204
00:09:44.185 --> 00:09:46.565
<00:09:44.185>We <00:09:44.385>cannot <00:09:44.584>refactor <00:09:44.785>it <00:09:44.984>because <00:09:45.185>it's <00:09:45.385>totally <00:09:45.584>unreasonable.

205
00:09:47.425 --> 00:09:51.165
<00:09:47.425>So <00:09:47.564>we <00:09:47.704>have <00:09:47.844>to <00:09:47.984>exhaust <00:09:48.125>it, <00:09:48.265>we <00:09:48.405>have <00:09:48.545>to <00:09:48.685>subvert <00:09:48.824>it.

206
00:09:51.345 --> 00:09:53.285
<00:09:51.345>We <00:09:51.545>have <00:09:51.745>to <00:09:51.945>more <00:09:52.145>or <00:09:52.345>less <00:09:52.545>hack <00:09:52.745>it.

207
00:09:53.705 --> 00:09:55.925
<00:09:53.705>And <00:09:53.905>we <00:09:54.105>can <00:09:54.305>do <00:09:54.505>this <00:09:54.705>with <00:09:54.905>web <00:09:55.105>standards.

208
00:09:56.105 --> 00:09:57.525
<00:09:56.105>And <00:09:56.531>this <00:09:56.957>always <00:09:57.383>works

209
00:09:57.525 --> 00:10:00.485
<00:09:57.525>because <00:09:57.758>there's <00:09:57.991>one <00:09:58.225>giant <00:09:58.458>weakness <00:09:58.691>in <00:09:58.925>every

210
00:10:00.485 --> 00:10:01.605
<00:10:00.485>legacy <00:10:00.989>web <00:10:01.493>project.

211
00:10:02.145 --> 00:10:05.805
<00:10:02.145>And <00:10:02.285>this <00:10:02.425>giant <00:10:02.564>weakness <00:10:02.704>is <00:10:02.845>as <00:10:02.985>imposing <00:10:03.125>as <00:10:03.265>Karl <00:10:03.405>looks <00:10:03.545>here.

212
00:10:06.705 --> 00:10:07.955
<00:10:06.705>There's <00:10:06.986>a <00:10:07.267>few <00:10:07.548>weak <00:10:07.830>points.

213
00:10:08.775 --> 00:10:13.275
<00:10:08.775>And <00:10:08.891>these <00:10:09.008>weak <00:10:09.125>points <00:10:09.241>are <00:10:09.358>that <00:10:09.475>no <00:10:09.591>matter <00:10:09.708>how <00:10:09.824>much <00:10:09.941>XML <00:10:10.058>or <00:10:10.175>JSX

214
00:10:13.295 --> 00:10:16.235
<00:10:13.295>or <00:10:13.422>what <00:10:13.549>have <00:10:13.676>you, <00:10:13.804>we <00:10:13.931>throw <00:10:14.058>at <00:10:14.185>our <00:10:14.313>projects, <00:10:14.440>at <00:10:14.567>the <00:10:14.694>end

215
00:10:16.235 --> 00:10:19.035
<00:10:16.235>of <00:10:16.351>the <00:10:16.468>day, <00:10:16.585>if <00:10:16.701>it <00:10:16.818>runs <00:10:16.935>in <00:10:17.051>a <00:10:17.168>browser, <00:10:17.285>it <00:10:17.401>needs <00:10:17.518>to <00:10:17.635>work

216
00:10:19.035 --> 00:10:21.275
<00:10:19.035>with <00:10:19.314>web <00:10:19.594>technologies <00:10:19.875>in <00:10:20.155>some <00:10:20.435>way.

217
00:10:21.405 --> 00:10:23.435
<00:10:21.405>There <00:10:21.605>needs <00:10:21.805>to <00:10:22.005>be <00:10:22.204>HTML <00:10:22.405>at <00:10:22.605>the <00:10:22.805>end.

218
00:10:23.485 --> 00:10:25.515
<00:10:23.485>There <00:10:23.685>needs <00:10:23.885>to <00:10:24.085>be <00:10:24.285>CSS <00:10:24.485>at <00:10:24.685>the <00:10:24.885>end.

219
00:10:25.615 --> 00:10:28.035
<00:10:25.615>And <00:10:25.895>even <00:10:26.175>JavaScript <00:10:26.455>is <00:10:26.735>somewhere <00:10:27.015>down

220
00:10:28.115 --> 00:10:29.955
<00:10:28.115>below <00:10:28.395>all <00:10:28.675>the <00:10:28.955>layers <00:10:29.235>of <00:10:29.515>abstraction.

221
00:10:30.335 --> 00:10:32.835
<00:10:30.335>And <00:10:30.510>this <00:10:30.685>is <00:10:30.860>where <00:10:31.035>we <00:10:31.210>can <00:10:31.385>attack <00:10:31.560>the <00:10:31.735>monster

222
00:10:33.105 --> 00:10:34.835
<00:10:33.105>because <00:10:33.455>this <00:10:33.805>is <00:10:34.155>our <00:10:34.505>turf.

223
00:10:34.985 --> 00:10:38.075
<00:10:34.985>This <00:10:35.140>is, <00:10:35.296>um, <00:10:35.451>what <00:10:35.607>we <00:10:35.762>as <00:10:35.918>developers <00:10:36.073>have <00:10:36.229>under <00:10:36.385>control.

224
00:10:38.295 --> 00:10:39.715
<00:10:38.295>We <00:10:38.507>just <00:10:38.721>need <00:10:38.934>to <00:10:39.147>find <00:10:39.360>a <00:10:39.573>way.

225
00:10:39.975 --> 00:10:41.635
<00:10:39.975>We <00:10:40.175>just <00:10:40.375>need <00:10:40.575>to <00:10:40.775>find <00:10:40.975>a <00:10:41.175>weak <00:10:41.375>point

226
00:10:41.685 --> 00:10:43.315
<00:10:41.685>where <00:10:41.964>we <00:10:42.244>can <00:10:42.525>launch <00:10:42.805>our <00:10:43.084>attack.

227
00:10:45.195 --> 00:10:46.575
<00:10:45.195>Web <00:10:45.505>standards <00:10:45.816>are <00:10:46.126>quite <00:10:46.437>neat

228
00:10:46.735 --> 00:10:48.775
<00:10:46.735>because <00:10:47.015>they <00:10:47.295>are <00:10:47.575>lowest <00:10:47.855>common <00:10:48.135>denominators.

229
00:10:49.105 --> 00:10:52.615
<00:10:49.105>Everything <00:10:49.260>needs <00:10:49.416>to <00:10:49.571>work <00:10:49.727>with <00:10:49.882>HTML <00:10:50.038>and <00:10:50.193>CSS <00:10:50.349>and <00:10:50.505>JavaScript.

230
00:10:52.635 --> 00:10:55.415
<00:10:52.635>If <00:10:52.775>it, <00:10:52.915>if <00:10:53.055>it <00:10:53.194>wants <00:10:53.335>to <00:10:53.475>run <00:10:53.615>in <00:10:53.755>a <00:10:53.895>browser, <00:10:54.035>everything

231
00:10:56.115 --> 00:11:00.135
<00:10:56.115>you <00:10:56.270>can <00:10:56.426>add <00:10:56.581>as <00:10:56.737>much <00:10:56.892>P-H-P-X-M-L-J-S-X <00:10:57.048>and <00:10:57.203>what <00:10:57.359>have <00:10:57.515>you.

232
00:11:00.195 --> 00:11:02.575
<00:11:00.195>But <00:11:00.350>at <00:11:00.506>the <00:11:00.661>end <00:11:00.817>of <00:11:00.972>the <00:11:01.128>day, <00:11:01.283>it's <00:11:01.439>web <00:11:01.595>standards.

233
00:11:03.115 --> 00:11:07.095
<00:11:03.115>At <00:11:03.290>some <00:11:03.465>level, <00:11:03.640>this <00:11:03.815>needs <00:11:03.990>to <00:11:04.165>be <00:11:04.340>supported. <00:11:04.515>Okay?

234
00:11:08.035 --> 00:11:10.215
<00:11:08.035>Now <00:11:08.268>there's <00:11:08.501>several <00:11:08.735>ways <00:11:08.968>to <00:11:09.201>use <00:11:09.435>this.

235
00:11:10.245 --> 00:11:11.415
<00:11:10.245>There's <00:11:10.596>an <00:11:10.947>obvious <00:11:11.298>way

236
00:11:11.595 --> 00:11:13.335
<00:11:11.595>and <00:11:11.795>then <00:11:11.995>there's <00:11:12.195>a <00:11:12.395>not <00:11:12.595>so <00:11:12.795>obvious <00:11:12.995>way.

237
00:11:13.505 --> 00:11:15.335
<00:11:13.505>Let's <00:11:13.738>start <00:11:13.971>with <00:11:14.205>the <00:11:14.438>obvious <00:11:14.671>way <00:11:14.905>first.

238
00:11:16.145 --> 00:11:18.935
<00:11:16.145>Let's <00:11:16.285>say <00:11:16.425>we <00:11:16.564>have <00:11:16.704>an <00:11:16.845>HTML <00:11:16.985>element, <00:11:17.125>like <00:11:17.265>the <00:11:17.405>video <00:11:17.545>element.

239
00:11:19.125 --> 00:11:20.255
<00:11:19.125>This <00:11:19.379>is <00:11:19.633>an <00:11:19.887>opaque <00:11:20.142>element.

240
00:11:20.555 --> 00:11:24.335
<00:11:20.555>It <00:11:20.671>has <00:11:20.788>no <00:11:20.905>content <00:11:21.021>in <00:11:21.138>HTML, <00:11:21.255>but <00:11:21.371>it <00:11:21.488>has <00:11:21.604>a <00:11:21.721>rich <00:11:21.838>and <00:11:21.954>life.

241
00:11:24.335 --> 00:11:25.615
<00:11:24.335>There's <00:11:24.719>video <00:11:25.103>decoding <00:11:25.487>happening.

242
00:11:25.615 --> 00:11:27.535
<00:11:25.615>There's <00:11:25.895>a <00:11:26.175>user <00:11:26.455>interface <00:11:26.735>with <00:11:27.015>controls

243
00:11:27.835 --> 00:11:31.055
<00:11:27.835>and <00:11:27.990>from <00:11:28.146>the <00:11:28.301>per <00:11:28.457>perspective <00:11:28.612>of <00:11:28.768>some <00:11:28.923>sort <00:11:29.079>of <00:11:29.235>framework,

244
00:11:31.325 --> 00:11:35.255
<00:11:31.325>it's <00:11:31.465>still <00:11:31.605>just, <00:11:31.745>um, <00:11:31.885>a <00:11:32.025>single <00:11:32.165>HTML <00:11:32.305>tech, <00:11:32.445>but <00:11:32.585>a <00:11:32.725>rich

245
00:11:35.255 --> 00:11:38.695
<00:11:35.255>and <00:11:35.430>life <00:11:35.605>hidden <00:11:35.780>from <00:11:35.955>JavaScript <00:11:36.130>and <00:11:36.305>CSS <00:11:36.480>and <00:11:36.655>HTML.

246
00:11:38.835 --> 00:11:41.935
<00:11:38.835>And <00:11:38.990>of <00:11:39.146>course, <00:11:39.301>we <00:11:39.457>can <00:11:39.612>build <00:11:39.768>something <00:11:39.923>like <00:11:40.079>this <00:11:40.235>ourselves.

247
00:11:42.005 --> 00:11:43.455
<00:11:42.005>This <00:11:42.331>is <00:11:42.657>not <00:11:42.983>exactly <00:11:43.310>news.

248
00:11:43.635 --> 00:11:45.695
<00:11:43.635>We <00:11:43.868>can <00:11:44.101>create <00:11:44.335>our <00:11:44.568>own <00:11:44.801>HTML <00:11:45.035>texts

249
00:11:45.695 --> 00:11:48.815
<00:11:45.695>that <00:11:45.835>have <00:11:45.975>their <00:11:46.115>own <00:11:46.255>rich <00:11:46.395>inner <00:11:46.535>our <00:11:46.675>lives <00:11:46.815>no <00:11:46.955>HTML <00:11:47.095>content,

250
00:11:49.195 --> 00:11:51.295
<00:11:49.195>but <00:11:49.475>private <00:11:49.755>state <00:11:50.035>and <00:11:50.315>JavaScript <00:11:50.595>private

251
00:11:51.475 --> 00:11:52.495
<00:11:51.475>dom <00:11:51.781>with <00:11:52.087>shadow <00:11:52.393>dom.

252
00:11:52.495 --> 00:11:55.765
<00:11:52.495>This <00:11:52.635>is <00:11:52.775>all <00:11:52.915>entirely <00:11:53.055>possible. <00:11:53.195>And <00:11:53.335>this <00:11:53.475>is <00:11:53.615>not <00:11:53.755>exactly <00:11:53.895>news.

253
00:11:56.245 --> 00:12:00.085
<00:11:56.245>I <00:11:56.372>hope <00:11:56.499>you <00:11:56.626>just <00:11:56.754>write <00:11:56.881>a <00:11:57.008>class, <00:11:57.135>extend <00:11:57.263>it <00:11:57.390>from <00:11:57.517>HTML <00:11:57.645>element,

254
00:12:00.415 --> 00:12:02.645
<00:12:00.415>write <00:12:00.555>a <00:12:00.694>bunch <00:12:00.834>of <00:12:00.974>stuff, <00:12:01.115>write <00:12:01.255>a <00:12:01.395>bunch <00:12:01.535>of <00:12:01.675>more <00:12:01.814>stuff,

255
00:12:02.825 --> 00:12:05.165
<00:12:02.825>and, <00:12:03.025>um, <00:12:03.225>soon <00:12:03.425>you <00:12:03.625>have, <00:12:03.825>um, <00:12:04.025>private <00:12:04.225>fields.

256
00:12:05.355 --> 00:12:07.285
<00:12:05.355>This <00:12:05.555>thing <00:12:05.755>with <00:12:05.955>the, <00:12:06.155>um, <00:12:06.355>hashtag <00:12:06.555>in <00:12:06.755>front

257
00:12:07.285 --> 00:12:10.165
<00:12:07.285>of <00:12:07.425>it <00:12:07.564>is <00:12:07.704>a <00:12:07.844>private <00:12:07.985>class <00:12:08.125>field <00:12:08.265>and <00:12:08.405>JavaScript <00:12:08.545>looks <00:12:08.685>strange,

258
00:12:10.185 --> 00:12:12.485
<00:12:10.185>but <00:12:10.418>works <00:12:10.651>like <00:12:10.885>a <00:12:11.118>private <00:12:11.351>keyword, <00:12:11.584>sort

259
00:12:12.485 --> 00:12:13.605
<00:12:12.485>of, <00:12:12.686>not <00:12:12.888>really, <00:12:13.089>but <00:12:13.291>sort <00:12:13.493>of.

260
00:12:14.905 --> 00:12:17.325
<00:12:14.905>And <00:12:15.032>then <00:12:15.159>of <00:12:15.286>course <00:12:15.414>you <00:12:15.541>can <00:12:15.668>add <00:12:15.795>even <00:12:15.923>more <00:12:16.050>stuff <00:12:16.177>like <00:12:16.305>this

261
00:12:17.325 --> 00:12:19.205
<00:12:17.325>shadow, <00:12:17.675>uh, <00:12:18.025>route <00:12:18.375>thing <00:12:18.725>there.

262
00:12:19.465 --> 00:12:21.925
<00:12:19.465>The <00:12:19.665>shadow <00:12:19.865>route <00:12:20.065>essentially <00:12:20.265>is <00:12:20.465>an <00:12:20.665>entry <00:12:20.865>point

263
00:12:21.985 --> 00:12:23.165
<00:12:21.985>for <00:12:22.516>private <00:12:23.047>dom.

264
00:12:23.395 --> 00:12:25.765
<00:12:23.395>This <00:12:23.628>describes <00:12:23.861>how <00:12:24.095>the <00:12:24.328>element <00:12:24.561>is <00:12:24.795>rendered,

265
00:12:25.865 --> 00:12:28.965
<00:12:25.865>but <00:12:26.040>this <00:12:26.215>entire <00:12:26.390>inner <00:12:26.565>construction <00:12:26.740>with <00:12:26.915>the <00:12:27.090>P <00:12:27.265>element

266
00:12:29.065 --> 00:12:30.885
<00:12:29.065>and <00:12:29.265>the <00:12:29.465>text <00:12:29.665>and <00:12:29.865>so <00:12:30.065>on <00:12:30.265>is <00:12:30.465>private.

267
00:12:31.225 --> 00:12:33.645
<00:12:31.225>So <00:12:31.400>if <00:12:31.575>we <00:12:31.750>add <00:12:31.925>this <00:12:32.100>element <00:12:32.275>to <00:12:32.450>our <00:12:32.625>webpage,

268
00:12:33.645 --> 00:12:35.365
<00:12:33.645>it <00:12:33.878>behaves <00:12:34.111>like <00:12:34.345>any <00:12:34.578>other <00:12:34.811>web <00:12:35.045>element,

269
00:12:35.785 --> 00:12:38.845
<00:12:35.785>but <00:12:35.940>if <00:12:36.096>we <00:12:36.251>try <00:12:36.407>to <00:12:36.562>access <00:12:36.718>it <00:12:36.873>in <00:12:37.029>our <00:12:37.185>contents,

270
00:12:38.955 --> 00:12:41.365
<00:12:38.955>this <00:12:39.130>doesn't <00:12:39.305>work <00:12:39.480>anymore <00:12:39.655>because <00:12:39.830>the <00:12:40.005>internals <00:12:40.180>are <00:12:40.355>private.

271
00:12:41.945 --> 00:12:43.565
<00:12:41.945>So <00:12:42.295>this <00:12:42.645>looks <00:12:42.995>like <00:12:43.345>something

272
00:12:43.635 --> 00:12:45.565
<00:12:43.635>that <00:12:43.868>works <00:12:44.101>quite <00:12:44.335>well <00:12:44.568>if <00:12:44.801>we <00:12:45.035>want

273
00:12:45.565 --> 00:12:47.525
<00:12:45.565>to <00:12:45.845>subvert <00:12:46.125>our <00:12:46.405>legacy <00:12:46.685>web <00:12:46.965>project

274
00:12:47.525 --> 00:12:50.765
<00:12:47.525>because <00:12:47.758>everything <00:12:47.991>in <00:12:48.225>this <00:12:48.458>is <00:12:48.691>an <00:12:48.925>implementation

275
00:12:50.785 --> 00:12:52.125
<00:12:50.785>detail <00:12:51.187>from <00:12:51.589>the <00:12:51.991>outside.

276
00:12:52.155 --> 00:12:54.125
<00:12:52.155>It's <00:12:52.355>just <00:12:52.555>an <00:12:52.755>HTML <00:12:52.954>tech <00:12:53.155>with <00:12:53.355>a <00:12:53.555>bunch

277
00:12:54.125 --> 00:12:55.285
<00:12:54.125>of <00:12:54.386>stuff <00:12:54.646>happening <00:12:54.908>inside <00:12:55.169>it.

278
00:12:55.285 --> 00:12:57.965
<00:12:55.285>But <00:12:55.459>this <00:12:55.635>inside <00:12:55.810>is <00:12:55.985>hidden <00:12:56.160>from <00:12:56.334>the <00:12:56.510>outside <00:12:56.685>world.

279
00:12:58.105 --> 00:12:59.805
<00:12:58.105>So <00:12:58.338>this <00:12:58.571>looks <00:12:58.805>like <00:12:59.038>a <00:12:59.271>clear <00:12:59.505>win.

280
00:12:59.945 --> 00:13:02.285
<00:12:59.945>We <00:13:00.072>have <00:13:00.199>a <00:13:00.326>private <00:13:00.454>inner <00:13:00.581>state <00:13:00.708>that <00:13:00.835>no <00:13:00.963>one <00:13:01.090>can <00:13:01.217>mess <00:13:01.345>with.

281
00:13:02.375 --> 00:13:06.105
<00:13:02.375>Great. <00:13:02.515>We <00:13:02.655>have <00:13:02.795>private <00:13:02.935>dom <00:13:03.075>that <00:13:03.215>no <00:13:03.355>one <00:13:03.495>can <00:13:03.635>mess <00:13:03.775>with.

282
00:13:06.295 --> 00:13:08.985
<00:13:06.295>Even <00:13:06.574>greater. <00:13:06.854>We <00:13:07.135>have <00:13:07.415>CSS <00:13:07.694>scoping,

283
00:13:08.985 --> 00:13:12.145
<00:13:08.985>which <00:13:09.112>depending <00:13:09.239>on <00:13:09.366>your <00:13:09.494>ion <00:13:09.621>might <00:13:09.748>be <00:13:09.875>great <00:13:10.003>or <00:13:10.130>not <00:13:10.257>so <00:13:10.385>great,

284
00:13:12.165 --> 00:13:13.305
<00:13:12.165>but <00:13:12.421>at <00:13:12.678>least <00:13:12.934>it's <00:13:13.190>something.

285
00:13:13.685 --> 00:13:14.945
<00:13:13.685>Um, <00:13:14.063>web <00:13:14.441>components <00:13:14.819>can

286
00:13:14.945 --> 00:13:16.625
<00:13:14.945>of <00:13:15.225>course <00:13:15.505>contain <00:13:15.785>other <00:13:16.065>web <00:13:16.345>components.

287
00:13:16.725 --> 00:13:19.625
<00:13:16.725>So <00:13:16.900>we <00:13:17.075>can <00:13:17.250>simply <00:13:17.425>add <00:13:17.600>one <00:13:17.775>web <00:13:17.950>component <00:13:18.125>somewhere

288
00:13:19.765 --> 00:13:22.185
<00:13:19.765>and <00:13:19.965>have <00:13:20.165>an <00:13:20.365>entire <00:13:20.564>sub <00:13:20.765>application <00:13:20.965>in <00:13:21.165>there

289
00:13:22.285 --> 00:13:23.425
<00:13:22.285>that's <00:13:22.798>entirely <00:13:23.310>possible.

290
00:13:23.965 --> 00:13:27.425
<00:13:23.965>And <00:13:24.165>it's <00:13:24.365>native <00:13:24.565>HDML <00:13:24.765>and <00:13:24.965>CSS <00:13:25.165>and <00:13:25.365>JavaScript.

291
00:13:27.425 --> 00:13:29.905
<00:13:27.425>So <00:13:27.625>whatever <00:13:27.824>your <00:13:28.025>web <00:13:28.224>project <00:13:28.425>does, <00:13:28.625>it <00:13:28.824>has

292
00:13:29.905 --> 00:13:31.505
<00:13:29.905>to <00:13:30.185>support <00:13:30.464>this <00:13:30.745>at <00:13:31.025>some <00:13:31.305>level.

293
00:13:33.235 --> 00:13:36.135
<00:13:33.235>In <00:13:33.435>some <00:13:33.635>way <00:13:33.835>it <00:13:34.035>might <00:13:34.235>resist <00:13:34.435>this <00:13:34.635>support,

294
00:13:36.435 --> 00:13:39.295
<00:13:36.435>but <00:13:36.551>it <00:13:36.668>will <00:13:36.785>have <00:13:36.901>to <00:13:37.018>do <00:13:37.135>this <00:13:37.251>at <00:13:37.368>the <00:13:37.484>end <00:13:37.601>of <00:13:37.718>the <00:13:37.834>day.

295
00:13:40.075 --> 00:13:41.255
<00:13:40.075>So <00:13:40.340>this <00:13:40.606>is <00:13:40.871>one <00:13:41.137>way

296
00:13:41.275 --> 00:13:44.215
<00:13:41.275>to <00:13:41.508>escape <00:13:41.741>from <00:13:41.975>the <00:13:42.208>legacy <00:13:42.441>projects <00:13:42.675>influence.

297
00:13:44.475 --> 00:13:47.735
<00:13:44.475>You <00:13:44.630>can <00:13:44.786>create <00:13:44.941>an <00:13:45.097>entire <00:13:45.252>parallel <00:13:45.408>state, <00:13:45.563>an <00:13:45.719>anti <00:13:45.875>pope,

298
00:13:47.735 --> 00:13:49.375
<00:13:47.735>if <00:13:47.968>you <00:13:48.201>will, <00:13:48.435>for <00:13:48.668>your <00:13:48.901>web <00:13:49.135>project.

299
00:13:49.475 --> 00:13:52.175
<00:13:49.475>And <00:13:49.630>simply, <00:13:49.786>if <00:13:49.941>you <00:13:50.097>find <00:13:50.252>one <00:13:50.408>way <00:13:50.563>to <00:13:50.719>attach <00:13:50.875>this

300
00:13:52.175 --> 00:13:53.815
<00:13:52.175>to <00:13:52.375>your <00:13:52.574>project, <00:13:52.775>you <00:13:52.974>can <00:13:53.175>go <00:13:53.375>from <00:13:53.574>there.

301
00:13:55.225 --> 00:13:58.685
<00:13:55.225>But <00:13:55.365>simply <00:13:55.505>finding <00:13:55.645>a <00:13:55.785>way <00:13:55.925>to <00:13:56.065>attach <00:13:56.205>this <00:13:56.345>might <00:13:56.485>not <00:13:56.625>be

302
00:13:58.685 --> 00:14:01.845
<00:13:58.685>so <00:13:58.859>simple <00:13:59.035>because <00:13:59.209>your <00:13:59.385>legacy <00:13:59.560>web <00:13:59.734>project, <00:13:59.910>of <00:14:00.084>course,

303
00:14:02.095 --> 00:14:05.845
<00:14:02.095>comes <00:14:02.235>from <00:14:02.375>a <00:14:02.515>time <00:14:02.655>where <00:14:02.795>there's <00:14:02.935>a <00:14:03.075>finite <00:14:03.215>set <00:14:03.355>of, <00:14:03.495>um,

304
00:14:06.045 --> 00:14:08.125
<00:14:06.045>HTML <00:14:06.395>element <00:14:06.745>where <00:14:07.094>tech <00:14:07.444>names

305
00:14:08.195 --> 00:14:11.405
<00:14:08.195>with <00:14:08.428>dashes <00:14:08.661>in <00:14:08.895>them <00:14:09.128>don't <00:14:09.361>exist, <00:14:09.595>right?

306
00:14:12.945 --> 00:14:14.605
<00:14:12.945>Oh, <00:14:13.225>no <00:14:13.505>dashes <00:14:13.785>in <00:14:14.065>my, <00:14:14.345>um,

307
00:14:14.795 --> 00:14:16.725
<00:14:14.795>tech <00:14:15.074>names <00:14:15.354>break <00:14:15.635>my <00:14:15.915>legacy <00:14:16.194>framework

308
00:14:16.745 --> 00:14:18.725
<00:14:16.745>or <00:14:17.025>even <00:14:17.305>my <00:14:17.585>less <00:14:17.865>legacy <00:14:18.145>frameworks.

309
00:14:18.915 --> 00:14:20.325
<00:14:18.915>This <00:14:19.232>is <00:14:19.549>a <00:14:19.866>real <00:14:20.184>problem

310
00:14:20.755 --> 00:14:23.525
<00:14:20.755>that <00:14:20.988>makes <00:14:21.221>simple <00:14:21.455>approaches <00:14:21.688>like <00:14:21.921>this <00:14:22.155>not

311
00:14:23.525 --> 00:14:26.255
<00:14:23.525>work <00:14:23.875>on <00:14:24.225>the <00:14:24.574>first <00:14:24.925>try.

312
00:14:26.835 --> 00:14:28.975
<00:14:26.835>On <00:14:27.068>the <00:14:27.301>second <00:14:27.535>try, <00:14:27.768>we, <00:14:28.001>we <00:14:28.235>remember

313
00:14:29.085 --> 00:14:32.735
<00:14:29.085>that <00:14:29.225>we <00:14:29.365>can <00:14:29.505>use <00:14:29.645>the <00:14:29.785>entirety <00:14:29.925>of <00:14:30.065>all <00:14:30.205>web <00:14:30.345>standards <00:14:30.485>ever

314
00:14:33.075 --> 00:14:34.135
<00:14:33.075>to <00:14:33.393>achieve <00:14:33.711>our <00:14:34.029>goals.

315
00:14:34.915 --> 00:14:38.295
<00:14:34.915>And <00:14:35.115>this, <00:14:35.314>um, <00:14:35.515>includes <00:14:35.714>not <00:14:35.915>only <00:14:36.115>recent, <00:14:36.314>um,

316
00:14:38.295 --> 00:14:39.895
<00:14:38.295>technologies <00:14:38.761>like <00:14:39.228>web <00:14:39.694>components,

317
00:14:40.195 --> 00:14:43.895
<00:14:40.195>but <00:14:40.395>basically <00:14:40.595>every <00:14:40.795>bad <00:14:40.995>idea <00:14:41.195>anyone <00:14:41.395>has <00:14:41.595>ever

318
00:14:43.995 --> 00:14:45.095
<00:14:43.995>had <00:14:44.325>in <00:14:44.655>any <00:14:44.985>browser.

319
00:14:46.785 --> 00:14:47.855
<00:14:46.785>Lemme <00:14:47.025>tell <00:14:47.266>you <00:14:47.507>a <00:14:47.748>story.

320
00:14:49.955 --> 00:14:52.085
<00:14:49.955>So <00:14:50.235>there's <00:14:50.515>the <00:14:50.795>body <00:14:51.075>tag, <00:14:51.355>obviously,

321
00:14:52.385 --> 00:14:55.285
<00:14:52.385>and <00:14:52.540>you <00:14:52.696>can <00:14:52.851>obviously <00:14:53.007>give <00:14:53.162>your <00:14:53.318>page <00:14:53.473>a <00:14:53.629>nice <00:14:53.785>background

322
00:14:55.345 --> 00:14:59.285
<00:14:55.345>by <00:14:55.461>adding <00:14:55.578>a <00:14:55.695>style <00:14:55.811>tag <00:14:55.928>or <00:14:56.045>a <00:14:56.161>style <00:14:56.278>attribute <00:14:56.395>to <00:14:56.511>the <00:14:56.628>body <00:14:56.745>tag

323
00:14:59.285 --> 00:15:00.605
<00:14:59.285>and <00:14:59.522>write <00:14:59.760>a <00:14:59.997>bunch <00:15:00.235>of <00:15:00.473>CSS.

324
00:15:00.985 --> 00:15:05.885
<00:15:00.985>But <00:15:01.112>you <00:15:01.239>can <00:15:01.366>also <00:15:01.494>use <00:15:01.621>the <00:15:01.748>BG <00:15:01.875>color <00:15:02.003>attribute. <00:15:02.130>Yes, <00:15:02.257>you <00:15:02.385>can.

325
00:15:06.345 --> 00:15:10.685
<00:15:06.345>Um, <00:15:06.500>this <00:15:06.656>is <00:15:06.811>essentially <00:15:06.967>an <00:15:07.122>ancient <00:15:07.278>way <00:15:07.433>of <00:15:07.589>doing <00:15:07.745>sort

326
00:15:10.685 --> 00:15:12.965
<00:15:10.685>of <00:15:10.918>CSS <00:15:11.151>kind <00:15:11.385>of, <00:15:11.618>it's <00:15:11.851>really <00:15:12.084>ancient.

327
00:15:12.965 --> 00:15:15.125
<00:15:12.965>Nobody <00:15:13.165>in <00:15:13.365>their <00:15:13.565>right <00:15:13.765>mind <00:15:13.965>would <00:15:14.165>use <00:15:14.365>this

328
00:15:15.135 --> 00:15:16.485
<00:15:15.135>today, <00:15:15.438>but <00:15:15.742>it <00:15:16.046>still <00:15:16.350>works.

329
00:15:17.145 --> 00:15:20.085
<00:15:17.145>Why <00:15:17.300>does <00:15:17.456>it <00:15:17.611>still <00:15:17.767>work? <00:15:17.922>Because <00:15:18.078>there's <00:15:18.233>still <00:15:18.389>websites <00:15:18.545>out

330
00:15:20.085 --> 00:15:23.085
<00:15:20.085>there <00:15:20.201>from <00:15:20.318>back <00:15:20.435>in <00:15:20.551>the <00:15:20.668>day <00:15:20.785>when <00:15:20.901>this <00:15:21.018>was <00:15:21.135>the <00:15:21.251>way <00:15:21.368>to <00:15:21.485>go.

331
00:15:23.425 --> 00:15:26.245
<00:15:23.425>And <00:15:23.580>we <00:15:23.736>can <00:15:23.891>still <00:15:24.047>use <00:15:24.202>the <00:15:24.358>BG <00:15:24.513>color <00:15:24.669>attribute <00:15:24.824>in

332
00:15:26.395 --> 00:15:27.405
<00:15:26.395>today's <00:15:27.304>browsers.

333
00:15:27.475 --> 00:15:30.285
<00:15:27.475>This <00:15:27.650>is <00:15:27.825>just <00:15:28.000>Chrome <00:15:28.175>and <00:15:28.350>it <00:15:28.525>works <00:15:28.700>just <00:15:28.875>fine.

334
00:15:30.625 --> 00:15:32.165
<00:15:30.625>And <00:15:31.087>it's <00:15:31.549>even <00:15:32.011>required

335
00:15:32.235 --> 00:15:35.685
<00:15:32.235>that <00:15:32.410>browsers <00:15:32.585>support <00:15:32.760>this <00:15:32.935>in <00:15:33.110>the <00:15:33.285>HTML <00:15:33.460>five <00:15:33.635>specification.

336
00:15:35.705 --> 00:15:37.805
<00:15:35.705>If <00:15:35.880>you <00:15:36.055>scroll <00:15:36.230>down <00:15:36.405>and <00:15:36.580>then <00:15:36.755>scroll <00:15:36.930>some <00:15:37.105>more,

337
00:15:37.945 --> 00:15:40.925
<00:15:37.945>you <00:15:38.100>will <00:15:38.256>find <00:15:38.411>the <00:15:38.567>algorithm <00:15:38.722>that <00:15:38.878>describes <00:15:39.033>how <00:15:39.189>this <00:15:39.345>works

338
00:15:40.985 --> 00:15:42.445
<00:15:40.985>and <00:15:41.204>how <00:15:41.423>browsers <00:15:41.642>have <00:15:41.861>to <00:15:42.080>support <00:15:42.299>this.

339
00:15:42.915 --> 00:15:46.125
<00:15:42.915>This <00:15:43.070>is <00:15:43.226>just <00:15:43.381>a, <00:15:43.537>a <00:15:43.692>dumb <00:15:43.848>example <00:15:44.003>with <00:15:44.159>BG <00:15:44.314>color,

340
00:15:46.225 --> 00:15:48.685
<00:15:46.225>but <00:15:46.458>it <00:15:46.691>illustrates <00:15:46.925>the <00:15:47.158>fact <00:15:47.391>that <00:15:47.625>everything

341
00:15:48.685 --> 00:15:52.005
<00:15:48.685>that <00:15:48.824>ever <00:15:48.964>existed <00:15:49.104>in <00:15:49.244>browsers <00:15:49.385>is <00:15:49.525>a <00:15:49.665>tool <00:15:49.805>in <00:15:49.944>our <00:15:50.084>toolbox,

342
00:15:52.025 --> 00:15:54.085
<00:15:52.025>or <00:15:52.199>should <00:15:52.375>I <00:15:52.550>say <00:15:52.725>a <00:15:52.900>weapon <00:15:53.074>in <00:15:53.250>our <00:15:53.425>armory

343
00:15:54.155 --> 00:15:56.725
<00:15:54.155>that <00:15:54.295>we <00:15:54.435>can <00:15:54.574>use <00:15:54.714>in <00:15:54.855>our <00:15:54.995>fight <00:15:55.135>against <00:15:55.275>the <00:15:55.415>legacy <00:15:55.555>monster.

344
00:15:58.145 --> 00:16:01.045
<00:15:58.145>We <00:15:58.300>can <00:15:58.456>use <00:15:58.611>hex <00:15:58.767>colors, <00:15:58.922>we <00:15:59.078>can <00:15:59.233>use <00:15:59.389>color <00:15:59.545>keywords,

345
00:16:01.225 --> 00:16:03.165
<00:16:01.225>we <00:16:01.425>can <00:16:01.625>use <00:16:01.825>names <00:16:02.025>that <00:16:02.225>aren't <00:16:02.425>even <00:16:02.625>colors.

346
00:16:04.845 --> 00:16:07.685
<00:16:04.845>I <00:16:05.000>can, <00:16:05.156>um, <00:16:05.311>set <00:16:05.467>the <00:16:05.622>BG <00:16:05.778>color <00:16:05.933>to <00:16:06.089>Chuck <00:16:06.245>Norris

347
00:16:08.535 --> 00:16:09.795
<00:16:08.535>and <00:16:08.818>this <00:16:09.102>will <00:16:09.385>actually <00:16:09.669>work.

348
00:16:10.025 --> 00:16:12.955
<00:16:10.025>This <00:16:10.180>will <00:16:10.336>turn <00:16:10.491>the <00:16:10.647>string <00:16:10.802>Chuck <00:16:10.958>Norris <00:16:11.113>into <00:16:11.269>a <00:16:11.425>color

349
00:16:13.575 --> 00:16:15.435
<00:16:13.575>and <00:16:13.775>a <00:16:13.975>very <00:16:14.175>fitting <00:16:14.375>color <00:16:14.575>I <00:16:14.775>might <00:16:14.975>add,

350
00:16:15.505 --> 00:16:17.995
<00:16:15.505>because <00:16:15.738>this <00:16:15.971>is <00:16:16.205>red <00:16:16.438>like <00:16:16.671>the <00:16:16.905>blood

351
00:16:17.995 --> 00:16:19.155
<00:16:17.995>of <00:16:18.343>Chuck <00:16:18.691>Norris's <00:16:19.039>enemies.

352
00:16:21.135 --> 00:16:24.835
<00:16:21.135>And <00:16:21.242>this <00:16:21.350>is <00:16:21.458>not <00:16:21.565>just <00:16:21.673>a <00:16:21.781>joke, <00:16:21.888>I <00:16:21.996>mean <00:16:22.104>in <00:16:22.211>this <00:16:22.319>context <00:16:22.427>it's <00:16:22.535>a,

353
00:16:24.835 --> 00:16:26.075
<00:16:24.835>it's <00:16:24.994>a <00:16:25.153>joke, <00:16:25.313>but <00:16:25.472>it's <00:16:25.632>not <00:16:25.791>a <00:16:25.951>joke.

354
00:16:26.385 --> 00:16:28.995
<00:16:26.385>This <00:16:26.618>is <00:16:26.851>described <00:16:27.085>in <00:16:27.318>the <00:16:27.551>HTML <00:16:27.785>standard.

355
00:16:29.185 --> 00:16:31.035
<00:16:29.185>This <00:16:29.418>is <00:16:29.651>what <00:16:29.885>Chrome <00:16:30.118>has <00:16:30.351>to <00:16:30.584>support.

356
00:16:31.105 --> 00:16:33.715
<00:16:31.105>This <00:16:31.280>is <00:16:31.455>what <00:16:31.630>Firefox <00:16:31.805>still <00:16:31.980>supports <00:16:32.155>to <00:16:32.330>this <00:16:32.505>day.

357
00:16:34.055 --> 00:16:36.555
<00:16:34.055>You <00:16:34.255>can <00:16:34.454>set <00:16:34.655>any <00:16:34.854>string <00:16:35.055>to <00:16:35.255>BG <00:16:35.454>color

358
00:16:36.695 --> 00:16:38.355
<00:16:36.695>and <00:16:36.928>the <00:16:37.161>browser <00:16:37.395>will <00:16:37.628>run <00:16:37.861>an <00:16:38.095>algorithm

359
00:16:38.575 --> 00:16:39.955
<00:16:38.575>to <00:16:38.823>turn <00:16:39.071>this <00:16:39.320>into <00:16:39.568>a <00:16:39.817>color.

360
00:16:40.225 --> 00:16:43.755
<00:16:40.225>Okay, <00:16:40.380>ready? <00:16:40.536>Chuck <00:16:40.691>Norris, <00:16:40.847>neither <00:16:41.002>red <00:16:41.158>nor <00:16:41.313>green <00:16:41.469>nor <00:16:41.625>blue.

361
00:16:43.775 --> 00:16:46.155
<00:16:43.775>So <00:16:43.949>it <00:16:44.125>has <00:16:44.300>to <00:16:44.475>be <00:16:44.650>a <00:16:44.824>hexa <00:16:45.000>decimal, <00:16:45.175>um,

362
00:16:46.245 --> 00:16:47.555
<00:16:46.245>color <00:16:46.834>declaration, <00:16:47.424>right?

363
00:16:47.695 --> 00:16:48.795
<00:16:47.695>But <00:16:47.942>there's <00:16:48.190>letters <00:16:48.437>in <00:16:48.685>there

364
00:16:48.795 --> 00:16:50.395
<00:16:48.795>that <00:16:49.074>don't <00:16:49.354>fit <00:16:49.635>into <00:16:49.915>hexa <00:16:50.194>decimal,

365
00:16:50.495 --> 00:16:52.395
<00:16:50.495>so <00:16:50.775>we <00:16:51.055>replace <00:16:51.335>them <00:16:51.615>with <00:16:51.895>zero.

366
00:16:52.855 --> 00:16:54.435
<00:16:52.855>We <00:16:53.205>need <00:16:53.555>an <00:16:53.905>RGB <00:16:54.255>declaration.

367
00:16:54.455 --> 00:16:56.635
<00:16:54.455>So <00:16:54.630>we <00:16:54.805>pair <00:16:54.980>to <00:16:55.155>this <00:16:55.330>entire <00:16:55.505>string <00:16:55.680>with <00:16:55.855>zeros

368
00:16:56.635 --> 00:16:59.795
<00:16:56.635>until <00:16:56.790>it's <00:16:56.946>divisible <00:16:57.101>by <00:16:57.257>three, <00:16:57.412>split <00:16:57.568>it <00:16:57.723>into <00:16:57.879>three <00:16:58.035>groups,

369
00:17:00.355 --> 00:17:04.155
<00:17:00.355>truncate <00:17:00.495>the <00:17:00.635>groups, <00:17:00.775>and <00:17:00.915>then <00:17:01.055>end <00:17:01.195>up <00:17:01.335>with <00:17:01.475>a <00:17:01.615>dark <00:17:01.755>red.

370
00:17:05.255 --> 00:17:06.435
<00:17:05.255>And <00:17:05.520>this <00:17:05.786>is <00:17:06.051>the <00:17:06.317>algorithm.

371
00:17:06.665 --> 00:17:09.515
<00:17:06.665>This <00:17:06.839>is <00:17:07.014>how <00:17:07.190>browsers <00:17:07.365>treat <00:17:07.540>this <00:17:07.714>BG <00:17:07.889>color <00:17:08.065>attribute

372
00:17:09.615 --> 00:17:12.035
<00:17:09.615>to <00:17:09.770>this <00:17:09.926>day, <00:17:10.081>even <00:17:10.237>though <00:17:10.392>no <00:17:10.548>one <00:17:10.703>in <00:17:10.859>their <00:17:11.015>right

373
00:17:12.035 --> 00:17:13.115
<00:17:12.035>mind <00:17:12.521>uses <00:17:13.007>this.

374
00:17:13.575 --> 00:17:16.955
<00:17:13.575>The <00:17:13.702>matter <00:17:13.829>of <00:17:13.956>fact <00:17:14.084>is <00:17:14.211>simply <00:17:14.338>that <00:17:14.465>this <00:17:14.593>used <00:17:14.720>to <00:17:14.847>be <00:17:14.975>required

375
00:17:17.465 --> 00:17:18.715
<00:17:17.464>back <00:17:17.746>in <00:17:18.027>the <00:17:18.308>early <00:17:18.589>nineties,

376
00:17:18.895 --> 00:17:20.755
<00:17:18.895>and <00:17:19.175>it's <00:17:19.454>still <00:17:19.734>in <00:17:20.014>browsers <00:17:20.295>today.

377
00:17:22.095 --> 00:17:25.035
<00:17:22.095>And <00:17:22.235>this <00:17:22.375>is <00:17:22.515>how <00:17:22.655>we <00:17:22.795>should <00:17:22.935>really <00:17:23.075>think <00:17:23.214>about <00:17:23.355>web <00:17:23.495>standards

378
00:17:25.035 --> 00:17:27.075
<00:17:25.035>when <00:17:25.235>trying <00:17:25.435>to <00:17:25.635>defeat <00:17:25.835>our <00:17:26.035>legacy <00:17:26.235>web <00:17:26.435>project.

379
00:17:27.545 --> 00:17:29.355
<00:17:27.545>It's <00:17:27.778>not <00:17:28.011>just <00:17:28.245>the <00:17:28.478>fancy <00:17:28.711>new <00:17:28.945>stuff,

380
00:17:29.615 --> 00:17:31.595
<00:17:29.615>but <00:17:29.895>it's <00:17:30.175>also <00:17:30.455>everything <00:17:30.735>that <00:17:31.015>came

381
00:17:31.595 --> 00:17:33.475
<00:17:31.595>before, <00:17:31.945>everything <00:17:32.295>that <00:17:32.645>can <00:17:32.995>came

382
00:17:33.475 --> 00:17:36.155
<00:17:33.475>before <00:17:33.675>can <00:17:33.875>be <00:17:34.074>used <00:17:34.274>to <00:17:34.475>force, <00:17:34.675>for <00:17:34.875>example,

383
00:17:36.175 --> 00:17:40.385
<00:17:36.175>our <00:17:36.408>web <00:17:36.641>components <00:17:36.875>into, <00:17:37.108>um, <00:17:37.341>our <00:17:37.575>project.

384
00:17:40.965 --> 00:17:44.745
<00:17:40.965>So <00:17:41.105>always <00:17:41.245>remember, <00:17:41.385>browsers <00:17:41.524>have <00:17:41.665>one <00:17:41.804>job <00:17:41.945>and <00:17:42.084>one <00:17:42.225>job <00:17:42.365>only,

385
00:17:44.765 --> 00:17:48.185
<00:17:44.765>and <00:17:44.920>that <00:17:45.076>job <00:17:45.231>is <00:17:45.387>to <00:17:45.542>render <00:17:45.698>every <00:17:45.853>webpage <00:17:46.009>ever <00:17:46.165>written.

386
00:17:48.605 --> 00:17:51.285
<00:17:48.605>That's, <00:17:48.838>that's <00:17:49.071>a <00:17:49.305>legacy <00:17:49.538>project <00:17:49.771>in <00:17:50.005>itself.

387
00:17:52.865 --> 00:17:56.965
<00:17:52.865>So <00:17:53.020>in <00:17:53.176>order <00:17:53.331>to <00:17:53.487>do <00:17:53.642>this, <00:17:53.798>browsers <00:17:53.953>support <00:17:54.109>every <00:17:54.265>dumb

388
00:17:57.065 --> 00:17:58.165
<00:17:57.065>and <00:17:57.395>stupid <00:17:57.725>and <00:17:58.055>old

389
00:17:58.165 --> 00:18:01.765
<00:17:58.165>and <00:17:58.305>insane <00:17:58.445>API <00:17:58.585>that <00:17:58.725>has <00:17:58.865>ever <00:17:59.004>been <00:17:59.145>conceived <00:17:59.284>to <00:17:59.425>this <00:17:59.565>day.

390
00:18:01.955 --> 00:18:03.805
<00:18:01.955>It's <00:18:02.155>not <00:18:02.355>only <00:18:02.554>part <00:18:02.754>of <00:18:02.955>the <00:18:03.155>browsers <00:18:03.355>code,

391
00:18:03.865 --> 00:18:05.365
<00:18:03.865>but <00:18:04.135>it's <00:18:04.405>part <00:18:04.675>of <00:18:04.945>the <00:18:05.215>standards.

392
00:18:05.425 --> 00:18:07.685
<00:18:05.425>So <00:18:05.600>all <00:18:05.774>the <00:18:05.950>browsers <00:18:06.125>do <00:18:06.300>it <00:18:06.475>the <00:18:06.649>same <00:18:06.825>way,

393
00:18:07.945 --> 00:18:10.365
<00:18:07.945>so <00:18:08.120>we <00:18:08.294>can <00:18:08.470>use <00:18:08.645>it <00:18:08.820>cross <00:18:08.995>platform, <00:18:09.169>no <00:18:09.345>problem.

394
00:18:10.945 --> 00:18:13.685
<00:18:10.945>So <00:18:11.100>the <00:18:11.256>entirety <00:18:11.411>of <00:18:11.567>web <00:18:11.722>standards, <00:18:11.878>even <00:18:12.033>the <00:18:12.189>old <00:18:12.345>stuff,

395
00:18:13.945 --> 00:18:15.725
<00:18:13.945>is <00:18:14.178>the <00:18:14.411>important <00:18:14.645>bit <00:18:14.878>in <00:18:15.111>our <00:18:15.345>armory

396
00:18:15.825 --> 00:18:17.165
<00:18:15.825>to <00:18:16.126>fight <00:18:16.428>the <00:18:16.729>legacy <00:18:17.031>monster.

397
00:18:19.665 --> 00:18:23.575
<00:18:19.665>Um, <00:18:19.840>this <00:18:20.014>slight <00:18:20.190>transition <00:18:20.365>takes <00:18:20.540>longer <00:18:20.715>than <00:18:20.889>I <00:18:21.065>expected.

398
00:18:28.065 --> 00:18:33.055
<00:18:28.065>There <00:18:28.181>we <00:18:28.298>go. <00:18:28.415>So <00:18:28.531>just <00:18:28.648>for <00:18:28.765>fun, <00:18:28.881>um, <00:18:28.998>this <00:18:29.115>is <00:18:29.231>the <00:18:29.348>HTML <00:18:29.465>standard.

399
00:18:34.265 --> 00:18:35.475
<00:18:34.265>It's <00:18:34.537>a <00:18:34.809>rather <00:18:35.081>long <00:18:35.353>document.

400
00:18:36.175 --> 00:18:38.755
<00:18:36.175>If <00:18:36.302>you <00:18:36.429>take <00:18:36.556>a <00:18:36.684>look <00:18:36.811>at <00:18:36.938>the <00:18:37.065>scroll <00:18:37.193>bar <00:18:37.320>on <00:18:37.447>the <00:18:37.575>site,

401
00:18:39.905 --> 00:18:41.515
<00:18:39.905>this <00:18:40.138>is <00:18:40.371>still <00:18:40.605>the <00:18:40.838>table <00:18:41.071>of <00:18:41.305>contents.

402
00:18:43.105 --> 00:18:46.685
<00:18:43.105>I'm <00:18:43.260>just <00:18:43.416>saying <00:18:43.571>not <00:18:43.727>everything <00:18:43.882>in, <00:18:44.038>there's <00:18:44.193>a <00:18:44.349>good <00:18:44.505>idea

403
00:18:46.685 --> 00:18:48.005
<00:18:46.685>and <00:18:46.854>there's <00:18:47.024>parts <00:18:47.194>in <00:18:47.363>there <00:18:47.533>that <00:18:47.703>are <00:18:47.873>not

404
00:18:48.005 --> 00:18:49.085
<00:18:48.005>really <00:18:48.329>important <00:18:48.653>for <00:18:48.977>today.

405
00:18:49.245 --> 00:18:50.605
<00:18:49.245>This <00:18:49.448>is <00:18:49.653>still <00:18:49.857>the <00:18:50.061>table <00:18:50.264>of <00:18:50.469>contents.

406
00:18:50.905 --> 00:18:54.085
<00:18:50.905>Um, <00:18:51.105>for <00:18:51.305>example, <00:18:51.504>X <00:18:51.705>HTML <00:18:51.905>five <00:18:52.105>is <00:18:52.305>nothing

407
00:18:54.275 --> 00:18:56.485
<00:18:54.275>that <00:18:54.450>you <00:18:54.625>really <00:18:54.800>need <00:18:54.975>still <00:18:55.150>the <00:18:55.325>table <00:18:55.500>of <00:18:55.675>contents

408
00:18:56.785 --> 00:18:59.005
<00:18:56.785>or <00:18:57.018>details <00:18:57.251>on <00:18:57.485>how <00:18:57.718>HTML <00:18:57.951>has <00:18:58.185>passed.

409
00:18:59.105 --> 00:19:00.565
<00:18:59.105>Now <00:18:59.292>we <00:18:59.480>are <00:18:59.668>getting <00:18:59.855>into <00:19:00.043>the <00:19:00.231>real <00:19:00.419>stuff,

410
00:19:00.865 --> 00:19:03.885
<00:19:00.865>but <00:19:01.005>this <00:19:01.145>document, <00:19:01.285>more <00:19:01.425>or <00:19:01.565>less <00:19:01.705>describes <00:19:01.845>half <00:19:01.985>of <00:19:02.125>a <00:19:02.265>browser.

411
00:19:04.185 --> 00:19:06.845
<00:19:04.185>If <00:19:04.418>you <00:19:04.651>just <00:19:04.885>just <00:19:05.118>take <00:19:05.351>this <00:19:05.585>document

412
00:19:06.865 --> 00:19:09.685
<00:19:06.865>and <00:19:06.992>turn <00:19:07.119>it <00:19:07.246>into <00:19:07.374>code <00:19:07.501>from <00:19:07.628>top <00:19:07.755>to <00:19:07.883>bottom, <00:19:08.010>you <00:19:08.137>end <00:19:08.265>up

413
00:19:09.715 --> 00:19:10.965
<00:19:09.715>with <00:19:09.996>a <00:19:10.277>proper <00:19:10.558>web <00:19:10.840>browser.

414
00:19:11.505 --> 00:19:14.645
<00:19:11.505>And <00:19:11.680>this <00:19:11.855>is <00:19:12.030>full <00:19:12.205>of <00:19:12.380>APIs <00:19:12.555>and <00:19:12.730>strange <00:19:12.905>behaviors

415
00:19:14.745 --> 00:19:18.245
<00:19:14.745>and <00:19:14.872>edge <00:19:14.999>cases <00:19:15.126>that <00:19:15.254>you <00:19:15.381>can <00:19:15.508>use <00:19:15.635>to <00:19:15.763>make <00:19:15.890>your <00:19:16.017>project <00:19:16.145>work

416
00:19:18.425 --> 00:19:19.485
<00:19:18.425>for <00:19:18.902>you <00:19:19.379>again.

417
00:19:20.105 --> 00:19:23.725
<00:19:20.105>Uh, <00:19:20.571>so <00:19:21.038>for <00:19:21.505>example,

418
00:19:24.805 --> 00:19:27.405
<00:19:24.805>I <00:19:24.980>came <00:19:25.155>across <00:19:25.330>this <00:19:25.505>problem <00:19:25.680>with <00:19:25.855>a <00:19:26.030>customer, <00:19:26.205>um,

419
00:19:27.555 --> 00:19:30.325
<00:19:27.555>back <00:19:27.710>in <00:19:27.866>the <00:19:28.021>day <00:19:28.177>where <00:19:28.332>this <00:19:28.488>was <00:19:28.643>exactly <00:19:28.799>the <00:19:28.955>problem.

420
00:19:30.675 --> 00:19:32.605
<00:19:30.675>There's <00:19:30.908>a <00:19:31.141>white <00:19:31.375>list <00:19:31.608>of <00:19:31.841>HTM <00:19:32.075>element

421
00:19:32.705 --> 00:19:34.245
<00:19:32.705>and <00:19:32.936>custom <00:19:33.167>elements <00:19:33.398>are <00:19:33.629>not <00:19:33.860>in <00:19:34.091>there.

422
00:19:34.505 --> 00:19:36.285
<00:19:34.505>So <00:19:34.680>what <00:19:34.855>do <00:19:35.030>we <00:19:35.205>do <00:19:35.380>with <00:19:35.555>it, <00:19:35.730>with <00:19:35.905>this?

423
00:19:36.515 --> 00:19:40.005
<00:19:36.515>Well, <00:19:36.642>I <00:19:36.769>know <00:19:36.896>of <00:19:37.024>an <00:19:37.151>element <00:19:37.278>that <00:19:37.405>is <00:19:37.533>inside <00:19:37.660>the <00:19:37.787>white <00:19:37.915>list

424
00:19:40.005 --> 00:19:43.165
<00:19:40.005>that <00:19:40.145>we <00:19:40.285>can <00:19:40.425>use, <00:19:40.565>and <00:19:40.705>this <00:19:40.845>element <00:19:40.985>is <00:19:41.125>the <00:19:41.265>script <00:19:41.405>tech.

425
00:19:44.505 --> 00:19:46.775
<00:19:44.505>Why <00:19:44.971>not? <00:19:45.438>What's <00:19:45.905>this?

426
00:19:46.885 --> 00:19:50.575
<00:19:46.885>Well, <00:19:47.085>document, <00:19:47.285>right <00:19:47.485>is <00:19:47.685>an <00:19:47.885>ancient, <00:19:48.085>ancient, <00:19:48.285>what's

427
00:19:50.575 --> 00:19:54.735
<00:19:50.575>so <00:19:50.730>funny, <00:19:50.886>you <00:19:51.041>don't <00:19:51.197>even <00:19:51.352>look <00:19:51.508>that, <00:19:51.663>that <00:19:51.819>old <00:19:51.975>okay?

428
00:19:54.955 --> 00:19:58.655
<00:19:54.955>No. <00:19:55.235>This, <00:19:55.514>um, <00:19:55.794>essentially <00:19:56.074>pipes <00:19:56.355>new

429
00:19:59.165 --> 00:20:01.455
<00:19:59.165>strings <00:19:59.445>into <00:19:59.725>the <00:20:00.004>HTML <00:20:00.284>PAA <00:20:00.565>while

430
00:20:01.455 --> 00:20:02.695
<00:20:01.455>the <00:20:01.734>document <00:20:02.013>is <00:20:02.292>being <00:20:02.571>passed.

431
00:20:02.965 --> 00:20:05.015
<00:20:02.965>This <00:20:03.165>is <00:20:03.365>a <00:20:03.564>regular <00:20:03.764>script, <00:20:03.965>not <00:20:04.165>a <00:20:04.365>module.

432
00:20:05.235 --> 00:20:07.775
<00:20:05.235>So <00:20:05.390>it's <00:20:05.546>being <00:20:05.701>executed <00:20:05.857>as <00:20:06.012>the <00:20:06.168>HTML <00:20:06.323>is <00:20:06.479>being <00:20:06.635>passed.

433
00:20:08.075 --> 00:20:12.415
<00:20:08.075>So <00:20:08.182>this <00:20:08.290>is <00:20:08.398>a <00:20:08.505>way <00:20:08.613>to <00:20:08.721>shoehorn <00:20:08.828>new <00:20:08.936>HTML <00:20:09.044>text <00:20:09.151>into <00:20:09.259>the <00:20:09.367>HTML <00:20:09.475>PA

434
00:20:12.525 --> 00:20:13.935
<00:20:12.525>without <00:20:13.159>anyone <00:20:13.793>noticing.

435
00:20:14.875 --> 00:20:17.895
<00:20:14.875>And <00:20:15.050>that's <00:20:15.225>the <00:20:15.400>stuff <00:20:15.575>I'm <00:20:15.750>talking <00:20:15.925>about. <00:20:16.100>Web <00:20:16.275>components.

436
00:20:18.045 --> 00:20:21.295
<00:20:18.045>Yeah, <00:20:18.325>okay, <00:20:18.605>nice <00:20:18.885>frameworks. <00:20:19.165>Okay, <00:20:19.445>great.

437
00:20:21.675 --> 00:20:25.055
<00:20:21.675>But <00:20:21.802>how <00:20:21.929>do <00:20:22.056>we <00:20:22.184>get <00:20:22.311>this <00:20:22.438>to <00:20:22.565>work <00:20:22.693>in, <00:20:22.820>um, <00:20:22.947>a <00:20:23.075>context

438
00:20:25.265 --> 00:20:27.895
<00:20:25.265>where <00:20:25.498>these <00:20:25.731>things <00:20:25.965>aren't <00:20:26.198>really <00:20:26.431>universally <00:20:26.665>accepted

439
00:20:28.755 --> 00:20:30.655
<00:20:28.755>and <00:20:28.988>there's <00:20:29.221>more <00:20:29.455>than <00:20:29.688>the, <00:20:29.921>just <00:20:30.155>this,

440
00:20:30.885 --> 00:20:33.255
<00:20:30.885>there's <00:20:31.012>a <00:20:31.139>whole <00:20:31.266>bunch <00:20:31.394>more <00:20:31.521>that <00:20:31.648>I'm <00:20:31.775>not <00:20:31.903>going <00:20:32.030>to <00:20:32.157>talk <00:20:32.285>about

441
00:20:33.255 --> 00:20:34.775
<00:20:33.255>because <00:20:33.528>I'm <00:20:33.802>running <00:20:34.075>out <00:20:34.349>of <00:20:34.623>time.

442
00:20:35.155 --> 00:20:36.975
<00:20:35.155>But <00:20:35.435>the <00:20:35.715>general <00:20:35.995>idea <00:20:36.274>is <00:20:36.555>this.

443
00:20:37.395 --> 00:20:39.855
<00:20:37.395>And <00:20:37.595>just <00:20:37.795>to <00:20:37.995>be <00:20:38.195>clear, <00:20:38.395>I'm <00:20:38.595>not <00:20:38.795>suggesting

444
00:20:40.005 --> 00:20:41.815
<00:20:40.005>that <00:20:40.285>you <00:20:40.565>build <00:20:40.845>your <00:20:41.125>new <00:20:41.405>project,

445
00:20:42.165 --> 00:20:45.415
<00:20:42.165>your <00:20:42.398>new <00:20:42.631>modules <00:20:42.865>using <00:20:43.098>ancient <00:20:43.331>technologies, <00:20:43.565>right?

446
00:20:45.715 --> 00:20:47.140
<00:20:45.715>We <00:20:45.928>should <00:20:46.142>build <00:20:46.356>our <00:20:46.570>new <00:20:46.783>project <00:20:46.997>project

447
00:20:47.140 --> 00:20:48.885
<00:20:47.140>and <00:20:47.420>new <00:20:47.700>modules <00:20:47.980>with <00:20:48.260>web <00:20:48.540>components

448
00:20:48.945 --> 00:20:51.165
<00:20:48.945>and <00:20:49.225>frameworks <00:20:49.504>can <00:20:49.784>even <00:20:50.064>be <00:20:50.345>reactive.

449
00:20:51.165 --> 00:20:53.525
<00:20:51.165>You <00:20:51.365>want <00:20:51.565>to, <00:20:51.764>this <00:20:51.965>is <00:20:52.165>all <00:20:52.365>just <00:20:52.565>fine,

450
00:20:53.745 --> 00:20:55.005
<00:20:53.745>but <00:20:54.028>there <00:20:54.312>is <00:20:54.595>a <00:20:54.879>frontline

451
00:20:55.015 --> 00:20:56.885
<00:20:55.015>where <00:20:55.248>we <00:20:55.481>fight <00:20:55.715>against <00:20:55.948>the <00:20:56.181>legacy <00:20:56.415>monster.

452
00:20:57.185 --> 00:20:59.165
<00:20:57.185>And <00:20:57.385>on <00:20:57.585>the <00:20:57.784>frontline <00:20:57.985>in <00:20:58.185>the <00:20:58.385>war <00:20:58.585>zone,

453
00:21:00.165 --> 00:21:02.005
<00:21:00.165>anything <00:21:00.514>goes <00:21:00.865>including <00:21:01.215>document, <00:21:01.565>right?

454
00:21:02.005 --> 00:21:04.485
<00:21:02.005>If <00:21:02.205>you <00:21:02.405>ask <00:21:02.605>me, <00:21:02.805>these <00:21:03.005>are <00:21:03.205>just <00:21:03.405>tools

455
00:21:04.505 --> 00:21:07.165
<00:21:04.505>and <00:21:04.645>weapons <00:21:04.785>of <00:21:04.925>war <00:21:05.065>to <00:21:05.205>establish <00:21:05.345>a <00:21:05.485>new <00:21:05.625>and <00:21:05.765>better <00:21:05.905>future.

456
00:21:07.545 --> 00:21:08.725
<00:21:07.545>So <00:21:07.810>to <00:21:08.076>slay <00:21:08.341>the <00:21:08.607>monsters,

457
00:21:08.825 --> 00:21:11.125
<00:21:08.825>we <00:21:09.105>can <00:21:09.385>just <00:21:09.665>use <00:21:09.945>essentially <00:21:10.225>anything.

458
00:21:11.185 --> 00:21:14.005
<00:21:11.185>Why <00:21:11.385>not <00:21:11.585>iframes, <00:21:11.784>they <00:21:11.985>get <00:21:12.185>a <00:21:12.385>bad <00:21:12.585>rep,

459
00:21:14.065 --> 00:21:15.805
<00:21:14.065>but <00:21:14.298>they <00:21:14.531>are <00:21:14.765>totally <00:21:14.998>okay <00:21:15.231>to <00:21:15.465>use.

460
00:21:16.365 --> 00:21:19.245
<00:21:16.365>I <00:21:16.540>mean, <00:21:16.715>totally <00:21:16.890>standards <00:21:17.065>compliant <00:21:17.240>work <00:21:17.415>in <00:21:17.590>every <00:21:17.765>browser.

461
00:21:19.625 --> 00:21:21.205
<00:21:19.625>Um, <00:21:20.091>implements, <00:21:20.558>event <00:21:21.025>targets.

462
00:21:21.205 --> 00:21:23.685
<00:21:21.205>So <00:21:21.360>you <00:21:21.516>can <00:21:21.671>do <00:21:21.827>message <00:21:21.982>passing <00:21:22.138>between <00:21:22.293>your <00:21:22.449>web <00:21:22.605>components

463
00:21:23.785 --> 00:21:25.325
<00:21:23.785>and <00:21:24.131>your <00:21:24.478>iframes, <00:21:24.824>no <00:21:25.171>problem.

464
00:21:25.665 --> 00:21:27.325
<00:21:25.665>You <00:21:25.898>can <00:21:26.131>even, <00:21:26.365>as <00:21:26.598>I <00:21:26.831>already <00:21:27.065>said,

465
00:21:27.465 --> 00:21:29.925
<00:21:27.465>use <00:21:27.665>react <00:21:27.865>if <00:21:28.064>you <00:21:28.264>ab <00:21:28.465>absolutely <00:21:28.665>need <00:21:28.865>to.

466
00:21:30.915 --> 00:21:33.605
<00:21:30.915>Your <00:21:31.115>React <00:21:31.315>rewrite <00:21:31.514>can <00:21:31.715>start <00:21:31.915>as <00:21:32.115>an <00:21:32.315>iframe

467
00:21:33.825 --> 00:21:37.525
<00:21:33.825>for <00:21:34.000>a <00:21:34.175>single <00:21:34.350>component <00:21:34.525>somewhere <00:21:34.700>inside <00:21:34.875>your <00:21:35.050>XML <00:21:35.225>mass.

468
00:21:37.745 --> 00:21:41.205
<00:21:37.745>And <00:21:37.919>if <00:21:38.094>your <00:21:38.270>XMLS <00:21:38.445>doesn't <00:21:38.620>accept <00:21:38.794>iframes <00:21:38.969>with <00:21:39.145>react

469
00:21:41.205 --> 00:21:43.365
<00:21:41.205>inside <00:21:41.405>them, <00:21:41.605>well <00:21:41.804>you <00:21:42.004>know <00:21:42.205>the <00:21:42.405>drill, <00:21:42.605>right?

470
00:21:46.025 --> 00:21:47.845
<00:21:46.025>So <00:21:46.225>this <00:21:46.425>is <00:21:46.625>how <00:21:46.825>you <00:21:47.025>fight <00:21:47.225>the <00:21:47.425>legacy

471
00:21:47.845 --> 00:21:49.245
<00:21:47.845>monster <00:21:48.264>with <00:21:48.685>web <00:21:49.105>standards.

472
00:21:49.425 --> 00:21:52.605
<00:21:49.425>Web <00:21:49.600>standards <00:21:49.774>aren't <00:21:49.950>just <00:21:50.125>the <00:21:50.300>fancy <00:21:50.475>new <00:21:50.649>web <00:21:50.825>components.

473
00:21:53.035 --> 00:21:56.285
<00:21:53.035>They <00:21:53.162>help, <00:21:53.289>but <00:21:53.416>in <00:21:53.544>order <00:21:53.671>to <00:21:53.798>make <00:21:53.925>them <00:21:54.053>really <00:21:54.180>work, <00:21:54.307>you <00:21:54.435>need

474
00:21:56.285 --> 00:21:57.605
<00:21:56.285>to <00:21:56.522>dust <00:21:56.760>off <00:21:56.997>the <00:21:57.235>ancient <00:21:57.473>swords

475
00:21:57.665 --> 00:22:00.445
<00:21:57.665>and <00:21:57.865>slay <00:21:58.065>the <00:21:58.264>legacy <00:21:58.465>monsters <00:21:58.665>using <00:21:58.865>document <00:21:59.065>right

476
00:22:00.545 --> 00:22:03.445
<00:22:00.545>and <00:22:00.745>eye <00:22:00.945>frames <00:22:01.145>and <00:22:01.345>basically <00:22:01.545>every <00:22:01.745>bad <00:22:01.945>idea

477
00:22:03.745 --> 00:22:04.845
<00:22:03.745>anyone <00:22:04.074>has <00:22:04.405>ever <00:22:04.735>had.

478
00:22:05.265 --> 00:22:06.925
<00:22:05.265>So <00:22:05.615>that's <00:22:05.965>the <00:22:06.315>battle <00:22:06.665>plan.

479
00:22:07.155 --> 00:22:09.605
<00:22:07.155>Take <00:22:07.388>them <00:22:07.621>on <00:22:07.855>and <00:22:08.088>find <00:22:08.321>its <00:22:08.555>weaknesses.

480
00:22:10.025 --> 00:22:12.845
<00:22:10.025>Add <00:22:10.200>a <00:22:10.375>few <00:22:10.550>web <00:22:10.725>components <00:22:10.900>to <00:22:11.075>reduce <00:22:11.250>its <00:22:11.425>influence,

481
00:22:13.115 --> 00:22:15.565
<00:22:13.115>connect <00:22:13.348>the <00:22:13.581>web <00:22:13.815>components <00:22:14.048>using <00:22:14.281>message <00:22:14.515>passing.

482
00:22:15.665 --> 00:22:17.365
<00:22:15.665>You <00:22:15.945>just <00:22:16.225>use, <00:22:16.504>um, <00:22:16.784>event <00:22:17.065>targets

483
00:22:17.505 --> 00:22:19.045
<00:22:17.505>or <00:22:17.782>maybe <00:22:18.059>write <00:22:18.336>to <00:22:18.613>local <00:22:18.891>storage

484
00:22:19.045 --> 00:22:21.965
<00:22:19.045>and <00:22:19.200>use <00:22:19.356>this <00:22:19.511>as <00:22:19.667>a <00:22:19.822>message <00:22:19.978>pass <00:22:20.133>all <00:22:20.289>entirely <00:22:20.445>possible.

485
00:22:22.185 --> 00:22:24.405
<00:22:22.185>And <00:22:22.340>then <00:22:22.496>slap <00:22:22.651>a <00:22:22.807>giant <00:22:22.962>eye <00:22:23.118>frame <00:22:23.273>in <00:22:23.429>its <00:22:23.585>face.

486
00:22:25.175 --> 00:22:28.395
<00:22:25.175>And <00:22:25.315>soon <00:22:25.455>you <00:22:25.595>will <00:22:25.735>have <00:22:25.875>the <00:22:26.014>legacy <00:22:26.155>monster <00:22:26.294>so <00:22:26.435>far <00:22:26.575>reduced,

487
00:22:28.615 --> 00:22:31.395
<00:22:28.615>so <00:22:28.755>far <00:22:28.895>beaten <00:22:29.035>back <00:22:29.175>that <00:22:29.315>you <00:22:29.455>can <00:22:29.595>do <00:22:29.735>a <00:22:29.875>big <00:22:30.015>push

488
00:22:31.735 --> 00:22:34.715
<00:22:31.735>and <00:22:31.909>do <00:22:32.084>the <00:22:32.260>final <00:22:32.435>rewrite <00:22:32.610>in, <00:22:32.784>you <00:22:32.959>know, <00:22:33.135>react

489
00:22:34.715 --> 00:22:36.195
<00:22:34.715>or <00:22:34.937>whatever <00:22:35.158>if <00:22:35.380>you <00:22:35.602>really <00:22:35.824>need <00:22:36.047>to.

490
00:22:36.455 --> 00:22:38.995
<00:22:36.455>So <00:22:36.688>this <00:22:36.921>again <00:22:37.155>is <00:22:37.388>my <00:22:37.621>battle <00:22:37.855>plan

491
00:22:38.995 --> 00:22:40.395
<00:22:38.995>for <00:22:39.310>laying <00:22:39.625>the <00:22:39.940>legacy <00:22:40.254>monster.

492
00:22:40.805 --> 00:22:44.075
<00:22:40.805>Understand <00:22:40.945>that <00:22:41.085>the <00:22:41.225>monster <00:22:41.365>is <00:22:41.505>not <00:22:41.645>just <00:22:41.785>a <00:22:41.925>piece <00:22:42.065>of <00:22:42.205>software,

493
00:22:44.075 --> 00:22:45.715
<00:22:44.075>something <00:22:44.308>that <00:22:44.541>you <00:22:44.775>have <00:22:45.008>to <00:22:45.241>work <00:22:45.475>with,

494
00:22:45.895 --> 00:22:47.075
<00:22:45.895>but <00:22:46.160>that <00:22:46.426>it's <00:22:46.691>your <00:22:46.957>enemy

495
00:22:47.095 --> 00:22:49.555
<00:22:47.095>and <00:22:47.250>that <00:22:47.406>you <00:22:47.561>need <00:22:47.717>to <00:22:47.872>wage <00:22:48.028>war <00:22:48.183>against <00:22:48.339>your <00:22:48.495>enemy.

496
00:22:50.115 --> 00:22:52.915
<00:22:50.115>Identify <00:22:50.270>its <00:22:50.426>weak <00:22:50.581>points <00:22:50.737>and <00:22:50.892>exploit <00:22:51.048>the <00:22:51.203>weak <00:22:51.359>points <00:22:51.515>using

497
00:22:52.915 --> 00:22:54.795
<00:22:52.915>Webster <00:22:53.148>Nets <00:22:53.381>and <00:22:53.615>especially <00:22:53.848>the <00:22:54.081>web <00:22:54.315>standards

498
00:22:54.795 --> 00:22:55.995
<00:22:54.795>that <00:22:55.011>you <00:22:55.227>don't <00:22:55.443>really <00:22:55.658>think <00:22:55.875>about.

499
00:22:56.055 --> 00:22:59.035
<00:22:56.055>If <00:22:56.182>you <00:22:56.309>talk <00:22:56.436>to <00:22:56.564>a <00:22:56.691>bunch <00:22:56.818>of <00:22:56.945>influencers <00:22:57.073>on <00:22:57.200>a <00:22:57.327>giant <00:22:57.455>conference,

500
00:22:59.205 --> 00:23:02.235
<00:22:59.205>think <00:22:59.360>about <00:22:59.516>all <00:22:59.671>the <00:22:59.827>bad <00:22:59.982>ideas <00:23:00.138>anyone <00:23:00.293>has <00:23:00.449>ever <00:23:00.605>had

501
00:23:02.415 --> 00:23:05.595
<00:23:02.415>and <00:23:02.590>use <00:23:02.764>them <00:23:02.940>to <00:23:03.115>go <00:23:03.290>out <00:23:03.465>there <00:23:03.639>and <00:23:03.815>slay.

502
00:23:06.865 --> 00:23:09.555
<00:23:06.865>Okay, <00:23:07.005>that's <00:23:07.145>all <00:23:07.285>I <00:23:07.425>got. <00:23:07.565>Thank <00:23:07.705>you. <00:23:07.845>Have <00:23:07.985>a <00:23:08.125>nice <00:23:08.265>conference.

503
00:23:18.085 --> 00:23:19.195
<00:23:18.085>Thank <00:23:18.334>you <00:23:18.584>very <00:23:18.834>much, <00:23:19.083>Peter.

504
00:23:19.615 --> 00:23:24.005
<00:23:19.615>Um, <00:23:19.965>we <00:23:20.315>have <00:23:20.665>one <00:23:21.015>question

505
00:23:24.185 --> 00:23:25.445
<00:23:24.185>and <00:23:24.468>a <00:23:24.752>very <00:23:25.035>important <00:23:25.319>one.

506
00:23:25.515 --> 00:23:28.125
<00:23:25.515>Yeah. <00:23:25.748>Where <00:23:25.981>did <00:23:26.215>you <00:23:26.448>buy <00:23:26.681>that <00:23:26.915>shirt?

507
00:23:29.455 --> 00:23:32.035
<00:23:29.455>Uh, <00:23:29.582>where <00:23:29.709>did <00:23:29.836>I <00:23:29.964>buy <00:23:30.091>this <00:23:30.218>shirt? <00:23:30.345>Uh, <00:23:30.473>well, <00:23:30.600>on <00:23:30.727>the <00:23:30.855>internet.

508
00:23:32.435 --> 00:23:33.635
<00:23:32.435>Um, <00:23:33.514>that's

509
00:23:33.635 --> 00:23:34.795
<00:23:33.635>Why <00:23:33.843>we <00:23:34.052>buy <00:23:34.261>our <00:23:34.470>stuff, <00:23:34.679>right?

510
00:23:34.825 --> 00:23:37.515
<00:23:34.825>Yeah, <00:23:34.980>that's <00:23:35.136>true. <00:23:35.291>No, <00:23:35.447>uh, <00:23:35.602>Hayden <00:23:35.758>Pickering <00:23:35.913>is <00:23:36.069>his <00:23:36.225>name.

511
00:23:37.855 --> 00:23:40.115
<00:23:37.855>He <00:23:38.030>makes <00:23:38.205>a <00:23:38.380>bunch <00:23:38.555>of <00:23:38.730>shirts, <00:23:38.905>um, <00:23:39.080>with <00:23:39.255>themes

512
00:23:40.175 --> 00:23:42.475
<00:23:40.175>around <00:23:40.350>web <00:23:40.524>standards, <00:23:40.700>does <00:23:40.875>a <00:23:41.050>bunch <00:23:41.225>of <00:23:41.399>funny <00:23:41.575>videos.

513
00:23:42.735 --> 00:23:44.475
<00:23:42.735>And <00:23:43.014>if <00:23:43.294>you <00:23:43.574>also <00:23:43.854>think, <00:23:44.135>um,

514
00:23:44.575 --> 00:23:49.085
<00:23:44.575>modern <00:23:44.730>web <00:23:44.886>frameworks <00:23:45.041>are <00:23:45.197>not <00:23:45.352>maybe <00:23:45.508>the <00:23:45.663>final <00:23:45.819>best <00:23:45.975>idea

515
00:23:49.185 --> 00:23:51.205
<00:23:49.185>for <00:23:49.418>web <00:23:49.651>development, <00:23:49.885>you <00:23:50.118>will <00:23:50.351>find <00:23:50.585>him.

516
00:23:51.625 --> 00:23:54.125
<00:23:51.625>Um, <00:23:52.091>quite <00:23:52.558>interesting. <00:23:53.025>Okay.

517
00:23:54.625 --> 00:23:58.565
<00:23:54.625>Um, <00:23:54.765>you <00:23:54.905>said <00:23:55.045>that <00:23:55.185>old, <00:23:55.325>uh, <00:23:55.465>HTML <00:23:55.605>text <00:23:55.745>are <00:23:55.885>still <00:23:56.025>supported.

518
00:23:59.105 --> 00:24:01.285
<00:23:59.105>One <00:23:59.260>I <00:23:59.416>know <00:23:59.571>of <00:23:59.727>is <00:23:59.882>not <00:24:00.038>that, <00:24:00.193>is <00:24:00.349>BG <00:24:00.505>sound

519
00:24:01.285 --> 00:24:05.245
<00:24:01.285>that <00:24:01.440>only <00:24:01.596>word <00:24:01.751>in <00:24:01.907>Internet <00:24:02.062>Explorer <00:24:02.218>to <00:24:02.373>play <00:24:02.529>annoying <00:24:02.685>music

520
00:24:05.425 --> 00:24:06.685
<00:24:05.425>to <00:24:05.708>your <00:24:05.992>users <00:24:06.275>in <00:24:06.559>ie?

521
00:24:06.955 --> 00:24:09.565
<00:24:06.955>Well, <00:24:07.129>that <00:24:07.304>depends <00:24:07.480>on <00:24:07.655>what <00:24:07.830>you <00:24:08.004>mean <00:24:08.179>by <00:24:08.355>work.

522
00:24:10.565 --> 00:24:13.125
<00:24:10.565>I <00:24:10.681>mean, <00:24:10.798>if <00:24:10.915>you <00:24:11.031>take <00:24:11.148>a <00:24:11.265>look <00:24:11.381>at <00:24:11.498>something <00:24:11.615>like <00:24:11.731>the <00:24:11.848>Blink <00:24:11.965>Tech,

523
00:24:13.195 --> 00:24:15.165
<00:24:13.195>it's <00:24:13.475>still <00:24:13.754>specified <00:24:14.034>in <00:24:14.314>the <00:24:14.595>standards,

524
00:24:15.385 --> 00:24:18.885
<00:24:15.385>but <00:24:15.512>it <00:24:15.639>might <00:24:15.766>be <00:24:15.894>specified <00:24:16.021>in <00:24:16.148>a <00:24:16.275>way <00:24:16.403>that, <00:24:16.530>um, <00:24:16.657>describes <00:24:16.785>it

525
00:24:18.885 --> 00:24:23.605
<00:24:18.885>as <00:24:19.040>having <00:24:19.196>no <00:24:19.351>effect, <00:24:19.507>which <00:24:19.662>is <00:24:19.818>some <00:24:19.973>somewhere <00:24:20.129>between <00:24:20.285>works

526
00:24:23.625 --> 00:24:25.365
<00:24:23.625>and <00:24:23.858>doesn't <00:24:24.091>work, <00:24:24.325>I <00:24:24.558>would <00:24:24.791>say. <00:24:25.025>Okay.

527
00:24:25.365 --> 00:24:28.165
<00:24:25.365>Okay. <00:24:25.565>Um, <00:24:25.765>one <00:24:25.965>important <00:24:26.165>question <00:24:26.365>is <00:24:26.565>as <00:24:26.765>well,

528
00:24:28.905 --> 00:24:30.605
<00:24:28.905>why <00:24:29.185>do <00:24:29.465>you <00:24:29.745>hate <00:24:30.024>React? <00:24:30.305>Uh,

529
00:24:31.085 --> 00:24:33.285
<00:24:31.085>I, <00:24:31.260>I <00:24:31.435>don't <00:24:31.610>hate <00:24:31.785>react <00:24:31.960>that <00:24:32.135>much, <00:24:32.310>it's <00:24:32.485>just

530
00:24:33.285 --> 00:24:35.565
<00:24:33.285>that <00:24:33.440>I <00:24:33.596>have <00:24:33.751>a <00:24:33.907>bit <00:24:34.062>of <00:24:34.218>experience <00:24:34.373>with, <00:24:34.529>with <00:24:34.685>React.

531
00:24:35.565 --> 00:24:36.765
<00:24:35.565>And <00:24:35.719>so <00:24:35.873>I <00:24:36.027>know <00:24:36.182>of <00:24:36.336>its <00:24:36.490>weak <00:24:36.645>points

532
00:24:36.985 --> 00:24:41.245
<00:24:36.985>and <00:24:37.125>really <00:24:37.264>when <00:24:37.405>I <00:24:37.544>started <00:24:37.685>working <00:24:37.824>on <00:24:37.965>these <00:24:38.104>JSF <00:24:38.245>Legacy <00:24:38.385>XML

533
00:24:41.245 --> 00:24:44.365
<00:24:41.245>monstrosities, <00:24:41.445>my <00:24:41.645>mind <00:24:41.844>went <00:24:42.044>directly <00:24:42.245>back <00:24:42.445>to <00:24:42.645>React.

534
00:24:44.665 --> 00:24:47.245
<00:24:44.665>Oh, <00:24:44.805>I <00:24:44.945>know <00:24:45.085>this, <00:24:45.225>so <00:24:45.365>I <00:24:45.504>know <00:24:45.645>how <00:24:45.784>to <00:24:45.925>subvert <00:24:46.065>it.

535
00:24:47.715 --> 00:24:49.885
<00:24:47.715>This <00:24:47.855>is <00:24:47.995>just, <00:24:48.135>you <00:24:48.274>know, <00:24:48.415>I <00:24:48.554>know <00:24:48.695>a <00:24:48.834>bit <00:24:48.975>of <00:24:49.115>react,

536
00:24:49.885 --> 00:24:51.125
<00:24:49.885>that's <00:24:50.164>why <00:24:50.443>I <00:24:50.722>hate <00:24:51.001>it.

537
00:24:51.835 --> 00:24:54.365
<00:24:51.835>Okay. <00:24:52.035>Uh, <00:24:52.235>thank <00:24:52.435>you <00:24:52.635>very <00:24:52.835>much, <00:24:53.035>uh, <00:24:53.235>Peter,

538
00:24:54.795 --> 00:24:56.685
<00:24:54.795>give <00:24:54.970>him <00:24:55.145>a <00:24:55.320>one <00:24:55.495>more <00:24:55.670>round <00:24:55.845>of <00:24:56.020>applause <00:24:56.195>please.

539
00:25:00.945 --> 00:25:05.405
<00:25:00.945>And <00:25:01.085>in <00:25:01.225>about <00:25:01.365>15 <00:25:01.504>minutes, <00:25:01.645>Manuel <00:25:01.784>is <00:25:01.925>here <00:25:02.064>talking <00:25:02.205>about <00:25:02.345>also,

540
00:25:05.645 --> 00:25:07.365
<00:25:05.645>I <00:25:05.878>think, <00:25:06.111>yeah, <00:25:06.345>also <00:25:06.578>about <00:25:06.811>web <00:25:07.045>components,

541
00:25:07.505 --> 00:25:09.165
<00:25:07.505>but <00:25:07.785>important <00:25:08.065>thing <00:25:08.345>next <00:25:08.625>to <00:25:08.905>it.

542
00:25:09.165 --> 00:25:10.685
<00:25:09.165>Accessibility. <00:25:10.533>Yes.

543
00:25:10.755 --> 00:25:14.045
<00:25:10.755>Have, <00:25:10.895>uh, <00:25:11.035>the <00:25:11.175>last <00:25:11.315>Troup <00:25:11.455>offers <00:25:11.595>I've <00:25:11.735>brought <00:25:11.875>here. <00:25:12.015>See <00:25:12.155>you.