summaryrefslogtreecommitdiffstats
path: root/2021/captions/emacsconf-2021-montessori--emacs-and-montessori-philosophy--grant-shangreaux--main.vtt
blob: 1fd6f335479aae10942caa689daf6bac77db6c97 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
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]