diff options
author | Sacha Chua <sacha@sachachua.com> | 2021-11-28 10:40:32 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2021-11-28 10:40:32 -0500 |
commit | 5c27d220038fb2f498755928c2f331af5bacaf34 (patch) | |
tree | 613cbf48d2841f4ef9dc8dc4c49a8c2f036258b2 /2021/captions | |
parent | 09035304f8b95c1a85e4338e58cf798ea2779b9d (diff) | |
download | emacsconf-wiki-5c27d220038fb2f498755928c2f331af5bacaf34.tar.xz emacsconf-wiki-5c27d220038fb2f498755928c2f331af5bacaf34.zip |
Update
Diffstat (limited to '')
-rw-r--r-- | 2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt | 796 |
1 files changed, 796 insertions, 0 deletions
diff --git a/2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt b/2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt new file mode 100644 index 00000000..b1979ba0 --- /dev/null +++ b/2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt @@ -0,0 +1,796 @@ +WEBVTT + +00:00.000 --> 00:01.200 +Welcome to my talk, + +00:01.200 --> 00:02.680 +Moldable Emacs: A Step Towards + +00:02.680 --> 00:03.800 +Sustainable Software. + +00:03.800 --> 00:04.440 +Who am I? + +00:04.440 --> 00:05.280 +I am Andrea. + +00:05.280 --> 00:07.120 +I work as a Clojure software engineer + +00:07.120 --> 00:09.280 +somewhere in the middle of the UK. + +00:09.280 --> 00:10.880 +I inherited my passion for Emacs + +00:10.880 --> 00:12.480 +from my Ph.D. supervisor, + +00:12.480 --> 00:13.880 +and from that moment on, + +00:13.880 --> 00:14.960 +I got in synergy with it. + +00:14.960 --> 00:17.480 +You can learn more about my interests + +00:17.480 --> 00:19.200 +and my Emacs adventure + +00:19.200 --> 00:22.520 +at ag91.github.io. + +00:22.520 --> 00:24.360 +So let's get in the talk. + +00:24.360 --> 00:25.840 +Why moldable development? + +00:25.840 --> 00:28.400 +There is too much information to read it all. + +00:28.400 --> 00:30.640 +Reading is very difficult. + +00:30.640 --> 00:32.320 +It's a very slow activity. + +00:32.320 --> 00:33.960 +You need to go word by word + +00:33.960 --> 00:35.520 +or paragraph by paragraph, + +00:35.520 --> 00:36.400 +if you speedread. + +00:36.400 --> 00:39.320 +But anyway, you take a lot of time + +00:39.320 --> 00:40.720 +to absorb that information. + +00:40.720 --> 00:43.160 +And we urgently need + +00:43.160 --> 00:44.960 +to stand on the shoulders of giants, + +00:44.960 --> 00:46.880 +so the idea is we should stop + +00:46.880 --> 00:48.960 +doing always the same errors + +00:48.960 --> 00:50.920 +and we should be able to + +00:50.920 --> 00:53.640 +absorb as much of the good ideas + +00:53.640 --> 00:56.600 +that the bright people around us generate. + +00:56.600 --> 00:59.840 +For example, if I create + +00:59.840 --> 01:04.120 +a magnificent program in COBOL, + +01:04.120 --> 01:06.000 +and nobody knows any more + +01:06.000 --> 01:08.000 +how to learn or read COBOL, + +01:08.000 --> 01:09.120 +(and in order to read, + +01:09.120 --> 01:10.960 +you take a lot of time), + +01:10.960 --> 01:13.040 +well, that fantastic idea + +01:13.040 --> 01:15.360 +should be easily translatable + +01:15.360 --> 01:19.240 +to C, or to Clojure, + +01:19.240 --> 01:20.280 +or to Common Lisp, + +01:20.280 --> 01:22.240 +or to a language that will come after. + +01:22.240 --> 01:24.080 +The idea shouldn't be lost + +01:24.080 --> 01:28.400 +in a codebase somewhere in an old mainframe. + +01:28.400 --> 01:31.080 +It should be still accessible. + +01:31.080 --> 01:33.920 +Let's get in practice. What does it mean? + +01:33.920 --> 01:37.840 +It means that, for example, + +01:37.840 --> 01:40.400 +the proponents of moldable development + +01:40.400 --> 01:42.440 +prepare this slide to give a sense. + +01:42.440 --> 01:45.080 +So the idea is... Look at this. + +01:45.080 --> 01:46.640 +What is here? You will see + +01:46.640 --> 01:48.680 +that all these little things + +01:48.680 --> 01:49.680 +look like the same. + +01:49.680 --> 01:50.680 +The first time I looked at it, + +01:50.680 --> 01:52.840 +this was looking like a class diagram. + +01:52.840 --> 01:54.880 +This is actually code + +01:54.880 --> 01:57.800 +describing a little system. + +01:57.800 --> 01:59.520 +If you look and if you read, + +01:59.520 --> 02:01.320 +you can see that there is a numerator, + +02:01.320 --> 02:03.320 +a denominator... So this, you see, + +02:03.320 --> 02:05.720 +is interactive, because it's code. + +02:05.720 --> 02:06.520 +It's something that is running, + +02:06.520 --> 02:07.280 +and it's an object + +02:07.280 --> 02:08.560 +because this is Smalltalk -- + +02:08.560 --> 02:11.440 +Pharo, a dialect of Smalltalk -- + +02:11.440 --> 02:13.040 +but in the next slide, + +02:13.040 --> 02:15.160 +since this is a moldable tool, + +02:15.160 --> 02:16.760 +you can see that you can... + +02:16.760 --> 02:18.280 +there is a representation + +02:18.280 --> 02:20.000 +of the same software + +02:20.000 --> 02:23.520 +in a human way. + +02:23.520 --> 02:24.640 +So, for example, + +02:24.640 --> 02:25.880 +here you can see + +02:25.880 --> 02:27.280 +there is a mathematical formula. + +02:27.280 --> 02:29.080 +The other object, the second one, + +02:29.080 --> 02:30.440 +was a file system kind of thing. + +02:30.440 --> 02:33.880 +The third one was an image. + +02:33.880 --> 02:36.600 +And the last one was sort of a graph. + +02:36.600 --> 02:37.640 +So you can see that + +02:37.640 --> 02:40.840 +there is a better way to learn, + +02:40.840 --> 02:44.880 +to distinguish, to intuitively get a sense. + +02:44.880 --> 02:47.200 +And there is not only a single way. + +02:47.200 --> 02:49.480 +It's custom to what you need. + +02:49.480 --> 02:51.280 +For example, this is + +02:51.280 --> 02:52.680 +a very general way + +02:52.680 --> 02:54.040 +to understand what is this object about + +02:54.040 --> 02:55.560 +and maybe you want to see + +02:55.560 --> 02:56.760 +some other little things. + +02:56.760 --> 02:58.840 +For example, the documentation of the code, + +02:58.840 --> 03:00.240 +because you are interested + +03:00.240 --> 03:01.160 +in developing with it. + +03:01.160 --> 03:03.960 +For example, an image, + +03:03.960 --> 03:05.240 +you can see there's a path + +03:05.240 --> 03:06.840 +on the filesystem, + +03:06.840 --> 03:10.520 +or as a hexadecimal representation. + +03:10.520 --> 03:12.520 +In a sense, there is not only one view. + +03:12.520 --> 03:13.840 +You need to have the view + +03:13.840 --> 03:15.320 +that you need at the moment, + +03:15.320 --> 03:16.840 +and your tool needs to + +03:16.840 --> 03:19.680 +make this easy for you. + +03:19.680 --> 03:22.280 +So, why moldable Emacs? + +03:22.280 --> 03:24.680 +I wanted to bring that idea + +03:24.680 --> 03:26.760 +of having multiple view representations + +03:26.760 --> 03:29.520 +of what you need + +03:29.520 --> 03:33.280 +to understand better in Emacs. + +03:33.280 --> 03:36.280 +And so I want to create immediate story telling. + +03:36.280 --> 03:37.880 +Immediate, because it needs to be very quick, + +03:37.880 --> 03:38.840 +and story telling is + +03:38.840 --> 03:40.760 +because you want to allow connection + +03:40.760 --> 03:42.520 +from something that you needed + +03:42.520 --> 03:45.520 +to develop it into something new. + +03:45.520 --> 03:47.160 +So you are really telling a story: + +03:47.160 --> 03:49.040 +what is this mathematical formula + +03:49.040 --> 03:51.120 +I created because I need this, + +03:51.120 --> 03:54.440 +or this numerator and denominator + +03:54.440 --> 03:55.520 +produce this number. + +03:55.520 --> 03:58.760 +So this is a story that you are telling + +03:58.760 --> 03:59.880 +in my mind. + +03:59.880 --> 04:04.000 +And I want multiple views for buffers. + +04:04.000 --> 04:05.800 +Buffers is the main concept in Emacs, + +04:05.800 --> 04:09.160 +and so buffers are what I want to + +04:09.160 --> 04:11.000 +integrate in a story. + +04:11.000 --> 04:12.280 +I create a buffer + +04:12.280 --> 04:15.080 +and I start manipulating it, + +04:15.080 --> 04:16.920 +creating a view and then another view + +04:16.920 --> 04:19.520 +in order to tell something to myself, + +04:19.520 --> 04:20.720 +in order to learn, + +04:20.720 --> 04:21.880 +but also to tell something to others. + +04:21.880 --> 04:23.960 +So, for example, let's start + +04:23.960 --> 04:25.840 +from a use case: learning better. + +04:25.840 --> 04:29.640 +I had, at work, a list of changes + +04:29.640 --> 04:31.440 +for a pull request, + +04:31.440 --> 04:32.040 +so a code change, + +04:32.040 --> 04:33.920 +and I was very tired. + +04:33.920 --> 04:34.760 +I couldn't understand + +04:34.760 --> 04:37.520 +what this much text was about. + +04:37.520 --> 04:38.920 +So what I generate, + +04:38.920 --> 04:41.120 +I create a value for myself + +04:41.120 --> 04:42.720 +to understand it easily. + +04:42.720 --> 04:45.320 +And for me, understanding it easily, + +04:45.320 --> 04:49.240 +for example, was a little flow diagram. + +04:49.240 --> 04:50.963 +It showed me, okay, there is first + +04:50.963 --> 04:52.320 +this, this, and this, + +04:52.320 --> 04:54.960 +and so I could follow. + +04:54.960 --> 04:58.400 +having it next to the change. + +04:58.400 --> 05:00.600 +Having this image next to the change. + +05:00.600 --> 05:02.360 +And this is describing + +05:02.360 --> 05:05.640 +an Italian recipe for pasta with butter, + +05:05.640 --> 05:07.840 +so if you want to try, you're welcome. + +05:07.840 --> 05:11.720 +It's very tasty. + +05:11.720 --> 05:13.840 +Anyway, the other thing that we can do + +05:13.840 --> 05:17.280 +is query text -- structured text. + +05:17.280 --> 05:20.680 +So for example, this presentation + +05:20.680 --> 05:21.960 +is an Org Mode buffer. + +05:21.960 --> 05:24.040 +So when I call the Playground + +05:24.040 --> 05:24.960 +(that is one of the molds + +05:24.960 --> 05:27.640 +that lets me write some Elisp to query + +05:27.640 --> 05:29.680 +the original buffer,) + +05:29.680 --> 05:31.640 +if I evaluate this, + +05:31.640 --> 05:33.280 +you will see that + +05:33.280 --> 05:33.880 +I have just asked + +05:33.880 --> 05:35.200 +my Org Mode buffer + +05:35.200 --> 05:37.400 +to tell me the content length + +05:37.400 --> 05:38.280 +of the headings + +05:38.280 --> 05:40.240 +with some interesting content. + +05:40.240 --> 05:44.280 +So all the headings at third-level. + +05:44.280 --> 05:48.080 +Do you understand? I've just asked a file + +05:48.080 --> 05:50.240 +to tell me its contents + +05:50.240 --> 05:51.240 +without reading it. + +05:51.240 --> 05:56.320 +Or we can do something similar for code. + +05:56.320 --> 05:58.840 +We can do... I don't know... + +05:58.840 --> 06:00.920 +No idea what is written there, + +06:00.920 --> 06:02.000 +but I want to know + +06:02.000 --> 06:03.840 +which function is the most complex + +06:03.840 --> 06:06.800 +or is overcomplicated. + +06:06.800 --> 06:09.560 +I have defined in red, + +06:09.560 --> 06:11.600 +(so again, I don't need to read the number + +06:11.600 --> 06:13.800 +to know either what it is about!) + +06:13.800 --> 06:15.280 +So, I've written in red, + +06:15.280 --> 06:18.120 +I've shown in red + +06:18.120 --> 06:20.320 +the function with more complexity, + +06:20.320 --> 06:22.560 +and I can jump to it. + +06:22.560 --> 06:24.160 +So everything is very accessible + +06:24.160 --> 06:26.280 +to facilitate my operation + +06:26.280 --> 06:27.160 +and my understanding. + +06:27.160 --> 06:29.880 +Or I can take notes. + +06:29.880 --> 06:36.160 +For example, I can annotate something, + +06:36.160 --> 06:37.240 +and you see the note + +06:37.240 --> 06:38.920 +is again structured text, + +06:38.920 --> 06:40.120 +because you will know + +06:40.120 --> 06:42.320 +that I'm going to query my notes + +06:42.320 --> 06:43.480 +at some point. + +06:43.480 --> 06:46.680 +For example, I can show all my notes, + +06:46.680 --> 06:51.480 +for example, by mode, or I can show + +06:51.480 --> 06:53.600 +all the notes by mode in Org Mode. + +06:53.600 --> 06:56.440 +Because it's structured text, + +06:56.440 --> 06:57.840 +I can manipulate it very easily. + +06:57.840 --> 07:00.160 +So these are all my notes. + +07:00.160 --> 07:05.400 +Finally, the superpower + +07:05.400 --> 07:08.320 +of this moldable Emacs + +07:08.320 --> 07:10.400 +is the fact that you can compose molds. + +07:10.400 --> 07:13.000 +So, for example, let's go in + +07:13.000 --> 07:17.480 +showing all my notes. + +07:17.480 --> 07:19.040 +Let me show you all my notes. + +07:19.040 --> 07:21.520 +And then let's say that I want to know + +07:21.520 --> 07:26.720 +how they are... how many lines + +07:26.720 --> 07:27.400 +are these notes? + +07:27.400 --> 07:30.360 +Look, this is the answer. + +07:30.360 --> 07:31.800 +So of all the notes I take, + +07:31.800 --> 07:34.200 +I can actually query it and say + +07:34.200 --> 07:38.360 +"What are the lengths?" + +07:38.360 --> 07:40.040 +But let me show something more. + +07:40.040 --> 07:41.680 +Which one is the longest note? + +07:41.680 --> 07:44.000 +Now there are lots of notes in there + +07:44.000 --> 07:45.080 +so it's difficult to know + +07:45.080 --> 07:47.200 +but what if I can, in a click, + +07:47.200 --> 07:50.440 +generate a view that is very immediate? + +07:50.440 --> 07:52.240 +Look, there is a note that is very long. + +07:52.240 --> 07:54.040 +It's about 35 lines. + +07:54.040 --> 07:55.160 +Do you understand? + +07:55.160 --> 07:56.760 +I didn't read any note. + +07:56.760 --> 07:58.400 +This is all coming from + +07:58.400 --> 08:02.520 +being able to query your text + +08:02.520 --> 08:06.240 +and having multiple representations. + +08:06.240 --> 08:08.360 +My presentation is very short. + +08:08.360 --> 08:09.720 +What is next? + +08:09.720 --> 08:14.360 +Next is to integrate molds with other software + +08:14.360 --> 08:15.360 +like code-compass. + +08:15.360 --> 08:16.720 +I did a presentation last year + +08:16.720 --> 08:18.640 +and I want to make those nice diagrams + +08:18.640 --> 08:21.320 +available for small molds + +08:21.320 --> 08:22.880 +so that you can use them, + +08:22.880 --> 08:24.760 +for example, for notes + +08:24.760 --> 08:26.360 +or text that you have. + +08:26.360 --> 08:28.200 +To integrate better + +08:28.200 --> 08:30.360 +with Nyxt, the Common Lisp browser, + +08:30.360 --> 08:32.200 +because there's a lot of opportunity there + +08:32.200 --> 08:35.320 +to make funny things, + +08:35.320 --> 08:38.040 +a browser accessible for molding, + +08:38.040 --> 08:41.240 +and then having some interaction with Smalltalk + +08:41.240 --> 08:42.840 +through Glamorous Toolkit, + +08:42.840 --> 08:44.080 +so that we can have the best tools, + +08:44.080 --> 08:46.800 +Emacs and Glamorous Toolkit and Nyxt + +08:46.800 --> 08:49.000 +and others, to work together + +08:49.000 --> 08:50.520 +to make our learning easy. + +08:50.520 --> 08:52.480 +Then... You've seen the tool; + +08:52.480 --> 08:53.840 +my molds that I have shown + +08:53.840 --> 08:56.200 +were basically by buffer. + +08:56.200 --> 08:58.600 +I want project statistics. + +08:58.600 --> 09:00.480 +What about... Give me the complexity + +09:00.480 --> 09:01.800 +of all the functions + +09:01.800 --> 09:03.480 +in a project, + +09:03.480 --> 09:06.120 +of all the paragraphs, whatever. + +09:06.120 --> 09:08.120 +And then there is a nice issue on + +09:08.120 --> 09:10.880 +my issue-tracker for moldable Emacs + +09:10.880 --> 09:13.920 +is about: "Emacs: tell me how can I + +09:13.920 --> 09:15.080 +compose the molds that I have + +09:15.080 --> 09:17.480 +to make new things?" + +09:17.480 --> 09:19.400 +It is a sort of a research-y thing + +09:19.400 --> 09:20.680 +that is pretty cool. + +09:20.680 --> 09:22.400 +So if you want to learn more, + +09:22.400 --> 09:25.520 +just check out at ag91.github.io, + +09:25.520 --> 09:28.000 +check out moldable Emacs on GitHub, + +09:28.000 --> 09:30.840 +and enjoy the rest of the conference. + +09:30.840 --> 09:34.200 +Bye. |