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