summaryrefslogtreecommitdiffstats
path: root/2021
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt1421
-rw-r--r--2021/info/build-schedule.md10
-rw-r--r--2021/schedule-details.md2
3 files changed, 1429 insertions, 4 deletions
diff --git a/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt b/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt
new file mode 100644
index 00000000..12a7a6ad
--- /dev/null
+++ b/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt
@@ -0,0 +1,1421 @@
+WEBVTT
+
+
+00:00.960 --> 00:00:03.760
+welcome everyone uh my name is ferming i
+
+00:03.760 --> 00:00:05.120
+work as a commonwealth engineer at
+
+00:05.120 --> 00:00:08.000
+ribbon pack and today i'm going to talk
+
+00:08.000 --> 00:00:09.519
+about
+
+00:09.519 --> 00:00:11.360
+how to build an e-max
+
+00:11.360 --> 00:00:12.240
+right
+
+00:12.240 --> 00:00:16.640
+so uh let's start by defining what is an
+
+00:16.640 --> 00:00:18.000
+imax
+
+00:18.000 --> 00:00:20.080
+so that this can be a really this can be
+
+00:20.080 --> 00:00:21.920
+really hard depending on
+
+00:21.920 --> 00:00:23.920
+what you want to say what you want to
+
+00:23.920 --> 00:00:26.320
+qualify what emas is and not i'm going
+
+00:26.320 --> 00:00:27.920
+to
+
+00:27.920 --> 00:00:29.519
+get just this definition it's not the
+
+00:29.519 --> 00:00:31.840
+best but it's mine right
+
+00:31.840 --> 00:00:34.480
+so i would argue that an emacs should
+
+00:34.480 --> 00:00:37.440
+have text editing capabilities
+
+00:37.440 --> 00:00:38.879
+i wouldn't say it should be a text
+
+00:38.879 --> 00:00:41.120
+editor but it should be able to work
+
+00:41.120 --> 00:00:43.200
+really well with text
+
+00:43.200 --> 00:00:45.680
+as you have introspection and a global
+
+00:45.680 --> 00:00:46.879
+state
+
+00:46.879 --> 00:00:49.760
+so you can ask them every time
+
+00:49.760 --> 00:00:51.680
+um software itself i think it should be
+
+00:51.680 --> 00:00:54.879
+able to modify itself while running
+
+00:54.879 --> 00:00:56.640
+um so you shouldn't be static and you
+
+00:56.640 --> 00:00:59.280
+shouldn't never restart for
+
+00:59.280 --> 00:01:01.359
+any reason like in engineering max you
+
+01:01.359 --> 00:01:03.280
+can't predefine every function or every
+
+01:03.280 --> 00:01:05.680
+functionality the way you want
+
+01:05.680 --> 00:01:09.360
+and extensibility should not be limited
+
+01:09.360 --> 00:01:11.040
+with this i mean that if you add a new
+
+01:11.040 --> 00:01:12.560
+package shouldn't be a difference you
+
+01:12.560 --> 00:01:14.960
+shouldn't have an api
+
+01:14.960 --> 00:01:18.560
+to extend the software and the entire uh
+
+01:18.560 --> 00:01:20.640
+software itself should be the external
+
+01:20.640 --> 00:01:22.640
+api code
+
+01:22.640 --> 00:01:25.360
+i'll argue that's also
+
+01:25.360 --> 00:01:26.640
+um
+
+01:26.640 --> 00:01:28.320
+should be list base
+
+01:28.320 --> 00:01:29.759
+but
+
+01:29.759 --> 00:01:32.880
+um it's controversial so
+
+01:32.880 --> 00:01:34.720
+yes they're going to get this definition
+
+01:34.720 --> 00:01:37.280
+and then extend upon it so
+
+01:37.280 --> 00:01:38.880
+bear with me
+
+01:38.880 --> 00:01:41.920
+so right now uh genuine max is the best
+
+01:41.920 --> 00:01:44.079
+emacs that we have that's not the only
+
+01:44.079 --> 00:01:46.320
+one uh
+
+01:46.320 --> 00:01:48.479
+not even the first one imax but it's the
+
+01:48.479 --> 00:01:49.680
+best one that we have the one that we're
+
+01:49.680 --> 00:01:51.759
+using the one that we that i'm using
+
+01:51.759 --> 00:01:54.079
+right now and the one that we're here
+
+01:54.079 --> 00:01:55.280
+for
+
+01:55.280 --> 00:01:57.759
+but as we all know it's not perfect i'm
+
+01:57.759 --> 00:01:59.759
+going to highlight some
+
+01:59.759 --> 00:02:02.479
+um imperfection that all that we should
+
+02:02.479 --> 00:02:05.119
+know i guess that you must have
+
+02:05.119 --> 00:02:07.360
+so the first one is that uh i would
+
+02:07.360 --> 00:02:09.440
+argue that inmate lisp is a good lisp
+
+02:09.440 --> 00:02:11.280
+but it's not a general purpose
+
+02:11.280 --> 00:02:13.280
+programming language
+
+02:13.280 --> 00:02:15.040
+you can do pretty crazy things with
+
+02:15.040 --> 00:02:16.959
+emacs but i will argue that you can do
+
+02:16.959 --> 00:02:18.400
+also do that with
+
+02:18.400 --> 00:02:20.640
+brain [ __ ] i'm not comparing them i know
+
+02:20.640 --> 00:02:22.239
+with my list so much better than brain
+
+02:22.239 --> 00:02:24.720
+[ __ ] but that's not an argument in
+
+02:24.720 --> 00:02:26.480
+mclisp it's
+
+02:26.480 --> 00:02:29.599
+a language for an editor
+
+02:29.599 --> 00:02:32.080
+not for writing
+
+02:32.080 --> 00:02:34.720
+game engine for example
+
+02:34.720 --> 00:02:37.040
+um it's not the fastest lisp we all know
+
+02:37.040 --> 00:02:40.239
+this is um
+
+02:40.239 --> 00:02:42.319
+not in the middle i will say was really
+
+02:42.319 --> 00:02:44.720
+slow now it's getting better maybe with
+
+02:44.720 --> 00:02:46.480
+the c integration
+
+02:46.480 --> 00:02:49.200
+um thanks to andrea it can be even
+
+02:49.200 --> 00:02:51.680
+better but we'll see and has limited
+
+02:51.680 --> 00:02:55.360
+concurrency this will still be the case
+
+02:55.360 --> 00:02:58.159
+it has shared threats first i know
+
+02:58.159 --> 00:03:00.000
+it's not perfect and it's also not that
+
+03:00.000 --> 00:03:01.040
+fast
+
+03:01.040 --> 00:03:03.360
+and even though this for some people is
+
+03:03.360 --> 00:03:04.480
+not an issue
+
+03:04.480 --> 00:03:06.080
+i'll argue that for me it's an issue
+
+03:06.080 --> 00:03:07.920
+which is the canoe emac score is written
+
+03:07.920 --> 00:03:09.840
+in the c
+
+03:09.840 --> 00:03:13.519
+um i'm not a big fan of c i mean i have
+
+03:13.519 --> 00:03:15.519
+wrote things about c in the past and
+
+03:15.519 --> 00:03:16.840
+it's
+
+03:16.840 --> 00:03:20.560
+okay as a language but um i prefer i'll
+
+03:20.560 --> 00:03:22.800
+be in lisp so i can hack on it easily
+
+03:22.800 --> 00:03:24.720
+and really find it while it's running
+
+03:24.720 --> 00:03:27.440
+all in just one language so you don't
+
+03:27.440 --> 00:03:29.920
+have to learn two languages to get into
+
+03:29.920 --> 00:03:30.959
+it
+
+03:30.959 --> 00:03:33.120
+um even though it's just ten percent of
+
+03:33.120 --> 00:03:35.599
+emacs right but still there needs to be
+
+03:35.599 --> 00:03:38.799
+maintained and yeah
+
+03:38.799 --> 00:03:41.120
+i don't like that uh kind of uh a max
+
+03:41.120 --> 00:03:43.040
+aspect but just
+
+03:43.040 --> 00:03:45.360
+this was just my opinion okay so while
+
+03:45.360 --> 00:03:46.720
+you're like you know mac's pretty good
+
+03:46.720 --> 00:03:48.400
+you should use it
+
+03:48.400 --> 00:03:50.319
+you probably use it if you're here and
+
+03:50.319 --> 00:03:53.280
+use it every day it's great
+
+03:53.280 --> 00:03:54.239
+so
+
+03:54.239 --> 00:03:56.560
+some people in the past
+
+03:56.560 --> 00:03:58.080
+wanted to write
+
+03:58.080 --> 00:04:00.480
+an e-max of course and not the emacs
+
+04:00.480 --> 00:04:02.400
+and they think about different things
+
+04:02.400 --> 00:04:04.799
+and they attempt to write similar emacs
+
+04:04.799 --> 00:04:07.680
+like things i'm going to um
+
+04:07.680 --> 00:04:09.519
+i know there's a lot of more way more
+
+04:09.519 --> 00:04:12.879
+emacs than the one i'm going to say now
+
+04:12.879 --> 00:04:16.000
+but i just going to
+
+04:16.000 --> 00:04:18.639
+focus on the emacs that uh meets the
+
+04:18.639 --> 00:04:20.639
+criteria are not like
+
+04:20.639 --> 00:04:23.280
+uh the linux turbo's emacs right which
+
+04:23.280 --> 00:04:24.479
+is just a c
+
+04:24.479 --> 00:04:28.400
+simple e max to write c for me that may
+
+04:28.400 --> 00:04:30.160
+be uh
+
+04:30.160 --> 00:04:32.400
+an e max for the people but not for me i
+
+04:32.400 --> 00:04:34.639
+wouldn't argue that that's not
+
+04:34.639 --> 00:04:36.720
+really an emacs just an editor with
+
+04:36.720 --> 00:04:38.560
+commands similar to imax
+
+04:38.560 --> 00:04:40.160
+but
+
+04:40.160 --> 00:04:43.120
+i digress okay so the language i will
+
+04:43.120 --> 00:04:45.120
+argue that common lisp may be the best
+
+04:45.120 --> 00:04:46.320
+language
+
+04:46.320 --> 00:04:47.759
+period
+
+04:47.759 --> 00:04:49.600
+sorry about that the best language for
+
+04:49.600 --> 00:04:51.520
+writing emacs also
+
+04:51.520 --> 00:04:53.759
+um it's a timeless standard reaching in
+
+04:53.759 --> 00:04:57.520
+the 1990s is fast and reliable
+
+04:57.520 --> 00:05:00.160
+it's a great lisp i will argue that the
+
+05:00.160 --> 00:05:01.840
+best lisp but i don't want to get any
+
+05:01.840 --> 00:05:03.280
+trouble so i would just say it's great
+
+05:03.280 --> 00:05:04.400
+lisp
+
+05:04.400 --> 00:05:06.880
+um has good library support doesn't have
+
+05:06.880 --> 00:05:08.720
+like a huge library like i would say
+
+05:08.720 --> 00:05:12.160
+python or c but pretty
+
+05:12.160 --> 00:05:14.800
+robust and good library
+
+05:14.800 --> 00:05:18.000
+similar to mclisp which may seem as a
+
+05:18.000 --> 00:05:21.120
+historical accident which maybe it is
+
+05:21.120 --> 00:05:23.919
+but also in this case has some
+
+05:23.919 --> 00:05:26.160
+interesting properties that will
+
+05:26.160 --> 00:05:29.280
+be discussed
+
+05:29.280 --> 00:05:30.960
+later
+
+05:30.960 --> 00:05:32.400
+okay so
+
+05:32.400 --> 00:05:33.600
+um
+
+05:33.600 --> 00:05:35.280
+taking common lisps a language to write
+
+05:35.280 --> 00:05:36.479
+an imax i'm going to get some
+
+05:36.479 --> 00:05:37.759
+technologies in documentation that we
+
+05:37.759 --> 00:05:40.720
+can use to write an e-max in common lisp
+
+05:40.720 --> 00:05:43.440
+so the first one is mcclaim which is an
+
+05:43.440 --> 00:05:45.039
+implementation of a
+
+05:45.039 --> 00:05:47.120
+common lisp interface standard
+
+05:47.120 --> 00:05:50.320
+this is great i mean i loved how
+
+05:50.320 --> 00:05:52.720
+this is written how it is defined i like
+
+05:52.720 --> 00:05:54.479
+standard things
+
+05:54.479 --> 00:05:57.440
+um mclean it's a marvelous tool i will
+
+05:57.440 --> 00:05:59.759
+argue that it's the best
+
+05:59.759 --> 00:06:01.280
+um toolkit
+
+06:01.280 --> 00:06:03.039
+i wouldn't say there's a toolkit because
+
+06:03.039 --> 00:06:05.360
+it's way more extense than it but it's
+
+06:05.360 --> 00:06:07.919
+great i would highly recommend if you
+
+06:07.919 --> 00:06:10.639
+want to write a gui application in
+
+06:10.639 --> 00:06:14.400
+common lisp well mcclain is great
+
+06:14.400 --> 00:06:18.400
+also some people thought about
+
+06:18.400 --> 00:06:20.160
+libraries for writing emac style
+
+06:20.160 --> 00:06:22.720
+application so to create an emacs some
+
+06:22.720 --> 00:06:24.720
+people already thought about this and
+
+06:24.720 --> 00:06:26.479
+wrote a paper
+
+06:26.479 --> 00:06:27.440
+um
+
+06:27.440 --> 00:06:29.840
+one of them was robert strand
+
+06:29.840 --> 00:06:32.319
+which is the guy more interested in in
+
+06:32.319 --> 00:06:34.880
+imax like things
+
+06:34.880 --> 00:06:36.479
+and this paper is great you can get a
+
+06:36.479 --> 00:06:37.759
+lot of information how you can write
+
+06:37.759 --> 00:06:39.360
+your application get
+
+06:39.360 --> 00:06:41.039
+similar functionality and all the things
+
+06:41.039 --> 00:06:43.600
+that i said before
+
+06:43.600 --> 00:06:45.840
+and also the same
+
+06:45.840 --> 00:06:47.039
+of the
+
+06:47.039 --> 00:06:49.199
+robert strand or the guys that wrote
+
+06:49.199 --> 00:06:52.240
+that paper also wrote clefo which is
+
+06:52.240 --> 00:06:54.479
+a library for text editor buffer but
+
+06:54.479 --> 00:06:57.599
+more important it's also a definition
+
+06:57.599 --> 00:06:59.599
+so this video
+
+06:59.599 --> 00:07:02.639
+out there will where he explains
+
+07:02.639 --> 00:07:03.599
+um
+
+07:03.599 --> 00:07:05.919
+what clapper is so he wrote an
+
+07:05.919 --> 00:07:08.479
+implementation of clover but it's more
+
+07:08.479 --> 00:07:12.000
+of like a
+
+07:12.000 --> 00:07:12.880
+um
+
+07:12.880 --> 00:07:14.400
+yeah
+
+07:14.400 --> 00:07:17.599
+like a standard like a way to write
+
+07:17.599 --> 00:07:20.639
+uh how buffers or work in emacs
+
+07:20.639 --> 00:07:23.280
+and i think it's better
+
+07:23.280 --> 00:07:25.599
+in some ways that what imac genuine mac
+
+07:25.599 --> 00:07:26.960
+does right now
+
+07:26.960 --> 00:07:29.039
+um in other ways it's really interesting
+
+07:29.039 --> 00:07:31.759
+and i just have had a lot of fun
+
+07:31.759 --> 00:07:33.360
+implementing it so
+
+07:33.360 --> 00:07:35.919
+i'm using it more or less
+
+07:35.919 --> 00:07:38.080
+uh so yeah that's some great
+
+07:38.080 --> 00:07:40.479
+documentation great foundation so you
+
+07:40.479 --> 00:07:42.080
+don't have to
+
+07:42.080 --> 00:07:43.599
+i mean it's
+
+07:43.599 --> 00:07:44.879
+really
+
+07:44.879 --> 00:07:46.319
+interesting to write everything by
+
+07:46.319 --> 00:07:48.080
+yourself because you are
+
+07:48.080 --> 00:07:49.120
+a great
+
+07:49.120 --> 00:07:51.440
+programmer and you you want to have
+
+07:51.440 --> 00:07:52.879
+control of everything i understand
+
+07:52.879 --> 00:07:54.800
+everything from the ground up but we
+
+07:54.800 --> 00:07:56.720
+have to understand that
+
+07:56.720 --> 00:07:58.879
+an imax it's a really complex
+
+07:58.879 --> 00:08:00.639
+application
+
+08:00.639 --> 00:08:01.759
+and
+
+08:01.759 --> 00:08:03.120
+i will say that if you have some
+
+08:03.120 --> 00:08:05.520
+foundation it will be easier and you
+
+08:05.520 --> 00:08:08.479
+don't have to rewrite the wheel 20 times
+
+08:08.479 --> 00:08:10.080
+right
+
+08:10.080 --> 00:08:12.720
+okay so attempts uh the same guy robert
+
+08:12.720 --> 00:08:13.680
+strand
+
+08:13.680 --> 00:08:16.879
+have two climax which is emacs and emacs
+
+08:16.879 --> 00:08:19.360
+like thing written in common lisp
+
+08:19.360 --> 00:08:21.599
+um the first ones the third one is
+
+08:21.599 --> 00:08:23.360
+abandon and the second one is a work in
+
+08:23.360 --> 00:08:24.840
+progress
+
+08:24.840 --> 00:08:27.039
+um it's really interesting the second
+
+08:27.039 --> 00:08:29.440
+one uses in fact the clefor buffer
+
+08:29.440 --> 00:08:32.159
+implementation one question
+
+08:32.159 --> 00:08:36.880
+and the first one is just a mcclaim um
+
+08:36.880 --> 00:08:39.200
+front end remax so it's really tight the
+
+08:39.200 --> 00:08:40.800
+so the the
+
+08:40.800 --> 00:08:42.959
+interface retired with the api so it's
+
+08:42.959 --> 00:08:44.880
+basically i'm sickly
+
+08:44.880 --> 00:08:48.320
+um software that's similar to an emacs
+
+08:48.320 --> 00:08:49.360
+right
+
+08:49.360 --> 00:08:51.760
+and the third one it's a lem project
+
+08:51.760 --> 00:08:54.240
+which is a common lisp editor that aims
+
+08:54.240 --> 00:08:56.320
+to be really close to remax and it
+
+08:56.320 --> 00:08:59.519
+probably fits the criteria but
+
+08:59.519 --> 00:09:01.600
+and uses the encourages for the
+
+09:01.600 --> 00:09:03.279
+interface for as i know and it's really
+
+09:03.279 --> 00:09:05.200
+commonly focused so it even has some
+
+09:05.200 --> 00:09:08.560
+major modes for other languages but
+
+09:08.560 --> 00:09:09.839
+i mean it's
+
+09:09.839 --> 00:09:11.279
+um
+
+09:11.279 --> 00:09:13.440
+it's mainly for common lisp written by
+
+09:13.440 --> 00:09:15.680
+common lisp and for common list
+
+09:15.680 --> 00:09:18.080
+developers
+
+09:18.080 --> 00:09:21.839
+um so i decided to write my own emacs
+
+09:21.839 --> 00:09:23.839
+but i don't want to write everything
+
+09:23.839 --> 00:09:25.680
+from scratch
+
+09:25.680 --> 00:09:28.720
+because i'm not a creator programmer
+
+09:28.720 --> 00:09:29.839
+and also because probably there's
+
+09:29.839 --> 00:09:33.040
+something that some people already tried
+
+09:33.040 --> 00:09:34.640
+and the first thing i noticed with all
+
+09:34.640 --> 00:09:36.480
+these attempts
+
+09:36.480 --> 00:09:38.959
+that they fail in compete with emacs so
+
+09:38.959 --> 00:09:41.920
+to say they don't have an imax conf
+
+09:41.920 --> 00:09:43.839
+and they don't support genuine max
+
+09:43.839 --> 00:09:45.440
+packages
+
+09:45.440 --> 00:09:46.880
+and that's a big deal because they're
+
+09:46.880 --> 00:09:49.519
+more of the thousands packages out there
+
+09:49.519 --> 00:09:51.040
+under great
+
+09:51.040 --> 00:09:53.120
+and imagine they want to convince
+
+09:53.120 --> 00:09:54.800
+someone to say hey try this editor
+
+09:54.800 --> 00:09:57.440
+instead of x thing
+
+09:57.440 --> 00:09:59.839
+i would say okay can i use git things so
+
+09:59.839 --> 00:10:02.079
+i have to write a git
+
+10:02.079 --> 00:10:02.959
+um
+
+10:02.959 --> 00:10:04.640
+liar
+
+10:04.640 --> 00:10:07.360
+maggot or mode and i want to play tetris
+
+10:07.360 --> 00:10:09.440
+the other road so that's
+
+10:09.440 --> 00:10:10.640
+really
+
+10:10.640 --> 00:10:12.640
+hard for one person to do
+
+10:12.640 --> 00:10:14.079
+so someone
+
+10:14.079 --> 00:10:16.240
+thought similar so they say okay i'm
+
+10:16.240 --> 00:10:18.079
+going to rewrite the maxi aph common
+
+10:18.079 --> 00:10:19.200
+lisp
+
+10:19.200 --> 00:10:21.440
+it was this is what back in 2005 by sol
+
+10:21.440 --> 00:10:22.399
+bets
+
+10:22.399 --> 00:10:24.000
+sabits
+
+10:24.000 --> 00:10:26.000
+but it was banjo in 2007. the project
+
+10:26.000 --> 00:10:27.600
+was called lice
+
+10:27.600 --> 00:10:28.640
+and
+
+10:28.640 --> 00:10:31.600
+it was a really interesting approach
+
+10:31.600 --> 00:10:34.880
+um it wasn't finished and it was lost in
+
+10:34.880 --> 00:10:35.920
+time
+
+10:35.920 --> 00:10:37.440
+so my idea was to continue with the
+
+10:37.440 --> 00:10:38.880
+project so the foundation was really
+
+10:38.880 --> 00:10:40.320
+interesting even though i didn't like
+
+10:40.320 --> 00:10:42.160
+some other
+
+10:42.160 --> 00:10:43.760
+designing choices
+
+10:43.760 --> 00:10:45.360
+um but i want to continue with projects
+
+10:45.360 --> 00:10:47.519
+finished you cannot see emacs api add a
+
+10:47.519 --> 00:10:49.839
+compatibility layer to use canoe max
+
+10:49.839 --> 00:10:52.000
+packages that's the selling point right
+
+10:52.000 --> 00:10:53.760
+so you don't have to
+
+10:53.760 --> 00:10:56.000
+use new things
+
+10:56.000 --> 00:10:57.839
+i like my emacs i just want to have my
+
+10:57.839 --> 00:11:00.560
+emacs with commodities that's it and
+
+11:00.560 --> 00:11:02.959
+also better probably a better buffer
+
+11:02.959 --> 00:11:05.519
+implementation so the idea now that uh
+
+11:05.519 --> 00:11:07.839
+having an imaginativity layer
+
+11:07.839 --> 00:11:10.320
+is there improving e-max upon it right
+
+11:10.320 --> 00:11:13.040
+you can use the e-max api or the new one
+
+11:13.040 --> 00:11:14.880
+depending on your needs
+
+11:14.880 --> 00:11:15.760
+you can also have that that
+
+11:15.760 --> 00:11:19.120
+compatibility of both
+
+11:19.120 --> 00:11:21.920
+so um i come up with cedar
+
+11:21.920 --> 00:11:25.839
+um cedar is my attempt is a nice
+
+11:25.839 --> 00:11:27.120
+fork
+
+11:27.120 --> 00:11:30.079
+i will say the hug for hard fork because
+
+11:30.079 --> 00:11:32.399
+i change um
+
+11:32.399 --> 00:11:35.200
+a lot of things and add a lot of things
+
+11:35.200 --> 00:11:37.519
+but it's similar still similar
+
+11:37.519 --> 00:11:38.320
+um
+
+11:38.320 --> 00:11:39.680
+and for this demo i'm going to use the
+
+11:39.680 --> 00:11:41.839
+cidar and courses branch we want to test
+
+11:41.839 --> 00:11:44.880
+it out because the other ones are a work
+
+11:44.880 --> 00:11:46.560
+in progress so one
+
+11:46.560 --> 00:11:48.079
+it's the mclean
+
+11:48.079 --> 00:11:49.519
+club for implementation which is not
+
+11:49.519 --> 00:11:51.360
+finished and doesn't run
+
+11:51.360 --> 00:11:54.560
+and the other one is with the visual
+
+11:54.560 --> 00:11:54.959
+that's to explain here but basically
+
+11:54.959 --> 00:11:57.200
+and debugger
+
+11:57.200 --> 00:11:59.600
+it's an interesting debugger similar to
+
+11:59.600 --> 00:12:01.839
+slime
+
+12:01.839 --> 00:12:04.560
+which is the superior lisp
+
+12:04.560 --> 00:12:07.279
+for re max let's begin with max so it's
+
+12:07.279 --> 00:12:12.079
+increases base also like um
+
+12:12.079 --> 00:12:13.760
+like limb
+
+12:13.760 --> 00:12:16.959
+but um way more easy simple
+
+12:16.959 --> 00:12:19.279
+um i
+
+12:19.279 --> 00:12:22.880
+write well i translate more or less this
+
+12:22.880 --> 00:12:24.560
+list mode functionality
+
+12:24.560 --> 00:12:26.079
+and it has similar
+
+12:26.079 --> 00:12:28.079
+genuine max api
+
+12:28.079 --> 00:12:29.600
+we'll see that in the demo
+
+12:29.600 --> 00:12:31.600
+um it's usable but i work in progress
+
+12:31.600 --> 00:12:33.279
+instead of functionality right now i'm
+
+12:33.279 --> 00:12:35.279
+not focusing on stability yet i'm
+
+12:35.279 --> 00:12:38.240
+focusing finish the mclean front end
+
+12:38.240 --> 00:12:41.120
+which i'm not even halfway there
+
+12:41.120 --> 00:12:42.720
+but i hope to finish it
+
+12:42.720 --> 00:12:45.519
+maybe next year who knows
+
+12:45.519 --> 00:12:46.959
+finish the compatibility layer from the
+
+12:46.959 --> 00:12:48.399
+new max packages i seen this i think
+
+12:48.399 --> 00:12:50.959
+this is doable i know how to do it i
+
+12:50.959 --> 00:12:52.639
+just need time
+
+12:52.639 --> 00:12:53.600
+maybe
+
+12:53.600 --> 00:12:55.760
+a little bit of caffeine
+
+12:55.760 --> 00:12:57.040
+coffee
+
+12:57.040 --> 00:12:59.279
+so uh let's go with the demo right
+
+12:59.279 --> 00:13:02.079
+so uh let's open terminal what's this
+
+13:02.079 --> 00:13:04.800
+anchor base let's go to quick lisp
+
+13:04.800 --> 00:13:06.800
+log there
+
+13:06.800 --> 00:13:11.279
+um and let's run it
+
+13:11.279 --> 00:13:13.760
+okay so now that we're here um it give
+
+13:13.760 --> 00:13:16.000
+us the welcome thing this is the main
+
+13:16.000 --> 00:13:17.519
+buffer it's like we'll say the emacs
+
+13:17.519 --> 00:13:19.200
+buffer when you enter
+
+13:19.200 --> 00:13:21.040
+um so we know that it's firming this is
+
+13:21.040 --> 00:13:22.800
+not hardcoded
+
+13:22.800 --> 00:13:25.040
+okay and now we see it's a major mode in
+
+13:25.040 --> 00:13:27.200
+the bottom right lisp
+
+13:27.200 --> 00:13:29.360
+it's lisp interaction and
+
+13:29.360 --> 00:13:32.880
+this is the name of the buffer right
+
+13:32.880 --> 00:13:35.600
+um okay so we have a couple of buffers
+
+13:35.600 --> 00:13:38.240
+we have scratch which is the fundamental
+
+13:38.240 --> 00:13:40.720
+mode and messages all right
+
+13:40.720 --> 00:13:42.399
+okay so
+
+13:42.399 --> 00:13:44.639
+let's get some interesting things first
+
+13:44.639 --> 00:13:46.399
+uh let's open a file
+
+13:46.399 --> 00:13:48.959
+so i think it's in
+
+13:48.959 --> 00:13:51.199
+programming
+
+13:51.199 --> 00:13:53.440
+a max
+
+13:53.440 --> 00:13:56.480
+conf 2021 and let's go to c there
+
+13:56.480 --> 00:13:58.079
+let's go to demo
+
+13:58.079 --> 00:14:00.000
+so let's open a file so
+
+14:00.000 --> 00:14:01.440
+um
+
+14:01.440 --> 00:14:03.040
+phone lock is not yet
+
+14:03.040 --> 00:14:04.399
+um
+
+14:04.399 --> 00:14:06.240
+well it's implemented so it's there but
+
+14:06.240 --> 00:14:07.920
+it's not active by default
+
+14:07.920 --> 00:14:09.680
+so let's open
+
+14:09.680 --> 00:14:11.360
+uh mx
+
+14:11.360 --> 00:14:13.600
+and let's go lisp
+
+14:13.600 --> 00:14:16.079
+interaction mode
+
+14:16.079 --> 00:14:17.279
+right
+
+14:17.279 --> 00:14:19.199
+so this when you show me here is the
+
+14:19.199 --> 00:14:21.680
+implementation of the kill sex sex
+
+14:21.680 --> 00:14:24.240
+express s expression command
+
+14:24.240 --> 00:14:28.880
+which is exactly the same point by point
+
+14:28.880 --> 00:14:31.279
+from the emacs one you can go right now
+
+14:31.279 --> 00:14:32.959
+umax and ask
+
+14:32.959 --> 00:14:35.279
+how is skills s expression defined this
+
+14:35.279 --> 00:14:36.480
+is the same
+
+14:36.480 --> 00:14:38.560
+and this is how you define a key so we
+
+14:38.560 --> 00:14:41.920
+have we can say uh describe
+
+14:41.920 --> 00:14:43.839
+symbol
+
+14:43.839 --> 00:14:46.399
+the package will be
+
+14:46.399 --> 00:14:48.399
+cedar and the symbol is
+
+14:48.399 --> 00:14:50.480
+global map
+
+14:50.480 --> 00:14:51.610
+global map
+
+14:51.610 --> 00:14:53.279
+[Applause]
+
+14:53.279 --> 00:14:54.240
+so
+
+14:54.240 --> 00:14:56.160
+it's a top level global keymap
+
+14:56.160 --> 00:14:58.480
+thank you for the information
+
+14:58.480 --> 00:15:02.160
+um but you can also say okay uh can i
+
+15:02.160 --> 00:15:05.120
+say okay
+
+15:05.120 --> 00:15:08.000
+global map
+
+15:08.000 --> 00:15:10.079
+okay i'll be giving this a key map so
+
+15:10.079 --> 00:15:11.600
+even though i want to aim to have the
+
+15:11.600 --> 00:15:12.480
+same
+
+15:12.480 --> 00:15:15.920
+um api the
+
+15:15.920 --> 00:15:17.760
+um sorry
+
+15:17.760 --> 00:15:20.079
+uh the back thing so the back end is
+
+15:20.079 --> 00:15:22.480
+going to be class oriented and not same
+
+15:22.480 --> 00:15:24.720
+any max but the return expression should
+
+15:24.720 --> 00:15:27.680
+be really similar so if we say current
+
+15:27.680 --> 00:15:29.759
+buffer
+
+15:29.759 --> 00:15:31.759
+it will give us the buffer it's not the
+
+15:31.759 --> 00:15:33.759
+same in emacs but it's a buffer object
+
+15:33.759 --> 00:15:35.519
+and we can also ask
+
+15:35.519 --> 00:15:37.519
+about let me try to remember
+
+15:37.519 --> 00:15:39.440
+oh there we are
+
+15:39.440 --> 00:15:40.639
+um
+
+15:40.639 --> 00:15:41.839
+but for
+
+15:41.839 --> 00:15:45.680
+name we can close this and open one here
+
+15:45.680 --> 00:15:48.079
+and we can say okay so we have this
+
+15:48.079 --> 00:15:48.959
+thing
+
+15:48.959 --> 00:15:50.959
+that will give us the name so uh this is
+
+15:50.959 --> 00:15:52.800
+similar to the emacs api
+
+15:52.800 --> 00:15:54.399
+as we saw we
+
+15:54.399 --> 00:15:55.120
+so
+
+15:55.120 --> 00:15:57.519
+briefly we have a lot a couple of
+
+15:57.519 --> 00:15:58.639
+commands
+
+15:58.639 --> 00:16:00.240
+um
+
+16:00.240 --> 00:16:02.160
+kills expression also have a little bit
+
+16:02.160 --> 00:16:03.759
+of
+
+16:03.759 --> 00:16:06.639
+help kill word kill line
+
+16:06.639 --> 00:16:07.680
+region
+
+16:07.680 --> 00:16:08.959
+kill buffer
+
+16:08.959 --> 00:16:11.440
+all things that we expect from emacs
+
+16:11.440 --> 00:16:12.800
+um
+
+16:12.800 --> 00:16:14.320
+and yeah this is there's a couple of
+
+16:14.320 --> 00:16:16.160
+things i may show but i think this is
+
+16:16.160 --> 00:16:18.320
+good enough i don't have enough time if
+
+16:18.320 --> 00:16:20.720
+you want more information
+
+16:20.720 --> 00:16:22.800
+so let's go back to it let's close the
+
+16:22.800 --> 00:16:25.680
+buffer does it work no it doesn't work
+
+16:25.680 --> 00:16:28.079
+okay now the head buffer no ah let's go
+
+16:28.079 --> 00:16:29.920
+to cedar
+
+16:29.920 --> 00:16:32.320
+okay so if you want more information
+
+16:32.320 --> 00:16:32.870
+um
+
+16:32.870 --> 00:16:34.399
+[Applause]
+
+16:34.399 --> 00:16:36.880
+first of all thank you very much um
+
+16:36.880 --> 00:16:39.040
+sorry i don't have enough time to show
+
+16:39.040 --> 00:16:40.320
+too much too many things i will see
+
+16:40.320 --> 00:16:42.560
+there but um
+
+16:42.560 --> 00:16:44.639
+yeah uh
+
+16:44.639 --> 00:16:45.839
+if you want more information you can
+
+16:45.839 --> 00:16:48.079
+always send me an email this is my
+
+16:48.079 --> 00:16:50.240
+webpage
+
+16:50.240 --> 16:53.720
+thank you very much
diff --git a/2021/info/build-schedule.md b/2021/info/build-schedule.md
index fcd63e7d..5be9647f 100644
--- a/2021/info/build-schedule.md
+++ b/2021/info/build-schedule.md
@@ -1,13 +1,17 @@
<!-- Automatically generated by conf-create-info-pages -->
Q&A: live
-Status: Prerecorded video received, waiting for captions
+Status: Now playing
Duration: 16:54
-<div class="times" start="2021-11-28T20:43:00Z" end="2021-11-28T21:00:00Z">Sunday, Nov 28 2021, ~ 3:43 PM - 4:00 PM EST<br />Sunday, Nov 28 2021, ~12:43 PM - 1:00 PM PST<br />Sunday, Nov 28 2021, ~ 8:43 PM - 9:00 PM UTC<br />Sunday, Nov 28 2021, ~ 9:43 PM - 10:00 PM CET<br />Sunday, Nov 28 2021, ~10:43 PM - 11:00 PM EET<br />Monday, Nov 29 2021, ~ 2:13 AM - 2:30 AM IST<br />Monday, Nov 29 2021, ~ 4:43 AM - 5:00 AM +08<br />Monday, Nov 29 2021, ~ 5:43 AM - 6:00 AM JST<br /><a href="/2021/">Find out how to watch and participate</a></div>
-If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at <emacsconf-submit@gnu.org> and we'll forward your question to the speaker.
+If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at <emacsconf-submit@gnu.org> and we'll forward your question to the speaker.
+<div class="mainVideo"><div class="video-card vid" data-id="mainVideo"><figure><video controls preload="metadata" poster="https://media.emacsconf.org/2021/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.png" id="mainVideo">
+<source src="https://media.emacsconf.org/2021/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.webm"><track label="English" kind="captions" srclang="en" src="/2021/captions/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt" default>
+</video></figure>
+<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2021/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.webm">Download .webm video (16:54, 15.5MB)</a></li><li><a href="https://media.emacsconf.org/2021/emacsconf-2021-build--how-to-build-an-emacs--fermin-mf--main.vtt">Download --main.vtt</a></li><li><a href="https://toobnix.org/w/jJJwKDTmUVeRQhSj7bazhz">View on Toobnix</a></li></ul></div></div>
+</div>
# Description
diff --git a/2021/schedule-details.md b/2021/schedule-details.md
index 49090d8a..9c81dcb8 100644
--- a/2021/schedule-details.md
+++ b/2021/schedule-details.md
@@ -50,7 +50,7 @@
<tr><td>done</td><td width=100>~ 2:39 PM</td><td><a href="/2021/talks/imaginary">Imaginary Programming</a></td><td>Shane Mulligan</td></tr>
<tr><td>done</td><td width=100>~ 2:59 PM</td><td><a href="/2021/talks/clede">CLEDE: the Common Lisp Emacs Development Environment</a></td><td>Fermin MF</td></tr>
<tr><td>now playing</td><td width=100>~ 3:25 PM</td><td><a href="/2021/talks/maintainers">How to help Emacs maintainers?</a></td><td>Bastien Guerry</td></tr>
-<tr><td>received</td><td width=100>~ 3:47 PM</td><td><a href="/2021/talks/build">How to build an Emacs</a></td><td>Fermin MF</td></tr>
+<tr><td>now playing</td><td width=100>~ 3:52 PM</td><td><a href="/2021/talks/build">How to build an Emacs</a></td><td>Fermin MF</td></tr>
<tr><td>captioned</td><td width=100>~ 4:11 PM</td><td><a href="/2021/talks/forever">M-x Forever: Why Emacs will outlast text editor trends</a></td><td>David Wilson (System Crafters)</td></tr>
<tr><td></td><td width=100>~ 4:56 PM</td><td><a href="/2021/talks/day2-close">Closing remarks day 2</a></td><td></td></tr></table><div class="cancelled">Cancelled:<ul><li><a href="/2021/talks/dsl">Self-Describing Smart DSL's: The Next Magits</a> - Psionic</li>
<li><a href="/2021/talks/devel">Don't write that package! or: How I learned to stop worrying and love emacs-devel</a> - Stefan Kangas</li>