[INCLUDE TH/speedbar.blogme]
[SETFAVICON dednat4/dednat4-icon.png]
[SETFAVICON IMAGES/forthsun.png]
[#
(defun c () (interactive) (find-blogme3-sh0-if "2021-workshop"))
(defun u () (interactive) (find-blogme-upload-links "2021-workshop"))
;; http://angg.twu.net/2021-workshop.html
;; http://angg.twu.net/2021-workshop.html#what
;; http://angg.twu.net/2021-workshop.html#december
;; http://angg.twu.net/2021-workshop.html#november
;; file:///home/edrx/TH/L/2021-workshop.html
;; https://lists.gnu.org/archive/html/help-gnu-emacs/2021-11/msg00241.html
;; https://lists.gnu.org/archive/html/help-gnu-emacs/2021-12/msg00074.html
;; (find-emacs-tangents-links "2021" "11" "29" "msg00012" "txtsUyi2hGEqe")
;;
;; (defun o () (interactive) (find-TH "2021-oficina"))
;; (defun w () (interactive) (find-TH "2021-workshop"))
;; (defun ow () (interactive) (find-2b '(o) '(w)))
;; «.december» (to "december")
;; «.timezones» (to "timezones")
;; «.november» (to "november")
#]
[lua:
-- require "sandwiches-defs"
-- use_sand_htmlizeline()
-- require "videoindex" -- (find-blogme3 "videoindex.lua")
-- def [[ videolines 1Q body VideoIndex.new():videolinesconcat(body, BR()) ]]
require "sandwiches-all" -- (find-blogme3 "sandwiches-all.lua")
def [[ _ 2 shorthand,text R(short_:expand(shorthand), nilify(text) or shorthand) ]]
def [[ pe 1 body _B.P(mapconcat(htmlizeline, splitlines(body), BR())) ]]
def [[ pe' 1Q body _B.P(mapconcat(htmlizeline, splitlines(body), BR())) ]]
def [[ ne' 1Q body NARROW(_B.P(pe(body))) ]]
def [[ RIGHTFIG 2 target,img "" ]]
short_:add [[
eeit => (find-eepitch-intro "3. Test blocks")
find-eeit-links => (find-eepitch-intro "3.1. `find-eeit-links'")
eepitch => (find-eev-quick-intro "6. Controlling shell-like programs")
eepitch-block => (find-eev-quick-intro "6. Controlling shell-like programs")
dofile => (find-lua51manual "#pdf-dofile")
dofile -> http://angg.twu.net/IMAGES/2021-square-cube-3.png
languages => (find-eev "eev-testblocks.el" "examples")
nav -> 2020-list-packages-eev-nav.html
oficina -> 2021-oficina.html
M-e => (find-eev-quick-intro "2. Evaluating Lisp")
M-j => (find-eev-quick-intro "7.2. The list of eejump targets")
M-k => (find-eval-intro "5. Going back")
main-keys => (find-emacs-keys-intro)
cut-and-paste => (find-eev-quick-intro "5.2. Cutting and pasting")
task-and-notes => (find-here-links-intro "1. Alternating between \"task\" and \"notes\"")
here => (find-here-links-intro "2. \"Here\"")
keys-567 => (find-emacs-keys-intro "5. Undoing")
elisp => (find-elisp-intro)
psne => (find-psne-intro)
refining => (find-refining-intro)
video-links -> http://angg.twu.net/2021-video-links.html
video-links => (find-video-links-intro)
eev2019 -> emacsconf2019.html
eev2019-demo => (find-eev2019video "13:10" "Demo: patching xpdf")
eev2020 -> emacsconf2020.html
eev2020b -> 2020-some-template-based.html
miniforth-html -> miniforth-article.html#why-forth
miniforth-pdf -> http://angg.twu.net/miniforth/miniforth-article.pdf#page=12
Sassmannshaus -> https://www.youtube.com/watch?v=Lr4YljhBGt8
Greta -> https://emacsconf.org/2021/talks/pattern/
Prot -> https://emacsconf.org/2021/talks/freedom/
Montessori -> https://emacsconf.org/2021/talks/montessori/
Suzuki -> https://www.amazon.com/Suzuki-Viola-School-Vol-Part/dp/0874872413
Suzuki -> https://academicworks.cuny.edu/cgi/viewcontent.cgi?article=1929&context=gc_etds#page=98
Sevcik -> https://www.amazon.com/Sevcik-Viola-Opus-Part-Otakar/dp/0711997705
video-1 -> http://angg.twu.net/eev-videos/2021-workshop-1.mp4
video-2 -> http://angg.twu.net/eev-videos/2021-workshop-2.mp4
video-1-thumb -> IMAGES/2021-workshop-1-small.png
video-2-thumb -> IMAGES/2021-workshop-2-small.png
prerequisites => (find-eev-exercises-intro "0. Prerequisites")
exercises => (find-eev-exercises-intro)
exercises-1 => (find-eev-exercises-intro "1.1. The base case 1")
from-find-ekey => (find-eev-exercises-intro "3.3. Copy from `find-ekey-links'")
]]
def [[ TABLE2 2 left,right
"
$left | \n".. "$right | \n".. "
---|
[FIG http://angg.twu.net/eev-videos/2021-workshop-1.mp4 IMAGES/2021-workshop-1-small.png] [FIG http://angg.twu.net/eev-videos/2021-workshop-2.mp4 IMAGES/2021-workshop-2-small.png] [FIG http://angg.twu.net/eev-videos/2021-workshop-3.mp4 IMAGES/2021-workshop-3-small.png] [FIG http://angg.twu.net/eev-videos/2021-workshop-4.mp4 IMAGES/2021-workshop-4-small.png] [FIG http://angg.twu.net/eev-videos/2021-workshop-5.mp4 IMAGES/2021-workshop-5-small.png] [FIG http://angg.twu.net/eev-videos/2021-workshop-6.mp4 IMAGES/2021-workshop-6-small.png]
[P [IT I am still writing the material that we will use in the workshop.] The [IT core] of the material will consist on 4 or 5 very short videos like the first two ones above and a series of diagrams like the one [_ from-find-ekey here]. The non-core material will consist of lots of explanations and elisp hyperlinks, like [_ exercises-1 this]. In the next few hours I plan to record two videos about the basic exercises and reorganize [_ exercises this] completely.] [br] [# # __ ___ _ # \ \ / / |__ __ _| |_ # \ \ /\ / /| '_ \ / _` | __| # \ V V / | | | | (_| | |_ # \_/\_/ |_| |_|\__,_|\__| # #] [P [NAME what] [BF What:] the [COLOR red main] theme will be to "save elisp hyperlinks to everything that is interesting". To see what this looks like, run: ] [NARROW [P [BG #ffda99 mpv --start=5:00 --speed=8 [R http://angg.twu.net/eev-videos/2021-workshop-3.mp4]]]] [P [BF Where:] the workshop will happen on Telegram. I'm @eduardoochs on Telegram - if you want to participate just add me there and send me a "hi" and I'll add you to the group in which the workshop will happen, or join the group using [R https://t.me/+UsZbZuPdRclhZTNh this link]. For other ways to contact me, see [R contact.html here]. [STANDOUT Update:] [COLOR red the workshop will happen on IRC too!] if you prefer IRC just join the channel #eev on LiberaChat! [BR] [BF How:] a workshop by Telegram is like a workshop by IRC, but by Telegram. I will have lots of things to suggest, but there will be people of different levels talking at the same time and asking different questions and it will take a while until they converge on questions that interest several people. [BR] [BF When:] the workshop will happen on 2021-dec-04 from 15:00 to 18:00 in the timezone of São Paulo. Look at the table below to see how this converts to other timezones. ] [# # _____ _ # |_ _(_)_ __ ___ ___ _______ _ __ ___ ___ # | | | | '_ ` _ \ / _ \_ / _ \| '_ \ / _ \/ __| # | | | | | | | | | __// / (_) | | | | __/\__ \ # |_| |_|_| |_| |_|\___/___\___/|_| |_|\___||___/ # # (find-es "clock" "timezone-conversion") # «timezones» (to ".timezones") (eepitch-shell) (eepitch-kill) (eepitch-shell) TZS=(America/Vancouver America/Chicago # America/Los_Angeles America/Toronto # America/New_York # America/Montreal America/Sao_Paulo # Europe/Lisbon GMT Europe/London Europe/Berlin Asia/Kolkata Asia/Singapore ) D='2021-12-04 13:00 EST' DATEOPTS=(-d $D) for i in $TZS; do printf "%-20s %s\n" "$i:" "$(TZ=$i date $DATEOPTS)" done #] [BE' America/Vancouver: Sat Dec 4 10:00:00 PST 2021 America/Chicago: Sat Dec 4 12:00:00 CST 2021 America/Toronto: Sat Dec 4 13:00:00 EST 2021 America/Sao_Paulo: Sat Dec 4 15:00:00 -03 2021 GMT: Sat Dec 4 18:00:00 GMT 2021 Europe/London: Sat Dec 4 18:00:00 GMT 2021 Europe/Berlin: Sat Dec 4 19:00:00 CET 2021 Asia/Kolkata: Sat Dec 4 23:30:00 IST 2021 Asia/Singapore: Sun Dec 5 02:00:00 +08 2021 ] [br] [RULE ----------------------------------------] [br] [# «november» (to ".november") #] [H3 2. Old notes] [P In october/2021 I prepared a [R #november workshop] on Emacs for beginners, where these "beginners" would include "M$ Windows users who had never used terminals in their lives". The workshop itself was [IT apparently] a failure, for reasons that I will explain in the next section, but 1) I learned a lot with it, 2) my real, semi-hidden, non-altruistic intent with that workshop was to do a kind of social engineering in the good sense: [IT I was trying to become friends with people who know how to use things that I find incredibly hard to learn], and I made a lot of progress on that. Let me explain.] [P The first programming language that really clicked for me was Forth. It was "simple" in a way that is unusual today:] [NARROW [P My personal impression is that Forth's main points were not the ones that I listed at the beginning of [_ miniforth-html this] [_ miniforth-pdf section], and that I said that were easy to quantify; rather, what was most important was that nothing was hidden, there were no complex data structures around with "don't-look-at-this" parts (think on garbage collection in Lua, for example, and Lua's tables - beginners need to be convinced to see these things abstractly, as the concrete details of the implementation are hard), and everything - code, data, dictionaries, stacks - were just linear sequences of bytes, that could be read and modified directly if we wished to. We had total freedom, defining new words was quick, and experiments were quick to make; that gave us a sense of power that was totally different from, say, the one that a Python user feels today because he has huge libraries at his fingertips. ]] [P A sizeable part of Emacs is "simple" in the sense above, and my workshop was going to be about that.] [P Many of the tools that most people find "simple" nowadays are very hard for me, for reasons that I only understood clearly very recently. My two favorite examples of Python and Org Mode - or, more precisely, Python classes and source blocks in Org Mode. Every time that I tried to learn Python I got stuck at the same point: I was never able to form a clear mental image of what a Python class is, so I would try to understand the details, and when I tried to ask for help the answer was always: "you are asking the wrong questions - you should try to [IT use] classes instead". And when I tried to learn some non-basic parts of Org Mode, like code blocks, a similar thing happened - I tried to understand how code blocks are implemented, but the souce code was written in a way that I found too hard...] [P So: [IT I'm trying to become friends with people who know how to use these things, and I'm trying to become someone who deserves their help and their patience.]] [P I sometimes produce material like this when I finally learn something that I found too hard,] [NARROW [BE' (find-git-intro "2. A first repository") (find-git-intro "2. A first repository" "video") http://angg.twu.net/eev-videos/2020-doubt-about-merging.mp4 (find-lexical-intro) (find-lexical-intro "3. `get/set'") ]] [P so [IT some] people know that helping me is good karma. But let me go back to eev.] [P The main idea behind eev is that we can alternate between [_ task-and-notes "task" and "notes"], and we can take "executable notes" instead of just taking notes in English. My [_ eev2019 presentation] at the EmacsConf2019 included a demo of how to "play back" "executable notes" - it starts at [_ eev2019-demo 13:10] in the video - and some of my [_ eev2020 later] [_ eev2020b videos] sort of explain how to create elisp hyperlinks, but I still don't have much material on this:] [NARROW [P Eev takes an intermediate stance between "notes by hand" and "automatic notes". It is possible to do "task"+"notes" with just a few more keystrokes than for doing just "task", but that requires learning some tricks, and having some practice. ]] [P More precisely: "taking executable notes" consists mostly of 1) saving commands that are sent to "[_ eepitch shell-like programs]" and 2) saving hyperlinks to everything that is interesting. "Saving hyperlinks to everything that is interesting" consists of 2a) deciding what is interesting and what is not, 2b) saving URLs, 2c) saving elisp hyperlinks; and "saving elisp hyperlinks" consists of 2c1) making eev generate "hyperlinks to here", 2c2) selecting the right elisp hyperlink, 2c3) optionally refining the hyperlink, 2c4) copying it to our notes. If we organize this as a tree, we get:] [NARROW [HLIST3 [J "Taking executable notes" can be split into:] [J saving commands that are sent to "[_ eepitch shell-like programs]" (1)] [HLIST2 [J saving hyperlinks to everything that is interesting (2)] [J deciding what is interesting and what is not (2a)] [J saving URLs (2b)] [HLIST2 [J saving elisp hyperlinks (2c)] [J making eev generate "[_ here hyperlinks to here]" (2c1)] [J selecting the right elisp hyperlink (2c2)] [J optionally [_ refining] the hyperlink (2c3)] [J copying it to our notes (2c4)] ] ] ]] [P I [COLOR red have the impression] that people can learn the items 2c1-2c4 very quickly if they do some [IT exercises on series of actions] - similar to how string instruments are taught; see [_ Sassmannshaus this video]. These exercises will make some series of actions, that are initially "totally alien", become "vaguely familiar", and this is enough to free some mental space, and let people pay attention to other things. If people learn how to use diagrams like this one - click on the video [COLOR red (obs: the current video is a stub, and will be replaced later!)] for a demo -] [TABLE2 [BE' . ___________________________ | | | M-h M-3 | [T] | [EH] | --------> | M-1 M-h M-h | M-h M-2 | | | M-h M-y | | | M-h M-- | | | M-w | | |______::_____| | | \/ | | | | | | [N] | | | C-y | | | | | | | |_____________|_____________| ] [FIG http://angg.twu.net/eev-videos/2021-workshop-1.mp4 IMAGES/2021-workshop-1-small.png] ] [P then being "vaguely familiar" with the key sequences should be enough - memorizing them is not necessary.] [br] [P (..)] [br] [P [BF TODO:] cite some talks from the EmacsConf2021 - the ones by [_ Greta], [_ Prot], [_ Montessori Grant], which other ones? -, point to [STOH (find-eev-exercises-intro)], explain that I will add MANY other exercises to that intro, make a video explaining the diagram, explain the prerequisites for the workshop - they are essentially just [_ nav this] - and finish this page.] [br] [br] [RULE ----------------------------------------] [br] [br] [# # _ _ _ # | \ | | _____ _____ _ __ ___ | |__ ___ _ __ # | \| |/ _ \ \ / / _ \ '_ ` _ \| '_ \ / _ \ '__| # | |\ | (_) \ V / __/ | | | | | |_) | __/ | # |_| \_|\___/ \_/ \___|_| |_| |_|_.__/ \___|_| # #] [H3 [NAME november] November: Introduction to Free Software (with Emacs and Eev)] [P In october/2021 I started to prepare a workshop on Emacs and [R index.html#eev eev] that would [IT probably] be attended [IT mostly] by Windows users who had never used terminals in their lives. I explained my plans in these two posts to help-gnu-emacs:] [LIST2 [R https://lists.gnu.org/archive/html/help-gnu-emacs/2021-10/msg00037.html] [R https://lists.gnu.org/archive/html/help-gnu-emacs/2021-10/msg00045.html] ] [# [P If you don't know what is eev then start by the [R http://angg.twu.net/LATEX/2019emacsconf.pdf slides] of my [R emacsconf2019.html presentation] at the EmacsConf2019.] #] [HLIST2 [J My original plan for the workshop was to cover these items:] [J [_ nav installation] and navigation with [_ M-e], [_ M-j], and [_ M-k]] [J [_ keys-567 undo, windows, files and buffers]] [J [_ cut-and-paste cutting and pasting]; putting [_ task-and-notes notes and links] in ~/TODO] [J sharing notes and links via Telegram] [J [_ elisp this tutorial on elisp]] [J [_ video-links How to use] the [' [Video links:]] blocks in the tutorials] [J How to download [_ psne local copies] of files from the internets] ] [P The workshop happened in 2021nov06 and it didn't work as I expected. The items "putting notes and links in ~/TODO" and "sharing notes and links via Telegram" were FAR more important than the other ones, but no one who attended the workshop seemed to be able to focus on them... so after the workshop I realized that this was my fault - I needed to prepare exercises on that, and in the next workshop I would have to tell everyone that sharing notes would be not only VERY IMPORTANT but also REQUIRED, and after, say, two hours of the workshop, the people who aren't sharing their notes would be simply KICKED OUT.] [P After the workshop I restructured the documentation for [R https://lists.gnu.org/archive/html/help-gnu-emacs/2021-10/msg00037.html MWUs] and it became this:] [ne' (find-windows-beginner-intro "0. Introduction") (find-windows-beginner-intro "1. Download and install Emacs") (find-windows-beginner-intro "2. Key sequences and how to quit") (find-windows-beginner-intro "3. Using M-x and installing eev") (find-windows-beginner-intro "4. Understanding buffers and the mode line") (find-windows-beginner-intro "5. More on modes") (find-windows-beginner-intro "5.1. Eev mode") (find-windows-beginner-intro "5.2. Help Mode") (find-windows-beginner-intro "5.3. Info Mode") (find-windows-beginner-intro "5.4. Dired Mode") (find-windows-beginner-intro "5.5. Shell Mode") (find-windows-beginner-intro "5.6. Eshell") (find-windows-beginner-intro "6. Video links") (find-windows-beginner-intro "7. eev-on-windows.el") (find-windows-beginner-intro "7.1. `ee-use-windows'") (find-windows-beginner-intro "7.2. Testing wget.exe") (find-windows-beginner-intro "7.3. Lua") (find-windows-beginner-intro "7.4. Downloading videos") (find-windows-beginner-intro "7.5. Downloading PDFs") (find-windows-beginner-intro "7.6. Saving your settings") (find-windows-beginner-intro "7.7. Testing your settings") (find-windows-beginner-intro "7.8. Saving your settings to your ~/.emacs") (find-windows-beginner-intro "8. Summary") (find-video-links-intro "1. Introduction") (find-video-links-intro "2. From the HTML") (find-video-links-intro "3. `find-youtube-video'") (find-video-links-intro "4. Configuring the browser") (find-video-links-intro "5. Local copies") (find-video-links-intro "6. Configuring Mpv") (find-video-links-intro "7. `find-eev-video'") (find-video-links-intro "8. Windows") (find-video-links-intro "9. First-class videos") (find-video-links-intro "10. Second-class videos") (find-video-links-intro "11. Hardcoded paths") ] [# P ...and this, as I also rewrote completely the support and the documentation for [' [Video links:]] blocks, and some sections of [STOH (find-windows-beginner-intro)] point to some sections of this other "intro" as its pre-requisites:] [P I also recorded a video in Portuguese with basic exercises on the items "putting notes and links in ~/TODO" and "sharing notes and links via Telegram", but I haven't recorded a version in English of it yet... I am also preparing other videos with exercises, and my plan is to first get feedback on them and only after that I will record something similar in English.] [P The page in Portuguese about the workshop is [_ oficina here]. The first three images at its the bottom are links to videos in Portuguese.] ] [# # Local Variables: # coding: raw-text-unix # modes: (fundamental-mode blogme-mode) # End: #]