WEBVTT
00:00:00.399 --> 00:00:03.280
My name is Corwin Brust and I
00:00:03.280 --> 00:00:06.240
will be talking about getting started
00:00:06.240 --> 00:00:08.960
with Emacs today.
00:00:08.960 --> 00:00:11.200
I have been an Emacs user for a long
00:00:11.200 --> 00:00:13.040
time. First of all, thanks and a huge
00:00:13.040 --> 00:00:15.360
welcome to the conference
00:00:15.360 --> 00:00:18.400
from me and
00:00:18.400 --> 00:00:22.400
and on behalf
00:00:22.400 --> 00:00:24.720
and back to the other people that
00:00:24.720 --> 00:00:26.080
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:32.480
with that and just, kind of, see
00:00:32.480 --> 00:00:36.399
backstage.
00:00:36.399 --> 00:00:39.680
So I've used a lot of different editors
00:00:39.680 --> 00:00:42.960
in my time. That's
00:00:42.960 --> 00:00:45.440
about 25 years as a professional
00:00:45.440 --> 00:00:52.399
software engineer.
00:00:52.399 --> 00:00:53.920
And most of that time I've been using
00:00:53.920 --> 00:00:56.160
Emacs. 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:15.200
something that you notice right away is that
00:01:15.200 --> 00:01:17.520
you get good with it in a way that stays
00:01:17.520 --> 00:01:18.560
meaningful.
00:01:18.560 --> 00:01:20.799
You learn new things. Those things
00:01:20.799 --> 00:01:27.600
stick with you. You learn how to
00:01:27.600 --> 00:01:30.720
make it do new tricks and then
00:01:30.720 --> 00:01:33.759
keep doing those tricks.
00:01:33.759 --> 00:01:36.799
I want to mention that this
00:01:36.799 --> 00:01:39.439
conference--oops,
00:01:39.439 --> 00:01:41.439
this talk isn't about
00:01:41.439 --> 00:01:45.600
how to adjust your
00:01:45.600 --> 00:01:47.520
configuration specifically. I don't have
00:01:47.520 --> 00:01:50.000
a bunch of good code samples in here.
00:01:50.000 --> 00:01:51.520
There are other great talks at the
00:01:51.520 --> 00:01:54.399
conference, particularly Andrew's,
00:01:54.399 --> 00:01:57.600
that I looked at, that looked
00:01:57.600 --> 00:01:59.920
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.200
it more comfortable for me starting?" This
00:02:07.200 --> 00:02:08.879
is about how to think about the problem
00:02:08.879 --> 00:02:09.759
space.
00:02:09.759 --> 00:02:12.959
Hopefully, a good warm up as we
00:02:12.959 --> 00:02:14.080
start thinking about some of the
00:02:14.080 --> 00:02:17.200
lightning talks a little later on.
00:02:17.200 --> 00:02:20.000
I'm just gonna quickly make sure I
00:02:20.000 --> 00:02:22.400
can see my IRC buffer in case I run into
00:02:22.400 --> 00:02:24.080
time. I didn't get my stopwatch started
00:02:24.080 --> 00:02:25.680
for this one.
00:02:25.680 --> 00:02:29.680
So all right, let's dive in.
00:02:29.680 --> 00:02:32.879
We assume that we want to install
00:02:32.879 --> 00:02:33.840
packages
00:02:33.840 --> 00:02:36.560
and maybe configure some features. This
00:02:36.560 --> 00:02:38.319
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.800
with a bunch of people on a team and we
00:02:40.800 --> 00:02:42.160
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:49.280
Others are installing it for the first
00:02:49.280 --> 00:02:53.519
time.
00:02:53.519 --> 00:02:56.879
So the first question is, you know,
00:02:56.879 --> 00:02:59.280
in that context: what's the value
00:02:59.280 --> 00:03:00.879
proposition? Why should I mess with my
00:03:00.879 --> 00:03:02.840
machine, my mature Emacs
00:03:02.840 --> 00:03:05.599
configuration, and impose my
00:03:05.599 --> 00:03:07.440
ideas over the way somebody else is
00:03:07.440 --> 00:03:10.239
learning Emacs? Well,
00:03:10.239 --> 00:03:12.800
it can be.. I'm off my slides here a
00:03:12.800 --> 00:03:13.840
little bit.
00:03:13.840 --> 00:03:16.400
It can be a little bit
00:03:16.400 --> 00:03:16.959
tricky
00:03:16.959 --> 00:03:20.400
to learn Emacs. One thing that
00:03:20.400 --> 00:03:21.440
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:26.239
can tell us, kinda, keystroke for
00:03:26.239 --> 00:03:28.080
keystroke at times, what to do and
00:03:28.080 --> 00:03:30.480
explain what everything is doing.
00:03:30.480 --> 00:03:32.400
Using the same packages can really
00:03:32.400 --> 00:03:35.840
help us working together on a project.
00:03:35.840 --> 00:03:39.840
Speaking from my personal
00:03:39.840 --> 00:03:40.720
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.040
where I was excited to program in Emacs
00:03:45.040 --> 00:03:46.720
Lisp. I've programmed in a lot of programming
00:03:46.720 --> 00:03:47.840
languages,
00:03:47.840 --> 00:03:51.200
but Lisp wasn't on my list. I looked at
00:03:51.200 --> 00:03:53.680
my config that I was copy-pasting around
00:03:53.680 --> 00:03:56.319
from generation after generation of
00:03:56.319 --> 00:03:57.519
.emacs file or
00:03:57.519 --> 00:03:59.519
recrafting it from hand and from Internet
00:03:59.519 --> 00:04:00.799
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:10.959
and
00:04:10.959 --> 00:04:13.680
be able to to quickly get through that
00:04:13.680 --> 00:04:15.280
workflow that caused me to install the
00:04:15.280 --> 00:04:17.440
program.
00:04:17.440 --> 00:04:20.560
You know, just
00:04:20.560 --> 00:04:23.440
little simple one-liners that that
00:04:23.440 --> 00:04:25.199
got committed to memory over decades
00:04:25.199 --> 00:04:27.120
eventually just led me to a sort of "hey what's going on
00:04:27.120 --> 00:04:28.880
here." And I credit
00:04:28.880 --> 00:04:31.680
Jeff Goff, my good friend who died
00:04:31.680 --> 00:04:33.520
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:40.800
a little bit more in another talk we
00:04:40.800 --> 00:04:41.360
have
00:04:41.360 --> 00:04:43.280
scheduled, but Jeff was a huge
00:04:43.280 --> 00:04:44.400
influenceo on us
00:04:44.400 --> 00:04:47.280
in a number of ways and a huge
00:04:47.280 --> 00:04:48.720
contributor to the Raku programming
00:04:48.720 --> 00:04:50.720
language
00:04:50.720 --> 00:04:54.840
which is very cool.
00:04:54.840 --> 00:04:58.880
So, understanding how
00:04:58.880 --> 00:05:01.039
to make a good decision about splitting
00:05:01.039 --> 00:05:03.120
up configuration in a way to share it
00:05:03.120 --> 00:05:03.680
across
00:05:03.680 --> 00:05:05.600
people with really different uses of
00:05:05.600 --> 00:05:07.600
Emacs... That's actually a
00:05:07.600 --> 00:05:09.360
complicated topic and I want to
00:05:09.360 --> 00:05:11.039
sort of back off and stare at it for a
00:05:11.039 --> 00:05:12.639
second.
00:05:12.639 --> 00:05:15.840
I think Emacs is about people, so that
00:05:15.840 --> 00:05:18.720
means it's about community.
00:05:18.720 --> 00:05:22.000
And community means we're going to
00:05:22.000 --> 00:05:24.960
invite disagreement.
00:05:24.960 --> 00:05:29.120
In fact, that disagreement
00:05:29.120 --> 00:05:32.160
isn't necessarily a road-block to our
00:05:32.160 --> 00:05:33.280
project. In fact,
00:05:33.280 --> 00:05:35.680
some of the work that a community
00:05:35.680 --> 00:05:37.759
project can invite us to do
00:05:37.759 --> 00:05:39.680
is to get closer to each other by
00:05:39.680 --> 00:05:40.960
inviting those disagreements, by
00:05:40.960 --> 00:05:42.080
learning from them--learning from
00:05:42.080 --> 00:05:43.280
different people's
00:05:43.280 --> 00:05:46.880
styles and from how they argue,
00:05:46.880 --> 00:05:49.120
and thinking about why they have that
00:05:49.120 --> 00:05:50.400
perspective and
00:05:50.400 --> 00:05:53.680
what technical benefits that
00:05:53.680 --> 00:05:55.360
perhaps radical point of view might
00:05:55.360 --> 00:05:56.720
carry away. Some people are really
00:05:56.720 --> 00:05:59.039
aggressive arguers, and others
00:05:59.039 --> 00:06:01.919
are very passive and really
00:06:01.919 --> 00:06:03.120
couch their ideas
00:06:03.120 --> 00:06:06.240
in distancing terms, to say, "well
00:06:06.240 --> 00:06:08.080
probably, this is a good idea" or
00:06:08.080 --> 00:06:12.479
"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.120
how certain a person is, because we're
00:06:17.120 --> 00:06:18.479
different. We have different ways of
00:06:18.479 --> 00:06:19.520
communicating
00:06:19.520 --> 00:06:23.380
ideas like certainty or excitement.
00:06:23.380 --> 00:06:24.560
[Music]
00:06:24.560 --> 00:06:26.560
When we think about a bunch of really
00:06:26.560 --> 00:06:30.000
diverse programmers approaching Emacs,
00:06:30.000 --> 00:06:33.280
probably one of our our first really big
00:06:33.280 --> 00:06:36.479
challenges is just
00:06:36.479 --> 00:06:39.759
to pick what we're going to go
00:06:39.759 --> 00:06:41.120
after. There are a lot of
00:06:41.120 --> 00:06:44.000
existing kit
00:06:44.000 --> 00:06:49.599
installs and things like this.
00:06:49.599 --> 00:06:52.880
My argument is that you could actually
00:06:52.880 --> 00:06:54.400
get pretty far
00:06:54.400 --> 00:06:56.560
just trading files around. Maybe the
00:06:56.560 --> 00:07:02.240
more valuable
00:07:02.240 --> 00:07:04.720
conversation to have is making the
00:07:04.720 --> 00:07:06.080
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:15.680
the traditional splayed out over a
00:07:15.680 --> 00:07:17.440
single line completion
00:07:17.440 --> 00:07:19.840
for example in the mode line, those
00:07:19.840 --> 00:07:20.800
people are going to
00:07:20.800 --> 00:07:24.160
add a line of config
00:07:24.160 --> 00:07:29.039
to their own setup?
00:07:29.039 --> 00:07:32.479
The way to get there? I mean, how do we
00:07:32.479 --> 00:07:34.080
find out what works? We don't want to
00:07:34.080 --> 00:07:35.520
slow down the people that
00:07:35.520 --> 00:07:38.800
are super productive with Emacs by
00:07:38.800 --> 00:07:40.479
asking them to completely break their
00:07:40.479 --> 00:07:42.080
workflows and make it easier for new
00:07:42.080 --> 00:07:42.560
folks.
00:07:42.560 --> 00:07:46.240
At the same time, we do
00:07:46.240 --> 00:07:48.960
want to make sure those new people are
00:07:48.960 --> 00:07:51.280
excited by Emacs and not turned off by
00:07:51.280 --> 00:07:52.720
having to learn
00:07:52.720 --> 00:07:56.319
the entire jungle of Emacs
00:07:56.319 --> 00:07:59.840
history in the form of its
00:07:59.840 --> 00:08:03.120
unique technical stylings for
00:08:03.120 --> 00:08:06.160
things like frames,
00:08:06.160 --> 00:08:09.840
buffers, and other unique
00:08:09.840 --> 00:08:12.960
Emacs viewpoints on important
00:08:12.960 --> 00:08:16.240
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.280
Rather than necessarily following our
00:08:25.280 --> 00:08:31.440
defaults of
00:08:31.440 --> 00:08:33.279
finding the simplest configuration
00:08:33.279 --> 00:08:35.120
that generally work and letting people
00:08:35.120 --> 00:08:37.440
customize it,
00:08:37.440 --> 00:08:40.479
what if we tried to look
00:08:40.479 --> 00:08:42.560
for fairly specific configurations that
00:08:42.560 --> 00:08:44.159
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:58.800
I think that degree of
00:08:58.800 --> 00:08:59.839
experimentation
00:08:59.839 --> 00:09:01.680
can drive back into the Emacs
00:09:01.680 --> 00:09:03.360
development process. In the development
00:09:03.360 --> 00:09:04.800
mailing list...
00:09:04.800 --> 00:09:07.760
I'm hoping I'll get a timing cue
00:09:07.760 --> 00:09:15.120
here.
00:09:15.120 --> 00:09:17.760
In the context of Emacs development as a
00:09:17.760 --> 00:09:18.320
greater
00:09:18.320 --> 00:09:20.959
entity, 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:24.000
Sometimes we can have the
00:09:24.000 --> 00:09:26.720
sense that defaults in Emacs will never
00:09:26.720 --> 00:09:29.279
change. The conversation is too difficult.
00:09:29.279 --> 00:09:30.959
I think one thing that can help us get
00:09:30.959 --> 00:09:32.560
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.880
is using this set of bindings and
00:09:38.880 --> 00:09:40.399
here's what we learned about
00:09:40.399 --> 00:09:42.240
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:52.640
Oh, beautiful. Okay, great. I will try to
00:09:52.640 --> 00:09:54.160
get through my last few slides that i
00:09:54.160 --> 00:09:54.720
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:06.800
in theory, Emacs works
00:10:06.800 --> 00:10:10.720
out of the box. That means we're
00:10:10.720 --> 00:10:14.079
free to experiment. We can
00:10:14.079 --> 00:10:17.120
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:27.360
I don't know what I was thinking on that
00:10:27.360 --> 00:10:30.079
slide, excuse me.
00:10:30.079 --> 00:10:32.240
Bringing it back around
00:10:32.240 --> 00:10:33.440
to the free
00:10:33.440 --> 00:10:35.680
and open source software community,
00:10:35.680 --> 00:10:36.480
our goal
00:10:36.480 --> 00:10:39.519
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:45.600
That's the context to take with project
00:10:45.600 --> 00:10:47.680
initialization, but sometimes
00:10:47.680 --> 00:10:49.560
it could make sense to put...
00:10:49.560 --> 00:10:50.800
[Music]
00:10:50.800 --> 00:10:53.040
to put some gloves on. I've thrown up on
00:10:53.040 --> 00:10:54.880
the screen here just a couple of other
00:10:54.880 --> 00:10:57.279
ideas, ways to maybe think outside of the
00:10:57.279 --> 00:10:57.920
box.
00:10:57.920 --> 00:11:00.399
As you're putting together project
00:11:00.399 --> 00:11:01.440
nets,
00:11:01.440 --> 00:11:04.959
my words of encouragement are to experiment
00:11:04.959 --> 00:11:05.519
with it,
00:11:05.519 --> 00:11:09.200
try different things, and think really
00:11:09.200 --> 00:11:10.560
specifically about how
00:11:10.560 --> 00:11:14.320
different the development users
00:11:14.320 --> 00:11:17.760
might be from each other as you
00:11:17.760 --> 00:11:21.680
define standards for configuring
00:11:21.680 --> 00:11:23.519
the user environment of Emacs
00:11:23.519 --> 00:11:25.360
specifically for developing
00:11:25.360 --> 00:11:29.120
on a project. That's pretty much my talk.
00:11:29.120 --> 00:11:30.480
If there's any time, I would take a
00:11:30.480 --> 00:11:32.959
couple questions.
00:11:32.959 --> 00:11:35.040
Thank you for your awesome talk,
00:11:35.040 --> 00:11:36.480
Corwin.
00:11:36.480 --> 00:11:38.160
I think we have one or two
00:11:38.160 --> 00:11:49.519
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:56.959
Oh, I managed to close the
00:11:56.959 --> 00:11:58.000
pad
00:11:58.000 --> 00:12:00.560
and I am trying to open it again. All
00:12:00.560 --> 00:12:03.519
right, there it opened.
00:12:03.519 --> 00:12:05.040
Bringing it onto a screen where I can
00:12:05.040 --> 00:12:06.880
see it. Will you read me the
00:12:06.880 --> 00:12:08.399
first question while I drag windows
00:12:08.399 --> 00:12:09.360
around, please?
00:12:09.360 --> 00:12:12.720
(Amin: Sure. It says, "do you use Emacs as a
00:12:12.720 --> 00:12:15.600
community building tool?")
00:12:15.600 --> 00:12:17.680
Do I use Emacs as a community building
00:12:17.680 --> 00:12:19.760
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:26.720
I think Emacs is an ambassador to
00:12:26.720 --> 00:12:29.920
the GNU tool chain.
00:12:29.920 --> 00:12:33.279
I think that in the fullness of time, we
00:12:33.279 --> 00:12:34.560
will see an Emacs
00:12:34.560 --> 00:12:38.240
that makes
00:12:38.240 --> 00:12:42.000
and that makes iOS and Android and other
00:12:42.000 --> 00:12:42.800
closed-source
00:12:42.800 --> 00:12:45.680
tools dream. That's why they mock us
00:12:45.680 --> 00:12:46.320
and call
00:12:46.320 --> 00:12:49.200
Emacs 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:59.440
spaces it can address, how many types of
00:12:59.440 --> 00:13:01.519
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:05.600
it robust in those
00:13:05.600 --> 00:13:07.839
environments. I mean, we're always
00:13:07.839 --> 00:13:09.760
thinking about the weak points, but
00:13:09.760 --> 00:13:11.839
is Emacs a community building tool? Heck
00:13:11.839 --> 00:13:14.639
yeah.
00:13:14.639 --> 00:13:17.920
(Amin: There's like one or two more
00:13:17.920 --> 00:13:18.480
questions.
00:13:18.480 --> 00:13:21.519
I think they're more long-form so it
00:13:21.519 --> 00:13:22.480
might be better
00:13:22.480 --> 00:13:24.000
if you took them off stream so you
00:13:24.000 --> 00:13:26.880
could keep the schedule on time.)
00:13:26.880 --> 00:13:28.959
i would love to take those questions
00:13:28.959 --> 00:13:31.040
offline. I will respond to you in
00:13:31.040 --> 00:13:32.399
writing if we don't get to it in a
00:13:32.399 --> 00:13:33.360
breakout room.
00:13:33.360 --> 00:13:35.519
Thanks so much for joining us. I
00:13:35.519 --> 00:13:36.639
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.)