From a835a2b017829395cba32e3fc2dc19a51f32cf69 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 13 Dec 2020 01:35:03 -0500 Subject: Add subtitles for talk07 --- ...acs-a-scalable-ui-paradigm--sid-kasivajhula.vtt | 1285 ++++++++++++++++++++ 1 file changed, 1285 insertions(+) create mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt (limited to '2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt') diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt new file mode 100644 index 00000000..14913a32 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt @@ -0,0 +1,1285 @@ +WEBVTT + +00:00:02.960 --> 00:00:04.960 +"Far away in the heavenly abode of the + +00:00:04.960 --> 00:00:06.560 +great god Indra, + +00:00:06.560 --> 00:00:08.320 +there is a wonderful net which has been + +00:00:08.320 --> 00:00:10.160 +hung by some cunning artificer + +00:00:10.160 --> 00:00:12.080 +in such a manner that it stretches out + +00:00:12.080 --> 00:00:14.320 +infinitely in all directions. + +00:00:14.320 --> 00:00:15.920 +In accordance with the extravagant + +00:00:15.920 --> 00:00:18.240 +tastes of deities, the artificer has hung + +00:00:18.240 --> 00:00:20.960 +a single glittering jewel in each eye of + +00:00:20.960 --> 00:00:22.080 +the net, + +00:00:22.080 --> 00:00:24.000 +and since the net itself is infinite, the + +00:00:24.000 --> 00:00:26.480 +jewels are infinite in number. + +00:00:26.480 --> 00:00:28.400 +There hang the jewels, glittering like + +00:00:28.400 --> 00:00:30.480 +stars in the first magnitude, + +00:00:30.480 --> 00:00:33.440 +a wonderful sight to behold. Were we to + +00:00:33.440 --> 00:00:34.800 +select one of these jewels for + +00:00:34.800 --> 00:00:35.680 +inspection, + +00:00:35.680 --> 00:00:37.760 +we would discover that in its polished + +00:00:37.760 --> 00:00:39.520 +surface there are reflected + +00:00:39.520 --> 00:00:41.920 +all the other jewels in the net, infinite + +00:00:41.920 --> 00:00:43.360 +in number. + +00:00:43.360 --> 00:00:45.600 +If we look still more closely, we would + +00:00:45.600 --> 00:00:47.840 +see that each of the jewels reflected in + +00:00:47.840 --> 00:00:48.960 +this one jewel + +00:00:48.960 --> 00:00:52.239 +reflects all the others." This is the + +00:00:52.239 --> 00:00:54.000 +metaphor of Indra's Net, + +00:00:54.000 --> 00:00:56.840 +which is told in some schools of + +00:00:56.840 --> 00:00:59.359 +philosophy. Let's keep this metaphor in + +00:00:59.359 --> 00:01:00.160 +mind, + +00:01:00.160 --> 00:01:01.920 +because it'll help us understand the + +00:01:01.920 --> 00:01:03.760 +Emacs extension that we're about to + +00:01:03.760 --> 00:01:06.960 +discuss. + +00:01:06.960 --> 00:01:10.080 +In editing text, there's two + +00:01:10.080 --> 00:01:13.200 +main paradigms: one + +00:01:13.200 --> 00:01:16.880 +is editing at the ground level, + +00:01:16.880 --> 00:01:19.439 +where the characters that we type + +00:01:19.439 --> 00:01:22.159 +actually appear on the screen, + +00:01:22.159 --> 00:01:25.960 +the changes we make actually occur. + +00:01:28.479 --> 00:01:30.720 +The other editing paradigm is where we + +00:01:30.720 --> 00:01:33.439 +escape to a higher level + +00:01:33.439 --> 00:01:36.000 +and now the characters that we type are + +00:01:36.000 --> 00:01:36.479 +not... + +00:01:36.479 --> 00:01:39.040 +They don't actually appear on the screen + +00:01:39.040 --> 00:01:41.600 +because we're not at the ground level + +00:01:41.600 --> 00:01:44.799 +with the text, we are at a higher level + +00:01:44.799 --> 00:01:48.479 +looking down at the text + +00:01:48.479 --> 00:01:51.920 +and regarding the text, referring to + +00:01:51.920 --> 00:01:54.640 +this world of text in terms of a + +00:01:54.640 --> 00:01:56.159 +language. + +00:01:56.159 --> 00:01:57.920 +For instance, we could describe this + +00:01:57.920 --> 00:02:00.640 +world as having words and paragraphs and + +00:02:00.640 --> 00:02:02.079 +sentences and + +00:02:02.079 --> 00:02:04.640 +lines and so on. We could reason + +00:02:04.640 --> 00:02:05.360 +about this + +00:02:05.360 --> 00:02:08.800 +text in terms of these + +00:02:08.800 --> 00:02:11.440 +textual entities and this textual + +00:02:11.440 --> 00:02:13.120 +language. + +00:02:13.120 --> 00:02:15.920 +This is the second paradigm of text + +00:02:15.920 --> 00:02:18.640 +editing. + +00:02:18.640 --> 00:02:22.800 +When we're in the second paradigm, + +00:02:22.800 --> 00:02:24.800 +there is a way to go down to ground + +00:02:24.800 --> 00:02:26.480 +level. You hit Enter + +00:02:26.480 --> 00:02:28.160 +now--or we'll hit Enter to go down to the + +00:02:28.160 --> 00:02:30.480 +ground level, and you can hit Escape + +00:02:30.480 --> 00:02:33.200 +to go back out to the referential level. + +00:02:33.200 --> 00:02:35.200 +Enter to go down to ground level + +00:02:35.200 --> 00:02:37.280 +and Escape to go up to the referential + +00:02:37.280 --> 00:02:40.160 +level. + +00:02:40.160 --> 00:02:44.879 +Now, in Vim, the nouns + +00:02:44.879 --> 00:02:48.239 +in this world of text all + +00:02:48.239 --> 00:02:50.959 +share the same referential plane which + +00:02:50.959 --> 00:02:51.519 +we call + +00:02:51.519 --> 00:02:54.319 +normal mode. So in normal mode, all of the + +00:02:54.319 --> 00:02:54.959 +nouns + +00:02:54.959 --> 00:02:57.360 +of the world of text are available, + +00:02:57.360 --> 00:02:58.959 +whether it's words or sentences or + +00:02:58.959 --> 00:03:00.959 +paragraphs, + +00:03:00.959 --> 00:03:04.400 +and they all share this same + +00:03:04.400 --> 00:03:08.319 +referential plane. + +00:03:08.319 --> 00:03:11.120 +They compete for space on the + +00:03:11.120 --> 00:03:12.720 +keyboard. + +00:03:12.720 --> 00:03:15.760 +An alternative + +00:03:15.760 --> 00:03:17.680 +way to structure these modes is instead + +00:03:17.680 --> 00:03:19.280 +of having a single mode where all the + +00:03:19.280 --> 00:03:21.840 +nouns coexist, + +00:03:21.840 --> 00:03:24.959 +peacefully or otherwise, you instead + +00:03:24.959 --> 00:03:30.400 +have a dedicated mode for every noun. + +00:03:30.400 --> 00:03:33.040 +In that case, what happens is because + +00:03:33.040 --> 00:03:35.440 +your modal spaces are now much smaller, + +00:03:35.440 --> 00:03:37.280 +you're just talking about words or + +00:03:37.280 --> 00:03:38.720 +paragraphs or + +00:03:38.720 --> 00:03:42.560 +lines or something, the keys that you use + +00:03:42.560 --> 00:03:45.760 +can be much more targeted. + +00:03:45.760 --> 00:03:48.560 +You can use the same keystrokes in + +00:03:48.560 --> 00:03:50.400 +in all of your modes and they would have + +00:03:50.400 --> 00:03:52.000 +the same ideas behind them, but + +00:03:52.000 --> 00:03:53.280 +they would have different effects + +00:03:53.280 --> 00:03:55.519 +depending on which context you're using. + +00:03:55.519 --> 00:03:57.519 +It's the same keystrokes, different + +00:03:57.519 --> 00:03:59.120 +contexts. + +00:03:59.120 --> 00:04:01.360 +The advantage of that is it's often + +00:04:01.360 --> 00:04:02.480 +easier + +00:04:02.480 --> 00:04:05.519 +to change context than it is to + +00:04:05.519 --> 00:04:09.040 +learn new key bindings. So let's see + +00:04:09.040 --> 00:04:12.080 +an example of how that works. We go into + +00:04:12.080 --> 00:04:13.680 +character mode, and if you look at the + +00:04:13.680 --> 00:04:15.439 +mode line at the bottom of the screen there, + +00:04:15.439 --> 00:04:18.720 +you'll see that we're in character mode. + +00:04:18.720 --> 00:04:21.519 +Now, when we move up, down, left, and + +00:04:21.519 --> 00:04:23.919 +right, we're moving by character. + +00:04:23.919 --> 00:04:28.479 +We can also transform the text, and + +00:04:28.479 --> 00:04:30.240 +the transformations occur in terms of + +00:04:30.240 --> 00:04:32.400 +character. + +00:04:32.400 --> 00:04:34.320 +You can also go into word mode. In + +00:04:34.320 --> 00:04:35.520 +word mode, + +00:04:35.520 --> 00:04:38.560 +the transformations that you do are on + +00:04:38.560 --> 00:04:40.000 +words. + +00:04:40.000 --> 00:04:42.320 +and you try... Your movement is also in + +00:04:42.320 --> 00:04:43.440 +terms of words. + +00:04:43.440 --> 00:04:45.600 +So that's the level of granularity that + +00:04:45.600 --> 00:04:46.560 +you have. + +00:04:46.560 --> 00:04:49.520 +You could also go to line mode. When + +00:04:49.520 --> 00:04:50.720 +you're in line mode, + +00:04:50.720 --> 00:04:53.759 +you go up and down by line, and you can + +00:04:53.759 --> 00:04:54.240 +move lines + +00:04:54.240 --> 00:04:57.520 +up and down left and right and so on. + +00:04:59.120 --> 00:05:00.880 +The transformations you do are in + +00:05:00.880 --> 00:05:02.800 +terms of lines. + +00:05:02.800 --> 00:05:08.400 +You could also go to window mode, where + +00:05:08.400 --> 00:05:10.639 +now the objects that you're referring to + +00:05:10.639 --> 00:05:12.400 +are windows. You can + +00:05:12.400 --> 00:05:15.759 +move spatially amongst the windows or + +00:05:15.759 --> 00:05:17.520 +do transformations on the windows + +00:05:17.520 --> 00:05:20.850 +using the same keystrokes. + +00:05:25.360 --> 00:05:28.720 +So let's go to... + +00:05:28.720 --> 00:05:32.800 +Right. One of the things, + +00:05:32.800 --> 00:05:35.280 +the principles that play here is + +00:05:35.280 --> 00:05:36.880 +something called the Rumpelstiltskin + +00:05:36.880 --> 00:05:38.000 +principle, which is something + +00:05:38.000 --> 00:05:40.720 +that's known in computer science. + +00:05:40.720 --> 00:05:42.320 +If you can name something, then + +00:05:43.759 --> 00:05:46.720 +you have power over it. This is + +00:05:46.720 --> 00:05:48.560 +kind of an adaptation of that principle + +00:05:48.560 --> 00:05:50.479 +which says that if you can + +00:05:50.479 --> 00:05:52.320 +name something and if you can talk about + +00:05:52.320 --> 00:05:54.000 +it, then it's a noun + +00:05:55.360 --> 00:05:56.960 +in your editing language. If it's a + +00:05:56.960 --> 00:05:58.960 +noun, then it has... + +00:05:58.960 --> 00:06:01.520 +It's a mode. So if we can talk about it, + +00:06:01.520 --> 00:06:02.319 +it's a noun. + +00:06:02.319 --> 00:06:05.039 +If it's a noun, then it's a mode. One + +00:06:05.039 --> 00:06:06.479 +of the things we've been talking a lot + +00:06:06.479 --> 00:06:07.039 +about + +00:06:07.039 --> 00:06:10.800 +is modes. In fact, + +00:06:10.800 --> 00:06:14.240 +by this principle, modes also + +00:06:14.240 --> 00:06:17.280 +should be a mode. + +00:06:17.280 --> 00:06:19.039 +You should have a mode that can reason + +00:06:19.039 --> 00:06:21.120 +in terms of modes as objects, just like + +00:06:21.120 --> 00:06:22.080 +you have + +00:06:22.080 --> 00:06:23.759 +modes where you can reason in terms of + +00:06:23.759 --> 00:06:26.560 +words or lines as objects. + +00:06:26.560 --> 00:06:28.800 +So let's do that. Let's go to mode + +00:06:28.800 --> 00:06:30.479 +mode. + +00:06:30.479 --> 00:06:34.000 +When you go to mode mode, you see that + +00:06:34.000 --> 00:06:36.080 +the objects that are depicted here are + +00:06:36.080 --> 00:06:37.919 +the modes that are + +00:06:37.919 --> 00:06:40.960 +present in the buffer, + +00:06:40.960 --> 00:06:44.880 +which we knew about because the + +00:06:44.880 --> 00:06:46.400 +style of editing that we had in this + +00:06:46.400 --> 00:06:48.720 +buffer was the Vim style of editing + +00:06:48.720 --> 00:06:50.479 +where there's an insert mode at the + +00:06:50.479 --> 00:06:52.400 +ground level and a normal mode that you + +00:06:52.400 --> 00:06:53.039 +can escape to. + +00:06:53.039 --> 00:06:57.280 +You insert, enter the ground level. + +00:06:57.280 --> 00:07:00.479 +Enter to the insert mode and escape to + +00:07:00.479 --> 00:07:02.880 +normal mode. When you look at the + +00:07:02.880 --> 00:07:03.680 +mode mode + +00:07:03.680 --> 00:07:06.160 +representation, you see that in fact that + +00:07:06.160 --> 00:07:10.479 +is the structure that's depicted. + +00:07:10.479 --> 00:07:12.720 +But in different situations, you might + +00:07:12.720 --> 00:07:14.080 +find + +00:07:14.080 --> 00:07:16.080 +that these modes are not the + +00:07:16.080 --> 00:07:17.680 +ones that you want. You want something + +00:07:17.680 --> 00:07:19.360 +more tailored for the specific + +00:07:19.360 --> 00:07:20.880 +application. + +00:07:20.880 --> 00:07:23.050 +For instance, if you're editing + +00:07:24.240 --> 00:07:27.360 +Lisp code (or code in general, but + +00:07:27.360 --> 00:07:30.880 +Lisp code is a particular example), + +00:07:30.880 --> 00:07:32.960 +you might want to take advantage of the + +00:07:32.960 --> 00:07:34.000 +structure of + +00:07:34.000 --> 00:07:37.599 +the code. For Lisp code in particular, + +00:07:37.599 --> 00:07:40.960 +we have a mode called symex-mode + +00:07:40.960 --> 00:07:44.240 +which is able to reason + +00:07:44.240 --> 00:07:46.720 +about your code in terms of its tree + +00:07:46.720 --> 00:07:47.919 +structure. + +00:07:47.919 --> 00:07:50.560 +So you can use the same keystrokes: hjkl + +00:07:50.560 --> 00:07:51.120 +goes + +00:07:51.120 --> 00:07:53.440 +left, right, up, and down, but you also have + +00:07:53.440 --> 00:07:54.960 +other keystrokes that are more + +00:07:54.960 --> 00:07:58.080 +specialized to the application. + +00:07:58.080 --> 00:08:01.520 +You can run the code. + +00:08:01.520 --> 00:08:06.960 +We'll see that happen here in a minute. + +00:08:06.960 --> 00:08:10.080 +You can make changes to it really + +00:08:10.080 --> 00:08:12.240 +quickly + +00:08:12.240 --> 00:08:18.000 +and see the effects of those changes. + +00:08:18.000 --> 00:08:19.440 +You're doing this all in a mode + +00:08:19.440 --> 00:08:21.360 +that's convenient for + +00:08:21.360 --> 00:08:23.199 +this particular application, which is + +00:08:23.199 --> 00:08:25.039 +editing Lisp code, + +00:08:25.039 --> 00:08:28.960 +and that is, in this case, symex-mode. + +00:08:28.960 --> 00:08:31.039 +Typically, when you're editing code + +00:08:31.039 --> 00:08:32.640 +like this, you'd want to be + +00:08:32.640 --> 00:08:34.800 +in insert mode actually typing out the + +00:08:34.800 --> 00:08:36.640 +code, + +00:08:36.640 --> 00:08:38.320 +and then you'd want to escape to symex + +00:08:38.320 --> 00:08:40.959 +mode rather than normal mode, + +00:08:40.959 --> 00:08:42.159 +and then you could escape again and + +00:08:42.159 --> 00:08:44.080 +you'd end up in normal mode. + +00:08:44.080 --> 00:08:46.720 +So this, if we go to mode mode, we see is + +00:08:46.720 --> 00:08:48.000 +depicted + +00:08:48.000 --> 00:08:51.040 +as this tower where insert is at the + +00:08:51.040 --> 00:08:52.800 +bottom and normal is at the top, but + +00:08:52.800 --> 00:08:54.800 +symex-mode is in between + +00:08:54.800 --> 00:08:57.200 +the two. You could also change that if + +00:08:57.200 --> 00:08:58.800 +you like. If you don't want symex-mode to + +00:08:58.800 --> 00:09:00.640 +be there, you could just + +00:09:00.640 --> 00:09:03.760 +move it to the top. Now you find symex is + +00:09:03.760 --> 00:09:05.600 +at the top and you enter down to + +00:09:05.600 --> 00:09:06.160 +normal. + +00:09:06.160 --> 00:09:07.600 +You can see it on the status bar at the + +00:09:07.600 --> 00:09:10.480 +bottom there. Enter to insert, + +00:09:10.480 --> 00:09:13.839 +escape to normal, escape to symex. + +00:09:13.839 --> 00:09:16.480 +In fact, you can even add more modes if + +00:09:16.480 --> 00:09:19.380 +you don't like the existing ones. + +00:09:21.519 --> 00:09:23.839 +Now we have an additional mode here. + +00:09:23.839 --> 00:09:25.440 +We have window mode. It goes down to + +00:09:25.440 --> 00:09:27.519 +symex, it goes down to normal. + +00:09:27.519 --> 00:09:30.320 +Enter the insert, escape to normal, escape + +00:09:30.320 --> 00:09:33.600 +to symex, escape to window. + +00:09:33.600 --> 00:09:37.600 +So we've talked... Okay, so another thing + +00:09:37.600 --> 00:09:41.760 +actually to note here is that in editing + +00:09:41.760 --> 00:09:45.360 +modes, + +00:09:45.360 --> 00:09:46.720 +if you look at the mode line at the + +00:09:46.720 --> 00:09:48.399 +bottom of the screen, + +00:09:48.399 --> 00:09:50.640 +you'll see that we are currently, in this + +00:09:50.640 --> 00:09:51.519 +buffer, + +00:09:51.519 --> 00:09:54.560 +we are currently in line mode. + +00:09:54.560 --> 00:09:57.600 +I'm going to hit Enter now and + +00:09:57.600 --> 00:09:58.720 +you'll see that when I hit + +00:09:58.720 --> 00:10:01.519 +Enter, nothing is happening. It's still in + +00:10:01.519 --> 00:10:02.160 +line mode. + +00:10:02.160 --> 00:10:05.120 +If you hit Escape, it's still in line mode. + +00:10:05.120 --> 00:10:07.200 +You can find out the reason for that + +00:10:07.200 --> 00:10:10.640 +by taking another meta jump out of this. + +00:10:10.640 --> 00:10:12.800 +You'll see that, in fact, the reason + +00:10:12.800 --> 00:10:15.279 +is that we're currently in line mode, + +00:10:15.279 --> 00:10:17.360 +and line mode is the only one available + +00:10:17.360 --> 00:10:19.519 +in this tower + +00:10:19.519 --> 00:10:21.760 +for editing the modes that are in + +00:10:21.760 --> 00:10:24.880 +operation in your ground level. + +00:10:24.880 --> 00:10:26.560 +In fact, line mode is all you need + +00:10:26.560 --> 00:10:28.320 +here, because this is just + +00:10:28.320 --> 00:10:30.320 +the nature of how these modes are + +00:10:30.320 --> 00:10:32.079 +laid out is + +00:10:32.079 --> 00:10:35.040 +in rows. So line mode is the most + +00:10:35.040 --> 00:10:36.399 +appropriate thing here. + +00:10:36.399 --> 00:10:37.680 +But you could change it to something + +00:10:37.680 --> 00:10:39.740 +else if you like. + +00:10:40.959 --> 00:10:44.160 +Now we've seen two towers. We've + +00:10:44.160 --> 00:10:44.560 +seen + +00:10:44.560 --> 00:10:48.079 +the Vim tower and we've seen + +00:10:48.079 --> 00:10:53.680 +also the symex tower, the Lisp tower. + +00:10:53.680 --> 00:10:56.959 +It turns out that, because we've been + +00:10:56.959 --> 00:10:58.880 +talking about towers now, + +00:10:58.880 --> 00:11:01.519 +by the rumpelstiltskin principle, towers + +00:11:01.519 --> 00:11:02.800 +also + +00:11:02.800 --> 00:11:06.399 +can be talked about, + +00:11:06.399 --> 00:11:09.279 +and therefore they also are a mode. So + +00:11:09.279 --> 00:11:11.200 +how do we go to tower mode? + +00:11:11.200 --> 00:11:14.640 +The way we go to tower mode is + +00:11:14.640 --> 00:11:19.200 +we go in a slightly different direction, + +00:11:19.200 --> 00:11:20.800 +and we find that we are now in tower + +00:11:20.800 --> 00:11:23.360 +mode. + +00:11:23.360 --> 00:11:27.440 +We see that there are many towers + +00:11:27.440 --> 00:11:29.279 +available. We're now... + +00:11:29.279 --> 00:11:32.640 +We're seeing several possible + +00:11:32.640 --> 00:11:36.240 +towers that we have written + +00:11:36.240 --> 00:11:39.120 +to be available and for use in + +00:11:39.120 --> 00:11:41.440 +different buffers. You can edit them + +00:11:41.440 --> 00:11:44.000 +on the fly. For instance, let's enter this + +00:11:44.000 --> 00:11:46.630 +tower. + +00:11:48.000 --> 00:11:49.920 +Now you see that in the bottom of + +00:11:49.920 --> 00:11:51.519 +the... In the mode line, you see that we're + +00:11:51.519 --> 00:11:52.480 +going + +00:11:52.480 --> 00:11:54.240 +across all of these different modes that + +00:11:54.240 --> 00:11:56.480 +were in the tower. + +00:11:56.480 --> 00:11:58.800 +You could escape and you could even + +00:11:58.800 --> 00:12:00.399 +move things around. You could put window + +00:12:00.399 --> 00:12:00.880 +mode + +00:12:00.880 --> 00:12:02.399 +all the way at the bottom, right above + +00:12:02.399 --> 00:12:04.079 +insert mode. + +00:12:04.079 --> 00:12:06.880 +Let's see that happen. There it is, window + +00:12:06.880 --> 00:12:09.839 +is right above insert, and + +00:12:09.839 --> 00:12:13.040 +so on. The tower always reflects your + +00:12:13.040 --> 00:12:14.240 +current position, + +00:12:14.240 --> 00:12:15.760 +so if you're in buffer mode here and you + +00:12:15.760 --> 00:12:17.600 +go down to line mode, + +00:12:17.600 --> 00:12:19.120 +when you go back to mode mode, you see + +00:12:19.120 --> 00:12:22.480 +that we are in line mode. + +00:12:22.480 --> 00:12:24.000 +But in practice, you wouldn't have a + +00:12:24.000 --> 00:12:26.160 +tower this elaborate because + +00:12:26.160 --> 00:12:28.959 +you'd rather have several smaller towers + +00:12:28.959 --> 00:12:29.440 +you enter, + +00:12:29.440 --> 00:12:33.360 +that you alternate between. + +00:12:33.360 --> 00:12:36.639 +Okay. So one + +00:12:36.639 --> 00:12:39.839 +other thing of interest here is that + +00:12:39.839 --> 00:12:42.240 +when you're in tower mode, + +00:12:42.240 --> 00:12:43.839 +if you look at the status line at the + +00:12:43.839 --> 00:12:45.920 +bottom there, we are currently + +00:12:45.920 --> 00:12:49.200 +in buffer mode while we are in tower + +00:12:49.200 --> 00:12:49.839 +mode. + +00:12:49.839 --> 00:12:51.600 +Tower mode actually isn't a mode + +00:12:51.600 --> 00:12:53.519 +really. Neither is mode mode. They're + +00:12:53.519 --> 00:12:53.920 +really + +00:12:53.920 --> 00:12:58.000 +referential planes or meta planes. + +00:12:58.000 --> 00:13:00.959 +In any case, you can see that we're in + +00:13:00.959 --> 00:13:03.120 +buffer mode. We can take a meta jump + +00:13:03.120 --> 00:13:04.560 +out of this to confirm + +00:13:04.560 --> 00:13:07.120 +that buffer mode is the only mode + +00:13:07.120 --> 00:13:08.000 +available + +00:13:08.000 --> 00:13:10.560 +when we're editing towers because that's + +00:13:10.560 --> 00:13:11.200 +the one + +00:13:11.200 --> 00:13:14.240 +we need, given that our towers are + +00:13:14.240 --> 00:13:15.200 +represented + +00:13:15.200 --> 00:13:23.200 +in individual buffers. + +00:13:23.200 --> 00:13:26.000 +Right. So let's see where we're + +00:13:26.000 --> 00:13:26.320 +at. + +00:13:26.320 --> 00:13:28.240 +Rumpelstiltskin principle... We talked + +00:13:28.240 --> 00:13:30.160 +about mode mode. + +00:13:30.160 --> 00:13:32.240 +We talked about the strange loop + +00:13:32.240 --> 00:13:33.920 +application of + +00:13:33.920 --> 00:13:37.820 +ground level modes in meta levels. + +00:13:39.600 --> 00:13:42.240 +We saw the different towers, and + +00:13:42.240 --> 00:13:43.199 +in fact, + +00:13:43.199 --> 00:13:46.639 +we're currently in + +00:13:46.639 --> 00:13:50.720 +Vim tower, + +00:13:50.720 --> 00:13:53.120 +where you can go to Emacs tower. Now, + +00:13:53.120 --> 00:13:54.720 +with a single keystroke, you can + +00:13:54.720 --> 00:13:55.760 +alternate + +00:13:55.760 --> 00:13:59.040 +between Emacs + +00:13:59.040 --> 00:14:02.399 +and Vim, which are represented--which are + +00:14:02.399 --> 00:14:05.519 +modeled as towers. + +00:14:13.360 --> 00:14:15.360 +So there's... One thing that we've + +00:14:15.360 --> 00:14:17.040 +sort of alluded to is that there are two + +00:14:17.040 --> 00:14:18.160 +directions + +00:14:18.160 --> 00:14:20.480 +that you can travel in when you're going + +00:14:20.480 --> 00:14:22.399 +through this framework. + +00:14:22.399 --> 00:14:25.120 +One direction is--and we'll + +00:14:25.120 --> 00:14:33.760 +visualize it like so... + +00:14:33.760 --> 00:14:35.120 +There's two directions you can travel, + +00:14:35.120 --> 00:14:37.040 +and you can either go sideways or you + +00:14:37.040 --> 00:14:38.399 +can go up and down. + +00:14:38.399 --> 00:14:40.399 +If you go sideways, you're changing your + +00:14:40.399 --> 00:14:41.680 +perspective. + +00:14:41.680 --> 00:14:45.440 +So normal mode, word mode, line mode, + +00:14:45.440 --> 00:14:47.360 +window mode, and so on are all different + +00:14:47.360 --> 00:14:49.120 +perspectives on your + +00:14:49.120 --> 00:14:51.680 +ground editing experience. + +00:14:51.680 --> 00:14:53.040 +The other direction you can travel + +00:14:53.040 --> 00:14:55.519 +in is up or down, which takes you + +00:14:55.519 --> 00:14:57.920 +through meta levels. So you go from the + +00:14:57.920 --> 00:14:59.600 +ground level editing experience + +00:14:59.600 --> 00:15:01.920 +up to mode mode and then up to the tower + +00:15:01.920 --> 00:15:03.440 +plane and so on + +00:15:03.440 --> 00:15:07.040 +and so on. + +00:15:07.040 --> 00:15:10.800 +So this all sounds + +00:15:10.800 --> 00:15:14.880 +very complex, but the truth is + +00:15:14.880 --> 00:15:18.160 +it's not really that complicated + +00:15:18.160 --> 00:15:21.519 +even though it feels that way. The reason + +00:15:21.519 --> 00:15:22.959 +it isn't that complicated + +00:15:22.959 --> 00:15:26.480 +is because no matter how many levels + +00:15:26.480 --> 00:15:28.800 +up or down you go and no matter where + +00:15:28.800 --> 00:15:30.160 +you are, + +00:15:30.160 --> 00:15:32.399 +whether you're in at the ground level + +00:15:32.399 --> 00:15:34.079 +editing the actual text + +00:15:34.079 --> 00:15:36.000 +or whether you're at a meta level, some + +00:15:36.000 --> 00:15:37.600 +unknown meta level and you don't know + +00:15:37.600 --> 00:15:39.279 +where you are, + +00:15:39.279 --> 00:15:42.320 +no matter where you are, the way in which + +00:15:42.320 --> 00:15:44.399 +you interact with it + +00:15:44.399 --> 00:15:47.519 +is the same at every level. + +00:15:47.519 --> 00:15:52.000 +That is the great power of + +00:15:52.000 --> 00:15:55.440 +this approach: that + +00:15:55.440 --> 00:15:58.720 +all of the different levels are the + +00:15:58.720 --> 00:16:00.880 +same. + +00:16:00.880 --> 00:16:03.839 +In fact, the complexity of the whole + +00:16:03.839 --> 00:16:05.759 +is exactly identical to the + +00:16:05.759 --> 00:16:08.720 +complexity of each part, so if you know + +00:16:08.720 --> 00:16:10.000 +how to edit words + +00:16:10.000 --> 00:16:12.959 +in the ground level buffer and you know + +00:16:12.959 --> 00:16:13.440 +how to move + +00:16:13.440 --> 00:16:15.839 +lines around using line mode, then you + +00:16:15.839 --> 00:16:16.720 +know how to edit + +00:16:16.720 --> 00:16:19.519 +any aspect of your editing experience at + +00:16:19.519 --> 00:16:22.800 +any level. + +00:16:30.079 --> 00:16:32.000 +So this is a pre-release demo. This + +00:16:32.000 --> 00:16:33.839 +doesn't exist on MELPA + +00:16:33.839 --> 00:16:36.880 +yet, but you can follow updates + +00:16:36.880 --> 00:16:40.079 +at this repo on github. + +00:16:40.079 --> 00:16:44.079 +If you can also be a beta tester or + +00:16:44.079 --> 00:16:45.199 +something like that, if you like, that + +00:16:45.199 --> 00:16:46.000 +would be very + +00:16:46.000 --> 00:16:49.199 +helpful. You can learn more about + +00:16:49.199 --> 00:16:50.560 +this at + +00:16:50.560 --> 00:16:53.920 +drym.org, which is where I house + +00:16:53.920 --> 00:16:55.920 +the research that I work on. In + +00:16:55.920 --> 00:16:57.279 +particular + +00:16:57.279 --> 00:17:00.800 +the research on epistemic levels is what + +00:17:00.800 --> 00:17:03.600 +inspired this particular Emacs extension. + +00:17:03.600 --> 00:17:06.480 +You can also learn about dialectical + +00:17:06.480 --> 00:17:08.480 +inheritance attribution, which is the + +00:17:08.480 --> 00:17:10.880 +basis of + +00:17:10.880 --> 00:17:14.559 +a new economic system that could be fair + +00:17:14.559 --> 00:17:16.959 +and could lead to a prosperous and happy + +00:17:16.959 --> 00:17:19.439 +world. + +00:17:19.439 --> 00:17:22.799 +You can follow me on + +00:17:22.799 --> 00:17:26.319 +Twitter at @countvajhula. + +00:17:26.319 --> 00:17:31.919 +That's it! Thank you. -- cgit v1.2.3