summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2021-01-16 01:10:58 -0500
committerSacha Chua <sacha@sachachua.com>2021-01-16 01:10:58 -0500
commit5b051096438bf250678fe78a864a5f55dc2274d4 (patch)
treee1213cf63974bd208642b0319321bc18cf85d3a7 /2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt
parentba2943b224789be84fd9ce2d349522a3a08bd9c2 (diff)
downloademacsconf-wiki-5b051096438bf250678fe78a864a5f55dc2274d4.tar.xz
emacsconf-wiki-5b051096438bf250678fe78a864a5f55dc2274d4.zip
Rename file
Diffstat (limited to '2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt')
-rw-r--r--2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt1446
1 files changed, 0 insertions, 1446 deletions
diff --git a/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt b/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt
deleted file mode 100644
index e9ecb9af..00000000
--- a/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt
+++ /dev/null
@@ -1,1446 +0,0 @@
-WEBVTT
-
-00:00:00.480 --> 00:00:02.879
-Good evening again. I think I
-
-00:00:02.879 --> 00:00:04.319
-have a little time here
-
-00:00:04.319 --> 00:00:07.359
-to talk about macros. Is there
-
-00:00:07.359 --> 00:00:09.440
-still room in our
-schedule for that,
-
-00:00:09.440 --> 00:00:11.440
-or should I just jump to some of
-
-00:00:11.440 --> 00:00:12.559
-my thoughts on the day?
-
-00:00:12.559 --> 00:00:15.920
-([Amin:] Pretty sure we
-
-00:00:15.920 --> 00:00:17.039
-have some time.)
-
-00:00:17.039 --> 00:00:19.039
-[Corwin:] All right. Great.
-([Amin:] Yeah, go for it.)
-
-00:00:19.039 --> 00:00:20.720
-Well, I'll just drive into my
-
-00:00:20.720 --> 00:00:22.384
-prepared thing here then.
-
-00:00:22.384 --> 00:00:24.720
-(Amin: yeah, actually, you're
-right on time, so...)
-
-00:00:24.720 --> 00:00:27.664
-[Corwin:] oh what an amazing thing.
-
-00:00:27.664 --> 00:00:31.199
-I just... You know, I have been
-trying to do what I...
-
-00:00:31.199 --> 00:00:33.040
-I've got a big thank you planned
-
-00:00:33.040 --> 00:00:36.239
-at the end, but let me just say,
-
-00:00:36.239 --> 00:00:39.200
-it's been really cool to watch the
-
-00:00:39.200 --> 00:00:42.160
-way that people work together.
-
-00:00:42.160 --> 00:00:46.800
-([Amin:] Absolutely. It's...
-This whole event today has been
-
-00:00:46.800 --> 00:00:50.879
-nothing but awesome, and
-
-00:00:50.879 --> 00:00:53.120
-no little part thanks to all of the help
-
-00:00:53.120 --> 00:00:56.909
-from all of you guys and everyone.
-
-00:00:56.909 --> 00:00:59.120
-Yeah, it's awesome.
-
-00:00:59.120 --> 00:01:03.065
-With that, I'll just shut up
-for now.
-
-00:01:03.065 --> 00:01:04.891
-Take it away, Corwin.)
-
-00:01:04.891 --> 00:01:06.479
-[Corwin:] Who knows how to make
-
-00:01:06.479 --> 00:01:09.840
-make that the default in good old smex?
-
-00:01:09.840 --> 00:01:12.799
-All right. So I'm gonna try to continue
-
-00:01:12.799 --> 00:01:14.551
-my theme from the previous talk.
-
-00:01:14.551 --> 00:01:16.393
-I'm a longtime Emacs user,
-
-00:01:16.393 --> 00:01:20.240
-but I'm a pretty new person
-
-00:01:20.240 --> 00:01:22.380
-to trying to really understand
-
-00:01:22.380 --> 00:01:24.960
-what's going on within Emacs and make
-
-00:01:24.960 --> 00:01:28.240
-my customizations to it--simple for
-
-00:01:28.240 --> 00:01:30.960
-what I tend to just think of will work.
-
-00:01:30.960 --> 00:01:33.566
-And maybe that's a nice bow
-
-00:01:33.566 --> 00:01:36.240
-to put on that earlier talk.
-
-00:01:40.479 --> 00:01:44.981
-Let's see here now. It's C-x M-i.
-
-00:01:44.981 --> 00:01:48.159
-That's right.
-
-00:01:48.159 --> 00:01:52.960
-And let's try that again. Okay, good.
-
-00:01:52.960 --> 00:01:55.240
-So demoing is fun,
-
-00:01:55.240 --> 00:01:57.192
-but I will save most of that
-
-00:01:57.192 --> 00:01:59.759
-for tomorrow where my
-
-00:01:59.759 --> 00:02:02.750
-dear friend and co-collaborator
-
-00:02:02.750 --> 00:02:04.799
-in bringing you the dungeon-mode project,
-
-00:02:04.799 --> 00:02:07.261
-which is sort of the exciting thing
-
-00:02:07.261 --> 00:02:10.800
-that we hope you'll be interested in,
-
-00:02:10.800 --> 00:02:15.680
-gets a little more of a reveal.
-
-00:02:15.680 --> 00:02:19.360
-Tonight, I'll just close saying
-
-00:02:19.360 --> 00:02:22.640
-a few things about the process of
-
-00:02:22.640 --> 00:02:25.680
-making it and continuing my theme of
-community.
-
-00:02:25.680 --> 00:02:29.760
-First of all, a specific and upfront
-shout out
-
-00:02:29.760 --> 00:02:33.120
-to tv's wasamasa who
-
-00:02:33.120 --> 00:02:36.239
-absolutely shaped and guided this
-
-00:02:36.239 --> 00:02:38.582
-this program. I may have taken out
-
-00:02:38.582 --> 00:02:39.898
-a slide with your name on it,
-
-00:02:39.898 --> 00:02:43.599
-but thank you.
-
-00:02:43.599 --> 00:02:46.479
-So when we think about Emacs macros
-
-00:02:46.479 --> 00:02:50.239
-and the power that they give us,
-
-00:02:53.280 --> 00:02:54.720
-I think about them as a really
-
-00:02:54.720 --> 00:02:56.400
-deep rabbit hole. They confuse
-
-00:02:56.400 --> 00:03:00.239
-people a lot. And so, to try to center
-
-00:03:00.239 --> 00:03:02.480
-myself on that, I remember first that
-
-00:03:03.599 --> 00:03:09.599
-they're going to be talking to us
-about code.
-
-00:03:09.599 --> 00:03:13.519
-Excuse me, I realize I hadn't
-set my timer.
-
-00:03:13.519 --> 00:03:18.000
-Here we are.
-
-00:03:18.000 --> 00:03:20.543
-So a simple macro syntax is
-
-00:03:20.543 --> 00:03:22.239
-going to generate
-
-00:03:22.239 --> 00:03:25.920
-something that is implicitly confusing
-
-00:03:25.920 --> 00:03:27.657
-to somebody that knows the syntax
-
-00:03:27.657 --> 00:03:28.988
-of Emacs Lisp well.
-
-00:03:28.988 --> 00:03:30.785
-We see something like this
-
-00:03:30.785 --> 00:03:32.784
-and a veteran eye says
-
-00:03:32.784 --> 00:03:36.239
-"That x isn't quoted. What's going on?"
-
-00:03:36.239 --> 00:03:39.840
-but it can be hard to miss.
-
-00:03:39.840 --> 00:03:43.040
-A lot of the functions (as we'll talk
-
-00:03:43.040 --> 00:03:46.640
-about in a moment) that are built
-into Emacs
-
-00:03:46.640 --> 00:03:48.572
-really are macros, so a lot of
-
-00:03:48.572 --> 00:03:50.480
-Emacs features work this way.
-
-00:03:50.480 --> 00:03:53.040
-It might be scary, but we have to look at
-
-00:03:53.040 --> 00:03:54.640
-it closely if we really want to get
-
-00:03:54.640 --> 00:03:58.400
-friendly with Emacs.
-
-00:03:58.400 --> 00:04:01.439
-Let's just jump right into defmacro,
-
-00:04:01.439 --> 00:04:03.920
-which is our key entry point.
-
-00:04:04.720 --> 00:04:05.833
-The notes from this talk
-
-00:04:05.833 --> 00:04:09.420
-include the link to that,
-
-00:04:09.420 --> 00:04:12.000
-which... Definitely
-
-00:04:12.000 --> 00:04:14.640
-read through a couple of times.
-
-00:04:14.640 --> 00:04:16.000
-That may take you through
-
-00:04:16.000 --> 00:04:19.440
-into the cl-def macro, which adds
-
-00:04:19.440 --> 00:04:23.440
-the Common Lisp extensions.
-
-00:04:23.440 --> 00:04:28.080
-Definitely challenging.
-
-00:04:28.080 --> 00:04:30.560
-I've struggled there,
-
-00:04:30.560 --> 00:04:31.759
-as we'll take a look at
-
-00:04:31.759 --> 00:04:34.800
-in a moment.
-
-00:04:34.800 --> 00:04:36.266
-So I haven't played too much with
-
-00:04:36.266 --> 00:04:38.320
-cl-maclet. Perhaps success in
-
-00:04:38.320 --> 00:04:40.804
-in that keyword space
-
-00:04:40.804 --> 00:04:44.320
-and figuring out what
-the right balance is there
-
-00:04:44.320 --> 00:04:46.000
-will give me the confidence to try
-
-00:04:46.000 --> 00:04:51.680
-some more lexical macros.
-
-00:04:51.680 --> 00:04:53.402
-Let me also briefly introduce
-
-00:04:53.402 --> 00:04:55.134
-the comma (,) and back quote (`).
-
-00:04:55.134 --> 00:04:57.389
-If you have allowed your eyes
-
-00:04:57.389 --> 00:04:59.321
-to cross when you see these,
-
-00:04:59.321 --> 00:05:03.113
-that's not a shameful,
-shameful thing.
-
-00:05:03.113 --> 00:05:06.080
-It's confusing, and we should be
-
-00:05:06.080 --> 00:05:07.543
-alerting each other
-
-00:05:07.543 --> 00:05:09.520
-when we stick macros in,
-
-00:05:09.520 --> 00:05:11.199
-often by putting them in
-
-00:05:11.199 --> 00:05:12.255
-different library spaces
-
-00:05:12.255 --> 00:05:14.160
-for complicated projects,
-
-00:05:14.160 --> 00:05:17.520
-or otherwise warning people
-
-00:05:17.520 --> 00:05:19.520
-that this is not an interactive function,
-
-00:05:19.520 --> 00:05:21.919
-even if you get away
-with using it like one.
-
-00:05:22.639 --> 00:05:26.000
-Watch your back.
-
-00:05:26.000 --> 00:05:32.800
-The manual itself talks about macros
-
-00:05:32.800 --> 00:05:35.840
-as being a way of evaluating,
-
-00:05:35.840 --> 00:05:39.993
-as being an evaluator that will take
-
-00:05:39.993 --> 00:05:42.800
-our Emacs Lisp expression
-
-00:05:42.800 --> 00:05:44.800
-and the set of forms that
-
-00:05:44.800 --> 00:05:47.590
-will feed to it our code,
-
-00:05:48.960 --> 00:05:50.792
-but it also provides us with
-
-00:05:50.792 --> 00:05:53.467
-this concept of an environment.
-
-00:05:53.467 --> 00:05:57.027
-That's really where the power
-comes in.
-
-00:05:57.027 --> 00:05:58.240
-Through that, we can have
-
-00:05:58.240 --> 00:06:00.080
-lexical variables and
-
-00:06:00.080 --> 00:06:03.199
-think about--bring in some of the
-
-00:06:03.199 --> 00:06:06.400
-capabilities that
-
-00:06:06.400 --> 00:06:09.759
-can be harder to reach with
-
-00:06:09.759 --> 00:06:13.840
-a pure declarative statement that
-
-00:06:13.840 --> 00:06:21.440
-doesn't allow for top level
-
-00:06:21.440 --> 00:06:28.639
-asynchronous... Asynchronicity...
-
-00:06:28.639 --> 00:06:31.950
-I'm gonna basically
-
-00:06:33.520 --> 00:06:35.577
-ignore the byte-compilation phase
-
-00:06:35.577 --> 00:06:36.880
-for this talk
-
-00:06:36.880 --> 00:06:38.463
-in order to have any prayer
-
-00:06:38.463 --> 00:06:39.919
-of getting through it in the
-
-00:06:39.919 --> 00:06:43.600
-remaining 9 or 11 minutes or whatever.
-
-00:06:43.600 --> 00:06:50.441
-But suffice to say,
-that's a scary space,
-
-00:06:50.441 --> 00:06:52.240
-and that's really
-
-00:06:52.240 --> 00:06:53.800
-the thing that you want to
-
-00:06:53.800 --> 00:06:55.277
-start learning about
-
-00:06:55.277 --> 00:06:57.199
-as you think about
-
-00:06:57.199 --> 00:07:02.160
-taking macros on in earnest.
-
-00:07:02.160 --> 00:07:05.919
-Coming back to the comma syntax,
-
-00:07:05.919 --> 00:07:09.759
-then, having given ourselves a
-
-00:07:09.759 --> 00:07:12.479
-working definition for the Emacs Lisp
-
-00:07:12.479 --> 00:07:14.479
-runtime environment, then we can say that
-
-00:07:14.479 --> 00:07:15.840
-macros are going to
-
-00:07:15.840 --> 00:07:21.120
-inject code back into that stream,
-
-00:07:21.120 --> 00:07:25.280
-whereas backquote (`)
-
-00:07:25.280 --> 00:07:28.479
-is going to give code back.
-
-00:07:28.479 --> 00:07:31.919
-to the stream--or interject, sorry,
-
-00:07:31.919 --> 00:07:33.632
-it's going to interject
-
-00:07:33.632 --> 00:07:35.360
-back into the stream.
-
-00:07:35.360 --> 00:07:39.840
-Sort of an exclamatory "Excuse me,
-
-00:07:39.840 --> 00:07:46.966
-I'd like to have a value here."
-We can take that value
-
-00:07:46.966 --> 00:07:48.639
-from the environment as it exists
-
-00:07:48.639 --> 00:07:54.160
-when our macro is evaluated.
-
-00:07:54.160 --> 00:07:56.003
-Backquote, on the other hand,
-
-00:07:56.003 --> 00:08:00.560
-takes the result from that
-
-00:08:00.560 --> 00:08:02.201
-and returns it back to the stream
-
-00:08:02.201 --> 00:08:03.467
-for evaluation at the
-
-00:08:03.467 --> 00:08:05.680
-processing level that invoked us.
-
-00:08:05.680 --> 00:08:08.720
-So in other words, perhaps back up to
-
-00:08:08.720 --> 00:08:10.960
-a top-level eval expression where our
-
-00:08:10.960 --> 00:08:16.720
-macro is invoked.
-
-00:08:20.080 --> 00:08:22.560
-I'm going to briefly bring
-
-00:08:22.560 --> 00:08:23.759
-you back to the game
-
-00:08:23.759 --> 00:08:27.120
-for just a moment.
-
-00:08:30.240 --> 00:08:32.479
-I won't linger on this slide,
-
-00:08:32.479 --> 00:08:37.039
-but briefly: this is a
-
-00:08:37.039 --> 00:08:41.615
-role-playing, pen and pencil,
-
-00:08:41.615 --> 00:08:43.829
-physical dice tradition
-
-00:08:43.829 --> 00:08:46.320
-that dates back a long time
-
-00:08:46.320 --> 00:08:48.080
-from a technology perspective.
-
-00:08:48.080 --> 00:08:50.727
-It's old in the same way
-
-00:08:50.727 --> 00:08:58.560
-that other tools that I like
-are old.
-
-00:08:58.560 --> 00:09:00.185
-It's simple to understand.
-
-00:09:00.185 --> 00:09:01.873
-I can communicate a lot with it
-
-00:09:01.873 --> 00:09:03.952
-with a simple amount of typing
-
-00:09:03.952 --> 00:09:09.120
-or scribbling something
-on a piece of paper.
-
-00:09:09.120 --> 00:09:13.500
-It has a complicated problem space
-of its own.
-
-00:09:13.500 --> 00:09:15.519
-Again, I don't want to
-
-00:09:15.519 --> 00:09:18.212
-get too much into the game here,
-
-00:09:18.212 --> 00:09:20.177
-but in this talk,
-
-00:09:20.177 --> 00:09:22.590
-for the last five minutes,
-
-00:09:22.590 --> 00:09:24.751
-I'll focus on the process
-
-00:09:24.751 --> 00:09:26.640
-that we took to
-
-00:09:26.640 --> 00:09:29.190
-automate getting data out of
-
-00:09:29.190 --> 00:09:31.564
-the Org Mode tables
-which eventually
-
-00:09:31.564 --> 00:09:33.855
-(as we'll talk about more
-tomorrow)
-
-00:09:33.855 --> 00:09:36.000
-are used to draw
-
-00:09:36.000 --> 00:09:39.440
-game maps and other things.
-
-00:09:39.440 --> 00:09:42.543
-Here I talk about why we did
-that.
-
-00:09:42.543 --> 00:09:45.279
-I'm going to skip briefly past that,
-
-00:09:45.279 --> 00:09:49.360
-and say instead that at a high level,
-
-00:09:49.360 --> 00:09:51.440
-it's symbolic informatics.
-
-00:09:51.440 --> 00:09:53.519
-We're giving a symbolic name
-
-00:09:53.519 --> 00:09:58.080
-to a tile set,
-
-00:10:02.000 --> 00:10:04.000
-and then assigning that tile set some
-
-00:10:04.000 --> 00:10:04.840
-some characteristics
-
-00:10:04.840 --> 00:10:06.820
-like physical speeds, screen space
-
-00:10:06.820 --> 00:10:08.399
-(a variable that we might
-
-00:10:08.399 --> 00:10:12.800
-want to swap in), and so forth.
-
-00:10:12.800 --> 00:10:15.200
-You know, our project rests heavily on
-
-00:10:15.200 --> 00:10:21.040
-Org Mode and its
-fundamental capabilities.
-
-00:10:21.040 --> 00:10:24.000
-The code I'm going to show here
-
-00:10:28.320 --> 00:10:31.360
-is focused around a sticky
-
-00:10:31.360 --> 00:10:32.380
-problem space in
-
-00:10:32.380 --> 00:10:33.861
-information technology.
-
-00:10:33.861 --> 00:10:38.240
-I'm a professional software engineer
-
-00:10:38.240 --> 00:10:40.362
-turned technology architect.
-
-00:10:40.362 --> 00:10:43.495
-I support the websites for
-
-00:10:43.495 --> 00:10:46.533
-a recognizable financial services brand
-
-00:10:46.533 --> 00:10:48.500
-that I don't identify
-
-00:10:48.500 --> 00:10:50.720
-just so I don't accidentally end up
-
-00:10:50.720 --> 00:10:54.399
-inadvertently misrepresenting my firm
-
-00:10:54.399 --> 00:10:56.456
-in some financial perspective
-
-00:10:56.456 --> 00:10:57.760
-if I let some other
-
-00:10:57.760 --> 00:11:03.300
-companies' name slip, or my own.
-
-00:11:03.300 --> 00:11:07.700
-It's certainly no representation
-
-00:11:07.700 --> 00:11:11.279
-of an opinion other than my own.
-
-00:11:18.800 --> 00:11:22.720
-So ETL has to do with moving data around.
-
-00:11:22.720 --> 00:11:26.240
-We have the idea of
-
-00:11:26.240 --> 00:11:29.200
-a pipeline where we'll be able to verify
-
-00:11:29.200 --> 00:11:30.560
-certain assumptions,
-
-00:11:30.560 --> 00:11:32.106
-nominally about data quality,
-
-00:11:32.106 --> 00:11:33.600
-but it could be about anything.
-
-00:11:33.600 --> 00:11:35.630
-Before the pipeline starts, okay,
-
-00:11:35.630 --> 00:11:36.886
-we've got a state where we think
-
-00:11:36.886 --> 00:11:38.560
-it should work if we run it.
-
-00:11:38.560 --> 00:11:41.920
-We have some extraction where we'll
-
-00:11:41.920 --> 00:11:43.973
-get our sources, and we may have
-
-00:11:43.973 --> 00:11:45.040
-the opportunity to
-
-00:11:45.040 --> 00:11:47.327
-make some assertions there.
-
-00:11:47.327 --> 00:11:50.510
-In the transform stage,
-as well as the load,
-
-00:11:50.510 --> 00:11:52.720
-things get a little dicer,
-
-00:11:52.720 --> 00:11:54.079
-to the point where we come out of the
-
-00:11:54.079 --> 00:11:55.360
-load stage and we should have some
-
-00:11:55.360 --> 00:11:56.676
-really solid assertions again
-
-00:11:56.676 --> 00:11:57.724
-that we can even go back
-
-00:11:57.724 --> 00:11:59.680
-and compare to the extract stage.
-
-00:11:59.680 --> 00:12:02.639
-From this, we have the rudimentaries
-
-00:12:02.639 --> 00:12:04.959
-of a data quality practice.
-
-00:12:04.959 --> 00:12:08.120
-In this case, we have a number of
-
-00:12:08.120 --> 00:12:09.360
-Org Mode files that will all
-
-00:12:09.360 --> 00:12:12.639
-be distributed across a
-
-00:12:12.639 --> 00:12:16.720
-number of players' computers,
-
-00:12:16.720 --> 00:12:18.959
-so we might not want to update every
-
-00:12:18.959 --> 00:12:20.320
-part of every buffer.
-
-00:12:20.320 --> 00:12:22.720
-I think it's a complicated problem space.
-
-00:12:22.720 --> 00:12:24.560
-So we tried to take
-
-00:12:24.560 --> 00:12:27.839
-a long-term view of
-
-00:12:27.839 --> 00:12:30.321
-the solution that we needed.
-
-00:12:30.321 --> 00:12:32.160
-So I'll go ahead
-
-00:12:32.160 --> 00:12:36.279
-and open up the function
-that...
-
-00:12:36.279 --> 00:12:39.020
-Let's actually start with the one
-
-00:12:39.020 --> 00:12:41.680
-that's pretty easy to read.
-
-00:12:41.680 --> 00:12:46.800
-I'm gonna go ahead and
-just crank it up huge,
-
-00:12:46.800 --> 00:12:51.680
-in case anybody's watching in 480.
-
-00:12:51.680 --> 00:12:57.733
-This program is not a work of art
-
-00:12:57.733 --> 00:13:01.120
-It's a simple implementation
-of the idea that
-
-00:13:01.120 --> 00:13:04.000
-an alist of functions
-
-00:13:04.000 --> 00:13:06.633
-that return maybe some data,
-
-00:13:06.633 --> 00:13:10.399
-maybe some data and an entry
-back into that alist,
-
-00:13:10.399 --> 00:13:13.040
-can be done quite extensively with
-
-00:13:13.040 --> 00:13:15.680
-very few lines of code.
-
-00:13:15.680 --> 00:13:17.586
-Neither is it an especially tight
-
-00:13:17.586 --> 00:13:19.600
-or thrifty implementation.
-
-00:13:19.600 --> 00:13:22.000
-It's just trying to get the job done
-
-00:13:22.000 --> 00:13:25.056
-with a doc statement for everything.
-
-00:13:25.056 --> 00:13:28.595
-At the heart, we see a call to
-
-00:13:28.595 --> 00:13:32.067
-this macro called dm-coalesce-hash,
-
-00:13:32.067 --> 00:13:33.714
-and that's what I'd like
-to focus in on.
-
-00:13:33.714 --> 00:13:35.360
-You can see... I think
-
-00:13:35.360 --> 00:13:38.800
-that something unpleasant is
-happening here.
-
-00:13:38.800 --> 00:13:43.991
-I've got an eval in what is...
-
-00:13:43.991 --> 00:13:49.519
-I will share a fairly central function
-
-00:13:49.519 --> 00:13:52.160
-that those implementing
-this ETL pattern are
-
-00:13:52.160 --> 00:13:54.933
-welcome to derive from.
-
-00:13:54.933 --> 00:13:57.680
-That is, this is a
-default transform
-
-00:13:57.680 --> 00:14:00.959
-that you can get when loading
-certain kinds of
-
-00:14:00.959 --> 00:14:04.560
-org-mode tables that have been
-
-00:14:04.560 --> 00:14:06.399
-properly adorned. Again, we'll get
-
-00:14:06.399 --> 00:14:09.120
-into that all tomorrow.
-
-00:14:09.120 --> 00:14:11.900
-So, keeping an eye on time.
-Couple minutes left.
-
-00:14:11.900 --> 00:14:13.760
-Let's look at the macro itself.
-
-00:14:13.760 --> 00:14:15.000
-I have a slide on this,
-
-00:14:15.000 --> 00:14:24.639
-but let's go ahead
-and risk getting off page.
-
-00:14:24.639 --> 00:14:27.199
-Oh boy. Here we go. So this is my
-
-00:14:27.199 --> 00:14:28.959
-utilities bucket.
-
-00:14:28.959 --> 00:14:31.920
-It has such basic features as "give me a
-
-00:14:31.920 --> 00:14:34.000
-hash table with some defaults, I'll think
-
-00:14:34.000 --> 00:14:36.000
-about that later,"
-
-00:14:36.000 --> 00:14:44.720
-and "add to list," a special version
-
-00:14:44.720 --> 00:14:47.600
-that enables us to be a little cavalier
-
-00:14:47.600 --> 00:14:49.360
-in experimenting with alist versus
-
-00:14:49.360 --> 00:14:50.967
-hashes versus plists.
-
-00:14:50.967 --> 00:14:53.178
-We've made a right mess for
-ourselves
-
-00:14:53.178 --> 00:14:54.399
-in the proof of concept area,
-
-00:14:54.399 --> 00:14:57.433
-and it's ripe for someone to write a
-
-00:14:57.433 --> 00:14:58.560
-whitepaper about
-
-00:14:58.560 --> 00:15:00.240
-when to prefer these things.
-
-00:15:04.800 --> 00:15:08.000
-The merge alist...
-
-00:15:08.000 --> 00:15:12.959
-Same work here.
-Let's get down to business.
-
-00:15:12.959 --> 00:15:14.667
-This function has quite a...
-
-00:15:14.667 --> 00:15:17.467
-This macro has quite a doc string.
-
-00:15:17.467 --> 00:15:20.720
-I think I mentioned earlier
-that I got myself into
-
-00:15:20.720 --> 00:15:22.088
-trouble with the keyword properties.
-
-00:15:22.088 --> 00:15:23.519
-You can see that we have
-
-00:15:23.519 --> 00:15:27.359
-not only quite a number of them,
-
-00:15:27.359 --> 00:15:31.155
-but a lot of default values,
-
-00:15:31.155 --> 00:15:35.446
-many of which may be relying on
-
-00:15:35.446 --> 00:15:37.264
-the values that are passed in here.
-
-00:15:37.264 --> 00:15:40.000
-This is complicated. As it turns out,
-
-00:15:40.000 --> 00:15:44.000
-I wasn't brave enough in most cases
-
-00:15:44.000 --> 00:15:45.485
-to try to write a lambda
-
-00:15:45.485 --> 00:15:47.279
-that could understand and
-
-00:15:47.279 --> 00:15:49.300
-replace its own local variable.
-
-00:15:49.300 --> 00:15:50.399
-I just didn't...
-
-00:15:50.399 --> 00:15:53.519
-It didn't save me enough time. This was
-
-00:15:53.519 --> 00:15:56.532
-really easy to read and write and
-understand
-
-00:15:56.532 --> 00:15:58.240
-as I thought through my problem,
-
-00:15:58.240 --> 00:16:00.000
-but now, as I use it,
-
-00:16:00.000 --> 00:16:02.486
-I've lost a little ground with
-this.
-
-00:16:02.486 --> 00:16:04.079
-I'm not even sure
-
-00:16:04.079 --> 00:16:06.453
-I like what I got from
-
-00:16:06.453 --> 00:16:09.341
-the many keyword properties
-when it...
-
-00:16:09.341 --> 00:16:11.920
-And we can look, perhaps if we have
-
-00:16:11.920 --> 00:16:17.340
-the time, at what that looks like in
-
-00:16:19.920 --> 00:16:22.720
-Oh, all right, I have to separately
-
-00:16:22.720 --> 00:16:24.480
-dismiss and restart that.
-
-00:16:24.480 --> 00:16:27.519
-So that's just about my time.
-
-00:16:27.519 --> 00:16:29.600
-Being respectful of that, I want
-
-00:16:29.600 --> 00:16:31.920
-to invite presenters to just jump in at
-
-00:16:31.920 --> 00:16:35.519
-any of the many large pauses I leave.
-
-00:16:35.519 --> 00:16:38.079
-I'll just leave up the doc string
-
-00:16:38.079 --> 00:16:40.160
-for a moment and maybe split the screen
-
-00:16:40.160 --> 00:16:45.199
-and pull open an item.
-
-00:16:45.199 --> 00:16:48.720
-([Amin]: Thank you very
-
-00:16:48.720 --> 00:16:50.720
-much for your talk, Corwin.
-
-00:16:50.720 --> 00:16:53.839
-I think you still have
-
-00:16:53.839 --> 00:16:55.027
-maybe three or four more minutes,
-
-00:16:55.027 --> 00:16:57.680
-if you want to quickly wrap up.)
-
-00:16:57.680 --> 00:17:00.644
-[Corwin:] Okay, so three or four
-more minutes
-
-00:17:00.644 --> 00:17:05.439
-I can easily spend on thank yous.
-
-00:17:05.439 --> 00:17:07.280
-I might switch to that if there aren't
-
-00:17:07.280 --> 00:17:08.270
-questions on the pad.
-
-00:17:10.160 --> 00:17:12.559
-([Amin:] Would you like me to pull up the pad,
-
-00:17:12.559 --> 00:17:14.079
-or are you looking at it?)
-
-00:17:14.079 --> 00:17:16.777
-[Corwin:] I am. I bookmarked it.
-
-00:17:16.777 --> 00:17:30.840
-I am pulling the tab
-and I'll bring it in.
-
-00:17:30.840 --> 00:17:38.799
-Okay. All right. This is the wrong
-Etherpad.
-
-00:17:38.799 --> 00:17:44.480
-Thanks for the link.
-
-00:17:44.480 --> 00:17:54.880
-All right. So I think I'm
-looking for macros.
-
-00:17:54.880 --> 00:17:57.630
-Okay. Key message. Sure.
-
-00:17:57.630 --> 00:18:01.679
-So, the key message is that it's
-
-00:18:01.679 --> 00:18:02.960
-a jungle out there.
-
-00:18:02.960 --> 00:18:05.912
-Macros, along with any other design,
-
-00:18:05.912 --> 00:18:08.559
-can leave you in a position
-
-00:18:08.559 --> 00:18:11.919
-where you have a nice API. I can show
-
-00:18:11.919 --> 00:18:13.600
-you other examples (you can find them in
-
-00:18:13.600 --> 00:18:14.960
-the dungeon-mode source)
-
-00:18:14.960 --> 00:18:18.480
-of many, many other places where I use
-
-00:18:18.480 --> 00:18:20.820
-this exact same formula,
-
-00:18:20.820 --> 00:18:23.840
-quickly sketching out
-how a character sheet
-
-00:18:23.840 --> 00:18:26.180
-or another big data set
-
-00:18:26.180 --> 00:18:28.480
-needs to figure out
-what tables are
-
-00:18:28.480 --> 00:18:29.320
-going to be interesting
-
-00:18:29.320 --> 00:18:30.720
-from the collection of files,
-
-00:18:30.720 --> 00:18:33.967
-and then load up the tile set,
-
-00:18:33.967 --> 00:18:38.880
-and the layout file from that.
-
-00:18:38.880 --> 00:18:40.542
-And I mean, it works.
-
-00:18:40.542 --> 00:18:42.677
-The project is moving forward
-with this.
-
-00:18:42.677 --> 00:18:44.799
-I have the flexibility that I need.
-
-00:18:44.799 --> 00:18:46.559
-But here I am evaling my own code
-
-00:18:46.559 --> 00:18:48.640
-to make darn sure even if I get
-
-00:18:48.640 --> 00:18:52.400
-byte-compiled, this macro
-
-00:18:52.400 --> 00:18:55.440
-does get evaluated in the user's real
-
-00:18:55.440 --> 00:18:57.684
-run time. Clearly a design fail.
-
-00:18:57.684 --> 00:18:58.890
-So that would be...
-
-00:18:58.890 --> 00:19:00.880
-The key point of my talk is to
-
-00:19:00.880 --> 00:19:05.600
-present this design fail and
-
-00:19:05.600 --> 00:19:08.320
-thank the community, but especially
-
-00:19:08.320 --> 00:19:10.942
-wasamasa for some patience.
-
-00:19:10.942 --> 00:19:13.280
-Let me add at this moment that
-
-00:19:13.280 --> 00:19:13.333
-he was so frustrated with me.
-
-00:19:13.333 --> 00:19:17.115
-They were sort of frustrated with me
-
-00:19:17.115 --> 00:19:20.400
-(I think I didn't qualify pronouns)
-
-00:19:24.240 --> 00:19:26.287
-with doing this. The first...
-
-00:19:26.287 --> 00:19:27.985
-This was one of our first
-interactions,
-
-00:19:27.985 --> 00:19:29.919
-and the feedback was,
-
-00:19:29.919 --> 00:19:34.240
-"Why is this a macro. Full stop."
-
-00:19:34.240 --> 00:19:36.640
-And that's a great message, actually.
-
-00:19:36.640 --> 00:19:39.520
-I hope that maybe this
-can encourage
-
-00:19:39.520 --> 00:19:42.720
-further talks across the subject about,
-
-00:19:42.720 --> 00:19:43.808
-you know, "Hey, wait a minute,
-
-00:19:43.808 --> 00:19:45.549
-macros are really fantastic,"
-
-00:19:45.549 --> 00:19:47.018
-as I hope I made clear.
-
-00:19:47.018 --> 00:19:48.559
-You can do a tremendous amount
-
-00:19:48.559 --> 00:19:51.039
-with them, and we rely on them
-
-00:19:51.039 --> 00:19:55.200
-for almost all the fun goodies,
-
-00:19:55.200 --> 00:20:02.159
-from defun, setq...
-
-00:20:02.159 --> 00:20:04.639
-I want to get to my thank yous.
-
-00:20:04.639 --> 00:20:18.840
-Let me just peek back at the pad.
-
-00:20:20.000 --> 00:20:22.080
-Well, that was actually a scratch buffer,
-
-00:20:22.080 --> 00:20:24.720
-so I'll have to read it cold off
-my notes.
-
-00:20:27.919 --> 00:20:30.320
-But I'll switch to... I'll also...
-
-00:20:30.320 --> 00:20:31.600
-I'll say a couple of thank-yous if you
-
-00:20:31.600 --> 00:20:34.320
-don't mind, Amin.
-
-00:20:34.320 --> 00:20:36.080
-In addition to the big thank you that I
-
-00:20:36.080 --> 00:20:39.360
-hope was implied by my shout out
-to wasamasa,
-
-00:20:39.360 --> 00:20:42.720
-I also want to thank you, Amin, for
-
-00:20:42.720 --> 00:20:46.640
-your kindness in extending
-
-00:20:46.640 --> 00:20:51.360
-to the project as well as to me, the
-
-00:20:51.360 --> 00:20:54.320
-the chance to present here.
-
-00:20:54.320 --> 00:20:56.358
-You've also done a lot of great stuff
-
-00:20:56.358 --> 00:20:59.360
-for our project. Thank you very much for
-that.
-
-00:20:59.360 --> 00:21:03.400
-Sacha Chua (I'll get there),
-
-00:21:03.400 --> 00:21:15.919
-thank you so much for
-
-00:21:15.919 --> 00:21:17.200
-the inspiration that you are to our
-
-00:21:17.200 --> 00:21:18.320
-whole community.
-
-00:21:18.320 --> 00:21:22.400
-I also want to thank the presenters
-
-00:21:22.400 --> 00:21:25.600
-for just being so flexible and
-
-00:21:25.600 --> 00:21:27.600
-nagging back through the whole thing,
-
-00:21:27.600 --> 00:21:29.120
-and especially to Leo
-
-00:21:29.120 --> 00:21:32.159
-who has done so much to
-drive the show today.
-
-00:21:32.159 --> 00:21:37.242
-This is a fractious tent at times,
-
-00:21:37.242 --> 00:21:39.800
-and sometimes it is indeed
-
-00:21:39.800 --> 00:21:41.360
-a little bit of a circus,
-
-00:21:41.360 --> 00:21:44.746
-but I am learning so much so fast.
-
-00:21:44.746 --> 00:21:46.880
-I'm just inspired by how much
-
-00:21:46.880 --> 00:21:49.333
-Emacs can teach us.
-
-00:21:49.333 --> 00:21:52.901
-([Amin:] thank you, Corwin,
-for your kind words
-
-00:21:52.901 --> 00:21:54.960
-about me, of course,
-
-00:21:54.960 --> 00:21:56.000
-about all of us
-
-00:21:56.000 --> 00:21:58.000
-and the conference...
-
-00:21:58.000 --> 00:22:02.400
-Indeed, thanks to everyone who's helped,
-
-00:22:02.400 --> 00:22:04.159
-including the speakers, of course,
-
-00:22:04.159 --> 00:22:05.840
-without whom EmacsConf really
-
-00:22:05.840 --> 00:22:08.960
-wouldn't have been a EmacsConf.
-
-00:22:08.960 --> 00:22:10.640
-It's been a pleasure
-
-00:22:10.640 --> 00:22:12.366
-knowing you and
-working with you,
-
-00:22:12.366 --> 00:22:15.743
-from afar for the most part
-
-00:22:15.743 --> 00:22:17.360
-on dungeon-mode,
-
-00:22:17.360 --> 00:22:19.937
-helping with small things
-here and there
-
-00:22:19.937 --> 00:22:21.796
-but yeah, it's been my pleasure,
-
-00:22:21.796 --> 00:22:23.840
-and it's great to have you and
-
-00:22:23.840 --> 00:22:26.582
-everyone else part of the
-community,
-
-00:22:26.582 --> 00:22:29.180
-and for me to be part of the
-community.
-
-00:22:29.180 --> 00:22:30.559
-It's been a lot of fun.
-
-00:22:30.559 --> 00:22:33.679
-Thank you.)
-
-00:22:33.679 --> 00:22:35.206
-[Corwin]: It's an honor.
-
-00:22:35.206 --> 00:22:37.428
-I don't use that word an awful lot
-
-00:22:37.428 --> 00:22:39.867
-because I sort of smirk at it.
-
-00:22:39.867 --> 00:22:43.941
-It gets us in a lot of trouble,
-honor does,
-
-00:22:43.941 --> 00:22:46.904
-but this will be a sure time
-to use it.
-
-00:22:46.904 --> 00:22:48.840
-([Amin:] Thank you.)
-
-00:22:48.840 --> 00:22:51.840
-[Corwin:] Likewise.