WEBVTT
Kind: captions:
Language: en-GB

00:00:01.000 --> 00:00:03.000
Hi! My name is Eduardo Ochs

00:00:03.000 --> 00:00:06.000
and this video is about two things...

00:00:06.000 --> 00:00:09.000
first, it's about a way to configure

00:00:09.000 --> 00:00:14.000
eev - my Emacs package - on M$ Windows,

00:00:14.000 --> 00:00:16.000
and second, it's about magic, in a sense

00:00:16.000 --> 00:00:18.000
that I'm going to explain soon.

00:00:18.000 --> 00:00:21.000
There's a lot of information about eev

00:00:21.000 --> 00:00:24.000
in this link here, and a lot of

00:00:24.000 --> 00:00:26.000
information about this video in this

00:00:26.000 --> 00:00:29.000
other link.

00:00:29.000 --> 00:00:31.000
Let me start by explaining what I

00:00:31.000 --> 00:00:34.000
mean by configuring eev.

00:00:34.000 --> 00:00:37.000
Installing Emacs and eev is very easy

00:00:37.000 --> 00:00:38.000
even on Windows,

00:00:38.000 --> 00:00:41.000
but for more advanced usage eev needs

00:00:41.000 --> 00:00:44.000
to play videos, to display PDFs, and to

00:00:44.000 --> 00:00:46.000
download files... and so

00:00:46.000 --> 00:00:48.000
to make it all these things work we need

00:00:48.000 --> 00:00:50.000
to: download some things, configure some

00:00:50.000 --> 00:00:54.000
paths, and put some commands in the

00:00:54.000 --> 00:00:57.000
init file of Emacs, that is this one here:

00:00:57.000 --> 00:01:01.000
~/.emacs.

00:01:01.000 --> 00:01:03.000
Let me explain what is my target

00:01:03.000 --> 00:01:05.000
audience in this video

00:01:05.000 --> 00:01:09.000
It is mainly for beginners - I mean, for

00:01:09.000 --> 00:01:12.000
people who use Windows but they are

00:01:12.000 --> 00:01:16.000
not even programmers

00:01:16.000 --> 00:01:18.000
they know how to use a few programs but

00:01:18.000 --> 00:01:20.000
they don't even know how to

00:01:20.000 --> 00:01:22.000
use a terminal... they know how to open a

00:01:22.000 --> 00:01:24.000
terminal, but they don't know how to

00:01:24.000 --> 00:01:26.000
use it

00:01:26.000 --> 00:01:29.000
fluently or in a productive way.

00:01:29.000 --> 00:01:32.000
And my second target audience is people

00:01:32.000 --> 00:01:35.000
who have been using Emacs for

00:01:35.000 --> 00:01:37.000
years and who are interested in

00:01:37.000 --> 00:01:40.000
alternatives to the standard way of

00:01:40.000 --> 00:01:42.000
configuring things in Emacs, which is

00:01:42.000 --> 00:01:49.000
M-x customize.

00:01:49.000 --> 00:01:51.000
Let me now explain what is eev.

00:01:51.000 --> 00:02:00.000
One second...

00:02:00.000 --> 00:02:05.000
This expression here opens the

00:02:05.000 --> 00:02:07.000
slides of my presentation in the

00:02:07.000 --> 00:02:09.000
EmacsConf 2019.

00:02:09.000 --> 00:02:12.000
Let me show you some things there...

00:02:12.000 --> 00:02:14.000
the title of my presentation was: How to

00:02:14.000 --> 00:02:17.000
record executable notes with eev

00:02:17.000 --> 00:02:19.000
and how to play them back,

00:02:19.000 --> 00:02:21.000
and I started the presentation by

00:02:21.000 --> 00:02:24.000
explaining that I

00:02:24.000 --> 00:02:29.000
started using GNU/Linux and Emacs in 1995

00:02:29.000 --> 00:02:32.000
and I started using Emacs in a certain way

00:02:32.000 --> 00:02:35.000
and I was sure that everybody was

00:02:35.000 --> 00:02:37.000
using Emacs in that way, and that way

00:02:37.000 --> 00:02:40.000
became eev... so, in a sense eev appeared

00:02:40.000 --> 00:02:46.000
by accident.

00:02:46.000 --> 00:02:49.000
My current favorite slogan for explaining

00:02:49.000 --> 00:02:51.000
what is eev is: eev lets you record

00:02:51.000 --> 00:02:53.000
executable notes and lets you play them

00:02:53.000 --> 00:02:55.000
back -

00:02:55.000 --> 00:02:57.000
but for many people this doesn't make

00:02:57.000 --> 00:03:00.000
much sense... let me just enlarge this

00:03:00.000 --> 00:03:08.000
emoji - one second -

00:03:08.000 --> 00:03:10.000
These people they can understand what

00:03:10.000 --> 00:03:11.000
they [this slogan] means

00:03:11.000 --> 00:03:14.000
when I show a demo... for example here is a

00:03:14.000 --> 00:03:19.000
demo of

00:03:19.000 --> 00:03:22.000
me sending commands to an interpreter...

00:03:22.000 --> 00:03:25.000
to Maxima, which is a program -

00:03:25.000 --> 00:03:28.000
sorry - in this demo I

00:03:28.000 --> 00:03:31.000
sent some commands to a program

00:03:31.000 --> 00:03:33.000
called Maxima, that is a program for

00:03:33.000 --> 00:03:36.000
doing symbolic computations, graphics, and

00:03:36.000 --> 00:03:37.000
other things,

00:03:37.000 --> 00:03:40.000
and Maxima calls GNUPlot to draw some

00:03:40.000 --> 00:03:47.000
graphics and...

00:03:47.000 --> 00:03:51.000
so: here are my notes, I mean, the commands

00:03:51.000 --> 00:03:53.000
that I send to Maxima... and I just had to

00:03:53.000 --> 00:03:56.000
type f8 to make Emacs send this commands

00:03:56.000 --> 00:04:00.000
to Maxima.

00:04:00.000 --> 00:04:03.000
So: many people can understand how

00:04:03.000 --> 00:04:05.000
I do these things, but very few people

00:04:05.000 --> 00:04:08.000
use eev fluently enough to record

00:04:08.000 --> 00:04:11.000
executable notes of what they do.

00:04:11.000 --> 00:04:13.000
My older slogan

00:04:13.000 --> 00:04:16.000
was even more puzzling...

00:04:16.000 --> 00:04:19.000
I used to say that "eev is a tool for

00:04:19.000 --> 00:04:22.000
automating almost everything", and also

00:04:22.000 --> 00:04:24.000
very few people

00:04:24.000 --> 00:04:29.000
are using eev for automating their tasks -

00:04:29.000 --> 00:04:35.000
which is very sad.

00:04:35.000 --> 00:04:37.000
Let me explain the connection with

00:04:37.000 --> 00:04:42.000
Org Mode - one second -

00:04:42.000 --> 00:04:45.000
Org mode can also be used to record

00:04:45.000 --> 00:04:48.000
executable notes and to automate almost

00:04:48.000 --> 00:04:50.000
everything,

00:04:50.000 --> 00:04:52.000
the problem is that org mode is

00:04:52.000 --> 00:04:55.000
intuitive to many people and...

00:04:55.000 --> 00:04:58.000
to MANY people, let me stress this -

00:04:58.000 --> 00:05:02.000
and eev is intuitive to very, very,

00:05:02.000 --> 00:05:05.000
very few people, and Org Mode

00:05:05.000 --> 00:05:09.000
is "simple" in one certain way... it's

00:05:09.000 --> 00:05:12.000
a way that is related to what people

00:05:12.000 --> 00:05:15.000
called "user-friendliness" nowadays -

00:05:15.000 --> 00:05:17.000
and eev is simple in another, totally

00:05:17.000 --> 00:05:20.000
different, way, related to Lisp...

00:05:20.000 --> 00:05:22.000
people sometimes say that Lisp is very

00:05:22.000 --> 00:05:24.000
simple, and eev is simple in a way that is

00:05:24.000 --> 00:05:28.000
similar to how Lisp is simple...

00:05:28.000 --> 00:05:30.000
and, by the way, I find Org Mode very

00:05:30.000 --> 00:05:32.000
hard... for me eev is simple

00:05:32.000 --> 00:05:37.000
in a practical sense, and...

00:05:37.000 --> 00:05:39.000
well, I'm going to explain my problems

00:05:39.000 --> 00:05:44.000
with Org later, with examples.

00:05:44.000 --> 00:05:48.000
So: I decided to

00:05:48.000 --> 00:05:51.000
use a trick to make eev more popular

00:05:51.000 --> 00:05:53.000
and the trick is that people can use

00:05:53.000 --> 00:05:56.000
eev to learn both Emacs and Org Mode -

00:05:56.000 --> 00:05:58.000
so in this video eev is going to be

00:05:58.000 --> 00:06:01.000
something secondary, that people

00:06:01.000 --> 00:06:08.000
can use to learn both Emacs and Org Mode,

00:06:08.000 --> 00:06:11.000
and I'm going to show how we can

00:06:11.000 --> 00:06:15.000
use a certain series of videos

00:06:15.000 --> 00:06:17.000
about Org Mode, and how to index

00:06:17.000 --> 00:06:23.000
those videos to learn Org Mode.

00:06:23.000 --> 00:06:25.000
That's it - I'm recording this video in

00:06:25.000 --> 00:06:27.000
several parts,

00:06:27.000 --> 00:06:30.000
so this is the end of the first part. I'm

00:06:30.000 --> 00:06:32.000
going to record all the parts and then

00:06:32.000 --> 00:06:35.000
glue everything together.

00:06:35.000 --> 00:06:37.000
Let me now explain the basic

00:06:37.000 --> 00:06:39.000
installation in more details. I'm

00:06:39.000 --> 00:06:42.000
not going to show how to install Emacs,

00:06:42.000 --> 00:06:45.000
but once you have Emacs installed you just

00:06:45.000 --> 00:06:47.000
have to follow these steps here,

00:06:47.000 --> 00:06:49.000
and these steps are explained in many

00:06:49.000 --> 00:06:54.000
places... for example, this is the link to

00:06:54.000 --> 00:06:57.000
the material about eev in my home page...

00:06:57.000 --> 00:07:00.000
If you access my home page without this

00:07:00.000 --> 00:07:04.000
#eev you get this thing here, and if you

00:07:04.000 --> 00:07:07.000
access it with the #eev

00:07:07.000 --> 00:07:10.000
you go to this section...

00:07:10.000 --> 00:07:11.000
and note that

00:07:11.000 --> 00:07:14.000
here it says: "This video

00:07:14.000 --> 00:07:18.000
about installation, navigation, etc..."

00:07:18.000 --> 00:07:22.000
let me open this page in another tab -

00:07:22.000 --> 00:07:25.000
and here we have a list of tutorials,

00:07:25.000 --> 00:07:28.000
and let me open the first tutorial in

00:07:28.000 --> 00:07:33.000
another tab.

00:07:33.000 --> 00:07:35.000
Well,

00:07:35.000 --> 00:07:37.000
in Emacs we can access this tutorial by

00:07:37.000 --> 00:07:42.000
running this, so this is the tutorial

00:07:42.000 --> 00:07:44.000
inside Emacs...

00:07:44.000 --> 00:07:47.000
and this is the tutorial in the browser.

00:07:47.000 --> 00:07:50.000
Here we have some links,

00:07:50.000 --> 00:07:52.000
some instructions, and these things here

00:07:52.000 --> 00:07:55.000
are links to that video

00:07:55.000 --> 00:07:59.000
the "installation and navigation",

00:07:59.000 --> 00:08:04.000
"eevnav" - and these links here

00:08:04.000 --> 00:08:06.000
point to positions in the video, but if I

00:08:06.000 --> 00:08:10.000
access them by clicking on these links

00:08:10.000 --> 00:08:12.000
it takes ages to open this video because

00:08:12.000 --> 00:08:16.000
it has to open youtube...

00:08:16.000 --> 00:08:22.000
then it shows an ad, that I have to skip,

00:08:22.000 --> 00:08:24.000
then sometimes another ad, and then it

00:08:24.000 --> 00:08:32.000
plays the video...

00:08:32.000 --> 00:08:35.000
but if we have everything configured

00:08:35.000 --> 00:08:37.000
we can execute these things here -

00:08:37.000 --> 00:08:41.000
these elisp hyperlinks here -

00:08:41.000 --> 00:08:44.000
and they play the video in mpv

00:08:44.000 --> 00:08:47.000
in one second or two. So

00:08:47.000 --> 00:08:51.000
that's it -

00:08:51.000 --> 00:08:53.000
and we can also access the

00:08:53.000 --> 00:08:55.000
list of videos by typing

00:08:55.000 --> 00:09:04.000
M-x find-1stclassvideos...

00:09:04.000 --> 00:09:06.000
we get this listing here, and the video

00:09:06.000 --> 00:09:08.000
about installation and navigation

00:09:08.000 --> 00:09:12.000
is this one.

00:09:12.000 --> 00:09:16.000
And one very nice thing is that -

00:09:16.000 --> 00:09:19.000
sorry -

00:09:19.000 --> 00:09:22.000
when we access this video, here...

00:09:22.000 --> 00:09:24.000
we have a lot of information about the

00:09:24.000 --> 00:09:26.000
video...

00:09:26.000 --> 00:09:29.000
and here we have a link to a kind of

00:09:29.000 --> 00:09:30.000
index to the video...

00:09:30.000 --> 00:09:33.000
so if I execute this

00:09:33.000 --> 00:09:38.000
I go to an index, that is made

00:09:38.000 --> 00:09:41.000
of a series of sexps like this

00:09:41.000 --> 00:09:45.000
this, and I can execute

00:09:45.000 --> 00:09:48.000
one of these sexps by just

00:09:48.000 --> 00:09:53.000
typing M-e on it

00:09:53.000 --> 00:09:55.000
but of course this is only going to work

00:09:55.000 --> 00:09:59.000
if we have the video player configured.

00:09:59.000 --> 00:10:06.000
Let me close everything...

00:10:06.000 --> 00:10:09.000
And configuring the video player is part

00:10:09.000 --> 00:10:12.000
of the "non-basic installation", or the

00:10:12.000 --> 00:10:15.000
"configuration" of eev.

00:10:15.000 --> 00:10:17.000
In principle what we have to do is to

00:10:17.000 --> 00:10:21.000
install mpv - a certain video player -

00:10:21.000 --> 00:10:24.000
then we have to configure the paths

00:10:24.000 --> 00:10:27.000
to the browser, that by default

00:10:27.000 --> 00:10:29.000
is google chrome, and to mpv,

00:10:29.000 --> 00:10:31.000
and then we have to download

00:10:31.000 --> 00:10:34.000
all these things here, that people

00:10:34.000 --> 00:10:37.000
who use windows have never heard about...

00:10:37.000 --> 00:10:39.000
And then we have to configure a few

00:10:39.000 --> 00:10:41.000
other things, some easier to understand

00:10:41.000 --> 00:10:45.000
and some very mysterious...

00:10:45.000 --> 00:10:49.000
Anyway, let me show why we need wget,

00:10:49.000 --> 00:10:51.000
that is a program that downloads things

00:10:51.000 --> 00:10:55.000
from the internet.

00:10:55.000 --> 00:10:58.000
Note that if I just execute this

00:10:58.000 --> 00:11:02.000
I play a video with mpv -

00:11:02.000 --> 00:11:04.000
but I'm going to run a hack here that

00:11:04.000 --> 00:11:06.000
hides all the videos

00:11:06.000 --> 00:11:10.000
that I have downloaded,

00:11:10.000 --> 00:11:13.000
and now if I try to play this video

00:11:13.000 --> 00:11:16.000
eev is going to say that...

00:11:16.000 --> 00:11:18.000
it's going to show me

00:11:18.000 --> 00:11:20.000
all these things here...

00:11:20.000 --> 00:11:24.000
If I don't understand them I can

00:11:24.000 --> 00:11:27.000
follow these things here

00:11:27.000 --> 00:11:29.000
to go to the tutorials

00:11:29.000 --> 00:11:32.000
to understand what this other stuff

00:11:32.000 --> 00:11:35.000
means...

00:11:35.000 --> 00:11:39.000
So, this part here downloads

00:11:39.000 --> 00:11:42.000
some local copies of files from

00:11:42.000 --> 00:11:43.000
the internet...

00:11:43.000 --> 00:11:46.000
this is explained in this tutorial...

00:11:46.000 --> 00:11:49.000
note that this link goes to the

00:11:49.000 --> 00:11:51.000
section 1 of the tutorial, that is

00:11:51.000 --> 00:11:53.000
called "Local copies of files from the

00:11:53.000 --> 00:11:55.000
internet"...

00:11:55.000 --> 00:11:57.000
and this is also explained

00:11:57.000 --> 00:11:59.000
in another tutorial in a way

00:11:59.000 --> 00:12:02.000
that is more specific to videos,

00:12:02.000 --> 00:12:05.000
and we also have this section

00:12:05.000 --> 00:12:07.000
here that explains

00:12:07.000 --> 00:12:11.000
that some videos have subtitles -

00:12:11.000 --> 00:12:12.000
here -

00:12:12.000 --> 00:12:15.000
and explains the functions of eev

00:12:15.000 --> 00:12:20.000
that downloads videos with subtitles.

00:12:20.000 --> 00:12:22.000
This video in particular, which is a

00:12:22.000 --> 00:12:25.000
video for my presentation at the

00:12:25.000 --> 00:12:28.000
EmacsConf 2021, it has subtitles.

00:12:28.000 --> 00:12:31.000
if I execute these things with - oops,

00:12:31.000 --> 00:12:34.000
let me switch to smaller font - if I

00:12:34.000 --> 00:12:39.000
execute these things with f8, then

00:12:39.000 --> 00:12:43.000
the f8s create a shell buffer here...

00:12:43.000 --> 00:12:44.000
a shell running inside Emacs,

00:12:44.000 --> 00:12:48.000
inside an Emacs window...

00:12:48.000 --> 00:12:50.000
and if I type f8 in these lines here

00:12:50.000 --> 00:12:52.000
they are sent to the shell...

00:12:52.000 --> 00:12:56.000
the shell executes these things here,

00:12:56.000 --> 00:13:00.000
and this wget here downloads

00:13:00.000 --> 00:13:02.000
a copy of this file from the internet

00:13:02.000 --> 00:13:04.000
and puts it in this directory...

00:13:04.000 --> 00:13:06.000
and this other wget downloads the

00:13:06.000 --> 00:13:09.000
subtitles for the video...

00:13:09.000 --> 00:13:09.000
so: the .mp4 is the video itself,

00:13:09.000 --> 00:13:12.000
the .vtt is the subtitles of the video,

00:13:12.000 --> 00:13:14.000
and these things here just register

00:13:14.000 --> 00:13:18.000
in a certain log file

00:13:18.000 --> 00:13:20.000
what we have downloaded.

00:13:20.000 --> 00:13:22.000
And now that we have a local copy

00:13:22.000 --> 00:13:26.000
of the video, this sexp here

00:13:26.000 --> 00:13:30.000
opens this directory and goes to the line

00:13:30.000 --> 00:13:36.000
in which this file here is...

00:13:36.000 --> 00:13:39.000
this sexp here, that starts with

00:13:39.000 --> 00:13:40.000
find-video,

00:13:40.000 --> 00:13:42.000
plays the video...

00:13:42.000 --> 00:13:44.000
it works as a test -

00:13:44.000 --> 00:13:47.000
it plays it from the beginning - and note

00:13:47.000 --> 00:13:48.000
that it plays the video with the

00:13:48.000 --> 00:13:51.000
subtitles...

00:13:51.000 --> 00:13:54.000
and this other sexp is equivalent

00:13:54.000 --> 00:13:56.000
to the other one.

00:13:56.000 --> 00:14:00.000
And these other two sexps are

00:14:00.000 --> 00:14:03.000
higher-level ways of

00:14:03.000 --> 00:14:06.000
playing the same video...

00:14:06.000 --> 00:14:08.000
this thing here plays

00:14:08.000 --> 00:14:14.000
the "first class video" whose

00:14:14.000 --> 00:14:17.000
"code" is this "eev2021" -

00:14:17.000 --> 00:14:19.000
so: same thing as before,

00:14:19.000 --> 00:14:21.000
and this thing is the same thing

00:14:21.000 --> 00:14:23.000
as this one,

00:14:23.000 --> 00:14:27.000
but in an even shorter form.

00:14:27.000 --> 00:14:32.000
And for people who haven't

00:14:32.000 --> 00:14:36.000
configured the video player - mpv -

00:14:36.000 --> 00:14:39.000
they can still access the video by using

00:14:39.000 --> 00:14:42.000
this url here.

00:14:42.000 --> 00:14:45.000
Let me do something

00:14:45.000 --> 00:14:48.000
even more hackish...

00:14:48.000 --> 00:14:51.000
if I change this timestamp here to

00:14:51.000 --> 00:14:54.000
2:34 and I execute this sexp again

00:14:54.000 --> 00:14:57.000
it regenerates this buffer,

00:14:57.000 --> 00:14:59.000
and it changes these timestamps here

00:14:59.000 --> 00:15:05.000
to 2:34.

00:15:05.000 --> 00:15:07.000
That's it... and note that

00:15:07.000 --> 00:15:11.000
this url here has also changed...

00:15:11.000 --> 00:15:13.000
and if I open this url in the browser

00:15:13.000 --> 00:15:17.000
it plays this video in the browser,

00:15:17.000 --> 00:15:22.000
but it takes a long time...

00:15:22.000 --> 00:15:24.000
in this case it didn't play an ad

00:15:24.000 --> 00:15:29.000
before, but anyway, it takes ages -

00:15:29.000 --> 00:15:33.000
but anyway, it works - so if you don't have

00:15:33.000 --> 00:15:35.000
the mpv video player configured you can

00:15:35.000 --> 00:15:37.000
still play the videos, you can still

00:15:37.000 --> 00:15:40.000
start them from the right position,

00:15:40.000 --> 00:15:51.000
but it's painful.

00:15:51.000 --> 00:15:55.000
So note that I haven't explained

00:15:55.000 --> 00:15:58.000
how to do these things...

00:15:58.000 --> 00:16:02.000
the thing is that these three steps

00:16:02.000 --> 00:16:05.000
here... they can be

00:16:05.000 --> 00:16:07.000
replaced by something much more

00:16:07.000 --> 00:16:12.000
user-friendlier...

00:16:12.000 --> 00:16:14.000
they can be replaced by these two sexps

00:16:14.000 --> 00:16:20.000
here - this one just returns the name

00:16:20.000 --> 00:16:23.000
of a package that has been loaded,

00:16:23.000 --> 00:16:26.000
and this one here

00:16:26.000 --> 00:16:29.000
opens a temporary buffer

00:16:29.000 --> 00:16:36.000
that shows this.

00:16:36.000 --> 00:16:39.000
And this is what we're going to use

00:16:39.000 --> 00:16:43.000
to configure eev on Windows

00:16:43.000 --> 00:16:45.000
"without magic"...

00:16:45.000 --> 00:16:49.000
remember that I'm going to explain

00:16:49.000 --> 00:16:51.000
the term "without magic" soon...

00:16:51.000 --> 00:16:53.000
but anyway,

00:16:53.000 --> 00:16:56.000
"wconfig" is an abbreviation for

00:16:56.000 --> 00:16:58.000
"configuration on Microsoft Windows",

00:16:58.000 --> 00:17:00.000
or "Windows config"...

00:17:00.000 --> 00:17:02.000
And I'm going to refer to this temporary

00:17:02.000 --> 00:17:06.000
buffer here - note that its name is here -

00:17:06.000 --> 00:17:10.000
as the "main wconfig buffer" -

00:17:10.000 --> 00:17:13.000
and these instructions say that

00:17:13.000 --> 00:17:16.000
to configure eev on Windows

00:17:16.000 --> 00:17:19.000
we have to follow the instructions

00:17:19.000 --> 00:17:23.000
in each of these five wconfigs here...

00:17:23.000 --> 00:17:27.000
I'm going to refer to these ones as the

00:17:27.000 --> 00:17:30.000
"sub-wconfigs".

00:17:30.000 --> 00:17:34.000
The first one is this one, that

00:17:34.000 --> 00:17:37.000
is used to configure the browser -

00:17:37.000 --> 00:17:39.000
I mean, the path to the browser...

00:17:39.000 --> 00:17:41.000
by default the path to the browser

00:17:41.000 --> 00:17:44.000
in eev is the one that is used

00:17:44.000 --> 00:17:48.000
in GNU/Linux, which is this one...

00:17:48.000 --> 00:17:51.000
I'm supposing that the default browser

00:17:51.000 --> 00:17:53.000
is Google Chrome just because

00:17:53.000 --> 00:17:55.000
many people have it installed,

00:17:55.000 --> 00:18:01.000
but this is easy to change...

00:18:01.000 --> 00:18:06.000
and the thing is that

00:18:06.000 --> 00:18:10.000
to set the right path to Google Chrome

00:18:10.000 --> 00:18:14.000
we have to run something like this -

00:18:14.000 --> 00:18:20.000
this setq here sets a variable,

00:18:20.000 --> 00:18:22.000
and note that here we have a line that

00:18:22.000 --> 00:18:24.000
says "See: blah blah blah",

00:18:24.000 --> 00:18:28.000
and this sexp here opens

00:18:28.000 --> 00:18:30.000
one of the tutorials of eev,

00:18:30.000 --> 00:18:34.000
that is a tutorial on Emacs Lisp...

00:18:34.000 --> 00:18:38.000
Note that this header says:

00:18:38.000 --> 00:18:41.000
"This intro is a very quick introduction

00:18:41.000 --> 00:18:44.000
to Emacs Lisp. Its intent is not to teach

00:18:44.000 --> 00:18:46.000
people how to write Elisp code, only to

00:18:46.000 --> 00:18:47.000
teach them how to read Elisp code"...

00:18:47.000 --> 00:18:51.000
so it's very basic.

00:18:51.000 --> 00:18:52.000
There's a video about it, but I'm not

00:18:52.000 --> 00:18:57.000
going to discuss that video now.

00:18:57.000 --> 00:19:02.000
And in the first sections of this tutorial

00:19:02.000 --> 00:19:07.000
you learn what are S-expressions,

00:19:07.000 --> 00:19:09.000
what are numbers, what are functions,

00:19:09.000 --> 00:19:12.000
how to call functions,

00:19:12.000 --> 00:19:17.000
some basic kinds of elisp objects...

00:19:17.000 --> 00:19:19.000
these things also have

00:19:19.000 --> 00:19:22.000
links to the Emacs Lisp manual, so if you

00:19:22.000 --> 00:19:26.000
execute something like this you have

00:19:26.000 --> 00:19:28.000
the standard documentation of what are

00:19:28.000 --> 00:19:34.000
the data types of Lisp...

00:19:34.000 --> 00:19:39.000
And in the section 5 we learn

00:19:39.000 --> 00:19:41.000
how to use variables.

00:19:41.000 --> 00:19:43.000
We learn that we can

00:19:43.000 --> 00:19:49.000
set the variable a to 2 by running this -

00:19:49.000 --> 00:19:52.000
this expression returns the new value of

00:19:52.000 --> 00:19:54.000
the variable - 2...

00:19:54.000 --> 00:19:56.000
now if we execute this

00:19:56.000 --> 00:20:00.000
the value of a is 2,

00:20:00.000 --> 00:20:01.000
and if we execute this

00:20:01.000 --> 00:20:03.000
the value of a becomes 3...

00:20:03.000 --> 00:20:07.000
so the result of this is 30,

00:20:07.000 --> 00:20:09.000
and if we run this again we set the

00:20:09.000 --> 00:20:13.000
value of a to 2 again, and

00:20:13.000 --> 00:20:16.000
this sexp here returns

00:20:16.000 --> 00:20:20.000
10 times a, which is in this case is 20...

00:20:20.000 --> 00:20:22.000
and of course we can change this line,

00:20:22.000 --> 00:20:25.000
we can execute the changed version,

00:20:25.000 --> 00:20:29.000
and so on...

00:20:29.000 --> 00:20:31.000
so we have to do something like this to

00:20:31.000 --> 00:20:33.000
set the variable

00:20:33.000 --> 00:20:35.000
ee-googlechrome-program.

00:20:35.000 --> 00:20:37.000
This section says that this is the

00:20:37.000 --> 00:20:40.000
current value of the variable

00:20:40.000 --> 00:20:44.000
ee-googlechrome-program...

00:20:44.000 --> 00:20:47.000
and we have to change it

00:20:47.000 --> 00:20:50.000
to the the right path on Windows,

00:20:50.000 --> 00:20:52.000
that is going to be something

00:20:52.000 --> 00:20:56.000
like this, "C:/blah blah blah"...

00:20:56.000 --> 00:20:59.000
note that we NEED to replace

00:20:59.000 --> 00:21:01.000
all the backslashes by

00:21:01.000 --> 00:21:08.000
forward slashes,

00:21:08.000 --> 00:21:12.000
and if we configure the path correctly,

00:21:12.000 --> 00:21:14.000
I mean, if we execute this sexp here

00:21:14.000 --> 00:21:16.000
to set ee-googlechrome-program

00:21:16.000 --> 00:21:20.000
to the new value and we execute this,

00:21:20.000 --> 00:21:23.000
then Google Chrome is going to open

00:21:23.000 --> 00:21:25.000
this url here.

00:21:25.000 --> 00:21:28.000
Let me try...

00:21:28.000 --> 00:21:30.000
it says that I have configured it

00:21:30.000 --> 00:21:31.000
INcorrectly.

00:21:31.000 --> 00:21:34.000
I don't have a

00:21:34.000 --> 00:21:36.000
"googlechrome" in that address

00:21:36.000 --> 00:21:39.000
because i'm on GNU/Linux, so for me

00:21:39.000 --> 00:21:43.000
the right path is this one.

00:21:43.000 --> 00:21:47.000
If the path is configured correctly -

00:21:47.000 --> 00:21:50.000
now I'm using this value -

00:21:50.000 --> 00:21:53.000
if execute this, then

00:21:53.000 --> 00:21:55.000
Emacs calles Google Chrome, and Google

00:21:55.000 --> 00:22:03.000
Chrome opens this this page here.

00:22:03.000 --> 00:22:06.000
And after setting

00:22:06.000 --> 00:22:09.000
the variable to the right path -

00:22:09.000 --> 00:22:11.000
let's suppose that it is this one -

00:22:11.000 --> 00:22:14.000
we have to update this page,

00:22:14.000 --> 00:22:15.000
in the sense that is explained

00:22:15.000 --> 00:22:20.000
in this section of a tutorial...

00:22:20.000 --> 00:22:22.000
This page here is generated by

00:22:22.000 --> 00:22:28.000
a template -

00:22:28.000 --> 00:22:30.000
most of my pages that are generated by

00:22:30.000 --> 00:22:32.000
templates follow a convention that says

00:22:32.000 --> 00:22:34.000
that "the first line

00:22:34.000 --> 00:22:37.000
regenerates the buffer" -

00:22:37.000 --> 00:22:40.000
note that if I execute this then this

00:22:40.000 --> 00:22:43.000
string here is going to be changed to

00:22:43.000 --> 00:22:46.000
the current value of this variable -

00:22:46.000 --> 00:22:49.000
note that I can also check the

00:22:49.000 --> 00:22:51.000
value of this variable by executing this

00:22:51.000 --> 00:22:55.000
expression here with M-e -

00:22:55.000 --> 00:22:59.000
and if I regenerate the buffer

00:22:59.000 --> 00:23:03.000
then this thing here is replaced

00:23:03.000 --> 00:23:07.000
by the current value of this variable.

00:23:07.000 --> 00:23:11.000
And now that

00:23:11.000 --> 00:23:13.000
that the page has been...

00:23:13.000 --> 00:23:16.000
sorry, that the the variable

00:23:16.000 --> 00:23:19.000
is set correctly, and that

00:23:19.000 --> 00:23:22.000
the page has been updated,

00:23:22.000 --> 00:23:25.000
now I need to save my configuration...

00:23:25.000 --> 00:23:28.000
and this is explained here -

00:23:28.000 --> 00:23:31.000
so at this point people have to to read

00:23:31.000 --> 00:23:36.000
the section of the Emacs manual that explains

00:23:36.000 --> 00:23:38.000
what is the

00:23:38.000 --> 00:23:43.000
init file of Emacs...

00:23:43.000 --> 00:23:48.000
and then they have to

00:23:48.000 --> 00:23:51.000
check some things here...

00:23:51.000 --> 00:23:56.000
one of the most basic keys of ev is M-j

00:23:56.000 --> 00:23:57.000
if I type M-j

00:23:57.000 --> 00:24:00.000
without any numeric prefixes

00:24:00.000 --> 00:24:02.000
it shows

00:24:02.000 --> 00:24:04.000
this page here that has a

00:24:04.000 --> 00:24:08.000
a user-friendly header and

00:24:08.000 --> 00:24:11.000
a user-unfriendly rest

00:24:11.000 --> 00:24:14.000
and

00:24:14.000 --> 00:24:17.000
it has some links to

00:24:17.000 --> 00:24:18.000
to the main tutorial

00:24:18.000 --> 00:24:20.000
and some links to this

00:24:20.000 --> 00:24:22.000
other tutorial, that is a fake tutorial

00:24:22.000 --> 00:24:26.000
that is just an index of the main keys -

00:24:26.000 --> 00:24:32.000
and here we have a list of the current

00:24:32.000 --> 00:24:36.000
targets - I use many targets in my

00:24:36.000 --> 00:24:39.000
default setting -

00:24:39.000 --> 00:24:42.000
this target here says that

00:24:42.000 --> 00:24:46.000
when we type M-j with the prefix 55

00:24:46.000 --> 00:24:49.000
it opens the init file - here -

00:24:49.000 --> 00:24:53.000
so let's test...

00:24:53.000 --> 00:24:56.000
so this was a very long explanation of

00:24:56.000 --> 00:24:57.000
why

00:24:57.000 --> 00:25:00.000
M-5 M-5 M-j opens the

00:25:00.000 --> 00:25:03.000
init file... this sexp here also opens

00:25:03.000 --> 00:25:06.000
the init file -

00:25:06.000 --> 00:25:09.000
here is my init file - it is huge, let me

00:25:09.000 --> 00:25:11.000
open a blank page here to avoid

00:25:11.000 --> 00:25:14.000
confusion -

00:25:14.000 --> 00:25:17.000
and now the instructions say that we

00:25:17.000 --> 00:25:19.000
have to copy the _updated_ version of the

00:25:19.000 --> 00:25:21.000
block below -

00:25:21.000 --> 00:25:25.000
the updated version in the sense that

00:25:25.000 --> 00:25:28.000
we have to update this page,

00:25:28.000 --> 00:25:30.000
and when we update this page

00:25:30.000 --> 00:25:32.000
some

00:25:32.000 --> 00:25:34.000
places like these

00:25:34.000 --> 00:25:37.000
are updated to the

00:25:37.000 --> 00:25:44.000
current value of this variable here.

00:25:44.000 --> 00:25:45.000
So

00:25:45.000 --> 00:25:48.000
this template produced this thing here

00:25:48.000 --> 00:25:51.000
that we have to save in our init

00:25:51.000 --> 00:25:54.000
file

00:25:54.000 --> 00:26:00.000
so we use copy and paste -

00:26:00.000 --> 00:26:03.000
in general beginners will have

00:26:03.000 --> 00:26:05.000
things like this

00:26:05.000 --> 00:26:09.000
at the top - this is called the

00:26:09.000 --> 00:26:12.000
"menu bar" and this is called the

00:26:12.000 --> 00:26:14.000
"tool bar" and then they can use these

00:26:14.000 --> 00:26:16.000
things here to remember the keys for

00:26:16.000 --> 00:26:18.000
copy and paste...

00:26:18.000 --> 00:26:22.000
anyway let me disable them. So, I have

00:26:22.000 --> 00:26:26.000
to copy this to my init file...

00:26:26.000 --> 00:26:30.000
Done! Copied...

00:26:30.000 --> 00:26:32.000
Now let's go back, we have just

00:26:32.000 --> 00:26:34.000
finished the first

00:26:34.000 --> 00:26:38.000
sub-wconfig

00:26:38.000 --> 00:26:42.000
and we can either run this, or delete

00:26:42.000 --> 00:26:45.000
this buffer to return to the main

00:26:45.000 --> 00:26:47.000
wconfig

00:26:47.000 --> 00:26:48.000
and

00:26:48.000 --> 00:26:50.000
this is the list of

00:26:50.000 --> 00:26:51.000
the things that we have to

00:26:51.000 --> 00:26:53.000
configure...

00:26:53.000 --> 00:26:55.000
now we can go to the second one, that

00:26:55.000 --> 00:27:05.000
configures wget.

00:27:05.000 --> 00:27:09.000
Let me just show something before

00:27:09.000 --> 00:27:10.000
running

00:27:10.000 --> 00:27:14.000
this subconfig here

00:27:14.000 --> 00:27:15.000
it says

00:27:15.000 --> 00:27:19.000
in the line 4 of this

00:27:19.000 --> 00:27:21.000
main wconfig

00:27:21.000 --> 00:27:23.000
we have this link here

00:27:23.000 --> 00:27:26.000
that goes to the source code of

00:27:26.000 --> 00:27:28.000
eev-wconfig

00:27:28.000 --> 00:27:31.000
and it has this introduction here.

00:27:31.000 --> 00:27:34.000
The introduction starts with this

00:27:34.000 --> 00:27:36.000
explanation, that some parts of eev

00:27:36.000 --> 00:27:38.000
call external programs,

00:27:38.000 --> 00:27:41.000
and then it has lots of hyperlinks that

00:27:41.000 --> 00:27:46.000
show the sections of the tutorials that

00:27:46.000 --> 00:27:48.000
explain

00:27:48.000 --> 00:27:51.000
how these external programs are used.

00:27:51.000 --> 00:27:54.000
So, for example if I execute this I go to

00:27:54.000 --> 00:27:57.000
a place in which firefox is mentioned,

00:27:57.000 --> 00:28:00.000
if execute this I go to a place in which

00:28:00.000 --> 00:28:04.000
Chrome is mentioned -

00:28:04.000 --> 00:28:08.000
here - it says...

00:28:08.000 --> 00:28:10.000
sorry, remember

00:28:10.000 --> 00:28:14.000
that

00:28:14.000 --> 00:28:17.000
I ran something that would

00:28:17.000 --> 00:28:19.000
split the window in two and would run

00:28:19.000 --> 00:28:22.000
another program in the second window...

00:28:22.000 --> 00:28:24.000
here's an example in which we run

00:28:24.000 --> 00:28:30.000
python in the second window.

00:28:30.000 --> 00:28:32.000
In my previous example I was just

00:28:32.000 --> 00:28:35.000
running a shell but we can also run

00:28:35.000 --> 00:28:42.000
other targets.

00:28:42.000 --> 00:28:46.000
And these two lines here discuss why

00:28:46.000 --> 00:28:50.000
we need wget.

00:28:50.000 --> 00:28:55.000
I've shown that very quickly before

00:28:55.000 --> 00:28:57.000
when i showed how to download a video

00:28:57.000 --> 00:28:59.000
and its subtitles but the full

00:28:59.000 --> 00:29:02.000
explanation is here.

00:29:02.000 --> 00:29:05.000
There's a wget here, here is a demo of

00:29:05.000 --> 00:29:08.000
how it works...

00:29:08.000 --> 00:29:12.000
And here we have a

00:29:12.000 --> 00:29:16.000
link that explains the video links...

00:29:16.000 --> 00:29:18.000
again, a link to

00:29:18.000 --> 00:29:32.000
how subtitles work, and so on.

00:29:32.000 --> 00:29:33.000
Ah, sorry!

00:29:33.000 --> 00:29:40.000
I was missing something very important.

00:29:40.000 --> 00:29:42.000
This should be obvious now...

00:29:42.000 --> 00:29:45.000
I said that on *NIX installation

00:29:45.000 --> 00:29:46.000
is very easy -

00:29:46.000 --> 00:29:48.000
we just need to install these programs

00:29:48.000 --> 00:29:52.000
and eev knows how to find them...

00:29:52.000 --> 00:29:54.000
but on Windows things are much harder

00:29:54.000 --> 00:29:57.000
first eev needs to know the full

00:29:57.000 --> 00:30:00.000
paths of the

00:30:00.000 --> 00:30:02.000
executables of these programs

00:30:02.000 --> 00:30:04.000
we just saw how to configure

00:30:04.000 --> 00:30:08.000
the full path of Google Chrome

00:30:08.000 --> 00:30:11.000
and also wget and pdftotext

00:30:11.000 --> 00:30:13.000
are hard to install - I'm going to show

00:30:13.000 --> 00:30:16.000
how to install them very soon -

00:30:16.000 --> 00:30:18.000
and also on Windows it's better to

00:30:18.000 --> 00:30:21.000
use a browser to open pdfs instead of

00:30:21.000 --> 00:30:25.000
using a dedicated pdf viewer

00:30:25.000 --> 00:30:27.000
and also - and this is very important - I

00:30:27.000 --> 00:30:29.000
don't have access to a machine with

00:30:29.000 --> 00:30:32.000
Windows, and I have very little access to

00:30:32.000 --> 00:30:34.000
people who use Windows and who can

00:30:34.000 --> 00:30:36.000
be convinced to test this,

00:30:36.000 --> 00:30:39.000
so I'm testing this on a machine with

00:30:39.000 --> 00:30:42.000
GNU/Linux, with some hacks to

00:30:42.000 --> 00:30:44.000
try to make it behave like a Windows

00:30:44.000 --> 00:30:48.000
machine...

00:30:48.000 --> 00:30:50.000
and this is one of the most important

00:30:50.000 --> 00:30:54.000
parts - I said that I was going to explain

00:30:54.000 --> 00:30:58.000
the term "magic"

00:30:58.000 --> 00:31:01.000
eev-wconfig is an attempt to solve the

00:31:01.000 --> 00:31:03.000
problem of how to install these things

00:31:03.000 --> 00:31:06.000
on Windows both "without magic" and

00:31:06.000 --> 00:31:09.000
"with very little magic"

00:31:09.000 --> 00:31:14.000
in this sense. Remember this slogan:

00:31:14.000 --> 00:31:17.000
"any sufficiently advanced technology is

00:31:17.000 --> 00:31:21.000
indistinguishable from magic"

00:31:21.000 --> 00:31:23.000
and here in this video

00:31:23.000 --> 00:31:26.000
I am going to use the term "magic" as a

00:31:26.000 --> 00:31:28.000
shorthand for a

00:31:28.000 --> 00:31:32.000
"sufficiently advanced technology" -

00:31:32.000 --> 00:31:35.000
that is, something that is complex and

00:31:35.000 --> 00:31:37.000
non-obvious, and

00:31:37.000 --> 00:31:39.000
"that is

00:31:39.000 --> 00:31:41.000
indistinguishable from magic"

00:31:41.000 --> 00:31:43.000
in the sense of being almost impossible

00:31:43.000 --> 00:31:45.000
to understand.

00:31:45.000 --> 00:31:48.000
And i'm also going to use the term

00:31:48.000 --> 00:31:49.000
"black box"

00:31:49.000 --> 00:31:53.000
as a near-synonym for "magic"

00:31:53.000 --> 00:31:55.000
and sometimes the term "black box" is more

00:31:55.000 --> 00:31:56.000
convenient -

00:31:56.000 --> 00:31:58.000
even though it is longer: it has more

00:31:58.000 --> 00:32:02.000
letters - because when I use the term

00:32:02.000 --> 00:32:05.000
"black box" it invites us to use the

00:32:05.000 --> 00:32:07.000
expressions like "opening the black box".

00:32:07.000 --> 00:32:11.000
I'm going to use that expression a lot.

00:32:11.000 --> 00:32:15.000
I mentioned Org in the introduction

00:32:15.000 --> 00:32:18.000
and I said that I find Org very

00:32:18.000 --> 00:32:19.000
difficult -

00:32:19.000 --> 00:32:22.000
but i'm a very

00:32:22.000 --> 00:32:25.000
atypical person...

00:32:25.000 --> 00:32:29.000
and I recorded a video explaining this.

00:32:29.000 --> 00:32:32.000
People can access this video either

00:32:32.000 --> 00:32:36.000
in this page, or

00:32:36.000 --> 00:32:39.000
in this thing here: the index of the

00:32:39.000 --> 00:32:42.000
video is here, so I can just, for example,

00:32:42.000 --> 00:32:45.000
execute to sexp and play the video

00:32:45.000 --> 00:32:51.000
from this position - 3:35 -

00:32:51.000 --> 00:32:55.000
Oops! The video is not here -

00:32:55.000 --> 00:32:57.000
I don't have a local copy of it, so I need

00:32:57.000 --> 00:33:00.000
to run this thing here to

00:33:00.000 --> 00:33:05.000
download the local copy.

00:33:05.000 --> 00:33:07.000
It was downloaded -

00:33:07.000 --> 00:33:17.000
it doesn't have subtitles, it seems...

00:33:17.000 --> 00:33:20.000
and if execute this,

00:33:20.000 --> 00:33:22.000
now mpv plays the video from this

00:33:22.000 --> 00:33:25.000
position.

00:33:25.000 --> 00:33:27.000
Anyway, let me go back.

00:33:27.000 --> 00:33:30.000
So: in this video I explained why I have

00:33:30.000 --> 00:33:34.000
always found Org so hard to learn...

00:33:34.000 --> 00:33:36.000
and the thing is that many things in Org

00:33:36.000 --> 00:33:39.000
are implemented in ways that i

00:33:39.000 --> 00:33:40.000
don't understand,

00:33:40.000 --> 00:33:42.000
and practically every time that i try to

00:33:42.000 --> 00:33:45.000
learn more more features of org

00:33:45.000 --> 00:33:47.000
I get stuck, because I start to ask

00:33:47.000 --> 00:33:49.000
questions like:

00:33:49.000 --> 00:33:52.000
hey, how is this implemented?

00:33:52.000 --> 00:33:54.000
And I get stuck trying to trying to

00:33:54.000 --> 00:33:57.000
answer these questions, that are not

00:33:57.000 --> 00:34:01.000
typical user questions...

00:34:01.000 --> 00:34:05.000
and I get stuck on that instead of

00:34:05.000 --> 00:34:07.000
simply learning how to use the features

00:34:07.000 --> 00:34:09.000
of Org as a user.

00:34:09.000 --> 00:34:11.000
So: I find

00:34:11.000 --> 00:34:14.000
Org confusing because my brain is wired

00:34:14.000 --> 00:34:16.000
in a weird way...

00:34:16.000 --> 00:34:19.000
and, in the language of black boxes what

00:34:19.000 --> 00:34:24.000
happens is that when I try to learn Org...

00:34:24.000 --> 00:34:27.000
I try to learn a new feature, I see lots

00:34:27.000 --> 00:34:29.000
of black boxes,

00:34:29.000 --> 00:34:31.000
I try to open these black boxes, and I

00:34:31.000 --> 00:34:34.000
fail miserably... and I get frustrated and

00:34:34.000 --> 00:34:37.000
exhausted I, do not learn the feature and

00:34:37.000 --> 00:34:39.000
I postpone learning the feature

00:34:39.000 --> 00:34:41.000
to another day, and in the other day I try

00:34:41.000 --> 00:34:44.000
it again, I see other black boxes, I try

00:34:44.000 --> 00:34:46.000
to understand them again, and blah blah,

00:34:46.000 --> 00:34:49.000
rinse and repeat...

00:34:49.000 --> 00:34:51.000
and I also have exactly the same

00:34:51.000 --> 00:34:54.000
relationship with M-x customized, that

00:34:54.000 --> 00:34:58.000
the standard way in Emacs to configure

00:34:58.000 --> 00:35:00.000
certain things

00:35:00.000 --> 00:35:03.000
and to customize certain things.

00:35:03.000 --> 00:35:08.000
Let me show how customize works

00:35:08.000 --> 00:35:12.000
We can either type M-x customize or

00:35:12.000 --> 00:35:14.000
run this sexp here, that

00:35:14.000 --> 00:35:17.000
simulates what happens when we type

00:35:17.000 --> 00:35:19.000
M-x customize.

00:35:19.000 --> 00:35:21.000
Customize creates a temporary buffer

00:35:21.000 --> 00:35:23.000
like this one...

00:35:23.000 --> 00:35:26.000
it has this mysterious field here, it

00:35:26.000 --> 00:35:28.000
has parts that are not editable - for

00:35:28.000 --> 00:35:34.000
example, if I type a letter here - oops

00:35:34.000 --> 00:35:37.000
if I type a letter here

00:35:37.000 --> 00:35:39.000
it says "you can't edit this part of the

00:35:39.000 --> 00:35:42.000
Custom buffer"... it has buttons,

00:35:42.000 --> 00:35:44.000
it has different fonts, different colors,

00:35:44.000 --> 00:35:49.000
it has links, and so on...

00:35:49.000 --> 00:35:51.000
and if i follow these links in

00:35:51.000 --> 00:35:53.000
the right way I

00:35:53.000 --> 00:35:57.000
can get to places like this one,

00:35:57.000 --> 00:36:02.000
which is a sub menu with sub options,

00:36:02.000 --> 00:36:08.000
I can get to a place like this one,

00:36:08.000 --> 00:36:13.000
that offers many things

00:36:13.000 --> 00:36:16.000
that can be configured, each one with an

00:36:16.000 --> 00:36:23.000
explanation...

00:36:23.000 --> 00:36:26.000
I can execute things like this one, that

00:36:26.000 --> 00:36:28.000
opens this page, in which I can customize

00:36:28.000 --> 00:36:33.000
a variable...

00:36:33.000 --> 00:36:35.000
and things like this in which I can

00:36:35.000 --> 00:36:38.000
customize a face to change its color, to

00:36:38.000 --> 00:36:42.000
change its font... and so on -

00:36:42.000 --> 00:36:44.000
and for me all these things - all these

00:36:44.000 --> 00:36:47.000
buttons, this rectangle here, in which I

00:36:47.000 --> 00:36:51.000
can put text

00:36:51.000 --> 00:36:52.000
all these things are...

00:36:52.000 --> 00:36:55.000
magic - and they are black boxes that I

00:36:55.000 --> 00:37:00.000
find very hard to open.

00:37:00.000 --> 00:37:02.000
And over the years I have experimented

00:37:02.000 --> 00:37:04.000
with several alternatives to

00:37:04.000 --> 00:37:10.000
customize that "use less magic"...

00:37:10.000 --> 00:37:13.000
I've documented some of my attempts in

00:37:13.000 --> 00:37:16.000
this page here,

00:37:16.000 --> 00:37:18.000
and

00:37:18.000 --> 00:37:20.000
this thing that I'm presenting now -

00:37:20.000 --> 00:37:23.000
eev-wconfig.el - this is

00:37:23.000 --> 00:37:26.000
the next step: it uses all the ideas in

00:37:26.000 --> 00:37:32.000
this page, and a few other new ideas.

00:37:32.000 --> 00:37:33.000
And eev-wconfig can be used both

00:37:33.000 --> 00:37:38.000
"with no magic",

00:37:38.000 --> 00:37:40.000
which is easier to explain, and we're

00:37:40.000 --> 00:37:42.000
going to see that first,

00:37:42.000 --> 00:37:44.000
and with "some magic", or "with

00:37:44.000 --> 00:37:46.000
very little magic"

00:37:46.000 --> 00:37:48.000
and both ways create temporary buffers

00:37:48.000 --> 00:37:50.000
that have parts that perform

00:37:50.000 --> 00:37:52.000
configuration steps

00:37:52.000 --> 00:37:54.000
and parts

00:37:54.000 --> 00:37:56.000
that "open the black boxes".

00:37:56.000 --> 00:37:59.000
How? Because they contain elisp hyperlinks

00:37:59.000 --> 00:38:01.000
that go to the documentation, that

00:38:01.000 --> 00:38:04.000
perform tests, that show the values of

00:38:04.000 --> 00:38:11.000
variables, and so on.

00:38:11.000 --> 00:38:13.000
The documentation about usage is

00:38:13.000 --> 00:38:15.000
incomplete at the moment, so let me

00:38:15.000 --> 00:38:17.000
return.

00:38:17.000 --> 00:38:22.000
We just saw that these

00:38:22.000 --> 00:38:25.000
things have lots of links in comments

00:38:25.000 --> 00:38:28.000
like this one, that goes

00:38:28.000 --> 00:38:31.000
to a tutorial, and some

00:38:31.000 --> 00:38:36.000
other links go to manuals of Emacs...

00:38:36.000 --> 00:38:39.000
it has some tests in comments - remember

00:38:39.000 --> 00:38:41.000
remember that we ran this and it tried

00:38:41.000 --> 00:38:43.000
to open Google Chrome

00:38:43.000 --> 00:38:48.000
to visit this url in Google Chrome,

00:38:48.000 --> 00:38:50.000
and it failed, because

00:38:50.000 --> 00:38:52.000
the path for Google Chrome is configured

00:38:52.000 --> 00:39:00.000
incorrectly.

00:39:00.000 --> 00:39:02.000
This is an example of a link that goes to one

00:39:02.000 --> 00:39:09.000
of the manuals of Emacs,

00:39:09.000 --> 00:39:12.000
this thing here opens the init file, and

00:39:12.000 --> 00:39:14.000
so on...

00:39:14.000 --> 00:39:20.000
so: we just finished the first sub-wconfig

00:39:20.000 --> 00:39:22.000
and now we need to run the second

00:39:22.000 --> 00:39:27.000
sub-wconfig

00:39:27.000 --> 00:39:30.000
and this wconfig

00:39:30.000 --> 00:39:33.000
can only be run after configuring the

00:39:33.000 --> 00:39:35.000
browser - otherwise it's going to behave

00:39:35.000 --> 00:39:37.000
in weird ways...

00:39:37.000 --> 00:39:40.000
and the first step here is to download

00:39:40.000 --> 00:39:43.000
wget.exe...

00:39:43.000 --> 00:39:46.000
and note that it says: run each of the

00:39:46.000 --> 00:39:50.000
uncommented texts below with M-e

00:39:50.000 --> 00:39:52.000
the idea is that

00:39:52.000 --> 00:39:56.000
this buffer here is

00:39:56.000 --> 00:40:00.000
colored as Lisp - everything that

00:40:00.000 --> 00:40:03.000
Emacs thinks that are elisp comments

00:40:03.000 --> 00:40:06.000
is in brown, and everything that is

00:40:06.000 --> 00:40:10.000
not comments is in other colors...

00:40:10.000 --> 00:40:13.000
so this is an uncommented part and this

00:40:13.000 --> 00:40:21.000
is a commented part.

00:40:21.000 --> 00:40:24.000
Note that here we have some sexps that are

00:40:24.000 --> 00:40:26.000
longer than one line. For example, this

00:40:26.000 --> 00:40:29.000
one takes two lines, and this one also

00:40:29.000 --> 00:40:31.000
takes two lines...

00:40:31.000 --> 00:40:37.000
and we need to run each one of them.

00:40:37.000 --> 00:40:40.000
This one just returns the name of a

00:40:40.000 --> 00:40:42.000
package that has been loaded,

00:40:42.000 --> 00:40:45.000
this one just returns the name

00:40:45.000 --> 00:40:49.000
of a function that has been defined,

00:40:49.000 --> 00:40:54.000
and some of these ones return

00:40:54.000 --> 00:40:56.000
some trivial value that just says that

00:40:56.000 --> 00:40:58.000
everything went right...

00:40:58.000 --> 00:41:01.000
for example this one returns nil, this

00:41:01.000 --> 00:41:06.000
one returns nil, again and this one is a

00:41:06.000 --> 00:41:08.000
bit more problematic because it runs

00:41:08.000 --> 00:41:11.000
something that may take a long time like

00:41:11.000 --> 00:41:14.000
10 seconds, 20 seconds, i don't know...

00:41:14.000 --> 00:41:17.000
Let me try.

00:41:17.000 --> 00:41:20.000
Note the messages here now we have to

00:41:20.000 --> 00:41:23.000
wait patiently... Ta-da.

00:41:23.000 --> 00:41:27.000
It has downloaded wget.exe and saved it

00:41:27.000 --> 00:41:31.000
in this file here

00:41:31.000 --> 00:41:34.000
and now that wget.exe has been

00:41:34.000 --> 00:41:37.000
downloaded we can use it to download

00:41:37.000 --> 00:41:39.000
some other files...

00:41:39.000 --> 00:41:42.000
but remember that I'm not on windows, so

00:41:42.000 --> 00:41:45.000
I have to use some some

00:41:45.000 --> 00:41:47.000
mysterious tricks to

00:41:47.000 --> 00:41:49.000
make these things behave somewhat like

00:41:49.000 --> 00:41:51.000
Windows.

00:41:51.000 --> 00:41:54.000
Let me execute this string... so, please

00:41:54.000 --> 00:41:56.000
don't pay attention to what i'm doing

00:41:56.000 --> 00:42:01.000
now... this is like

00:42:01.000 --> 00:42:09.000
"you are not expected to understand this"

00:42:09.000 --> 00:42:17.000
anyway,

00:42:17.000 --> 00:42:19.000
um -

00:42:19.000 --> 00:42:26.000
sorry -

00:42:26.000 --> 00:42:39.000
oops -

00:42:39.000 --> 00:42:51.000
oh my god i forgot the details, sorry...

00:42:51.000 --> 00:42:57.000
that's it -

00:42:57.000 --> 00:43:01.000
Ah, yeah, sorry - now I remember:

00:43:01.000 --> 00:43:03.000
I had to replace the real wget.exe,

00:43:03.000 --> 00:43:05.000
that takes about 5MB, by a

00:43:05.000 --> 00:43:09.000
fake wget.exe that calls the

00:43:09.000 --> 00:43:13.000
wget that runs on GNU/Linux

00:43:13.000 --> 00:43:16.000
so, sorry for the delay, let me go back to

00:43:16.000 --> 00:43:22.000
the to the configuration of wget...

00:43:22.000 --> 00:43:26.000
now that I have wget working

00:43:26.000 --> 00:43:29.000
I can execute this

00:43:29.000 --> 00:43:33.000
block here with f8...

00:43:33.000 --> 00:43:35.000
Note the instructions here -

00:43:35.000 --> 00:43:37.000
this thing points to the

00:43:37.000 --> 00:43:40.000
the main tutorial of eev, in the part that

00:43:40.000 --> 00:43:43.000
it explains how to run

00:43:43.000 --> 00:43:46.000
shell-like programs - programs like the

00:43:46.000 --> 00:43:50.000
shell, programs like Python, etc, with f8s...

00:43:50.000 --> 00:43:53.000
so we need to run these things with f8.

00:43:53.000 --> 00:44:04.000
The first commands are very quick...

00:44:04.000 --> 00:44:10.000
and now I call wget to download

00:44:10.000 --> 00:44:22.000
many small files...

00:44:22.000 --> 00:44:24.000
and this block here contains some tests -

00:44:24.000 --> 00:44:27.000
some very basic tests that just

00:44:27.000 --> 00:44:30.000
call these programs to

00:44:30.000 --> 00:44:33.000
check that they are executable

00:44:33.000 --> 00:44:36.000
and to check that they can perform very

00:44:36.000 --> 00:44:38.000
basic functions, like just displaying the

00:44:38.000 --> 00:44:40.000
help.

00:44:40.000 --> 00:44:42.000
This test here

00:44:42.000 --> 00:44:43.000
works -

00:44:43.000 --> 00:44:50.000
it shows the help of wget - here -

00:44:50.000 --> 00:44:53.000
this one does not work because this file

00:44:53.000 --> 00:44:56.000
is a file for windows... I have to run my

00:44:56.000 --> 00:44:59.000
hacks to to make it executable on

00:44:59.000 --> 00:45:02.000
GNU/Linux. so,

00:45:02.000 --> 00:45:05.000
again, please don't pay attention to what

00:45:05.000 --> 00:45:15.000
i'm going to do...

00:45:15.000 --> 00:45:17.000
now these tests

00:45:17.000 --> 00:45:19.000
work. So if you are on Windows and if

00:45:19.000 --> 00:45:21.000
everything worked

00:45:21.000 --> 00:45:25.000
this thing here should show the help of

00:45:25.000 --> 00:45:27.000
pdftotext...

00:45:27.000 --> 00:45:30.000
and these other lines here should show

00:45:30.000 --> 00:45:33.000
the version of these

00:45:33.000 --> 00:45:36.000
programs here

00:45:36.000 --> 00:45:39.000
so if I execute this I get a message

00:45:39.000 --> 00:45:41.000
that is just one line long

00:45:41.000 --> 00:45:45.000
same here, same here -

00:45:45.000 --> 00:45:48.000
and now I need to run this other block

00:45:48.000 --> 00:45:50.000
here, that downloads a pdf file

00:45:50.000 --> 00:45:52.000
that is going

00:45:52.000 --> 00:45:56.000
to be used in some tests, and a very short

00:45:56.000 --> 00:45:58.000
mp4 file... a very short video that is

00:45:58.000 --> 00:46:01.000
going to be used in other tests.

00:46:01.000 --> 00:46:03.000
so...

00:46:03.000 --> 00:46:09.000
wget, wget again...

00:46:09.000 --> 00:46:14.000
and now this section 3, here

00:46:14.000 --> 00:46:17.000
has tests for one of the functions of

00:46:17.000 --> 00:46:22.000
the functions of eev that call wget

00:46:22.000 --> 00:46:24.000
we need to run this sexp here to

00:46:24.000 --> 00:46:25.000
configure

00:46:25.000 --> 00:46:28.000
the path that is used by this function

00:46:28.000 --> 00:46:29.000
here

00:46:29.000 --> 00:46:32.000
and now we run we need to run the tests

00:46:32.000 --> 00:46:36.000
in the second sexp below... so this is a

00:46:36.000 --> 00:46:38.000
sexp that is here just for the sake of

00:46:38.000 --> 00:46:40.000
completeness, because it points to the

00:46:40.000 --> 00:46:42.000
beginning of a section,

00:46:42.000 --> 00:46:48.000
and this sexp here points to

00:46:48.000 --> 00:46:51.000
a series of tests in that section, and we

00:46:51.000 --> 00:46:54.000
need to run these tests to to check

00:46:54.000 --> 00:46:58.000
that they really work.

00:46:58.000 --> 00:47:01.000
Each of these `find-wget's here call

00:47:01.000 --> 00:47:03.000
wgets to download the file from the

00:47:03.000 --> 00:47:06.000
internet and it shows the the contents

00:47:06.000 --> 00:47:08.000
of this file in a temporary buffer. Let's

00:47:08.000 --> 00:47:12.000
try here...

00:47:12.000 --> 00:47:14.000
note that the name of this buffer is

00:47:14.000 --> 00:47:17.000
wget blah blah blah blah

00:47:17.000 --> 00:47:20.000
wget, colon, space, the url...

00:47:20.000 --> 00:47:24.000
with asterisks

00:47:24.000 --> 00:47:28.000
in the beginning and the end

00:47:28.000 --> 00:47:30.000
this is similar, but it also searches for

00:47:30.000 --> 00:47:33.000
the first occurrence of this string in

00:47:33.000 --> 00:47:34.000
that file...

00:47:34.000 --> 00:47:36.000
that's it -

00:47:36.000 --> 00:47:40.000
this one is similar, but it searches

00:47:40.000 --> 00:47:43.000
for the first occurrence of this

00:47:43.000 --> 00:47:47.000
in that file -

00:47:47.000 --> 00:47:49.000
it works -

00:47:49.000 --> 00:47:52.000
this test here tries to to download a

00:47:52.000 --> 00:47:56.000
file that does not exist,

00:47:56.000 --> 00:48:00.000
so it says that "wget can't download..."

00:48:00.000 --> 00:48:02.000
and these two tests are similar

00:48:02.000 --> 00:48:03.000
to the other

00:48:03.000 --> 00:48:06.000
ones above but they tell Emacs

00:48:06.000 --> 00:48:09.000
that this thing here is elisp code and

00:48:09.000 --> 00:48:12.000
should be colorized...

00:48:12.000 --> 00:48:15.000
the technical term is "fontified" -

00:48:15.000 --> 00:48:18.000
fontified as Lisp, so Emacs colors these

00:48:18.000 --> 00:48:22.000
things as comments,

00:48:22.000 --> 00:48:29.000
these things as code, and so on...

00:48:29.000 --> 00:48:32.000
so, that's it - all these tests work -

00:48:32.000 --> 00:48:35.000
note that all these tests are hidden in

00:48:35.000 --> 00:48:39.000
this sexp here -

00:48:39.000 --> 00:48:40.000
and now

00:48:40.000 --> 00:48:43.000
this link here explains the idea of

00:48:43.000 --> 00:48:45.000
anchors that I explained very briefly in

00:48:45.000 --> 00:48:47.000
the tests above...

00:48:47.000 --> 00:48:51.000
so this section of the main tutorial

00:48:51.000 --> 00:48:58.000
explains what are anchors

00:48:58.000 --> 00:49:00.000
note that

00:49:00.000 --> 00:49:03.000
we probably don't have a local copy

00:49:03.000 --> 00:49:06.000
of this video here

00:49:06.000 --> 00:49:09.000
so eev offers to download the local

00:49:09.000 --> 00:49:10.000
copy...

00:49:10.000 --> 00:49:13.000
but if we haven't configured

00:49:13.000 --> 00:49:18.000
the mpv media player we can use this url

00:49:18.000 --> 00:49:20.000
here to play the video starting from the

00:49:20.000 --> 00:49:26.000
right position.

00:49:26.000 --> 00:49:28.000
Now in section 4 we

00:49:28.000 --> 00:49:30.000
configure the

00:49:30.000 --> 00:49:33.000
pdf viewer that eev is going to use

00:49:33.000 --> 00:49:37.000
to make eev use the browser as our

00:49:37.000 --> 00:49:39.000
preferred pdf viewer

00:49:39.000 --> 00:49:41.000
and the configuration is just this line

00:49:41.000 --> 00:49:43.000
here, the tests are these...

00:49:43.000 --> 00:49:46.000
let me go straight to

00:49:46.000 --> 00:49:48.000
the one that is most interesting... it's

00:49:48.000 --> 00:49:51.000
going to open this local file here, and

00:49:51.000 --> 00:49:53.000
it's going to go to page 3 in that

00:49:53.000 --> 00:49:56.000
local file - oops,

00:49:56.000 --> 00:49:59.000
sorry I need to reconfigure one thing

00:49:59.000 --> 00:50:10.000
again... let me cheat -

00:50:10.000 --> 00:50:12.000
so please don't pay attention to what

00:50:12.000 --> 00:50:16.000
i'm doing now,

00:50:16.000 --> 00:50:36.000
please ignore me - um - oh sorry -

00:50:36.000 --> 00:50:39.000
that's it. It opened the local file and

00:50:39.000 --> 00:50:43.000
it opened it at page 3 - note

00:50:43.000 --> 00:50:46.000
that there are two other pages here

00:50:46.000 --> 00:50:49.000
and it's opening it at page 3...

00:50:49.000 --> 00:50:53.000
so it's working.

00:50:53.000 --> 00:50:55.000
People who want the technical details

00:50:55.000 --> 00:50:59.000
can run these three links here to

00:50:59.000 --> 00:51:01.000
to get more details... some of them are

00:51:01.000 --> 00:51:03.000
readable, and some of them are very

00:51:03.000 --> 00:51:05.000
technical, but anyway

00:51:05.000 --> 00:51:06.000
the explanations are there, and I'm

00:51:06.000 --> 00:51:08.000
supposing that people

00:51:08.000 --> 00:51:10.000
can read the more readable parts and can

00:51:10.000 --> 00:51:17.000
ignore the parts that are too technical.

00:51:17.000 --> 00:51:20.000
And we also need to tell

00:51:20.000 --> 00:51:23.000
eev to use this program here to

00:51:23.000 --> 00:51:26.000
to view pdfs as text...

00:51:26.000 --> 00:51:29.000
and this sexp here will open the pdf,

00:51:29.000 --> 00:51:33.000
convert it to text and go to page 3...

00:51:33.000 --> 00:51:35.000
that's it.

00:51:35.000 --> 00:51:37.000
This is page 2, and this is page 1, and

00:51:37.000 --> 00:51:39.000
this is a formfeed that separates the

00:51:39.000 --> 00:51:42.000
pages...

00:51:42.000 --> 00:51:47.000
and i'm going to skip this test.

00:51:47.000 --> 00:51:50.000
And now that we have configured all

00:51:50.000 --> 00:51:51.000
these things we have to save these

00:51:51.000 --> 00:51:54.000
configurations in our init file...

00:51:54.000 --> 00:51:56.000
and note that these configurations were

00:51:56.000 --> 00:51:58.000
scattered here -

00:51:58.000 --> 00:52:05.000
they were interspersed with tests.

00:52:05.000 --> 00:52:09.000
We have this setq, this defalias,

00:52:09.000 --> 00:52:14.000
and this other setq here,

00:52:14.000 --> 00:52:17.000
and in this section here we have these

00:52:17.000 --> 00:52:18.000
three lines

00:52:18.000 --> 00:52:21.000
in the same place, and also a first line

00:52:21.000 --> 00:52:25.000
that is a link to this sub-wconfig

00:52:25.000 --> 00:52:29.000
here, the wconfig that configures

00:52:29.000 --> 00:52:33.000
wget. The instructions here say that

00:52:33.000 --> 00:52:35.000
this is similar to something that we did

00:52:35.000 --> 00:52:38.000
before to save some configurations to

00:52:38.000 --> 00:52:40.000
the init file...

00:52:40.000 --> 00:52:44.000
let me go to my init file -

00:52:44.000 --> 00:52:45.000
I've been using it for a long time, ok?

00:52:45.000 --> 00:52:48.000
so I remember that the keys to go to

00:52:48.000 --> 00:52:52.000
the init file are M-5 M-5 M-j...

00:52:52.000 --> 00:52:55.000
and now:

00:52:55.000 --> 00:53:01.000
paste! So this is the result of

00:53:01.000 --> 00:53:04.000
running these configurations here...

00:53:04.000 --> 00:53:06.000
and note that this first line

00:53:06.000 --> 00:53:10.000
the line with the "See:"...

00:53:10.000 --> 00:53:16.000
go to this sub-wconfig, so we can

00:53:16.000 --> 00:53:18.000
run all these configurations and then

00:53:18.000 --> 00:53:20.000
forget what we did

00:53:20.000 --> 00:53:23.000
and then we can open our init file again

00:53:23.000 --> 00:53:26.000
and if we want to understand what we did

00:53:26.000 --> 00:53:28.000
we just need to run

00:53:28.000 --> 00:53:30.000
this sexp or this sexp

00:53:30.000 --> 00:53:33.000
and we go back to the

00:53:33.000 --> 00:53:36.000
temporary buffers that were used to

00:53:36.000 --> 00:53:42.000
configure all these things.

00:53:42.000 --> 00:53:46.000
So, now i've explained

00:53:46.000 --> 00:53:48.000
most of the basic ideas of the

00:53:48.000 --> 00:53:51.000
configuration... I can go a bit faster now.

00:53:51.000 --> 00:53:53.000
Now we have to configure some things

00:53:53.000 --> 00:53:55.000
for the shell...

00:53:55.000 --> 00:53:58.000
the thing is that on Windows it's

00:53:58.000 --> 00:54:00.000
better to use Eshell, that is a shell

00:54:00.000 --> 00:54:03.000
that is

00:54:03.000 --> 00:54:05.000
written in lisp, than to use the default

00:54:05.000 --> 00:54:09.000
shell from Windows...

00:54:09.000 --> 00:54:14.000
and we need to run these things,

00:54:14.000 --> 00:54:16.000
and we need to run

00:54:16.000 --> 00:54:19.000
these things here...

00:54:19.000 --> 00:54:20.000
and note that

00:54:20.000 --> 00:54:22.000
this line here says that this block

00:54:22.000 --> 00:54:29.000
here only needs to be run once -

00:54:29.000 --> 00:54:31.000
and the technical details are here - I'm

00:54:31.000 --> 00:54:34.000
not going to discuss them now -

00:54:34.000 --> 00:54:45.000
and here is a test...

00:54:45.000 --> 00:54:48.000
the important part is that

00:54:48.000 --> 00:54:51.000
these configs here define

00:54:51.000 --> 00:54:54.000
wget - note that it's not "wget.exe",

00:54:54.000 --> 00:54:56.000
it's simply "wget"...

00:54:56.000 --> 00:54:59.000
it defines wget as an alias that

00:54:59.000 --> 00:55:01.000
points to the wget.exe there that

00:55:01.000 --> 00:55:04.000
I have downloaded

00:55:04.000 --> 00:55:07.000
and we also need to

00:55:07.000 --> 00:55:14.000
run these very technical things here

00:55:14.000 --> 00:55:23.000
and the explanation is that...

00:55:23.000 --> 00:55:29.000
remember that

00:55:29.000 --> 00:55:33.000
I've shown how to run

00:55:33.000 --> 00:55:36.000
shells in Emacs...

00:55:36.000 --> 00:55:38.000
for example this shell here - and I've

00:55:38.000 --> 00:55:40.000
shown how we can

00:55:40.000 --> 00:55:42.000
use eepitch to control other targets, and

00:55:42.000 --> 00:55:45.000
the example that I gave was to

00:55:45.000 --> 00:55:48.000
to use it to run Python, in this

00:55:48.000 --> 00:55:53.000
window here...

00:55:53.000 --> 00:55:55.000
and the thing is that

00:55:55.000 --> 00:55:57.000
I don't know how to install Python on

00:55:57.000 --> 00:55:59.000
windows - at this moment I don't

00:55:59.000 --> 00:56:02.000
have anyone who can test it for me, I

00:56:02.000 --> 00:56:05.000
don't know if it works...

00:56:05.000 --> 00:56:09.000
so I did my basic tests with Lua, that I

00:56:09.000 --> 00:56:11.000
can install by just downloading two

00:56:11.000 --> 00:56:14.000
files and we did that when we were

00:56:14.000 --> 00:56:19.000
downloading many files with wget.

00:56:19.000 --> 00:56:21.000
Oh no, sorry -

00:56:21.000 --> 00:56:23.000
I'm talking about something that is only

00:56:23.000 --> 00:56:26.000
going to appear in another sub-wconfig -

00:56:26.000 --> 00:56:28.000
sorry -

00:56:28.000 --> 00:56:31.000
anyway, here the test just checks that

00:56:31.000 --> 00:56:36.000
both Eshell and the normal shell

00:56:36.000 --> 00:56:39.000
run the same thing here... they both run

00:56:39.000 --> 00:56:41.000
Eshell...

00:56:41.000 --> 00:56:45.000
we need to run this thing here too...

00:56:45.000 --> 00:56:47.000
the explanation is here - I'm not going to

00:56:47.000 --> 00:56:49.000
open the tutorial with the

00:56:49.000 --> 00:56:52.000
explanation -

00:56:52.000 --> 00:56:54.000
now there are some tests that we can do,

00:56:54.000 --> 00:56:57.000
but i'm not going to run these tests now...

00:56:57.000 --> 00:56:59.000
and then we have to save these things

00:56:59.000 --> 00:57:04.000
here in our init file...

00:57:04.000 --> 00:57:07.000
Again, there's a line that says

00:57:07.000 --> 00:57:09.000
that this is similar to

00:57:09.000 --> 00:57:12.000
these instructions here, so the detailed

00:57:12.000 --> 00:57:13.000
instructions are

00:57:13.000 --> 00:57:20.000
in our first sub-wconfig...

00:57:20.000 --> 00:57:23.000
and we need to copy this thing,

00:57:23.000 --> 00:57:30.000
and then go to our init file,

00:57:30.000 --> 00:57:33.000
and add these things to our init file.

00:57:33.000 --> 00:57:41.000
Done. Let me go back to the main wconfig.

00:57:41.000 --> 00:57:43.000
Note that we have completed this one,

00:57:43.000 --> 00:57:46.000
this one, and this one...

00:57:46.000 --> 00:57:49.000
and this thing here just

00:57:49.000 --> 00:57:53.000
checks that that we can run Lua from Emacs

00:57:53.000 --> 00:57:56.000
it's what I was saying before about

00:57:56.000 --> 00:58:01.000
running Python or running Lua...

00:58:01.000 --> 00:58:04.000
so this is a basic test that calls Lua

00:58:04.000 --> 00:58:11.000
with its full path.

00:58:11.000 --> 00:58:14.000
Remember that I had to to run some hacks

00:58:14.000 --> 00:58:16.000
here to make things behave as as if we

00:58:16.000 --> 00:58:18.000
were on Windows...

00:58:18.000 --> 00:58:21.000
so I'm not sure if all these things

00:58:21.000 --> 00:58:24.000
are going to run on Windows or not -

00:58:24.000 --> 00:58:27.000
and then we have to run these sexps

00:58:27.000 --> 00:58:31.000
here, and then run the test that is below...

00:58:31.000 --> 00:58:34.000
let me run this, and this, and this, and

00:58:34.000 --> 00:58:39.000
this... and then the test is here -

00:58:39.000 --> 00:58:44.000
now I have Lua running inside an

00:58:44.000 --> 00:58:46.000
Emacs window,

00:58:46.000 --> 00:58:48.000
and it was not invoked from a shell, it

00:58:48.000 --> 00:58:52.000
was invoked directly.

00:58:52.000 --> 00:58:55.000
Everything works,

00:58:55.000 --> 00:58:57.000
and now we need to save these things in

00:58:57.000 --> 00:59:00.000
our init file.

00:59:00.000 --> 00:59:07.000
So, again: copy, go to the init file,

00:59:07.000 --> 00:59:09.000
paste.

00:59:09.000 --> 00:59:17.000
Let me go back to the main wconfig...

00:59:17.000 --> 00:59:21.000
and now we need to configure mpv... the mpv

00:59:21.000 --> 00:59:26.000
media player

00:59:26.000 --> 00:59:28.000
this is similar to how we configured the

00:59:28.000 --> 00:59:34.000
browser. We have to

00:59:34.000 --> 00:59:38.000
configure the paths to mpv -

00:59:38.000 --> 00:59:40.000
I mean people have to install mpv and

00:59:40.000 --> 00:59:45.000
then configure the path to mpv -

00:59:45.000 --> 00:59:47.000
I'm not going to repeat it...

00:59:47.000 --> 00:59:50.000
it also has some tests...

00:59:50.000 --> 00:59:54.000
and after configuring this thing here we

00:59:54.000 --> 00:59:57.000
go to our init file and we save this

00:59:57.000 --> 01:00:00.000
thing to our init file...

01:00:00.000 --> 01:00:02.000
and that's it.

01:00:02.000 --> 01:00:05.000
If we've done that

01:00:05.000 --> 01:00:07.000
we will have five blocks here, each one

01:00:07.000 --> 01:00:09.000
corresponding to one of the

01:00:09.000 --> 01:00:13.000
the sub-wconfigs, and

01:00:13.000 --> 01:00:17.000
each one contains some configurations

01:00:17.000 --> 01:00:19.000
or customizations,

01:00:19.000 --> 01:00:23.000
and also lots of links to help -

01:00:23.000 --> 01:00:24.000
I mean,

01:00:24.000 --> 01:00:26.000
we can treat these links here as

01:00:26.000 --> 01:00:29.000
links that open the black boxes and

01:00:29.000 --> 01:00:32.000
explain what these things are

01:00:32.000 --> 01:00:35.000
and all the commands are very explicit

01:00:35.000 --> 01:00:37.000
here... if we want to understand what

01:00:37.000 --> 01:00:41.000
`require' does,

01:00:41.000 --> 01:00:43.000
the main tutorial of

01:00:43.000 --> 01:00:46.000
of eev - this one

01:00:46.000 --> 01:00:49.000
explains in section... 4, if I remember

01:00:49.000 --> 01:00:57.000
correctly...

01:00:57.000 --> 01:01:01.000
that's it.

01:01:01.000 --> 01:01:03.000
Suppose that we want information

01:01:03.000 --> 01:01:10.000
about an Emacs function.

01:01:10.000 --> 01:01:14.000
This video here explains that in details,

01:01:14.000 --> 01:01:18.000
and explains also the rationale

01:01:18.000 --> 01:01:21.000
behind all these things...

01:01:21.000 --> 01:01:23.000
the standard way to get help about the

01:01:23.000 --> 01:01:28.000
function is to type C-h f...

01:01:28.000 --> 01:01:31.000
Emacs takes the name of the function from

01:01:31.000 --> 01:01:32.000
the the position

01:01:32.000 --> 01:01:35.000
under the cursor - the "point" - we can just

01:01:35.000 --> 01:01:41.000
press enter here and get help...

01:01:41.000 --> 01:01:43.000
this help contains too much magic

01:01:43.000 --> 01:01:45.000
for example this thing here is a

01:01:45.000 --> 01:01:46.000
hyperlink

01:01:46.000 --> 01:01:49.000
and it's for me it's a black box that I

01:01:49.000 --> 01:01:51.000
do not know how to open

01:01:51.000 --> 01:01:53.000
i know how to type enter here

01:01:53.000 --> 01:01:56.000
to go to the source code,

01:01:56.000 --> 01:01:59.000
but I don't know what exactly

01:01:59.000 --> 01:02:01.000
Emacs runs when it does that... I do not

01:02:01.000 --> 01:02:04.000
know what is the Lisp code corresponding

01:02:04.000 --> 01:02:07.000
to typing Enter here -

01:02:07.000 --> 01:02:10.000
and I also don't know why these things

01:02:10.000 --> 01:02:14.000
are in italics and other things are not...

01:02:14.000 --> 01:02:16.000
so, many years ago

01:02:16.000 --> 01:02:18.000
I started to experiment

01:02:18.000 --> 01:02:21.000
with the way "without magic"

01:02:21.000 --> 01:02:23.000
of doing something similar...

01:02:23.000 --> 01:02:28.000
and my way is by typing M-h M-f

01:02:28.000 --> 01:02:29.000
and then Enter

01:02:29.000 --> 01:02:34.000
and this thing here contains hyperlinks

01:02:34.000 --> 01:02:36.000
that are

01:02:36.000 --> 01:02:39.000
not black boxes, and that are pure text -

01:02:39.000 --> 01:02:43.000
I can copy these things to my notes...

01:02:43.000 --> 01:02:44.000
and this one here goes to that

01:02:44.000 --> 01:02:47.000
description, this one here goes to the

01:02:47.000 --> 01:02:50.000
source code of require...

01:02:50.000 --> 01:02:55.000
this one here goes to the manual,

01:02:55.000 --> 01:03:00.000
and so on...

01:03:00.000 --> 01:03:02.000
so this is the configuration without

01:03:02.000 --> 01:03:06.000
magic.

01:03:06.000 --> 01:03:09.000
I promised that I was also going to

01:03:09.000 --> 01:03:12.000
show the configuration with just

01:03:12.000 --> 01:03:16.000
a bit of magic.

01:03:16.000 --> 01:03:21.000
If we type find-wconfig-links...

01:03:21.000 --> 01:03:25.000
here, if you run this

01:03:25.000 --> 01:03:28.000
it says that if we want to configure eev

01:03:28.000 --> 01:03:30.000
on windows with _some_ magic we can follow

01:03:30.000 --> 01:03:34.000
the instructions here...

01:03:34.000 --> 01:03:36.000
and here we have something very similar,

01:03:36.000 --> 01:03:40.000
but with fewer tests,

01:03:40.000 --> 01:03:45.000
and less documentation...

01:03:45.000 --> 01:03:49.000
and we just need to

01:03:49.000 --> 01:03:51.000
configure these things here,

01:03:51.000 --> 01:03:53.000
to follow the instructions here - that I'm

01:03:53.000 --> 01:03:55.000
not going to follow - and the thing is

01:03:55.000 --> 01:03:58.000
that after

01:03:58.000 --> 01:04:01.000
running all these things

01:04:01.000 --> 01:04:06.000
we can save our configuration as just this

01:04:06.000 --> 01:04:07.000
thing here

01:04:07.000 --> 01:04:09.000
so we can save this configuration

01:04:09.000 --> 01:04:14.000
in Emacs instead of this big thing above

01:04:14.000 --> 01:04:17.000
let me compare the version without

01:04:17.000 --> 01:04:19.000
magic to the version with very little

01:04:19.000 --> 01:04:21.000
magic. This is the result of running the

01:04:21.000 --> 01:04:24.000
configuration

01:04:24.000 --> 01:04:29.000
with no magic, and this is the result of

01:04:29.000 --> 01:04:30.000
running the configuration with very

01:04:30.000 --> 01:04:33.000
little magic

01:04:33.000 --> 01:04:36.000
and note that this configuration here it

01:04:36.000 --> 01:04:38.000
ends with this sexp here, that is a bit

01:04:38.000 --> 01:04:40.000
magic...

01:04:40.000 --> 01:04:43.000
if we want to understand what this

01:04:43.000 --> 01:04:46.000
magic thing does

01:04:46.000 --> 01:04:53.000
this sexp runs these three blocks

01:04:53.000 --> 01:04:56.000
here... so this is the expansion

01:04:56.000 --> 01:05:03.000
of whatthis sexp does.

01:05:03.000 --> 01:05:13.000
Ok, so if we look at our init file again

01:05:13.000 --> 01:05:17.000
this sexp here - (ee-wconfig-run-magic) -

01:05:17.000 --> 01:05:29.000
corresponds to all this stuff here.

01:05:29.000 --> 01:05:31.000
And now that we have everything

01:05:31.000 --> 01:05:33.000
configured

01:05:33.000 --> 01:05:35.000
we can

01:05:35.000 --> 01:05:36.000
run an exercise:

01:05:36.000 --> 01:05:40.000
we can learn Org!

01:05:40.000 --> 01:05:42.000
Let me make a pause on this

01:05:42.000 --> 01:05:45.000
video, and i'm going to record the part 4

01:05:45.000 --> 01:05:51.000
of the video in a few minutes.

01:05:51.000 --> 01:05:54.000
Hi! I'm back.

01:05:54.000 --> 01:05:57.000
In this part of the video I'm going to

01:05:57.000 --> 01:06:00.000
explain how to

01:06:00.000 --> 01:06:03.000
do the exercise, which is how to use eev

01:06:03.000 --> 01:06:06.000
to learn Org.

01:06:06.000 --> 01:06:09.000
Remember that here in the main

01:06:09.000 --> 01:06:13.000
wconfig buffer the last part says

01:06:13.000 --> 01:06:15.000
"Exercise: Learn Org!" and it has this

01:06:15.000 --> 01:06:16.000
expression here...

01:06:16.000 --> 01:06:19.000
if we execute this expression we get all

01:06:19.000 --> 01:06:23.000
the instructions - I mean

01:06:23.000 --> 01:06:24.000
what we're going to see now is the

01:06:24.000 --> 01:06:26.000
current version of

01:06:26.000 --> 01:06:28.000
these instructions - this is a work in

01:06:28.000 --> 01:06:30.000
progress, I'm probably going to

01:06:30.000 --> 01:06:34.000
rewrite some things...

01:06:34.000 --> 01:06:36.000
anyway, here we have

01:06:36.000 --> 01:06:38.000
some URLs...

01:06:38.000 --> 01:06:42.000
this is the page about eev-wconfig,

01:06:42.000 --> 01:06:44.000
and its last section

01:06:44.000 --> 01:06:48.000
is this one: "Exercise: Learn Org!"

01:06:48.000 --> 01:06:51.000
and it has some links here that I'm not

01:06:51.000 --> 01:06:53.000
going to open... the important thing is

01:06:53.000 --> 01:06:55.000
that

01:06:55.000 --> 01:06:58.000
this link goes to a README that explains

01:06:58.000 --> 01:07:01.000
what is the .zip file with the

01:07:01.000 --> 01:07:03.000
videos

01:07:03.000 --> 01:07:04.000
so

01:07:04.000 --> 01:07:09.000
here is the README of the playlist,

01:07:09.000 --> 01:07:11.000
and we can download the video from this

01:07:11.000 --> 01:07:13.000
link here.

01:07:13.000 --> 01:07:17.000
At this moment this link points to

01:07:17.000 --> 01:07:18.000
Google Drive,

01:07:18.000 --> 01:07:20.000
and the file is quite big - it's

01:07:20.000 --> 01:07:24.000
1.7 gigabytes -

01:07:24.000 --> 01:07:29.000
and if we click here

01:07:29.000 --> 01:07:31.000
Google Drive says that it can't open

01:07:31.000 --> 01:07:34.000
the file, but we can download it...

01:07:34.000 --> 01:07:38.000
so...

01:07:38.000 --> 01:07:40.000
well, you have to download the file, you

01:07:40.000 --> 01:07:42.000
have to unzip it somewhere,

01:07:42.000 --> 01:07:44.000
and then

01:07:44.000 --> 01:07:45.000
you have to follow these

01:07:45.000 --> 01:07:48.000
instructions here.

01:07:48.000 --> 01:07:50.000
The important thing of this exercise

01:07:50.000 --> 01:07:52.000
is that you need to learn how to create

01:07:52.000 --> 01:07:55.000
shorter hyperlinks.

01:07:55.000 --> 01:07:57.000
They are explained in this section of

01:07:57.000 --> 01:08:00.000
the main tutorial - remember that

01:08:00.000 --> 01:08:03.000
find-eev-quick-intro is the main tutorial -

01:08:03.000 --> 01:08:06.000
and I think that these video links are

01:08:06.000 --> 01:08:11.000
quite good, because they explain how

01:08:11.000 --> 01:08:13.000
this function creates several other

01:08:13.000 --> 01:08:15.000
functions...

01:08:15.000 --> 01:08:21.000
anyway,

01:08:21.000 --> 01:08:27.000
so: this link points to that section...

01:08:27.000 --> 01:08:30.000
you have to download the .zip you

01:08:30.000 --> 01:08:33.000
have to unpack it somewhere, and then you

01:08:33.000 --> 01:08:35.000
have to create a link to that directory...

01:08:35.000 --> 01:08:38.000
which means that you have to

01:08:38.000 --> 01:08:41.000
edit the directory here to

01:08:41.000 --> 01:08:44.000
the right directory

01:08:44.000 --> 01:08:47.000
and this is probably going to be very

01:08:47.000 --> 01:09:01.000
useful: Emacs has a mode called Dired...

01:09:01.000 --> 01:09:03.000
a mode for editing directories

01:09:03.000 --> 01:09:08.000
by treating them as text...

01:09:08.000 --> 01:09:11.000
so here we are in Dired mode,

01:09:11.000 --> 01:09:14.000
and we can navigate directories -

01:09:14.000 --> 01:09:16.000
for example here we open a

01:09:16.000 --> 01:09:20.000
subdirectory, if you click here we go

01:09:20.000 --> 01:09:26.000
back to where we were...

01:09:26.000 --> 01:09:30.000
this directory is empty. Anyway, you need

01:09:30.000 --> 01:09:33.000
to learn how to use this to navigate to

01:09:33.000 --> 01:09:34.000
the directory

01:09:34.000 --> 01:09:38.000
in which you unpacked the videos,

01:09:38.000 --> 01:09:40.000
and then the next part of the exercise

01:09:40.000 --> 01:09:47.000
is to learn how to use M-h M-e,

01:09:47.000 --> 01:09:50.000
which is find-extra-file-links,

01:09:50.000 --> 01:09:52.000
that is explained here,

01:09:52.000 --> 01:09:55.000
in this section of the tutorial...

01:09:55.000 --> 01:10:01.000
and then you need to to use M-h M-e

01:10:01.000 --> 01:10:04.000
to create links like these ones.

01:10:04.000 --> 01:10:07.000
Let me show how to do that using

01:10:07.000 --> 01:10:09.000
links that corresponds to the place in

01:10:09.000 --> 01:10:11.000
which I opened the

01:10:11.000 --> 01:10:18.000
the zip file in my machine.

01:10:18.000 --> 01:10:21.000
This is the directory... sorry - if I

01:10:21.000 --> 01:10:25.000
execute this the code-c-d it defines several

01:10:25.000 --> 01:10:27.000
functions,

01:10:27.000 --> 01:10:30.000
including the function

01:10:30.000 --> 01:10:35.000
find-rainerkoeniggrep...

01:10:35.000 --> 01:10:37.000
it also defines the function

01:10:37.000 --> 01:10:40.000
find-rainerkoenigfile and if we

01:10:40.000 --> 01:10:43.000
execute that function we go to this

01:10:43.000 --> 01:10:46.000
directory here

01:10:46.000 --> 01:10:50.000
which is the directory in which

01:10:50.000 --> 01:10:53.000
I unpacked the

01:10:53.000 --> 01:10:57.000
the zip file..

01:10:57.000 --> 01:11:00.000
and if I type M-h M-e in

01:11:00.000 --> 01:11:03.000
that directory I get a temporary buffer

01:11:03.000 --> 01:11:04.000
like this one...

01:11:04.000 --> 01:11:06.000
i need to

01:11:06.000 --> 01:11:09.000
use a smaller font here because

01:11:09.000 --> 01:11:12.000
some lines are very long...

01:11:12.000 --> 01:11:17.000
here you have to type "rainerkoenig"

01:11:17.000 --> 01:11:20.000
and execute this line here... it will

01:11:20.000 --> 01:11:22.000
regenerate the buffer.

01:11:22.000 --> 01:11:25.000
So pay attention to the "c"s

01:11:25.000 --> 01:11:27.000
between curly brackets...

01:11:27.000 --> 01:11:32.000
they become "rainerkoenig" -

01:11:32.000 --> 01:11:35.000
and then you have to

01:11:35.000 --> 01:11:42.000
copy these things here to your notes -

01:11:42.000 --> 01:11:48.000
to here -

01:11:48.000 --> 01:11:51.000
and if we did everything correctly then

01:11:51.000 --> 01:11:54.000
we can execute this thing here... it will

01:11:54.000 --> 01:11:57.000
define the function

01:11:57.000 --> 01:11:59.000
find-rainerkoenigfile

01:11:59.000 --> 01:12:01.000
which will open this directory, as I did

01:12:01.000 --> 01:12:03.000
above...

01:12:03.000 --> 01:12:05.000
and now we can

01:12:05.000 --> 01:12:07.000
choose one of these videos here, for

01:12:07.000 --> 01:12:10.000
example, the first one...

01:12:10.000 --> 01:12:13.000
but we have to choose the video

01:12:13.000 --> 01:12:17.000
file, not the subtitle file.

01:12:17.000 --> 01:12:24.000
we have to type M-h M-e again

01:12:24.000 --> 01:12:26.000
and now we have to choose a short name

01:12:26.000 --> 01:12:28.000
for the video - I suggest

01:12:28.000 --> 01:12:32.000
either using this or using an

01:12:32.000 --> 01:12:34.000
abbreviation of the title... but let me

01:12:34.000 --> 01:12:38.000
choose this.

01:12:38.000 --> 01:12:40.000
Now I will

01:12:40.000 --> 01:12:42.000
run this first line again. It will

01:12:42.000 --> 01:12:45.000
regenerate this buffer, so the

01:12:45.000 --> 01:12:48.000
"c"s between curly braces will become

01:12:48.000 --> 01:12:51.000
this thing...

01:12:51.000 --> 01:12:54.000
and now this block here

01:12:54.000 --> 01:12:57.000
points to that video file.

01:12:57.000 --> 01:13:00.000
We can test that by executing

01:13:00.000 --> 01:13:03.000
this line -

01:13:03.000 --> 01:13:06.000
it opens the video -

01:13:06.000 --> 01:13:10.000
and if we execute this line here

01:13:10.000 --> 01:13:12.000
it defines the function

01:13:12.000 --> 01:13:17.000
find-E01S01video

01:13:17.000 --> 01:13:20.000
and we can execute this function

01:13:20.000 --> 01:13:23.000
find-E01S01video,

01:13:23.000 --> 01:13:25.000
and it will be a short hyperlink to this

01:13:25.000 --> 01:13:27.000
video.

01:13:27.000 --> 01:13:31.000
And after doing that we can copy

01:13:31.000 --> 01:13:33.000
the relevant lines

01:13:33.000 --> 01:13:36.000
to our notes

01:13:36.000 --> 01:13:38.000
the relevant lines are these ones -

01:13:38.000 --> 01:13:43.000
actually this one is not necessary -

01:13:43.000 --> 01:13:47.000
and now that we have this we have

01:13:47.000 --> 01:13:51.000
two functions, the sexps

01:13:51.000 --> 01:13:54.000
that define short hyperlinks...

01:13:54.000 --> 01:13:56.000
this one here define a hyperlink to the

01:13:56.000 --> 01:13:58.000
directory, and this one here defines

01:13:58.000 --> 01:14:01.000
a hyperlink to the video...

01:14:01.000 --> 01:14:03.000
and this is

01:14:03.000 --> 01:14:07.000
quite similar to these examples here but

01:14:07.000 --> 01:14:10.000
note that the examples have

01:14:10.000 --> 01:14:13.000
bad paths that people will have to fix

01:14:13.000 --> 01:14:17.000
somehow...

01:14:17.000 --> 01:14:19.000
and that's it.

01:14:19.000 --> 01:14:22.000
I don't know if this exercise is easy

01:14:22.000 --> 01:14:24.000
enough, I think that it's a bit hard,

01:14:24.000 --> 01:14:26.000
unfortunately... but if people can manage

01:14:26.000 --> 01:14:29.000
to do this they can use

01:14:29.000 --> 01:14:32.000
these things to

01:14:32.000 --> 01:14:34.000
create an index of the videos that they

01:14:34.000 --> 01:14:36.000
have watched...

01:14:36.000 --> 01:14:39.000
and note that we can duplicate

01:14:39.000 --> 01:14:41.000
this line and change

01:14:41.000 --> 01:14:46.000
the time mark here to, 5:00, say...

01:14:46.000 --> 01:14:50.000
oops, this video is shorter than that -

01:14:50.000 --> 01:14:53.000
2:00 -

01:14:53.000 --> 01:14:56.000
and we can use these things to

01:14:56.000 --> 01:15:01.000
create an index of the video

01:15:01.000 --> 01:15:06.000
with a short summary of what this

01:15:06.000 --> 01:15:08.000
position means here... sorry for my lack of

01:15:08.000 --> 01:15:10.000
imagination, but

01:15:10.000 --> 01:15:12.000
suppose that

01:15:12.000 --> 01:15:14.000
at the moment 2:00 of the video

01:15:14.000 --> 01:15:16.000
there's "blah" happening.

01:15:16.000 --> 01:15:22.000
so this sexp here opens the video at 2:00

01:15:22.000 --> 01:15:24.000
and we can use that to mark the

01:15:24.000 --> 01:15:26.000
positions of the video that we want to

01:15:26.000 --> 01:15:29.000
watch again - especially the parts of

01:15:29.000 --> 01:15:31.000
the video

01:15:31.000 --> 01:15:34.000
in which Rainer Koenig explains

01:15:34.000 --> 01:15:36.000
things that

01:15:36.000 --> 01:15:37.000
we

01:15:37.000 --> 01:15:38.000
will have to watch many times to

01:15:38.000 --> 01:15:41.000
understand and to memorize the key

01:15:41.000 --> 01:15:43.000
sequences.

01:15:43.000 --> 01:15:48.000
Uh, yeah, so that's it. =)

