summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.vtt
blob: 588cf43a684fc0a2e7d57963023047fc8bc8665c (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
WEBVTT

00:00:00.399 --> 00:00:02.683
My name is Corwin Brust

00:00:02.683 --> 00:00:08.960
and I will be talking about getting
started with Emacs today.

00:00:08.960 --> 00:00:11.448
I have been an Emacs user for a long
time.

00:00:11.448 --> 00:00:15.360
First of all, thanks and a huge welcome
to the conference

00:00:15.360 --> 00:00:22.400
from me and and on behalf

00:00:22.400 --> 00:00:24.368
and back to the other people

00:00:24.368 --> 00:00:26.080
that have been helping to organize.

00:00:26.080 --> 00:00:30.480
It's been amazing just to be involved

00:00:30.480 --> 00:00:36.399
with that and just, kind of, see
backstage.

00:00:36.399 --> 00:00:42.281
So I've used a lot of different editors
in my time.

00:00:42.281 --> 00:00:52.399
That's about 25 years as a professional
software engineer.

00:00:52.399 --> 00:00:54.247
And most of that time I've been using
Emacs.

00:00:54.247 --> 00:00:56.160
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:14.410
something that you notice right away

00:01:14.410 --> 00:01:18.560
is that you get good with it in a way
that stays meaningful.

00:01:18.560 --> 00:01:24.199
You learn new things. Those things
stick with you.

00:01:24.199 --> 00:01:33.759
You learn how to make it do new tricks
and then keep doing those tricks.

00:01:33.759 --> 00:01:39.439
I want to mention that this
conference--oops,

00:01:39.439 --> 00:01:44.829
this talk isn't about how to adjust

00:01:44.829 --> 00:01:46.802
your configuration specifically.

00:01:46.802 --> 00:01:50.000
I don't have a bunch of good code
samples in here.

00:01:50.000 --> 00:01:52.451
There are other great talks at the
conference,

00:01:52.451 --> 00:01:56.411
particularly Andrew's, that I looked at,

00:01:56.411 --> 00:01:59.920
that looked like they might be more
aimed at that

00:01:59.920 --> 00:02:02.240
"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.017
it more comfortable for me starting?"

00:02:07.017 --> 00:02:09.759
This is about how to think about the
problem space.

00:02:09.759 --> 00:02:13.337
Hopefully, a good warm up as we start
thinking about

00:02:13.337 --> 00:02:17.200
some of the lightning talks a little
later on.

00:02:17.200 --> 00:02:19.835
I'm just gonna quickly make sure

00:02:19.835 --> 00:02:21.789
I can see my IRC buffer in case

00:02:21.789 --> 00:02:25.680
I run into time. I didn't get my
stopwatch started for this one.

00:02:25.680 --> 00:02:29.680
So all right, let's dive in.

00:02:29.680 --> 00:02:33.840
We assume that we want to
install packages

00:02:33.840 --> 00:02:36.281
and maybe configure some features.

00:02:36.281 --> 00:02:38.319
This 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.541
with a bunch of people on a team

00:02:40.541 --> 00:02:42.160
and we 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:53.519
Others are installing it for the first
time.

00:02:53.519 --> 00:02:57.889
So the first question is, you know, in
that context:

00:02:57.889 --> 00:02:59.784
what's the value proposition?

00:02:59.784 --> 00:03:01.532
Why should I mess with my machine,

00:03:01.532 --> 00:03:04.219
my mature Emacs configuration,

00:03:04.219 --> 00:03:09.815
and impose my ideas over the way
somebody else is learning Emacs?

00:03:09.815 --> 00:03:13.840
Well, it can be.. I'm off my slides here
a little bit.

00:03:13.840 --> 00:03:16.959
It can be a little bit tricky

00:03:16.959 --> 00:03:21.440
to learn Emacs. One thing that
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:27.301
can tell us, kinda, keystroke for
keystroke at times,

00:03:27.301 --> 00:03:30.480
what to do and explain what everything
is doing.

00:03:30.480 --> 00:03:35.840
Using the same packages can really help
us working together on a project.

00:03:35.840 --> 00:03:40.720
Speaking from my personal 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.226
where I was excited to program
in Emacs Lisp.

00:03:45.226 --> 00:03:47.840
I've programmed in a lot of programming
languages,

00:03:47.840 --> 00:03:50.252
but Lisp wasn't on my list.

00:03:50.252 --> 00:03:53.680
I looked at my config that I was
copy-pasting around

00:03:53.680 --> 00:03:57.279
from generation after generation of
.emacs file,

00:03:57.279 --> 00:04:00.799
or recrafting it from hand and from
Internet 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:14.016
and be able to to quickly get through
that workflow

00:04:14.016 --> 00:04:17.440
that caused me to install the program.

00:04:17.440 --> 00:04:24.049
You know, just little simple one-liners
that got committed to memory

00:04:24.049 --> 00:04:27.675
over decades eventually just led me to a
sort of "hey what's going on here."

00:04:27.675 --> 00:04:33.520
And I credit Jeff Goff, my good friend
who died 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:42.000
a little bit more in another talk we
have scheduled,

00:04:42.000 --> 00:04:44.400
but Jeff was a huge influence on us

00:04:44.400 --> 00:04:46.027
in a number of ways,

00:04:46.027 --> 00:04:47.732
and a huge contributor

00:04:47.732 --> 00:04:54.840
to the Raku programming language,
which is very cool.

00:04:54.840 --> 00:05:00.153
So, understanding how to make
a good decision

00:05:00.153 --> 00:05:03.680
about splitting up configuration in a
way to share it across

00:05:03.680 --> 00:05:06.292
people with really different uses of
Emacs...

00:05:06.292 --> 00:05:08.546
That's actually a complicated topic

00:05:08.546 --> 00:05:12.639
and I want to sort of back off and stare
at it for a second.

00:05:12.639 --> 00:05:18.720
I think Emacs is about people, so that
means it's about community.

00:05:18.720 --> 00:05:24.960
And community means we're going to
invite disagreement.

00:05:24.960 --> 00:05:32.687
In fact, that disagreement isn't
necessarily a road-block to our project.

00:05:32.687 --> 00:05:37.759
In fact, some of the work that a
community project can invite us to do

00:05:37.759 --> 00:05:39.505
is to get closer to each other

00:05:39.505 --> 00:05:40.840
by inviting those disagreements,

00:05:40.840 --> 00:05:42.080
by learning from them--learning from

00:05:42.080 --> 00:05:46.880
different people's styles and from how
they argue,

00:05:46.880 --> 00:05:50.058
and thinking about why they have that
perspective

00:05:50.058 --> 00:05:53.227
and what technical benefits

00:05:53.227 --> 00:05:55.800
that perhaps radical point of view might
carry away.

00:05:55.800 --> 00:05:58.266
Some people are really aggressive
arguers,

00:05:58.266 --> 00:06:01.919
and others are very passive and really

00:06:01.919 --> 00:06:05.824
couch their ideas in distancing terms,
to say,

00:06:05.824 --> 00:06:07.906
"well probably, this is a good idea"

00:06:07.906 --> 00:06:12.479
or "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.497
how certain a person is,
because we're different.

00:06:17.497 --> 00:06:19.520
We have different ways of communicating

00:06:19.520 --> 00:06:23.380
ideas like certainty or excitement.

00:06:24.560 --> 00:06:26.235
When we think about a bunch of

00:06:26.235 --> 00:06:30.000
really diverse programmers
approaching Emacs,

00:06:30.000 --> 00:06:36.479
probably one of our first really big
challenges is just

00:06:36.479 --> 00:06:40.085
to pick what we're going
to go after.

00:06:40.085 --> 00:06:49.599
There are a lot of existing kit installs
and things like this.

00:06:49.599 --> 00:06:54.400
My argument is that you could actually
get pretty far

00:06:54.400 --> 00:06:56.020
just trading files around.

00:06:56.020 --> 00:07:03.698
Maybe the more valuable conversation
to have

00:07:03.698 --> 00:07:06.080
is making the 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:17.440
the traditional splayed out over a
single line completion,

00:07:17.440 --> 00:07:19.428
for example in the mode line,

00:07:19.428 --> 00:07:29.039
those people are going to add a line of
config to their own setup?

00:07:29.039 --> 00:07:30.979
The way to get there?

00:07:30.979 --> 00:07:33.344
I mean, how do we find out what works?

00:07:33.344 --> 00:07:38.587
We don't want to slow down the people
that are super productive with Emacs

00:07:38.587 --> 00:07:40.879
by asking them to completely
break their workflows

00:07:40.879 --> 00:07:42.560
and make it easier for new folks.

00:07:42.560 --> 00:07:48.673
At the same time, we do want to make
sure those new people

00:07:48.673 --> 00:07:52.720
are excited by Emacs and not turned off
by having to learn

00:07:52.720 --> 00:08:00.363
the entire jungle of Emacs history in
the form of its unique

00:08:00.363 --> 00:08:07.610
technical stylings for things like
frames, buffers,

00:08:07.610 --> 00:08:11.668
and other unique Emacs viewpoints

00:08:11.668 --> 00:08:16.240
on important interface concepts,
especially.

00:08:16.240 --> 00:08:19.520
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.117
Rather than necessarily following

00:08:25.117 --> 00:08:33.279
our defaults of finding the simplest
configurations

00:08:33.279 --> 00:08:37.440
that generally work and letting people
customize it,

00:08:37.440 --> 00:08:40.479
what if we tried to look

00:08:40.479 --> 00:08:42.346
for fairly specific configurations

00:08:42.346 --> 00:08:44.159
that 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:59.839
I think that degree of experimentation

00:08:59.839 --> 00:09:02.584
can drive back into the Emacs
development process.

00:09:02.584 --> 00:09:04.800
In the development mailing list...

00:09:04.800 --> 00:09:15.120
I'm hoping I'll get a timing cue here.

00:09:15.120 --> 00:09:18.835
In the context of Emacs development as a
greater entity,

00:09:18.835 --> 00:09:20.959
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:27.146
Sometimes we can have the sense that
defaults in Emacs will never change.

00:09:27.146 --> 00:09:29.279
The conversation is too difficult.

00:09:29.279 --> 00:09:32.560
I think one thing that can help us get
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.560
is using this set of bindings,

00:09:38.560 --> 00:09:40.111
and here's what we learned

00:09:40.111 --> 00:09:42.240
about brand new Emacs users
trying to come in

00:09:42.240 --> 00:09:46.800
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:51.984
Oh, beautiful. Okay, great.

00:09:51.984 --> 00:09:54.720
I will try to get through my last few
slides that I 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:08.760
in theory, Emacs works out of the box.

00:10:08.760 --> 00:10:12.853
That means we're free to experiment.

00:10:12.853 --> 00:10:17.120
We can 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:30.079
I don't know what I was thinking on that
slide, excuse me.

00:10:30.079 --> 00:10:33.440
Bringing it back around to the free

00:10:33.440 --> 00:10:35.680
and open source software community,

00:10:35.680 --> 00:10:39.519
our goal 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:47.680
That's the context to take with project
initialization, but sometimes

00:10:47.680 --> 00:10:49.560
it could make sense

00:10:50.800 --> 00:10:52.032
to put some gloves on.

00:10:52.032 --> 00:10:53.766
I've thrown up on the screen here

00:10:53.766 --> 00:10:55.276
just a couple of other ideas,

00:10:55.276 --> 00:10:57.920
ways to maybe think outside of the box.

00:10:57.920 --> 00:11:01.440
As you're putting together project nets,

00:11:01.440 --> 00:11:05.519
my words of encouragement are to
experiment with it,

00:11:05.519 --> 00:11:09.941
try different things, and think really
specifically

00:11:09.941 --> 00:11:17.010
about how different the development
users might be from each other

00:11:17.010 --> 00:11:21.680
as you define standards for configuring

00:11:21.680 --> 00:11:23.519
the user environment of Emacs

00:11:23.519 --> 00:11:26.552
specifically for developing on a
project.

00:11:26.552 --> 00:11:29.120
That's pretty much my talk.

00:11:29.120 --> 00:11:32.959
If there's any time, I would take a
couple questions.

00:11:32.959 --> 00:11:36.480
(Amin: Thank you for your
awesome talk, Corwin.

00:11:36.480 --> 00:11:49.519
I think we have one or two 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:58.000
Corwin: Oh, I managed to close the pad

00:11:58.000 --> 00:12:00.352
and I am trying to open it again.

00:12:00.352 --> 00:12:03.519
All right, there it opened.

00:12:03.519 --> 00:12:05.500
Bringing it onto a screen where I can
see it.

00:12:05.500 --> 00:12:09.360
Will you read me the first question
while I drag windows around, please?

00:12:09.360 --> 00:12:15.600
(Amin: Sure. It says, "do you use Emacs
as a community building tool?")

00:12:15.600 --> 00:12:19.760
Do I use Emacs as a community building
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:29.920
I think Emacs is an ambassador to the
GNU tool chain.

00:12:29.920 --> 00:12:33.027
I think that in the fullness of time,

00:12:33.027 --> 00:12:36.558
we will see an Emacs

00:12:36.558 --> 00:12:43.760
that makes iOS and Android and other
closed-source tools dream.

00:12:43.760 --> 00:12:46.689
That's why they mock us and call Emacs

00:12:46.689 --> 00:12:49.200
an operating system. It's because

00:12:49.200 --> 00:12:51.440
it could be, if we cared for it to be.

00:12:51.440 --> 00:12:55.680
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:58.540
spaces it can address,

00:12:58.540 --> 00:13:01.519
how many types of 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:06.456
it robust in those environments.

00:13:06.456 --> 00:13:09.524
I mean, we're always thinking about the
weak points,

00:13:09.524 --> 00:13:14.639
but is Emacs a community building tool?
Heck yeah.

00:13:14.639 --> 00:13:18.480
(Amin: There's like one or two more
questions.

00:13:18.480 --> 00:13:22.480
I think they're more long-form so it
might be better

00:13:22.480 --> 00:13:26.880
if you took them off stream so you could
keep the schedule on time.)

00:13:26.880 --> 00:13:29.463
I would love to take those questions
offline.

00:13:29.463 --> 00:13:30.908
I will respond to you

00:13:30.908 --> 00:13:32.237
in writing if we don't get to it

00:13:32.237 --> 00:13:33.360
in a breakout room.

00:13:33.360 --> 00:13:35.451
Thanks so much for joining us.

00:13:35.451 --> 00:13:36.639
I can't wait to see the rest of the

00:13:36.639 --> 00:13:38.000
conference. See you there!

00:13:38.000 --> 00:13:42.800
(Amin: Awesome. Thank you again so much, Corwin.)