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