WEBVTT


00:00:01.719 --> 00:00:02.600
[Speaker 0]: 5 seconds. Oh, actually,

00:00:07.279 --> 00:00:08.320
[Speaker 1]: Sorry, I keep delaying.

00:00:08.320 --> 00:00:09.559
I keep forgetting that we have an

00:00:09.559 --> 00:00:11.639
introduction now. The introduction is flying.

00:00:02.600 --> 00:00:18.883
[Speaker 0]: a little more. You're going to give a

00:00:22.260 --> 00:00:24.320
[Speaker 1]: Well, it's about 5 seconds now.

00:00:19.675 --> 00:00:27.560
[Speaker 0]: 30-second, right? Just say go when you want

00:00:29.060 --> 00:00:31.280
[Speaker 1]: Sure. You'll hear me anyway.

00:00:27.560 --> 00:00:32.299
[Speaker 0]: me to go. Okay.

00:00:33.260 --> 00:00:35.220
[Speaker 1]: All right, I think we are live now.

00:00:35.220 --> 00:00:36.100
So hi again, everyone.

00:00:36.100 --> 00:00:37.900
I promised you we would be back in about 30

00:00:37.900 --> 00:00:39.940
seconds. I lied, it was actually 1 minute,

00:00:40.160 --> 00:00:41.760
but we are here with Bob.

00:00:41.760 --> 00:00:42.840
Hi, Bob, how are you doing?

00:00:43.380 --> 00:00:46.940
[Speaker 0]: Hi, doing great. Glad to

00:00:46.940 --> 00:00:50.600
[Speaker 1]: be with you. Yeah, glad to be here,

00:00:50.600 --> 00:00:52.580
and so are we. We're glad to have you again

00:00:52.580 --> 00:00:54.440
this year. So what we're going to do,

00:00:54.440 --> 00:00:56.140
we're not going to waste any time right now

00:00:56.140 --> 00:00:57.880
with chit-chats. What we're going to do,

00:00:57.880 --> 00:00:59.059
we're going to move straight into your

00:00:59.059 --> 00:01:01.120
presentation, Bob, so that you have as much

00:01:01.120 --> 00:01:04.239
time as you can. I'm going to recede into the

00:01:04.239 --> 00:01:07.440
background. I am going to full screen your

00:01:07.440 --> 00:01:08.979
presentation on a stream.

00:01:09.860 --> 00:01:11.680
And Bob, the floor is all yours.

00:01:12.940 --> 00:01:14.720
[Speaker 0]: Thank you very much, Leo.

00:01:15.040 --> 00:01:18.400
Glad to be here. I hope everybody has an idea

00:01:18.400 --> 00:01:22.780
of what Hyperbole is, but it's a broad

00:01:22.900 --> 00:01:25.880
information management system inside Emacs

00:01:26.400 --> 00:01:28.540
that works in all major modes.

00:01:28.860 --> 00:01:31.760
It's a global minor mode that you can turn on

00:01:31.760 --> 00:01:34.760
and off very rapidly so that you can just get

00:01:34.760 --> 00:01:36.160
in and out of hyperbole.

00:01:36.760 --> 00:01:40.940
And it works mostly from a mini buffer menu

00:01:41.400 --> 00:01:44.040
that if we just hit ctrl H H we see at the

00:01:44.040 --> 00:01:47.420
bottom of the screen here and as you see in

00:01:47.420 --> 00:01:48.980
some of this text right here,

00:01:51.040 --> 00:01:55.680
Dee will show you a demo with all these video

00:01:55.680 --> 00:01:57.680
links of Hyperbole now.

00:01:57.900 --> 00:02:01.780
But let's just get into the top 10 reasons to

00:02:01.780 --> 00:02:08.840
use Hyperbole. Number 10 is a key series

00:02:10.160 --> 00:02:12.600
curly braces. So you just put curly braces

00:02:12.600 --> 00:02:17.620
around any set of key sequences that you want

00:02:19.760 --> 00:02:22.440
and hyperbole magically turns that into what

00:02:22.440 --> 00:02:25.640
we call an implicit button a hyper button and

00:02:25.640 --> 00:02:28.580
any kind of text that you have so if we go

00:02:28.580 --> 00:02:35.760
down here and we just click click here we see

00:02:35.820 --> 00:02:40.220
it that was a complex button that said let's

00:02:40.400 --> 00:02:43.200
start a shell, let's set an environment

00:02:43.320 --> 00:02:45.140
variable as you see the command right up

00:02:45.140 --> 00:02:47.420
there, and then let's do a grep over the

00:02:47.420 --> 00:02:50.680
hyperbole code and find all instances of a

00:02:50.680 --> 00:02:55.360
particular label. So if we hit made a return,

00:02:55.400 --> 00:02:57.260
that's called the action key.

00:02:57.280 --> 00:02:59.340
That's what you use throughout hyperbole when

00:02:59.340 --> 00:03:01.900
you just want to activate any kind of button.

00:03:02.020 --> 00:03:06.380
So you see it jumped to the grep output and

00:03:06.380 --> 00:03:08.440
this is in a shell buffer it's not in a

00:03:08.440 --> 00:03:11.180
compilation buffer so anywhere that you have

00:03:11.180 --> 00:03:13.760
this sort of thing it's also an implicit

00:03:13.780 --> 00:03:17.040
button and any sort of grep output or

00:03:17.040 --> 00:03:20.780
compiler output you can just jump to with the

00:03:22.120 --> 00:03:23.580
same key, made a return.

00:03:23.960 --> 00:03:29.240
So that's key series, the first part.

00:03:29.440 --> 00:03:33.880
And then just to note that you can also just

00:03:33.880 --> 00:03:39.000
do a, well I'll just do it here and show you

00:03:39.000 --> 00:03:43.380
that you can do a recursive grep with this

00:03:43.380 --> 00:03:45.840
hyperbole command, HYPBR grep.

00:03:46.060 --> 00:03:49.000
And if you're in an Emacs list buffer,

00:03:50.860 --> 00:03:54.740
it will only grep across the Emacs list.

00:03:54.760 --> 00:03:58.340
So a very handy way to just go through your

00:03:58.340 --> 00:04:01.040
code very rapidly and then jump to various

00:04:01.040 --> 00:04:04.280
points in it. So we have a lot to cover

00:04:04.280 --> 00:04:05.800
today, so I'm going to go through this

00:04:05.800 --> 00:04:07.560
rapidly. This isn't a tutorial,

00:04:07.800 --> 00:04:10.340
it's just to get you interested in some of

00:04:10.340 --> 00:04:13.060
the features, and then there's a ton of

00:04:13.060 --> 00:04:15.920
reference material and videos now available

00:04:15.980 --> 00:04:18.860
for Hyperlink. So let's go to number 9.

00:04:20.019 --> 00:04:22.360
Path names become implicit buttons.

00:04:22.500 --> 00:04:24.060
You don't even have to quote them.

00:04:24.060 --> 00:04:26.920
You can add environment variables or elist

00:04:26.920 --> 00:04:29.200
variables with the syntax right here.

00:04:29.380 --> 00:04:32.180
So here we have a shell script that's

00:04:32.180 --> 00:04:33.500
somewhere on our path.

00:04:33.680 --> 00:04:36.380
And notice path is an environment variable

00:04:36.380 --> 00:04:39.140
with many different paths within it,

00:04:39.140 --> 00:04:42.600
right? But Hyperbole knows that and it

00:04:42.600 --> 00:04:44.980
searches the path, gets the first match,

00:04:45.600 --> 00:04:48.620
finds it, and finds the actual shell script.

00:04:48.660 --> 00:04:50.420
So you can just embed that anywhere.

00:04:50.540 --> 00:04:52.160
Here we have a list variable,

00:04:52.280 --> 00:04:54.360
hyperbdur, which is the home directory for

00:04:54.360 --> 00:04:58.120
hyperbole, and then a markdown file,

00:04:58.320 --> 00:05:01.680
and a link to a direct section in the file,

00:05:01.780 --> 00:05:05.220
and the 5 colon 5 means go to line 5 within

00:05:05.220 --> 00:05:07.260
that section and column 5.

00:05:07.380 --> 00:05:09.400
So let's just try it. Boom,

00:05:09.420 --> 00:05:11.500
we're right there, and we're on another link

00:05:11.500 --> 00:05:13.220
that we could activate as well.

00:05:13.420 --> 00:05:17.960
So notice the next line is the same link but

00:05:17.960 --> 00:05:20.280
this is how you normally have to do it in a

00:05:20.280 --> 00:05:23.160
markdown file. You have to change the section

00:05:23.160 --> 00:05:25.640
header to have dashes but with hyperbole you

00:05:25.640 --> 00:05:28.120
don't have to. You can just put it exactly

00:05:28.140 --> 00:05:29.840
like you see it in your file.

00:05:30.540 --> 00:05:34.660
Here the pound syntax for sections is really

00:05:34.660 --> 00:05:36.640
a generic syntax in the hyperbole.

00:05:37.360 --> 00:05:39.840
And so it works in all different kinds of

00:05:39.840 --> 00:05:41.500
files, your programming files.

00:05:42.100 --> 00:05:45.240
Here's a shell script and we said let's just

00:05:45.240 --> 00:05:49.120
go to the first comment that has alias in it.

00:05:49.120 --> 00:05:51.700
Notice we didn't have to say the whole line,

00:05:51.700 --> 00:05:53.160
just the first part of it.

00:05:53.160 --> 00:05:58.140
And it matched to it. Here we have a link to

00:05:58.140 --> 00:06:01.680
our hyperbole structured outliner called the

00:06:01.680 --> 00:06:04.660
K Outliner. And you can see it auto-numbers

00:06:05.080 --> 00:06:08.000
all these cells. But in addition to just

00:06:08.000 --> 00:06:10.640
displaying, you can also add a pipe symbol

00:06:10.640 --> 00:06:14.900
near the end and use this view syntax to clip

00:06:14.900 --> 00:06:17.500
to 2 lines and show blank lines.

00:06:17.500 --> 00:06:19.920
So let's see if each node gets clipped to 2

00:06:19.920 --> 00:06:22.680
lines. So you see they're all just 2 now with

00:06:22.680 --> 00:06:25.280
the ellipses and then we can expand them.

00:06:25.320 --> 00:06:28.760
So a lot of power there just with path names.

00:06:29.380 --> 00:06:31.120
Let's continue to number 8.

00:06:31.120 --> 00:06:32.940
[Speaker 1]: Can I just interrupt you just a bit?

00:06:33.420 --> 00:06:33.920
[Speaker 0]: Yes.

00:06:34.740 --> 00:06:37.720
[Speaker 1]: I think your phone, so we have your phone set

00:06:37.720 --> 00:06:40.460
up in case your internet misbehaves and we've

00:06:40.640 --> 00:06:42.080
set this up before we started,

00:06:42.100 --> 00:06:44.380
but I think the vibration is a little loud

00:06:44.380 --> 00:06:46.160
whenever it does. Can you maybe move it a

00:06:46.160 --> 00:06:50.380
little bit? I think so.

00:06:50.380 --> 00:06:51.880
It will have to vibrate again.

00:06:47.740 --> 00:06:54.220
[Speaker 0]: Is that okay? No, my phone...

00:06:54.380 --> 00:06:56.880
Okay. It shouldn't have been vibrating.

00:06:59.480 --> 00:07:01.260
[Speaker 1]: have been another device,

00:07:01.280 --> 00:07:02.800
but definitely we had vibration.

00:07:02.800 --> 00:07:04.500
Anyway, carry on. Sorry for the interruption.

00:06:57.640 --> 00:07:06.920
[Speaker 0]: It could be me. It might So number 8,

00:07:07.800 --> 00:07:10.520
special prefixes. There are 3 prefixes you

00:07:10.520 --> 00:07:11.820
can attach to path names.

00:07:11.820 --> 00:07:13.680
The first, if you want to load,

00:07:13.820 --> 00:07:16.040
instead of just finding a file,

00:07:16.620 --> 00:07:19.460
an ELIST file, you can actually load it.

00:07:19.540 --> 00:07:22.060
And so I can just hit made a return on this,

00:07:22.200 --> 00:07:24.300
and you see in the mini buffer,

00:07:25.200 --> 00:07:27.100
it loaded it as compiled e-list.

00:07:27.240 --> 00:07:29.340
I could put a .el on here,

00:07:29.500 --> 00:07:33.500
a .elc, .gz, all of that'll work,

00:07:33.580 --> 00:07:36.420
and just put a dash in front to load it.

00:07:36.580 --> 00:07:38.720
If you want to run a shell command,

00:07:38.720 --> 00:07:41.040
just put an exclamation mark in front of

00:07:41.040 --> 00:07:42.540
something and again you can have the

00:07:42.540 --> 00:07:44.620
environment variable. So here we're saying

00:07:44.620 --> 00:07:47.220
run the program date and you see,

00:07:48.400 --> 00:07:50.040
let's see, let's do it again.

00:07:50.160 --> 00:07:53.240
There we go. It ran date and you see the

00:07:53.240 --> 00:07:55.680
output right there. And what if you want to

00:07:55.680 --> 00:07:58.040
run a graphical program on your system?

00:07:58.620 --> 00:08:01.760
Well here, we want to open a PDF file and I'm

00:08:01.760 --> 00:08:05.340
just using XDG Open on Linux,

00:08:05.660 --> 00:08:09.440
you could use Open on Mac and you just put an

00:08:09.440 --> 00:08:12.840
ampersand in front and there's the Hyperbole

00:08:14.120 --> 00:08:15.840
manual instantly displayed.

00:08:16.120 --> 00:08:18.620
So lots of power there and all of that

00:08:18.820 --> 00:08:22.360
actually .pdf's and many other file types are

00:08:22.360 --> 00:08:25.080
automatically linked to various programs by

00:08:25.080 --> 00:08:27.340
Hyperbole. So you could just use the path

00:08:27.340 --> 00:08:29.340
name itself and it would probably behave the

00:08:29.340 --> 00:08:34.440
same way. Number 7, bookmarks on steroids.

00:08:35.460 --> 00:08:37.419
So Hyperbole gives you a personal button

00:08:37.419 --> 00:08:40.340
file, which is on the menu you see here under

00:08:40.400 --> 00:08:42.280
button files, and then personal.

00:08:43.039 --> 00:08:45.360
So here we'll just display it.

00:08:45.480 --> 00:08:47.720
And you can put whatever you want in here,

00:08:47.720 --> 00:08:49.860
these implicit buttons of any type.

00:08:49.860 --> 00:08:52.660
You can name them the way here and you can

00:08:52.660 --> 00:08:55.560
activate either the name with MetaReturn or

00:08:55.560 --> 00:08:56.920
the button itself. So,

00:08:56.920 --> 00:08:59.400
of course, if we did MetaReturn here,

00:08:59.860 --> 00:09:03.220
we'd just display that in a web browser.

00:09:03.940 --> 00:09:05.520
I'll just do a few of these.

00:09:05.540 --> 00:09:07.200
So here's a section of line.

00:09:07.200 --> 00:09:08.580
Let's just jump there.

00:09:09.120 --> 00:09:11.400
But these can be all sorts of different

00:09:11.400 --> 00:09:13.140
actions that are going on.

00:09:13.140 --> 00:09:16.040
And you just, whatever cross references you

00:09:16.040 --> 00:09:17.840
want, you put in here.

00:09:17.840 --> 00:09:20.400
And the neat thing is that this then becomes

00:09:20.940 --> 00:09:23.420
a list of what we call global buttons.

00:09:23.620 --> 00:09:26.540
So when I go into the menu and I go control

00:09:26.540 --> 00:09:30.640
HHGA to activate a global button,

00:09:30.720 --> 00:09:33.220
you can see that all the names from this file

00:09:33.220 --> 00:09:36.100
appear here. So only the name buttons appear,

00:09:36.160 --> 00:09:40.240
and I could like go to the hyperbole to-do

00:09:40.240 --> 00:09:42.260
list and things like that.

00:09:42.500 --> 00:09:45.660
So very, very quick access to all your

00:09:45.660 --> 00:09:47.440
information whenever you need it.

00:09:47.440 --> 00:09:49.600
And that could be an org file as well if you

00:09:49.600 --> 00:09:53.500
prefer that. So we just took care of that.

00:09:53.540 --> 00:09:57.000
Number 6, instant test case running and

00:09:57.000 --> 00:09:59.420
debugging. This is a fairly new feature.

00:10:00.100 --> 00:10:02.240
What we're seeing here is a pre-release of

00:10:02.240 --> 00:10:04.440
version 9, which should be out within the

00:10:04.440 --> 00:10:07.560
next week. But the instructions at the

00:10:07.560 --> 00:10:10.680
beginning of the presentation tell you how to

00:10:10.680 --> 00:10:13.720
get the development version of HyperBlade,

00:10:14.040 --> 00:10:15.560
which is right now 8.01

00:10:15.880 --> 00:10:19.040
pre, but that's virtually the same as what 9

00:10:19.120 --> 00:10:23.060
will be. So you can grab that as of today.

00:10:24.140 --> 00:10:27.540
So let's just jump to a test file.

00:10:27.700 --> 00:10:30.300
What you see here is called an explicit

00:10:30.360 --> 00:10:33.020
button. You can actually make buttons where

00:10:33.120 --> 00:10:35.820
similar to org, where you just see a bit of

00:10:35.820 --> 00:10:38.500
the button and all of the metadata is hidden.

00:10:39.060 --> 00:10:42.040
I can say control A J and I see all about

00:10:42.040 --> 00:10:43.940
that button, exactly what it's going to do

00:10:43.940 --> 00:10:47.200
before I activate it and even who created it

00:10:47.200 --> 00:10:50.680
or last modified it. Then just queue out of

00:10:50.680 --> 00:10:52.580
here and you're back where you were.

00:10:52.700 --> 00:10:56.820
So now, what this did is link us to an ERT

00:10:56.920 --> 00:10:59.920
test. If you write tests in Emacs,

00:10:59.920 --> 00:11:02.060
you probably use ERT tests.

00:11:02.220 --> 00:11:05.220
So if I hit made a return on here it'll just

00:11:05.220 --> 00:11:08.520
run the test tell me it passed great okay but

00:11:08.520 --> 00:11:11.760
maybe I had a problem so let me use control

00:11:11.760 --> 00:11:17.080
you made a return and that will e-debug the

00:11:17.080 --> 00:11:20.080
test instantly. So now I'll step through it

00:11:20.080 --> 00:11:22.200
and it says, well, let's,

00:11:23.000 --> 00:11:25.580
this single line actually creates that

00:11:25.580 --> 00:11:27.800
explicit button. You see we have an empty

00:11:27.800 --> 00:11:29.480
buffer here that we're in.

00:11:29.480 --> 00:11:31.780
Now I step through that and now there's the

00:11:31.780 --> 00:11:34.160
explicit button that got put in there.

00:11:34.160 --> 00:11:36.940
Now the next line I step through it and this

00:11:36.940 --> 00:11:39.160
is going to check if we have the right action

00:11:39.160 --> 00:11:42.260
type and it returns true so that's good and

00:11:42.260 --> 00:11:45.220
now we should be it should be associated with

00:11:45.220 --> 00:11:48.680
the temp buffer returns true good And that's

00:11:48.680 --> 00:11:51.360
why what you saw before is this passed.

00:11:51.720 --> 00:11:52.760
The whole thing passed.

00:11:53.000 --> 00:11:54.740
So lots of power there.

00:11:55.080 --> 00:11:57.600
Simple to use. You're just using your made a

00:11:57.600 --> 00:11:59.360
return and prefix arguments.

00:12:00.040 --> 00:12:03.240
It's something everybody who develops should

00:12:03.240 --> 00:12:07.640
have. So number, let's go on.

00:12:07.640 --> 00:12:09.720
I think we're making pretty good time here,

00:12:09.720 --> 00:12:11.240
but I turned off my timer.

00:12:13.000 --> 00:12:15.800
Let's go to number 5. This is a very new

00:12:15.800 --> 00:12:17.660
feature, which is very cool too.

00:12:17.720 --> 00:12:20.420
You used to have to use the mouse probably

00:12:20.440 --> 00:12:23.880
and you could drag across windows to go from

00:12:23.880 --> 00:12:26.820
a source to a referent buffer and that would

00:12:26.820 --> 00:12:28.340
create a hyperlink for you.

00:12:28.340 --> 00:12:30.880
But now we've installed it and made it even

00:12:30.880 --> 00:12:34.140
easier on, we've installed it on a,

00:12:34.860 --> 00:12:36.540
on the hyperbole menus.

00:12:37.040 --> 00:12:40.180
So let's just go back to our presentation

00:12:40.680 --> 00:12:43.660
here and say we want to link to this line

00:12:43.660 --> 00:12:46.160
that we're on there. And I'll just create the

00:12:46.160 --> 00:12:48.480
button in our scratch buffer here so it

00:12:48.480 --> 00:12:50.660
doesn't really mess anything up.

00:12:50.900 --> 00:12:53.980
So I just put my point in where I want the

00:12:53.980 --> 00:12:56.920
button to appear and then I put point where I

00:12:56.920 --> 00:13:00.060
want it to link to in the other the other

00:13:00.060 --> 00:13:02.800
buffer and then I just say control HH to get

00:13:02.800 --> 00:13:05.260
my menu, I for implicit button,

00:13:05.380 --> 00:13:07.940
and then L for link. Boom,

00:13:07.960 --> 00:13:09.980
it inserts it, right at point.

00:13:10.680 --> 00:13:12.880
What did it do? It knew that this was in the

00:13:12.880 --> 00:13:15.080
hyperbole directory and I have a variable for

00:13:15.080 --> 00:13:17.780
that, so that if you sent this link to your

00:13:17.780 --> 00:13:19.180
friend who uses Hyperbole,

00:13:19.440 --> 00:13:21.440
it would still work right because they have a

00:13:21.440 --> 00:13:22.860
different hyperbole there.

00:13:23.100 --> 00:13:27.380
And then I want to go directly to line 116.

00:13:28.360 --> 00:13:30.360
So boom, it just took me there.

00:13:30.820 --> 00:13:33.900
So that's it. And Hyperbole is doing all this

00:13:33.900 --> 00:13:36.420
for you. You just say I want a link to this

00:13:36.420 --> 00:13:38.940
thing and it figures out what's at point and

00:13:38.940 --> 00:13:42.240
it determines the right type of implicit link

00:13:42.240 --> 00:13:45.520
to put there. And that's the whole point is

00:13:45.520 --> 00:13:47.320
that you're just working like when you're

00:13:47.320 --> 00:13:50.500
programming or you're writing an article and

00:13:50.500 --> 00:13:53.520
you just hit made a return or or pull up a

00:13:53.520 --> 00:13:57.180
menu and hit a key binding and you're off to

00:13:57.180 --> 00:14:02.400
the races. So that was implicit linking We

00:14:02.400 --> 00:14:05.260
can also create those explicit link buttons,

00:14:06.200 --> 00:14:07.760
and as well as the global link,

00:14:07.760 --> 00:14:09.580
where we would just give it a name,

00:14:09.580 --> 00:14:11.640
and it would automatically put it in our

00:14:11.640 --> 00:14:14.640
global button file without us even having

00:14:14.640 --> 00:14:18.380
that on screen. So lots of power there as

00:14:18.380 --> 00:14:19.660
well, lots of consistency.

00:14:21.900 --> 00:14:25.040
Now let's take a look at the K Outliner a

00:14:25.040 --> 00:14:28.040
little more. I'm just going to show you 1

00:14:28.040 --> 00:14:29.820
feature actually. I don't have time to show

00:14:29.820 --> 00:14:31.580
you the K Outliner in detail,

00:14:31.800 --> 00:14:34.220
but it's a really cool structured outliner

00:14:34.280 --> 00:14:36.400
that even if you love Org Mode,

00:14:36.580 --> 00:14:39.280
you should try it. And this is 1 thing that

00:14:39.280 --> 00:14:41.060
you can't get with Org Mode,

00:14:41.320 --> 00:14:45.100
is let's say Hyperlink comes with an example

00:14:45.100 --> 00:14:48.580
file which teaches you about the K Outliner.

00:14:48.960 --> 00:14:50.940
So we'll just use that right here.

00:14:51.180 --> 00:14:53.040
And when you're in the K Outliner,

00:14:53.080 --> 00:14:55.820
you can bring up and go into the K Outliner

00:14:55.900 --> 00:14:57.540
menu right here at the bottom.

00:14:58.200 --> 00:15:00.360
And there's a format menu there.

00:15:00.360 --> 00:15:02.600
You always take the first letter of a menu,

00:15:02.600 --> 00:15:05.100
the first capital letter of a menu item.

00:15:05.240 --> 00:15:08.720
So F for format and then D for display in

00:15:08.720 --> 00:15:11.700
browser. So just let's do it.

00:15:12.740 --> 00:15:17.220
We have with 1 button or 1 key we've produced

00:15:17.780 --> 00:15:23.660
the entire outline in a collapsible outline

00:15:23.720 --> 00:15:26.260
in HTML. So I can go here.

00:15:27.620 --> 00:15:29.240
I just have to use my mouse.

00:15:29.600 --> 00:15:33.300
So I can expand and collapse these trees live

00:15:34.220 --> 00:15:39.520
with very basic coding.

00:15:39.760 --> 00:15:42.680
We tried to keep this as simple as possible.

00:15:42.880 --> 00:15:45.580
But you see it maintains the structure of the

00:15:45.580 --> 00:15:47.880
outline and even tables.

00:15:55.120 --> 00:15:57.620
So all the formatting is maintained and again

00:15:57.620 --> 00:16:00.100
it's instant. Or you can just export it to a

00:16:00.100 --> 00:16:01.920
file without displaying it.

00:16:03.900 --> 00:16:05.880
Very efficient kinds of operations.

00:16:06.420 --> 00:16:10.960
So that was number 4. Number 3 is a

00:16:10.960 --> 00:16:13.400
subsystem, another subsystem in Hyperbole

00:16:13.440 --> 00:16:16.080
called Hycontrol, which is for window and

00:16:16.080 --> 00:16:18.600
frame management. And I just wanted to show

00:16:18.600 --> 00:16:20.920
you 1 thing in there. It's got a lot of

00:16:20.920 --> 00:16:24.400
capabilities. But I always had the problem

00:16:24.480 --> 00:16:28.340
that Emacs wouldn't let me scale my fonts,

00:16:28.380 --> 00:16:30.780
all of my faces at the same time.

00:16:30.840 --> 00:16:33.680
I wanted to zoom. I didn't want to increase

00:16:33.680 --> 00:16:36.260
the default font size and all the others stay

00:16:36.260 --> 00:16:40.660
the same. So let's just display our faces

00:16:41.260 --> 00:16:45.200
right here and then we have a choice of

00:16:45.200 --> 00:16:47.860
either controlling frames or windows.

00:16:47.920 --> 00:16:50.240
So let's start by controlling frames.

00:16:50.460 --> 00:16:52.760
So you get another submenu when you're in

00:16:52.760 --> 00:16:56.020
high control to tell you what to do here.

00:16:56.320 --> 00:16:59.480
And there's just lowercase z and uppercase z.

00:16:59.480 --> 00:17:03.400
So let's try it. So it's scaling the entire

00:17:03.400 --> 00:17:06.020
frame. And you can see from the list of faces

00:17:06.260 --> 00:17:08.500
that they're all scaling at the same time.

00:17:08.599 --> 00:17:10.220
And I can go back down.

00:17:10.760 --> 00:17:13.619
Now if I switch to window mode,

00:17:13.619 --> 00:17:16.099
and there's a special fast way to do that,

00:17:16.099 --> 00:17:18.819
just hit T to toggle. And if you look at the

00:17:18.819 --> 00:17:21.819
bottom menu it says frames right now now it

00:17:21.819 --> 00:17:25.599
says windows when I hit T so now if I do the

00:17:25.599 --> 00:17:30.640
same Z to increase it's just this window and

00:17:30.640 --> 00:17:36.800
but it's you know it's the faces in there so

00:17:37.200 --> 00:17:40.680
a lot of power again but I just haven't found

00:17:40.680 --> 00:17:43.220
anywhere else that you can get that kind of

00:17:43.220 --> 00:17:45.820
control over your faces very rapidly.

00:17:45.920 --> 00:17:51.640
So that's number 3. Now number 2,

00:17:55.360 --> 00:17:56.780
let's put that in there.

00:17:58.340 --> 00:18:03.320
So the HiROLO is the final subsystem in

00:18:03.320 --> 00:18:06.240
Hyperbole and this has gotten much cooler.

00:18:06.500 --> 00:18:08.680
So it started off as a contact management

00:18:08.680 --> 00:18:11.540
system, but it's really just a hierarchical

00:18:11.880 --> 00:18:15.060
record management system that lets you have

00:18:15.060 --> 00:18:18.020
as many files, directories as you want,

00:18:18.120 --> 00:18:20.280
and you can search across all of them without

00:18:20.280 --> 00:18:23.240
any external utilities necessary,

00:18:23.960 --> 00:18:26.240
just what's built into Emacs and Hyperlink.

00:18:26.760 --> 00:18:29.920
So as you can see, we've expanded it to

00:18:29.920 --> 00:18:31.820
handle org files, markdown,

00:18:32.300 --> 00:18:34.620
K outlines, Emacs outlines.

00:18:34.780 --> 00:18:36.820
So what I'm going to do is just say,

00:18:36.820 --> 00:18:40.680
I want to search using my Hyberlo file list.

00:18:40.680 --> 00:18:43.140
You just set that to what you wanted to

00:18:43.140 --> 00:18:44.820
search. But now you have all this

00:18:44.820 --> 00:18:46.520
flexibility. You can use environment

00:18:46.620 --> 00:18:48.840
variables in it. You can just specify a

00:18:48.840 --> 00:18:51.340
directory and it will find all those matching

00:18:51.340 --> 00:18:53.540
files below that directory recursively.

00:18:55.240 --> 00:18:58.460
You can give it the markdown file here and

00:18:58.460 --> 00:19:01.160
you can use file wildcards as well.

00:19:01.160 --> 00:19:04.340
I mean, look at this. It's got a list

00:19:04.340 --> 00:19:06.140
variable in it and a wildcard,

00:19:06.540 --> 00:19:09.840
and it's just all I'm gonna do is I change

00:19:09.840 --> 00:19:13.380
this from a Lisp expression to make it a

00:19:13.380 --> 00:19:15.380
hyper button. You just change the outer

00:19:15.380 --> 00:19:16.920
parens to angle brackets,

00:19:17.120 --> 00:19:19.620
and then it's automatically an implicit

00:19:21.040 --> 00:19:22.840
button that you can activate with made a

00:19:22.840 --> 00:19:26.340
return so just ran that and now I've set my

00:19:26.800 --> 00:19:29.440
file list so now let's do a search it would

00:19:29.440 --> 00:19:34.620
be ctrl H H roll it X R and then S for search

00:19:34.820 --> 00:19:36.680
But I'll just do it this way.

00:19:37.200 --> 00:19:40.320
And boom, it found everything that fast.

00:19:41.060 --> 00:19:42.940
And I can just get like,

00:19:43.180 --> 00:19:45.520
show the top items in there.

00:19:45.520 --> 00:19:48.260
So I kind of have outlining in this buffer.

00:19:48.340 --> 00:19:51.940
I can just move to each match that I hit.

00:19:51.980 --> 00:19:53.680
And notice, although everything was

00:19:53.680 --> 00:19:55.580
collapsed, it's expanding here.

00:19:55.640 --> 00:19:58.540
When I move in and out of each of the entry

00:19:58.540 --> 00:20:02.380
matches, it expands or collapses as I move to

00:20:02.380 --> 00:20:06.220
the next 1. So a lot of power there.

00:20:06.820 --> 00:20:09.120
What else? So just tabbing through these

00:20:09.120 --> 00:20:11.200
things. And you notice that it's working

00:20:11.200 --> 00:20:13.300
across all of these different types,

00:20:13.340 --> 00:20:16.220
and it's telling you which file everything

00:20:16.360 --> 00:20:17.840
came from right up here.

00:20:17.840 --> 00:20:19.940
So I could just made a return here,

00:20:20.220 --> 00:20:23.500
should work. Yes, revisit the file normally.

00:20:23.800 --> 00:20:25.760
And it just pulls it right up.

00:20:25.920 --> 00:20:28.400
So everything is live and hyperbole.

00:20:28.580 --> 00:20:30.120
You've got hyperlinks everywhere.

00:20:31.300 --> 00:20:33.740
Let's just get rid of that.

00:20:34.020 --> 00:20:41.600
Go back to our demo. So if you are fans of

00:20:41.600 --> 00:20:46.560
Vertico and Consult, you can now use that

00:20:46.560 --> 00:20:49.300
with the High Rollo. So all you have to do is

00:20:49.300 --> 00:20:51.440
let's just format our windows,

00:20:51.760 --> 00:20:55.720
and then I'll say, let's use ConsultGrep over

00:20:55.720 --> 00:20:58.880
the Rolodex. Now, it found all the matches

00:20:58.940 --> 00:21:02.060
there, and I can just move live through them

00:21:02.220 --> 00:21:04.640
in the buffer like you may be used to or I

00:21:04.640 --> 00:21:08.600
can filter back down and say using orderless

00:21:10.240 --> 00:21:13.700
joystick or anything that has joy in it just

00:21:13.700 --> 00:21:17.160
match to those lines and then I can you know

00:21:17.160 --> 00:21:20.020
either jump there or quit out of here.

00:21:20.020 --> 00:21:22.080
I'll just quit out of it right now.

00:21:22.540 --> 00:21:25.240
So very cool. And all of that is using

00:21:25.240 --> 00:21:28.640
whatever you personally set as the set of

00:21:28.640 --> 00:21:30.560
files and directories you want to search.

00:21:31.380 --> 00:21:35.940
And finally, our number 1 feature of

00:21:35.940 --> 00:21:40.440
Hyperbole is you can customize this to give

00:21:40.440 --> 00:21:43.460
you these kinds of implicit buttons,

00:21:44.660 --> 00:21:46.080
whatever kind you want.

00:21:46.560 --> 00:21:49.140
And there are 3 levels of doing this.

00:21:49.540 --> 00:21:51.140
The first is for non-programmers.

00:21:51.900 --> 00:21:53.700
You can just set a string,

00:21:54.400 --> 00:21:57.040
like a URL with a parameter in it.

00:21:57.180 --> 00:21:59.440
So the %s represents the parameter,

00:21:59.680 --> 00:22:01.440
and This is how you do a search on

00:22:01.440 --> 00:22:04.060
DuckDuckGo. So all I have to do is evaluate

00:22:04.320 --> 00:22:07.180
this defal for action link.

00:22:07.800 --> 00:22:11.020
And now I have a new implicit button type

00:22:11.040 --> 00:22:13.380
that I can put between angle brackets.

00:22:13.740 --> 00:22:15.640
And I just give it that name,

00:22:16.020 --> 00:22:18.000
DDG, and some parameter,

00:22:18.280 --> 00:22:20.040
whatever I want to search for,

00:22:20.080 --> 00:22:23.040
and this is a button that does that search.

00:22:25.320 --> 00:22:28.680
Very cool, right? So you can embed these.

00:22:28.680 --> 00:22:31.040
This could be a hyperlink in,

00:22:32.140 --> 00:22:35.120
you know, a comment in a programming file.

00:22:35.320 --> 00:22:38.160
Anything on the entire web that you want to

00:22:38.160 --> 00:22:42.320
link to, whatever kind of compact notation

00:22:42.840 --> 00:22:44.800
you want to give it. So that's what we're

00:22:44.800 --> 00:22:47.140
going to learn as we get more advanced here

00:22:47.140 --> 00:22:49.400
you can give it even more compact notations.

00:22:49.840 --> 00:22:52.380
So as you get more advanced you can say,

00:22:52.380 --> 00:22:54.240
well I don't like this angle bracket,

00:22:54.240 --> 00:22:57.020
I want to have an implicit button that uses

00:22:57.280 --> 00:22:59.620
these square brackets and then an angle

00:22:59.620 --> 00:23:02.080
bracket inside it. So then you need the

00:23:02.080 --> 00:23:05.200
defile for implicit link.

00:23:06.040 --> 00:23:08.860
This lets you specify your start and end

00:23:08.860 --> 00:23:12.180
delimiters for your new type and and then you

00:23:12.180 --> 00:23:14.840
can give it a function that you wanted to run

00:23:15.040 --> 00:23:18.320
and that will take the text of whatever is in

00:23:18.320 --> 00:23:19.780
the button, in this case,

00:23:19.900 --> 00:23:23.760
test release here, and feed it to the

00:23:23.760 --> 00:23:26.080
function that I gave here.

00:23:26.080 --> 00:23:29.540
So what this function does is grep over my

00:23:29.540 --> 00:23:33.420
git log and find any commits that include the

00:23:33.420 --> 00:23:35.360
term test release in it.

00:23:35.360 --> 00:23:38.200
So let's try it. First I have to add the

00:23:38.200 --> 00:23:41.740
button type and that's all it takes and it

00:23:41.740 --> 00:23:44.800
defined it now. So anywhere in Emacs now I

00:23:44.800 --> 00:23:46.920
can use this button type essentially.

00:23:47.180 --> 00:23:48.980
So let me try to activate it.

00:23:49.200 --> 00:23:52.760
Okay, and it says yeah let's save it.

00:23:53.080 --> 00:23:55.940
Okay so now it's running a git log command.

00:23:56.320 --> 00:23:59.440
It found all the commits and now of course if

00:23:59.440 --> 00:24:02.980
I had made a return on this commit it

00:24:02.980 --> 00:24:05.500
recognizes it as an implicit link,

00:24:05.680 --> 00:24:09.300
and if I search for what was a test release,

00:24:09.600 --> 00:24:11.960
there it is. So this commit had that in

00:24:11.960 --> 00:24:14.180
there. So all these matches,

00:24:14.180 --> 00:24:16.280
so I don't know how other people do this,

00:24:16.280 --> 00:24:20.040
but for me this makes it a lot simpler.

00:24:21.280 --> 00:24:24.800
So a lot of power that any programmer can

00:24:24.800 --> 00:24:27.500
use. And finally, if you've mastered Emacs

00:24:27.500 --> 00:24:29.360
Lisp, or you're starting to,

00:24:29.440 --> 00:24:33.740
you can look in the hib types file in

00:24:33.740 --> 00:24:37.320
Hyperbole and see all sorts of uses of defib,

00:24:37.500 --> 00:24:39.440
which is defined implicit button.

00:24:39.660 --> 00:24:42.660
And that's the full power of e-LISP when you

00:24:42.660 --> 00:24:45.060
want to define 1. So what we're going to do

00:24:45.060 --> 00:24:46.780
here is I wanted to know,

00:24:47.080 --> 00:24:49.700
given a date, what the day of the week is.

00:24:49.900 --> 00:24:53.040
And because the date primitives weren't quite

00:24:53.040 --> 00:24:54.640
written the way I might like,

00:24:55.080 --> 00:24:57.520
it's a little longer than some.

00:24:57.520 --> 00:25:00.400
But I'm just going to evaluate this list.

00:25:00.720 --> 00:25:06.100
And I've now defined DOW as an action type.

00:25:06.140 --> 00:25:08.500
Now, how do I know I'm doing that?

00:25:08.500 --> 00:25:10.700
So I can always say Control-H,

00:25:11.000 --> 00:25:13.580
capital A here to see what a button's going

00:25:13.580 --> 00:25:15.840
to do. And it tells me When I'm there,

00:25:15.840 --> 00:25:18.140
I'm at a hyperbole button,

00:25:18.400 --> 00:25:23.440
and the type is from category DOW.

00:25:24.000 --> 00:25:25.120
And what's it gonna do?

00:25:25.120 --> 00:25:27.420
It takes a mark, it's gonna do a message

00:25:27.440 --> 00:25:29.880
action. Okay, so let's try it.

00:25:31.300 --> 00:25:32.800
It tells me that's a date,

00:25:32.800 --> 00:25:34.220
and it falls on a Sunday,

00:25:34.220 --> 00:25:35.820
which is today. That's correct.

00:25:36.100 --> 00:25:39.020
So 2 days from today is a Tuesday.

00:25:39.800 --> 00:25:43.400
Beautiful. So we've just totally transformed

00:25:44.840 --> 00:25:46.860
what we can do with text.

00:25:46.980 --> 00:25:48.900
You notice there's no markup here.

00:25:49.000 --> 00:25:53.440
And this is working with all of the other

00:25:53.440 --> 00:25:55.600
implicit types that we have everywhere in

00:25:55.600 --> 00:25:57.920
Emacs. It's only going to match to this kind

00:25:57.920 --> 00:26:00.560
of pattern and anywhere else,

00:26:00.720 --> 00:26:02.820
you know, it just won't trigger that type.

00:26:03.460 --> 00:26:06.480
So lots of power. You just need to get

00:26:06.480 --> 00:26:07.700
started with Hyperbole.

00:26:07.960 --> 00:26:10.860
There's great documentation both inside the

00:26:10.860 --> 00:26:12.180
code and in the manual.

00:26:12.520 --> 00:26:15.460
There's a fast demo that you can start with

00:26:15.520 --> 00:26:17.800
and there's about 10 different videos.

00:26:18.260 --> 00:26:21.220
There'll be 3 presentations on hyperbole here

00:26:21.560 --> 00:26:25.660
at the conference, and I hope you've enjoyed

00:26:25.760 --> 00:26:28.200
this presentation. I'd love to answer your

00:26:28.200 --> 00:26:31.200
questions and get some new users for

00:26:31.200 --> 00:26:36.040
Hyperbole. So lastly, I'd like to thank my

00:26:36.040 --> 00:26:38.040
co-maintainer, Matt, who's going to speak

00:26:38.040 --> 00:26:42.040
later about the extensive test protocols we

00:26:42.040 --> 00:26:45.920
have in Hyperbole. Hyperbole works on every

00:26:46.120 --> 00:26:47.860
version of Emacs from 27.1

00:26:48.480 --> 00:26:52.600
up, and every operating system and Windows

00:26:52.600 --> 00:26:56.120
system that you use. And thanks so much to

00:26:56.120 --> 00:26:58.680
the volunteers and the speakers at EmacsConf.

00:26:59.200 --> 00:27:02.000
You do a great job, and we're all really

00:27:02.000 --> 00:27:04.400
appreciative that you take all the time that

00:27:04.400 --> 00:27:06.240
you do to make this happen.

00:27:06.540 --> 00:27:07.620
Thank you very much.

00:27:09.960 --> 00:27:11.400
[Speaker 1]: And thank you so much Bob.

00:27:11.400 --> 00:27:14.680
So I'll let you do the gymnastics to join us

00:27:14.680 --> 00:27:16.440
back on BBB and put your webcam.

00:27:17.020 --> 00:27:18.840
In the meantime, I'll invite people,

00:27:19.120 --> 00:27:20.740
as Sasha told you in the introduction,

00:27:21.060 --> 00:27:23.600
to go put your question in the pad.

00:27:23.600 --> 00:27:25.900
The link is on the talks page and also on

00:27:25.900 --> 00:27:28.220
IRC. So take your time.

00:27:28.320 --> 00:27:29.900
We've already got some people who've asked

00:27:29.900 --> 00:27:33.060
questions. You can also start joining the

00:27:33.060 --> 00:27:35.140
room. Let me just ping Sasha.

00:27:35.540 --> 00:27:38.440
Ping to open ID HyperAmp.

00:27:39.280 --> 00:27:41.120
So, you'll be able to join us on

00:27:41.120 --> 00:27:43.260
BigBlueButton as well to go chat with Bob

00:27:43.260 --> 00:27:45.020
more directly. I'm not sure if people have

00:27:45.020 --> 00:27:46.480
joined already. Not yet.

00:27:50.220 --> 00:27:51.060
So, Bob, what I'll do,

00:27:51.060 --> 00:27:52.280
we already have 4 questions.

00:27:52.280 --> 00:27:54.080
I'm gonna read them to you and you can take

00:27:54.080 --> 00:27:54.900
your time answering them,

00:27:54.900 --> 00:27:57.340
but we do have about 7 minutes until we go to

00:27:57.340 --> 00:27:59.080
the next talk, so we need to be a little bit

00:28:00.420 --> 00:28:00.920
[Speaker 0]: Okay.

00:27:59.080 --> 00:28:03.260
[Speaker 1]: chop-chop. All right, so reading the first

00:28:03.260 --> 00:28:05.460
questions, and I'm also going to display them

00:28:05.460 --> 00:28:06.920
for the stream to see,

00:28:07.580 --> 00:28:09.740
do buttons keep their metadata within the

00:28:09.740 --> 00:28:12.380
same file? E.g., would I see it if I change

00:28:12.380 --> 00:28:13.940
to fundamental mode, for instance?

00:28:15.820 --> 00:28:19.340
[Speaker 0]: So all of the things that I was showing you,

00:28:19.340 --> 00:28:21.300
implicit buttons have no metadata.

00:28:21.900 --> 00:28:23.800
That's the great thing about them,

00:28:23.800 --> 00:28:27.400
is you just type them in the buffer and what

00:28:27.400 --> 00:28:30.020
you see is all there is to that button and

00:28:30.020 --> 00:28:33.300
hyperbole generates all the smarts associated

00:28:33.320 --> 00:28:35.780
with them. When you create an explicit

00:28:35.940 --> 00:28:38.680
button, which I showed you 1 or 2 examples

00:28:38.760 --> 00:28:42.720
of, that metadata is, there is metadata with

00:28:42.720 --> 00:28:45.860
that, and that is stored in a separate file

00:28:45.860 --> 00:28:47.860
in the same directory called .hypb.

00:28:49.240 --> 00:28:51.500
So it's hidden away and it doesn't affect the

00:28:51.500 --> 00:28:53.700
format of the buffer that it's in.

00:28:53.940 --> 00:28:56.540
So again, what you see is what you get.

00:28:56.600 --> 00:28:58.740
You just see the delimiters around the

00:28:58.740 --> 00:29:01.140
explicit button and that's it.

00:29:01.840 --> 00:29:04.500
So Hyperbole takes care of all that for you.

00:29:04.860 --> 00:29:08.360
However, if you embed them into like a mail

00:29:08.360 --> 00:29:09.440
message, which you can,

00:29:09.440 --> 00:29:12.180
you can mail buttons, then there is a hidden

00:29:12.180 --> 00:29:14.760
area at the end of the mail message that

00:29:14.760 --> 00:29:17.120
encodes the metadata for the explicit

00:29:17.120 --> 00:29:17.620
buttons.

00:29:19.540 --> 00:29:21.640
[Speaker 1]: Ok, great. Next question.

00:29:21.980 --> 00:29:24.560
Is it possible to link to a file by its ID,

00:29:24.720 --> 00:29:27.340
like the node, org ID or some similar unique

00:29:27.340 --> 00:29:28.120
string inside?

00:29:29.380 --> 00:29:32.620
[Speaker 0]: Yes, In fact, that's 1 of the new features in

00:29:33.280 --> 00:29:37.800
9. You just made a return on an ID and it

00:29:37.800 --> 00:29:40.780
takes you right to the org node,

00:29:40.840 --> 00:29:44.880
works with org Rome and org straight out of

00:29:44.880 --> 00:29:47.900
the box. We're looking at ways to make it

00:29:47.900 --> 00:29:50.040
easier to just insert those in places,

00:29:50.040 --> 00:29:52.840
but since you have word keys that do that

00:29:52.840 --> 00:29:55.600
already, you can just insert them in any

00:29:55.600 --> 00:29:58.360
documents and Hyperbole will recognize them.

00:29:58.360 --> 00:30:02.620
I think In some cases you may need to put ID

00:30:02.680 --> 00:30:05.400
colon in front of the ID as well.

00:30:05.740 --> 00:30:06.920
Generally it works.

00:30:08.560 --> 00:30:11.560
[Speaker 1]: Ok, great. Moving on to the next question.

00:30:12.120 --> 00:30:13.760
Regarding the frames example,

00:30:14.240 --> 00:30:16.320
any thoughts or considerations for a

00:30:16.320 --> 00:30:19.020
transient interface or is this something 1

00:30:19.020 --> 00:30:22.280
could already toggle? Are you familiar with

00:30:22.280 --> 00:30:23.160
transient interface?

00:30:23.560 --> 00:30:26.700
[Speaker 0]: Yes, we don't use transient because we,

00:30:26.720 --> 00:30:30.140
you know, Hyperbole started out in 1991,

00:30:30.520 --> 00:30:34.300
though it's had much much work since then so

00:30:34.300 --> 00:30:37.940
we predate a lot of newer things in Emacs and

00:30:37.940 --> 00:30:41.400
then we just use them as as they Become

00:30:41.400 --> 00:30:45.480
useful too hyperbole We think the The mini

00:30:45.480 --> 00:30:46.720
buffer menu is pretty good.

00:30:46.720 --> 00:30:48.780
We could rewrite stuff in transient,

00:30:48.900 --> 00:30:51.600
but we haven't seen the need yet.

00:30:52.760 --> 00:30:54.960
Maybe high control, that might be a good

00:30:54.960 --> 00:30:58.480
candidate, because there are so many keys in

00:30:58.480 --> 00:31:00.480
it. So we'll think about that.

00:31:00.480 --> 00:31:03.060
But it would be a while before we got to it.

00:31:04.780 --> 00:31:07.120
[Speaker 1]: Right. Moving on to the next question.

00:31:07.120 --> 00:31:08.760
Sorry I got really confused because there's a

00:31:08.760 --> 00:31:10.620
French salut, you know,

00:31:10.660 --> 00:31:12.940
in the text of it. Is someone saying hi to me

00:31:12.940 --> 00:31:14.380
or something? All right,

00:31:14.380 --> 00:31:16.960
next question. Regarding multi-file search

00:31:16.960 --> 00:31:22.080
functionality, why not implement it within

00:31:22.080 --> 00:31:24.920
the existing framework of MetaX grep or

00:31:24.920 --> 00:31:26.180
similar built-in commands?

00:31:26.360 --> 00:31:28.620
Yet another search interface sounds a bit

00:31:28.620 --> 00:31:29.120
redundant.

00:31:30.920 --> 00:31:34.120
[Speaker 0]: Multi-file search, so HiRolo I guess you're

00:31:34.120 --> 00:31:36.380
talking about. I think what you missed there

00:31:36.380 --> 00:31:39.440
is that High Rollo matches to records,

00:31:40.080 --> 00:31:42.860
multi-line records, so it's not a

00:31:42.860 --> 00:31:45.360
line-oriented match, it's a record-oriented

00:31:45.820 --> 00:31:50.760
match. So Grep, you can say maybe give me 3

00:31:50.760 --> 00:31:52.960
lines of context, but what if I have a

00:31:52.960 --> 00:31:56.100
20-line record? I want to see the whole

00:31:56.100 --> 00:31:59.060
thing. And so, it's a full-text search

00:31:59.060 --> 00:32:03.480
interface, which lets you have any size

00:32:04.220 --> 00:32:07.260
entries or nodes in the match buffer.

00:32:07.540 --> 00:32:10.760
So that's 1 reason. MADAX grep works with

00:32:10.760 --> 00:32:13.260
hyperbole. I mean, you use it if you want and

00:32:13.260 --> 00:32:16.080
then you can hit MADA return on grep lines.

00:32:16.480 --> 00:32:20.140
So we basically take everything from POSIX

00:32:20.320 --> 00:32:24.920
and everything in Emacs and we try to make a

00:32:24.920 --> 00:32:26.680
lot of it simpler to use.

00:32:26.680 --> 00:32:28.960
We don't take away any of the functionality,

00:32:29.480 --> 00:32:31.040
we just augment it.

00:32:32.780 --> 00:32:35.200
[Speaker 1]: Right, and I think that's the logic for a lot

00:32:35.200 --> 00:32:36.300
of the packages, you know,

00:32:36.300 --> 00:32:38.440
the philosophy is just you create your little

00:32:38.440 --> 00:32:40.280
bit, your little island where you do your

00:32:40.280 --> 00:32:42.160
stuff. And if you can resonate with other

00:32:42.160 --> 00:32:43.280
islands so much the better.

00:32:43.280 --> 00:32:45.600
And it feels like between those islands,

00:32:45.700 --> 00:32:48.380
you know, hyperbole is a great way to connect

00:32:48.380 --> 00:32:49.980
things that are just text.

00:32:50.140 --> 00:32:51.880
So it's always been a lovely philosophy.

00:32:52.200 --> 00:32:53.620
There's always been a lovely philosophy

00:32:53.620 --> 00:32:54.360
behind it.

00:32:55.240 --> 00:32:58.200
[Speaker 0]: 1 other point I'd make there is that the

00:32:58.200 --> 00:33:01.460
Hyrolo also contains logical search

00:33:01.460 --> 00:33:04.940
operators. So when I typed in that string you

00:33:04.940 --> 00:33:07.360
could just as well type with like Lisp

00:33:07.360 --> 00:33:09.140
expressions, semi Lisp expressions.

00:33:09.480 --> 00:33:13.460
You can say open paren and word 1,

00:33:13.940 --> 00:33:17.240
word 2, close paren. You know you can have or

00:33:17.240 --> 00:33:22.360
and XOR and not and it'll do the search and

00:33:22.360 --> 00:33:24.260
just retrieve the entries,

00:33:24.720 --> 00:33:27.620
again, multi-line entries that match all of

00:33:27.620 --> 00:33:29.660
the criteria that you specified there.

00:33:29.760 --> 00:33:31.120
So that's fairly unique,

00:33:31.120 --> 00:33:33.320
I think. So you basically got a full text

00:33:33.320 --> 00:33:35.840
search platform with logical operators,

00:33:36.380 --> 00:33:38.580
instantly, you know, fast moving,

00:33:38.680 --> 00:33:42.720
rapid keys that you can control everything

00:33:42.720 --> 00:33:45.280
with and it's all integrated into this larger

00:33:45.280 --> 00:33:45.780
framework.

00:33:47.780 --> 00:33:49.060
[Speaker 1]: Okay, great. Well, Bob,

00:33:49.060 --> 00:33:50.520
you have 2 more questions,

00:33:50.820 --> 00:33:53.760
but there's a big 1 about what inspired you

00:33:53.760 --> 00:33:56.440
to write it back. It's being hyperbole around

00:33:56.440 --> 00:33:57.360
the time of its birth,

00:33:57.360 --> 00:33:59.680
but sadly, we only have about 1 more minute.

00:34:00.040 --> 00:34:01.320
So what I'm going to ask you to do,

00:34:01.320 --> 00:34:02.780
feel free to answer the question.

00:34:02.800 --> 00:34:05.220
If you go on BBB, I've pasted the link to the

00:34:05.220 --> 00:34:06.980
other pad. I think you can see it on your

00:34:08.420 --> 00:34:11.020
[Speaker 0]: I have the ether pad up.

00:34:06.980 --> 00:34:11.820
[Speaker 1]: computer as well. Right,

00:34:11.820 --> 00:34:13.100
so what are we going to do?

00:34:14.860 --> 00:34:16.679
I'm Sorry, I'm just a little bit pressed by

00:34:16.679 --> 00:34:18.280
time because it's not me controlling when we

00:34:18.280 --> 00:34:19.340
move on to the next talk,

00:34:19.340 --> 00:34:21.679
as was evidenced yesterday when we got yonked

00:34:21.719 --> 00:34:24.000
to the next talk. So Bob,

00:34:24.000 --> 00:34:25.679
feel free to take all the time you want to

00:34:25.679 --> 00:34:26.580
answer questions. People,

00:34:26.580 --> 00:34:28.360
if you wanna join the Big Blue Button room,

00:34:28.360 --> 00:34:30.239
the links are available and open on the talk

00:34:30.239 --> 00:34:31.960
page. You can join and ask as many questions

00:34:31.960 --> 00:34:33.679
as you want to Bob. And for us,

00:34:33.679 --> 00:34:35.560
with a live stream, we'll be moving on to the

00:34:35.560 --> 00:34:37.280
next talk in about 30 seconds.

00:34:37.280 --> 00:34:39.400
So Bob, all that's left is for me to thank

00:34:39.400 --> 00:34:41.580
you for your presentation again this year and

00:34:43.520 --> 00:34:44.560
[Speaker 0]: Thank you, Leo.

00:34:41.580 --> 00:34:45.820
[Speaker 1]: for all your answers. All right.

00:34:45.820 --> 00:34:47.699
Bye bye, Bob. And we'll be moving on to the

00:34:47.699 --> 00:34:49.080
next talk in about 10 seconds.

00:34:49.080 --> 00:34:53.800
See you in a bit. All right,

00:34:53.800 --> 00:34:56.139
Bob, we are off air I think now.

00:34:56.139 --> 00:34:57.720
Thank you so much. I need to get moving for

00:34:59.320 --> 00:35:02.320
[Speaker 0]: Okay, is somebody gonna keep writing answers

00:35:02.500 --> 00:35:04.540
in here or I need to type them in?

00:34:57.720 --> 00:35:06.260
[Speaker 1]: the next talk. It's probably best now if you

00:35:06.260 --> 00:35:09.440
read the questions on your own and answer

00:35:09.440 --> 00:35:11.040
them. We'll collate everything together,

00:35:11.040 --> 00:35:12.480
we'd just like to have your answers.

00:35:15.060 --> 00:35:17.180
[Speaker 0]: I hope some people will join the BBB.

00:35:19.000 --> 00:35:21.380
[Speaker 1]: it in my... All right,

00:35:21.380 --> 00:35:21.880
bye-bye.

00:35:17.780 --> 00:35:23.300
[Speaker 0]: But I'll start. I'll put Bye-bye.

00:35:24.220 --> 00:35:28.580
So let me take a second here to see what

00:35:28.580 --> 00:35:32.980
questions we have. Did we cover that?

00:35:36.240 --> 00:35:42.900
OK. The point is why not upstream search

00:35:42.980 --> 00:35:46.580
interface? Could you clarify that question?

00:35:46.840 --> 00:35:51.380
I don't quite know what that means.

00:35:51.380 --> 00:35:53.760
So I'll go on to the next 1 and come back to

00:35:53.760 --> 00:35:57.680
that. Hyperlinks been around for a number of

00:35:57.680 --> 00:35:59.820
years now. What inspired you to write it back

00:35:59.820 --> 00:36:01.500
around the time of its birth?

00:36:01.800 --> 00:36:03.140
Well, that's a great question.

00:36:04.700 --> 00:36:07.360
It was born before the World Wide Web,

00:36:07.360 --> 00:36:09.300
actually. And it was right before.

00:36:10.120 --> 00:36:13.100
I remember we were in the midst of a version

00:36:13.840 --> 00:36:16.300
when the first version of the web occurred.

00:36:16.560 --> 00:36:19.840
And I was thinking that there was going to be

00:36:19.840 --> 00:36:22.700
an information explosion of unstructured

00:36:22.960 --> 00:36:27.140
information. And like we needed to have much

00:36:27.140 --> 00:36:30.920
better tools to be able to manage say like

00:36:30.920 --> 00:36:36.740
5,000 email messages coming in and all sorts

00:36:36.740 --> 00:36:39.260
of non-database-oriented information

00:36:39.480 --> 00:36:42.020
structures. So I said we need an advanced

00:36:42.180 --> 00:36:46.080
interactive hypertext system and it needs to

00:36:46.080 --> 00:36:49.320
work with all the general capabilities that

00:36:49.320 --> 00:36:54.100
we use like email and our document production

00:36:54.240 --> 00:36:58.500
systems. So I was doing research at the time

00:36:58.500 --> 00:37:04.200
at a university And I decided to work on

00:37:04.200 --> 00:37:06.140
something that we called personalized

00:37:06.420 --> 00:37:07.520
information environments.

00:37:07.900 --> 00:37:10.120
And there's a paper about this out there if

00:37:10.120 --> 00:37:12.040
you want to dig it out on the web.

00:37:12.900 --> 00:37:15.360
So Pies, as they were called,

00:37:16.320 --> 00:37:20.040
was an architecture which would have a bunch

00:37:20.040 --> 00:37:24.100
of managers, like Hyperbole was 1 of the

00:37:24.100 --> 00:37:25.820
managers, the hypertext manager,

00:37:26.520 --> 00:37:29.440
and then a bunch of point tools that would

00:37:29.440 --> 00:37:30.720
leverage the managers,

00:37:30.800 --> 00:37:33.580
like an email reader would be a point tool

00:37:33.680 --> 00:37:36.140
that would leverage the hypertext manager.

00:37:36.780 --> 00:37:39.480
And so the first, I did in fact write

00:37:39.480 --> 00:37:40.520
something called PyMail,

00:37:41.460 --> 00:37:43.840
which was very much Gmail-like,

00:37:44.660 --> 00:37:47.640
before Gmail. And so inside,

00:37:48.100 --> 00:37:51.300
and I did a, it was like our mail in a way,

00:37:51.680 --> 00:37:54.020
but inside your our mail summaries,

00:37:54.100 --> 00:37:57.180
for example, you could have explicit buttons

00:37:57.180 --> 00:38:01.120
embedded and that were drawn from the subject

00:38:01.120 --> 00:38:02.300
of your email message,

00:38:02.400 --> 00:38:06.180
and they'd work just like the regular button.

00:38:06.300 --> 00:38:07.540
So it was very flexible,

00:38:07.700 --> 00:38:11.660
and it had rule-based processing and things.

00:38:11.820 --> 00:38:13.520
So Hyperbole came out of that,

00:38:13.520 --> 00:38:15.040
and it's come a long way,

00:38:15.200 --> 00:38:20.360
but it's still a very useful core hypertext

00:38:20.480 --> 00:38:22.040
system, hypermedia system,

00:38:22.040 --> 00:38:26.580
I should say. Are you familiar with the

00:38:26.580 --> 00:38:28.780
Embark package? I am a bit.

00:38:28.820 --> 00:38:30.520
I've just started using it.

00:38:30.520 --> 00:38:31.900
I think there's some overlapping

00:38:32.040 --> 00:38:34.200
functionality with hyperbole.

00:38:34.340 --> 00:38:39.360
Yes, we've found that people over time have

00:38:39.360 --> 00:38:41.600
enjoyed hyperbole and have started

00:38:41.600 --> 00:38:43.940
replicating some of its features,

00:38:43.940 --> 00:38:45.880
you know, small amounts of the features.

00:38:47.680 --> 00:38:51.340
I talked to, I hope I don't miss his name,

00:38:51.340 --> 00:38:56.000
but O'Adam who writes that once in a while we

00:38:56.000 --> 00:38:59.480
dialogue and I think Embark is great,

00:38:59.480 --> 00:39:04.500
you know, I'll give him some pointers too and

00:39:04.500 --> 00:39:08.040
he thinks that Embark and hyperbole are quite

00:39:08.040 --> 00:39:10.740
compatible too, just like organ hyperbole.

00:39:11.120 --> 00:39:13.080
So that's how we like to keep it.

00:39:14.540 --> 00:39:18.160
Some people prefer just a small package of

00:39:18.160 --> 00:39:21.100
mBARC, and it does different things than what

00:39:21.100 --> 00:39:23.800
Hyperbole does. So I think you use all of

00:39:23.800 --> 00:39:27.540
these tools together, and they can work very

00:39:27.540 --> 00:39:33.960
well together. Any other questions?

00:39:34.280 --> 00:39:38.300
Anybody still here? If not,

00:39:38.440 --> 00:39:41.180
probably people are off to another talk.

00:39:41.940 --> 00:39:47.160
So thank you very much And again look for

00:39:47.160 --> 00:39:51.840
Hyperbole version 9 in the next week.

00:39:53.740 --> 00:39:56.880
Thanks very much. Bye.

00:40:00.620 --> 00:40:07.120
Should I leave BBB? Oh Alpha Papa's here.

00:40:07.120 --> 00:40:16.040
Hey. Good to see you. Alright,

00:40:16.040 --> 00:40:22.740
well... Well, I'll stay for another minute,

00:40:22.820 --> 00:40:27.280
but I think I'm going to go off video 2 and

00:40:27.280 --> 00:40:29.780
start listening to another talk.

00:40:30.660 --> 00:40:31.480
Thanks, everyone. Thanks everyone.

00:40:56.040 --> 00:40:56.960
Yes, I can hear you. Yes,

00:40:58.860 --> 00:41:00.060
[Speaker 1]: Have you been answering questions?

00:40:56.960 --> 00:41:03.700
[Speaker 0]: I can hear you. finished answering the

00:41:03.700 --> 00:41:05.200
questions. We're all done.

00:41:00.060 --> 00:41:07.360
[Speaker 1]: I Okay, cool. Well, what I'm going to do,

00:41:07.360 --> 00:41:09.140
I'm going to close the room unless you want

00:41:09.140 --> 00:41:10.140
to go a little longer,

00:41:10.140 --> 00:41:11.880
because this talk that we're playing right

00:41:11.880 --> 00:41:13.940
now is finishing really quick and we don't

00:41:13.940 --> 00:41:15.140
have a Q&A afterwards.

00:41:15.300 --> 00:41:19.040
So, do you want to stay on air or something?

00:41:19.440 --> 00:41:21.680
[Speaker 0]: Yeah, if you let people know to come back,

00:41:21.680 --> 00:41:23.320
because someone went to go hear that

00:41:23.320 --> 00:41:24.900
presentation, I can stay.

00:41:25.920 --> 00:41:27.880
[Speaker 1]: Sure, I'll make an announcement then.

00:41:27.880 --> 00:41:29.680
And you can stay, we'll just put on BBB.

00:41:29.680 --> 00:41:31.840
You can stay muted until people join,

00:41:31.840 --> 00:41:33.840
but this way it opens up menus for people to

00:41:33.840 --> 00:41:36.060
join and if no 1 shows up in 5 minutes we'll

00:41:36.060 --> 00:41:38.080
all go on break. Does that sound okay?

00:41:38.680 --> 00:41:40.020
[Speaker 0]: Great, thank you.

00:41:40.520 --> 00:41:44.340
[Speaker 1]: Cool, I'll go back to the management in the

00:41:44.340 --> 00:41:45.660
background and I'll let you know.

00:43:25.760 --> 00:43:27.540
Okay, Bob, I've won the stream.

00:43:27.660 --> 00:43:28.940
We are joining it now.

00:43:28.940 --> 00:43:30.380
We've got about 5 seconds.

00:43:41.940 --> 00:43:43.580
And I think we are back.

00:43:49.240 --> 00:43:51.300
so we are gone, Bob, please.

00:43:45.340 --> 00:43:53.260
[Speaker 0]: Hi. So, yeah, I was going to say,

00:43:54.100 --> 00:43:57.160
can we see if anybody comes back in the room?

00:43:57.160 --> 00:43:58.120
How do you tell?

00:44:01.380 --> 00:44:03.740
[Speaker 1]: You should be able to show on the left,

00:44:03.740 --> 00:44:04.920
you've got on BbBlueButton,

00:44:04.920 --> 00:44:06.380
you've got a button, I'm showing it on the

00:44:06.380 --> 00:44:08.440
screen, but you've got a little button that

00:44:08.440 --> 00:44:10.420
allows you to show the people joining.

00:44:10.840 --> 00:44:15.380
So, hello everyone. Let's see if you had more

00:44:15.380 --> 00:44:17.080
question on your pad that we could be taking

00:44:17.080 --> 00:44:19.040
in the meantime, just give me a second to

00:44:19.040 --> 00:44:19.240
find

00:44:19.240 --> 00:44:23.500
[Speaker 0]: your pad. Here we go, an error occurred.

00:44:31.820 --> 00:44:33.220
[Speaker 1]: All right, it's loading up.

00:44:25.680 --> 00:44:37.840
[Speaker 0]: Okay. Wow. Feels like there's an AI writing

00:44:37.960 --> 00:44:39.760
this stuff on the pad.

00:44:41.120 --> 00:44:44.740
Has it? Is this the last pad?

00:44:45.600 --> 00:44:47.080
Oh no, this is a different 1,

00:44:49.840 --> 00:44:51.520
[Speaker 1]: Which question are you looking at now?

00:44:47.080 --> 00:44:53.820
[Speaker 0]: sorry. It was a different pad,

00:44:55.840 --> 00:44:56.460
[Speaker 1]: Oh right.

00:44:53.820 --> 00:44:57.109
[Speaker 0]: that was the problem. Okay,

00:44:57.260 --> 00:44:59.540
here we go. Okay, I'm back.

00:45:00.540 --> 00:45:01.860
So, yeah, it looks like...

00:45:02.260 --> 00:45:03.980
Is anybody back? Send,

00:45:04.120 --> 00:45:07.180
if you're here, send a chat message.

00:45:08.520 --> 00:45:10.020
[Speaker 1]: Yeah, because it's been something.

00:45:10.640 --> 00:45:14.240
You have, apparently, whenever we leave those

00:45:14.320 --> 00:45:18.220
BBB chat room open, the moment we go off air,

00:45:18.260 --> 00:45:20.280
people start joining and asking a lot of very

00:45:20.280 --> 00:45:22.200
interesting questions and you know that's all

00:45:22.200 --> 00:45:24.280
well and good, we'll be able to put them on

00:45:24.280 --> 00:45:26.280
the page later on. But it'd be great if you

00:45:26.280 --> 00:45:28.260
could also have those discussions when we are

00:45:28.260 --> 00:45:30.140
live because a lot of people would benefit

00:45:30.140 --> 00:45:32.120
from the brilliance that goes on in this

00:45:32.120 --> 00:45:34.740
room. So please don't be shy,

00:45:37.340 --> 00:45:39.900
[Speaker 0]: So we're on the general stream now?

00:45:34.740 --> 00:45:41.780
[Speaker 1]: join and talk. Yep, we are back on the

00:45:41.780 --> 00:45:46.080
general stream. We have about until 10 of the

00:45:46.080 --> 00:45:48.180
next hour, which is 19 minutes.

00:45:48.760 --> 00:45:52.540
[Speaker 0]: Just- Why don't you and I talk?

00:45:52.540 --> 00:45:56.180
So have you ever tried hyperbole,

00:45:56.400 --> 00:45:56.900
Leo?

00:45:58.180 --> 00:46:00.220
[Speaker 1]: I have never, but You know,

00:46:00.220 --> 00:46:03.380
it feels like every year when you present

00:46:03.380 --> 00:46:05.140
something, it feels like I already know so

00:46:05.140 --> 00:46:07.580
much. Because of the buttons,

00:46:08.040 --> 00:46:10.080
it feels like it's also something that we've

00:46:10.080 --> 00:46:12.440
reinvented many times in Emacs.

00:46:12.440 --> 00:46:13.940
It's like conversion to evolution,

00:46:14.020 --> 00:46:16.540
except you're the 1 who started ahead of

00:46:16.540 --> 00:46:17.420
everyone else.

00:46:17.860 --> 00:46:19.700
[Speaker 0]: Well, that's a good point because,

00:46:19.940 --> 00:46:23.200
you know, we have, Emacs itself has push

00:46:23.200 --> 00:46:25.520
buttons, which you see like in the help

00:46:25.520 --> 00:46:27.540
buffers. And those used to,

00:46:27.540 --> 00:46:29.840
we didn't really do anything with those,

00:46:30.040 --> 00:46:32.780
but now we've subsumed them as implicit

00:46:32.800 --> 00:46:35.340
buttons as well. So you're made a return,

00:46:35.580 --> 00:46:38.500
we'll work on those anywhere too.

00:46:38.740 --> 00:46:41.820
So, we're trying to get,

00:46:42.260 --> 00:46:45.920
you use 1 key, right? To control every type

00:46:45.920 --> 00:46:47.080
of button that you have.

00:46:47.080 --> 00:46:48.420
It works on org links,

00:46:48.560 --> 00:46:51.800
org buttons anywhere, or URLs.

00:46:53.240 --> 00:46:54.440
Because it's so simple.

00:46:54.520 --> 00:46:58.820
All you need is like 5 to 10 lines of code to

00:46:58.820 --> 00:47:02.760
map. You map the pattern that represents a

00:47:02.760 --> 00:47:05.080
concept, right? And then you can create an

00:47:05.080 --> 00:47:07.720
infinite number of those buttons from that

00:47:07.720 --> 00:47:09.520
type. That's what's really cool about

00:47:09.520 --> 00:47:13.060
Hyperbole, is say I have a 500 page document

00:47:13.280 --> 00:47:15.600
and it uses a really weird format for

00:47:15.600 --> 00:47:17.060
cross-referencing, right?

00:47:17.220 --> 00:47:22.320
I write my 3 lines of pattern match to work

00:47:22.320 --> 00:47:24.200
with that. And then everywhere throughout

00:47:24.200 --> 00:47:25.960
that document and the hundreds of other

00:47:25.960 --> 00:47:27.680
documents that will be created with that

00:47:27.680 --> 00:47:30.900
format, they're all live buttons instantly.

00:47:31.280 --> 00:47:33.240
Nothing changed about the document.

00:47:34.220 --> 00:47:35.500
That's really cool. You know,

00:47:35.500 --> 00:47:37.860
word mode, we have global word buttons,

00:47:37.940 --> 00:47:42.040
but mostly it has to be embedded within an

00:47:42.040 --> 00:47:44.760
org file, right? And follow that syntax.

00:47:45.580 --> 00:47:51.900
With hyperbole, it's like we can adapt as the

00:47:51.900 --> 00:47:55.300
world adapts around us to whatever formats

00:47:55.320 --> 00:47:56.940
people want to use that day.

00:47:56.940 --> 00:47:59.380
And you can even change things to look the

00:47:59.380 --> 00:48:02.200
way you want, right, and have your own

00:48:02.440 --> 00:48:04.860
cross-references. There's something built

00:48:04.860 --> 00:48:07.560
into Hyperbole that's not really active,

00:48:08.220 --> 00:48:13.120
which was sort of along the Zettelkasten way.

00:48:13.780 --> 00:48:15.440
We wrote this a long time ago.

00:48:15.440 --> 00:48:16.960
It's called hib-doc.el,

00:48:19.120 --> 00:48:22.200
and it's a card catalog notion.

00:48:22.200 --> 00:48:25.820
So it uses the high rollo in the background

00:48:26.160 --> 00:48:30.180
but it lets you create these forms that are

00:48:30.180 --> 00:48:32.800
cards that you fill out with whatever kind of

00:48:32.800 --> 00:48:35.360
data you want and then it gives you the full

00:48:35.360 --> 00:48:38.520
text searching across the cards and each card

00:48:38.520 --> 00:48:41.760
has a unique ID that you can reference

00:48:41.820 --> 00:48:45.240
similar to org IDs but these are human

00:48:45.240 --> 00:48:49.860
readable and human typable and so you can you

00:48:49.860 --> 00:48:52.940
can just have a cross-reference to any doc ID

00:48:52.960 --> 00:48:56.100
and essentially create what Engelbart used to

00:48:56.100 --> 00:49:00.520
call a journal, which is all these IDs on

00:49:00.520 --> 00:49:03.220
documents that point you directly to the

00:49:03.220 --> 00:49:05.640
document archive so that you could have like

00:49:05.640 --> 00:49:10.020
your internal publishing system and you know

00:49:10.020 --> 00:49:12.940
it's very simple to do and it's just 1 module

00:49:13.420 --> 00:49:14.660
added on to Hyperbole.

00:49:15.920 --> 00:49:19.140
[Speaker 1]: Yeah it's especially interesting for me you

00:49:19.140 --> 00:49:21.140
know because coming back to the side of

00:49:21.140 --> 00:49:23.400
convergent evolutions it's funny because the

00:49:23.400 --> 00:49:24.880
parameters are a little different.

00:49:24.920 --> 00:49:26.260
For us with org buttons,

00:49:26.260 --> 00:49:29.340
we're very happy. A lot of the stuff during

00:49:29.340 --> 00:49:31.360
EmacsConf is run with org mode,

00:49:31.360 --> 00:49:34.340
like we have Elisp going everywhere to

00:49:34.540 --> 00:49:37.320
compile a lot of org properties,

00:49:38.080 --> 00:49:39.640
like speaker information,

00:49:39.660 --> 00:49:41.480
for instance, how long the talk is,

00:49:41.480 --> 00:49:42.800
the title, and all this.

00:49:42.800 --> 00:49:44.760
We have all of this in an org file,

00:49:44.760 --> 00:49:46.020
which we use as a database,

00:49:46.220 --> 00:49:47.800
but then we can do so much stuff.

00:49:47.800 --> 00:49:50.740
We can send email and we can update the

00:49:50.740 --> 00:49:52.200
schedule. By the way, if you're interested in

00:49:52.200 --> 00:49:54.280
this, we'll have a talk on the DevTrack in

00:49:54.280 --> 00:49:56.640
the afternoon today that Sacha did and it's

00:49:56.640 --> 00:49:58.140
wonderful. I'm just teasing it.

00:49:58.140 --> 00:49:59.040
[Speaker 0]: Oh, that's great.

00:50:00.060 --> 00:50:01.140
[Speaker 1]: But coming back to Hyperbole,

00:50:01.640 --> 00:50:04.000
for you, it feels like the parameters were

00:50:04.000 --> 00:50:06.560
slightly different because the feeling was,

00:50:06.560 --> 00:50:09.020
I just want a tunnel that can work between

00:50:09.020 --> 00:50:10.440
any type of files. Now,

00:50:10.440 --> 00:50:11.740
it's all well and good.

00:50:11.740 --> 00:50:14.540
Org-Rome, D-Note, and all the stuff like

00:50:14.540 --> 00:50:16.860
this, they create bidirectional links.

00:50:17.080 --> 00:50:19.540
But it's only between org-mode files.

00:50:19.840 --> 00:50:22.040
Whereas what you're achieving with Hyperbole,

00:50:22.260 --> 00:50:24.720
and you've done it much earlier than everyone

00:50:24.720 --> 00:50:27.420
else, is that you have this concept

00:50:27.660 --> 00:50:29.440
regardless of the type of file that you're

00:50:29.440 --> 00:50:32.520
using. And I find this to be beautiful.

00:50:32.900 --> 00:50:35.280
Like 5 years ago, whenever you were talking

00:50:35.280 --> 00:50:37.280
about hyperbole, I did not have a concrete

00:50:37.280 --> 00:50:38.540
idea of what was happening.

00:50:38.640 --> 00:50:40.360
But ever since I've gone through the journey

00:50:40.360 --> 00:50:42.380
of really understanding what the El Caster

00:50:42.380 --> 00:50:45.000
method were about, it feels like you were

00:50:45.720 --> 00:50:46.980
foreigners in the topic.

00:50:46.980 --> 00:50:48.540
Obviously, you've mentioned the mother of all

00:50:48.540 --> 00:50:50.240
demos by Edward Engelbart,

00:50:50.740 --> 00:50:54.100
but those ideas are not novel,

00:50:54.340 --> 00:50:56.820
but it feels like only now are they starting

00:50:56.820 --> 00:50:58.520
to be appropriated by people,

00:50:58.520 --> 00:50:59.800
especially in free software,

00:50:59.800 --> 00:51:01.200
and it's really good to see.

00:51:01.280 --> 00:51:02.440
I'm really excited to,

00:51:02.440 --> 00:51:04.600
well, have my small part to play in this.

00:51:04.600 --> 00:51:06.980
And I'm also excited to be able to chat with

00:51:06.980 --> 00:51:10.140
you and people like Bastien and other people

00:51:10.240 --> 00:51:11.400
about all those topics.

00:51:12.340 --> 00:51:13.780
[Speaker 0]: Yeah, I think, you know,

00:51:13.940 --> 00:51:16.640
it's fun that we can laugh now about when

00:51:16.640 --> 00:51:20.020
people say people are still using Emacs,

00:51:20.020 --> 00:51:22.800
you know, is because they're not used,

00:51:22.800 --> 00:51:24.160
certain people aren't using it.

00:51:24.160 --> 00:51:26.880
They have no idea of how far it's come and

00:51:26.880 --> 00:51:28.720
how powerful it is. And,

00:51:28.780 --> 00:51:31.520
you know, we're leveraging Elisp heavily,

00:51:31.560 --> 00:51:33.940
obviously, but if you look at the definition

00:51:34.300 --> 00:51:37.800
of our types, they look exactly like DIP

00:51:37.800 --> 00:51:41.180
funds in ELisp. And we've been able to do

00:51:41.180 --> 00:51:42.780
that because of Lisp macros.

00:51:43.860 --> 00:51:46.400
You know, we so we basically have our own

00:51:46.400 --> 00:51:48.300
domain specific language there,

00:51:48.420 --> 00:51:51.240
but there's almost nothing to learn because

00:51:51.340 --> 00:51:53.460
it's just like what you know from UList.

00:51:54.200 --> 00:51:57.120
So again, you know, taking the concept and

00:51:57.120 --> 00:51:59.700
leveraging it, abstracting it and leveraging

00:51:59.760 --> 00:52:02.980
it multiple times gives you a lot of power.

00:52:03.660 --> 00:52:06.060
And people, you know, somebody said the other

00:52:06.060 --> 00:52:07.500
day, and I said, finally,

00:52:07.760 --> 00:52:10.360
this quote happened. He said,

00:52:11.000 --> 00:52:15.060
there's so many things that I do with

00:52:15.060 --> 00:52:17.200
hyperbole every day that I forget that I'm

00:52:17.200 --> 00:52:21.440
using hyperbole. Because it's just so

00:52:21.440 --> 00:52:23.580
embedded in this guy's workflow.

00:52:23.680 --> 00:52:25.440
And that's really how I use it.

00:52:25.440 --> 00:52:27.380
You know, there are features in there,

00:52:27.440 --> 00:52:29.060
can't use everything, right?

00:52:29.060 --> 00:52:31.860
So there are features that I don't use,

00:52:32.040 --> 00:52:35.580
but I use a lot of things and it's all like

00:52:35.580 --> 00:52:37.580
muscle memory, just like the keyboard,

00:52:38.200 --> 00:52:39.740
the Emacs key bindings.

00:52:39.960 --> 00:52:42.180
So it's very exciting to get to that level.

00:52:42.180 --> 00:52:44.320
And now, you know, we haven't started with

00:52:44.320 --> 00:52:46.940
the chatbots or any of the AI integration,

00:52:47.300 --> 00:52:49.480
but I'm starting to think about that a little

00:52:49.480 --> 00:52:53.480
bit and how we'll interface to that world and

00:52:53.480 --> 00:52:55.320
I think it's going to be very exciting.

00:52:56.040 --> 00:52:58.340
[Speaker 1]: Yeah, likewise and I think it harks back to

00:52:58.340 --> 00:53:00.660
what we were talking about before when we

00:53:00.660 --> 00:53:03.700
mentioned Hyperbole being a package inside of

00:53:03.700 --> 00:53:05.300
an ecosystem that is Emacs.

00:53:05.860 --> 00:53:08.040
But it's not because something is well

00:53:08.040 --> 00:53:10.560
circumscribed in terms of feature set that it

00:53:10.560 --> 00:53:12.880
does not influence everything around it.

00:53:12.880 --> 00:53:15.060
Like Hyperbole can be used with something

00:53:15.060 --> 00:53:18.080
completely at the opposite end of what it was

00:53:18.080 --> 00:53:21.380
intended for, just because it provides a good

00:53:21.380 --> 00:53:23.860
set of tools that can be used wherever else

00:53:23.860 --> 00:53:26.100
you want in Emacs. And it's the same thing

00:53:26.100 --> 00:53:27.980
with Org Mode, it's the same thing with many,

00:53:27.980 --> 00:53:29.280
many different things.

00:53:29.440 --> 00:53:32.820
And it feels like integrating AIs,

00:53:33.400 --> 00:53:36.920
or generative AIs, into Emacs would provide

00:53:39.620 --> 00:53:42.340
such a tool that could apply to any kind of

00:53:42.340 --> 00:53:45.060
other major mode or any kind of other use.

00:53:45.060 --> 00:53:46.640
So I'm also excited to see this.

00:53:46.640 --> 00:53:50.280
It feels like we are sitting at the brink of

00:53:50.280 --> 00:53:52.580
a revolution. I'm not going to say the acne

00:53:52.580 --> 00:53:54.440
stuff, but it definitely feels like right

00:53:54.440 --> 00:53:57.560
now, by trying to see what we can do with AI,

00:53:57.560 --> 00:53:59.380
it's definitely going to change the way not

00:53:59.380 --> 00:54:01.560
only we program, but also the way we take

00:54:01.560 --> 00:54:03.160
notes and the way we design stuff,

00:54:03.160 --> 00:54:05.220
arcing back to what John Wigley said

00:54:05.220 --> 00:54:08.660
yesterday about his draft program on macOS.

00:54:09.800 --> 00:54:10.940
Bob, if you don't mind,

00:54:11.040 --> 00:54:13.100
I see people typing questions and I also see

00:54:13.100 --> 00:54:14.820
people joining on people buttons,

00:54:14.820 --> 00:54:16.920
so I'm going to read you the 2 questions that

00:54:16.920 --> 00:54:18.260
have been added. Is that okay?

00:54:19.200 --> 00:54:20.580
[Speaker 0]: Great, go for it.

00:54:21.240 --> 00:54:23.140
[Speaker 1]: Cool, so first question.

00:54:23.320 --> 00:54:25.240
Wow, what you're describing now,

00:54:25.240 --> 00:54:27.520
and that's when you were talking about the

00:54:27.520 --> 00:54:31.840
bi-directional links and especially the last

00:54:31.840 --> 00:54:33.080
question in its entirety,

00:54:33.540 --> 00:54:35.440
What you're describing now reminds me a lot

00:54:35.440 --> 00:54:37.440
about HyperCard that I grew up on.

00:54:37.440 --> 00:54:39.220
Do you know if Hyperbole inspired Bill

00:54:39.220 --> 00:54:41.040
Atkinson or if you were inspired by

00:54:41.040 --> 00:54:43.040
HyperCard? Or were there just a lot of

00:54:43.040 --> 00:54:44.860
thoughts about hyper-contextuality around

00:54:44.860 --> 00:54:45.520
that time?

00:54:46.780 --> 00:54:50.100
[Speaker 0]: Alright, well this is another interesting

00:54:50.320 --> 00:54:52.360
anecdote. I don't know if it's true or not,

00:54:52.360 --> 00:54:57.880
but I think HyperCard predated our stuff.

00:54:57.880 --> 00:55:00.480
It was right around the same time when

00:55:00.480 --> 00:55:02.420
Hyperbole was starting out.

00:55:02.540 --> 00:55:05.100
But when I was doing the Pi research,

00:55:06.040 --> 00:55:08.800
I worked at, when I left school,

00:55:08.800 --> 00:55:11.280
I worked at Motorola, and we did a lot of

00:55:11.280 --> 00:55:13.040
work with Apple back then.

00:55:13.180 --> 00:55:15.480
And somebody came back and he said,

00:55:15.480 --> 00:55:18.000
you know, the people over there have seen

00:55:19.120 --> 00:55:21.940
your Pi research and they really liked it a

00:55:21.940 --> 00:55:26.020
lot. And so they were leveraging that when

00:55:26.020 --> 00:55:28.440
they decided to create the division that they

00:55:28.440 --> 00:55:33.280
called Apple Pi, which was the originator of

00:55:33.280 --> 00:55:36.500
the Newton which eventually led to the

00:55:36.500 --> 00:55:40.960
iPhone. So it all kind of is interconnected

00:55:41.360 --> 00:55:44.380
just like the impact that free software has

00:55:44.380 --> 00:55:47.240
had around the world. So you never know where

00:55:47.240 --> 00:55:49.840
your stuff is gonna go or end up.

00:55:51.180 --> 00:55:53.400
[Speaker 1]: Right. All right, moving on to the next

00:55:53.400 --> 00:55:55.840
question. Is it possible to only use 1

00:55:55.840 --> 00:55:57.740
feature of hyperbole without the others,

00:55:57.740 --> 00:56:00.580
i.e. Using only the implicit explicit buttons

00:56:00.580 --> 00:56:03.580
without I control I roller or without having

00:56:03.580 --> 00:56:05.920
to rewrite part of the code in hyperbole in

00:56:05.920 --> 00:56:08.040
order to be able to load a smaller hyperbole.

00:56:08.200 --> 00:56:09.140
Does it make sense?

00:56:10.260 --> 00:56:12.640
[Speaker 0]: Yes we get asked this all the time.

00:56:12.900 --> 00:56:16.560
So you can use any little bit that you want

00:56:16.560 --> 00:56:19.620
anywhere right you can even just call code

00:56:19.940 --> 00:56:23.660
from Hyperbole. I mean you don't use

00:56:23.680 --> 00:56:25.080
everything in Emacs, right?

00:56:25.080 --> 00:56:27.740
But you still install Emacs on your machine.

00:56:28.180 --> 00:56:30.080
It's exactly the same thing.

00:56:30.860 --> 00:56:33.280
Those libraries don't take up any memory,

00:56:33.280 --> 00:56:36.380
they take up a little disk space and it's so

00:56:36.380 --> 00:56:38.520
trivial compared to the amount of disk we

00:56:38.520 --> 00:56:41.780
have today. So a lot of things are not loaded

00:56:41.920 --> 00:56:43.760
unless you activate them.

00:56:45.040 --> 00:56:48.940
And so I know that you do have to build all

00:56:48.940 --> 00:56:51.360
those things. So maybe that's what bothers

00:56:51.360 --> 00:56:56.060
people. It takes 2 minutes if you're using,

00:56:56.320 --> 00:56:58.400
it depends how fast your computer is.

00:56:58.400 --> 00:57:01.160
But you build it once on install like every

00:57:01.160 --> 00:57:04.600
other package. And it used to be that there

00:57:04.600 --> 00:57:06.620
would be a lot of warnings just because of

00:57:06.620 --> 00:57:09.020
the way we wrote the code and we didn't

00:57:09.020 --> 00:57:11.120
really have to deal with some of those

00:57:11.120 --> 00:57:13.080
warnings. But with this new release,

00:57:13.080 --> 00:57:15.120
we've gotten rid of almost all of them,

00:57:15.200 --> 00:57:19.800
including the native compiler messages.

00:57:20.020 --> 00:57:22.620
So it should be a very clean install now,

00:57:22.900 --> 00:57:26.620
and just use 1 part at a time.

00:57:26.880 --> 00:57:29.820
But the other parts are there in case you

00:57:29.820 --> 00:57:32.080
make a link to something and you use a

00:57:32.080 --> 00:57:34.600
facility just like I was showing as I went

00:57:34.600 --> 00:57:36.360
across subsystems today.

00:57:36.600 --> 00:57:38.000
It may take you a year,

00:57:38.000 --> 00:57:40.120
but then all of a sudden you find the use

00:57:40.120 --> 00:57:42.340
case for Hyrule and you say,

00:57:42.340 --> 00:57:44.040
oh, I'm glad I have it there.

00:57:44.440 --> 00:57:47.540
And yes, some of these things could be split

00:57:47.540 --> 00:57:49.540
into sub packages like you do in the org

00:57:49.540 --> 00:57:52.500
ecosystem. But given our limited resources on

00:57:52.500 --> 00:57:56.400
the team, we find having them all in 1 gives

00:57:56.400 --> 00:57:59.040
us a higher level of quality and lets us

00:57:59.040 --> 00:58:02.840
deliver a better integrated system for your

00:58:02.840 --> 00:58:03.340
use.

00:58:04.740 --> 00:58:06.300
[Speaker 1]: Yeah, exactly. And I think,

00:58:06.300 --> 00:58:09.120
you know, it's, it's not a monolith.

00:58:10.080 --> 00:58:12.540
I mean, it's usually easier,

00:58:12.540 --> 00:58:14.620
easy, more easy, more easy.

00:58:14.620 --> 00:58:16.500
Sorry, I was right on the first try.

00:58:16.560 --> 00:58:20.580
It's usually easier to maintain a monolith

00:58:20.860 --> 00:58:23.140
that contains many bits of functionality like

00:58:23.140 --> 00:58:25.280
org. You have plenty of people using org

00:58:25.280 --> 00:58:27.180
mode, not using org-agenda,

00:58:27.340 --> 00:58:29.142
for instance, or you've got plenty of people

00:58:29.142 --> 00:58:31.560
using org-mode and barely using Babel because

00:58:31.560 --> 00:58:34.740
it doesn't really translate to their use.

00:58:35.460 --> 00:58:37.720
And I feel like I very much agree with you.

00:58:37.720 --> 00:58:39.520
It's okay to install a package and only use

00:58:39.520 --> 00:58:40.420
some of the functions.

00:58:40.600 --> 00:58:43.580
I was reminded, as you were discussing this,

00:58:43.580 --> 00:58:45.140
of the consults package,

00:58:45.380 --> 00:58:46.920
which is part of the VertiCo,

00:58:48.220 --> 00:58:51.060
mbark and marginalia and all this.

00:58:51.340 --> 00:58:54.960
Consult, it replaces a lot of the Emacs

00:58:54.960 --> 00:58:56.980
built-in commands like for finding your

00:58:56.980 --> 00:58:59.900
buffers or finding text inside of your

00:58:59.900 --> 00:59:03.960
buffer. It's great. And you do not need to

00:59:04.120 --> 00:59:06.300
completely move to consult as you get

00:59:06.300 --> 00:59:09.080
started. You can start colonizing 1 step at a

00:59:09.080 --> 00:59:11.540
time the function that you usually use.

00:59:12.620 --> 00:59:15.580
And I highly recommend to people to not let

00:59:15.580 --> 00:59:18.560
the size of a project deter them from trying

00:59:18.560 --> 00:59:20.580
it out because, again,

00:59:20.980 --> 00:59:22.800
in Emacs, everything is horizontal.

00:59:23.100 --> 00:59:28.180
If somehow you want to use something that was

00:59:28.180 --> 00:59:29.640
not intended primarily for this,

00:59:29.640 --> 00:59:32.220
or if you only want to use 10% of a package,

00:59:32.300 --> 00:59:35.500
well, do it. An example that I have for me is

00:59:35.500 --> 00:59:39.840
that Lispy is the minor mode that I use for

00:59:39.840 --> 00:59:42.380
editing Elisp documents,

00:59:42.740 --> 00:59:45.380
and it's great. Elisp provides similar

00:59:45.380 --> 00:59:46.260
functions to ParaEdit,

00:59:46.260 --> 00:59:47.720
which might be a little more popular,

00:59:47.780 --> 00:59:50.320
which allows you to have modal editing when

00:59:50.320 --> 00:59:52.840
you are on specific parts of a file,

00:59:52.840 --> 00:59:55.080
like the opening parenthesis or the closing

00:59:55.080 --> 00:59:56.480
parenthesis. It's great,

00:59:56.480 --> 00:59:58.320
it provides modal editing for those modes,

00:59:58.320 --> 01:00:01.340
but I certainly do not know everything,

01:00:02.220 --> 01:00:04.240
every modal command associated to it.

01:00:04.240 --> 01:00:06.180
I just use the 1 that makes the most sense to

01:00:06.180 --> 01:00:08.200
me. So feel free to explore.

01:00:11.040 --> 01:00:13.680
[Speaker 0]: I'll just say we get this so much.

01:00:13.740 --> 01:00:16.520
It's not that large. I mean there's a fair

01:00:16.520 --> 01:00:19.680
number of files but it's just like 1 major

01:00:19.680 --> 01:00:22.340
directory and then the KOutliner directory.

01:00:24.080 --> 01:00:25.560
And when you look at these things,

01:00:25.560 --> 01:00:27.140
you install web applications,

01:00:27.440 --> 01:00:30.420
everything else, just when you download the

01:00:30.420 --> 01:00:31.820
source code, it's much,

01:00:31.820 --> 01:00:34.040
much smaller than any of that.

01:00:34.140 --> 01:00:37.360
So I don't know why people you know accept

01:00:37.360 --> 01:00:39.660
that it's larger than your typical package.

01:00:39.960 --> 01:00:41.900
Why there's really an issue there.

01:00:43.080 --> 01:00:45.080
[Speaker 1]: I think it's because people tend to assume

01:00:46.240 --> 01:00:48.480
that a paradigm like the 1 you're describing,

01:00:48.480 --> 01:00:51.560
which seems to be changing the way you use

01:00:51.560 --> 01:00:53.480
Emacs in a way because you're no longer

01:00:53.480 --> 01:00:56.000
thinking of as buffers as separate entities,

01:00:56.000 --> 01:00:57.980
you can tunnel between them.

01:00:57.980 --> 01:01:00.180
You know, it feels like a huge paradigm shift

01:01:00.180 --> 01:01:02.300
and you assume that the code behind it is

01:01:02.300 --> 01:01:04.080
going to be humongous as well,

01:01:04.080 --> 01:01:05.380
but it's usually not the case.

01:01:05.380 --> 01:01:07.640
It's just that the idea is very pure at the

01:01:07.640 --> 01:01:10.060
start, and the paradigm shift that it allows

01:01:10.320 --> 01:01:14.120
is also magnificent. But at the end of the

01:01:14.120 --> 01:01:16.200
day, the code is fairly simple,

01:01:16.320 --> 01:01:18.360
because it does 1 thing and it does it well.

01:01:19.780 --> 01:01:21.180
[Speaker 0]: 1 thing I noticed too,

01:01:21.180 --> 01:01:23.760
I mean I'm a big believer in turnkey kind of

01:01:23.760 --> 01:01:27.180
systems. In fact a long time ago when I built

01:01:27.180 --> 01:01:31.160
an IDE on Emacs called InfoDoc that was

01:01:31.160 --> 01:01:32.480
delivered pre-compiled.

01:01:33.760 --> 01:01:35.980
So it's like you download it like every other

01:01:35.980 --> 01:01:39.480
app and you run it. And so I think

01:01:39.480 --> 01:01:42.480
eliminating all the friction that occurs,

01:01:42.740 --> 01:01:46.360
and you know, I just got going recently with

01:01:46.380 --> 01:01:49.160
the wonderful packages that you just

01:01:49.160 --> 01:01:51.460
mentioned, VertiCo and Consult,

01:01:51.460 --> 01:01:55.360
but they don't have a manual that covers all

01:01:55.360 --> 01:01:57.780
that. They use sort of like a cookbook,

01:01:58.260 --> 01:02:02.220
a wiki online to answer a lot of the

01:02:02.220 --> 01:02:04.600
questions that people have and everybody has

01:02:04.600 --> 01:02:07.640
to figure out their configurations you know

01:02:07.640 --> 01:02:11.380
to make these things all work together.

01:02:12.800 --> 01:02:16.460
We'd like to do that engineering and say here

01:02:16.460 --> 01:02:18.560
it is you know it's like if you want to

01:02:18.560 --> 01:02:20.320
configure it and make it your own,

01:02:20.320 --> 01:02:23.500
you can do it. But there is a default

01:02:23.760 --> 01:02:26.880
configuration that handles all the typical

01:02:26.880 --> 01:02:29.940
use cases and you can just load it up and run

01:02:30.060 --> 01:02:31.660
because it's made to use,

01:02:32.840 --> 01:02:36.500
you don't have to hack it to make it useful

01:02:36.500 --> 01:02:37.260
for you.

01:02:37.900 --> 01:02:40.560
[Speaker 1]: Yeah, it reminds me of the discussion we had

01:02:40.560 --> 01:02:42.740
with Stéphane yesterday about sane defaults.

01:02:43.320 --> 01:02:45.520
And I think the question was,

01:02:46.500 --> 01:02:49.080
Emacs should probably ship with sane defaults

01:02:49.080 --> 01:02:51.740
for people. And Stéphane's answer was,

01:02:51.740 --> 01:02:53.860
well, my sane defaults might not be the same

01:02:53.860 --> 01:02:55.220
thing as your sane defaults.

01:02:55.960 --> 01:02:57.560
And that's why I think it's important,

01:02:57.560 --> 01:02:59.340
really, to have a core set of features,

01:02:59.340 --> 01:03:01.300
be it with hyperbole of org mode,

01:03:01.360 --> 01:03:02.580
that is well-documented,

01:03:02.880 --> 01:03:05.460
as you mentioned. But what I like about this

01:03:05.460 --> 01:03:07.260
in a way, and I think hyperbole is perhaps

01:03:07.260 --> 01:03:09.340
taking more benefits of this than Org Mode,

01:03:09.340 --> 01:03:12.280
is that the self-documentation aspect of it

01:03:12.540 --> 01:03:14.540
feels like it's easier with hyperbole because

01:03:14.540 --> 01:03:17.320
you're not bound by Org Mode buffers.

01:03:17.320 --> 01:03:19.340
You can link to just about everything.

01:03:19.940 --> 01:03:24.240
And for me, this ability to self-document is,

01:03:24.240 --> 01:03:26.140
well, first, very true to the philosophy of

01:03:26.140 --> 01:03:27.480
Emacs in the first place,

01:03:27.500 --> 01:03:31.900
but also opens up those resonance cycles

01:03:32.020 --> 01:03:34.200
where, oh, you get interested and then you

01:03:34.200 --> 01:03:35.820
start reading up and then the documentation

01:03:35.820 --> 01:03:38.320
is so good that it feeds into your practice

01:03:38.320 --> 01:03:41.040
and then it goes nuclear and you gain so much

01:03:41.040 --> 01:03:42.540
knowledge as a result of this.

01:03:42.620 --> 01:03:44.480
All right, Bob, we are about out of time.

01:03:44.480 --> 01:03:46.280
We only have about 1 minute until we go to

01:03:46.280 --> 01:03:48.220
the next talk. Do you have any passing words?

01:03:50.180 --> 01:03:53.860
[Speaker 0]: I do. I think, you know,

01:03:54.280 --> 01:03:56.880
the world's complex, it's getting more

01:03:57.440 --> 01:04:00.520
complex. I think that's why people use Emacs

01:04:00.520 --> 01:04:02.560
in the first place, because it's a big

01:04:02.560 --> 01:04:04.920
system. You wouldn't use it unless you wanted

01:04:04.920 --> 01:04:06.600
it to simplify your life.

01:04:07.580 --> 01:04:10.760
Hyperbole is built with the same idea in

01:04:10.760 --> 01:04:13.640
mind. You may not get it just like Lisp.

01:04:13.740 --> 01:04:15.720
A lot of people don't understand when they

01:04:15.720 --> 01:04:17.420
first encounter it, but when they do

01:04:17.420 --> 01:04:19.580
understand it, they're blown away.

01:04:19.960 --> 01:04:21.360
It changes their life.

01:04:22.040 --> 01:04:25.020
You know, when you really understand implicit

01:04:25.120 --> 01:04:28.100
buttons, I think that's 1 of the things in

01:04:28.100 --> 01:04:30.860
hyperbole that can change your Emacs working

01:04:30.860 --> 01:04:34.080
life. So just give that a try and I think

01:04:34.080 --> 01:04:36.660
you'll be pleasantly surprised across time.

01:04:39.220 --> 01:04:40.920
[Speaker 1]: you so much Bob. We'll be moving on to the

01:04:40.920 --> 01:04:42.980
next talk in about 20 seconds so everyone see

01:04:42.980 --> 01:04:44.940
you in a bit and Bob thank you so much again.

01:04:37.040 --> 01:04:46.100
[Speaker 0]: Thanks very much. And thank Thank you.

01:04:51.140 --> 01:04:53.040
[Speaker 1]: All right I think we are off here now.

01:04:53.040 --> 01:04:53.940
So thank you so much, Bob.

01:04:53.940 --> 01:04:55.440
I'm going to need to step out and get ready

01:04:56.609 --> 01:04:59.240
[Speaker 0]: Yeah, do your thing. You do a great job at

01:04:59.240 --> 01:05:01.760
it. But I wanted to ask you where in London

01:04:55.440 --> 01:05:04.780
[Speaker 1]: for the next talk. I'm not in London,

01:05:05.280 --> 01:05:07.940
I'm in France, and I just moved to London.

01:05:01.760 --> 01:05:10.740
[Speaker 0]: you are. Oh, okay, got it.

01:05:11.200 --> 01:05:12.680
Sorry, I thought you were.

01:05:13.000 --> 01:05:13.720
Take care.

01:05:14.340 --> 01:05:15.060
[Speaker 1]: All right, bye-bye, Bob.

01:05:15.060 --> 01:05:15.750
Thanks a lot. Bye-bye.

01:05:15.750 --> 01:05:16.250
Bye-bye.