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