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