summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.vtt
blob: 588cf43a684fc0a2e7d57963023047fc8bc8665c (plain) (tree)
1
2
3
4
5
6
7
8
9

      

                             
 


                                   
 
                             
                                    
     
 


                                       
 

                             
 

                             
 

                                   



                                     
                             
                                

          
                             
                                       
           
 

                                       

                  
                             
                                     
      
 

                                  
 
                             

                              
                             
                           
 
                             

                                      
                             

                                     

                                    
 


                                     
 
                             
                                  
               
 


                                      
 
                             
                           

                 

                                   
 

                                
 


                                 
 
                             
                                  
           
 

                                        
 


                                   



                                          
                             

                                   

                                     
 


                                    
 


                                     
 


                                    
 

                                
 

                               
 


                                
 
                             

                            


                             
 

                                  
 


                             
 
                             

                   

                                
 

                                  
 
                             

                                       
                             

                
                             
                                      

     


                                      
 

                             
 

                                  
 

                              
 


                                
 


                                        
 

                             
 
                             
                              

              
                             

                                    
                             
                                 
                   
 


                                      
 


                                       
 

                                     
 
                             

                                      


                              
 

                                       

          

                             
 


                                
 


                                   
 


                                   
 
                             

                                    
                             

                                        
                             

                    


                                     
 

                                      
 


                                       
 


                                        
 


                                      
 
                             

                              
                             
                                       
 
                             
                                    
               
 

                                   
 

                             
 

                             
 

                                 

                   


                             
 


                                     
 
                             
                                    
        
 

                                   
 


                                        
 
                             
                                      

                           
                             
                                  

                    


                                        
 


                                     
 

                              
 

                                
 

                                    
 


                                      
 
                             
                                     
           
 

                             
 


                                        
 


                                 
 

                                      
 


                                      
 

                                    
 

                             
 
                             

                                       


                             
 

                                       
 
                             

                                   

                              
 


                             
 

                                    

                  


                             
 


                                        
 
                             
                                      

              

                             
 


                                    
 


                             
 
                             

                                     
                             

                                  
                             

                        
                             
                                  
                       
 

                             
 


                                       
 

                             
 

                                      
 


                                     
 


                             
 

                                 
 


                                    
 


                                       
 


                                     
 


                                  
 

                                 
 


                                



                                 
                             

                                     
                             

                       

                                 
 


                                    
 
                             
                                      

             
                             

                        

                                  
 

                                        
 
                             

                       
                             

                                      
                             

                         

                                      
 
                             
                             
                    
 

                                  
 

                                      
 
                             
                                        
               
 

                               
 
                             

                              


                                    
 

                                  
 
                             
                                      

                 
                             

                                           

                              
 

                             
 


                             



                             
                             

                          
                             
                       
 

                             
 


                                     
 
                             
                                       
 
                             
                               
 
                             

          
                             

                               

                                      
 

                                    
 

                                        
 
                             

                                 
                             
                                        

                 

                                   
 
                             

                                   

                             
 
                             

                                        
                             

                      
                             
                                       

                             
                             
                   
 

                             
 

                                 
 

                             
 

                                       
 

                                        
 


                                
 
                             
                                      
            
 


                                   
 

                                       
 
                             

                             


                                
 

                             
 
                             
                                   

                 


                             
 


                                        
 
                             

                                     
                             
                                       
 

                                      
 

                                 
 

                             
 
                             
                                     
       
 


                                    
 


                                       
 
                             
                                      

                  
                             

                                             


                                     
 

                                     
 

                             
 


                                    
 

                                      
 

                                 
 
                             




                                      
                             

                                        

                             
 

                                       
 
                             

                                 

                                
 


                                       
 


                                       
 
                             
                                   

          
                             
                                    

               


                                        
 


                                    
 

                             
 

                                
 

                             
 

                              
 

                                   
 
                             



                                                 
WEBVTT

00:00:00.399 --> 00:00:02.683
My name is Corwin Brust

00:00:02.683 --> 00:00:08.960
and I will be talking about getting
started with Emacs today.

00:00:08.960 --> 00:00:11.448
I have been an Emacs user for a long
time.

00:00:11.448 --> 00:00:15.360
First of all, thanks and a huge welcome
to the conference

00:00:15.360 --> 00:00:22.400
from me and and on behalf

00:00:22.400 --> 00:00:24.368
and back to the other people

00:00:24.368 --> 00:00:26.080
that have been helping to organize.

00:00:26.080 --> 00:00:30.480
It's been amazing just to be involved

00:00:30.480 --> 00:00:36.399
with that and just, kind of, see
backstage.

00:00:36.399 --> 00:00:42.281
So I've used a lot of different editors
in my time.

00:00:42.281 --> 00:00:52.399
That's about 25 years as a professional
software engineer.

00:00:52.399 --> 00:00:54.247
And most of that time I've been using
Emacs.

00:00:54.247 --> 00:00:56.160
I'll talk a little bit in a minute

00:00:56.160 --> 00:01:00.960
(if I can ever find my slides)

00:01:00.960 --> 00:01:04.479
about how I got into Emacs,

00:01:04.479 --> 00:01:07.200
but I think if you've used Emacs and a

00:01:07.200 --> 00:01:10.240
lot of other editors for a long time,

00:01:10.240 --> 00:01:14.410
something that you notice right away

00:01:14.410 --> 00:01:18.560
is that you get good with it in a way
that stays meaningful.

00:01:18.560 --> 00:01:24.199
You learn new things. Those things
stick with you.

00:01:24.199 --> 00:01:33.759
You learn how to make it do new tricks
and then keep doing those tricks.

00:01:33.759 --> 00:01:39.439
I want to mention that this
conference--oops,

00:01:39.439 --> 00:01:44.829
this talk isn't about how to adjust

00:01:44.829 --> 00:01:46.802
your configuration specifically.

00:01:46.802 --> 00:01:50.000
I don't have a bunch of good code
samples in here.

00:01:50.000 --> 00:01:52.451
There are other great talks at the
conference,

00:01:52.451 --> 00:01:56.411
particularly Andrew's, that I looked at,

00:01:56.411 --> 00:01:59.920
that looked like they might be more
aimed at that

00:01:59.920 --> 00:02:02.240
"hey, I'm just getting started with Emacs,

00:02:02.240 --> 00:02:05.280
what are some things to try to make

00:02:05.280 --> 00:02:07.017
it more comfortable for me starting?"

00:02:07.017 --> 00:02:09.759
This is about how to think about the
problem space.

00:02:09.759 --> 00:02:13.337
Hopefully, a good warm up as we start
thinking about

00:02:13.337 --> 00:02:17.200
some of the lightning talks a little
later on.

00:02:17.200 --> 00:02:19.835
I'm just gonna quickly make sure

00:02:19.835 --> 00:02:21.789
I can see my IRC buffer in case

00:02:21.789 --> 00:02:25.680
I run into time. I didn't get my
stopwatch started for this one.

00:02:25.680 --> 00:02:29.680
So all right, let's dive in.

00:02:29.680 --> 00:02:33.840
We assume that we want to
install packages

00:02:33.840 --> 00:02:36.281
and maybe configure some features.

00:02:36.281 --> 00:02:38.319
This is particularly from the
perspective of

00:02:38.319 --> 00:02:39.120
where we're working

00:02:39.120 --> 00:02:40.541
with a bunch of people on a team

00:02:40.541 --> 00:02:42.160
and we want to get something done.

00:02:42.160 --> 00:02:44.800
Some of us probably already have mature

00:02:44.800 --> 00:02:46.560
Emacs workflows.

00:02:46.560 --> 00:02:53.519
Others are installing it for the first
time.

00:02:53.519 --> 00:02:57.889
So the first question is, you know, in
that context:

00:02:57.889 --> 00:02:59.784
what's the value proposition?

00:02:59.784 --> 00:03:01.532
Why should I mess with my machine,

00:03:01.532 --> 00:03:04.219
my mature Emacs configuration,

00:03:04.219 --> 00:03:09.815
and impose my ideas over the way
somebody else is learning Emacs?

00:03:09.815 --> 00:03:13.840
Well, it can be.. I'm off my slides here
a little bit.

00:03:13.840 --> 00:03:16.959
It can be a little bit tricky

00:03:16.959 --> 00:03:21.440
to learn Emacs. One thing that
helps us a lot

00:03:21.440 --> 00:03:24.720
is if people that we're working with

00:03:24.720 --> 00:03:27.301
can tell us, kinda, keystroke for
keystroke at times,

00:03:27.301 --> 00:03:30.480
what to do and explain what everything
is doing.

00:03:30.480 --> 00:03:35.840
Using the same packages can really help
us working together on a project.

00:03:35.840 --> 00:03:40.720
Speaking from my personal experience,

00:03:40.720 --> 00:03:42.959
it took me decades to get to the point

00:03:42.959 --> 00:03:45.226
where I was excited to program
in Emacs Lisp.

00:03:45.226 --> 00:03:47.840
I've programmed in a lot of programming
languages,

00:03:47.840 --> 00:03:50.252
but Lisp wasn't on my list.

00:03:50.252 --> 00:03:53.680
I looked at my config that I was
copy-pasting around

00:03:53.680 --> 00:03:57.279
from generation after generation of
.emacs file,

00:03:57.279 --> 00:04:00.799
or recrafting it from hand and from
Internet searches,

00:04:00.799 --> 00:04:03.519
to get the things that I needed when

00:04:03.519 --> 00:04:05.680
I would quickly go install Emacs at some

00:04:05.680 --> 00:04:07.680
new job or contract,

00:04:07.680 --> 00:04:14.016
and be able to to quickly get through
that workflow

00:04:14.016 --> 00:04:17.440
that caused me to install the program.

00:04:17.440 --> 00:04:24.049
You know, just little simple one-liners
that got committed to memory

00:04:24.049 --> 00:04:27.675
over decades eventually just led me to a
sort of "hey what's going on here."

00:04:27.675 --> 00:04:33.520
And I credit Jeff Goff, my good friend
who died earlier in 2020,

00:04:33.520 --> 00:04:37.759
for my lifelong love of Emacs.

00:04:37.759 --> 00:04:39.280
Perhaps Erik and I will talk about that

00:04:39.280 --> 00:04:42.000
a little bit more in another talk we
have scheduled,

00:04:42.000 --> 00:04:44.400
but Jeff was a huge influence on us

00:04:44.400 --> 00:04:46.027
in a number of ways,

00:04:46.027 --> 00:04:47.732
and a huge contributor

00:04:47.732 --> 00:04:54.840
to the Raku programming language,
which is very cool.

00:04:54.840 --> 00:05:00.153
So, understanding how to make
a good decision

00:05:00.153 --> 00:05:03.680
about splitting up configuration in a
way to share it across

00:05:03.680 --> 00:05:06.292
people with really different uses of
Emacs...

00:05:06.292 --> 00:05:08.546
That's actually a complicated topic

00:05:08.546 --> 00:05:12.639
and I want to sort of back off and stare
at it for a second.

00:05:12.639 --> 00:05:18.720
I think Emacs is about people, so that
means it's about community.

00:05:18.720 --> 00:05:24.960
And community means we're going to
invite disagreement.

00:05:24.960 --> 00:05:32.687
In fact, that disagreement isn't
necessarily a road-block to our project.

00:05:32.687 --> 00:05:37.759
In fact, some of the work that a
community project can invite us to do

00:05:37.759 --> 00:05:39.505
is to get closer to each other

00:05:39.505 --> 00:05:40.840
by inviting those disagreements,

00:05:40.840 --> 00:05:42.080
by learning from them--learning from

00:05:42.080 --> 00:05:46.880
different people's styles and from how
they argue,

00:05:46.880 --> 00:05:50.058
and thinking about why they have that
perspective

00:05:50.058 --> 00:05:53.227
and what technical benefits

00:05:53.227 --> 00:05:55.800
that perhaps radical point of view might
carry away.

00:05:55.800 --> 00:05:58.266
Some people are really aggressive
arguers,

00:05:58.266 --> 00:06:01.919
and others are very passive and really

00:06:01.919 --> 00:06:05.824
couch their ideas in distancing terms,
to say,

00:06:05.824 --> 00:06:07.906
"well probably, this is a good idea"

00:06:07.906 --> 00:06:12.479
or "please double check me."

00:06:12.479 --> 00:06:15.520
Those don't always necessarily indicate

00:06:15.520 --> 00:06:17.497
how certain a person is,
because we're different.

00:06:17.497 --> 00:06:19.520
We have different ways of communicating

00:06:19.520 --> 00:06:23.380
ideas like certainty or excitement.

00:06:24.560 --> 00:06:26.235
When we think about a bunch of

00:06:26.235 --> 00:06:30.000
really diverse programmers
approaching Emacs,

00:06:30.000 --> 00:06:36.479
probably one of our first really big
challenges is just

00:06:36.479 --> 00:06:40.085
to pick what we're going
to go after.

00:06:40.085 --> 00:06:49.599
There are a lot of existing kit installs
and things like this.

00:06:49.599 --> 00:06:54.400
My argument is that you could actually
get pretty far

00:06:54.400 --> 00:06:56.020
just trading files around.

00:06:56.020 --> 00:07:03.698
Maybe the more valuable conversation
to have

00:07:03.698 --> 00:07:06.080
is making the hard decisions
about, well,

00:07:06.080 --> 00:07:08.000
"should we have vertical completion,"

00:07:08.000 --> 00:07:10.080
should that be the out of the box,

00:07:10.080 --> 00:07:11.759
and the people that want

00:07:11.759 --> 00:07:17.440
the traditional splayed out over a
single line completion,

00:07:17.440 --> 00:07:19.428
for example in the mode line,

00:07:19.428 --> 00:07:29.039
those people are going to add a line of
config to their own setup?

00:07:29.039 --> 00:07:30.979
The way to get there?

00:07:30.979 --> 00:07:33.344
I mean, how do we find out what works?

00:07:33.344 --> 00:07:38.587
We don't want to slow down the people
that are super productive with Emacs

00:07:38.587 --> 00:07:40.879
by asking them to completely
break their workflows

00:07:40.879 --> 00:07:42.560
and make it easier for new folks.

00:07:42.560 --> 00:07:48.673
At the same time, we do want to make
sure those new people

00:07:48.673 --> 00:07:52.720
are excited by Emacs and not turned off
by having to learn

00:07:52.720 --> 00:08:00.363
the entire jungle of Emacs history in
the form of its unique

00:08:00.363 --> 00:08:07.610
technical stylings for things like
frames, buffers,

00:08:07.610 --> 00:08:11.668
and other unique Emacs viewpoints

00:08:11.668 --> 00:08:16.240
on important interface concepts,
especially.

00:08:16.240 --> 00:08:19.520
The encouragement here is to keep

00:08:19.520 --> 00:08:21.680
the initialization for a project team

00:08:21.680 --> 00:08:23.280
together as a crucible.

00:08:23.280 --> 00:08:25.117
Rather than necessarily following

00:08:25.117 --> 00:08:33.279
our defaults of finding the simplest
configurations

00:08:33.279 --> 00:08:37.440
that generally work and letting people
customize it,

00:08:37.440 --> 00:08:40.479
what if we tried to look

00:08:40.479 --> 00:08:42.346
for fairly specific configurations

00:08:42.346 --> 00:08:44.159
that we'll expect essentially all of our

00:08:44.159 --> 00:08:46.320
developers to be using,

00:08:46.320 --> 00:08:52.839
at least when they submit bug reports.

00:08:52.839 --> 00:08:55.920
In particular, with this,

00:08:55.920 --> 00:08:59.839
I think that degree of experimentation

00:08:59.839 --> 00:09:02.584
can drive back into the Emacs
development process.

00:09:02.584 --> 00:09:04.800
In the development mailing list...

00:09:04.800 --> 00:09:15.120
I'm hoping I'll get a timing cue here.

00:09:15.120 --> 00:09:18.835
In the context of Emacs development as a
greater entity,

00:09:18.835 --> 00:09:20.959
we see some of these struggles.

00:09:20.959 --> 00:09:22.399
Should we change this default?

00:09:22.399 --> 00:09:27.146
Sometimes we can have the sense that
defaults in Emacs will never change.

00:09:27.146 --> 00:09:29.279
The conversation is too difficult.

00:09:29.279 --> 00:09:32.560
I think one thing that can help us get
there is evidence

00:09:32.560 --> 00:09:36.160
that says, "hey my 30- to 40-person project

00:09:36.160 --> 00:09:38.560
is using this set of bindings,

00:09:38.560 --> 00:09:40.111
and here's what we learned

00:09:40.111 --> 00:09:42.240
about brand new Emacs users
trying to come in

00:09:42.240 --> 00:09:46.800
and get work done with that."

00:09:46.800 --> 00:09:49.360
(Amin: Yeah you still have

00:09:49.360 --> 00:09:50.720
a couple more minutes.)

00:09:50.720 --> 00:09:51.984
Oh, beautiful. Okay, great.

00:09:51.984 --> 00:09:54.720
I will try to get through my last few
slides that I cut

00:09:54.720 --> 00:09:56.320
in my last walkthrough, but I think I'm

00:09:56.320 --> 00:09:58.320
going quicker today, thank you.

00:09:58.320 --> 00:10:02.000
Thank you.

00:10:02.000 --> 00:10:05.120
So let's just recap real quick:

00:10:05.120 --> 00:10:08.760
in theory, Emacs works out of the box.

00:10:08.760 --> 00:10:12.853
That means we're free to experiment.

00:10:12.853 --> 00:10:17.120
We can throw it all away and start over.

00:10:17.120 --> 00:10:26.000
As an organizational principle...

00:10:26.000 --> 00:10:30.079
I don't know what I was thinking on that
slide, excuse me.

00:10:30.079 --> 00:10:33.440
Bringing it back around to the free

00:10:33.440 --> 00:10:35.680
and open source software community,

00:10:35.680 --> 00:10:39.519
our goal is to enable users

00:10:39.519 --> 00:10:41.440
to unlock their computers, to do as much

00:10:41.440 --> 00:10:43.040
with them as possible.

00:10:43.040 --> 00:10:47.680
That's the context to take with project
initialization, but sometimes

00:10:47.680 --> 00:10:49.560
it could make sense

00:10:50.800 --> 00:10:52.032
to put some gloves on.

00:10:52.032 --> 00:10:53.766
I've thrown up on the screen here

00:10:53.766 --> 00:10:55.276
just a couple of other ideas,

00:10:55.276 --> 00:10:57.920
ways to maybe think outside of the box.

00:10:57.920 --> 00:11:01.440
As you're putting together project nets,

00:11:01.440 --> 00:11:05.519
my words of encouragement are to
experiment with it,

00:11:05.519 --> 00:11:09.941
try different things, and think really
specifically

00:11:09.941 --> 00:11:17.010
about how different the development
users might be from each other

00:11:17.010 --> 00:11:21.680
as you define standards for configuring

00:11:21.680 --> 00:11:23.519
the user environment of Emacs

00:11:23.519 --> 00:11:26.552
specifically for developing on a
project.

00:11:26.552 --> 00:11:29.120
That's pretty much my talk.

00:11:29.120 --> 00:11:32.959
If there's any time, I would take a
couple questions.

00:11:32.959 --> 00:11:36.480
(Amin: Thank you for your
awesome talk, Corwin.

00:11:36.480 --> 00:11:49.519
I think we have one or two minutes for a
few questions.

00:11:49.519 --> 00:11:52.000
Do you have the pad open or would you

00:11:52.000 --> 00:11:53.839
like me to read the questions for you?)

00:11:53.839 --> 00:11:58.000
Corwin: Oh, I managed to close the pad

00:11:58.000 --> 00:12:00.352
and I am trying to open it again.

00:12:00.352 --> 00:12:03.519
All right, there it opened.

00:12:03.519 --> 00:12:05.500
Bringing it onto a screen where I can
see it.

00:12:05.500 --> 00:12:09.360
Will you read me the first question
while I drag windows around, please?

00:12:09.360 --> 00:12:15.600
(Amin: Sure. It says, "do you use Emacs
as a community building tool?")

00:12:15.600 --> 00:12:19.760
Do I use Emacs as a community building
tool, or how do I?

00:12:19.760 --> 00:12:23.519
(Amin: It just says do you.) Yes, absolutely.

00:12:23.519 --> 00:12:29.920
I think Emacs is an ambassador to the
GNU tool chain.

00:12:29.920 --> 00:12:33.027
I think that in the fullness of time,

00:12:33.027 --> 00:12:36.558
we will see an Emacs

00:12:36.558 --> 00:12:43.760
that makes iOS and Android and other
closed-source tools dream.

00:12:43.760 --> 00:12:46.689
That's why they mock us and call Emacs

00:12:46.689 --> 00:12:49.200
an operating system. It's because

00:12:49.200 --> 00:12:51.440
it could be, if we cared for it to be.

00:12:51.440 --> 00:12:55.680
It's quite a threatening product

00:12:55.680 --> 00:12:57.440
from the perspective of how many problem

00:12:57.440 --> 00:12:58.540
spaces it can address,

00:12:58.540 --> 00:13:01.519
how many types of users it can satisfy,

00:13:01.519 --> 00:13:04.399
the things that we can do to make

00:13:04.399 --> 00:13:06.456
it robust in those environments.

00:13:06.456 --> 00:13:09.524
I mean, we're always thinking about the
weak points,

00:13:09.524 --> 00:13:14.639
but is Emacs a community building tool?
Heck yeah.

00:13:14.639 --> 00:13:18.480
(Amin: There's like one or two more
questions.

00:13:18.480 --> 00:13:22.480
I think they're more long-form so it
might be better

00:13:22.480 --> 00:13:26.880
if you took them off stream so you could
keep the schedule on time.)

00:13:26.880 --> 00:13:29.463
I would love to take those questions
offline.

00:13:29.463 --> 00:13:30.908
I will respond to you

00:13:30.908 --> 00:13:32.237
in writing if we don't get to it

00:13:32.237 --> 00:13:33.360
in a breakout room.

00:13:33.360 --> 00:13:35.451
Thanks so much for joining us.

00:13:35.451 --> 00:13:36.639
I can't wait to see the rest of the

00:13:36.639 --> 00:13:38.000
conference. See you there!

00:13:38.000 --> 00:13:42.800
(Amin: Awesome. Thank you again so much, Corwin.)