WEBVTT

NOTE
Opening
#+SCREENSHOT: yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-00-00-38-400.jpg
#+SCREENSHOT_TIME: 00:00:38.400
#+SCREENSHOT_CROP: 57 264 724 1034

00:00:00.031 --> 00:00:01.716
[Sacha]: My typing is still going to be

00:00:01.756 --> 00:00:03.662
very loud, but that's okay.

00:00:04.264 --> 00:00:05.327
[Prot]: That's part of the charm.

00:00:05.829 --> 00:00:06.250
[Sacha]: Okay.

00:00:06.371 --> 00:00:06.652
All right.

00:00:06.672 --> 00:00:07.133
Here we go.

00:00:07.454 --> 00:00:08.758
Let's go live.

00:00:10.392 --> 00:00:11.253
Hello, everyone.

00:00:11.293 --> 00:00:12.294
This is Yay Emacs [32].

00:00:12.334 --> 00:00:13.315
I forgot which number.

00:00:15.017 --> 00:00:20.524
Anyhow, I'm here with Prot because it's Emacs

00:00:20.564 --> 00:00:22.026
Carnival for May 2026,

00:00:22.727 --> 00:00:24.849
and the theme is "May I Recommend" because I like

00:00:24.869 --> 00:00:27.312
puns and couldn't pass up the chance to say "May."

00:00:28.453 --> 00:00:29.915
So "May I recommend..." is our topic,

00:00:30.416 --> 00:00:33.079
and our goal for this one is to brain dump

00:00:33.080 --> 00:00:35.742
a whole bunch of things that people might

00:00:35.782 --> 00:00:38.425
find useful in their Emacs learning journey.

00:00:38.405 --> 00:00:43.735
We've already talked about newbies and starter

00:00:43.755 --> 00:00:46.501
kits in the previous two conversations we've had

00:00:47.102 --> 00:00:48.765
in Sacha and Prot Talk Emacs.

00:00:49.527 --> 00:00:51.811
This time, we're going to focus more on

00:00:51.951 --> 00:00:53.815
users who are getting started with...

00:00:53.795 --> 00:00:57.461
They've decided this is going to be their

00:00:57.541 --> 00:00:58.282
everyday tool.

00:00:58.622 --> 00:01:00.806
They want to learn more about keyboard shortcuts

00:01:00.926 --> 00:01:02.768
and finding their way around, building the

00:01:02.829 --> 00:01:05.012
habits, finding their preferred resources.

00:01:05.773 --> 00:01:08.137
Power users, maybe, who are starting to look at

00:01:08.177 --> 00:01:10.680
different packages, these are maybe the people

00:01:10.740 --> 00:01:14.526
who are saying, okay, maybe let's try this

00:01:14.586 --> 00:01:17.290
package for working with Org Mode in addition to

00:01:17.310 --> 00:01:22.418
the basic stuff, or let's try doing email in Emacs.

00:01:23.005 --> 00:01:25.487
Customizers, who are beginning to get into

00:01:25.567 --> 00:01:27.189
Emacs Lisp to write functions.

00:01:28.270 --> 00:01:31.272
This is where you start to customize it a lot

00:01:31.312 --> 00:01:33.194
more to your tastes and your workflows.

00:01:33.655 --> 00:01:36.637
Contributors and people who are actually

00:01:36.697 --> 00:01:39.079
sharing their source code, maybe even turning it

00:01:39.140 --> 00:01:42.042
into packages, participating mailing lists and

00:01:42.082 --> 00:01:42.723
discussions.

00:01:43.123 --> 00:01:46.586
So this whole range of people all working on

00:01:46.646 --> 00:01:48.628
different skills at different levels.

00:01:48.648 --> 00:01:50.630
What I think we're going to do with this is

00:01:50.670 --> 00:01:51.951
we're just going to braindump a whole bunch of

00:01:52.011 --> 00:01:53.012
recommendations.

00:01:52.992 --> 00:01:58.419
You're welcome to ask questions, and I'll ask you

00:01:58.459 --> 00:01:59.240
questions as well.

00:01:59.781 --> 00:02:02.024
We'll just untangle everything and organize

00:02:02.104 --> 00:02:04.126
everything afterwards.

00:02:04.547 --> 00:02:05.148
[Prot]: That's great.

00:02:06.389 --> 00:02:07.070
[Sacha]: There we go.

00:02:08.051 --> 00:02:11.456
In this list of skills that people can develop,

00:02:11.496 --> 00:02:15.701
are you thinking of other skills that aren't on

00:02:15.741 --> 00:02:18.125
this list yet that do make a big difference to

00:02:18.205 --> 00:02:20.788
how people use and learn Emacs?

00:02:21.022 --> 00:02:23.833
[Prot]: I need to enlarge my screen a little bit.

00:02:23.834 --> 00:02:27.700
I think what you have there is good.

NOTE Tip: Less is more. Start small.

00:02:27.701 --> 00:02:32.533
What I had in mind also is more of a meta-point,

00:02:32.534 --> 00:02:36.700
or more general thing, like an approach style,

00:02:36.701 --> 00:02:41.133
which is "less is more," if I were to condense it.

00:02:41.134 --> 00:02:46.119
Start small. Make sure you make it work when it's small.

00:02:46.280 --> 00:02:47.345
Extend it from there.

00:02:47.405 --> 00:02:50.078
Don't start big and try to simplify it, because

00:02:50.158 --> 00:02:51.163
that doesn't work.

00:02:51.532 --> 00:02:53.635
[Sacha]: I grouped that idea

00:02:53.876 --> 00:02:56.620
under managing time, notes, and attention and

00:02:56.700 --> 00:02:59.204
also breaking things down, because the

00:02:59.484 --> 00:03:01.628
overwhelming nature of things is something a lot

00:03:01.668 --> 00:03:03.911
of people struggle with, both Emacs and elsewhere.

00:03:04.592 --> 00:03:07.337
Even just that meta-skill of saying, "okay,

00:03:07.357 --> 00:03:09.901
this is a small chunk that I'm going to focus on

00:03:09.961 --> 00:03:12.024
because I know that's what my brain can handle"

00:03:12.705 --> 00:03:15.069
versus "let's architect this

00:03:15.129 --> 00:03:17.372
entire thing" and you're six hours down the line

00:03:17.473 --> 00:03:19.135
and you're nowhere near the thing that you want

00:03:19.155 --> 00:03:19.716
it to do.

00:03:20.675 --> 00:03:22.821
[Prot]: And of course Emacs invites you for that

00:03:22.901 --> 00:03:25.327
because it's like, here are like a hundred

00:03:25.448 --> 00:03:28.395
powerful tools for you to combine in ways that

00:03:28.455 --> 00:03:30.802
nobody else has thought of before, right?

00:03:30.822 --> 00:03:33.669
So it's like asking you to do that, but it's a trap.

00:03:33.709 --> 00:03:35.173
You don't want to go down that route.

00:03:35.727 --> 00:03:38.432
Or at least don't go there too early.

00:03:38.452 --> 00:03:40.295
[Sacha]: Managing the rabbit hole.

00:03:40.776 --> 00:03:42.398
Yes, there are going to be

00:03:42.478 --> 00:03:44.582
a lot of temptations and some of those

00:03:44.602 --> 00:03:46.485
temptations are quite legitimate.

00:03:46.686 --> 00:03:48.629
Yeah, you do have to figure this part out in

00:03:48.669 --> 00:03:51.434
order to get this other thing that you wanted working.

00:03:51.454 --> 00:03:54.799
But sometimes it's just a trap.

00:03:54.819 --> 00:03:55.761
[Prot]: Yeah.

00:03:57.091 --> 00:03:58.192
[Sacha]: Okay, so that's managing.

00:03:58.272 --> 00:04:01.595
Okay, what other meta-skills here should we talk

00:04:01.635 --> 00:04:04.217
about as a framework so that when we dive into

00:04:04.237 --> 00:04:06.119
the specifics, we know we're covering a lot of

00:04:06.159 --> 00:04:07.780
the ground people need?

NOTE Tip: Start with what is built in

00:04:07.800 --> 00:04:09.862
[Prot]: Not so much a meta skill, but consistent

00:04:09.922 --> 00:04:12.785
with this line of reasoning is as a good

00:04:12.845 --> 00:04:16.447
heuristic, start with what is built in and extend

00:04:16.488 --> 00:04:16.947
from there,

00:04:17.789 --> 00:04:20.492
because usually what is built in will give you

00:04:20.552 --> 00:04:22.693
a baseline of functionality.

00:04:23.494 --> 00:04:26.777
So it works with a "less is more" approach.

NOTE Skill: Figuring out the words to look for

00:04:27.280 --> 00:04:29.744
[Sacha]: I feel that sometimes

00:04:29.804 --> 00:04:32.609
figuring out the words to look for, finding

00:04:32.669 --> 00:04:37.017
out what it might be called in Emacs source or in

00:04:37.097 --> 00:04:38.720
the built-in packages...

00:04:38.740 --> 00:04:41.545
That's something that's hard to develop

00:04:41.625 --> 00:04:44.770
unless you're reading manuals and reading other

00:04:44.810 --> 00:04:47.996
people's posts because the terminology can be

00:04:48.036 --> 00:04:49.238
quite arcane.

00:04:49.927 --> 00:04:50.950
[Prot]: Oh yeah, for sure.

00:04:52.454 --> 00:04:54.119
[Sacha]: Getting a sense of what might be

00:04:54.159 --> 00:04:56.846
built in and what it might be called and where to

00:04:56.906 --> 00:05:00.055
look for it, I think, is definitely a skill.

00:05:00.710 --> 00:05:03.052
[Prot]: Yeah, for sure.

00:05:04.473 --> 00:05:09.518
One good way to think of this is, what do I want

00:05:09.618 --> 00:05:10.039
to do?

00:05:10.479 --> 00:05:13.202
In the most simple form, if you forget

00:05:13.262 --> 00:05:15.764
about Emacs, for example, for a second, and

00:05:15.804 --> 00:05:18.366
you're like, okay, what am I trying to do?

00:05:18.386 --> 00:05:21.689
I'm trying to write a blog, or I'm trying to deal

00:05:21.729 --> 00:05:23.591
with email correspondence, or I'm trying to

00:05:23.651 --> 00:05:24.592
manage my TODOs.

00:05:25.113 --> 00:05:27.895
In its most simplest form, how can I solve

00:05:27.995 --> 00:05:29.957
this problem?

00:05:30.562 --> 00:05:33.065
That can already help you formulate the

00:05:33.125 --> 00:05:33.586
questions.

00:05:34.407 --> 00:05:36.069
[Sacha]: Formulating the questions is actually

00:05:36.250 --> 00:05:39.975
really hard, in the sense that sometimes people

00:05:40.275 --> 00:05:42.638
don't even notice that there's a question that

00:05:42.698 --> 00:05:46.123
they can ask, and they don't know what kinds of

00:05:46.183 --> 00:05:49.448
solutions might address that problem actually.

00:05:49.468 --> 00:05:52.251
They get distracted by A, but

00:05:52.291 --> 00:05:54.915
actually it's B that will solve the problem.

00:05:55.655 --> 00:05:58.780
Considering the different kinds of solutions that

00:05:58.820 --> 00:06:01.584
can address the same problem, developing a sense

00:06:01.664 --> 00:06:04.489
of which ways are easier to do the Emacs way

00:06:05.110 --> 00:06:06.291
versus harder to do.

00:06:07.173 --> 00:06:09.216
Why make something really complicated when a

00:06:09.276 --> 00:06:11.159
built-in package or whatever can solve that

00:06:11.199 --> 00:06:12.581
problem in a more elegant way?

00:06:13.523 --> 00:06:16.087
All of these things require the development of

00:06:16.127 --> 00:06:16.988
intuition.

00:06:18.065 --> 00:06:20.308
[Prot]: Yes, yes, and with some experience, of

00:06:20.348 --> 00:06:22.731
course, that helps, for sure. But then it's the

00:06:22.831 --> 00:06:25.054
other, which you can also consider as a meta skill.

NOTE Tip: Be okay with starting over

00:06:25.094 --> 00:06:27.838
I believe there was also a point of this,

00:06:27.858 --> 00:06:31.483
be okay with declaring bankruptcy in Emacs.

00:06:31.543 --> 00:06:34.607
Bankruptcy, I think... the essence of that

00:06:34.667 --> 00:06:37.571
is not really much bankruptcy, but be okay with

00:06:37.631 --> 00:06:41.516
trying something, which is an experiment, and

00:06:41.576 --> 00:06:43.899
then learning something from it, distilling the

00:06:43.979 --> 00:06:46.823
essence of that, and then trying something else.

00:06:46.803 --> 00:06:50.788
I think a sense of experimentation will help

00:06:50.828 --> 00:06:53.751
you build that skill of, okay, now I can

00:06:53.892 --> 00:06:56.174
intuitively figure out what works and what

00:06:56.214 --> 00:06:57.336
doesn't work.

00:06:57.356 --> 00:06:58.617
[Sacha]: I think that's a really

00:06:58.637 --> 00:07:00.440
interesting point because sometimes you get very

00:07:00.500 --> 00:07:02.943
attached to "there's this thing that

00:07:02.983 --> 00:07:05.165
I've started to build" and then you start bolting

00:07:05.225 --> 00:07:06.487
more and more things onto it,

00:07:06.887 --> 00:07:09.270
when really, sometimes the prototype is your way

00:07:09.310 --> 00:07:10.752
of understanding the problem.

00:07:11.052 --> 00:07:12.955
Then when you take it all out and you say,

00:07:12.975 --> 00:07:15.198
okay, now that I understand a little bit more,

00:07:15.779 --> 00:07:17.341
what can I make?

00:07:17.942 --> 00:07:20.005
How do I change my workflow with that new

00:07:20.065 --> 00:07:20.766
understanding?

00:07:21.246 --> 00:07:25.152
Sometimes it's as extensive as declaring

00:07:25.232 --> 00:07:27.635
Emacs bankruptcy and starting again from scratch.

00:07:28.056 --> 00:07:30.039
Sometimes it's just, maybe, the

00:07:30.059 --> 00:07:32.422
approach that I'm taking is not a fruitful one.

00:07:32.923 --> 00:07:34.545
I should go try something else.

00:07:36.230 --> 00:07:38.353
[Prot]: Yeah, exactly.

00:07:38.593 --> 00:07:42.719
You can only have that feedback loop if you try,

00:07:42.759 --> 00:07:45.182
so trial and error is the way to go.

00:07:47.525 --> 00:07:50.069
[Sacha]: @gcentauri has a question or a comment

00:07:50.089 --> 00:07:51.370
about discoverability,

00:07:51.791 --> 00:07:54.274
figuring out how to navigate Emacs

00:07:54.355 --> 00:07:56.898
in order to discover things.

00:07:57.599 --> 00:07:59.421
Where would we put that in this skill?

00:08:00.002 --> 00:08:02.325
This is figuring out the words as

00:08:02.385 --> 00:08:02.946
well, right?

00:08:03.006 --> 00:08:03.587
Isn't it?

00:08:04.175 --> 00:08:06.941
[Prot]: Yeah, by the way, I'm in the chat here.

00:08:06.961 --> 00:08:10.229
[Sacha]: Where did you read that?

00:08:10.389 --> 00:08:12.835
[Prot]: Okay, okay, I see it here.

00:08:13.036 --> 00:08:14.379
It was off my screen.

00:08:14.419 --> 00:08:16.243
Okay, I see it now.

NOTE Skill: Learning to discover

00:08:16.392 --> 00:08:21.200
And of course Christian... I'm reading the

00:08:21.201 --> 00:08:22.367
temperatures in Western Europe.

00:08:22.368 --> 00:08:23.967
They are terrible. Yes, I know.

00:08:23.968 --> 00:08:26.100
[Sacha]: Yeah, big heat wave.

00:08:26.101 --> 00:08:32.067
So, figuring out discoverability. Learning how to navigate Emacs.

00:08:32.068 --> 00:08:35.333
Because Emacs is lovely. It's self-documented,

00:08:35.334 --> 00:08:36.567
everything at your fingertips,

00:08:36.568 --> 00:08:39.733
but you've got to know how to get those fingers on them.

NOTE Tip: Read manuals for fun

00:08:42.532 --> 00:08:47.060
[Prot]: Yeah, the manual helps. It will present some of that.

00:08:47.080 --> 00:08:48.582
But of course, you have to read the manual.

00:08:48.603 --> 00:08:50.506
So you are in a situation where you have

00:08:50.566 --> 00:08:53.130
to have the skill of reading the manuals in order

00:08:53.210 --> 00:08:55.034
to discover, but to discover...

00:08:55.715 --> 00:08:57.318
So yeah, it's a tricky thing.

00:08:57.939 --> 00:08:59.882
You have to know where the manuals are.

00:08:59.862 --> 00:09:02.305
[Sacha]: Yeah, and you have to be unintimidated

00:09:02.345 --> 00:09:03.386
by them, I think.

00:09:03.807 --> 00:09:06.250
I got into it easy because I've always been used

00:09:06.290 --> 00:09:08.032
to reading books above my level.

00:09:08.472 --> 00:09:10.194
Even as a kid, I was reading my

00:09:10.275 --> 00:09:12.577
sister's data structures and algorithms books.

00:09:12.597 --> 00:09:15.481
I didn't understand anything the first time

00:09:15.521 --> 00:09:15.821
around.

00:09:15.841 --> 00:09:17.644
But after nine times through,

00:09:17.684 --> 00:09:19.766
you start to understand some of the concepts and

00:09:19.806 --> 00:09:20.647
how they go together.

00:09:20.667 --> 00:09:22.730
And the more you read something, the more of

00:09:22.750 --> 00:09:24.512
those concepts start to make sense to you.

00:09:24.652 --> 00:09:26.915
You read it, you read other things around it or

00:09:26.975 --> 00:09:27.996
related to it,

00:09:27.976 --> 00:09:31.181
and then the jargon becomes less impenetrable.

00:09:31.201 --> 00:09:32.603
You begin to understand it.

00:09:33.143 --> 00:09:36.148
So one of my recommendations is I recommend

00:09:36.268 --> 00:09:39.172
reading the Emacs manual, the Org manual, all

00:09:39.232 --> 00:09:41.455
these book-shaped things for fun.

00:09:42.016 --> 00:09:43.398
Even if you don't think you're going to

00:09:43.578 --> 00:09:46.362
immediately use 90% of the things,

00:09:46.502 --> 00:09:48.445
every time you read it, you're going to

00:09:48.485 --> 00:09:49.106
learn something.

00:09:50.328 --> 00:09:50.548
[Prot]: Yeah.

00:09:50.568 --> 00:09:52.992
Plus, of course, you will know you are an Emacs

00:09:53.092 --> 00:09:55.435
user if you are reading manuals for fun.

00:09:58.351 --> 00:09:59.596
[Sacha]: How else are you going to find out

00:09:59.656 --> 00:10:02.327
about Org spreadsheets and whatnot, right?

00:10:02.568 --> 00:10:04.898
It's just too big to fit in your brain.

00:10:06.063 --> 00:10:08.091
[Prot]: Correct.

00:10:09.472 --> 00:10:11.094
Yeah, that's really good.

00:10:11.174 --> 00:10:14.399
You could even make it a habit of, okay, this day

00:10:14.459 --> 00:10:16.723
I will read one chapter from the manual.

NOTE Tip: Use Emacs bookmarks to save your place in the manual

00:10:16.743 --> 00:10:19.887
Actually, to say something on this, if you learn

00:10:19.947 --> 00:10:22.511
about the bookmark mechanism of Emacs, you can

00:10:22.651 --> 00:10:24.474
bookmark info manuals.

00:10:24.654 --> 00:10:26.938
So if you are reading the manual from inside of

00:10:27.078 --> 00:10:30.122
Emacs, you can use the bookmark facility to be

00:10:30.182 --> 00:10:33.587
like, last point in the Emacs manual.

00:10:33.627 --> 00:10:35.530
You could have a bookmark that is a rolling

00:10:35.610 --> 00:10:36.812
bookmark, right?

00:10:36.792 --> 00:10:38.955
So you could be updating it whenever you go to

00:10:38.975 --> 00:10:40.998
the next chapter. This way, little by little,

00:10:41.018 --> 00:10:43.000
you can read the manual.

NOTE Tip: Generally, investing time into navigation and note-taking workflows pays off

00:10:43.020 --> 00:10:44.763
[Sacha]: In general, figuring out

00:10:44.823 --> 00:10:48.247
your navigation and note-taking workflows so that

00:10:48.267 --> 00:10:50.330
they're super convenient for you, whether that's

00:10:50.430 --> 00:10:53.074
Denote or Org Mode Capture or whatever else that

00:10:53.094 --> 00:10:53.755
you're using...

00:10:54.296 --> 00:10:56.438
As you read, taking notes on the things that you

00:10:56.479 --> 00:10:58.461
find interesting in a way that makes it easy to

00:10:58.521 --> 00:11:01.666
jump back to more information is definitely worth

00:11:01.706 --> 00:11:03.508
the upfront investment of learning.

00:11:05.294 --> 00:11:06.595
[Prot]: Yeah, 100%.

00:11:07.396 --> 00:11:08.657
[Sacha]: Okay, @gcentauri confirms.

00:11:09.418 --> 00:11:11.040
[Sacha]: They are actually a true

00:11:11.140 --> 00:11:13.342
blue Emacs geek, was reading the manual right before bed and came

00:11:14.403 --> 00:11:15.604
across the forms library.

00:11:16.285 --> 00:11:17.706
Yeah.

00:11:17.746 --> 00:11:18.928
No idea it existed.

00:11:19.628 --> 00:11:20.009
[Sacha]: Yeah.

00:11:20.029 --> 00:11:22.531
So: read stuff, make it easier for you to jump

00:11:22.611 --> 00:11:25.934
back to the place that you left off or the parts

00:11:25.954 --> 00:11:26.975
that you found interesting.

00:11:27.096 --> 00:11:28.577
That's a great recommendation.

00:11:28.597 --> 00:11:30.559
[Prot]: Just to add another metaskill related to this.

00:11:30.539 --> 00:11:33.083
Don't read it before going to bed because if you

00:11:33.103 --> 00:11:36.288
discover something useful, you are not going to sleep.

00:11:36.308 --> 00:11:38.332
[Sacha]: I think the idea there is get really

00:11:38.372 --> 00:11:40.575
good at telling your brain, yes, that's really

00:11:40.615 --> 00:11:43.159
cool, but if you stay up until 1, you are going

00:11:43.199 --> 00:11:43.900
to regret it.

00:11:43.981 --> 00:11:48.199
So just add a TODO and let it go.

00:11:48.200 --> 00:11:50.351
[Prot]: Exactly.

00:11:50.371 --> 00:11:52.414
[Sacha]: This may have happened to me a number of times.

00:11:54.097 --> 00:11:56.040
[Prot]: Yeah, yeah, same.

00:11:57.657 --> 00:12:00.402
So, only read the manual in the morning or

00:12:00.783 --> 00:12:02.666
when you wake up.

00:12:02.746 --> 00:12:04.169
[Sacha]: Are there other metaskills that

00:12:04.209 --> 00:12:05.811
are not yet captured in this or do we start

00:12:05.872 --> 00:12:07.274
digging into each of these skills?

00:12:08.396 --> 00:12:10.019
[Prot]: I say we dig in and if we think of

00:12:10.059 --> 00:12:11.742
something we can always add it later.

00:12:11.982 --> 00:12:12.283
[Sacha]: All right.

00:12:12.363 --> 00:12:13.685
What strikes your attention here?

00:12:13.766 --> 00:12:14.727
Which of these things?

00:12:14.807 --> 00:12:15.128
[Prot]: No, no.

00:12:15.168 --> 00:12:16.250
You can go wherever.

00:12:16.310 --> 00:12:17.232
I don't mind.

00:12:17.312 --> 00:12:19.075
Anything will do well.

NOTE Skill: Keyboard macros

00:12:19.223 --> 00:12:22.510
[Sacha]: There's a whole lot of stuff here in the

00:12:22.570 --> 00:12:28.283
customizer, packager thing around

00:12:28.563 --> 00:12:31.510
modifying or gluing together code that is not

00:12:31.570 --> 00:12:33.554
something easy for people to pick up because

00:12:33.574 --> 00:12:36.140
they're just not used to it in other programming

00:12:36.180 --> 00:12:38.565
languages or platforms or whatever.

00:12:38.545 --> 00:12:41.008
Things like: you could use

00:12:41.088 --> 00:12:44.152
keyboard macros to cobble together a quick workflow.

00:12:44.172 --> 00:12:45.974
You don't even have to write a big function.

00:12:46.314 --> 00:12:48.937
Just developing the intuition that, oh, this is a

00:12:49.098 --> 00:12:51.881
set of repeatable functions or repeatable

00:12:51.941 --> 00:12:53.683
commands is one thing,

NOTE Skill: Modifying the behavior of code via hooks and advice

00:12:53.703 --> 00:12:56.326
all the way to "this is how I use hooks and

00:12:56.386 --> 00:12:59.870
advice to either modify the behavior of something

00:12:59.910 --> 00:13:03.174
where the person who coded it has anticipated

00:13:03.295 --> 00:13:05.397
that a hook will be needed here,

00:13:05.377 --> 00:13:07.839
or advice in case they didn't plan for it

00:13:07.879 --> 00:13:09.461
at all." You're just going to override things

00:13:09.501 --> 00:13:12.224
yourself. How do people develop this sense of

00:13:12.264 --> 00:13:15.133
what's possible and how to do things?

NOTE Tip: Learn to think in terms of buffers and windows

00:13:15.134 --> 00:13:18.109
[Prot]: Yeah, it's a difficult skill but it's something you

00:13:18.149 --> 00:13:21.452
develop by experience. The point to

00:13:21.652 --> 00:13:26.057
remember is that in Emacs, at its core, you have

00:13:26.457 --> 00:13:30.000
buffers and everything is a buffer and buffers

00:13:30.080 --> 00:13:31.722
are displayed in windows

00:13:31.803 --> 00:13:34.508
If you think in terms of that abstraction,

00:13:34.588 --> 00:13:38.436
something like a keyboard macro becomes a tool

00:13:38.516 --> 00:13:41.382
that will jump between buffers, will switch

00:13:41.462 --> 00:13:42.003
windows.

00:13:42.244 --> 00:13:43.867
It has no problem doing any of that.

00:13:44.268 --> 00:13:47.093
You are not limited in your thought to, okay,

00:13:47.133 --> 00:13:49.558
I have to work exactly where I am right now.

00:13:50.163 --> 00:13:52.748
I think that's a general approach that goes

00:13:53.009 --> 00:13:54.231
very far with what you do.

00:13:54.251 --> 00:13:56.315
Of course, when you are thinking of the advice

00:13:56.395 --> 00:13:58.740
and the hook, that I think is a little bit more

00:13:58.840 --> 00:14:01.486
advanced because you need to also have the skills

00:14:01.526 --> 00:14:02.948
to write advice.

00:14:02.968 --> 00:14:03.950
With hooks, maybe not.

00:14:04.051 --> 00:14:06.055
But for advice, you will need to understand

00:14:06.155 --> 00:14:07.277
exactly what is happening.

NOTE Skill: Reading the source code; Tip: Just jump in

00:14:07.645 --> 00:14:10.209
[Sacha]: I have definitely jumped ahead here

00:14:10.289 --> 00:14:12.932
because this also requires the skill of reading

00:14:12.972 --> 00:14:16.217
people's code in order to find out there is a

00:14:16.297 --> 00:14:18.220
hook or there is some advice that you can do, or

00:14:18.260 --> 00:14:20.703
there's a variable and this is how you can let

00:14:20.783 --> 00:14:24.909
bind it to temporarily change its value during

00:14:24.969 --> 00:14:26.872
this part of the code.

00:14:27.893 --> 00:14:29.916
Let's talk about reading source.

00:14:29.936 --> 00:14:32.460
What sorts of things help people develop that

00:14:32.560 --> 00:14:34.142
skill of reading the source code?

00:14:35.270 --> 00:14:38.395
[Prot]: You have to just jump in at some point.

00:14:38.535 --> 00:14:41.039
Like, you might do it by accident when you are in

00:14:41.099 --> 00:14:45.886
a help buffer and either you misclick S, which

00:14:45.946 --> 00:14:48.890
goes to the source, or you follow the link from

00:14:48.950 --> 00:14:49.271
above.

00:14:49.671 --> 00:14:52.015
But anyway, the point is it's a good skill to

00:14:52.095 --> 00:14:55.500
just, a good habit rather, just jump in and try

00:14:55.580 --> 00:14:58.384
to read it even if you don't know any programming.

00:14:58.424 --> 00:15:00.768
Try to read it as if it's English and try to see

00:15:00.808 --> 00:15:02.290
what you can understand.

00:15:02.573 --> 00:15:05.000
And of course, some functions will be extremely

00:15:05.060 --> 00:15:05.501
difficult.

00:15:05.622 --> 00:15:07.828
Others will be more straightforward.

00:15:07.848 --> 00:15:10.395
So I think eventually by exposure through

00:15:10.516 --> 00:15:12.862
osmosis, as it were, you will already learn

00:15:12.963 --> 00:15:13.444
something.

00:15:13.998 --> 00:15:17.765
[Sacha]: I love the fact that our functions in

00:15:17.805 --> 00:15:20.931
variable names are often very long and it makes

00:15:20.992 --> 00:15:22.935
sense in English because we're not trying to

00:15:22.995 --> 00:15:26.081
squeeze into some very concise, very terse

00:15:26.462 --> 00:15:27.484
convention.

00:15:27.504 --> 00:15:29.508
Just put a full sentence in there.

00:15:29.528 --> 00:15:29.889
It's fine.

00:15:30.550 --> 00:15:32.594
We just use completion anyway.

00:15:32.614 --> 00:15:33.576
It's all good.

NOTE Tip: edebug is great for exploring code

00:15:33.708 --> 00:15:36.654
One of the tips that I'll put in here because

00:15:36.894 --> 00:15:39.379
people sometimes miss it is the power of Edebug.

00:15:40.141 --> 00:15:42.225
If people haven't come across Edebug yet, it's

00:15:42.265 --> 00:15:44.229
great because you can interactively step through

00:15:44.410 --> 00:15:46.554
what the code is actually doing and you can

00:15:46.634 --> 00:15:49.921
evaluate what the value is of this variable at

00:15:49.961 --> 00:15:50.502
this point.

00:15:50.836 --> 00:15:53.501
And every so often I had to go into the Edebug

00:15:53.881 --> 00:15:56.065
menu bar and remind myself, okay, you can set

00:15:56.146 --> 00:15:57.889
conditional breakpoints and all these other

00:15:57.949 --> 00:16:00.073
things that I have to remember that exist and can

00:16:00.113 --> 00:16:01.114
be used.

00:16:01.135 --> 00:16:03.359
But Edebug, if you're going to learn Emacs Lisp,

00:16:03.980 --> 00:16:04.761
learn Edebug.

00:16:05.602 --> 00:16:07.666
[Prot]: Edebug is really powerful for sure and

00:16:07.746 --> 00:16:10.673
it's especially useful when you have functions

00:16:10.793 --> 00:16:13.198
that are relatively long.

00:16:13.338 --> 00:16:15.362
I mean what they are doing like they have a lot

00:16:15.423 --> 00:16:18.509
of steps and you have to understand the flow.

00:16:18.529 --> 00:16:20.253
Like if it's a very short function maybe you

00:16:20.313 --> 00:16:22.958
don't benefit all that much from eDebug but in

00:16:23.019 --> 00:16:24.081
practice you will need it.

00:16:24.141 --> 00:16:25.163
It's very powerful.

NOTE Tip: Reading tests can help you understand code, too.

00:16:26.020 --> 00:16:27.343
[Sacha]: And the other thing I want to point out

00:16:27.423 --> 00:16:30.790
is that sometimes packages have tests and reading

00:16:30.830 --> 00:16:33.416
the tests can give you even more of an idea of

00:16:33.576 --> 00:16:35.640
how this function is supposed to behave.

00:16:36.041 --> 00:16:38.446
It's not always the case, but when there are

00:16:38.466 --> 00:16:39.088
tests, they're great.

00:16:39.769 --> 00:16:41.854
[Prot]: In an ideal world, we will update our

00:16:41.874 --> 00:16:43.978
tests.

00:16:43.958 --> 00:16:46.804
[Sacha]: Alright, so that's reading source code.

00:16:48.387 --> 00:16:51.935
There's so much that's really interesting to read.

00:16:52.296 --> 00:16:55.964
Sometimes you come across interesting idioms for

00:16:56.024 --> 00:16:57.948
Emacs Lisp and you're like, oh yeah, that's a

00:16:58.008 --> 00:17:00.493
great way to iterate through all the buffers and

00:17:00.533 --> 00:17:02.237
match a certain thing, whatever.

NOTE Skill: Idiomatic Elisp

00:17:02.217 --> 00:17:05.624
And so if you're in this customizer phase of

00:17:05.684 --> 00:17:09.451
things and you want to move to the

00:17:09.491 --> 00:17:14.140
contributor level, learning idiomatic Elisp is

00:17:14.361 --> 00:17:16.505
definitely like, okay, it makes things a lot

00:17:16.585 --> 00:17:17.286
easier.

NOTE Tip: Write tests.

00:17:17.306 --> 00:17:19.871
Charlie says, Edebug and ERT tests change the

00:17:19.891 --> 00:17:20.893
way I develop Elisp.

00:17:20.993 --> 00:17:22.757
No longer flying blind.

00:17:23.142 --> 00:17:24.084
Great.

00:17:24.104 --> 00:17:24.625
Yeah, great.

00:17:25.105 --> 00:17:28.310
In particular, I tend to break things whenever I

00:17:28.371 --> 00:17:29.112
make changes.

00:17:29.132 --> 00:17:30.775
So it's really nice to be able to say, okay, I'm

00:17:30.815 --> 00:17:33.600
going to nail down this behavior, at least for

00:17:33.640 --> 00:17:33.821
now.

00:17:35.143 --> 00:17:36.886
With a little bit of thinking, sometimes you can

00:17:36.946 --> 00:17:38.910
write tests for things that you would do

00:17:39.070 --> 00:17:40.512
interactively.

00:17:40.532 --> 00:17:43.958
So you can test a whole lot more because you have

00:17:44.059 --> 00:17:47.525
buffers and windows than you might in other

00:17:47.585 --> 00:17:48.306
languages.

00:17:49.079 --> 00:17:50.280
[Prot]: Yeah, correct, correct.

00:17:50.361 --> 00:17:51.642
And you get to see it live.

NOTE Tip: When writing Emacs Lisp that expects a list, use plurals

00:17:52.563 --> 00:17:55.687
[Prot]: Just to say on this point of when you are

00:17:55.947 --> 00:17:59.451
going through the tests and through everything,

00:17:59.471 --> 00:18:03.056
one basic thing which is in idiomatic Emacs Lisp

00:18:03.176 --> 00:18:06.179
is when you are writing the parameters of a

00:18:06.259 --> 00:18:09.443
function, if you are expecting a list, you use

00:18:09.483 --> 00:18:10.024
plural.

00:18:10.404 --> 00:18:12.347
For example, you have a function that goes

00:18:12.367 --> 00:18:14.409
through buffers.

00:18:14.429 --> 00:18:16.892
Your parameter is just called buffers.

00:18:17.834 --> 00:18:20.701
And that alone should tell you that it's a list

00:18:20.782 --> 00:18:22.366
of stuff.

00:18:22.386 --> 00:18:24.591
You don't say, for example, list of buffers,

00:18:24.772 --> 00:18:25.474
right?

00:18:25.614 --> 00:18:26.376
That's superfluous.

00:18:26.396 --> 00:18:28.181
You just say buffers, this automatically means

00:18:28.241 --> 00:18:28.702
it's a list.

00:18:29.685 --> 00:18:30.707
So that's very common.

00:18:30.727 --> 00:18:31.810
You will see this a lot.

00:18:32.161 --> 00:18:33.122
[Sacha]: Here I am.

00:18:33.162 --> 00:18:37.228
I've been calling my variables buffer-list.

00:18:37.788 --> 00:18:45.678
Sometimes figuring out what I should call a

00:18:48.001 --> 00:18:50.905
function or call an argument is a bit

00:18:50.945 --> 00:18:53.468
challenging, but I figure I'll just name it

00:18:53.508 --> 00:18:56.212
whatever comes to mind and then I can defalias it

00:18:56.532 --> 00:18:58.675
or do a search and replace afterwards.

NOTE Tip: When naming, be verbose rather than terse

00:18:59.768 --> 00:19:02.493
[Prot]: Yeah, but when in doubt, of course, be

00:19:02.513 --> 00:19:04.117
verbose rather than terse.

00:19:04.497 --> 00:19:05.439
[Sacha]: Oh, yes.

00:19:05.459 --> 00:19:08.685
And when you find yourself still using the wrong

00:19:08.726 --> 00:19:10.649
words to try to find it again, just add more

00:19:10.770 --> 00:19:12.914
aliases and you'll find it eventually.

00:19:13.495 --> 00:19:14.397
[Prot]: More verbose.

00:19:14.417 --> 00:19:14.918
More words.

00:19:16.240 --> 00:19:17.423
All the words.

00:19:17.443 --> 00:19:18.044
[Sacha]: All the words.

00:19:18.064 --> 00:19:18.545
All the words.

00:19:18.966 --> 00:19:19.667
All right.

00:19:19.647 --> 00:19:22.431
What are the things here do we want to dig into?

00:19:22.751 --> 00:19:25.195
Adopting is always an interesting challenge and

00:19:25.255 --> 00:19:27.839
it's a challenge at all levels here, right?

00:19:27.899 --> 00:19:31.043
It's like from the user trying to figure out,

00:19:31.104 --> 00:19:33.567
okay, how do I remember to use this keyboard

00:19:33.607 --> 00:19:36.471
shortcut or whatever to, all right,

00:19:36.531 --> 00:19:38.034
I've written this new function.

00:19:38.114 --> 00:19:40.457
It's great, but I have to remember to use it.

00:19:42.108 --> 00:19:45.095
Do you have any recommendations around changing

00:19:45.115 --> 00:19:45.376
the workflow?

NOTE Tip: Iterate on your workflow in small steps

00:19:46.338 --> 00:19:48.403
[Prot]: In accordance with what I said in the

00:19:48.463 --> 00:19:51.369
beginning, iteratively.

00:19:52.151 --> 00:19:53.394
Try to memorize one.

00:19:53.414 --> 00:19:55.760
You have this new function that, let's say,

00:19:55.780 --> 00:19:58.506
streamlines how you list files in a directory,

00:19:58.526 --> 00:19:59.408
whatever, I don't know.

00:19:59.388 --> 00:20:03.294
right and use it don't have all 10 functions and

00:20:03.334 --> 00:20:06.539
try to remember them just use one after two weeks

00:20:06.680 --> 00:20:09.764
use the next one after four weeks use the third

00:20:09.905 --> 00:20:12.669
one and so on, and little by little,

00:20:12.970 --> 00:20:15.313
make it something that you just do automatically

00:20:15.333 --> 00:20:18.599
you don't think about and with the recognition

00:20:18.679 --> 00:20:20.181
that you want to remember them all

NOTE Tip: Make things more automatic, and use context-sensitive clues

00:20:20.701 --> 00:20:22.323
[Sacha]: And in fact, going on that point of

00:20:22.343 --> 00:20:25.506
automaticity, I also like making sure this stuff

00:20:25.586 --> 00:20:27.889
happens without me having to think about it.

00:20:28.349 --> 00:20:30.772
So if there's a hook that I can take advantage of

00:20:30.832 --> 00:20:33.875
to just have it automatically turned on, or if

00:20:33.955 --> 00:20:38.600
there's a context menu I can add it to so that I

00:20:38.660 --> 00:20:40.782
know, okay, if I do this, then I'll see it in a

00:20:40.862 --> 00:20:44.066
shorter list and I can get to it more easily

00:20:44.106 --> 00:20:46.708
instead of having to remember how to find it and

00:20:46.748 --> 00:20:48.210
all these details.

00:20:48.190 --> 00:20:50.237
Just all these little ways to make it easier for

00:20:50.297 --> 00:20:54.031
myself to automatically enjoy the improvements or

00:20:54.332 --> 00:20:56.158
at least have a chance of finding it again.

00:20:57.303 --> 00:20:57.804
[Prot]: Yeah, yeah.

00:20:57.824 --> 00:21:01.648
And this is in the spirit of prefix keys with the

00:21:01.708 --> 00:21:04.672
help of the which key package, for example, or

00:21:04.792 --> 00:21:06.655
what Embark is doing.

00:21:06.675 --> 00:21:08.777
So it's in that spirit.

00:21:08.797 --> 00:21:10.399
Of course, there are different approaches.

00:21:10.419 --> 00:21:13.243
Maybe you want to set up a transient and in the

00:21:13.283 --> 00:21:15.986
given mode that you just type question mark, for

00:21:16.026 --> 00:21:18.029
example, and it breaks up your transient with

00:21:18.069 --> 00:21:19.290
what you want to do.

00:21:19.310 --> 00:21:21.853
Like there are very strategies you can go about

00:21:21.994 --> 00:21:23.175
to do something like that.

00:21:26.092 --> 00:21:27.694
I lost your audio, just to say.

00:21:34.663 --> 00:21:35.344
Yeah, no problem.

00:21:35.444 --> 00:21:36.125
Let's see.

00:21:36.145 --> 00:21:38.248
Of course I can sing in the meantime, but I don't

00:21:38.288 --> 00:21:47.260
think the audience will like it.

00:21:47.280 --> 00:21:53.027
Let's see.

00:22:00.128 --> 00:22:01.129
Let's see.

00:22:01.189 --> 00:22:13.705
[Prot]: Yeah, no problem.

00:22:13.766 --> 00:22:14.386
No stress.

00:22:14.446 --> 00:22:16.669
Of course we could do this.

00:22:16.709 --> 00:22:18.792
Don't forget that there was a time in history

00:22:18.832 --> 00:22:20.875
where cinema thrived with technology like this.

00:22:20.915 --> 00:22:21.175
So it will work.

00:22:25.475 --> 00:22:28.544
Okay, I can read a little bit from the chat.

00:22:28.564 --> 00:22:31.654
So something I love doing is after I've learned

00:22:31.754 --> 00:22:35.265
that one function at the late

00:23:49.343 --> 00:23:53.448
[Sacha]: Can you hear me now?

00:23:53.809 --> 00:23:53.929
No.

00:23:54.550 --> 00:23:54.830
Test.

00:23:57.654 --> 00:23:58.355
Okay, okay, okay.

00:23:58.435 --> 00:23:58.935
Woohoo!

00:23:59.055 --> 00:23:59.917
Successful panicking.

00:24:02.360 --> 00:24:02.680
Alright.

00:24:06.145 --> 00:24:06.785
Great.

00:24:06.906 --> 00:24:08.387
Great.

00:24:08.588 --> 00:24:08.968
Magic?

00:24:09.509 --> 00:24:10.250
Something is happening?

00:24:10.330 --> 00:24:11.732
I don't know what is happening.

00:24:12.853 --> 00:24:14.095
My video is less important.

00:24:14.195 --> 00:24:14.595
It's fine.

00:24:15.036 --> 00:24:15.857
You may continue.

00:24:46.685 --> 00:24:47.587
Oh yeah, for sure.

NOTE Skill: Thinking in terms of elements

00:24:48.550 --> 00:24:52.019
Even just thinking, okay, here are the elements

00:24:52.140 --> 00:24:54.446
that it can work on and here are the actions that

00:24:54.486 --> 00:24:57.133
I want to associate with those elements.

00:24:57.454 --> 00:25:01.164
I guess it starts with the intuition of what are

00:25:01.224 --> 00:25:02.989
the things that I can address.

00:25:03.948 --> 00:25:06.111
And what I do is I just look at the embark source

00:25:06.131 --> 00:25:07.893
code and I'm like, oh yeah, okay,

00:25:07.933 --> 00:25:09.735
Org headings, that makes sense, and variables and all

00:25:09.775 --> 00:25:10.456
that stuff.

00:25:10.476 --> 00:25:14.561
I always like looking at people's setups.

00:25:14.581 --> 00:25:17.985
Okay, this one says you are now too quiet.

00:25:18.005 --> 00:25:23.872
Can you say something?

00:25:24.513 --> 00:25:26.856
Okay, okay, this is definitely a me problem.

00:25:27.056 --> 00:25:27.737
Hang on a second.

00:25:28.798 --> 00:25:30.580
Oh, okay, okay, okay, I think...

00:25:31.285 --> 00:25:33.309
Ah, technology.

00:25:33.369 --> 00:25:35.193
Why is it so fun?

00:25:36.416 --> 00:25:38.060
Test.

00:25:38.080 --> 00:25:38.761
Test.

00:25:38.781 --> 00:25:40.124
No, this is not right.

00:25:40.425 --> 00:25:41.086
No, no, no.

00:25:41.447 --> 00:25:43.371
[Prot]: Let me know if you can hear me now.

00:25:47.502 --> 00:25:52.026
And of course, in the meantime, I can comment on

00:25:52.046 --> 00:25:52.526
the weather.

00:25:52.586 --> 00:25:53.968
I don't know if I can be heard.

00:25:54.608 --> 00:25:57.591
But in Western Europe, the temperatures are

00:25:57.711 --> 00:25:58.652
record high.

00:25:59.212 --> 00:26:01.794
And here in the mountain of Cyprus, it's like 20

00:26:01.834 --> 00:26:03.195
degrees Celsius max.

00:26:04.296 --> 00:26:05.137
[Sacha]: Okay.

00:26:05.978 --> 00:26:08.880
So did you hear any of the stream?

00:26:09.501 --> 00:26:10.782
Is Prot's audio okay now?

00:26:11.903 --> 00:26:13.344
You've got to keep talking, I guess.

00:26:13.364 --> 00:26:13.985
[Prot]: Yeah.

00:26:14.205 --> 00:26:14.725
[Sacha]: Oh, my goodness.

00:26:15.046 --> 00:26:16.600
[Prot]: It's completely different.

NOTE Skill: Reading other people's configuration and adapting ideas to yours

00:26:16.601 --> 00:26:24.200
[Prot]: We can hear him loud and clear. Wonderful.

00:26:24.201 --> 00:26:27.533
[Sacha]: Back to braindumping.

00:26:27.534 --> 00:26:32.167
Very good, very good. So we talked about Embark and other things

00:26:32.168 --> 00:26:34.300
and practices and workflows.

00:26:34.301 --> 00:26:36.600
I learned by reading other people's

00:26:36.601 --> 00:26:40.140
configurations, but it does take a fair bit of

00:26:40.200 --> 00:26:43.002
intuition in the first place to realize this part

00:26:43.022 --> 00:26:44.644
of the configuration means

00:26:44.624 --> 00:26:47.388
This, and how to adapt that into my

00:26:47.468 --> 00:26:48.529
own workflow.

00:26:48.549 --> 00:26:50.352
Is there a way for people to develop that aside

00:26:50.372 --> 00:26:52.996
from just reading tons and tons of configs?

00:26:54.718 --> 00:26:56.961
[Prot]: At some point you just have to try.

00:26:57.081 --> 00:26:58.924
You just have to try and be like, okay, this

00:26:58.984 --> 00:27:02.249
package everybody raves about, they must be

00:27:02.289 --> 00:27:03.250
doing something good.

00:27:03.651 --> 00:27:05.894
I don't know what that is, so I have to try it and

00:27:05.954 --> 00:27:06.835
see for myself.

NOTE Tip: Start with focusing on just one thing

00:27:07.540 --> 00:27:11.486
Then for something like Embark...

00:27:11.566 --> 00:27:13.509
We are just using it as an example, but I think

00:27:13.549 --> 00:27:15.372
it's a good example for other things.

00:27:15.392 --> 00:27:17.616
Something like Embark can do a million

00:27:17.696 --> 00:27:20.761
things, but you can also use it for just one

00:27:20.821 --> 00:27:21.742
thing, right?

00:27:22.203 --> 00:27:25.228
Find the one thing that you can use it for,

00:27:25.248 --> 00:27:27.532
use it for that, then figure out what is the

00:27:27.592 --> 00:27:29.334
second thing and take it from there.

00:27:29.675 --> 00:27:32.139
The same can be said for Org and all sorts of

00:27:32.279 --> 00:27:32.940
packages.

NOTE Blog posts and videos are useful

00:27:33.612 --> 00:27:37.077
[Sacha]: I find that sometimes videos are useful

00:27:37.137 --> 00:27:40.241
for it in terms of seeing it in context, but on

00:27:40.261 --> 00:27:41.643
the other hand, sometimes I don't have the

00:27:41.723 --> 00:27:43.586
patience to watch a whole video.

00:27:45.869 --> 00:27:49.834
I particularly enjoy the posts that are both blog

00:27:49.875 --> 00:27:52.558
posts plus videos, so I can just skim the blog

00:27:52.598 --> 00:27:54.841
post, copy the code without having to pause and

00:27:54.881 --> 00:27:58.106
type things in manually, but also see how it

00:27:58.186 --> 00:28:01.511
works by somebody showing me how they use

00:28:01.551 --> 00:28:02.472
something.

00:28:02.452 --> 00:28:05.327
[Prot]: Yes.

00:28:05.347 --> 00:28:07.197
That's the idea.

NOTE Tip: Take notes as you learn, and ideally, share them too.

00:28:09.472 --> 00:28:11.354
[Sacha]: I do want to sneak in this

00:28:11.414 --> 00:28:12.795
recommendation to share.

00:28:12.815 --> 00:28:13.776
I keep beating this drum.

00:28:14.137 --> 00:28:18.321
But whenever I write about something that I've

00:28:18.381 --> 00:28:20.483
learned, I always end up getting these comments

00:28:20.523 --> 00:28:22.205
from people who point out other things that I

00:28:22.285 --> 00:28:23.466
should check out too.

00:28:24.147 --> 00:28:26.509
So I highly recommend, whether you're a beginner

00:28:26.589 --> 00:28:29.392
or whether you're a power user of Emacs, try

00:28:29.512 --> 00:28:30.033
blogging.

00:28:30.753 --> 00:28:33.176
I am happy to add people's blogs to Planet Emacs

00:28:33.236 --> 00:28:35.378
Life so people can read your stuff.

00:28:35.358 --> 00:28:39.087
All the notes are great for both crystallizing

00:28:39.107 --> 00:28:41.853
what you know as well as possibly inviting other

00:28:41.914 --> 00:28:46.124
people to share other tips and comments that

00:28:46.164 --> 00:28:47.627
point out that what you just worked on is

00:28:47.687 --> 00:28:49.953
actually a built-in package and all you have to

00:28:49.973 --> 00:28:51.597
do is configure this.

00:28:52.499 --> 00:28:53.822
Happens to me often.

NOTE Tip: Accept being a beginner.

00:28:54.595 --> 00:28:56.558
[Prot]: And what can help with blogging,

00:28:56.578 --> 00:28:59.242
especially once you are blogging about something

00:28:59.302 --> 00:29:03.648
that you know has a very high skill level, is

00:29:03.728 --> 00:29:07.293
to approach it in a diary-like way, where it's

00:29:07.333 --> 00:29:10.297
like, today I learned about such and such.

00:29:10.718 --> 00:29:13.201
I am not an expert, I am learning, and this is

00:29:13.261 --> 00:29:13.542
fun.

00:29:14.283 --> 00:29:15.865
That's your blog post.

00:29:15.905 --> 00:29:17.988
You don't have to present yourself as the

00:29:18.108 --> 00:29:20.952
foremost expert on the matter, because then of

00:29:21.012 --> 00:29:23.576
course you will have to wait many years to write

00:29:23.616 --> 00:29:24.417
that blog post.

00:29:24.835 --> 00:29:29.982
[Sacha]: I think that goes under this separate

00:29:31.304 --> 00:29:34.508
intuition thing for mindset and accepting the

00:29:34.568 --> 00:29:37.532
fact that no matter how many years of Emacs

00:29:37.612 --> 00:29:39.395
experience you have, you're going to be a

00:29:39.455 --> 00:29:43.600
beginner in 90% of the things that Emacs can do.

00:29:44.101 --> 00:29:46.765
So we can totally just accept the beginner's mind.

00:29:47.065 --> 00:29:49.048
There's no need to worry about imposter syndrome

00:29:49.088 --> 00:29:50.710
because we're all like this.

00:29:51.271 --> 00:29:53.053
We're all figuring things out.

00:29:53.033 --> 00:29:56.536
If you want, you can put in the disclaimer.

00:29:56.596 --> 00:29:58.238
You can say, "I'm totally a beginner.

00:29:58.598 --> 00:30:01.661
Read this for the idea and not the Emacs

00:30:01.721 --> 00:30:02.522
Lisp style"

00:30:03.263 --> 00:30:05.745
if you're embarrassed, you're

00:30:05.765 --> 00:30:07.427
self-conscious about sharing your code.

00:30:08.768 --> 00:30:14.013
But yeah, we're all just starting out, essentially.

00:30:14.714 --> 00:30:18.197
I like the fact that people in the community

00:30:18.237 --> 00:30:19.378
are so accessible.

00:30:19.595 --> 00:30:22.159
There's no one really saying, oh, I'm an expert.

00:30:22.179 --> 00:30:22.820
You should do it.

00:30:22.840 --> 00:30:24.783
You should do it this way and only this way,

00:30:25.304 --> 00:30:28.088
because we're all aware that

00:30:29.090 --> 00:30:31.513
again, we've done it this way, but there are

00:30:31.674 --> 00:30:34.097
probably five or six other implementations that

00:30:34.137 --> 00:30:36.060
could be even better that are really out there.

00:30:37.463 --> 00:30:38.284
[Prot]: Yeah, exactly.

00:30:38.304 --> 00:30:39.105
Exactly.

00:30:40.165 --> 00:30:42.007
[Sacha]: Charlie says that the leverage of

00:30:42.047 --> 00:30:44.050
blogging is unique in the Emacs community.

00:30:44.090 --> 00:30:46.393
Incredibly supportive, knowledgeable, and social

00:30:46.453 --> 00:30:47.154
group of people.

00:30:47.355 --> 00:30:50.499
That's another encouragement to go try it.

00:30:51.140 --> 00:30:52.101
And that is all good.

00:30:52.682 --> 00:30:54.584
In fact, there are a few days left in this May

00:30:54.624 --> 00:30:57.668
carnival for May I Recommends.

00:30:57.708 --> 00:30:59.631
If other people have recommendations, I'd love to

00:30:59.671 --> 00:31:00.352
hear about them too.

00:31:01.153 --> 00:31:06.660
Okay, so let's talk about... Actually, what do

00:31:06.680 --> 00:31:07.281
you want to talk about?

00:31:07.621 --> 00:31:08.923
What do you want to talk about?

00:31:09.494 --> 00:31:12.261
[Prot]: Let's go and do something with the power

00:31:12.382 --> 00:31:13.063
users.

NOTE Group: Power users

00:31:16.753 --> 00:31:20.583
With the power users, of course, you have a group

00:31:20.743 --> 00:31:25.275
that is, I would think, in some ways more diverse.

00:31:25.255 --> 00:31:28.758
Because of course there are different ways to

00:31:28.878 --> 00:31:32.762
become a power user. One, for example, is using

00:31:33.062 --> 00:31:36.025
Org more; another is using it as an IDE.

00:31:36.145 --> 00:31:40.289
So the common thread I would say

00:31:40.529 --> 00:31:44.433
here is that you are the kind of person who is

00:31:44.693 --> 00:31:47.275
digging deep. That's what you are as a

00:31:47.335 --> 00:31:49.838
power user. So if you want to become a power user,

00:31:50.438 --> 00:31:53.200
you have embedded as skills

00:31:53.201 --> 00:31:57.467
reading manuals and checking the source code, that sort of thing.

00:31:57.468 --> 00:32:02.235
[Sacha]: At this point, you're like, "Emacs is going to be my tool.

00:32:02.275 --> 00:32:04.559
There's a lot of depth to it."

00:32:04.699 --> 00:32:07.243
And this is where you start reading, okay, "How do

00:32:07.304 --> 00:32:08.065
I use Org Mode?"

00:32:08.085 --> 00:32:11.651
Or "How do I set up my IDE so that it's just the

00:32:11.691 --> 00:32:13.133
way that I want it?"

NOTE Tip: Browse through package lists

00:32:13.113 --> 00:32:16.858
For fun, I will sometimes look through the

00:32:16.918 --> 00:32:20.041
package lists just to see what's out there that I

00:32:20.081 --> 00:32:21.303
can easily reuse.

00:32:21.703 --> 00:32:23.866
But often, it isn't even a matter of adding

00:32:23.906 --> 00:32:25.768
additional packages to your configuration.

NOTE Tip: Dive deeply into the packages you have: customization options, code, etc.

00:32:25.848 --> 00:32:27.931
It could just be diving deeply into the ones that

00:32:27.971 --> 00:32:31.135
you do already have, looking for options, looking

00:32:31.235 --> 00:32:34.819
for little things that you can toggle on and off,

00:32:35.420 --> 00:32:38.624
or considering how the different functions can be

00:32:38.684 --> 00:32:40.386
integrated into your workflow.

NOTE Tip: find-library gets you to the source code, occur can help you browse it

00:32:41.716 --> 00:32:43.882
[Prot]: And to this end, I will add something

00:32:43.942 --> 00:32:46.189
that I do frequently because it combines the

00:32:46.249 --> 00:32:48.515
elements of what we have already covered, which

00:32:48.676 --> 00:32:50.762
is M-x find-library.

00:32:51.444 --> 00:32:53.249
You select the package you are interested in.

00:32:53.690 --> 00:32:57.160
You go there, then you do M-x occur.

00:32:57.140 --> 00:33:00.264
And you search for defcustom with a parenthesis

00:33:00.324 --> 00:33:00.645
in front.

00:33:00.745 --> 00:33:02.227
"(defcustom".

00:33:02.968 --> 00:33:05.050
This will produce an occur buffer with all

00:33:05.070 --> 00:33:06.192
the user options.

00:33:06.212 --> 00:33:07.494
So you do two things now.

00:33:07.514 --> 00:33:09.917
You learn about the user options, and you are

00:33:10.117 --> 00:33:12.180
looking at some source code.

00:33:12.200 --> 00:33:15.704
That's one way I

00:33:15.765 --> 00:33:17.166
can start reading source code.

00:33:17.927 --> 00:33:19.830
[Sacha]: This goes back to why we don't just

00:33:19.870 --> 00:33:22.073
tell people... You don't like Customize,

00:33:22.093 --> 00:33:24.676
so the M-x customize + regular expression is off

00:33:24.716 --> 00:33:25.257
your list.

00:33:26.587 --> 00:33:27.589
Just look at the source code.

00:33:28.029 --> 00:33:28.790
[Prot]: You'll be happier.

00:33:28.811 --> 00:33:29.291
Yeah, exactly.

NOTE Tip: You can also browse through Customize

00:33:29.952 --> 00:33:31.775
[Sacha]: Browsing through Customize is

00:33:31.875 --> 00:33:33.959
also an option because it'll tell you about the

00:33:34.019 --> 00:33:34.359
things.

00:33:34.379 --> 00:33:36.583
You don't have to use the Customize interface to

00:33:37.765 --> 00:33:40.429
set it, but I have come across very interesting

00:33:40.509 --> 00:33:42.452
options that way, just clicking around.

00:33:43.327 --> 00:33:45.950
[Prot]: Yeah, for sure.

00:33:45.970 --> 00:33:47.712
[Sacha]: @gcentauri's like, yeah, I'm bored,

00:33:47.812 --> 00:33:48.653
M-x list-packages.

NOTE Tip: Have fun with randomness and serendipity

00:33:48.934 --> 00:33:50.556
Sometimes I randomize these things.

00:33:50.596 --> 00:33:53.139
I think for EmacsConf, either last year or

00:33:53.179 --> 00:33:55.682
the year before, we had random packages being

00:33:55.722 --> 00:33:57.564
displayed as a screensaver.

00:33:58.145 --> 00:33:59.686
I know people have sometimes on their

00:33:59.746 --> 00:34:02.350
dashboards, they'll display

00:34:02.370 --> 00:34:03.951
random inspirational quotes.

00:34:04.132 --> 00:34:05.734
It could be a random Emacs package.

00:34:06.094 --> 00:34:08.857
I think at one point I had it display random

00:34:09.217 --> 00:34:11.139
interactive functions,

00:34:11.120 --> 00:34:14.505
just so I could stumble across

00:34:14.545 --> 00:34:15.428
more commands.

00:34:15.447 --> 00:34:18.433
Taking advantage of serendipity can be a fun

00:34:18.473 --> 00:34:21.217
way to squeeze in a little bit of learning.

00:34:22.699 --> 00:34:26.065
[Prot]: Nice, nice, yes.

00:34:26.547 --> 00:34:27.188
That's good.

00:34:27.320 --> 00:34:29.181
[Sacha]: All right, so Jason Torres says, "I

00:34:29.202 --> 00:34:32.585
use custom just to explore."

NOTE Tip: Check out people's workflow descriptions and stories

00:34:32.766 --> 00:34:34.849
Another recommendation I'd like to put in here is

00:34:35.029 --> 00:34:37.172
reading other people's workflow descriptions.

00:34:37.232 --> 00:34:40.255
Again, going back to blogs and videos and all of

00:34:40.295 --> 00:34:40.514
that.

00:34:40.936 --> 00:34:43.659
It's because a lot of these things are

00:34:43.719 --> 00:34:46.462
not obvious from looking at the source code,

00:34:46.822 --> 00:34:50.206
but when somebody tells you a story about what

00:34:50.327 --> 00:34:53.190
problem they had and how they combined pieces of

00:34:53.250 --> 00:34:55.453
different packages to solve a problem,

00:34:55.719 --> 00:34:58.204
then it becomes a lot more real.

00:34:59.786 --> 00:35:01.629
[Prot]: Yes.

00:35:01.669 --> 00:35:05.235
Plus, it puts you in the spirit of Emacs, which

00:35:05.455 --> 00:35:08.279
is you can be creative and piece together

00:35:08.360 --> 00:35:11.024
different elements of functionality and have a

00:35:11.064 --> 00:35:12.145
workflow that works for you.

00:35:15.851 --> 00:35:17.454
[Sacha]: Let's try plugging in, re-plugging in my

00:35:17.494 --> 00:35:17.974
webcam.

00:35:17.994 --> 00:35:18.996
Let's see what happens.

00:35:19.737 --> 00:35:20.518
[Prot]: Let's see, let's see.

00:35:20.578 --> 00:35:21.660
The moment of truth.

00:35:22.214 --> 00:35:31.215
[Sacha]: Everyone will just have to imagine my

00:35:31.415 --> 00:35:33.540
eyebrows of agreement.

00:35:36.355 --> 00:35:39.118
Okay, so that's the power user.

00:35:39.298 --> 00:35:41.701
This is how you get even better at it.

NOTE Resources: manuals, Mastering Emacs, Emacs Lisp Elements

00:35:42.301 --> 00:35:46.185
I think Mastering Emacs would probably be like a

00:35:46.225 --> 00:35:48.207
book recommendation in this area.

00:35:48.848 --> 00:35:51.591
And for customizing Emacs and actually writing

00:35:51.611 --> 00:35:54.173
Emacs Lisp, there's your Emacs Lisp Elements book.

00:35:54.914 --> 00:35:56.856
What other things would you recommend aside from,

00:35:57.036 --> 00:35:59.439
yeah, read the intro to Emacs Lisp and the Emacs

00:35:59.459 --> 00:36:00.540
Lisp Memo for fun?

00:36:01.297 --> 00:36:03.761
[Prot]: Of course, what you have listed there are

00:36:03.921 --> 00:36:04.642
all useful.

00:36:05.023 --> 00:36:06.985
The other one would be in the spirit of what we

00:36:07.025 --> 00:36:08.748
said earlier of trial and error.

00:36:10.130 --> 00:36:13.635
Learn how to, or rather get in the habit of

00:36:13.755 --> 00:36:15.318
writing little snippets of code.

00:36:15.778 --> 00:36:18.242
They don't have to be the best code of your life.

00:36:18.222 --> 00:36:21.227
Just something that gets the job done. Of

00:36:21.267 --> 00:36:24.734
course you can improve it later, but by getting in

00:36:24.774 --> 00:36:27.538
the flow of writing your own code, eventually what

00:36:27.599 --> 00:36:30.444
happens is you write better Emacs Lisp.

00:36:30.504 --> 00:36:34.130
You develop intuitions of what could go where, and

00:36:34.591 --> 00:36:37.075
eventually, before you know it, you are better at

00:36:37.216 --> 00:36:39.420
Emacs just because you were doing this little

00:36:39.460 --> 00:36:40.281
routine.

00:36:41.392 --> 00:36:50.824
[Sacha]: Noticing the questions.

00:36:50.904 --> 00:36:52.606
This is also a skill.

00:36:52.967 --> 00:36:54.969
This is also something that you develop.

00:36:55.730 --> 00:36:58.434
A lot of times people do not even know what's

00:36:58.534 --> 00:37:01.217
possible because they're so used to just taking

00:37:01.257 --> 00:37:03.200
for granted that this is a limitation of the

00:37:03.280 --> 00:37:04.041
system.

00:37:04.612 --> 00:37:07.778
So sometimes we have to see somebody else, you

00:37:07.798 --> 00:37:10.483
know, fly through the code without worrying about

00:37:10.544 --> 00:37:12.507
like, okay, I have to go do this and do that and

00:37:12.547 --> 00:37:12.888
whatever.

00:37:13.690 --> 00:37:16.936
Oh, somebody says it's, ah, my Obie said, thank

00:37:16.956 --> 00:37:17.457
you.

00:37:17.808 --> 00:37:21.573
Asha has pointed out that OBS has my webcam,

00:37:21.593 --> 00:37:23.916
which is why the browser couldn't find it.

00:37:24.437 --> 00:37:27.621
So I will think with that some more, but in any

00:37:27.661 --> 00:37:28.522
case, we will continue.

NOTE Skill: Figuring out what's possible and making a habit of writing tiny functions

00:37:29.323 --> 00:37:33.669
Yes, so figuring out what is possible and then

00:37:33.989 --> 00:37:35.992
writing a tiny function for it and developing

00:37:36.032 --> 00:37:40.077
that habit of not tolerating these little bits of

00:37:40.138 --> 00:37:42.441
friction, I think is a skill.

00:37:42.681 --> 00:37:45.064
It's a thing you can develop.

NOTE Skill: Being mindful of what you do over and over again

00:37:45.685 --> 00:37:48.048
[Prot]: Yeah, and another skill which is along

00:37:48.068 --> 00:37:50.371
the lines of writing your own code but maybe also

00:37:50.431 --> 00:37:56.459
a meta-skill is: be mindful of what you do

00:37:57.540 --> 00:37:58.581
over and over again.

00:37:59.042 --> 00:38:01.645
For example, let's imagine now you have a command

00:38:01.685 --> 00:38:04.829
that switches to the other window and then blinks

00:38:04.869 --> 00:38:06.271
the cursor or whatever, right?

00:38:06.772 --> 00:38:08.614
And these are two commands and you do them all

00:38:08.654 --> 00:38:08.975
the time.

00:38:08.995 --> 00:38:10.917
You do the one, you do the other, okay?

00:38:10.897 --> 00:38:14.164
Now you can write one command, which is a wrapper

00:38:14.224 --> 00:38:17.090
of those two, and all it does is call

00:38:17.151 --> 00:38:19.736
interactively the first, call interactively the

00:38:19.776 --> 00:38:22.783
second. Just by piecing those together you

00:38:22.843 --> 00:38:26.070
already have your own little command.

NOTE Tip: Keyboard macros can help you jumpstart custom functions

00:38:26.658 --> 00:38:29.502
[Sacha]: Oh, I definitely want to point out here

00:38:29.522 --> 00:38:32.546
that you can use keyboard macros to generate the

00:38:32.687 --> 00:38:33.768
Emacs Lisp for it.

00:38:33.808 --> 00:38:37.113
So even if you're not that comfortable with Emacs

00:38:37.173 --> 00:38:39.156
Lisp, or you don't remember what the keyboard

00:38:39.196 --> 00:38:42.921
shortcuts do, you can record a keyboard macro.

00:38:42.941 --> 00:38:44.724
So you've definitely learned how to do that.

00:38:45.104 --> 00:38:48.910
And then you can get it to print out the Emacs

00:38:49.010 --> 00:38:52.615
Lisp that the set of keyboard actions ran.

00:38:52.595 --> 00:38:55.803
Or at least the Emacs Lisp to repeat the same

00:38:55.883 --> 00:38:57.727
keyboard shortcuts and then it will all figure it

00:38:57.787 --> 00:38:58.509
out.

00:38:58.689 --> 00:38:59.471
Anyway, so that's there.

00:39:00.935 --> 00:39:05.024
You can save that sequence of commands as a Lisp

00:39:05.084 --> 00:39:06.287
function in your config.

00:39:06.648 --> 00:39:08.472
So that's one thing, using keyboard macros to

00:39:08.512 --> 00:39:10.958
jumpstart your Emacs Lisp.

NOTE Tip: Use C-h k (describe-key) to describe shortcuts or menu items

00:39:11.140 --> 00:39:14.344
And the second thing is using C-h-K or

00:39:14.404 --> 00:39:17.848
Describe Key to see what a given keyboard

00:39:17.889 --> 00:39:20.972
shortcut or menu item will actually run.

00:39:21.653 --> 00:39:25.038
So that's all very useful stuff for figuring out

00:39:25.058 --> 00:39:26.940
the Emacs list to do something you're doing

00:39:27.020 --> 00:39:27.661
interactively.

00:39:28.842 --> 00:39:31.706
[Prot]: I think that's the most used help command

00:39:31.726 --> 00:39:32.507
I do.

00:39:32.791 --> 00:39:34.433
C-h k.

00:39:34.713 --> 00:39:36.355
It's super useful all the time.

00:39:36.415 --> 00:39:37.716
It's very, very helpful.

00:39:38.497 --> 00:39:42.000
And not only you learn what command it calls, but

00:39:42.100 --> 00:39:44.903
also in which key map it is bound.

00:39:44.923 --> 00:39:48.647
So for example, C-c C-c in an Org

00:39:48.707 --> 00:39:51.409
buffer, it is telling you what the command is,

00:39:51.810 --> 00:39:53.672
and it is telling you this command is bound in

00:39:53.712 --> 00:39:55.433
the Org mode map.

00:39:55.453 --> 00:39:57.455
So if you want to change something, you know that

00:39:57.635 --> 00:39:59.978
you also have to be mindful of the key map.

00:40:00.058 --> 00:40:01.279
So there is your key map.

NOTE You can set up M-x to show keyboard shortcuts too (Marginalia?)

00:40:04.432 --> 00:40:07.655
[Sacha]: Yes, it tells you other shortcuts.

00:40:08.636 --> 00:40:11.098
Oh, and along those lines, one of the M-x

00:40:11.198 --> 00:40:16.483
variants shows key bindings as well, which I

00:40:16.523 --> 00:40:17.004
recommend.

00:40:17.244 --> 00:40:19.366
If you're a power user, you'd like to become more

00:40:19.386 --> 00:40:21.508
of a power user, even a regular user, right?

00:40:21.528 --> 00:40:23.990
You want to start moving to using keyboard

00:40:24.030 --> 00:40:26.993
shortcuts for your more common commands and

00:40:27.253 --> 00:40:30.016
setting up your M-x command completion so that

00:40:30.136 --> 00:40:31.637
it hints

00:40:31.617 --> 00:40:35.343
at the keyboard shortcuts. Emacs by

00:40:35.363 --> 00:40:37.747
default also tells you about it after you run a

00:40:37.807 --> 00:40:40.652
command that had a shortcut. But at least that way,

00:40:40.692 --> 00:40:42.334
when you're looking through the command list you

00:40:42.374 --> 00:40:44.498
can see, "Oh yeah, this has a shortcut!" And then you

00:40:44.518 --> 00:40:47.222
can maybe even cancel out of your M-x and

00:40:47.362 --> 00:40:50.928
practice using that shortcut right away.

00:40:50.968 --> 00:40:52.090
[Prot]: Exactly.

00:40:52.323 --> 00:40:54.767
[Sacha]: And along those lines, I like using marginalia

00:40:54.988 --> 00:40:57.051
and consult because then I can see the command

00:40:57.091 --> 00:41:00.618
descriptions alongside the command name.

00:41:00.638 --> 00:41:02.140
So there's a little bit more detail there.

00:41:03.142 --> 00:41:04.785
[Prot]: Yeah, I think you meant vertical.

00:41:04.805 --> 00:41:06.568
Vertical and marginalia.

00:41:06.818 --> 00:41:07.619
[Sacha]: Oh, yes.

00:41:07.739 --> 00:41:09.701
It's one of those things, yes.

00:41:10.422 --> 00:41:11.463
It just works with everything.

00:41:12.525 --> 00:41:15.848
So yes, ready to go for completions that show you

00:41:16.009 --> 00:41:18.732
a lot of detail and then marginalia to actually

00:41:18.812 --> 00:41:23.177
show the thing on the side, which is helpful.

00:41:23.237 --> 00:41:25.139
[Prot]: And of course, consult is wonderful as

00:41:25.179 --> 00:41:26.020
well, of course.

00:41:26.040 --> 00:41:26.260
[Sacha]: Yes.

NOTE Resource: Emacs from Scratch series by System Crafters

00:41:26.521 --> 00:41:28.944
@ashraz would like to recommend the Emacs from

00:41:29.004 --> 00:41:31.567
Scratch series by System Crafters.

00:41:31.607 --> 00:41:33.909
They say it's a bit dated from 2020, but still

00:41:33.969 --> 00:41:35.391
mostly relevant in general.

00:41:35.877 --> 00:41:38.521
There are a lot of video resources out there.

00:41:42.226 --> 00:41:43.087
[Prot]: Yeah, yeah, that's good.

00:41:43.848 --> 00:41:47.653
2020, oh my goodness.

00:41:47.893 --> 00:41:49.535
It's been so long, I can't believe it.

NOTE Tip: Old tutorials can still be useful, although don't treat them as the sole source of truth (things may have changed since then)

00:41:50.076 --> 00:41:52.059
[Sacha]: It's really interesting because I've

00:41:52.079 --> 00:41:55.443
been trying to organize the tutorial resources

00:41:55.483 --> 00:41:58.187
that people who are new to Emacs will come across.

00:41:58.868 --> 00:42:02.753
And a lot of times, some of the Org videos are

00:42:03.074 --> 00:42:05.597
from 10, 20 years ago.

00:42:05.915 --> 00:42:06.876
But they're still valid.

00:42:07.377 --> 00:42:09.700
So we have to make sure people don't immediately

00:42:09.740 --> 00:42:12.885
get turned off by the date in the video.

00:42:13.466 --> 00:42:15.308
But at the same time, they can start to tell the

00:42:15.349 --> 00:42:15.669
difference.

00:42:15.749 --> 00:42:19.835
Okay, this stuff is still applicable.

00:42:20.236 --> 00:42:23.620
But this stuff over here, it needs to be

00:42:23.660 --> 00:42:26.725
translated into how you do it in modern times.

00:42:26.985 --> 00:42:29.329
So it's a little challenging for people to

00:42:29.389 --> 00:42:30.370
navigate this.

00:42:31.312 --> 00:42:33.937
[Prot]: Which of course points to another meta

00:42:33.957 --> 00:42:37.543
skill which is generally information related to

00:42:37.643 --> 00:42:40.829
Emacs is useful and it will work long into the

00:42:40.889 --> 00:42:41.410
future.

00:42:42.432 --> 00:42:45.798
But don't take a tutorial or a video as

00:42:45.818 --> 00:42:46.880
the source of truth.

00:42:46.900 --> 00:42:49.344
Always use it as a proxy.

00:42:49.364 --> 00:42:51.148
Okay, I get the idea.

00:42:51.188 --> 00:42:53.812
Now I will have to check the documentation and so

00:42:53.913 --> 00:42:54.113
on.

NOTE Skill: Finding preferred resources

00:42:55.848 --> 00:43:00.594
[Sacha]: So I think that part of the learning

00:43:00.634 --> 00:43:03.618
journey as a user is also finding your preferred

00:43:03.658 --> 00:43:04.619
resources.

00:43:04.639 --> 00:43:06.101
Because a lot of times you're not going to learn

00:43:06.201 --> 00:43:08.103
everything the first time around.

00:43:08.384 --> 00:43:10.506
And everyone thinks in different ways.

00:43:10.526 --> 00:43:13.810
So you do need to spend some time looking for the

00:43:13.890 --> 00:43:16.854
kinds of resources that jive with the way that

00:43:16.914 --> 00:43:20.178
you think, with the task that you want to do or

00:43:20.198 --> 00:43:21.720
the workflow you want to have.

00:43:21.700 --> 00:43:24.383
And it's using the language at the right level

00:43:24.443 --> 00:43:25.624
for you, et cetera, et cetera.

00:43:26.225 --> 00:43:29.508
So even knowing, going in, that you're not going

00:43:29.549 --> 00:43:32.832
to find one-size-fits-all tutorial because Emacs

00:43:33.032 --> 00:43:36.516
has so many different workflow possibilities.

00:43:36.536 --> 00:43:39.659
Spending some time to figure out what you like as

00:43:39.780 --> 00:43:42.723
a tutorial or as a reference and then going back

00:43:42.783 --> 00:43:46.967
to that again and again as your understanding

00:43:47.027 --> 00:43:51.252
develops, I think is a thing worth doing.

00:43:52.430 --> 00:43:55.455
[Prot]: Yes, yes, exactly. And of course,

00:43:55.496 --> 00:43:58.541
that's the whole point of Emacs more broadly: that

00:43:59.643 --> 00:44:01.827
it accommodates the different kinds of people

00:44:01.927 --> 00:44:05.594
because it's so customizable. So if something

00:44:05.674 --> 00:44:08.579
doesn't work for you, don't try to force yourself

00:44:08.639 --> 00:44:12.306
to work the way it is. Rather, change Emacs to work

00:44:12.366 --> 00:44:16.834
the way you think. And on a meta note,

00:44:17.236 --> 00:44:20.082
[Sacha]: Finding people who think the kind of way

00:44:20.122 --> 00:44:24.711
you do is super helpful, like the tribe within

00:44:24.751 --> 00:44:25.232
the tribe.

00:44:27.717 --> 00:44:29.781
For example, you've got this cluster of people

00:44:29.861 --> 00:44:32.426
who like using the note because their brain works

00:44:32.466 --> 00:44:34.650
the same way that yours does when it comes to

00:44:34.730 --> 00:44:37.135
filing their notes.

NOTE Tip: If you find your tribe, look for ways to keep in touch with them

00:44:37.115 --> 00:44:42.163
Once you find that connection, finding ways to

00:44:42.203 --> 00:44:44.386
keep up with what those people are doing, and

00:44:44.486 --> 00:44:47.911
often this is RSS because that's a great way to

00:44:48.252 --> 00:44:50.916
get the updates without getting buried in email.

00:44:51.937 --> 00:44:54.761
That can be a great way to keep stumbling across

00:44:55.262 --> 00:44:57.165
things that might help you.

NOTE Tip: Manage unequal RSS frequencies with folders or tags

00:44:58.394 --> 00:45:00.838
[Prot]: Yes, yes, that's a very good point. On the

00:45:00.898 --> 00:45:04.103
topic of RSS, just to say something that I learned

00:45:04.323 --> 00:45:08.610
many years ago the hard way: RSS works

00:45:08.751 --> 00:45:11.976
best if you subscribe to resources that don't

00:45:12.096 --> 00:45:16.222
post 30 or 50 or 100 articles a day.

00:45:16.523 --> 00:45:18.907
If you subscribe to the BBC or whatever,

00:45:19.227 --> 00:45:22.532
that will not work because it will crowd out the

00:45:22.593 --> 00:45:24.756
blog that posts once every month.

00:45:25.192 --> 00:45:27.015
[Sacha]: What I do with that is I have different

00:45:27.075 --> 00:45:27.575
folders.

00:45:27.696 --> 00:45:29.999
Folders, filters, etc.

00:45:30.480 --> 00:45:32.002
Yeah, folders or tags or whatever.

00:45:32.082 --> 00:45:35.888
So all the microblogs or all the very prolific

00:45:35.928 --> 00:45:38.832
things go into one folder, which I generally

00:45:38.932 --> 00:45:42.097
ignore because it's hard to go through.

00:45:42.117 --> 00:45:42.898
Fair enough.

00:45:43.098 --> 00:45:43.759
[Prot]: Subscribe.

00:45:44.240 --> 00:45:46.123
[Sacha]: Yeah, the people who post once a day or

00:45:46.343 --> 00:45:49.007
once a week or once a month or once every blue

00:45:49.047 --> 00:45:51.610
moon, then it's easier to keep up with them

00:45:51.651 --> 00:45:54.034
because it's not buried in all of that stuff.

00:45:55.448 --> 00:46:03.402
You can look into your RSS readers to support for

00:46:04.444 --> 00:46:07.229
keywords maybe in order to do some more filtering

00:46:07.490 --> 00:46:08.411
and prioritization.

00:46:08.672 --> 00:46:10.635
This is one of the things that I've always

00:46:10.675 --> 00:46:15.043
envied about people who use Gnus for reading RSS.

00:46:15.023 --> 00:46:19.267
Because there's nnrss. Then you can use Gnus's

00:46:19.268 --> 00:46:24.133
scoring to prioritize the RSS items automatically for you.

00:46:24.134 --> 00:46:27.933
But that's definitely a power user thing, because it's Gnus.

00:46:27.934 --> 00:46:31.000
[Prot]: I think that's a power user among power users.

00:46:31.001 --> 00:46:32.948
That's really an exception.

NOTE Tip: Doing more things in Emacs has compounding benefits

00:46:33.198 --> 00:46:35.482
[Sacha]: Actually, that touches on an interesting thing

00:46:35.522 --> 00:46:39.830
about becoming more of a power user of Emacs in

00:46:39.890 --> 00:46:43.837
which if you let Emacs assimilate more of your

00:46:43.877 --> 00:46:47.002
life, if you start to use Emacs for more and more

00:46:47.103 --> 00:46:49.948
things, you get not just linear improvements but

00:46:50.008 --> 00:46:52.973
compounding ones as the things that you have can

00:46:53.033 --> 00:46:54.175
interact with other things.

00:46:54.616 --> 00:46:58.142
I'm thinking even just for the base case of

00:46:58.122 --> 00:47:00.805
if your to-do list is in Emacs and your coding is

00:47:00.865 --> 00:47:02.908
in Emacs, then you can create to-do items that

00:47:02.948 --> 00:47:05.771
link to your code, all the way to if

00:47:05.791 --> 00:47:08.094
your email is in Emacs, then you can make your

00:47:08.114 --> 00:47:10.717
to-do refer to your email and stuff like that.

00:47:12.259 --> 00:47:19.287
[Prot]: Exactly. That's where it gets really powerful.

00:47:19.327 --> 00:47:21.730
[Sacha]: If you want to get even deeper into the

00:47:21.770 --> 00:47:26.796
power of Emacs, try to push more of your life into it.

00:47:26.978 --> 00:47:29.743
I love seeing the things that people do with

00:47:30.023 --> 00:47:33.249
browsing the web in Emacs.

00:47:35.192 --> 00:47:37.316
What kinds of things do you do in Emacs that make

00:47:37.356 --> 00:47:39.499
you go like, this is where the power

00:47:39.640 --> 00:47:42.304
of having everything together works out really well.

00:47:43.060 --> 00:47:45.943
[Prot]: You already mentioned them, like email in

00:47:45.963 --> 00:47:49.587
Emacs together with your agenda, but also Dired,

00:47:49.688 --> 00:47:53.612
because you can mark files and attach them to the

00:47:53.672 --> 00:47:54.994
message composition buffer.

00:47:56.335 --> 00:48:01.641
You can run a M-x shell and your three marked

00:48:01.701 --> 00:48:05.546
files in Dired, you type w or 0 w and you get

00:48:05.586 --> 00:48:07.908
their path and then you can do something with

00:48:07.968 --> 00:48:11.953
them from a shell, if you cannot do it directly from

00:48:11.933 --> 00:48:13.857
calling a shell command from Dired.

00:48:14.217 --> 00:48:15.861
There are many ways like that.

00:48:15.961 --> 00:48:18.786
The keyboard macros where you can jump, let's

00:48:18.806 --> 00:48:21.191
say, from a Dired buffer to a shell buffer or

00:48:21.953 --> 00:48:24.458
from one buffer to another.

00:48:24.478 --> 00:48:26.441
All these little things.

00:48:27.123 --> 00:48:29.447
For me, it's very powerful.

00:48:29.788 --> 00:48:31.832
You use it all the time.

NOTE Tip: Learn to think of it as just text

00:48:31.812 --> 00:48:33.615
At some point, you don't even think about it.

00:48:33.635 --> 00:48:37.122
It's just text laid out in

00:48:37.262 --> 00:48:39.627
windows, each of which shows a buffer.

00:48:39.647 --> 00:48:42.512
So at some point, it doesn't matter if it's email

00:48:42.772 --> 00:48:44.556
or programming or prose.

00:48:44.636 --> 00:48:46.399
At some point, they are all the same.

00:48:46.419 --> 00:48:47.982
So it doesn't matter at all.

00:48:48.738 --> 00:48:52.163
[Sacha]: Developing that mindset of "it's just

00:48:52.223 --> 00:48:55.529
text" and the facility for working with text, such

00:48:55.729 --> 00:48:58.834
as keyboard macros, or being able to jump around,

00:48:58.894 --> 00:49:00.997
or writing your own functions to manipulate it, or

00:49:01.097 --> 00:49:04.563
even just using isearch to go through it or using

00:49:04.723 --> 00:49:06.346
undo in different contexts.

00:49:06.867 --> 00:49:09.471
I think that's definitely something that people

00:49:09.551 --> 00:49:13.056
develop and when they develop that intuition, it

00:49:13.357 --> 00:49:14.138
really helps.

00:49:15.333 --> 00:49:18.377
[Prot]: Yes, yes, exactly. In the

00:49:18.417 --> 00:49:21.301
beginning you won't think about those linkages.

00:49:21.341 --> 00:49:25.026
They won't be obvious to you. But just be mindful

00:49:25.046 --> 00:49:28.510
that they are there. They are possible. As you

00:49:28.650 --> 00:49:32.275
use Emacs, at some point you just feel naturally

00:49:32.335 --> 00:49:34.398
about them, and they happen. You're like, oh

00:49:34.418 --> 00:49:40.806
yeah, of course that was always possible. Of

00:49:40.826 --> 00:49:42.909
course, with the benefit of hindsight... In the

00:49:42.949 --> 00:49:45.272
beginning, you will be like, "Wow, I can do that!"

NOTE Tip: Take notes along the way

00:49:46.012 --> 00:49:48.115
[Sacha]: That's the other reason why I want

00:49:48.135 --> 00:49:50.358
to encourage people to take notes along the way,

00:49:50.378 --> 00:49:52.020
ideally sharing them, of course, but even just

00:49:52.040 --> 00:49:54.463
for yourself, because a lot of times you will get

00:49:54.483 --> 00:49:56.405
to the point where this is just the

00:49:56.425 --> 00:49:57.246
way you've always done it.

00:49:58.027 --> 00:50:00.450
On the other hand, if you had those notes as

00:50:00.490 --> 00:50:03.254
you're figuring out how to do it, and you share

00:50:03.294 --> 00:50:04.656
those notes, then you're leaving these

00:50:04.756 --> 00:50:07.359
breadcrumbs for other people who are

00:50:07.579 --> 00:50:09.522
traveling down the same or similar path.

00:50:10.163 --> 00:50:12.165
That's something that would

00:50:12.185 --> 00:50:13.487
be very helpful for people.

00:50:14.750 --> 00:50:16.192
[Prot]: Yeah, exactly.

NOTE Tip: Explore different ways to navigate and act on things

00:50:16.312 --> 00:50:19.656
Even if you don't have external packages... For

00:50:19.717 --> 00:50:23.642
example, a workflow that for me was so powerful

00:50:23.682 --> 00:50:25.304
that I was like "Yeah, this is the way to go"

00:50:26.465 --> 00:50:30.230
involved the grep and then editing the grep

00:50:30.291 --> 00:50:30.671
results.

00:50:31.032 --> 00:50:34.456
But even if you don't use a bespoke package for

00:50:34.496 --> 00:50:36.919
that, which of course is also built into Emacs

00:50:36.939 --> 00:50:39.363
now, the functionality, you can use the grep

00:50:39.403 --> 00:50:42.646
results just as a way to jump to the result.

00:50:42.706 --> 00:50:44.868
If you hit RET, it takes you to the buffer

00:50:45.449 --> 00:50:47.290
at the point where the result is.

00:50:47.310 --> 00:50:49.352
You can have a keyboard macro that jumps to

00:50:49.392 --> 00:50:51.955
the result, makes some edit, goes back, jumps to

00:50:51.975 --> 00:50:53.736
the next result and repeat, right?

00:50:54.657 --> 00:50:56.959
You can do that even without the package.

00:50:57.179 --> 00:51:01.183
The point is that you can collect results and

00:51:01.363 --> 00:51:04.947
edit them in like a second or a minute, whereas

00:51:05.007 --> 00:51:07.429
you would need literal hours to do that

00:51:07.449 --> 00:51:08.770
and it would be error-prone.

NOTE Tip: Learn to combine different building blocks

00:51:09.475 --> 00:51:12.279
[Sacha]: Yeah, and this points to the

00:51:12.319 --> 00:51:14.642
skill of being able to see and work with

00:51:14.702 --> 00:51:15.864
different building blocks.

00:51:16.365 --> 00:51:19.088
You have a block for, this is how to

00:51:19.189 --> 00:51:19.749
navigate.

00:51:20.330 --> 00:51:21.652
There are different ways to navigate.

00:51:21.692 --> 00:51:24.115
You could navigate to something based on some

00:51:24.156 --> 00:51:26.158
matching text, or you can navigate to something

00:51:26.198 --> 00:51:27.720
based on a line.

00:51:27.761 --> 00:51:30.905
You can set up your windows

00:51:30.965 --> 00:51:33.348
so that you can switch between windows or

00:51:33.388 --> 00:51:33.829
whatever.

00:51:34.113 --> 00:51:36.016
Then if you can combine that with, okay,

00:51:36.076 --> 00:51:37.819
these are some building blocks for acting on

00:51:37.879 --> 00:51:40.784
something, or this is how I can use the kill ring

00:51:40.844 --> 00:51:42.967
to take it to... or this is how I can use

00:51:42.987 --> 00:51:46.072
registers so that I can save some text or save a

00:51:46.092 --> 00:51:47.755
position or whatever else.

00:51:47.775 --> 00:51:49.278
The more of these building blocks that you

00:51:49.298 --> 00:51:52.423
can develop slowly, because being able to

00:51:52.503 --> 00:51:55.548
internalize the concept takes time, then all

00:51:55.588 --> 00:51:57.491
these different ways that you combine it to solve

00:51:57.551 --> 00:51:59.935
a problem makes Emacs very powerful.

00:52:01.433 --> 00:52:02.485
[Prot]: Yeah, exactly.

00:52:02.505 --> 00:52:04.225
That's a good way to think of it, as building

00:52:04.286 --> 00:52:04.812
blocks.

00:52:06.817 --> 00:52:08.279
[Sacha]: I don't know how people will do that

00:52:08.400 --> 00:52:11.424
either, aside from read the manual for fun and

00:52:11.485 --> 00:52:14.630
watch Emacs videos and read other people's posts.

00:52:17.194 --> 00:52:19.377
Often I think, what if we make a

00:52:19.438 --> 00:52:20.299
skill tree, right?

00:52:20.319 --> 00:52:21.861
Because people like gamification...

00:52:21.922 --> 00:52:23.845
But then this is going to be a

00:52:23.925 --> 00:52:26.930
really ridiculous, large skill tree with arrows

00:52:26.990 --> 00:52:28.092
going all over the place.

00:52:28.352 --> 00:52:30.195
[Prot]: No, no, you don't want to do that.

00:52:30.295 --> 00:52:32.038
It will be the RPG that never ends.

00:52:32.058 --> 00:52:33.280
There is no final boss.

00:52:34.407 --> 00:52:36.951
[Sacha]: @yogi583 asks what is a built-in function's

00:52:37.011 --> 00:52:39.415
name to edit grep result in Emacs?

00:52:39.435 --> 00:52:40.937
[Prot]: I don't know but what I usually do is...

00:52:40.957 --> 00:52:43.461
Grep edit mode I think.

00:52:43.481 --> 00:52:44.222
It's new, right?

00:52:44.262 --> 00:52:44.723
It's new.

00:52:44.843 --> 00:52:47.267
It's built into Emacs 31 I believe.

NOTE Tip: Get the hang of keybinding conventions

00:52:47.648 --> 00:52:54.038
[Sacha]: What I think of it is I go to the grep

00:52:54.058 --> 00:52:56.541
buffer and I press C-x C-q because that's the

00:52:56.582 --> 00:52:58.845
general "toggle read only"...

00:52:58.825 --> 00:53:03.912
That's another mental concept

00:53:03.952 --> 00:53:04.493
there, right?

00:53:04.673 --> 00:53:07.717
Getting a sense of the key binding conventions

00:53:08.358 --> 00:53:12.464
that might be translated into different actions

00:53:12.544 --> 00:53:13.525
in different places.

00:53:15.267 --> 00:53:16.769
[Prot]: Yes.

00:53:16.890 --> 00:53:21.836
There is an annex to the Emacs Lisp manual, the

00:53:21.856 --> 00:53:23.899
Emacs Lisp reference manual, which talks about

00:53:23.979 --> 00:53:26.823
the key binding conventions, which is very useful

00:53:26.883 --> 00:53:28.225
for people to read.

00:53:28.205 --> 00:53:31.751
Even after you read that, it's a little bit

00:53:31.811 --> 00:53:34.035
hard to reason about the key bindings if you are

00:53:34.095 --> 00:53:36.439
getting started, but trust the process.

00:53:36.499 --> 00:53:39.083
You will see the patterns as you go.

00:53:39.103 --> 00:53:42.529
Generally, you can expect C-x to be global key

00:53:42.569 --> 00:53:46.936
bindings, and C-c followed by control something to

00:53:46.976 --> 00:53:49.200
be major-mode-specific key bindings.

00:53:49.619 --> 00:53:52.223
[Sacha]: One of the things I like about reading

00:53:52.243 --> 00:53:54.286
other people's configs is that they'll rebind

00:53:54.326 --> 00:53:57.290
something and I'll be like, yeah, I can totally

00:53:57.350 --> 00:53:59.153
take advantage of that keybind because I'm not

00:53:59.253 --> 00:54:00.655
using the standard one as much.

00:54:02.017 --> 00:54:04.120
[Prot]: Let me tell you about one I used.

00:54:04.160 --> 00:54:06.323
Of course, there are many, but by default, you

00:54:06.363 --> 00:54:08.724
close Emacs with C-x C-c.

00:54:08.725 --> 00:54:10.269
[Sacha]: Who closes Emacs?

00:54:11.751 --> 00:54:15.477
[Prot]: Yeah, people who make mistakes in life, such as

00:54:15.517 --> 00:54:16.318
myself.

00:54:17.193 --> 00:54:20.261
So because I would fat finger that the whole

00:54:20.321 --> 00:54:24.632
time, you want to unbind C-x C-c and then do C-x

00:54:24.732 --> 00:54:29.203
C-c C-c then you can exit.

00:54:30.847 --> 00:54:32.732
I would do it by mistake the whole time and I

00:54:32.772 --> 00:54:34.476
would destroy whatever I was working.

00:54:34.962 --> 00:54:38.590
[Sacha]: Yeah, key binding design is this

00:54:38.630 --> 00:54:40.794
whole other thing that I haven't really mastered

00:54:40.854 --> 00:54:41.716
myself either.

00:54:42.338 --> 00:54:46.005
We've talked before about making the key bindings

00:54:46.045 --> 00:54:46.526
make sense.

00:54:46.547 --> 00:54:48.350
When they're mnemonic, they're easier for people

00:54:48.410 --> 00:54:49.252
to remember, right?

00:54:50.154 --> 00:54:52.920
But this is definitely something that I struggle with.

00:54:53.744 --> 00:54:55.286
[Prot]: So think of it this way, of course

00:54:55.326 --> 00:54:59.012
assuming there is a space for it or you unbind

00:54:59.092 --> 00:54:59.833
something.

00:54:59.853 --> 00:55:04.480
C-x something is a global key potentially with a

00:55:04.540 --> 00:55:06.042
prefix, as a prefix.

00:55:06.062 --> 00:55:11.070
C-x r is a prefix, C-x p is a prefix and they

00:55:11.110 --> 00:55:13.153
have global scope, right?

00:55:13.133 --> 00:55:15.377
If you are doing something that is global in

00:55:15.457 --> 00:55:16.859
nature, it should work everywhere.

00:55:16.940 --> 00:55:19.123
You may want to do the same if you are okay with

00:55:19.203 --> 00:55:21.287
overriding default key bindings, right?

00:55:22.169 --> 00:55:24.653
Otherwise, you want to do something that is

00:55:24.713 --> 00:55:25.635
more specific.

00:55:25.655 --> 00:55:28.960
C-c C-something for a mode.

00:55:28.980 --> 00:55:33.488
Again, optionally overriding what a major mode is doing.

00:55:33.856 --> 00:55:37.103
Then you have to work with that.

00:55:37.123 --> 00:55:38.145
Use mnemonics.

00:55:38.265 --> 00:55:39.728
Use words that make sense.

00:55:39.768 --> 00:55:42.434
For example, C-s is the default key for

00:55:42.514 --> 00:55:42.995
searching.

00:55:43.917 --> 00:55:47.364
M-s is the prefix for alternative search.

00:55:47.464 --> 00:55:47.905
Think of it.

00:55:48.085 --> 00:55:49.247
Alt-S, right?

00:55:49.267 --> 00:55:52.494
All the alternative kind of searches, such as

00:55:52.875 --> 00:55:54.919
M-s o, right?

00:55:54.899 --> 00:55:58.425
So you can now think of M-s and then g would

00:55:58.465 --> 00:55:59.166
be my grep.

00:55:59.327 --> 00:56:02.312
M-s and f would be my find and so on.

00:56:02.372 --> 00:56:06.238
You can think in concepts like that.

NOTE Tip: Use which-key for keybinding help

00:56:06.258 --> 00:56:08.362
[Sacha]: When in doubt, keep which-key enabled

00:56:08.422 --> 00:56:10.766
so then it will remind you at least of what else

00:56:10.806 --> 00:56:14.392
you've had configured for that prefix.

00:56:14.412 --> 00:56:16.175
That's the other recommendation.

00:56:16.275 --> 00:56:17.798
which-key mode, it's built in now.

00:56:17.818 --> 00:56:19.000
Just go use it.

00:56:20.650 --> 00:56:22.934
[Prot]: Yeah, which-key mode is very useful.

00:56:22.974 --> 00:56:26.159
If you are using the Embark package, it has a key

00:56:26.260 --> 00:56:30.226
that will take over C-h. So actually that works

00:56:30.287 --> 00:56:31.048
even with default.

00:56:31.068 --> 00:56:34.434
If you type an incomplete key sequence, C-h will

00:56:34.774 --> 00:56:37.960
produce a listing with all the keys that complete

00:56:38.020 --> 00:56:38.681
that sequence.

00:56:38.781 --> 00:56:40.664
So it will be a help buffer that will tell

00:56:40.704 --> 00:56:43.990
you, okay, C-x, C-h, for example, will list

00:56:44.150 --> 00:56:45.212
everything that follows C-x.

00:56:45.292 --> 00:56:48.708
And it will name the command and all that.

00:56:48.768 --> 00:56:51.213
So that's also something to consider.

00:56:51.233 --> 00:56:54.460
I think if Embark were to add the

00:56:54.500 --> 00:56:57.847
which-key functionality where it's like C-h on

00:56:57.887 --> 00:57:01.215
a timer, I think then Embark would be a straight

00:57:01.335 --> 00:57:02.858
upgrade over which-key.

00:57:03.209 --> 00:57:04.491
In that regard.

00:57:05.252 --> 00:57:06.914
So Omar, if you are listening...

00:57:07.094 --> 00:57:13.282
Asking for a friend.

00:57:19.370 --> 00:57:21.153
[Sacha]: @gcentauri says, "I recommend learning

00:57:21.193 --> 00:57:23.776
how to define a key map and put it under a leader key.

00:57:23.916 --> 00:57:26.860
I have M-m as my personal key map and then the

00:57:26.920 --> 00:57:29.824
things I find very useful I add to my key map."

00:57:29.804 --> 00:57:32.488
For this one, I've been experimenting with

00:57:32.568 --> 00:57:34.952
bind-key, which makes all of this stuff much

00:57:35.073 --> 00:57:37.697
easier in terms of defining prefix key

00:57:37.797 --> 00:57:40.001
and adding a docstring and all those other

00:57:40.081 --> 00:57:40.742
lovely things.

NOTE Tip: Figure out your ergonomics

00:57:41.503 --> 00:57:43.887
I like your other meta tip about

00:57:44.348 --> 00:57:46.912
experimenting with how your keyboard is set up.

00:57:46.932 --> 00:57:49.023
So for example, even on my laptop...

00:57:49.024 --> 00:57:50.137
I have a ThinkPad.

00:57:50.798 --> 00:57:53.362
So even on my laptop keyboard, there's no QMK,

00:57:53.422 --> 00:57:55.526
but I can use Kanata, which you've also

00:57:55.586 --> 00:57:56.908
recommended elsewhere.

00:57:56.888 --> 00:57:59.912
to try experimenting with one-shot modifiers and

00:57:59.972 --> 00:58:01.694
home row mods or other things like that that I

00:58:01.734 --> 00:58:02.074
want to,

00:58:02.735 --> 00:58:06.580
making it easier to press key

00:58:06.620 --> 00:58:09.303
bindings that have different modifiers.

00:58:09.763 --> 00:58:12.006
I don't want to have to press ctrl and

00:58:12.066 --> 00:58:16.011
shift and super all at the same time.

00:58:16.952 --> 00:58:20.176
If I set up one-shot modifiers, I can just

00:58:20.216 --> 00:58:23.520
tap tap tap and it becomes easier to press.

00:58:24.648 --> 00:58:27.732
[Prot]: Yes, exactly. That opens up

00:58:27.792 --> 00:58:31.617
a lot of possibilities in terms of mnemonics, but

00:58:31.677 --> 00:58:34.521
also in terms of prefix combinations and all that.

00:58:34.561 --> 00:58:36.867
You can go a very long way.

00:58:36.868 --> 00:58:39.147
[Sacha]: And I think

00:58:39.167 --> 00:58:41.410
there's a meta thing here

00:58:41.550 --> 00:58:45.475
also about getting a sense of

00:58:46.838 --> 00:58:49.285
what would make it easier for you to be

00:58:49.385 --> 00:58:51.712
able to continue enjoying this long term?

00:58:51.732 --> 00:58:54.460
Because RSI is not conducive to enjoying

00:58:54.601 --> 00:58:55.383
Emacs long term.

00:58:56.266 --> 00:58:58.131
[Prot]: No.

00:58:58.685 --> 00:59:01.748
For sure. Something that I think

00:59:01.849 --> 00:59:04.512
I learned the hard

00:59:04.552 --> 00:59:08.296
way through pain is that you want to consider

00:59:08.496 --> 00:59:12.561
your desk, how you sit at the desk - you

00:59:12.601 --> 00:59:14.483
want to consider everything, not just the keyboard.

00:59:14.983 --> 00:59:17.106
For example, I have

00:59:17.126 --> 00:59:21.171
adopted a standing desk since forever. I

00:59:21.231 --> 00:59:23.393
do that all the time. I never sit,

00:59:23.373 --> 00:59:25.636
because it works better for me. I have the

00:59:25.676 --> 00:59:27.819
keyboard set up the way that makes sense to me.

00:59:27.919 --> 00:59:30.743
I can write all day. It's

00:59:30.783 --> 00:59:32.966
what I do. I don't have any pain. Whereas

00:59:33.026 --> 00:59:36.871
before I would sit on an awkward chair, the

00:59:36.931 --> 00:59:40.035
desk was not optimized, the keyboard was

00:59:40.055 --> 00:59:42.999
definitely not something I had thought of, and I

00:59:43.079 --> 00:59:45.803
had pain. It was really difficult, and I

00:59:45.843 --> 00:59:47.525
reached the point where I couldn't write.

00:59:48.206 --> 00:59:49.988
I was like, okay, I have to quit.

00:59:50.643 --> 00:59:55.327
[Sacha]: If Emacs is something that pays off

00:59:55.387 --> 00:59:58.170
better in the long term, it's good to have a long

00:59:58.190 --> 00:59:58.470
term.

01:00:02.975 --> 01:00:03.495
[Prot]: Exactly.

01:00:05.337 --> 01:00:07.098
[Sacha]: Speaking of my very short term, in about

01:00:07.139 --> 01:00:10.362
one minute, I'm going to go off and help with the

01:00:10.382 --> 01:00:11.222
kiddos' lunch break.

01:00:11.823 --> 01:00:14.425
I very much appreciated this brain dump.

01:00:14.445 --> 01:00:15.066
This is great.

01:00:15.146 --> 01:00:18.049
I'm going to do all the usual transcription and

01:00:18.149 --> 01:00:19.350
things like that,

01:00:19.330 --> 01:00:21.133
start pulling out some of these ideas.

01:00:21.573 --> 01:00:23.516
Chat, if you found anything super interesting

01:00:23.536 --> 01:00:25.499
that you would like fleshed out into a blog post,

01:00:26.180 --> 01:00:26.601
say it so

01:00:29.084 --> 01:00:31.568
we know what to focus on for priorities,

01:00:31.588 --> 01:00:31.788
right?

01:00:32.469 --> 01:00:33.952
This was a lot of fun.

01:00:34.052 --> 01:00:37.457
Are there any key recommendations you

01:00:37.497 --> 01:00:40.962
want people to make sure they check out or is it

01:00:41.122 --> 01:00:42.604
just generally like, everyone...?

01:00:42.624 --> 01:00:44.247
[Prot]: No, I think what you have here is good

01:00:44.287 --> 01:00:47.211
because, of course, you can always say more.

01:00:47.191 --> 01:00:49.233
So I will conclude with what I started.

01:00:49.374 --> 01:00:52.057
Less is more, seriously.

01:00:52.077 --> 01:00:53.318
For life, not just for email.

01:00:54.039 --> 01:00:55.761
[Sacha]: Your brain is surprisingly small.

01:00:55.781 --> 01:00:59.085
If you break what you learn down into tiny steps,

01:00:59.125 --> 01:01:01.968
you have a higher chance of it actually sticking.

01:01:01.988 --> 01:01:04.131
Once you get something in, then it makes

01:01:04.812 --> 01:01:06.013
things a little bit easier.

01:01:06.093 --> 01:01:07.795
You have a little bit more space to learn the

01:01:07.875 --> 01:01:10.559
next thing, and so on and so forth.

01:01:10.579 --> 01:01:13.502
Otherwise, if you bite off too much, you get

01:01:13.562 --> 01:01:14.363
overwhelmed.

01:01:15.153 --> 01:01:16.235
[Prot]: Very nice, very nice.

01:01:16.315 --> 01:01:20.123
And that ties into the lunch break.

01:01:20.143 --> 01:01:20.664
Yes.

01:01:20.684 --> 01:01:21.065
[Sacha]: All right.

01:01:21.566 --> 01:01:22.428
Thank you so much.

01:01:22.829 --> 01:01:26.196
I will skedaddle and yeah, I will do all the

01:01:26.236 --> 01:01:26.998
things afterwards.

01:01:27.018 --> 01:01:29.743
Thanks everyone also for dropping by and hanging

01:01:29.884 --> 01:01:30.024
out.

01:01:30.244 --> 01:01:30.605
All right.

01:01:30.725 --> 01:01:31.307
See you around.

01:01:32.088 --> 01:01:32.469
[Prot]: Take care.

01:01:32.489 --> 01:01:32.870
Take care.

01:01:32.910 --> 01:01:33.210
Goodbye.

01:01:33.231 --> 01:01:33.972
Goodbye.
