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
|
[[!meta title="Emacs and Montessori Philosophy"]]
[[!meta copyright="Copyright © 2021 "]]
[[!inline pages="internal(2021/info/montessori-nav)" raw="yes"]]
<!-- You can manually edit this file to update the abstract, add links, etc. --->
# Emacs and Montessori Philosophy
[[!taglink CategoryPhilosophy]]
[[!inline pages="internal(2021/info/montessori-schedule)" raw="yes"]]
As a former Montessori guide and now parent, I often think about the
relationship of this particular educational philosophy and how it manifests
in my work with software, Emacs in particular. This talk introduces the
concept of Emacs as an educational environment and how it expresses elements of
Montessori psychology regarding "Human Tendencies". Human tendencies are innate
drives present in everybody that allow us to explore and make sense of our world.
# Discussion
- Q1: Would you say that the Montessori philosophy follows a "verb"
based methodology, where an abstract action is performed on an item,
without locking the action to what the item can support, like an
Object-oriented language would do?
- e.g. `throw(rock)` instead of `rock.throw()`, i.e. a
function in a global namespace, instead of a function belonging
to an object?
- A: i'd like to think about this some more, but honestly i think
its a bit of both? there's certainly some things I can think of
that are more like `rock.throw()`... Here are the things you
can do with these materials, and that is it. On the other hand,
I've certainly seen inventive uses of educational materials
that follow more of a `throw(pencil)` type of thing.
- The philosophy is highly observation based, so I'm thinking
about the difference of something like `Child::new.learn()` vs
`learn(some-child)`. In this case I do feel like the "verb"
based methodology is more appropriate. We need to stop and
observe a child, to notice what is driving them, what they're
responding to, and where they are in their abilities. Depending
on our observations, we may offer different kinds of input. Its
certainly much less like "oh i have another Child object and I
need to have them do x, y, z" in order to get to point B.
- I hope this somewhat answers the question. I'll keep pondering
:)
- Thank you, I guess some children favour one method over
another, but it's not as black and white as I initially
thought. Thanks!
- Q2: How old do you think childen need to be to start exploring with
Emacs?
- A: Children 0-6 are in a phase called the "absorbent mind". It
is this miraculous superpower that children have to absorb
everything around them. The ability to learn language is
probably the most obvious example. So, if children can interact
with Emacs, they can start exploring it. Of course, as a text
editor, basic literacy is pretty important. I personally have
not tried teaching young children Emacs, but I believe with the
right kinds of interfaces, it could be possible.
- Q3: How to let my kids exploring Emacs?(No need to answer this.
It's simillar to Q2)
- A: Great question! Much of the early childhood Montessori work
is highly tactile. Abstract concepts are embodied in physical
objects. One example is the "binomial cube" which is a set of
blocks that demonstrates (a + b)^3. Children know nothing about
the math behind it, but by interacting with it as a tactile
puzzle, something about the math concept behind it, the
abstraction, is available to the child and their absorbent mind.
- That is to say... perhaps there are ways to bring Emacs into
the physical world for the very young. I've been fantasizing
about some kind of "physical lisp" where young children can
interact with a sort of physical programming language. I don't
have a lot of concrete ideas on how to get young children
exploring Emacs, but I do believe it is possible.
- For older, literate children, I believe simple things that give
instant feedback are a great way to encourage interaction. Being
able to do something like (set-cursor-color "orange") and see
it work at your finger tips is amazing. I believe that a well
prepared set up where M-x is easy to access and you get some
kind of completion to show you what you can do would go far.
Even ielm could be useful. Children are not nearly as afraid of
a command prompt as some grown ups are. They come to it with
much less preconceptions on how it should be used.
- I would like to think more about this, as giving children the
opportunity to experience Emacs feels critical these days, when
they may be forced into using much non-free software just do do
their school work.
- Q4: How big of an impact does the environment have on the children
that you teach?
- A: the environment is huge. giving children a prepared space
where everything is accessible to them, down at their level, the
correct size, etc, it can lead to amazing things. When I worked
with 1.5-3 year olds, I remember telling people it was like
managing a restaurant where my employees were toddlers. I could
work with a group of children to get food served into properly
sized dishes, beverages poured, ceramic plates and glass cups
set on the tables, napkins folded, and so on all finished in
time to get everyone down for lunch before we had major melt
downs. This would not be possible in a normal grown-up
environment.
- I'm not sure i said this in the talk, but the environment is an
active process on all of us, not just children. the 0-6 year
olds (and beyond) are absorbing so much from the environment
that we simply filter out. i think this is important to consider
for new emacs users. I tend to filter out a lot of things that a
new user may pick up and stumble over.
- To re-emphasize: the elements of education are The Learner, The
Guide(s), and The Environment. Montessori focuses on the
Prepared Environment, in order that it can be the most effective
for the child's ability to become an independent, self-realized
person.
- Q5:Do you have a good reference for the Montessori principles
(actually any nice book ref)?
- A: I'd like to find a more modern resource, I'm sure they are
out there. Much of my experience was direct hands-on classroom
time. I've read much of "The Absorbent Mind" which really
lays out a lot of the observations Maria Montessori made of the
young child, 0-6 years old. The other book I've studied is
"The Secret of Childhood". I would like to stress though, a
lot of the knowledge in Montessori is very very similar to
traditional knowledge. When I was learning more about Lakota
culture and parenting, I was finding that Montessori was
expressing much of the same thing. Any resource (book, human,
whatever) that respects children as whole human beings is worth
paying attention to. Another author I've enjoyed is Aletha
Solter, who writes about parenting.
- Q6:How do you think Emacs could improve re: Montessori Principles
(if at all)?
- A: My main takeaway is that we should acknowledge the three
elements of learning: The Learner (user), The Guides
(contributors), and The (Prepared) Environment. Each user coming
to Emacs is an individual with their own mix of internal drives
(human tendencies) that compel them to learn and experience.
Everyone that is a contributor to Emacs (whether in code, on the
web, or in chat) acts as a Guide in the environment (whether
they know it or not). The Prepared Environment could be
considered how the application is set up for users. I think
there is room for a friendlier Prepared Environment, though I am
always amazed at what I can discover where the self-documenting
feature helps me out. Interactive tutorials teaching one how to
learn how to learn Emacs would be tricky, but I think some
interesting work could happen there!
- Another principle is "control of error", meaning, when you
fail at something or make a mistake, it should be obvious, and
hopefully the correction of the error should be obvious as well.
This is hard to do in a huge software environment like Emacs,
but I think there could be some work done in this regard. I'm
reminded of Racket's beginning student languages, which make
error messages more human focused and less computery is a good
example.
- I think the community could also improve as Guides. I have
certainly had many pleasant interactions with Emacs users, but
sometimes you run into things like "RTFM" or "read the
source". While I don't disagree, it can come off as elitist
sometimes. Many new users are afraid to read source, or have
found a manual but still don't understand. We certainly want to
encourage independence, so offering techniques like "have you
tried M-x describe-function?" is better than just answering
outright. Sometimes we need to take a moment and understand the
Learner we're working with. Maybe they aren't ready for "read
the source". I could keep writing, but I think I need to wrap
up. Anyone should feel free to email me to talk more! perhaps
i'll try doing some writing about it.
- Q8: What was the presentation mode you used?
- A: org-tree-slide - <https://github.com/takaxp/org-tree-slide> -
i love using this package because i can practice and edit my
presentation at the same time.
Feedback:
- having studied in a school which founded by following Montessori Philosophy, I can relate <3
- Love the emphasis on creativity!
- Such a cool talk
- Great perspective in that talk.
- the reference to Montessori made me think of Alan Kay's talks about Frenet and Papert.
- i was thinking the exact same thing regarding Alan Kay and his talks about education, and of his philosophies behind Smalltalk (the programming language).
- and Smalltalk as a platform shares a lot with Emacs, both are a world where a user lives and develops
- garjola: yeah...the whole thing about discovery, figuring things out for yourself, having an epiphany.
Links and other notes:
- <https://github.com/takaxp/org-tree-slide>
- <grant@churls.world>
- @kheya@mastodon.social
- <http://blog.shoshin.digital/> (there's not really anything there
xD)
# Outline
- 5-10 minutes: (brief description/outline)
Quick overview of a Montessori classroom environment:
- the adults or guides primarily observe and present material
- the children are free to explore materials as they choose (within limits)
- the environment itself is prepared specifically to foster engagement
Enumerate the "Human Tendencies":
- Abstraction
- Activity
- Communication
- Exactness
- Exploration
- Manipulation (of the environment)
- Order
- Orientation
- Repetition
- Self-Perfection
- Work (also described as "purposeful activity")
How does Emacs express these things?
- in the short version, pose the question, and perhaps give one example.
- Emacs is an environment that provides facilities for individuals to
find their way to proficiency through their Human Tendencies.
- We are all both learners and guides, Emacs is our classroom
<!--
- 20 minutes: (brief description/outline)
This would follow the same outline as above, but go more deeply into how
Emacs fosters understanding and growth by allowing individuals to express
the various Human Tendencies.
- 40 minutes: (brief description/outline)
I don't have in mind to do a 40 minute talk, though a friend and fellow Emacs
user is also a former Montessori guide and we had talked about sharing our
experience together in this presentation. This would include more anecdotal
evidence of what we experienced ourselves observing children as well as our
journey to competency as software developers through the classroom of Emacs.
-->
[[!inline pages="internal(2021/captions/montessori)" raw="yes"]]
[[!inline pages="internal(2021/info/montessori-nav)" raw="yes"]]
|