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