Hello everyone. My name is Grant Shangreaux,
and I'm happy to be back here at EmacsConf.
So before I was a programmer professionally,
I was a Montessori guide with young children,
and now I'm a parent of a child
in a Montessori classroom.
I was thinking Emacs
and Montessori philosophy
are both fundamentally about respect.
Respect children, for the child
is the parent to the adult.
And we should respect users.
Maybe the user is the parent
to the hacker. That was certainly my case.
So this talk is about the similarities
between the Emacs environment
and the Montessori classroom,
which is called a prepared environment,
meaning that everything in the environment
has been prepared for the child to come
and interact with in a meaningful way.
The child will be driven
by natural human tendencies
to interact with their environment
and to construct and refine
their understanding of the world
and the things in it.
What I hope you come away from this talk with
is just a new perspective
on Emacs and software,
and how users interact
in a prepared environment like Emacs
following their human tendencies
to gain understanding
and reach toward perfection.
Okay. So the human tendencies
are innate drives present in everybody.
They're what enable us to explore
and make sense of our world.
We use these human tendencies
to construct and refine the world itself.
You know, if you're an Emacs user,
I hope that's ringing some bells for you
right away, because what we do
when we interact with Emacs as individuals
is construct and refine our world in Emacs.
So I'm going to go through
the human tendencies one by one
and bring up things
that I have observed or noticed in Emacs.
I'm sure there's plenty more.
Feel free to share it in chat.
So number one is orientation.
Human beings want to know their relationship
to the environment around them.
With children, when they come into
a new environment, they want to look at it,
touch everything around them.
They want to know where they fit in,
things like that.
In Emacs, the easiest thing to think of
is the initial new Emacs buffer.
Right away, that is giving you
some guideposts to orient yourself.
If you've used any of the other
Emacs starter packages, different packages
take different approaches to this.
I think if you're trying to get people
to use Emacs for some reason,
thinking about how individuals
might orient themselves
to this new software world is important.
I think that there are friendly ways
to welcome people into the environment
and to make it easier for people
to orient themselves within Emacs.
Of course we've also got the Info manuals,
and one of my favorite examples
is the which-key package, which,
when you press a key,
it'll pop up with all of the following
key bindings that are available.
That's a really important way for me
to explore, which is another human tendency,
or to orient myself;
to think about when I press this key,
now I've got these possibilities.
You see that all over in Emacs
with hydras or the Magit transient buffers.
There's all sorts of ways
that Emacs is trying to help us
orient ourselves.
The second tendency is order, which
I probably should have talked about first,
but here I am. I myself am not
particularly attuned to order,
but when I was in the Montessori classroom,
I found that it wasn't necessarily myself
imposing the order, it was...
The environment itself
has a certain order to it,
and by creating an environment
where everything has its place,
and everything has its time,
and you have a way of doing things,
it makes it easier for the child
to develop that internal sense of order
and succeed at imposing order
upon their work, which...
We do that as programmers.
If we're contributing to Emacs,
we try to do so in an orderly way,
use prefixes for namespacing,
since we don't have that ability
in Emacs Lisp,
and by sharing well-ordered
self-documenting programs with our community.
Number three is exploration. I think
exploration is what drew me into Emacs,
personally. In the beginning,
it was just this wondrous
software environment
that offered so many opportunities.
I was curious. Like, you've got
your scratch buffer.
You can explore in there with expressions.
You can start up IELM.
You can explore your file system with Dired.
You can explore different packages
with list-packages. There's so many ways
you can explore in Emacs.
For me, that was very delightful.
It really resonated with my bias
of exploration and human tendencies.
Places to explore in Emacs are wonderful,
and eventually you get down
into the source code, and it's great.
And then we've got communication.
I think communication kind of
speaks for itself as well.
Emacs is software.
Software is a form of communication.
We're all driven to communicate.
That's why we're here at this conference.
Within Emacs, you've got lots of ways
to communicate. You've got IRC clients,
mail, you've got news readers.
You could use Org.
I even started working on a magazine in Org
that I was going to distribute
via live Debian CDs back in the day.
So I think Emacs for communication
is pretty clear.
Activity. So Activities is just
a natural thing when you're...
You see it in children. Right?
Children always find something to do
to keep busy, whether they're pretending,
or running around, or moving.
You don't have to have a goal
or end-product in mind.
People are just active.
You do things. I find that in Emacs,
all the time, when I don't know
what to work on, sometimes I just go
into Emacs and hack around and, like,
change things in my config.
I'm sure we've all been there.
So Emacs encourages and enables
that kind of activity as well.
Manipulation is the next one.
So Lisp. Anyone? The fact that Emacs is
this live Lisp process that's running,
that you can manipulate at your fingertips...
You couldn't ask for something better.
I think the malleability of Emacs
is why people love it.
Clearly, the environment of Emacs
was prepared with manipulation in mind
from the very start.
We'll go through these next ones
pretty quickly.
We've got work or purposeful activity.
Emacs would not exist
without this human tendency.
it's been worked on
by free software volunteers
for 40 years, and this is the kind of
self-motivated work that inspired me
to be a hacker.
Repetition is another human tendency.
I think that one kind of speaks for itself.
It's this tendency that gave me
Emacs pinky after learning all of those
key bindings, and then that same tendency
drove me to learn another modal key mapping
to deal with that. I've repeated myself,
starting over new Emacs configs
several times. I could give another example,
but I'll just be repeating myself
at this point.
And then exactness. So we have a tendency,
a human tendency toward exactness.
That's not one that's very strong for me.
I'm not a super exacting person.
But I think you can see that in Emacs,
like certain parts of it
have been refined down to exactness.
I know when I'm working,
sometimes it's just the theme that I choose
or making sure the mode line
is exactly the way I want it...
You know, getting that environment
to feel conducive to thought and work
is important to me.
And then we have abstraction, which...
That one goes pretty deep,
but I think you can see
how abstraction works in Emacs.
A buffer is an abstraction.
One of the great things about Emacs
and about Montessori philosophy
is that these abstractions
might not be something
you need to think about right away,
but they're there, right,
like the fact that a buffer abstracts
over working with text.
Once that becomes clear to you,
once you have a reason to manipulate it,
having the abstraction of the buffer there
to work with makes a huge difference.
And then of course,
we can create our own abstractions:
transients, pop-up buffers, hydras...
I'm sure there's plenty of examples
in chat that I can't come up with.
And finally, perfection.
All of the human tendencies
culminate in this one.
Perfection doesn't mean
like you just have to make
this perfect shining idealistic thing.
It's about perfecting what we do.
I think everybody who's worked with Emacs
for a long time,
you perfect your configuration.
Sometimes you tear it down and start over.
If you're working on a package,
you perfect that,
and it's an ongoing process.
An example I can think of are
like raxod502's packages.
straight.el is an attempt at perfecting
the package management system in Emacs,
and he's taken a stab at
several other common things,
like incremental selection and so on.
These aren't necessarily finished problems.
There's room for perfection,
and we have a human tendency to pursue that.
I hope this talk
has gotten you thinking about
how Emacs and the Montessori classroom
are similar--they're both
prepared environments
that call upon our human tendencies
to construct and refine our world--
and how Emacs respects us as users
in the hopes that we will grow up into
creative hackers.
Thank you for listening.
I'm happy to answer any questions
after the talk.
[captions by sachac]