summaryrefslogtreecommitdiffstats
path: root/2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt')
-rw-r--r--2021/captions/emacsconf-2021-mold--moldable-emacs-a-step-towards-sustainable-software--andrea--main.vtt796
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.