summaryrefslogtreecommitdiffstats
path: root/2023
diff options
context:
space:
mode:
authorEmacsConf <emacsconf-org@gnu.org>2023-12-03 13:55:20 -0500
committerEmacsConf <emacsconf-org@gnu.org>2023-12-03 13:55:20 -0500
commitba3021e335f2e613b433f59e739c477519d1eb3d (patch)
tree13cc088aa8143f6b3b041c63888a2ee22b721277 /2023
parent191c7113b616ffbf81f7433f973405a340235caa (diff)
downloademacsconf-wiki-ba3021e335f2e613b433f59e739c477519d1eb3d.tar.xz
emacsconf-wiki-ba3021e335f2e613b433f59e739c477519d1eb3d.zip
Automated commit
Diffstat (limited to '')
-rw-r--r--2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt1033
-rw-r--r--2023/info/steno-after.md352
-rw-r--r--2023/info/steno-before.md4
3 files changed, 1387 insertions, 2 deletions
diff --git a/2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt b/2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt
new file mode 100644
index 00000000..c3f0d9a2
--- /dev/null
+++ b/2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt
@@ -0,0 +1,1033 @@
+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.
diff --git a/2023/info/steno-after.md b/2023/info/steno-after.md
index 93a32456..dc9a1c9b 100644
--- a/2023/info/steno-after.md
+++ b/2023/info/steno-after.md
@@ -1,6 +1,358 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<a name="steno-mainVideo-transcript"></a>
+# Transcript
+
+[[!template text="""Stenotypy is a system of typing""" start="00:00:00.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""where you press multiple keys at the same time,""" start="00:00:03.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""letting you send more than one letter at a time.""" start="00:00:07.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is a video from the 1920s.""" start="00:00:13.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The man is holding a stenotype, a device used for stenotypy.""" start="00:00:16.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This particular one is called Grandjean.""" start="00:00:23.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's made for the French language.""" start="00:00:26.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In this demonstration,""" start="00:00:30.068" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the man is going to be dictating a passage,""" start="00:00:31.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""first, slowly and then quickly.""" start="00:00:34.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The lady on the left doesn't have trouble keeping up.""" start="00:00:38.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's using stenotypy.""" start="00:00:42.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The lady on the right is a good typist,""" start="00:00:44.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but she can't keep up when the dictation gets faster.""" start="00:00:48.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm nowhere near as fast as this lady.""" start="00:01:13.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's extremely skilled.""" start="00:01:16.020" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm not even a tenth of what she is.""" start="00:01:18.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't use Grandjean, I use Melani,""" start="00:01:24.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is a system for Castilian and Italian.""" start="00:01:28.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to make the word solo, I press S, O, L,""" start="00:01:33.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is made by two keys, and O.""" start="00:01:39.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here's what that looks like.""" start="00:01:43.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The hyphen between S and O means that""" start="00:01:45.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the S is on the left side,""" start="00:01:50.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and the rest of the letters are on the right side.""" start="00:01:52.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to write the word sólo,""" start="00:01:57.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is just like the previous word,""" start="00:02:00.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but with the first O accented,""" start="00:02:02.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I would press the asterisk key.""" start="00:02:05.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Melani, the asterisk is used""" start="00:02:08.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to put an accent on a letter.""" start="00:02:11.960" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you speak English,""" start="00:02:20.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then you would likely use the Ireland system.""" start="00:02:22.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""S-E-T makes the word set.""" start="00:02:25.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Ireland, you can make a long vowel sound""" start="00:02:28.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""by pressing the two thumb keys""" start="00:02:32.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""on the other side of the vowel you want to make long.""" start="00:02:34.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""S-long-E-T makes the word seat.""" start="00:02:41.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is me programming.""" start="00:02:50.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""After a few lines, I'll explain what's going on.""" start="00:02:52.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In GNU Emacs, you can create abbreviations""" start="00:03:19.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that expand to strings.""" start="00:03:23.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For example, you can create an abbrev, like btwx,""" start="00:03:25.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that will expand to &quot;by the way&quot;""" start="00:03:31.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when you succeed btwx with a space or some punctuation.""" start="00:03:33.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here that's what I'm doing.""" start="00:03:40.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I type d and then emacs, which expands to this.""" start="00:03:42.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But this is a different kind of expansion""" start="00:03:48.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""from a simple string like by the way.""" start="00:03:50.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This one has structure.""" start="00:03:54.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It has interesting points that I can jump to.""" start="00:03:56.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's called a skeleton.""" start="00:04:00.680" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is the skeleton.""" start="00:04:03.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The part that I want you to focus on is the @ symbols.""" start="00:04:05.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Those are the interesting points that I jump to.""" start="00:04:10.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So, at one interesting point,""" start="00:04:15.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can write the name of the function,""" start="00:04:18.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""at another interesting point, the arguments""" start="00:04:20.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""if the function will need them, the doc string,""" start="00:04:24.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and finally the body.""" start="00:04:28.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I get to the body, I use stenotypy""" start="00:04:31.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to write the words of the functions I'm looking for.""" start="00:04:34.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then I call a completion framework""" start="00:04:39.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to choose from a list of candidates.""" start="00:04:41.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This completion framework doesn't care""" start="00:04:45.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""what order the words are in or how many words I use.""" start="00:04:47.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This completion framework is called Corfu,""" start="00:04:52.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which stands for COmpletion in Region FUnction.""" start="00:04:56.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And I'm using a package called Orderless""" start="00:05:00.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to make it stronger.""" start="00:05:03.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here, I use another skeleton, the same one as before.""" start="00:05:51.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This time, it has an argument.""" start="00:05:57.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then, when I get to the body, I write another skeleton,""" start="00:06:00.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one that has an interesting point between the quotes""" start="00:06:07.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and creates a new line""" start="00:06:12.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""right underneath it.""" start="00:06:14.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I typed i and then emacs,""" start="00:06:17.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I got the interactive skeleton.""" start="00:06:20.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now, I use another skeleton,""" start="00:07:16.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but these ones differ""" start="00:07:18.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because it prompts me for a string,""" start="00:07:20.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I can make the skeleton as long as I want.""" start="00:07:23.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I keep entering text in the prompt,""" start="00:07:27.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then Emacs will keep making the skeleton bigger.""" start="00:07:29.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I enter an empty string, it knows to stop asking,""" start="00:07:33.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and it sends me to the point""" start="00:07:38.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've designated to go to when a skeleton is created.""" start="00:07:40.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""That's what the underscore means.""" start="00:07:44.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I type c and then Emacs, and I get the condition skeleton.""" start="00:07:48.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And then I use Corfu and Orderless to program.""" start="00:07:54.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""On two functions, I use a dabbrev.""" start="00:08:00.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""A dabbrev is a dynamic abbreviation.""" start="00:08:03.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here's how it works.""" start="00:08:09.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I have three strings""" start="00:08:11.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that begin with S-T, string, strawberry, and stop,""" start="00:08:12.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can write S-T and then call dabbrev expand.""" start="00:08:17.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""First, this will give me stop""" start="00:08:22.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because I'm nearest to the word stop.""" start="00:08:24.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then when I call it again, I'll get strawberry.""" start="00:08:27.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And if I call it a third time, I'll get string.""" start="00:08:30.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I start off with S-T-R, then I'll get strawberry first""" start="00:08:35.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and then string.""" start="00:08:40.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used dabbrev twice in this function.""" start="00:08:42.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you read the top of the screen,""" start="00:08:46.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you can see which commands I use and how I invoke them.""" start="00:08:48.080" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Finally, I use one last skeleton""" start="00:09:00.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to map the function I just wrote to a hotkey.""" start="00:09:03.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In this case, C-o.""" start="00:09:07.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here we can see what the function I just wrote does.""" start="00:09:15.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It opens a line with the line below indented""" start="00:09:19.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""if it isn't blank.""" start="00:09:22.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've kept the old behavior with an argument of zero""" start="00:09:23.801" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and done something for when I use a negative argument.""" start="00:09:29.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can see the interesting points.""" start="00:09:33.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I could jump to any of them or cycle through them.""" start="00:09:36.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I normally use a 9-to-16 setup.""" start="00:09:50.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""To me, Emacs, and computing in general,""" start="00:09:54.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""is much more pleasant to use that way.""" start="00:09:58.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I stenotype a word,""" start="00:10:07.680" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""a space is sent immediately afterwards.""" start="00:10:10.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Orderless treats spaces as delimiters.""" start="00:10:14.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is very helpful""" start="00:10:17.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because I can enter commands with stenotypy,""" start="00:10:19.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""without having to worry about""" start="00:10:23.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""whether words are in the right order.""" start="00:10:25.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Lem, spelled L-E-M, is another Emacs.""" start="00:10:29.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's extremely powerful.""" start="00:10:34.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But Lem doesn't have skeletons, not yet at least.""" start="00:10:35.901" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So I'm going to program the traditional way.""" start="00:10:40.061" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Nothing fancy, just left-to-right programming.""" start="00:10:43.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""With Plover, you have dictionaries.""" start="00:11:38.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I added Fibonacci to my dictionary.""" start="00:11:41.521" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I made my own dictionary from scratch.""" start="00:11:44.861" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But if you don't want to do that,""" start="00:11:47.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""there are free dictionaries available""" start="00:11:49.781" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that have many words already in them,""" start="00:11:52.261" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""saving you lots of time.""" start="00:11:55.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The reason I made my dictionary from scratch""" start="00:11:56.721" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""is because I wanted to know my system inside and out.""" start="00:12:00.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""On one stroke, I typed T.""" start="00:12:03.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And, on the next stroke, I stenotyped coalton.""" start="00:12:07.961" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And then I got (coalton-toplevel and a new line.""" start="00:12:12.741" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's similar to what I did in GNU Emacs""" start="00:12:16.461" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when I expanded a skeleton.""" start="00:12:19.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is actually not stenotypy,""" start="00:12:22.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but a different kind of steno, known as serial steno.""" start="00:12:25.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover is capable of this as well.""" start="00:12:29.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here are some things that Plover can do.""" start="00:12:32.941" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover can glue words,""" start="00:12:36.841" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""like if you need to make a compound word.""" start="00:12:38.921" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It can break a compound word.""" start="00:12:41.461" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can press keys to turn off Plover""" start="00:12:44.361" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""or to turn it back on.""" start="00:12:48.061" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can case words the way you want,""" start="00:12:50.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""uppercase, lowercase, capitalize.""" start="00:12:52.721" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can change your stenotype layout,""" start="00:12:55.761" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""like, say, if you want to use Grandjean for French,""" start="00:12:58.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Melani for Castilian, and Ireland for English.""" start="00:13:02.381" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""All of that's possible.""" start="00:13:06.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here I should note that I'm using a Plover plugin""" start="00:13:10.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""called Full Keyboard Steno.""" start="00:13:14.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It makes my entire keyboard into a stenotype.""" start="00:13:17.521" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Lem also has a completion feature built in.""" start="00:13:26.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But I didn't need it for the code that I wrote.""" start="00:13:30.701" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's quite good.""" start="00:13:35.101" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In summary, if you add in the symbols""" start="00:13:38.720" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that you're going to need when you're programming,""" start="00:13:42.281" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you'll be fine.""" start="00:13:45.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Even without skeletons,""" start="00:13:46.441" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover is nice to use for programming.""" start="00:13:48.621" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The search tool is the primary way of navigating in Emacs.""" start="00:14:00.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Every Emacser can be measured""" start="00:14:05.621" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""by their skill with the search tool.""" start="00:14:08.041" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""C-s begins a forward search.""" start="00:14:11.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The s stands for search.""" start="00:14:14.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm reading Aesop's Fables,""" start="00:14:18.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I want to look for the word fox.""" start="00:14:20.741" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So I press C-s and type fox.""" start="00:14:23.641" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to go back to the beginning of the word fox,""" start="00:14:28.201" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I press C-r, which stands for reverse search.""" start="00:14:31.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""With Stenotypy, spaces are added to the end of words,""" start="00:14:37.501" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so sometimes that causes problems.""" start="00:14:42.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""We can remedy that by changing the way""" start="00:14:49.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Emacs interprets our whitespace.""" start="00:14:52.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I press C-M-s [alt control s],""" start="00:14:55.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""whitespace is interpreted as a wildcard.""" start="00:14:57.961" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's a function I made myself.""" start="00:15:01.301" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""fox mask will take me to the fox and the mask.""" start="00:15:04.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The whitespace is a wildcard.""" start="00:15:09.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For me, Ctrl-s makes the whitespace literal.""" start="00:15:12.181" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I like having both options available to me:""" start="00:15:16.761" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""literal whitespace and wildcard whitespace.""" start="00:15:20.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Say I want to find the cat and the fox,""" start="00:15:29.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one of my favorite fables.""" start="00:15:32.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I write cat fox, but I don't get what I want.""" start="00:15:34.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've written a function that reverses""" start="00:15:39.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the order of my search query.""" start="00:15:42.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now I get what I want.""" start="00:15:45.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Searching like this is very convenient.""" start="00:15:47.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Lem, we can do something similar.""" start="00:15:55.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I want to read The Fox and the Lion.""" start="00:15:58.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I search for Lion Fox. Notice those words are capitalized.""" start="00:16:01.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now I'm going to transform the last two words""" start="00:16:08.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""into a regular expression""" start="00:16:11.781" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so that the order doesn't matter.""" start="00:16:14.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And now I can find the fable I'm looking for.""" start="00:16:18.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I did this with a plugin called Retro Stringop,""" start="00:16:27.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""op meaning operation.""" start="00:16:31.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can perform any operation on the last n words.""" start="00:16:34.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Let's look at that.""" start="00:16:40.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The 2 means that I want to do something""" start="00:16:42.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to the last two words.""" start="00:16:44.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The operation I'm performing is Python code.""" start="00:16:46.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""To be honest, I don't know any Python,""" start="00:16:50.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but string manipulation is easy to understand.""" start="00:16:54.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you do know Python, then you can make your own plugins""" start="00:16:57.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and even help with the development of Plover.""" start="00:17:01.701" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""A feature I like in Lem is that""" start="00:17:07.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when you gracefully exit search with Enter or C-m,""" start="00:17:09.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""what you searched for is highlighted.""" start="00:17:15.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can cycle through the results, the highlights,""" start="00:17:18.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and you can toggle the highlights on or off.""" start="00:17:23.241" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""1978, John Kulp designs a keyboard""" start="00:17:30.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""known as the Space Cadet Keyboard.""" start="00:17:34.481" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This keyboard has many distinctive qualities,""" start="00:17:37.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one being the modifiers, numbering seven in total:""" start="00:17:40.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Shift, Control, Meta, Super, Hyper, Greek, and Top.""" start="00:17:44.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This keyboard influences the development of Emacs.""" start="00:17:51.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""2000, designer Kiyoshi Kimura and programmer Yoji Hagia""" start="00:17:56.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""release SandS, a program that lets you turn your spacebar""" start="00:18:02.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""into a dual-function key,""" start="00:18:07.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""sending space on tap""" start="00:18:09.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and acting as the Shift modifier on hold.""" start="00:18:11.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This idea, the dual-function key,""" start="00:18:16.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""later revolutionizes typing.""" start="00:18:18.501" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""These two concepts, the space cadet modifiers""" start="00:18:22.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and the dual-function key, can be combined.""" start="00:18:25.641" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I use a program called Kanata""" start="00:18:29.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to put all the modifiers on my homerow.""" start="00:18:32.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I tap the letter a, I get an a.""" start="00:18:36.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I hold it down for longer than 200 milliseconds,""" start="00:18:40.100" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""it acts as the Meta modifier,""" start="00:18:43.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and really I can add""" start="00:18:46.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""as many layers to my keyboard as I want.""" start="00:18:48.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't use a little stenotype.""" start="00:18:52.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thanks to Full Keyboard Steno, the Plover plugin,""" start="00:18:55.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I use my whole keyboard.""" start="00:18:59.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I have an alternative keyboard layout on it,""" start="00:19:02.020" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so, even when I'm typing in the traditional way,""" start="00:19:05.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""it feels amazing.""" start="00:19:08.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""My layout is called Kuron, and I lay it over Melani""" start="00:19:10.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so that I have both available to me at all times.""" start="00:19:15.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't get them confused because I set them off""" start="00:19:19.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the way I press keys.""" start="00:19:24.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I press one key at a time,""" start="00:19:26.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm using Kuron, my keyboard layout.""" start="00:19:29.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I press multiple keys at the same time""" start="00:19:32.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and let them go quickly,""" start="00:19:35.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then I'm using stenotypy, in my case Melani.""" start="00:19:37.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And if I hold one key longer than 200 milliseconds,""" start="00:19:41.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then I'm activating it as a modifier key or a layer key.""" start="00:19:45.241" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I always know what state I'm in by the way I press my keys.""" start="00:19:51.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's impossible for me to get confused.""" start="00:19:56.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Holding multiple modifiers is not a problem""" start="00:20:03.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because the keycaps used for stenotypy are flat and square.""" start="00:20:07.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Pressing two or more keys at once""" start="00:20:13.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the same finger is easy.""" start="00:20:15.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Notice how close they are to each other.""" start="00:20:18.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In stenotypy, the homerow is the border""" start="00:20:21.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""between the two rows of keys.""" start="00:20:25.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It took me a while to get used to it,""" start="00:20:28.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but now that I am used to it, I quite like it.""" start="00:20:31.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So if I have to press a hotkey""" start="00:20:35.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with all six modifiers, Shift, Control, Meta,""" start="00:20:38.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Alt, Hyper, Super, it's easy.""" start="00:20:43.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thanks to Kanata, I have a Greek layer on my board.""" start="00:20:50.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Additionally, I have alpha, beta, and gamma layers""" start="00:20:54.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that send sequences of keys that I can use as hotkeys""" start="00:20:58.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""in both GNU Emacs and Lem.""" start="00:21:03.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Maybe you noticed a few while I was programming.""" start="00:21:06.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now it's possible to bring the Space Cadet""" start="00:21:10.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to any keyboard and to build on its wonderful ideas.""" start="00:21:12.960" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here I'll note that another Emacser, Excalamus,""" start="00:21:20.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""has made a page called Plover with Emacs,""" start="00:21:24.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with information on how to use Emacs""" start="00:21:27.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the standard stenotype,""" start="00:21:30.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the one that has two rows,""" start="00:21:32.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the one I call a little stenotype.""" start="00:21:34.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""While I use my full keyboard,""" start="00:21:37.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I understand how a small board can be useful.""" start="00:21:39.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Finger movement is greatly reduced,""" start="00:21:43.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""leading to a very ergonomic typing experience.""" start="00:21:46.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In fact, all of the speed records""" start="00:21:49.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""are set with this stenotype, the standard stenotype.""" start="00:21:53.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""There are many great ideas on this page.""" start="00:21:58.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thank you, Excalamus.""" start="00:22:01.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Special thanks to Richard Stallman,""" start="00:22:06.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the creator of GNU Emacs and the Free Software Foundation,""" start="00:22:09.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Sasaki Ryosuke, first name Ryosuke,""" start="00:22:13.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the creator and lead developer of Lem,""" start="00:22:16.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Mirabai Knight, the creator of the Open Steno Project,""" start="00:22:20.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which oversees the development of Plover,""" start="00:22:24.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and jtroo, the creator and lead developer of Kanata.""" start="00:22:26.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The views expressed in this talk are solely my own.""" start="00:22:32.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I have no connection to any of the parties mentioned herein""" start="00:22:37.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and therefore cannot be seen""" start="00:22:41.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""as representing them in any capacity.""" start="00:22:43.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""What I've said cannot be taken as medical advice.""" start="00:22:45.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used the TranSide theme for GNU Emacs in this talk.""" start="00:22:50.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's beautiful and functional.""" start="00:22:54.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I love how the code looks, and I can read the comments.""" start="00:22:57.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Lem, I used Gruber.""" start="00:23:03.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Again, the comments are readable, and the code looks nice.""" start="00:23:05.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I first started using Emacs,""" start="00:23:11.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used the Wheatgrass theme.""" start="00:23:13.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Another theme that I love is os1.""" start="00:23:19.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's a light, warm, modern theme for Emacs""" start="00:23:24.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""inspired by film palettes.""" start="00:23:28.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Regarding typography, for programming,""" start="00:23:35.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used JuliaMono, which was designed by Cormullion.""" start="00:23:38.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's extensive, and it's beautiful.""" start="00:23:43.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For graphics, I used PromptFont,""" start="00:23:48.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which was made by Yukari Hafner.""" start="00:23:51.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's very talented.""" start="00:23:54.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I really like her work, including this font.""" start="00:23:56.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""There are so many packages that I love in Emacs.""" start="00:24:01.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I talked about all of them,""" start="00:24:05.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""my talk would last for days,""" start="00:24:07.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so I'm only going to mention three.""" start="00:24:09.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Keycast.""" start="00:24:12.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""At the top of the screen,""" start="00:24:14.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you can see the commands I'm executing""" start="00:24:15.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and how I'm invoking those commands.""" start="00:24:18.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""That's Keycast.""" start="00:24:20.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Rainbow Delimiters is another one I like.""" start="00:24:21.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It lets me know visually""" start="00:24:25.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when my parentheses are out of balance.""" start="00:24:27.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Very helpful when I'm programming in Lisp.""" start="00:24:30.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Moodline is another.""" start="00:24:35.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The modeline is where I can see relevant information""" start="00:24:37.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""about the file I'm working on.""" start="00:24:42.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Moodline only gives me the information I want.""" start="00:24:46.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm not really worried about too many things, just""" start="00:24:50.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the file name, the mode I'm in, and where I am in the file.""" start="00:24:55.461" video="mainVideo-steno" id="subtitle"]]
+
+
+
+Captioner: daniel
+
Questions or comments? Please e-mail [z111.513.321@gmail.com](mailto:z111.513.321@gmail.com?subject=Comment%20for%20EmacsConf%202022%20steno%3A%20Programming%20with%20steno)
diff --git a/2023/info/steno-before.md b/2023/info/steno-before.md
index 3299b6aa..8f43a9e8 100644
--- a/2023/info/steno-before.md
+++ b/2023/info/steno-before.md
@@ -8,12 +8,12 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03.
Format: 26-min talk; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference
Etherpad: <https://pad.emacsconf.org/2023-steno>
Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
-Status: Ready to stream
+Status: Now playing on the conference livestream
<div>Times in different timezones:</div><div class="times" start="2023-12-03T18:55:00Z" end="2023-12-03T19:25:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~1:55 PM - 2:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~12:55 PM - 1:25 PM CST (US/Central)<br />Sunday, Dec 3 2023, ~11:55 AM - 12:25 PM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~10:55 AM - 11:25 AM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~6:55 PM - 7:25 PM UTC <br />Sunday, Dec 3 2023, ~7:55 PM - 8:25 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~8:55 PM - 9:25 PM EET (Europe/Athens)<br />Monday, Dec 4 2023, ~12:25 AM - 12:55 AM IST (Asia/Kolkata)<br />Monday, Dec 4 2023, ~2:55 AM - 3:25 AM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~3:55 AM - 4:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2023/watch/gen/">Find out how to watch and participate</a></strong></div>
-
+<div class="vid"><video controls preload="none" id="steno-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 25:03 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2023-steno">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--final.webm">Download --final.webm (66MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.txt">Download --main.txt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.webm">Download --main.webm (66MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--normalized.opus">Download --normalized.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--original.mp4">Download --original.mp4 (488MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--reencoded.webm">Download --reencoded.webm (61MB)</a></li><li><a href="https://toobnix.org/w/1xodScC6DPkfbnqG5FmbB3">View on Toobnix</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file