WEBVTT

00:00.000 --> 00:02.770
Hi everyone! My name is Case Duckworth

00:02.770 --> 00:04.070
and I've been using Emacs

00:04.070 --> 00:05.536
for about a year and a half.

00:05.536 --> 00:06.736
If you do the math,

00:06.736 --> 00:08.403
you'll see that was pretty soon

00:08.403 --> 00:11.470
after the pandemic hit us in the U.S.

00:11.470 --> 00:13.970
While I was busy making bread

00:13.970 --> 00:14.970
and walking my dogs,

00:14.970 --> 00:17.936
trying not to drive myself crazy

00:17.936 --> 00:18.970
in the house,

00:18.970 --> 00:20.603
I tried Emacs again.

00:20.603 --> 00:23.270
I don't know if I was successful in that,

00:23.270 --> 00:26.936
going crazy... I mean, I still use Emacs.

00:26.936 --> 00:30.436
But I have been able to enjoy

00:30.436 --> 00:31.670
the infinitely-malleable,

00:31.670 --> 00:32.870
immensely enjoyable,

00:32.870 --> 00:34.936
and sublimely parenthetical world

00:34.936 --> 00:36.470
of Emacs the editor,

00:36.470 --> 00:37.570
the community,

00:37.570 --> 00:39.470
and of course, the Lisp language.

00:39.470 --> 00:42.270
So. And in this I'm going to

00:42.270 --> 00:46.103
explore just a little anecdote of that,

00:46.103 --> 00:48.536
a little nugget of what I think

00:48.536 --> 00:50.870
makes Emacs so great,

00:50.870 --> 00:53.703
using the lens of a package that I wrote

00:53.703 --> 00:57.370
about a month ago now

00:57.370 --> 00:59.536
called frowny.el.

00:59.536 --> 00:01:01.569
So yeah, let's go ahead and jump in.

01:01.570 --> 01:08.236
So, before the beginning,

01:08.236 --> 01:09.036
I want to talk about

01:09.036 --> 01:10.770
my very beginning with Linux.

01:10.770 --> 01:12.136
I first installed Linux

01:12.136 --> 01:13.170
for the first time

01:13.170 --> 01:15.703
as a freshman in college, way back in 2008.

01:15.703 --> 01:17.703
I don't know if you were around,

01:17.703 --> 01:19.503
but 2008 was not

01:19.503 --> 01:21.570
the year of the Linux desktop.

01:21.570 --> 01:26.803
WiFi was weird. Sound was weird.

01:26.803 --> 01:30.136
Everything was odd and strange and weird.

01:30.136 --> 01:31.670
I mean, it wasn't good.

01:31.670 --> 01:33.603
So, at that time,

01:33.603 --> 01:36.203
I knew absolutely nothing about anything.

01:36.203 --> 01:41.203
I installed this terrible

01:41.203 --> 01:43.470
distro called gOS.

01:43.470 --> 01:44.803
I always forget what it's called

01:44.803 --> 01:45.703
and then I looked it up.

01:45.703 --> 01:47.636
And this is what I looked at

01:47.636 --> 01:49.836
when I signed in.

01:49.836 --> 01:51.903
It wasn't good.

01:51.903 --> 01:53.203
I think it was trying to

01:53.203 --> 01:57.003
integrate better with Google tools?

01:57.003 --> 01:58.870
So I was, like, oh, yeah, you know,

01:58.870 --> 02:00.870
Gmail and Google Calendar,

02:00.870 --> 02:02.436
so this will have it all there.

02:02.436 --> 02:04.536
Anyway, the company's defunct now

02:04.536 --> 02:07.003
and it's pretty obvious why.

02:07.003 --> 00:02:07.635
It was really bad.

02:07.636 --> 02:08.903
So I thought to myself,

02:08.903 --> 02:11.670
I'll delete the partition.

02:11.670 --> 02:12.903
Easy peasy. So I did,

02:12.903 --> 02:13.770
and I rebooted,

02:13.770 --> 02:15.336
and the Master Boot Record was gone,

02:15.336 --> 02:16.370
so I couldn't boot Windows,

02:16.370 --> 02:17.936
and it was all, bleah, and I was like,

02:17.936 --> 02:22.103
oh, shit, I have to do my schoolwork.

02:24.536 --> 02:26.203
So I thought I was terribly hosed

02:26.203 --> 02:28.870
so I just installed Linux.

02:28.870 --> 02:31.970
I think I installed Crunchbang Linux first.

02:31.970 --> 02:33.270
It looked like this.

02:33.270 --> 02:35.203
It's not super exciting.

02:35.203 --> 02:41.303
It was an Openbox-based, Debian-based distro

02:41.303 --> 02:43.403
run by this one guy out in England.

02:43.403 --> 02:46.570
It was great. I really enjoyed it.

02:46.570 --> 02:47.970
The forums were amazing.

02:47.970 --> 02:50.603
It still kind of lives on

02:50.603 --> 02:53.003
through a project called BunsenLabs

02:53.003 --> 02:54.936
so go check them out if you want.

02:54.936 --> 00:02:56.169
It was a good time. Anyway.

02:56.170 --> 02:58.803
I was using that for a long time,

02:58.803 --> 03:00.436
and, you know, probably familiar

03:00.436 --> 03:01.670
to many of you,

03:01.670 --> 03:02.903
I hopped around

03:02.903 --> 03:03.836
from distro to distro,

03:03.836 --> 03:08.970
from WM to DE, just on and on and on,

03:08.970 --> 03:10.270
trying different things.

03:10.270 --> 03:12.003
I'm not a programmer.

03:12.003 --> 03:12.736
I actually went to school

03:12.736 --> 03:15.136
for English writing,

03:15.136 --> 03:17.536
and so I learned programming

03:17.536 --> 03:19.636
mostly from configuring

03:19.636 --> 03:20.836
different window managers.

03:20.836 --> 03:23.803
I learned Lua with AwesomeWM.

03:23.803 --> 03:25.836
I learned Haskell with Xmonad.

03:25.836 --> 03:28.070
Sort of Haskell. I mean, I liked Haskell.

03:28.070 --> 03:30.770
I like Haskell a lot,

03:30.770 --> 03:32.536
at least the syntax.

03:32.536 --> 03:36.070
It looks like words.

03:36.070 --> 03:40.103
You can define functions multiple times

03:40.103 --> 03:41.670
for different inputs.

03:41.670 --> 03:42.703
It has that really great pattern matching.

03:42.703 --> 03:45.270
The thing I really didn't get was monads.

03:45.270 --> 03:46.570
What is a monad?

03:46.570 --> 03:48.103
Is it a burrito? Is it a box?

03:48.103 --> 03:49.770
Is it a burrito inside of a box?

03:49.770 --> 03:51.370
Is it a box inside of a burrito?

03:51.370 --> 03:53.203
Is there a cat involved,

03:53.203 --> 03:55.336
or a superposition of such?

03:55.336 --> 03:58.936
I don't know. Anyway, it got confusing.

03:58.936 --> 04:01.436
That's really where I lost me.

04:01.436 --> 04:05.170
Again, you know, if you like Haskell,

04:05.170 --> 04:05.970
if you write Haskell,

04:05.970 --> 04:08.136
more power to you.

04:08.136 --> 04:11.370
It didn't fit my brain right.

04:11.370 --> 04:14.403
So that was that,

04:14.403 --> 04:15.436
but it kinda ruined me

04:15.436 --> 04:17.003
for a lot of other programming languages,

04:17.003 --> 04:19.970
because the functional style

04:19.970 --> 04:22.403
I really get. That part I did get.

04:22.403 --> 04:25.703
And stuff like Python, really,

04:25.703 --> 04:27.070
object orientation...

04:27.070 --> 04:32.570
I would always get way too into classes

04:32.570 --> 04:34.703
and figuring out this and that.

04:34.703 --> 04:35.870
It just didn't work for me.

04:35.870 --> 04:37.870
I was kind of floating.

04:37.870 --> 04:41.503
Learned Bash, which is, you know, Bash.

04:41.503 --> 04:43.603
It's fine, but it's Bash.

04:43.603 --> 04:46.703
It wasn't great either.

04:46.703 --> 04:51.470
Anyway. That was six years or so,

04:51.470 --> 00:04:52.935
just kind of did that, right.

04:52.936 --> 04:55.870
And yes, I was using Vim.

04:55.870 --> 04:58.370
I mean... Keeps you clean, right?

04:58.370 --> 04:59.636
I'm just kidding.

04:59.636 --> 05:02.536
I was using Vim, the editor.

05:02.536 --> 05:03.470
It was fine.

05:03.470 --> 05:05.936
It was great. I mean...

05:05.936 --> 05:08.203
Emacs and Vim, they go head to head

05:08.203 --> 05:10.536
because they're both 40 years old.

05:10.536 --> 05:13.270
They both are super powerful.

05:13.270 --> 05:15.336
They both have their own paradigms.

05:15.336 --> 05:16.836
If you get into it, then it's like

05:16.836 --> 05:19.236
powpowpow, you're doing all this stuff

05:19.236 --> 05:20.503
it's great.

05:20.503 --> 05:22.036
I wrote some plugins with Vim,

05:22.036 --> 05:25.536
a couple of themes, this and that,

05:25.536 --> 05:28.636
but you know, VimScript is not great.

05:28.636 --> 05:31.803
I think one of the common

05:31.803 --> 05:34.936
criticisms of Elisp

05:34.936 --> 05:37.170
it's like, oh, it's this weird kind of...

05:37.170 --> 05:38.536
It's written for (inaudible)...

05:38.536 --> 05:43.336
Tell you, it's way less than

05:43.336 --> 05:44.470
VimScript is. Oof.

05:44.470 --> 05:49.670
Anyway. That, also, really terminal-first,

05:49.670 --> 05:52.570
which I used for a long time and then

05:52.570 --> 05:54.436
I only think I started noticing

05:54.436 --> 05:56.236
now that I'm using Emacs more,

05:56.236 --> 05:57.803
like, that terminal-first workflow,

05:57.803 --> 06:01.136
again, for my brain,

06:01.136 --> 06:02.803
it doesn't super work for me.

06:02.803 --> 06:06.636
I always had this Platonic ideal

06:06.636 --> 06:08.470
of what a workflow should look like,

06:08.470 --> 06:10.836
and I was always working towards it.

06:10.836 --> 06:12.803
I would run into this problem

06:12.803 --> 06:14.003
and I wouldn't know how to solve it.

06:14.003 --> 06:15.736
so I kind of quit. Do something else.

06:15.736 --> 06:17.003
I think that's part of why

06:17.003 --> 06:17.836
I had so much churn

06:17.836 --> 06:18.670
for such a long time.

06:18.670 --> 06:20.336
Because at the end of the day,

06:20.336 --> 06:23.936
window managing, you're just

06:23.936 --> 06:26.567
moving around little boxes on your screen.

06:26.567 --> 06:30.536
So I was spinning wheels

06:30.536 --> 06:31.203
for a long time.

06:31.203 --> 06:36.203
But yes. And it wasn't like

06:36.203 --> 06:36.803
it was all bad.

06:36.803 --> 06:38.036
Most of this stuff

06:38.036 --> 06:39.603
just came out now that

06:39.603 --> 06:40.236
I'm thinking about it,

06:40.236 --> 06:42.970
now that I'm kind of going through this

06:42.970 --> 06:45.736
in my head, like, that part of it wasn't great.

06:45.736 --> 06:46.703
I was having a good time.

06:46.703 --> 06:48.670
I was still... Open source,

06:48.670 --> 06:49.936
I was getting in the community.

06:49.936 --> 06:50.603
I was doing all this stuff.

06:50.603 --> 00:06:51.802
It was all great.

06:51.803 --> 06:56.336
But anyway, the pandemic hit, obviously,

06:56.336 --> 06:58.736
really hard, last spring, in the US.

06:58.736 --> 07:00.870
And here we are,

07:00.870 --> 07:03.070
talking about the pandemic in 2021.

07:03.070 --> 07:04.370
Can you imagine?

07:04.370 --> 07:05.836
So, I didn't lose my job.

07:05.836 --> 07:06.903
Thank goodness.

07:06.903 --> 07:09.236
But I did... I work for the government,

07:09.236 --> 07:10.236
I was sent home for two months.

07:10.236 --> 07:11.803
I had all this free time on my hands.

07:11.803 --> 07:13.903
I got into baking,

07:13.903 --> 07:16.236
I bought a 50-pound bag of flour.

07:16.236 --> 07:18.470
I started a bread-themed tilde server,

07:18.470 --> 07:20.436
you know, those shared Unix servers

07:20.436 --> 07:21.803
all the cool kids talk about?

07:21.803 --> 07:26.970
Yeah, it's breadpunk.club, go check it out!

07:26.970 --> 00:07:29.769
Join if you want. Anyway. Yeah.

07:29.770 --> 07:32.703
So I decided to try Emacs again.

07:32.703 --> 07:33.803
Kind of on a whim, I think.

07:33.803 --> 07:36.170
I don't super remember, but I think I did.

07:36.170 --> 07:42.103
I tried Spacemacs. It didn't stick.

07:42.103 --> 07:44.036
Spacemacs was trying to be Vim,

07:44.036 --> 07:46.403
but enough things didn't fit in

07:46.403 --> 07:48.636
with what I was expecting

07:48.636 --> 07:50.603
with my Vim workflow.

07:50.603 --> 07:53.836
All sorts of plugins that did certain things

07:53.836 --> 07:57.270
and I didn't know to just get into Spacemacs.

07:57.270 --> 08:01.070
It just didn't work for me.

08:01.070 --> 08:05.436
I tried Emacs. This time, it stuck.

08:05.436 --> 08:07.370
I started out just vanilla,

08:07.370 --> 08:09.470
basic no init.el,

08:09.470 --> 08:11.103
then I wrote an init.el,

08:11.103 --> 08:12.636
and then I rewrote my init.el,

08:12.636 --> 08:16.570
and then I took my init.el, crumpled it up,

08:16.570 --> 08:17.736
threw it in the trash can,

08:17.736 --> 08:19.603
wrote it again from scratch.

08:19.603 --> 08:21.203
I'm actually currently

08:21.203 --> 08:23.036
in the middle of Bankruptcy #8,

08:23.036 --> 08:25.136
which I think I really got this time.

08:25.136 --> 08:29.036
It's either that or Number 9.

08:29.036 --> 08:32.936
So I have 1700-ish commits.

08:32.936 --> 08:37.536
I also have like, 3 or 4 .emacs repositories

08:37.536 --> 08:41.500
around my various Git hosting platforms

08:41.500 --> 08:42.270
that I use.

08:42.270 --> 08:44.103
I was on GitHub, GitLab, ~/git...

08:44.103 --> 08:47.403
I don't use Git very well.

08:47.403 --> 00:08:50.002
I'm very much amateur in that entire thing.

08:50.003 --> 08:52.970
Anyway, that is all to say

08:52.970 --> 08:55.170
I got into it, right.

08:55.170 --> 08:57.470
Like, really into it.

08:57.470 --> 08:59.000
I was watching

08:59.000 --> 09:02.136
Emacs Conference videos. Live.

09:02.136 --> 09:06.003
I was reading /r/emacs.

09:06.003 --> 09:07.036
I was reading Planet Emacs.

09:07.036 --> 09:09.036
I subscribed to both.

09:09.036 --> 09:11.603
I have other blogs that I read.

09:11.603 --> 09:13.570
All the greats.

09:13.570 --> 09:16.203
Everyone who's presenting here, probably.

09:16.203 --> 09:18.836
I started watching people on YouTube

09:18.836 --> 09:20.803
like Prot, like David Wilson

09:20.803 --> 09:23.003
who does System Crafters.

09:23.003 --> 09:25.336
I was already on IRC

09:25.336 --> 09:26.836
with the tildeverse,

09:26.836 --> 09:29.670
and so I hopped over to #emacs on Freenode

09:29.670 --> 09:30.936
(remember Freenode?).

09:30.936 --> 09:34.403
Anyway, it was a good time.

09:34.403 --> 09:36.003
So I was doing all this stuff.

09:36.003 --> 00:09:38.235
And... oh yeah. Right.

09:38.236 --> 09:40.636
Anyway, so that's all to say...

09:40.636 --> 09:46.736
Frowns. I was on #systemcrafters channel

09:46.736 --> 09:47.970
on libera.chat,

09:47.970 --> 09:51.203
the channel for the YouTube channel

09:51.203 --> 09:53.403
System Crafters by David Wilson.

09:53.403 --> 09:55.436
I think he's on later.

09:55.436 --> 09:57.070
I'm sure he'll talk about it.

09:57.070 --> 09:58.370
I don't know what he's talking about.

09:58.370 --> 10:01.270
Anyway, one day we were chatting

10:01.270 --> 10:02.770
and this guy alphapapa, who also

10:02.770 --> 10:08.236
has written a lot of these packages, said

10:08.236 --> 10:09.370
"electric-pair-mode messes up

10:09.370 --> 10:10.733
my frowny faces sometimes."

10:10.733 --> 10:14.036
You can see here

10:14.036 --> 10:15.170
this frowny, what is this...

10:15.170 --> 10:23.136
You can see it there on the screen.

10:23.136 --> 10:24.303
What is that, right?

10:24.303 --> 10:27.070
It's terrifying.

10:27.070 --> 10:28.203
What is this?

10:28.203 --> 10:30.970
What is that?

10:30.970 --> 10:31.803
I don't know.

10:31.803 --> 00:10:32.735
I don't know what that is.

10:32.736 --> 10:34.736
And then I said, you know,

10:34.736 --> 10:35.567
"I have a hook

10:35.567 --> 10:36.536
that disables electric-pair-mode

10:36.536 --> 10:37.970
for chat buffers."

10:37.970 --> 10:39.136
Which, actually, fun fact,

10:39.136 --> 10:40.167
I was lying.

10:40.167 --> 10:41.836
Not that that matters.

10:41.836 --> 10:43.370
I have a hook.

10:43.370 --> 10:44.436
You could have a hook

10:44.436 --> 10:46.203
that just disables electric-pair-mode

10:46.203 --> 10:46.800
in chat buffers.

10:46.800 --> 10:47.803
To which he replied,

10:47.803 --> 10:50.667
"Yeah, but I want electric-pair-mode

10:50.667 --> 10:51.900
everywhere, except for

10:51.900 --> 10:53.670
when I type a frowny face."

10:53.670 --> 10:56.503
And this sandwich face. What is that?

10:56.503 --> 10:59.870
He said, "I could stop typing frowny faces."

10:59.870 --> 11:01.270
And then I said, "Hmm..."

11:01.270 --> 11:02.533
And then I said, "I feel like

11:02.533 --> 11:03.200
you're in the best position

11:03.200 --> 11:05.336
to write a package, like frowny.el,"

11:05.336 --> 11:07.270
I said as a joke.

11:07.270 --> 11:10.636
And then conversation went on,

11:10.636 --> 11:12.636
we talked about... made some jokes

11:12.636 --> 00:11:14.669
about Lisp and all that stuff.

11:14.670 --> 11:18.370
So anyway, went on, went on,

11:18.370 --> 11:20.503
and then apparently,

11:20.503 --> 11:21.703
23 minutes later,

11:21.703 --> 11:24.603
I had a frowny.el package

11:24.603 --> 11:26.770
just wrote up real quick.

11:26.770 --> 11:30.903
And yeah. That was it.

11:30.903 --> 11:31.803
I said, you know, buddy,

11:31.803 --> 00:11:33.069
anyway...

11:33.070 --> 11:34.270
So now we're going to look at

11:34.270 --> 11:35.803
the package that I wrote.

11:35.803 --> 11:36.970
frowny.el.

11:36.970 --> 11:40.070
It was actually pretty easy.

11:40.070 --> 11:41.936
Let's see here.

11:41.936 --> 11:44.170
This is it now.

11:44.170 --> 11:50.203
I kind of want to go back into...

11:50.203 --> 11:53.236
Let's go back to the very beginning.

11:53.236 --> 11:56.536
We'll see what we have here.

11:56.536 --> 11:57.303
Here's our very first,

11:57.303 --> 11:59.370
my very first commit.

11:59.370 --> 12:03.370
I already had all of this crap.

12:03.370 --> 12:05.736
Oh, I already did have a...

12:05.736 --> 12:08.336
I had a defgroup, I had frowny-eyes...

12:08.336 --> 12:11.236
This is basically the way I thought it was.

12:11.236 --> 12:14.736
You want to insert a frowny face.

12:14.736 --> 12:16.670
You type in the colon,

12:16.670 --> 12:18.670
or the equal sign, or whatever.

12:18.670 --> 12:19.836
for the eyes,

12:19.836 --> 12:21.436
and then you type the open parenthesis

12:21.436 --> 12:22.836
for the frown.

12:22.836 --> 12:25.703
And the problem is that

12:25.703 --> 12:27.870
the parenthesis then triggers

12:27.870 --> 12:29.170
electric-pair-mode.

12:29.170 --> 12:30.303
It's like, oh, no, I got

12:30.303 --> 12:32.503
a close parenthesis.

12:32.503 --> 12:33.836
So we just short-circuit that

12:33.836 --> 12:36.270
whenever there's a thing,

12:36.270 --> 12:38.636
a colon or equals sign before,

12:38.636 --> 12:40.136
and just insert the thing.

12:40.136 --> 12:41.736
Where did it go?

12:41.736 --> 12:43.303
That's kind of what I did.

12:43.303 --> 12:45.370
So I wrote out... This is it.

12:45.370 --> 12:46.603
This is the whole package.

12:46.603 --> 12:49.803
It's one function, one minor mode,

12:49.803 --> 12:52.536
one defcustom, and one group. That's it.

12:52.536 --> 12:54.303
Super simple.

12:54.303 --> 12:56.970
Basically, all it does is

12:56.970 --> 12:59.803
it inserts a frowny

12:59.803 --> 13:04.603
if it looks back and sees frowny eyes

13:04.603 --> 13:07.536
which are up here.

13:07.536 --> 13:08.136
The eyes are up here.

13:08.136 --> 13:11.536
Colon, equals sign...

13:11.536 --> 13:13.336
and then it inserts it

13:13.336 --> 13:15.970
or it does a self insert command.

13:15.970 --> 13:17.636
That simple.

13:17.636 --> 13:18.803
self-insert-command is what

13:18.803 --> 13:22.770
electric-pair-mode hooks into.

13:22.770 --> 13:24.370
So that's it.

13:24.370 --> 13:25.503
And then the minor mode

13:25.503 --> 13:27.070
just makes it a minor mode.

13:27.070 --> 13:28.503
So that was that.

13:28.503 --> 13:32.436
And you know, that worked just fine.

13:32.436 --> 13:35.670
That's the thing. It works just fine.

13:35.670 --> 13:37.270
Of course, after that,

13:37.270 --> 13:39.103
I had it do a couple of different things.

13:39.103 --> 13:40.236
I added a mascot.

13:40.236 --> 13:42.370
I had to add a README.

13:42.370 --> 13:45.070
I added a global-frowny-mode

13:45.070 --> 13:49.036
which was kind of interesting

13:49.036 --> 13:49.870
because I had to figure out

13:49.870 --> 13:51.603
turn on the frowny mode,

13:51.603 --> 13:56.336
I wrote this define-globalized-minor-mode

13:56.336 --> 13:58.603
which... is that the one

13:58.603 --> 14:00.870
No, that one's not super new.

14:00.870 --> 14:04.203
There was another one. Something else

14:04.203 --> 14:07.170
that was actually for 28 or 27,

14:07.170 --> 14:09.036
and I tried using it at work,

14:09.036 --> 14:10.970
where I have Windows

14:10.970 --> 14:13.436
and it was 27,

14:13.436 --> 14:14.670
so it must have been for 28.

14:14.670 --> 14:16.103
Anyway, something didn't work

14:16.103 --> 14:17.170
and I had to do all this stuff.

14:17.170 --> 14:20.870
Oops, sorry.

14:20.870 --> 14:23.070
I added some customization options,

14:23.070 --> 14:25.370
made package-lint happy...

14:25.370 --> 14:27.336
So yeah, let's see.

14:27.336 --> 14:30.170
That's 0.1.

14:30.170 --> 14:33.370
This version 0.1 was basically

14:33.370 --> 14:36.770
basic information.

14:36.770 --> 14:39.670
So then somebody... I put it on GitHub,

14:39.670 --> 14:40.270
good to go.

14:40.270 --> 14:43.103
It actually got some traction on Reddit.

14:43.103 --> 14:45.903
alphapapa, shout out to you

14:45.903 --> 14:47.303
who posted it there.

14:47.303 --> 14:50.636
But then I got an issue.

14:50.636 --> 14:51.770
Somebody said, hey, could you add

14:51.770 --> 14:52.936
smiley support?

14:52.936 --> 14:54.403
I was, like, well,

14:54.403 --> 14:55.070
I don't really understand

14:55.070 --> 14:56.003
why that's important.

14:56.003 --> 14:58.236
Well, you know, why not?

14:58.236 --> 15:01.270
They had a use case for it, I forget,

15:01.270 --> 15:02.270
but they had a use case for it.

15:02.270 --> 15:03.770
So, okay, fine.

15:03.770 --> 15:05.270
So I added smiley support right here.

15:05.270 --> 15:12.570
Oh, and I added some more eyes

15:12.570 --> 15:13.670
at some point.

15:13.670 --> 15:16.736
Now you have... you can do a tear.

15:16.736 --> 15:18.103
You can do a nose.

15:18.103 --> 15:23.603
Let's see...

15:23.603 --> 15:27.270
I had to change frowny-self-insert

15:27.270 --> 15:28.803
to frowny-insert-character,

15:28.803 --> 15:33.400
I added frowny-self-insert-frowny

15:33.400 --> 15:34.170
right here.

15:34.170 --> 15:38.536
I added... I had an obsolete function alias.

15:38.536 --> 15:39.503
That was super fun.

15:39.503 --> 15:40.870
That was a cool thing to do.

15:40.870 --> 15:43.970
I have insert-smiley as well.

15:43.970 --> 15:45.536
They're both very similar.

15:45.536 --> 15:47.336
They're all still there.

15:47.336 --> 15:49.403
I added a keymap.

15:49.403 --> 15:50.833
That was pretty much it.

15:50.833 --> 15:51.303
And you know, again,

15:51.303 --> 15:54.203
super simple, very small.

15:54.203 --> 15:56.270
Let me try this again.

15:56.270 --> 15:58.336
I added comments and docstrings.

15:58.336 --> 15:59.170
At some point, I decided

15:59.170 --> 16:03.870
let me try to make a frowny prog mode

16:03.870 --> 16:06.236
that only works in programming modes,

16:06.236 --> 16:07.536
that only works in strings

16:07.536 --> 16:09.303
and in comments, but...

16:09.303 --> 16:11.803
There's still a branch for it,

16:11.803 --> 16:14.003
if you want to go check it out.

16:14.003 --> 16:15.303
It wasn't super useful,

16:15.303 --> 16:16.336
and I think, actually,

16:16.336 --> 16:18.136
electric-pair-mode already does that.

16:18.136 --> 16:19.070
I'm not a hundred percent sure.

16:19.070 --> 16:21.503
I got a pull request

16:21.503 --> 16:23.903
from alphapapa, adding HISTORY.org.

16:23.903 --> 16:26.170
So you can go read the IRC logs about it.

16:26.170 --> 16:29.703
There's... Let's see...

16:29.703 --> 16:31.236
And then just recently,

16:31.236 --> 16:33.636
I actually had to add frowny-inhibit-modes

16:33.636 --> 16:39.603
because with dired, I kept getting this...

16:39.603 --> 16:43.236
I would try to hit open parenthesis

16:43.236 --> 16:47.536
which is my dired-hide-details-mode,

16:47.536 --> 16:50.536
but it kept saying, hey,

16:50.536 --> 16:51.903
it's a read-only buffer. I'm, like, what?

16:51.903 --> 16:55.303
Oh yeah! Right! It's Emacs. I can C-h k

16:55.303 --> 16:59.703
and then (, and oh, frowny-self-insert.

16:59.703 --> 17:01.636
Oh, duh. So I had to add

17:01.636 --> 17:05.036
this little frowny-inhibit-modes bit.

17:05.036 --> 17:06.836
So now there's a little custom in here.

17:06.836 --> 17:09.136
Right now, it just defaults to special-mode.

17:09.136 --> 17:12.170
I added dired myself on my config.

17:12.170 --> 17:14.236
I might add that as a default as well.

17:14.236 --> 17:15.270
I'm going to think about it.

17:15.270 --> 17:21.536
And then, yeah. So now we're at version 0.3,

17:21.536 --> 17:23.470
that's where we're at now.

17:23.470 --> 17:26.070
I just updated the README with the last one.

17:26.070 --> 17:28.603
Basically, lots of functionality,

17:28.603 --> 17:30.303
plus this frowny-inhibit-mode,

17:30.303 --> 17:32.836
and yeah, now it is just...

17:32.836 --> 17:34.503
This is it. This is the whole thing

17:34.503 --> 17:36.736
right here. It's pretty short.

17:36.736 --> 17:39.103
I think it's a total of 113 lines.

17:39.103 --> 17:42.203
But you know what, it's got...

17:42.203 --> 17:43.803
It's useful for people,

17:43.803 --> 17:45.136
and it's something where

17:45.136 --> 17:47.770
I never thought I would write

17:47.770 --> 17:49.470
software that people would use.

17:49.470 --> 17:51.136
As I said, I'm not a programmer.

17:51.136 --> 17:54.003
I'm just this guy.

17:54.003 --> 17:55.070
I like using Emacs

17:55.070 --> 17:56.103
because I'm kind of a nerd.

17:56.103 --> 17:57.436
I like tinkering around

17:57.436 --> 17:58.436
and doing things the hard way.

17:58.436 --> 18:02.570
I don't... I could use Microsoft Word.

18:02.570 --> 18:04.136
I should. I was trying to

18:04.136 --> 18:06.136
write this presentation up

18:06.136 --> 18:07.500
and my wife said, "Why don't you just

18:07.500 --> 18:08.903
write it in Google Docs?"

18:08.903 --> 18:11.503
And I said, "I don't want to."

18:11.503 --> 18:13.036
I mean, that's really it.

18:13.036 --> 18:15.036
Isn't that why we're all here?

18:15.036 --> 18:18.936
So yeah, you know,

18:18.936 --> 18:21.003
so anyway, that's the story about frowny

18:21.003 --> 18:22.270
That's the story about me,

18:22.270 --> 18:25.436
my journey to Emacs,

18:25.436 --> 18:27.136
my journey to this conference,

18:27.136 --> 18:30.636
and the journey of this package.

18:30.636 --> 18:32.536
I think it's about done.

18:32.536 --> 18:36.136
I'm not sure what else needs to go in there.

18:36.136 --> 18:38.103
If you have any suggestions,

18:38.103 --> 18:39.803
pull requests, comments,

18:39.803 --> 18:43.370
there's a GitHub right here,

18:43.370 --> 18:45.436
frowny.el.

18:45.436 --> 18:49.236
Let's see if I can pull it up.

18:49.236 --> 18:52.370
frowny.el.

18:52.370 --> 18:55.236
I'll put it on (inaudible).

18:55.236 --> 18:57.336
That's something I still don't understand.

18:57.336 --> 18:59.203
Packages, the whole keywords thing...

18:59.203 --> 19:00.236
I'm still confused on that.

19:00.236 --> 19:04.636
But yeah. Just requires Emacs 24.

19:04.636 --> 19:09.970
That's it. So anyway,

19:09.970 --> 19:12.470
I'm not sure if I'm going to be

19:12.470 --> 19:13.803
live for questions.

19:13.803 --> 19:14.736
I'm recording this, obviously,

19:14.736 --> 19:15.903
a bit before,

19:15.903 --> 19:18.636
and I will be travelling that weekend,

19:18.636 --> 19:20.303
this weekend, when you're watching this,

19:20.303 --> 19:25.236
so I'm going to... But right now,

19:25.236 --> 19:26.836
I'm recording it, I'm not 100% sure.

19:26.836 --> 19:28.636
I will know obviously by then.

19:28.636 --> 19:30.003
So maybe I'll talk to you

19:30.003 --> 19:31.070
in a moment, maybe not.

19:31.070 --> 19:33.300
Otherwise, have a

19:33.300 --> 19:34.336
great conference, everybody.

19:34.336 --> 19:38.303
I'm really excited to see everyone's talks.