+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.
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
@@ -87,916 +87,916 @@ stick with you. You learn how to
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
"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
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
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
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
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.
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
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
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
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.
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!
-- cgit v1.2.3