WEBVTT captioned by sachac, checked by sachac NOTE Introduction 00:00:00.000 --> 00:00:04.039 Hi, I'm going to give you a little demo 00:00:04.040 --> 00:00:06.439 of a project that I'm working on 00:00:06.440 --> 00:00:09.839 which is called the `orgdungeon`. 00:00:09.840 --> 00:00:16.039 As you can see here, they are just a bunch of Org files 00:00:16.040 --> 00:00:20.559 and also an Emacs Lisp file. 00:00:20.560 --> 00:00:26.799 What I found is that if you have these Org files 00:00:26.800 --> 00:00:30.919 and then you have an Emacs Lisp file as a source 00:00:30.920 --> 00:00:36.879 to control how to progress from one file to another, 00:00:36.880 --> 00:00:40.519 it will give you a game-like experience. 00:00:40.520 --> 00:00:43.479 It's like the old game Myst. 00:00:43.480 --> 00:00:46.119 It was developed with the technology 00:00:46.120 --> 00:00:48.759 HyperCard for the Macintosh. 00:00:48.760 --> 00:00:53.199 Basically, it uses a similar technology, 00:00:53.200 --> 00:00:57.559 so a similar interface to the developer 00:00:57.560 --> 00:01:01.199 who was using that technology to develop the game. NOTE Demo 00:01:01.200 --> 00:01:03.799 Concretely, I'm going to give you 00:01:03.800 --> 00:01:08.879 a demo of how the game looks like. 00:01:08.880 --> 00:01:14.839 So, this is a very vanilla Emacs setup. 00:01:14.840 --> 00:01:18.639 Then I open up the first Org file. 00:01:18.640 --> 00:01:22.839 The Org file is just a bunch of text, 00:01:22.840 --> 00:01:25.519 but it tells you a story. 00:01:25.520 --> 00:01:27.359 So you wake up somewhere, 00:01:27.360 --> 00:01:32.599 and then there is a dog-like robot called Emi around you. 00:01:32.600 --> 00:01:37.759 And then it tells you what you should do. 00:01:37.760 --> 00:01:40.799 Following the instructions... 00:01:40.800 --> 00:01:42.719 For example, here it tells you 00:01:42.720 --> 00:01:46.239 down there is one thing called "code block," 00:01:46.240 --> 00:01:51.359 and then you can evaluate it by pressing `C-c C-c`. 00:01:51.360 --> 00:01:53.639 Then we can just go there 00:01:53.640 --> 00:01:55.239 and then just evaluate the code block. 00:01:55.240 --> 00:02:00.239 So technically it just runs the Emacs Lisp file, 00:02:00.240 --> 00:02:04.999 because you can see here, if you load Emacs Lisp... 00:02:05.000 --> 00:02:07.159 It just evaluates that Emacs Lisp file. 00:02:07.160 --> 00:02:09.799 I can just say `C-c C-c`. 00:02:09.800 --> 00:02:12.319 Then for this one, I just say yes, 00:02:12.320 --> 00:02:16.519 and then it will jump to another file. 00:02:16.520 --> 00:02:18.759 But in the game, I call it the plane. 00:02:18.760 --> 00:02:21.039 So it jumps to another plane. 00:02:21.040 --> 00:02:24.039 Yeah, so... 00:02:24.040 --> 00:02:26.399 In the other one, it's just saying that 00:02:26.400 --> 00:02:29.879 there is a function called `emi-escape-10`. 00:02:29.880 --> 00:02:33.479 Assuming that you don't have any experience 00:02:33.480 --> 00:02:34.759 how to use Emacs, 00:02:34.760 --> 00:02:38.759 so you have no idea how to do that, 00:02:38.760 --> 00:02:41.319 but down there, it's saying that 00:02:41.320 --> 00:02:44.319 there is a key combination called `C-h f`, 00:02:44.320 --> 00:02:48.399 and it will bring up the help system. 00:02:48.400 --> 00:02:52.559 Then you can read the help file of `emi-escape-10`. 00:02:52.560 --> 00:02:55.739 So you can just do that. For example, `C-h f` 00:02:55.740 --> 00:03:02.999 and then `describe-function` `emi-escape-10` here. 00:03:03.000 --> 00:03:06.319 It will show you the help file. 00:03:06.320 --> 00:03:10.919 Then it's just saying that you can press `M-x`, 00:03:10.920 --> 00:03:13.519 and Meta usually mapped to Alt, 00:03:13.520 --> 00:03:15.079 and then yeah. 00:03:15.080 --> 00:03:18.719 Then you can just close this help file using `C-x 1`. 00:03:18.720 --> 00:03:21.399 I'm just going to do that. And then yeah... 00:03:21.400 --> 00:03:31.479 I'm just try that. `M-x` and then `emi-escape-10`. 00:03:31.480 --> 00:03:33.359 All right. NOTE emi-escape-12 00:03:33.360 --> 00:03:36.039 So I will jump to another file. 00:03:36.040 --> 00:03:39.359 Or in the game, you jump to another plane. 00:03:39.360 --> 00:03:40.338 And now you know that 00:03:40.339 --> 00:03:44.839 there is a function called `emi-escape-12`. 00:03:44.840 --> 00:03:47.638 And yeah, you can just do that `emi`, 00:03:47.639 --> 00:03:50.399 because you learned it previously, right. 00:03:50.400 --> 00:03:52.079 `emi-escape-12`. 00:03:52.080 --> 00:03:55.119 But this time, it asks you for a password, 00:03:55.120 --> 00:03:57.799 which you probably don't know, right? 00:03:57.800 --> 00:03:59.839 If you just type in anything, 00:03:59.840 --> 00:04:02.719 it will just say incorrect password. 00:04:02.720 --> 00:04:06.359 But yeah, it's part of the learning experience 00:04:06.360 --> 00:04:07.279 because previously you learned 00:04:07.280 --> 00:04:10.319 that you should use the help file, 00:04:10.320 --> 00:04:16.199 help system to read the help file of a function, 00:04:16.200 --> 00:04:18.319 so you can just use the help file 00:04:18.320 --> 00:04:25.839 to look for the help of `emi-escape-12`. 00:04:25.840 --> 00:04:29.519 Then, yeah, the help file will say that 00:04:29.520 --> 00:04:31.239 you should enter a password, 00:04:31.240 --> 00:04:34.159 and the password is `emi`. 00:04:34.160 --> 00:04:36.439 Right. So you can just do that. 00:04:36.440 --> 00:04:42.239 Write `emi-escape-12`, 00:04:42.240 --> 00:04:47.039 and then now you know the password is `emi`. Right. NOTE The rest of the game 00:04:47.040 --> 00:04:51.839 So you can progress along these different files, 00:04:51.840 --> 00:04:53.519 and then if you... 00:04:53.520 --> 00:04:54.639 Okay, it's like a game, 00:04:54.640 --> 00:04:57.279 but at the same time, it also teaches you 00:04:57.280 --> 00:05:01.679 something about how Emacs works. 00:05:01.680 --> 00:05:04.599 For example, like the previous one, 00:05:04.600 --> 00:05:07.279 you know how to use the help file, for example, 00:05:07.280 --> 00:05:11.519 but in the later part, you will learn how to 00:05:11.520 --> 00:05:14.279 evaluate some Emacs Lisp code 00:05:14.280 --> 00:05:17.159 and also how to write some Emacs Lisp code 00:05:17.160 --> 00:05:19.559 as well, and then you will learn 00:05:19.560 --> 00:05:23.399 the difference between interactive commands 00:05:23.400 --> 00:05:27.239 and also just ordinary functions, for example. 00:05:27.240 --> 00:05:31.399 Now, I just created a few Org files, 00:05:31.400 --> 00:05:36.439 but I'm actively adding more Org files 00:05:36.440 --> 00:05:39.599 so that we can have a complete kind of 00:05:39.600 --> 00:05:42.559 educational experience. 00:05:42.560 --> 00:05:45.639 If you want to follow along [with] this project, 00:05:45.640 --> 00:05:51.359 you can just go to my Github repository. 00:05:51.360 --> 00:05:56.539 I hope you enjoyed this little demo. 00:05:56.540 --> 00:06:03.281 Thank you.