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 --- ...aradigm--questions--sid-kasivajhula-autogen.vtt | 361 ------ ...ble-ui-paradigm--questions--sid-kasivajhula.vtt | 353 ++++++ ...alable-ui-paradigm--sid-kasivajhula-autogen.vtt | 1336 -------------------- ...acs-a-scalable-ui-paradigm--sid-kasivajhula.vtt | 1285 +++++++++++++++++++ 4 files changed, 1638 insertions(+), 1697 deletions(-) delete mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt delete mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt (limited to '2020/subtitles') diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt deleted file mode 100644 index 9cbec458..00000000 --- a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt +++ /dev/null @@ -1,361 +0,0 @@ -WEBVTT - -00:00:00.080 --> 00:00:01.680 -for the list of questions in whatever - -00:00:01.680 --> 00:00:03.520 -order you like - -00:00:03.520 --> 00:00:06.160 -okay so I see what package is used um - -00:00:06.160 --> 00:00:08.000 -probably cemex mode - -00:00:08.000 --> 00:00:10.400 -um right so the main package that was - -00:00:10.400 --> 00:00:11.360 -being demoed - -00:00:11.360 --> 00:00:14.480 -um that is not yet on melpa in fact I - -00:00:14.480 --> 00:00:16.720 -haven't even decided on a name for it - -00:00:16.720 --> 00:00:19.359 -um I've alternately alternately called - -00:00:19.359 --> 00:00:22.080 -it epistemic mode I've called it - -00:00:22.080 --> 00:00:26.000 -um england I called it uh - -00:00:26.000 --> 00:00:28.560 -all kinds of things but at the moment - -00:00:28.560 --> 00:00:30.240 -you can find it on my github there's a - -00:00:30.240 --> 00:00:31.439 -link - -00:00:31.439 --> 00:00:32.960 -in the presentation itself if you go to - -00:00:32.960 --> 00:00:35.600 -github slash account about - -00:00:35.600 --> 00:00:38.879 -um the package there it's currently - -00:00:38.879 --> 00:00:39.840 -named indra - -00:00:39.840 --> 00:00:42.879 -I'm not sure um - -00:00:42.879 --> 00:00:46.800 -packages actually yes the second one is - -00:00:46.800 --> 00:00:49.920 -red that was the name that I selected um - -00:00:49.920 --> 00:00:53.280 -last night um and that's because it - -00:00:53.280 --> 00:00:53.920 -might that - -00:00:53.920 --> 00:00:55.760 -there's a concept in tibetan buddhism - -00:00:55.760 --> 00:00:57.520 -that seems like it might have something - -00:00:57.520 --> 00:00:58.480 -to do with - -00:00:58.480 --> 00:00:59.840 -the kinds of concepts we're talking - -00:00:59.840 --> 00:01:01.600 -about with this package so I just - -00:01:01.600 --> 00:01:04.000 -thought it would be a good name for it - -00:01:04.000 --> 00:01:05.760 -so you can look up that concept - -00:01:05.760 --> 00:01:09.920 -and get a sense of it on wikipedia - -00:01:09.920 --> 00:01:13.119 -next question is how to deal with dwarak - -00:01:13.119 --> 00:01:15.759 -dwarjak or however that's pronounced - -00:01:15.759 --> 00:01:16.960 -this is always bug me - -00:01:16.960 --> 00:01:20.400 -is there an x-mod map mode so the thing - -00:01:20.400 --> 00:01:22.400 -with this is it's kind of surprising but - -00:01:22.400 --> 00:01:23.360 -although vim - -00:01:23.360 --> 00:01:26.000 -was originally developed um you know - -00:01:26.000 --> 00:01:27.200 -with the idea of - -00:01:27.200 --> 00:01:29.520 -the key bindings being on the home rule - -00:01:29.520 --> 00:01:32.000 -it turns out that that is actually not a - -00:01:32.000 --> 00:01:33.119 -major aspect - -00:01:33.119 --> 00:01:36.400 -of the vim editing experience so - -00:01:36.400 --> 00:01:38.560 -people who use the dvorak layout - -00:01:38.560 --> 00:01:40.720 -actually end up using the same keys as - -00:01:40.720 --> 00:01:42.640 -they do on the normal qwerty layout so - -00:01:42.640 --> 00:01:44.720 -they don't remap anything - -00:01:44.720 --> 00:01:48.159 -because the uh the the sort of - -00:01:48.159 --> 00:01:51.040 -the power that vim or the the - -00:01:51.040 --> 00:01:52.240 -flexibility the - -00:01:52.240 --> 00:01:55.600 -spiral that bim enables on qwerty layout - -00:01:55.600 --> 00:01:56.880 -keyboards is exactly - -00:01:56.880 --> 00:01:58.719 -preserved even on a door jack keyboard - -00:01:58.719 --> 00:01:59.920 -even though you your - -00:01:59.920 --> 00:02:01.920 -fingers are not in the same positions - -00:02:01.920 --> 00:02:04.399 -it's not a big deal actually - -00:02:04.399 --> 00:02:09.119 -um and then I mostly use default model - -00:02:09.119 --> 00:02:10.879 -provided by vanilla Emacs and work and - -00:02:10.879 --> 00:02:12.319 -org mode for text editing can you give - -00:02:12.319 --> 00:02:13.840 -me some examples - -00:02:13.840 --> 00:02:15.920 -of how the user can use the concept of - -00:02:15.920 --> 00:02:17.280 -mode mode - -00:02:17.280 --> 00:02:20.840 -to do some interesting - -00:02:20.840 --> 00:02:24.640 -um so probably the main thing would be - -00:02:24.640 --> 00:02:25.120 -the - -00:02:25.120 --> 00:02:27.920 -the keystrokes would be less uh - -00:02:27.920 --> 00:02:28.959 -contrived - -00:02:28.959 --> 00:02:32.080 -so they the the fewer modes you have - -00:02:32.080 --> 00:02:36.560 -the more modifiers you need - -00:02:36.560 --> 00:02:39.840 -in order to um do whatever it is that - -00:02:39.840 --> 00:02:41.280 -you're trying to do because you've got - -00:02:41.280 --> 00:02:44.800 -essentially with a max model you've got - -00:02:44.800 --> 00:02:48.080 -a completely flat - -00:02:48.080 --> 00:02:50.959 -keyboard structure and so all of the - -00:02:50.959 --> 00:02:52.160 -different things that you might - -00:02:52.160 --> 00:02:55.680 -want to express are all mapped to a flat - -00:02:55.680 --> 00:02:58.720 -keyboard uh set of keys - -00:02:58.720 --> 00:03:02.840 -so with um with this kind of - -00:03:02.840 --> 00:03:06.400 -modal structure the more modes you have - -00:03:06.400 --> 00:03:09.200 -the more the individual keystrokes - -00:03:09.200 --> 00:03:10.400 -become - -00:03:10.400 --> 00:03:13.200 -shorter and shorter so that could be one - -00:03:13.200 --> 00:03:14.959 -benefit that would be provided - -00:03:14.959 --> 00:03:17.519 -with many modes your keystrokes would - -00:03:17.519 --> 00:03:18.000 -generally - -00:03:18.000 --> 00:03:20.080 -be a single keystroke long for even - -00:03:20.080 --> 00:03:22.080 -relatively complex tasks - -00:03:22.080 --> 00:03:24.159 -because you're setting the context - -00:03:24.159 --> 00:03:25.440 -beforehand - -00:03:25.440 --> 00:03:27.200 -so you already say oh I'm going to be - -00:03:27.200 --> 00:03:30.840 -talking about this org buffer - -00:03:30.840 --> 00:03:33.440 -agenda and then - -00:03:33.440 --> 00:03:36.319 -um the all the keystrokes that you do at - -00:03:36.319 --> 00:03:39.599 -that point would be in relation to that - -00:03:39.599 --> 00:03:42.159 -um okay I think we have time for like - -00:03:42.159 --> 00:03:44.080 -one more short question - -00:03:44.080 --> 00:03:46.879 -one more short question okay let's see - -00:03:46.879 --> 00:03:48.879 -how do new modes come into existence you - -00:03:48.879 --> 00:03:50.400 -can make them yourself - -00:03:50.400 --> 00:03:53.040 -um and you can specify them in Emacs - -00:03:53.040 --> 00:03:53.760 -lisp - -00:03:53.760 --> 00:03:56.159 -if you like but there's also simple you - -00:03:56.159 --> 00:03:59.040 -can also do it visually as we did - -00:03:59.040 --> 00:04:02.720 -um but the yeah defining them - -00:04:02.720 --> 00:04:04.799 -is essentially built on top of hydra but - -00:04:04.799 --> 00:04:07.519 -it could also be built on top of evil or - -00:04:07.519 --> 00:04:09.120 -any other modal interface provider - -00:04:09.120 --> 00:04:12.840 -there's an abstraction layer - -00:04:12.840 --> 00:04:15.920 -okay thank you so much for your talk and - -00:04:15.920 --> 00:04:17.919 -for the live q a - -00:04:17.919 --> 00:04:21.440 -sure thank you yes feel free to um take - -00:04:21.440 --> 00:04:22.880 -up the rest of the questions either via - -00:04:22.880 --> 00:04:23.759 -irc or - -00:04:23.759 --> 00:04:25.680 -on the pad on on your own time off the - -00:04:25.680 --> 00:04:26.960 -stream - -00:04:26.960 --> 00:04:28.639 -perfect yeah I'll go ahead and put in - -00:04:28.639 --> 00:04:30.000 -some answers there - -00:04:30.000 --> 00:04:32.240 -awesome thank you all right thank you - -00:04:32.240 --> 00:04:33.120 -have a good one - -00:04:33.120 --> 00:04:36.880 -thanks you too diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt new file mode 100644 index 00000000..ebe18254 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt @@ -0,0 +1,353 @@ +WEBVTT + +00:00:00.080 --> 00:00:01.680 +(Amin: ... for the list of questions in whatever + +00:00:01.680 --> 00:00:03.520 +order you like.) + +00:00:03.520 --> 00:00:06.160 +Okay, so I see what package is used, + +00:00:06.160 --> 00:00:08.000 +probably symex-mode... + +00:00:08.000 --> 00:00:10.400 +Right. So the main package that was + +00:00:10.400 --> 00:00:11.360 +being demoed, + +00:00:11.360 --> 00:00:14.480 +that is not yet on MELPA. In fact, I + +00:00:14.480 --> 00:00:16.720 +haven't even decided on a name for it. + +00:00:16.720 --> 00:00:19.359 +I've alternately called + +00:00:19.359 --> 00:00:22.080 +it epistemic-mode, I've called it + +00:00:22.080 --> 00:00:26.000 +england, I called it + +00:00:26.000 --> 00:00:28.560 +all kinds of things, but at the moment + +00:00:28.560 --> 00:00:31.439 +you can find it on my Github. There's a link + +00:00:31.439 --> 00:00:32.960 +in the presentation itself, if you go to + +00:00:32.960 --> 00:00:35.600 +https://github.com/countvajhula, you'll see + +00:00:35.600 --> 00:00:38.879 +the package there. It's currently + +00:00:38.879 --> 00:00:39.840 +named Indra, but + +00:00:39.840 --> 00:00:42.879 +I'm not sure. (Organizer: Package is +called rigpa.) + +00:00:42.879 --> 00:00:46.800 +Actually, yes, the second one is + +00:00:46.800 --> 00:00:49.920 +correct. That was the name that I selected + +00:00:49.920 --> 00:00:53.280 +last night. That's because it... + +00:00:53.920 --> 00:00:55.760 +There's a concept in Tibetan Buddhism + +00:00:55.760 --> 00:00:57.520 +that seems like it might have something + +00:00:57.520 --> 00:00:58.480 +to do with + +00:00:58.480 --> 00:00:59.840 +the kinds of concepts we're talking + +00:00:59.840 --> 00:01:01.600 +about with this package, so I just + +00:01:01.600 --> 00:01:04.000 +thought it would be a good name for it. + +00:01:04.000 --> 00:01:05.760 +You can look up that concept + +00:01:05.760 --> 00:01:09.920 +and get a sense of it on Wikipedia. + +00:01:09.920 --> 00:01:13.119 +Next question is "how to deal with Dvorak + +00:01:13.119 --> 00:01:15.759 +or however that's pronounced. + +00:01:15.759 --> 00:01:16.960 +This has always bugged me. + +00:01:16.960 --> 00:01:20.400 +Is there an Xmodmap mode?" So the thing + +00:01:20.400 --> 00:01:22.400 +with this is it's kind of surprising, but + +00:01:22.400 --> 00:01:23.360 +although Vim + +00:01:23.360 --> 00:01:26.000 +was originally developed + +00:01:26.000 --> 00:01:27.200 +with the idea of + +00:01:27.200 --> 00:01:29.520 +the key bindings being on the home row, + +00:01:29.520 --> 00:01:32.000 +it turns out that that is actually not a + +00:01:32.000 --> 00:01:33.119 +major aspect + +00:01:33.119 --> 00:01:36.400 +of the Vim editing experience, so + +00:01:36.400 --> 00:01:38.560 +people who use the Dvorak layout + +00:01:38.560 --> 00:01:40.720 +actually end up using the same keys as + +00:01:40.720 --> 00:01:42.640 +they do on the normal QWERTY layout, so + +00:01:42.640 --> 00:01:44.720 +they don't remap anything, + +00:01:44.720 --> 00:01:48.159 +because + +00:01:48.159 --> 00:01:51.040 +the power that Vim--or the + +00:01:51.040 --> 00:01:52.240 +flexibility, the + +00:01:52.240 --> 00:01:55.600 +spiral that Vim enables on QWERTY-layout + +00:01:55.600 --> 00:01:56.880 +keyboards is exactly + +00:01:56.880 --> 00:01:58.719 +preserved, even on a Dvorak keyboard, + +00:01:58.719 --> 00:01:59.920 +even though your + +00:01:59.920 --> 00:02:01.920 +fingers are not in the same positions. + +00:02:01.920 --> 00:02:04.399 +It's not a big deal, actually. + +00:02:04.399 --> 00:02:09.119 +"I mostly use default model + +00:02:09.119 --> 00:02:10.879 +provided by vanilla Emacs and work and + +00:02:10.879 --> 00:02:12.319 +Org Mode for text editing. Can you give + +00:02:12.319 --> 00:02:13.840 +me some examples + +00:02:13.840 --> 00:02:15.920 +of how the user can use the concept of + +00:02:15.920 --> 00:02:17.280 +"mode of mode" + +00:02:17.280 --> 00:02:20.840 +to do some interesting editing? + +00:02:20.840 --> 00:02:24.640 +Probably the main thing would be + +00:02:25.120 --> 00:02:27.920 +the keystrokes would be less + +00:02:27.920 --> 00:02:28.959 +contrived. + +00:02:28.959 --> 00:02:32.080 +The fewer modes you have, + +00:02:32.080 --> 00:02:36.560 +the more modifiers you need + +00:02:36.560 --> 00:02:39.840 +in order to do whatever it is that + +00:02:39.840 --> 00:02:41.280 +you're trying to do, because you've got, + +00:02:41.280 --> 00:02:44.800 +essentially, with the Emacs model, you've got + +00:02:44.800 --> 00:02:48.080 +a completely flat + +00:02:48.080 --> 00:02:50.959 +keyboard structure. So all of the + +00:02:50.959 --> 00:02:52.160 +different things that you might + +00:02:52.160 --> 00:02:55.680 +want to express are all mapped to a flat + +00:02:55.680 --> 00:02:58.720 +keyboard, a set of keys. + +00:02:58.720 --> 00:03:02.840 +With this kind of + +00:03:02.840 --> 00:03:06.400 +modal structure, the more modes you have, + +00:03:06.400 --> 00:03:09.200 +the more the individual keystrokes + +00:03:09.200 --> 00:03:10.400 +become + +00:03:10.400 --> 00:03:13.200 +shorter and shorter. That could be one + +00:03:13.200 --> 00:03:14.959 +benefit that would be provided. + +00:03:14.959 --> 00:03:17.519 +With many modes, your keystrokes would + +00:03:17.519 --> 00:03:18.000 +generally + +00:03:18.000 --> 00:03:20.080 +be a single keystroke long for even + +00:03:20.080 --> 00:03:22.080 +relatively complex tasks, + +00:03:22.080 --> 00:03:24.159 +because you're setting the context + +00:03:24.159 --> 00:03:25.440 +beforehand. + +00:03:25.440 --> 00:03:27.200 +So you already say, "Oh, I'm going to be + +00:03:27.200 --> 00:03:30.840 +talking about this Org buffer + +00:03:30.840 --> 00:03:33.440 +agenda," and then + +00:03:33.440 --> 00:03:36.319 +all the keystrokes that you do at + +00:03:36.319 --> 00:03:39.599 +that point would be in relation to that. + +00:03:39.599 --> 00:03:42.159 +(Amin: I think we have time for like + +00:03:42.159 --> 00:03:44.080 +one more short question.) + +00:03:44.080 --> 00:03:46.879 +One more short question... Okay, let's see. + +00:03:46.879 --> 00:03:48.879 +"How do new modes come into existence?" You + +00:03:48.879 --> 00:03:50.400 +can make them yourself, + +00:03:50.400 --> 00:03:53.040 +and you can specify them in Emacs + +00:03:53.040 --> 00:03:53.760 +Lisp + +00:03:53.760 --> 00:03:56.159 +if you like, but there's also a simple way. + +00:03:56.159 --> 00:03:59.040 +You can also do it visually as we did. + +00:03:59.040 --> 00:04:02.720 +But yeah, defining them + +00:04:02.720 --> 00:04:04.799 +is essentially built on top of Hydra, but + +00:04:04.799 --> 00:04:07.519 +it could also be built on top of Evil or + +00:04:07.519 --> 00:04:09.120 +any other modal interface provider. + +00:04:09.120 --> 00:04:12.840 +There's an abstraction layer. + +00:04:12.840 --> 00:04:15.920 +(Amin: Okay. Thank you so much for your talk and + +00:04:15.920 --> 00:04:17.919 +for the live Q&A.) + +00:04:17.919 --> 00:04:21.440 +Sure, thank you. (Amin: Feel free to take + +00:04:21.440 --> 00:04:22.880 +up the rest of the questions either via + +00:04:22.880 --> 00:04:23.759 +IRC or + +00:04:23.759 --> 00:04:25.680 +on the pad on on your own time off the + +00:04:25.680 --> 00:04:26.960 +stream.) + +00:04:26.960 --> 00:04:28.639 +Perfect. Yeah, I'll go ahead and put in + +00:04:28.639 --> 00:04:30.000 +some answers there. + +00:04:30.000 --> 00:04:32.240 +(Amin: Awesome, thank you.) All right, thank you. + +00:04:32.240 --> 00:04:33.120 +Have a good one. + +00:04:33.120 --> 00:04:36.880 +(Amin: Thanks you too) diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt deleted file mode 100644 index e4508034..00000000 --- a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt +++ /dev/null @@ -1,1336 +0,0 @@ -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 -so 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 um 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:25.960 --> 00:01:28.479 -[Music] - -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 and 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 -and 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 and there's uh - -00:03:08.319 --> 00:03:11.120 -they sort of compete for space on the - -00:03:11.120 --> 00:03:12.720 -keyboard - -00:03:12.720 --> 00:03:15.760 -um so an alternative uh - -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 -so 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 -and 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 -so it's the same keystrokes different - -00:03:57.519 --> 00:03:59.120 -contexts - -00:03:59.120 --> 00:04:01.360 -and 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:14.000 -mode - -00:04:14.000 --> 00:04:15.439 -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 -and 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 and 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 you 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 and 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 - -00:04:54.240 --> 00:04:57.520 -lines up and down left and right and so - -00:04:57.520 --> 00:04:59.120 -on - -00:04:59.120 --> 00:05:00.880 -and 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 and you can - -00:05:12.400 --> 00:05:15.759 -move spatially amongst the windows or - -00:05:15.759 --> 00:05:17.520 -make do transformations on the windows - -00:05:17.520 --> 00:05:20.850 -using the same keystrokes - -00:05:20.850 --> 00:05:22.840 -[Music] - -00:05:22.840 --> 00:05:25.360 -um - -00:05:25.360 --> 00:05:28.720 -so let's go to - -00:05:28.720 --> 00:05:32.800 -um right and so um the one of the things - -00:05:32.800 --> 00:05:35.280 -the 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 which - -00:05:40.720 --> 00:05:42.320 -is that if you can name something then - -00:05:42.320 --> 00:05:43.759 -you have that you have power - -00:05:43.759 --> 00:05:46.720 -then you have power over it so 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:54.000 --> 00:05:55.360 -[Music] - -00:05:55.360 --> 00:05:56.960 -in your editing language and 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 and 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 so in fact - -00:06:10.800 --> 00:06:14.240 -uh 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 -and 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 uh - -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 -that are present in the buffer - -00:06:40.960 --> 00:06:44.880 -which we knew about um 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 - -00:06:53.039 --> 00:06:57.280 -to 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 and 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 you 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:23.050 --> 00:07:24.240 -[Music] - -00:07:24.240 --> 00:07:27.360 -lisp code uh or or code in general but - -00:07:27.360 --> 00:07:30.880 -list 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 and for lisp code in particular - -00:07:37.599 --> 00:07:40.960 -we have a mode called symax 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 hkl - -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 -and you can run the code and - -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 -and 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 -and 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 symmex mode - -00:08:28.960 --> 00:08:31.039 -so 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 simex - -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 -symmex 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 cmx 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 and now you find some - -00:09:03.760 --> 00:09:05.600 -mixes 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 symmex and - -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:19.380 --> 00:09:21.519 -[Music] - -00:09:21.519 --> 00:09:23.839 -and 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 -symmex 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 smx escape the window - -00:09:33.600 --> 00:09:37.600 -um 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 um - -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 -and 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'd escape it's still in line mode - -00:10:05.120 --> 00:10:07.200 -and 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 -and 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 -and 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 -uh 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 in rows and 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:39.740 --> 00:10:40.959 -[Music] - -00:10:40.959 --> 00:10:44.160 -and then 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 the lisp tower - -00:10:53.680 --> 00:10:56.959 -and 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 -um 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 -and the way we go tower mode is we do - -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 -and we see that there are many towers - -00:11:27.440 --> 00:11:29.279 -available so we're now - -00:11:29.279 --> 00:11:32.640 -we're 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 -um to be available and for use in - -00:11:39.120 --> 00:11:41.440 -different buffers and 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:46.630 --> 00:11:48.000 -[Music] - -00:11:48.000 --> 00:11:49.920 -and 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 -and 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 - -00:12:09.839 --> 00:12:13.040 -so on and 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 - -00:12:29.440 --> 00:12:33.360 -enter that you alternate between - -00:12:33.360 --> 00:12:36.639 -um 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 -and 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 -um in any case you can see that we're in - -00:13:00.959 --> 00:13:03.120 -buffer mode and 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 uh let's see where we're - -00:13:26.000 --> 00:13:26.320 -at - -00:13:26.320 --> 00:13:28.240 -trump's still skin principle we talked - -00:13:28.240 --> 00:13:30.160 -about mode mode - -00:13:30.160 --> 00:13:32.240 -um 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:37.820 --> 00:13:39.600 -[Music] - -00:13:39.600 --> 00:13:42.240 -and yeah we saw the different towers and - -00:13:42.240 --> 00:13:43.199 -in fact - -00:13:43.199 --> 00:13:46.639 -you can 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 and 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 e-max - -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:05.519 --> 00:14:09.279 -um - -00:14:09.279 --> 00:14:13.360 -okay so - -00:14:13.360 --> 00:14:15.360 -so there's uh the 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 lev one direction is uh and we'll - -00:14:25.120 --> 00:14:33.760 -visualize it with uh 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 under on your - -00:14:49.120 --> 00:14:51.680 -ground editing experience - -00:14:51.680 --> 00:14:53.040 -and 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 -or uh yeah and so on - -00:15:07.040 --> 00:15:10.800 -um yeah 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 -and that is the great power of um - -00:15:52.000 --> 00:15:55.440 -this approach is that - -00:15:55.440 --> 00:15:58.720 -all of the different levels um are the - -00:15:58.720 --> 00:16:00.880 -same - -00:16:00.880 --> 00:16:03.839 -and 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:22.800 --> 00:16:23.310 -so - -00:16:23.310 --> 00:16:26.240 -[Music] - -00:16:26.240 --> 00:16:30.079 -um - -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 um - -00:16:36.880 --> 00:16:40.079 -at this repo on github - -00:16:40.079 --> 00:16:44.079 -and 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 -uh helpful and you can learn more about - -00:16:49.199 --> 00:16:50.560 -this at - -00:16:50.560 --> 00:16:53.920 -dream.org which is where I house - -00:16:53.920 --> 00:16:55.920 -the research that I work on and 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 -and um yeah you can follow me on - -00:17:22.799 --> 00:17:26.319 -twitter at countwajoula and - -00:17:26.319 --> 00:17:31.919 -that's it thank you 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