<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="mcclim-mainVideo-transcript"></a><h1>Transcript</h1>
<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.750" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""Welcome everyone to my EmacsConf presentation,""" start="00:00:01.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""where we're going to look at Lisp's vdemo[??] app from 1978,""" start="00:00:15.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but done in modern Elisp.""" start="00:00:22.139" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we're going to look at getting inferior-lisp working,""" start="00:00:28.460" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my dear Common Lisp.""" start="00:00:33.390" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we're going to use the Common Lisp interface manager,""" start="00:00:37.003" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the open source child of the Common Lisp interface manager,""" start="00:00:42.159" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM, from inferior-lisp in Superior Lisp,""" start="00:00:47.813" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is the opposite order that I initially thought""" start="00:00:55.710" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we were going to do things in,""" start="00:00:58.375" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but this is how it's kind of turned out.""" start="00:00:59.326" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So it's this article,""" start="00:01:00.829" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I thought, from 1978, was interesting to us today.""" start="00:01:01.845" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""“Programming in an Interactive Environment:""" start="00:01:05.999" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the ‘Lisp’ Experience.”""" start="00:01:08.752" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Explaining what all these LISP programmers were doing to""" start="00:01:12.005" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""people unfamiliar with LISP programming.""" start="00:01:19.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""“LISP systems have been used for""" start="00:01:22.566" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""highly interactive programming for more than a decade.”""" start="00:01:24.451" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This was from 1978.""" start="00:01:27.604" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And we're just going to go and,""" start="00:01:29.990" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""almost verbatim, port the demo application for LISP""" start="00:01:34.109" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""out of 1978 Interlisp and into Emacs Lisp.""" start="00:01:40.017" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And we're going to do it without Org Mode,""" start="00:01:49.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I think everyone is finding out""" start="00:01:51.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""how great Org Mode is already.""" start="00:01:54.281" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""For inferior Lisp, I thought instead of org-mode,""" start="00:01:58.100" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we'll theme it around slime-mode and then it turned out""" start="00:02:00.837" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""most of this presentation happens in Emacs Lisp,""" start="00:02:02.873" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because this is an Emacs Lisp conference.""" start="00:02:06.109" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But I found out that there's ielm-mode,""" start="00:02:09.379" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is pretty similar to slime-mode,""" start="00:02:12.849" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but in our hearts, we can imagine that this is""" start="00:02:19.054" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""an Emacs example, homed around slime-mode,""" start="00:02:23.660" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Superior Lisp Interaction Mode for Emacs, instead of org-mode.""" start="00:02:27.498" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Though, you know, I do secretly use org-mode as well,""" start="00:02:33.403" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""not very secretly.""" start="00:02:36.440" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But that means we're kind of improvising,""" start="00:02:37.958" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""improvising a presentation mode.""" start="00:02:46.790" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this big buffer of Elisp, and let's just...""" start="00:02:49.986" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This is me, not Sandewall, out of interest,""" start="00:02:56.726" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's make a keyboard macro,""" start="00:03:00.614" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""go get the S-expression wherever the cursor is,""" start="00:03:04.216" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""move it to the next S-expression, paste it in here,""" start="00:03:10.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and the keyboard macro, alright.""" start="00:03:13.661" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was basically happening...""" start="00:03:20.190" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Calendar""" start="00:03:21.702" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""So the demo application in this case is""" start="00:03:21.702" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""a scheduling application.""" start="00:03:25.356" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you can imagine improvising a calendar like this""" start="00:03:28.792" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you weren't existingly using an""" start="00:03:34.731" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""org-mode integrated calendar.""" start="00:03:36.683" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So, you know, just have a list and maybe""" start="00:03:39.252" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""each list is of sublists, where the first element,""" start="00:03:43.989" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the car of the sublist, I guess,""" start="00:03:49.579" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""is a sensible-sounding date format, like sat dec 7,""" start="00:03:51.931" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this is clearly the first day of EmacsConf.""" start="00:03:56.119" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then after that, a list of basically from and to times,""" start="00:03:59.939" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then a quick written description of whatever event""" start="00:04:06.280" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""was at that time.""" start="00:04:18.642" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So similar to what we were seeing recently""" start="00:04:19.876" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""as of me recording this in our Structure and""" start="00:04:23.180" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Interpretation of Computer Programs study group,""" start="00:04:25.499" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you have all these little methods, sorry, defuns.""" start="00:04:29.902" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So hours of a time is actually just car of the time,""" start="00:04:35.759" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""minutes of the time, cadr of time.""" start="00:04:40.763" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so we all know these kind of little,""" start="00:04:43.216" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""basically turning car and cadr,""" start="00:04:46.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which we do use into descriptive names like from and to.""" start="00:04:50.223" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You can see how this lines up with the appointments.""" start="00:04:53.143" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So for "reproducibly building emacs" described event,""" start="00:04:56.379" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess from would be 16 25.""" start="00:05:01.751" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just grab that and literally use those,""" start="00:05:05.680" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because we're in interactive programming, right?""" start="00:05:07.708" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this quoted form and then""" start="00:05:11.711" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's do from of that. Great.""" start="00:05:18.266" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And let's do minutes.""" start="00:05:22.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So from 16 25, 16 45 reproducibly building Emacs,""" start="00:05:25.308" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so when I do from to that I get 16 25""" start="00:05:31.548" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""when I do minutes to 16 25, I get 25""" start="00:05:34.851" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and a description of this number in octal and hexadecimal,""" start="00:05:42.057" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""out of interest.""" start="00:05:45.590" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was up next? Okay, getting nextday from a date.""" start="00:05:48.047" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so, what was it? Saturday, December 27th.""" start="00:05:53.553" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So what happens? So this function,""" start="00:05:57.073" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess this was part of Sandewall's personal exploration of""" start="00:06:01.345" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""atoms using symbols with property lists,""" start="00:06:06.032" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""with an attached property list to every symbol.""" start="00:06:12.238" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you can kind of see how this works.""" start="00:06:15.942" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I get whatever was keyed by the symbol nextweekday out of""" start="00:06:21.510" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the day symbol, so I guess we would do...""" start="00:06:32.800" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so if we had Sat December 6, I guess we get Sat""" start="00:06:36.579" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, it destructures that itself somehow, get nextweekday.""" start="00:06:48.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sorry, nextday.""" start="00:06:58.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""set December 6th""" start="00:07:02.280" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But of course these weren't defined yet,""" start="00:07:10.270" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so what if we (setf (get 'sat 'nextweekday) 'sun)""" start="00:07:12.782" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and it's going to be sun right""" start="00:07:23.793" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then if we (nextday '(sat dec 6)),""" start="00:07:28.990" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sunday, December 7th.""" start="00:07:36.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so that kind of makes sense in an intuitive way.""" start="00:07:38.942" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And you can see cond is being used.""" start="00:07:41.778" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So if you're not a Lisp person, cond evaluates a condition.""" start="00:07:43.850" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If the condition returns non-nil,""" start="00:07:51.588" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it executes the code attached to that condition.""" start="00:07:54.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It evaluates each of these conditions in terms""" start="00:07:57.210" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then stops when one returns non-nil,""" start="00:08:00.297" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""as you might expect as a Lisp programmer.""" start="00:08:04.901" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's keep marching along.""" start="00:08:07.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, so we have to populate this.""" start="00:08:09.672" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And this was an interesting one.""" start="00:08:11.741" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""As you can see, this was my attempt.""" start="00:08:13.543" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let days mon tue wed, so forth.""" start="00:08:15.612" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then I used cl-loop from Emacs Lisp, you know,""" start="00:08:19.249" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for day in days, for nex in cdr days, setf nextweekday.""" start="00:08:23.453" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This I thought was surprisingly deep, was that""" start="00:08:32.610" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Lisp programmers, Sandewall thought,""" start="00:08:36.432" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""are basically constantly trying to break new ground and they""" start="00:08:38.485" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""lose interest very quickly when""" start="00:08:43.723" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that's not what they're doing.""" start="00:08:45.425" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And he was making the point that breaking new ground""" start="00:08:46.843" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""involves solving a problem exactly once.""" start="00:08:50.229" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you kind of should do it""" start="00:08:54.232" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in the most expedient way possible""" start="00:08:56.003" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to solve it kind of for the first time.""" start="00:08:58.672" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And after that, it's not breaking new ground anymore.""" start="00:09:00.992" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so I thought that was a kind of fun point""" start="00:09:07.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from Sandewall's paper that we could kind of chew on.""" start="00:09:10.400" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Do something similar for months and month lengths.""" start="00:09:15.121" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But as we can see, if I get Feb,""" start="00:09:21.059" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""nrdr days I think that characters in 1978,""" start="00:09:32.120" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""characters and symbols in 1978 were more precious""" start="00:09:42.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is why Sandewall was writing in this abbreviated way.""" start="00:09:45.468" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We might write more verbosely these days.""" start="00:09:47.871" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We get 28th but it is in fact a leap year,""" start="00:09:51.391" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so let's just set that to be 29. Now, it's fine.""" start="00:09:54.277" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then I guess if we do, we were doing nextday.""" start="00:09:59.048" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sure, nextday. I don't know what day it was.""" start="00:10:06.038" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's assume it was Sunday Feb 28""" start="00:10:10.994" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""some kind of typo crept in there, but we can deal with it.""" start="00:10:22.716" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just setf get sun nextweekday month.""" start="00:10:26.230" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So once we've solved it once, we should be fine, right?""" start="00:10:43.944" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, I think I have to speed up a bit.""" start="00:10:48.698" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, there we go, Monday February 29th and then""" start="00:10:52.000" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""what if we nextday... Tuesday March 1st.""" start="00:10:55.605" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, it basically seems to be working.""" start="00:11:01.244" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I'd argue it's actually fun that""" start="00:11:03.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we kind of had to do that.""" start="00:11:06.448" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then, just imagining you're kind of functioning with""" start="00:11:08.585" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""other people: day begins at 900, ends at 1700,""" start="00:11:13.523" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so kind of a 9:00 to 5:00, imagining... though perhaps,""" start="00:11:18.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""shorter is more appropriate,""" start="00:11:23.915" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but let's not quibble about that.""" start="00:11:25.368" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was happening next in this app?""" start="00:11:27.420" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""holesin. Oh, yeah, so get me the free slots""" start="00:11:29.839" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in from start time, list of appointments,""" start="00:11:35.712" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""remembering characters, I guess, were more precious""" start="00:11:40.110" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""is my theory.""" start="00:11:45.288" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then an end time, so if I go holesin and then from 900""" start="00:11:46.906" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to where I've written 9 space 0 0""" start="00:11:59.050" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and what are my appointments?""" start="00:12:03.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I have a list of appointments that""" start="00:12:07.459" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""need to have start times and finish times.""" start="00:12:09.980" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So let's go 12 59 to 13 01.""" start="00:12:12.132" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The description, I guess, can be test.""" start="00:12:23.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then let's finish that at 1700,""" start="00:12:25.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""like we kind of thought.""" start="00:12:29.115" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oops, some of these were meant to be arguments.""" start="00:12:37.830" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, there we go.""" start="00:12:54.800" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so the available times between nine and five,""" start="00:12:56.042" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if there's one appointment from 12:59 to 1:01,""" start="00:13:01.397" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""are from 9 to 1259 and from 1 past 1 to 5,""" start="00:13:05.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is kind of what we were expecting.""" start="00:13:13.792" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so our appointment app is kind of coming along.""" start="00:13:15.728" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we have commonholes,""" start="00:13:18.931" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of works in a sensible way.""" start="00:13:23.430" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Do we have, what are some common holes from""" start="00:13:33.890" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""two lists of appointments, I guess? commonholes.""" start="00:13:36.249" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess, let's have one person have an appointment""" start="00:13:50.903" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from 9 to 10.""" start="00:13:53.850" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's going to be their only appointment.""" start="00:13:59.569" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And let's have another person have an appointment""" start="00:14:02.558" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from 9.30 to 10.30.""" start="00:14:05.996" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, we didn't do beforetime yet.""" start="00:14:14.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This is the order Sandewall implemented things in there.""" start="00:14:18.441" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Ok, there.""" start="00:14:22.345" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So the commonholes are from 9.30 to 10.""" start="00:14:25.515" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's actually the overlapping time.""" start="00:14:34.272" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'll re-record this""" start="00:14:42.232" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if some kind of gremlin has crept into my things.""" start="00:14:43.900" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, what did we first start by doing?""" start="00:15:04.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Emacsconf track 1 and Emacsconf track 2,""" start="00:15:07.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and we'll do it on Saturday, December 7.""" start="00:15:11.494" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""commontime, and I'm being prompted, of course.""" start="00:15:21.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""emacsconf-track-1,""" start="00:15:23.806" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""emacsconf-track-2,""" start="00:15:29.676" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the date that we grabbed.""" start="00:15:33.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's say we want five minutes.""" start="00:15:36.585" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And, as always, I'm forgetting to quote things.""" start="00:15:49.120" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so my opportunities for common times""" start="00:15:52.468" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""between emacsconf-track-1 to emacsconf-track-2""" start="00:15:56.739" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""on the first day of the conference,""" start="00:16:01.376" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saturday, December 7th, for five minutes.""" start="00:16:02.869" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I have an opportunity between 9:20 and 9:40,""" start="00:16:05.864" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""11:40 and 13:00, 13:10, 13:25,""" start="00:16:08.984" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""13:45, 13:55, and 16:15 to 16:25.""" start="00:16:14.489" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I think that's all working.""" start="00:16:19.662" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And it was done with almost exactly the same code,""" start="00:16:23.881" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""except for my loopy populating symbol plist bits earlier,""" start="00:16:31.355" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in Interlisp in 1978 as Emacs Lisp in 2024.""" start="00:16:39.015" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I thought that was pretty interesting that""" start="00:16:46.539" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you could do that.""" start="00:16:48.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think setf get was put prop""" start="00:16:49.542" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""was the biggest difference in 1978 Interlisp and""" start="00:16:57.099" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""modern Emacs Lisp.""" start="00:17:02.787" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And obviously modern Emacs Lisp has Common Lisp loop in it,""" start="00:17:04.740" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of. It's another big difference.""" start="00:17:09.228" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""How are we doing for time? 17 minutes?""" start="00:17:11.914" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Great, because now let's get a bit closer to what""" start="00:17:16.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my talk title has promised.""" start="00:17:19.805" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're going to use Common Lisp from Emacs Lisp""" start="00:17:21.991" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and we're going to use Common Lisp Interface Manager,""" start="00:17:25.211" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the open source implementation of""" start="00:17:28.130" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Common Lisp Interface Manager from""" start="00:17:30.166" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Inferior Lisp from Emacs Lisp.""" start="00:17:33.836" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And what we just went over in Sandewall's paper...""" start="00:17:37.300" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This was the starting point, and Sandewall says,""" start="00:17:45.550" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""well, if you just kind of jammed these ideas using lists""" start="00:17:47.783" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you just kind of made hour a synonym for car and""" start="00:17:51.587" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""minute a synonym for cadr and so forth,""" start="00:17:55.391" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you can then make a whole bunch of improvements.""" start="00:17:59.795" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Can we actually get a glimpse of the …""" start="00:18:04.166" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""No, I didn't really write this.""" start="00:18:09.239" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so you can see I basically just ported out of""" start="00:18:10.473" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the Interlisp code in the text of this paper.""" start="00:18:14.294" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, you see from lambda of appointment,""" start="00:18:17.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""car appointment, and that's defineq.""" start="00:18:21.350" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess Interlisp in 1978 used defineq,""" start="00:18:24.954" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""whereas we used defun in Elisp,""" start="00:18:27.907" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but I'd encourage you to explore that yourselves.""" start="00:18:33.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But the extension that I wanted to develop today is,""" start="00:18:35.314" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""since Common Lisp interface manager is just Lisp,""" start="00:18:38.601" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Inferior Lisp is just Lisp,""" start="00:18:41.237" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Emacs Lisp is just Lisp,""" start="00:18:43.472" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Interlisp in 1978 is just Lisp,""" start="00:18:45.341" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we could kind of use them all together""" start="00:18:48.928" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in a kind of funky way.""" start="00:18:50.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But a complaint you often hear, or a statement of confusion""" start="00:18:51.480" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that you often hear as a Lisp person,""" start="00:18:57.086" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""people from other languages often can't kind of figure out""" start="00:19:00.423" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""how to get started with Lisp.""" start="00:19:06.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I'm just going to try and do everything here and now.""" start="00:19:09.765" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Inferior Lisp and McCLIM""" start="00:19:12.802" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""And this is the second piece of my three pieces,""" start="00:19:12.802" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so let's just get inferior lisp and McCLIM happening.""" start="00:19:18.407" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We normally use slime Superior Lisp Interaction Mode""" start="00:19:22.928" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for Emacs, which we could get from Emacs's package manager.""" start="00:19:29.318" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If I go package-list-packages and then we wait""" start="00:19:41.897" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for however fast my network is,""" start="00:19:48.954" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we're going to see how long it's been""" start="00:19:54.270" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""since I updated something.""" start="00:19:55.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, but you see it's in MELPA, right?""" start="00:19:58.629" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It's got to be somewhere here.""" start="00:20:15.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, all right.""" start="00:20:18.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So there's one slime available in non-GNU,""" start="00:20:18.551" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""one possibly more recent one available in""" start="00:20:21.470" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the MELPA package repositories.""" start="00:20:26.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I don't know about you,""" start="00:20:30.278" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but I can sympathize with people who feel confused by this""" start="00:20:31.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I think if you look online,""" start="00:20:33.666" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you found a search engine result,""" start="00:20:36.519" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it doesn't customize these like I customize them.""" start="00:20:38.687" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So let's just do this.""" start="00:20:44.160" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""customize-variable.""" start="00:20:45.995" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""package-archives.""" start="00:20:48.197" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah and you can see here I've ins-ed gnu, non-gnu, and melpa.""" start="00:20:54.518" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It's melpa, not melpa stable.""" start="00:21:00.542" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saved and set.""" start="00:21:03.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So that's how I do that.""" start="00:21:06.810" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're just kind of totally get an inferior lisp working.""" start="00:21:08.384" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, like we saw before,""" start="00:21:17.130" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this might occur, buffer is still open.""" start="00:21:20.949" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""No. occur. slime.""" start="00:21:23.148" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we could install and execute that.""" start="00:21:35.330" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I cloned slime since Common Lisp people""" start="00:21:38.681" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""might use slime and swank, like McCLIM does outside of Emacs.""" start="00:21:41.784" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think we can secretly see""" start="00:21:48.924" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I've got it here already in my ~/.emacs.d/slime,""" start="00:21:51.093" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but you could install it like that. The hotkey is I,""" start="00:21:56.064" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then execute the install.""" start="00:22:00.169" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I realize you all already know this,""" start="00:22:02.071" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but many of you might not yet be Common Lisp programmers,""" start="00:22:04.039" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and you can use both Superior and Inferior Lisp.""" start="00:22:06.809" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Instead of package archives in Emacs,""" start="00:22:10.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in Inferior Lisp, and with great controversy,""" start="00:22:14.783" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we often use QuickLisp.""" start="00:22:19.755" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""People sometimes complain QuickLisp releases""" start="00:22:22.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""get out of date quite quickly.""" start="00:22:25.828" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But there was one recently, so they're pretty in date.""" start="00:22:28.630" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so there should be a …""" start="00:22:32.167" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so basically you download quicklisp.lisp,""" start="00:22:35.371" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you check its SHA-256 sum.""" start="00:22:39.158" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I guess in, ooh, over here, if I press D,""" start="00:22:44.910" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""~screwtape/downloads/quicklisp.lisp.""" start="00:22:51.229" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Great. If we open a shell, we realize that""" start="00:22:53.756" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this is just riveting for all of our experts there.""" start="00:22:57.426" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""sha256 ~/Downloads/quicklisp.lisp""" start="00:23:06.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Your SHA-256 might be different to mine.""" start="00:23:19.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Somebody please tell me during the actual conference,""" start="00:23:22.601" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the right Emacs idiom to do this.""" start="00:23:25.621" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess it will be tools decrypt something.""" start="00:23:29.225" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But then once you have QuickLisp,""" start="00:23:33.930" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's go back to our shell.""" start="00:23:36.214" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm on OpenBSD or a BSD, so I type pkg_add ecl""" start="00:23:41.810" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to get embeddable Common Lisp.""" start="00:23:46.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""However, I think I already have it.""" start="00:23:53.590" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, let's start ecl [embeddable Common Lisp].""" start="00:23:58.540" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Quicklisp inserts itself already,""" start="00:24:04.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but just loading that quicklisp.lisp file""" start="00:24:11.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of would get you here anyway.""" start="00:24:14.970" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Now let's (ql:quickload :mcclim)""" start="00:24:17.039" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm actually following my plan.""" start="00:24:27.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM is kind of like Emacs in that""" start="00:24:33.269" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it handles all sorts of graphical stuff""" start="00:24:38.344" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""like if you have GTK Emacs,""" start="00:24:41.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you know, it can do really a lot of stuff.""" start="00:24:42.798" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's the reason why compiling and loading""" start="00:24:44.383" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the McCLIM package takes a while""" start="00:24:50.504" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and I do use my old computer laptop,""" start="00:24:53.175" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my old computer challenge laptop all the time,""" start="00:24:57.012" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so when you do this, your computer will be""" start="00:25:00.349" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""substantially faster or you will be feeling""" start="00:25:02.735" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""smug about how slow you're running your computer,""" start="00:25:06.404" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and so there's no problem.""" start="00:25:12.759" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Next, we're going to start Swank""" start="00:25:15.531" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is the Lisp part of Emacs's slime-mode.""" start="00:25:17.366" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If I remember, we looked at this before""" start="00:25:27.649" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in my .emacs.d,""" start="00:25:32.348" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then there should be slime/start-swank.lisp.""" start="00:25:35.050" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just grab that and load it.""" start="00:25:41.699" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You don't have to type #p.""" start="00:25:46.293" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The string will work as well as the path name,""" start="00:25:48.870" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but it's kind of fun to do so.""" start="00:25:51.200" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Now, slime-connect.""" start="00:25:52.668" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You installed slime earlier.""" start="00:25:55.437" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Default values.""" start="00:25:57.559" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, the reason we had to do this""" start="00:25:59.074" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and not use Slime, start Slime normally was that""" start="00:26:01.844" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""CLIM, Common Lisp Interface Manager,""" start="00:26:07.214" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM, implementation of the""" start="00:26:10.786" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Common Lisp Interface Manager spec, also uses Swank""" start="00:26:12.254" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and McCLIM really wants to be in the driver's seat.""" start="00:26:16.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We can have our Emacs connect""" start="00:26:20.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to the Swank that McCLIM was already running.""" start="00:26:23.332" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So (in-package :clim-user)...""" start="00:26:28.553" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I don't know if this is an Emacs Lisp idiom,""" start="00:26:30.873" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so you normally have user packages to absorb user code""" start="00:26:33.625" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""just for fooling around.""" start="00:26:37.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then let's just use clim at all.""" start="00:26:42.110" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so clim does lots of things around presentations""" start="00:26:47.606" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but one thing it does is automatically, to a large extent,""" start="00:26:53.094" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""generate graphical user interfaces.""" start="00:26:58.367" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So there's a lot to it that's not about graphics,""" start="00:27:04.006" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of richer interfaces than""" start="00:27:09.444" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""ANSI Common Lisp's character streams.""" start="00:27:14.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But let's use it to grab a graphical pop-up""" start="00:27:19.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that returns a value.""" start="00:27:23.258" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this accepting-values tool.""" start="00:27:24.743" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""t is just choose whatever you think the default stream is.""" start="00:27:28.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're going to want our own window, t as well,""" start="00:27:32.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so just a keyword argument.""" start="00:27:36.688" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""After that, we can just write things like (accept 'string).""" start="00:27:38.640" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I'm just doing this in, for people only listening,""" start="00:27:44.978" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I've just done this in my ECL Slime REPL.""" start="00:27:47.933" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Enter a string: foo bar baz.""" start="00:27:50.986" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Alt-Enter, I think, is the shortcut to return that.""" start="00:27:56.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""As you can see, its first return was "foo bar baz",""" start="00:27:59.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and it had second and third returns,""" start="00:28:02.298" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""string being the type, presentation type that it got,""" start="00:28:04.366" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and t, I think, to indicate that it exited successfully.""" start="00:28:10.155" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We can also do expression, might be more interesting.""" start="00:28:16.189" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""There are a whole bunch of these.""" start="00:28:20.966" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""clim's examples folder is pretty good.""" start="00:28:26.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And the documentation, everybody's documentation,""" start="00:28:29.358" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM's documentation, you know,""" start="00:28:32.344" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""lispworks and franz's documentation will tell you about""" start="00:28:35.413" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the different default presentation types you can accept.""" start="00:28:39.385" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And they're pretty intuitive and""" start="00:28:47.969" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""they're kind of very Lisp compatible,""" start="00:28:49.912" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which everything kind of is.""" start="00:28:53.264" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We could accept an expression. foo bar baz.""" start="00:28:54.316" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""return "foo bar baz 123" because that's what I wrote.""" start="00:29:05.350" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Putting things together""" start="00:29:10.964" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""And now the kind of pièce de résistance""" start="00:29:10.964" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""of putting those things together.""" start="00:29:14.820" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just run over to our scratch buffer.""" start="00:29:17.555" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, or our ielm thing, right?""" start="00:29:22.226" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's what we're actually doing.""" start="00:29:24.246" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So now, I think we're going to do, hang on,""" start="00:29:25.964" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""M-:.""" start="00:29:30.251" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think it's going to be slime-eval-save,""" start="00:29:32.921" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because it'll eval asynchronously.""" start="00:29:41.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""There's a question of how to get the value out of""" start="00:29:45.849" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the asynchronous slime evaluation.""" start="00:29:49.171" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so an obvious way is to yank it.""" start="00:29:52.524" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm looking forward to learning from kickingvegas.""" start="00:29:59.661" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""He finally makes it stick in my brain how to...""" start="00:30:02.284" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Options other than just starting to write a command""" start="00:30:07.138" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in the minibuffer and then mashing Tab""" start="00:30:10.959" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and looking at what the likely sounding results are.""" start="00:30:14.063" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's what I will be learning this conference, if anything.""" start="00:30:16.765" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""slime-eval-save and then, what was happening over here?""" start="00:30:22.070" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""(accepting-values (t :own-window t) (accept 'expression)).""" start="00:30:26.958" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Kind of confusingly, slime-eval-save takes a string,""" start="00:30:33.369" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but it works really well, I'd argue.""" start="00:30:39.169" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think it's about to work really well.""" start="00:30:41.940" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Ok, this is great.""" start="00:30:45.825" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So you can see I've used... Oh, please enter an expression.""" start="00:30:46.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we're doing an expression.""" start="00:30:50.882" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so let's write like (3 4/2 5/6).""" start="00:30:52.167" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's an expression, right?""" start="00:30:59.357" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And now I've yanked it.""" start="00:31:03.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I should have really been in *scratch*,""" start="00:31:05.847" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I just want to dump. Sorry, *scratch*.""" start="00:31:07.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Dump whatever that did.""" start="00:31:13.770" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, yeah, and see, it kind of simplified that""" start="00:31:16.540" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""while it was reading it.""" start="00:31:19.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So running in Elisp, (slime-eval-save "(accepting-values""" start="00:31:20.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""(t :own-window t), accept 'expression))").""" start="00:31:27.536" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I got the three returns all the way""" start="00:31:33.157" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from McCLIM to inferior-lisp to Elisp.""" start="00:31:36.378" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""3, 2, 5/6.""" start="00:31:43.885" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Second return, it was a presentation type of expression,""" start="00:31:46.521" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""returned successfully, key.""" start="00:31:50.625" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so that's pretty cool. How out of time are we?""" start="00:31:53.561" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, we did this in basically half an hour.""" start="00:31:58.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Maybe we could stop and assume there will be a bit under""" start="00:32:04.009" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""half an hour of interactive discussion.""" start="00:32:07.259" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And when I also watch this and also receive suggestions,""" start="00:32:11.646" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""there will be additions and changes to make, I think.""" start="00:32:16.934" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But can we quickly defun accept-date?""" start="00:32:21.671" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's not take any arguments.""" start="00:32:34.667" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's do this.""" start="00:32:40.239" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""accept-date.""" start="00:32:48.409" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saturday, December 7th.""" start="00:32:55.519" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, it doesn't return it.""" start="00:33:02.649" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But it gets pretty close to returning it.""" start="00:33:04.215" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess it yanks it.""" start="00:33:05.568" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I would have to call … I'm going to say it's slime-sync,""" start="00:33:07.818" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""at which point it will resolve the slime-eval-async.""" start="00:33:21.160" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then I could get the first value out of""" start="00:33:25.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my kill-ring pop, right?""" start="00:33:28.807" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Does kill ring pop what I want?""" start="00:33:33.629" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You know, you tell me in the interactive feedback,""" start="00:33:36.646" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which should be happening in LambdaMOO.""" start="00:33:39.968" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Well, I'll record another draft of this later""" start="00:33:43.020" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""after getting some feedback.""" start="00:33:45.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Or worse to worse, this is just what you'll hear.""" start="00:33:48.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Hopefully we have some questions and constructive comments.""" start="00:33:52.180" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""All right, see everybody later.""" start="00:33:59.303" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you so much for being here.""" start="00:34:00.305" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Please do drop in to my live show""" start="00:34:04.470" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you're so inclined on Wednesdays""" start="00:34:08.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""where you're not busy with cool Emacs conferences.""" start="00:34:11.316" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The list be go for climate.""" start="00:34:14.936" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you to everyone who helped.""" start="00:34:16.219" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you to Sacha""" start="00:34:17.772" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for really getting me into this conference""" start="00:34:18.690" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and kind of getting me going and""" start="00:34:21.710" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""submitting this prerecorded talk.""" start="00:34:23.678" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""See everybody later.""" start="00:34:27.981" video="mainVideo-mcclim" id="subtitle"]]
</div>
Captioner: rodrigo
<div class="transcript transcript-qanda"><a name="mcclim-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
<div class="transcript-heading">[[!template new="1" text="""I would love to see the GUI interacting with the scheduling stuff""" start="00:00:00.000" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""...volume of code I've written that.""" start="00:00:00.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I will do a follow-up video with the kind of synchronized""" start="00:00:02.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""elisp-mode stuff because that is the point of the talk. Sorry""" start="00:00:06.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for talking over you. Please continue.""" start="00:00:12.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""sachac is saying (car kill-ring).""" start="00:00:38.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh, yeah, so this question, they're just asking in the""" start="00:00:41.880" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Or any other GUI stuff you've worked on in the past that you'd be comfortable showing?""" start="00:00:57.560" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Scratchpad, is there any other GUI stuff I've worked on in""" start="00:00:57.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""the past? I guess my Toobnix channel, I was doing a bunch of""" start="00:01:01.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, so just Common Lisp development, homed around""" start="00:01:07.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""McCLIM. What is my Toobnix channel? If you find a Toobnix""" start="00:01:12.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""channel and it has a name like Screwtape, that'll""" start="00:01:16.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""presumably be that. So Toobnix is SDF.org's PeerTube.""" start="00:01:21.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Nope, not that one.""" start="00:01:28.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Sacha's got it here in the IRC. I think it's""" start="00:01:35.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""screwtape_channels/videos. Yeah. So the""" start="00:01:41.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""author of mastodon.el, which hopefully lots of us are using""" start="00:01:47.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for our mastodoning, I used the name Screwtape as my""" start="00:01:52.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""username, and I think Wintermute said some kind of""" start="00:01:58.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""exasperated Emacs theme. You know what? Screw Lisp. Then""" start="00:02:01.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Mousebot of mastodon.el rechristened me screwlisp. So""" start="00:02:06.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""sometimes you see my name written one way, and sometimes you""" start="00:02:09.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""see my name written the other way. I quite like it. A lot of""" start="00:02:12.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""people thought that I was quitting Emacs when I changed my""" start="00:02:15.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""name to be mainly screwlisp. I love it. That's a great story.""" start="00:02:19.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Thank you. It's so great to have a name from somebody else. I""" start="00:02:23.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was just thrilled. So thank you, mousebot. Everyone use""" start="00:02:27.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mousebot's mode. Welcome to Green Guest. I'm with you""" start="00:02:30.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""there. All my kids want to choose their own names, and I'm""" start="00:02:35.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just like, more power to you. I'm very glad that my parents""" start="00:02:38.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""picked mine for me, and that's one thing I never had to think""" start="00:02:41.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""about. All right, so do we have to cut short so I can go back to""" start="00:02:45.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""watching MPV? of the other stuff. We don't have to, but you""" start="00:02:50.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""are not obligated to sit here one moment more answering our""" start="00:02:55.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""questions than, you know, but of course, you know, we've""" start="00:02:59.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talked a little before, but I, so I have a pile of questions.""" start="00:03:02.040" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Lispy Gopher Show""" start="00:03:07.400" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""You promised to come on the Lispy Gopher show. That's right.""" start="00:03:07.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I have so much to say. I could, I could, I could come right on""" start="00:03:11.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""your show and just talk to you there, but I'm just curious.""" start="00:03:13.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Talk to us a little bit about that. Tell us more about the""" start="00:03:16.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""program. Oh, the Lispy Gopher climate. What do we do? So it's""" start="00:03:18.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""hosted by the Superdimensional Fortress, SDF.org, who are""" start="00:03:23.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""a public access Unix mainly. They do their own little radio""" start="00:03:29.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thing as well. And so I guess for a few years now, I do a weekly""" start="00:03:32.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""show every zero hundred hours UTC. We always start off with""" start="00:03:38.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of climate crisis topics, because that is a climate""" start="00:03:45.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""crisis topic. But there's a sort of joy in that, because Kent""" start="00:03:49.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Pitman, who Kent Pitman you're familiar with from the""" start="00:03:54.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Pit Manual and so forth, writes a kind of climate crisis""" start="00:03:58.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""haiku, which we kind of lead out with, and we kind of go into""" start="00:04:03.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""the discussions there. Then obviously the show has- It's a""" start="00:04:07.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""highlight, not gonna lie. Yeah, yeah, I love it. I try and do""" start="00:04:10.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""these dramatic readings, but it's often stumble over.""" start="00:04:16.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Actually, when Sacha was on, there was an auxiliary poem""" start="00:04:19.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that happened, which was pretty interesting, too. What was""" start="00:04:23.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I going to say? Then, I mean, the way we got named the Lispy""" start="00:04:27.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Gopher Climate was because, broadly speaking, I like to""" start="00:04:31.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talk about kind of lisp, and most of my writing for a long time""" start="00:04:33.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was on the Gopher. Though I accidentally locked myself out""" start="00:04:37.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of the Gopher recently, so there hasn't been an update there""" start="00:04:41.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for a while. I'm kind of around the IRCs and Mastodon quite a""" start="00:04:45.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""bit now. Lisp, I like to use the term Lisp inclusively,""" start="00:04:52.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""basically. Obviously this talk, I was making the point that""" start="00:04:56.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I just could go through a 1978 paper written in, and so pre-D""" start="00:04:59.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""machine inter-LISP, right? And it basically just worked in""" start="00:05:05.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""modern Emacs LISP. Somebody was pointing out to me, who""" start="00:05:10.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""pointed out where I was like, I don't know what PUT is in,""" start="00:05:13.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""in Emacs Lisp, and somebody was saying definitely there's""" start="00:05:20.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""put in Emacs Lisp. So I'm going to come back to the recording""" start="00:05:23.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of this talk, and I'm going to just pinpoint this moment the""" start="00:05:28.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""next time somebody says, we need to modernize Lisp. I'm""" start="00:05:31.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""going to say, no, no, no, this is modern Emacs Lisp. You see,""" start="00:05:34.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""here's people talking about, yeah, I'm just tripping over,""" start="00:05:37.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""not tripping over, I'm amused by your phrase there, but""" start="00:05:42.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that's exactly how I see it too. And I take your point utterly""" start="00:05:45.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, you know, this tradition of Lisp of carrying forward""" start="00:05:48.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""ideas. And, you know, we, you know, especially in Emacs, it""" start="00:05:53.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""really is like a brain trust, right? Buckets of knowledge of""" start="00:05:57.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""how to get some sort of work done, or, you know, how to work""" start="00:06:00.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""with some kind of code or some kind of data. Yeah, but I had a""" start="00:06:04.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of, interesting experience with some great friends of""" start="00:06:08.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mine, whom I love dearly. Vidak, if you're watching this,""" start="00:06:12.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I'm gossiping about you people over in Australia there.""" start="00:06:15.800" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Lisp already did it""" start="00:06:21.560" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Where people come to you with really exciting ideas that""" start="00:06:21.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""seem to be very cutting edge and like, you know, very much the""" start="00:06:25.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""current talk of the day, like you can hear in other""" start="00:06:30.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""programming languages, and they're telling you how they""" start="00:06:33.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""think you might be able to do this in Lisp. And you have to say,""" start="00:06:36.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""well, you know, if we go back to the late 70s, where the Lisp""" start="00:06:39.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""community really kind of pioneered this topic already.""" start="00:06:43.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Here's how we did it in the late 70s. And there's actually""" start="00:06:47.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""quite a kind of awkward, just kind of disjunction there. I""" start="00:06:51.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mean, that's the thing, right? Where use of Emacs in""" start="00:06:56.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""particular use of Lisp in general will unravel somebody's""" start="00:06:59.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""whole big bag of wind that they've built up around why""" start="00:07:03.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something has to be rebuilt and well right but that's just a""" start="00:07:06.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""function you know it's data so we'll probably just think""" start="00:07:10.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""about that as I don't know sitting in a variable.""" start="00:07:13.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh, so that whole problem, like the elegance of a solution""" start="00:07:16.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""can entirely fall away once you fall back to an earlier way of""" start="00:07:21.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thinking about it. And then, you know, look at the pieces""" start="00:07:25.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""you've carried forward the idea of the declarative""" start="00:07:29.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""language, right? Declaring user experience. Yeah. Once""" start="00:07:32.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""again, tangentially to, um, to the actual talk we've just""" start="00:07:37.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""watched, which I will try and follow up on as well. But one""" start="00:07:42.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""example was After watching me use the Common Lisp loop""" start="00:07:47.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""facility so much, Kent pointed out to me, hey, you know, why""" start="00:07:51.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""don't you try using Richard Waters' series iteration""" start="00:07:56.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""stuff, which was kind of lazy evaluation of series that""" start="00:08:01.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Waters did. And so after criticizing Haskell for a long""" start="00:08:05.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""time, me kind of saying, hey, you know, I don't think this""" start="00:08:09.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""lazy evaluation is important. then Kent pointed out to me""" start="00:08:12.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, for example, the series, like what is it? AIM 1082 or""" start="00:08:16.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something published in 1989 was Lazy Evaluation in LISP""" start="00:08:22.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""with series. And so I thought, well, once I realized that""" start="00:08:28.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""this was part of kind of almost classic LISP history to have""" start="00:08:33.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""lazy evaluation, I adopted series, I kind of had to rethink""" start="00:08:37.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""my LISP worldview to realize it did already include lazy""" start="00:08:43.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""evaluation, which I attributed to the late 80s. And then""" start="00:08:47.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""when I actually read a little bit further, lazy evaluation,""" start="00:08:51.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""depending on your research group, has been, was kind of""" start="00:08:55.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""established in the late 70s by Waters again, actually.""" start="00:08:59.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Sorry for the anecdote, just kind of the interesting""" start="00:09:02.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""medley. Not at all.""" start="00:09:05.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Yeah.""" start="00:09:11.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Ellis over in the IRC has come up with a good slime about""" start="00:09:17.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""async. Oh, I see. So yeah,""" start="00:09:25.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I guess that would work. I have to try that. OK, so you're just""" start="00:09:33.340" video="qanda-mcclim" id="subtitle"]]
[[!template text="""getting me reading this. They have had a stab at resolving""" start="00:09:38.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""our asynchronous calls thing more elegantly than me. Left""" start="00:09:42.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""as an exercise to the listener. It's one of the big virtues of""" start="00:09:49.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something like a convention. It'll bring us together with""" start="00:09:53.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""other people that can kind of see past the boats in our eyes.""" start="00:09:56.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh yeah, that's easy for me. Yeah, definitely. Hearing""" start="00:10:01.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""somebody else's kind of thought process from you and from""" start="00:10:06.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just the past speaker who was Robin, I think, because this""" start="00:10:10.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was in the morning for me, so I just kind of got up and caught""" start="00:10:16.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""some of Robin. Yeah, it's so great, kind of vicariously""" start="00:10:19.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""experiencing somebody else's Emacs usage and how it kind of""" start="00:10:25.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""subtly backs onto their own development flows. Yeah, so I""" start="00:10:30.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""really appreciate this talk. I'm constantly cribbing from""" start="00:10:34.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""everyone I meet. And yeah, this talk has been eye-popping,""" start="00:10:37.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just watching you casually navigate Emacs, actually.""" start="00:10:40.520" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""IELM""" start="00:10:43.600" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Yeah, it's cool. Yeah, I enjoyed discovering IELM mode.""" start="00:10:43.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""That was going to be my other question for people. Are there""" start="00:10:51.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""any IELM Power users around? I could really go for an""" start="00:10:54.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""EmacsConf talk on IELM mode. Aha, yes. Very good. Note""" start="00:10:59.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""taken. Yeah. So, just thoughts for next year? Oh, well, I""" start="00:11:05.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of want to get back onto the MPV, but thank you so much for""" start="00:11:12.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""this. You are cmak in the IRC, right? I am Corwin, same as you.""" start="00:11:16.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""So you're Corwin. There's also cmak, and I guess there are a""" start="00:11:22.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""few other people. Sorry that I'm tripping over the""" start="00:11:26.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""different people here. But you're going to come on the Lispy""" start="00:11:28.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Gopher Climate later. Sure, I'm happy to. That sounds""" start="00:11:31.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""like fun. I always got a million things to talk about me or an""" start="00:11:35.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""opinion on everything. But of course, my favorite thing to""" start="00:11:38.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talk about is just the huge thanks that, you know, sharing""" start="00:11:42.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, the generosity or the, you know, my appreciation for""" start="00:11:48.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""you and all the other members of the Emacs community that""" start="00:11:53.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""create talks like this and make the conference and the rest""" start="00:11:57.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of the community so rich. Well, yeah, and thank you for your""" start="00:12:00.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""work. Sacha is just saying over in Lambda that when I say I""" start="00:12:04.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""want someone to give the talk, this means I'm volunteering""" start="00:12:09.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""to give the IELM talk. That's what I wrote down. Oh, yeah. I've""" start="00:12:13.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""been working for Sacha. I mean, helping Sacha with this""" start="00:12:17.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""conference for years. I know. No, I'm kidding. That would be""" start="00:12:19.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""cool. I will absolutely go to your ielm talk. I make a lot of use""" start="00:12:23.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of that and could do more. Yeah, we're meant to suddenly""" start="00:12:28.560" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Are we going to get a McCLIM LambdaMOO client?""" start="00:12:32.880" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""stop. But a guest over in Lambda also said, are we going to get""" start="00:12:32.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""a McCLIM LambdaMOO client? And I actually had all my kind of""" start="00:12:36.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Moo stuff I'd written in Common Lisp, which I was thinking of""" start="00:12:41.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just kind of jettisoning. But you're right, I should make""" start="00:12:44.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that into a client for Common Lisp. Anyway, I'm going to hang""" start="00:12:47.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""up so I can keep watching the conference sounds good so we'll""" start="00:12:51.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just cut away with the stream throw some music and a""" start="00:12:55.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""countdown uh back on give us just a second to make that on bbb""" start="00:12:58.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""and then i'll give you the big thumbs up thank you thank you""" start="00:13:02.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""recording here we'll get it all posted up uh right next to""" start="00:13:05.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""your awesome pre-recorded talk""" start="00:13:08.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thanks again like it's been fun chatting and uh Yeah,""" start="00:13:09.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""definitely seeing you around in the conference channel off""" start="00:13:17.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""off season. So to speak, you're like, you're totally""" start="00:13:20.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""welcome to use our chat like it to the extent you need to IRC""" start="00:13:23.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""channel that's been working on great for me. It's fun to fun""" start="00:13:26.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""to see it.""" start="00:13:29.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""All right, I'm gonna hang up this thing. All right. Happy day""" start="00:13:30.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""flowy. Sorry, I mean, screwlisp. Oh my gosh, I have""" start="00:13:39.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""conference brain. Bye bye. All right, later, later.""" start="00:13:44.120" video="qanda-mcclim" id="subtitle"]]
</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20mcclim%3A%20Elisp%20and%20McCLIM)
<!-- End of emacsconf-publish-after-page -->