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: