WEBVTT


NOTE Opening

00:00:00.588 --> 00:00:12.608
[opening stuff]

00:00:14.070 --> 00:00:16.835
Emacs Chat 26 is Ross A. Baker.

00:00:17.616 --> 00:00:20.181
You can find him at rossabaker.com.

00:00:20.201 --> 00:00:22.364
Today, we've got a lot of interesting things

00:00:22.404 --> 00:00:24.748
to dig into, including his two-part Emacs

00:00:24.788 --> 00:00:25.870
configuration,

00:00:25.850 --> 00:00:29.017
plus of course, all the things that he does.

00:00:29.037 --> 00:00:31.964
The goal with Emacs Chat is to show some of

00:00:32.024 --> 00:00:33.568
the things that aren't obvious from the

00:00:33.628 --> 00:00:35.533
configuration, like how the different pieces

00:00:35.613 --> 00:00:38.199
actually work together or what the workflow feels like.

00:00:38.560 --> 00:00:40.885
But before we dive into that, Ross, can you tell

00:00:40.925 --> 00:00:42.549
us a little bit about your background?

00:00:42.569 --> 00:00:43.391
What's the context here?

00:00:43.411 --> 00:00:44.213
What do you like to do?

00:00:45.307 --> 00:00:45.788
[Ross]: Oh, sure.

NOTE What Ross does

00:00:46.369 --> 00:00:48.513
So for work, I'm a backend engineer.

00:00:48.814 --> 00:00:51.679
I'm somewhat well known in the Scala community.

00:00:51.699 --> 00:00:54.504
I've done that for a long time on an open-source basis.

00:00:54.524 --> 00:00:56.709
I've taken an interest in Rust here recently.

00:00:56.769 --> 00:00:59.915
Those are the two primary languages I work in.

00:00:59.935 --> 00:01:02.940
I work for a financial company.

00:01:03.001 --> 00:01:05.866
We maintain the apps for small- and regional-sized

00:01:05.906 --> 00:01:07.990
banks in the United States.

00:01:07.970 --> 00:01:09.391
Fairly fun work there.

00:01:09.412 --> 00:01:11.994
It's kept me quite busy here lately.

00:01:12.234 --> 00:01:14.217
For other things I like to do for fun, like to go

00:01:14.277 --> 00:01:16.118
for a jog, like to push away from the computer

00:01:16.179 --> 00:01:16.699
now and then.

00:01:16.839 --> 00:01:19.002
So I go jogging every day, try to run about nine

00:01:19.042 --> 00:01:19.882
miles every day.

00:01:22.745 --> 00:01:27.911
My two big de-stressors are the running

00:01:28.091 --> 00:01:30.373
and the fiddling with my Emacs configuration,

00:01:30.574 --> 00:01:32.115
kind of opposite sides of the coin.

00:01:32.135 --> 00:01:34.838
But I need them both to stay happy, I think.

00:01:35.847 --> 00:01:37.029
That makes sense.

00:01:37.649 --> 00:01:39.171
Also a soccer coach.

00:01:39.452 --> 00:01:41.274
My kid is in high school and coached his

00:01:41.314 --> 00:01:42.336
recreational team.

00:01:42.676 --> 00:01:44.118
They have a lot of fun with that as well.

00:01:45.139 --> 00:01:45.840
[Sacha]: Yeah.

00:01:45.900 --> 00:01:47.603
One of your blog posts mentions that you've been

00:01:47.623 --> 00:01:50.967
publishing your youth soccer webpage in ox-hugo.

00:01:52.029 --> 00:01:52.469
[Ross]: That's right.

00:01:53.310 --> 00:01:54.472
[Sacha]: Emacs can be used for everything.

00:01:55.413 --> 00:01:56.054
[Ross]: It can, yeah.

00:01:56.254 --> 00:01:57.636
That's right.

00:01:57.903 --> 00:02:01.708
[Sacha]: We're also very curious about how

00:02:01.768 --> 00:02:04.491
people get into Emacs and what makes them stick

00:02:04.531 --> 00:02:05.192
with Emacs.

NOTE How Ross got into Emacs, used other editors, and then came back to Emacs

00:02:06.593 --> 00:02:10.518
In your story for the Emacs Carnival in Take 2,

00:02:10.878 --> 00:02:12.681
you shared how you got into Emacs.

00:02:12.741 --> 00:02:16.425
Well, you were introduced to Emacs in 1997, but

00:02:16.465 --> 00:02:17.366
you actually left.

00:02:17.567 --> 00:02:20.350
You used other editors for a while because of work,

00:02:20.718 --> 00:02:22.440
and then you came back to Emacs.

00:02:22.460 --> 00:02:25.244
Was it primarily for Haskell and Clojure, or were

00:02:25.284 --> 00:02:30.411
there other reasons that got you interested in it?

00:02:30.431 --> 00:02:33.039
[Ross]: Yeah, when I was at the Haskell shop,

00:02:33.040 --> 00:02:35.477
it was something that a lot... When

00:02:35.497 --> 00:02:37.360
you get out into the workplace, there's very few

00:02:37.500 --> 00:02:39.763
Emacs users, relatively speaking, in most

00:02:39.783 --> 00:02:40.344
workplaces.

00:02:40.364 --> 00:02:41.746
But when you're in a Haskell shop, that's what

00:02:41.806 --> 00:02:42.947
almost everybody uses.

00:02:42.967 --> 00:02:45.531
So being surrounded by that, that was a good

00:02:45.851 --> 00:02:47.113
reason to get back into it.

00:02:47.173 --> 00:02:48.694
I'd been dabbling in it a little bit

00:02:48.695 --> 00:02:50.337
before that, even.

00:02:50.317 --> 00:02:53.199
I had a really good time with it originally.

00:02:53.200 --> 00:02:55.563
I got into it like so many people did back then.

00:02:55.583 --> 00:02:57.506
I got into it in college, showed up, and that's

00:02:57.546 --> 00:02:58.867
what the professor was using.

00:02:58.887 --> 00:03:00.509
The first language that we learned there was

00:03:00.569 --> 00:03:02.872
Scheme, which is a Lisp dialect, so it's a

00:03:02.932 --> 00:03:03.933
natural fit there.

00:03:04.734 --> 00:03:07.938
Back then Emacs and Vim were the two dominant

00:03:08.018 --> 00:03:09.881
editors at that point, so it was pretty much one

00:03:09.921 --> 00:03:10.421
or the other.

00:03:10.441 --> 00:03:12.083
If you were learning a Lisp dialect in

00:03:12.123 --> 00:03:13.905
school, the professor was going to guide you

00:03:13.945 --> 00:03:15.227
toward Emacs.

00:03:15.207 --> 00:03:16.828
I got that initial shove

00:03:16.829 --> 00:03:18.171
and fell in love with it there.

00:03:18.351 --> 00:03:20.134
Then I got out into the workplace, and in the

00:03:20.154 --> 00:03:22.817
workplace back then, it was very rigid.

00:03:22.837 --> 00:03:24.960
You would have to use the commercial editor that

00:03:25.000 --> 00:03:27.363
was integrated with all the IBM software,

00:03:27.364 --> 00:03:30.086
so I had to use these specific things

00:03:30.087 --> 00:03:31.870
and I couldn't use Emacs anymore.

00:03:33.011 --> 00:03:35.875
I did dabble in Vim a little bit as well and I

00:03:35.935 --> 00:03:37.958
liked the efficiency of editing

00:03:37.938 --> 00:03:40.081
that came from both Emacs and Vim.

00:03:40.221 --> 00:03:42.204
Vim was easier to emulate than these other

00:03:42.265 --> 00:03:43.426
editors that I had to use.

00:03:43.446 --> 00:03:46.771
That had me on a Vim path for a little while.

00:03:46.791 --> 00:03:48.895
But then scripting it just wasn't as satisfying

00:03:48.955 --> 00:03:49.896
as Emacs.

00:03:51.198 --> 00:03:52.620
It was always really calling to me.

00:03:52.680 --> 00:03:55.445
I felt like I was in exile while I was outside of

00:03:55.525 --> 00:03:55.965
Emacs.

00:03:55.985 --> 00:03:57.668
Then, when I had a chance to start picking my

00:03:57.728 --> 00:03:59.971
own editor and customizing things again and

00:04:00.072 --> 00:04:01.794
getting up to speed with other people who were

00:04:01.874 --> 00:04:04.017
using Emacs, it was just natural to come home,

00:04:04.078 --> 00:04:05.700
and here I am again.

00:04:06.440 --> 00:04:07.081
[Sacha]: Nice.

00:04:08.623 --> 00:04:11.687
Many people haven't had the experience of working

00:04:11.747 --> 00:04:14.291
with other Emacs users in the same company.

00:04:14.391 --> 00:04:15.613
So what is it like?

00:04:15.813 --> 00:04:20.039
Were you swapping lots of config around, pair

00:04:20.079 --> 00:04:21.380
programming, that sort of thing?

00:04:22.563 --> 00:04:24.264
[Ross]: Yeah, pair programming,

00:04:24.265 --> 00:04:25.567
sharing config.

00:04:25.787 --> 00:04:28.511
I am fortunate at my current workplace, even

00:04:28.571 --> 00:04:30.334
though it's a much smaller percentage than it's

00:04:30.374 --> 00:04:31.635
been in some other workplaces.

00:04:31.655 --> 00:04:33.678
It's also a large company, and we have an active

00:04:33.758 --> 00:04:36.362
Emacs channel there within the company Slack.

00:04:36.663 --> 00:04:38.725
A lot of people are interested in it there, so

00:04:38.785 --> 00:04:41.429
I've got my little inside community in addition

00:04:41.469 --> 00:04:43.271
to the outside Emacs community as well.

00:04:44.572 --> 00:04:46.555
Fortunately, I still get that even to this day,

00:04:46.735 --> 00:04:47.856
so that's pretty fun.

00:04:48.757 --> 00:04:49.677
[Sacha]: You're the second person has described

00:04:49.678 --> 00:04:53.181
the wonders of having a company internet channel

00:04:53.182 --> 00:04:57.928
on Slack, just about Emacs. Yes. Very awesome.

NOTE Config focusing on built-ins

00:04:58.280 --> 00:05:04.213
I'm wondering, with your current company, is that

00:05:04.233 --> 00:05:08.862
the reason why you have so many "gotta run with

00:05:10.125 --> 00:05:12.911
just the built-ins", "gotta run even if you've got

00:05:13.011 --> 00:05:15.557
Emacs 28"... Is that the reason for those kinds of

00:05:16.438 --> 00:05:18.583
considerations in your base config?

00:05:19.559 --> 00:05:21.382
[Ross]: That was kind of a premature

00:05:21.522 --> 00:05:23.966
optimization that worked out very well for me.

00:05:23.986 --> 00:05:27.613
I used to run a very extensive config.

00:05:27.633 --> 00:05:29.616
I'd look at all the classic configs that would go

00:05:29.676 --> 00:05:32.320
out there and install all the packages from MELPA.

00:05:33.042 --> 00:05:35.165
I'd try them all out. I'd just accumulate

00:05:35.205 --> 00:05:36.768
these things. I went through some Emacs

00:05:36.808 --> 00:05:37.990
bankruptcies.

00:05:37.970 --> 00:05:39.693
Then people in the community started talking

00:05:39.753 --> 00:05:43.138
about, okay, Emacs 29, it added `use-package` out

00:05:43.178 --> 00:05:43.658
of the box.

00:05:43.758 --> 00:05:47.544
It added... I can't remember when project.el came

00:05:47.604 --> 00:05:50.228
along, but it added these things that started...

00:05:50.308 --> 00:05:52.852
You used to have to get them from outside, or you

00:05:52.872 --> 00:05:55.456
used to have these other libraries, and Emacs got

00:05:55.496 --> 00:05:57.058
a lot better out of the box.

00:05:57.138 --> 00:05:58.560
I started to say, okay,

00:05:58.540 --> 00:06:00.043
I'm going to do one more bankruptcy.

00:06:00.083 --> 00:06:01.967
I'm going to see what I can do with built-ins.

00:06:02.027 --> 00:06:04.832
I started experimenting down those lines, even

00:06:04.853 --> 00:06:07.137
though I was always using that extended config.

00:06:07.157 --> 00:06:09.241
I was challenging myself. How much can I get from

00:06:09.301 --> 00:06:12.147
a built-in config and then just have a little bit

00:06:12.207 --> 00:06:14.872
of extra for those gaps? Because there are gaps.

00:06:15.173 --> 00:06:17.918
I do love Emacs built-ins, but I am more

00:06:17.979 --> 00:06:19.722
comfortable with the regular one.

00:06:19.853 --> 00:06:21.976
But I challenge myself that way.

00:06:22.256 --> 00:06:24.199
This month, I got put on a project where

00:06:24.239 --> 00:06:26.022
I have to work in a sandbox environment.

00:06:26.042 --> 00:06:28.646
So it's not regular operating procedure, but I

00:06:28.686 --> 00:06:30.709
have to do all my work in the sandbox environment.

00:06:30.729 --> 00:06:32.531
There's no network egress.

00:06:32.551 --> 00:06:36.116
I have to say, okay, if I want packages in here,

00:06:36.217 --> 00:06:38.179
I have to talk to the admins of that system and

00:06:38.239 --> 00:06:40.242
say, I want these packages.

00:06:40.262 --> 00:06:41.644
I lobbied for Emacs on it.

00:06:41.725 --> 00:06:43.247
They thought, well, that's kind of weird, but

00:06:43.307 --> 00:06:45.029
it's just one more line of apt-get in the

00:06:45.049 --> 00:06:45.931
Docker container,

00:06:45.971 --> 00:06:47.633
so they're fine with it.

00:06:47.613 --> 00:06:51.133
It was an old version of Debian Bookworm.

00:06:51.134 --> 00:06:53.267
I was running Emacs 28. I'm like,

00:06:53.268 --> 00:06:56.167
okay, well, I've got this built-in configuration.

00:06:56.168 --> 00:06:57.567
This is its moment to shine.

00:06:57.568 --> 00:06:59.967
I tried to run it on there.

00:06:59.968 --> 00:07:03.300
I was able to copy the file up there. I tried

00:07:03.301 --> 00:07:05.200
running it on there, and I run into things

00:07:05.201 --> 00:07:07.309
I've been using `setopt`. I've been using

00:07:07.289 --> 00:07:11.876
one of the XDG packages for setting your X desktop

00:07:11.896 --> 00:07:12.817
group directories,

00:07:12.837 --> 00:07:15.922
so to have a standard place to put your config

00:07:15.982 --> 00:07:17.743
files versus your cache files

00:07:17.744 --> 00:07:19.527
versus your state files.

00:07:19.547 --> 00:07:21.910
In Emacs 28, they had most of those variables,

00:07:21.950 --> 00:07:24.134
but one of those variables didn't exist yet.

00:07:24.174 --> 00:07:26.137
So I felt a few paper cuts that way.

00:07:26.777 --> 00:07:29.121
Up near the top of my config, I've got a

00:07:29.161 --> 00:07:30.563
compatibility layer.

00:07:31.015 --> 00:07:32.978
The compatibility layer, there's a nice

00:07:33.018 --> 00:07:34.339
compat package out there.

00:07:34.379 --> 00:07:34.960
I can't remember.

00:07:35.281 --> 00:07:37.143
I think Omar, who you interviewed recently, I

00:07:37.263 --> 00:07:39.246
believe he's one of the people behind it.

00:07:39.266 --> 00:07:41.669
And tarsius, I think he's involved in that too.

00:07:41.809 --> 00:07:43.131
I could be misquoting on that.

00:07:43.772 --> 00:07:45.294
Maybe I'm misattributing that.

00:07:45.414 --> 00:07:47.697
But anyway, there's this wonderful compat package

00:07:47.777 --> 00:07:48.138
out there.

00:07:48.598 --> 00:07:50.180
If you're a package author and you want to have

00:07:50.220 --> 00:07:52.243
your Emacs package running on older versions,

00:07:52.824 --> 00:07:53.665
it's great for that.

00:07:53.645 --> 00:07:55.869
But the whole point of this is I don't have any

00:07:55.929 --> 00:07:56.951
external packages.

00:07:56.971 --> 00:07:58.954
So where I need this compatibility layer the

00:07:58.994 --> 00:08:01.799
most, I can't use this lovely compat package out

00:08:01.839 --> 00:08:02.360
of the box.

00:08:02.840 --> 00:08:05.705
So I had to reinvent a few shims.

00:08:05.725 --> 00:08:07.068
I think I could bring that up.

00:08:07.088 --> 00:08:08.250
Am I sharing my screen?

00:08:08.390 --> 00:08:09.592
[Sacha]: Yes, you're sharing your screen.

00:08:10.473 --> 00:08:12.677
That was one of the things that immediately

00:08:12.717 --> 00:08:14.099
struck me about your config.

00:08:14.139 --> 00:08:16.303
You're so hardcore about not using

00:08:16.323 --> 00:08:18.066
external packages that even your

00:08:18.333 --> 00:08:19.935
adapting to older versions,

00:08:19.955 --> 00:08:23.299
you're re-implementing things yourself in order

00:08:23.339 --> 00:08:26.644
to be able to stick with your constraints.

00:08:26.664 --> 00:08:28.326
I think that's hilarious, by the way.

00:08:28.366 --> 00:08:30.268
You started it off with it as a personal

00:08:30.328 --> 00:08:32.211
challenge because, of course, people are allowed

00:08:32.251 --> 00:08:34.933
to set arbitrary challenges for themselves,

00:08:34.995 --> 00:08:37.798
and then it turned out to be surprisingly useful

00:08:37.857 --> 00:08:40.542
for you in this limited environment.

00:08:40.802 --> 00:08:42.164
[Ross]: Yeah, that's one that really saved

00:08:42.203 --> 00:08:42.683
my bacon.

00:08:43.005 --> 00:08:44.647
[Sacha]: Yeah, this is great.

00:08:44.667 --> 00:08:46.990
So even things like `setopt`... Then you have

00:08:47.155 --> 00:08:52.333
`keymap-set`. You've got some replacements

00:08:52.334 --> 00:08:55.633
for these modern niceties to make it still work

00:08:55.634 --> 00:08:58.233
in Emacs 28.

00:08:58.234 --> 00:09:01.500
[Ross]: Yeah, I leaned into the new keybindings.

00:09:01.501 --> 00:09:03.655
There's `keymap-set`, `keymap-global-set`,

00:09:03.675 --> 00:09:07.467
`keymap-global-unset`. Those are roughly the same as

00:09:07.468 --> 00:09:09.367
what you had in older Emacs versions

00:09:09.368 --> 00:09:11.667
but you don't need to pass the keyboard macro

00:09:11.668 --> 00:09:14.648
around all the things, so it's a little bit more concise.

00:09:14.881 --> 00:09:16.645
There were a few more advantages to it and I'd

00:09:16.685 --> 00:09:19.029
already been on Emacs 29 or Emacs 30

00:09:19.030 --> 00:09:19.993
everywhere else.

00:09:20.013 --> 00:09:22.137
I'd already leaned into those, and then I got

00:09:22.198 --> 00:09:23.039
into this environment.

00:09:24.342 --> 00:09:26.307
But as you can see, they're fairly easy.

00:09:26.367 --> 00:09:28.692
This is not a 100% full fidelity.

00:09:28.712 --> 00:09:31.558
There's a few nuances that get missed in doing this,

00:09:31.559 --> 00:09:33.463
but for the most part, it works pretty well.

00:09:35.536 --> 00:09:37.199
I'm not aiming for perfect here.

00:09:37.299 --> 00:09:40.003
I'm aiming for "this works well enough at Emacs 28

00:09:40.264 --> 00:09:42.066
for the life of this project, which should last

00:09:42.127 --> 00:09:42.687
about a month."

00:09:42.788 --> 00:09:45.592
And otherwise, I've got the nice full glory Emacs

00:09:45.652 --> 00:09:46.714
for my daily driver.

00:09:47.535 --> 00:09:50.239
It's straddling that divide fairly well.

00:09:50.259 --> 00:09:54.566
[Sacha]: I just looked up when Emacs 28 was released.

00:09:54.606 --> 00:09:57.291
This is 2022, so four years ago.

00:09:57.912 --> 00:09:58.172
[Ross]: Yes.

00:09:58.653 --> 00:10:00.556
[Sacha]: A lot of Emacs has changed since then.

00:10:00.736 --> 00:10:02.539
But of course, Emacs being Emacs,

00:10:03.363 --> 00:10:05.747
there's a lot of effort put into making sure the

00:10:05.847 --> 00:10:09.232
old stuff keeps working, which is handy for these cases.

00:10:09.993 --> 00:10:10.574
That's great.

NOTE
simple-orderless
#+SCREENSHOT: emacs-chat-26-ross-a-baker-00-11-23-700.jpg
#+SCREENSHOT_TIME: 00:11:23.700

00:10:12.276 --> 00:10:14.479
So you have a lot of these shims,

00:10:14.480 --> 00:10:16.483
and one of the things that you've ended up

00:10:16.843 --> 00:10:21.530
re-implementing along these ways is a version of

00:10:21.650 --> 00:10:23.894
orderless that works without having to take the

00:10:23.954 --> 00:10:25.356
entire orderless package in there.

00:10:25.676 --> 00:10:27.639
Can you tell us a little bit more about what you

00:10:27.679 --> 00:10:28.881
like about your setup?

00:10:30.447 --> 00:10:33.912
[Ross]: I wasn't happy with any of the

00:10:34.513 --> 00:10:36.496
built-in completion styles.

00:10:36.516 --> 00:10:39.220
Well, some of them are okay, but the overall...

00:10:39.221 --> 00:10:41.945
I had used orderless in my more extensive config.

00:10:42.466 --> 00:10:44.889
Orderless, for people who don't know, is a way

00:10:44.949 --> 00:10:45.831
of completing things.

00:10:45.931 --> 00:10:47.153
Let's see if I can show it off.

00:10:47.293 --> 00:10:55.286
So I can do... If I do "file" and "find"...

00:10:55.306 --> 00:10:57.208
Well, I thought it would work.

00:10:57.829 --> 00:10:58.851
[Sacha]: Do you need a space?

00:11:00.772 --> 00:11:01.884
[Ross]: Yeah, I don't know why the space

00:11:01.925 --> 00:11:02.734
wasn't completing.

00:11:02.754 --> 00:11:04.453
So I can do "file".

00:11:04.720 --> 00:11:05.922
"find file".

00:11:06.002 --> 00:11:06.743
I could do the space.

00:11:06.823 --> 00:11:09.026
I could do it in any order as well.

00:11:09.046 --> 00:11:11.148
Or I saw there was an "ido" in there.

00:11:11.228 --> 00:11:13.151
If I do it in reverse order, that's the idea of

00:11:13.251 --> 00:11:15.634
orderless is if I'm using the space, I got thrown

00:11:15.714 --> 00:11:15.974
off there.

00:11:16.015 --> 00:11:18.117
It was auto-completing a hyphen on me I didn't

00:11:18.157 --> 00:11:18.518
expect.

00:11:19.139 --> 00:11:21.081
Anyway, if I remember some tokens and things,

00:11:21.101 --> 00:11:23.664
let's say I'm looking for `ido-find-file`, but I

00:11:23.704 --> 00:11:25.266
type "find" first and then I do...

00:11:25.387 --> 00:11:29.211
What orderless does is it takes the input and it

00:11:29.252 --> 00:11:30.272
splits it by space

00:11:30.273 --> 00:11:31.855
and it will find them in any order.

00:11:32.716 --> 00:11:35.300
It's a nicer completion style than I think any of

00:11:35.340 --> 00:11:36.743
the ones that come out of the box are.

00:11:36.903 --> 00:11:38.325
I got used to it.

00:11:38.345 --> 00:11:40.167
But if I'm in this lean config,

00:11:40.168 --> 00:11:41.210
orderless is something...

00:11:41.230 --> 00:11:42.252
It is not a built-in.

00:11:42.292 --> 00:11:44.095
That's something that I was leaving behind.

00:11:44.115 --> 00:11:46.879
That was one that was really starting to itch.

00:11:46.899 --> 00:11:49.363
Then I found this blog post by James Dyer

00:11:49.404 --> 00:11:51.968
where he'd implemented a very slimmed-down

00:11:52.008 --> 00:11:53.931
version of orderless.

00:11:53.911 --> 00:11:55.912
It wasn't the full features that you get,

00:11:55.913 --> 00:11:57.614
but it was something that was good enough

00:11:57.615 --> 00:12:00.819
that captured the basic principles of it.

00:12:00.839 --> 00:12:01.560
I took that.

00:12:01.620 --> 00:12:02.841
I found a few bugs in it,

00:12:02.842 --> 00:12:04.043
and I found a few more things.

00:12:04.163 --> 00:12:06.807
It was a very, very simple version of orderless,

00:12:06.827 --> 00:12:08.649
and I wanted a couple more bells and whistles.

00:12:08.669 --> 00:12:10.851
The completions weren't quite right to my tastes.

00:12:11.372 --> 00:12:12.513
I took that blog post.

00:12:12.553 --> 00:12:13.655
I ended up with a middle ground.

00:12:13.695 --> 00:12:15.836
It's not as good as the full orderless,

00:12:15.837 --> 00:12:17.438
and it's a little bit more extensive

00:12:17.439 --> 00:12:19.682
than the blog post that I found.

00:12:19.662 --> 00:12:21.324
But I'm able to run that,

00:12:21.325 --> 00:12:22.867
and I don't really miss

00:12:22.868 --> 00:12:24.851
the full features of orderless that much.

00:12:25.252 --> 00:12:27.316
There are all sorts of cool things that it does

00:12:27.376 --> 00:12:30.301
where you can say, okay, these are regexp tokens.

00:12:30.361 --> 00:12:31.703
These are literal tokens.

00:12:31.804 --> 00:12:34.028
These are NOT filters.

00:12:34.048 --> 00:12:36.151
You could do all sorts of combinatorial logic

00:12:36.211 --> 00:12:37.754
with it with various syntax.

00:12:37.774 --> 00:12:39.898
You can customize the syntax for it.

00:12:40.334 --> 00:12:42.858
It's all great, but I wasn't using those extended

00:12:42.898 --> 00:12:45.222
features of that package that much. I am happy

00:12:45.262 --> 00:12:47.205
with this lighter-weight version. That way

00:12:47.245 --> 00:12:49.789
I'm able to use it even when I'm off here in the

00:12:49.850 --> 00:12:50.931
security sandbox.

00:12:50.971 --> 00:12:52.233
I'm able to do it there too.

00:12:53.095 --> 00:12:55.177
It exposes the underlying tension

00:12:55.178 --> 00:12:56.841
of this setup.

00:12:57.023 --> 00:12:59.366
I would recommend 100% use orderless.

00:12:59.426 --> 00:13:00.367
It's better maintained.

00:13:00.387 --> 00:13:01.949
The maintainer is a lovely person.

00:13:02.409 --> 00:13:03.511
It's more full-featured.

00:13:03.531 --> 00:13:04.712
You can customize it.

00:13:04.732 --> 00:13:06.593
I ran into a little bit of a hiccup here

00:13:06.594 --> 00:13:07.836
and it's my own config.

00:13:08.697 --> 00:13:11.079
This is something, it's going to be more

00:13:11.119 --> 00:13:12.481
professionally maintained if you're using

00:13:12.561 --> 00:13:12.962
orderless.

00:13:12.982 --> 00:13:14.322
So if you're not adapting

00:13:14.323 --> 00:13:16.885
to my built-ins only method,

00:13:16.886 --> 00:13:20.230
I would 100% recommend using orderless instead.

00:13:20.210 --> 00:13:21.972
But because I have this constraint,

00:13:21.973 --> 00:13:22.894
I'm building this up.

00:13:23.395 --> 00:13:24.657
What I built up is kind of nice.

00:13:24.697 --> 00:13:26.018
It's one of the more interesting parts

00:13:26.019 --> 00:13:28.143
of my package, or of my config.

00:13:28.303 --> 00:13:30.125
I could spin it off as its own package,

00:13:30.126 --> 00:13:32.008
but if I spun it off as its own package,

00:13:32.009 --> 00:13:34.312
it's just a strictly worse version of orderless

00:13:34.313 --> 00:13:37.338
at that point, so what's the point?

00:13:37.358 --> 00:13:38.820
That's one of the tensions that you have in these

00:13:38.860 --> 00:13:41.144
built-ins, is anytime that you build something

00:13:41.204 --> 00:13:43.227
that is really interesting, you want to spin it

00:13:43.328 --> 00:13:45.030
off and share it, but at that point, you've

00:13:45.070 --> 00:13:47.314
defeated the purpose of being built-ins only.

00:13:49.117 --> 00:13:54.905
[Sacha]: I think the idea then of looking at

00:13:54.925 --> 00:13:57.008
the packages that you really like and if you find

00:13:57.048 --> 00:13:58.570
that you're only using a subset of their

00:13:58.590 --> 00:14:01.534
functionality, being able to strip it down or

00:14:01.634 --> 00:14:03.276
take advantage of somebody else's work and

00:14:03.316 --> 00:14:05.740
stripping it down to the subset that you use

00:14:06.240 --> 00:14:08.403
makes it a lot easier for you to put it all

00:14:08.423 --> 00:14:11.187
together in your batteries included, built-in

00:14:11.908 --> 00:14:13.050
only configuration.

00:14:14.131 --> 00:14:14.652
[Ross]: Right.

00:14:14.800 --> 00:14:15.824
[Sacha]: It's not super long.

00:14:16.105 --> 00:14:18.353
It can be understood if you go through the

00:14:18.393 --> 00:14:18.774
function.

00:14:19.236 --> 00:14:20.460
So that's great.

00:14:21.825 --> 00:14:23.813
Are there other things like that that you find

00:14:23.853 --> 00:14:27.004
yourself wanting to extract from other packages?

NOTE Size indicator

00:14:29.245 --> 00:14:30.967
[Ross]: I did this really weird little

00:14:31.028 --> 00:14:33.171
thing called size indicator mode.

00:14:33.391 --> 00:14:34.573
I'd already spun that off.

00:14:34.673 --> 00:14:36.375
I don't know if it was worthwhile or not.

00:14:37.076 --> 00:14:40.021
One thing is all of your list commands, they run

00:14:40.121 --> 00:14:43.025
things in binary bytes.

00:14:43.185 --> 00:14:45.569
When we say a kilobyte, what does a kilobyte mean?

00:14:45.589 --> 00:14:49.775
Does that mean 1,000 bytes or 1,024 bytes?

00:14:49.895 --> 00:14:51.577
Most of the commands that you run, they're going

00:14:51.617 --> 00:14:55.523
to be in these binary units.

00:14:56.752 --> 00:14:59.459
What you get out of the box in Emacs is

00:14:59.460 --> 00:15:03.067
the decimal unit. Their definition is 1000 instead

00:15:03.068 --> 00:15:06.700
of 1024. I thought, well, that's kind of weird.

00:15:06.701 --> 00:15:09.667
I built this size-indicator-mode where it goes

00:15:09.668 --> 00:15:12.300
and it translates things so it's unified across

00:15:12.301 --> 00:15:15.133
the way the coreutils work. It's the 1024 base

00:15:15.134 --> 00:15:16.400
instead of the 1000 base.

00:15:16.401 --> 00:15:18.933
Trivial little package, but it was a lot of fun

00:15:18.934 --> 00:15:20.767
I threw it out there. It's up on my Codeberg

00:15:20.768 --> 00:15:22.422
if anybody wants to pull that in.

00:15:23.718 --> 00:15:25.861
[Sacha]: Yeah, so it just reduces the

00:15:25.921 --> 00:15:28.666
friction of having to think, okay, is this in

00:15:28.746 --> 00:15:30.448
this unit or is that unit?

00:15:30.468 --> 00:15:32.411
It'll always be in the units that you like to use

00:15:32.451 --> 00:15:34.595
when you're talking about files.

00:15:34.615 --> 00:15:35.516
[Ross]: Exactly, yeah.

00:15:35.556 --> 00:15:37.179
It keeps things consistent that way.

00:15:37.199 --> 00:15:38.761
That's a package that I spun off.

00:15:38.821 --> 00:15:39.822
Is that something that...

00:15:39.823 --> 00:15:41.505
It's a very lightweight configuration.

00:15:41.525 --> 00:15:42.846
It probably could have stayed here

00:15:42.847 --> 00:15:43.669
in my built-ins.

00:15:44.129 --> 00:15:45.751
I doubt anybody else has that itch,

00:15:45.752 --> 00:15:46.512
but I shared it out there

00:15:46.513 --> 00:15:47.975
and a lot of people thought, ooh, neat.

00:15:47.995 --> 00:15:49.598
I think a few people did install it.

00:15:49.618 --> 00:15:51.801
I'm glad I spun that one off, I suppose.

00:15:52.253 --> 00:15:53.756
There's always that fuzzy line.

00:15:53.797 --> 00:15:55.460
Where does it grow into something that you think

00:15:55.521 --> 00:15:57.686
other people are going to be interested in, versus

00:15:57.726 --> 00:15:59.169
what are the ones that you should just keep

00:15:59.289 --> 00:16:01.414
in-house and they can always copy it out of your

00:16:01.434 --> 00:16:02.577
config if they're interested?

00:16:03.419 --> 00:16:05.203
It's a hard line to walk in this style.

00:16:05.223 --> 00:16:07.749
I haven't exactly found the balance yet, I don't

00:16:07.789 --> 00:16:08.170
think.

00:16:08.892 --> 00:16:10.614
[Sacha]: A lot of your config isn't so much

00:16:12.256 --> 00:16:14.517
new functionality as it is

00:16:14.518 --> 00:16:15.919
just filing off the corners

00:16:15.920 --> 00:16:18.603
or making something a little bit nicer to use.

00:16:19.624 --> 00:16:21.326
For example, when I was going through your

00:16:21.987 --> 00:16:24.329
config, both the base config as well as the

00:16:24.369 --> 00:16:26.131
extended one where you have more packages and

00:16:26.151 --> 00:16:29.275
things set up, I was like, oh yeah, okay.

00:16:29.836 --> 00:16:32.639
You fiddle with your visual-bell, but you also,

00:16:33.299 --> 00:16:34.540
in your extended config,

00:16:34.541 --> 00:16:36.163
set it to mode-line-bell instead.

00:16:36.323 --> 00:16:38.375
That sounds interesting.

00:16:39.357 --> 00:16:39.637
[Ross]: Right.

NOTE Graceful degradation

00:16:40.719 --> 00:16:44.344
I go for graceful degradation. When I was doing

00:16:44.424 --> 00:16:47.128
web pages as far back as the 90s,

00:16:47.168 --> 00:16:48.408
when I was first into Emacs,

00:16:48.409 --> 00:16:50.191
everything was about graceful degradation

00:16:50.192 --> 00:16:52.515
as you had these new browser features.

00:16:52.535 --> 00:16:54.758
You're trying to use these new shiny things.

00:16:54.959 --> 00:16:55.459
I'm old enough.

00:16:55.499 --> 00:16:57.462
I've been doing web pages since before there were

00:16:57.502 --> 00:16:58.744
cascading style sheets.

00:16:58.764 --> 00:17:01.167
But anyway, as we were starting to do CSS and as

00:17:01.207 --> 00:17:02.810
we were starting to do JavaScript, it was all

00:17:02.850 --> 00:17:04.531
about progressive enhancement:

00:17:04.512 --> 00:17:06.616
do the shiny things for the browsers that can

00:17:06.675 --> 00:17:09.320
support it, but also have this nice baseline of

00:17:09.361 --> 00:17:11.965
functionality for those that can't. I've tried

00:17:11.986 --> 00:17:15.292
to do that with this base level config.

00:17:15.473 --> 00:17:17.958
I've got the visual-bell that's built into Emacs

00:17:18.018 --> 00:17:19.681
and it flashes the screen. It puts up this

00:17:19.800 --> 00:17:21.864
annoying triangle sign.

00:17:21.865 --> 00:17:23.568
I don't like that that much.

00:17:23.569 --> 00:17:26.875
This one, if I can make the bell ring...

00:17:27.412 --> 00:17:28.574
Oh, this would make the bell ring.

00:17:29.496 --> 00:17:30.137
Why is it not?

00:17:30.498 --> 00:17:32.282
[Sacha]: I guess `C-g` doesn't just

00:17:32.322 --> 00:17:33.384
automatically make it...

00:17:33.745 --> 00:17:36.150
Oh, `C-g` works for me, so I don't know.

00:17:36.230 --> 00:17:38.234
[Ross]: It usually works for me, too.

00:17:38.314 --> 00:17:41.079
I don't know why it's not triggering a bell here.

00:17:43.284 --> 00:17:43.805
[Sacha]: That's OK.

00:17:44.807 --> 00:17:45.669
[Ross]: Curse of the demo.

00:17:46.130 --> 00:17:46.350
[Sacha]: Yeah, yeah.

00:17:46.370 --> 00:17:47.833
Anyone interested can go look it up.

NOTE
emacs-lock-mode
#+SCREENSHOT: emacs-chat-26-ross-a-baker-00-19-01-733.jpg
#+SCREENSHOT_TIME: 00:19:01.733

00:17:48.860 --> 00:17:51.006
Then you have a couple of other things

00:17:51.067 --> 00:17:54.256
around, for example, making it easier to not kill

00:17:54.316 --> 00:17:57.565
a buffer. I hadn't known about

00:17:57.566 --> 00:17:58.870
`emacs-lock-mode` either.

00:17:59.070 --> 00:18:00.996
[Ross]: Oh yes, Emacs lock.

00:18:05.785 --> 00:18:08.532
Yeah, so there's this `emacs-lock-mode`

00:18:08.533 --> 00:18:09.557
and it is not the same.

00:18:09.657 --> 00:18:12.084
It's easy to confuse this with the lock files.

00:18:12.105 --> 00:18:15.395
You know those files that you get the hash signs,

00:18:15.415 --> 00:18:19.086
like you get ".#name-of-the-file#".

00:18:19.353 --> 00:18:21.816
That's something from when Emacs was used more on

00:18:21.896 --> 00:18:23.218
multi-user environments.

00:18:23.258 --> 00:18:26.202
Whenever you had a modified file, it would create

00:18:26.242 --> 00:18:28.425
these lock files, and it would prevent two users

00:18:28.465 --> 00:18:30.608
who were editing the same file on their own Emacs

00:18:31.128 --> 00:18:32.350
from stepping over each other.

00:18:32.911 --> 00:18:34.994
How often in modern times are we working on a

00:18:35.034 --> 00:18:36.055
multi-user system?

00:18:36.075 --> 00:18:38.318
If it is a multi-user system, are they both

00:18:38.418 --> 00:18:40.000
using Emacs on the same file?

00:18:40.080 --> 00:18:42.063
That's something that was very important in the

00:18:42.123 --> 00:18:44.466
late 90s and is not very important now.

00:18:44.868 --> 00:18:46.430
This is not those file locks.

00:18:46.510 --> 00:18:48.632
This is a buffer locking,

00:18:48.633 --> 00:18:50.376
and with the scratch buffer...

00:18:50.636 --> 00:18:52.920
I've got this turned on.

00:18:52.940 --> 00:18:53.561
Evaluate it.

00:18:53.841 --> 00:18:55.443
Make sure it worked.

00:18:55.463 --> 00:18:57.146
Let's go to our scratch buffer.

00:18:57.446 --> 00:18:58.628
Here's my scratch buffer.

00:18:58.708 --> 00:19:00.711
I don't want to accidentally kill it.

00:19:00.731 --> 00:19:02.713
If I try to kill it, it's going to say

00:19:02.714 --> 00:19:04.857
"Buffer *scratch​* is locked and cannot be killed."

00:19:05.618 --> 00:19:09.103
I'll use this for notes all over the place.

00:19:10.771 --> 00:19:13.454
I've accidentally killed things too many times.

00:19:13.494 --> 00:19:16.176
The scratch buffer is not typically backed by a

00:19:16.256 --> 00:19:18.999
file, and I've lost too many things.

00:19:19.019 --> 00:19:22.122
This way, I know this scratch buffer is always

00:19:22.182 --> 00:19:23.924
going to be a persistent place.

00:19:24.404 --> 00:19:25.365
There are other approaches to it.

00:19:25.385 --> 00:19:27.147
I think there's a `persistent-scratch` package

00:19:27.167 --> 00:19:27.667
that's out there.

00:19:27.687 --> 00:19:29.829
But again, that gets me out of the built-in zone.

00:19:29.949 --> 00:19:31.531
That might be a progressive enhancement,

00:19:31.551 --> 00:19:33.513
something that takes your scratch buffer and

00:19:33.553 --> 00:19:34.514
backs it with a file.

00:19:34.534 --> 00:19:35.875
That would probably be a good thing to do.

00:19:35.975 --> 00:19:37.557
So that's one of the packages I'll be looking at

00:19:37.657 --> 00:19:38.938
adding in the other config.

00:19:39.121 --> 00:19:41.087
But emacs-lock is built in.

00:19:41.107 --> 00:19:42.793
It's one of those things that's so obscure you

00:19:42.833 --> 00:19:44.699
can't even find it in the Emacs manual.

00:19:45.301 --> 00:19:46.064
It's just out there.

00:19:46.084 --> 00:19:47.107
I don't remember where I picked it up.

00:19:47.127 --> 00:19:49.154
I think just scanning somebody else's config I

00:19:49.174 --> 00:19:50.900
picked it up somewhere, but I couldn't find it in

00:19:50.940 --> 00:19:51.983
the manual at all.

NOTE exiting Emacs: yes-or-no-p

00:19:52.334 --> 00:19:54.177
[Sacha]: I was going to ask you where you found it.

00:19:54.217 --> 00:19:56.381
You occasionally read other people's

00:19:56.441 --> 00:19:58.926
configurations for interesting ideas.

00:20:00.529 --> 00:20:05.177
And then you have a bunch of niceties.

00:20:06.279 --> 00:20:07.400
Actually, before I go into that,

00:20:07.401 --> 00:20:08.924
@Ray-On-Emacs has a question.

00:20:08.944 --> 00:20:10.447
"How do you exit Emacs then?

00:20:10.507 --> 00:20:14.293
Or do you never exit Emacs?"

00:20:14.754 --> 00:20:16.317
[Ross]: I almost never exit it.

00:20:16.803 --> 00:20:19.108
[Sacha]: I think the `emacs-lock-mode` for the

00:20:19.128 --> 00:20:22.135
Scratch doesn't kick in if you're closing Emacs

00:20:22.376 --> 00:20:22.877
as a whole?

00:20:23.940 --> 00:20:24.721
[Ross]: Correct.

00:20:24.741 --> 00:20:26.145
[Sacha]: If you're closing Emacs as a whole, it will

00:20:26.686 --> 00:20:29.312
happily still discard your Scratch buffer, but as

00:20:29.372 --> 00:20:32.820
Ross says, you could also not exit Emacs.

00:20:34.066 --> 00:20:37.352
[Ross]: Yeah, I've got the flippant line in

00:20:37.392 --> 00:20:38.575
here: ¨Exit Emacs?

00:20:38.595 --> 00:20:40.499
Surely there's been a terrible misunderstanding,¨

00:20:40.519 --> 00:20:42.723
But I do configure the way that I do it.

00:20:42.883 --> 00:20:45.689
I want to make sure that the confirmation of it,

00:20:45.749 --> 00:20:46.671
it's the yes or no.

NOTE yes-or-no-p

00:20:46.791 --> 00:20:48.072
I don't want to accidentally hit that

00:20:48.073 --> 00:20:52.041
key binding, so I will use the full fledged yes-or-no-p`.

00:20:52.021 --> 00:20:54.164
That's one area that I diverge from a lot of

00:20:54.204 --> 00:20:56.628
people's common things. One of the very early

00:20:56.688 --> 00:20:58.551
things a lot of people set in their config is

00:20:58.591 --> 00:21:00.773
they'll rebind this `yes-or-no-p`

00:21:00.774 --> 00:21:04.079
to the `y-or-n-p` so that way, they only have to type

00:21:04.119 --> 00:21:05.661
the one character.

00:21:05.681 --> 00:21:08.025
Emacs is fairly thoughtful about which ones that

00:21:08.065 --> 00:21:10.969
it makes you do "yes" or "no" versus the "y" or "n". The

00:21:11.009 --> 00:21:13.172
things that are quick and inconsequential, those

00:21:13.213 --> 00:21:14.815
are the ones where it gives you the prompt that

00:21:14.835 --> 00:21:16.898
it's just a "y" or "n" answer.

00:21:16.878 --> 00:21:18.540
The ones that are going to be more

00:21:18.600 --> 00:21:20.682
destructive and you really want to stop and slow

00:21:20.722 --> 00:21:22.002
down and think about, that's what the

00:21:22.003 --> 00:21:22.984
`yes-or-no-p` is for.

00:21:23.445 --> 00:21:25.767
People stomp all over that in their configs,

00:21:25.787 --> 00:21:27.589
and I think that's one area where I'm a little

00:21:27.649 --> 00:21:29.151
bit out of the mainstream.

00:21:29.291 --> 00:21:31.333
I like the defaults on Emacs there.

00:21:31.834 --> 00:21:33.676
It is thoughtful about which ones it prompts you

00:21:33.716 --> 00:21:34.316
for that on.

00:21:34.897 --> 00:21:37.079
But if I remember right, `confirm-kill-emacs` was

00:21:37.199 --> 00:21:39.181
one that was just a "y" or "n". That's one of the

00:21:39.221 --> 00:21:40.743
more dramatic ones that's out there.

00:21:41.484 --> 00:21:44.086
So I did customize that to make sure, yes, I

00:21:44.147 --> 00:21:45.568
really mean that.

NOTE Processes

00:21:45.548 --> 00:21:47.451
Then there's some annoyances where

00:21:47.452 --> 00:21:49.374
if you've got a bunch of inferior processes

00:21:49.375 --> 00:21:50.857
running after I've already confirmed

00:21:50.858 --> 00:21:52.040
that I want to kill Emacs,

00:21:52.060 --> 00:21:53.763
well I just said I want to kill Emacs,

00:21:53.764 --> 00:21:56.087
so I didn't want to be prompted about the processes.

00:21:56.088 --> 00:21:59.434
I do quit Emacs enough I've customized how it shuts

00:21:59.495 --> 00:22:02.960
down. I don't do it that often.

00:22:02.961 --> 00:22:05.025
[Sacha]: I imagine if you really want to stop yourself from

00:22:05.377 --> 00:22:08.122
closing Emacs, you might just

00:22:09.003 --> 00:22:13.531
change the key binding and make you M-x it

00:22:14.052 --> 00:22:15.554
instead in order to exit it,

00:22:15.574 --> 00:22:17.858
so you really absolutely don't run into that.

NOTE Moving keymaps

00:22:18.359 --> 00:22:21.264
In fact, your config has some of these lambdas

00:22:21.364 --> 00:22:24.710
where you are telling yourself, okay, this

00:22:24.770 --> 00:22:26.473
keyboard shortcut has changed.

00:22:26.909 --> 00:22:29.115
You have this thing in Magit, I think, where

00:22:29.156 --> 00:22:32.345
you're like, I moved the key map and now

00:22:32.445 --> 00:22:34.411
it's somewhere else.

00:22:34.431 --> 00:22:35.554
I thought that was interesting too.

00:22:35.574 --> 00:22:39.265
[Ross]: I'm trying to remember what that one was called.

00:22:39.717 --> 00:22:41.440
[Sacha]: There you go.

00:22:42.201 --> 00:22:43.262
[Ross]: Yeah, the `crab-juice--moved-to`.

00:22:43.503 --> 00:22:46.547
I'll bind my old key map as I'm trying

00:22:46.647 --> 00:22:48.009
to move things around.

00:22:48.851 --> 00:22:51.094
I used to use Spacemacs for a while.

00:22:51.174 --> 00:22:52.797
I used Doom Emacs for a while.

00:22:52.837 --> 00:22:54.639
I've looked at a lot of the other configs and

00:22:54.679 --> 00:22:57.343
I've said, okay, this architecture makes a little

00:22:57.444 --> 00:22:58.024
bit more sense.

00:22:58.085 --> 00:23:01.049
I want to rebind my prefixes that way, but still,

00:23:01.169 --> 00:23:02.712
for the ones that are deeply ingrained,

00:23:02.932 --> 00:23:04.735
it's sort of like a deprecation warning, except

00:23:04.775 --> 00:23:05.956
for key bindings.

00:23:08.202 --> 00:23:18.879
It looks like I used to run on `C-c g`.

00:23:18.979 --> 00:23:21.503
So if I try to do that, it's going to say, nope,

00:23:21.624 --> 00:23:22.665
moved to `C-c v c`.

00:23:22.886 --> 00:23:23.747
And now I can do that.

00:23:23.927 --> 00:23:27.493
`C-c v c`, and there's my Magit command.

00:23:28.368 --> 00:23:30.731
[Sacha]: Yeah, I like that you actually

00:23:30.791 --> 00:23:33.114
ended up mapping the whole keyboard shortcut

00:23:33.274 --> 00:23:35.697
instead of just the `C-c g` one because, of

00:23:35.737 --> 00:23:40.023
course, your muscle memory is getting you to put

00:23:40.143 --> 00:23:43.127
in the whole `C-c g` and then something.

00:23:44.008 --> 00:23:49.835
This one lets you have the full keyboard

00:23:49.875 --> 00:23:52.138
shortcut before it tells you the message.

00:23:54.389 --> 00:23:55.991
[Ross]: This is using user error.

00:23:56.011 --> 00:23:57.633
So I thought when I hit that one, I thought I

00:23:57.654 --> 00:23:59.396
would flash my mode line, but the mode line is

00:23:59.436 --> 00:24:00.117
not flashing.

00:24:00.217 --> 00:24:01.999
I know it flashes on my other machine.

00:24:02.881 --> 00:24:04.062
It flashes on my work machine.

00:24:04.082 --> 00:24:05.364
It doesn't flash on this one.

00:24:07.908 --> 00:24:09.330
[Sacha]: The challenge is getting a config

00:24:09.370 --> 00:24:11.292
to work in many different environments.

00:24:11.352 --> 00:24:12.774
You've got your work machine, you've got this

00:24:12.814 --> 00:24:15.899
personal machine, and then you've got the sandbox

00:24:16.039 --> 00:24:18.542
one that's got a really old version of Emacs on it.

00:24:19.617 --> 00:24:21.721
Okay, so a couple of other things that you've

00:24:21.782 --> 00:24:22.303
mentioned.

NOTE Writing in Org Mode and Markdown

00:24:23.726 --> 00:24:27.313
You do a lot of writing in Org Mode as well, right?

00:24:27.353 --> 00:24:29.197
You've mentioned using the literal programming

00:24:29.237 --> 00:24:30.901
part of it a lot.

00:24:30.921 --> 00:24:32.524
You do a lot of work with Markdown.

00:24:33.547 --> 00:24:35.812
Do you have any interesting workflow tips for

00:24:35.872 --> 00:24:37.816
people who are finding themselves writing with

00:24:37.896 --> 00:24:39.820
either Org Mode or Markdown in a work environment?

00:24:41.588 --> 00:24:44.092
[Ross]: That's always a tension as well.

00:24:44.212 --> 00:24:46.296
I would rather be in Org Mode.

00:24:46.356 --> 00:24:48.279
Org Mode has more bells and whistles.

00:24:48.359 --> 00:24:50.963
You can program more things in it.

00:24:51.905 --> 00:24:54.709
It's a programmable Markdown in a sense.

00:24:55.891 --> 00:24:57.794
I'm much more comfortable in Org Mode in general.

00:24:57.934 --> 00:25:01.139
Now, I don't use Org as a personal organizer as much.

00:25:01.220 --> 00:25:01.881
I would like to.

00:25:01.981 --> 00:25:03.343
I've dabbled in it a little bit.

00:25:03.323 --> 00:25:05.046
I've seen some of your previous interviews and

00:25:05.066 --> 00:25:06.750
people doing mind-blowing things with that.

00:25:06.790 --> 00:25:07.992
I'm jealous of what they're doing.

00:25:08.012 --> 00:25:09.455
I would love to get to that level.

00:25:09.956 --> 00:25:12.721
I'm still a relative newcomer to Org versus how

00:25:13.583 --> 00:25:14.705
old I am at Emacs.

00:25:14.745 --> 00:25:16.429
I'm a relative newcomer to Org.

00:25:16.869 --> 00:25:18.913
So I haven't embraced that yet, but I do use it

00:25:18.974 --> 00:25:21.318
as my general, if I'm writing a document by

00:25:21.378 --> 00:25:23.863
myself, it will 100% be in Org.

00:25:23.843 --> 00:25:26.586
This document that we're in, it's my entire website.

00:25:26.606 --> 00:25:28.488
My Emacs config is in here.

00:25:28.688 --> 00:25:31.471
My Nix configuration for how my systems work is

00:25:31.571 --> 00:25:31.992
in here.

00:25:32.733 --> 00:25:34.074
I like to do barbecue.

00:25:34.114 --> 00:25:36.317
Some of my barbecue recipes are in here.

00:25:36.997 --> 00:25:38.979
Just general blog posts about things that have

00:25:39.040 --> 00:25:41.282
nothing to do with technology are in here.

00:25:42.043 --> 00:25:43.805
It's all one big Org file.

00:25:44.145 --> 00:25:45.967
That style is emphasized.

00:25:46.047 --> 00:25:49.351
I'm using ox-hugo to take this document and export

00:25:49.391 --> 00:25:50.492
it to the website.

00:25:50.860 --> 00:25:54.826
They encourage having one big large file for that.

00:25:54.906 --> 00:25:56.388
I followed suit on that.

00:25:56.428 --> 00:25:59.893
That's why I have just this one giant document.

00:26:00.033 --> 00:26:02.717
In the work context, if I'm starting a small

00:26:02.777 --> 00:26:04.540
document, I'll start it in Org Mode.

00:26:04.600 --> 00:26:06.583
But then when I started in Org Mode, if other

00:26:06.623 --> 00:26:09.147
people want to edit it, we got a small Emacs community,

00:26:09.167 --> 00:26:11.430
so depending who I'm sharing it with, that might be fine.

00:26:11.470 --> 00:26:13.393
There's a couple people I can pair with on that.

00:26:13.433 --> 00:26:15.255
If I'm working with them, everything is great.

00:26:15.356 --> 00:26:17.779
But that's not something...

00:26:17.928 --> 00:26:20.451
There are Org implementations that work in other

00:26:20.531 --> 00:26:22.895
editors, but it isn't as good anywhere else as it

00:26:22.975 --> 00:26:24.056
is in Emacs.

00:26:24.116 --> 00:26:26.439
That's what everybody's going to typically use.

00:26:26.459 --> 00:26:28.202
And if they're not using Emacs, they're not going

00:26:28.222 --> 00:26:30.605
to be that warm to Org.

00:26:30.905 --> 00:26:33.669
I hate to say the dreaded two-letter acronym, but

00:26:33.709 --> 00:26:35.992
with AI, you're seeing a lot more Markdown.

00:26:36.132 --> 00:26:37.954
People are starting to program in Markdown.

00:26:37.994 --> 00:26:39.897
Markdown is bigger than it's ever been before.

00:26:39.977 --> 00:26:42.180
It's just unavoidable at this point.

00:26:42.160 --> 00:26:44.542
So what I'll do is I'll start a document in Org

00:26:44.622 --> 00:26:46.564
and then I can export the Org document to

00:26:46.604 --> 00:26:49.767
Markdown if I'm going to put it into GitHub or

00:26:50.008 --> 00:26:51.189
sometimes I'll just use Google.

00:26:51.289 --> 00:26:53.551
It really depends on how the collaboration model is.

00:26:53.591 --> 00:26:55.213
If I'm going to be collaborating with a lot of

00:26:55.253 --> 00:26:57.093
people up front and iterating real quickly,

00:26:57.094 --> 00:26:59.817
I'll do that in a Google Doc and I'll export that to Markdown.

00:27:00.077 --> 00:27:01.798
If I'm writing it myself as a first draft,

00:27:01.799 --> 00:27:03.801
I'll start it in Org and export that to Markdown.

00:27:04.221 --> 00:27:06.063
Markdown ends up being the target in the

00:27:06.083 --> 00:27:08.185
workplace for anything that's permanent though.

00:27:08.317 --> 00:27:08.958
I don't love it.

00:27:09.038 --> 00:27:11.724
I wish Org had won. All my personal projects,

00:27:11.744 --> 00:27:13.647
they'll have a README.org on them rather than

00:27:13.687 --> 00:27:16.633
README.md, but it is what it is and you've got to

00:27:16.653 --> 00:27:18.056
play nice with your co-workers too.

00:27:19.298 --> 00:27:21.142
[Sacha]: Yeah, I find myself having a hard

00:27:21.182 --> 00:27:23.385
time remembering to switch the link syntax.

00:27:23.386 --> 00:27:27.213
I have a "do what I mean", just insert the link.

00:27:27.214 --> 00:27:28.415
I don't care what syntax it's in,

00:27:28.416 --> 00:27:29.017
just make it work.

00:27:30.019 --> 00:27:30.460
[Ross]: Nice.

00:27:32.245 --> 00:27:34.088
[Sacha]: You mentioned sometimes

00:27:34.188 --> 00:27:36.952
in your Zoom calls when you need to exchange

00:27:37.032 --> 00:27:38.775
notes with people faster, then you have to use

00:27:38.815 --> 00:27:40.297
Google Docs for that one because that's what

00:27:40.317 --> 00:27:41.138
they're familiar with.

00:27:41.659 --> 00:27:44.023
But there might be some easy ways for you to ship

00:27:44.063 --> 00:27:49.010
that back and forth between Org and Google Docs.

NOTE Ethersync?

00:27:49.170 --> 00:27:52.596
[Ross]: One thing I'm really looking

00:27:52.676 --> 00:27:54.959
forward to is there's this project.

00:27:54.979 --> 00:27:56.261
I can't remember what it's called.

00:27:56.341 --> 00:27:59.586
Ethersync. Yes, thank you.

00:28:00.460 --> 00:28:02.683
I've seen some various attempts at that and

00:28:02.723 --> 00:28:04.406
I had a little bit of success with them, but none

00:28:04.426 --> 00:28:05.227
of them have lasted.

00:28:05.267 --> 00:28:06.609
I'm really rooting for that team.

00:28:07.129 --> 00:28:08.972
I feel like Emacs got rejuvenated.

00:28:08.992 --> 00:28:11.456
It used to be, okay, it was hard to use Emacs

00:28:11.496 --> 00:28:13.478
because if you're in a niche language and you're

00:28:13.538 --> 00:28:15.822
using a niche editor, you had to find a community

00:28:15.862 --> 00:28:18.165
that used both of those to have decent support.

00:28:18.145 --> 00:28:19.688
Then LSP came along.

00:28:19.708 --> 00:28:20.990
You have your language servers.

00:28:21.010 --> 00:28:23.475
So now I can write in these niche languages that

00:28:23.515 --> 00:28:25.358
not everybody's writing Emacs, but I still have a

00:28:25.398 --> 00:28:27.863
good experience thanks to Eglot and thanks to the

00:28:27.923 --> 00:28:30.007
language server provided by those communities.

00:28:30.348 --> 00:28:33.093
Emacs became viable again for doing a lot of

00:28:33.173 --> 00:28:34.315
development.

00:28:34.295 --> 00:28:38.201
And I'm hoping that Ethersync kind of becomes

00:28:38.281 --> 00:28:40.844
like the LSP of collaborative editing, where it's

00:28:40.925 --> 00:28:43.148
not something where it's only Emacs users sharing

00:28:43.168 --> 00:28:45.571
with each other, but it works across editors and

00:28:45.631 --> 00:28:47.494
people can collaborate in real time that way.

00:28:47.634 --> 00:28:50.098
That would replace that Google Docs use case

00:28:50.178 --> 00:28:50.519
I have.

00:28:50.959 --> 00:28:52.742
The only reason I use Google Docs is we can see

00:28:52.782 --> 00:28:54.825
each other typing and edit things on the fly

00:28:54.865 --> 00:28:55.265
together.

00:28:55.386 --> 00:28:57.729
So I'm very excited about that Ethersync project.

00:28:57.789 --> 00:28:58.770
I hope that takes off.

00:28:59.632 --> 00:29:02.936
[Sacha]: Yeah, I think that will probably be

00:29:02.997 --> 00:29:05.778
more feasible than hoping people will switch to Emacs

00:29:05.779 --> 00:29:06.840
and then use CRDT.

00:29:11.586 --> 00:29:14.109
There are other interesting

00:29:14.309 --> 00:29:16.151
collaboration things in your config.

NOTE
Managing Github with Forge
#+SCREENSHOT: emacs-chat-26-ross-a-baker-00-30-35-700.jpg
#+SCREENSHOT_TIME: 00:30:35.700

00:29:16.171 --> 00:29:19.435
You've mentioned Forge. You have some things

00:29:19.535 --> 00:29:21.878
in here for cloning to different directories

00:29:21.958 --> 00:29:24.180
depending on the repository, committing with

00:29:24.200 --> 00:29:26.383
different addresses, confirming before merging

00:29:26.483 --> 00:29:27.264
pull requests.

00:29:27.664 --> 00:29:29.346
Can you tell us a little bit about these quality

00:29:29.366 --> 00:29:30.728
of life improvements for you?

00:29:31.552 --> 00:29:36.182
[Ross]: Let me see if I can come up with an example here,

00:29:36.242 --> 00:29:36.944
first of all.

00:29:38.367 --> 00:29:41.994
So this is Forge for people who have not seen it.

00:29:42.014 --> 00:29:43.738
Let's do...

00:29:49.642 --> 00:29:50.803
[Sacha]: So when you don't need something

00:29:50.863 --> 00:29:53.566
like real-time collaboration, for the people who

00:29:53.606 --> 00:29:56.910
are watching, Forge lets you manage your Git

00:29:56.950 --> 00:30:01.575
repositories with the pull requests and other

00:30:01.615 --> 00:30:02.957
changes and things like that, right?

00:30:03.337 --> 00:30:04.659
I don't use it yet, so... Yes.

00:30:05.299 --> 00:30:07.902
[Ross]: Yeah, so it's essentially a GitHub client.

00:30:07.922 --> 00:30:11.786
So I was looking... I'm here in my Forge test directory.

00:30:12.167 --> 00:30:14.349
I'm trying not to share any of my work repositories.

00:30:14.389 --> 00:30:15.711
I use this primarily at work.

00:30:15.731 --> 00:30:18.754
I just set it up on this machine last night.

00:30:19.021 --> 00:30:21.183
Still probably a couple of rough edges.

00:30:21.203 --> 00:30:22.744
I can list the topics.

00:30:23.945 --> 00:30:26.387
And if I list the topics, I can see I've got pull

00:30:26.407 --> 00:30:27.969
request 20 open.

00:30:28.549 --> 00:30:31.372
I can hit enter on it and I can see, okay, it's open.

00:30:31.412 --> 00:30:32.673
It's in state pending.

00:30:32.753 --> 00:30:33.934
This is where it's going.

00:30:34.134 --> 00:30:35.095
These are the commits.

00:30:35.696 --> 00:30:38.558
I can look at the commit and see, okay, what is

00:30:38.638 --> 00:30:39.619
this person doing?

00:30:39.799 --> 00:30:43.722
Oh, they're trying to add another line to this file.

00:30:44.323 --> 00:30:46.245
And if I say, okay, that looks good.

00:30:46.565 --> 00:30:48.927
I can do, what is it?

00:30:53.513 --> 00:31:00.043
I can look at this and I can say... This works

00:31:00.103 --> 00:31:03.107
better if it is in a full screen editor.

00:31:04.349 --> 00:31:07.554
Let's do... I thought I was tracking this repo

00:31:07.634 --> 00:31:08.055
already.

00:31:11.640 --> 00:31:12.882
I had this working last night.

00:31:12.942 --> 00:31:14.164
Curse of the demo again.

00:31:14.945 --> 00:31:18.551
Anyway, I'm able to approve pull requests from

00:31:18.591 --> 00:31:18.771
this.

00:31:18.831 --> 00:31:20.854
I'm able to...

00:31:21.998 --> 00:31:23.000
Reject pull requests.

00:31:23.020 --> 00:31:24.763
I'm able to comment on pull requests.

00:31:24.823 --> 00:31:25.784
I can look at the diffs.

00:31:25.805 --> 00:31:29.731
So all of my integration with GitHub is done

00:31:29.791 --> 00:31:31.154
through this.

00:31:31.174 --> 00:31:34.519
I'm in an environment right now, I'm a staff engineer.

00:31:34.660 --> 00:31:36.283
I participate on a lot of teams.

00:31:36.363 --> 00:31:38.847
I get over a thousand GitHub notifications a day.

00:31:39.127 --> 00:31:41.211
The GitHub notifications that are built into

00:31:41.231 --> 00:31:42.994
the browser are just not sufficient.

00:31:43.295 --> 00:31:45.940
That's something I was able to pull it in with

00:31:46.020 --> 00:31:48.585
Forge. I'm able to tag things. I'm able to

00:31:48.685 --> 00:31:49.687
mass mark the things.

00:31:49.787 --> 00:31:51.951
I get a lot of infrastructure things that they're

00:31:51.991 --> 00:31:54.014
important, but they're not important to me. I

00:31:54.054 --> 00:31:56.419
get notified on them all the time through the

00:31:56.459 --> 00:31:58.162
various automations. I'll get them.

00:31:58.242 --> 00:32:00.947
I'll get a hundred of those at a time and I can

00:32:00.987 --> 00:32:02.770
just mark a region of those and knock out a

00:32:02.830 --> 00:32:05.455
hundred and say, okay, that's off my plate.

00:32:05.435 --> 00:32:08.798
Moving it into Emacs, as awkward as this demo is,

00:32:09.139 --> 00:32:10.720
it works great on my work machine.

00:32:11.201 --> 00:32:13.243
I'm able to keep up with things so much better

00:32:13.283 --> 00:32:15.465
than I was before.

00:32:15.485 --> 00:32:15.985
Let's see.

00:32:16.326 --> 00:32:18.908
I should be able to, if I want to look a little

00:32:18.968 --> 00:32:21.190
bit deeper and see things in the GitHub, at least

00:32:21.230 --> 00:32:21.751
this works.

NOTE
#+SCREENSHOT: emacs-chat-26-ross-a-baker-00-32-21-833.jpg
#+SCREENSHOT_TIME: 00:32:21.833

00:32:21.811 --> 00:32:23.893
I can open it and see this directly.

00:32:23.913 --> 00:32:25.795
Then if I want to merge it from here, I can.

00:32:26.616 --> 00:32:31.020
Or I should be able to merge.

00:32:31.777 --> 00:32:33.820
Now I can do a regular merge or a squash

00:32:33.860 --> 00:32:36.084
merge or a rebase just the same as I have this

00:32:36.144 --> 00:32:36.665
button here.

00:32:36.705 --> 00:32:37.967
That's all built in here.

00:32:38.087 --> 00:32:47.543
Let's go ahead and merge this pull request.

00:32:47.563 --> 00:32:47.903
[Sacha]: All right.

00:32:47.923 --> 00:32:50.968
That little detail about you dealing with like a

00:32:51.088 --> 00:32:54.107
thousand notifications a day?

00:32:55.249 --> 00:32:59.195
It makes the guardrails that you added to Forge

00:32:59.216 --> 00:33:01.499
in your config even more interesting because you

00:33:02.060 --> 00:33:04.585
can stop yourself from accidentally automatically

00:33:04.665 --> 00:33:06.668
merging in things that need more review or

00:33:06.708 --> 00:33:09.473
whatever, which of course is difficult to

00:33:09.513 --> 00:33:11.095
demonstrate at the moment because

00:33:11.096 --> 00:33:13.680
work stuff, private.

00:33:13.660 --> 00:33:17.305
But if other people are listening and thinking,

00:33:17.345 --> 00:33:19.426
they're dealing with a similar volume,

00:33:19.427 --> 00:33:23.733
you can modify Emacs to stop you from making mistakes

00:33:24.173 --> 00:33:24.614
like that.

00:33:25.595 --> 00:33:28.499
You can add just enough friction for the cases

00:33:28.559 --> 00:33:31.503
where you need to pay more attention.

00:33:31.523 --> 00:33:34.246
And @PuercoPop, there's a gh-notify

00:33:34.286 --> 00:33:36.669
package specifically for high-volume GitHub

00:33:36.750 --> 00:33:37.571
notifications.

00:33:38.332 --> 00:33:41.035
I'm not sure... Have you come across that one yet?

00:33:42.230 --> 00:33:44.758
[Ross]: I'm curious what that looks.

00:33:44.798 --> 00:33:49.753
The term "notify" concerns me, like if

00:33:49.793 --> 00:33:52.079
it's helping me manage notifications in bulk,

00:33:52.080 --> 00:33:54.087
I'm interested. If it's going to pop up something

00:33:54.147 --> 00:33:56.170
every time I get a new notification,

00:33:56.190 --> 00:33:57.372
I'm very much disinterested.

00:33:57.393 --> 00:34:00.177
I don't know whether to be excited or horrified,

00:34:00.197 --> 00:34:01.800
but I'll take a look.

00:34:01.820 --> 00:34:03.263
[Sacha]: I think because @PuercoPop is

00:34:03.343 --> 00:34:05.206
recommending it specifically in the context of

00:34:05.286 --> 00:34:08.172
high-volume notifications, it might provide you

00:34:08.212 --> 00:34:10.576
that inboxing where you can filter.

00:34:10.636 --> 00:34:14.322
I haven't looked into it myself, but I'm getting

00:34:14.422 --> 00:34:16.505
the sense that this is a problem that many people

00:34:16.887 --> 00:34:18.028
who use Emacs face

00:34:18.029 --> 00:34:20.353
and who solve it a very Emacs-y way.

00:34:21.210 --> 00:34:28.296
[Ross]: Yes. Forge has all these nice things built into it already,

00:34:28.297 --> 00:34:29.940
but I wanted to customize the workflow a

00:34:29.980 --> 00:34:30.400
little bit.

00:34:30.760 --> 00:34:32.601
It's right here in the comments, the things that

00:34:32.641 --> 00:34:32.882
it does.

00:34:32.942 --> 00:34:34.463
It makes sure that it's mergeable,

00:34:34.464 --> 00:34:36.445
there's no merge conflicts,

00:34:36.446 --> 00:34:38.546
makes sure that all the status checks ran,

00:34:38.547 --> 00:34:40.830
makes sure that all the approval is done.

00:34:41.070 --> 00:34:43.671
One thing that the Forge does not do is

00:34:43.672 --> 00:34:47.877
it does not show you comments on your pull request.

00:34:48.667 --> 00:34:50.951
There's a code-review package that's out there.

00:34:51.172 --> 00:34:52.875
It's been through a lot of forks.

00:34:53.014 --> 00:34:54.958
I'm still integrating that into my workflow.

00:34:54.978 --> 00:34:57.644
I've got a fork of a fork of a fork that I have.

00:34:58.125 --> 00:35:00.369
This is life in Emacs, for better or for worse.

00:35:00.790 --> 00:35:02.994
I've got a fork of a fork of a fork of a fork so

00:35:03.034 --> 00:35:04.096
I can see those comments.

00:35:04.116 --> 00:35:05.919
I haven't fully integrated it with Forge yet.

00:35:05.939 --> 00:35:07.502
That's a work in progress.

00:35:07.718 --> 00:35:09.941
But anyway, I didn't want to be merging these

00:35:10.001 --> 00:35:12.405
things and ignoring if somebody's taking the time

00:35:12.425 --> 00:35:13.346
to give me feedback.

00:35:13.386 --> 00:35:15.048
I don't want to merge things because sometimes

00:35:15.089 --> 00:35:16.991
people will approve things, but they'll say, hey,

00:35:17.031 --> 00:35:17.993
just a little nit to pick.

00:35:18.033 --> 00:35:19.034
You got a typo here.

00:35:19.395 --> 00:35:21.257
Don't want to slow down progress, but you might

00:35:21.297 --> 00:35:23.060
want to take a look at this.

00:35:23.080 --> 00:35:25.584
If I'm just sitting here entirely inside of

00:35:25.604 --> 00:35:26.605
this, I'll never see that.

00:35:26.625 --> 00:35:29.389
So this also checks for unresolved threads.

00:35:29.369 --> 00:35:31.753
I've got some embedded GraphQL inside of here

00:35:31.793 --> 00:35:34.578
that makes it all work and we grab that data from

00:35:34.638 --> 00:35:37.303
the GraphQL and then I'm able to just do this

00:35:37.383 --> 00:35:39.807
inside a list and prompt on these things and if

00:35:39.867 --> 00:35:41.570
it finds there's anything that isn't right it

00:35:41.630 --> 00:35:44.936
gives me these safety checks along the way and

00:35:44.956 --> 00:35:48.542
yeah it's really nice.

NOTE Committing with work addresses vs personal

00:35:49.501 --> 00:35:52.185
One other issue that I had was we had this

00:35:52.245 --> 00:35:53.987
requirement at work where we needed to start

00:35:54.448 --> 00:35:56.571
committing with our work email addresses rather

00:35:56.611 --> 00:35:57.552
than our personal addresses.

00:35:57.592 --> 00:36:00.596
I use my same GitHub account for work and personal.

00:36:00.656 --> 00:36:02.178
I needed to get that moved over.

00:36:02.699 --> 00:36:05.423
To do that with GitHub, you need to do those

00:36:05.483 --> 00:36:07.285
merges via the API.

00:36:07.305 --> 00:36:08.487
I've got things configured.

00:36:08.567 --> 00:36:10.750
All of my work repositories are

00:36:10.730 --> 00:36:13.895
partitioned off into their own subdirectory of my

00:36:13.935 --> 00:36:14.896
projects directory.

00:36:14.996 --> 00:36:17.320
I've got a git config that sets my email address

00:36:17.340 --> 00:36:17.821
to that.

00:36:17.881 --> 00:36:20.405
So if I'm doing things locally, it works.

00:36:20.425 --> 00:36:22.908
But if I'm doing these API merges that are

00:36:22.989 --> 00:36:25.272
necessary for certain repositories with certain

00:36:25.332 --> 00:36:28.657
safety checks, I needed to be able to thread that along.

00:36:28.697 --> 00:36:30.921
I've got a bug fix in here for that, where I'm

00:36:30.961 --> 00:36:32.944
threading along that email address that reads my

00:36:32.984 --> 00:36:35.808
git config and passes that along to the API

00:36:35.968 --> 00:36:36.930
endpoint.

00:36:36.950 --> 00:36:39.133
Otherwise, it was committed as the wrong identity.

00:36:39.113 --> 00:36:40.514
There's a few things here that I'd like to

00:36:40.574 --> 00:36:41.936
contribute upstream to Forge.

00:36:41.976 --> 00:36:43.777
Some of it is very bespoke to me,

00:36:43.778 --> 00:36:45.920
and some of it I think would be useful to everybody.

00:36:45.940 --> 00:36:49.363
I need to tease that apart still.

00:36:49.383 --> 00:36:51.866
[Sacha]: I like your technique of separating

00:36:52.066 --> 00:36:54.288
things into different subdirectories and so that

00:36:54.909 --> 00:36:56.691
all of your work stuff goes in the work directory

00:36:56.771 --> 00:36:59.033
or all of your personal stuff goes into projects

00:36:59.093 --> 00:36:59.534
or whatever.

00:36:59.974 --> 00:37:01.936
Then you can change your settings based on

00:37:01.976 --> 00:37:03.838
the location of the project.

00:37:03.818 --> 00:37:07.644
Even cloning a project will automatically pick

00:37:08.065 --> 00:37:09.787
the right directory to put it in.

00:37:09.807 --> 00:37:11.009
I saw that in your config.

00:37:11.210 --> 00:37:12.612
That's pretty clever.

NOTE Emacs tinkering as stress relief

00:37:13.533 --> 00:37:15.496
I'm curious because a lot of people find it

00:37:15.637 --> 00:37:19.923
challenging to balance the workflow improvement I

00:37:19.963 --> 00:37:22.047
get to tinker with Emacs versus actually getting

00:37:22.087 --> 00:37:24.330
work done, the time balance between those two.

00:37:24.370 --> 00:37:26.113
It's a little hard to figure out sometimes.

00:37:26.093 --> 00:37:27.735
What is this like for you when you're

00:37:27.775 --> 00:37:29.498
sitting down, you're doing some work, and you

00:37:29.518 --> 00:37:31.801
realize "There's probably something

00:37:31.821 --> 00:37:34.225
that I can write to make this

00:37:34.265 --> 00:37:35.826
smoother?"

00:37:35.827 --> 00:37:37.770
[Ross]: I've been doing Emacs off and on

00:37:37.830 --> 00:37:39.893
for about 30 years now, and when I get that

00:37:39.953 --> 00:37:42.836
balance right, I'll let you know.

00:37:42.837 --> 00:37:44.760
I don't have it right yet.

00:37:45.668 --> 00:37:48.472
I know I spend more time tweaking

00:37:48.572 --> 00:37:49.913
things than I probably should.

00:37:49.914 --> 00:37:52.698
It's a stress reliever for me.

00:37:52.718 --> 00:37:56.563
I get tired of doing the other things.

00:37:56.983 --> 00:37:58.946
I still love computers.

00:37:58.986 --> 00:38:01.129
I've loved computers since I was six years old.

00:38:01.189 --> 00:38:04.033
Got my first computer then.

00:38:04.093 --> 00:38:06.597
My aunt got me a book on programming when I was six.

00:38:06.637 --> 00:38:08.900
I started going through that book, and I was off

00:38:08.940 --> 00:38:10.562
to the races on that.

00:38:10.542 --> 00:38:13.747
I relax by doing computers. Some of

00:38:13.767 --> 00:38:16.451
the open source chaos is a lot to deal with, and

00:38:16.772 --> 00:38:18.775
using the same languages that I use at work that

00:38:18.835 --> 00:38:20.678
feels too much like work, so being able to

00:38:20.718 --> 00:38:23.042
withdraw and just tweak things... "Okay, this

00:38:23.162 --> 00:38:28.550
irritated me." It's a combination... From a pure

00:38:28.590 --> 00:38:31.415
productivity perspective, I overdo it for sure, but

00:38:31.695 --> 00:38:33.718
I guess the stress relief if I would burn out

00:38:33.798 --> 00:38:36.102
otherwise... Maybe I'm getting it right after

00:38:36.182 --> 00:38:37.444
all. It's hard to say.

00:38:38.403 --> 00:38:40.590
[Sacha]: Besides, you might also be able

00:38:40.670 --> 00:38:43.900
to say to yourself, well, I do have some Emacs

00:38:43.980 --> 00:38:47.431
co-workers. I'm sure they can benefit from this too.

00:38:47.451 --> 00:38:47.812
[Ross]: I do.

00:38:50.059 --> 00:38:51.222
[Sacha]: You're helping them out too.

00:38:51.242 --> 00:38:54.370
Okay, I want to dig into some of the things that

00:38:54.410 --> 00:38:58.074
you have around improving Emacs' capabilities as

00:38:58.155 --> 00:38:59.436
a self-documenting editor.

00:38:59.456 --> 00:39:02.320
You have some configuration snippets that make

00:39:02.380 --> 00:39:03.561
getting help easier.

00:39:04.202 --> 00:39:06.806
I hadn't come across them before, so I wanted to

00:39:07.266 --> 00:39:08.708
make sure other people knew about them too.

00:39:09.108 --> 00:39:12.533
Like your thing about making apropos look at all

00:39:12.573 --> 00:39:14.936
the things and sort by scores.

00:39:15.396 --> 00:39:16.278
It can sort by scores?

00:39:16.378 --> 00:39:19.041
What kind of scores are we talking about?

00:39:19.021 --> 00:39:30.639
How does this work?

00:39:30.640 --> 00:39:32.080
[Ross]: One thing that I have done,

00:39:32.081 --> 00:39:34.565
a little bit off-topic for the question that you've

00:39:34.825 --> 00:39:37.289
asked, but I have linked everything very

00:39:37.329 --> 00:39:41.836
aggressively to the info manual where I found things.

00:39:41.856 --> 00:39:45.602
Sorry, I got caught in a recursive edit here.

00:39:46.932 --> 00:39:51.100
So let's open this.

00:39:53.044 --> 00:39:58.094
What was that doing?

00:39:58.134 --> 00:40:01.099
I'm also struggling because I've been very busy

00:40:01.140 --> 00:40:03.163
at work lately. I'm used to the Mac key

00:40:03.204 --> 00:40:05.007
bindings again. I'm back here on my Linux

00:40:05.047 --> 00:40:08.113
machine. I haven't adapted to the Ctrl versus the Cmd.

00:40:09.038 --> 00:40:11.561
So yeah, all apropos commands will sort their

00:40:11.621 --> 00:40:13.904
lists or results in alphabetical order.

00:40:13.924 --> 00:40:16.186
If sort by scores is non-null, they try to guess

00:40:16.226 --> 00:40:19.811
the relevance of each result.

00:40:19.831 --> 00:40:21.412
My comment looks like it's a little bit obsolete

00:40:21.472 --> 00:40:23.695
here because it looks like for the documentation,

00:40:23.815 --> 00:40:26.538
I do like the sorting by scores, but for regular

00:40:26.578 --> 00:40:27.860
apropos, I did not.

00:40:27.920 --> 00:40:30.643
I think I tweaked something and didn't update

00:40:30.663 --> 00:40:31.584
the documentation.

00:40:31.604 --> 00:40:33.787
[Sacha]: That's okay. I was just curious about it.

00:40:34.267 --> 00:40:38.252
Then you also have some things like,

00:40:38.654 --> 00:40:43.584
if it's an autoloaded symbol, then go ahead and

00:40:43.624 --> 00:40:46.229
load the library so that you can get help for it.

00:40:46.510 --> 00:40:49.415
If there's a shortdoc example, include that

00:40:49.475 --> 00:40:53.764
as well in the documentation of a function.

00:40:54.165 --> 00:40:57.391
So if people are reading configs for ideas, I

00:40:57.451 --> 00:40:59.315
thought I would call attention to this part

00:40:59.335 --> 00:41:00.898
because it sounds really handy.

00:41:02.566 --> 00:41:03.449
[Ross]: Yeah, I found these.

00:41:03.569 --> 00:41:04.912
I've just been going through...

00:41:04.913 --> 00:41:06.137
Part of my relaxation...

NOTE Under-appreciated Emacs built-ins

00:41:06.157 --> 00:41:08.303
This is such a dorky thing to say, but part of

00:41:08.343 --> 00:41:10.430
the relaxation is I'll go through the Emacs

00:41:10.470 --> 00:41:11.774
manual looking for things.

00:41:11.794 --> 00:41:14.362
The overall structure of this document follows

00:41:14.422 --> 00:41:16.508
the Emacs manual fairly closely, and that's

00:41:16.825 --> 00:41:18.087
not by coincidence.

00:41:18.147 --> 00:41:20.191
I've just been going through chapter by chapter.

00:41:20.311 --> 00:41:23.476
Okay, well, I started with Emacs 19 or whatever.

00:41:23.576 --> 00:41:25.600
Emacs 31 is around the corner.

00:41:25.620 --> 00:41:27.243
I better at least catch up to all the goodies

00:41:27.263 --> 00:41:27.924
that are in 30.

00:41:28.024 --> 00:41:30.368
I'll read the manual, and I'm

00:41:30.408 --> 00:41:31.690
finding a lot of these things there.

00:41:31.730 --> 00:41:33.473
That's why I have so many links back to the

00:41:33.533 --> 00:41:36.678
manual inside of my code, just because I'm going

00:41:36.719 --> 00:41:37.320
through that.

00:41:37.340 --> 00:41:39.964
That's where you can find a lot of these hidden gems.

00:41:40.180 --> 00:41:42.423
I'm hosting the Emacs Carnival this month, and

00:41:42.463 --> 00:41:44.546
it's the underappreciated Emacs built-ins.

00:41:44.566 --> 00:41:46.649
I said, if you want to find any of them, go

00:41:46.729 --> 00:41:47.530
in the manual.

00:41:47.570 --> 00:41:49.473
They're there by the bushel.

00:41:49.493 --> 00:41:53.098
[Sacha]: It feels almost like a book club.

00:41:53.118 --> 00:41:54.600
We're going through the manual together and

00:41:54.660 --> 00:41:58.846
finding all these gems that I wouldn't have come

00:41:58.866 --> 00:42:00.929
across otherwise, because Emacs source code is too

00:42:00.989 --> 00:42:02.071
big and all that.

00:42:02.151 --> 00:42:05.035
I've been really appreciating the Emacs Carnival

00:42:05.055 --> 00:42:06.357
submissions thus far.

00:42:07.585 --> 00:42:12.371
Of course, there are lots of other things that

00:42:12.452 --> 00:42:15.436
are not in Emacs that you've also been exploring

00:42:16.176 --> 00:42:18.480
and checking out.

NOTE gptel

00:42:20.502 --> 00:42:23.907
Am I allowed to ask about the gptel stuff?

00:42:24.808 --> 00:42:25.128
[Ross]: Of course.

00:42:25.169 --> 00:42:31.457
[Sacha]: I was curious about how the quick lookup stuff

00:42:31.497 --> 00:42:32.518
has been working out for you.

00:42:32.538 --> 00:42:34.521
What kinds of things do you like to use that for?

00:42:36.290 --> 00:42:38.640
[Ross]: That's one that it was pretty

00:42:38.680 --> 00:42:40.689
exciting and I haven't really fully worked it

00:42:40.769 --> 00:42:41.954
into my workflow yet.

00:42:42.055 --> 00:42:43.842
I tried it. I liked it. I haven't

00:42:43.902 --> 00:42:44.726
internalized it.

00:42:44.746 --> 00:42:46.654
I was trying that one night.

00:42:47.562 --> 00:42:50.425
what what is capable of is you can just highlight

00:42:50.485 --> 00:42:53.809
something and do. It's almost like a quick

00:42:53.829 --> 00:42:55.711
Google search, except it'll bounce it off the

00:42:55.751 --> 00:42:58.754
model of your choice. It will pop up things a

00:42:58.794 --> 00:43:00.977
little bit faster that way. For the most part, I'm

00:43:01.017 --> 00:43:03.520
just using stock gptel, where I've just got the

00:43:03.540 --> 00:43:06.022
chatbot window. I'll copy a region and I'll

00:43:06.042 --> 00:43:08.986
put it into gptel. I'll run it off the model, say

00:43:09.026 --> 00:43:11.348
hey, I got a question about this, help me with this

00:43:11.388 --> 00:43:14.671
compile error, help me with that, and so forth.

00:43:14.672 --> 00:43:15.713
I don't...

00:43:17.110 --> 00:43:19.853
Talking about AI is always difficult because it's

00:43:19.893 --> 00:43:23.236
such a controversial thing and to use it at all,

00:43:23.276 --> 00:43:24.457
you offend a lot of people.

00:43:24.598 --> 00:43:26.479
I'll say, I don't really buy into the

00:43:26.539 --> 00:43:27.500
agentic workflow.

00:43:27.560 --> 00:43:29.723
I'm happy just using things as a chatbot and

00:43:30.163 --> 00:43:31.945
little snippets here and there where I'm still

00:43:32.005 --> 00:43:32.746
firmly driving.

00:43:32.786 --> 00:43:34.828
So the people who are fully bought into it, they

00:43:34.888 --> 00:43:36.369
don't think I'm using it right.

00:43:36.890 --> 00:43:39.733
Then there are a lot of ethical concerns that

00:43:39.793 --> 00:43:40.253
I share.

00:43:40.453 --> 00:43:42.055
I don't have the gptel on this.

00:43:42.355 --> 00:43:43.216
I use it for work.

00:43:43.276 --> 00:43:45.058
I don't use it personally.

00:43:45.038 --> 00:43:47.422
That's just the way I've been able to

00:43:47.442 --> 00:43:49.465
compartmentalize all my concerns with it.

00:43:49.565 --> 00:43:51.989
But just being a technologist, being a principal

00:43:52.049 --> 00:43:54.192
staff engineer, I do need to get up to speed with

00:43:54.212 --> 00:43:54.733
these tools.

00:43:54.753 --> 00:43:57.958
So I have had to get used to them and keep up

00:43:57.978 --> 00:43:59.981
with what they're capable of and what they're not.

00:44:00.001 --> 00:44:03.626
At least for my... Setting aside all the

00:44:03.706 --> 00:44:07.733
concerns around environment and whatnot, all the

00:44:07.773 --> 00:44:09.375
other concerns that we have with it
,

00:44:09.355 --> 00:44:11.738
I find that GPTel is that sweet spot where I've

00:44:11.758 --> 00:44:14.020
just got this pair programmer where I can run

00:44:14.080 --> 00:44:16.804
things off, bounce a few questions off it, get

00:44:16.864 --> 00:44:19.387
things, but it's not getting write access to my

00:44:19.447 --> 00:44:20.268
file system.

00:44:20.828 --> 00:44:22.390
I have a security background. Worked at a

00:44:22.410 --> 00:44:24.292
security company for several years.

00:44:24.572 --> 00:44:27.115
Just the access that people are giving to these

00:44:27.236 --> 00:44:29.758
agents, I find absolutely terrifying.

00:44:29.778 --> 00:44:32.021
There's a lot of work that goes into using that

00:44:32.081 --> 00:44:33.743
properly, I think.

00:44:33.723 --> 00:44:36.187
I get most of the benefit. I feel like I'm

00:44:36.268 --> 00:44:39.133
de-skilling myself a little bit less than I do

00:44:39.213 --> 00:44:41.577
when I try the agentic workflows elsewhere.

00:44:41.597 --> 00:44:43.019
So I love gptel.

00:44:43.861 --> 00:44:46.626
Now gptel, it does have this interesting agent mode.

00:44:46.666 --> 00:44:47.968
I haven't tried it yet.

00:44:48.489 --> 00:44:51.675
Again, I have some security concerns around that.

00:44:51.695 --> 00:44:53.518
I need to figure out how to make sure that

00:44:53.558 --> 00:44:55.782
whatever I give it write access to...

00:44:55.762 --> 00:44:57.685
It's not getting too much write access to

00:44:57.785 --> 00:45:00.009
anything. But that is a project that's on my

00:45:00.049 --> 00:45:02.533
radar as well, to try to do things that really do

00:45:02.593 --> 00:45:04.857
benefit from this unattended work.

00:45:05.658 --> 00:45:06.640
I'll dabble in that as well.

00:45:06.680 --> 00:45:08.543
There's a whole gptel ecosystem.

00:45:08.964 --> 00:45:13.511
Karthik does an amazing job with that.

00:45:13.531 --> 00:45:15.434
[Sacha]: I like that you have a very

00:45:15.474 --> 00:45:16.676
considerate approach to it.

00:45:16.776 --> 00:45:19.281
I also like the humor with which you describe

00:45:19.641 --> 00:45:22.005
this and other things in your config.

00:45:23.892 --> 00:45:29.347
You aren't buying into the hype. You're like,

00:45:29.407 --> 00:45:32.014
this is your least unfavorite way

00:45:32.055 --> 00:45:32.957
of doing things.

00:45:33.494 --> 00:45:37.899
[Ross]: Yes, exactly. There's some commentary

00:45:37.999 --> 00:45:40.843
out on one of the nuclear test sites about "No

00:45:40.943 --> 00:45:43.045
deed of honor is performed here." I've quoted

00:45:43.085 --> 00:45:44.826
some of that in this part of the config too,

00:45:44.827 --> 00:45:47.830
just kind of my protest of doing this.

00:45:47.831 --> 00:45:50.273
I've got to do this and there are certain ways...

00:45:50.274 --> 00:45:54.558
If I have to do this, these are the ways that work for me.

00:45:54.559 --> 00:45:56.120
I'm getting some benefits out of this,

00:45:56.121 --> 00:45:59.383
but also I don't entirely feel great about this either.

00:45:59.384 --> 00:46:00.446
That's kind of how I've

00:46:01.146 --> 00:46:02.488
compartmentalized that.

00:46:03.295 --> 00:46:04.977
[Sacha]: Yeah, that makes sense.

NOTE Getting older

00:46:04.997 --> 00:46:07.179
One of the other things that you joke about a

00:46:07.339 --> 00:46:09.681
couple of times in your config is getting older.

00:46:10.662 --> 00:46:12.864
So with things like your `repeat-exit-timeout` and

00:46:12.884 --> 00:46:14.806
your `mode-line-bell-flash-time`, you're like,

00:46:14.826 --> 00:46:18.209
okay, might change it to track my senescence.

00:46:22.272 --> 00:46:23.454
I appreciate your sense of humor.

00:46:24.615 --> 00:46:26.016
Are you finding that there are things that you

00:46:26.036 --> 00:46:29.559
like to tweak about Emacs in anticipation of

00:46:29.799 --> 00:46:31.581
change as you get older?

00:46:32.776 --> 00:46:35.867
[Ross]: Well, my font size is definitely bigger than it

00:46:35.987 --> 00:46:36.509
used to be.

00:46:36.650 --> 00:46:39.681
I guess that's something that has changed over

00:46:39.701 --> 00:46:40.002
the years.

00:46:40.042 --> 00:46:42.109
I used to be able to operate on a tiny font, no

00:46:42.149 --> 00:46:44.558
longer on that.

NOTE Lindy's Law and tool longevity

00:46:46.799 --> 00:46:50.423
I guess Emacs and aging just feels like I made a

00:46:50.523 --> 00:46:52.665
really good... I wish I'd stuck with it for the

00:46:52.725 --> 00:46:53.486
full 30 years.

00:46:53.506 --> 00:46:55.848
I'd be fumbling around a little bit less in this demo.

00:46:55.868 --> 00:46:57.650
I'm not as smooth as somebody who'd been on it

00:46:57.690 --> 00:46:59.932
for the full 30 years, so I regret that time.

00:47:00.473 --> 00:47:02.795
I've just seen so many editors come and go.

00:47:02.815 --> 00:47:06.239
And when I talk to junior developers, I do a lot

00:47:06.279 --> 00:47:06.999
of mentoring.

00:47:07.600 --> 00:47:09.802
Like, I'm not necessarily going to say that you

00:47:09.842 --> 00:47:12.485
should go down this road, but if you do go down

00:47:12.525 --> 00:47:14.427
this road, it is something.

00:47:14.778 --> 00:47:17.533
that is probably going to be richly rewarding

00:47:17.534 --> 00:47:18.967
for you for a long time.

00:47:18.968 --> 00:47:20.800
There's this thing... I think it's called

00:47:20.801 --> 00:47:23.833
Lindy's Law. I'm sure I've quoted it here somewhere.

00:47:23.834 --> 00:47:25.851
The expected lifetime of something is

00:47:25.912 --> 00:47:28.720
proportional to how long it's already existed.

00:47:28.852 --> 00:47:31.433
And with Emacs... Emacs has been around...

00:47:31.434 --> 00:47:34.167
I'm very old. I'm 47. But Emacs is a little bit

00:47:34.168 --> 00:47:36.133
older than I am, depending on how you start counting.

00:47:36.134 --> 00:47:39.333
Emacs has been around for a long time.

00:47:39.334 --> 00:47:42.621
It doesn't have the market share that it used to,

00:47:42.741 --> 00:47:44.284
but it's something that still has a viable

00:47:44.304 --> 00:47:45.527
community.

00:47:46.081 --> 00:47:47.463
You do the Emacs News every week.

00:47:47.523 --> 00:47:49.326
You know probably better than anybody else how

00:47:49.386 --> 00:47:50.748
viable the community is right now.

00:47:50.808 --> 00:47:52.271
It's still an exciting place to be.

00:47:52.371 --> 00:47:55.095
I don't see that changing anytime soon, whereas

00:47:55.135 --> 00:47:57.759
I've seen so much hype over... Everybody wanted to

00:47:57.800 --> 00:48:01.065
get on Atom, and now Atom is a basically dead editor.

00:48:01.165 --> 00:48:03.589
Sublime had this rise and fall.

00:48:03.609 --> 00:48:04.650
So many other editors.

00:48:04.751 --> 00:48:07.515
Now I see people... VS Code was dominant for a

00:48:07.575 --> 00:48:09.418
while, and now I see a lot of people abandoning

00:48:09.478 --> 00:48:10.139
VS Code.

00:48:10.239 --> 00:48:12.082
It's still the dominant editor, but you can start

00:48:12.122 --> 00:48:13.945
to see people moving away from that.

00:48:13.925 --> 00:48:16.107
Emacs is always going to be here.

00:48:16.127 --> 00:48:19.731
So just as I've aged, I appreciate that Emacs,

00:48:20.312 --> 00:48:22.274
that same thing that I was using back when I was

00:48:22.314 --> 00:48:24.696
18, a freshman in college, it's still working for

00:48:24.736 --> 00:48:25.257
me at 47.

00:48:25.677 --> 00:48:28.160
And by the time I hang up my keyboard, pretty

00:48:28.220 --> 00:48:30.162
sure I'm still going to be using it.

00:48:30.402 --> 00:48:32.884
It's done a remarkable job aging gracefully.

00:48:33.305 --> 00:48:35.447
Would I want to use the Emacs 19 today?

00:48:35.467 --> 00:48:36.448
Absolutely not.

00:48:36.808 --> 00:48:39.451
Am I fully comfortable using Emacs 28 in the

00:48:39.511 --> 00:48:40.993
sandbox environment?

00:48:41.013 --> 00:48:43.375
Yeah, there's certain things that I miss.

00:48:43.355 --> 00:48:45.297
But yeah, Emacs 30 is great.

00:48:45.377 --> 00:48:46.979
Emacs 31 is around the corner.

00:48:47.579 --> 00:48:49.261
It's kept up with the times.

00:48:49.622 --> 00:48:50.903
We just talked about AI.

00:48:51.423 --> 00:48:54.006
Emacs and AI, for all my concerns about AI, Emacs

00:48:54.026 --> 00:48:56.068
and AI are a great fit for each other because so

00:48:56.108 --> 00:48:57.810
much of the AI stuff that we're doing is

00:48:57.870 --> 00:48:58.991
text-based.

00:48:59.031 --> 00:49:01.394
Emacs is the best text processing platform that

00:49:01.414 --> 00:49:02.115
there's ever been.

00:49:02.155 --> 00:49:05.058
They fit each other so well.

00:49:05.078 --> 00:49:05.478
[Sacha]: Yeah, yeah.

00:49:05.498 --> 00:49:09.242
And I find it very amusing that with you at 47

00:49:09.282 --> 00:49:12.045
years old and I'm 43, assuming math is right,

00:49:12.346 --> 00:49:15.738
There are people in the Emacs community who would

00:49:15.778 --> 00:49:18.247
consider us still young whippersnappers.

00:49:18.267 --> 00:49:19.572
[Ross]: That's right, yes.

00:49:20.362 --> 00:49:22.464
Different demographics around here, that's for sure.

00:49:23.285 --> 00:49:25.408
[Sacha]: As well as, of course, the other

00:49:25.548 --> 00:49:28.592
end where you have high school students and fresh

00:49:28.632 --> 00:49:31.215
grads still enjoying it, still exploring it.

00:49:32.236 --> 00:49:35.199
And so it's great that we can customize this with

00:49:35.360 --> 00:49:37.903
larger font sizes or different key bindings or

00:49:38.383 --> 00:49:42.468
other ways to catch us from making careless

00:49:42.508 --> 00:49:47.554
mistakes to adapt to us and the things that we're

00:49:47.574 --> 00:49:48.495
working on.

00:49:49.218 --> 00:49:50.219
So all this is very interesting.

NOTE
Nix is good at managing package versions and customizing them; Matthew Bauer (Bauer IDE)
#+SCREENSHOT: emacs-chat-26-ross-a-baker-00-53-01-300.jpg
#+SCREENSHOT_TIME: 00:53:01.300

00:49:51.000 --> 00:49:54.726
Oh, actually, on a different tangent, one of the

00:49:54.746 --> 00:49:56.788
things I was curious about is a lot of your

00:49:56.849 --> 00:49:59.773
configuration is set up to work well with Nix.

00:50:00.534 --> 00:50:02.737
Since a lot of people in Emacs are curious

00:50:02.777 --> 00:50:05.501
about reproducible configurations and systems,

00:50:05.521 --> 00:50:07.083
could you tell us more about Nix and your

00:50:07.123 --> 00:50:08.745
experience with it in Emacs?

00:50:09.535 --> 00:50:13.423
[Ross]: Yes, so I'm using that as some

00:50:13.463 --> 00:50:16.630
people use straight.el to pin their packages.

00:50:16.650 --> 00:50:18.434
Some people, they don't bother pinning their

00:50:18.474 --> 00:50:19.616
packages at all.

00:50:19.636 --> 00:50:23.344
I'm using Nix for people who are unfamiliar.

00:50:23.384 --> 00:50:24.827
Nix is...

00:50:25.820 --> 00:50:27.662
Boy, the elevator pitch for Nix.

00:50:29.203 --> 00:50:30.945
It's a package manager, but it's more than an

00:50:31.065 --> 00:50:32.366
Emacs package manager.

00:50:32.526 --> 00:50:35.208
It can manage all of your packages for you.

00:50:35.228 --> 00:50:37.370
So I'm building Emacs with Nix.

00:50:37.450 --> 00:50:39.773
I'm declaring all of my packages that way.

00:50:39.973 --> 00:50:42.955
Then that's specifying... I have a very

00:50:43.015 --> 00:50:46.459
repeatable build of Emacs and it has this version

00:50:46.579 --> 00:50:48.000
of these packages.

00:50:48.020 --> 00:50:50.182
One thing that Nix is very good at is it's very

00:50:50.242 --> 00:50:52.444
good at customizing certain things.

00:50:52.464 --> 00:50:54.486
So if you want to run a patched version of a

00:50:54.546 --> 00:50:55.827
particular package,

00:50:55.807 --> 00:50:59.473
you're able to specify, okay, I want this

00:50:59.533 --> 00:51:02.137
package, I want to use this package definition,

00:51:02.177 --> 00:51:05.302
but I want to overlay these files on top of it.

00:51:05.322 --> 00:51:06.343
Nix excels at that.

00:51:06.424 --> 00:51:08.407
I'm running a lot of customized versions of

00:51:08.447 --> 00:51:10.169
various packages, things that I've tried to

00:51:10.209 --> 00:51:12.613
submit upstream, and the Emacs package might be

00:51:12.653 --> 00:51:15.578
abandoned, or they might be a slow maintainer.

00:51:15.678 --> 00:51:18.022
I need to use it today, and they'll get around to

00:51:18.062 --> 00:51:19.143
it, and they'll merge it in a month.

00:51:19.163 --> 00:51:21.046
So on a temporary basis, I'll want to run a

00:51:21.086 --> 00:51:22.168
patched version.

00:51:22.300 --> 00:51:25.206
Nix makes that workflow very smooth for me where

00:51:25.246 --> 00:51:27.330
I'm able to run patched versions of certain

00:51:27.350 --> 00:51:29.234
packages, like I'm running a patched version of

00:51:29.274 --> 00:51:30.838
Forge like I showed off.

00:51:30.858 --> 00:51:32.641
Some of the things I want to contribute upstream,

00:51:32.682 --> 00:51:33.664
I've got those pulled out.

00:51:33.724 --> 00:51:36.329
I just need to sit down and actually submit them upstream.

00:51:36.970 --> 00:51:39.175
But I've got those ready to go and I'm able to

00:51:39.255 --> 00:51:41.800
run those out of the box.

00:51:41.801 --> 00:51:44.567
It's able to run... It's not just managing Emacs.

00:51:44.568 --> 00:51:46.067
That's the real magic of it.

00:51:46.068 --> 00:51:49.833
If I need certain binaries to support my Emacs config,

00:51:49.834 --> 00:51:52.800
I can declare those, and that all comes together

00:51:52.801 --> 00:51:55.067
and if I pull down Emacs packages,

00:51:55.068 --> 00:51:57.767
those are all going to be there together.

00:51:57.768 --> 00:52:00.883
There's a really fantastic example of this.

00:52:01.243 --> 00:52:04.187
Matthew Bauer has something out there.

00:52:06.361 --> 00:52:08.023
It's Bauer, I-D-E.

00:52:08.364 --> 00:52:10.908
B-A-U-E-R is his last name.

00:52:11.128 --> 00:52:13.451
He has one of the very inspiring configurations

00:52:13.511 --> 00:52:16.055
to me where he builds everything in Nix and he

00:52:16.135 --> 00:52:18.759
bundles all of his binaries that he needs in Nix

00:52:18.839 --> 00:52:22.504
and then he configures his Emacs variables to

00:52:22.545 --> 00:52:24.868
point, not at the git that happens to be on the

00:52:24.928 --> 00:52:27.652
file system, but to the git that he installs via Nix.

00:52:27.692 --> 00:52:31.117
So he knows that the entire thing is

00:52:31.177 --> 00:52:31.958
self-contained.

00:52:32.098 --> 00:52:34.562
That's something I've taken a lot of inspiration from.

00:52:35.015 --> 00:52:39.502
If I'm on a machine that has Nix, I'm able to run this.

00:52:39.522 --> 00:52:42.487
If I want to run my standalone config, I can run

00:52:42.527 --> 00:52:45.051
this command and I can run this command on any

00:52:45.111 --> 00:52:46.873
machine that I have Nix installed on.

00:52:47.595 --> 00:52:49.658
It will run very fast here.

00:52:50.239 --> 00:52:51.741
Should run very fast here.

00:52:52.835 --> 00:52:56.083
and this popped up and this is my base config and

00:52:56.144 --> 00:53:00.836
I could have run this on any machine or the my

00:53:01.277 --> 00:53:02.079
packages are named.

00:53:02.159 --> 00:53:04.967
It's an old Simpsons joke when Homer is stuck in

00:53:05.027 --> 00:53:05.428
New York.

00:53:06.090 --> 00:53:08.937
So that's the khlav kalash and crab juice.

00:53:08.917 --> 00:53:10.581
I think I've got a link to the YouTube video

00:53:10.621 --> 00:53:12.185
somewhere in my config.

00:53:12.205 --> 00:53:14.390
And there's the fully built in one.

00:53:14.410 --> 00:53:16.716
That's something I can get on a new machine.

00:53:17.157 --> 00:53:18.019
I install Nix.

00:53:18.199 --> 00:53:19.843
All of my dot files are there.

00:53:19.863 --> 00:53:22.068
If I want to just run Emacs or if somebody

00:53:22.128 --> 00:53:24.213
else wants to run my Emacs, anybody can take that

00:53:24.253 --> 00:53:25.356
config and run it.

NOTE Custom fonts

00:53:25.336 --> 00:53:27.501
Now if you do that, a word of warning.

00:53:27.521 --> 00:53:30.146
One thing that I've done is this font that you

00:53:30.186 --> 00:53:31.709
see is a custom font.

00:53:32.010 --> 00:53:35.918
I took the Iosevka font and I customized a lot of

00:53:35.938 --> 00:53:36.720
the glyphs on it.

00:53:36.820 --> 00:53:38.824
When I do that, I build that in Nix as well.

00:53:38.985 --> 00:53:40.628
You can use Nix to build your fonts.

00:53:40.608 --> 00:53:42.552
That's part of my derivation.

00:53:42.572 --> 00:53:45.558
My Emacs config depends on my fonts.

00:53:45.979 --> 00:53:48.304
If you try to run these, you're going to have

00:53:48.324 --> 00:53:49.406
to compile the fonts.

00:53:49.427 --> 00:53:51.751
I compile a lot of variants of these fonts.

00:53:51.812 --> 00:53:53.635
I compile a lot of alphabets.

00:53:53.655 --> 00:53:55.058
Linguistics is one of my hobbies.

00:53:55.078 --> 00:53:57.183
I love to work in these other alphabets and

00:53:57.243 --> 00:53:57.944
things like that.

00:53:57.964 --> 00:54:00.169
I'm very opinionated on these things.

00:54:00.149 --> 00:54:02.552
Even in languages that I don't speak, I like the

00:54:02.732 --> 00:54:03.813
text to look a certain way.

00:54:03.853 --> 00:54:05.956
Just one of the other ways I blow off steam.

00:54:05.976 --> 00:54:08.459
But anyway, I've got this custom font that I use

00:54:08.519 --> 00:54:08.819
everywhere.

00:54:08.839 --> 00:54:10.121
It's the font on my website.

00:54:10.161 --> 00:54:12.163
It's the font that you see in my editor and my

00:54:12.203 --> 00:54:12.804
terminal.

00:54:13.345 --> 00:54:15.307
If you pull this package, you'll get my font and

00:54:15.327 --> 00:54:17.270
you'll have to compile that and you're going to

00:54:17.310 --> 00:54:19.532
heat the room with your CPU for about 30 minutes

00:54:19.612 --> 00:54:20.353
if you do so.

00:54:20.373 --> 00:54:21.715
So beware on that.

00:54:22.396 --> 00:54:24.799
Otherwise, if you want to run my config, it's all

00:54:24.859 --> 00:54:26.781
out there if you have Nix.

00:54:27.824 --> 00:54:29.609
I don't know how practical that is, but it makes

00:54:29.650 --> 00:54:30.191
me feel good.

NOTE Starter kits versus configs

00:54:30.913 --> 00:54:32.037
[Sacha]: Now I'm curious, have you heard

00:54:32.077 --> 00:54:34.464
from people using your base config or your

00:54:34.524 --> 00:54:35.186
extended one?

00:54:38.737 --> 00:54:40.382
[Ross]: I've heard of people

00:54:40.666 --> 00:54:41.567
copying out of it.

00:54:41.607 --> 00:54:43.149
I haven't heard of people depending on it

00:54:43.189 --> 00:54:43.670
directly.

00:54:43.690 --> 00:54:45.112
I would generally discourage people.

00:54:45.232 --> 00:54:47.896
That's kind of the difference between a starter kit and a config.

00:54:47.996 --> 00:54:52.442
You did an excellent series here on starter kits recently.

00:54:52.462 --> 00:54:54.785
I don't see this necessarily as a starter kit.

00:54:54.805 --> 00:54:57.049
This is very opinionated to the way I do things.

00:54:57.109 --> 00:54:58.030
I hope people look at it.

00:54:58.090 --> 00:55:00.393
I hope people draw inspiration from it, copy from it.

00:55:00.513 --> 00:55:01.154
Absolutely.

00:55:01.635 --> 00:55:03.237
But I'm going to change things on a whim.

00:55:03.257 --> 00:55:05.100
If you're using this as a base layer, you're

00:55:05.140 --> 00:55:07.122
going to find my opinions thrust upon you.

00:55:07.163 --> 00:55:08.985
You're probably not going to like half of them.

00:55:10.180 --> 00:55:12.543
[Sacha]: Well, your config is very nicely

00:55:12.603 --> 00:55:15.106
documented and rather enjoyable to read.

00:55:15.206 --> 00:55:19.111
So I can imagine people will get a lot by reading

00:55:19.191 --> 00:55:21.074
it for the things they can copy and paste to

00:55:21.094 --> 00:55:21.975
their config.

00:55:21.995 --> 00:55:23.997
I also particularly like how even your code

00:55:24.017 --> 00:55:27.742
snippets, you've customized it to include the license.

00:55:28.263 --> 00:55:31.627
So it's like every little bit of that is easy for

00:55:31.687 --> 00:55:34.451
people to copy from confidently.

NOTE Nix vs Guix; Mac

00:55:34.711 --> 00:55:35.912
Trevok has a question.

00:55:35.992 --> 00:55:38.095
Hopefully without starting a philosophical war,

00:55:38.155 --> 00:55:39.597
why Nix over Guix?

00:55:40.943 --> 00:55:43.647
[Ross]: I would love to run Guix, but I

00:55:43.727 --> 00:55:46.210
have a Mac for work and Guix doesn't have a good

00:55:46.251 --> 00:55:48.434
Mac story. I'm sharing a lot, not just my

00:55:48.574 --> 00:55:50.296
Emacs configuration, but a lot of other

00:55:50.356 --> 00:55:54.042
configurations, because Nix is more broadly scoped.

00:55:54.122 --> 00:55:56.004
I'm able to share a bunch of things between those

00:55:56.044 --> 00:55:57.727
two operating systems.

00:55:57.747 --> 00:56:00.090
So the server that I run, the rossabaker.com,

00:56:00.110 --> 00:56:01.272
that runs on NixOS.

00:56:01.352 --> 00:56:03.635
This laptop that I'm on runs on NixOS, and then I

00:56:03.675 --> 00:56:04.977
have the Darwin machine.

00:56:04.957 --> 00:56:07.121
There are certain things that are compatible

00:56:07.181 --> 00:56:07.962
between Linux.

00:56:07.982 --> 00:56:09.384
There are certain things that are compatible

00:56:09.424 --> 00:56:10.807
between the workstations.

00:56:10.827 --> 00:56:12.810
And then Darwin has its own weird area.

00:56:13.211 --> 00:56:14.753
I'm able to manage all of that with Nix.

00:56:14.813 --> 00:56:16.516
I couldn't do that with Guix.

00:56:16.536 --> 00:56:18.780
If Guix gets a good Darwin story, I will switch

00:56:18.840 --> 00:56:19.902
tomorrow,

00:56:19.922 --> 00:56:21.444
because I would love to be configuring with

00:56:21.464 --> 00:56:21.805
Scheme.

00:56:22.887 --> 00:56:26.593
[Sacha]: Totally different tangent yet again.

NOTE Non-work interests: Org for documenting; ox-hugo and multiple languages

00:56:26.894 --> 00:56:30.137
Do you use Emacs for your other interests?

00:56:30.177 --> 00:56:32.579
You've mentioned things like you use it to

00:56:32.659 --> 00:56:36.203
publish your youth soccer homepage.

00:56:36.923 --> 00:56:39.025
What about for your aquarium or linguistics or

00:56:39.105 --> 00:56:40.206
other things you're interested in?

00:56:42.108 --> 00:56:44.650
Tell us about the non-work uses of Emacs in your life.

00:56:46.212 --> 00:56:47.373
[Ross]: That would mostly be just

00:56:47.473 --> 00:56:50.275
documenting things in Org Mode.

00:56:50.916 --> 00:56:52.998
Like I mentioned, it's a big Org doc, and if you

00:56:53.038 --> 00:56:54.699
read this doc, you'll see that it's a very

00:56:54.760 --> 00:56:56.361
sprawling thing.

00:56:56.476 --> 00:57:01.203
For the linguistics, one thing with ox-hugo is

00:57:01.243 --> 00:57:02.425
that integrates nicely.

00:57:02.505 --> 00:57:04.648
I know you've been learning French.

00:57:05.009 --> 00:57:06.812
I think that's cool how you're doing that.

00:57:06.852 --> 00:57:08.574
Spanish and German are my two hobbies.

00:57:08.614 --> 00:57:10.197
I've actually got a trilingual site.

00:57:10.698 --> 00:57:13.262
The English is way more populated than Spanish

00:57:13.302 --> 00:57:13.822
and the German.

00:57:13.842 --> 00:57:15.565
Those are afterthoughts.

00:57:15.764 --> 00:57:18.347
I learned Spanish in college and I learned German

00:57:18.387 --> 00:57:20.389
in high school. I just try to keep current

00:57:20.429 --> 00:57:22.531
with that, but I'm not particularly fluent in

00:57:22.631 --> 00:57:23.692
either.

00:57:23.712 --> 00:57:26.035
There was a wonderful IndieWeb Carnival that

00:57:26.075 --> 00:57:26.455
came up.

00:57:26.515 --> 00:57:28.798
It was called Multilingualism on the Web and

00:57:28.818 --> 00:57:30.880
that's when I sat down and I'm like, okay, I want

00:57:30.940 --> 00:57:32.061
to do this.

00:57:32.081 --> 00:57:34.044
I'm going to write this article and I'm not just

00:57:34.084 --> 00:57:35.265
going to write it in one language.

00:57:35.285 --> 00:57:37.087
I'm going to write it in all three languages that

00:57:37.147 --> 00:57:38.148
I speak.

00:57:38.168 --> 00:57:40.631
Hugo has these facilities for taking the same

00:57:40.731 --> 00:57:43.233
article and publishing them on all three sites

00:57:43.293 --> 00:57:44.775
and linking them across each other.

00:57:45.430 --> 00:57:48.974
And ox-hugo, that passes through.

00:57:48.994 --> 00:57:51.856
ox-hugo uses Hugo as a compilation target.

00:57:51.996 --> 00:57:56.061
ox-hugo, I was able to set the metadata on there.

00:57:56.081 --> 00:57:58.462
If you've noticed my file name in this editor...

00:57:58.463 --> 00:58:04.169
I name everything after Simpsons puns: cromulent.en.org.

00:58:04.189 --> 00:58:09.073
And then I also have... I do have them separated by language.

00:58:10.415 --> 00:58:12.737
Here's my Spanish document and then,

00:58:13.983 --> 00:58:16.507
very predictably, here's my German document.

00:58:17.007 --> 00:58:19.850
By doing this in Org Mode with ox-hugo,

00:58:19.851 --> 00:58:22.035
I'm able to link together the posts that are

00:58:22.075 --> 00:58:24.378
translated into multiple languages.

00:58:24.398 --> 00:58:26.040
And then those all appear, if you go out to the

00:58:26.101 --> 00:58:29.085
Hugo site, like the rossabaker.com, you can go

00:58:29.165 --> 00:58:30.787
there and anything that's available in multiple

00:58:30.827 --> 00:58:32.450
languages, that'll show up.

00:58:32.470 --> 00:58:34.052
You can click through the Spanish or German

00:58:34.092 --> 00:58:35.434
translation of those.

00:58:35.617 --> 00:58:37.019
[Sacha]: I didn't notice any shortcuts in

00:58:37.039 --> 00:58:39.363
your config for quickly switching to another,

00:58:39.503 --> 00:58:42.407
like the Org mode source in a different language

00:58:42.468 --> 00:58:43.309
for the same post.

00:58:43.389 --> 00:58:46.373
Would you happen to have any conveniences like

00:58:46.414 --> 00:58:46.614
that,

00:58:47.095 --> 00:58:49.078
or do you just manually switch to the other file

00:58:49.138 --> 00:58:50.520
and then find it?

00:58:50.540 --> 00:58:52.763
[Ross]: I just manually switch to that, but

00:58:52.843 --> 00:58:53.965
the data is all there.

00:58:54.025 --> 00:58:58.933
The file names have to line up, so that's

00:58:58.973 --> 00:59:00.195
definitely a helper I could write.

00:59:00.515 --> 00:59:02.518
If I can find time to get back into this, that

00:59:02.558 --> 00:59:04.341
would be an excellent. I love your idea.

00:59:04.827 --> 00:59:05.989
[Sacha]: Yeah, because I figured,

00:59:06.029 --> 00:59:07.832
if you're going to write something, you might

00:59:07.872 --> 00:59:09.775
want to switch between languages very quickly.

00:59:09.795 --> 00:59:12.860
If you make an edit, okay, "I'm going to add this thought to it.

00:59:13.140 --> 00:59:14.162
I want to switch to the other ones."

00:59:14.422 --> 00:59:15.944
[Ross]: Yeah, typically I'll just take care

00:59:15.984 --> 00:59:17.927
of that with a split window and I'll have the two

00:59:17.988 --> 00:59:18.849
up there that way.

00:59:19.610 --> 00:59:21.513
That way, I'm comparing them side by side.

00:59:21.573 --> 00:59:23.777
That's probably why I haven't had that yet,

00:59:23.817 --> 00:59:26.200
but it would still be nice to see, okay, "I do

00:59:26.260 --> 00:59:27.583
want to make a quick edit in there."

00:59:27.603 --> 00:59:29.365
It would at least scroll me to that point in the

00:59:29.405 --> 00:59:30.447
other window quicker.

00:59:31.523 --> 00:59:33.466
[Sacha]: If you add more language-related

00:59:33.486 --> 00:59:36.291
stuff to your extended config, I'm very

00:59:36.351 --> 00:59:39.516
interested in what people use to look up

00:59:39.577 --> 00:59:41.440
dictionaries, look up example sentences, and

00:59:41.460 --> 00:59:42.722
things like that.

00:59:42.802 --> 00:59:45.527
@blaiseutube says, "Recovering linguist here.

00:59:45.667 --> 00:59:47.690
English, Spanish, and French for work.

00:59:47.730 --> 00:59:50.595
Japanese, Portuguese, Sanskrit, and Swedish for fun."

00:59:50.575 --> 00:59:54.720
So I'm guessing there are a lot of linguists or

00:59:55.320 --> 00:59:58.363
people who do language learning as a hobby who

00:59:58.384 --> 00:59:59.345
use Emacs.

00:59:59.365 --> 01:00:01.267
It's great because you can switch to all the

01:00:01.427 --> 01:00:03.309
different input methods very easily too.

01:00:03.489 --> 01:00:05.311
It's all text.

01:00:08.214 --> 01:00:09.035
Oh, this is fantastic.

01:00:09.115 --> 01:00:10.617
[Ross]: For all the diacritics that we

01:00:10.657 --> 01:00:13.839
don't have on the US layout keyboard,

01:00:13.840 --> 01:00:17.224
the `C-x 8` key binding.

01:00:17.592 --> 01:00:21.817
Autocomplete if you need an obscure Unicode

01:00:21.857 --> 01:00:24.240
character, and it'll autocomplete on all those.

01:00:25.141 --> 01:00:29.186
So, okay, I want nice little built-in there.

01:00:30.488 --> 01:00:32.090
[Sacha]: Yeah, on Linux, I've just been

01:00:32.170 --> 01:00:34.673
using `setxkbmap` to switch my layout

01:00:34.693 --> 01:00:37.697
temporarily, but I also like just being able to

01:00:37.777 --> 01:00:41.361
set the input method in Emacs in case I just want

01:00:41.401 --> 01:00:43.704
to write something quickly, then I can just

01:00:43.744 --> 01:00:46.268
`C-\`, I think.

01:00:46.548 --> 01:00:51.816
Okay, I've got about one minute

01:00:51.856 --> 01:00:53.599
before the kid does lunch break.

01:00:53.619 --> 01:00:54.761
Thank you so much for doing this.

01:00:55.442 --> 01:00:58.667
Was there anything that you wanted to pass on as

01:00:58.728 --> 01:01:03.195
a key tip that you'd like people to know from

01:01:03.235 --> 01:01:07.362
your experience with using Emacs?

01:01:07.763 --> 01:01:11.309
What's something we haven't mentioned that you'd

01:01:11.329 --> 01:01:11.950
like to share?

01:01:13.246 --> 01:01:17.159
[Ross]: I guess I didn't mention the things that I think

01:01:17.279 --> 01:01:18.483
are exciting outside.

01:01:18.503 --> 01:01:20.289
We talked about the built-in configs, so the

01:01:20.349 --> 01:01:24.522
things that I missed the most, I would say...

01:01:25.480 --> 01:01:27.602
Well, I guess look at my crab juice config.

01:01:27.743 --> 01:01:29.685
Those are the packages that I found that I

01:01:29.765 --> 01:01:31.307
absolutely cannot live without.

01:01:31.867 --> 01:01:33.589
Magit, a few language modes.

01:01:34.651 --> 01:01:36.673
You can get by on the built-in thing a lot better

01:01:36.713 --> 01:01:38.315
than you think, but there are a few things that

01:01:38.335 --> 01:01:40.417
are out there that are the really special ones,

01:01:40.437 --> 01:01:42.339
and I think that's the distilled essence of that.

01:01:42.580 --> 01:01:44.482
Just take a look at that package.

01:01:44.502 --> 01:01:46.504
Those are the ones that, yeah, I tried really

01:01:46.544 --> 01:01:48.427
hard on the built-ins and I failed.

01:01:48.467 --> 01:01:50.269
These are the ones I really need.

01:01:50.289 --> 01:01:51.951
I'd encourage people to take a look at that as well.

01:01:52.772 --> 01:01:53.192
[Sacha]: All right.

01:01:53.493 --> 01:01:56.745
For folks who are watching, you can find all

01:01:56.765 --> 01:01:58.893
of that stuff at rossabaker.com.

01:01:59.615 --> 01:02:00.378
Thank you so much.

01:02:00.659 --> 01:02:04.212
You've got links to your GitHub and Berg.

01:02:04.883 --> 01:02:10.188
Thanks to everyone on the stream for hanging out

01:02:10.268 --> 01:02:11.890
and for sharing your questions and comments.

01:02:12.471 --> 01:02:17.716
I almost forgot to mention [@ispringle] had a tip

01:02:17.776 --> 01:02:23.242
about putting emacs-lock-mode on a keyboard

01:02:23.262 --> 01:02:27.606
shortcut so you can toggle it if you wanted to.

01:02:28.307 --> 01:02:29.147
Nice idea.

01:02:29.428 --> 01:02:30.329
Again, thank you everyone.

01:02:30.349 --> 01:02:31.650
We're going to end the stream here.

01:02:31.630 --> 01:02:33.494
I will work on the transcripts and all that stuff.

01:02:33.574 --> 01:02:36.500
Thanks again Ross for doing this, and I'll see

01:02:36.540 --> 01:02:38.905
everyone around probably in September or October

01:02:38.945 --> 01:02:44.998
because I have to be on summer vacation.
