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.)