WEBVTT

NOTE Intro

00:00:00.000 --> 00:00:07.759
[Sacha]: Okay, so I'm going to actually remember to hit go live.

00:00:07.760 --> 00:00:17.479
I've got a 10 second delay, so if we need to panic, we can panic.

00:00:17.480 --> 00:00:20.199
Okay, so let's see.

00:00:20.200 --> 00:00:22.159
I think we are live.

00:00:22.160 --> 00:00:24.199
Hi, everyone.

00:00:24.200 --> 00:00:28.359
This is Emacs Chat number 22 after a long hiatus.

00:00:28.360 --> 00:00:33.679
And today, I'm here with Shae Erisson, who is also like

00:00:33.680 --> 00:00:35.359
an Emacs friend from a long time back.

00:00:35.360 --> 00:00:36.439
So this is it.

00:00:36.440 --> 00:00:40.999
As you were just saying, this is the first time we're actually

00:00:41.000 --> 00:00:42.919
talking live.

00:00:42.920 --> 00:00:46.479
And I'm looking forward to hearing about your configuration, how you

00:00:46.480 --> 00:00:47.919
use Emacs, Shae.

00:00:47.920 --> 00:00:50.999
But before we dive into that, can you give us a little bit of context?

00:00:51.000 --> 00:00:54.108
Who you are, what sorts of things you do,

00:00:54.109 --> 00:00:57.199
and how you use Emacs for that?

NOTE 1999, IRC, community building in Haskell

00:00:57.200 --> 00:01:01.159
[Shae]: I would say that...

00:01:01.160 --> 00:01:09.679
I guess I started using Emacs in 1999 when I moved to Finland.

00:01:09.680 --> 00:01:14.399
And I remember about the same time I was on IRC and I was really

00:01:14.400 --> 00:01:14.879
frustrated.

00:01:14.880 --> 00:01:17.159
I remember I got on the Perl IRC channel and I was like, hey, I want

00:01:17.160 --> 00:01:19.039
an editor that has syntax highlighting.

00:01:19.040 --> 00:01:21.359
I want to see colors to these words when I'm typing them.

00:01:21.360 --> 00:01:23.879
And they were like, noob, and they kick-banned me.

00:01:23.880 --> 00:01:28.279
And I was like, well, maybe I don't want to learn Perl, which I never

00:01:28.280 --> 00:01:28.399
did.

00:01:28.400 --> 00:01:31.519
And I guess that was an early introduction into I wanted to be part

00:01:31.520 --> 00:01:36.239
of communities where people were sharing positive things and building

00:01:36.240 --> 00:01:37.679
up each other.

00:01:37.680 --> 00:01:41.119
Actually, I ended up starting the Haskell IRC channel a couple of

00:01:41.120 --> 00:01:44.239
years later, and that became a very big thing.

00:01:44.240 --> 00:01:47.919
I would say that I'm mostly known for my work in community building

00:01:47.920 --> 00:01:51.519
in the Haskell programming language community, because I did that

00:01:51.520 --> 00:01:56.399
for, I don't know, 15 or 20 years.

00:01:56.400 --> 00:01:58.959
But I really like Emacs.

NOTE Emacs as a light-weight build-your-own-editor toolkit

00:01:58.960 --> 00:02:02.959
So like last week at the same time I had the standing chat with a

00:02:02.960 --> 00:02:07.199
friend of mine who is also a programmer and he said oh so you're

00:02:07.200 --> 00:02:09.079
going to do this thing in a week do you want to give me like a

00:02:09.080 --> 00:02:12.959
preview of the talk and I was like yeah I guess so and some of the

00:02:12.960 --> 00:02:15.479
things that were really interesting was he was like I've never really

00:02:15.480 --> 00:02:19.319
tried Emacs I don't know much about it I kind of have this impression

00:02:19.320 --> 00:02:25.439
that it is a very lightweight build your own editor toolkit and I

00:02:25.440 --> 00:02:31.239
I was kind of taken aback because, you know, I guess I still have

00:02:31.240 --> 00:02:33.359
this long ago and far away.

00:02:33.360 --> 00:02:36.159
I don't know if you remember 8 Megs and Constantly Swapping is what

00:02:36.160 --> 00:02:39.439
people used to call Emacs and things like that.

00:02:39.440 --> 00:02:43.399
And I was, it was just kind of, I realized I'm still in my little

00:02:43.400 --> 00:02:44.039
echo chamber.

00:02:44.040 --> 00:02:46.919
And this is why I like to talk to other people all the time is

00:02:46.920 --> 00:02:51.479
because I want to have some exposure to what other people are doing.

NOTE LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust

00:02:51.480 --> 00:02:55.679
I guess things about Emacs that really changed stuff for me is

00:02:55.680 --> 00:03:00.919
language server protocol, TreeSitter.

00:03:00.920 --> 00:03:03.999
Those, I think, are two very powerful tools that are much more

00:03:04.000 --> 00:03:07.799
generic than, I mean, Magit, of course, is like magic.

00:03:07.800 --> 00:03:11.119
Although I've mostly switched to jujitsu lately instead for the last

00:03:11.120 --> 00:03:12.319
year.

00:03:12.320 --> 00:03:17.799
Let's see, I had, I guess, let's see, I did C++, I did Python, I did

00:03:17.800 --> 00:03:21.319
a whole lot of Python.

00:03:21.320 --> 00:03:25.719
And then I had Haskell jobs for five or six years.

00:03:25.720 --> 00:03:28.959
And then I switched to Rust about a year and a half ago.

00:03:28.960 --> 00:03:31.079
I now have a Rust job.

00:03:31.080 --> 00:03:34.759
And one of the things that Prot had asked, I think, or you had asked,

00:03:34.760 --> 00:03:35.779
and I forget exactly how this went.

NOTE how does a new person experience Emacs? Emacs is always fun.

00:03:35.780 --> 00:03:38.319
It was great fun watching your livestream.

00:03:38.320 --> 00:03:40.319
And it was, how does a new person

00:03:40.320 --> 00:03:44.839
kind of get comfortable with using Emacs for a particular purpose.

00:03:44.840 --> 00:03:49.559
And I look for things, in fact, like how do I use Emacs for Rust,

00:03:49.560 --> 00:03:50.199
Rust development?

00:03:50.200 --> 00:03:53.999
And I found a couple of good guides on, and I was able to follow most

00:03:54.000 --> 00:03:56.679
of them, although my Yesnitit stuff is broken and I don't exactly

00:03:56.680 --> 00:03:58.439
know why tab doesn't work, right?

00:03:58.440 --> 00:04:02.679
But, you know, like there's always, Emacs is always fun, right?

00:04:02.680 --> 00:04:03.799
There's so many cool things you could do with it.

NOTE Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala

00:04:03.800 --> 00:04:07.199
I noticed, I actually hadn't seen your preview page and I noticed

00:04:07.200 --> 00:04:11.619
that you found my Markov keyboard.

00:04:11.620 --> 00:04:14.679
[Sacha]: When you say Emacs is fun, I'm reminded of all of your fun,

00:04:14.680 --> 00:04:18.439
crazy keyboard experiments.

00:04:18.440 --> 00:04:20.639
It's like, what?

00:04:20.640 --> 00:04:25.499
I have a feeling you like to tinker with things.

00:04:25.500 --> 00:04:31.599
[Shae]: Yeah, so I think actually the influences as to how I got to

00:04:31.600 --> 00:04:35.099
where I am are pretty interesting.

00:04:35.100 --> 00:04:40.479
So the person that I ended up moving to Finland to for dating her, we

00:04:40.480 --> 00:04:45.839
started a company, we did projects, and I was the programmer. We had

00:04:45.840 --> 00:04:49.359
this pretty big project. I guess it was like 350,000 euros.

00:04:49.360 --> 00:04:52.000
And I mean, that was going to be over four years

00:04:52.001 --> 00:04:53.033
and we had to kind of complete the whole thing,

00:04:53.034 --> 00:04:57.239
and I was the programmer and we'd had the lowest bid...

00:04:57.240 --> 00:05:00.879
I had an IBM model M, you know, the super clicky with like all the...

00:05:00.880 --> 00:05:05.319
And about three years into it, my arm started really hurting a lot.

00:05:05.320 --> 00:05:07.719
But I was the only programmer.

00:05:07.720 --> 00:05:08.959
And nobody else knew all the code.

00:05:08.960 --> 00:05:10.519
And we had to ship it, because that's how we got paid.

00:05:10.520 --> 00:05:12.399
And so I ended up pushing through.

00:05:12.400 --> 00:05:16.119
And at the end of it, my arm just didn't work anymore.

00:05:16.120 --> 00:05:21.479
So for about a year and three months, what I did was I actually

00:05:21.480 --> 00:05:23.159
taught myself to type right hand.

00:05:23.160 --> 00:05:25.367
...Dvorak, because I was already using two-hand Dvorak,

00:05:25.368 --> 00:05:27.933
and so I kept programming, but I just...

00:05:27.934 --> 00:05:30.500
One of the things was... like, I like programming,

00:05:30.501 --> 00:05:32.900
I like using computers, I don't want to wear out my arms again,

00:05:32.901 --> 00:05:33.933
I don't want to blow them out,

00:05:33.934 --> 00:05:37.000
so I ended up switching to split keyboards,

00:05:37.001 --> 00:05:38.533
and I will show you.

00:05:38.534 --> 00:05:42.033
This is very much the kind of thing that I like to use,

00:05:42.034 --> 00:05:44.467
and that is like this.

NOTE
#+SCREENSHOT: /home/sacha/proj/yay-emacs/mpv-shot0060.jpg
#+SCREENSHOT_TIME: 00:05:44.800
#+SCREENSHOT_CROP: 1105 201 1416 428

00:05:44.780 --> 00:05:47.133
This is an Ergodox Infinity,

00:05:47.134 --> 00:05:49.367
but there's a lot of other keyboard flavors like this.

00:05:49.368 --> 00:05:52.867
And one of the things that I particularly like about this...

00:05:52.868 --> 00:05:54.900
So around the same time I met Jeff Raskin,

00:05:54.901 --> 00:06:15.239
who wrote the Inhumane Interface.

00:06:15.240 --> 00:06:20.679
And so for this particular thing, this is like Control and Alt and

00:06:03.500 --> 00:06:03.500
Hyper and Super and Shift.

00:06:03.501 --> 00:06:09.433
And this means that under one thumb, I have a lot more modifier keys

00:06:09.434 --> 00:06:11.933
than you get off of a standard.

00:06:11.934 --> 00:06:12.700
And it also means...

00:06:12.701 --> 00:06:14.733
A lot of my problems started with Emacs pinky,

00:06:14.734 --> 00:06:18.519
the dreaded, the infamous...

00:06:18.520 --> 00:06:22.567
I think that one of my... I made a keyboard layout

00:06:22.568 --> 00:06:24.867
called "I am not koala." You may not know this,

00:06:24.868 --> 00:06:27.033
but koalas have two thumbs. They have one on each side.

00:06:27.034 --> 00:06:29.600
And that's cool, but I don't have two thumbs,

00:06:29.601 --> 00:06:32.367
and I realized that when I was trying to grab something,

00:06:32.368 --> 00:06:34.067
I didn't put my pinky on it. That would be silly, right?

00:06:34.068 --> 00:06:35.719
I want to put my thumb around it.

00:06:35.720 --> 00:06:36.993
And so I decided I would move

00:06:36.994 --> 00:06:40.299
all of my chording keys under my thumbs.

00:06:40.300 --> 00:06:43.367
And that's kind of how I...

NOTE Purpose-specific function keys

00:06:43.368 --> 00:06:45.159
And another thing I did was when I was

00:06:45.160 --> 00:06:47.479
really only able to use one hand,

00:06:47.480 --> 00:06:51.719
was I made my function keys mostly purpose-specific.

00:06:51.720 --> 00:06:54.519
And that was from Jeff Raskin's writings in The Humane Interface.

00:06:54.520 --> 00:07:01.559
So I guess I'm a programmer who really likes writing code, doesn't

00:07:01.560 --> 00:07:06.199
want to wear out my arms, and likes to do fun keyboard things, yeah.

00:07:06.200 --> 00:07:08.340
[Sacha]: Definitely. You're in it for the long term.

00:07:08.341 --> 00:07:14.367
You don't want to use up all of your arm capacity now

00:07:14.368 --> 00:07:16.719
and not be able to keep programming in the future.

00:07:16.720 --> 00:07:19.079
And now there's hardware to make that easier.

00:07:19.080 --> 00:07:20.039
So I'm glad.

00:07:20.040 --> 00:07:24.559
Split keyboards with extra thumb keys seem to be very popular in

00:07:24.560 --> 00:07:25.599
the Emacs community.

00:07:25.600 --> 00:07:30.919
I'm now tempted to find space in my desk in order to make that happen.

NOTE
Trackballs, scroll
#+SCREENSHOT: ec22-shae-erisson-00-07-37-067.jpg
#+SCREENSHOT_TIME: 00:07:37.067
#+SCREENSHOT_CROP: 1257 328 1434 477

00:07:30.920 --> 00:07:34.039
[Shae]: Another thing I ended up switching to was I started using

00:07:34.040 --> 00:07:35.239
trackballs.

00:07:35.240 --> 00:07:35.799
Oh yeah, yeah.

00:07:35.800 --> 00:07:41.479
I tend to go completely overboard when trying out new things, so I

00:07:41.480 --> 00:07:46.439
bought 20 different models of trackballs and ended up settling on

00:07:46.440 --> 00:07:47.599
this one.

00:07:47.600 --> 00:07:55.799
The nice thing about this one is that this is how you scroll, and it

00:07:55.800 --> 00:07:55.379
has four buttons.

00:07:55.380 --> 00:07:59.767
[Sacha]: That is really cool. I like using ThinkPads,

00:07:59.768 --> 00:08:01.679
so I've been just living off the tiny little

00:08:01.680 --> 00:08:03.319
mouse in the middle of the keyboard.

00:08:03.320 --> 00:08:06.959
But back in the day, I also used a trackball.

00:08:06.960 --> 00:08:10.199
If I can get to the point where I want to take my hands off the

00:08:10.200 --> 00:08:12.479
keyboard again in order to do mouse things, that would probably be

00:08:12.480 --> 00:08:14.159
the direction I would go.

NOTE 1" trackpad rings

00:08:14.160 --> 00:08:17.119
[Shae]: I had an experiment in that area, which is where I purchased

00:08:17.120 --> 00:08:20.239
a one-inch touchpad, and I strapped it to my finger.

00:08:20.240 --> 00:08:24.759
And it was a PS2, and it had a USB converter plugged into it.

00:08:24.760 --> 00:08:28.719
And the idea was I could keep typing, and then I could move the mouse

00:08:28.720 --> 00:08:31.839
around without taking my hands off the keyboard.

00:08:31.840 --> 00:08:34.719
And now they actually have touchpad rings.

00:08:34.720 --> 00:08:38.039
They came out six months or a year ago.

00:08:38.040 --> 00:08:39.839
It's relatively recent.

00:08:39.840 --> 00:08:42.019
But the idea is no change in context.

00:08:42.020 --> 00:08:43.933
[Sacha]: I've only seen the scroll rings,

00:08:43.934 --> 00:08:46.199
but now there's a touchpad version.

00:08:46.200 --> 00:08:47.479
That is interesting.

00:08:47.480 --> 00:08:50.639
[Shae]: Yeah, I think that's pretty cool stuff.

00:08:50.640 --> 00:08:54.139
Hardware is actually improving things.

NOTE Pair programming: ttyshare, shwim

00:08:54.140 --> 00:08:58.559
Oh, another thing, one of the things you talked about with Prot was

00:08:58.560 --> 00:09:00.559
how do you learn other people's stuff?

00:09:00.560 --> 00:09:05.119
And one of the things that I use for pairing, so I have one coworker,

00:09:05.120 --> 00:09:06.799
and it's a strange, interesting job.

00:09:06.800 --> 00:09:09.919
I like it a lot.

00:09:09.920 --> 00:09:15.679
And I met this coworker at a previous job, and one of the things,

00:09:15.680 --> 00:09:18.479
let's see if I can find it.

00:09:18.480 --> 00:09:20.406
So we used to, at the previous job,

00:09:20.407 --> 00:09:22.439
we used this thing called ttyshare.

00:09:22.440 --> 00:09:23.079
Have you heard of it?

00:09:23.080 --> 00:09:25.959
ttyshare.

00:09:25.960 --> 00:09:26.879
It's great.

00:09:26.880 --> 00:09:29.599
You can run it in a terminal and then you can effectively share your

00:09:29.600 --> 00:09:31.399
terminal with someone else.

00:09:31.400 --> 00:09:34.879
And so you have multiplayer terminals and that's neat.

00:09:34.880 --> 00:09:37.639
It was kind of a pain to set up.

00:09:37.640 --> 00:09:39.116
You had to make sure that you weren't NATed,

00:09:39.117 --> 00:09:40.675
you know, like you had to have effectively...

00:09:40.676 --> 00:09:41.759
someone had to have a public IP.

00:09:41.760 --> 00:09:42.839
You had to do a couple of other things.

00:09:42.840 --> 00:09:47.639
And as part of my job, I'm now, I guess, part maintainer for Magic

00:09:47.640 --> 00:09:48.839
Wormhole, the software.

NOTE
#+SCREENSHOT: /home/sacha/proj/yay-emacs/mpv-shot0059.jpg
#+SCREENSHOT_TIME: 00:09:58.467

00:09:48.840 --> 00:09:56.159
And so one of the things that my coworker wrote was this nifty thing

00:09:56.160 --> 00:09:58.439
called ShWiM.

00:09:58.440 --> 00:09:59.719
And it's basically "shell with me."

00:09:59.720 --> 00:10:04.199
And it's a wrapper around TTY share so that with one single command,

00:10:04.200 --> 00:10:06.239
you can share a terminal.

00:10:06.240 --> 00:10:09.559
And the way that we use this is...

00:10:09.560 --> 00:10:17.359
We both run Emacs as a server, and then we use emacsclient in the

00:10:17.360 --> 00:10:18.639
terminal to connect.

NOTE
#+SCREENSHOT: /home/sacha/proj/yay-emacs/mpv-shot0058.jpg
#+SCREENSHOT_TIME: 00:10:41.967

00:10:18.640 --> 00:10:21.919
I don't know if you've ever done this, but I can have a terminal

00:10:21.920 --> 00:10:28.119
right next to this, and if I run emacsclient in a window, then I'm

00:10:28.120 --> 00:10:29.399
sharing the same thing.

00:10:29.400 --> 00:10:34.800
This is a graphical chat with Sacha,

00:10:34.801 --> 00:10:42.699
in the terminal or in the UI, and both of them are updated.

00:10:42.680 --> 00:10:44.200
[Sacha]: That's fantastic.

00:10:44.200 --> 00:10:47.360
I remember people were using tmate for something similar before

00:10:47.360 --> 00:10:48.920
where you could share that.

00:10:48.920 --> 00:10:53.320
But yeah, it's just making it seamless, making it frictionless.

00:10:53.320 --> 00:10:56.800
And on the other side, I have also just been

00:10:56.800 --> 00:10:59.600
using wormhole to send large files

00:10:59.600 --> 00:11:04.240
back and forth between Karthik and John Wiegley because we have this

00:11:04.240 --> 00:11:07.360
other Emacs chat thing where we're going to post it eventually,

00:11:07.360 --> 00:11:08.760
once I finish figuring out how to

00:11:08.760 --> 00:11:11.440
redact all the personal information and Org files.

00:11:11.440 --> 00:11:14.600
But yeah, it's great for being able to send things without having to

00:11:14.600 --> 00:11:17.120
worry about, oh, you know, what's my public IP?

00:11:17.120 --> 00:11:20.960
Can I tunnel all the different things to get past whatever firewalls

00:11:20.960 --> 00:11:21.800
there are?

00:11:21.800 --> 00:11:26.200
So if this also works for terminal things plus Emacs client, that

00:11:26.200 --> 00:11:31.640
sounds really, really exciting.

00:11:31.640 --> 00:11:32.000
[Shae]: We've tried some other experiments.

00:11:32.040 --> 00:11:36.919
One of the things we tried to do was, and the only downside is like,

00:11:36.920 --> 00:11:39.839
what if my terminal has a different size, then you have to kind of

00:11:39.840 --> 00:11:41.559
shrink and match.

00:11:41.560 --> 00:11:45.599
And so we tried to honestly directly bridge to Emacs clients.

00:11:45.600 --> 00:11:49.039
And because I don't know if you're aware that there's effectively a

00:11:49.040 --> 00:11:52.479
local socket for the Emacs client that you can have multiple things

00:11:52.480 --> 00:11:53.039
connect to.

00:11:53.040 --> 00:11:56.799
But it turns out there's some sort of like system so I couldn't like

00:11:56.800 --> 00:12:01.119
reach across the network and directly use my co-workers Emacs session

00:12:01.120 --> 00:12:02.279
and he couldn't use mine.

00:12:02.280 --> 00:12:05.559
Weird things happened when we tried to do this cross host.

00:12:05.560 --> 00:12:09.499
As far as I can tell the Emacs client only works in the same host.

00:12:09.500 --> 00:12:10.679
[Sacha]: That's interesting.

00:12:10.680 --> 00:12:15.199
Lately, I've also been experimenting with CRDT, which has that

00:12:15.200 --> 00:12:16.439
Emacs-less plant as well.

00:12:16.440 --> 00:12:17.719
So that's been nice.

00:12:17.720 --> 00:12:22.559
But yeah, of course, a lot of people will be kind of stuck with the

00:12:22.560 --> 00:12:29.979
first challenge of finding someone that they can pair in Emacs with.

00:12:29.980 --> 00:12:31.039
[Shae]: I understand.

00:12:31.040 --> 00:12:35.359
And I think I'm honestly very happy that my one single coworker at

00:12:35.360 --> 00:12:37.679
this job is also a big Emacs user.

00:12:37.680 --> 00:12:41.359
And so we exchanged cool ideas and worked on stuff.

00:12:41.360 --> 00:12:44.579
And I'm very happy about that.

00:12:44.580 --> 00:12:48.399
[Sacha]: Were they already an Emacs person before they joined?

00:12:48.400 --> 00:12:53.539
Or did you pick the coworker because they were an Emacs person?

00:12:53.540 --> 00:12:54.333
[Shae]: They picked me.

00:12:54.334 --> 00:12:58.199
They were pretty much the person who started this thing.

00:12:58.200 --> 00:13:02.199
And they picked me because they'd worked with me at the previous job.

00:13:02.200 --> 00:13:04.639
Although I did have an experience like that.

00:13:04.640 --> 00:13:09.199
I had this massive Emacs config file, like 20,000 lines, and half of

00:13:09.200 --> 00:13:13.039
it was comments because it had accrued over 20 years.

NOTE Recurse Center, "What is that keyboard? What is that editor?!", Emacs bankruptcy and starter kits

00:13:13.040 --> 00:13:20.479
And in 2019, when I first went to the Recurse Center, well, my first

00:13:20.480 --> 00:13:22.879
batch, I just was extremely extroverted and social.

00:13:22.880 --> 00:13:25.639
But my second immediate following batch, which is not the common

00:13:25.640 --> 00:13:28.399
pattern, I was like, okay, my goal is to write a bunch of Haskell,

00:13:28.400 --> 00:13:29.959
get some Haskell jobs,

00:13:29.960 --> 00:13:33.159
And so I went to the quiet room on the quiet floor.

00:13:33.160 --> 00:13:36.639
But then someone else came in, Marianne, my favorite programming

00:13:36.640 --> 00:13:37.159
friend.

00:13:37.160 --> 00:13:39.559
And she was like, what is that keyboard you're using?

00:13:39.560 --> 00:13:42.199
And I was like, ah, this is an Ergodox thing.

00:13:42.200 --> 00:13:44.159
And then she's like, what is this editor you're using?

00:13:44.160 --> 00:13:45.879
And I was like, oh, that's Emacs.

00:13:45.880 --> 00:13:48.919
And I was kind of a grumpy, like, I'm trying to get stuff done.

00:13:48.920 --> 00:13:50.159
But she was persistent.

00:13:50.160 --> 00:13:52.879
She was like, show me this thing.

00:13:52.880 --> 00:13:54.919
And so I was like, I'll show you Emacs.

00:13:54.920 --> 00:13:56.439
And she was like, this is great.

00:13:56.440 --> 00:13:57.799
And I was like.

00:13:57.800 --> 00:13:58.399
This thing?

00:13:58.400 --> 00:14:00.959
OK, cool.

00:14:00.960 --> 00:14:04.159
And I was like, I don't think you want my config.

00:14:04.160 --> 00:14:05.919
You'll probably want a starter kit.

00:14:05.920 --> 00:14:08.239
And she was like, well, what are starter kits?

00:14:08.240 --> 00:14:10.159
And I was like, well, I've heard about Spacemacs.

00:14:10.160 --> 00:14:11.119
I've heard about Doom.

00:14:11.120 --> 00:14:12.679
And I would try one of those.

00:14:12.680 --> 00:14:14.119
So she tried Spacemacs.

00:14:14.120 --> 00:14:17.159
And I guess this next part happened over several months.

00:14:17.160 --> 00:14:18.199
She tried Spacemacs.

00:14:18.200 --> 00:14:20.199
And then she was like, I like it, but it's slow.

00:14:20.200 --> 00:14:21.399
So I'm switching to Doom Emacs.

00:14:21.400 --> 00:14:22.279
And I would pair with her.

00:14:22.280 --> 00:14:26.479
And I was like, wow, look at all these cool things that the starter

00:14:26.480 --> 00:14:27.519
kits can do.

00:14:27.520 --> 00:14:33.119
I ended up flushing my entire 20-year-old config and kind of starting

00:14:33.120 --> 00:14:36.519
over and stealing a lot of great ideas from the starter kits.

00:14:36.520 --> 00:14:43.839
And Marianne is very ambitious, independent, hardworking, very

00:14:43.840 --> 00:14:44.279
focused.

00:14:44.280 --> 00:14:45.239
I'm not very focused.

00:14:45.240 --> 00:14:49.039
But I've learned a lot of things from her and watching her kind of...

00:14:49.040 --> 00:14:54.159
I haven't done C in Emacs in a long time so it's great fun to watch

00:14:54.160 --> 00:14:58.079
her learn these new things and then I learned stuff too and yeah it's

00:14:58.080 --> 00:15:02.319
good to have collaborative people to work with.

00:15:02.320 --> 00:15:05.039
[Sacha]: So it sounds like if people would like to encourage more

00:15:05.040 --> 00:15:08.199
people to talk to them about Emacs, feel free to use your strange

00:15:08.200 --> 00:15:11.079
keyboards out in public.

00:15:11.080 --> 00:15:11.839
[Shae]: I like that.

00:15:11.840 --> 00:15:14.039
That's good.

00:15:14.040 --> 00:15:15.719
That is good.

00:15:15.720 --> 00:15:18.759
Yeah I think that's reasonable.

00:15:18.760 --> 00:15:21.719
[Sacha]: Yeah, and I've just recently started digging into the

00:15:21.720 --> 00:15:24.519
starter kits too, because I realized I don't know much about them.

00:15:24.520 --> 00:15:27.999
It is really interesting going through them and discovering all these

00:15:28.000 --> 00:15:32.679
Emacs 31 options that you can enable to simplify your config or

00:15:32.680 --> 00:15:34.759
improve your workflow and all that stuff.

00:15:34.760 --> 00:15:37.639
So there's a lot of good stuff in starter kits, even for people who

00:15:37.640 --> 00:15:39.939
are not newcomers.

00:15:39.940 --> 00:15:40.879
[Shae]: I agree.

00:15:40.880 --> 00:15:46.319
And I think there's nothing wrong with just learning a bunch of new

00:15:46.320 --> 00:15:49.639
things, trying them out, and also throwing them away if you don't

00:15:49.640 --> 00:15:50.199
like them.

00:15:50.200 --> 00:15:54.679
[Sacha]: Now that you've declared Emacs bankruptcy and rebuilt your

00:15:54.680 --> 00:15:58.999
Emacs on top of other people's starter kits, what has made it into

00:15:59.000 --> 00:15:59.999
your config?

00:16:00.000 --> 00:16:03.519
What have you kept from those 20 years of tinkering with Emacs that

00:16:03.520 --> 00:16:05.999
you really wanted to stick around?

NOTE hippie-expand

00:16:06.000 --> 00:16:09.359
[Shae]: I think the only thing that has absolutely stuck around is my

00:16:09.360 --> 00:16:12.519
use of hippie-expand, which is, I believe, a very old...

00:16:12.520 --> 00:16:16.159
an ancient tool from a different time.

00:16:16.160 --> 00:16:20.519
Most of the other stuff is kind of gone.

00:16:20.520 --> 00:16:21.759
Gone to the wayside.

00:16:21.760 --> 00:16:25.519
But I really like, I honestly really like hippie-expand.

00:16:25.520 --> 00:16:29.159
And I know that like, I have rarely heard of other people who use

00:16:29.160 --> 00:16:30.159
hippie-expand.

00:16:30.160 --> 00:16:31.039
But you use it?

00:16:31.040 --> 00:16:35.679
I think you just muted yourself.

00:16:35.680 --> 00:16:37.959
[Sacha]: I also vote for hippie-expand.

00:16:37.960 --> 00:16:42.519
It's a nice way to try different functions and just say, I just want

00:16:42.520 --> 00:16:46.659
all these different possible completions to go in there.

00:16:46.660 --> 00:16:47.239
[Shae]: Yeah.

00:16:47.240 --> 00:16:53.439
The thing for me that really sold me on hippie-expand is that most of

00:16:53.440 --> 00:16:54.919
the time when I am...

00:16:54.920 --> 00:16:58.159
When I'm doing something, I want to say, like, I can already see that

00:16:58.160 --> 00:16:59.759
word, just pick that one.

00:16:59.760 --> 00:17:02.919
And so I'll type the first characters and hit, like, meta forward

00:17:02.920 --> 00:17:04.919
slash, and ta-da, it's usually there.

00:17:04.920 --> 00:17:07.879
But then sometimes I do really want, like, some Elisp or some other

00:17:07.880 --> 00:17:08.279
stuff.

00:17:08.280 --> 00:17:14.319
And so I actually spent a lot of time tuning this the first time.

NOTE yasnippet

00:17:14.320 --> 00:17:18.999
I actually only changed it for the first time recently because I was

00:17:19.000 --> 00:17:24.599
reading a how to write Rust well inside Emacs and they said oh well

00:17:24.600 --> 00:17:29.719
you want to use yasnippet and so I you know the funny thing is that

00:17:29.720 --> 00:17:33.759
yasnippet I believe is the thing that got me into Emacs like in 1999

00:17:33.760 --> 00:17:39.079
I met this Finnish person Erno Kuusela in Oulu, Finland.

00:17:39.080 --> 00:17:40.199
Really cool guy.

00:17:40.200 --> 00:17:42.959
I was like, wow, how do you do this?

00:17:42.960 --> 00:17:47.839
As soon as you open a file, it's got a substructure and a skeleton.

00:17:47.840 --> 00:17:49.849
And when you type part of a function or something,

00:17:49.850 --> 00:17:51.467
it just populates it.

00:17:51.468 --> 00:17:53.759
And he was like, I'm using this snippet command in Emacs.

00:17:53.760 --> 00:17:55.559
That's why I was like, what's Emacs?

00:17:55.560 --> 00:17:57.879
It was very exciting.

00:17:57.880 --> 00:18:01.199
And at the time, I was using Vim.

00:18:01.200 --> 00:18:08.539
And Vim was not as, I don't want to say, automatable.

00:18:08.540 --> 00:18:12.959
[Sacha]: Yeah, now with Neovim and Lua, people are writing more

00:18:12.960 --> 00:18:14.039
extensions for it.

00:18:14.040 --> 00:18:19.619
But before, you had to know a lot of magic in order to customize Vim.

00:18:19.620 --> 00:18:20.639
[Shae]: Right, right.

00:18:20.640 --> 00:18:21.279
I agree.

00:18:21.280 --> 00:18:23.839
Let's see, what else do I do?

00:18:23.840 --> 00:18:28.559
I run my own email server, and I, of course, read my email in Emacs.

00:18:28.560 --> 00:18:30.159
In GNU, no less.

00:18:30.160 --> 00:18:39.119
Which is, I know, an NNTP reader, but it's still also a great...

00:18:39.120 --> 00:18:43.199
I used to use twiddle compile and I think that stopped working like

00:18:43.200 --> 00:18:50.999
six years ago, so I need to get rid of this comment, but there's

00:18:51.000 --> 00:18:52.839
still a lot of kind of cruft from earlier times.

NOTE Function keys

00:18:52.840 --> 00:19:01.199
Remember how I said that I use function keys to have like purpose

00:19:01.200 --> 00:19:03.039
specific stuff?

00:19:03.040 --> 00:19:10.879
This was especially true because, I mean, I had my left arm strapped

00:19:10.880 --> 00:19:18.559
to my chest for like a year and three months before I even started

00:19:18.560 --> 00:19:24.959
regaining any flexibility, and that meant that...

00:19:24.960 --> 00:19:31.279
I'm amazed that you could just map them directly to single commands

00:19:31.280 --> 00:19:34.999
instead of giving in to the temptation to make them prefixes for

00:19:35.000 --> 00:19:36.319
longer keystrokes.

00:19:36.320 --> 00:19:41.079
I didn't really have the choice because I had only one arm that

00:19:41.080 --> 00:19:45.200
worked. It was just a lot harder to do any chording at the time.

00:19:45.201 --> 00:19:48.267
I still have a lot of these.

00:19:48.268 --> 00:19:52.133
F3 I use a lot, which is like, oh, what am I working on right now?

00:19:52.134 --> 00:19:55.300
That is org-clock-goto.

00:19:55.301 --> 00:19:58.133
A lot of times, I want to have a terminal

00:19:58.134 --> 00:20:02.140
that's in Emacs, so that's vterm,

NOTE
Org Mode
#+SCREENSHOT: ec22-shae-erisson-00-20-17-133.jpg
#+SCREENSHOT_TIME: 00:20:17.133

00:20:02.141 --> 00:20:05.159
And I actually really do use the calendar all the time. This is like

00:20:05.160 --> 00:20:11.119
just switch to whatever it is. Of course, my email is here. You know

00:20:11.120 --> 00:20:17.119
what, let's see... So this... I don't know, have you seen this

00:20:17.120 --> 00:20:23.939
before? Have you seen this thing called STARTED in an Org mode file?

00:20:23.940 --> 00:20:27.339
[Sacha]: I use a STARTED state, yes.

00:20:27.340 --> 00:20:32.579
[Shae]: Well, I got it from you!

00:20:32.580 --> 00:20:35.067
So if I look at like, my Org Mode configuration,

00:20:35.068 --> 00:20:38.333
a lot of this STARTED stuff I have from you,

00:20:38.334 --> 00:20:39.467
I don't know when,

00:20:39.468 --> 00:20:41.839
but you were the person who introduced me to it.

00:20:41.840 --> 00:20:46.367
[Sacha]: It's the reminder that I did start working on this.

00:20:46.368 --> 00:20:49.933
I tend to get distracted by intermediate tasks, so it's nice to be

00:20:49.934 --> 00:20:53.067
able to say, try to finish these ones first before you move on to the

00:20:53.068 --> 00:20:54.700
next thing, maybe?

00:20:54.680 --> 00:20:57.967
[Shae]: I agree. I have the same thing, yeah.

00:20:57.968 --> 00:21:01.233
And I keep meaning, because this is...

00:21:01.234 --> 00:21:04.300
I know that you can put Org Mode configuration into the first

00:21:04.301 --> 00:21:07.267
TODO item. I would really like to move it into the elisp

00:21:07.268 --> 00:21:09.133
and I just haven't gotten around to it.

00:21:09.134 --> 00:21:10.600
And it's been 10 years. I mean,

00:21:10.601 --> 00:21:14.499
maybe I should just do it.

NOTE Show Org agenda when idle
#+SCREENSHOT: ec22-shae-erisson-00-21-23-933.jpg
#+SCREENSHOT_TIME: 00:21:23.933
#+SCREENSHOT_CROP: 28 194 922 771

00:21:14.500 --> 00:21:17.800
One of the things I did that I found fun...

00:21:17.801 --> 00:21:20.767
I really have written almost zero Elisp,

00:21:20.760 --> 00:21:26.280
but I did actually puzzle my way through this a year ago.

00:21:26.280 --> 00:21:31.320
Since so much of my life is in Org Mode, I learned how to make timers.

00:21:31.320 --> 00:21:35.320
This is very close to what you get directly out of how to do timers

00:21:35.320 --> 00:21:36.560
in Emacs.

00:21:36.560 --> 00:21:43.400
After some amount of time, I want my Org agenda to pop up because I

00:21:43.400 --> 00:21:45.600
want to say like, oh, what is the stuff I'm supposed to be doing?

00:21:45.600 --> 00:21:46.720
And what am I forgetting?

00:21:46.720 --> 00:21:47.800
What has been scheduled?

00:21:47.800 --> 00:21:48.760
And what is on my to-do list?

00:21:48.760 --> 00:21:50.120
And I also like to look at

00:21:50.120 --> 00:21:52.680
what is the stuff I've been working on lately?

00:21:52.680 --> 00:21:58.040
And I really like that a lot.

NOTE
Programmers want flow. When programming, light turns red
#+SCREENSHOT: ec22-shae-erisson-00-22-16-067.jpg
#+SCREENSHOT_TIME: 00:22:16.067
#+SCREENSHOT_CROP: 30 207 534 765

00:21:58.120 --> 00:22:03.760
Another thing that I realized is that I had a blog post

00:22:03.760 --> 00:22:05.960
that was wildly popular.

00:22:05.960 --> 00:22:07.120
Where did I put it?

00:22:07.120 --> 00:22:08.720
And it was all about Emacs.

00:22:08.720 --> 00:22:12.720
I don't know if you saw the... Here we go.

00:22:12.720 --> 00:22:15.200
It was... Ah, here it is.

00:22:15.200 --> 00:22:18.567
So here it is in... This is very much an Emacs...

00:22:18.568 --> 00:22:20.400
[Sacha]: Oh, yeah, I remember that one.

00:22:20.920 --> 00:22:21.960
I put it in Emacs News.

00:22:21.960 --> 00:22:23.520
I thought it was great.

00:22:23.520 --> 00:22:24.800
[Shae]: All right, cool.

00:22:24.800 --> 00:22:28.221
[Sacha]: I would like the kiddo to sometimes be able to acknowledge this,

00:22:28.222 --> 00:22:29.840
but this is not happening.

00:22:29.840 --> 00:22:31.979
Still, yes.

00:22:31.980 --> 00:22:32.840
[Shae]: Right, right.

00:22:32.868 --> 00:22:35.839
Yeah, and so this was really fun because, like...

00:22:35.840 --> 00:22:41.639
I had a friend who was in development and there was like millions of

00:22:41.640 --> 00:22:44.719
dollars spent on how do you detect whether a programmer is in flow

00:22:44.720 --> 00:22:49.159
and it came down to if they're typing they're probably in flow so and

00:22:49.160 --> 00:22:53.679
that was it because they tried to look at EGs and doing all kinds of

00:22:53.680 --> 00:22:57.599
other stuff but it was like if they're typing don't interrupt them.

00:22:57.600 --> 00:22:59.900
And I don't know, because I do so much in Emacs, I'm not sure how

00:22:59.901 --> 00:23:01.433
accurate this was. But basically,

00:23:01.434 --> 00:23:03.000
that's where I learned to do timers the first time.

00:23:03.001 --> 00:23:05.133
Or maybe... I don't remember which one I did first.

00:23:05.134 --> 00:23:10.767
And the idea then was as soon as basically my average typing into

00:23:10.768 --> 00:23:12.900
Emacs has gone up a certain amount,

00:23:12.901 --> 00:23:14.833
then it will actually switch to busy.

00:23:14.834 --> 00:23:21.179
And it works just fine. It was a lot of fun to write.

00:23:21.180 --> 00:23:25.679
[Sacha]: So yeah, interesting use of getting the activity.

00:23:25.680 --> 00:23:28.519
I've seen other fun implementations of this.

00:23:28.520 --> 00:23:32.279
I think there's a c-c-c-combo package that makes some fun

00:23:32.280 --> 00:23:35.479
animation appear if you're typing really quickly.

00:23:35.480 --> 00:23:37.279
[Shae]: Oh, oh, yeah.

00:23:37.280 --> 00:23:41.239
I'm guessing because I think Atom, the Atom editor had that for a

00:23:41.240 --> 00:23:41.759
while.

00:23:41.760 --> 00:23:44.859
I guess that's where it came from.

00:23:44.860 --> 00:23:48.133
[Sacha]: So yeah, because you can instrument Emacs and play around

00:23:48.134 --> 00:23:50.767
with it, you can certainly do all sorts of things based on that

00:23:50.768 --> 00:23:53.040
information.

00:23:53.040 --> 00:23:55.720
Okay, so you've got it, you've got it set up so that when you come

00:23:55.720 --> 00:23:58.040
back to your computer, it'll show you the stuff that you've been

00:23:58.040 --> 00:23:58.560
working on.

00:23:58.560 --> 00:24:01.700
And when you're working on the things, you can tell it to tell the

00:24:01.701 --> 00:24:03.167
rest of the world not to bug you.

00:24:03.168 --> 00:24:04.279
Gotcha.

00:24:04.280 --> 00:24:06.779
[Shae]: That's right.

00:24:06.780 --> 00:24:09.400
[Sacha: What other fun stuff do you have in there?

NOTE ef-themes and modus-themes, season

00:24:25.840 --> 00:24:27.000
[Shae]: I discovered that I love the EF themes.

00:24:27.000 --> 00:24:28.960
I love the Modus themes.

00:24:28.960 --> 00:24:30.400
They make me very happy.

00:24:30.400 --> 00:24:32.100
They're just unreasonably pleasant.

00:24:32.101 --> 00:24:36.167
As someone who has tried every single Emacs theme ever, they're just

00:24:36.168 --> 00:24:37.033
my favorite themes.

NOTE
#+SCREENSHOT: ec22-shae-erisson-00-24-41-000.jpg
#+SCREENSHOT_TIME: 00:24:41.000

00:24:37.034 --> 00:24:41.000
And so, at the moment, it's

00:24:41.001 --> 00:24:49.999
summer... Where did my summer go? How can this be? There we go.

00:24:50.000 --> 00:24:53.600
How come I'm in spring? Wait, isn't spring over?

00:24:53.601 --> 00:24:54.767
Hasn't summer just started?

00:24:54.768 --> 00:24:58.033
You know what I was thinking would be fun would be take the time of

00:24:58.034 --> 00:25:02.480
day, and you know that the EF themes has spring, summer, autumn,

00:25:02.480 --> 00:25:06.267
and winter, and I'm not sure if there are dark versions of each of

00:25:06.268 --> 00:25:09.360
those, but I thought, like I know that Modus themes will do this like

00:25:09.360 --> 00:25:13.333
check for the local time of when it turns dark, and then it

00:25:13.334 --> 00:25:16.067
will go from the light theme to the dark theme as soon as the sun

00:25:16.068 --> 00:25:18.100
hits, and I was like, well, what if I do that for seasons, you know,

00:25:18.101 --> 00:25:19.867
wouldn't that be cool?

00:25:19.868 --> 00:25:29.399
[Sacha]: There's this subtle sense of change as you go through the year.

00:25:29.400 --> 00:25:31.033
But of course you also have this thing there

00:25:31.034 --> 00:25:33.099
where you just randomize it.

00:25:33.100 --> 00:25:34.100
[Shae]: Well, I like that.

00:25:34.101 --> 00:25:37.467
Sometimes it's like I'm just kind of like, ah, I'm bored.

00:25:37.468 --> 00:25:38.640
I'm just bored of what I'm looking at.

00:25:38.640 --> 00:25:41.880
And so I will just change my thing.

00:25:41.880 --> 00:25:44.200
And it's just time for something.

00:25:44.200 --> 00:25:44.720
I don't know.

00:25:44.720 --> 00:25:45.600
It seems to work.

00:25:45.600 --> 00:25:48.640
It's like it gives me a little brain break from what I was staring at.

00:25:48.640 --> 00:25:54.200
And I did not know I was going to reset the effects scale, but that's

00:25:54.200 --> 00:25:54.800
fine.

00:25:54.800 --> 00:25:55.480
Interesting.

00:25:55.480 --> 00:25:56.960
What else do I have in here?

NOTE htmlize (does this still work on Wayland?)

00:25:56.960 --> 00:25:58.840
Oh, Emacs HTMLize.

00:25:58.840 --> 00:26:00.080
I'm a little sad.

00:26:00.080 --> 00:26:01.520
I switched to Wayland.

00:26:01.520 --> 00:26:05.520
And if I remember correctly, HTMLize only works with, or maybe

00:26:05.520 --> 00:26:09.400
HTMLize still works, and it's the SVG one that doesn't work.

00:26:09.400 --> 00:26:14.560
Emacs SVG is a thing that if you're running with an X11 backend, you

00:26:14.560 --> 00:26:18.280
can turn your current screen directly into an SVG, which is really

00:26:18.280 --> 00:26:18.720
cute.

00:26:18.720 --> 00:26:19.640
It does not work in Wayland.

00:26:19.640 --> 00:26:21.920
I think HTMLize does still work.

00:26:21.920 --> 00:26:24.680
What other things do I have in here?

00:26:24.680 --> 00:26:25.880
I don't know.

00:26:25.880 --> 00:26:29.160
I guess a lot of it lately has been trying to make Rust things work

00:26:29.160 --> 00:26:30.280
smoothly.

00:26:30.280 --> 00:26:36.400
I've been trying to do some... I wonder does... Oh, cool.

00:26:36.400 --> 00:26:37.633
That was not what I expected.

NOTE
lsp-ui-imenu, jumping through rust code
#+SCREENSHOT: ec22-shae-erisson-00-26-41-100.jpg
#+SCREENSHOT_TIME: 00:26:41.100

00:26:37.634 --> 00:26:40.300
I just started doing this thing with imenu.

00:26:40.301 --> 00:26:43.133
imenu integrates nicely with LSP.

00:26:43.134 --> 00:26:46.833
[Sacha]: That is a very pretty sidebar thing, and I need to learn how

00:26:46.834 --> 00:26:51.359
to do that.

00:26:51.360 --> 00:26:55.639
[Shae]: So because I have all these extra modifiers, my s-i is

00:26:55.640 --> 00:26:57.039
lsp-ui-imenu.

00:26:57.040 --> 00:27:02.119
And the reason that what I mostly use that for is when I have like a

00:27:02.120 --> 00:27:05.859
bunch of Rust code and I want to quickly jump through the structure

00:27:05.860 --> 00:27:10.579
of it.

00:27:10.580 --> 00:27:13.719
Basically that integrates with LSP, finds all the definitions, and I

00:27:13.720 --> 00:27:15.079
can quickly jump through it.

00:27:15.080 --> 00:27:18.879
I used to use lsp-treemacs for that, but lsp-treemacs puts things in

00:27:18.880 --> 00:27:25.079
its own order, not quite the same order I want, although treemacs is

00:27:25.080 --> 00:27:27.679
quite nice.

00:27:27.680 --> 00:27:31.319
I think that the thing to do is that you and I at some time maybe the

00:27:31.320 --> 00:27:33.759
next time if we do this again we should set up with a Shwim

00:27:33.760 --> 00:27:37.279
connection and you and I can both share our Emacs and then you can

00:27:37.280 --> 00:27:40.039
show me cool things that you do and I can show you cool things that I

00:27:40.040 --> 00:27:42.359
do and then we can start filing over some of the things.

00:27:42.360 --> 00:27:43.899
How about that?

00:27:43.900 --> 00:27:44.919
[Sacha]: That sounds fantastic.

00:27:44.920 --> 00:27:48.439
I know we'd wanted to experiment with pair programming a long time

00:27:48.440 --> 00:27:52.959
ago so that sounds like a seamless way to do it.

00:27:52.960 --> 00:27:55.839
And therefore I will go and figure out how to install shim and get it

00:27:55.840 --> 00:27:56.399
working.

00:27:56.400 --> 00:27:58.679
I will probably need your help to actually test it.

00:27:58.680 --> 00:28:00.839
I don't know, I think I can rustle up.

00:28:00.840 --> 00:28:02.359
Maybe it'll work off my phone.

00:28:02.360 --> 00:28:05.679
You haven't tried that.

00:28:05.680 --> 00:28:11.679
But lspui, okay, so I've just been using straight up imenu, like on

00:28:11.680 --> 00:28:16.159
Neanderthal, but lsp-ui has this fancy grouping of things and colors

00:28:16.160 --> 00:28:20.159
and stuff, so I definitely want to check that out.

00:28:20.160 --> 00:28:21.439
[Shae]: I'm a fan, yeah.

00:28:21.440 --> 00:28:23.599
I don't know.

00:28:23.600 --> 00:28:25.479
Do I have anything else exciting that goes with this in here?

NOTE laptop with 126GB of RAM

00:28:25.480 --> 00:28:30.719
I will say that at the moment, the system I'm working on, I like

00:28:30.720 --> 00:28:35.839
buying unreasonably powerful laptops.

00:28:35.840 --> 00:28:46.599
And so, like, this system has 128 gigs of RAM and 24 cores.

00:28:46.600 --> 00:28:50.479
My previous laptop has 192 gigs of RAM.

00:28:50.480 --> 00:28:57.279
Long story short, I end up in a lot of cases where I want to use more

00:28:57.280 --> 00:28:58.279
memory.

00:28:58.280 --> 00:28:59.559
I've got all these cores.

00:28:59.560 --> 00:29:01.319
Can you do something with them?

00:29:01.320 --> 00:29:08.319
Perhaps you've already seen things like LSP doctor, which will say,

00:29:08.320 --> 00:29:10.079
have you tried this thing?

00:29:10.080 --> 00:29:11.119
Have you done this other thing?

00:29:11.120 --> 00:29:14.679
LSP has really changed

00:29:14.680 --> 00:29:15.999
[Sacha]: I have not.

00:29:16.000 --> 00:29:18.719
Sorry, would you like to show me this LSP doctor thing?

00:29:18.720 --> 00:29:20.859
Because I have not ever seen it.

00:29:20.860 --> 00:29:21.319
[Shae]: Yeah.

00:29:21.320 --> 00:29:25.559
Do you use language servers much for your development?

00:29:25.560 --> 00:29:29.079
[Sacha]: I am only just getting used to having a relatively modern

00:29:29.080 --> 00:29:33.119
2018 instead of 2010 laptop.

00:29:33.120 --> 00:29:36.279
And so I have the red squigglies and various things, but I don't know

00:29:36.280 --> 00:29:38.519
what to do with them yet.

00:29:38.520 --> 00:29:42.639
[Shae]: Well, I mean, I'm doing a lot of this.

00:29:42.640 --> 00:29:46.039
So I have...

NOTE LSP coolness, Haskell, treesitter

00:29:46.040 --> 00:29:48.479
Originally for me it was like I spent a lot of time with the Haskell

00:29:48.480 --> 00:29:51.319
language server because I was doing so much Haskell and it was a

00:29:51.320 --> 00:29:52.359
super powerful thing.

00:29:52.360 --> 00:29:56.039
In fact, somebody decided to hammer in half of a proof assistant into

00:29:56.040 --> 00:29:58.199
the Haskell language server and that was magic.

00:29:58.200 --> 00:30:00.999
You could do incredible stuff with that because you could just grab

00:30:01.000 --> 00:30:03.399
all of your local variables and transform the whole shape of your

00:30:03.400 --> 00:30:06.119
function and you could just write little snippets and just have it

00:30:06.120 --> 00:30:06.519
work.

00:30:06.520 --> 00:30:08.519
And that was amazing.

00:30:08.520 --> 00:30:12.039
It wasn't quite... One of the goals that I believe is...

00:30:12.040 --> 00:30:17.159
For future development of all programming editors, I believe that

00:30:17.160 --> 00:30:21.479
something like Emacs macros, but instead for abstract syntax trees, I

00:30:21.480 --> 00:30:24.439
believe this is an essential ingredient that we do not yet have.

00:30:24.440 --> 00:30:27.719
And I think that TreeSitter is the first step towards there.

00:30:27.720 --> 00:30:29.159
We now have one of the hats, right?

00:30:29.160 --> 00:30:33.239
Which is where we can take... TreeSitter is, you know, if you've used

00:30:33.240 --> 00:30:35.799
it...

00:30:35.800 --> 00:30:39.839
It is like you write some effectively C code to produce a really fast

00:30:39.840 --> 00:30:40.279
parser.

00:30:40.280 --> 00:30:43.359
Or is it like JavaScript that then compiles to C code?

00:30:43.360 --> 00:30:44.959
I forget exactly how it works.

00:30:44.960 --> 00:30:48.119
But the nice thing about TreeSitter is, I don't know if you remember,

00:30:48.120 --> 00:30:51.159
I'm sure you do remember, that if you were writing Python code and

00:30:51.160 --> 00:30:53.639
you used a triple-quoted string, you had to then add a comment with

00:30:53.640 --> 00:30:57.279
another quote because regular expressions is how Emacs was doing all

00:30:57.280 --> 00:30:58.859
the syntax highlighting.

00:30:58.860 --> 00:31:00.399
And honestly, that was kind of crap.

00:31:00.400 --> 00:31:05.239
And then there were projects like the Semantic Bovinator that made a

00:31:05.240 --> 00:31:11.519
full parsing suite in Elisp, which to me is half brilliant and half

00:31:11.520 --> 00:31:12.599
insane.

00:31:12.600 --> 00:31:16.799
And then there was TreeSitter, which kind of took over the world

00:31:16.800 --> 00:31:20.239
because it was... I think that the language server and TreeSitter are

00:31:20.240 --> 00:31:24.959
the first two of these editor generic pieces, and I suspect there

00:31:24.960 --> 00:31:25.519
will be more.

00:31:25.520 --> 00:31:29.159
I think that something where you can modify the abstract syntax tree

00:31:29.160 --> 00:31:30.559
and then put back to the source

00:31:30.560 --> 00:31:32.759
is one of those potential paths forward.

00:31:32.760 --> 00:31:34.539
I hope so.

00:31:34.540 --> 00:31:36.239
[Sacha]: Yeah, that would be great if you could just do the

00:31:36.240 --> 00:31:39.039
manipulations and then roundtrip it back into source code.

00:31:39.040 --> 00:31:43.199
Just regenerate the changed part of your code.

00:31:43.200 --> 00:31:44.359
That sounds fantastic.

00:31:44.360 --> 00:31:48.599
So it sounds like you were able to do some kind of manipulation with

00:31:48.600 --> 00:31:51.199
the Haskell use case that you were describing.

00:31:51.200 --> 00:31:54.739
Any chance you can show us like the awesomeness?

00:31:54.740 --> 00:31:55.279
[Shae]: Sadly,

00:31:55.280 --> 00:31:58.919
that sadly does not work anymore.

NOTE Combobulate

00:31:58.920 --> 00:32:02.279
But you know, if you're looking for something in that area, have you

00:32:02.280 --> 00:32:06.179
heard of a Emacs library called Combobulate?

00:32:06.180 --> 00:32:07.159
[Sacha]: I have heard of it.

00:32:07.160 --> 00:32:08.819
I haven't dug into it.

00:32:08.820 --> 00:32:14.719
[Shae]: So it uses TreeSitter for source code manipulation by, and

00:32:14.720 --> 00:32:17.479
it's a lot closer to the way that like, you know, in Org Mode, you

00:32:17.480 --> 00:32:21.519
can like hold meta and arrow to kind of move things around.

00:32:21.520 --> 00:32:26.719
It uses TreeSitter to let you both move around in the context as well

00:32:26.720 --> 00:32:29.119
as actually alter the shape.

00:32:29.120 --> 00:32:34.119
And to me, this is the first step towards this tool that I want,

00:32:34.120 --> 00:32:37.999
which is where I can write a keyboard macro and have it edit an

00:32:38.000 --> 00:32:41.959
abstract syntax tree and then spit the results back into the buffer.

00:32:41.960 --> 00:32:45.299
Yeah.

00:32:45.300 --> 00:32:46.199
[Sacha]: All right.

NOTE What else are you using your 126 gigabytes of RAM for?

00:32:46.200 --> 00:32:52.259
What else are you using your 126 gigabytes of RAM for?

00:32:52.260 --> 00:32:54.499
[Shae]: Let's see.

00:32:54.500 --> 00:32:57.239
Honestly, I'm going to tell you that Rust Analyzer can take a lot of

00:32:57.240 --> 00:32:57.839
memory.

00:32:57.840 --> 00:33:00.479
And a Rust compilation can take a lot of cores.

00:33:00.480 --> 00:33:06.479
And I'm okay with that because I actually, I do like, and I will say

00:33:06.480 --> 00:33:08.719
that this laptop is actually from this year.

00:33:08.720 --> 00:33:12.079
So it's a brand new, like, top of the line.

00:33:12.080 --> 00:33:16.399
But then like, how would I, because I've got like, which I think is a

00:33:16.400 --> 00:33:18.199
bunch of matrix multiplication hardware.

00:33:18.200 --> 00:33:20.159
How do I use that from Emacs?

00:33:20.160 --> 00:33:25.520
I don't know. I'm sure I can find something, you know.

NOTE TalonVoice

00:33:25.521 --> 00:33:27.859
[Sacha]: Maybe voice computing?

00:33:27.860 --> 00:33:32.333
[Shae]: Oh, that's an idea. Yeah, one of my friends, she's using Talon.

00:33:32.334 --> 00:33:32.334
Have you heard of Talon?

00:33:30.280 --> 00:33:34.499
[Sacha]: Yeah, I've heard of Talon.

00:33:34.500 --> 00:33:37.399
There are a couple of videos about people using Talon to code by

00:33:37.400 --> 00:33:42.159
voice, usually involving memorizing kind of a different alphabet for

00:33:42.160 --> 00:33:45.199
very quickly accessing different shortcuts.

00:33:45.200 --> 00:33:47.799
But it sounds really cool, and you sound like you've got the hardware

00:33:47.800 --> 00:33:49.159
to do something amazing with it.

00:33:49.160 --> 00:33:50.799
[Shae]: That's true.

00:33:50.800 --> 00:33:54.399
Well, you know, Talon actually lets you do something very similar to

00:33:54.400 --> 00:33:57.999
Combobulate, where you can navigate the AST of your source code.

00:33:58.000 --> 00:34:00.479
You can kind of move around very quickly.

00:34:00.480 --> 00:34:03.919
I don't know, like, are we like at the end of our?

00:34:03.920 --> 00:34:06.519
No, no, we're halfway through, right?

00:34:06.520 --> 00:34:07.599
[Sacha]: We're halfway through.

00:34:07.600 --> 00:34:11.279
I have about 28 minutes before the kiddo runs out and starts

00:34:11.280 --> 00:34:13.599
demanding lunch.

00:34:13.600 --> 00:34:17.119
[Shae]: Okay, well, I feel like I've been driving the structure of

00:34:17.120 --> 00:34:19.119
our just kind of like dumping random things.

00:34:19.120 --> 00:34:22.079
Did you have any questions or anything you wanted to cover?

00:34:22.080 --> 00:34:23.919
[Sacha]: This is all amazing.

00:34:23.920 --> 00:34:26.239
I come in with no preconceived notions.

00:34:26.240 --> 00:34:29.279
I'm just like, okay, shapr does cool things with Emacs.

00:34:29.280 --> 00:34:31.239
Let's hear about it.

00:34:31.240 --> 00:34:32.719
Let's go, let's go.

00:34:32.720 --> 00:34:34.939
[Shae]: That works for me.

00:34:34.940 --> 00:34:37.199
Yeah.

00:34:37.200 --> 00:34:39.879
I mean, a lot of it's been focused on Rust development lately.

00:34:43.500 --> 00:34:45.019
Rust and Jujutsu.

NOTE NixOS, following Steve Purcell about 5 years behind

00:34:45.020 --> 00:34:46.119
I've been doing a lot of Nix.

00:34:46.120 --> 00:34:47.199
I'm running NixOS.

00:34:47.200 --> 00:34:53.279
I don't know if you're familiar, but that's been great fun.

00:34:53.280 --> 00:34:57.079
It's funny, I feel like I've been following Steve Purcell around from

00:34:57.080 --> 00:34:58.879
a technical perspective.

00:34:58.880 --> 00:35:03.439
I'm always about five years behind Steve.

NOTE envrc

00:35:03.440 --> 00:35:06.639
I was like, oh, you know, NixOS is kind of a pain with Emacs.

00:35:06.640 --> 00:35:11.039
And just like this, what was it, NixOS?

00:35:11.040 --> 00:35:11.679
I forget.

00:35:11.680 --> 00:35:15.679
Anyway, Steve was like, oh, well, have you tried my library, envrc?

00:35:15.680 --> 00:35:16.719
And I was like, what's that?

00:35:16.720 --> 00:35:19.079
And he was like, well, now each buffer can have its own envrc.

00:35:19.080 --> 00:35:21.119
And I was like, it's perfect.

00:35:21.120 --> 00:35:22.199
That's exactly what I need.

00:35:22.200 --> 00:35:26.559
Because previously, every time I switched buffers, it would then go

00:35:26.560 --> 00:35:27.639
load all of the local

00:35:27.640 --> 00:35:29.879
everything in Nix.

00:35:29.880 --> 00:35:33.399
And sometimes that could take a long time, especially if I'm doing

00:35:33.400 --> 00:35:37.519
Haskell, that could take 10 seconds, and I really don't want that

00:35:37.520 --> 00:35:38.039
sort of lag.

00:35:38.040 --> 00:35:42.679
And so Steve Purcell's brilliant library, envrc, says, you know what?

00:35:42.680 --> 00:35:46.279
Every single buffer can just keep such a thing, and then you can only

00:35:46.280 --> 00:35:46.959
relit it when you need to.

00:35:46.960 --> 00:35:49.259
And that's pretty awesome.

00:35:49.260 --> 00:35:52.619
[Sacha]: That sounds cool, and I should check that out too.

NOTE time-tracking

00:35:52.620 --> 00:35:54.279
@JacksonScholberg has a question.

00:35:54.280 --> 00:35:57.399
He says, "I was curious about what you were tracking your time working

00:35:57.400 --> 00:35:58.839
on, how you track it."

00:35:58.840 --> 00:36:00.999
Is it just Org Clock?

00:36:01.000 --> 00:36:05.839
So this is how you keep track of the things you're working on and

00:36:05.840 --> 00:36:11.119
what got interrupted by the new thing that you just added to the

00:36:11.120 --> 00:36:12.639
stack and so forth?

00:36:12.640 --> 00:36:12.759
[Shae]: Right.

00:36:12.760 --> 00:36:14.399
In fact, I have this thing.

00:36:14.400 --> 00:36:15.639
Honestly, when I sit down on my computer,

00:36:15.640 --> 00:36:17.079
Just clock in.

00:36:17.080 --> 00:36:22.359
You'll notice in the bottom right here, we have chat with Sacha,

00:36:22.360 --> 00:36:23.039
right?

00:36:23.040 --> 00:36:24.999
And so like, I just kind of clock in stuff.

00:36:25.000 --> 00:36:31.279
And like, I'm not always, I really kind of need to reorganize my Org

00:36:31.280 --> 00:36:34.559
mode files because I've been naming them per host because I

00:36:34.560 --> 00:36:37.719
previously had like a work Org mode and I had a home Org mode.

00:36:37.720 --> 00:36:42.559
now that my home hardware is also my work hardware I guess and so

00:36:42.560 --> 00:36:46.319
like I still have my previous laptops things where I'm keeping my

00:36:46.320 --> 00:36:50.439
events I really need to reorganize things but I mean yeah I schedule

00:36:50.440 --> 00:37:01.059
things I oh you know I've got a weird thing to show you

NOTE
taxes with Org Mode, remote lookup
#+SCREENSHOT: ec22-shae-erisson-00-37-09-900.jpg
#+SCREENSHOT_TIME: 00:37:09.900

00:37:01.060 --> 00:37:05.232
I decided that it would be great fun to do my taxes.

00:37:05.233 --> 00:37:07.839
[Sacha]: You are showing me your taxes, do I need to like black out

00:37:07.840 --> 00:37:09.899
this whole thing?

00:37:09.900 --> 00:37:13.279
[Shae]: Well, this is actually just an example from the docs.

00:37:13.280 --> 00:37:18.799
So I could actually share my taxes on it because I mostly don't care.

00:37:18.800 --> 00:37:23.959
But I think in fact you can figure out exactly how much money I'm

00:37:23.960 --> 00:37:26.559
making by looking at the open whatever.

00:37:26.560 --> 00:37:31.799
So the thing about this is that I decided to file all of my tax forms

00:37:31.800 --> 00:37:36.559
directly into Org Mode spreadsheets and then do remote lookups.

00:37:36.560 --> 00:37:40.279
So basically each spreadsheet was one particular form.

00:37:40.280 --> 00:37:43.439
And then once I'd gotten to the bottom, like I need this result, like

00:37:43.440 --> 00:37:45.519
what's my estimated income?

00:37:45.520 --> 00:37:50.199
And then I would use the lookup, kind of this cross spreadsheet

00:37:50.200 --> 00:37:50.879
lookup.

00:37:50.880 --> 00:37:52.839
And that's how I did my taxes for last year.

00:37:52.840 --> 00:37:59.959
And then my de facto mother-in-law, she's an accountant, and she

00:37:59.960 --> 00:38:02.439
didn't exactly do this thing, but it was pretty close.

00:38:02.440 --> 00:38:05.279
She was like, you've got all your taxes in the spreadsheet.

00:38:05.280 --> 00:38:06.439
I was like, yeah.

00:38:06.440 --> 00:38:08.639
And then she looked at it and she was like, what is that?

00:38:08.640 --> 00:38:10.239
And I was like, anyway.

00:38:10.240 --> 00:38:15.879
So I got to kind of file everything back out into TurboTax, but that

00:38:15.880 --> 00:38:16.919
was a fun thing to build.

00:38:16.920 --> 00:38:21.079
[Sacha]: Yeah, I have something like that too.

00:38:21.080 --> 00:38:25.959
So for example, whenever I do my tax paperwork, I just have to have

00:38:25.960 --> 00:38:28.239
like, you know, the step by step checklist.

00:38:28.240 --> 00:38:30.199
Okay, this is where I need to go to get this number.

00:38:30.200 --> 00:38:32.079
This is where I can put it in.

00:38:32.080 --> 00:38:35.279
And then eventually it spits out a table that says, okay, put this in

00:38:35.280 --> 00:38:39.839
box 11, put this in box 13, so that I don't have to do the steps by

00:38:39.840 --> 00:38:41.079
hand.

00:38:41.080 --> 00:38:45.719
Because even before the, you know, for me, I use like simple stacks

00:38:45.720 --> 00:38:47.659
or whatever, it's web based.

00:38:47.660 --> 00:38:50.239
But before you get to the point where you can put the numbers in the

00:38:50.240 --> 00:38:54.119
form, you gotta go to this website, calculate this thing, and Org

00:38:54.120 --> 00:38:58.079
just makes all of that so much easier.

00:38:58.080 --> 00:38:58.759
[Shae]: I agree.

00:38:58.760 --> 00:39:01.139
Yeah.

00:39:01.140 --> 00:39:05.359
[Sacha]: And this remote lookup thing is something I'm always looking

00:39:05.360 --> 00:39:09.199
up because Org tables are so powerful, but also I need more examples

00:39:09.200 --> 00:39:11.959
in my life to remember how to use them.

00:39:11.960 --> 00:39:15.479
[Shae]: Well, I think it took me four hours the first time to get it

00:39:15.480 --> 00:39:16.399
all figured out.

00:39:16.400 --> 00:39:19.199
But I can send you an example without showing it here.

00:39:19.200 --> 00:39:23.719
I can send you an example because I figured out, I think I've

00:39:23.720 --> 00:39:26.619
hammered the remote lookup down very thoroughly.

00:39:26.620 --> 00:39:30.919
[Sacha]: And once you've got it right, you can just keep filling that

00:39:30.920 --> 00:39:32.439
in or copy and paste it.

00:39:32.440 --> 00:39:37.979
You have an example of the syntax and that's already all you need.

00:39:37.980 --> 00:39:38.399
[Shae]: Right.

00:39:38.400 --> 00:39:42.039
I did run across some limitations of the

00:39:42.040 --> 00:39:46.833
evaluation method of Org mode spreadsheets.

00:39:46.834 --> 00:39:49.667
But maybe I've been using them a little too hard,

00:39:49.668 --> 00:39:51.100
if that makes any sense.

00:39:51.101 --> 00:39:53.000
[Sacha]: Oh, what kind of limitation?

00:39:53.001 --> 00:40:00.267
[Shae]: Honestly, I think I finally found a way to say every

00:40:00.268 --> 00:40:02.439
single... Because it was...

00:40:02.440 --> 00:40:08.439
So really the way that spreadsheets work is they're much more like

00:40:08.440 --> 00:40:08.959
Dataflow.

00:40:08.960 --> 00:40:11.999
And that is just that you end up with, like, either you work from the

00:40:12.000 --> 00:40:15.599
endpoint, which is like much more Haskell style evaluation, which is

00:40:15.600 --> 00:40:16.959
where you're like, I need to start here.

00:40:16.960 --> 00:40:18.279
What depends on this?

00:40:18.280 --> 00:40:21.599
But in the case where you have a whole bunch of different Org Mode

00:40:21.600 --> 00:40:26.919
spreadsheets, I think I ended up with this little text style hack

00:40:26.920 --> 00:40:28.159
where I just ran it a bunch of times.

00:40:28.160 --> 00:40:29.759
So it's like evaluate, evaluate, evaluate.

00:40:29.760 --> 00:40:31.439
Because remote lookups

00:40:31.440 --> 00:40:34.719
I ran, you know, I don't remember.

00:40:34.720 --> 00:40:36.559
And I think I took notes, but I don't remember.

00:40:36.560 --> 00:40:39.439
That's one of the great things about Org Mode is that I swear it's

00:40:39.440 --> 00:40:42.319
my, like, half of my brain is in my Org Mode notes.

00:40:42.320 --> 00:40:46.679
And whenever I had, I'm like, oh, what was that thing?

00:40:46.680 --> 00:40:49.639
I'm like, well, fortunately, with my terrible short-term memory, I

00:40:49.640 --> 00:40:52.519
took copious notes because otherwise I would never be able to get

00:40:52.520 --> 00:40:55.499
back to it.

NOTE finding notes with C-s

00:40:55.500 --> 00:41:02.599
[Sacha]: What is your favorite way of finding those notes?

00:41:02.600 --> 00:41:06.279
[Shae]: I actually use a lot of C-s just because I kind of have

00:41:06.280 --> 00:41:10.919
some idea of where they are in my tree structure and I'll also say I

00:41:10.920 --> 00:41:14.879
use a lot of my Org capture templates and they're not super

00:41:14.880 --> 00:41:15.559
complicated.

00:41:15.560 --> 00:41:19.359
I have like a to-do, I have a journal, I have ideas and like random

00:41:19.360 --> 00:41:23.279
ideas will float into my head like you saw Markov keyboard right it

00:41:23.280 --> 00:41:26.119
is like the weirdest art piece you've seen all day right and

00:41:26.120 --> 00:41:32.279
Markup keyboard shows up on the front page of Hacker News once a year

00:41:32.280 --> 00:41:32.719
or so.

00:41:32.720 --> 00:41:36.159
And people are like, programmers have gone too far.

00:41:36.160 --> 00:41:39.999
This cannot possibly be usable by humans or something.

00:41:40.000 --> 00:41:42.719
And I'm like, well, I don't know.

00:41:42.720 --> 00:41:43.999
I think it was art.

00:41:44.000 --> 00:41:46.719
And so a lot of times those things will drop into my head, something

00:41:46.720 --> 00:41:48.679
like that, where I'm trying to do something else.

00:41:48.680 --> 00:41:51.359
And so I will quickly write down the idea and then just gotten it out

00:41:51.360 --> 00:41:53.999
of my head enough that I can continue with what I was doing.

00:41:54.000 --> 00:41:56.599
And so I have a long list of strange ideas.

00:41:56.600 --> 00:42:00.959
A recent one was like, you've probably had your teeth worked on once

00:42:00.960 --> 00:42:01.479
or twice.

00:42:01.480 --> 00:42:04.239
And you know that the dentist always had to move the light around.

00:42:04.240 --> 00:42:06.479
And I'm like, but we have really good eye tracking.

00:42:06.480 --> 00:42:10.639
Wouldn't it make sense to figure out where the dentist or the car

00:42:10.640 --> 00:42:12.319
mechanic is what they're looking at?

00:42:12.320 --> 00:42:16.719
And then have the light move around behind them to figure out how to

00:42:16.720 --> 00:42:18.999
actually light up the place they're looking at, right?

00:42:19.000 --> 00:42:19.519
We've got vision tracking.

00:42:19.520 --> 00:42:20.679
Why don't we do this?

00:42:20.680 --> 00:42:22.599
But I don't really, yeah.

00:42:22.600 --> 00:42:25.759
I decided maybe I don't want to work on that one right now.

00:42:25.760 --> 00:42:28.399
[Sacha]: It sounds like an involved project.

00:42:28.400 --> 00:42:29.119
Yeah.

00:42:29.120 --> 00:42:30.719
Yeah, yeah, yeah.

00:42:30.720 --> 00:42:34.599
Okay, so you're capturing, you're stuffing a lot of these ideas into

00:42:34.600 --> 00:42:35.199
an inbox.

NOTE Org Mode, managing inbox

00:42:35.200 --> 00:42:38.679
A lot of people are probably in the same boat where they've got these

00:42:38.680 --> 00:42:40.399
inboxes full of ideas.

00:42:40.400 --> 00:42:44.279
How do you deal?

00:42:44.280 --> 00:42:45.599
[Shae]: I archive stuff when I'm done with it.

00:42:46.140 --> 00:42:47.520
[Sacha]: Oh yeah?

00:42:47.521 --> 00:42:52.199
[Shae]: Yeah, so a lot of times, and I find this very valuable, is

00:42:52.200 --> 00:42:55.199
like if I look at... Do I have it?

00:42:55.200 --> 00:42:58.119
Oops, that was not what I meant to do.

00:42:58.120 --> 00:43:01.879
[Sacha]: Alright, so you basically just do aggressive speed commands,

00:43:01.880 --> 00:43:04.839
archive, archive, archive, or look at the agenda and just mark a

00:43:04.840 --> 00:43:06.759
whole bunch of things and say, that's it, that's gone.

00:43:06.760 --> 00:43:10.519
It was written down and then it can go.

00:43:10.520 --> 00:43:13.319
[Shae]: Yeah, well, when I'm really done with something, when the

00:43:13.320 --> 00:43:15.759
thing is finished, then I will just archive it.

00:43:15.760 --> 00:43:17.859
I mean, do you use Archive much?

00:43:17.860 --> 00:43:18.839
[Sacha]: I do.

00:43:18.840 --> 00:43:22.559
I have a function that goes through my inbox file and just archives

00:43:22.560 --> 00:43:23.879
anything that was marked as done.

00:43:23.880 --> 00:43:26.119
[Shae]: Oh, nice!

00:43:26.120 --> 00:43:28.319
[Sacha]: Because that way it clears it up, right?

00:43:28.320 --> 00:43:33.239
So I'll refile things where I'm like, okay, it's done, but it has

00:43:33.240 --> 00:43:34.359
important information.

00:43:34.360 --> 00:43:35.919
I want to put it somewhere else.

00:43:35.920 --> 00:43:39.639
But if it's just a transitory task that I'm using to remind myself,

00:43:39.640 --> 00:43:43.439
tomorrow I have to do this, go find the water bottle when it's done,

00:43:43.440 --> 00:43:46.279
I don't need to know about it in the future.

00:43:46.280 --> 00:43:49.999
So it's left in my inbox because I checked it off, and then

00:43:50.000 --> 00:43:52.119
periodically I'll say, clean up inbox.

00:43:52.120 --> 00:43:55.999
Not only will it remove all of the done things, but if I leave a tag

00:43:56.000 --> 00:44:01.919
In the title of the task or if the task matches certain regular

00:44:01.920 --> 00:44:06.799
expressions, it will refile it to the appropriate place in my kind of

00:44:06.800 --> 00:44:08.439
more permanent thing.

00:44:08.440 --> 00:44:11.519
So I can say, okay, all of my Emacs related tasks will get

00:44:11.520 --> 00:44:16.267
automatically refiled to my Emacs category without my having to do

00:44:16.268 --> 00:44:17.639
that manually.

00:44:17.640 --> 00:44:20.599
[Shae]: So you're using tagging because I kept trying to do tagging

00:44:20.600 --> 00:44:21.519
and never quite did it.

00:44:21.520 --> 00:44:24.479
[Sacha]: I use tagging sometimes when I remember it, but this is also

00:44:24.480 --> 00:44:25.279
why I use the

00:44:25.280 --> 00:44:29.519
The regular expression match against the title.

00:44:29.520 --> 00:44:34.599
I'm using Orgzly on Android to capture the thing on my phone.

00:44:34.600 --> 00:44:37.599
I might want to say this is a consulting task.

00:44:37.600 --> 00:44:42.299
File it in the right place so it doesn't get lost in my inbox.

00:44:42.300 --> 00:44:43.967
[Shae]: Wow.

00:44:43.968 --> 00:44:48.259
When is your interview so I can learn from your tricks?

00:44:48.260 --> 00:44:53.500
[Sacha]: This is now. Here we go! You can ask questions.

00:44:53.501 --> 00:44:59.767
The nice thing about conversations is that we jostle different ideas,

00:44:59.868 --> 00:45:02.600
and we are like, oh yeah, maybe I should write a blog post about that,

00:45:02.601 --> 00:45:03.459
because I take it for granted.

00:45:03.460 --> 00:45:07.179
So now apparently I have to write a blog post about my

00:45:07.180 --> 00:45:09.339
cleaning up process.

00:45:09.340 --> 00:45:10.979
My inbox is very long.

00:45:10.980 --> 00:45:14.459
The other thing, speaking of dealing with really long lists that I

00:45:14.460 --> 00:45:18.219
picked up from John Wiegley was I also sometimes remember to check

00:45:18.220 --> 00:45:19.979
this list of random items.

00:45:19.980 --> 00:45:26.379
So in my agenda, there's also like this, you know, random selection

00:45:26.380 --> 00:45:30.939
of things that I have not gotten around to thinking about further,

00:45:30.940 --> 00:45:34.939
but it's there just in case serendipity or boredom make me do

00:45:34.940 --> 00:45:36.799
something.

00:45:36.800 --> 00:45:41.299
[Shae]: you know that's... I've thought about having...

00:45:41.300 --> 00:45:44.819
because you know, I've got the pop-up this little timer that pops up

00:45:44.820 --> 00:45:47.579
my agenda, but I've thought about maybe adding a section I don't know

00:45:47.580 --> 00:45:51.019
if I could add a section here but it would be something that says

00:45:51.020 --> 00:45:54.819
like at the bottom here's two or three random to-do's that have been

00:45:54.820 --> 00:45:55.579
open for a while just like

00:45:55.580 --> 00:45:57.899
for garbage collection.

00:45:57.900 --> 00:46:00.979
Because I know that in Jujutsu, I've got a cool little query that

00:46:00.980 --> 00:46:04.459
says, if you have any change sets that are more than two weeks old

00:46:04.460 --> 00:46:07.659
and are not in a permanent branch state, maybe you should do

00:46:07.660 --> 00:46:08.539
something about them.

00:46:08.540 --> 00:46:09.619
It's just called to do.

00:46:09.620 --> 00:46:13.379
It'd be kind of nice to have that for Org Mode as well.

00:46:13.380 --> 00:46:17.099
[Sacha]: Yeah, it's just, you know, and our brains do these strange

00:46:17.100 --> 00:46:18.539
things with randomness, right?

00:46:18.540 --> 00:46:21.359
They're like, oh, I want to see what's new now.

00:46:21.360 --> 00:46:22.979
[Shae]: Right, right, yeah.

00:46:22.980 --> 00:46:24.379
Oh, I have a question.

00:46:24.380 --> 00:46:28.179
You have this thing where you had...

NOTE Timestamps

00:46:28.180 --> 00:46:30.099
I saw you taking notes with Prot,

00:46:30.100 --> 00:46:31.739
and you had this timestamp.

00:46:31.740 --> 00:46:32.579
[Sacha]: Oh, yeah, yeah, yeah.

00:46:32.580 --> 00:46:33.979
I'm using it now.

00:46:33.980 --> 00:46:34.939
Okay, okay.

00:46:34.940 --> 00:46:36.619
So I have it bound two ways now.

00:46:36.620 --> 00:46:39.939
I have it as a dabbrev, so dynamic abbreviation, and I also have it

00:46:39.940 --> 00:46:46.499
as a yasnippet because sometimes I'm using it with either SPC or

00:46:46.500 --> 00:46:47.979
tab to complete it.

00:46:47.980 --> 00:46:52.339
And I don't really want to think, I just want to get the timestamp in

00:46:52.340 --> 00:46:53.019
and then move on.

00:46:53.020 --> 00:46:58.979
And so abbrevs can run functions to evaluate it.

00:46:58.980 --> 00:47:01.939
You can insert the timestamp that way.

00:47:01.940 --> 00:47:05.419
Or yesnippet, of course, can evaluate the thing.

00:47:05.420 --> 00:47:06.379
And now I have those.

00:47:06.380 --> 00:47:09.659
It's basically just a wall-clock time so that I can go back and plop

00:47:09.660 --> 00:47:14.299
in the chapters as time offsets, which are automatically calculated

00:47:14.300 --> 00:47:16.299
from the YouTube data on when the stream started.

00:47:16.300 --> 00:47:20.019
So I don't have to manually calculate my chapters.

00:47:20.020 --> 00:47:23.819
But it's super useful to have these times everywhere.

00:47:23.820 --> 00:47:26.979
And in this case, during a conversation, I want to be able to say,

00:47:26.980 --> 00:47:30.139
hey, we talked about something interesting.

00:47:30.140 --> 00:47:34.739
And then be able to go back to that point in the video later on.

00:47:34.740 --> 00:47:35.859
[Shae]: So you're matching?

00:47:35.860 --> 00:47:38.339
Oh, oh, wow.

00:47:38.340 --> 00:47:39.099
[Sacha]: So my shortcut for yasnippet is "ot" because

00:47:39.100 --> 00:47:45.739
I never type "ot" elsewhere, and it's close enough.

00:47:45.740 --> 00:47:50.833
I use Dvorak, so my O is on home row, and T is close by.

00:47:50.834 --> 00:47:54.267
Also, on the other hand... There you go.

00:47:54.268 --> 00:47:55.867
[Shae]: Did I already show you that this is actually Dvorak?

00:47:55.868 --> 00:47:57.067
[Sacha]: Oh, there you go.

00:47:57.068 --> 00:47:58.779
Now I can see the keycaps.

00:47:58.780 --> 00:48:02.499
Yeah, earlier it was kind of blurry, but now, yes, yes.

00:48:02.500 --> 00:48:06.139
So yes, that is my shortcut for inserting the timestamp.

00:48:06.140 --> 00:48:11.059
I previously added seconds as well, but then I realized that my kind

00:48:11.060 --> 00:48:12.459
might be false precision.

00:48:12.460 --> 00:48:15.699
So I just, you know, just use a minute at the moment and then I go

00:48:15.700 --> 00:48:18.699
back and adjust the timestamps a little bit later.

00:48:18.700 --> 00:48:22.899
But yeah, you can use abbreviations for all sorts of things,

00:48:22.900 --> 00:48:27.140
including times and dates and stuff.

00:48:27.141 --> 00:48:30.200
[Shae]: Have you ever tried Org timestamp?

00:48:30.201 --> 00:48:31.659
[Sacha]: Yeah, Org timer.

00:48:31.660 --> 00:48:34.619
So Org timer gives you a relative timestamp, right?

00:48:34.620 --> 00:48:35.579
You can say Org timer.

00:48:35.580 --> 00:48:36.019
Oh, okay.

00:48:36.020 --> 00:48:39.999
So, sorry.

00:48:40.000 --> 00:48:44.219
Are you talking about the C-u C-c ! or something

00:48:44.220 --> 00:48:46.219
of that sort?

00:48:46.220 --> 00:48:50.259
So that's actually what I initially was doing, but then it was too

00:48:50.260 --> 00:48:54.819
many keystroke word modifiers to remember.

00:48:54.820 --> 00:48:57.979
And then I had to press RET to select the, you know, thing.

00:48:57.980 --> 00:49:01.739
So now I just have an abbreviation insert the Org mode formatted

00:49:01.740 --> 00:49:04.779
timestamp for me.

00:49:04.780 --> 00:49:09.659
And then I have this code that searches for Org timestamp regular

00:49:09.660 --> 00:49:12.859
expression and then does the calculation and conversion and stuff.

NOTE
Org timers
#+SCREENSHOT: ec22-shae-erisson-00-53-52-300.jpg
#+SCREENSHOT_TIME: 00:53:52.300

00:49:12.860 --> 00:49:14.579
So Org timer is a separate thing.

00:49:14.580 --> 00:49:19.419
It's useful for meetings and things like that.

00:49:19.420 --> 00:49:21.619
You would say, okay, your Org timer starts at the beginning of the

00:49:21.620 --> 00:49:25.059
meeting and then you can have a list and it automatically, like if

00:49:25.060 --> 00:49:28.019
you alt shift enter or something like that in the list, it'll

00:49:28.020 --> 00:49:33.539
automatically like insert the right timer, relative timer to it.

00:49:33.540 --> 00:49:34.059
There you go.

00:49:34.060 --> 00:49:35.819
So there's an org-timer-start.

00:49:35.820 --> 00:49:40.899
But the reason I didn't go that approach was because then you A. have

00:49:40.900 --> 00:49:44.819
to remember to actually start the timer and B. then you have to

00:49:44.820 --> 00:49:47.219
synchronize your time with video time.

00:49:47.220 --> 00:49:50.939
Which might not have started at the same time.

00:49:50.940 --> 00:49:55.619
So now I'm just like, okay, wall clock for everything.

00:49:55.620 --> 00:49:56.420
And then I can do the transformation with whatever I like.

00:49:56.421 --> 00:50:01.167
And since I'm editing my subtitles in Emacs, I can say, hey, this

00:50:01.168 --> 00:50:03.767
file started at this time, according to YouTube.

00:50:03.768 --> 00:50:08.733
And then just, you know, map all of the wall clocks to the

00:50:08.734 --> 00:50:12.233
appropriate subtitle times.

00:50:12.234 --> 00:50:15.659
[Shae]: Wow. That's really cool.

00:50:15.660 --> 00:50:22.419
[Sacha]: Anyway, so timers, relative, absolute, and using

00:50:22.420 --> 00:50:24.499
abbreviations is great.

00:50:24.500 --> 00:50:27.339
Which I think actually is a thing that I picked up from Karl.

00:50:27.340 --> 00:50:32.939
Karl Voit because he also likes to use... He has an abbreviation,

00:50:32.940 --> 00:50:37.539
not at the Emacs level, but he has an abbreviation on his system level,

00:50:37.540 --> 00:50:40.939
like with his window manager, so he can use this timestamp trick

00:50:40.940 --> 00:50:44.967
anywhere, including in Etherpad or wherever else where you

00:50:44.968 --> 00:50:51.467
want to insert the date and time. That's V-o-i-t, by the way.

00:50:51.468 --> 00:50:57.200
But yeah, so times are a great way to just

00:50:57.201 --> 00:50:59.980
leave yourself a pointer to that moment

00:50:59.981 --> 00:51:02.419
so you can go back to it later.

00:51:02.420 --> 00:51:07.779
[Shae]: Now I'm curious, how well does that integrate with this sort

00:51:07.780 --> 00:51:08.379
of thing?

00:51:08.380 --> 00:51:12.539
Because I really like looking back at my history agenda.

00:51:12.540 --> 00:51:17.767
[Sacha]: If you have it insert an inactive timestamp, I think it

00:51:17.768 --> 00:51:23.119
should still show up there.

00:51:23.120 --> 00:51:27.380
I think it will be a little like those.

00:51:27.381 --> 00:51:29.967
[Shae]: Yeah, it looks like the...

00:51:29.968 --> 00:51:32.100
Well, it looks like these two are showing up.

00:51:32.101 --> 00:51:33.433
[Sacha]: Yeah, yeah, yeah.

00:51:33.434 --> 00:51:39.600
Yeah, so that's a basic thing that I would have inserted by my either

00:51:39.601 --> 00:51:44.267
abbrev or... So it's not even dabbrev.

00:51:44.268 --> 00:51:46.759
It's just regular abbrev in Emacs.

00:51:46.760 --> 00:51:48.259
[Shae]: What's the difference?

00:51:48.260 --> 00:51:52.939
[Sacha]: dabbrev is like hippie...

00:51:52.940 --> 00:51:56.259
Okay, let me just double check here.

00:51:56.260 --> 00:52:02.579
I feel like dabbrev is sort of hippie expand-ish.

00:52:02.580 --> 00:52:07.800
It looks in your buffer or possibly other buffers.

00:52:07.801 --> 00:52:13.900
And I think hippie-expand and dabbrev, they kind of work together.

00:52:13.901 --> 00:52:17.633
It's an option to have them work together.

00:52:17.634 --> 00:52:22.619
Okay, so hippie-expand is...

00:52:22.620 --> 00:52:21.099
Oh, so I see.

00:52:21.100 --> 00:52:25.767
Hippie-expand is the more advanced version of dabbrev.

00:52:25.768 --> 00:52:30.160
dabbrev was Dynamic Expand, and Hippie Expand says, yes, that, but

00:52:30.161 --> 00:52:32.367
try a whole bunch of other things first.

00:52:32.368 --> 00:52:36.100
But my timestamp thing is actually just done by a regular abbrev,

00:52:36.101 --> 00:52:45.500
and I will find the thing in my config for "ot".

00:52:45.501 --> 00:52:54.219
Oh, yeah. I will put it in my chat.

00:52:54.220 --> 00:52:57.733
[Shae]: My spelling, most people say my emails are spelled really well,

00:52:57.734 --> 00:53:02.167
but it's only because I have ispell set up.

00:53:02.168 --> 00:53:07.767
[Sacha]: Yeah, ispell is great. I am learning French and therefore...

00:53:07.768 --> 00:53:11.099
[Shae]: Oh, c'est très bien.

00:53:11.100 --> 00:53:11.779
Je parle un peu de français aussi.

00:53:11.780 --> 00:53:12.459
[Sacha]: Oh, oui.

00:53:12.460 --> 00:53:15.667
I'm keeping a journal in French on my blog

00:53:15.668 --> 00:53:20.933
and I have the Tatoeba Project with all the example sentences

00:53:20.934 --> 00:53:24.000
and I have a consult interface to look up stuff in them

00:53:24.001 --> 00:53:27.000
so I can just borrow other people's words

00:53:27.001 --> 00:53:29.619
and try to make it sound more natural.

00:53:29.620 --> 00:53:31.333
Plus of course the usual

00:53:31.334 --> 00:53:32.899
searching for words in dictionaries and stuff.

00:53:32.900 --> 00:53:36.659
Anyway, in the chat, I put in my global abbrev table definition for

00:53:36.660 --> 00:53:38.259
insert format time string.

00:53:38.260 --> 00:53:41.260
In case you want to steal that, it's right there.

00:53:41.301 --> 00:53:45.140
[Shae]: I will definitely save that into my notes here.

NOTE Org Mode snippets

00:53:53.640 --> 00:53:56.779
Another thing I use a lot is I use

00:53:56.780 --> 00:54:00.779
Org Mode snippets.

00:54:00.780 --> 00:54:06.859
I will tell you that the first time, I guess if I look back at...

00:54:06.860 --> 00:54:14.219
This is another thing that I have done a lot of in the past, which is

00:54:14.220 --> 00:54:14.579
where...

00:54:14.580 --> 00:54:18.433
I love the fact that Org Mode snippets are just executable.

00:54:18.434 --> 00:54:20.667
I can just run them.

00:54:20.668 --> 00:54:24.733
I guess two jobs, three jobs ago, there was a case where, because I

00:54:24.734 --> 00:54:27.367
would keep the results around and look at them, there was a case

00:54:27.368 --> 00:54:31.100
where, I guess a couple of months before, something got shipped to a

00:54:31.101 --> 00:54:35.133
customer, and I noticed our database schema had changed and I

00:54:35.134 --> 00:54:40.100
prevented a tremendous amount of upset and emergency by being like

00:54:40.080 --> 00:54:43.240
this doesn't look great. I got one from two weeks ago, and it does

00:54:43.240 --> 00:54:47.120
not match. Something's wrong here. Everybody's like, I don't think

00:54:47.120 --> 00:54:48.720
so, Shae. And I'm, like, no no no, we do have a problem, we've got to

00:54:48.720 --> 00:54:53.720
fix this. And they were, like, oh crap! And then I was like, yeah,

00:54:53.720 --> 00:54:56.559
solved a problem!

00:54:56.560 --> 00:55:00.539
[Sacha]: Yeah, I basically try to do as much in a snippet instead of

00:55:00.540 --> 00:55:04.139
in, you know, in a scratch buffer or whatever, just because having

00:55:04.140 --> 00:55:08.059
that record, the fact that I did it, and also any notes that I had

00:55:08.060 --> 00:55:13.739
leading up to it and the output of it, it's just so helpful.

NOTE
#+SCREENSHOT: ec22-shae-erisson-00-55-39-300.jpg
#+SCREENSHOT_TIME: 00:55:39.300

00:55:13.740 --> 00:55:17.059
[Shae]: Oh, I've got a cool thing that I'm doing for work.

00:55:17.060 --> 00:55:24.539
And that is that our readme file is not only a word file, but we also

00:55:24.540 --> 00:55:29.899
have the demonstration of our actual thing is done by using like

00:55:29.900 --> 00:55:33.939
dependent snippets.

00:55:33.940 --> 00:55:37.539
And so that means that like if you want that, perhaps this is

00:55:37.540 --> 00:55:42.339
something everyone already knows, I don't know, but we basically are

00:55:42.340 --> 00:55:46.819
using the results of earlier commands in later places.

00:55:46.820 --> 00:55:50.259
And the other nice thing about that is that then when we want to

00:55:50.260 --> 00:55:52.659
check, we have to effectively dock tests, right?

00:55:52.660 --> 00:55:55.339
When we want to check and see if our software works the way it does

00:55:55.340 --> 00:55:59.419
in the readme, we evaluate the final Org Mode snippet, which then

00:55:59.420 --> 00:56:01.134
calls it forward, calls it forward,

00:56:01.135 --> 00:56:03.099
and then if something goes up or not.

00:56:03.100 --> 00:56:06.139
Well, I guess I need to fix something.

00:56:06.140 --> 00:56:09.219
And so it was pretty exciting to put Org Mode niftyness into our,

00:56:09.220 --> 00:56:11.639
into my Word reading file, you know?

00:56:11.640 --> 00:56:12.833
[Sacha]: Nice, nice.

00:56:12.834 --> 00:56:15.619
And you did mention your other coworker is on board with the whole

00:56:15.620 --> 00:56:16.339
Emacs thing.

00:56:16.340 --> 00:56:19.459
So that's one of the things that people are often like, I want to use

00:56:19.460 --> 00:56:22.459
Org Mode and I want to use it for like the documentation or the

00:56:22.460 --> 00:56:25.019
testing or whatever, but they got to get everyone else on board with

00:56:25.020 --> 00:56:25.419
the thing.

00:56:25.420 --> 00:56:30.239
Otherwise it's Jupyter Notebooks or whatever else, right?

00:56:30.240 --> 00:56:30.733
[Shae]: Right.

00:56:30.734 --> 00:56:33.099
Okay, so I have a joke for you that I came up with a long time ago,

00:56:33.100 --> 00:56:36.859
and that is, do you know the only way, there's only one way that

00:56:36.860 --> 00:56:40.139
Sauron could have organized the invasion of Middle-earth, and do you

00:56:40.140 --> 00:56:40.939
know what he used?

00:56:40.940 --> 00:56:42.200
[Sacha]: What?

00:56:42.201 --> 00:56:48.699
[Shae]: Orc Mode.

00:56:48.700 --> 00:56:55.379
It's a terrible joke, isn't it?

00:56:55.380 --> 00:56:56.200
[Sacha]: That's okay.

00:56:56.201 --> 00:57:00.199
I'm sure someone in the comments will come up with an even worse pun.

00:57:00.200 --> 00:57:01.133
[Shae]: I'm excited!

00:57:01.134 --> 00:57:04.179
It's going to be great!

00:57:04.180 --> 00:57:07.139
[Sacha]: Never underestimate the punniness of the Emacs

00:57:07.140 --> 00:57:10.059
community.

00:57:10.060 --> 00:57:11.300
[Shae]: I completely agree.

00:57:11.301 --> 00:57:14.259
I don't know.

00:57:14.260 --> 00:57:15.459
Do I have anything else exciting in here?

NOTE
Compilation finish function: handle success
#+SCREENSHOT: ec22-shae-erisson-00-57-48-300.jpg
#+SCREENSHOT_TIME: 00:57:48.300

00:57:15.460 --> 00:57:16.733
I actually really like this one.

00:57:16.734 --> 00:57:23.459
I used to run all of my tests in compile.

00:57:23.460 --> 00:57:26.019
F12, I have F12 bound to compile.

00:57:26.020 --> 00:57:29.219
And one of the things I wanted was, I wanted something where it was,

00:57:29.220 --> 00:57:32.539
if the compile is successful, don't show me the results, because

00:57:32.540 --> 00:57:33.299
everything's good.

00:57:33.300 --> 00:57:39.499
And so since I'm doing stuff in Rust, when I run all the tests, it

00:57:39.500 --> 00:57:42.659
leaves the buffer up, and I need to get around to actually doing

00:57:42.660 --> 00:57:45.659
stuff like this for Rustic mode as well, where when the tests pass,

00:57:45.660 --> 00:57:47.459
just go away, because it's all good.

00:57:47.460 --> 00:57:49.499
And when the tests don't pass, show me where to...

00:57:49.500 --> 00:57:52.699
I need to look at the problem.

00:57:52.700 --> 00:57:58.099
And I got this from Enberg and Emacs, I don't know, 20 years ago.

00:57:58.100 --> 00:58:03.579
Maybe it was less than 20 years ago, but it probably wasn't.

00:58:03.580 --> 00:58:07.059
So yeah, there's so much good stuff.

00:58:07.060 --> 00:58:11.779
Yeah, there's just so much good stuff.

00:58:11.780 --> 00:58:14.939
And I also like to, oh, look, here we go.

00:58:14.940 --> 00:58:17.899
You can see that this is long gone, by the way.

00:58:17.900 --> 00:58:21.539
It's not there anymore.

00:58:21.540 --> 00:58:26.099
[Sacha]: I have a proper, you know, it's sachachua.com/dotemacs.

00:58:26.100 --> 00:58:27.979
A lot easier to remember.

00:58:27.980 --> 00:58:36.699
But yeah, and I think that's, yeah, yeah, I remember that now.

00:58:36.700 --> 00:58:38.859
defadvice is also obsolete.

00:58:38.860 --> 00:58:43.366
The new hotness is advice-add or something like that.

00:58:43.367 --> 00:58:51.219
[Shae]: Oh, really? I'm going to make another TODO item for there.

00:58:51.220 --> 00:58:53.567
[Sacha]: I was digging through my notes trying to find, do you share

00:58:53.568 --> 00:58:56.119
your config anywhere?

00:58:56.120 --> 00:58:57.619
[Shae]: No, but you know, at this point if I share it on YouTube, I

00:58:57.620 --> 00:59:01.259
might as well just throw it up somewhere.

00:59:01.260 --> 00:59:01.699
Why not?

00:59:01.700 --> 00:59:03.179
It's not very exciting.

00:59:03.180 --> 00:59:06.459
Like if you look at someone like Ross Baker who has magic, like wow,

00:59:06.460 --> 00:59:08.659
is there some magic coming in from Ross Baker?

00:59:08.660 --> 00:59:11.179
I'm so excited to see more stuff from him.

00:59:11.180 --> 00:59:17.019
There's just like, I guess I feel like compared to almost everybody

00:59:17.020 --> 00:59:18.579
else I know, I feel like a power user.

00:59:18.580 --> 00:59:21.099
Because I'm like, you know, I wish I could do this thing.

00:59:21.100 --> 00:59:23.339
A lot of times someone I know is like, well, I did that thing and

00:59:23.340 --> 00:59:24.179
here's a library.

00:59:24.180 --> 00:59:26.379
And I'm like, yeah, I'll have to do it.

00:59:26.380 --> 00:59:29.779
And I just, I guess I feel like I'm a power user.

00:59:29.780 --> 00:59:33.459
And on the good side, I guess I kind of,

00:59:33.460 --> 00:59:37.099
I really haven't written that much Elisp ever, like I was saying in

00:59:37.100 --> 00:59:38.779
the comments during your interview with Prot.

00:59:38.780 --> 00:59:42.499
And I kind of like to, it's just I guess it's never quite gotten to

00:59:42.500 --> 00:59:43.499
the top of my stack.

00:59:43.500 --> 00:59:47.339
And I did decide it was time for me to send money to Parade for at

00:59:47.340 --> 00:59:51.179
least for themes, if not for like, please teach me some Elisp so I

00:59:51.180 --> 00:59:54.299
can actually, because you know, it's not that Elisp is hard.

00:59:54.300 --> 00:59:59.019
It's more like, how do I kind of, what are the things I interact with?

00:59:59.020 --> 01:00:01.379
What are the words?

01:00:01.380 --> 01:00:05.059
What's the vocabulary of working with Emacs?

01:00:05.060 --> 01:00:06.499
I don't actually really know.

01:00:06.500 --> 01:00:08.779
As a user, sure, I can do cool stuff.

01:00:08.780 --> 01:00:09.939
I can do Lisp macros.

01:00:09.940 --> 01:00:14.319
I've done Scheme and Lisp some of the past, but not inside Emacs.

01:00:14.320 --> 01:00:15.979
[Sacha]: Alright, so let me clarify.

01:00:15.980 --> 01:00:20.139
After more than 20 years of using Emacs, did you say you feel like a

01:00:20.140 --> 01:00:22.799
power user or do not feel like a power user?

01:00:22.800 --> 01:00:25.699
[Shae]: I definitely feel like a power user, but I don't feel like

01:00:25.700 --> 01:00:27.859
someone who does much of anything with Elisp.

01:00:27.860 --> 01:00:30.179
I don't really feel like someone who has much of a clue in the

01:00:30.180 --> 01:00:30.539
internals.

01:00:30.540 --> 01:00:32.779
And that's not entirely true.

01:00:32.780 --> 01:00:34.339
I have some of the ideas.

01:00:34.340 --> 01:00:39.059
But for the most part, I haven't actually needed to know that much

01:00:39.060 --> 01:00:40.339
about the internals.

01:00:40.340 --> 01:00:44.299
And sure, I've dug into things like how do you efficiently work with

01:00:44.300 --> 01:00:48.499
large buffers in your ??, like the ropes data structure and

01:00:48.500 --> 01:00:49.139
stuff like that.

01:00:49.140 --> 01:00:50.919
That was more for fun.

01:00:50.920 --> 01:00:54.099
Although it is something that Emacs does and does extremely well.

01:00:54.100 --> 01:00:57.099
But I'd kind of like to...

01:00:57.100 --> 01:01:00.200
There's a lot of things I'd kind of like to change and I don't really

01:01:00.201 --> 01:01:03.359
have enough of the understanding of the kind of how I would write the

01:01:03.360 --> 01:01:05.067
Elisp to do it.

01:01:05.068 --> 01:01:06.000
Here's a good example.

01:01:06.001 --> 01:01:09.200
When I hit F3, it takes me to the one I'm currently clocked into.

01:01:09.201 --> 01:01:15.833
Unless I haven't clocked in to something since I started Emacs.

01:01:15.834 --> 01:01:18.100
And honestly, I would like to use something like org-ql,

01:01:18.101 --> 01:01:20.700
the Org query language, to go find

01:01:20.701 --> 01:01:22.400
if I've just started Emacs,

01:01:22.401 --> 01:01:25.833
and Org does not know about something, you know,

01:01:25.834 --> 01:01:27.000
I just want you to go search for it.

01:01:27.001 --> 01:01:29.200
I have so many cores and so much memory,

01:01:29.201 --> 01:01:30.567
just go find it.

01:01:30.568 --> 01:01:34.400
[Sacha]: That sounds like an excellent reason to go learn Emacs

01:01:34.401 --> 01:01:32.339
so that you can have it...

01:01:32.340 --> 01:01:39.079
If you're not currently clocked in, go find the most recent

01:01:39.080 --> 01:01:42.579
clocked in task and go there, or maybe present you with a list of

01:01:42.580 --> 01:01:47.039
things and then go from there.

01:01:47.040 --> 01:01:50.659
I would love to hear about your Emacs Lisp learning journey because

01:01:50.660 --> 01:01:54.459
that's one of the big things that moves people from, you know, power

01:01:54.460 --> 01:02:02.119
users, yes, but users, to using Emacs as a lightweight editor toolkit

01:02:02.120 --> 01:02:05.500
for something that's custom fit to exactly what their workflow is.

01:02:05.501 --> 01:02:08.400
And on that note, I'm going to try to wrap up gracefully before the

01:02:08.401 --> 01:02:11.700
kiddo, you know, just like drags me out here.

01:02:11.701 --> 01:02:15.633
Thank you so much for doing this.

01:02:15.634 --> 01:02:17.100
I look forward to more conversations.

01:02:17.101 --> 01:02:22.559
I'm going to post the transcript and other things like that pretty

01:02:22.560 --> 01:02:25.619
quickly, I think, because I have this nice workflow now that lets me

01:02:25.620 --> 01:02:29.410
take screenshots and everything, but there's so much here that I want

01:02:29.411 --> 01:02:31.733
to unpack. But I hear the kiddo, bye!
