summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv
diff options
context:
space:
mode:
Diffstat (limited to '2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv')
-rw-r--r--2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv1605
1 files changed, 1605 insertions, 0 deletions
diff --git a/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv b/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv
new file mode 100644
index 00000000..03aea6e2
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv
@@ -0,0 +1,1605 @@
+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 maxcon
+
+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
+