summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv
blob: 83a99db64c4dc75c3b9af7e6a012e39d98bc41e7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                       
                                       













                                     
                                        










                                     
                                        










                                
                                    

                       
                                        

                       
                                      

                       
                                   





































                                        
                                      

                       
                                     

                       
                           







                                     
                              




                                     
                                      













                                     
                  




                                  
                          






















                                     
                                  




                       
                                    






















                                      
                                     







                              
                                       







                       
                          

                       
                                       







                                    
                                    










                                       
                                      

























                                       
         













                                        
     

                       
                                   










                                        
                   































                                        
                                      







                          
                                    








































































































































                                        
                      














































                                        
                                     




























                                        
              








































                                       
                                      







                       
          

                       
                                        






















                                     
                              




                       
                                      













                                        
                                







                                    
                       



















                                       
                                       

                       
                                        











































                                        
                                      













                                    
                                     




                                 
                              




                               
                                     

                       
                                     










                                        
                                  













































































































                                        
                                        







                       
                                      













                                       
                                        

















































                                        
                                      

                       
                                  







                               
                      

                       
                        








































                                       
                                   













                                       
                                        

















































                                        
                                    

                       
                                        

























                                        
                                      







                                   
                                        










                                      
                                     




                          
                                        

                       
                                       




                       
                                  
















                                      
                                 







                                       
                                      




                                       
                                    

                       
                                       













                                       
                                 







                                       
                                        







                       
                                      













                                       
                         

                       
                                    










                                     
                                       



















                                      
                                        







                                       
                                     

























                                   
                                       

                       
                                   

                       
                       

                       
                                    

                       
                               





































                                       
                                       

                       
 






















                                      
                     










                                     
                                 



















                                      
                                        













                                       
                                        







                       
                                     

                       
                                      




                       
                                       







                                        
                                    






















                                        
                                       







                                   
                                   
















                                       
    










                                     
     

                       
                                    




                       
                            






















                                      
                              







                                 
                                        































                                       
                                        

                       
                                    


















                                        
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