blob: e9bcd2255da02835deb38ca156fbed47c7889840 (
plain) (
tree)
|
|
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
|