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]