WEBVTT 00:11.610 --> 00:13.974 Hello EmacsConf! Hello world! 00:13.974 --> 00:15.940 Today I will talk to you about 00:15.940 --> 00:19.040 how Emacs made me appreciate 00:19.040 --> 00:20.900 software freedom. 00:20.900 --> 00:24.180 My name is Protesilaos, also known as "Prot". 00:24.180 --> 00:28.430 I am joining you from the mountains of Cyprus. 00:28.430 --> 00:30.274 Cyprus is an island 00:30.274 --> 00:32.940 in the Eastern Mediterranean Sea. 00:32.940 --> 00:35.107 So let's remove this header 00:35.107 --> 00:37.174 from the top of the presentation 00:37.174 --> 00:40.307 and proceed with today's talk. 00:40.307 --> 00:41.907 In that header, you can find a link 00:41.907 --> 00:45.974 to my website, protesilaos.com . 00:45.974 --> 00:50.207 My presentation focuses on the intersection 00:50.207 --> 00:52.210 between software freedom 00:52.210 --> 00:55.890 and what we find in the Emacs milieu. 00:55.890 --> 00:57.640 Here "the Emacs milieu" 00:57.640 --> 01:00.507 encompasses two magnitudes: 01:00.507 --> 01:03.320 (i) the program we use and 01:03.320 --> 01:06.740 (ii) the diverse, global community of people 01:06.740 --> 01:10.530 that has grown organically around it. 01:10.530 --> 01:12.007 I will talk to you about 01:12.007 --> 01:13.707 how Emacs made me appreciate 01:13.707 --> 01:14.940 software freedom 01:14.940 --> 01:16.674 and helped me exercise it 01:16.674 --> 01:19.830 to its full potential. 01:19.830 --> 01:21.440 Personal anecdotes are not 01:21.440 --> 01:23.650 the main focus of this talk. 01:23.650 --> 01:26.740 Rather, they serve the ancillary role 01:26.740 --> 01:31.470 of making certain insights more relatable. 01:31.470 --> 01:34.574 The presentation is theoretical in nature 01:34.574 --> 01:38.430 and targeted at a general audience. 01:38.430 --> 01:42.020 No knowledge of programming is required. 01:42.020 --> 01:43.840 It is assumed, however, 01:43.840 --> 01:45.374 that you are familiar 01:45.374 --> 01:47.074 with some basic concepts, 01:47.074 --> 01:50.707 such as the fact that Emacs is extended 01:50.707 --> 01:53.507 with the Emacs Lisp programming language, 01:53.507 --> 01:56.807 or that Emacs is a GNU project 01:56.807 --> 02:02.450 that champions end-user software freedom. 02:02.450 --> 02:04.574 Let's start with a few words about me 02:04.574 --> 02:07.280 before elaborating further. 02:07.280 --> 02:11.540 I was born in Greece in 1988 02:11.540 --> 02:13.379 and was raised there. 02:13.379 --> 02:16.307 As a kid I was not into 02:16.307 --> 02:19.207 tech-related activities. Not at all. 02:20.480 --> 02:22.973 All I cared about was playing football 02:22.973 --> 02:26.440 (association football, also known as soccer) 02:26.440 --> 02:29.840 and staying outdoors. 02:29.840 --> 02:33.074 My formal education is in the humanities 02:33.074 --> 02:35.690 (or else, the liberal arts). 02:35.690 --> 02:38.040 I had a career in politics. 02:38.040 --> 02:41.107 I lived in Brussels, Belgium 02:41.107 --> 02:42.840 where I worked at the 02:42.840 --> 02:46.050 European Parliament, among others. 02:46.050 --> 02:49.774 + After some intense soul-searching, 02:49.774 --> 02:52.607 I realised I did not want to be 02:52.607 --> 02:55.040 a political operator any more 02:55.040 --> 02:59.950 and made radical changes in my life. 02:59.950 --> 03:02.207 I have since come to terms with the fact 03:02.207 --> 03:04.709 that I am a philosopher. 03:04.709 --> 03:07.640 I am not a programmer. 03:07.640 --> 03:10.709 Neither by trade nor education. 03:10.709 --> 03:13.140 I code for leisure. 03:13.140 --> 03:17.370 I was not tech-savvy until my mid-20s. 03:17.370 --> 03:20.740 I have been using GNU/Linux distributions 03:20.740 --> 03:24.180 since the summer of 2016. 03:24.180 --> 03:26.374 While I switched to Emacs full-time 03:26.374 --> 03:30.190 in the summer of 2019. 03:30.190 --> 03:31.840 Before that switch, I was running 03:31.840 --> 03:33.774 a bespoke environment 03:33.774 --> 03:36.907 that involved several standalone programs 03:36.907 --> 03:41.360 like Vim, Tmux, and a tiling window manager. 03:41.360 --> 03:44.874 I am the creator and maintainer 03:44.874 --> 03:47.340 of the modus-themes package. 03:47.340 --> 03:50.707 The themes are modus-operandi 03:50.707 --> 03:52.440 and modus-vivendi, 03:52.440 --> 03:53.874 but they are grouped together 03:53.874 --> 03:57.007 in the package called modus-themes. 03:57.760 --> 03:59.274 These are designed to conform 03:59.274 --> 04:01.840 with the highest accessibility standard 04:01.840 --> 04:05.007 for legibility, and optionally 04:05.007 --> 04:07.007 support the needs of users 04:07.007 --> 04:09.269 with red-green colour deficiency 04:09.269 --> 04:12.307 (deuteranopia, as it is known). 04:12.307 --> 04:14.940 The themes are built into 04:14.940 --> 04:17.579 Emacs version 28 or higher. 04:17.579 --> 04:19.574 A section of my website 04:19.574 --> 04:21.307 is dedicated to them 04:21.307 --> 04:23.840 as well as to all my other 04:23.840 --> 04:27.620 Emacs-related contributions. 04:27.620 --> 04:30.274 For the remainder of this 40-minute talk, 04:30.274 --> 04:31.907 I will explain how Emacs 04:31.907 --> 04:34.240 made me appreciate software freedom, 04:34.240 --> 04:36.374 how it empowers me 04:36.374 --> 04:38.924 in my day-to-day computing, 04:38.924 --> 04:40.374 and the lessons I have drawn 04:40.374 --> 00:04:44.206 from that liberating experience. 04:44.207 --> 04:47.174 So let's proceed to the body 04:47.174 --> 04:48.407 of this presentation, 04:48.407 --> 04:51.740 and the first section is titled: 04:51.740 --> 04:54.807 "The inherent Emacs qualities 04:54.807 --> 04:56.860 for an autodidact." 04:56.860 --> 05:00.440 Emacs has this reputation 05:00.440 --> 05:02.774 of being extremely hard to learn 05:02.774 --> 05:06.469 and difficult to get started with. 05:06.469 --> 05:08.140 So how does someone like me, 05:08.140 --> 05:10.607 who was not even tech-literate 05:10.607 --> 05:11.907 a few years ago, 05:11.907 --> 05:15.120 go on to use Emacs effectively? 05:15.120 --> 05:16.640 How do you start from zero, 05:16.640 --> 05:19.140 with no knowledge of ELisp 05:19.140 --> 05:22.174 and with only a rudimentary understanding 05:22.174 --> 05:23.474 of programming, 05:23.474 --> 05:25.974 to eventually maintain packages for Emacs, 05:25.974 --> 05:29.430 and even contribute directly to emacs.git 05:29.430 --> 05:32.710 and other sources? 05:32.710 --> 05:35.207 The answer to these and related questions 05:35.207 --> 05:37.974 lies in the very description of Emacs 05:37.974 --> 05:41.539 as a "self-documenting" piece of software. 05:41.539 --> 05:45.574 It means that Emacs has a robust Help system 05:45.574 --> 05:48.207 which informs you about the state 05:48.207 --> 05:50.930 of a given construct. 05:50.930 --> 05:53.574 Such as what the original and current values 05:53.574 --> 05:56.430 of a variable are. 05:56.430 --> 05:58.574 Or whether some function is being "advised", 05:58.574 --> 05:59.640 as it is known, 05:59.640 --> 06:02.440 else, dynamically adjusted, 06:02.440 --> 06:04.074 by another function, 06:04.074 --> 06:08.939 and what that advice amounts to. 06:08.939 --> 06:10.907 The self-documenting nature of Emacs 06:10.907 --> 06:12.407 is combined with the fact 06:12.407 --> 06:16.319 that it consists of free software. 06:16.319 --> 06:18.040 Not only do we get information 06:18.040 --> 06:19.540 about what Emacs knows, 06:19.540 --> 06:22.009 but have the underlying code 06:22.009 --> 06:24.099 readily available to us. 06:24.099 --> 06:26.840 For example, every Help buffer 06:26.840 --> 06:29.107 provides a link to the source 06:29.107 --> 06:31.490 of the item it references. 06:31.490 --> 06:37.960 We can study that and edit it as we wish. 06:37.960 --> 06:39.340 Self-documentation and free software 06:39.340 --> 06:41.307 are blended together 06:41.307 --> 06:45.007 with a third quality of Emacs: 06:45.007 --> 06:48.174 its implementation as a Lisp machine, 06:48.174 --> 06:52.440 or else, its ability to evaluate Lisp code 06:52.440 --> 06:56.129 and make use of it directly. 06:56.129 --> 06:58.774 The ubiquity and uniformity 06:58.774 --> 07:00.307 of the Lisp interpreter, 07:00.307 --> 07:04.007 together with the immediacy of its results 07:04.007 --> 07:06.580 help one learn how to use Emacs 07:06.580 --> 07:10.360 and how to write Emacs Lisp expressions. 07:10.360 --> 07:13.474 For someone who is self-taught like me 07:13.474 --> 07:15.307 and who often learns through 07:15.307 --> 07:17.507 a process of trial and error, 07:17.507 --> 07:20.589 this is of great value. 07:20.589 --> 07:23.074 Learning how to use Emacs 07:23.074 --> 07:25.007 and how to write in ELisp 07:25.007 --> 07:27.707 is the basic skillset you need 07:27.707 --> 07:30.474 to also start extending Emacs 07:30.474 --> 07:32.140 for your own use, 07:32.140 --> 07:34.807 or even for publishing packages 07:34.807 --> 07:36.607 and making contributions 07:36.607 --> 07:40.490 to emacs.git directly. 07:40.490 --> 07:42.840 That is because the skills you acquire 07:42.840 --> 07:46.974 by tinkering with your init.el as a beginner 07:46.974 --> 07:49.207 will always stay with you 07:49.207 --> 07:53.550 throughout your time as an Emacs user. 07:53.550 --> 07:56.210 That is empowering in itself. 07:56.210 --> 07:58.593 It rewards your investment 07:58.593 --> 08:00.270 in time and effort. 08:00.270 --> 08:01.374 The more you learn, 08:01.374 --> 08:03.340 the more capable you become 08:03.340 --> 08:06.007 to enact change, 08:06.007 --> 08:08.074 to configure things to your liking 08:08.074 --> 08:11.974 and develop the exact workflow that you want 08:11.974 --> 08:16.569 without making any compromises. 08:16.569 --> 08:18.507 Compare that to, say, 08:18.507 --> 08:21.449 my tiling window manager. 08:21.449 --> 08:24.479 I can configure it with a shell script. 08:24.479 --> 08:29.689 So I learn POSIX shell or, let's say, Bash. 08:29.689 --> 08:31.804 But my knowledge of the shell 08:31.804 --> 08:34.072 does not extend to modifying 08:34.072 --> 08:37.593 the behaviour of the window manager as such, 08:37.593 --> 08:40.471 because that is not implemented 08:40.471 --> 08:42.140 as a shell script, 08:42.140 --> 08:44.250 but in another language. 08:44.250 --> 08:46.942 So for an autodidact like me, 08:46.942 --> 08:49.634 it is more difficult to learn 08:49.634 --> 08:51.430 yet another paradigm 08:51.430 --> 08:54.860 before I can achieve what I want. 08:54.860 --> 08:57.342 How do you make that extra step 08:57.342 --> 08:59.437 without self-documentation 08:59.437 --> 09:02.605 and the immediacy as well as transparency 09:02.605 --> 09:04.307 that you get from 09:04.307 --> 09:06.850 the Emacs Lisp interpreter? 09:06.850 --> 09:10.029 It is more demanding, 09:10.029 --> 09:12.843 which makes Emacs comparatively easier 09:12.843 --> 09:14.274 when we account for 09:14.274 --> 00:09:17.106 the longer-term effort involved. 09:17.107 --> 09:21.410 Let's move to the next section: 09:21.410 --> 09:24.640 "The interconnectedness of the Emacs space." 09:24.640 --> 09:27.607 As I already mentioned, 09:27.607 --> 09:28.874 Emacs rewards you 09:28.874 --> 09:31.374 for the investment in time and effort 09:31.374 --> 09:33.649 you put into it. 09:33.649 --> 09:34.891 In my experience, 09:34.891 --> 09:36.707 this makes it easier to master 09:36.707 --> 09:38.007 than a combination 09:38.007 --> 09:40.434 of otherwise disparate tools, 09:40.434 --> 09:42.649 each with its own paradigm 09:42.649 --> 09:45.440 of interaction and particularities 09:45.440 --> 09:48.350 of implementation. 09:48.350 --> 09:50.035 Before switching to Emacs, 09:50.035 --> 09:51.507 I was using a combination 09:51.507 --> 09:53.640 of standalone programs 09:53.640 --> 09:56.274 as part of a bespoke computing environment 09:56.274 --> 09:58.860 that I had pieced together. 09:58.860 --> 10:00.507 The program called "Mutt" 10:00.507 --> 10:02.140 would handle my emails, 10:02.140 --> 10:06.440 Newsboat dealt with my RSS feeds, 10:06.440 --> 10:08.407 the Music Player Daemon 10:08.407 --> 10:10.907 took care of my music collection, 10:10.907 --> 10:12.207 while I was doing work 10:12.207 --> 10:14.507 inside of a terminal emulator 10:14.507 --> 10:17.707 which was running a multiplexer (tmux) 10:17.707 --> 10:22.959 and Vim for on-the-fly text editing. 10:22.959 --> 10:25.707 Each of these, and others related to them, 10:25.707 --> 10:29.290 are fine in their own right. 10:29.290 --> 10:32.507 But their gestalt, their combined form, 10:32.507 --> 10:35.680 leaves something to be desired. 10:35.680 --> 10:38.174 Their lack of homogeneity 10:38.174 --> 10:40.800 meant that I could not develop 10:40.800 --> 10:43.240 portable skills between them. 10:43.240 --> 10:45.740 There is no inter-operability. 10:46.329 --> 10:48.140 What holds true in Vim 10:48.140 --> 10:50.210 does not apply to the multiplexer. 10:50.210 --> 10:53.240 The prevalent methods in the email client 10:53.240 --> 10:59.140 cannot be used in the RSS reader, and so on. 10:59.140 --> 10:59.940 Whereas everything 10:59.940 --> 11:02.207 that is implemented in ELisp 11:02.207 --> 11:04.440 partakes in the same environment 11:04.440 --> 11:05.540 automatically. 11:05.540 --> 11:08.574 If, say, you know how to 11:08.574 --> 11:10.174 use keyboard macros to edit code, 11:10.174 --> 11:12.274 you already know how to 11:12.274 --> 11:13.507 use the exact same skill to, 11:13.507 --> 11:19.221 for example, create and delete windows 11:19.221 --> 11:23.219 in a process that involves text editing 11:23.219 --> 11:25.107 and some elaborate 11:25.107 --> 11:27.340 file management operations 11:27.340 --> 11:30.607 with Emacs's directory editor program, 11:30.607 --> 11:33.107 or file manager, Dired. 11:33.107 --> 11:35.307 If you have a command 11:35.307 --> 11:38.374 that scrolls down half a screen, 11:38.374 --> 11:40.174 it immediately works in all your buffers, 11:40.174 --> 11:44.140 regardless of whether their major mode 11:44.140 --> 11:46.674 is about reading emails, editing text, 11:46.674 --> 11:51.269 enqueuing songs to a playlist, and so on. 11:51.269 --> 11:55.582 Emacs provides a level of integration 11:55.582 --> 11:58.420 that I consider peerless. 11:58.420 --> 12:00.471 Everything the user deals with 12:00.471 --> 12:02.060 is implemented in ELisp. 12:02.060 --> 12:04.402 And all the user edits 12:04.402 --> 12:07.459 is ultimately done with ELisp. 12:07.459 --> 12:10.463 As such, the environment itself 12:10.463 --> 12:13.749 provides the conditions for drawing 12:13.749 --> 12:15.774 linkages between different, 12:15.774 --> 12:18.540 yet [consubstantial], 12:18.540 --> 12:21.339 modes of interaction. 12:21.339 --> 12:25.040 For example, I use bongo.el 12:25.040 --> 12:26.406 to play back songs 12:26.406 --> 12:29.110 from my music collection. 12:29.110 --> 12:30.340 My ~/Music directory 12:30.340 --> 12:33.440 is configured to have a special minor mode, 12:33.440 --> 12:36.440 so when I access it with dired, 12:36.440 --> 12:38.407 it has commands that allow me 12:38.407 --> 12:41.140 to enqueue albums/songs 12:41.140 --> 12:42.074 to a playlist, 12:42.074 --> 12:44.999 create playlists, et cetera. 12:44.999 --> 12:48.307 Also, I have an org-capture template 12:48.307 --> 12:51.174 which lets me store the details 12:51.174 --> 12:53.274 of the currently playing track 12:53.274 --> 12:57.189 and tag it accordingly. 12:57.189 --> 12:59.603 Continuing with the example of Bongo, 12:59.603 --> 13:00.810 I make it interface 13:00.810 --> 13:04.210 with my RSS reader, elfeed.el, 13:04.210 --> 13:06.953 by having the latter add 13:06.953 --> 13:09.469 podcast and video links 13:09.469 --> 13:12.720 to the former's playback queue. 13:12.720 --> 13:14.131 All this is done 13:14.131 --> 13:15.709 by simply re-using 13:15.709 --> 13:18.283 the same Emacs Lisp skills I learnt 13:18.283 --> 13:23.120 while configuring and extending Emacs. 13:23.120 --> 13:26.989 The interconnectedness of the Emacs space 13:26.989 --> 13:29.160 empowers the end-user. 13:29.160 --> 13:33.149 It makes such emergent workflows possible. 13:33.149 --> 13:35.359 And the best part is 13:35.359 --> 13:38.334 there are no dirty hacks involved: 13:38.334 --> 13:41.690 it is an innate feature of the system. 13:41.690 --> 13:43.840 You are leveraging the freedom 13:43.840 --> 13:45.107 that Emacs gives you 13:45.107 --> 13:49.240 in a way that confers agency on you. 13:49.240 --> 13:50.970 You assume the initiative. 13:50.970 --> 13:53.707 It gives you confidence 13:53.707 --> 13:55.340 to continue honing your skills 13:55.340 --> 13:58.807 in anticipation of further optimising--- 13:58.807 --> 13:59.807 and controlling in full--- 13:59.807 --> 00:14:07.873 your own integrated computing environment. 14:07.874 --> 14:09.600 Next section: 14:09.600 --> 14:12.629 the documentation culture 14:12.629 --> 14:15.309 of the Emacs community. 14:15.309 --> 14:17.107 If what I have mentioned thus far 14:17.107 --> 14:19.140 was all there was 14:19.140 --> 14:20.007 to the Emacs experience, 14:20.007 --> 14:21.440 there would still be 14:21.440 --> 14:24.209 something to be desired. 14:24.209 --> 14:26.721 Because while self-documentation is great, 14:26.721 --> 14:28.808 it is meant to draw from--- 14:28.808 --> 14:30.741 and be a complement to--- 14:30.741 --> 14:32.829 some hand-written material. 14:32.829 --> 14:35.807 Both new and existing users 14:35.807 --> 14:37.380 must be able to read 14:37.380 --> 14:41.740 what something is supposed to do, 14:41.740 --> 14:42.774 what its main points of entry are, 14:42.774 --> 14:47.279 how it relates to other parts, and so on. 14:47.279 --> 14:50.181 This is about the human aspect of Emacs, 14:50.181 --> 14:52.280 the strong documentation culture 14:52.280 --> 14:53.425 of its community, 14:53.425 --> 14:55.589 rather than an irreducible feature 14:55.589 --> 14:58.839 of the program we use. 14:58.839 --> 15:02.393 As a matter of packaging etiquette, 15:02.393 --> 15:06.552 every non-trivial form in an Elisp library 15:06.552 --> 15:09.920 must have a documentation string. 15:09.920 --> 15:12.785 What a variable or function does 15:12.785 --> 15:16.189 needs to be spelt out in clear terms. 15:16.189 --> 15:17.788 Furthermore, the best 15:17.788 --> 15:20.333 and most well-maintained packages, 15:20.333 --> 15:22.507 whether those are built into Emacs 15:22.507 --> 15:24.440 or distributed via 15:24.440 --> 15:27.540 an Emacs Lisp Package Archive, 15:27.540 --> 15:28.674 also known as ELPA, 15:28.674 --> 15:33.350 come with their own Info manual. 15:33.350 --> 15:34.944 Unlike a generic README, 15:34.944 --> 15:37.112 those manuals are more like 15:37.112 --> 15:38.738 fully fledged books, 15:38.738 --> 15:42.146 with a table of contents, cross-references, 15:42.146 --> 15:45.107 and indices for concepts, functions, 15:45.107 --> 15:47.189 variables, key bindings... 15:47.189 --> 15:49.555 In short, there is a tradition 15:49.555 --> 15:52.262 around programming with Emacs Lisp 15:52.262 --> 15:55.387 which values informative, 15:55.387 --> 15:58.451 high-quality guidelines 15:58.451 --> 16:01.389 intended for end-users. 16:01.389 --> 16:02.274 Apart from what 16:02.274 --> 16:04.684 each individual package does, 16:04.684 --> 16:06.712 Emacs itself ships with 16:06.712 --> 16:10.174 a helpful tutorial for newcomers, 16:10.174 --> 16:11.374 a comprehensive manual, 16:11.374 --> 16:14.940 a book targeted at non-programmers 16:14.940 --> 16:17.474 titled "An Introduction to 16:17.474 --> 16:20.107 Programming in Emacs Lisp", 16:20.107 --> 16:21.307 as well as a reference manual 16:21.307 --> 16:24.290 for Emacs Lisp itself. 16:24.290 --> 16:25.999 All this material, 16:25.999 --> 16:28.699 all that wealth of knowledge, 16:28.699 --> 16:31.605 is readily available to the end-user 16:31.605 --> 16:34.350 through the built-in Info reader. 16:34.350 --> 16:37.936 The details on how to access the Info reader 16:37.936 --> 16:40.512 are already explained 16:40.512 --> 16:45.080 in the initial learn-by-doing tutorial. 16:45.080 --> 16:47.440 For people like me who are self-taught, 16:47.440 --> 16:51.408 the documentation culture of the community 16:51.408 --> 16:55.600 ensures that we are not left behind. 16:55.600 --> 16:56.840 It gives us the chance 16:56.840 --> 16:59.011 to learn from the experts 16:59.011 --> 17:03.639 and to become better ourselves. 17:03.639 --> 17:06.340 Writing concise and clear documentation 17:06.340 --> 17:09.474 is also beneficial for those who do it: 17:09.474 --> 17:10.707 it helps them clarify their ideas 17:10.707 --> 17:17.250 and improve their communication skills. 17:17.250 --> 17:19.868 These contribute to fostering 17:19.868 --> 17:22.399 a more humane social element. 17:22.399 --> 17:25.774 In my experience, the Emacs community 17:25.774 --> 17:30.646 has a propensity against 17:30.646 --> 17:32.149 becoming elitist. 17:32.149 --> 17:34.907 It helps integrate new members 17:34.907 --> 17:37.732 by not hiding anything from them, 17:37.732 --> 17:39.040 on top of Emacs' inherent 17:39.040 --> 17:43.470 emancipatory qualities, as described before 17:43.470 --> 17:46.374 (self-documentation, Elisp interpreter, 17:46.374 --> 17:47.960 free software). 17:47.960 --> 17:49.807 At the same time, 17:49.807 --> 17:52.899 the community strives for excellence, 17:52.899 --> 17:54.840 so it expects newcomers 17:54.840 --> 17:56.940 to do their part in reading 17:56.940 --> 18:00.680 what is generously offered to them. 18:00.680 --> 18:01.940 There is a difference between 18:01.940 --> 18:03.240 sharing knowledge 18:03.240 --> 18:06.740 and spoon-feeding it to users. 18:06.740 --> 18:09.140 The latter method, that of spoon-feeding, 18:09.140 --> 18:11.499 keeps users dependent on it 18:11.499 --> 18:14.574 and is thus detrimental to them 18:14.574 --> 18:15.940 in the long run. 18:15.940 --> 18:18.374 The Emacs community 18:18.374 --> 18:20.507 disseminates what it knows 18:20.507 --> 18:23.974 and wants newcomers to assume agency 18:23.974 --> 18:26.907 and be responsible for doing their part 18:26.907 --> 18:30.740 in learning how things work. 18:30.740 --> 18:33.307 The community's documentation culture 18:33.307 --> 18:36.074 and uncompromising standards 18:36.074 --> 18:37.674 ensure that even 18:37.674 --> 18:41.174 once-unskilled users like me 18:41.174 --> 18:43.707 can become productive with Emacs 18:43.707 --> 18:46.574 and unleash its full potential. 18:46.574 --> 18:50.488 What newcomers need is commitment 18:50.488 --> 00:18:55.039 and an open mind to study what they have. 18:55.040 --> 18:58.269 Next section: 18:58.269 --> 18:59.707 "The Promethean Ideal 18:59.707 --> 19:05.230 of freeing know-how and expertise." 19:05.230 --> 19:06.807 The documentation culture 19:06.807 --> 19:08.074 of the Emacs community 19:08.074 --> 19:10.307 springs from a consideration 19:10.307 --> 19:12.840 of practicality. 19:12.840 --> 19:15.351 When you explain what your program does, 19:15.351 --> 19:16.505 it is more likely 19:16.505 --> 19:19.477 that others will show interest in it 19:19.477 --> 19:22.450 and incorporate it in their workflow, 19:22.450 --> 19:24.674 whereas freed source code 19:24.674 --> 19:26.085 that is distributed 19:26.085 --> 19:29.309 without any accompanying documentation 19:29.309 --> 19:32.300 will most likely only attract 19:32.300 --> 19:35.690 a handful of enthusiastic hackers. 19:35.690 --> 19:39.460 Still good, but could be better. 19:39.460 --> 19:41.640 Apart from its practical use though, 19:41.640 --> 19:44.407 writing documentation for the end-user 19:44.407 --> 19:47.140 shows a spirit of altruism, 19:47.140 --> 19:50.274 an ethos of caring for others 19:50.274 --> 19:52.540 and wanting to empower them 19:52.540 --> 19:55.130 in their endeavours. 19:55.130 --> 19:57.774 It essentially is the same 19:57.774 --> 19:58.674 as helping someone; 19:58.674 --> 20:02.607 helping them escape from the ignorance 20:02.607 --> 20:03.907 that contributes 20:03.907 --> 20:07.810 to their sense of powerlessness. 20:07.810 --> 20:09.974 I experienced this myself: 20:09.974 --> 20:12.007 by reading the docs, 20:12.007 --> 20:13.450 I was able to go from 20:13.450 --> 20:15.274 an unskilled rookie 20:15.274 --> 20:17.909 to a competent Emacs user. 20:17.909 --> 20:20.839 Part of that competence consists in 20:20.839 --> 20:23.037 maintaining Elisp packages 20:23.037 --> 20:25.480 and contributing code directly 20:25.480 --> 20:28.760 to emacs.git. 20:28.760 --> 20:29.740 Writing documentation 20:29.740 --> 20:31.207 is about disseminating 20:31.207 --> 20:34.015 knowledge and expertise, 20:34.015 --> 20:36.707 not keeping it an exclusive right 20:36.707 --> 20:39.919 of some elite. 20:39.919 --> 20:42.928 Allow me then to liken this 20:42.928 --> 20:47.120 to the ancient Greek myth of Prometheas 20:47.120 --> 20:48.559 (Prometheus). 20:48.559 --> 20:52.972 Prometheas was a titan, or else a deity, 20:52.972 --> 20:54.988 who decided to teach 20:54.988 --> 20:57.772 the know-how of handling fire 20:57.772 --> 20:59.020 to humanity. 20:59.020 --> 21:00.447 The art of fire 21:00.447 --> 21:04.192 is an allegory about know-how in general, 21:04.192 --> 21:06.840 not specifically pyrotechnics. 21:06.840 --> 21:11.571 So Prometheas liberated that key knowledge 21:11.571 --> 21:13.215 by taking it away 21:13.215 --> 21:16.231 from the exclusivity of the gods 21:16.231 --> 21:17.693 and bringing it 21:17.693 --> 21:21.512 into the domain of humankind 21:21.512 --> 21:24.390 as a libre resource. 21:24.390 --> 21:26.507 This act of altruism 21:26.507 --> 21:30.029 propelled humanity to new heights. 21:30.029 --> 21:32.590 Every field of expertise 21:32.590 --> 21:35.255 is about handling "fire", 21:35.255 --> 21:38.681 in the figurative sense 21:38.681 --> 21:43.679 of implementing essential know-how. 21:43.679 --> 21:47.123 Why would Prometheas, an exalted being, 21:47.123 --> 21:48.586 ever bother with 21:48.586 --> 21:52.250 the fallible and frail humanity? 21:52.250 --> 21:56.007 Why did a god want to empower humans 21:56.007 --> 22:00.077 instead of, say, making them dependent 22:00.077 --> 22:02.970 on the know-how of "fire"? 22:02.970 --> 22:05.747 If we look at the world around us, 22:05.747 --> 22:07.970 we witness how its overlords 22:07.970 --> 22:10.186 are unscrupulously trying 22:10.186 --> 22:12.274 to enclose the commons 22:12.274 --> 22:16.076 and take advantage of expertise 22:16.076 --> 22:18.809 in order to exploit us. 22:18.809 --> 22:22.700 Why would Prometheas not do the same thing 22:22.700 --> 22:27.570 and enslave us for the rest of eternity? 22:27.570 --> 22:29.343 The answer is that 22:29.343 --> 22:32.891 unlike this world's aspiring tyrants, 22:32.891 --> 22:36.842 Prometheas represents a higher conscience, 22:36.842 --> 22:40.640 one that is not corrupted by egocentrism 22:40.640 --> 22:45.510 and the greed of short-term profiteering. 22:45.510 --> 22:47.490 This higher conscience 22:47.490 --> 22:50.332 makes sense of the bigger picture 22:50.332 --> 22:51.710 and can foresee 22:51.710 --> 22:54.260 that the distribution of know-how 22:54.260 --> 22:56.960 empowers those who access it freely 22:56.960 --> 23:00.530 to reach their potential. 23:00.530 --> 23:04.650 It is no coincidence that the ancient sages 23:04.650 --> 23:09.320 used the name "Prometheas", 23:09.320 --> 23:16.659 meaning the "prescient one", the "foreseer". 23:16.659 --> 23:19.765 This is a lesson on the outlook 23:19.765 --> 23:21.791 we ought to maintain, 23:21.791 --> 23:25.330 where we aspire to our highest. 23:25.330 --> 23:28.501 We want to be the best version of ourselves, 23:28.501 --> 23:31.710 by being more like Prometheas. 23:31.710 --> 23:33.940 We want our actions to be guided 23:33.940 --> 23:36.674 by this Promethean Ideal 23:36.674 --> 23:39.097 of liberating know-how, 23:39.097 --> 23:42.307 of making expertise readily available, 23:42.307 --> 23:44.507 and of providing others 23:44.507 --> 23:48.350 with the chance to prosper. 23:48.350 --> 23:49.927 When we all do so, 23:49.927 --> 23:52.500 we are collectively better-off. 23:52.500 --> 23:56.340 Free software is a microcosm 23:56.340 --> 00:23:59.528 of that principle. 23:59.529 --> 24:02.940 So let's move on to the next section: 24:02.940 --> 24:08.020 "The 'killer apps' of Emacs." 24:08.020 --> 24:10.860 Let's be a bit more practical now. 24:10.860 --> 24:13.789 Many new users are attracted to Emacs 24:13.789 --> 24:16.066 because it has one or a few 24:16.066 --> 24:18.858 immensely useful applications 24:18.858 --> 24:21.000 they would like to use. 24:21.000 --> 24:23.019 This typically covers Org 24:23.019 --> 24:27.090 and/or one of its numerous accoutrements, 24:27.090 --> 24:33.023 though there are other excellent packages 24:33.023 --> 24:34.760 like Magit. 24:34.760 --> 24:36.107 The fact that Emacs has 24:36.107 --> 24:38.870 such killer apps is good. 24:38.870 --> 24:41.535 It shows that its extensibility 24:41.535 --> 24:44.200 is not some theoretical upside 24:44.200 --> 24:46.340 of the Lisp interpreter. 24:46.340 --> 24:49.816 It has tangible utility to a wide user base, 24:49.816 --> 24:51.940 including those who do not 24:51.940 --> 24:54.850 write Elisp themselves. 24:54.850 --> 24:57.927 Furthermore, those killer apps are good 24:57.927 --> 25:00.418 as they help bring newcomers 25:00.418 --> 25:04.370 and potential contributors to the fold, 25:04.370 --> 25:06.968 while they provide real value 25:06.968 --> 25:10.519 to the existing members of the community. 25:10.519 --> 25:12.339 The more people we have 25:12.339 --> 25:15.330 and the happier they are with Emacs, 25:15.330 --> 25:18.726 the higher the chances that we receive 25:18.726 --> 25:21.600 some new ideas or code from them. 25:21.600 --> 25:26.305 The notion of a killer app does, however, 25:26.305 --> 25:29.519 come with a latent downside 25:29.519 --> 25:32.040 when targeted at outsiders 25:32.040 --> 25:34.470 to the Emacs milieu. 25:34.470 --> 25:36.307 And that is because 25:36.307 --> 25:39.362 packages like Org and Magit 25:39.362 --> 25:42.000 do not have a standalone presence. 25:42.000 --> 25:46.770 They are always used in Emacs or, rather, 25:46.770 --> 25:50.840 together with the rest of Emacs, 25:50.840 --> 25:54.470 which means that the user has to know 25:54.470 --> 25:57.120 what to expect from Emacs. 25:57.120 --> 25:59.986 You may be aware of the type of user 25:59.986 --> 26:02.680 who proclaims that they want to 26:02.680 --> 26:04.785 boost their productivity 26:04.785 --> 26:08.070 but who also expects immediate results. 26:08.070 --> 26:11.152 When you bring the "killer app" rhetoric 26:11.152 --> 26:12.581 to such a crowd, 26:12.581 --> 26:15.608 you run the risk of misleading them 26:15.608 --> 26:18.720 into a false sense of self-confidence 26:18.720 --> 26:24.330 and concomitant expectations of success. 26:24.330 --> 26:26.655 Such users may be tempted 26:26.655 --> 26:29.249 to try Org, Magit, and others 26:29.249 --> 26:32.470 but are most likely going to endure 26:32.470 --> 26:36.179 a frustrating experience overall. 26:36.179 --> 26:39.834 The reason is that they are oblivious 26:39.834 --> 26:41.598 to what Emacs is 26:41.598 --> 26:44.874 and what is required 26:44.874 --> 26:46.540 to get started with it 26:46.540 --> 26:47.820 on a sustainable basis. 26:47.820 --> 26:50.874 Org, Magit, and friends 26:50.874 --> 26:54.899 are fantastic tools in their own right. 26:54.899 --> 26:57.399 But they still are part of Emacs. 26:57.399 --> 26:59.406 To use them effectively, 26:59.406 --> 27:01.109 you have to develop 27:01.109 --> 27:04.090 at least a modicum of understanding 27:04.090 --> 27:06.340 on what Emacs does. 27:06.340 --> 27:07.692 You must be patient 27:07.692 --> 27:09.519 and approach this endeavour 27:09.519 --> 27:12.500 with an open mind. 27:12.500 --> 27:14.372 Go through the tutorial, 27:14.372 --> 27:18.939 familiarise yourself with the Help system, 27:18.939 --> 27:23.401 make a habit out of reading Info manuals, 27:23.401 --> 27:26.820 and take things slowly. 27:26.820 --> 27:30.358 No killer app can ever be a substitute 27:30.358 --> 27:33.132 for commitment to a cause; 27:33.132 --> 27:35.621 no vaunted life hack 27:35.621 --> 27:39.771 will ever provide a direct conduit 27:39.771 --> 27:44.419 to some fountain of wisdom. 27:44.419 --> 27:46.597 With regard to software freedom 27:46.597 --> 27:48.094 and user empowerment, 27:48.094 --> 27:50.024 what I have learnt is that 27:50.024 --> 27:52.240 the impulse for the killer app 27:52.240 --> 27:53.974 ought to emanate 27:53.974 --> 27:56.707 from a position of knowledge. 27:56.707 --> 27:58.974 You need to know what you are searching for, 27:58.974 --> 28:00.107 and you need to know 28:00.107 --> 28:01.840 where you will implement that. 28:01.840 --> 28:06.571 First, we need to temper our expectations 28:06.571 --> 28:10.340 and prefer propitious growth in learning 28:10.340 --> 28:14.159 over instant gratification. 28:14.159 --> 28:17.323 With Emacs, we have a strong foundation 28:17.323 --> 28:19.245 for our computing freedom: 28:19.245 --> 28:21.951 it consists of the inherent qualities 28:21.951 --> 28:23.367 of the program 28:23.367 --> 28:27.051 together with the documentation culture 28:27.051 --> 28:30.169 and creativity of the community. 28:30.169 --> 28:32.670 Once we learn how to benefit from those, 28:32.670 --> 28:34.174 we have everything we need 28:34.174 --> 28:35.893 to become proficient 28:35.893 --> 28:38.592 in all the modes of interaction 28:38.592 --> 28:42.330 that are available to us. 28:42.330 --> 28:46.889 Think of it as choosing Emacs and Org, 28:46.889 --> 28:48.876 Emacs and Magit, 28:48.876 --> 00:28:53.139 Emacs and Org and Magit, et cetera. 28:53.140 --> 28:56.889 Next section: 28:56.889 --> 29:01.899 "You can't be an Emacs tourist." 29:01.899 --> 29:04.521 What I just talked about implies that 29:04.521 --> 29:06.799 you cannot simply switch to Emacs 29:06.799 --> 29:09.960 over the weekend or on a whimsy. 29:09.960 --> 29:12.915 You can't use it opportunistically 29:12.915 --> 29:14.603 to run a quick demo 29:14.603 --> 29:18.901 with which to impress your peers 29:18.901 --> 29:22.940 and win some inane "nerd cred". 29:22.940 --> 29:24.907 Forget about such frivolous 29:24.907 --> 29:26.170 superficialities. 29:26.170 --> 29:29.000 Emacs is a sophisticated tool 29:29.000 --> 29:32.600 intended for some serious work. 29:32.600 --> 29:35.436 It has been around for several decades 29:35.436 --> 29:38.116 and it incorporates the knowledge 29:38.116 --> 29:41.639 of a diverse group of contributors. 29:41.639 --> 29:43.616 Even if you want to use Emacs 29:43.616 --> 29:46.766 just for Org mode or whatever killer app, 29:46.766 --> 29:48.605 you still have to try 29:48.605 --> 29:51.059 to learn things in earnest. 29:51.059 --> 29:52.140 You still need to read 29:52.140 --> 29:54.196 the relevant Info manual, 29:54.196 --> 29:56.663 understand how to make changes 29:56.663 --> 30:00.006 to the plethora of user options on offer, 30:00.006 --> 30:03.117 and generally don't feel lost 30:03.117 --> 30:05.710 while working with Emacs. 30:05.710 --> 30:08.264 This is more so if you use Emacs 30:08.264 --> 30:09.967 to its full potential 30:09.967 --> 30:13.297 as an integrated computing environment; 30:13.297 --> 30:16.127 as your general purpose interface 30:16.127 --> 30:17.460 to the computer, 30:17.460 --> 30:19.633 where you handle uniformly 30:19.633 --> 30:21.726 coding and writing prose, 30:21.726 --> 30:23.820 your email correspondence, 30:23.820 --> 30:25.022 your RSS feeds, 30:25.022 --> 30:26.908 your music collection, 30:26.908 --> 30:30.626 your agenda and to-do lists, 30:30.626 --> 30:31.909 and so on. 30:31.909 --> 30:33.872 The difficulty of Emacs 30:33.872 --> 30:37.144 is much higher for those who approach it 30:37.144 --> 30:38.667 without understanding 30:38.667 --> 30:41.299 what they are getting themselves into, 30:41.299 --> 30:43.711 or for those who are naive enough 30:43.711 --> 30:47.294 to believe that they can cheat their way 30:47.294 --> 30:50.340 out of learning the fundamentals. 30:50.340 --> 30:51.574 The gist is that 30:51.574 --> 30:54.940 you cannot be an Emacs tourist. 30:54.940 --> 30:57.165 You can't go into Emacsland 30:57.165 --> 30:59.469 thinking that you will spend 30:59.469 --> 31:02.475 a couple of memorable days there 31:02.475 --> 31:04.206 and head back home 31:04.206 --> 31:05.755 to regale others 31:05.755 --> 31:08.580 with stories about your adventures. 31:08.580 --> 31:11.850 It does not work that way. 31:11.850 --> 31:15.250 You commit to Emacs for the long-term, 31:15.250 --> 31:17.990 for the freedom it offers you. 31:17.990 --> 31:20.142 Freedom in the moral sense 31:20.142 --> 31:23.123 but also in the very practical ways 31:23.123 --> 31:25.851 in which you can mould and extend 31:25.851 --> 31:27.907 your personal workflows 31:27.907 --> 31:31.160 with precision. 31:31.160 --> 31:32.773 Now you may wonder 31:32.773 --> 31:35.320 why do I mention those things? 31:35.320 --> 31:39.169 Shouldn't we make Emacs easier for everyone? 31:39.169 --> 31:42.333 Yes, we should make everything 31:42.333 --> 31:44.760 as simple as possible. 31:44.760 --> 31:48.031 Though that still does not refashion Emacs 31:48.031 --> 31:51.460 into something entirely different. 31:51.460 --> 31:52.740 We continue to have 31:52.740 --> 31:55.829 a potent tool at our disposal 31:55.829 --> 31:57.040 that we must treat 31:57.040 --> 32:00.020 with the requisite respect. 32:00.020 --> 32:03.954 Take, for instance, the various frameworks 32:03.954 --> 32:07.571 that set up Emacs in an opinionated way 32:07.571 --> 32:10.465 so that newcomers get everything 32:10.465 --> 32:13.360 set up for them out-of-the-box. 32:13.360 --> 32:14.507 There is nothing wrong 32:14.507 --> 32:16.220 with those frameworks. 32:16.220 --> 32:19.417 In fact, a large part of the community 32:19.417 --> 32:21.690 uses them to great effect. 32:21.690 --> 32:24.105 However, the point stands: 32:24.105 --> 32:26.342 even after every package 32:26.342 --> 32:28.490 has been set up for you, 32:28.490 --> 32:30.174 you still have to put in the work 32:30.174 --> 32:31.507 in making use 32:31.507 --> 32:35.360 of your newfound computing freedom. 32:35.360 --> 32:37.648 But, you may insist, 32:37.648 --> 32:41.789 is that not some sort of gate-keeping? 32:41.789 --> 32:43.750 Are you not being an elitist 32:43.750 --> 32:45.972 by telling people how they must 32:45.972 --> 32:48.009 invest time and effort 32:48.009 --> 32:49.804 in making the best 32:49.804 --> 32:52.639 out of their Emacs experience? 32:52.639 --> 32:56.830 No, I think this is not elitism. 32:56.830 --> 32:59.358 There are no secrets here, 32:59.358 --> 33:02.530 no artificial barriers to entry, 33:02.530 --> 33:06.562 no impediments to making progress, 33:06.562 --> 33:09.409 no tricks and gimmicks. 33:09.409 --> 33:13.460 It just is a statement of fact. 33:13.460 --> 33:16.309 Freedom entails responsibility. 33:16.309 --> 33:20.481 It requires people to take the initiative 33:20.481 --> 33:23.728 and assert control over the factors 33:23.728 --> 33:26.420 that are within their reach. 33:26.420 --> 33:29.267 Freedom ultimately means 33:29.267 --> 33:33.254 that we no longer remain dependent 33:33.254 --> 33:35.419 on being spoon-fed. 33:35.419 --> 00:33:39.173 We assume agency. 33:39.174 --> 33:41.540 And with this, I want to come to 33:41.540 --> 33:44.940 the final section of this presentation. 33:44.940 --> 33:46.407 The title is: 33:46.407 --> 33:52.250 "Emacs as a champion of software freedom." 33:52.250 --> 33:56.272 To my mind, Emacs is the embodiment 33:56.272 --> 33:59.289 of the GNU project's ethos. 33:59.289 --> 34:01.245 Everything you expect from a program 34:01.245 --> 34:02.990 that is underpinned by the values 34:02.990 --> 34:05.342 of software freedom 34:05.342 --> 34:07.460 is found in Emacs. 34:07.460 --> 34:10.962 What you get is not merely an ethical tool, 34:10.962 --> 34:13.032 important though that is, 34:13.032 --> 34:17.405 but also a gift that will keep on giving; 34:17.405 --> 34:20.840 a gift for you to further empower yourself 34:20.840 --> 34:24.020 as a computer user. 34:24.020 --> 34:27.457 I understood that freedom of software 34:27.457 --> 34:31.600 is not about liberating the code itself. 34:31.600 --> 34:34.950 It is about sharing libre code 34:34.950 --> 34:38.410 in order to emancipate the user. 34:38.410 --> 34:40.899 The best way to achieve that 34:40.899 --> 34:43.302 is by emulating Prometheas: 34:43.302 --> 34:47.187 don't just give people the so-called "fire"; 34:47.187 --> 34:50.907 offer them the underlying know-how. 34:50.907 --> 34:52.940 Emacs taught me 34:52.940 --> 34:54.378 the virtues of software freedom 34:54.378 --> 34:57.362 in a way that nothing else 34:57.362 --> 35:01.150 in the GNU/Linux space ever did. 35:01.150 --> 35:04.210 Here's an example from a few years ago. 35:04.210 --> 35:07.050 I needed a Markdown editor. 35:07.050 --> 35:09.099 I wanted it to centre 35:09.099 --> 35:12.080 the body of the text on display. 35:12.080 --> 35:15.384 It should have configurable font families 35:15.384 --> 35:17.030 and point sizes. 35:17.030 --> 35:19.646 Spell checking for Greek and English 35:19.646 --> 35:20.990 should be included. 35:20.990 --> 35:25.007 The colours had to be editable as well, 35:25.007 --> 35:26.940 so I could adjust them 35:26.940 --> 35:30.064 to a level of legibility 35:30.064 --> 35:32.760 I was comfortable with. 35:32.760 --> 35:35.657 While there were plenty of libre programs, 35:35.657 --> 35:37.174 I did not find one 35:37.174 --> 35:39.905 I could control and inspect 35:39.905 --> 35:43.190 to the extent I can with Emacs. 35:43.190 --> 35:46.982 Which made me feel that I had stagnated: 35:46.982 --> 35:49.572 there was an indelible line 35:49.572 --> 35:53.500 dividing users from developers. 35:53.500 --> 35:55.899 Whereas Emacs invites you 35:55.899 --> 35:58.106 to blur the distinction 35:58.106 --> 36:00.590 between user and the developer. 36:00.590 --> 36:03.837 It furnishes the means to become 36:03.837 --> 36:05.510 proficient in it, 36:05.510 --> 36:07.717 while the community complements those 36:07.717 --> 36:10.744 with its documentation culture 36:10.744 --> 36:12.990 and overall creativity. 36:12.990 --> 36:15.679 You start off as a complete ignoramus, 36:15.679 --> 36:19.190 but soon pick up skills that remain useful 36:19.190 --> 36:22.200 for as long as you work with Emacs. 36:22.200 --> 36:23.574 And if you really want to 36:23.574 --> 36:25.150 take it a step further, 36:25.150 --> 36:27.569 you know where to look 36:27.569 --> 36:30.620 for inspiration and guidance. 36:30.620 --> 36:32.722 Before you realise it, 36:32.722 --> 36:35.556 you start writing code in ELisp 36:35.556 --> 36:39.030 and can one day share it with others. 36:39.030 --> 36:42.060 What I have learnt over the past 2.5 years 36:42.060 --> 36:43.331 as an Emacs user 36:43.331 --> 36:45.661 is that if you go from scratch 36:45.661 --> 36:48.442 and are meticulous in your approach, 36:48.442 --> 36:51.379 you will need a few days or weeks 36:51.379 --> 36:54.750 before everything starts to make sense. 36:54.750 --> 36:57.477 After that initial awkward phase 36:57.477 --> 37:00.428 during which you familiarise yourself 37:00.428 --> 37:01.748 with the basics, 37:01.748 --> 37:06.050 everything else will become easier to learn. 37:06.050 --> 37:09.524 It is a matter of gaining more experience, 37:09.524 --> 37:11.060 one step at a time. 37:11.060 --> 37:13.537 As with every field of expertise, 37:13.537 --> 37:15.870 Emacs expects you to work for it 37:15.870 --> 37:19.110 and to earn it. 37:19.110 --> 37:21.240 For me, that is worth it. 37:21.240 --> 37:23.655 In terms of being malleable 37:23.655 --> 37:25.294 in a consistent way 37:25.294 --> 37:28.388 and transparent in what it does, 37:28.388 --> 37:31.390 Emacs is in a league of its own. 37:31.390 --> 37:33.707 In conclusion, folks, 37:33.707 --> 37:36.898 Emacs allowed me to assert control 37:36.898 --> 37:39.260 over a great portion 37:39.260 --> 37:42.780 of my quotidian computing. 37:42.780 --> 37:44.827 It helped me grow out of 37:44.827 --> 37:47.448 the state of ignorance I was in; 37:47.448 --> 37:49.811 a state that rendered me 37:49.811 --> 37:52.528 powerless to use the computer 37:52.528 --> 37:54.430 exactly how I wanted. 37:54.430 --> 37:57.910 For that I am grateful. 37:57.910 --> 38:00.071 I now consider it my duty 38:00.071 --> 38:02.025 to contribute back to 38:02.025 --> 38:04.007 this wonderful project 38:04.007 --> 38:06.390 and this awesome community. 38:06.390 --> 38:09.174 So thank you very much for your attention 38:09.174 --> 38:12.690 in watching today's presentation. 38:12.690 --> 38:13.874 Special thanks to 38:13.874 --> 38:18.207 the EmacsConf organizers and volunteers. 38:18.207 --> 38:20.574 This is all from my side, folks. 38:20.574 --> 38:23.910 Thank you very much. Goodbye.