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.