summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--06-trivial-emacs-kits--corwin-brust.sbv
blob: 23b9faa04aa7e3e071081b5cd7949bc517e31094 (plain) (tree)
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
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002




















































































































































































































































































                                             
              



















































































































































































































































































































































































































































































































































































































































































































































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