From 72e48bc52524672fc6179d1f45f091df76cd2e02 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 13 Dec 2020 00:08:14 -0500 Subject: Switch to vtt --- ...k-like-5-minute-hacks--eduardo-ochs-autogen.sbv | 3300 -------------------- 1 file changed, 3300 deletions(-) delete mode 100644 2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv (limited to '2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv') diff --git a/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv b/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv deleted file mode 100644 index 62287278..00000000 --- a/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv +++ /dev/null @@ -1,3300 +0,0 @@ -0:00:00.080,0:00:03.439 -hi my name is eduardo x I'm this person - -0:00:02.639,0:00:06.240 -here - -0:00:03.439,0:00:07.120 -and the title of this talk is on why - -0:00:06.240,0:00:09.519 -most of - -0:00:07.120,0:00:11.599 -most of the best features in ev look - -0:00:09.519,0:00:13.759 -like five minute hacks - -0:00:11.599,0:00:15.280 -and this is a presentation at the max - -0:00:13.759,0:00:21.920 -conf 2020 - -0:00:15.280,0:00:21.920 -happening in november 22 28 and 29 2020 - -0:00:23.199,0:00:27.680 -so this is part one of the presentation - -0:00:25.519,0:00:29.840 -and here I'm going to explain some - -0:00:27.680,0:00:31.039 -some ideas that are prerequisites for - -0:00:29.840,0:00:32.320 -understanding the rest of the - -0:00:31.039,0:00:35.440 -presentation - -0:00:32.320,0:00:35.760 -the three main keys of ev are matay meta - -0:00:35.440,0:00:37.920 -k - -0:00:35.760,0:00:41.520 -and mata j and I'm going to start by - -0:00:37.920,0:00:41.520 -explaining metae and meta k - -0:00:42.079,0:00:46.800 -metae is used to follow hyperlink and - -0:00:44.960,0:00:49.680 -technically it is - -0:00:46.800,0:00:50.879 -essentially just a ctrl e to move to the - -0:00:49.680,0:00:54.320 -end of the line and then - -0:00:50.879,0:00:58.960 -a ctrl x control e to execute this the - -0:00:54.320,0:01:00.879 -sext before point at the end of the line - -0:00:58.960,0:01:03.120 -and the thing is that a max comes with - -0:01:00.879,0:01:05.040 -many functions that can be used as sex - -0:01:03.120,0:01:07.040 -hyperlinks - -0:01:05.040,0:01:09.040 -we can consider that they point to - -0:01:07.040,0:01:09.520 -somewhere I'm going to refer to that as - -0:01:09.040,0:01:11.920 -the - -0:01:09.520,0:01:12.960 -target of the hyperlink and if we - -0:01:11.920,0:01:15.759 -execute this - -0:01:12.960,0:01:17.119 -sex paper links would go to that target - -0:01:15.759,0:01:20.000 -for example this one - -0:01:17.119,0:01:22.720 -is a hyperlink that points to a buffer - -0:01:20.000,0:01:25.040 -with demand paid for cat - -0:01:22.720,0:01:27.040 -and usually but not always after - -0:01:25.040,0:01:29.840 -following the hyperlink we can go back - -0:01:27.040,0:01:30.720 -by just skilling the the current buffer - -0:01:29.840,0:01:34.400 -that the hyperlink - -0:01:30.720,0:01:38.000 -created the target of the hyperlink - -0:01:34.400,0:01:41.360 -but this example here is badly behaved - -0:01:38.000,0:01:43.360 -if we execute it it creates a new frame - -0:01:41.360,0:01:44.640 -and to go back to the previous situation - -0:01:43.360,0:01:50.079 -we have to either - -0:01:44.640,0:01:50.079 -click here or type ctrl x50 - -0:01:52.840,0:01:57.520 -uh - -0:01:54.880,0:02:00.640 -so here are some examples of sex - -0:01:57.520,0:02:03.600 -hyperlinks using standard max functions - -0:02:00.640,0:02:04.880 -this third one is uh badly behaved in a - -0:02:03.600,0:02:08.879 -different way - -0:02:04.880,0:02:09.840 -if executed we the target is created in - -0:02:08.879,0:02:13.840 -the same window - -0:02:09.840,0:02:16.000 -as we are now but it also shows a lot of - -0:02:13.840,0:02:20.840 -garbage here in the aqua area so - -0:02:16.000,0:02:23.280 -the the current frame becomes a bit - -0:02:20.840,0:02:26.160 -messy - -0:02:23.280,0:02:28.319 -and well one of the first things that I - -0:02:26.160,0:02:30.720 -did when I was creating av - -0:02:28.319,0:02:31.680 -many many years ago was that I created - -0:02:30.720,0:02:34.840 -variants - -0:02:31.680,0:02:36.640 -of all these functions that were better - -0:02:34.840,0:02:38.640 -behaved - -0:02:36.640,0:02:40.480 -and they were better behaved in two - -0:02:38.640,0:02:43.040 -senses the obvious one - -0:02:40.480,0:02:43.680 -was that they they all created the - -0:02:43.040,0:02:45.840 -target - -0:02:43.680,0:02:48.720 -in the same window as before so I could - -0:02:45.840,0:02:51.040 -go back by just typing meta k - -0:02:48.720,0:02:52.879 -which is essentially just killed this - -0:02:51.040,0:02:55.200 -buffer - -0:02:52.879,0:02:56.480 -and well but I also implemented - -0:02:55.200,0:02:59.040 -something extra that - -0:02:56.480,0:02:59.840 -are the post back lists for example for - -0:02:59.040,0:03:03.599 -example these - -0:02:59.840,0:03:06.080 -extra arguments here are a postback list - -0:03:03.599,0:03:09.599 -and this extra arguments specify - -0:03:06.080,0:03:13.040 -position and the target buffer - -0:03:09.599,0:03:16.720 -and in this example this this spot - -0:03:13.040,0:03:18.239 -spec list means starting from the from - -0:03:16.720,0:03:20.560 -the beginning of the buffer - -0:03:18.239,0:03:22.239 -search for the first occurrence of this - -0:03:20.560,0:03:24.159 -string - -0:03:22.239,0:03:25.519 -after that after the beginning of the - -0:03:24.159,0:03:28.159 -buffer and then - -0:03:25.519,0:03:29.120 -search for the first occurrence of this - -0:03:28.159,0:03:33.760 -string - -0:03:29.120,0:03:36.560 -after that - -0:03:33.760,0:03:38.799 -eev also defines some hyperlinks that do - -0:03:36.560,0:03:41.280 -not create new buffers - -0:03:38.799,0:03:41.840 -uh here is the first example if I - -0:03:41.280,0:03:45.920 -execute - -0:03:41.840,0:03:46.959 -this one this one is a hyperlink to the - -0:03:45.920,0:03:50.720 -to the result - -0:03:46.959,0:03:52.959 -of running this show comment date uh - -0:03:50.720,0:03:55.040 -but instead of showing the result in the - -0:03:52.959,0:03:58.959 -new buffer the result is shown - -0:03:55.040,0:04:01.840 -here so if execute to this type link - -0:03:58.959,0:04:04.239 -the result of date the output of data is - -0:04:01.840,0:04:06.640 -shown in the echo area and if executed - -0:04:04.239,0:04:06.640 -again - -0:04:07.120,0:04:11.519 -it shows the result again and the result - -0:04:09.519,0:04:15.200 -changes every second - -0:04:11.519,0:04:18.720 -and if so this is a variant - -0:04:15.200,0:04:21.840 -of fine sh - -0:04:18.720,0:04:24.960 -uh find sh0 is the variant that - -0:04:21.840,0:04:28.080 -just shows the output in the echo area - -0:04:24.960,0:04:31.120 -and find sh shows the output in - -0:04:28.080,0:04:31.120 -a new buffer - -0:04:31.759,0:04:37.520 -and here is an example of a hyperlink - -0:04:35.919,0:04:40.000 -that - -0:04:37.520,0:04:41.280 -calls an external program if execute - -0:04:40.000,0:04:43.759 -this - -0:04:41.280,0:04:46.639 -it it calls google chrome to open a - -0:04:43.759,0:04:51.520 -certain url - -0:04:46.639,0:04:55.280 -here it is let's go back to mx - -0:04:51.520,0:04:58.479 -if execute this happening here - -0:04:55.280,0:04:58.880 -it invokes my favorite pdf viewer which - -0:04:58.479,0:05:02.560 -is - -0:04:58.880,0:05:07.440 -xpdf it makes xpdf - -0:05:02.560,0:05:07.440 -open this pdf page it is pdf - -0:05:07.759,0:05:15.199 -in this page and this other arguments - -0:05:10.880,0:05:19.120 -are ignored let me show how it works - -0:05:15.199,0:05:20.160 -here it is this is a an accept from a - -0:05:19.120,0:05:22.639 -book - -0:05:20.160,0:05:23.199 -so page 3 and the pdf corresponds to - -0:05:22.639,0:05:26.400 -page - -0:05:23.199,0:05:29.360 -113 in the book and - -0:05:26.400,0:05:31.759 -this variant here of the hyperlink above - -0:05:29.360,0:05:34.560 -it opens the pdf in a different way - -0:05:31.759,0:05:36.479 -it runs a program called pdf to text on - -0:05:34.560,0:05:39.600 -this pdf here - -0:05:36.479,0:05:42.880 -and max takes the output of - -0:05:39.600,0:05:46.080 -run epd after text on this pdf here - -0:05:42.880,0:05:47.280 -and displays it in a buffer and now this - -0:05:46.080,0:05:50.000 -postback list - -0:05:47.280,0:05:51.280 -is interpreted in a different way this - -0:05:50.000,0:05:54.400 -thing is interpreted - -0:05:51.280,0:05:54.800 -as a as a number of a page and a max - -0:05:54.400,0:05:57.520 -goes - -0:05:54.800,0:05:58.240 -to page three by counting form feeds in - -0:05:57.520,0:06:01.440 -the - -0:05:58.240,0:06:03.039 -converted version of the pdf and then it - -0:06:01.440,0:06:06.319 -searches for this string - -0:06:03.039,0:06:08.479 -and in this three so let's execute this - -0:06:06.319,0:06:10.800 -to see what happens - -0:06:08.479,0:06:13.280 -here it is I opened the same page as - -0:06:10.800,0:06:13.280 -before - -0:06:14.800,0:06:20.720 -it starts with lecture one so - -0:06:18.400,0:06:24.720 -the other hyperlink searched for this - -0:06:20.720,0:06:24.720 -string and for this string here - -0:06:25.520,0:06:30.400 -uh and this thing here is a hyperlink to - -0:06:28.160,0:06:32.720 -video - -0:06:30.400,0:06:34.560 -and when I executed it's going to open - -0:06:32.720,0:06:37.759 -this video here - -0:06:34.560,0:06:41.199 -at this time this time stamp let's see - -0:06:37.759,0:06:46.840 -one two three one - -0:06:41.199,0:06:49.440 -two three that's the way to do - -0:06:46.840,0:06:52.560 -it - -0:06:49.440,0:06:53.680 -and also some hyperlinks that that I - -0:06:52.560,0:06:56.479 -defined - -0:06:53.680,0:06:58.160 -uh they don't work like like usual - -0:06:56.479,0:07:01.440 -hyperlinks they work more - -0:06:58.160,0:07:05.759 -like browser buttons - -0:07:01.440,0:07:05.759 -these buttons that appear in web pages - -0:07:06.240,0:07:11.360 -in the sense that these buttons usually - -0:07:09.120,0:07:13.280 -don't open a new page they usually - -0:07:11.360,0:07:14.960 -just do something to change the current - -0:07:13.280,0:07:18.160 -page - -0:07:14.960,0:07:18.880 -if I execute this the action of this - -0:07:18.160,0:07:22.240 -function - -0:07:18.880,0:07:24.800 -eek is to uh - -0:07:22.240,0:07:25.919 -it interprets this string as a series of - -0:07:24.800,0:07:28.840 -keys and it - -0:07:25.919,0:07:30.319 -acts as if the user had typed all these - -0:07:28.840,0:07:33.680 -keys so - -0:07:30.319,0:07:34.400 -if executed I get a hello in the next - -0:07:33.680,0:07:36.639 -line - -0:07:34.400,0:07:39.440 -if executed again I get another hello - -0:07:36.639,0:07:44.319 -another hello hello hello etc etc - -0:07:39.440,0:07:47.840 -let me undo this mess oops - -0:07:44.319,0:07:51.440 -and here is another kind of button - -0:07:47.840,0:07:54.879 -that defines a new function if I execute - -0:07:51.440,0:07:55.759 -this sex here at this moment though is - -0:07:54.879,0:07:57.919 -not defined - -0:07:55.759,0:08:00.000 -and if I execute this mx is going to - -0:07:57.919,0:08:03.599 -show me a message saying - -0:08:00.000,0:08:05.840 -uh symbols function cell is not defined - -0:08:03.599,0:08:09.520 -something like this - -0:08:05.840,0:08:12.960 -but if I execute the defund - -0:08:09.520,0:08:16.479 -this the action of this function o here - -0:08:12.960,0:08:18.960 -is to run this which opens a certain - -0:08:16.479,0:08:21.840 -directory - -0:08:18.960,0:08:23.039 -let me go back and here is another - -0:08:21.840,0:08:25.840 -button that defines - -0:08:23.039,0:08:26.479 -several functions at the same time if I - -0:08:25.840,0:08:28.879 -execute - -0:08:26.479,0:08:28.879 -this - -0:08:32.320,0:08:36.719 -note that the the result of executing - -0:08:35.599,0:08:38.640 -this expression - -0:08:36.719,0:08:40.080 -is the name of one of the functions that - -0:08:38.640,0:08:42.800 -it defined - -0:08:40.080,0:08:43.360 -that is this one here and let me explain - -0:08:42.800,0:08:46.959 -the - -0:08:43.360,0:08:48.800 -these examples uh one of the functions - -0:08:46.959,0:08:51.839 -that this thing here defined - -0:08:48.800,0:08:54.640 -is called find or git file where - -0:08:51.839,0:08:55.040 -this or gate in the middle of its name - -0:08:54.640,0:08:59.600 -is - -0:08:55.040,0:09:02.640 -exactly this first argument to code cd - -0:08:59.600,0:09:03.120 -and the action of running find or get - -0:09:02.640,0:09:06.399 -file - -0:09:03.120,0:09:09.680 -on a string like this is that - -0:09:06.399,0:09:13.360 -find or get file takes the string - -0:09:09.680,0:09:15.600 -and prepends this string to it - -0:09:13.360,0:09:17.920 -this one here which is the second - -0:09:15.600,0:09:21.760 -argument to called cd - -0:09:17.920,0:09:25.600 -and then it executes find flying - -0:09:21.760,0:09:25.600 -on the result which is this one - -0:09:25.680,0:09:28.800 -and fine flying is my variant of find - -0:09:28.320,0:09:32.080 -file - -0:09:28.800,0:09:36.880 -that supports both spec lists - -0:09:32.080,0:09:39.600 -and this function here that I'm - -0:09:36.880,0:09:41.200 -referring to as a button it also defines - -0:09:39.600,0:09:44.880 -a function called - -0:09:41.200,0:09:46.080 -find audit node here where the or gate - -0:09:44.880,0:09:50.320 -is the same string - -0:09:46.080,0:09:54.160 -as here and this function opens a node - -0:09:50.320,0:09:57.920 -of of an info manual this one - -0:09:54.160,0:10:00.080 -this text here opens this node in the - -0:09:57.920,0:10:03.519 -org manual - -0:10:00.080,0:10:06.800 -it is equivalent to this text here - -0:10:03.519,0:10:08.720 -so in the passage from this line to this - -0:10:06.800,0:10:11.920 -line we prepended - -0:10:08.720,0:10:15.040 -to the node name the name of the manual - -0:10:11.920,0:10:18.160 -here and find node is my variant - -0:10:15.040,0:10:20.399 -of this standard mx function here - -0:10:18.160,0:10:23.200 -but find node also supports post - -0:10:20.399,0:10:23.200 -backlists - -0:10:23.519,0:10:28.640 -eevee also defines some functions that - -0:10:26.640,0:10:30.800 -define shorter hyperlinks to pdfs and - -0:10:28.640,0:10:32.880 -videos - -0:10:30.800,0:10:34.720 -remember that this thing here is a - -0:10:32.880,0:10:37.120 -shorter hyperlink to a - -0:10:34.720,0:10:39.040 -to a file and this thing here is a - -0:10:37.120,0:10:43.200 -shorter hyperlink to a node and - -0:10:39.040,0:10:46.079 -in an mx menu in an info manual - -0:10:43.200,0:10:47.279 -uh if we run this thing here this code - -0:10:46.079,0:10:50.240 -pdf page - -0:10:47.279,0:10:52.880 -this acts like a button that defines a - -0:10:50.240,0:10:56.399 -certain function - -0:10:52.880,0:10:59.040 -and this string this other sex - -0:10:56.399,0:11:00.240 -here defines another function the first - -0:10:59.040,0:11:03.040 -one defines - -0:11:00.240,0:11:05.360 -the function find funcspivac page and - -0:11:03.040,0:11:09.279 -the second one defines the function find - -0:11:05.360,0:11:12.240 -from text when we run the - -0:11:09.279,0:11:13.440 -file when we run findfoxpivotpage it - -0:11:12.240,0:11:17.600 -opens - -0:11:13.440,0:11:20.640 -this pdf here the name is - -0:11:17.600,0:11:23.839 -quite long uh - -0:11:20.640,0:11:26.079 -this example opens this pdf at page 8 - -0:11:23.839,0:11:28.000 -and searches for the string contents - -0:11:26.079,0:11:31.279 -oops sorry in this case - -0:11:28.000,0:11:33.519 -in this case it just ignores this string - -0:11:31.279,0:11:37.360 -here it only considers - -0:11:33.519,0:11:42.640 -the number of the page let's try - -0:11:37.360,0:11:45.200 -ah we got - -0:11:42.640,0:11:46.880 -here it is uh the contents of a book - -0:11:45.200,0:11:50.800 -that is freely - -0:11:46.880,0:11:51.760 -available uh here is another page of the - -0:11:50.800,0:11:55.040 -book - -0:11:51.760,0:11:55.519 -and if we execute the this happening - -0:11:55.040,0:11:58.399 -here - -0:11:55.519,0:11:59.920 -find funk's pivot text it converts the - -0:11:58.399,0:12:03.040 -pdf to text - -0:11:59.920,0:12:05.040 -and it searches for the page eight - -0:12:03.040,0:12:08.079 -in it and then for the string this - -0:12:05.040,0:12:11.839 -string here in page eight - -0:12:08.079,0:12:11.839 -it takes a few seconds - -0:12:12.240,0:12:20.320 -here it is so this is the - -0:12:16.160,0:12:25.040 -ascii version of this contents page - -0:12:20.320,0:12:28.800 -here uh note that this block here - -0:12:25.040,0:12:31.680 -is a kind of an index to that book - -0:12:28.800,0:12:33.600 -uh I have the full index somewhere but - -0:12:31.680,0:12:34.959 -it's very long so I just copied a few - -0:12:33.600,0:12:38.959 -lines here - -0:12:34.959,0:12:42.160 -uh so this is a link to the to set - -0:12:38.959,0:12:45.360 -section one chapter one this is the - -0:12:42.160,0:12:48.959 -section 1.1 - -0:12:45.360,0:12:53.839 -section 1.1.1 and so on - -0:12:48.959,0:12:53.839 -and here is a link to the index - -0:12:54.000,0:13:02.800 -and here is a part of my index - -0:12:58.079,0:13:03.279 -of positions in the video that we just - -0:13:02.800,0:13:05.760 -saw - -0:13:03.279,0:13:07.360 -that I think that are especially - -0:13:05.760,0:13:10.639 -relevant - -0:13:07.360,0:13:12.399 -uh so this I believe - -0:13:10.639,0:13:14.160 -hyperlink is a kind of a button that - -0:13:12.399,0:13:18.560 -defines this function here - -0:13:14.160,0:13:18.560 -find punch and punch into the video - -0:13:18.839,0:13:21.839 -uh - -0:13:27.600,0:13:33.360 -and we can also use this for video - -0:13:31.440,0:13:37.200 -tutorials for example - -0:13:33.360,0:13:40.639 -this is a very good tutorial on on magic - -0:13:37.200,0:13:40.639 -if we execute this - -0:13:40.880,0:13:44.800 -then these functions are going to be - -0:13:42.560,0:13:48.399 -defined and these functions open - -0:13:44.800,0:13:50.079 -this tutorial on magic - -0:13:48.399,0:13:51.839 -these are some of the positions in the - -0:13:50.079,0:13:53.920 -tutorial that I found especially - -0:13:51.839,0:13:55.600 -especially relevant this is a very dense - -0:13:53.920,0:13:56.480 -tutorial I had to take notes of - -0:13:55.600,0:13:59.040 -everything - -0:13:56.480,0:14:00.800 -and I had to watch everything things - -0:13:59.040,0:14:03.440 -several times - -0:14:00.800,0:14:06.480 -and for example this is a link to the - -0:14:03.440,0:14:09.600 -position in the tutorial that explains - -0:14:06.480,0:14:12.880 -uh how in space - -0:14:09.600,0:14:17.600 -space max magic magic - -0:14:12.880,0:14:20.480 -interprets space gs magic status - -0:14:17.600,0:14:22.320 -let's see beginners space gs to initiate - -0:14:20.480,0:14:25.600 -magic's git status - -0:14:22.320,0:14:28.800 -uh you can also do that's it - -0:14:25.600,0:14:32.160 -and here are some examples that I - -0:14:28.800,0:14:34.240 -took from somewhere else the video - -0:14:32.160,0:14:38.800 -tutorials from - -0:14:34.240,0:14:38.800 -ralph koenig about org mode - -0:14:43.519,0:14:47.440 -now let me show how the functions that - -0:14:45.519,0:14:48.720 -define this router hyperlinks are - -0:14:47.440,0:14:51.199 -implemented - -0:14:48.720,0:14:52.480 -the standard ways in max to define - -0:14:51.199,0:14:55.760 -functions that define - -0:14:52.480,0:14:58.320 -other functions would be with macros uh - -0:14:55.760,0:14:59.040 -let's see an example this is a standard - -0:14:58.320,0:15:01.540 -function that - -0:14:59.040,0:15:02.959 -defines new functions - -0:15:01.540,0:15:06.959 -[Music] - -0:15:02.959,0:15:09.040 -and if we execute it one of the res - -0:15:06.959,0:15:10.160 -its result is the last function that it - -0:15:09.040,0:15:13.839 -defined which is - -0:15:10.160,0:15:13.839 -e-grief which is here - -0:15:13.920,0:15:19.360 -it's implemented as a macro we can - -0:15:16.959,0:15:20.880 -look at the result of macro expand which - -0:15:19.360,0:15:23.519 -is going to show - -0:15:20.880,0:15:25.519 -show us the result of of this of the - -0:15:23.519,0:15:28.000 -expansion of this - -0:15:25.519,0:15:28.959 -instead of expanding and executing it - -0:15:28.000,0:15:33.199 -just - -0:15:28.959,0:15:36.000 -expands and shows us the result - -0:15:33.199,0:15:37.600 -here the result is a bit messy is too - -0:15:36.000,0:15:40.959 -big for - -0:15:37.600,0:15:44.240 -humans to understand but we can run - -0:15:40.959,0:15:47.519 -this or this text here that takes that - -0:15:44.240,0:15:50.959 -that result and pretty prints it - -0:15:47.519,0:15:54.000 -so this is the pretty printed version of - -0:15:50.959,0:15:57.600 -uh this macro here - -0:15:54.000,0:16:01.120 -we can see that it defines - -0:15:57.600,0:16:04.399 -several functions here - -0:16:01.120,0:16:04.399 -for example this one - -0:16:06.399,0:16:09.920 -and this just as a curiosity is a link - -0:16:09.360,0:16:13.839 -to - -0:16:09.920,0:16:16.880 -the definition of cld struct - -0:16:13.839,0:16:19.199 -and note that the code is huge uh - -0:16:16.880,0:16:20.079 -well it's very well commented but it's - -0:16:19.199,0:16:23.759 -it has - -0:16:20.079,0:16:26.959 -lots of special cases it has uh - -0:16:23.759,0:16:27.920 -it supports lots of constructions and so - -0:16:26.959,0:16:30.639 -it's huge and - -0:16:27.920,0:16:33.360 -it's very difficult to understand I mean - -0:16:30.639,0:16:35.040 -I found it very difficult to understand - -0:16:33.360,0:16:37.759 -and here's a link to document the - -0:16:35.040,0:16:42.000 -documentation of cld struct - -0:16:37.759,0:16:46.000 -here in the manual for - -0:16:42.000,0:16:50.480 -cl which is a kind of support for some - -0:16:46.000,0:16:53.600 -features of common lisp in the max - -0:16:50.480,0:16:54.639 -so let's compare this standard way of - -0:16:53.600,0:16:56.560 -defining - -0:16:54.639,0:16:58.320 -functions that define new functions - -0:16:56.560,0:17:01.680 -which is with macros - -0:16:58.320,0:17:04.160 -with this I'm going to use a slogan - -0:17:01.680,0:17:06.319 -repeatedly the slogan is I am a very bad - -0:17:04.160,0:17:08.880 -programmer - -0:17:06.319,0:17:10.640 -I'm a very bad programmer so when I was - -0:17:08.880,0:17:12.240 -trying to create functions that would - -0:17:10.640,0:17:14.480 -define new functions - -0:17:12.240,0:17:16.400 -I found it easier to generally generate - -0:17:14.480,0:17:20.559 -this code as text - -0:17:16.400,0:17:23.199 -and then run read and eval in it - -0:17:20.559,0:17:24.640 -the code cd that we saw in the previous - -0:17:23.199,0:17:28.079 -section - -0:17:24.640,0:17:29.039 -we can see the the code that it produces - -0:17:28.079,0:17:31.039 -by - -0:17:29.039,0:17:33.280 -making a copy of this line and - -0:17:31.039,0:17:34.480 -prepending this string here to the name - -0:17:33.280,0:17:36.720 -of the function - -0:17:34.480,0:17:38.400 -so instead of running code cd we run - -0:17:36.720,0:17:41.280 -find code cd - -0:17:38.400,0:17:44.400 -and it creates a new temporary buffer - -0:17:41.280,0:17:47.760 -with the code that - -0:17:44.400,0:17:50.320 -code cd would execute - -0:17:47.760,0:17:53.919 -so it's a series of the fonts and a few - -0:17:50.320,0:17:53.919 -set cues and so on - -0:17:54.080,0:17:59.120 -and this thing is implemented mostly as - -0:17:57.600,0:18:02.160 -a template - -0:17:59.120,0:18:04.160 -uh the lola the - -0:18:02.160,0:18:06.240 -there's an inner function called ee - -0:18:04.160,0:18:08.799 -called cd base that receives just - -0:18:06.240,0:18:10.640 -these two arguments and it says - -0:18:08.799,0:18:14.320 -essentially just runs the function - -0:18:10.640,0:18:16.480 -e template zero on the string here and - -0:18:14.320,0:18:18.559 -the things between curly braces are - -0:18:16.480,0:18:22.559 -substituted by the values - -0:18:18.559,0:18:22.559 -of these arguments here - -0:18:23.600,0:18:28.480 -there's one part of the tutorial here - -0:18:25.919,0:18:31.039 -that explains all these things - -0:18:28.480,0:18:32.559 -uh except for the rationale for some - -0:18:31.039,0:18:35.360 -design decisions - -0:18:32.559,0:18:37.280 -and those design decisions are one of - -0:18:35.360,0:18:37.760 -the many motivations for this talk but - -0:18:37.280,0:18:39.679 -um - -0:18:37.760,0:18:42.640 -we are I'm only going to explain these - -0:18:39.679,0:18:46.799 -things in detail at the end - -0:18:42.640,0:18:46.799 -which is kind of so on - -0:18:48.480,0:18:51.600 -in the beginning I said that the three - -0:18:50.320,0:18:56.000 -main keys of av - -0:18:51.600,0:19:00.080 -are meta e meta k and meta j - -0:18:56.000,0:19:01.520 -let's see now what met what meta j does - -0:19:00.080,0:19:04.640 -uh but I need to start with some - -0:19:01.520,0:19:06.559 -motivation uh the motivation is that we - -0:19:04.640,0:19:08.240 -can define commands with very short - -0:19:06.559,0:19:10.160 -names and actually I became kind of - -0:19:08.240,0:19:13.200 -addicted to that - -0:19:10.160,0:19:15.600 -this is an example of the fund that - -0:19:13.200,0:19:18.000 -defines a comment with a very short name - -0:19:15.600,0:19:21.200 -its name is just one letter e - -0:19:18.000,0:19:21.520 -and I can invoke you invoke it with meta - -0:19:21.200,0:19:24.720 -x - -0:19:21.520,0:19:27.360 -e if I type meta xp - -0:19:24.720,0:19:30.000 -now it opens a latex file that I'm - -0:19:27.360,0:19:30.000 -working on - -0:19:31.130,0:19:35.200 -[Music] - -0:19:32.559,0:19:37.120 -and I create most of my latex files - -0:19:35.200,0:19:39.200 -using - -0:19:37.120,0:19:40.559 -template template-based functions like - -0:19:39.200,0:19:43.760 -the the - -0:19:40.559,0:19:46.559 -implementation of code cd above and - -0:19:43.760,0:19:49.280 -this template-based functions create - -0:19:46.559,0:19:51.280 -files with extension.tag - -0:19:49.280,0:19:53.919 -that start with a series of the fonts - -0:19:51.280,0:19:56.240 -and comments for example - -0:19:53.919,0:19:58.320 -let's look at this example here if I - -0:19:56.240,0:19:59.440 -execute find the attack links with this - -0:19:58.320,0:20:02.159 -argument - -0:19:59.440,0:20:03.440 -uh it's going it's going to do several - -0:20:02.159,0:20:06.880 -things for creating a - -0:20:03.440,0:20:08.320 -file called slash tmp slash forward - -0:20:06.880,0:20:11.200 -attack - -0:20:08.320,0:20:12.400 -and the header of that file is going to - -0:20:11.200,0:20:16.080 -be this - -0:20:12.400,0:20:19.280 -which starts with two and with three - -0:20:16.080,0:20:21.919 -the fonts with functions with very short - -0:20:19.280,0:20:26.240 -names and comments - -0:20:21.919,0:20:26.240 -let's compare with the situation here - -0:20:27.520,0:20:34.640 -in my file 2020 favorite conventions.tag - -0:20:32.799,0:20:37.039 -I have this header here in which I - -0:20:34.640,0:20:39.360 -define six functions with very short - -0:20:37.039,0:20:41.919 -names - -0:20:39.360,0:20:44.799 -and in this case here that is even - -0:20:41.919,0:20:48.000 -explained in the tutorial - -0:20:44.799,0:20:51.520 -this we have mnemonics for - -0:20:48.000,0:20:54.799 -these short names here and c is compile - -0:20:51.520,0:20:57.760 -d is display I mean display the pdf - -0:20:54.799,0:20:58.159 -and e is added in the sense of make a - -0:20:57.760,0:21:02.320 -max - -0:20:58.159,0:21:05.039 -visit that file - -0:21:02.320,0:21:06.480 -okay now I can explain what is meta j - -0:21:05.039,0:21:08.880 -itself - -0:21:06.480,0:21:09.600 -uh we just saw comments with very short - -0:21:08.880,0:21:12.320 -names - -0:21:09.600,0:21:14.840 -and the idea is behind meta j is that we - -0:21:12.320,0:21:16.480 -can define comments with very short - -0:21:14.840,0:21:19.679 -numbers - -0:21:16.480,0:21:22.559 -let me explain this uh - -0:21:19.679,0:21:23.039 -the short explanation for what meta j - -0:21:22.559,0:21:25.360 -does - -0:21:23.039,0:21:27.039 -is that it jumps to set certain - -0:21:25.360,0:21:29.760 -predefined places - -0:21:27.039,0:21:30.799 -in particular a meta j without a numeric - -0:21:29.760,0:21:33.280 -argument - -0:21:30.799,0:21:34.080 -takes us to a buffer with with the basic - -0:21:33.280,0:21:37.679 -help - -0:21:34.080,0:21:39.760 -and a list of the current age of targets - -0:21:37.679,0:21:41.520 -and this is something that is a bit - -0:21:39.760,0:21:44.559 -simpler to understand - -0:21:41.520,0:21:47.919 -if we type meta five meta j - -0:21:44.559,0:21:51.120 -then meta j runs this sex - -0:21:47.919,0:21:55.440 -here that is associated to - -0:21:51.120,0:21:59.039 -the argument five I say that the target - -0:21:55.440,0:22:01.520 -for the argument five is this one - -0:21:59.039,0:22:03.760 -and if the argument is true then the - -0:22:01.520,0:22:07.039 -target associated to the to the true - -0:22:03.760,0:22:09.600 -is this sex here that opens - -0:22:07.039,0:22:10.240 -well this one opens the main tutorial vv - -0:22:09.600,0:22:13.679 -and this one - -0:22:10.240,0:22:15.679 -opens another tutorial - -0:22:13.679,0:22:20.480 -this is a link to one of the tutorials - -0:22:15.679,0:22:22.559 -of ev to the part that explains meta j - -0:22:20.480,0:22:24.559 -I've copied the the main part of the - -0:22:22.559,0:22:28.159 -text here - -0:22:24.559,0:22:31.360 -the header the header that meta j shows - -0:22:28.159,0:22:33.919 -let me show it very quickly here - -0:22:31.360,0:22:36.320 -here is their header and here is their - -0:22:33.919,0:22:39.039 -rest - -0:22:36.320,0:22:40.000 -the header is very beginner friendly and - -0:22:39.039,0:22:42.159 -if you're a beginner - -0:22:40.000,0:22:44.559 -who only knows how to use meta e to - -0:22:42.159,0:22:46.799 -execute and met - -0:22:44.559,0:22:48.240 -this should be okay and meta k to go - -0:22:46.799,0:22:52.320 -back - -0:22:48.240,0:22:55.840 -then you can and should use that header - -0:22:52.320,0:22:55.840 -I mean this header here - -0:22:56.720,0:23:00.799 -as your main starting point and every - -0:22:59.360,0:23:03.679 -time that you feel lost - -0:23:00.799,0:23:04.799 -you can type meta j and to go back to - -0:23:03.679,0:23:07.039 -that header - -0:23:04.799,0:23:08.000 -and you can use its links to navigate to - -0:23:07.039,0:23:11.360 -the documentation - -0:23:08.000,0:23:14.799 -for max nav let me explain that - -0:23:11.360,0:23:15.679 -uh this header here has several ellis - -0:23:14.799,0:23:19.039 -hyperlinks - -0:23:15.679,0:23:22.400 -one here one here - -0:23:19.039,0:23:25.760 -one here one here and so on - -0:23:22.400,0:23:29.280 -uh these ones are links to the - -0:23:25.760,0:23:30.880 -to the intros which are the tutorials - -0:23:29.280,0:23:32.480 -find if you quick enter in the main - -0:23:30.880,0:23:35.760 -tutorial and find ev - -0:23:32.480,0:23:36.720 -keys intro is a kind of tutorial that is - -0:23:35.760,0:23:39.520 -an index of - -0:23:36.720,0:23:39.520 -the main keys - -0:23:40.000,0:23:43.279 -and after that we have an explanation of - -0:23:42.559,0:23:46.799 -what some - -0:23:43.279,0:23:50.240 -numeric prefixes do so if we type - -0:23:46.799,0:23:53.200 -met one method j the effect of that is - -0:23:50.240,0:23:54.640 -exactly the same as executing this and - -0:23:53.200,0:23:58.080 -we can execute this - -0:23:54.640,0:23:58.080 -with meta e also - -0:24:00.159,0:24:06.960 -meta tube meta j runs this sex and - -0:24:03.679,0:24:10.559 -I can also execute it with meta e - -0:24:06.960,0:24:14.240 -here it is it's this uh - -0:24:10.559,0:24:18.400 -intro this uh - -0:24:14.240,0:24:22.960 -sandbox tutorial and - -0:24:18.400,0:24:22.960 -here is another sandbox tutorial - -0:24:24.640,0:24:28.720 -let me go back and then the - -0:24:27.039,0:24:30.880 -documentation says that - -0:24:28.720,0:24:31.760 -that header the header that is beginner - -0:24:30.880,0:24:33.679 -friendly - -0:24:31.760,0:24:35.520 -is followed by a section that is very - -0:24:33.679,0:24:37.600 -beginner unfriendly - -0:24:35.520,0:24:40.240 -that contains a series of the fonts like - -0:24:37.600,0:24:40.240 -these ones - -0:24:40.400,0:24:44.640 -here the last line of the header is this - -0:24:43.440,0:24:46.720 -comment here - -0:24:44.640,0:24:48.559 -and then we have several defense like - -0:24:46.720,0:24:51.440 -this - -0:24:48.559,0:24:53.840 -let me explain how these things work - -0:24:51.440,0:24:57.360 -technically what happens when we type - -0:24:53.840,0:24:57.840 -meta j without any arguments is that it - -0:24:57.360,0:25:00.960 -runs - -0:24:57.840,0:25:04.640 -eu jump with argument neil and then - -0:25:00.960,0:25:06.480 -this runs 5 e jumps - -0:25:04.640,0:25:08.000 -when I run meta j with a numeric - -0:25:06.480,0:25:11.120 -argument for example - -0:25:08.000,0:25:14.400 -with argument 5 it runs a jump - -0:25:11.120,0:25:17.679 -5 and e jump five - -0:25:14.400,0:25:20.400 -uh concatenates this five one - -0:25:17.679,0:25:21.679 -to make a name of a function this - -0:25:20.400,0:25:24.320 -function here - -0:25:21.679,0:25:24.720 -and it executes this function e jump - -0:25:24.320,0:25:28.880 -five - -0:25:24.720,0:25:31.919 -you jump uh dash five - -0:25:28.880,0:25:35.520 -and eu jump dash five is - -0:25:31.919,0:25:39.360 -executes find ev equity intro - -0:25:35.520,0:25:41.440 -if I execute just meta j - -0:25:39.360,0:25:43.919 -the section that shows the current age - -0:25:41.440,0:25:47.120 -on targets - -0:25:43.919,0:25:48.159 -has a line for e job five this is that - -0:25:47.120,0:25:52.159 -is exactly the - -0:25:48.159,0:25:52.159 -thing that I was explaining before - -0:25:52.400,0:25:59.520 -so we can use meta j to navigate the - -0:25:54.840,0:26:03.440 -tutorials and we can copy the links - -0:25:59.520,0:26:06.799 -sorry we can copy links to the to - -0:26:03.440,0:26:06.799 -tutorials to our notes - -0:26:07.919,0:26:14.880 -oh sorry this has some typos - -0:26:11.840,0:26:18.080 -for example if I execute this - -0:26:14.880,0:26:20.640 -I go to a section of this tutorial here - -0:26:18.080,0:26:24.320 -that explains the main keys of ev - -0:26:20.640,0:26:26.240 -and these things are hyperlinks I can - -0:26:24.320,0:26:27.440 -mark a hyperlink like this it is just - -0:26:26.240,0:26:30.559 -plain text and I - -0:26:27.440,0:26:31.760 -can copy it to my notes and the idea is - -0:26:30.559,0:26:33.520 -that every time - -0:26:31.760,0:26:35.520 -every time that I find something that is - -0:26:33.520,0:26:36.240 -interesting I can create a hyperlink to - -0:26:35.520,0:26:38.720 -it - -0:26:36.240,0:26:40.799 -and I can put these links in my notes so - -0:26:38.720,0:26:42.960 -I can navigate back - -0:26:40.799,0:26:45.360 -to all the interesting positions very - -0:26:42.960,0:26:45.360 -quickly - -0:26:48.799,0:26:54.080 -okay next feature if we type meta - -0:26:51.760,0:26:57.039 -uppercase j - -0:26:54.080,0:26:57.039 -uh then - -0:26:57.600,0:27:03.679 -this this is a function that transforms - -0:27:00.080,0:27:06.080 -the current line in a certain way - -0:27:03.679,0:27:07.360 -let me give an example let me isolate - -0:27:06.080,0:27:09.919 -this and let me create - -0:27:07.360,0:27:11.039 -duplicate this line to to make clear - -0:27:09.919,0:27:14.240 -what happens - -0:27:11.039,0:27:16.880 -if I type meta uppercase j here - -0:27:14.240,0:27:17.440 -this line here becomes the fund for a - -0:27:16.880,0:27:21.200 -jump - -0:27:17.440,0:27:24.799 -6 and the target of this e-jump - -0:27:21.200,0:27:28.399 -is exactly this sex here - -0:27:24.799,0:27:28.399 -let me undo this mess - -0:27:28.559,0:27:32.840 -and if the first word in the line is not - -0:27:31.360,0:27:36.240 -a number for example - -0:27:32.840,0:27:39.039 -here let me do the same thing - -0:27:36.240,0:27:41.200 -duplicate the line and type meta - -0:27:39.039,0:27:44.240 -uppercase j - -0:27:41.200,0:27:45.600 -then mat uppercase j converts that to a - -0:27:44.240,0:27:49.440 -defund that defines - -0:27:45.600,0:27:52.720 -a function with a very short name - -0:27:49.440,0:27:56.720 -and this function with a very short name - -0:27:52.720,0:27:59.360 -opens this file here in the directory - -0:27:56.720,0:28:01.360 -with the copy of the the git repository - -0:27:59.360,0:28:04.880 -for org mode - -0:28:01.360,0:28:04.880 -let me undo the mass again - -0:28:05.360,0:28:07.760 -oops - -0:28:09.120,0:28:11.679 -that's it - -0:28:14.640,0:28:21.279 -meta uppercase j is a - -0:28:17.760,0:28:24.559 -particular case of of something that - -0:28:21.279,0:28:25.279 -I use a lot in eevee I have if he has - -0:28:24.559,0:28:28.799 -lots of - -0:28:25.279,0:28:31.780 -comments that sorry key sequences - -0:28:28.799,0:28:33.200 -that are like meta uppercase letter and - -0:28:31.780,0:28:35.279 -[Music] - -0:28:33.200,0:28:37.279 -almost all of them operate on the - -0:28:35.279,0:28:38.880 -current line and transform the current - -0:28:37.279,0:28:42.000 -line in certain way - -0:28:38.880,0:28:45.360 -for example this is a file name - -0:28:42.000,0:28:48.640 -and if I type meta uppercase f here - -0:28:45.360,0:28:50.000 -it becomes a link to that file this is - -0:28:48.640,0:28:53.600 -the name of a month page - -0:28:50.000,0:28:55.760 -and if I type meta uppercase m here - -0:28:53.600,0:28:58.080 -it converts that to the link to a month - -0:28:55.760,0:29:01.679 -page and this is a shell command - -0:28:58.080,0:29:04.960 -and if I type meta uppercase s here - -0:29:01.679,0:29:08.720 -it converts that to a link to a - -0:29:04.960,0:29:11.919 -to find fan shell - -0:29:08.720,0:29:12.960 -and until a few years ago these - -0:29:11.919,0:29:16.159 -functions - -0:29:12.960,0:29:18.080 -with matter uppercase letter were half - -0:29:16.159,0:29:18.880 -of my main ways of creating sex - -0:29:18.080,0:29:21.039 -hyperlinks - -0:29:18.880,0:29:22.399 -with few key strokes in the beginning of - -0:29:21.039,0:29:25.600 -course I had to create my - -0:29:22.399,0:29:28.640 -sex pipelines by typing each character - -0:29:25.600,0:29:31.520 -but uh after some time and decided that - -0:29:28.640,0:29:34.559 -I needed something more efficient - -0:29:31.520,0:29:34.960 -so this is end of part one of the two of - -0:29:34.559,0:29:37.760 -the - -0:29:34.960,0:29:37.760 -presentation - -0:29:38.480,0:29:41.760 -so this is part two of the presentation - -0:29:40.640,0:29:44.320 -and the main theme - -0:29:41.760,0:29:46.320 -here is the standard describe key - -0:29:44.320,0:29:49.200 -function that comes with the max - -0:29:46.320,0:29:50.960 -and my variant of it the thing is that - -0:29:49.200,0:29:53.120 -the standard described key in max - -0:29:50.960,0:29:55.600 -is user friendly but it is hacker - -0:29:53.120,0:29:58.559 -unfriendly well I felt so - -0:29:55.600,0:30:00.799 -and when I tried to complement it by by - -0:29:58.559,0:30:03.120 -writing a hacker friendly version of it - -0:30:00.799,0:30:03.919 -that produced the sex hyperlinks that I - -0:30:03.120,0:30:05.440 -needed - -0:30:03.919,0:30:07.039 -I got something that I found really - -0:30:05.440,0:30:09.679 -lovely and - -0:30:07.039,0:30:12.480 -several of the main designs design - -0:30:09.679,0:30:14.320 -decisions of eev can be seen there - -0:30:12.480,0:30:15.520 -but when I showed my variants to other - -0:30:14.320,0:30:17.760 -people they hated it - -0:30:15.520,0:30:19.360 -they felt that it was totally against - -0:30:17.760,0:30:23.440 -their notions of - -0:30:19.360,0:30:25.760 -user friendliness - -0:30:23.440,0:30:26.799 -okay so let's see the standard describe - -0:30:25.760,0:30:30.159 -key if I run - -0:30:26.799,0:30:32.399 -this hyperlink here I get - -0:30:30.159,0:30:34.399 -this the result of running the scribe - -0:30:32.399,0:30:36.399 -key on the key down - -0:30:34.399,0:30:38.080 -and this is a big buffer with some - -0:30:36.399,0:30:41.360 -things in italics - -0:30:38.080,0:30:43.120 -and some hyperlinks here these - -0:30:41.360,0:30:43.679 -hyperlinks are standard in the sense - -0:30:43.120,0:30:46.240 -that - -0:30:43.679,0:30:47.760 -the targets are not visible and they are - -0:30:46.240,0:30:50.799 -implemented using - -0:30:47.760,0:30:51.200 -buttons in a max lisp this section of - -0:30:50.799,0:30:53.919 -the - -0:30:51.200,0:30:56.240 -mx list manual describes how buttons - -0:30:53.919,0:30:56.240 -work - -0:30:56.799,0:31:03.440 -and the the source code is - -0:31:00.640,0:31:04.240 -quite difficult I mean when I was - -0:31:03.440,0:31:06.559 -starting to - -0:31:04.240,0:31:07.600 -to try to decipher this when I was a - -0:31:06.559,0:31:11.200 -beginner - -0:31:07.600,0:31:12.320 -using max 19.34 I felt that this - -0:31:11.200,0:31:15.519 -described key was - -0:31:12.320,0:31:20.080 -very difficult to understand uh - -0:31:15.519,0:31:22.640 -and I felt that the the designers the - -0:31:20.080,0:31:23.679 -the people who wrote it were sacrificing - -0:31:22.640,0:31:26.159 -too much of the - -0:31:23.679,0:31:30.000 -hacker friendliness that I was expecting - -0:31:26.159,0:31:30.000 -from it to make it beginner friendly - -0:31:31.279,0:31:34.799 -let me explain what are the the problems - -0:31:33.600,0:31:36.559 -with the standard - -0:31:34.799,0:31:38.640 -the describe key if we think that - -0:31:36.559,0:31:41.600 -hyperlinks are things like this - -0:31:38.640,0:31:43.600 -with the target and the text then in the - -0:31:41.600,0:31:47.120 -button hyperlinks of describe key - -0:31:43.600,0:31:49.120 -this three bad things happen first - -0:31:47.120,0:31:51.200 -it is hard to extract the target from - -0:31:49.120,0:31:52.000 -the hyperlink second it is hard to - -0:31:51.200,0:31:54.480 -recreate - -0:31:52.000,0:31:55.440 -a list of code that would go to that - -0:31:54.480,0:31:57.519 -target - -0:31:55.440,0:31:59.840 -and third it is hard to copy the full - -0:31:57.519,0:32:00.640 -hyperlink including the targets to other - -0:31:59.840,0:32:04.399 -buffers - -0:32:00.640,0:32:04.399 -I only knew how to copy the text - -0:32:04.960,0:32:09.039 -when I was trying to decipher what - -0:32:07.279,0:32:11.679 -described key was doing - -0:32:09.039,0:32:12.159 -I created lots of hyperlinks like this - -0:32:11.679,0:32:14.960 -to - -0:32:12.159,0:32:16.159 -inspect the text properties and things - -0:32:14.960,0:32:18.480 -like that - -0:32:16.159,0:32:20.000 -for example in the description of the - -0:32:18.480,0:32:23.600 -key down - -0:32:20.000,0:32:26.559 -here we have a button that points to - -0:32:23.600,0:32:26.559 -simple dotel - -0:32:26.799,0:32:31.600 -the text of that button is simple.l this - -0:32:29.679,0:32:34.320 -hyperlinks goes to the - -0:32:31.600,0:32:35.519 -to the middle of this button hyperlink - -0:32:34.320,0:32:39.120 -here - -0:32:35.519,0:32:41.919 -uh this hyperlink here - -0:32:39.120,0:32:43.279 -goes to the middle of the button of this - -0:32:41.919,0:32:46.240 -button hyperlink - -0:32:43.279,0:32:47.679 -and then inspects its text properties - -0:32:46.240,0:32:51.679 -and then goes to - -0:32:47.679,0:32:53.679 -this section here of the description - -0:32:51.679,0:32:56.159 -so this is a high level description of - -0:32:53.679,0:32:58.000 -the text properties - -0:32:56.159,0:33:00.000 -I mean the text properties that make it - -0:32:58.000,0:33:02.480 -a button and this is a - -0:33:00.000,0:33:04.320 -lower level description of the these - -0:33:02.480,0:33:08.000 -text properties - -0:33:04.320,0:33:11.440 -and the button that points to - -0:33:08.000,0:33:11.919 -forward line sorry the the button that - -0:33:11.440,0:33:14.399 -whose - -0:33:11.919,0:33:16.480 -text is forward line this one is - -0:33:14.399,0:33:19.039 -slightly different - -0:33:16.480,0:33:21.200 -this hyperlink here goes to the middle - -0:33:19.039,0:33:24.559 -of that button - -0:33:21.200,0:33:25.760 -and this hyperlink goes to the mid to - -0:33:24.559,0:33:28.559 -the middle of that button - -0:33:25.760,0:33:29.360 -inspects its text properties and go to - -0:33:28.559,0:33:32.559 -the section - -0:33:29.360,0:33:35.760 -of this button of this help - -0:33:32.559,0:33:36.399 -uh buffer here that describe the the - -0:33:35.760,0:33:39.120 -button - -0:33:36.399,0:33:41.679 -and the lower level view of the text - -0:33:39.120,0:33:45.519 -properties - -0:33:41.679,0:33:47.519 -so I started to with things like this - -0:33:45.519,0:33:50.159 -to understand what these buttons were - -0:33:47.519,0:33:50.960 -doing and I was able to figure out how - -0:33:50.159,0:33:53.120 -these things are - -0:33:50.960,0:33:55.519 -implemented and describe key and then - -0:33:53.120,0:33:57.760 -similar help functions in max - -0:33:55.519,0:34:00.000 -and I discovered that one of the main - -0:33:57.760,0:34:01.360 -lower level functions that a max used - -0:34:00.000,0:34:04.080 -for this - -0:34:01.360,0:34:05.279 -is a function called find function no - -0:34:04.080,0:34:08.240 -select - -0:34:05.279,0:34:09.929 -if I run find function no select on next - -0:34:08.240,0:34:11.200 -line - -0:34:09.929,0:34:14.240 -[Music] - -0:34:11.200,0:34:18.079 -it returns a pair - -0:34:14.240,0:34:20.560 -a cons made of a buffer and a position - -0:34:18.079,0:34:21.679 -so I created functions that would that - -0:34:20.560,0:34:24.320 -would - -0:34:21.679,0:34:25.119 -uh follow this that would open that - -0:34:24.320,0:34:28.320 -buffer - -0:34:25.119,0:34:29.679 -in that position and then this is a - -0:34:28.320,0:34:31.679 -postback list - -0:34:29.679,0:34:33.919 -so we could go to these positions and - -0:34:31.679,0:34:36.000 -then search for this string and another - -0:34:33.919,0:34:40.320 -string and another string and so on - -0:34:36.000,0:34:41.040 -so this goes to the definition of find a - -0:34:40.320,0:34:44.159 -function - -0:34:41.040,0:34:47.919 -and then to a to a string - -0:34:44.159,0:34:49.040 -after it and I use these things to - -0:34:47.919,0:34:51.839 -implement my own - -0:34:49.040,0:34:52.960 -functions that pointed to the same the - -0:34:51.839,0:34:55.440 -same targets - -0:34:52.960,0:34:57.679 -as the button hyperlinks and describe - -0:34:55.440,0:34:57.679 -key - -0:35:00.240,0:35:05.599 -again let me show the comparison this is - -0:35:03.200,0:35:10.480 -the standard describe key - -0:35:05.599,0:35:13.839 -here and this is my variant - -0:35:10.480,0:35:17.680 -uh it creates a buffer with links - -0:35:13.839,0:35:20.960 -with the list hyperlinks about this key - -0:35:17.680,0:35:22.960 -we get this so each one of these - -0:35:20.960,0:35:27.280 -functions is either a blank line - -0:35:22.960,0:35:27.280 -or a or an ellipse hyperlink - -0:35:28.720,0:35:32.880 -here is a slight variant of the of the - -0:35:31.760,0:35:35.920 -function - -0:35:32.880,0:35:38.079 -find e key links above in this variant - -0:35:35.920,0:35:39.280 -the argument is a string that has to be - -0:35:38.079,0:35:42.400 -processed by - -0:35:39.280,0:35:45.280 -read cbd macro to convert it to the - -0:35:42.400,0:35:48.160 -lower level format - -0:35:45.280,0:35:49.040 -and note that these functions here that - -0:35:48.160,0:35:51.440 -I wrote - -0:35:49.040,0:35:53.599 -they display temporary buffers with no - -0:35:51.440,0:35:57.359 -help at all - -0:35:53.599,0:35:58.560 -uh to be honest there's a link to a - -0:35:57.359,0:36:01.680 -tutorial here but - -0:35:58.560,0:36:03.200 -this is a recent edition so let's ignore - -0:36:01.680,0:36:06.640 -this - -0:36:03.200,0:36:08.320 -uh they they display temporary buffers - -0:36:06.640,0:36:09.520 -with no help at all just lots of - -0:36:08.320,0:36:11.599 -hyperlinks - -0:36:09.520,0:36:13.359 -and these hyperlinks can be they are - -0:36:11.599,0:36:15.040 -very hacker friendly in the sense that - -0:36:13.359,0:36:17.520 -they can be followed with - -0:36:15.040,0:36:19.920 -metae they can be copied to other - -0:36:17.520,0:36:23.680 -buffers because they are plain text - -0:36:19.920,0:36:26.240 -because they are just sex - -0:36:23.680,0:36:28.000 -and they can be inspected in the sense - -0:36:26.240,0:36:31.280 -that - -0:36:28.000,0:36:31.280 -for example here - -0:36:32.400,0:36:35.520 -we have a hyperlink to a function that - -0:36:34.079,0:36:37.599 -we - -0:36:35.520,0:36:39.200 -it may be difficult to figure out what - -0:36:37.599,0:36:42.320 -this function does - -0:36:39.200,0:36:45.839 -but we can go to that position and then - -0:36:42.320,0:36:48.240 -type ctrl h f to see the descript - -0:36:45.839,0:36:52.400 -description of this function - -0:36:48.240,0:36:53.890 -and here is a hyperlink to - -0:36:52.400,0:36:56.000 -the does that - -0:36:53.890,0:36:59.920 -[Music] - -0:36:56.000,0:36:59.920 -in my syntax say - -0:37:00.160,0:37:04.480 -and this list of hyperlinks were - -0:37:02.800,0:37:08.000 -generated by - -0:37:04.480,0:37:11.119 -this code here that just just uh - -0:37:08.000,0:37:14.320 -used a back quote to to generate - -0:37:11.119,0:37:14.320 -lists of sex - -0:37:14.640,0:37:21.040 -and I I felt that this function here - -0:37:18.240,0:37:22.160 -uh that just generated this list was - -0:37:21.040,0:37:24.960 -very easy to understand - -0:37:22.160,0:37:28.480 -and to modify so this was hacker - -0:37:24.960,0:37:31.599 -friendly in the way that I wanted - -0:37:28.480,0:37:34.079 -and so I started using this - -0:37:31.599,0:37:36.800 -and this idea of using buffers with sex - -0:37:34.079,0:37:38.720 -fiber links and no help violated - -0:37:36.800,0:37:40.079 -all the notions of user friendliness - -0:37:38.720,0:37:42.000 -that I knew so I was - -0:37:40.079,0:37:46.160 -exploring some something new at that - -0:37:42.000,0:37:49.359 -time and this is the end of part two - -0:37:46.160,0:37:52.240 -part three of this presentation is uh - -0:37:49.359,0:37:54.800 -about the killer features of ev or why - -0:37:52.240,0:37:57.920 -everybody should use av or at least have - -0:37:54.800,0:37:59.280 -eev installed even if they think the tv - -0:37:57.920,0:38:01.440 -is too weird - -0:37:59.280,0:38:03.440 -so this is a very quick listing eevee - -0:38:01.440,0:38:04.240 -has lease hyperlinks which are super - -0:38:03.440,0:38:06.560 -nice - -0:38:04.240,0:38:07.599 -it comes with lots of tutorials the main - -0:38:06.560,0:38:10.800 -one here - -0:38:07.599,0:38:14.079 -explains all the main features - -0:38:10.800,0:38:15.040 -uh there's also a tutorial with that's - -0:38:14.079,0:38:18.079 -an index of - -0:38:15.040,0:38:21.680 -all the other tutorials here - -0:38:18.079,0:38:24.079 -many many many tutorials uh if we forget - -0:38:21.680,0:38:27.280 -everything we can just type meta j - -0:38:24.079,0:38:28.880 -and remember that this this part here is - -0:38:27.280,0:38:30.839 -beginner friendly and the rest is - -0:38:28.880,0:38:32.960 -beginner - -0:38:30.839,0:38:38.079 -unfriendly - -0:38:32.960,0:38:38.079 -there's a tutorial on max list here - -0:38:38.320,0:38:44.640 -it mainly explains how to understand - -0:38:41.920,0:38:46.320 -a lisp code which is much easier than - -0:38:44.640,0:38:47.040 -it's much easier to understand the lisp - -0:38:46.320,0:38:48.800 -code and - -0:38:47.040,0:38:50.160 -then to understand how to program in a - -0:38:48.800,0:38:53.440 -lisp and - -0:38:50.160,0:38:55.920 -most people are only going to need this - -0:38:53.440,0:38:58.240 -uh ev is very easy to install it's in - -0:38:55.920,0:39:00.560 -helper so we just need to do - -0:38:58.240,0:39:03.440 -this thing here and it's very - -0:39:00.560,0:39:03.440 -non-invasive - -0:39:03.520,0:39:08.000 -uh years ago several years ago it was a - -0:39:06.079,0:39:08.960 -very invasive package but then I changed - -0:39:08.000,0:39:13.520 -everything - -0:39:08.960,0:39:16.640 -now uh if we toggle ev mode on and off - -0:39:13.520,0:39:20.000 -what's going to happen is just that the - -0:39:16.640,0:39:21.599 -evk map key map becomes activated or - -0:39:20.000,0:39:24.720 -deactivated - -0:39:21.599,0:39:28.320 -and when we install the evita - -0:39:24.720,0:39:28.640 -I mean when we require the only things - -0:39:28.320,0:39:32.640 -that - -0:39:28.640,0:39:34.480 -happens globally distance here - -0:39:32.640,0:39:36.240 -several functions and variables become - -0:39:34.480,0:39:40.079 -defined all of them have - -0:39:36.240,0:39:43.040 -standard prefixes except for one - -0:39:40.079,0:39:44.480 -three characters are changed in the - -0:39:43.040,0:39:48.640 -standard display table - -0:39:44.480,0:39:52.079 -to make them appear as colored glyphs - -0:39:48.640,0:39:54.160 -the red star and two and the open - -0:39:52.079,0:39:57.839 -double angle brackets and the closed - -0:39:54.160,0:39:57.839 -double angle brackets - -0:39:58.160,0:40:04.560 -and two environment variables are set - -0:40:01.359,0:40:07.599 -and this is a trivial technicality - -0:40:04.560,0:40:10.160 -we just run a def advice - -0:40:07.599,0:40:10.800 -around one function that that is used by - -0:40:10.160,0:40:14.240 -man - -0:40:10.800,0:40:16.720 -justice also - -0:40:14.240,0:40:18.400 -eevee has a very high discoverability - -0:40:16.720,0:40:21.839 -factor - -0:40:18.400,0:40:25.200 -and there's a way to create a very easy - -0:40:21.839,0:40:27.760 -way to create a hyperlink to here - -0:40:25.200,0:40:29.760 -uh I do not have time to show this now - -0:40:27.760,0:40:32.960 -but for example if I'm - -0:40:29.760,0:40:34.480 -here in a tutorial and I think that that - -0:40:32.960,0:40:36.240 -this - -0:40:34.480,0:40:39.520 -section is something interesting and I - -0:40:36.240,0:40:41.200 -want to create a hyperlink to it - -0:40:39.520,0:40:43.040 -I just have to type a certain key - -0:40:41.200,0:40:46.800 -sequence here - -0:40:43.040,0:40:50.400 -and here I got a hyperlink that I can - -0:40:46.800,0:40:52.260 -copy to my notes and this hyperlink goes - -0:40:50.400,0:40:58.240 -to that section - -0:40:52.260,0:41:00.720 -[Music] - -0:40:58.240,0:41:02.319 -we have hyperlinks that point to - -0:41:00.720,0:41:05.839 -specific positions in - -0:41:02.319,0:41:09.119 -pdf documents and nvidia files here - -0:41:05.839,0:41:09.680 -this one opens a pdf and displays it - -0:41:09.119,0:41:13.920 -this one - -0:41:09.680,0:41:16.720 -opens a pdf and converts it to text - -0:41:13.920,0:41:18.400 -and this one opens the video in a - -0:41:16.720,0:41:20.480 -certain position - -0:41:18.400,0:41:22.079 -and we also have a way to control - -0:41:20.480,0:41:25.280 -shell-like programs - -0:41:22.079,0:41:27.440 -uh in my presentation of the last year I - -0:41:25.280,0:41:29.520 -spent one third of the presentation - -0:41:27.440,0:41:31.839 -explaining this and I think that I gave - -0:41:29.520,0:41:35.680 -a very good demonstration there - -0:41:31.839,0:41:38.800 -the demonstration is here - -0:41:35.680,0:41:41.839 -we can go to the web page and go to - -0:41:38.800,0:41:45.440 -this section of the web page - -0:41:41.839,0:41:45.440 -and start by this point - -0:41:47.680,0:41:54.079 -and here we have an explanation and so - -0:41:51.440,0:41:54.079 -on whatever - -0:41:55.920,0:41:59.200 -and I've already mentioned this before - -0:41:58.720,0:42:01.119 -uh - -0:41:59.200,0:42:02.240 -eevee comes with a very nice elise - -0:42:01.119,0:42:04.240 -tutorial - -0:42:02.240,0:42:05.599 -so that's it this is the end of part - -0:42:04.240,0:42:07.359 -three - -0:42:05.599,0:42:09.839 -so this is the last part of my - -0:42:07.359,0:42:10.160 -presentation and it's about the title of - -0:42:09.839,0:42:11.839 -the - -0:42:10.160,0:42:13.599 -the presentation I called the - -0:42:11.839,0:42:16.560 -presentation why - -0:42:13.599,0:42:16.960 -most of the best features in eevee look - -0:42:16.560,0:42:20.480 -like - -0:42:16.960,0:42:20.960 -like five minute hacks uh I've already - -0:42:20.480,0:42:23.920 -run off - -0:42:20.960,0:42:24.800 -out of time so I have to to skip this - -0:42:23.920,0:42:28.720 -first - -0:42:24.800,0:42:31.280 -part here in which I describe how I - -0:42:28.720,0:42:33.440 -was exposed to several different notions - -0:42:31.280,0:42:35.920 -of user friendliness - -0:42:33.440,0:42:37.119 -and how the one that really blew my mind - -0:42:35.920,0:42:41.680 -was the one in - -0:42:37.119,0:42:44.160 -in a certain uh fought environment - -0:42:41.680,0:42:46.560 -uh and let me make the long long story - -0:42:44.160,0:42:49.280 -very very short - -0:42:46.560,0:42:49.680 -uh in all this process I switched from - -0:42:49.280,0:42:52.079 -from - -0:42:49.680,0:42:52.960 -the belief that the user was always - -0:42:52.079,0:42:55.359 -someone else - -0:42:52.960,0:42:57.040 -someone external and that that I always - -0:42:55.359,0:43:00.079 -had to write my programs for - -0:42:57.040,0:43:02.240 -this external user I switched - -0:43:00.079,0:43:03.200 -from from that to the belief that I am - -0:43:02.240,0:43:05.839 -the user - -0:43:03.200,0:43:07.040 -and I can play with the interface that I - -0:43:05.839,0:43:10.079 -want I can - -0:43:07.040,0:43:12.079 -write programs which that - -0:43:10.079,0:43:14.240 -that only I am going to understand I can - -0:43:12.079,0:43:16.079 -experiment with hundreds of interfaces - -0:43:14.240,0:43:18.720 -and then select the best ones - -0:43:16.079,0:43:20.960 -and document them and then share them - -0:43:18.720,0:43:23.520 -with other people - -0:43:20.960,0:43:24.720 -who are also experimenting with - -0:43:23.520,0:43:28.880 -interfaces in their - -0:43:24.720,0:43:31.119 -own ways and so eevee has - -0:43:28.880,0:43:33.440 -lots of things that are user-friendly in - -0:43:31.119,0:43:34.880 -these unusual ways that I've explained - -0:43:33.440,0:43:37.760 -before - -0:43:34.880,0:43:40.319 -and uh and if we disconsider that this - -0:43:37.760,0:43:44.079 -notion of user friendliness is valid - -0:43:40.319,0:43:45.119 -then this implement these things that av - -0:43:44.079,0:43:47.280 -implement they are - -0:43:45.119,0:43:48.800 -user friendly and hacker friendly at the - -0:43:47.280,0:43:51.119 -same time - -0:43:48.800,0:43:51.920 -and let me show one example this is one - -0:43:51.119,0:43:54.640 -this is - -0:43:51.920,0:43:56.640 -one that really took me one only five - -0:43:54.640,0:43:59.599 -minutes to implement - -0:43:56.640,0:44:00.640 -uh at one point a few months ago I - -0:43:59.599,0:44:04.240 -discovered - -0:44:00.640,0:44:05.599 -that sasha chewer's weekly posts about - -0:44:04.240,0:44:08.800 -the max news - -0:44:05.599,0:44:11.440 -had uh were also being posted to a - -0:44:08.800,0:44:14.800 -mailing list that is stored at - -0:44:11.440,0:44:16.319 -lists.we know.org and it's called max - -0:44:14.800,0:44:19.280 -dungeons - -0:44:16.319,0:44:19.760 -uh and I just and I found a way to - -0:44:19.280,0:44:25.440 -create - -0:44:19.760,0:44:28.400 -the links to to the posts in both places - -0:44:25.440,0:44:30.640 -but I had to use a template for that so - -0:44:28.400,0:44:32.560 -what we are seeing here now - -0:44:30.640,0:44:36.640 -is a template with the the default - -0:44:32.560,0:44:39.359 -values so this means that we have not uh - -0:44:36.640,0:44:40.720 -set the year correctly we have not set - -0:44:39.359,0:44:44.240 -the month correctly - -0:44:40.720,0:44:44.720 -or the day correctly but if we run this - -0:44:44.240,0:44:48.960 -text - -0:44:44.720,0:44:53.359 -here uh let me do something else before - -0:44:48.960,0:44:57.280 -if we run this text here - -0:44:53.359,0:45:00.240 -which we change some of these - -0:44:57.280,0:45:00.240 -entries in the - -0:45:00.880,0:45:05.200 -in the template and we get these links - -0:45:04.400,0:45:09.119 -here - -0:45:05.200,0:45:12.160 -they all work for example this one opens - -0:45:09.119,0:45:12.800 -uh the blog post in in session sasha - -0:45:12.160,0:45:16.000 -chewers - -0:45:12.800,0:45:21.280 -site and this one - -0:45:16.000,0:45:23.440 -opens it in the mailing list - -0:45:21.280,0:45:25.760 -and sometimes I want the org source of - -0:45:23.440,0:45:27.280 -that and the easiest way to get the word - -0:45:25.760,0:45:30.480 -source is to - -0:45:27.280,0:45:31.680 -look at this link here that has an - -0:45:30.480,0:45:35.040 -attachment - -0:45:31.680,0:45:38.560 -and if I take this - -0:45:35.040,0:45:42.319 -link here and I take this - -0:45:38.560,0:45:44.480 -stem that points to to the attachment - -0:45:42.319,0:45:45.440 -and I put it here and I generate this - -0:45:44.480,0:45:49.119 -page again - -0:45:45.440,0:45:50.000 -with all this data then I get a script - -0:45:49.119,0:45:53.359 -here - -0:45:50.000,0:45:54.640 -that downloads let me switch to a - -0:45:53.359,0:45:58.160 -smaller font - -0:45:54.640,0:46:00.960 -it downloads this attachment - -0:45:58.160,0:46:01.599 -and it renames that attachment to - -0:46:00.960,0:46:06.000 -something - -0:46:01.599,0:46:10.720 -dot slash nx news sorry some things - -0:46:06.000,0:46:15.119 -uh iphone mx news hyphen - -0:46:10.720,0:46:17.599 -something mxnews.org here - -0:46:15.119,0:46:18.400 -the file is already here already with - -0:46:17.599,0:46:21.359 -the right name - -0:46:18.400,0:46:22.079 -so I can open it with just this - -0:46:21.359,0:46:23.780 -hyperlink - -0:46:22.079,0:46:25.200 -let me go to the big font again - -0:46:23.780,0:46:28.079 -[Music] - -0:46:25.200,0:46:29.280 -and now I have the work source for that - -0:46:28.079,0:46:32.720 -hyperlink - -0:46:29.280,0:46:32.720 -sorry for that blog post - -0:46:33.839,0:46:40.960 -and so this one line thing - -0:46:37.040,0:46:43.920 -here is in a sense - -0:46:40.960,0:46:45.119 -a a to to this blog post in all its - -0:46:43.920,0:46:48.640 -formats - -0:46:45.119,0:46:52.000 -uh if I execute this I get links to - -0:46:48.640,0:46:54.400 -to all the places where it is posted - -0:46:52.000,0:46:56.000 -and I get a hype and I get a script to - -0:46:54.400,0:47:00.480 -download the local copy - -0:46:56.000,0:47:03.200 -of the org source of it and that's it - -0:47:00.480,0:47:04.480 -well I'm already out of time so let me - -0:47:03.200,0:47:10.079 -finish here - -0:47:04.480,0:47:10.079 -thanks bye - -- cgit v1.2.3