blob: 0455366cd952a35bd34429c90cf7694e48c347c1 (
plain) (
tree)
|
|
WEBVTT
00:00:00.480 --> 00:00:02.879
uh well good evening again uh I think I
00:00:02.879 --> 00:00:04.319
have a little time here
00:00:04.319 --> 00:00:07.359
uh to talk about macros uh is there
00:00:07.359 --> 00:00:09.120
still room in our in our schedule for
00:00:09.120 --> 00:00:09.440
that
00:00:09.440 --> 00:00:11.440
or should I just kind of 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
you are now unmuted um pretty sure we
00:00:15.920 --> 00:00:17.039
have some time
00:00:17.039 --> 00:00:19.439
all right great yeah go for it well I'll
00:00:19.439 --> 00:00:20.720
just drive into my pre
00:00:20.720 --> 00:00:22.640
prepared thing to hear that yeah
00:00:22.640 --> 00:00:24.720
actually you're right on time so
00:00:24.720 --> 00:00:28.400
oh what an amazing thing I I just uh
00:00:28.400 --> 00:00:31.199
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 planet to get
00:00:33.040 --> 00:00:36.239
at the end but let me just say I uh
00:00:36.239 --> 00:00:39.200
it's 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.000
absolutely it's this whole event today
00:00:46.000 --> 00:00:46.800
has been
00:00:46.800 --> 00:00:50.879
nothing but awesome and uh no less like
00:00:50.879 --> 00:00:53.120
no little part thanks to all of the help
00:00:53.120 --> 00:00:54.719
from all of you guys
00:00:54.719 --> 00:00:59.120
and um everyone oh yeah it's awesome
00:00:59.120 --> 00:01:02.399
um yeah with that all just um shut up
00:01:02.399 --> 00:01:03.520
for now and uh
00:01:03.520 --> 00:01:06.479
take it away corwin you know how to make
00:01:06.479 --> 00:01:09.840
make that the default and good old cemex
00:01:09.840 --> 00:01:12.799
all right so I'm gonna try to continue
00:01:12.799 --> 00:01:14.880
my theme from the previous talk I'm a
00:01:14.880 --> 00:01:16.960
longtime Emacs user but I'm
00:01:16.960 --> 00:01:20.240
a pretty new person
00:01:20.240 --> 00:01:22.880
to trying to really understand what's
00:01:22.880 --> 00:01:24.960
going on within Emacs and make
00:01:24.960 --> 00:01:28.240
my customizations to it uh 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.280
and maybe that's that's that's a nice
00:01:33.280 --> 00:01:36.240
bow to put on that earlier talk
00:01:36.240 --> 00:01:40.479
so uh whoops
00:01:40.479 --> 00:01:43.759
uh let's see here now it's ctrl x
00:01:43.759 --> 00:01:48.159
alt I 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:56.000
so demoing is fun uh but I
00:01:56.000 --> 00:01:58.000
will save most of that for tomorrow
00:01:58.000 --> 00:01:59.759
where my
00:01:59.759 --> 00:02:03.040
dear friend and co-collaborator in
00:02:03.040 --> 00:02:04.799
bringing you the dungeon mode project
00:02:04.799 --> 00:02:07.119
which is uh sort of
00:02:07.119 --> 00:02:08.720
the exciting thing that we we hope
00:02:08.720 --> 00:02:10.800
you'll be interested in
00:02:10.800 --> 00:02:14.480
um I think gets a little more of a
00:02:14.480 --> 00:02:15.680
reveal
00:02:15.680 --> 00:02:19.360
uh tonight I'll just uh close saying
00:02:19.360 --> 00:02:22.640
um a few things about the process of
00:02:22.640 --> 00:02:24.319
making it and continuing my theme of
00:02:24.319 --> 00:02:25.680
community
00:02:25.680 --> 00:02:28.720
uh first of all a specific and upfront
00:02:28.720 --> 00:02:29.760
shout out
00:02:29.760 --> 00:02:33.120
to tv's wasa masa who
00:02:33.120 --> 00:02:36.239
um absolutely shaped and guided this
00:02:36.239 --> 00:02:38.720
this program I I may have taken out a
00:02:38.720 --> 00:02:40.080
slide with your name on it but
00:02:40.080 --> 00:02:43.599
thank you um
00:02:43.599 --> 00:02:46.720
so when we think about Emacs macros and
00:02:46.720 --> 00:02:47.120
the
00:02:47.120 --> 00:02:50.239
power that they give us
00:02:50.239 --> 00:02:53.280
I think about them the the
00:02:53.280 --> 00:02:54.720
you know 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:02.480 --> 00:03:03.599
they're
00:03:03.599 --> 00:03:05.840
they're going to be talking to us about
00:03:05.840 --> 00:03:09.599
code
00:03:09.599 --> 00:03:12.080
uh excuse me I realize I hadn't set my
00:03:12.080 --> 00:03:13.519
timer
00:03:13.519 --> 00:03:18.000
here we are
00:03:18.000 --> 00:03:21.680
um so a simple macro syntax is going to
00:03:21.680 --> 00:03:22.239
generate
00:03:22.239 --> 00:03:25.920
something that is implicitly confusing
00:03:25.920 --> 00:03:27.760
to somebody that knows the syntax of
00:03:27.760 --> 00:03:28.720
emax lisp
00:03:28.720 --> 00:03:31.200
well we see something like this and a
00:03:31.200 --> 00:03:32.000
veteran I
00:03:32.000 --> 00:03:36.239
says 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
um a lot of the functions as we'll talk
00:03:43.040 --> 00:03:44.640
about in a moment that are built into
00:03:44.640 --> 00:03:46.640
Emacs
00:03:46.640 --> 00:03:48.959
really are macros so a lot of Emacs
00:03:48.959 --> 00:03:50.480
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
um let's just jump right into deaf macro
00:04:01.439 --> 00:04:03.920
which is which is our key entry point
00:04:03.920 --> 00:04:04.720
and the
00:04:04.720 --> 00:04:08.560
notes from this talk include the link um
00:04:08.560 --> 00:04:12.000
to that uh which which definitely
00:04:12.000 --> 00:04:14.640
uh read through a couple of times and
00:04:14.640 --> 00:04:16.000
that may take you through
00:04:16.000 --> 00:04:19.440
into the cldf macro which adds
00:04:19.440 --> 00:04:23.440
the common list lisp extensions
00:04:23.440 --> 00:04:26.840
and uh definitely
00:04:26.840 --> 00:04:30.560
uh challenging uh I've struggled there
00:04:30.560 --> 00:04:31.759
as we'll take a look at in
00:04:31.759 --> 00:04:34.800
in a moment um
00:04:34.800 --> 00:04:36.400
so I haven't played too much with cl
00:04:36.400 --> 00:04:38.320
maclet perhaps success in
00:04:38.320 --> 00:04:42.160
in that uh keyword space and figuring
00:04:42.160 --> 00:04:44.320
out what the right balance is there
00:04:44.320 --> 00:04:46.000
what will give me the confidence to try
00:04:46.000 --> 00:04:47.680
some more lexical
00:04:47.680 --> 00:04:51.680
uh macros
00:04:51.680 --> 00:04:53.919
let me also briefly introduce the comma
00:04:53.919 --> 00:04:55.440
and back quote if you
00:04:55.440 --> 00:04:58.479
have uh allowed your eyes to cross when
00:04:58.479 --> 00:05:00.080
you see these and that's not
00:05:00.080 --> 00:05:03.600
uh a shameful shameful thing it's
00:05:03.600 --> 00:05:06.080
confusing and we should be
00:05:06.080 --> 00:05:08.160
alerting each other when we when we
00:05:08.160 --> 00:05:09.520
stick macros in
00:05:09.520 --> 00:05:11.199
often by putting them in different
00:05:11.199 --> 00:05:12.960
different library spaces for complicated
00:05:12.960 --> 00:05:14.160
projects
00:05:14.160 --> 00:05:17.520
or um otherwise sort of 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
if you get away with using it like one
00:05:21.919 --> 00:05:22.639
um
00:05:22.639 --> 00:05:26.000
to watch your back
00:05:26.000 --> 00:05:29.440
the uh
00:05:29.440 --> 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.039
you know as as being um
00:05:39.039 --> 00:05:41.520
an evaluator that will take our amex
00:05:41.520 --> 00:05:42.800
lisp expression
00:05:42.800 --> 00:05:44.800
and the set of forms that kind of that
00:05:44.800 --> 00:05:47.590
will feed to it our code
00:05:47.590 --> 00:05:48.960
[Music]
00:05:48.960 --> 00:05:51.120
but it also provides us with this
00:05:51.120 --> 00:05:52.000
concept of an
00:05:52.000 --> 00:05:55.039
environment and and and that's really
00:05:55.039 --> 00:05:56.639
where the power
00:05:56.639 --> 00:05:58.240
comes in through that we can have
00:05:58.240 --> 00:06:00.080
lexical variables and
00:06:00.080 --> 00:06:03.199
um think about uh bring in some of the
00:06:03.199 --> 00:06:06.400
capabilities that
00:06:06.400 --> 00:06:09.759
um can be harder to reach with
00:06:09.759 --> 00:06:13.840
a a a pure declarative statement that
00:06:13.840 --> 00:06:14.800
doesn't allow
00:06:14.800 --> 00:06:18.000
for uh
00:06:18.000 --> 00:06:21.440
top level
00:06:21.440 --> 00:06:28.639
um asynchronous asynchronicity
00:06:28.639 --> 00:06:31.950
uh I'm gonna basically
00:06:31.950 --> 00:06:33.520
[Music]
00:06:33.520 --> 00:06:35.759
ignore the bike compilation phase for
00:06:35.759 --> 00:06:36.880
this talk
00:06:36.880 --> 00:06:38.639
uh in order to have any prayer of
00:06:38.639 --> 00:06:39.919
getting through it in the
00:06:39.919 --> 00:06:43.600
remaining nine or 11 minutes or whatever
00:06:43.600 --> 00:06:48.319
uh but
00:06:48.319 --> 00:06:50.160
suffice it to say it that's a scary
00:06:50.160 --> 00:06:52.240
space and that's that's that's really
00:06:52.240 --> 00:06:54.160
the thing that you want to start
00:06:54.160 --> 00:06:57.199
learning about as you think about taking
00:06:57.199 --> 00:07:02.160
taking macros on uh in earnest
00:07:02.160 --> 00:07:05.919
the um coming back to the comma syntax
00:07:05.919 --> 00:07:07.440
then
00:07:07.440 --> 00:07:09.759
having having given ourselves sort of 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 back quote is going to
00:07:25.280 --> 00:07:28.479
uh going to give code back
00:07:28.479 --> 00:07:31.919
to the to the stream or interject sorry
00:07:31.919 --> 00:07:34.560
it's going to interject uh back into the
00:07:34.560 --> 00:07:35.360
stream
00:07:35.360 --> 00:07:39.840
uh sort of uh an exclamatory excuse me
00:07:39.840 --> 00:07:43.280
I'd like to uh
00:07:43.280 --> 00:07:46.720
have a value here and we can take that
00:07:46.720 --> 00:07:48.639
value 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.639
back quote on the other hand takes the
00:07:56.639 --> 00:07:57.280
result
00:07:57.280 --> 00:08:00.560
from that and uh
00:08:00.560 --> 00:08:02.400
and returns it back to the stream for
00:08:02.400 --> 00:08:04.319
evaluation at the processing level that
00:08:04.319 --> 00:08:05.680
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:16.720 --> 00:08:20.080
uh wrong way so um
00:08:20.080 --> 00:08:22.560
with what's 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:27.120 --> 00:08:30.240
um I won't
00:08:30.240 --> 00:08:32.479
I won't has I won't linger on this slide
00:08:32.479 --> 00:08:33.599
but but
00:08:33.599 --> 00:08:37.039
briefly uh this is a
00:08:37.039 --> 00:08:40.080
roll paper role-playing pen
00:08:40.080 --> 00:08:43.599
and pencil uh physical dice
00:08:43.599 --> 00:08:46.320
tradition that dates back a long time
00:08:46.320 --> 00:08:48.080
from a technology perspective
00:08:48.080 --> 00:08:51.279
it's it's old in the same way that uh
00:08:51.279 --> 00:08:54.640
other tools uh that I like are
00:08:54.640 --> 00:08:58.560
old
00:08:58.560 --> 00:09:00.560
uh it's simple to understand and I can
00:09:00.560 --> 00:09:02.560
communicate a lot with it with a simple
00:09:02.560 --> 00:09:04.160
amount of you know typing or
00:09:04.160 --> 00:09:09.120
scribbling something on a piece of paper
00:09:09.120 --> 00:09:12.399
it has a complicated problem space um
00:09:12.399 --> 00:09:15.519
of its own again I don't want to
00:09:15.519 --> 00:09:18.560
get too much into the game here but
00:09:18.560 --> 00:09:21.680
uh in this in this talk for the last
00:09:21.680 --> 00:09:23.360
five minutes I'll focus
00:09:23.360 --> 00:09:26.640
on the process that we took to to
00:09:26.640 --> 00:09:29.920
automate uh getting data out of the org
00:09:29.920 --> 00:09:31.120
mode tables which
00:09:31.120 --> 00:09:32.720
eventually as we'll talk about more
00:09:32.720 --> 00:09:36.000
tomorrow are used to draw
00:09:36.000 --> 00:09:39.440
game maps and other things
00:09:39.440 --> 00:09:42.240
um here I talk about kind of why we did
00:09:42.240 --> 00:09:45.279
that 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.920
it's it's symbolic informatics we're
00:09:51.920 --> 00:09:53.519
giving a symbolic name
00:09:53.519 --> 00:09:58.080
to a tile set and then
00:09:58.080 --> 00:10:02.000
uh
00:10:02.000 --> 00:10:04.000
and then assigning that tile set some
00:10:04.000 --> 00:10:05.360
some characteristics like physical
00:10:05.360 --> 00:10:06.000
speeds
00:10:06.000 --> 00:10:08.399
screen space a variable that we might
00:10:08.399 --> 00:10:09.279
want to swap in
00:10:09.279 --> 00:10:12.800
and so forth uh and
00:10:12.800 --> 00:10:15.200
you know our project rests heavily on on
00:10:15.200 --> 00:10:16.160
org mode and
00:10:16.160 --> 00:10:21.040
it's it's fundamental capabilities
00:10:21.040 --> 00:10:24.000
so the the code I'm going to show here
00:10:24.000 --> 00:10:24.959
is
00:10:24.959 --> 00:10:28.320
uh is
00:10:28.320 --> 00:10:31.360
is focused around sort of a a sticky
00:10:31.360 --> 00:10:33.040
problem space in in the information
00:10:33.040 --> 00:10:35.600
technology and I'm I'm a professional
00:10:35.600 --> 00:10:39.120
uh uh software engineer turned uh
00:10:39.120 --> 00:10:41.120
technology architect I support
00:10:41.120 --> 00:10:45.120
the websites for a recognizable
00:10:45.120 --> 00:10:47.600
financial services brand that I don't
00:10:47.600 --> 00:10:49.680
identify just so I don't accidentally
00:10:49.680 --> 00:10:50.720
end up
00:10:50.720 --> 00:10:54.399
uh inadvertently misrepresenting my firm
00:10:54.399 --> 00:10:55.600
in some financial
00:10:55.600 --> 00:10:57.760
uh perspective if I let some other
00:10:57.760 --> 00:11:00.480
companies slip at certain let some other
00:11:00.480 --> 00:11:01.760
companies slip
00:11:01.760 --> 00:11:06.560
name slip or my own it's certainly no
00:11:06.560 --> 00:11:08.160
representation of an opinion other than
00:11:08.160 --> 00:11:11.279
my own
00:11:11.279 --> 00:11:13.980
the um
00:11:13.980 --> 00:11:18.800
[Music]
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 we have the idea of 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 not
00:11:30.560 --> 00:11:32.480
nominally about data quality but it
00:11:32.480 --> 00:11:33.600
could be about anything
00:11:33.600 --> 00:11:36.000
before the pipeline starts okay we've
00:11:36.000 --> 00:11:37.279
got a state where we think it should
00:11:37.279 --> 00:11:38.560
work if we run it
00:11:38.560 --> 00:11:41.920
we have uh some extraction where we'll
00:11:41.920 --> 00:11:44.160
get our sources and we may have the the
00:11:44.160 --> 00:11:45.040
opportunity to
00:11:45.040 --> 00:11:47.920
uh make some assertions there and in the
00:11:47.920 --> 00:11:48.720
transform
00:11:48.720 --> 00:11:51.360
stage as well as the load things get a
00:11:51.360 --> 00:11:52.720
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:57.040
really solid assertions again that we
00:11:57.040 --> 00:11:58.480
can even go back and compare to the
00:11:58.480 --> 00:11:59.680
extract stage
00:11:59.680 --> 00:12:02.639
and 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.399
uh in this case we have a number of org
00:12:08.399 --> 00:12:09.360
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 uh 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
and so we tried to take
00:12:24.560 --> 00:12:27.839
a long-term view of
00:12:27.839 --> 00:12:31.120
the solution that we needed um so I'll
00:12:31.120 --> 00:12:32.160
go ahead
00:12:32.160 --> 00:12:35.760
and open up the fun function
00:12:35.760 --> 00:12:37.839
that well let's let's actually start
00:12:37.839 --> 00:12:41.680
with the one that's pretty easy to read
00:12:41.680 --> 00:12:45.040
and uh I'm gonna go ahead and just crank
00:12:45.040 --> 00:12:46.800
it up huge
00:12:46.800 --> 00:12:51.680
in case anybody's watching in 480.
00:12:51.680 --> 00:12:56.480
um so this this program is not
00:12:56.480 --> 00:12:58.560
a work of art it's a simple
00:12:58.560 --> 00:13:01.120
implementation of the idea that a list
00:13:01.120 --> 00:13:05.440
an a list of functions that return
00:13:05.440 --> 00:13:08.160
maybe some data maybe some data and an
00:13:08.160 --> 00:13:10.399
entry back into that a list
00:13:10.399 --> 00:13:13.040
um 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.760
neither is it an especially tight or
00:13:17.760 --> 00:13:19.600
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:22.800
with a doc
00:13:22.800 --> 00:13:26.160
statement for everything at the heart
00:13:26.160 --> 00:13:30.880
um we see a call to this macro called dm
00:13:30.880 --> 00:13:32.480
coalesce hash and that's what I'd like
00:13:32.480 --> 00:13:35.360
to focus in on you can see I think
00:13:35.360 --> 00:13:37.680
that something on unpleasant is
00:13:37.680 --> 00:13:38.800
happening here
00:13:38.800 --> 00:13:42.480
I've got an eval in um
00:13:42.480 --> 00:13:46.560
what is I will share a a
00:13:46.560 --> 00:13:49.519
fairly central function that that that
00:13:49.519 --> 00:13:49.920
that
00:13:49.920 --> 00:13:52.160
those implementing this etl pattern are
00:13:52.160 --> 00:13:53.920
welcome to
00:13:53.920 --> 00:13:56.639
derive from that is this is a default
00:13:56.639 --> 00:13:57.680
transform
00:13:57.680 --> 00:13:59.680
that you can get when loading certain
00:13:59.680 --> 00:14:00.959
kinds of
00:14:00.959 --> 00:14:04.560
uh orgmo tables that have been uh
00:14:04.560 --> 00:14:06.399
properly adorned and again we'll get
00:14:06.399 --> 00:14:09.120
into that all tomorrow
00:14:09.120 --> 00:14:11.440
so keep an eye on time couple minutes
00:14:11.440 --> 00:14:13.760
left let's look at the macro itself and
00:14:13.760 --> 00:14:15.360
I have a slide on this but let's go
00:14:15.360 --> 00:14:24.639
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:39.680
and
00:14:39.680 --> 00:14:44.720
and add to list um 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 a-list versus
00:14:49.360 --> 00:14:50.480
hashes versus p
00:14:50.480 --> 00:14:52.800
lists we've made a right mess for
00:14:52.800 --> 00:14:54.399
ourselves in the proof of concept area
00:14:54.399 --> 00:14:55.279
and it's ripe
00:14:55.279 --> 00:14:58.560
for someone to write a white paper about
00:14:58.560 --> 00:15:00.240
when to prefer these things
00:15:00.240 --> 00:15:04.800
and fix
00:15:04.800 --> 00:15:08.000
the merge a list uh
00:15:08.000 --> 00:15:10.720
same work here let's get let's get down
00:15:10.720 --> 00:15:12.959
to business
00:15:12.959 --> 00:15:16.000
this function has quite a this a macro
00:15:16.000 --> 00:15:18.560
has quite a doc string and I think I
00:15:18.560 --> 00:15:20.720
mentioned earlier that I got myself into
00:15:20.720 --> 00:15:22.240
trouble with the keyword properties you
00:15:22.240 --> 00:15:23.519
can see that we have
00:15:23.519 --> 00:15:27.839
not only quite a number of them but
00:15:27.839 --> 00:15:32.240
a lot of a lot of default values many of
00:15:32.240 --> 00:15:32.880
which
00:15:32.880 --> 00:15:36.000
may be relying on the
00:15:36.000 --> 00:15:37.680
values that are passed in here this is
00:15:37.680 --> 00:15:40.000
complicated and as it turns out
00:15:40.000 --> 00:15:44.000
um I wasn't brave enough in most cases
00:15:44.000 --> 00:15:46.079
to try to write a lambda that could
00:15:46.079 --> 00:15:47.279
understand and
00:15:47.279 --> 00:15:49.680
replace uh its own local variable I just
00:15:49.680 --> 00:15:50.399
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:54.800
really easy
00:15:54.800 --> 00:15:56.800
to read and write and understand as I
00:15:56.800 --> 00:15:58.240
thought through my problem
00:15:58.240 --> 00:16:01.440
but now as I use it I I've lost a little
00:16:01.440 --> 00:16:03.360
ground maybe with this and I'm not even
00:16:03.360 --> 00:16:04.079
sure
00:16:04.079 --> 00:16:07.279
I like what I got from uh the many
00:16:07.279 --> 00:16:08.079
keyword
00:16:08.079 --> 00:16:10.560
properties when it and we can look
00:16:10.560 --> 00:16:11.920
perhaps if we have
00:16:11.920 --> 00:16:17.340
the time at what that looks like in uh
00:16:17.340 --> 00:16:19.920
[Music]
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
um so that so that's just about my time
00:16:27.519 --> 00:16:29.600
uh and 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
uh as 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
you are now unmuted uh thank you very
00:16:48.720 --> 00:16:50.720
much for your talk corwin
00:16:50.720 --> 00:16:53.839
um I think you still have like uh
00:16:53.839 --> 00:16:55.279
maybe three or four more minutes if you
00:16:55.279 --> 00:16:57.680
want to quickly wrap up
00:16:57.680 --> 00:17:01.040
okay so three or four more minutes I can
00:17:01.040 --> 00:17:02.160
easily spend
00:17:02.160 --> 00:17:05.439
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 path
00:17:08.270 --> 00:17:10.160
[Music]
00:17:10.160 --> 00:17:12.559
um 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:17.199
I am I bookmarked it I am
00:17:17.199 --> 00:17:30.840
pulling the tab and I'll bring it in
00:17:30.840 --> 00:17:34.960
okay
00:17:34.960 --> 00:17:38.799
all right this is the wrong ether pad
00:17:38.799 --> 00:17:44.480
thanks for the link
00:17:44.480 --> 00:17:48.000
all right um so I think I'm looking for
00:17:48.000 --> 00:17:54.880
macros
00:17:54.880 --> 00:17:58.400
uh okay key message sure so the
00:17:58.400 --> 00:18:01.679
the key message is that it's um it's a
00:18:01.679 --> 00:18:02.960
jungle out there
00:18:02.960 --> 00:18:06.240
macros along with any other design can
00:18:06.240 --> 00:18:08.559
leave you in a position
00:18:08.559 --> 00:18:11.919
where you have a nice api and 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:21.600
this exact same formula quickly
00:18:21.600 --> 00:18:23.840
sketching out how a character sheet
00:18:23.840 --> 00:18:26.960
or another big data set needs to
00:18:26.960 --> 00:18:28.480
needs to figure out what tables are
00:18:28.480 --> 00:18:29.600
going to be interesting from the
00:18:29.600 --> 00:18:30.720
collection of files
00:18:30.720 --> 00:18:34.400
and then load up the tile set and
00:18:34.400 --> 00:18:38.880
the uh layout file from that
00:18:38.880 --> 00:18:41.600
and I mean it works this the project is
00:18:41.600 --> 00:18:43.280
moving forward with this I have the
00:18:43.280 --> 00:18:44.799
flexibility that I need
00:18:44.799 --> 00:18:46.720
but here I am evaling my own code to
00:18:46.720 --> 00:18:48.640
make darn sure even if I get by
00:18:48.640 --> 00:18:52.400
by compiled uh this macro doesn't uh
00:18:52.400 --> 00:18:55.440
does get evaluated in the user's real
00:18:55.440 --> 00:18:58.160
run time clearly a design fail so that
00:18:58.160 --> 00:18:58.880
would be
00:18:58.880 --> 00:19:00.880
the key point of my talk is is to
00:19:00.880 --> 00:19:02.400
present this design
00:19:02.400 --> 00:19:05.600
fail and uh thank
00:19:05.600 --> 00:19:08.320
um thank the community but especially
00:19:08.320 --> 00:19:09.520
wasa masa
00:19:09.520 --> 00:19:12.160
for for some patience and let me add at
00:19:12.160 --> 00:19:13.280
this moment that
00:19:13.280 --> 00:19:15.200
uh he was so frustrated with me they
00:19:15.200 --> 00:19:16.799
were sort of frustrated with me I think
00:19:16.799 --> 00:19:17.360
I
00:19:17.360 --> 00:19:20.400
didn't qualify pronouns um
00:19:20.400 --> 00:19:24.240
with um
00:19:24.240 --> 00:19:26.640
with doing this the the first the this
00:19:26.640 --> 00:19:28.160
was one of our first interactions and
00:19:28.160 --> 00:19:29.919
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 uh that's a great message actually
00:19:36.640 --> 00:19:38.320
and I and I hope that
00:19:38.320 --> 00:19:40.160
uh maybe this can encourage further
00:19:40.160 --> 00:19:42.720
talks across the subject about
00:19:42.720 --> 00:19:44.160
you know hey wait a minute macros are
00:19:44.160 --> 00:19:46.720
really fantastic as I hope I made
00:19:46.720 --> 00:19:48.559
clear you can do a tremendous amount
00:19:48.559 --> 00:19:51.039
about uh with them and we rely on them
00:19:51.039 --> 00:19:52.320
for
00:19:52.320 --> 00:19:55.200
almost all the fun goodies um from you
00:19:55.200 --> 00:19:56.480
know defund
00:19:56.480 --> 00:20:02.159
secu
00:20:02.159 --> 00:20:04.960
um I want to get to my my thank yous let
00:20:04.960 --> 00:20:05.440
me just
00:20:05.440 --> 00:20:18.840
peek back at the pad
00:20:18.840 --> 00:20:20.000
oh
00:20:20.000 --> 00:20:22.080
well that was actually a scratch buffer
00:20:22.080 --> 00:20:23.760
so I'll have to sort of read it cold off
00:20:23.760 --> 00:20:24.720
my notes
00:20:24.720 --> 00:20:27.919
um
00:20:27.919 --> 00:20:30.320
but also 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
00:20:34.320 --> 00:20:36.080
in addition to the big thank you that I
00:20:36.080 --> 00:20:38.400
hope was implied by my shout out to wasa
00:20:38.400 --> 00:20:39.360
masa
00:20:39.360 --> 00:20:42.720
um I also want to thank you amen for
00:20:42.720 --> 00:20:46.640
um 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 and and and
00:20:54.320 --> 00:20:55.440
you've you've also
00:20:55.440 --> 00:20:56.799
just done a lot of great stuff for our
00:20:56.799 --> 00:20:59.360
project thank you very much for that and
00:20:59.360 --> 00:21:13.120
sasha
00:21:13.120 --> 00:21:15.919
I'll get there um 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
um for just being so flexible and
00:21:25.600 --> 00:21:27.600
uh nagging back through the whole thing
00:21:27.600 --> 00:21:29.120
and especially to leo
00:21:29.120 --> 00:21:30.960
who has done so much to drive the show
00:21:30.960 --> 00:21:32.159
today
00:21:32.159 --> 00:21:35.520
um I
00:21:35.520 --> 00:21:37.840
this is a fractious tent at times and
00:21:37.840 --> 00:21:38.960
sometimes
00:21:38.960 --> 00:21:41.360
it is indeed a little bit of a circus
00:21:41.360 --> 00:21:43.039
but I
00:21:43.039 --> 00:21:45.520
am learning so much so fast I'm just
00:21:45.520 --> 00:21:46.880
inspired by how much
00:21:46.880 --> 00:21:50.320
Emacs can teach us thank you
00:21:50.320 --> 00:21:53.120
uh corbin for your kind words and you
00:21:53.120 --> 00:21:54.960
know about me of course but all about
00:21:54.960 --> 00:21:56.000
you know all of us
00:21:56.000 --> 00:21:59.760
and the conference and you know indeed
00:21:59.760 --> 00:22:02.400
thanks to everyone who's helped uh
00:22:02.400 --> 00:22:04.159
including the speakers of course
00:22:04.159 --> 00:22:05.840
without whom you know a maxcom really
00:22:05.840 --> 00:22:08.960
wouldn't have been a EmacsConf
00:22:08.960 --> 00:22:10.640
and you know it's been a pleasure
00:22:10.640 --> 00:22:12.080
knowing you and working with
00:22:12.080 --> 00:22:15.520
you um I guess um from afar for the most
00:22:15.520 --> 00:22:17.360
part on dungeon mode like helping
00:22:17.360 --> 00:22:18.960
helping with like small things here and
00:22:18.960 --> 00:22:20.720
there but um
00:22:20.720 --> 00:22:22.320
yeah it's been my pleasure and it's
00:22:22.320 --> 00:22:23.840
great to have you and
00:22:23.840 --> 00:22:25.840
um everyone else you know part of the
00:22:25.840 --> 00:22:26.880
community and
00:22:26.880 --> 00:22:29.440
for me to be part of the community it's
00:22:29.440 --> 00:22:30.559
been a lot of fun
00:22:30.559 --> 00:22:33.679
thank you
00:22:33.679 --> 00:22:36.080
it's it's it's it's an honor and I don't
00:22:36.080 --> 00:22:38.000
use that word an awful lot because I
00:22:38.000 --> 00:22:38.720
sort of
00:22:38.720 --> 00:22:41.760
sort of smirk at it but um gets us in a
00:22:41.760 --> 00:22:44.320
lot of trouble honor does but
00:22:44.320 --> 00:22:47.360
this will be a sure time to use it thank
00:22:47.360 --> 00:22:48.840
you
00:22:48.840 --> 00:22:51.840
likewise
|