WEBVTT 00:04.960 --> 00:00:07.680 Hello everyone. My name is Grant Shangreaux, 00:07.680 --> 00:00:10.719 and I'm happy to be back here at EmacsConf. 00:00:10.719 --> 00:00:13.840 So before I was a programmer professionally, 00:00:13.840 --> 00:00:16.800 I was a Montessori guide with young children, 00:00:16.800 --> 00:00:18.960 and now I'm a parent of a child 00:00:18.960 --> 00:00:20.319 in a Montessori classroom. 00:00:20.320 --> 00:00:21.600 I was thinking Emacs 00:00:21.600 --> 00:00:22.960 and Montessori philosophy 00:00:22.960 --> 00:00:25.760 are both fundamentally about respect. 00:00:25.760 --> 00:00:27.840 Respect children, for the child 00:27.840 --> 00:00:29.760 is the parent to the adult. 00:00:29.760 --> 00:00:32.079 And we should respect users. 00:32.079 --> 00:00:33.440 Maybe the user is the parent 00:00:33.440 --> 00:00:35.839 to the hacker. That was certainly my case. 00:00:35.840 --> 00:00:37.680 So this talk is about the similarities 00:37.680 --> 00:00:39.440 between the Emacs environment 00:00:39.440 --> 00:00:41.040 and the Montessori classroom, 00:00:41.040 --> 00:00:43.760 which is called a prepared environment, 00:00:43.760 --> 00:00:45.760 meaning that everything in the environment 00:00:45.760 --> 00:00:48.559 has been prepared for the child to come 00:00:48.559 --> 00:00:51.119 and interact with in a meaningful way. 00:00:51.120 --> 00:00:52.399 The child will be driven 00:00:52.399 --> 00:00:54.399 by natural human tendencies 00:00:54.399 --> 00:00:56.399 to interact with their environment 00:00:56.399 --> 00:00:58.079 and to construct and refine 00:00:58.079 --> 00:00:59.920 their understanding of the world 00:00:59.920 --> 00:01:01.359 and the things in it. 00:01:01.359 --> 00:01:03.600 What I hope you come away from this talk with 00:01:03.600 --> 00:01:06.080 is just a new perspective 00:01:06.080 --> 00:01:08.479 on Emacs and software, 00:01:08.479 --> 00:01:10.240 and how users interact 00:01:10.240 --> 00:01:13.520 in a prepared environment like Emacs 00:01:13.520 --> 00:01:15.280 following their human tendencies 00:01:15.280 --> 00:01:17.200 to gain understanding 00:01:17.200 --> 00:01:19.118 and reach toward perfection. 00:01:19.119 --> 00:01:21.040 Okay. So the human tendencies 00:01:21.040 --> 00:01:24.000 are innate drives present in everybody. 00:01:24.000 --> 00:01:25.600 They're what enable us to explore 00:01:25.600 --> 00:01:27.520 and make sense of our world. 01:27.520 --> 00:01:29.360 We use these human tendencies 00:01:29.360 --> 00:01:32.960 to construct and refine the world itself. 01:32.960 --> 00:01:34.240 You know, if you're an Emacs user, 00:01:34.240 --> 00:01:35.920 I hope that's ringing some bells for you 00:01:35.920 --> 00:01:38.320 right away, because what we do 00:01:38.320 --> 00:01:40.960 when we interact with Emacs as individuals 00:01:40.960 --> 00:01:45.360 is construct and refine our world in Emacs. 01:45.360 --> 00:01:46.320 So I'm going to go through 00:01:46.320 --> 00:01:47.920 the human tendencies one by one 00:01:47.920 --> 00:01:48.960 and bring up things 00:01:48.960 --> 00:01:52.079 that I have observed or noticed in Emacs. 01:52.079 --> 00:01:53.840 I'm sure there's plenty more. 00:01:53.840 --> 00:01:56.559 Feel free to share it in chat. 01:56.560 --> 00:02:00.000 So number one is orientation. 00:02:00.000 --> 00:02:02.000 Human beings want to know their relationship 00:02:02.000 --> 00:02:04.320 to the environment around them. 02:04.320 --> 00:02:05.840 With children, when they come into 00:02:05.840 --> 00:02:07.520 a new environment, they want to look at it, 02:07.520 --> 00:02:09.360 touch everything around them. 02:09.360 --> 00:02:11.520 They want to know where they fit in, 02:11.520 --> 00:02:12.800 things like that. 02:12.800 --> 00:02:15.599 In Emacs, the easiest thing to think of 00:02:15.599 --> 00:02:18.560 is the initial new Emacs buffer. 00:02:18.560 --> 00:02:21.040 Right away, that is giving you 00:02:21.040 --> 00:02:23.440 some guideposts to orient yourself. 00:02:23.440 --> 00:02:25.920 If you've used any of the other 02:25.920 --> 00:02:28.720 Emacs starter packages, different packages 00:02:28.720 --> 00:02:30.239 take different approaches to this. 00:02:30.239 --> 00:02:33.519 I think if you're trying to get people 00:02:33.519 --> 00:02:36.080 to use Emacs for some reason, 00:02:36.080 --> 00:02:39.440 thinking about how individuals 00:02:39.440 --> 00:02:40.720 might orient themselves 02:40.720 --> 00:02:43.680 to this new software world is important. 00:02:43.680 --> 00:02:46.000 I think that there are friendly ways 02:46.000 --> 00:02:48.080 to welcome people into the environment 02:48.080 --> 00:02:50.879 and to make it easier for people 00:02:50.879 --> 00:02:53.120 to orient themselves within Emacs. 00:02:53.120 --> 00:02:56.080 Of course we've also got the Info manuals, 00:02:56.080 --> 00:02:57.760 and one of my favorite examples 02:57.760 --> 00:03:00.080 is the which-key package, which, 00:03:00.080 --> 00:03:01.519 when you press a key, 00:03:01.519 --> 00:03:04.000 it'll pop up with all of the following 00:03:04.000 --> 00:03:05.760 key bindings that are available. 00:03:05.760 --> 00:03:09.280 That's a really important way for me 03:09.280 --> 00:03:13.599 to explore, which is another human tendency, 00:03:13.599 --> 00:03:15.280 or to orient myself; 00:03:15.280 --> 00:03:17.599 to think about when I press this key, 00:03:17.599 --> 00:03:19.920 now I've got these possibilities. 00:03:19.920 --> 00:03:21.760 You see that all over in Emacs 00:03:21.760 --> 00:03:25.920 with hydras or the Magit transient buffers. 00:03:25.920 --> 00:03:27.280 There's all sorts of ways 00:03:27.280 --> 00:03:29.440 that Emacs is trying to help us 00:03:29.440 --> 00:03:30.719 orient ourselves. 00:03:30.720 --> 00:03:33.440 The second tendency is order, which 00:03:33.440 --> 00:03:35.120 I probably should have talked about first, 00:03:35.120 --> 00:03:38.480 but here I am. I myself am not 00:03:38.480 --> 00:03:40.799 particularly attuned to order, 00:03:40.799 --> 00:03:43.120 but when I was in the Montessori classroom, 00:03:43.120 --> 00:03:45.920 I found that it wasn't necessarily myself 00:03:45.920 --> 00:03:47.360 imposing the order, it was... 00:03:47.360 --> 00:03:48.480 The environment itself 00:03:48.480 --> 00:03:50.239 has a certain order to it, 00:03:50.239 --> 00:03:52.080 and by creating an environment 00:03:52.080 --> 00:03:54.239 where everything has its place, 03:54.239 --> 00:03:56.480 and everything has its time, 00:03:56.480 --> 00:03:59.840 and you have a way of doing things, 00:03:59.840 --> 00:04:02.480 it makes it easier for the child 00:04:02.480 --> 00:04:04.560 to develop that internal sense of order 00:04:04.560 --> 00:04:07.120 and succeed at imposing order 00:04:07.120 --> 00:04:09.360 upon their work, which... 00:04:09.360 --> 00:04:11.360 We do that as programmers. 04:11.360 --> 00:04:13.280 If we're contributing to Emacs, 00:04:13.280 --> 00:04:16.079 we try to do so in an orderly way, 00:04:16.079 --> 00:04:18.160 use prefixes for namespacing, 00:04:18.160 --> 00:04:19.919 since we don't have that ability 00:04:19.919 --> 00:04:20.959 in Emacs Lisp, 00:04:20.959 --> 00:04:22.600 and by sharing well-ordered 00:04:22.600 --> 00:04:25.999 self-documenting programs with our community. 04:26.000 --> 00:04:28.560 Number three is exploration. I think 00:04:28.560 --> 00:04:30.720 exploration is what drew me into Emacs, 04:30.720 --> 00:04:32.400 personally. In the beginning, 00:04:32.400 --> 00:04:35.759 it was just this wondrous 00:04:35.759 --> 00:04:36.800 software environment 00:04:36.800 --> 00:04:39.360 that offered so many opportunities. 00:04:39.360 --> 00:04:41.680 I was curious. Like, you've got 00:04:41.680 --> 00:04:42.880 your scratch buffer. 00:04:42.880 --> 00:04:45.040 You can explore in there with expressions. 00:04:45.040 --> 00:04:46.880 You can start up IELM. 00:04:46.880 --> 00:04:49.440 You can explore your file system with Dired. 00:04:49.440 --> 00:04:51.199 You can explore different packages 00:04:51.199 --> 00:04:54.560 with list-packages. There's so many ways 00:04:54.560 --> 00:04:56.880 you can explore in Emacs. 00:04:56.880 --> 00:04:59.040 For me, that was very delightful. 00:04:59.040 --> 00:05:01.919 It really resonated with my bias 00:05:01.919 --> 00:05:04.960 of exploration and human tendencies. 05:04.960 --> 00:05:07.280 Places to explore in Emacs are wonderful, 05:07.280 --> 00:05:08.720 and eventually you get down 00:05:08.720 --> 00:05:12.079 into the source code, and it's great. 05:12.080 --> 00:05:14.400 And then we've got communication. 00:05:14.400 --> 00:05:16.639 I think communication kind of 00:05:16.639 --> 00:05:17.919 speaks for itself as well. 00:05:17.919 --> 00:05:19.520 Emacs is software. 05:19.520 --> 00:05:22.080 Software is a form of communication. 05:22.080 --> 00:05:23.360 We're all driven to communicate. 00:05:23.360 --> 00:05:26.240 That's why we're here at this conference. 05:26.240 --> 00:05:28.320 Within Emacs, you've got lots of ways 00:05:28.320 --> 00:05:30.960 to communicate. You've got IRC clients, 00:05:30.960 --> 00:05:32.960 mail, you've got news readers. 00:05:32.960 --> 00:05:34.080 You could use Org. 00:05:34.080 --> 00:05:37.600 I even started working on a magazine in Org 00:05:37.600 --> 00:05:38.800 that I was going to distribute 00:05:38.800 --> 00:05:42.479 via live Debian CDs back in the day. 00:05:42.479 --> 00:05:45.120 So I think Emacs for communication 00:05:45.120 --> 00:05:46.159 is pretty clear. 00:05:46.160 --> 00:05:48.639 Activity. So Activities is just 00:05:48.639 --> 00:05:51.120 a natural thing when you're... 00:05:51.120 --> 00:05:52.479 You see it in children. Right? 00:05:52.479 --> 00:05:54.720 Children always find something to do 00:05:54.720 --> 00:05:57.120 to keep busy, whether they're pretending, 00:05:57.120 --> 00:05:59.039 or running around, or moving. 00:05:59.039 --> 00:06:00.240 You don't have to have a goal 00:06:00.240 --> 00:06:01.759 or end-product in mind. 00:06:01.759 --> 00:06:02.800 People are just active. 00:06:02.800 --> 00:06:06.160 You do things. I find that in Emacs, 00:06:06.160 --> 00:06:08.000 all the time, when I don't know 00:06:08.000 --> 00:06:09.919 what to work on, sometimes I just go 06:09.919 --> 00:06:12.479 into Emacs and hack around and, like, 06:12.479 --> 00:06:14.000 change things in my config. 00:06:14.000 --> 00:06:16.000 I'm sure we've all been there. 00:06:16.000 --> 00:06:19.120 So Emacs encourages and enables 00:06:19.120 --> 00:06:21.198 that kind of activity as well. 00:06:21.199 --> 00:06:23.120 Manipulation is the next one. 00:06:23.120 --> 00:06:27.120 So Lisp. Anyone? The fact that Emacs is 00:06:27.120 --> 00:06:29.919 this live Lisp process that's running, 06:29.919 --> 00:06:33.360 that you can manipulate at your fingertips... 00:06:33.360 --> 00:06:35.120 You couldn't ask for something better. 00:06:35.120 --> 00:06:37.360 I think the malleability of Emacs 00:06:37.360 --> 00:06:39.600 is why people love it. 06:39.600 --> 00:06:41.840 Clearly, the environment of Emacs 00:06:41.840 --> 00:06:44.240 was prepared with manipulation in mind 00:06:44.240 --> 00:06:45.280 from the very start. 00:06:45.280 --> 00:06:46.960 We'll go through these next ones 06:46.960 --> 00:06:48.318 pretty quickly. 00:06:48.319 --> 00:06:51.759 We've got work or purposeful activity. 06:51.759 --> 00:06:53.039 Emacs would not exist 00:06:53.039 --> 00:06:55.120 without this human tendency. 06:55.120 --> 00:06:56.319 it's been worked on 00:06:56.319 --> 00:06:58.240 by free software volunteers 00:06:58.240 --> 00:07:03.360 for 40 years, and this is the kind of 00:07:03.360 --> 00:07:06.000 self-motivated work that inspired me 00:07:06.000 --> 00:07:09.198 to be a hacker. 07:09.199 --> 00:07:11.919 Repetition is another human tendency. 00:07:11.919 --> 00:07:14.960 I think that one kind of speaks for itself. 07:14.960 --> 00:07:17.120 It's this tendency that gave me 00:07:17.120 --> 00:07:19.919 Emacs pinky after learning all of those 00:07:19.919 --> 00:07:23.360 key bindings, and then that same tendency 00:07:23.360 --> 00:07:26.639 drove me to learn another modal key mapping 00:07:26.639 --> 00:07:29.759 to deal with that. I've repeated myself, 00:07:29.759 --> 00:07:32.400 starting over new Emacs configs 00:07:32.400 --> 00:07:35.120 several times. I could give another example, 00:07:35.120 --> 00:07:36.960 but I'll just be repeating myself 00:07:36.960 --> 00:07:38.959 at this point. 07:38.960 --> 00:07:42.880 And then exactness. So we have a tendency, 00:07:42.880 --> 00:07:45.840 a human tendency toward exactness. 07:45.840 --> 00:07:48.160 That's not one that's very strong for me. 07:48.160 --> 00:07:50.879 I'm not a super exacting person. 07:50.879 --> 00:07:53.520 But I think you can see that in Emacs, 00:07:53.520 --> 00:07:55.520 like certain parts of it 00:07:55.520 --> 00:07:59.599 have been refined down to exactness. 00:07:59.599 --> 00:08:01.759 I know when I'm working, 00:08:01.759 --> 00:08:04.560 sometimes it's just the theme that I choose 00:08:04.560 --> 00:08:06.319 or making sure the mode line 00:08:06.319 --> 00:08:07.840 is exactly the way I want it... 00:08:07.840 --> 00:08:10.160 You know, getting that environment 00:08:10.160 --> 00:08:14.240 to feel conducive to thought and work 00:08:14.240 --> 00:08:16.318 is important to me. 08:16.319 --> 00:08:18.560 And then we have abstraction, which... 00:08:18.560 --> 00:08:19.680 That one goes pretty deep, 00:08:19.680 --> 00:08:21.840 but I think you can see 00:08:21.840 --> 00:08:24.080 how abstraction works in Emacs. 08:24.080 --> 00:08:26.080 A buffer is an abstraction. 00:08:26.080 --> 00:08:27.840 One of the great things about Emacs 00:08:27.840 --> 00:08:29.199 and about Montessori philosophy 00:08:29.199 --> 00:08:32.080 is that these abstractions 00:08:32.080 --> 00:08:33.200 might not be something 00:08:33.200 --> 00:08:34.640 you need to think about right away, 00:08:34.640 --> 00:08:35.919 but they're there, right, 00:08:35.919 --> 00:08:39.200 like the fact that a buffer abstracts 00:08:39.200 --> 00:08:41.279 over working with text. 08:41.279 --> 00:08:43.519 Once that becomes clear to you, 00:08:43.519 --> 00:08:45.760 once you have a reason to manipulate it, 00:08:45.760 --> 00:08:48.320 having the abstraction of the buffer there 00:08:48.320 --> 00:08:51.440 to work with makes a huge difference. 00:08:51.440 --> 00:08:52.160 And then of course, 00:08:52.160 --> 00:08:54.560 we can create our own abstractions: 08:54.560 --> 00:08:57.519 transients, pop-up buffers, hydras... 08:57.519 --> 00:08:59.360 I'm sure there's plenty of examples 00:08:59.360 --> 00:09:01.999 in chat that I can't come up with. 09:02.000 --> 00:09:03.519 And finally, perfection. 00:09:03.519 --> 00:09:04.959 All of the human tendencies 00:09:04.959 --> 00:09:07.279 culminate in this one. 00:09:07.279 --> 00:09:08.320 Perfection doesn't mean 00:09:08.320 --> 00:09:10.240 like you just have to make 00:09:10.240 --> 00:09:13.040 this perfect shining idealistic thing. 09:13.040 --> 00:09:15.680 It's about perfecting what we do. 00:09:15.680 --> 00:09:18.800 I think everybody who's worked with Emacs 00:09:18.800 --> 00:09:19.680 for a long time, 00:09:19.680 --> 00:09:22.240 you perfect your configuration. 09:22.240 --> 00:09:25.120 Sometimes you tear it down and start over. 00:09:25.120 --> 00:09:26.399 If you're working on a package, 00:09:26.399 --> 00:09:27.760 you perfect that, 00:09:27.760 --> 00:09:29.760 and it's an ongoing process. 00:09:29.760 --> 00:09:31.600 An example I can think of are 00:09:31.600 --> 00:09:33.680 like raxod502's packages. 09:33.680 --> 00:09:36.720 straight.el is an attempt at perfecting 00:09:36.720 --> 00:09:40.480 the package management system in Emacs, 09:40.480 --> 00:09:41.920 and he's taken a stab at 00:09:41.920 --> 00:09:43.440 several other common things, 00:09:43.440 --> 00:09:46.320 like incremental selection and so on. 09:46.320 --> 00:09:50.959 These aren't necessarily finished problems. 09:50.959 --> 00:09:52.480 There's room for perfection, 00:09:52.480 --> 00:09:58.160 and we have a human tendency to pursue that. 09:58.160 --> 00:09:59.040 I hope this talk 00:09:59.040 --> 00:10:00.080 has gotten you thinking about 00:10:00.080 --> 00:10:02.880 how Emacs and the Montessori classroom 00:10:02.880 --> 00:10:04.480 are similar--they're both 00:10:04.480 --> 00:10:06.160 prepared environments 10:06.160 --> 00:10:08.800 that call upon our human tendencies 10:08.800 --> 00:10:12.240 to construct and refine our world-- 10:12.240 --> 00:10:15.519 and how Emacs respects us as users 10:15.519 --> 00:10:18.480 in the hopes that we will grow up into 10:18.480 --> 00:10:21.200 creative hackers. 10:21.200 --> 00:10:22.240 Thank you for listening. 00:10:22.240 --> 00:10:23.680 I'm happy to answer any questions 00:10:23.680 --> 00:10:26.079 after the talk. 00:10:26.079 --> 00:10:27.079 [captions by sachac]