WEBVTT captioned by Daniel Alejandro Tapia 00:00:00.660 --> 00:00:03.839 Stenotypy is a system of typing 00:00:03.840 --> 00:00:07.339 where you press multiple keys at the same time, 00:00:07.340 --> 00:00:13.359 letting you send more than one letter at a time. 00:00:13.360 --> 00:00:16.939 This is a video from the 1920s. 00:00:16.940 --> 00:00:23.059 The man is holding a stenotype, a device used for stenotypy. 00:00:23.060 --> 00:00:26.359 This particular one is called Grandjean. 00:00:26.360 --> 00:00:30.067 It's made for the French language. 00:00:30.068 --> 00:00:31.739 In this demonstration, 00:00:31.740 --> 00:00:34.899 the man is going to be dictating a passage, 00:00:34.900 --> 00:00:38.759 first, slowly and then quickly. 00:00:38.760 --> 00:00:42.419 The lady on the left doesn't have trouble keeping up. 00:00:42.420 --> 00:00:44.859 She's using stenotypy. 00:00:44.860 --> 00:00:48.319 The lady on the right is a good typist, 00:00:48.320 --> 00:01:13.299 but she can't keep up when the dictation gets faster. 00:01:13.300 --> 00:01:16.019 I'm nowhere near as fast as this lady. 00:01:16.020 --> 00:01:18.779 She's extremely skilled. 00:01:18.780 --> 00:01:24.539 I'm not even a tenth of what she is. 00:01:24.540 --> 00:01:28.399 I don't use Grandjean, I use Melani, 00:01:28.400 --> 00:01:33.319 which is a system for Castilian and Italian. 00:01:33.320 --> 00:01:39.539 If I want to make the word solo, I press S, O, L, 00:01:39.540 --> 00:01:43.319 which is made by two keys, and O. 00:01:43.320 --> 00:01:45.599 Here's what that looks like. 00:01:45.600 --> 00:01:50.799 The hyphen between S and O means that 00:01:50.800 --> 00:01:52.519 the S is on the left side, 00:01:52.520 --> 00:01:57.039 and the rest of the letters are on the right side. 00:01:57.040 --> 00:01:59.999 If I want to write the word sólo, 00:02:00.000 --> 00:02:02.439 which is just like the previous word, 00:02:02.440 --> 00:02:05.479 but with the first O accented, 00:02:05.480 --> 00:02:08.259 I would press the asterisk key. 00:02:08.260 --> 00:02:11.959 In Melani, the asterisk is used 00:02:11.960 --> 00:02:20.299 to put an accent on a letter. 00:02:20.300 --> 00:02:22.039 If you speak English, 00:02:22.040 --> 00:02:25.039 then you would likely use the Ireland system. 00:02:25.040 --> 00:02:28.779 S-E-T makes the word set. 00:02:28.780 --> 00:02:32.379 In Ireland, you can make a long vowel sound 00:02:32.380 --> 00:02:34.259 by pressing the two thumb keys 00:02:34.260 --> 00:02:41.699 on the other side of the vowel you want to make long. 00:02:41.700 --> 00:02:44.120 S-long-E-T makes the word seat. 00:02:50.200 --> 00:02:52.659 This is me programming. 00:02:52.660 --> 00:02:56.480 After a few lines, I'll explain what's going on. 00:03:19.580 --> 00:03:23.379 In GNU Emacs, you can create abbreviations 00:03:23.380 --> 00:03:25.539 that expand to strings. 00:03:25.540 --> 00:03:31.359 For example, you can create an abbrev, like btwx, 00:03:31.360 --> 00:03:33.979 that will expand to "by the way" 00:03:33.980 --> 00:03:40.359 when you succeed btwx with a space or some punctuation. 00:03:40.360 --> 00:03:42.439 Here that's what I'm doing. 00:03:42.440 --> 00:03:48.139 I type d and then emacs, which expands to this. 00:03:48.140 --> 00:03:50.659 But this is a different kind of expansion 00:03:50.660 --> 00:03:54.339 from a simple string like by the way. 00:03:54.340 --> 00:03:56.639 This one has structure. 00:03:56.640 --> 00:04:00.679 It has interesting points that I can jump to. 00:04:00.680 --> 00:04:01.919 It's called a skeleton. 00:04:03.740 --> 00:04:05.939 This is the skeleton. 00:04:05.940 --> 00:04:10.559 The part that I want you to focus on is the @ symbols. 00:04:10.560 --> 00:04:15.739 Those are the interesting points that I jump to. 00:04:15.740 --> 00:04:18.259 So, at one interesting point, 00:04:18.260 --> 00:04:20.699 I can write the name of the function, 00:04:20.700 --> 00:04:24.359 at another interesting point, the arguments 00:04:24.360 --> 00:04:28.619 if the function will need them, the doc string, 00:04:28.620 --> 00:04:31.799 and finally the body. 00:04:31.800 --> 00:04:34.939 When I get to the body, I use stenotypy 00:04:34.940 --> 00:04:39.059 to write the words of the functions I'm looking for. 00:04:39.060 --> 00:04:41.639 Then I call a completion framework 00:04:41.640 --> 00:04:45.059 to choose from a list of candidates. 00:04:45.060 --> 00:04:47.859 This completion framework doesn't care 00:04:47.860 --> 00:04:52.519 what order the words are in or how many words I use. 00:04:52.520 --> 00:04:56.219 This completion framework is called Corfu, 00:04:56.220 --> 00:05:00.459 which stands for COmpletion in Region FUnction. 00:05:00.460 --> 00:05:03.279 And I'm using a package called Orderless 00:05:03.280 --> 00:05:04.439 to make it stronger. 00:05:51.460 --> 00:05:57.199 Here, I use another skeleton, the same one as before. 00:05:57.200 --> 00:06:00.879 This time, it has an argument. 00:06:00.880 --> 00:06:07.239 Then, when I get to the body, I write another skeleton, 00:06:07.240 --> 00:06:12.359 one that has an interesting point between the quotes 00:06:12.360 --> 00:06:14.919 and creates a new line 00:06:14.920 --> 00:06:17.499 right underneath it. 00:06:17.500 --> 00:06:20.319 I typed i and then emacs, 00:06:20.320 --> 00:06:22.359 and I got the interactive skeleton. 00:07:16.120 --> 00:07:18.899 Now, I use another skeleton, 00:07:18.900 --> 00:07:20.479 but these ones differ 00:07:20.480 --> 00:07:23.039 because it prompts me for a string, 00:07:23.040 --> 00:07:27.299 and I can make the skeleton as long as I want. 00:07:27.300 --> 00:07:29.799 If I keep entering text in the prompt, 00:07:29.800 --> 00:07:33.839 then Emacs will keep making the skeleton bigger. 00:07:33.840 --> 00:07:37.999 When I enter an empty string, it knows to stop asking, 00:07:38.000 --> 00:07:39.999 and it sends me to the point 00:07:40.000 --> 00:07:44.619 I've designated to go to when a skeleton is created. 00:07:44.620 --> 00:07:46.439 That's what the underscore means. 00:07:48.260 --> 00:07:54.119 I type c and then Emacs, and I get the condition skeleton. 00:07:54.120 --> 00:08:00.059 And then I use Corfu and Orderless to program. 00:08:00.060 --> 00:08:03.819 On two functions, I use a dabbrev. 00:08:03.820 --> 00:08:09.499 A dabbrev is a dynamic abbreviation. 00:08:09.500 --> 00:08:11.439 Here's how it works. 00:08:11.440 --> 00:08:12.899 If I have three strings 00:08:12.900 --> 00:08:17.819 that begin with S-T, string, strawberry, and stop, 00:08:17.820 --> 00:08:22.179 I can write S-T and then call dabbrev expand. 00:08:22.180 --> 00:08:24.379 First, this will give me stop 00:08:24.380 --> 00:08:27.119 because I'm nearest to the word stop. 00:08:27.120 --> 00:08:30.499 Then when I call it again, I'll get strawberry. 00:08:30.500 --> 00:08:35.459 And if I call it a third time, I'll get string. 00:08:35.460 --> 00:08:40.139 If I start off with S-T-R, then I'll get strawberry first 00:08:40.140 --> 00:08:42.279 and then string. 00:08:42.280 --> 00:08:45.999 I used dabbrev twice in this function. 00:08:46.000 --> 00:08:48.079 If you read the top of the screen, 00:08:48.080 --> 00:08:52.000 you can see which commands I use and how I invoke them. 00:09:00.240 --> 00:09:03.119 Finally, I use one last skeleton 00:09:03.120 --> 00:09:07.039 to map the function I just wrote to a hotkey. 00:09:07.040 --> 00:09:09.500 In this case, C-o. 00:09:15.580 --> 00:09:19.219 Here we can see what the function I just wrote does. 00:09:19.220 --> 00:09:22.239 It opens a line with the line below indented 00:09:22.240 --> 00:09:23.800 if it isn't blank. 00:09:23.801 --> 00:09:29.039 I've kept the old behavior with an argument of zero 00:09:29.040 --> 00:09:33.599 and done something for when I use a negative argument. 00:09:33.600 --> 00:09:36.899 You can see the interesting points. 00:09:36.900 --> 00:09:40.980 I could jump to any of them or cycle through them. 00:09:50.000 --> 00:09:54.619 I normally use a 9-to-16 setup. 00:09:54.620 --> 00:09:58.119 To me, Emacs, and computing in general, 00:09:58.120 --> 00:10:00.880 is much more pleasant to use that way. 00:10:07.680 --> 00:10:09.620 When I stenotype a word, 00:10:10.000 --> 00:10:14.179 a space is sent immediately afterwards. 00:10:14.180 --> 00:10:17.799 Orderless treats spaces as delimiters. 00:10:17.800 --> 00:10:19.379 This is very helpful 00:10:19.380 --> 00:10:23.459 because I can enter commands with stenotypy, 00:10:23.460 --> 00:10:25.219 without having to worry about 00:10:25.220 --> 00:10:27.060 whether words are in the right order. 00:10:29.320 --> 00:10:34.219 Lem, spelled L-E-M, is another Emacs. 00:10:34.220 --> 00:10:35.900 It's extremely powerful. 00:10:35.901 --> 00:10:40.060 But Lem doesn't have skeletons, not yet at least. 00:10:40.061 --> 00:10:40.359 So I'm going to program the traditional way. 00:10:43.740 --> 00:10:47.580 Nothing fancy, just left-to-right programming. 00:11:38.800 --> 00:11:41.520 With Plover, you have dictionaries. 00:11:41.521 --> 00:11:44.860 I added Fibonacci to my dictionary. 00:11:44.861 --> 00:11:47.939 I made my own dictionary from scratch. 00:11:47.940 --> 00:11:49.780 But if you don't want to do that, 00:11:49.781 --> 00:11:52.260 there are free dictionaries available 00:11:52.261 --> 00:11:55.120 that have many words already in them, 00:11:55.121 --> 00:11:56.720 saving you lots of time. 00:11:56.721 --> 00:12:00.279 The reason I made my dictionary from scratch 00:12:00.280 --> 00:12:03.559 is because I wanted to know my system inside and out. 00:12:03.560 --> 00:12:07.960 On one stroke, I typed T. 00:12:07.961 --> 00:12:12.740 And, on the next stroke, I stenotyped coalton. 00:12:12.741 --> 00:12:16.460 And then I got (coalton-toplevel and a new line. 00:12:16.461 --> 00:12:19.519 It's similar to what I did in GNU Emacs 00:12:19.520 --> 00:12:22.579 when I expanded a skeleton. 00:12:22.580 --> 00:12:25.179 This is actually not stenotypy, 00:12:25.180 --> 00:12:29.820 but a different kind of steno, known as serial steno. 00:12:29.821 --> 00:12:32.940 Plover is capable of this as well. 00:12:32.941 --> 00:12:36.840 Here are some things that Plover can do. 00:12:36.841 --> 00:12:38.920 Plover can glue words, 00:12:38.921 --> 00:12:41.460 like if you need to make a compound word. 00:12:41.461 --> 00:12:44.360 It can break a compound word. 00:12:44.361 --> 00:12:48.060 You can press keys to turn off Plover 00:12:48.061 --> 00:12:50.120 or to turn it back on. 00:12:50.121 --> 00:12:52.720 You can case words the way you want, 00:12:52.721 --> 00:12:55.760 uppercase, lowercase, capitalize. 00:12:55.761 --> 00:12:58.820 You can change your stenotype layout, 00:12:58.821 --> 00:13:02.380 like, say, if you want to use Grandjean for French, 00:13:02.381 --> 00:13:06.379 Melani for Castilian, and Ireland for English. 00:13:06.380 --> 00:13:08.020 All of that's possible. 00:13:10.480 --> 00:13:14.619 Here I should note that I'm using a Plover plugin 00:13:14.620 --> 00:13:17.520 called Full Keyboard Steno. 00:13:17.521 --> 00:13:22.180 It makes my entire keyboard into a stenotype. 00:13:26.800 --> 00:13:30.700 Lem also has a completion feature built in. 00:13:30.701 --> 00:13:35.100 But I didn't need it for the code that I wrote. 00:13:35.101 --> 00:13:37.900 It's quite good. 00:13:38.720 --> 00:13:42.280 In summary, if you add in the symbols 00:13:42.281 --> 00:13:45.120 that you're going to need when you're programming, 00:13:45.121 --> 00:13:46.440 you'll be fine. 00:13:46.441 --> 00:13:48.620 Even without skeletons, 00:13:48.621 --> 00:13:51.400 Plover is nice to use for programming. 00:14:00.920 --> 00:14:05.620 The search tool is the primary way of navigating in Emacs. 00:14:05.621 --> 00:14:08.040 Every Emacser can be measured 00:14:08.041 --> 00:14:11.639 by their skill with the search tool. 00:14:11.640 --> 00:14:14.820 C-s begins a forward search. 00:14:14.821 --> 00:14:17.880 The s stands for search. 00:14:18.420 --> 00:14:20.740 I'm reading Aesop's Fables, 00:14:20.741 --> 00:14:23.640 and I want to look for the word fox. 00:14:23.641 --> 00:14:28.200 So I press C-s and type fox. 00:14:28.201 --> 00:14:31.599 If I want to go back to the beginning of the word fox, 00:14:31.600 --> 00:14:37.500 I press C-r, which stands for reverse search. 00:14:37.501 --> 00:14:42.320 With Stenotypy, spaces are added to the end of words, 00:14:42.740 --> 00:14:45.520 so sometimes that causes problems. 00:14:49.060 --> 00:14:52.120 We can remedy that by changing the way 00:14:52.121 --> 00:14:54.880 Emacs interprets our whitespace. 00:14:55.360 --> 00:14:57.960 When I press C-M-s [alt control s], 00:14:57.961 --> 00:15:01.300 whitespace is interpreted as a wildcard. 00:15:01.301 --> 00:15:04.159 It's a function I made myself. 00:15:04.160 --> 00:15:09.159 fox mask will take me to the fox and the mask. 00:15:09.160 --> 00:15:12.180 The whitespace is a wildcard. 00:15:12.181 --> 00:15:16.760 For me, Ctrl-s makes the whitespace literal. 00:15:16.761 --> 00:15:20.539 I like having both options available to me: 00:15:20.540 --> 00:15:25.219 literal whitespace and wildcard whitespace. 00:15:29.420 --> 00:15:32.180 Say I want to find the cat and the fox, 00:15:32.620 --> 00:15:34.859 one of my favorite fables. 00:15:34.860 --> 00:15:39.419 I write cat fox, but I don't get what I want. 00:15:39.420 --> 00:15:42.119 I've written a function that reverses 00:15:42.120 --> 00:15:44.739 the order of my search query. 00:15:45.260 --> 00:15:47.179 Now I get what I want. 00:15:47.880 --> 00:15:50.939 Searching like this is very convenient. 00:15:55.340 --> 00:15:58.539 In Lem, we can do something similar. 00:15:58.540 --> 00:16:01.419 I want to read The Fox and the Lion. 00:16:01.420 --> 00:16:08.379 I search for Lion Fox. Notice those words are capitalized. 00:16:08.380 --> 00:16:11.780 Now I'm going to transform the last two words 00:16:11.781 --> 00:16:14.299 into a regular expression 00:16:14.300 --> 00:16:18.479 so that the order doesn't matter. 00:16:18.480 --> 00:16:21.859 And now I can find the fable I'm looking for. 00:16:27.220 --> 00:16:31.899 I did this with a plugin called Retro Stringop, 00:16:31.900 --> 00:16:34.259 op meaning operation. 00:16:34.260 --> 00:16:40.059 I can perform any operation on the last n words. 00:16:40.060 --> 00:16:42.319 Let's look at that. 00:16:42.320 --> 00:16:44.699 The 2 means that I want to do something 00:16:44.700 --> 00:16:46.939 to the last two words. 00:16:46.940 --> 00:16:50.899 The operation I'm performing is Python code. 00:16:50.900 --> 00:16:54.059 To be honest, I don't know any Python, 00:16:54.060 --> 00:16:57.619 but string manipulation is easy to understand. 00:16:57.620 --> 00:17:01.700 If you do know Python, then you can make your own plugins 00:17:01.701 --> 00:17:04.939 and even help with the development of Plover. 00:17:07.820 --> 00:17:09.899 A feature I like in Lem is that 00:17:09.900 --> 00:17:15.779 when you gracefully exit search with Enter or C-m, 00:17:15.780 --> 00:17:18.499 what you searched for is highlighted. 00:17:18.500 --> 00:17:23.240 You can cycle through the results, the highlights, 00:17:23.241 --> 00:17:26.619 and you can toggle the highlights on or off. 00:17:30.160 --> 00:17:34.480 1978, John Kulp designs a keyboard 00:17:34.481 --> 00:17:37.179 known as the Space Cadet Keyboard. 00:17:37.180 --> 00:17:40.339 This keyboard has many distinctive qualities, 00:17:40.340 --> 00:17:44.419 one being the modifiers, numbering seven in total: 00:17:44.420 --> 00:17:51.139 Shift, Control, Meta, Super, Hyper, Greek, and Top. 00:17:51.900 --> 00:17:56.019 This keyboard influences the development of Emacs. 00:17:56.860 --> 00:18:02.659 2000, designer Kiyoshi Kimura and programmer Yoji Hagia 00:18:02.660 --> 00:18:07.399 release SandS, a program that lets you turn your spacebar 00:18:07.400 --> 00:18:09.659 into a dual-function key, 00:18:09.660 --> 00:18:11.499 sending space on tap 00:18:11.500 --> 00:18:15.139 and acting as the Shift modifier on hold. 00:18:16.220 --> 00:18:18.500 This idea, the dual-function key, 00:18:18.501 --> 00:18:21.379 later revolutionizes typing. 00:18:22.060 --> 00:18:25.640 These two concepts, the space cadet modifiers 00:18:25.641 --> 00:18:29.579 and the dual-function key, can be combined. 00:18:29.580 --> 00:18:32.439 I use a program called Kanata 00:18:32.440 --> 00:18:36.659 to put all the modifiers on my homerow. 00:18:36.660 --> 00:18:40.099 When I tap the letter a, I get an a. 00:18:40.100 --> 00:18:43.419 If I hold it down for longer than 200 milliseconds, 00:18:43.420 --> 00:18:46.739 it acts as the Meta modifier, 00:18:46.740 --> 00:18:48.059 and really I can add 00:18:48.060 --> 00:18:52.399 as many layers to my keyboard as I want. 00:18:52.400 --> 00:18:55.499 I don't use a little stenotype. 00:18:55.500 --> 00:18:59.139 Thanks to Full Keyboard Steno, the Plover plugin, 00:18:59.140 --> 00:19:02.019 I use my whole keyboard. 00:19:02.020 --> 00:19:05.439 I have an alternative keyboard layout on it, 00:19:05.440 --> 00:19:08.699 so, even when I'm typing in the traditional way, 00:19:08.700 --> 00:19:10.379 it feels amazing. 00:19:10.380 --> 00:19:15.699 My layout is called Kuron, and I lay it over Melani 00:19:15.700 --> 00:19:19.619 so that I have both available to me at all times. 00:19:19.620 --> 00:19:24.399 I don't get them confused because I set them off 00:19:24.400 --> 00:19:26.939 with the way I press keys. 00:19:26.940 --> 00:19:29.319 If I press one key at a time, 00:19:29.320 --> 00:19:32.419 I'm using Kuron, my keyboard layout. 00:19:32.420 --> 00:19:35.399 If I press multiple keys at the same time 00:19:35.400 --> 00:19:37.339 and let them go quickly, 00:19:37.340 --> 00:19:41.419 then I'm using stenotypy, in my case Melani. 00:19:41.420 --> 00:19:45.240 And if I hold one key longer than 200 milliseconds, 00:19:45.241 --> 00:19:51.339 then I'm activating it as a modifier key or a layer key. 00:19:51.340 --> 00:19:56.799 I always know what state I'm in by the way I press my keys. 00:19:56.800 --> 00:19:59.619 It's impossible for me to get confused. 00:20:03.800 --> 00:20:07.859 Holding multiple modifiers is not a problem 00:20:07.860 --> 00:20:13.439 because the keycaps used for stenotypy are flat and square. 00:20:13.440 --> 00:20:15.979 Pressing two or more keys at once 00:20:15.980 --> 00:20:18.899 with the same finger is easy. 00:20:18.900 --> 00:20:21.899 Notice how close they are to each other. 00:20:21.900 --> 00:20:25.659 In stenotypy, the homerow is the border 00:20:25.660 --> 00:20:28.139 between the two rows of keys. 00:20:28.560 --> 00:20:31.259 It took me a while to get used to it, 00:20:31.260 --> 00:20:35.259 but now that I am used to it, I quite like it. 00:20:35.640 --> 00:20:38.219 So if I have to press a hotkey 00:20:38.220 --> 00:20:43.979 with all six modifiers, Shift, Control, Meta, 00:20:43.980 --> 00:20:50.899 Alt, Hyper, Super, it's easy. 00:20:50.900 --> 00:20:54.659 Thanks to Kanata, I have a Greek layer on my board. 00:20:54.660 --> 00:20:58.799 Additionally, I have alpha, beta, and gamma layers 00:20:58.800 --> 00:21:03.319 that send sequences of keys that I can use as hotkeys 00:21:03.320 --> 00:21:06.539 in both GNU Emacs and Lem. 00:21:06.540 --> 00:21:10.419 Maybe you noticed a few while I was programming. 00:21:10.420 --> 00:21:12.959 Now it's possible to bring the Space Cadet 00:21:12.960 --> 00:21:17.219 to any keyboard and to build on its wonderful ideas. 00:21:20.920 --> 00:21:24.459 Here I'll note that another Emacser, Excalamus, 00:21:24.460 --> 00:21:27.539 has made a page called Plover with Emacs, 00:21:27.540 --> 00:21:30.639 with information on how to use Emacs 00:21:30.640 --> 00:21:32.539 with the standard stenotype, 00:21:32.540 --> 00:21:34.519 the one that has two rows, 00:21:34.520 --> 00:21:37.439 the one I call a little stenotype. 00:21:37.440 --> 00:21:39.599 While I use my full keyboard, 00:21:39.600 --> 00:21:43.199 I understand how a small board can be useful. 00:21:43.200 --> 00:21:46.159 Finger movement is greatly reduced, 00:21:46.160 --> 00:21:49.439 leading to a very ergonomic typing experience. 00:21:49.440 --> 00:21:53.239 In fact, all of the speed records 00:21:53.240 --> 00:21:57.239 are set with this stenotype, the standard stenotype. 00:21:58.840 --> 00:22:01.479 There are many great ideas on this page. 00:22:01.480 --> 00:22:04.319 Thank you, Excalamus. 00:22:06.800 --> 00:22:09.159 Special thanks to Richard Stallman, 00:22:09.160 --> 00:22:13.119 the creator of GNU Emacs and the Free Software Foundation, 00:22:13.420 --> 00:22:16.919 Sasaki Ryosuke, first name Ryosuke, 00:22:16.920 --> 00:22:19.599 the creator and lead developer of Lem, 00:22:20.120 --> 00:22:24.279 Mirabai Knight, the creator of the Open Steno Project, 00:22:24.280 --> 00:22:26.839 which oversees the development of Plover, 00:22:26.840 --> 00:22:31.159 and jtroo, the creator and lead developer of Kanata. 00:22:32.700 --> 00:22:36.999 The views expressed in this talk are solely my own. 00:22:37.000 --> 00:22:41.159 I have no connection to any of the parties mentioned herein 00:22:41.160 --> 00:22:43.479 and therefore cannot be seen 00:22:43.480 --> 00:22:45.359 as representing them in any capacity. 00:22:45.360 --> 00:22:49.199 What I've said cannot be taken as medical advice. 00:22:50.860 --> 00:22:54.759 I used the TranSide theme for GNU Emacs in this talk. 00:22:54.760 --> 00:22:57.199 It's beautiful and functional. 00:22:57.900 --> 00:23:01.639 I love how the code looks, and I can read the comments. 00:23:03.560 --> 00:23:05.759 In Lem, I used Gruber. 00:23:05.760 --> 00:23:10.399 Again, the comments are readable, and the code looks nice. 00:23:11.200 --> 00:23:13.839 When I first started using Emacs, 00:23:13.840 --> 00:23:16.199 I used the Wheatgrass theme. 00:23:19.980 --> 00:23:23.879 Another theme that I love is os1. 00:23:24.520 --> 00:23:28.239 It's a light, warm, modern theme for Emacs 00:23:28.240 --> 00:23:30.439 inspired by film palettes. 00:23:35.040 --> 00:23:38.499 Regarding typography, for programming, 00:23:38.500 --> 00:23:42.879 I used JuliaMono, which was designed by Cormullion. 00:23:43.520 --> 00:23:46.919 It's extensive, and it's beautiful. 00:23:48.000 --> 00:23:51.039 For graphics, I used PromptFont, 00:23:51.380 --> 00:23:53.959 which was made by Yukari Hafner. 00:23:54.840 --> 00:23:56.479 She's very talented. 00:23:56.480 --> 00:23:59.639 I really like her work, including this font. 00:24:01.180 --> 00:24:04.679 There are so many packages that I love in Emacs. 00:24:05.520 --> 00:24:07.639 If I talked about all of them, 00:24:07.640 --> 00:24:09.799 my talk would last for days, 00:24:09.800 --> 00:24:11.959 so I'm only going to mention three. 00:24:12.580 --> 00:24:14.079 Keycast. 00:24:14.400 --> 00:24:15.519 At the top of the screen, 00:24:15.520 --> 00:24:18.039 you can see the commands I'm executing 00:24:18.040 --> 00:24:20.559 and how I'm invoking those commands. 00:24:20.560 --> 00:24:21.919 That's Keycast. 00:24:21.920 --> 00:24:24.879 Rainbow Delimiters is another one I like. 00:24:25.540 --> 00:24:27.519 It lets me know visually 00:24:27.520 --> 00:24:29.919 when my parentheses are out of balance. 00:24:30.480 --> 00:24:33.199 Very helpful when I'm programming in Lisp. 00:24:35.900 --> 00:24:37.879 Moodline is another. 00:24:37.880 --> 00:24:42.899 The modeline is where I can see relevant information 00:24:42.900 --> 00:24:44.879 about the file I'm working on. 00:24:46.840 --> 00:24:50.759 Moodline only gives me the information I want. 00:24:50.760 --> 00:24:55.460 I'm not really worried about too many things, just 00:24:55.461 --> 00:25:07.160 the file name, the mode I'm in, and where I am in the file.