(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 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 install -y emacs [Password for edrx]: (...about 100 lines...) edrx@Acer-PC: $ Then run "emacs &" to start Emacs - i.e.: edrx@Acer-PC: $ emacs &

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 install Debian packages

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. Some lines 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 main contrib non-free ' | sudo tee -a /etc/apt/sources.list 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 sbcl sbcl-doc sbcl-source sudo apt-get install -y maxima 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

4. 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 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 -f

5. Learn the basics of Emacs and eev

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)

6. 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]);

7. 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")

8. 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.")

9. Learn Lisp

See: (find-elisp-intro) (find-elisp-intro "M-7 M-j") (find-eev-quick-intro "4. Creating Elisp Hyperlinks")

10. Edit your init file

See: (find-eev-levels-intro "0. Introduction") (find-eev-quick-intro "7.1. `eejump'") (find-eev-quick-intro "7.2. The list of eejump targets") (find-eev-quick-intro "7.3. Defining eejump targets") (find-eev-quick-intro "7.4. Commands with very short names") (find-eejumps 2 "eejump-55") [Unfinished!]