Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
# This file:
#   http://anggtwu.net/ORG/emacsconf2024.org.html
#   http://anggtwu.net/ORG/emacsconf2024.org
#          (find-angg "ORG/emacsconf2024.org")
# Author: Eduardo Ochs <eduardoochs@gmail.com>
#
# (defun e () (interactive) (find-angg "ORG/emacsconf2024.org"))
#
# (find-angg "elisp/emacsconf2024.el")
# https://emacsconf.org/2024/cfp/
# (find-libera-3a "#emacsconf")
# (set-face-foreground 'org-link nil)
# (set-face-foreground 'org-link "#0090ff")
# (set-face-foreground 'org-link "chocolate1")
# (find-eface-links 'org-link)
# (find-eface-links 'font-lock-comment-face)
# «.0»		(to "0")
# «.1»		(to "1")
# «.2»		(to "2")
# «.3»		(to "3")
# «.4»		(to "4")
# «.5»		(to "5")
# «.6»		(to "6")
# «.7»		(to "7")
# «.8»		(to "8")
# «.9»		(to "9")
# «.10»		(to "10")
# «.11»		(to "11")
# «.12»		(to "12")
# «.part-2»	(to "part-2")
# «.13»		(to "13")
# «.14»		(to "14")
# «.15»		(to "15")
# «.16»		(to "16")
# «.17»		(to "17")
# «.18»		(to "18")
# «.19»		(to "19")
# «.20»		(to "20")
# «.21»		(to "21")
# «.22»		(to "22")
# «.first-draft»	(to "first-draft")







  «0»  (to ".0")

  (font "Inconsolata 16" :p)

  Emacs, eev, and Maxima - now!
  =============================
  http://anggtwu.net/emacsconf2024.html
  December, 2024
  Eduardo Ochs

My name is Eduardo Ochs, I am the author of an Emacs package called
eev, and I think that it is better to start this presentation by the
middle of the story - by "Maxima".

Maxima is a Computer Algebra System that has several interfaces.
One of them is WxMaxima, that looks very modern and is very pretty:

  (kill-new "integrate(sqrt(1-x^2), x);")
  (find-bgprocess "wxmaxima")

I don't like that interface.
My memory is very bad, I type slowly and with lots of mistakes.
So for me the ugly interface below is much better -
and here I'm going to show how I am teaching it to beginners.

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
  load_qdraw();
  f : sqrt(1-x^2);
  F : integrate(f, x);
      integrate(f, x, -1,1);
  qdraw(xr(-2,2), yr(-2,2),
        more(proportional_axes=xy),
        ex1(f, x,-1,1, lc(orange), lk("f")),
        ex1(F, x,-1,1, lc(red),    lk("F")));










































  «1»  (to ".1")

  (progn (eek "C-x 1") (font "Inconsolata 16" :p))

1. Another planet
=================

  Why Maxima? Why Emacs?
  "You should use programs that everyone
  finds intuitive, like VSCode"...

  I teach Calculus in a bad campus of a
  good federal university in Brazil ("UFF").

  The main campus is in Niterói -
  a big city near Rio de Janeiro.
  I work in Rio das Ostras -
  a small city 200 Km away.
  I started working there in 2009.

  My campus gets:
    very little funding -
    ^ long story, no time to tell now -
    and students that don't get enough marks
    in the admission exams to go to better places.

  My campus has two institutes:
    the Institute of Humanities and
    the Institute of Inhumanities.

  Each institute has a (small) building.
  The Humanities building has lots of plants and graffittis.    <- "Good"
  The Inhumanities building has lots of rules and prohibitions. <- "Evil"
  The Inhumanities building is shrouded in mystery.
       (humans avoid it, only inhumans go there)



  «2»  (to ".2")

  (font "Inconsolata 17" :p)

2. Another planet: the strike
=============================

  In may and june/2024 the federal universities
  in Brazil paralysed their activies -
  in a nation-wide strike - and...

  During the strike the Humanities students occupied the
  Humanities building and organized lots of activities there.
  They asked me if I could give some workshops,
  and I offered two hands-on workshops on "Free Software" -
  on Emacs and eev, with tutorials with lots of "try this"s.

  The compsci/eng students ignored it and didn't come,
  but some students of Psychology and Produção Cultural
  came... and they LOVED the workshop - they found it FUN.

  After the workshop I told the students that
  there are lots of things that "everyone knows" and I don't,
  and I would like to learn them, but I find them too hard
  to learn by myself because I am a dinosaur...
  for example, Canva.

  The student of Produção Cultural taught me Canva in 10 minutes -

  AND THAT CHANGED MY LIFE.




  «3»  (to ".3")

  (font "Inconsolata 22" :p)



3. Another planet: the strike (2)
=================================

  The student of Produção Cultural taught me Canva in 10 minutes -

  AND THAT CHANGED MY LIFE.

  I'm working in that place since 2009.
  The CompSci students know lots of programs and languages
  that I would like to learn -
  but in all these 15 years the CompSci students
  only helped me _twice_.

  Our inhumanities students don't have a culture
  of sharing and helping -
  but our humanities students do.









  «4»  (to ".4")

  (font "Inconsolata 19" :p)

4. Another planet: conferences
==============================

  My research is in Logic.
  When I go to conferences in Brazil people don't bring their laptops.
  We don't have a culture of sitting together with friends or colleagues
  to learn with them how to use the programs that they use.

  I don't know how things are in universities with good computer labs.

  Consider:

    "Everyone knows VSCode"
    "Everyone knows Jupyter Notebooks"
    "Everyone draws diagrams with Quiver"

  Here these things are not true -
  and _not relevant_ -
  here knowledge does propagate.

  One of my goals in life is to become friends with some people
  who know how to use code blocks in Org, and Javascript, and
  learn some of their workflows... or, rather:

    to become someone who deserves help.





  «5»  (to ".5")

  (font "Inconsolata 17" :p)

5. Maxima for students
======================
  Remember:

    Our inhumanities students don't have
    a culture of sharing and helping -
    but our humanities students do.

  I've been telling my students - I teach Calculus 2 and 3 -
  that they will learn much faster if they learn Maxima,
  and that people who learn Maxima can take an (optional) test
  and earn extra marks in the course...

  but if they behave as typical inhumanities students -
  not asking questions, and not helping their colleagues -
  then I won't help them.

  ACTUALLY, IT'S EVEN WORSE -
  I've told my students that my docs are not good enough yet,
  and every question helps me a lot -
  so PLEASE ASK -
  and I'VE BEGGED ON MY KNEES -

  ...and now I can treat students who don't ask questions
  as people who won't help someone that thay know
  and who is begging on his knees =)





  «6»  (to ".6")

  (font "Inconsolata 24" :p)

6. "Now!"
=========
  The title of this presentation is:

    Emacs, eev, and Maxima - now!
                             ^^^

  The "now!" in the title means:

    In less than one hour, and
    even for people who have never seen
    a terminal in their lives!

  The title is a SLIGHT exageration -
  It only took less than one hour for ONE person -
  a schoolkid from a small city in the North of Brazil,
  who didn't know anything about programming,
  BUT who was competing in local Math Olympiads...





  «7»  (to ".7")

  (font "Inconsolata 20" :p)

7. Introduction to plonking
===========================
  (Based on real events:)

  - I have Linux on my laptop. Can you help me to do blah1?
  - Sure! Do blah2 and blah3!
   (one week passes)
  - It doesn't work!
  - What happens when you do blah4 and blah5?
   (another week passes)
  - It doesn't work!
  - Type blah6 and blah7 in a terminal, press ENTER,
    take a photo of your screen, and send it to me!
   (another week passes)
  - How do I open a terminal?


  (find-sh "dict plonk")
  (find-sh "dict plonk" "The sound")

  For me "plonk" is the sound that a person makes when
  he/she/they hits the bottom of my list of priorities.










  «8»  (to ".8")

  (font "Inconsolata 22" :p)

8. Plonking and telepathy
=========================

  Slogan:

  I am not a telepath,
  and for me it is 100 times harder
  to discover the doubts of people who don't talk to me
  than to discover the doubts of people who do talk to me.















  «9»  (to ".9")

  (font "Inconsolata 16" :p)

9. Abelson and Sussman
======================

  Emacs, eev, and Maxima - now!
  ^^^^^

  "Learning Emacs" can mean many things.
  "Learning Lisp"  can mean many things.

    From the:
      Keynote presentation by Hal Abelson and Gerald Sussman
      at the fourteenth RacketCon,
      <https://youtu.be/_2qXIDO-cWw>,
      (find-AbelsonSussmanRCon14video "17:17")
      uploaded in 2024oct24:

   "Anyone can lean Lisp in one day,
    except that if they already know Fortran,
    it would take three days."

    I would add:

   "...and if the person is starting with Doom Emacs -
    then it would take five years."


   Another slogan:

   There are many cases in which
   learning just B takes 200 hours,
   but learning A _and then_ B takes 20 hours.

   





  «10»  (to ".10")

  (font "Inconsolata 22" :p)



10. Some kinds of beginners that I don't want to help
=====================================================

  "I can't read that page,
   it has too many links"

  "I don't want to read anything and
   I don't want to learn anything,
   I want something that just works"

  "I don't want to look at examples.
   You need to summarize it in one paragraph"

   More on them here:
   http://anggtwu.net/emacsconf2024.html






  «11»  (to ".11")

  (font "Inconsolata 25" :p)


11. Some kinds of beginners that I really want to help
======================================================

  Nerdy kids who are used to:

    1. reading materials that are too advanced for them,
    2. understanding only a few percent of what they read,
    3. remembering just a tiny fraction of what they read,
    4. going back to these materials later,
    5. and _taking notes_ about what they read,

    ...and who are always interested in

    6. _experimenting with new ways_ of taking notes,
       transcribing, summarizing, and
       saving links to primary sources.




  «12»  (to ".12")

  (font "Inconsolata 20" :p)


12. Plonking the paragraph people
=================================

    "I don't want to look at examples.
     You need to summarize it in one paragraph"

  I'm a mathematician.
  I work with lots of things that
  can only be summarized in a paragraph
  if we choose the level of who we're talking to -
  so we have many different one-paragraph summaries -
  and in many cases this

    "You need to summarize it in one paragraph"

  is wrong - the person means

    "I want to learn a lot in ten minutes",

  and this needs diagrams,
                 animations,
                 and EXAMPLES.



# (find-books "__cats/__cats.el" "grothendieck-ams")


# «part-2»  (to ".part-2")

----------------------------------------


  «13»  (to ".13")

  (font "Inconsolata 21" :p)


13. Example: Yoneda
===================

  Here is an example of something that
  I only understood after many years...

    (emacsconf2024p 3 "yoneda-on-rings")
    (emacsconf2024p 5 "generic")

  The textual explanations did not help me much,
  and the (linear) formulas had too many symbols -
  _my mental buffer is very small_ -
  I had to find several tricks to reduce
  the cognitive overload... for example:

  1. naming the symbols consecutively, like A, B, C
  2. putting an archetypal case and the general case
     side to side - they have the same "shape"
  3. choosing good conventions for fonts/types
  4. choosing good meanings for "vertical arrow",
     "horizontal arrow", and "above (without arrow)"






  «14»  (to ".14")

  (font "Inconsolata 22" :p)


14. Should we include technical details?
========================================

  There are many measures for "cognitive (over)load"...

  I asked many technical questions on the Maxima
  mailing list that got answers that _INCLUDED_
  snippets and names of (Common) Lisp functions.

  I asked some technical questions on the Org and Hyperbole
  mailing lists that got answers that _AVOIDED_
  technical details.                      ▴
                                          ║ 
                                 this term chosen to
                                  denote frustration

  If one of my students panics on this,
    (find-windows-beginner-intro "Unix prompt")
  then plonk.






  «15»  (to ".15")

  (font "Inconsolata 23" :p)



15. What's left after plonking many people?
===========================================
  Several kinds of beginners that I want to interact with
          (^plural!)

  A definition for the term "beginners" -
  think in "This book is written for..."

  (^Or maybe several definitions)

  A metric that lets me choose
  between options A, B, C...
  which one is better for (my) beginners.

  First example:
    (find-windows-beginner-intro "Unix prompt")
  Should I explain what is a "Unix prompt"?
  NO!!!!





  «16»  (to ".16")

  (font "Noto Mono 15" :p)


16. More on metrics
===================
  Option 1: type
    M-: (info "(emacs) Modes")

  Option 2: copy this
        (info "(emacs) Modes")
  to your notes and type C-e C-x C-e.
  Mnemonic: C-exe.

  For me the option 1 is costly:
  the person has to type a lot without errors
  and has to _commit lots on information to memory_,

  and the option 2 is much better -
  the person _commits information to notes_
  and learns a way to return this node later...
        (info "(emacs) Modes")
  The person learns another way to use her notes.

  See: http://anggtwu.net/2024-a-people-and-b-people.html

  Also: I live in a place in which people who find
  my instructions too complex, or too boring,
  disappear - either for months or forever...
    ☹️☹️☹️






  «17»  (to ".17")

  (font "Noto Mono 20" :p)


17. Emacs, eev, and Maxima for students: did it work?
=====================================================
  Sort of, and in a weird way...

  35 students decided to take the test on Emacs, eev, and Maxima,
  and were able to do what I asked - use a link like this one,

    (find-es "maxima" "eev-demo")

  copy a program to their notes, modify it a bit to make it
  solve a slightly different problem, and save the new program...
  but only 10 students asked questions on the Telegram group.

  They discussed with other students -
  sometimes live, sometimes on Discord -
  but I got very little feedback for my
  usability test...





  «18»  (to ".18")

  (font "Noto Mono 20" :p)


18. Emacs, eev, and Maxima for students: did it work? (2)
=========================================================

  ...and I saw that I can't invest a lot of energy
  on students who, ahem, "won't talk to me".

  Then I made contact with some schools. Long story short:
  in one school the questions of the students led us to this,

    (find-2a nil '(find-fline "~/HELP"))
    (find-elisp-intro)
    (find-elisp-intro "3. `quote'")

  i.e., to passing unevaluated programs as arguments -
  "quote" blew their minds, and I was amazed by the questions -
  and I saw more clearly that the campus in which I work is a hole,
  and I need to do more things outside.





  «19»  (to ".19")

  (font "Noto Mono 15" :p)

19. Now some technical details
==============================

  1. What exactly am I teaching?
     Basically, this:

       M-5 M-j   -- old tutorial: (find-eev-quick-intro)
       M-3 M-j   -- new tutorial: (find-windows-beginner-intro)
       Map (being rewritten):
         http://anggtwu.net/2024-restructuring.html

     Remember: my target audience is _mostly_ composed
     of beginners who have never seen a terminal
     in their lives, and that get bored very quickly...
     and when they get bored they disappear.

  2. What are my main goals for the first day?

     Install everything: WSL, Debian, Emacs, eev, debian packages
     Run some Maxima programs and some test blocks
     Configure Emacs, create a first set of executable notes

       http://anggtwu.net/2024-find-dot-emacs-links.html
       http://anggtwu.net/2024-first-executable-notes.html

     After that the person is "autonomous".






  «20»  (to ".20")

  (font "Noto Mono 20" :p)

20. "Run some Maxima programs"
==============================

  First step:
  in the classroom, on my laptop,
  individual workshop, 5 minutes long...
  in which they run this:

    (find-windows-beginner-intro "7. Test Maxima")

  by just typing <f8>s.


  Second step: another individual workshop,
  in which they learn how to access my notes...

    (find-windows-beginner-intro "8. Test Maxima with find-wget")
    (find-es "maxima" "eev-demo")
    (find-es "maxima" "2023-2-C2-P1")




  (font "Noto Mono 18" :p)







  «21»  (to ".21")

21. "Install lots of Debian packages"
=====================================
With:

  (find-windows-beginner-intro "4. Use eepitch to install Debian packages")
















  «22»  (to ".22")

  (font "Noto Mono 18" :p)


22. After that: a map
=====================
  See:

    http://anggtwu.net/2024-restructuring.html

  The rest can't be explained clearly in a video...
  See this page:

    http://anggtwu.net/emacsconf2024.html

Thanks
Bye


  










  «first-draft»  (to ".first-draft")

29. After the first day
=======================





  (font "Inconsolata 23" :p)

(emacsconf2024p 3 "yoneda-on-rings")
(emacsconf2024a   "yoneda-on-rings")
(find-books "__cats/__cats.el" "grothendieck-ams")
cognitive load/overload/overhead
Maxima mailing list

# (find-sh "dict overload")


Now the technical part (or: oh no)
==================================

  I had a ton of material for this presentation
  but it didn't fit in 20 minutes,
  so now it's mostly pointers...

  1. How I've been teaching all this
     to beginners who have never
     seen a terminal in their lives:

       M-5 M-j   -- old: (find-eev-quick-intro)
       M-3 M-j   -- new: (find-windows-beginner-intro)
       Map (for troubleshooting, being rewritten):
         http://anggtwu.net/2024-restructuring.html

  2. What are my main goals for the first day?

     Install everything: WSL, Debian, Emacs, eev, debian packages
     Run some Maxima programs and some test blocks
     Configure Emacs, create a first set of executable notes

       http://anggtwu.net/2024-find-dot-emacs-links.html
       http://anggtwu.net/2024-first-executable-notes.html

  3. What is my current definition of "beginner"
     and how I arrived on it - hint: by reading
     Judith Butler! See:

       http://anggtwu.net/emacsconf2024.html#butler
       http://anggtwu.net/2024-philosophy-tube-butler



  4. Making eev interesting to longtime Emacs users
     in developed countries

Here is an extreme example of something whose summaries on one
paragraph never worked for me: the Yoneda Lemma.




# (find-sh "dict overhead")




  (find-TH "2024.1-C2" "notas")
  (find-TH "2024.1-C3" "notas")
  (find-TH "2024.2-PR1")


  (font "Inconsolata 20" :p)






(font "Noto Mono 13" :p)


1. "Beginners"?
===============

  I work in a federal university in Brazil -
  the "Universidade Federal Fluminense", a.k.a. "UFF" -
  but I work in a crappy campus located in the countryside,
  in a city called Rio das Ostras.
  
  The main campus is in a much bigger city, called Niterói,
  that is 200 Km away.
  
  The main campus, in Niterói, is MUCH better.
  Our best students get transferred to Niterói.
  
  My students are "beginners" in a sense
  that is _inconceivable_ in developed countries.
  
  In developed countries people usually consider that
  beginners think that spreadsheets, Jupyter Notebooks
  and VSCode are "intuitive".
  
  Most of my students have never seen a terminal,
  like this,
    (find-bgprocess "xterm -fn 10x20")
  in their lives, and they've never heard of things
  like Jupyter Notebooks and VSCode...
  
  ...but they understand/grok eev and Emacs very quickly.
  
  On non-obvious ideas:
    (patp 15)





(font "Inconsolata 22" :p)


2. What is Emacs?
=================
When a student takes my 5-minute workshop
I start with this story:


  In 70s people were experimenting with
  full-screen editors that would be
  easy to extend.

  At some point some people took a Lisp
  and added a few functions to it
  to make it become a simple editor with
  an `eval-last-sexp'.

  Then they started to enhance that editor
  "from inside" - and lots of people started
  to write their own extensions and share them.

  The Free Software movement was born from that.





(font "Inconsolata 22" :p)
 

3. What is Emacs? (2)
=====================

  ...and then Emacs was extended to handle
  all kinds of things that look like text -
  like directory listings (Dired),
  and terminals (M-x shell, eepitch).

  My memory is bad,
  I type slowly and I commit many mistakes, 
  and when I started using Emacs in the 90s
  I adapted it to make it
  usable by people like me.

  So I was using a kind of Emacs with crutches -
  or with stilts - and after many years these
  crutches/stilts became an Emacs package -

    "eev", for
    "emacs-execute-verbosely". 




  (font "Inconsolata 20" :p)


4. After the 5-minute workshop
==============================
  Some students - about 25% of them -
  don't have computers at home.

  When a student has a computer
  and some practice with computers
  I usually say

    "Let's continue by WhatsApp/Telegram!"

  after the 5-minute workshop.

  Students who don't have computers at home
  usually do a second mini-workshop in the lab -

    (find-eev-quick-intro)
    (find-eev-quick-intro "2. Evaluating Lisp")

  before the "let's continue by chat".





  (font "Inconsolata 20" :p)


5. What is eev?
===============
Answer 1: this way of using
(some) sexps as hyperlinks,

    (find-fline "~/ORG/M-e.el")

  plus lots of stuff to encourage people
  to create "executable notes" with sexps
  in them. Some basic examples:

    (find-eev-quick-intro "3. Elisp hyperlinks")


Answer 2: that, plus some ways to
  store "commands sent to REPLs"
  in executable notes.

  The new way: (emacsconf2021p 4)
               (find-eev-quick-intro "6.1. The main key: <F8>")
               (find-eev-quick-intro "6.2. Other targets")
               (find-eev-quick-intro "6.2. Other targets" "find-3EE")
  The old way: (emacsconf2019p 4 "Prehistory (3)")


Answer 3: all that, plus a kitchen sink...

  Lots of other tools for executable notes,
    like elisp hyperlinks to pages of PDFs
     and elisp hyperlinks to positions in videos,
     
  Lots of experiments with executable notes,
    including tutorials with lots of "try it"s,
    like these ones,

      (find-eev-intro "Here is a list")

    and, in particular:

      (find-kl-here-intro "2. Try it!")
      (find-kl-here-intro "2. Try it!" "with the title")
      (find-eev "eev-blinks.el" ".find-estruct")





  (font "Inconsolata 25" :p)


6. Eev is an obscure Emacs package
==================================
Lots of people in the #emacs IRC channel have said to me
that eev doesn't make any sense at all to them -
they can't figure out the workflows for using it...

WHY? WHY? WHY?

  More "definitions" for eev:

  Answer 4: like Org, but without the best parts.
  Answer 5: eev is only for 5-year olds, in this sense:
            http://anggtwu.net/2024-eev-for-5-year-olds.html

  Answer 6: for "beginners", but in the WRONG WAY.
  Answer 7: for "beginners", in a sense that is common in Brazil
            but inconceivable elsewhere.




  (font "Inconsolata 28" :p)

7. Eev in (a) few words
=======================

  9 words:  eev is like Org, but without the best parts
  5 words:  where is the front end?
  5 words:  eev is not for adults
  3 words:  eev is WRONG












  (font "Inconsolata 22" :p)

8. "Wrong" in what sense?
=========================
  Here's a first answer.
  This answer is _reasonably_ good,
  but it sort of stops midway...
  The second answer will be _much_ better.

  (find-google-links "what happens if a religious jew    eats non-kosher food")
  (find-google-links "what happens if a religious muslim eats non-halal  food")

    "Wrong" in the sense of "Haram".
    Eating food that is Haram _stains your soul_.

    If you put something like this in your notes,

      (info "(emacs) Modes")

    it stains your notes.
    I don't know exactly how - here's one hypothesis.




  (font "Inconsolata 20" :p)

9. Internalized voices
======================

    We all have "internalized voices".
    Ages ago most IT people in Brazil had "A Notion of User-Friendliness".
    I would show some trick to my friends and they would say

      "we can't use that, the user won't understand that"

    Now many people have "The Voice of The $EVILBOSS".
    I would show some trick to my friends and they would say:

      "I CAN'T USE THAT IN PRODUCTION CODE!!!"

    as if the $EVILBOSS was watching over their shoulders -
    and always threatening to fire them.

    The psychological cost of running an example like the one below

      (emacsconf2021p 4)
      (find-myqdraw "myqdraw3.mac" "myPv")

    is very high.






  (font "Inconsolata 20" :p)

10. "Wrong" in what sense? (2)
==============================
  A few months ago -
  when my "Emacs for students"
  thing was already going very well -
  my self-esteem changed, from

    "I am the author of an Emacs package that doesn't make any sense"

  to:

    "I am the author of an Emacs package that makes all sense to SOME beginners"
  
  and I decided that I would hang out at the #emacs IRC channel more,
  and I would try to understand for which beginners it made sense...
  I had just finished this thing,

    http://anggtwu.net/2024-find-tryit-links.html

  and - I'm simplifying too much, but whatever - when people asked for
  resources for learning basic Elisp I recommended this as an option,

    http://anggtwu.net/eev-intros/find-elisp-intro.html
                                 (find-elisp-intro)

  with lots of disclaimers.

  Two of the regulars reacted very angrily.
  One of them SORT OF told me -
  again, I am simplifying AND DISTORTING the story to make it easier to tell -
  that my tutorial was so, so, so wrong that it shouldn't be included in any
  list of resources for beginners wanting to learn Elisp, even with lots of
  disclaimers.

  His reaction inspired one item of my taxonomy of beginners:

    http://anggtwu.net/2024-a-people-and-b-people.html
             (find-TH "2024-a-people-and-b-people")

  At another point another regular told me that I was spamming the
  channel talking about a package that no one uses, and that I should
  be kicked off for being intrusive and spamming. I answered this:

    http://anggtwu.net/2024-emacs-pollution.html
             (find-TH "2024-emacs-pollution")










  (font "Noto Mono 14" :p)

11. "Old-fashioned anthropology"
================================

     ...It follows from this that pollution is a type
     of danger which is not likely to occur except
     where the lines of structure, cosmic or social,
     are clearly defined.

     A polluting person is always in the wrong. He
     (...) has developed some wrong condition or simply
     crossed over some line which should not have been
     crossed and this displacement unleashes danger for
     someone.

  The book "Purity and Danger - An Analysis
  of Concepts of Pollution and Taboo",
  by Mary Douglas, is from 1966.

  For me it feels like "old-fashioned anthropology",
  that uses structuralist techniques to analyse -
  WARNING: MY TERMS!!! -
  "behaviours of savages that look irrational to us"...

  That's not very useful - I can't answer people who say

    "you're spamming the channel talking about a package
     that no one uses"

  by just showing that the person is being irrational...




  (font "Inconsolata 16" :p)

12. Some Judith Butler
======================

  From "I Read The Most Misunderstood Philosopher in the World"
    (Philosophy Tube, 2024may17) -
    http://www.youtube.com/watch?v=zUW-6atPvUQ

  (find-2024butlerlsubs "7:24" "perform gender" "in ways that you will recognise")
  (find-2024butlerlsubs "8:23" "'Performative' is a" "technical philosophy term")
  (find-2024butlerlsubs "8:55" "You can just choose to" "be any gender")
  (find-2024butlerlsubs "9:07" "I can choose to be" "an attack helicopter")

  (find-2024butlerlsubs "40:34" "the danger" "that gender ideology")
  (find-2024butlerlsubs "41:10" "Pope Francis compared gender ideology" "to nuclear weapons!")

    'Performative' is a technical philosophy term for when you say
    something and by saying it you also do it.

    For example, if you say "I promise" you say the words and you make
    a promise; If a judge says "I sentence you" they say it and they
    do it. When Butler says that gender is performative they mean it
    that way: you do it and you make it so.


   _IDEA_: the notion of "beginner" is performative -
           using _just_ statistics to define "beginners" is bad,
           it is better to _choose_ a definition of "beginner"
           that works well for us...

           not any definition - for example, I don't want to say
           that then "for me a beginner is an attack helicopter ha-ha-ha-"




  (font "Inconsolata 17" :p)

13. Some kinds of beginners that I don't want to help
=====================================================

  "I can't read that page,
   it has too many links"

  "I don't want to read anything and
   I don't want to learn anything,
   I want something that just works"

  "I don't want to look at examples.
   You need to summarize it in one paragraph"

  - I have Linux on my laptop. Can you help me to do blah1?
  - Sure! Do blah2 and blah3!
  (one week passes)
  - It doesn't work!
  - What happens when you do blah4 and blah5?
  (another week passes)
  - It doesn't work!
  - Type blah6 and blah7 in a terminal, press ENTER,
    take a photo of your screen, and send it to me!
  (another week passes)
  - How do I open a terminal?

  (find-sh "dict plonk")
  (find-sh "dict plonk" "The sound")




  (font "Inconsolata 27" :p)


14. Some kinds of beginners that I really want to help
======================================================

  Nerdy kids who are used to:
    reading materials that are too advanced for them,
    understanding only a few percent of what they read,
    remembering just a tiny fraction of what they read,
    going back to these materials later,
    and _taking notes_ about what they read,

  ...and who are always interested in
  experimenting with new ways of taking notes,
  transcribing, summarizing, and
  saving links to primary sources.




  (font "Inconsolata 20" :p)


15. "Now!"
==========

  Let me interrupt everything to explain
  the last word of the title of my presentation...

    Emacs, eev, and Maxima - now!
                             ^^^^

  The "now!" in the title means:

    In less than one hour, and
    even for people who have never seen
    a terminal in their lives!

  The title is a SLIGHT exageration -
  It only took less than one hour for ONE person -
  a schoolkid from a small city in the North of Brazil,
  who didn't know anything about programming,
  BUT who was competing in local Math Olympiads...






  (font "Inconsolata 40" :p)





  [End of part 1]














# (find-sh "locate -i purity")
# (find-sh "locate -i douglas")
# (find-books "__etc/__etc.el" "douglas")

 His reaction was
  not useful - he didn't say why 



# (find-sh "dict caricature")



  I would do a kind of a "beginnerology"

  In "Gender Trouble" Judith Butler points to some texts by
  anthropologists that discuss ideas like 

  I tried to find 







    (find-es "eev" "a-people-and-b-people")

    


6. What is a beginner?
======================

  Notes for my future self and for my past self


Plonking  
========

Spamming the channel
====================

First system, Pollution and the $EVILBOSS
=========================================

Tests that are not automated tests
==================================

Compromise between what you want to teach and what people want to learn
=======================================================================

Scaryness, wrong questions, burn out
====================================
Saving files without telling
My technical questions about Org, Hyperbole, GeoGebra

Strike
======
Doesn't have a culture of sharing
People don't bring their laptops to conferences
Canva

Test/loadhistory
================

Beginners?
==========
Beginners are very varied and come in many flavors.
Here's one kind, from this e-mail:

# https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00018.html

  > For example, some years ago I had to work on a
  > small typescript project, I quickly found vscode.
  >
  > I downloaded it in 5min, and it took me 5 clicks
  > to install a plugin. and then I had a working
  > typescript setup.
  >
  > And then I used vscode like I if I had been using
  > it for a long time, whereas it was my first time.

  (...)

  > This can be implemented by for example having as
  > first page an attractive org file, which introduces
  > user to emacs vocabulary/environment in a very
  > short words and time (5 to 10min), by for example
  > clicking on some org links like:
  > 
  > [[elisp:(call a function to color the modeline)]
  >  [Click here to see the modeline]]

  (...)

  > Without the user having to know about init file,
  > packages, archives, functions, variables, hooks,
  > and endless init file debugging, or even to write a
  > single line of elisp.

Here is another kind of beginner:

  Has never seen a terminal,
  Doesn't know what is VSCode,
  Has never heard of Vim,
  Has never heard of Emacs,

  Knows that the laboratory of the IHS has computers with Linux,
  but thinks that Linux is a Windows that is free but full of bugs


Almost no one has full-time access to a fresh source of beginners.
Usually we have to create a mental model of what a beginner is -
usually we have to CHOOSE a mental model of what a beginner is -
and that model comes with a METRIC -
  that isn't very precise or even very numeric,
  but that lets us add, or delete, a sentence from our tutorials
  and then say "now this is more adequate for beginners".



My metric
=========
For me:

  commiting to memory is expensive,
  commiting to notes is cheap,
  (learning to) create executable notes is good karma.

<edrx> in particular, my focus is on beginners for whom
       instructions like
<edrx> M-: (info "(emacs)Init file")
<edrx> are bad because they are hard to repeat, and
       instructions like: copy
<edrx> (info "(emacs)Init file")
<edrx> to a buffer and type C-e C-x C-e (a.k.a C-exe) on that line
<edrx> are much better

<edrx> for me (info "(emacs)Init file") C-exe is cheap
       because it doesn't require committing things to memory,
       except for C-exe
<edrx> for some other people commiting things to notes is
       expensive, and don't know yet exactly why



#  _____              _   _           _            __ _     
# |__  /___ _ __ ___ | |_| |__     __| |_ __ __ _ / _| |_ _ 
#   / // _ \ '__/ _ \| __| '_ \   / _` | '__/ _` | |_| __(_)
#  / /|  __/ | | (_) | |_| | | | | (_| | | | (_| |  _| |_ _ 
# /____\___|_|  \___/ \__|_| |_|  \__,_|_|  \__,_|_|  \__(_)
#                                                           
(font "Noto Mono 13" :p)


  Emacs, eev, and Maxima - now!
  =============================
  Eduardo Ochs
  http://anggtwu.net/emacsconf2024.html


My name is Eduardo Ochs, I am the author of an Emacs package called
eev, and I think that it is better to start this presentation by the
middle of the story - by "Maxima".

Maxima is a Computer Algebra System that has several interfaces.
One of them is WxMaxima, that looks very modern and is very pretty:

  (kill-new "integrate(sqrt(1-x^2), x);")
  (find-bgprocess "wxmaxima")

I don't like that interface.
My memory is very bad, I type slowly and with lots of mistakes.
So for me the ugly interface below is much better -
and I'm going to show how I am teaching it to beginners.

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
  load_qdraw();
  f : sqrt(1-x^2);
  F : integrate(f, x);
      integrate(f, x, -1,1);
  qdraw(xr(-2,2), yr(-2,2),
        more(proportional_axes=xy),
        ex1(f, x,-1,1, lc(orange), lk("f")),
        ex1(F, x,-1,1, lc(red),    lk("F")));




(font "Noto Mono 13" :p)


1. "Beginners"?
===============

  I work in a federal university in Brazil -
  the "Universidade Federal Fluminense", a.k.a. "UFF" -
  but I work in a crappy campus located in the countryside,
  in a city called Rio das Ostras.
  
  The main campus is in a much bigger city, called Niterói,
  that is 200 Km away.
  
  The main campus, in Niterói, is MUCH better.
  Our best students get transferred to Niterói.
  
  My students are "beginners" in a sense
  that is _inconceivable_ in developed countries.
  
  In developed countries people usually consider that
  beginners think that spreadsheets, Jupyter Notebooks
  and VSCode are "intuitive".
  
  Most of my students have never seen a terminal,
  like this,
    (find-bgprocess "xterm -fn 10x20")
  in their lives, and they've never heard of things
  like Jupyter Notebooks and VSCode...
  
  ...but they understand/grok eev and Emacs very quickly.
  
  On non-obvious ideas:
    (patp 15)





(font "Inconsolata 22" :p)


2. What is Emacs?
=================
When a student takes my 5-minute workshop
I start with this story:


  In 70s people were experimenting with
  full-screen editors that would be
  easy to extend.

  At some point some people took a Lisp
  and added a few functions to it
  to make it become a simple editor with
  an `eval-last-sexp'.

  Then they started to enhance that editor
  "from inside" - and lots of people started
  to write their own extensions and share them.

  The Free Software movement was born from that.





(font "Inconsolata 22" :p)
 

3. What is Emacs? (2)
=====================

  ...and then Emacs was extended to handle
  all kinds of things that look like text -
  like directory listings (Dired),
  and terminals (M-x shell, eepitch).

  My memory is bad,
  I type slowly and I commit many mistakes, 
  and when I started using Emacs in the 90s
  I adapted it to make it
  usable by people like me.

  So I was using a kind of Emacs with crutches -
  or with stilts - and after many years these
  crutches/stilts became an Emacs package -

    "eev", for
    "emacs-execute-verbosely". 




  (font "Inconsolata 20" :p)


4. After the 5-minute workshop
==============================
  Some students - about 25% of them -
  don't have computers at home.

  When a student has a computer
  and some practice with computers
  I usually say

    "Let's continue by WhatsApp/Telegram!"

  after the 5-minute workshop.

  Students who don't have computers at home
  usually do a second mini-workshop in the lab -

    (find-eev-quick-intro)
    (find-eev-quick-intro "2. Evaluating Lisp")

  before the "let's continue by chat".





  (font "Inconsolata 20" :p)


5. What is eev?
===============
Answer 1: this way of using
(some) sexps as hyperlinks,

    (find-fline "~/ORG/M-e.el")

  plus lots of stuff to encourage people
  to create "executable notes" with sexps
  in them. Some basic examples:

    (find-eev-quick-intro "3. Elisp hyperlinks")


Answer 2: that, plus some ways to
  store "commands sent to REPLs"
  in executable notes.

  The new way: (emacsconf2021p 4)
               (find-eev-quick-intro "6.1. The main key: <F8>")
               (find-eev-quick-intro "6.2. Other targets")
               (find-eev-quick-intro "6.2. Other targets" "find-3EE")
  The old way: (emacsconf2019p 4 "Prehistory (3)")


Answer 3: all that, plus a kitchen sink...

  Lots of other tools for executable notes,
    like elisp hyperlinks to pages of PDFs
     and elisp hyperlinks to positions in videos,
     
  Lots of experiments with executable notes,
    including tutorials with lots of "try it"s,
    like these ones,

      (find-eev-intro "Here is a list")

    and, in particular:

      (find-kl-here-intro "2. Try it!")
      (find-kl-here-intro "2. Try it!" "with the title")
      (find-eev "eev-blinks.el" ".find-estruct")





  (font "Inconsolata 25" :p)


6. Eev is an obscure Emacs package
==================================
Lots of people in the #emacs IRC channel have said to me
that eev doesn't make any sense at all to them -
they can't figure out the workflows for using it...

WHY? WHY? WHY?

  More "definitions" for eev:

  Answer 4: like Org, but without the best parts.
  Answer 5: eev is only for 5-year olds, in this sense:
            http://anggtwu.net/2024-eev-for-5-year-olds.html

  Answer 6: for "beginners", but in the WRONG WAY.
  Answer 7: for "beginners", in a sense that is common in Brazil
            but inconceivable elsewhere.




  (font "Inconsolata 28" :p)

7. Eev in (a) few words
=======================

  9 words:  eev is like Org, but without the best parts
  5 words:  where is the front end?
  5 words:  eev is not for adults
  3 words:  eev is WRONG












  (font "Inconsolata 22" :p)

8. "Wrong" in what sense?
=========================
  Here's a first answer.
  This answer is _reasonably_ good,
  but it sort of stops midway...
  The second answer will be _much_ better.

  (find-google-links "what happens if a religious jew    eats non-kosher food")
  (find-google-links "what happens if a religious muslim eats non-halal  food")

    "Wrong" in the sense of "Haram".
    Eating food that is Haram _stains your soul_.

    If you put something like this in your notes,

      (info "(emacs) Modes")

    it stains your notes.
    I don't know exactly how - here's one hypothesis.




  (font "Inconsolata 20" :p)

9. Internalized voices
======================

    We all have "internalized voices".
    Ages ago most IT people in Brazil had "A Notion of User-Friendliness".
    I would show some trick to my friends and they would say

      "we can't use that, the user won't understand that"

    Now many people have "The Voice of The $EVILBOSS".
    I would show some trick to my friends and they would say:

      "I CAN'T USE THAT IN PRODUCTION CODE!!!"

    as if the $EVILBOSS was watching over their shoulders -
    and always threatening to fire them.

    The psychological cost of running an example like the one below

      (emacsconf2021p 4)
      (find-myqdraw "myqdraw3.mac" "myPv")

    is very high.






  (font "Inconsolata 20" :p)

10. "Wrong" in what sense? (2)
==============================
  A few months ago -
  when my "Emacs for students"
  thing was already going very well -
  my self-esteem changed, from

    "I am the author of an Emacs package that doesn't make any sense"

  to:

    "I am the author of an Emacs package that makes all sense to SOME beginners"
  
  and I decided that I would hang out at the #emacs IRC channel more,
  and I would try to understand for which beginners it made sense...
  I had just finished this thing,

    http://anggtwu.net/2024-find-tryit-links.html

  and - I'm simplifying too much, but whatever - when people asked for
  resources for learning basic Elisp I recommended this as an option,

    http://anggtwu.net/eev-intros/find-elisp-intro.html
                                 (find-elisp-intro)

  with lots of disclaimers.

  Two of the regulars reacted very angrily.
  One of them SORT OF told me -
  again, I am simplifying AND DISTORTING the story to make it easier to tell -
  that my tutorial was so, so, so wrong that it shouldn't be included in any
  list of resources for beginners wanting to learn Elisp, even with lots of
  disclaimers.

  His reaction inspired one item of my taxonomy of beginners:

    http://anggtwu.net/2024-a-people-and-b-people.html
             (find-TH "2024-a-people-and-b-people")

  At another point another regular told me that I was spamming the
  channel talking about a package that no one uses, and that I should
  be kicked off for being intrusive and spamming. I answered this:

    http://anggtwu.net/2024-emacs-pollution.html
             (find-TH "2024-emacs-pollution")










  (font "Noto Mono 14" :p)

11. "Old-fashioned anthropology"
================================

     ...It follows from this that pollution is a type
     of danger which is not likely to occur except
     where the lines of structure, cosmic or social,
     are clearly defined.

     A polluting person is always in the wrong. He
     (...) has developed some wrong condition or simply
     crossed over some line which should not have been
     crossed and this displacement unleashes danger for
     someone.

  The book "Purity and Danger - An Analysis
  of Concepts of Pollution and Taboo",
  by Mary Douglas, is from 1966.

  For me it feels like "old-fashioned anthropology",
  that uses structuralist techniques to analyse -
  WARNING: MY TERMS!!! -
  "behaviours of savages that look irrational to us"...

  That's not very useful - I can't answer people who say

    "you're spamming the channel talking about a package
     that no one uses"

  by just showing that the person is being irrational...




  (font "Inconsolata 16" :p)

12. Some Judith Butler
======================

  From "I Read The Most Misunderstood Philosopher in the World"
    (Philosophy Tube, 2024may17) -
    http://www.youtube.com/watch?v=zUW-6atPvUQ

  (find-2024butlerlsubs "7:24" "perform gender" "in ways that you will recognise")
  (find-2024butlerlsubs "8:23" "'Performative' is a" "technical philosophy term")
  (find-2024butlerlsubs "8:55" "You can just choose to" "be any gender")
  (find-2024butlerlsubs "9:07" "I can choose to be" "an attack helicopter")

  (find-2024butlerlsubs "40:34" "the danger" "that gender ideology")
  (find-2024butlerlsubs "41:10" "Pope Francis compared gender ideology" "to nuclear weapons!")

    'Performative' is a technical philosophy term for when you say
    something and by saying it you also do it.

    For example, if you say "I promise" you say the words and you make
    a promise; If a judge says "I sentence you" they say it and they
    do it. When Butler says that gender is performative they mean it
    that way: you do it and you make it so.


   _IDEA_: the notion of "beginner" is performative -
           using _just_ statistics to define "beginners" is bad,
           it is better to _choose_ a definition of "beginner"
           that works well for us...

           not any definition - for example, I don't want to say
           that then "for me a beginner is an attack helicopter ha-ha-ha-"




  (font "Inconsolata 17" :p)

13. Some kinds of beginners that I don't want to help
=====================================================

  "I can't read that page,
   it has too many links"

  "I don't want to read anything and
   I don't want to learn anything,
   I want something that just works"

  "I don't want to look at examples.
   You need to summarize it in one paragraph"

  - I have Linux on my laptop. Can you help me to do blah1?
  - Sure! Do blah2 and blah3!
  (one week passes)
  - It doesn't work!
  - What happens when you do blah4 and blah5?
  (another week passes)
  - It doesn't work!
  - Type blah6 and blah7 in a terminal, press ENTER,
    take a photo of your screen, and send it to me!
  (another week passes)
  - How do I open a terminal?

  (find-sh "dict plonk")
  (find-sh "dict plonk" "The sound")




  (font "Inconsolata 27" :p)


14. Some kinds of beginners that I really want to help
======================================================

  Nerdy kids who are used to:
    reading materials that are too advanced for them,
    understanding only a few percent of what they read,
    remembering just a tiny fraction of what they read,
    going back to these materials later,
    and _taking notes_ about what they read,

  ...and who are always interested in
  experimenting with new ways of taking notes,
  transcribing, summarizing, and
  saving links to primary sources.




  (font "Inconsolata 20" :p)


15. "Now!"
==========

  Let me interrupt everything to explain
  the last word of the title of my presentation...

    Emacs, eev, and Maxima - now!
                             ^^^^

  The "now!" in the title means:

    In less than one hour, and
    even for people who have never seen
    a terminal in their lives!

  The title is a SLIGHT exageration -
  It only took less than one hour for ONE person -
  a schoolkid from a small city in the North of Brazil,
  who didn't know anything about programming,
  BUT who was competing in local Math Olympiads...






  (font "Inconsolata 40" :p)

Planet Cells vs. Planet Lines
=============================
# (find-angggrep "grep --color=auto -nH --null -e strike LOGS/*")
# (find-angggrep "grep --color=auto -niH --null -e canva LOGS/*")


# (find-fline "~/LOGS/2024sep19.emac" "bad because they are hard to repeat")
# (find-angggrep "grep --color=auto -niH --null -e 'init file' LOGS/*")
# (find-sh "dict committing")
# LSubs: (find-2024convitelsubs "00:00")




  [End of part 1]










# Local Variables:
# coding:  utf-8-unix
# End: