(Re)generate: (find-windows-beginner-intro) Source code: (find-efunction 'find-windows-beginner-intro) More intros: (find-eev-quick-intro) (find-eval-intro) (find-eepitch-intro) This buffer is _temporary_ and _editable_. It is meant as both a tutorial and a sandbox. The quickest way to open or recreate this is with `M-3 M-j'.0. Introduction
I work in a big federal university in Brazil, but in a small campus in the countryside that has just six courses - two STEM and four non-STEM. I usually teach Calculus 2 and 3 to the students of Computer Science and Production Engineering, but surprisingly, and depressingly, we can count on the fingers of one hand the students that have enough interest in programming to be willing to try GNU/Linux and "exotic" languages. In the first semester of 2024 I started to repeat many many times in my classes that learning even the basics of Maxima could give them - the students - lots of important insights and save them a lot of time, and three students (out of 60) became somewhat interested in trying Emacs, eev and Maxima. One of them suggested using WSL - "Windows Subsystem for Linux" - instead of my previous method, that used this: (find-wconfig-links) (find-1stclassvideo-links "2022eevwconfig") (find-1stclassvideo-links "2022eevwconfigpt1") (find-1stclassvideo-links "2022eevwconfigpt2") and we are now testing this new set of instructions. Note: _This is a work in progress!!!_1. Install WSL, Debian, and Emacs
The complete instructions are here: https://learn.microsoft.com/en-us/windows/wsl/install https://learn.microsoft.com/en-us/windows/wsl/basic-commands Here is the short version. Run PowerShell as an administrator with: Start -> W -> Windows PowerShell [right click] -> Run as administrator and inside the PowerShell window run these commands: wsl -l -v wsl --install Debian I usually run this instead, with an extra "wsl --unregister Debian" in the middle to delete the Debian image that I created in a previous test: wsl -l -v wsl --unregister Debian wsl --install Debian After the command "wsl --install Debian" finishes it will ask you for a username and a password; people usually choose short usernames in lowercase letters, like "edrx", "caiop" or "gabriel". After setting the user and password you will get a Unix prompt. Then you need to run this sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y emacs to install Emacs; what you will see, including the prompts and messages, will be something like this: edrx@Acer-PC: $ sudo apt-get update [Password for edrx]: (...) edrx@Acer-PC: $ sudo apt-get upgrade -y (...) edrx@Acer-PC: $ sudo apt-get install -y emacs (...) edrx@Acer-PC: $ Note that sometimes sudo asks for a password, and sometimes it doesn't. Then run "emacs &" to start Emacs - i.e.: edrx@Acer-PC: $ emacs & If you don't mind typing a bit more, run this instead of "emacs &": emacs -fg bisque -bg black -fn 6x13 & Here are the meaning of the extra options: "-fg bisque": use bisque as the foreground color "-bg black": use black as the background color "-fn 6x13": use "6x13", a font that is small but very readable Bisque is a kind of beige.2. Install eev
The instructions - in Portuguese - are here: http://anggtwu.net/2024-emacs-windows.html#eev Type `M-x find-windows-beginner-intro' to open this intro.3. Use eepitch to add a Debian repository
Eepitch is explained here: http://anggtwu.net/eepitch.html Run the eepitch block below by typing <f8> on each line, starting by the first line with a red star. The line with the "sudo" will ask for a password in the minibuffer (at the bottom of the screen). * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) echo ' # Edrx: deb http://deb.debian.org/debian/ bookworm contrib non-free ' | sudo tee -a /etc/apt/sources.list ** ** Lines with two red stars are comments. ** If you need to edit /etc/apt/sources.list by hand, use: ** (find-fline "/sudo:root@localhost:/etc/apt/sources.list")4. Use eepitch to install Debian packages
Run the eepitch block below: * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y emacs-el emacs-common-non-dfsg sudo apt-get install -y wget curl sudo apt-get install -y mpv sudo apt-get install -y xterm xpdf poppler-utils sudo apt-get install -y gcl gcl-doc sudo apt-get install -y sbcl sbcl-doc sbcl-source sudo apt-get install -y maxima maxima-doc maxima-share gnuplot sudo apt-get install -y lua5.1 lua5.1-dev lua5.1-doc sudo apt-get install -y lua5.2 lua5.2-dev lua5.2-doc sudo apt-get install -y lua5.3 lua5.3-dev sudo apt-get install -y lua5.4 lua5.4-dev sudo apt-get install -y lua-lpeg lua-lpeg-dev sudo apt-get install -y dict dictd dict-foldoc dict-gcide dict-jargon dict-vera dict-wn sudo apt-get install -y unicode-data sudo apt-get install -y python3 python3-doc sudo apt-get install -y tkdiff sudo apt-get install -y yt-dlp sudo apt-get install -y dctrl-tools sudo apt-get install -y lynx sudo apt-get install -y git5. Use eepitch to install Google Chrome
Run the eepitch block below by typing <f8> on each line. Note the comments about errors... * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd /tmp/ wget -N https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # # The "dpkg -i" below will give lots of errors: sudo dpkg -i google-chrome-stable_current_amd64.deb # # The "apt-get install -y -f" below will fix the errors: sudo apt-get install -y -f6. Learn the basics of Emacs and eev
The best way to learn the basics is to start by copying this section to your ~/TODO file. This is explained in these pages: http://anggtwu.net/2024-first-executable-notes.html http://anggtwu.net/2024-restructuring.html The "basics" are these sections of the main tutorial, (find-eev-quick-intro "2. Evaluating Lisp") (find-eev-quick-intro "3. Elisp hyperlinks") (find-eev-quick-intro "3.1. Non-elisp hyperlinks") the two main keys of eev, that are `M-e' and `M-j', the hints in the header of `M-j', copying and pasting, that is explained here: Menu bar -> Edit -> Cut (C-w) Menu bar -> Edit -> Copy (M-w) Menu bar -> Edit -> Paste (C-y) (find-eev-quick-intro "5.2. Cutting and pasting") (find-emacs-keys-intro "3. Cutting & pasting") this method for saving elisp hyperlinks to intros and info pages, (find-kl-here-intro "2. Try it!") (find-kl-here-intro "3. Info") (find-eev-quick-intro "5. Links to Emacs documentation") (find-eev-quick-intro "5.1. Navigating the Emacs manuals") the Emacs keys that are explained in these sections, (find-emacs-keys-intro "4. Moving point") (find-emacs-keys-intro "5. Undoing") (find-emacs-keys-intro "6. Windows") (find-emacs-keys-intro "7. Files and buffers") these sections with more on eepitch, (find-eev-quick-intro "6.1. The main key: <F8>") (find-eev-quick-intro "6.2. Other targets") (find-eev-quick-intro "6.3. Creating eepitch blocks: `M-T'") and these sections on anchors and short hyperlinks: (find-eev-quick-intro "8.1. Introduction: `to'") (find-eev-quick-intro "9. Shorter hyperlinks") (find-eev-quick-intro "9.1. `code-c-d'") (find-eev-quick-intro "9.2. Extra arguments to `code-c-d'") (find-pdf-like-intro) (find-psne-intro)7. Test Maxima
Here is a basic test of Maxima. The eepitch block below will define three functions in Maxima and then plot two of them using an external program - GnuPlot - that uses an external window. Type `q' on the GnuPlot window to close it. * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) max(2, 4); min(2, 4); q(t) := max(0, t-2); r(t) := min(q(t), 2); S(x,y) := max(r(x), r(y)); plot2d (r(t), [t, 0, 6]); plot3d (S(x,y), [x, 0, 6], [y, 0, 6]);8. Test Maxima with find-wget
This sexp (find-angg-es-links) displays a temporary buffer with instructions for configuring certain elisp hyperlinks functions to make them use `find-wget'. Run the second progn block in it with `M-e', run this `code-c-d' to define `find-maximanode', (code-c-d "maxima" "/usr/share/maxima/5.47.0/" "maxima") and then try: (find-es "maxima" "eev-demo") Compare with: (find-2022findeevangghsubs "15:14" "run this eepitch-maxima (again)") (find-2022findeevanggvideo "15:14" "run this eepitch-maxima (again)")9. Videos
This sexp (1c) displays a list of all the "first-class videos" of eev. For example, this video (find-1stclassvideo-links "2022findeevangg") explains the trick with `(find-angg-es-links)' of the previous section. Try to understand what each of the elisp hyperlinks below does: Play: (find-2022findeevanggvideo "10:54") HSubs: (find-2022findeevangghsubs "10:54") Index: (find-1stclassvideo-index "2022findeevangg") Info: (find-1stclassvideo-links "2022findeevangg") This sexp (find-2022findeevanggvideo "10:54" "Let me now show something else.") plays the local copy of the video if we have a local copy, or shows us a temporary buffer with a script that lets us download a local copy. But sometimes we just want to read the subtitles of the video; read this (find-strange-functions-intro "1. Introduction: videos") to see a way to convert: (find-2022findeevanggvideo "10:54" "Let me now show something else.") to: (find-2022findeevangghsubs "10:54" "Let me now show something else.")10. Learn Lisp
See: (find-elisp-intro) (find-elisp-intro "M-7 M-j") (find-eev-quick-intro "4. Creating Elisp Hyperlinks") (find-eev-quick-intro "4.2. `find-ekey-links' and friends")11. Edit your init file
See: http://anggtwu.net/2024-find-dot-emacs-links.html (find-dot-emacs-links)12. Install qdraw
Qdraw is an extension of the default drawing functions that come with Maxima. It is explained here: https://home.csulb.edu/~woollett/ https://home.csulb.edu/~woollett/mbe13.html https://home.csulb.edu/~woollett/mbe13qdraw.pdf The easiest way to install qdraw is by running this eepitch block, * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd /tmp/ wget -N http://anggtwu.net/tmp/edrx-maxima.tgz tar -C ~/ -xvzf /tmp/edrx-maxima.tgz that also installs my init file for Maxima and lots of small programs that I wrote. Note that the "tar -xvzf" above extracts the files from this .tgz file (find-fline "/tmp/edrx-maxima.tgz") into these three directories: (find-fline "~/.maxima/") (find-fline "~/MAXIMA/") (find-fline "~/luatree/") Here are some tests for qdraw: (find-qdraw-links "x,x^2,x^3,x^4" "-2,2" "-2,2") (find-es "maxima" "2024.1-intro-complex")13. An editable HELP
Run this sexp: (defun h () (interactive) (find-2a nil '(find-fline "~/HELP"))) It defines a function called `h', that displays the file ~/HELP in the window at the right, and makes that function a command, in this sense: (find-elnode "Using Interactive") HOMEWORK: try to understand each part of the `defun' above. Here are some hints. 1. You will need to learn how to use `M-h M-f' well: (find-eev-quick-intro "4.2. `find-ekey-links' and friends" "M-h M-f") 2. You will need to understand several sections of this intro: (find-elisp-intro) 3. The "'" is the hardest part. It is explained here: (find-elisp-intro "3. `quote'") 4. `M-x h' is similar to `M-2 M-1 M-j' and `M-3 M-1 M-j' - but the `(defun h ...)' above needs an `(interactive)', and these defuns (find-eejumps "eejump-21") (find-eejumps "eejump-31") do not. Why? [Unfinished!]