summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt
blob: 14913a325fafd94ae03effc8b49393fe66ab13c0 (plain) (tree)
1
2
3
4
5
6
7


                             
                                      

                             
                










                                       
                             

                             
                                  

                             
                                         




                                        
        

                             
                                         

                             
                              

                             
                                      

                             
                             

                             
                                       




                              
           







                                      
                                         

                             
          

                             
                                       







                                        
                                     

                             
                        




                                
                                       

                             
     







                                    
        

                             
                            

                             
                   

                             
                               




                                 
                              

                             
                                   

                             
                                      







                                       
      

                             
                                        




                                     
                                       




                             
                                    




                                
         

                             
                                    







                                        
                                










                                 
         

                             
                                   

                             
        

                             
                                  




                                   
                    

                             
                                         

                             
                                    

                             
                                        

                             
                                

                             
                                      

                             
      

                             
                      










                                      
                                          




                             
                                   




                                  
           




                             
                  

                             
                             

                             
         

                             
               







                                       
              

                             
                                    

                             
                                     

                             
                                     

                             
                                       







                                  
                                         

                             
                          

                             
                                  




                                        
                               




                                 
                                        

                             
                                   

                             
         

                             
                                   







                               
                                    

                             
                                        

                             
                                      
 

                                            

                             
                                        

                             
                                     

                             
                                 

                             
                                   




                                     
          

                             
                                  

                             
          




                                      
      

                             
                                       

                             
               

                             
                                       

                             
         

                             
                                    

                             
                    

                             
                                       

                             
          

                             
                                     

                             
                                 

                             
               

                             
                                       




                                        
                    




                                     
                                 

                             
                          

                             
                 

                             
                         

                             
                                

                             
                                    

                             
                             

                             
                                 

                             
                               

                             
                               










                                        
                    

                             
                                   

                             
                    

                             
                                        

                             
            

                             
                                     







                                      
                  

                             
                             

                             
                 

                             
                                      

                             
                                       







                                      
                          

                             
                                  

                             
     

                             
                                       







                                      
                      

                             
                               




                                    
                                   







                                       
              

                             
                                   

                             
                                      

                             
                                 




                             
                                         

                             
                                 

                             
                                      




                             
                            

                             
                                      




                              
            

                             
                               

                             
                                  

                             
                                   







                                       
                                      

                             
                                







                                    
          

                             
                                        




                             
                                            




                              
                               

                             
                     

                             
                                       

                             
                                 




                             
                                     

                             
                               




                             
                                     

                             
                  

                             
                                      

                             
                                   

                             
                           




                                      
     

                             
                                      

                             
                             




                                   
                            

                             
                                         







                                    
                                    

                             
                        

                             
                                      

                             
                                         

                             
                        

                             
                                         

                             
                                

                             
       

                             
                                       

                             
                              

                             
                                  

                             
                                       

                             
                                 

                             
                                    

                             
                                    

                             
                              

                             
                                          

                             
                           

                             
                                         




                                        
      




                                   
                     

                             
                                         

                             
       

                             
                              

                             
                              




                             
                                          

                             
          

                             
                                           

                             
                                    

                             
                                        

                             
                                    

                             
                                     










                                       
                               

                             
                                  

                             
                          

                             
                                 




                             
                                 

                             
                       

                             
                                    

                             
                 

                             
                                




                             
                            

                             
                                     

                             
                                     

                             
                         

                             
                                        




                             
                    

                             
                                      

                             
                           

                             
                               

                             
                                        




                                    
     

                             
                                 

                             
                       

                             
                             




                             
                              

                             
                                    

                             
                                          

                             
      

                             
                                 

                             
                                           







                                        
                  

                             
                                   

                             
                                        




                             
                                      

                             
            

                             
                                          

                             
                          

                             
                                     

                             
                 




                                        
                     

                             
                                      

                             
                         

                             
                                    







                                        
          

                             
                           

                             
            




                                    
                          




                                     
                              




                                    
     

                             
                                

                             
                                     




                             
                                  

                             
                                      

                             
                                    
















                                        
                                  




                             
                      

                             
                               

                             
   

                             
                                      

                             
                

                             
                                




                             
                                  

                             
                                

                             
        

                             
                  

                             
          

                             
                                     

                             
                                




                             
             

                             
                                         

                             
                  

                             
                                  










                                        
                       

                             
                           

                             
                       

                             
                                      




                                     
                   

                             
                                        

                             
            

                             
                                     

                             
                                        

                             
                     

                             
                          

                             
                                  

                             
                                 

                             
                                       










                                        
          

                             
                  

                             
                              




                                
                                         










                                     
        







                                     
                                       




                                     
              

                             
                                         




                             
                           

                             
                           

                             
                   

                             
                                   

                             
     

                             
                                    




                             
                                       










                                       
                                      







                                        
          

                             
                                   

                             
                      

                             
                                

                             
                       

                             
                                   

                             
                                      




                             
                                 




                             
                                

                             
                               







                                        
                                         

                             
                                    

                             
                                     










                                        
      

                             
                    

                             
                          

                             
                     
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.