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