diff options
39 files changed, 34039 insertions, 15 deletions
diff --git a/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt b/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt new file mode 100644 index 00000000..3bccf8fb --- /dev/null +++ b/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--answers.vtt @@ -0,0 +1,411 @@ +WEBVTT + +NOTE +Introduction + +00:00:00.000 --> 00:00:05.799 +[Amin]: All right. Hey, everyone. Thanks, Zach, for the great talk. Here is a live Q&A. + +00:00:05.800 --> 00:00:12.399 +People can start putting the questions onto the pad, and Zach will answer them. + +00:00:12.400 --> 00:00:15.007 +Zach, take it away. Thanks, Zach. Here is a live Q&A. + +00:00:15.008 --> 00:01:12.599 +[Zach]: Okay. So, first question. Let's see. + +NOTE Why did you choose an internal state versus many 'state buffers'? + +00:01:12.600 --> 00:01:16.039 +Okay. So, the first question is why did you choose an internal state + +00:01:16.040 --> 00:01:22.959 +versus many state buffers? So, the main reason was more control + +00:01:22.960 --> 00:01:29.599 +from the game perspective. I mean, if this was to be a tool, + +00:01:29.600 --> 00:01:35.519 +if this was to be a tool that perhaps was used for more, like, + +00:01:35.520 --> 00:01:41.479 +real-world applications where maybe you'd want users to be able to, like, + +00:01:41.480 --> 00:01:43.399 +use any of their preexisting + +00:01:43.400 --> 00:01:48.559 +— like, if you wanted to really make a grid of cells that would — + +00:01:48.560 --> 00:01:53.639 +so, then I think maybe using real buffers in that case + +00:01:53.640 --> 00:01:56.199 +would probably be the better thing since you wouldn't have to, like, + +00:01:56.200 --> 00:02:04.239 +redo everything. But I found that just, like, centralizing the state + +00:02:04.240 --> 00:02:10.719 +into one place for the game at least made it the easiest to implement. + +NOTE Do you have plans to port shenzhen.io to Emacs? + +00:02:10.720 --> 00:02:14.079 +Next one. Do you have plans to port Shenzhen I.O. to Emacs? + +00:02:14.080 --> 00:02:19.559 +Well, I was actually thinking about exopunks, perhaps, + +00:02:19.560 --> 00:02:26.599 +but Shenzhen I.O. would be pretty cool to add as well. + +00:02:26.600 --> 00:02:29.959 +So, this doesn't use any Wasm at all. + +NOTE Did this use WASM? + +00:02:29.960 --> 00:02:33.799 +So, the next question is, did this use Wasm? + +00:02:33.800 --> 00:02:41.999 +So, it's asking about, like, using Wasm Emacs. So, this actually — + +00:02:42.000 --> 00:02:45.239 +this doesn't use any Wasm under the hood. + +00:02:45.240 --> 00:02:49.639 +It's pretty much analogous to the game TIS 100 is to real assembly + +00:02:49.640 --> 00:02:59.799 +as this game is to web assembly. Slight resemblance, but, yeah, just a game. + +NOTE Why wasm rather than a more traditional Assembly dialect? It wouldn't be harder to implement, right? + +00:02:59.800 --> 00:03:06.039 +So, okay, so the next question is why Wasm + +00:03:06.040 --> 00:03:09.359 +rather than a more traditional assembly dialect? + +00:03:09.360 --> 00:03:11.799 +It wouldn't be harder to implement, right? + +00:03:11.800 --> 00:03:16.919 +So, it would actually probably have been easier, in all honesty, just because, + +00:03:16.920 --> 00:03:20.679 +you know, more traditional — like, TIS 100, for example. + +00:03:20.680 --> 00:03:24.599 +You have each of the — you have each instruction on a line, + +00:03:24.600 --> 00:03:29.519 +and it's pretty easy to, you know, syntax hiding just one line. + +00:03:29.520 --> 00:03:32.599 +So, this with the weird S expressions across the line, deeply nested, + +00:03:32.600 --> 00:03:37.239 +and then, like, the step debugger thing and these weird cell things. + +00:03:37.240 --> 00:03:40.239 +They made things really complicated, but I definitely wanted to, like — + +00:03:40.240 --> 00:03:47.559 +the main reason is I didn't — I wanted it to not — to look as least as — + +00:03:47.560 --> 00:03:52.919 +to look — to resemble TIS 100 as little as possible, + +00:03:52.920 --> 00:03:54.399 +even though it's still pretty much the same game. + +00:03:54.400 --> 00:04:44.439 +[Amin]: Thanks, Zach. I think we still have about, like, eight minutes or so. + +00:04:44.440 --> 00:04:46.159 +Or eight and a half minutes of Q&A time. + +00:04:46.160 --> 00:04:47.919 +So, folks, if you do have any other questions, + +00:04:47.920 --> 00:04:50.119 +please do keep them coming in the pad, and, yeah, + +00:04:50.120 --> 00:04:53.079 +Zach will continue answering them. + +00:04:53.080 --> 00:05:08.959 +[Zach]: Sounds good. Thank you. + +NOTE Any next projects on your mind? + +00:05:08.960 --> 00:05:11.399 +So, next question. Any next projects on your mind? + +00:05:11.400 --> 00:05:15.679 +Yeah, actually, I have a couple ideas for projects, + +00:05:15.680 --> 00:05:21.639 +and these would all be, hopefully, maybe more useful. + +00:05:21.640 --> 00:05:24.119 +I think TreeSitter is pretty + +00:05:24.120 --> 00:05:28.639 +cool. I think there's a lot of directions that I could go, like, + +00:05:28.640 --> 00:05:34.639 +there's a plugin in NeoVim called NeoGen, which generates documentation. + +00:05:34.640 --> 00:05:41.359 +That would be cool. I've been playing with this. What else? + +00:05:41.360 --> 00:05:45.559 +Yeah, I mean, hopefully, next year, at next the Emacs conference, + +00:05:45.560 --> 00:05:52.679 +I could be presenting something more useful. + +NOTE Does this work with any other paren-based editing packages? + +00:05:52.680 --> 00:05:57.479 +Next question. Does this work with any other paren-based editing packages? + +00:05:57.480 --> 00:06:02.759 +Not at all. Not at all. In fact, just because of the way the buffer was set up, + +00:06:02.760 --> 00:06:07.999 +how it's just, like, the illusion of a buffer, like, not even, like, + +00:06:08.000 --> 00:06:17.119 +the syntax parsing works correctly, because just because everything's, like, + +00:06:17.120 --> 00:06:19.239 +the way the grids are set up, like, you have, like, + +00:06:19.240 --> 00:06:23.839 +the other cells kind of interfering with the way that parse is. + +00:06:23.840 --> 00:06:29.799 +But the way it was architected, it's actually a really simple macro. + +00:06:29.800 --> 00:06:33.159 +There's a little macro called, like, run in buffer. + +00:06:33.160 --> 00:06:37.279 +You have, like, run in buffer, and then you put your elist code, + +00:06:37.280 --> 00:06:42.439 +and then it tries to create the illusion that it's actually running + +00:06:42.440 --> 00:06:46.919 +in a real buffer. So this macro kind of does all the configuration setup. + +NOTE What kind of tool could use this idea? + +00:06:46.920 --> 00:06:55.839 +So, I mean, maybe with, like, more configuration settings, + +00:06:55.840 --> 00:06:58.399 +maybe something like that could have been done. + +00:06:58.400 --> 00:07:04.239 +So next question. What kind of tool could you use this idea? + +00:07:04.240 --> 00:07:09.479 +Oh, going back to the next project on your mind. + +00:07:09.480 --> 00:07:12.639 +This actually came up to my mind as, like, a graphical. + +00:07:12.640 --> 00:07:21.359 +So, in terms of, like, there's a lot of graphing tools, like ASCII. + +00:07:21.360 --> 00:07:25.679 +So, like, you type in some text representation, it generates an ASCII document. + +00:07:25.680 --> 00:07:28.599 +I think it would be really cool to have, like, + +00:07:28.600 --> 00:07:31.079 +an Emacs package that sort of works, like, + +00:07:31.080 --> 00:07:35.519 +those online really slick graph drawing tools. + +00:07:35.520 --> 00:07:40.919 +So, like, you can just press tab, and it draws a new box with an ASCII arrow, + +00:07:40.920 --> 00:07:43.759 +and then, like, it can create these diagrams really easy. + +00:07:43.760 --> 00:07:46.359 +I think that would be a really cool project. + +00:07:46.360 --> 00:07:52.039 +And so, something like that, obviously, like, you have different cells. + +00:07:52.040 --> 00:07:56.279 +And so, that's actually another thing I think would be cool to work on. + +NOTE How did you go about designing the puzzles? + +00:07:56.280 --> 00:08:04.039 +So, designing puzzles. So, it's funny. + +00:08:04.040 --> 00:08:07.879 +If you listen to Zach Barth's talk about TS100, + +00:08:07.880 --> 00:08:12.759 +he goes into, like, you pretty just, like, you pretty just, + +00:08:12.760 --> 00:08:16.159 +it's just like you make up a puzzle you think could work, + +00:08:16.160 --> 00:08:18.279 +and chances are it does end up working. + +00:08:18.280 --> 00:08:23.959 +And that's how I roll, at least my custom puzzles in the game, just, like, + +00:08:23.960 --> 00:08:28.599 +come up with some random idea, think it probably should work, + +00:08:28.600 --> 00:08:35.839 +and then try to go implementing it. And usually, it's implementable. + +00:08:35.840 --> 00:08:39.319 +I mean, four by three boxes, you can do quite a bit. + +NOTE What are your favorite changes in the upcoming Emacs 29? + +00:08:39.320 --> 00:08:44.119 +And I don't put any restrictions on the cells, like, TS100. + +00:08:44.120 --> 00:08:47.719 +What are your favorite changes in the upcoming Emacs 29? + +00:08:47.720 --> 00:08:50.479 +So, definitely TreeSitter is pretty cool. + +00:08:50.480 --> 00:08:55.679 +Just because, like, you have syntax, you have access to that. + +00:08:55.680 --> 00:08:59.719 +You can build syntax-aware extensions. + +00:08:59.720 --> 00:09:03.559 +So, like, I was just I was playing around with it, and it's pretty cool. + +00:09:03.560 --> 00:09:07.479 +You can just, like, get the syntax tree and search for syntax patterns. + +NOTE Are there tools to add more puzzles? + +00:09:07.480 --> 00:09:25.199 +So, it's exciting to see what might be done with that. + +00:09:25.200 --> 00:09:28.879 +Are there tools to add more puzzles? So, there's not tools, + +00:09:28.880 --> 00:09:35.959 +but in the code itself, there's a file called azimbox puzzles. + +00:09:35.960 --> 00:09:39.079 +And it's pretty much just, like, you have a generator function. + +00:09:39.080 --> 00:09:43.079 +You configure it's just, like, you're pretty much defining a struct. + +00:09:43.080 --> 00:09:45.679 +So, I mean, if you're familiar with the Emax list, + +00:09:45.680 --> 00:09:47.959 +you can kind of define puzzles pretty easily. + +00:09:47.960 --> 00:09:54.279 +Define where your inputs are, generate a function to generate these inputs, + +00:09:54.280 --> 00:09:57.799 +and then a generator function to generate which outputs you want. + +00:09:57.800 --> 00:10:02.159 +So, it's pretty, I mean, code-wise, it's pretty self-contained. + +00:10:02.160 --> 00:10:10.239 +But yeah, maybe I could have done, like, a more streamlined job with that. + +00:10:10.240 --> 00:10:17.159 +Like, a binding to graph is? Oh, yeah, with the graph thing I was mentioning. + +00:10:17.160 --> 00:10:23.479 +So, that would also actually be pretty cool, too. But I was thinking more just, + +00:10:23.480 --> 00:10:31.119 +like, plain ASCII graphs. Just, like, you already have just, like, so, + +00:10:31.120 --> 00:10:33.439 +a tool I've seen recently is called Diagon. + +00:10:33.440 --> 00:10:38.079 +So, you basically type in, like, some really, like, + +00:10:38.080 --> 00:10:41.759 +a textual representation of the graph, like, A arrow B, B arrow C, + +00:10:41.760 --> 00:10:44.079 +and it generates, like, an ASCII diagram. + +00:10:44.080 --> 00:10:52.799 +So, something like that would be cool, like, so, like, you have, like, + +00:10:52.800 --> 00:11:01.839 +a grid of, like, little nodes, and control F maybe brings you to the next one, + +00:11:01.840 --> 00:11:07.279 +and maybe tab, maybe would create a new node with a new ASCII + +00:11:07.280 --> 00:11:20.879 +arrow to it. That would be a cool, that would be a really cool extension. + +00:11:20.880 --> 00:11:25.319 +But, yeah, I mean, obviously, graph is an amazing tool. + +00:11:25.320 --> 00:11:28.079 +So, a lot could be done with that as well. + +00:11:28.080 --> 00:12:49.679 +[Amin]: I think we have about, like, a minute or a minute and a half of live questions. + +00:12:49.680 --> 00:12:50.719 +We are opening the Q&A, this BB room for people to join. + +00:12:50.720 --> 00:12:51.759 +So, folks who want to do that are welcome to do so. + +00:12:51.760 --> 00:12:52.199 +And, yeah, after that, the stream will move on. + +00:12:52.200 --> 00:12:52.359 +But you can still come in this BB room or keep asking questions on the web. + +00:12:52.360 --> 00:12:53.439 +Okay. I think that's about all the time that we have on the stream. + +00:12:53.440 --> 00:12:55.079 +Thanks again, Zach, so much, and both for the Q&A and for your great talk, + +00:12:55.080 --> 00:12:57.319 +and see you all around. Thank you. + +00:12:57.320 --> 00:12:58.239 +Cheers. + +00:12:58.240 --> 00:12:58.359 +[Zach]: Thank you. + +00:12:58.360 --> 00:14:19.200 +You are currently the only person in this conference. diff --git a/2022/captions/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--answers.vtt b/2022/captions/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--answers.vtt new file mode 100644 index 00000000..b13e2c13 --- /dev/null +++ b/2022/captions/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--answers.vtt @@ -0,0 +1,970 @@ +WEBVTT + +NOTE Introduction + +00:00:00.000 --> 00:00:06.999 +[Amin]: Okay, so for folks, you can start asking your questions over IRC or the PAD, + +00:00:07.000 --> 00:00:10.839 +and after a minute or two, we'll also open up this big blue button room + +00:00:10.840 --> 00:00:14.799 +for those of you who would like to join here to ask these questions directly. + +00:00:14.800 --> 00:00:16.199 +Michael, take it away. + +00:00:16.200 --> 00:00:21.599 +[Michael]: Okay, cool. It looks like we've got two questions on the PAD. + +NOTE How does this approach compare to using tq.el, Emacs' built-in library for transaction queues? + +00:00:21.600 --> 00:00:26.039 +The first, how does this approach compare to using TQ.L, + +00:00:26.040 --> 00:00:29.279 +Emacs's built-in library for transaction queues? + +00:00:29.280 --> 00:00:31.759 +Yeah, that's actually a great question. + +00:00:31.760 --> 00:00:35.159 +I should have called out TQ in the talk + +00:00:35.160 --> 00:00:40.559 +because I actually took a hard look at it in terms of my implementation. + +00:00:40.560 --> 00:00:47.159 +You could absolutely build this using TQ.L. I chose not to because + +00:00:47.160 --> 00:00:51.199 +I didn't see any compelling benefits to pay the cost + +00:00:51.200 --> 00:00:58.199 +of adding another dependency and creating a buffer for each new connection. + +00:00:58.200 --> 00:01:04.679 +In the actual implementation, input is buffered into a variable connected + +00:01:04.680 --> 00:01:10.479 +to the connection object and just handled there. + +NOTE Have you considered using the aio.el library (written by Chris Wellons) that implements async/await for Emacs lisp using promises? + +00:01:10.480 --> 00:01:16.439 +Have you considered using the AIO.L library written by Chris Wellens, + +00:01:16.440 --> 00:01:22.239 +implements async await for Emacs Lisp using promises. Implemented + +00:01:22.240 --> 00:01:25.559 +using Elisp's record data structure turns the nested callbacks into + +00:01:25.560 --> 00:01:30.279 +regular-looking Elisp code without introducing new keywords. Cool. No, + +00:01:30.280 --> 00:01:34.959 +I didn't because I was not aware of the package. But the fact + +00:01:34.960 --> 00:01:40.519 +that it was written by Chris Wellens alone is enough to get me to take a look. + +00:01:40.520 --> 00:01:43.879 +So yeah, perhaps that could have been another implementation. + +00:01:43.880 --> 00:01:49.159 +But I don't know. This kind of code journey finally got me + +00:01:49.160 --> 00:02:03.919 +to understand Emacs Lisp. I don't regret anything else. + +00:02:03.920 --> 00:02:07.119 +[Amin]: I think your last sentence was a little cutting off, Michael. + +00:02:07.120 --> 00:02:09.199 +Maybe you were a little far from the mic. + +00:02:09.200 --> 00:02:13.199 +But yeah. Okay. All I was going to say is, yeah, I mean, + +00:02:13.200 --> 00:02:19.679 +leave it to Chris Wellens to solve the problem in all generality. + +00:02:19.680 --> 00:02:27.479 +All I noted at the end was given that this little project + +00:02:27.480 --> 00:02:34.079 +is what finally got me to understand Emacs macros or Lisp macros, you know, + +00:02:34.080 --> 00:02:42.719 +I kind of, I don't regret running down this implementation. + +00:02:42.720 --> 00:02:45.439 +We've got another question coming in. + +NOTE Are you aware that EMMS has an MPD client? There's also mpc.el built into Emacs. + +00:02:45.440 --> 00:02:49.399 +Am I aware that Ems has an MPD, I absolutely am. + +00:02:49.400 --> 00:02:54.399 +And there's actually another MPD client for Emacs called MPD-L. + +00:02:54.400 --> 00:03:05.399 +Yes, yes there is. So again, I probably should have talked about this in before, + +00:03:05.400 --> 00:03:10.759 +but I was pressed for time. I was not looking, yeah, + +00:03:10.760 --> 00:03:16.239 +I was not looking for a full-fledged MPD client. Sometimes MPD-L + +00:03:16.240 --> 00:03:22.839 +and MPC.L can give you a full UX within Emacs + +00:03:22.840 --> 00:03:27.599 +and I would absolutely recommend them if that's what you're looking for. + +00:03:27.600 --> 00:03:36.039 +I wanted to just add a few tweaks to my workflow. + +00:03:36.040 --> 00:03:41.039 +Now increase the volume while coding, put the track name and the mode line, + +00:03:41.040 --> 00:03:46.159 +things like that. So I felt like those were a little heavyweight. + +00:03:46.160 --> 00:03:53.439 +In fact, I ended up corresponding with the author of MPD-L. + +00:03:53.440 --> 00:04:00.679 +And kind of the analogy I came up with was if, you know, MPD-L is to MPD + +00:04:00.680 --> 00:04:03.959 +as good news is to email, I wanted to build mail utils. + +00:04:03.960 --> 00:04:07.039 +I just wanted a couple of very tight little utilities + +00:04:07.040 --> 00:04:12.879 +that would get me what I wanted. But yeah, actually + +00:04:12.880 --> 00:04:15.559 +that's also a great callout. Perhaps I should have included references + +00:04:15.560 --> 00:04:39.719 +to those clients. One thing I will mention is + +00:04:39.720 --> 00:04:42.559 +I think we've got plenty of time for questions. + +00:04:42.560 --> 00:04:47.879 +Maybe close to 25 minutes or half an hour, which is very interesting. + +00:04:47.880 --> 00:04:51.679 +I think in many cases it's been more than the actual length of the talks. + +00:04:51.680 --> 00:04:57.039 +And I think that's a side effect of sort of, I guess, going with two tracks, + +00:04:57.040 --> 00:05:01.879 +which is nicer. There's much more breathing room between the talks this year. + +00:05:01.880 --> 00:05:05.759 +So if there are questions, as long as there are questions coming in, + +00:05:05.760 --> 00:05:09.759 +or if you do also want to present anything extended, you know, + +00:05:09.760 --> 00:05:11.999 +more than what you covered in your talk, you're also welcome to do that + +00:05:12.000 --> 00:05:14.439 +and, like, stay here. So. + +00:05:14.440 --> 00:05:20.359 +Okay. Cool. Now I'm happy to hang out. This is an interesting question. + +NOTE Have you seen the Lonesome Pine Specials? + +00:05:20.360 --> 00:05:22.839 +Have I seen the Lonesome Pine specials? + +00:05:22.840 --> 00:05:28.079 +During the talk he saw my music library and figured I'd be interested. + +00:05:28.080 --> 00:05:32.279 +I have not. But oh, interesting. Bella Fleck. Cool. + +00:05:32.280 --> 00:06:10.359 +I will be checking out Lonesome Pine, thank you. + +00:06:10.360 --> 00:07:27.159 +Oh, that's an awesome, awesome tip. Cool. + +00:07:27.400 --> 00:07:29.999 +That's probably going to be it for the questions. + +00:07:30.000 --> 00:07:33.999 +Do we just, do we hang out for the balance of the time? + +00:07:34.000 --> 00:07:37.679 +Yeah, sure. I think there's actually one new question on the pad + +00:07:37.680 --> 00:07:40.999 +and I might have one to ask as well, but yeah, otherwise we can. + +00:07:41.000 --> 00:07:44.399 +Oh, apologies. Yeah, I needed to scroll down. + +NOTE Would using dynamic/special vars add anything interesting / easier to async elisp in your opinion? + +00:07:44.400 --> 00:07:49.679 +Would using dynamic special VARs add anything interesting, + +00:07:49.680 --> 00:07:55.239 +easier to async with? I'm not sure what you mean by + +00:07:55.240 --> 00:08:48.159 +dynamic or special variables. Can you say a little more? + +00:08:48.160 --> 00:08:54.999 +Okay, fair enough. I mean, certainly in the examples that I included, + +00:08:55.000 --> 00:09:21.919 +we could use variables at a larger scope. Yeah, yeah. + +00:09:21.920 --> 00:09:31.199 +Interesting. Good question. I would have to think on that one. + +00:09:31.200 --> 00:09:39.479 +To be honest, I went hard down the lexical binding path a few years ago + +00:09:39.480 --> 00:09:43.959 +when it was introduced to ELISP, precisely because I found dynamic binding + +00:09:43.960 --> 00:09:49.239 +so much more difficult to reason about. Possibly. + +00:09:49.240 --> 00:10:10.119 +[Amin]: So I guess one question I might have, + +00:10:10.120 --> 00:10:13.479 +prefixing it with the fact that I wasn't able to fully follow your talk + +00:10:13.480 --> 00:10:16.559 +because I've been basically behind the scenes. + +NOTE How does your project compare to some of the other MPD clients? + +00:10:16.560 --> 00:10:22.079 +But how would you say that your project compares to some of the other, + +00:10:22.080 --> 00:10:23.879 +I guess, MPD clients? + +00:10:23.880 --> 00:10:29.359 +[Michael]: Yeah, like a couple of years ago, I used to use ncmpcpp myself, + +00:10:29.360 --> 00:10:33.159 +and also I tried a bunch of different ones. + +00:10:33.160 --> 00:10:35.679 +I never quite got into using emms as one. + +00:10:35.680 --> 00:10:39.359 +[Amin]: I noticed that you mentioned that, for example, for some of the other ones, + +00:10:39.360 --> 00:10:43.079 +maybe like npc.l, yours may be much more lightweight. + +00:10:43.080 --> 00:10:47.279 +But yeah, I was wondering how you would compare them. + +00:10:47.280 --> 00:10:55.639 +[Michael]: Yeah, yeah. So those are what I would call full-fledged applications. + +00:10:55.640 --> 00:11:00.759 +You're familiar with ncmpcpp. You could swap that out as your daily driver + +00:11:00.760 --> 00:11:06.039 +for any of those. They show you the playlist. They let you browse. + +00:11:06.040 --> 00:11:15.079 +They let you set up saved playlists, et cetera, et cetera, et cetera. + +00:11:15.080 --> 00:11:19.479 +And this does none of that. This is basically a building block. + +00:11:19.480 --> 00:11:23.599 +These are building blocks for building up Emacs commands. + +00:11:23.600 --> 00:11:31.879 +So for instance, I actually have a little minor mode that holds the key cord. + +00:11:31.880 --> 00:11:36.079 +You can adjust the volume. You can skip to the next track. + +00:11:36.080 --> 00:11:44.439 +You can do a few things like that. But that's it. + +00:11:44.440 --> 00:11:48.839 +More of a tool kit than an application, I guess, is the way I would put it. + +00:11:48.840 --> 00:11:55.039 +[Amin]: Right, right. Makes a lot of sense. + +NOTE Can you share the code to the macro that creates the callback tree? + +00:11:55.040 --> 00:12:05.599 +Awesome. Another question. Can I share the code to the macro? + +00:12:05.600 --> 00:12:15.599 +Help a bit for folks. + +00:12:15.640 --> 00:12:22.519 +And it's on OPA. Let me share a link here. Or + +00:12:22.520 --> 00:12:26.879 +I guess maybe GitHub would be the better UX. I can do that right now. + +00:12:26.880 --> 00:12:27.599 +Let's see here. + +00:12:27.600 --> 00:12:32.559 +I'll put it in the pad. + +00:12:32.560 --> 00:12:34.199 +Don't judge me. It's my first list macro. + +00:12:34.240 --> 00:12:44.639 +OK. So I can do that. I can do that. I can do that. I can do that. + +00:12:44.640 --> 00:13:11.279 +I can do that. I can do that. I can do that. I can do that. + +00:13:11.280 --> 00:13:22.559 +[Amin]: I think we got all the questions. I think this is an interesting sort of, + +00:13:22.560 --> 00:13:26.399 +I guess, topic or thing that's come up today. I think multiple times, + +00:13:26.400 --> 00:13:30.919 +there was also partly mentioned in RMS's talk as part of the Q&A + +00:13:30.920 --> 00:13:33.679 +where he was sort of complaining a little bit or saying that + +00:13:33.680 --> 00:13:36.839 +how he would like to see some of org's features, I guess, + +00:13:36.840 --> 00:13:39.799 +be decoupled from org or org syntax + +00:13:39.800 --> 00:13:42.439 +and just be made available either as libraries + +00:13:42.440 --> 00:13:45.199 +or maybe as smaller minor modes that one could use then + +00:13:45.200 --> 00:13:49.279 +throughout anywhere else in Emacs. And I think I do agree, + +00:13:49.280 --> 00:13:53.559 +and especially now in the context of MPD and using it via Emacs, + +00:13:53.560 --> 00:13:57.639 +I think it's very important to also have libraries or toolkits, + +00:13:57.640 --> 00:14:02.519 +as you mentioned, to be able to build upon them however you wish. So kudos. + +00:14:02.520 --> 00:14:05.439 +Thanks so much for working on this. It's very kind of you. + +00:14:05.440 --> 00:14:09.359 +[Michael]: Yeah, I mean, there was a much remarked upon, + +00:14:09.360 --> 00:14:14.679 +perhaps even controversial talk at last year's EmacsConf by Carl Voigt, + +00:14:14.680 --> 00:14:20.879 +if memory serves, proposing that the org mode markup language be sort of + +00:14:20.880 --> 00:14:27.279 +hoisted out and given a specification, he wanted to call it org down. + +00:14:27.280 --> 00:14:30.599 +And I think some people, for reasons unclear to me, + +00:14:30.600 --> 00:14:32.039 +were highly resistant to this. + +00:14:32.040 --> 00:14:42.879 +But yeah, yeah, mm-hmm, yeah, interesting. + +NOTE There's another package (chuntaro?) in addition to wellon's aio that also implements a coroutine trampoline on the emacs event loop. any thoughts on the async/await paradigm generally red/blue functions, etc? + +00:14:42.880 --> 00:14:46.959 +There's another package, Taro, perhaps, + +00:14:46.960 --> 00:14:55.999 +pronouncing that phonetically, in addition to Welland's AIO + +00:14:56.000 --> 00:15:01.759 +that also implements a coroutine trampoline on the Emacs event loop. + +00:15:01.760 --> 00:15:03.439 +Interesting. + +NOTE Any thoughts on the async await paradigm generally, red-blue functions, etc.? + +00:15:03.440 --> 00:15:07.759 +Any thoughts on the async await paradigm generally, red-blue functions, + +00:15:07.760 --> 00:15:10.879 +et cetera? Oh, wow. + +00:15:10.880 --> 00:15:18.799 +What color are my functions could be the topic of another talk in and of itself. + +00:15:18.800 --> 00:15:24.239 +Yeah, that's sort of the problem with async, isn't it? It's like a virus + +00:15:24.240 --> 00:15:26.399 +that infects your code base once you start. + +00:15:26.400 --> 00:15:31.959 +And having spent a fair amount of time in the past year or two + +00:15:31.960 --> 00:15:36.959 +writing async rust, I guess I've kind of made my peace with it. + +00:15:36.960 --> 00:15:39.639 +I was highly resistant to it at first. + +00:15:39.640 --> 00:15:46.919 +But who is that venture capitalist that diagrammed + +00:15:46.920 --> 00:15:50.079 +the uptake of new technology? And at first, + +00:15:50.080 --> 00:15:53.919 +you sort of saw this exponential curve of enthusiasm, + +00:15:53.920 --> 00:15:57.079 +then a peak, and you called it the valley of despair, + +00:15:57.080 --> 00:16:00.439 +and then sort of a plateau of acceptance. + +00:16:00.440 --> 00:16:05.519 +I kind of feel like asynchronous programming is kind of the hot new topic, + +00:16:05.520 --> 00:16:12.239 +and everybody's diving in, including in scenarios + +00:16:12.240 --> 00:16:14.639 +where I'm not sure I see the benefit + +00:16:14.640 --> 00:16:16.919 +to the additional complexity to your program. + +00:16:16.920 --> 00:16:23.719 +So I did it here because, as I tried to demonstrate, + +00:16:23.720 --> 00:16:28.319 +response latency back to the MPD server + +00:16:28.320 --> 00:16:34.639 +can reach into the realm of human perception, depending on the query. + +00:16:34.640 --> 00:16:37.519 +And my use case was, I'm in a buffer coding. + +00:16:37.520 --> 00:16:42.279 +I just want to quick adjust the volume, and I didn't want any pauses. + +00:16:42.280 --> 00:16:48.279 +But in a lot of other scenarios, I just don't see the benefit to. + +00:16:48.280 --> 00:16:55.959 +So yeah, I mean, that's my two cents. + +00:16:55.960 --> 00:17:07.759 +Yeah, I think there's a lot of care to be taken, well, + +00:17:07.760 --> 00:17:12.599 +I guess in both in advance consideration, but also while implementation, + +00:17:12.600 --> 00:17:15.839 +if one is going to add asynchronicity to an existing code base + +00:17:15.840 --> 00:17:20.719 +and making sure to cover essentially as many as existing workflows + +00:17:20.720 --> 00:17:23.239 +and code paths as possible. + +00:17:23.240 --> 00:17:27.879 +Yeah, exactly, exactly. + +00:17:27.880 --> 00:17:31.799 +You know, I've certainly gotten myself into trouble writing asynchronous code + +00:17:31.800 --> 00:17:36.039 +and locked up the async runtime, and it's like, well, you know, + +00:17:36.040 --> 00:17:39.759 +is the benefit worth it? I mean, look, if you're building a socket server + +00:17:39.760 --> 00:17:51.399 +of some sort, like a web service, microservice type of thing, all + +00:17:51.400 --> 00:17:54.999 +of the famous 10k connection problem from the last decade, + +00:17:55.000 --> 00:18:01.319 +if you're writing a command line tool, you know, Klee, + +00:18:01.320 --> 00:19:17.759 +I'm not sure why you need to spin up anything to run time for that. Yeah, + +00:19:17.760 --> 00:19:44.399 +I mean, I'm not sure why you need to spin up anything to run time for that. + +00:19:44.400 --> 00:20:10.399 +Yeah. Yeah. Yeah. Yeah, I mean, I'm not sure why you need + +00:20:10.400 --> 00:20:14.239 +to spin up anything to run time for that. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. + +00:20:14.240 --> 00:20:18.399 +Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. + +00:20:18.400 --> 00:20:20.919 +We'll definitely be checking. It's. So, Centauro appears to be the author. + +00:20:20.920 --> 00:20:24.999 +The package name is called Emacs Promise. Interesting. Okay, + +00:20:25.000 --> 00:20:29.039 +I see you reacting, I just wanted to check out if my mic is working. + +00:20:29.040 --> 00:20:30.999 +The talk, thank you for your interesting talk. + +00:20:31.000 --> 00:20:33.599 +That's a yak. I already shaved myself + +00:20:33.600 --> 00:20:36.639 +how to do async programming in Emacs. + +00:20:36.640 --> 00:20:39.679 +I found about the TQQ and I improved on it, too, + +00:20:39.680 --> 00:20:42.919 +and then I was thinking, okay, async programming. + +00:20:42.920 --> 00:20:49.079 +It wasn't how to do macros, but it was my whole into, yes, + +00:20:49.080 --> 00:20:51.679 +how to do async programming without callback hell. + +00:20:51.680 --> 00:20:54.719 +And as you said in your title, you did async before it was cool, + +00:20:54.720 --> 00:20:58.679 +because you often hear the opinion that Emacs doesn't do multithreading, + +00:20:58.680 --> 00:21:02.639 +it's just single threaded and therefore old and useless. + +00:21:02.640 --> 00:21:06.319 +Not like that, maybe. + +NOTE Do you think it's a viable future for Emacs to get out of callback hell? + +00:21:06.320 --> 00:21:10.599 +The solution you found, do you think it's a viable future + +00:21:10.600 --> 00:21:13.399 +for Emacs to get out of callback hell? + +00:21:13.400 --> 00:21:22.279 +I think so, but I would certainly, in the pad, + +00:21:22.280 --> 00:21:25.119 +somebody pointed out that Christopher Wellens + +00:21:25.120 --> 00:21:28.959 +came up with a general purpose async await library + +00:21:28.960 --> 00:21:32.839 +that I will definitely be taking a look at, + +00:21:32.840 --> 00:21:36.359 +because I think he used the phrase yak shaving + +00:21:36.360 --> 00:21:38.839 +and that's absolutely what I was doing here. + +00:21:38.840 --> 00:21:45.559 +So this solution is purpose-built to my little personal problem. + +00:21:45.560 --> 00:21:53.999 +It sounds like Wellens may have solved the problem in greater generality. + +00:21:54.000 --> 00:21:56.439 +But yeah, absolutely. I mean, periodically + +00:21:56.440 --> 00:22:00.999 +in the Emacs IRC channel or an Emacs devil, somebody will say, oh my God, + +00:22:01.000 --> 00:22:07.639 +I can't believe Emacs is single threaded, this is hopeless, and yeah, I think + +00:22:07.640 --> 00:22:10.159 +that here's another use case for asynchronous problem. + +00:22:10.160 --> 00:22:22.319 +It's interesting that you mentioned like the AIO from Christopher Wellens, + +00:22:22.320 --> 00:22:24.159 +because I had a look at it too. + +00:22:24.160 --> 00:22:28.919 +And if I remember correctly, he uses Emacs generators. + +00:22:28.920 --> 00:22:37.799 +I'm not really sure, I'm not sure anymore if that's the case. But yeah, + +00:22:37.800 --> 00:22:48.199 +that's another cool macro use to get out of callback Emacs generators. + +00:22:48.200 --> 00:22:55.399 +Did you see it already? I'm looking at it right now for the first time, + +00:22:55.400 --> 00:23:02.279 +oh gosh, look at this. And if you want, I can spare you a lot of time, + +00:23:02.280 --> 00:23:07.439 +because if you go down this road and you get the same direction as me, + +00:23:07.440 --> 00:23:10.599 +you'll find out like, okay, that's a cool solution. + +00:23:10.600 --> 00:23:13.519 +You already mentioned Go, the solution Go uses + +00:23:13.520 --> 00:23:15.799 +with the coroutines or green threads + +00:23:15.800 --> 00:23:22.359 +or whatever you name it. And I think, in my opinion, the best solution + +00:23:22.360 --> 00:23:28.159 +or the neatest solution of this problem in this plant or in general is Futures, + +00:23:28.160 --> 00:23:33.319 +no, not Futures, wrong name, host called, no, I just forgot. + +00:23:33.320 --> 00:23:41.839 +It's a guy's scheme, and it's from Andy Wingo. And he does it with fibers, + +00:23:41.840 --> 00:23:49.439 +not Futures, fibers, this is a really good solution for the problem of how + +00:23:49.440 --> 00:23:55.119 +to do async, how to do multi-color functions + +00:23:55.120 --> 00:23:57.719 +and say they have all functions the same name. + +00:23:57.720 --> 00:24:05.599 +And it's fundamentally based on concurrent ML, and yeah, fibers on top, this + +00:24:05.600 --> 00:24:09.079 +is cool. I would like to see this in the mix. Interesting. + +00:24:09.080 --> 00:24:13.559 +So I found this talk, Channels, Concurrency, and Cores, + +00:24:13.560 --> 00:24:16.679 +a New Concurrent ML Implementation. + +00:24:16.680 --> 00:24:18.439 +This one, yes. + +00:24:18.440 --> 00:24:34.719 +Okay, I will be taking a look at this, thank you. + +00:24:34.720 --> 00:24:35.759 +You're welcome. + +00:24:35.760 --> 00:24:39.319 +Maybe to expand on this, if you don't mind. Please. + +NOTE Generators + +00:24:39.320 --> 00:24:44.919 +The idea behind it is like Chris Wellon uses generators, + +00:24:44.920 --> 00:24:47.399 +generators like in Python generators, + +00:24:47.400 --> 00:24:49.599 +like you have some function, and it can yield, + +00:24:49.600 --> 00:24:54.279 +and you can start it again at this point, and so on and so on. + +00:24:54.280 --> 00:25:00.559 +It's an Emacs, and it's a hack. It uses a macro for the code processing, + +00:25:00.560 --> 00:25:02.879 +and then it's bits of callbacks, more or less. + +00:25:02.880 --> 00:25:07.759 +And it's a solution for like how do I specify callbacks + +00:25:07.760 --> 00:25:15.039 +without writing actually callbacks with writing synchronous looking one color. + +00:25:15.040 --> 00:25:20.759 +And the general solution, and that's the reason Andy Wingo can do it in Guile, + +00:25:20.760 --> 00:25:27.519 +for them is the limited continuations. You have a delimited continuation, + +00:25:27.520 --> 00:25:30.639 +that means you have a point in your program where you can yield, + +00:25:30.640 --> 00:25:35.639 +and it yields until a prompt, like it yields a part of your code. + +00:25:35.640 --> 00:25:38.839 +What that means is your code can stop + +00:25:38.840 --> 00:25:43.239 +and pass the rest of the computation to something else, + +00:25:43.240 --> 00:25:46.319 +and this something else can invoke the computation. + +00:25:46.320 --> 00:25:48.079 +That means you can have a scheduler. + +00:25:48.080 --> 00:25:56.839 +And How do you arrange for your continuation to be restarted or all can again? + +00:25:56.840 --> 00:26:04.119 +Good question. That's exactly the thing the Fibers does, like the scheduler. + +00:26:04.120 --> 00:26:08.559 +You could put it like an Apollo interface, even in Linux, + +00:26:08.560 --> 00:26:14.239 +which Apollo network connection or a file creation, something like that, + +00:26:14.240 --> 00:26:15.079 +or a socket. + +00:26:15.080 --> 00:26:17.119 +Interesting. + +00:26:17.120 --> 00:26:21.799 +This sounds not dissimilar from what I understand goes coroutines to be. + +00:26:21.800 --> 00:26:25.319 +This is coroutines, more or less. + +00:26:25.320 --> 00:26:26.079 +Right. + +00:26:26.080 --> 00:26:31.839 +These are the things you can do when you have + +00:26:31.840 --> 00:26:34.799 +like Andy Wingo can do it in Guile + +00:26:34.800 --> 00:26:36.919 +because he's got his fingers into the interpreter. + +00:26:36.920 --> 00:26:43.119 +Yes, he does. He sort of got inside knowledge. + +00:26:43.120 --> 00:26:49.639 +I don't know. + +00:26:49.640 --> 00:26:51.919 +Yeah, I think so, too. + +00:26:51.920 --> 00:26:53.919 +He implemented the delimited continuations, + +00:26:53.920 --> 00:26:59.759 +but yes, it was maybe my point I wanted to make. + +00:26:59.760 --> 00:27:01.359 +Like there's a neat solution. + +00:27:01.360 --> 00:27:04.719 +Sometimes you need these delimited continuations + +00:27:04.720 --> 00:27:12.279 +and function-wise you need like some kind of callback. + +00:27:12.280 --> 00:27:16.999 +Actually, you always need some kind of callback. You just hide it, well, + +00:27:17.000 --> 00:27:20.439 +and you call the delimited continuation. + +00:27:20.440 --> 00:27:20.639 +Right. + +00:27:20.640 --> 00:27:25.919 +I mean, if you've ever tried to do asynchronous programming, + +00:27:25.920 --> 00:27:33.679 +say, in C using EpoL, sort of wind up structuring your entire program + +00:27:33.680 --> 00:27:40.759 +around this event loop and kind of you sort of have this state + +00:27:40.760 --> 00:27:45.039 +that you move through as various things get signaled, + +00:27:45.040 --> 00:27:49.159 +whether data shows up on a file descriptor or a timer goes off, whatever. + +00:27:49.160 --> 00:27:52.159 +And it's kind of mind-bending. + +00:27:52.160 --> 00:27:53.559 +It's definitely, you know, + +00:27:53.560 --> 00:27:57.639 +humans seem to be most comfortable writing imperatively. + +00:27:57.640 --> 00:28:04.159 +And so whether it's Ruster or Golang or JavaScript, it all seems to be like, + +00:28:04.160 --> 00:28:07.119 +how can we wrap that state machine more ergonomically? + +00:28:07.120 --> 00:28:12.999 +Yes, exactly. How much more time do we have for Q&A? + +00:28:13.000 --> 00:28:31.119 +I think we have about seven and a half, eight more minutes. + +00:28:31.120 --> 00:28:37.439 +Yeah. We don't have to use all of it if there are no questions, + +00:28:37.440 --> 00:28:39.439 +but you're also welcome to hang out if you want. + +00:28:39.440 --> 00:28:41.519 +I'm happy to wait. + +00:28:41.520 --> 00:28:42.839 +Cool. + +00:28:42.840 --> 00:28:52.519 +And also, if there are no questions, I mean, + +00:28:52.520 --> 00:28:55.119 +one thing we could maybe do is to, if you + +00:28:55.120 --> 00:28:58.079 +like to maybe give a quick demo, like walk through some of the parts of, + +00:28:58.080 --> 00:29:00.999 +you know, your package, your code that could also work whichever, + +00:29:01.000 --> 00:29:02.239 +whatever you're more comfortable with. + +00:29:02.240 --> 00:29:07.879 +Honestly, I wasn't prepared for a live demo, so. + +00:29:07.880 --> 00:29:12.839 +Oh, yeah, sure. No worries. Sorry. Don't mean to put you on the spot. + +00:29:12.840 --> 00:29:15.439 +I'm going to steer clear of that. + +00:29:15.440 --> 00:29:16.999 +That's fair enough. + +00:29:17.000 --> 00:29:17.599 +Thank you. + +00:29:17.600 --> 00:29:25.199 +Okay. you + +00:29:25.200 --> 00:29:25.239 + + +00:29:25.240 --> 00:31:11.719 +questions maybe we can wrap it up sounds good + +00:31:11.720 --> 00:31:20.999 +I actually think I need to check in for my next talk soon + +00:31:21.000 --> 00:31:26.519 +oh yeah sure all right any last question before we wrap up folks + +00:31:26.520 --> 00:32:05.959 +all right I think in that case we can go ahead and wrap up + +00:32:05.960 --> 00:32:07.919 +thanks so much Michael for the great talk + +00:32:07.920 --> 00:32:10.359 +I very much look forward to checking out your work + +00:32:10.360 --> 00:32:11.999 +and yeah seeing what what could be done with it + +00:32:12.000 --> 00:32:14.719 +and using it as a building block and toolkit all right well + +00:32:14.720 --> 00:32:17.079 +thank you so much + +00:32:17.080 --> 00:32:20.079 +I feel like I learned as much through the Q&A + +00:32:20.080 --> 00:32:22.239 +as other people probably did from the talk + +00:32:22.240 --> 00:32:22.519 +wonderful + +00:32:22.520 --> 00:32:24.279 +yeah it's great it's a great way to get to know each other + +00:32:24.280 --> 00:32:24.839 +and get to know each other + +00:32:24.840 --> 00:32:25.759 +wonderful yeah it's great + +00:32:25.760 --> 00:32:29.999 +and yeah we were very lucky to be able to do these sort of live Q&A's + +00:32:30.000 --> 00:32:33.359 +and awesome speakers like yourself just being able to join in + +00:32:33.360 --> 00:32:35.439 +and yeah just teach and learn + +00:32:35.440 --> 00:32:37.999 +all right see you in a bit + +00:32:38.000 --> 00:32:47.040 +awesome yep see you in a little bit bye diff --git a/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--answers.vtt b/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--answers.vtt new file mode 100644 index 00000000..5ade9186 --- /dev/null +++ b/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--answers.vtt @@ -0,0 +1,1004 @@ +WEBVTT + +NOTE Introduction + +00:00:00.000 --> 00:00:06.799 +Yes. Okay. Hi, everyone. We are back now, and I'm with Mats. Hi, Mats. + +00:00:06.800 --> 00:00:09.559 +Hi. How are you doing? + +00:00:09.560 --> 00:00:11.879 +I'm fine. How are you? + +00:00:11.880 --> 00:00:15.239 +I'm doing great as well. As the talk goes by, + +00:00:15.240 --> 00:00:20.119 +I keep warming up, and this is a very nice feeling. I look absolutely big + +00:00:20.120 --> 00:00:23.639 +with this down jacket, but it works, and I'm not going to question it. + +00:00:23.640 --> 00:00:27.039 +You do know, for the people coming every year to AMX Conf, that I do try + +00:00:27.040 --> 00:00:30.999 +to look dashing, but I also need to be warm, because this year, + +00:00:31.000 --> 00:00:33.359 +we are doing it in December and not in November. + +00:00:33.360 --> 00:00:36.639 +Okay. So, Mats, + +00:00:36.640 --> 00:00:40.599 +how about you start reading questions? I believe you've got one already. + +NOTE So with one line of code you can create custom hyperbutton types that are live in any Emacs buffer. Is that right? + +00:00:40.600 --> 00:00:45.719 +I got one question already. Yes. The question is, so with one line of code, + +00:00:45.720 --> 00:00:50.279 +you can create custom hyper button types that are live in an AMX buffer. + +00:00:50.280 --> 00:00:55.959 +Is that right? Yes. The short answer is yes. + +00:00:55.960 --> 00:01:01.599 +Maybe I should use the presentation and go into here. + +00:01:01.600 --> 00:01:09.759 +Let's see if I can find it. + +00:01:09.760 --> 00:01:17.839 +No. Read it wrong. So, here, the field macro allows you, in principle, to, + +00:01:17.840 --> 00:01:22.759 +in one line, define a hyper button, starting with the starting delimiter + +00:01:22.760 --> 00:01:25.519 +and an end delimiter, and then there's this mapping + +00:01:25.520 --> 00:01:36.319 +to whatever functionality should sort of come out of pressing that button. + +00:01:36.320 --> 00:01:39.199 +So, that was significantly more than just a yes. Thank you. + +00:01:39.200 --> 00:01:42.479 +I'll be glad we put your screen up so that you can answer this. + +00:01:42.480 --> 00:01:45.479 +So, people, just to remind you, so we do have the pad to answer the pad + +00:01:45.480 --> 00:01:49.039 +to ask you questions over there. We are, let me check + +00:01:49.040 --> 00:01:54.799 +how much time we have for this Q&A. We have until 15 of the next hour, + +00:01:54.800 --> 00:02:00.719 +which leaves about 20 minutes, but right now we only have one question. + +00:02:00.720 --> 00:02:07.519 +So, people on ISE, if you could place questions in the pad. Right. + +00:02:07.520 --> 00:02:10.679 +Sorry, I'm managing multiple things at the same time. + +00:02:10.680 --> 00:02:12.839 +Is there anything else you wanted to talk about? Anything else? + +00:02:12.840 --> 00:02:16.479 +Because, you know, to let people know, + +00:02:16.480 --> 00:02:19.719 +we do ask speakers to submit pre-recordings to us + +00:02:19.720 --> 00:02:21.639 +because it makes our life much easier on the day + +00:02:21.640 --> 00:02:25.519 +of the recording at EmacsConf, on the day of the conference at EmacsConf, + +00:02:25.520 --> 00:02:29.479 +because this way we can get away with not having + +00:02:29.480 --> 00:02:33.559 +to worry about live presentation catching fires and not, oh, + +00:02:33.560 --> 00:02:36.039 +I cannot share my screen, my microphone is not working. + +00:02:36.040 --> 00:02:40.439 +So, not only is everything working today inside the BBBO room, + +00:02:40.440 --> 00:02:44.159 +but Matt also sent a pre-recording. So, that's great. + +00:02:44.160 --> 00:02:50.079 +I got another question. Oh yes, go, but please, I'm down in the background. + +00:02:50.080 --> 00:02:53.319 +Let me jump over to the second question. + +NOTE Is there a good way to share common patterns for links other than the ones that you shared? shall those be PRs to your repository? + +00:02:53.320 --> 00:02:56.639 +The second question is, is there a good way to share common patterns + +00:02:56.640 --> 00:03:00.399 +for links other than the ones that you shared? + +00:03:00.400 --> 00:03:05.599 +Shall those be pull requests to your repository? + +00:03:05.600 --> 00:03:16.919 +Okay, let me think. Those should not be pull requests to our repository + +00:03:16.920 --> 00:03:19.999 +because these are your patterns, your links. + +00:03:20.000 --> 00:03:23.959 +That's something you would share like that I'm showing here. + +00:03:23.960 --> 00:03:27.239 +Could even be like you're sharing maybe the pattern, how this + +00:03:27.240 --> 00:03:31.599 +button looks, but maybe the implementation could in principle be different. + +00:03:31.600 --> 00:03:36.359 +So, the one you're sharing with might put their information + +00:03:36.360 --> 00:03:41.719 +in some other storage that might be accessed using the same information, + +00:03:41.720 --> 00:03:46.439 +or maybe just placed in some other part of the file system. + +00:03:46.440 --> 00:03:53.239 +So, the only good way to share it would be like to send it over email + +00:03:53.240 --> 00:03:57.519 +or some other message to someone else. Share it some way. + +00:03:57.520 --> 00:04:02.639 +First question. I like the link to evaluate calc expressions. + +00:04:02.640 --> 00:04:07.879 +Any way to get the outcome into the buffer and not just in the message window? + +00:04:07.880 --> 00:04:13.999 +I mean, that will be up to the sort of the implementation of the function + +00:04:14.000 --> 00:04:19.519 +that you would use in the bottom. I mean, the function that + +00:04:19.520 --> 00:04:25.999 +is evaluated could do anything really. So, that was just an example + +00:04:26.000 --> 00:04:30.519 +to show that you could, you don't have to be a link that you actually go + +00:04:30.520 --> 00:04:34.399 +to some new place. It can just be some computation or whatever. So, + +00:04:34.400 --> 00:04:39.519 +that's just trying to show that you shouldn't be limiting yourself + +00:04:39.520 --> 00:04:44.399 +to just thinking about links. It can be computing anything. + +00:04:44.400 --> 00:04:49.959 +It's really the thing about Elisp really. It's just when people ask you, + +00:04:49.960 --> 00:04:53.439 +you know, when they come from outside of Emacs and they ask you, + +00:04:53.440 --> 00:04:56.759 +can your function do this? The answer is more often than not, yes. + +00:04:56.760 --> 00:04:59.159 +Can you write it in Elisp? Yeah, I might need + +00:04:59.160 --> 00:05:01.839 +to look at the documentation a little bit, but I'll be able to do it. + +00:05:01.840 --> 00:05:06.239 +And, you know, calc does have the ability to paste the result + +00:05:06.240 --> 00:05:10.879 +when you're not calc used as a library, but calc the node. + +00:05:10.880 --> 00:05:13.319 +When you type something in it and you press Y, + +00:05:13.320 --> 00:05:17.119 +it will paste it into the buffer, which means that there is the ability + +00:05:17.120 --> 00:05:19.799 +to communicate between calc and the buffer you're currently in. So, + +00:05:19.800 --> 00:05:24.439 +it's probably just a matter of doing Ctrl-H-K-Y inside the calc mode, + +00:05:24.440 --> 00:05:27.719 +checking which function is running, and just putting this at the end + +00:05:27.720 --> 00:05:29.319 +of the button, and voila, there you go. + +00:05:29.320 --> 00:05:34.079 +So, Matt, I don't think you have any questions at the moment. + +00:05:34.080 --> 00:05:37.559 +We're going to leave some time for people to gather more questions, + +00:05:37.560 --> 00:05:41.839 +but I think, if I'm not mistaken, I might be wrong with the, + +00:05:41.840 --> 00:05:42.919 +we changed the schedule a little bit, + +00:05:42.920 --> 00:05:46.719 +but you're the first Hyperbole talk for today, + +00:05:46.720 --> 00:05:52.319 +and as such, you are introducing people to the concept of buttons, + +00:05:52.320 --> 00:05:56.719 +which is very instrumental to Hyperbole. Hyperbole? + +00:05:56.720 --> 00:06:00.639 +I'm going to go with Hyperbole, actually. + +00:06:00.680 --> 00:06:03.919 +So, could you maybe, I know it's a big task, + +00:06:03.920 --> 00:06:07.639 +and you've also touched upon what Hyperbole was, but a lot + +00:06:07.640 --> 00:06:10.599 +of people always ask, you know, Hyperbole, Org Mode, + +00:06:10.600 --> 00:06:13.559 +I see both of them sometimes crop up at the top of the subreddit, + +00:06:13.560 --> 00:06:16.519 +and I'm not exactly sure which one is doing which. + +00:06:16.520 --> 00:06:22.239 +You're using the term links, and this speaks to me as someone who works + +00:06:22.240 --> 00:06:24.359 +in Zettelkasten Methods, so maybe + +00:06:24.360 --> 00:06:27.479 +could you, I'm asking you with a very difficult question now, + +NOTE Could you differentiate Hyperbole and Org? + +00:06:27.480 --> 00:06:32.359 +could you differentiate maybe Hyperbole and Org, or try your best, + +00:06:32.360 --> 00:06:38.119 +knowing that we'll have more Hyperbole talks later in the conference? + +00:06:38.120 --> 00:06:45.959 +Well, I will not try to get into that sort of wormhole, + +00:06:45.960 --> 00:06:56.919 +because I don't think they should be compared, they're more companions, so yeah. + +00:06:56.920 --> 00:07:00.479 +It's the best way you could have answered this question, and you know, + +00:07:00.480 --> 00:07:04.799 +I'm going to remove you from this tricky situation in which I put you, + +00:07:04.800 --> 00:07:08.999 +so yes, they are complementary tool, they do some of the same thing, + +00:07:09.000 --> 00:07:11.639 +they do have different philosophy, and at the end, + +00:07:11.640 --> 00:07:13.079 +if they allow you to take notes, + +00:07:13.080 --> 00:07:15.999 +if they allow you to relate notes in different places, + +00:07:16.000 --> 00:07:19.239 +you know, it's a good note-taking system. Let's put it at this, + +00:07:19.240 --> 00:07:23.519 +let's not concern ourselves with comparison, at least Org, you know, + +00:07:23.520 --> 00:07:26.559 +the best thing about comparing is cross-pollination, + +00:07:26.560 --> 00:07:29.639 +which is made all the more easier with something like Emacs, + +00:07:29.640 --> 00:07:33.399 +because ideas from one mode can be taken and applied in another mode. + +00:07:33.400 --> 00:07:36.799 +Now, maybe not straightforwardly between Hyperbole and Org, + +00:07:36.800 --> 00:07:39.439 +but the idea can be translated at the very least. + +00:07:39.440 --> 00:07:42.959 +You did have a question, I'll answer this one very quick, + +00:07:42.960 --> 00:07:44.639 +because it's a quick one. + +00:07:44.640 --> 00:07:46.919 +Yeah, yes, you want to take it? + +00:07:46.920 --> 00:07:51.079 +I just want to quickly follow up on what you said there, + +00:07:51.080 --> 00:07:56.399 +that, ah, now I lost, I lost it, maybe come back, + +00:07:56.400 --> 00:07:59.039 +so let's jump into the question instead, + +00:07:59.040 --> 00:08:08.239 +because I got an answer, so thank you for everybody who wrote the answer, + +00:08:08.240 --> 00:08:13.359 +great, and the next question was, this talk is really straightforward, + +00:08:13.360 --> 00:08:16.119 +so that's probably why there aren't many questions, + +00:08:16.120 --> 00:08:19.959 +maybe Mats could talk about Hyperbole in general, while he was, aha, okay, + +00:08:19.960 --> 00:08:24.279 +that's maybe what you were trying to do here, so maybe I should, + +00:08:24.280 --> 00:08:27.719 +and the last one is, second question, last question is, + +NOTE How did you present the right buffer with shortcuts at the right of your buffer? + +00:08:27.720 --> 00:08:30.719 +how did you present the lossage bar at the right of your buffer? + +00:08:30.720 --> 00:08:36.639 +A lot of people are wondering, the lossage bar, oh, well, you have + +00:08:36.640 --> 00:08:41.399 +to elaborate on what the lossage bar is. I can, although + +00:08:41.400 --> 00:08:45.199 +I do have a slight problem, my daily backup is running, + +00:08:45.200 --> 00:08:48.639 +so if my voice is crackly, I'm sorry, I can't do anything about it, + +00:08:48.640 --> 00:08:49.279 +can you hear me? + +00:08:49.280 --> 00:08:51.719 +Yeah, you're shopping up, + +00:08:51.720 --> 00:08:57.319 +but I can understand what you're saying, so that's great. + +00:08:57.320 --> 00:09:01.719 +So lossage is the stuff that you have on the right side of your screen, + +00:09:01.720 --> 00:09:05.399 +it's the commands that you're running and the key binding that you're using + +00:09:05.400 --> 00:09:08.719 +to run them, and yes, this is a mode that we ask, + +00:09:08.720 --> 00:09:12.159 +or that we provide Emacs on speakers with, + +00:09:12.160 --> 00:09:16.599 +and it's called interactive log mode, which is available on GitHub, + +00:09:16.600 --> 00:09:21.079 +which will allow you to have this pretty print on the right side of your screen, + +00:09:21.080 --> 00:09:22.279 +or whatever really, it's just a buffer. + +00:09:22.280 --> 00:09:30.159 +Yeah, and I haven't used it before doing this presentation, so it was a news + +00:09:30.160 --> 00:09:38.559 +to me, so I'm very new to using it, but it works. Well, if you move around, + +00:09:38.560 --> 00:09:40.199 +you see that, yeah. + +00:09:40.200 --> 00:09:46.519 +So for the people, we did open up the BBB chat room now, + +00:09:46.520 --> 00:09:50.199 +which means that again, if you go to the talk page for Matz, + +00:09:50.200 --> 00:09:56.839 +where this was Button, you will be able to join the BBB by clicking on the link, + +00:09:56.840 --> 00:09:59.199 +and you'll be able to ask questions right away to Matz. + +00:09:59.200 --> 00:10:03.439 +We've started a nice question about org hyperbole and stuff like this, + +00:10:03.440 --> 00:10:06.559 +but maybe we should, yes, I'm trying to save you here, + +00:10:06.560 --> 00:10:09.679 +maybe we should re-center on the buttons and what they can do, + +00:10:09.680 --> 00:10:13.679 +especially what we talked about Elisp, allowing buttons to be whatever, + +00:10:13.680 --> 00:10:17.839 +and since Matz, you have your Emacs available, + +00:10:17.840 --> 00:10:21.279 +it might be a good opportunity for you to show some of the buttons + +00:10:21.280 --> 00:10:24.119 +that you're using as well, maybe some different ones that you've presented. + +00:10:24.120 --> 00:10:27.199 +So if people want to join, that would be a great opportunity + +00:10:27.200 --> 00:10:32.359 +to ask your questions. We have about 20 more minutes of Q&A, + +00:10:32.360 --> 00:10:36.199 +and if we don't have any more people showing up + +00:10:36.200 --> 00:10:40.319 +and no more questions on the pad, we can also go on a little break, + +00:10:40.320 --> 00:10:44.719 +and I would appreciate this, but I'm also happy to stay. + +00:10:44.720 --> 00:10:52.479 +Yeah, I understand the interest, but there are more talks coming up + +00:10:52.480 --> 00:10:58.199 +in related to hyperbole, and I haven't prepared any cool stuff. + +NOTE Working with different support systems + +00:10:58.200 --> 00:11:02.639 +What I could mention that I think is cool, I will not demo that, + +00:11:02.640 --> 00:11:09.919 +but I work as a programmer, and then I have different support systems, + +00:11:09.920 --> 00:11:16.719 +which have these strings, identifiers that may be linked + +00:11:16.720 --> 00:11:23.799 +to different information, like a ticketing system, for instance, + +00:11:23.800 --> 00:11:29.199 +that would do bugs. It could be like a novel text string + +00:11:29.200 --> 00:11:38.639 +that identify your bug or your ticket, and it's an internal tool, + +00:11:38.640 --> 00:11:42.799 +so no one else can support that, but by using hyperbole, + +00:11:42.800 --> 00:11:46.839 +I can write my own interpretation of that string + +00:11:46.840 --> 00:11:49.999 +and get that to work as a button, so I can easily + +00:11:50.000 --> 00:11:56.279 +from the code or from some notes link directly into that ticketing system. + +00:11:56.280 --> 00:12:03.919 +So that's the point I'm trying to make with this talk is + +00:12:03.920 --> 00:12:07.839 +that it's useful for setting up your own environment + +00:12:07.840 --> 00:12:11.719 +that only you really know about and how you want to navigate + +00:12:11.720 --> 00:12:20.599 +with your information, and it's not about trying to force some type + +00:12:20.600 --> 00:12:25.719 +of work stream upon anybody. It's more like giving you the opportunity + +00:12:25.720 --> 00:12:28.319 +to streamline your own workflow instead. + +00:12:28.320 --> 00:12:33.479 +I think the remaining talks about hyperbole will be more focused + +00:12:33.480 --> 00:12:38.199 +on all the features. It's a multi-functional package + +00:12:38.200 --> 00:12:40.119 +with a lot of different stuff in it, + +00:12:40.120 --> 00:12:46.999 +so I could not give justice to it in just doing some quick demos. + +00:12:47.000 --> 00:12:49.119 +It won't show all the things you can do. + +00:12:49.120 --> 00:12:52.639 +Yeah, but I'm going to say for someone saying + +00:12:52.640 --> 00:12:54.839 +that you couldn't do justice to the topic, + +00:12:54.840 --> 00:12:58.079 +you've done a very fine job, so do not worry about this. + +00:12:58.080 --> 00:13:01.759 +It's funny, I was listening to you describe this, the + +00:13:01.760 --> 00:13:03.759 +buttons really, but when + +00:13:03.760 --> 00:13:06.839 +you think about it, you could have forgotten about the buttons + +00:13:06.840 --> 00:13:11.239 +and really remembered about Emacs and would make as much sense as well, + +00:13:11.240 --> 00:13:14.799 +because Emacs as a whole, the Elisp stuff behind it allows you + +00:13:14.800 --> 00:13:17.039 +to do whatever interface you want very easily, + +00:13:17.040 --> 00:13:23.759 +and the buttons really enshrines the interface type of things really, + +00:13:23.760 --> 00:13:26.399 +because you just have a button that is running code. + +00:13:26.400 --> 00:13:27.799 +It's no longer, oh, you need to go to + +00:13:27.800 --> 00:13:30.079 +the end of the parenthesis, the end of the sex, + +00:13:30.080 --> 00:13:32.879 +and you need to evaluate it. There's something more interactive about it, + +00:13:32.880 --> 00:13:35.879 +which feels closer to your user interface as a result to this, + +00:13:35.880 --> 00:13:37.959 +but I've already blabbered enough. + +00:13:37.960 --> 00:13:40.639 +We do have someone with a microphone in the VBB chat, + +00:13:40.640 --> 00:13:43.399 +so does this person want to unmute themselves + +00:13:43.400 --> 00:13:44.279 +and ask a question, maybe? + +00:13:44.280 --> 00:13:52.879 +I think I have some very knowledgeable person about hyperbole in the chat. + +00:13:52.880 --> 00:13:57.639 +Yes, I didn't want to spoil it, but I'm not sure if they're going + +00:13:57.640 --> 00:14:00.759 +to unmute themselves, so I don't want to put too much pressure on them. + +00:14:00.760 --> 00:14:03.519 +Can you guys hear me? We can, yes. + +00:14:03.520 --> 00:14:09.879 +Hi, Bob. Hi, long time fan of hyperbole. + +00:14:09.880 --> 00:14:12.919 +You might want to cue people in on a joke here, + +00:14:12.920 --> 00:14:14.599 +because I'm not sure if anyone knows who you are. + +NOTE Bob Weiner + +00:14:14.600 --> 00:14:19.879 +I wrote hyperbole, and Matt's my co-maintainer on it, + +00:14:19.880 --> 00:14:23.159 +so really exciting to have the first talk here. + +00:14:23.160 --> 00:14:26.879 +I think I just wanted to mention two things. + +00:14:26.880 --> 00:14:28.879 +Maybe you could show a little key series, + +00:14:28.880 --> 00:14:33.879 +just type one out dynamically and show how simple that is, + +00:14:33.880 --> 00:14:39.639 +and then talk about the UKIPA daily journal, + +00:14:39.640 --> 00:14:45.479 +right? Time-stamped journal that was originally org mode, + +00:14:45.480 --> 00:14:49.479 +and I think you're now using Hyperbole's K-outliner, + +00:14:49.480 --> 00:14:56.319 +so maybe mention doing that. Okay. + +00:14:56.320 --> 00:14:59.959 +Something that's more than one key sequence, please. + +00:14:59.960 --> 00:15:09.199 +Do a couple operations that you do a lot of or that are interesting, + +00:15:09.200 --> 00:15:10.839 +all in one. + +00:15:10.840 --> 00:15:15.719 +So the key series is like a keyboard macro, + +00:15:15.720 --> 00:15:20.879 +so it's not limited to one key sequence, + +00:15:20.880 --> 00:15:27.199 +but any series of key sequences can be strung together + +00:15:27.200 --> 00:15:28.879 +just like that with nothing else, + +00:15:28.880 --> 00:15:35.399 +and then you activate it the same way as any other button, right? + +00:15:35.400 --> 00:15:38.079 +Yes, but you're putting me on the spot here, + +00:15:38.080 --> 00:15:41.199 +because now I have to remember, actually, how to write these things. + +00:15:41.200 --> 00:15:46.079 +You just write it the way you would type it. + +00:15:46.080 --> 00:15:49.479 +Yeah, I see it. + +00:15:49.480 --> 00:16:00.079 +Okay, so let's see. So the key series is between these braces and... + +00:16:00.080 --> 00:16:05.159 +And you could leave out the quote marks if you don't... + +00:16:05.160 --> 00:16:07.639 +Maybe I can skip that as well. + +00:16:07.640 --> 00:16:09.559 +So here's the key series. + +00:16:09.560 --> 00:16:10.919 +Let's see what's happening. + +00:16:10.920 --> 00:16:12.999 +Do I go to the 10th folder or not? + +00:16:13.000 --> 00:16:16.119 +Boom, I got there. Yeah, it worked. + +00:16:16.120 --> 00:16:23.159 +Bob, great. So you can name them and then reuse them, + +00:16:23.160 --> 00:16:29.119 +and so it's sort of like you've got this toolkit that you can embed + +00:16:29.120 --> 00:16:31.919 +in all these different modes that you have in Emacs, + +00:16:31.920 --> 00:16:34.639 +and you just carry it with you. + +00:16:34.640 --> 00:16:38.759 +It's not like a whole mode unto itself that you always have to use. + +00:16:38.760 --> 00:16:46.599 +Yeah, so in this example here with the field, you can, + +00:16:46.600 --> 00:16:52.119 +instead of having like this path string here, + +00:16:52.120 --> 00:16:54.359 +you can have a key series as well. + +00:16:54.360 --> 00:17:01.399 +But to the other point, also, Elisp is available, + +00:17:01.400 --> 00:17:02.959 +but this is even more available + +00:17:02.960 --> 00:17:05.959 +because you don't even have to code using Elisp. + +00:17:05.960 --> 00:17:09.079 +So that's the point also with this, the fill and the file macros. + +00:17:09.080 --> 00:17:11.879 +You should make it even simpler. + +00:17:11.880 --> 00:17:15.519 +And if you just know how to type some command, + +00:17:15.520 --> 00:17:18.679 +you can use the key series together with this + +00:17:18.680 --> 00:17:21.359 +to get some functionality out of this. + +00:17:21.360 --> 00:17:26.399 +I think one of the things we've taken to saying about Hyperbole + +00:17:26.400 --> 00:17:31.239 +is it's kind of the lightest hypertext markup + +00:17:31.240 --> 00:17:35.159 +that you can have, as you saw there, right? + +00:17:35.160 --> 00:17:37.519 +I mean, there were just braces, and all of a sudden, + +00:17:37.520 --> 00:17:40.999 +it's a live hyper button. So we've tried to strip away + +00:17:41.000 --> 00:17:44.879 +having to write stuff like HTML or even all the drawers + +00:17:44.880 --> 00:17:47.519 +and stuff like that, and we've tried to make it so that you know, + +00:17:47.520 --> 00:17:51.439 +even all the like drawers and the property markup in org mode, + +00:17:51.440 --> 00:17:57.679 +and just provide very, very simple sort of syntactical things similar + +00:17:57.680 --> 00:18:01.679 +to what Elisp does, so that you can get a lot of power + +00:18:01.680 --> 00:18:07.999 +and put buttons everywhere, but not have to recognize a lot of syntax + +00:18:08.000 --> 00:18:11.639 +or use a whole bunch of keys on your buttons. + +00:18:11.640 --> 00:18:16.039 +It's pretty interesting, + +00:18:16.040 --> 00:18:16.679 +by the way. + +00:18:16.680 --> 00:18:17.959 +I'm sorry I have to do this, + +00:18:17.960 --> 00:18:20.519 +but we only have about five more minutes in the Q&A before we need + +00:18:20.520 --> 00:18:24.039 +to move on to the next talk. But don't worry, you've had a little test + +00:18:24.040 --> 00:18:27.079 +of Hyperbole right there, and you'll have more over the weekend. + +00:18:27.080 --> 00:18:30.319 +We've had a lot of Hyperbole talk this year, which is amazing. + +00:18:30.320 --> 00:18:33.559 +You know, we usually have a lot of talk about org, but this year + +00:18:33.560 --> 00:18:37.479 +is truly the one where we also have a similar amount of Hyperbole talk, + +00:18:37.480 --> 00:18:42.399 +which is amazing to see. Obviously, I am more of an org guy, + +00:18:42.400 --> 00:18:45.679 +but I see so many parallels between the two, so many bridges + +00:18:45.680 --> 00:18:50.319 +that could be built as well, and it's amazing to see the amount of passion + +00:18:50.320 --> 00:18:53.439 +that goes into this. Usually I deal with people who are passionate about org, + +00:18:53.440 --> 00:18:56.719 +but to see that there's a similar amount of passion on the Hyperbole side + +00:18:56.720 --> 00:18:58.279 +of things is truly amazing to me. + +00:18:58.280 --> 00:19:04.799 +I think we had one more question in the pad, if you can take it, Matt. + +NOTE Do the links/buttons created in hyperbole (like that one with the url) get exported on org-mode files too? (like when exported to html) + +00:19:04.800 --> 00:19:10.639 +Yeah, the last here is, does the links buttons create in Hyperbole, + +00:19:10.640 --> 00:19:16.159 +like the one with the URL get exported on org mode files too, + +00:19:16.160 --> 00:19:18.999 +like when exported to HTML? + +00:19:19.000 --> 00:19:21.039 +Oh, tricky question. + +00:19:21.040 --> 00:19:31.519 +I mean, these implicit buttons, they are just like the patterns. + +00:19:31.520 --> 00:19:35.319 +So the pattern will of course be exported to HTML, + +00:19:35.320 --> 00:19:37.439 +but you will not be able maybe + +00:19:37.440 --> 00:19:43.519 +to do something there unless you're watching the HTML within Emacs, + +00:19:43.520 --> 00:19:50.199 +so the sort of Hyperbole machinery would be available, if that makes sense. + +00:19:50.200 --> 00:19:58.359 +I mean, yeah, it's possible. It depends what the encoding is, + +00:19:58.360 --> 00:20:03.999 +what the encoding is, but we do have an outliner mode, the K outliner + +00:20:04.000 --> 00:20:10.439 +in Hyperbole as well, and that has a single command export to HTML. + +00:20:10.440 --> 00:20:13.879 +So if you've embedded URLs in there, + +00:20:13.880 --> 00:20:19.519 +you would see them just like if you embedded them in org mode, + +00:20:19.520 --> 00:20:25.559 +and potentially the org exporter, if you just write a raw URL, + +00:20:25.560 --> 00:20:30.119 +will also encode it for you when you export it. + +00:20:30.120 --> 00:20:35.039 +There's other Hyperbole buttons in there. Yeah, but the functionality that + +00:20:35.040 --> 00:20:38.159 +is by clicking on that button will not be exported. + +00:20:38.160 --> 00:20:44.079 +Well, it's like you can try printing the button, I'm not sure. No amount + +00:20:44.080 --> 00:20:46.479 +of clicking on it is actually going to trigger an action. + +00:20:46.480 --> 00:20:51.639 +I might be wrong though. Sorry, I mean printing on paper, + +00:20:51.640 --> 00:20:55.799 +it's a very confusing terminology that we're using right there, not printing + +00:20:55.800 --> 00:20:56.759 +in a terminal. + +00:20:56.760 --> 00:21:02.359 +One cool thing if you use the Hyperbole export to HTML is + +00:21:02.360 --> 00:21:07.519 +that you can expand and collapse your trees in the HTML. + +00:21:07.520 --> 00:21:10.439 +I don't think you can do that with the org export right now. + +00:21:10.440 --> 00:21:15.999 +But Bob, you're going to show something about that tomorrow, right? + +00:21:16.000 --> 00:21:21.319 +I don't think it's in this presentation because I'm- Oh, it's not + +00:21:21.320 --> 00:21:25.079 +in the presentation, okay. On the org side of the house this time, + +00:21:25.080 --> 00:21:32.879 +but it'll be in a different one about Hyperbole some other time. All right, + +00:21:32.880 --> 00:21:36.199 +so we have about two minutes until we need to go to the next talk, + +00:21:36.200 --> 00:21:38.479 +but thank you so much, Matz, and thank you so much, Bob, + +00:21:38.480 --> 00:21:41.839 +also for showing up and giving us a taste of what is probably going + +00:21:41.840 --> 00:21:44.759 +to follow up tomorrow. I can't remember, I think your talk is + +00:21:44.760 --> 00:21:51.599 +in the afternoon, right, Bob? Correct, about 1 p.m. EST. Yeah, so + +00:21:51.600 --> 00:21:56.959 +in about 22 hours, 23 hours. I'm trying my best to give you times + +00:21:56.960 --> 00:21:59.119 +which are time zone independence, + +00:21:59.120 --> 00:22:01.839 +so I'm sorry if I'm missing the mark a little bit, + +00:22:01.840 --> 00:22:04.679 +but hopefully this would be useful for many people. But otherwise, + +00:22:04.680 --> 00:22:07.719 +just check the schedule and you'll be able to get everything. All right, well, + +00:22:07.720 --> 00:22:09.999 +thank you so much, Matz, for answering so many questions + +00:22:10.000 --> 00:22:12.839 +and for your presentation as well. I feel like it was good + +00:22:12.840 --> 00:22:16.599 +to have your presentation before Bob's one tomorrow, + +00:22:16.600 --> 00:22:22.039 +because focusing on the one aspect of Hyperbole, the buttons, and linking it + +00:22:22.040 --> 00:22:26.119 +to Elisp, linking it to interactivity, linking it to UI, I think is going + +00:22:26.120 --> 00:22:29.239 +to prime people to then understand fully what Hyperbole, + +00:22:29.240 --> 00:22:34.319 +or what are the capabilities of Hyperbole, beyond this, or inspired by this. + +00:22:34.320 --> 00:22:37.199 +So thank you so much. Thanks, Matz. Thank you. + +00:22:37.200 --> 00:22:38.599 +Great. + +00:22:38.600 --> 00:22:42.519 +All right, and we are going live with the next talk in about 30 seconds. + +00:22:42.520 --> 00:22:45.519 +I think we're going to close the BBB room, + +00:22:45.520 --> 00:22:49.759 +because nobody has showed up otherwise. So I will see you both later. + +00:22:49.760 --> 00:22:50.599 +Bye-bye. + +00:22:50.600 --> 00:22:54.000 +Bye-bye. diff --git a/2022/captions/emacsconf-2022-dbus--the-wheels-on-dbus--ian-eure--answers.vtt b/2022/captions/emacsconf-2022-dbus--the-wheels-on-dbus--ian-eure--answers.vtt new file mode 100644 index 00000000..75b624a9 --- /dev/null +++ b/2022/captions/emacsconf-2022-dbus--the-wheels-on-dbus--ian-eure--answers.vtt @@ -0,0 +1,1691 @@ +WEBVTT + +00:00.000 --> 00:02.600 +the recording button here. + +00:02.600 --> 00:03.600 +OK. + +00:03.600 --> 00:05.180 +Thank you again for the great talk, + +00:05.180 --> 00:06.680 +even though I haven't been able to catch most of it + +00:06.680 --> 00:08.560 +because I've been running around behind the scenes. + +00:08.560 --> 00:11.360 +But very much interested in DBUS and Emacs. + +00:11.360 --> 00:13.240 +I'm very much looking forward to watching it + +00:13.240 --> 00:14.080 +after the conference. + +00:14.080 --> 00:18.360 +But for folks who were able to and did catch the talk, + +00:18.360 --> 00:21.680 +please, now it's time to send in your questions. + +00:21.680 --> 00:24.820 +You can either ask away on IRC or put them on the pad. + +00:24.820 --> 00:28.300 +And we'll also open up this PBB room in a little bit + +00:28.300 --> 00:31.960 +if you'd like to join here directly on asking questions. + +00:31.960 --> 00:34.520 +So, Ian, please take it away. + +00:34.520 --> 00:35.280 +Hey, thanks. + +00:35.280 --> 00:38.580 +Yeah, going to wait for some questions to come in. + +00:38.580 --> 00:41.320 +But there's a couple of points I wanted to make. + +00:41.320 --> 00:46.840 +So I'm going to share my screen here for a minute. + +00:46.840 --> 00:50.880 +If you're interested in exploring more about DBUS, + +00:50.880 --> 00:54.080 +there is a graphical client called dfeat. + +00:54.080 --> 00:56.200 +That's d-feat. + +00:56.200 --> 00:59.960 +I guess puns are strong when it comes to DBUS software. + +00:59.960 --> 01:03.400 +And this just gives you a graphical overview + +01:03.400 --> 01:06.160 +of what's going on with your bus. + +01:06.160 --> 01:09.920 +So in the case that I was looking at in Emacs, + +01:09.920 --> 01:11.600 +you can look. + +01:11.600 --> 01:13.280 +Here's the hostname1 service. + +01:13.280 --> 01:18.360 +And here's you can change the chassis of it or read. + +01:18.360 --> 01:20.240 +I'm on a desktop here. + +01:20.240 --> 01:23.940 +So I think this is a really great tool + +01:23.940 --> 01:30.720 +for just understanding what is available and what DBUS can do. + +01:30.720 --> 01:33.720 +I think I didn't do a great job of setting out a vision. + +01:33.720 --> 01:37.000 +So I want to try to reiterate that here. + +01:37.000 --> 01:41.320 +Ever since I started using X1 several years ago, + +01:41.320 --> 01:46.480 +and before that even, once I was learning about LISP machines, + +01:46.480 --> 01:48.920 +one of the things that I really want out of my computing + +01:48.920 --> 01:52.720 +experience is a full LISP environment, + +01:52.720 --> 01:54.400 +like a modern LISP machine. + +01:54.400 --> 01:59.440 +And I think Emacs and X1 are the closest thing to that + +01:59.440 --> 02:01.800 +that you can get on a modern machine. + +02:01.800 --> 02:03.760 +But if you're thinking about what + +02:03.760 --> 02:07.680 +are the gaps between that and a full blown desktop environment, + +02:07.680 --> 02:10.800 +there is many of them that make it inconvenient + +02:10.800 --> 02:12.760 +in a variety of different ways. + +02:12.760 --> 02:17.600 +And my vision is really to have an Emacs desktop environment. + +02:17.600 --> 02:21.080 +And I think DBUS is really key to making that work. + +02:21.080 --> 02:24.760 +And I would love, on the one to two year horizon, + +02:24.760 --> 02:29.080 +I would really like to see common system tasks be + +02:29.080 --> 02:32.680 +able to get done seamlessly from inside of Emacs. + +02:32.680 --> 02:34.640 +And what I mean by that is things + +02:34.640 --> 02:37.440 +like pairing with a Bluetooth device, + +02:37.440 --> 02:41.440 +connecting to a Wi-Fi network, rebooting your computer + +02:41.440 --> 02:44.440 +or putting it into suspend, or any of those things + +02:44.440 --> 02:47.800 +that you might think of doing in a full blown desktop + +02:47.800 --> 02:51.320 +environment, whether it's Mac OS, or Windows, or GNOME, or KDE, + +02:51.320 --> 02:53.920 +or whatever, you should be able to do all that from Emacs. + +02:53.920 --> 02:56.840 +You should be able to manage everything + +02:56.840 --> 02:59.200 +without having to leave that environment. + +02:59.200 --> 03:02.160 +Because I really prefer the Emacs environment. + +03:02.160 --> 03:05.520 +I would like to do all of that from inside Emacs. + +03:05.520 --> 03:07.380 +And when it comes to integrating with all + +03:07.380 --> 03:11.960 +those different things, DBUS is really key to making it work. + +03:11.960 --> 03:20.560 +But I do think that offering the ability of integrating Emacs + +03:20.560 --> 03:23.160 +into the desktop for people who don't + +03:23.160 --> 03:26.720 +want to go that route of having a full blown Emacs desktop + +03:26.720 --> 03:30.880 +environment, I think that's also a path to some really + +03:30.880 --> 03:35.200 +interesting feature opportunity that + +03:35.200 --> 03:39.760 +has been difficult to explore in Emacs in years past. + +03:39.760 --> 03:44.160 +So I really think it's just a great space to be exploring. + +03:44.160 --> 03:46.280 +And I'm really excited to see what kind of stuff + +03:46.280 --> 03:48.520 +I can build in there, and what things other people + +03:48.520 --> 03:49.600 +start building in there. + +03:53.400 --> 03:54.160 +Sounds great. + +03:54.160 --> 03:57.640 +Yeah, and I think DBUS is kind of, I guess, + +03:57.640 --> 04:00.680 +one of those essential key pieces of software + +04:00.680 --> 04:03.120 +on GNU Linux where, I mean, if it's working, + +04:03.120 --> 04:05.240 +and when it's working, it's pretty much, + +04:05.240 --> 04:06.800 +I mean, you don't even notice it. + +04:06.800 --> 04:07.760 +It's behind the scenes. + +04:07.760 --> 04:09.600 +Everything seems to be working hand in hand. + +04:09.600 --> 04:11.880 +So yeah, I remember, for example, + +04:11.880 --> 04:14.600 +when I first switched to using a custom window manager, + +04:14.600 --> 04:16.760 +you pretty much lose all of that sort + +04:16.760 --> 04:20.200 +of integration and togetherness right away + +04:20.200 --> 04:22.440 +if there is no DBUS. + +04:22.440 --> 04:24.560 +And yeah, a lot of beginners, like myself at the time + +04:24.560 --> 04:27.480 +at least, don't even know what they're missing out on. + +04:27.480 --> 04:33.200 +So kudos for taking this on and having this vision of essentially + +04:33.200 --> 04:35.840 +moving towards that direction of being able to use Emacs + +04:35.840 --> 04:38.840 +as a potentially fully featured desktop environment. + +04:38.840 --> 04:40.680 +I think that's awesome. + +04:40.680 --> 04:42.560 +Yeah, thank you. + +04:42.560 --> 04:44.880 +Looks like I have some questions in the pad, + +04:44.880 --> 04:47.160 +so I will cover some of those. + +04:47.160 --> 04:48.720 +No, it's not Web3. + +04:48.720 --> 04:49.320 +Not funny. + +04:52.440 --> 04:54.840 +I'm sorry, the question was, so is this a Web3 approach? + +04:54.840 --> 04:56.840 +No, it isn't. + +04:56.840 --> 04:58.160 +I have another question. + +04:58.160 --> 04:59.960 +This is such a great overview of DBUS. + +04:59.960 --> 05:01.800 +I haven't been paying attention to this space + +05:01.800 --> 05:05.120 +because it seems to be in flux 10 or 15 years ago. + +05:05.120 --> 05:07.040 +How long has DBUS been around, and what + +05:07.040 --> 05:09.160 +was in place before that? + +05:09.160 --> 05:11.960 +So I covered this real briefly in the beginning of the talk, + +05:11.960 --> 05:15.400 +but DBUS dates from 2002-ish. + +05:15.400 --> 05:21.760 +And I would say since 2010, 2012, that time frame, + +05:21.760 --> 05:26.080 +it has been pretty stable and has seen wide adoption + +05:26.080 --> 05:28.600 +in multiple desktop environments. + +05:28.600 --> 05:30.800 +Before DBUS, there wasn't anything like it. + +05:30.800 --> 05:33.120 +It didn't replace a similar feature. + +05:33.120 --> 05:35.320 +And if you wanted to do the sorts of things + +05:35.320 --> 05:40.160 +that DBUS does, you were pretty limited. + +05:40.160 --> 05:42.600 +Those of you who have been around for a while + +05:42.600 --> 05:45.600 +might remember that a lot of GUI software for Linux + +05:45.600 --> 05:49.840 +in the 90s was some variant of a shell, + +05:49.840 --> 05:53.720 +like a graphical shell program that just called out + +05:53.720 --> 05:57.160 +to an existing binary on the system. + +05:57.160 --> 05:59.200 +Like you might have a disk formatter, + +05:59.200 --> 06:01.320 +and it lets you has a dropdown for the file + +06:01.320 --> 06:03.400 +and lists your devices and whatever. + +06:03.400 --> 06:04.960 +But it was doing all the work. + +06:04.960 --> 06:06.200 +All it was was the interface. + +06:06.200 --> 06:09.480 +All the work was happening by delegating it to a program. + +06:09.480 --> 06:12.000 +And essentially, what that's doing + +06:12.000 --> 06:16.480 +is that's turning the text user interface, the command line + +06:16.480 --> 06:19.880 +user interface, into an API because you're using a program + +06:19.880 --> 06:22.680 +to talk to it, but it's not really meant for that. + +06:22.680 --> 06:27.400 +And there's a lot of details in that interface that + +06:27.400 --> 06:29.240 +are not stable. + +06:29.240 --> 06:33.480 +Like anyone who's used a Mac after using a Linux machine + +06:33.480 --> 06:37.240 +has probably been surprised that the find command didn't + +06:37.240 --> 06:38.960 +work how they expected. + +06:38.960 --> 06:40.480 +And there's a lot of that. + +06:40.480 --> 06:43.000 +In order to make that stuff really reliable, + +06:43.000 --> 06:47.600 +you end up having to build a lot of special cases into it, + +06:47.600 --> 06:49.680 +but you're doing it at the wrong layer. + +06:49.680 --> 06:51.440 +And what DBUS does is it really lets + +06:51.440 --> 06:55.320 +you have a separate architecture where the service is what + +06:55.320 --> 06:59.200 +encapsulates all of the differences between kernels, + +06:59.200 --> 07:02.280 +distributions, flavors of tooling, + +07:02.280 --> 07:05.440 +and just abstracts all of that and gives you a proper API + +07:05.440 --> 07:06.400 +that you can use. + +07:06.400 --> 07:07.860 +And I think that's great because that + +07:07.860 --> 07:12.600 +lets you build these high-level interactive components + +07:12.600 --> 07:15.320 +at an abstract level where you don't necessarily + +07:15.320 --> 07:17.280 +need to care about the implementation details. + +07:17.280 --> 07:19.480 +I think that's really great. + +07:19.480 --> 07:21.400 +So that's really what was happening there. + +07:21.400 --> 07:23.680 +And when it comes to two-way stuff, + +07:23.680 --> 07:26.480 +it was like a fancy version of Unix pipes. + +07:26.480 --> 07:29.760 +You would run your program, and maybe if you were lucky, + +07:29.760 --> 07:32.360 +it had some sort of machine-readable output + +07:32.360 --> 07:33.960 +switch you could turn on so that you + +07:33.960 --> 07:37.480 +could have a progress bar or something like that. + +07:37.480 --> 07:38.600 +That was the sort of thing. + +07:38.600 --> 07:40.720 +But there wasn't really anything exactly like DBUS. + +07:45.240 --> 07:46.480 +I have another question. + +07:46.480 --> 07:48.360 +Forgive me if this question is silly. + +07:48.360 --> 07:53.320 +Why is everything DBUS prefixed with org dot? + +07:53.320 --> 07:57.800 +Not everything is, but most things are. + +07:57.800 --> 08:00.800 +Those identifiers are reverse FQDN. + +08:00.800 --> 08:03.560 +So if you think about the Java namespaces, + +08:03.560 --> 08:05.960 +that's what they're ripping off there. + +08:05.960 --> 08:09.680 +And it's org because most of it is written by nonprofits. + +08:09.680 --> 08:12.320 +So in particular, Free Desktop is + +08:12.320 --> 08:15.040 +what it sponsors development of DBUS. + +08:15.040 --> 08:17.320 +And so there is an inordinate number + +08:17.320 --> 08:22.480 +of org dot Free Desktop dot whatever services on DBUS + +08:22.480 --> 08:28.480 +just because they build so many of them. + +08:28.480 --> 08:32.680 +In your investigations, do most OS desktop environment window + +08:32.680 --> 08:35.360 +manager interop well over DBUS? + +08:35.360 --> 08:38.160 +Which ones have proven more challenging, if any? + +08:40.960 --> 08:45.280 +I'm not sure I quite understand this question. + +08:45.280 --> 08:49.720 +DBUS is fairly abstract, and those graphical programs + +08:49.720 --> 08:53.360 +can choose to use it or not. + +08:53.360 --> 08:58.440 +But you're not interacting with the desktop environment + +08:58.440 --> 08:59.040 +too much. + +08:59.040 --> 09:01.200 +You're interacting with a service. + +09:01.200 --> 09:03.720 +So what you're doing is you're taking any program + +09:03.720 --> 09:06.520 +and you're breaking it into a client server model. + +09:06.520 --> 09:09.680 +The DBUS service does all of the work, + +09:09.680 --> 09:12.360 +and then there's a graphical environment on top of it. + +09:12.360 --> 09:14.640 +So they're communicating back and forth. + +09:14.640 --> 09:16.320 +And if you want to do those same things, + +09:16.320 --> 09:18.080 +you want to communicate with the service, + +09:18.080 --> 09:22.400 +you don't need to communicate with the actual GUI program + +09:22.400 --> 09:25.000 +unless you want to control the program. + +09:25.000 --> 09:27.240 +If you want to do the same thing the program is doing, + +09:27.240 --> 09:28.680 +you can use a DBUS service. + +09:28.680 --> 09:30.960 +I guess in the case of something like a word processor, + +09:30.960 --> 09:32.720 +you might want to have a DBUS API that + +09:32.720 --> 09:35.720 +lets you add a heading or something like that. + +09:35.720 --> 09:39.160 +That's not an area I've explored too much. + +09:39.160 --> 09:40.760 +So I'm not sure how that works. + +09:40.760 --> 09:42.760 +Work done. + +09:46.120 --> 09:49.080 +Regarding using XWIM as a desktop environment, + +09:49.080 --> 09:55.040 +does XWIM provide a session manager daemon? + +09:55.040 --> 09:57.200 +Whoever wrote that, if you could add some more context, + +09:57.200 --> 09:58.080 +I would appreciate it. + +09:58.080 --> 10:01.000 +I'm not sure I can answer that as it is written. + +10:04.120 --> 10:07.560 +No, I don't know. + +10:07.560 --> 10:08.720 +Next question. + +10:08.720 --> 10:11.600 +There is a lot of criticism against DBUS out there. + +10:11.600 --> 10:13.280 +Why do you think that might be? + +10:13.280 --> 10:15.200 +Well, it's because it's not very good. + +10:18.600 --> 10:21.960 +I mean, I love what it unlocks feature wise, + +10:21.960 --> 10:25.240 +but I do think it is not the best implementation + +10:25.240 --> 10:28.240 +for doing what it does. + +10:28.240 --> 10:31.640 +But when in Rome, you want to do those things, + +10:31.640 --> 10:32.760 +I want to do those things, I don't + +10:32.760 --> 10:34.480 +want to rewrite everything in the way + +10:34.480 --> 10:36.960 +I think it should have been to get it done because I'll never + +10:36.960 --> 10:37.760 +get it done. + +10:37.760 --> 10:39.880 +The whole point is you just shove it in a corner, + +10:39.880 --> 10:41.600 +you don't have to care about it, and you + +10:41.600 --> 10:43.440 +use high level bindings. + +10:43.440 --> 10:46.040 +I would say the specific criticisms I've seen + +10:46.040 --> 10:54.720 +are using XML is something that is not popular these days. + +10:54.720 --> 10:58.260 +And if I had to criticize a thing about it, + +10:58.260 --> 11:02.240 +I would say it doesn't have strong guidelines + +11:02.240 --> 11:03.680 +for how to make a good API. + +11:03.680 --> 11:06.120 +And so the quality of one service to another + +11:06.120 --> 11:09.120 +can be extremely variable. + +11:09.120 --> 11:12.360 +And different services have different ways + +11:12.360 --> 11:14.440 +of doing very similar tasks. + +11:14.440 --> 11:16.960 +So I would love to see, if anything, a little more + +11:16.960 --> 11:19.960 +uniformity in those APIs. + +11:19.960 --> 11:22.840 +I generally could care less that it's sending XML around + +11:22.840 --> 11:23.760 +or whatever. + +11:23.760 --> 11:30.920 +I think people who are offended that XML is being used + +11:30.920 --> 11:37.560 +don't have their hearts in the right place, basically. + +11:37.560 --> 11:45.320 +Which system services come to mind + +11:45.320 --> 11:47.000 +when thinking about applications, + +11:47.000 --> 11:49.760 +be it at the OS desktop environment, window manager + +11:49.760 --> 11:50.440 +level? + +11:50.440 --> 11:53.520 +So the stuff that I am interested in using this for + +11:53.520 --> 11:56.600 +is, like I was saying, connecting to wireless networks, + +11:56.600 --> 11:59.360 +pairing with Bluetooth devices, that kind of stuff. + +11:59.360 --> 12:04.520 +Things that don't have a streamlined way of accomplishing + +12:04.520 --> 12:07.960 +it without using D-Bus and some graphical client. + +12:07.960 --> 12:09.360 +And I would just like to not have + +12:09.360 --> 12:11.360 +to deal with the client end of it. + +12:11.360 --> 12:14.160 +I would like the UI to be in Emacs. + +12:19.720 --> 12:21.160 +When it comes to managing devices, + +12:21.160 --> 12:23.760 +how are D-Bus and U-Dev related? + +12:23.760 --> 12:25.760 +U-Dev is a D-Bus service. + +12:25.760 --> 12:30.520 +So it is a daemon that is running at some point + +12:30.520 --> 12:31.760 +in the background. + +12:31.760 --> 12:33.520 +If it's not running, D-Bus will start it + +12:33.520 --> 12:35.040 +when you send it a message. + +12:35.040 --> 12:42.120 +And I'm sorry, I'm mistaking U-Dev for U-Disks. + +12:42.120 --> 12:46.640 +U-Dev is unrelated to D-Bus. + +12:46.640 --> 12:53.400 +U-Dev is a way of dynamically populating your devices + +12:53.400 --> 12:56.520 +and having triggers that run when they are plugged in + +12:56.520 --> 12:57.600 +or unplugged. + +12:57.600 --> 12:59.840 +They're orthogonal. + +12:59.840 --> 13:02.120 +D-Bus and U-Dev don't interact. + +13:02.120 --> 13:08.520 +But D-Bus, I suspect some of the D-Bus services, like U-Disks, + +13:08.520 --> 13:11.720 +too, probably need to talk to U-Dev in order + +13:11.720 --> 13:13.080 +to do their job. + +13:13.080 --> 13:16.200 +But this is a service by service thing, + +13:16.200 --> 13:27.400 +rather than D-Bus is integrated with U-Dev sort of thing. + +13:27.400 --> 13:29.320 +Skip one of these. + +13:29.320 --> 13:32.200 +If you want to do the kinds of things that D-Bus does, + +13:32.200 --> 13:33.280 +you're limited. + +13:33.280 --> 13:35.880 +What is something D-Bus does that you couldn't do before? + +13:35.880 --> 13:37.520 +What is a really cool use of D-Bus + +13:37.520 --> 13:39.880 +in a modern desktop environment? + +13:39.880 --> 13:43.680 +So again, I think that the hardware and dynamic refresh + +13:43.680 --> 13:47.520 +is the use case that I keep coming back to. + +13:47.520 --> 13:50.760 +You walk somewhere where there's a new Wi-Fi network + +13:50.760 --> 13:52.960 +or there's an open Wi-Fi network to connect to, + +13:52.960 --> 13:55.240 +and maybe you get a notification somewhere. + +13:55.240 --> 13:57.360 +You plug in some hardware and it shows up + +13:57.360 --> 13:59.880 +in some list or some user interface + +13:59.880 --> 14:01.880 +to make it easy to use. + +14:01.880 --> 14:03.600 +You unplug it, it goes away. + +14:03.600 --> 14:05.960 +Those are the things that I think are really interesting + +14:05.960 --> 14:10.600 +because when you use a full blown desktop environment, + +14:10.600 --> 14:14.240 +you have come to expect that kind of interactivity + +14:14.240 --> 14:17.760 +and that kind of integration from the low level + +14:17.760 --> 14:21.760 +of the hardware up to whatever graphical layer you're using. + +14:21.760 --> 14:26.440 +And Emacs doesn't have that, and I want it to have that. + +14:26.440 --> 14:32.000 +So I think that's the thing that D-Bus really gives me. + +14:32.000 --> 14:34.240 +I would say in particular, you plug in hardware + +14:34.240 --> 14:37.240 +and it shows up in a list, that's pretty damn cool. + +14:37.240 --> 14:40.640 +That's a thing that I don't remember seeing done + +14:40.640 --> 14:43.400 +without D-Bus, or the way it was done + +14:43.400 --> 14:47.240 +was not portable and very complicated. + +14:47.240 --> 14:50.320 +D-Bus allows you to build those types of interfaces + +14:50.320 --> 14:53.280 +with a lot less work, and I think that's pretty great. + +14:58.640 --> 14:59.680 +Let's see. + +14:59.680 --> 15:02.040 +As an average GNU slash Linux user, + +15:02.040 --> 15:05.320 +I've used signals and methods before but not properties. + +15:05.320 --> 15:07.600 +You gave an example involving properties, + +15:07.600 --> 15:08.880 +but it kind of flew by. + +15:08.880 --> 15:11.640 +Can you explain briefly what clients and services + +15:11.640 --> 15:13.960 +can do with properties? + +15:13.960 --> 15:20.880 +Sure, so let me share this screen real quick. + +15:20.880 --> 15:26.000 +So just looking at hostname1 because this + +15:26.000 --> 15:28.480 +is a pretty simple and straightforward. + +15:28.480 --> 15:32.920 +Actually, let me look at U disks. + +15:32.920 --> 15:36.720 +So here's a whole mess of disks that are connected, + +15:36.720 --> 15:39.360 +and you can see here's a block device + +15:39.360 --> 15:41.960 +and it has all of these different properties to it. + +15:41.960 --> 15:46.600 +So hit system will say, is this a system device? + +15:46.600 --> 15:48.680 +Is this a fixed device, something + +15:48.680 --> 15:50.400 +that the system is in control of mounting, + +15:50.400 --> 15:53.000 +or is this something that a user might want to interact with? + +15:53.000 --> 15:55.160 +That property is how you're going to know + +15:55.160 --> 15:56.600 +which one of those things are, and I + +15:56.600 --> 15:58.880 +think that's really important when you're building a UI. + +15:58.880 --> 16:00.480 +Maybe you want to hide the system disks + +16:00.480 --> 16:04.280 +because you can see them, but there's not much you can do. + +16:04.280 --> 16:07.440 +I can't unmount my root device without turning the computer + +16:07.440 --> 16:07.960 +off. + +16:07.960 --> 16:11.760 +So the things you might want to do + +16:11.760 --> 16:15.800 +at a graphical interactive level are pretty limited, + +16:15.800 --> 16:19.440 +and that property lets you figure that out. + +16:19.440 --> 16:22.400 +Here's a crypto vacuum device that read only + +16:22.400 --> 16:24.240 +what drives it's associated with. + +16:24.240 --> 16:28.280 +They really bundle up just a lot of metadata about the thing, + +16:28.280 --> 16:31.400 +and they have a lot of links in between the different objects. + +16:31.400 --> 16:36.480 +So looking at one thing, you can connect it up + +16:36.480 --> 16:39.560 +to other parts of it at different levels. + +16:39.560 --> 16:43.440 +There's the notion of a drive, which contains a block device, + +16:43.440 --> 16:45.560 +which can have some partition tables, which + +16:45.560 --> 16:49.200 +can have file systems, or maybe an encryption container that + +16:49.200 --> 16:50.800 +has more of those things. + +16:50.800 --> 16:57.160 +So it's really a tree, but it's a strangely modeled tree + +16:57.160 --> 17:00.880 +where you have to walk the different leaves. + +17:00.880 --> 17:03.200 +It's not a single tree that encapsulates everything. + +17:03.200 --> 17:07.360 +It is a tree of links into other bits of the tree, + +17:07.360 --> 17:07.960 +essentially. + +17:07.960 --> 17:11.920 +So they're important to use for that sort of thing. + +17:16.320 --> 17:17.680 +The other thing that properties do + +17:17.680 --> 17:24.440 +is the signals let you know when a property has been updated. + +17:24.440 --> 17:28.640 +So if your hostname changes, you can + +17:28.640 --> 17:30.600 +get a signal that says, hey, my hostname changed, + +17:30.600 --> 17:32.840 +and maybe give a notice. + +17:32.840 --> 17:35.440 +Or if your active network connection changes + +17:35.440 --> 17:39.320 +or disconnects, a signal is going to be what tells you that, + +17:39.320 --> 17:43.200 +and the change in property is what will drive the signal. + +17:43.200 --> 17:44.840 +So it's kind of related to that. + +17:49.920 --> 17:53.120 +Naive question, me not knowing much about D-Bus. + +17:53.120 --> 17:56.400 +Is there such a thing as a D-Bus reflection browser, + +17:56.400 --> 17:58.280 +maybe Emacs-based, that lets you discover + +17:58.280 --> 18:02.160 +all the behavior different D-Bus app participants provide? + +18:02.160 --> 18:04.160 +And actually, wait, I think you're showing it. + +18:04.160 --> 18:06.320 +Defeat is that. + +18:06.320 --> 18:11.440 +Definitely a to-do item is to build an Emacs Lisp interface + +18:11.440 --> 18:16.520 +that is akin to Defeat, but I have not done that. + +18:16.520 --> 18:17.760 +So pull requests, welcome. + +18:17.760 --> 18:25.920 +Next question, D-Bus seems great for extensibility, + +18:25.920 --> 18:28.240 +but then Emacs has no such mechanism + +18:28.240 --> 18:30.680 +and is fantastically more extensible. + +18:30.680 --> 18:31.960 +Why do you think this is so? + +18:34.680 --> 18:37.840 +I don't think I agree with the premise. + +18:37.840 --> 18:42.400 +D-Bus is not really that extensible in the way + +18:42.400 --> 18:46.560 +that you might think in the same context as Emacs. + +18:46.560 --> 18:49.360 +You can add new functionality by adding a new service, + +18:49.360 --> 18:51.080 +but you can't add new functionality + +18:51.080 --> 18:54.000 +to an existing service without changing it. + +18:54.000 --> 18:57.120 +So I'm not sure I would say that's + +18:57.120 --> 19:01.080 +extensible in the same way, whereas Emacs is very malleable + +19:01.080 --> 19:06.120 +and you can change how it works even while it's running. + +19:06.120 --> 19:12.120 +So I think it's a different kind of extensibility, really. + +19:12.120 --> 19:15.840 +And Emacs can participate on D-Bus, + +19:15.840 --> 19:21.080 +so Emacs has a superset of what D-Bus can do, really. + +19:25.200 --> 19:27.120 +Do you have any other cool D-Bus ideas? + +19:27.120 --> 19:29.480 +I think I have dropped them all. + +19:29.480 --> 19:32.600 +Definitely remote org capture is a thing + +19:32.600 --> 19:34.840 +that I have wanted a couple of times + +19:34.840 --> 19:38.160 +because if I'm browsing around somewhere, + +19:38.160 --> 19:40.520 +I'd really love to have a simple flow that + +19:40.520 --> 19:44.720 +allows me to turn a web page into an org capture. + +19:44.720 --> 19:47.640 +And I think D-Bus could be a good way of accomplishing that, + +19:47.640 --> 19:49.920 +although I haven't messed with the browser integration + +19:49.920 --> 19:50.400 +end of it. + +19:54.640 --> 19:57.920 +Are there buses besides system and session? + +19:57.920 --> 19:59.920 +Is there anything more to a bus besides a way + +19:59.920 --> 20:03.920 +to group objects? + +20:03.920 --> 20:09.920 +There are always at least a system bus and a session bus. + +20:09.920 --> 20:12.760 +And actually, that's maybe not completely true. + +20:12.760 --> 20:15.640 +There's always at least a system bus, session bus + +20:15.640 --> 20:19.800 +as long as there is at least one logged in session. + +20:19.800 --> 20:22.720 +And there's really more than one session bus. + +20:22.720 --> 20:26.800 +There's one bus per session so that you're not leaking stuff + +20:26.800 --> 20:28.880 +across sessions on the same computer + +20:28.880 --> 20:32.960 +because despite this being 2022, Unix + +20:32.960 --> 20:34.840 +is still a multi-user operating system + +20:34.840 --> 20:38.280 +and you have to think about that stuff. + +20:38.280 --> 20:43.640 +There are an unlimited number of D-Bus buses. + +20:43.640 --> 20:47.040 +You can create ones that have limited sets of services. + +20:47.040 --> 20:51.760 +You can connect to ones over a TCP socket. + +20:51.760 --> 20:55.320 +There are always generally at least system and session. + +20:55.320 --> 20:58.360 +There can additionally be other ones. + +20:58.360 --> 21:02.800 +But it is uncommon to have any other bus. + +21:02.800 --> 21:06.080 +Generally, well-behaved D-Bus services + +21:06.080 --> 21:10.000 +will attach to one or the other of those two buses. + +21:10.000 --> 21:13.760 +And in fact, PulseAudio is, it has D-Bus support + +21:13.760 --> 21:16.440 +but it is not a good D-Bus citizen + +21:16.440 --> 21:18.960 +because it does not use the session bus. + +21:18.960 --> 21:22.000 +It has, it's very weird actually. + +21:22.000 --> 21:25.240 +It has a D-Bus plug-in that hooks into the session bus + +21:25.240 --> 21:28.640 +but all it has is a method that returns the path to the Unix + +21:28.640 --> 21:31.560 +socket of the real D-Bus which you then + +21:31.560 --> 21:34.640 +have to connect to separately which strikes me + +21:34.640 --> 21:37.840 +as not the best way of doing that. + +21:41.800 --> 21:43.680 +Cool. + +21:43.680 --> 21:46.840 +All right, I think that is all of the questions. + +21:50.000 --> 21:52.520 +Cool, I think we still have about like six and a half + +21:52.520 --> 21:55.160 +or seven more minutes of Q&A on the stream. + +21:55.160 --> 21:57.920 +So if there are any more questions, folks, + +21:57.920 --> 21:59.480 +please feel free to post them on the pad + +21:59.480 --> 22:03.120 +or come up here, join us on BBB. + +22:03.120 --> 22:06.240 +Yeah, we can hang out here for a little bit longer. + +22:06.240 --> 22:07.960 +The stream will move on at some point + +22:07.960 --> 22:10.960 +but Ian, of course, and anyone else who is interested + +22:10.960 --> 22:14.280 +is welcome to hang out if Ian is around. + +22:14.280 --> 22:15.560 +Yeah. + +22:15.560 --> 22:16.960 +I will be around for a bit. + +22:16.960 --> 22:20.280 +I am on IRC all the time but I'm not always + +22:20.280 --> 22:21.280 +paying attention to it. + +22:21.280 --> 22:23.080 +You're welcome to reach out to me there. + +22:26.680 --> 22:32.160 +This is with almost all of my Emacs packages and stuff. + +22:32.160 --> 22:36.400 +This is in my Emacs Weirdware project on Codeburg. + +22:36.400 --> 22:40.360 +So codeburg.org slash Emacs dash weirdware + +22:40.360 --> 22:45.200 +has everything that I demoed and some other wonderful goodies + +22:45.200 --> 22:49.040 +that maybe you already know about and maybe you don't. + +22:49.040 --> 22:52.280 +I saw one other question from the chat, which + +22:52.280 --> 22:56.720 +is what do you use this for? + +22:56.720 --> 23:01.760 +Well, I mean, the main thing I use it for + +23:01.760 --> 23:07.600 +is discomfort for managing external devices. + +23:07.600 --> 23:13.040 +But this has been a really great research project + +23:13.040 --> 23:20.000 +just to understand D-Bus better, see what it can offer, + +23:20.000 --> 23:26.240 +and write some interesting code because what I really like + +23:26.240 --> 23:31.480 +is writing code that unlocks new possibilities + +23:31.480 --> 23:33.680 +to where people can look at it and say, + +23:33.680 --> 23:35.200 +oh, that gives me a great idea. + +23:35.200 --> 23:36.680 +I want to do this with it. + +23:36.680 --> 23:41.560 +And I see D-Base and this talk as really just pushing + +23:41.560 --> 23:43.360 +mindshare on this stuff. + +23:43.360 --> 23:47.160 +And really, the best result of this talk + +23:47.160 --> 23:50.960 +is for people to come out of it and say, wow, that was awesome. + +23:50.960 --> 23:55.120 +I can't wait to build something with it and go build new stuff. + +23:55.120 --> 23:57.120 +And just kind of building those platforms + +23:57.120 --> 24:00.600 +that other people can use and find helpful + +24:00.600 --> 24:03.120 +in whatever their programming journey is. + +24:03.120 --> 24:05.040 +That's the thing that I really like. + +24:05.040 --> 24:06.040 +That means a lot to me. + +24:06.040 --> 24:09.000 +So I hope that someone watches this + +24:09.000 --> 24:32.360 +and comes away with a good idea and goes and hacks on it. + +24:32.360 --> 24:34.360 +Looks like there's one more question. + +24:34.360 --> 24:38.520 +I'm not sure if we have time. + +24:38.520 --> 24:44.160 +I'll follow up in the pad if we end up over time on that. + +24:44.160 --> 24:45.840 +Yeah, we still have a couple more minutes, + +24:45.840 --> 25:12.480 +so it should be good. + +25:12.480 --> 25:15.040 +OK, so the last question is, it looks + +25:15.040 --> 25:19.400 +like D-Bus is mostly useful for Emacs to do IPC. + +25:19.400 --> 25:20.880 +If I understand correctly, this is + +25:20.880 --> 25:24.440 +how SIGTEX works when working with LaTeX docs. + +25:24.440 --> 25:26.960 +How does it compare with other ways of doing IPC, + +25:26.960 --> 25:29.360 +for example, communicating over a socket with MPD? + +25:32.960 --> 25:36.000 +So the main way that it's different + +25:36.000 --> 25:40.320 +is that MPD has its own protocol that you + +25:40.320 --> 25:46.280 +have to build support for in whatever your client is. + +25:46.280 --> 25:49.800 +D-Bus gives you a single, uniform way + +25:49.800 --> 25:52.520 +of talking to any service. + +25:52.520 --> 25:55.720 +So instead of having to reinvent that socket code + +25:55.720 --> 25:59.080 +and write the protocol support for MPD or whatever else, + +25:59.080 --> 26:02.280 +where you're taking the concrete, what + +26:02.280 --> 26:04.280 +are the bytes over the wire, and building + +26:04.280 --> 26:07.840 +an abstract programming interface that wraps that + +26:07.840 --> 26:12.360 +and drives those things, D-Bus already provides all of that. + +26:12.360 --> 26:15.240 +So you can say, here's a description of everything + +26:15.240 --> 26:18.760 +that I already do, and you can code gen stuff + +26:18.760 --> 26:20.800 +to do all of it. + +26:20.800 --> 26:24.840 +So I think that's the main difference between them. + +26:24.840 --> 26:26.840 +But it is over a socket. + +26:26.840 --> 26:31.040 +It's over a Unix socket for local stuff, TCP for remote. + +26:31.040 --> 26:33.000 +It is very similar. + +26:33.000 --> 26:34.480 +The main difference is that it is + +26:34.480 --> 26:37.080 +a framework for multiple applications + +26:37.080 --> 26:39.960 +rather than an application-specific mechanism, + +26:39.960 --> 26:42.200 +which makes it very easy to reuse + +26:42.200 --> 26:43.880 +in a variety of different contexts. + +26:43.880 --> 26:46.520 +And I think that's been key to its popularity + +26:46.520 --> 26:49.240 +over the last 10 years or so is the fact + +26:49.240 --> 26:52.880 +that it provides just enough opinion about how stuff should + +26:52.880 --> 26:56.400 +work that you don't have to think too hard about what + +26:56.400 --> 26:57.600 +should the protocol be. + +26:57.600 --> 26:58.640 +Should it be binary? + +26:58.640 --> 26:59.560 +Should it be text? + +26:59.560 --> 27:01.520 +Should it be S expressions? + +27:01.520 --> 27:02.640 +Should it be JSON? + +27:02.640 --> 27:05.080 +It's already done for you, and you can just think about, + +27:05.080 --> 27:06.880 +how do I connect it up? + +27:06.880 --> 27:08.840 +And I think that provides a lot of value. + +27:12.280 --> 27:14.440 +Yeah, and I can second that. + +27:14.440 --> 27:16.520 +It's been adopted by all sorts of different software + +27:16.520 --> 27:19.040 +projects, one of which I worked on. + +27:19.040 --> 27:21.560 +Jammy, people might know, GNU package + +27:21.560 --> 27:23.760 +for basically universal communication. + +27:23.760 --> 27:27.280 +It's basically a text messaging and also audio video calling + +27:27.280 --> 27:28.680 +and conferencing application. + +27:28.680 --> 27:31.400 +And it's Daemon, which runs in the background. + +27:31.400 --> 27:34.800 +It also supports D-Bus, so you can do all sorts of things, + +27:34.800 --> 27:38.280 +write little Python scripts or whatever, + +27:38.280 --> 27:40.480 +talk with it through D-Bus, give it commands + +27:40.480 --> 27:43.560 +to take calls from a particular point + +27:43.560 --> 27:46.920 +or just hang up calls or just do all sorts of things + +27:46.920 --> 27:48.080 +over D-Bus. + +27:48.080 --> 27:51.640 +And it is all, like you said, sort of application agnostic. + +27:51.640 --> 27:53.920 +It's not specific to, oh, how would I + +27:53.920 --> 27:58.520 +do this in a different way for each individual application? + +27:58.520 --> 27:59.200 +Yeah, exactly. + +27:59.200 --> 28:02.080 +It's the de facto way of doing that sort of stuff + +28:02.080 --> 28:04.680 +on Linux machines these days. + +28:04.680 --> 28:09.920 +And you can look back to some of the other message passing + +28:09.920 --> 28:13.920 +stuff in Windows and see it's drawn some inspiration + +28:13.920 --> 28:18.480 +from a variety of different places and different ways + +28:18.480 --> 28:21.560 +of doing that kind of interactivity. + +28:21.560 --> 28:24.080 +But it is, I mean, I don't think there was ever + +28:24.080 --> 28:26.240 +really a serious competitor to it, + +28:26.240 --> 28:28.080 +but it is the de facto standard if you + +28:28.080 --> 28:31.960 +want to do any kind of graphical program that + +28:31.960 --> 28:36.960 +manipulates your system or a batch program that + +28:36.960 --> 28:41.120 +drives an otherwise purely interactive graphical program. + +28:41.120 --> 28:42.720 +That's the tool. + +28:42.720 --> 28:47.880 +And there is not really any competitive landscape or reason + +28:47.880 --> 28:50.720 +to go reinventing it at this time. + +28:50.720 --> 28:51.480 +Sounds good. + +28:51.480 --> 28:52.760 +And I think that's all the time that we + +28:52.760 --> 28:53.720 +have on the live stream. + +28:53.720 --> 28:55.840 +Folks, you are welcome to stick around on IRC + +28:55.840 --> 28:58.160 +or come here on BBB and continue talking to Ian. + +28:58.160 --> 28:59.560 +Thank you, Ian. + +28:59.560 --> 29:00.080 +Wonderful. + +29:00.080 --> 29:01.240 +Thank you so much. + +29:01.240 --> 29:02.240 +Cheers. + +29:11.560 --> 29:12.040 +All right. + +29:12.040 --> 29:13.880 +I think the stream has moved on. + +29:13.880 --> 29:15.960 +Yeah, you're welcome to stay here, Ian, if you like, + +29:15.960 --> 29:18.080 +or just continue catching up with folks in IRC. + +29:20.840 --> 29:21.320 +Great. + +29:21.320 --> 29:22.960 +I will hang out here for a little bit + +29:22.960 --> 29:28.360 +in case someone wants to jump in and just write + +29:28.360 --> 29:30.560 +some stuff in the pad. + +29:30.560 --> 29:31.360 +Sounds good. + +29:31.360 --> 29:31.880 +Thank you. + +29:31.880 --> 29:34.680 +And I do see people are still writing or posting on the pad, + +29:34.680 --> 29:35.600 +so that's awesome. + +29:35.600 --> 29:36.720 +Yeah, sure thing. + +29:36.720 --> 29:37.240 +Awesome. + +29:37.240 --> 29:38.120 +Thank you so much. + +29:38.120 --> 29:38.600 +All right. + +29:38.600 --> 29:38.960 +Cheers. + +29:38.960 --> 29:39.480 +Welcome. + +29:39.480 --> 29:41.480 +And yeah, see you around on IRC. + +29:41.480 --> 29:42.880 +All right. + +29:42.880 --> 30:11.440 +All right. + diff --git a/2022/captions/emacsconf-2022-detached--getting-detached-from-emacs--niklas-eklund--answers.vtt b/2022/captions/emacsconf-2022-detached--getting-detached-from-emacs--niklas-eklund--answers.vtt new file mode 100644 index 00000000..7d9c7920 --- /dev/null +++ b/2022/captions/emacsconf-2022-detached--getting-detached-from-emacs--niklas-eklund--answers.vtt @@ -0,0 +1,1028 @@ +WEBVTT + +00:00.000 --> 00:02.360 +Thank you for the great talk, Niklas. + +00:02.360 --> 00:05.040 +And yes, the Q&A is now open. + +00:05.040 --> 00:09.320 +Folks, feel free to post your questions on the pattern IRC. + +00:09.320 --> 00:10.900 +And after a minute or two, we'll also + +00:10.900 --> 00:12.680 +open up this big blue button for people + +00:12.680 --> 00:15.820 +who might prefer to come join Niklas here directly + +00:15.820 --> 00:17.680 +and ask the questions here. + +00:17.680 --> 00:20.240 +Niklas, take it away. + +00:20.240 --> 00:21.000 +All right. + +00:21.000 --> 00:21.720 +Thank you. + +00:21.720 --> 00:25.040 +And thanks for having me. + +00:25.040 --> 00:28.720 +Yeah, maybe I'll go ahead and read some questions + +00:28.720 --> 00:32.880 +that have popped up in the formula here then. + +00:32.880 --> 00:37.440 +So the first question is, can it replace SSH plus TMAX + +00:37.440 --> 00:42.280 +for persistent sessions on remote hosts? + +00:42.280 --> 00:46.440 +So currently, I would say it does not + +00:46.440 --> 00:49.720 +support that because it is designed + +00:49.720 --> 00:53.440 +to only run a single command inside a session. + +00:53.440 --> 00:59.920 +And when that finishes, it reports back. + +00:59.920 --> 01:01.640 +But I have played with the idea. + +01:01.640 --> 01:04.480 +I think it should be possible to do. + +01:04.480 --> 01:08.640 +But I wanted to start off and polish the experience + +01:08.640 --> 01:12.720 +with a single command first. + +01:12.720 --> 01:16.880 +And secondly, there is a question. + +01:16.880 --> 01:20.880 +I see integration with projectile in the README. + +01:20.880 --> 01:23.960 +Does it also integrate with project.io? + +01:28.400 --> 01:30.200 +Yeah, good question. + +01:30.200 --> 01:31.840 +It doesn't. + +01:31.840 --> 01:37.920 +I haven't added any explicit support for it + +01:37.920 --> 01:43.880 +because I typically run detached compiling in the project + +01:43.880 --> 01:49.160 +root with my own command using project behind the scenes. + +01:49.160 --> 01:51.880 +But I guess project has a command for it now. + +01:51.880 --> 02:21.840 +So yeah, it should be very easy to add support for that. + +02:21.840 --> 02:28.000 +And I could also mention that could be one thing related + +02:28.000 --> 02:31.480 +to the first questionnaire of using kind of persistent + +02:31.480 --> 02:37.560 +sessions, that it would be interesting to see if, + +02:37.560 --> 02:44.000 +for example, I occasionally run Python REPL in Emacs. + +02:44.000 --> 02:48.000 +And if I could get that one to launch using detach, + +02:48.000 --> 02:52.960 +so I could restart Emacs and reattach to the REPL + +02:52.960 --> 02:57.920 +or also use it for situations where I have used the REPL + +02:57.920 --> 03:02.000 +to, let's say, experiment with, I don't know, + +03:02.000 --> 03:04.720 +some NumPy function, how that works. + +03:04.720 --> 03:10.400 +And if I use detach for that, it would automatically + +03:10.400 --> 03:12.920 +log then the whole session. + +03:12.920 --> 03:15.360 +And I would have it accessible. + +03:15.360 --> 03:19.560 +So I could search for it in retrospect + +03:19.560 --> 03:23.880 +and retrieve the log and see, OK, I ran this command. + +03:23.880 --> 03:26.760 +This happened, or basically. + +03:32.680 --> 03:35.320 +So then there is a question. + +03:35.320 --> 03:36.600 +Can you? + +03:36.600 --> 03:37.360 +Oh, OK. + +03:37.360 --> 03:38.800 +I'll read the other one. + +03:38.800 --> 03:43.400 +No, there is two in there. + +03:46.920 --> 03:48.040 +It's ongoing. + +03:48.040 --> 03:51.240 +I'll wait for them. + +03:51.240 --> 03:52.920 +So the first question is, can you + +03:52.920 --> 03:56.520 +detach a session from shell mode and reattach + +03:56.520 --> 04:01.920 +from eshell vterm mode or start a compile in a shell mode + +04:01.920 --> 04:09.120 +and attach it from compilation mode? + +04:09.120 --> 04:16.240 +Yeah, so you can attach at the moment + +04:16.240 --> 04:20.400 +or reattach in shell mode, eshell vterm. + +04:20.400 --> 04:25.680 +That is no problem. + +04:25.680 --> 04:33.880 +Currently, I don't have support for attaching in compilation + +04:33.880 --> 04:34.720 +mode. + +04:34.720 --> 04:39.040 +So the way the package is built is + +04:39.040 --> 04:44.280 +that when the session is started, + +04:44.280 --> 04:51.240 +there is a variable that gets inserted into the session. + +04:51.240 --> 04:56.280 +And it describes how the session would handle, + +04:56.280 --> 05:01.720 +for example, attaching to it or viewing the output, et cetera. + +05:04.480 --> 05:12.560 +But these are the things that I want to primarily focus + +05:12.560 --> 05:17.680 +in the near future, so making it easier to, for example, + +05:17.680 --> 05:21.040 +have a buffer up where you're attached to a session. + +05:21.040 --> 05:25.680 +You could run a key binding to switch + +05:25.680 --> 05:29.000 +to the view mode of that session. + +05:29.000 --> 05:32.800 +You get the full output, and then you could view it. + +05:32.800 --> 05:37.200 +You can switch back to the attached version, which + +05:37.200 --> 05:40.560 +just shows a brief context and then continues on + +05:40.560 --> 05:45.120 +with the current output from the session. + +05:45.120 --> 05:50.640 +Question number four here is, how do you talk to detach? + +05:50.640 --> 05:54.480 +Could it be feasible to run a child emacs instead + +05:54.480 --> 05:56.360 +of detach? + +05:56.360 --> 05:58.800 +Would it make sense? + +05:58.800 --> 06:02.520 +Better communication, maybe. + +06:02.520 --> 06:08.560 +So the way the talk with detach is done + +06:08.560 --> 06:11.680 +is, I would say, very simple. + +06:11.680 --> 06:19.480 +Detach the program supports basic instructions + +06:19.480 --> 06:25.320 +like detach dash a to attach, or yeah, that's basically it. + +06:28.080 --> 06:32.760 +And that is all that's being used under the hood. + +06:32.760 --> 06:37.280 +And of course, it uses its C flag + +06:37.280 --> 06:47.240 +to create and attach when a session is started, or the dash + +06:47.240 --> 06:52.440 +n to start the session in kind of detached mode. + +06:52.440 --> 06:55.440 +So it runs without emacs being attached to it. + +06:58.240 --> 07:05.720 +Currently, I don't think I've seen any need for a child emacs + +07:05.720 --> 07:08.920 +need for better communication. + +07:08.920 --> 07:15.400 +But if people have ideas about what could be done, + +07:15.400 --> 07:19.280 +if it was added, yeah, that would be great. + +07:19.280 --> 07:20.960 +So maybe that could be a follow up + +07:20.960 --> 07:24.640 +if you got ideas on how to improve it. + +07:24.640 --> 07:33.160 +Yeah, so I'm not sure if the emacs child, yeah, + +07:33.160 --> 07:36.360 +I think if I got a better idea about what + +07:36.360 --> 07:39.120 +the person would like to achieve with it, + +07:39.120 --> 07:43.000 +then maybe I could understand the question better there. + +07:45.880 --> 07:49.480 +So another question is, how does it handle processes + +07:49.480 --> 07:52.560 +that require you to do that? + +07:52.560 --> 07:55.440 +So processes that require user input, + +07:55.440 --> 07:59.080 +usually type yes, no, et cetera. + +07:59.080 --> 08:05.600 +MetaX compiles great, but can't handle user input. + +08:05.600 --> 08:16.600 +Yeah, so it's very simple behind the scenes. + +08:16.600 --> 08:21.320 +It depends on what interface you use for attaching emacs + +08:21.320 --> 08:23.160 +to that process. + +08:23.160 --> 08:27.680 +So as the person says, if it's MetaX compiled, + +08:27.680 --> 08:32.160 +then probably it doesn't handle it. + +08:32.160 --> 08:40.080 +So in that case, I guess I would have started it + +08:40.080 --> 08:42.680 +from the shell. + +08:42.680 --> 08:46.960 +If there is a question, you need to type yes or no, + +08:46.960 --> 08:53.000 +then you can just type it and maybe detach from it. + +08:53.000 --> 08:56.400 +Or if you end up in a situation where + +08:56.400 --> 09:00.080 +you started with MetaX compile, but then it has the question, + +09:00.080 --> 09:04.400 +I guess you could always pop up a shell attached + +09:04.400 --> 09:07.080 +to the session, and you will get the question there. + +09:07.080 --> 09:11.480 +You press whatever answer you'd like, + +09:11.480 --> 09:20.000 +and then detach from that user interface. + +09:20.000 --> 09:23.480 +So another question is, can you rerun a command session, + +09:23.480 --> 09:25.880 +but in another directory? + +09:28.560 --> 09:33.360 +Yeah, you can't do that at the moment. + +09:33.360 --> 09:38.120 +I haven't really found a need for it. + +09:38.120 --> 09:46.000 +So typically, as I have been using detach, + +09:46.000 --> 09:52.680 +now when it has a persistent storage of the sessions, + +09:52.680 --> 09:57.040 +it becomes rather natural that once I've run it once, + +09:57.040 --> 10:07.120 +I can just rerun it later in the same directory. + +10:07.120 --> 10:11.400 +But maybe this is a feature that should be added. + +10:11.400 --> 10:16.840 +It's maybe a common use case. + +10:16.840 --> 10:22.120 +One thing that I added on top of the rerun + +10:22.120 --> 10:25.280 +is like an edit and rerun for those situations + +10:25.280 --> 10:30.240 +where I maybe run some compilation, + +10:30.240 --> 10:34.960 +but with the compilation flag set to opt, + +10:34.960 --> 10:37.680 +and then I want to rerun the exact same command + +10:37.680 --> 10:43.600 +in the same directory, but with it set to dbg instead + +10:43.600 --> 10:44.520 +for debugging. + +10:44.520 --> 10:48.600 +And then instead of pressing R to rerun, I press E. + +10:48.600 --> 10:53.400 +Then I get a prompt with the current command, + +10:53.400 --> 10:57.640 +and then I can add it, and it will rerun that. + +10:57.640 --> 11:00.920 +So maybe something similar for another directory + +11:00.920 --> 11:05.320 +could be added. + +11:22.720 --> 11:23.200 +Cool. + +11:23.200 --> 11:27.200 +I think we still have about 13 or 14 more minutes of live Q&A + +11:27.200 --> 11:29.840 +time on stream, so if folks do have more questions + +11:29.840 --> 11:32.440 +about this talk from Nicolas, please + +11:32.440 --> 11:33.960 +feel free to put them on the pad, + +11:33.960 --> 11:36.560 +or come join here on the big blue button and ask here. + +11:40.400 --> 11:41.320 +Yeah. + +11:41.320 --> 11:47.600 +And I also want to mention that if you realize later + +11:47.600 --> 11:50.000 +you have a question or a suggestion, + +11:50.000 --> 11:57.200 +feel free to contact me or create a new post + +11:57.200 --> 12:00.960 +on the mailing list for the project. + +12:00.960 --> 12:02.720 +That's much appreciated. + +12:07.160 --> 12:09.720 +Sounds good. + +12:09.720 --> 12:10.240 +Yeah. + +12:10.240 --> 12:22.880 +So then there is a question incoming. + +12:22.880 --> 12:30.320 +So what are some other places where this might be useful? + +12:30.320 --> 12:32.760 +And you, for me, fetching that question + +12:32.760 --> 12:40.480 +is, what are some other places where this might be useful? + +12:40.480 --> 12:46.320 +And you, for me, fetching mail, get processes started by magic. + +12:46.320 --> 12:48.880 +What things would you like to see working + +12:48.880 --> 12:52.560 +in a one to two-year time frame? + +12:55.040 --> 12:58.520 +Yeah, that's a good question. + +12:58.520 --> 13:01.800 +I think there are these situations. + +13:01.800 --> 13:04.800 +One of the things that I ran into yesterday + +13:04.800 --> 13:11.320 +was that I was trying to use EMMS to connect + +13:11.320 --> 13:14.560 +to the stream for Emacs Conv. + +13:14.560 --> 13:17.640 +And that was working fine. + +13:17.640 --> 13:22.040 +It was using MPV in the background. + +13:22.040 --> 13:25.280 +But then I did some modifications to my Emacs + +13:25.280 --> 13:30.120 +and wanted to restart it, and then the stream died. + +13:30.120 --> 13:35.600 +Kind of those situations where I found it valuable, + +13:35.600 --> 13:41.800 +I added support for the D-RED R-Sync package, + +13:41.800 --> 13:44.440 +for example, that I use occasionally + +13:44.440 --> 13:51.480 +to copy things to a remote server + +13:51.480 --> 13:52.960 +or from a remote server. + +13:52.960 --> 13:56.280 +And yeah, that was always something + +13:56.280 --> 14:00.240 +that I thought could benefit from it. + +14:00.240 --> 14:08.000 +So I would ideally like to see if it + +14:08.000 --> 14:13.080 +can be used for more of these processes. + +14:15.680 --> 14:21.600 +I guess maybe I should get in contact + +14:21.600 --> 14:27.480 +with some of the devs to see if they have ideas on how this + +14:27.480 --> 14:33.360 +could be incorporated better with Emacs. + +14:33.360 --> 14:36.440 +Because so far, it was kind of straightforward + +14:36.440 --> 14:41.000 +to get it to work with Shell or Compile. + +14:41.000 --> 14:47.360 +But it hacks around the current implementation + +14:47.360 --> 14:48.760 +to make it use Detach. + +14:48.760 --> 14:55.360 +And if I wanted it to be used in many more places, + +14:55.360 --> 14:58.560 +it feels like it would be maybe not the best way + +14:58.560 --> 15:07.440 +to have a lot of advices being added to the various functions. + +15:07.440 --> 15:12.720 +But yeah, definitely, it would be really cool + +15:12.720 --> 15:17.760 +if that could be worked on properly + +15:17.760 --> 15:22.880 +so that once I've managed to get the workflow + +15:22.880 --> 15:27.080 +for its current implementation a little bit more polished, + +15:27.080 --> 15:38.600 +I will try to look into this and also see what is possible. + +15:38.600 --> 15:42.080 +I don't know if there are any limitations + +15:42.080 --> 15:49.360 +with my current approach that I need some more expertise on. + +16:12.080 --> 16:39.760 +Yeah, so if there is no other questions, I'll + +16:39.760 --> 16:53.960 +OK, there is another question. + +16:53.960 --> 16:59.720 +OK, a general topic here. + +16:59.720 --> 17:02.520 +What are you currently excited about in Emacs? + +17:02.520 --> 17:15.520 +Well, I'm really excited about the TreeSitter + +17:15.520 --> 17:21.120 +that was just added to Emacs 29. + +17:21.120 --> 17:27.240 +I haven't gotten around to use that yet. + +17:27.240 --> 17:29.640 +But I think it looks very promising. + +17:29.640 --> 17:37.440 +And I'm a big fan of structural editing + +17:37.440 --> 17:39.040 +that you can use in Lisp. + +17:39.040 --> 17:42.600 +So if this opens up the possibility + +17:42.600 --> 17:47.880 +to be able to use that more in other languages, + +17:47.880 --> 17:49.000 +that would be really cool. + +17:49.000 --> 17:56.880 +Otherwise, I'm generally excited about how + +17:56.880 --> 18:01.880 +the program is developing. + +18:01.880 --> 18:05.040 +I think there has been a lot of great additions + +18:05.040 --> 18:11.720 +in these last couple of versions of the program. + +18:11.720 --> 18:13.680 +So it's cool to see. + +18:13.680 --> 18:22.640 +And also how the Emacs Conf has been continuing + +18:22.640 --> 18:27.760 +and being an annual thing and also growing, + +18:27.760 --> 18:33.280 +adding this new layout with the general track + +18:33.280 --> 18:34.280 +and development track. + +18:34.280 --> 18:35.080 +I think it's great. + +18:39.080 --> 18:39.560 +Thanks. + +18:39.560 --> 18:41.040 +Yeah, it's been interesting. + +18:41.040 --> 18:46.800 +Emacs itself, I feel like the Emacs-Devel mailing list + +18:46.800 --> 18:50.520 +has been growing in traffic over the years. + +18:50.520 --> 18:52.280 +I've been subscribed for a couple of years. + +18:52.280 --> 18:56.200 +And more recently, I'm just seeing more and more + +18:56.200 --> 18:57.600 +incoming emails from Emacs-Devel, + +18:57.600 --> 19:00.000 +which is always cool. + +19:00.000 --> 19:02.680 +Yeah, and like you said with Emacs Conf, + +19:02.680 --> 19:05.800 +yeah, we've been growing, thankfully. + +19:05.800 --> 19:07.680 +And this year, we've experimented + +19:07.680 --> 19:09.280 +with having two tracks, which I think + +19:09.280 --> 19:12.280 +has turned out pretty well, pretty great. + +19:12.280 --> 19:15.600 +Because we don't have to try to squeeze in all the talks + +19:15.600 --> 19:19.080 +so tightly and be able to give proper Q&A time, + +19:19.080 --> 19:20.960 +like this one, I think, which is pretty great. + +19:20.960 --> 19:23.280 +So yeah, very glad to hear and see it. + +19:27.400 --> 19:33.400 +Yeah, and maybe I should mention now + +19:33.400 --> 19:41.320 +that I know that the E-Shell talk is coming up by Howard, + +19:41.320 --> 19:45.880 +that I discovered there is a kind of a bug + +19:45.880 --> 19:50.320 +in the detached implementation. + +19:50.320 --> 19:56.320 +So it doesn't handle properly the way E-Shell + +19:56.320 --> 20:07.040 +seems to communicate when you quote some text in a shell + +20:07.040 --> 20:07.920 +command. + +20:07.920 --> 20:11.480 +If you have been using quotes, it + +20:11.480 --> 20:14.840 +seems to be added as text properties that + +20:14.840 --> 20:16.240 +gets into detached. + +20:16.240 --> 20:20.040 +And I didn't know about that, but detached + +20:20.040 --> 20:22.080 +is not picking that up. + +20:22.080 --> 20:28.040 +So if you try to run something similar to Echo + +20:28.040 --> 20:33.960 +and quotation marks, Niklas, then yeah, it will not + +20:33.960 --> 20:35.360 +run it with quotation marks. + +20:35.360 --> 20:38.200 +So I guess for Echo, it might work, + +20:38.200 --> 20:42.280 +but other commands, it can fail. + +20:42.280 --> 20:45.760 +So just be aware about that. + +20:45.760 --> 20:49.360 +I guess that's on the priority list to fix. + +20:49.360 --> 20:50.280 +Interesting. + +20:50.280 --> 20:51.960 +Yeah, for sure. + +20:51.960 --> 20:54.720 +I guess folks can look forward to that getting hopefully fixed + +20:54.720 --> 20:59.080 +in the near future or at some point. + +20:59.080 --> 21:05.640 +Yeah, and I could add that maybe something + +21:05.640 --> 21:15.240 +that is in between this request for persistent sessions + +21:15.240 --> 21:20.040 +is that currently, you can use detached in a way + +21:20.040 --> 21:23.360 +so it creates like it runs the session. + +21:23.360 --> 21:28.400 +And once that finish, you use its callback + +21:28.400 --> 21:32.920 +to generate a new session, which runs some other command. + +21:32.920 --> 21:41.240 +So you can chain detached sessions that way. + +21:41.240 --> 21:47.680 +I wanted to improve on how that has been implemented + +21:47.680 --> 21:55.040 +so that you can more easily start these changed sessions + +21:55.040 --> 21:58.520 +and that they would show up in the user interface. + +21:58.520 --> 22:05.120 +And maybe if you rerun the top of the chain, + +22:05.120 --> 22:12.720 +it will actually start all these sessions that way. + +22:12.720 --> 22:16.680 +I have some use cases personally where + +22:16.680 --> 22:22.200 +for the time being, before running an executable, + +22:22.200 --> 22:24.920 +I actually need to run a different build command + +22:24.920 --> 22:27.160 +than I normally do. + +22:27.160 --> 22:32.880 +And I keep forgetting that, and then that fails. + +22:32.880 --> 22:35.960 +And it would be great to just be able to. + +22:35.960 --> 22:40.440 +I mean, you could always have that first command + +22:40.440 --> 22:48.240 +and then and and the other one, but it doesn't look as nice. + +22:48.240 --> 22:53.960 +And it would be nice to be able to see that, OK, this has been + +22:53.960 --> 22:57.720 +this is currently running, but in the next once that's + +22:57.720 --> 23:02.080 +finished, it will keep on running this one. + +23:02.080 --> 23:05.440 +So that's something I plan to add support for. + +23:05.440 --> 23:09.360 +It sounds good. + +23:09.360 --> 23:10.120 +That would be nice. + +23:14.080 --> 23:17.200 +Yeah, I would like that as well. + +23:17.200 --> 23:21.360 +So I have an incentive. + +23:21.360 --> 23:41.720 +Yeah, also not to completely derail this, + +23:41.720 --> 23:45.120 +but I mean, I don't think there are any questions as of now. + +23:45.120 --> 23:46.800 +So I can maybe mention this. + +23:46.800 --> 23:48.320 +Someone pinged me on IRC. + +23:48.320 --> 23:50.640 +Well, someone, Shoushin, good friend. + +23:50.640 --> 23:53.920 +And the creator, actually, of the musics + +23:53.920 --> 23:56.400 +that we've been using at Emacs Conf between for our lunch + +23:56.400 --> 23:58.880 +breaks and here and there, he mentioned + +23:58.880 --> 24:01.080 +that he likes this FSF shirt. + +24:03.960 --> 24:05.720 +Yeah, it's nice. + +24:05.720 --> 24:06.200 +Thanks. + +24:06.200 --> 24:10.120 +Yeah, it's I think from a year or so ago. + +24:10.120 --> 24:14.200 +It was put up for FSF's 35th birthday. + +24:14.200 --> 24:17.160 +And yeah, it's also what it says, FSF 35. + +24:17.160 --> 24:20.280 +Yeah, I'm not sure if it's still available on their shop, + +24:20.280 --> 24:22.360 +but yeah, you might be able to find it there. + +24:25.880 --> 24:27.160 +Nice. + +24:27.160 --> 24:31.080 +So they have their own shop? + +24:31.080 --> 24:32.000 +Yeah, so there is. + +24:32.000 --> 24:33.520 +You can buy merch or? + +24:33.520 --> 24:34.480 +Yeah, exactly. + +24:34.480 --> 24:37.080 +There is shop.fsf.org, and they have + +24:37.080 --> 24:41.880 +a bunch of different goodies and things, merchandise. + +24:41.880 --> 24:44.440 +They have shirts like this one, but they also + +24:44.440 --> 24:45.920 +have a lot of other stuff. + +24:45.920 --> 24:47.960 +They have this one, but they also + +24:47.960 --> 24:51.200 +sell things like printed versions of the Emacs user + +24:51.200 --> 24:54.840 +manual, which is particularly relevant for us. + +24:54.840 --> 24:57.680 +Yeah, and Emacs stickers. + +24:57.680 --> 24:59.280 +I think also sell pins and such. + +24:59.280 --> 25:02.280 +So yeah, I mean, if you are interested in Emacs + +25:02.280 --> 25:06.200 +or new on FSF, it might be worth checking out. + +25:06.200 --> 25:08.680 +Yeah, thanks for the tip. + +25:08.680 --> 25:11.360 +Yeah. + +25:11.360 --> 25:14.520 +Cool, and I think we have about one more minute of live Q&A + +25:14.520 --> 25:17.880 +time if folks have any questions, + +25:17.880 --> 25:23.520 +any last-minute ones, you're welcome to send it in. + +25:23.520 --> 25:26.880 +I guess there is, uh-huh. + +25:26.880 --> 25:32.240 +OK, yeah, this one got added from Karfik. + +25:32.240 --> 25:32.740 +Yeah. + +25:38.600 --> 25:41.560 +Yeah, otherwise, if there's no further questions, + +25:41.560 --> 25:44.200 +maybe we wrap it up. + +25:44.200 --> 25:45.320 +Sure, sounds good. + +25:45.320 --> 25:46.880 +Yeah, I don't see any new questions. + +25:46.880 --> 25:49.560 +So yeah, thanks again, Nicholas, for the great talk + +25:49.560 --> 25:52.640 +and for sticking around and doing the live Q&A. + +25:52.640 --> 25:54.360 +It's much appreciated, and look forward + +25:54.360 --> 26:01.080 +to seeing the upcoming developments in Detached. + +26:01.080 --> 26:03.400 +Thank you, and thanks for having me. + +26:03.400 --> 26:06.760 +Cheers, very glad to see you around. + +26:06.760 --> 26:15.840 +See ya. + diff --git a/2022/captions/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--answers.vtt b/2022/captions/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--answers.vtt new file mode 100644 index 00000000..ab7a4207 --- /dev/null +++ b/2022/captions/emacsconf-2022-eshell--top-10-reasons-why-you-should-be-using-eshell--howard-abrams--answers.vtt @@ -0,0 +1,1184 @@ +WEBVTT + +00:00.000 --> 00:03.580 +Thanks, Howard, for the great talk. + +00:03.580 --> 00:05.580 +We have the Q&A now open. + +00:05.580 --> 00:09.740 +Folks are welcome to put their questions on the pad on IRC, and we might also open up + +00:09.740 --> 00:14.500 +this room in a few minutes if you might prefer to join Big Blue Button directly and ask your + +00:14.500 --> 00:16.300 +questions to Howard that way. + +00:16.300 --> 00:19.960 +Yeah, so Howard, take it away. + +00:19.960 --> 00:20.960 +Thank you, thank you. + +00:20.960 --> 00:24.020 +Yeah, I wasn't expecting to have a Q&A. + +00:24.020 --> 00:28.180 +Tried to condense it so fast because this was supposed to be a lightning talk, but hey, + +00:28.180 --> 00:31.280 +it's good to talk to everybody. + +00:31.280 --> 00:37.080 +So question on the Etherpad here is, do I fall back to vterm only when needing terminal + +00:37.080 --> 00:39.120 +emulation? + +00:39.120 --> 00:46.160 +And yeah, I kind of know when I'm going to need that based on the use case. + +00:46.160 --> 00:50.000 +Like right now, I'm doing a lot of building with Docker, and Docker just makes a mess + +00:50.000 --> 00:51.060 +out of everything. + +00:51.060 --> 00:56.460 +And so I can sometimes will like start up a vterm for that. + +00:56.460 --> 00:59.920 +But I don't like actually typing a lot of stuff in there as much. + +00:59.920 --> 01:06.400 +So actually, I wrote a little program to, you know, the compile command, I just send + +01:06.400 --> 01:10.560 +the compile over into it that I could see the output and then I could just and it pops + +01:10.560 --> 01:12.080 +right back to where I'm at. + +01:12.080 --> 01:17.920 +So I don't know, I think you kind of need to use a little bit of both. + +01:17.920 --> 01:22.280 +But yeah, it would be nice to kind of flip a window back and forth because there's some + +01:22.280 --> 01:26.700 +things about Eshell that I actually do like a lot. + +01:26.700 --> 01:34.240 +Now my Tramp suggestion, okay, I'll admit Tramp is, it's kind of fickle. + +01:34.240 --> 01:39.920 +I think we all get sometimes better use cases out of it than others. + +01:39.920 --> 01:45.200 +Uh oh, my headphones are out of batteries here. + +01:45.200 --> 01:48.640 +So we might have to flip here. + +01:48.640 --> 01:51.280 +But yeah, so the Tramp, I don't know. + +01:51.280 --> 01:56.320 +I think we have to kind of play with it and see how it goes. + +01:56.320 --> 02:02.480 +See another question is, have we thought about adding the Eshell manual? + +02:02.480 --> 02:10.340 +You know, after doing this talk and I'm realizing a lot of the half baked or almost good stuff + +02:10.340 --> 02:15.120 +with Eshell that we could just kind of fix a little bit and some of the, especially some + +02:15.120 --> 02:21.520 +of the docs, yeah, I'm kind of thinking that maybe, maybe I should hook up with somebody + +02:21.520 --> 02:27.120 +and we could try to do a little bit of extensions there, you know, like fix up the manual a + +02:27.120 --> 02:31.840 +little bit more, make it more of a tutorial, I think would help as well as fixing some + +02:31.840 --> 02:34.560 +of the little problems like that. + +02:34.560 --> 02:43.200 +Trying to be able to cat a buffer into the shell, I think is pretty useful. + +02:43.200 --> 02:46.160 +Let's see, do I know if Eshell can be used from Elisp? + +02:46.160 --> 02:48.160 +Yeah, I use that quite a bit. + +02:48.160 --> 02:52.920 +I actually have functions that call an Eshell command. + +02:52.920 --> 02:59.440 +That way I get all of the, you know, the benefits that you can get from an Eshell, like with + +02:59.440 --> 03:02.000 +the predicates and all that kind of thing. + +03:02.000 --> 03:06.480 +I can't remember who's been doing it, but lately I've been seeing a lot of the do what + +03:06.480 --> 03:13.400 +I mean shell commands that they're, they're building up a bunch of functions that do very + +03:13.400 --> 03:16.360 +specific things, what they need. + +03:16.360 --> 03:23.120 +And it seems like there's a lot of like special commands they're adding into it to like get + +03:23.120 --> 03:24.960 +the file name and that sort of thing. + +03:24.960 --> 03:29.680 +And I was thinking, Hey, that's a great idea, but let's do it with Eshell. + +03:29.680 --> 03:33.880 +So I've been doing something similar, but just calling out to Eshell itself. + +03:33.880 --> 03:39.800 +Let's see, next question, how does that interplay with my literate dellop bop approach? + +03:39.800 --> 03:41.760 +Yeah, the two are different. + +03:41.760 --> 03:48.600 +You know, when I'm doing my literate work, you know, I'm in an org file and I'm just + +03:48.600 --> 03:56.720 +writing commands, but yeah, sometimes it's just a little bit, you know, I'm not planning + +03:56.720 --> 03:57.720 +on keeping it. + +03:57.720 --> 04:02.720 +I'm just kind of investigating things and that's what rebels are really good for. + +04:02.720 --> 04:06.840 +And in that case, yeah, I'll pop over into Eshell, write things. + +04:06.840 --> 04:11.640 +If I see something good, that's where I was talking about my little engineering notebook, + +04:11.640 --> 04:17.080 +sending it out to a capture and then, and capturing it out or writing it into a buffer + +04:17.080 --> 04:19.600 +where I can do more things to it. + +04:19.600 --> 04:23.960 +I guess it's the flexibility I think we all kind of need because you don't know exactly + +04:23.960 --> 04:25.920 +where you're going until you're halfway there. + +04:25.920 --> 04:29.100 +And it's like, Oh, I don't want to start up a new app. + +04:29.100 --> 04:32.200 +That's why we're an Emacs. + +04:32.200 --> 04:33.200 +So yeah. + +04:33.200 --> 04:34.200 +Oh yeah. + +04:34.200 --> 04:35.200 +Thank you. + +04:35.200 --> 04:36.200 +Yeah. + +04:36.200 --> 04:37.200 +Alvaro Ramineers. + +04:37.200 --> 04:38.200 +Yeah. + +04:38.200 --> 04:40.880 +That's the stuff I've been reading a lot about. + +04:40.880 --> 04:41.880 +Let's see. + +04:41.880 --> 04:42.880 +Another question. + +04:42.880 --> 04:47.340 +Do I have a strategy for getting around Eshell's lack of support for input redirection? + +04:47.340 --> 04:50.520 +You know, it is what it is. + +04:50.520 --> 04:54.900 +I don't have any ideas at the moment. + +04:54.900 --> 04:56.480 +It's a good idea. + +04:56.480 --> 05:03.160 +Whenever, you know, we're so used to doing pipes and whenever you start doing a pipe + +05:03.160 --> 05:08.040 +at all, Eshell just immediately throws it into the shell. + +05:08.040 --> 05:11.280 +But then pulling it back in is kind of difficult. + +05:11.280 --> 05:15.480 +So that's why I just started writing them out to buffers and then pulling them back + +05:15.480 --> 05:16.480 +in. + +05:16.480 --> 05:21.720 +And I find that just a little bit more useful situation for what I'm doing. + +05:21.720 --> 05:27.040 +I don't know if other people will find it as useful as I do. + +05:27.040 --> 05:31.440 +But yeah, I'm getting a little tired of trying to get just the right command of piping everything + +05:31.440 --> 05:32.440 +together. + +05:32.440 --> 05:38.200 +And two years ago when I was talking about my little piper idea, this is kind of what + +05:38.200 --> 05:44.040 +it's morphed into was just using Eshell, running the commands, editing the stuff and then pulling + +05:44.040 --> 05:47.400 +it back in to send it to some other app. + +05:47.400 --> 05:54.720 +Or not even pulling it back in, just using it at that point and sending it off into emails. + +05:54.720 --> 06:02.400 +Yes, you can call elist functions, the commands. + +06:02.400 --> 06:05.560 +I was hoping this could be kind of clarified a little bit. + +06:05.560 --> 06:12.520 +But if you have any function, any emacs list function that starts with Eshell slash, that + +06:12.520 --> 06:14.880 +gets called first before any command. + +06:14.880 --> 06:18.800 +So you can override just about every shell command. + +06:18.800 --> 06:20.240 +That many of them are. + +06:20.240 --> 06:22.400 +So there is an Eshell slash ls. + +06:22.400 --> 06:27.560 +So if you type ls into your Eshell, it's actually calling that function. + +06:27.560 --> 06:32.540 +Now most of those functions will, if it runs into too many options that it doesn't know + +06:32.540 --> 06:40.040 +about or something like that, call out to whatever ls program you've got installed. + +06:40.040 --> 06:44.600 +But that's how it goes. + +06:44.600 --> 06:48.120 +So yes, buffers are superior pipes. + +06:48.120 --> 06:50.880 +Whoever is typing that, I think that's a great idea. + +06:50.880 --> 06:55.840 +I think that's kind of the concept that I'm realizing this year. + +06:55.840 --> 07:06.320 +Hold on one second while I switch headphones here. + +07:06.320 --> 07:08.640 +I suppose you can still hear me, right? + +07:08.640 --> 07:11.960 +Yep, I can still hear you. + +07:11.960 --> 07:18.760 +Well, nobody's talking yet. + +07:18.760 --> 07:20.800 +I can still hear you. + +07:20.800 --> 07:22.720 +OK, perfect, perfect. + +07:22.720 --> 07:23.720 +And I can hear you too. + +07:23.720 --> 07:26.800 +So that works well. + +07:26.800 --> 07:28.260 +Let's see. + +07:28.260 --> 07:30.280 +Any other questions in the IRC? + +07:30.280 --> 07:35.040 +Not seeing them mostly in the etherpad here. + +07:35.040 --> 07:42.600 +Do I have a preferred method for getting argument completion for shell commands? + +07:42.600 --> 07:46.120 +OK, that's a really good question. + +07:46.120 --> 07:53.720 +There is a function that I found in Eshell for getting options. + +07:53.720 --> 07:57.620 +And it's like, great, that's what I was expecting, something like a get ops. + +07:57.620 --> 08:02.040 +So I start playing around with it, and it's like almost there. + +08:02.040 --> 08:05.160 +The problem is it's not really as flexible as I would think. + +08:05.160 --> 08:08.320 +It either takes command line arguments or it doesn't. + +08:08.320 --> 08:13.880 +And it's kind of made for very simple commands only. + +08:13.880 --> 08:18.200 +So well, I ended up writing my own. + +08:18.200 --> 08:22.480 +So I wrote kind of a get ops like function, kind of behaves like it, where you can give + +08:22.480 --> 08:28.240 +it a list of single commands, a list of those long commands, some that take options and + +08:28.240 --> 08:30.280 +some that don't. + +08:30.280 --> 08:36.920 +And you'll see that in my, where I've got it here in the etherpad up on the full code. + +08:36.920 --> 08:41.200 +I also posted it up on Mastodon as well earlier. + +08:41.200 --> 08:44.240 +But I have a link to my configuration file. + +08:44.240 --> 08:45.240 +It's all literate. + +08:45.240 --> 08:50.200 +So you can just scroll down, search for get ops, and you'll see my function. + +08:50.200 --> 08:53.720 +I haven't fully tested out everything yet. + +08:53.720 --> 08:57.720 +Most of the code was actually written for this talk, I found. + +08:57.720 --> 09:01.200 +And so there will be bugs. + +09:01.200 --> 09:07.340 +But you know, you might find it interesting to grab some of the stuff and play around + +09:07.340 --> 09:08.340 +with it. + +09:08.340 --> 09:10.440 +If you find some bugs, please send them back to me. + +09:10.440 --> 09:14.320 +I'll discover them soon enough. + +09:14.320 --> 09:19.720 +So is it possible to get L.base completion for elist calls and eshell? + +09:19.720 --> 09:20.720 +Good question. + +09:20.720 --> 09:23.920 +I don't know. + +09:23.920 --> 09:28.160 +I have been switching from company mode to Corfu. + +09:28.160 --> 09:30.120 +Just try it all out. + +09:30.120 --> 09:37.080 +I'm getting some pretty good completions, but the EL doc based would be, that would + +09:37.080 --> 09:43.120 +be very lovely. + +09:43.120 --> 09:45.040 +A plan nine smart shell. + +09:45.040 --> 09:46.400 +Sorry, sorry. + +09:46.400 --> 09:47.400 +Oh, yes. + +09:47.400 --> 09:58.160 +I do remember reading Mickey Peterson's article on eshell and his plan nine idea. + +09:58.160 --> 10:04.240 +I was playing around with it for a little bit, but I don't know. + +10:04.240 --> 10:05.240 +Yeah. + +10:05.240 --> 10:11.720 +I couldn't get it quite working the way I thought I would want it to, so I didn't follow + +10:11.720 --> 10:12.720 +through. + +10:12.720 --> 10:18.600 +But I just got some good ideas there. + +10:18.600 --> 10:21.080 +Any other questions? + +10:21.080 --> 10:27.680 +But yes, I should, yeah, I should revisit Mickey Peterson's ideas. + +10:27.680 --> 10:28.680 +Say it again. + +10:28.680 --> 10:29.680 +Cool. + +10:29.680 --> 10:30.680 +Yeah, sorry. + +10:30.680 --> 10:32.720 +I guess I was just going to ask a question on the fly here. + +10:32.720 --> 10:33.720 +Sure. + +10:33.720 --> 10:38.040 +Yeah, which is, so you mentioned this sort of get up function or get up like function + +10:38.040 --> 10:39.040 +that you implemented. + +10:39.040 --> 10:43.840 +Would you consider maybe having that integrated in Emacs core itself so that it's available + +10:43.840 --> 10:46.880 +to all other eshell users? + +10:46.880 --> 10:54.040 +I think that'd be a great idea and I'm kind of thinking I need to kind of see what should + +10:54.040 --> 11:00.760 +go into eshell and what should maybe be like a side package like eshell ext kind of thing + +11:00.760 --> 11:07.200 +for getting some extra stuff because I don't know if everybody wants all of it. + +11:07.200 --> 11:13.800 +So having a side package might be a really good idea and then seeing, yeah. + +11:13.800 --> 11:15.760 +So yes, if you want to work on it with me. + +11:15.760 --> 11:16.760 +Yeah, sure. + +11:16.760 --> 11:17.760 +Sounds good. + +11:17.760 --> 11:18.760 +Why not? + +11:18.760 --> 11:19.760 +Sure. + +11:19.760 --> 11:20.760 +Sure. + +11:20.760 --> 11:23.840 +All right. + +11:23.840 --> 11:30.200 +Any other questions or good? + +11:30.200 --> 11:32.360 +I think we still have about, sorry. + +11:32.360 --> 11:33.360 +Go ahead. + +11:33.360 --> 11:36.760 +Oh, I was going to say I think we're out of questions. + +11:36.760 --> 11:37.760 +Right? + +11:37.760 --> 11:38.760 +Yeah. + +11:38.760 --> 11:39.760 +But we still are not out of time yet. + +11:39.760 --> 11:49.400 +So I think I've got more time for Q&A than I thought I had for the actual talk. + +11:49.400 --> 11:52.280 +Yeah, it's been interesting. + +11:52.280 --> 11:57.360 +So we were kind of debating on switching to two tracks like we have done this year or + +11:57.360 --> 12:01.240 +keeping or maintaining the same setup as the previous years, which was one track. + +12:01.240 --> 12:06.280 +But sort of all the talks were very like squeezing together and it was a last minute decision + +12:06.280 --> 12:07.280 +kind of. + +12:07.280 --> 12:10.000 +And we almost did end up going back to one track. + +12:10.000 --> 12:11.000 +But we're here. + +12:11.000 --> 12:14.760 +And I think that's the reason why some of the Q&As are sometimes longer than the talks + +12:14.760 --> 12:15.760 +themselves. + +12:15.760 --> 12:18.080 +Well, okay. + +12:18.080 --> 12:22.340 +So personally, I love the two track idea and I love all the breaks. + +12:22.340 --> 12:27.200 +It's made it a lot easier because last year it's like, oh, I can't even get up. + +12:27.200 --> 12:29.860 +Yeah, I feel you. + +12:29.860 --> 12:30.860 +And I feel the same too. + +12:30.860 --> 12:34.940 +Both, I mean, as someone who's been a little bit watching, but also as organizers, I mean, + +12:34.940 --> 12:39.360 +you couldn't catch a breath with like that one track rapid fire of talks one after another. + +12:39.360 --> 12:41.760 +So this is much better, I feel like. + +12:41.760 --> 12:42.760 +Yeah. + +12:42.760 --> 12:43.760 +Yeah. + +12:43.760 --> 12:44.760 +So let's keep it. + +12:44.760 --> 12:45.760 +Let's keep it going. + +12:45.760 --> 12:46.760 +Yeah. + +12:46.760 --> 12:48.760 +And next year, maybe I can do 15 minutes. + +12:48.760 --> 12:49.760 +Yes. + +12:49.760 --> 12:50.760 +Mal? + +12:50.760 --> 12:51.760 +Yes. + +12:51.760 --> 12:54.560 +Are you the maintainer of Eshell now? + +12:54.560 --> 12:56.560 +No, I'm not. + +12:56.560 --> 12:59.680 +Just an interested bystander. + +12:59.680 --> 13:03.200 +I think Eshell is still just part of Core. + +13:03.200 --> 13:09.260 +John Wiggly wrote it originally, but I think it's just part of the core. + +13:09.260 --> 13:13.540 +So I don't think anyone is maintaining it per se. + +13:13.540 --> 13:18.160 +It certainly is getting a little long in the tooth and we probably need to do some updatings + +13:18.160 --> 13:19.160 +on it. + +13:19.160 --> 13:21.720 +So maybe that's what we should do for version 30. + +13:21.720 --> 13:27.400 +Yeah, I've started to use it a little bit more just because of all the chatter on the + +13:27.400 --> 13:29.100 +various blogs, right? + +13:29.100 --> 13:31.240 +There is a lot of chatter lately. + +13:31.240 --> 13:38.080 +But it burned me recently for like half an hour because I was trying to SSH into a machine + +13:38.080 --> 13:39.080 +from Eshell. + +13:39.080 --> 13:45.240 +And usually, I use just regular shell mode. + +13:45.240 --> 13:53.160 +And for some reason, it just didn't connect up to the SSH agent or whatever. + +13:53.160 --> 13:57.840 +So I was thinking that everything's broken and stuff. + +13:57.840 --> 13:59.800 +I'm like running around trying to do stuff. + +13:59.800 --> 14:03.600 +Oh, it's just because I'm in Eshell trying to do this. + +14:03.600 --> 14:04.600 +Yes, yes. + +14:04.600 --> 14:07.600 +And if I know I'm going to be SSHing into a box, I don't. + +14:07.600 --> 14:10.280 +I just start up vterm and go. + +14:10.280 --> 14:12.280 +Then I know it's going to be pretty good. + +14:12.280 --> 14:16.240 +I've had a lot of good success in that regard with vterm. + +14:16.240 --> 14:21.360 +However, the problem is it's hard to pull that kind of stuff back. + +14:21.360 --> 14:25.040 +Like I'll find something interesting and it's like, oh, crap. + +14:25.040 --> 14:31.400 +Now I have to control C, control T, and then go up and collect it as opposed to shooting + +14:31.400 --> 14:37.040 +it out over into an org file with a redirection. + +14:37.040 --> 14:41.480 +That's why I've been kind of playing around with just using Tramp in Eshell as opposed + +14:41.480 --> 14:44.040 +to SSHing in. + +14:44.040 --> 14:46.040 +My knowledge may vary. + +14:46.040 --> 14:51.400 +I thought in the command interpreter, there's some stuff like... + +14:51.400 --> 14:52.400 +There is. + +14:52.400 --> 14:57.760 +It's supposed to be the visual commands. + +14:57.760 --> 15:02.200 +I think there's a list of them, and SSH is one of those. + +15:02.200 --> 15:11.920 +It's supposed to then start off as a shell mode, detached little process and feed stuff, + +15:11.920 --> 15:13.560 +but I don't know. + +15:13.560 --> 15:16.680 +I haven't had as much luck with it, so I haven't really bothered. + +15:16.680 --> 15:18.320 +I just jump. + +15:18.320 --> 15:21.400 +If I know I'm going to SSH, I'll just start a vterm and go. + +15:21.400 --> 15:29.240 +Well, I mean, aside from doing SSH, just using... + +15:29.240 --> 15:31.320 +I think there are a couple commands for... + +15:31.320 --> 15:38.720 +There's one for taking the command on the command line and putting it into the kill + +15:38.720 --> 15:44.880 +ring, and there's another one for flushing the buffer, flushing the last output of your + +15:44.880 --> 15:55.080 +buffer, and it works in many different shell or repl-type environments inside Emacs, but + +15:55.080 --> 16:00.520 +it doesn't put it into the kill ring, which was sort of confusing to me, so I'll have + +16:00.520 --> 16:07.000 +to dive into the Elisp at some point and figure out how to get what I want. + +16:07.000 --> 16:09.680 +I think that's the problem with this Eshell. + +16:09.680 --> 16:19.860 +There's a lot of interesting ideas, but there's a lot that's not quite baked yet. + +16:19.860 --> 16:26.280 +It's a combination of what we expect, because it's not a terminal emulator shell. + +16:26.280 --> 16:32.760 +It's not like Bash, it's different, but it's got some cool stuff, so there's expectation, + +16:32.760 --> 16:38.560 +and then there are just bugs and things that haven't been finished. + +16:38.560 --> 16:41.080 +I can't remember who started... + +16:41.080 --> 16:48.400 +I've got a link in my configuration file, but somebody was writing on how to get the + +16:48.400 --> 16:55.320 +output from the last command in shell, shell mode, and I thought, that's a great idea. + +16:55.320 --> 17:01.640 +I want that in Eshell, and then I found the source code that there's a double dollar sign + +17:01.640 --> 17:02.640 +that's already there. + +17:02.640 --> 17:03.640 +Great. + +17:03.640 --> 17:04.640 +Wait a minute. + +17:04.640 --> 17:05.640 +It doesn't work all the time? + +17:05.640 --> 17:10.640 +What the hell? + +17:10.640 --> 17:15.720 +When I saw that in your talk, I was like, oh, that's one of the things I've been looking + +17:15.720 --> 17:16.720 +for. + +17:16.720 --> 17:17.720 +It is, exactly. + +17:17.720 --> 17:22.640 +Now, I'll admit, the underpinnings are really good. + +17:22.640 --> 17:28.520 +It didn't take long to actually make that and fix it, and then make it even better. + +17:28.520 --> 17:32.800 +Like putting in a kill ring, it's like, now that is nice, so that I could just grab it + +17:32.800 --> 17:34.120 +as an array and go. + +17:34.120 --> 17:35.120 +That's really good. + +17:35.120 --> 17:37.600 +So, I think there's a lot of good stuff there. + +17:37.600 --> 17:42.200 +I think, yeah, let's just make some features. + +17:42.200 --> 17:48.000 +Let's make an extension, and let's assign the copyright to the BFSS. + +17:48.000 --> 17:53.080 +Yeah, maybe I'll start looking at Eshell after. + +17:53.080 --> 17:58.440 +I'm playing around with org-node right now, trying to catch up to some of the forks, but + +17:58.440 --> 18:02.840 +maybe Eshell is another, the next thing to sort of poke at. + +18:02.840 --> 18:05.840 +Aren't there so many fun things to do? + +18:05.840 --> 18:08.840 +It's terrible. + +18:08.840 --> 18:13.880 +Great, great, great. + +18:13.880 --> 18:17.960 +I got another question over here in the IRC, do you ever fall back to terminals and shells + +18:17.960 --> 18:20.160 +outside of Emacs? + +18:20.160 --> 18:32.260 +Okay, that, all right, confession time, yes, I sometimes use iterm. + +18:32.260 --> 18:37.920 +So when I, so when I first boot up, I do have to use a terminal before I start up Emacs + +18:37.920 --> 18:39.840 +because it's got to mount everything. + +18:39.840 --> 18:46.040 +So I do use iterm, and yeah, sometimes if it happens to be there, I'll type the command + +18:46.040 --> 18:51.040 +in there instead of running into Emacs. + +18:51.040 --> 18:56.440 +But I just find running those terminals to be pretty frustrating because most of them, + +18:56.440 --> 19:04.480 +you have to use a mouse to copy and select stuff. + +19:04.480 --> 19:08.480 +Yeah and actually I could maybe chime in here and say that yeah, exactly, not only for terminals + +19:08.480 --> 19:15.960 +but also for IRC clients, I feel like I've tried using a bunch of different ones, yeah, + +19:15.960 --> 19:20.880 +but it ultimately comes down to I can't just put the cursor up, you know, quickly grab + +19:20.880 --> 19:23.920 +something, kill it and paste it somewhere else or just use it. + +19:23.920 --> 19:28.040 +And yeah, that's, I feel like one of the killer features of Emacs or anything that's built + +19:28.040 --> 19:29.040 +into Emacs. + +19:29.040 --> 19:30.040 +Mm-hmm. + +19:30.040 --> 19:31.040 +Mm-hmm. + +19:31.040 --> 19:32.040 +Agreed. + +19:32.040 --> 19:39.320 +Lounge679 says, what are the less well oiled parts of Eshell and the edge cases? + +19:39.320 --> 19:45.960 +Yeah, that's a great phrasing, less well oiled parts. + +19:45.960 --> 19:51.760 +There's just a little friction and I think we need to figure out how to fix those things + +19:51.760 --> 19:54.360 +when we encounter them. + +19:54.360 --> 20:01.440 +Yeah, I should make a list of the things I found and hey, Mal, you give me a list too. + +20:01.440 --> 20:02.440 +And yeah. + +20:02.440 --> 20:09.040 +I think one of the problems with Eshell is that it's not based on comment, like shell + +20:09.040 --> 20:10.040 +and- It isn't. + +20:10.040 --> 20:17.400 +Yeah, and as a result, the other shells have like a uniform interface and uniform key bindings + +20:17.400 --> 20:19.040 +for doing things. + +20:19.040 --> 20:25.360 +And Eshell does things slightly differently, different enough that- + +20:25.360 --> 20:26.360 +That's right. + +20:26.360 --> 20:27.360 +Yeah. + +20:27.360 --> 20:28.360 +Yeah, exactly. + +20:28.360 --> 20:29.360 +And that's good and bad. + +20:29.360 --> 20:30.480 +It's doing something totally different. + +20:30.480 --> 20:35.280 +And if you know that it's just gonna be different and you'll treat it differently, at least that's + +20:35.280 --> 20:36.280 +how I found. + +20:36.280 --> 20:42.280 +So that's why I'm jumping between the vterm and Eshell, depending on what I'm trying to + +20:42.280 --> 20:43.340 +do. + +20:43.340 --> 20:48.760 +But I'm just finding there's a lot of interesting stuff in Eshell, but it changes how we run + +20:48.760 --> 20:49.760 +things. + +20:49.760 --> 20:56.240 +I think it's very similar to, well, I mean, if, okay, I'm not blaming names, but if you're + +20:56.240 --> 21:01.080 +a VI user, you're starting with a terminal and you're running commands. + +21:01.080 --> 21:04.400 +And then when you need to edit a file, you edit, you come back, but the shell is kind + +21:04.400 --> 21:05.400 +of your main focus. + +21:05.400 --> 21:10.160 +Well, we're all over here in Emacs and we just run commands from Emacs, right? + +21:10.160 --> 21:12.280 +That's just how we behave. + +21:12.280 --> 21:19.680 +And using Eshell is this way where don't go all the way, don't try to, but you can kind + +21:19.680 --> 21:22.300 +of pretend and do different things. + +21:22.300 --> 21:30.320 +So yeah, so that's why I say it kind of changes our behavior because it's doing things differently. + +21:30.320 --> 21:34.560 +So you can't look at it as another common. + +21:34.560 --> 21:43.600 +Wait, so when you say you're using vterm, does that mean you're using, that's a separate + +21:43.600 --> 21:49.920 +application outside of Emacs or is there a, oh, oh, yeah. + +21:49.920 --> 21:55.960 +So vterm is, I don't know when it came out, a couple of years ago, I don't know the details + +21:55.960 --> 22:02.960 +of it, but it's using a module library to do all the heavy lifting. + +22:02.960 --> 22:07.720 +So it's just a little better comment and I've just found it to be a lot, very reliable and + +22:07.720 --> 22:08.840 +pretty fast. + +22:08.840 --> 22:16.480 +So especially when I'm SSHing into another machine in my data centers and especially + +22:16.480 --> 22:21.200 +building all the Docker and some of the weird terminal stuff that I need to do in those + +22:21.200 --> 22:28.280 +shell environments using SSH, I just find vterm to be really good for what that does. + +22:28.280 --> 22:29.280 +Oh, okay. + +22:29.280 --> 22:30.280 +I see it now. + +22:30.280 --> 22:31.280 +It's on an alpha. + +22:31.280 --> 22:32.280 +All right. + +22:32.280 --> 22:33.280 +Yeah. + +22:33.280 --> 22:39.880 +It is in the, you're still in Emacs, but the key bindings are pretty good, but you do, + +22:39.880 --> 22:47.280 +you know, it has two modes, one for selecting text and then one for being a terminal. + +22:47.280 --> 22:50.280 +Maybe I'll try that out instead of metax-gel. + +22:50.280 --> 22:54.240 +Yes, I would, if you can. + +22:54.240 --> 22:59.200 +The problem that I think most people have is building that vterm library. + +22:59.200 --> 23:02.960 +I haven't had any problems on my work Mac. + +23:02.960 --> 23:04.480 +So it's been pretty good for me. + +23:04.480 --> 23:05.480 +Okay. + +23:05.480 --> 23:06.480 +All right. + +23:06.480 --> 23:12.240 +That's good to know about too, but that'll keep me from you like adopting Eshell. + +23:12.240 --> 23:13.240 +Sure. + +23:13.240 --> 23:17.720 +You know, that's a nice thing about choices. + +23:17.720 --> 23:18.720 +Yeah. + +23:18.720 --> 23:29.160 +You'll just find that vterm, I think behaves exactly like you expect a terminal to act. + +23:29.160 --> 23:31.560 +And so you won't have, you won't have to do much. + +23:31.560 --> 23:35.060 +I don't have much in the way of customizations. + +23:35.060 --> 23:41.160 +It's mostly my customizations is just starting a vterm running SSH automatically. + +23:41.160 --> 23:44.600 +So it's mostly about working with my external hosts. + +23:44.600 --> 23:51.600 +And if I may quickly jump in here, I think we have about another minute or so of live + +23:51.600 --> 23:55.760 +Q&A on the stream at which point then the stream will move on, but you folks are welcome + +23:55.760 --> 24:01.440 +to stay here or like continue the Q&A on the pad or whatever works best. + +24:01.440 --> 24:02.440 +Just staying in this room. + +24:02.440 --> 24:03.440 +Yeah. + +24:03.440 --> 24:04.440 +And continue talking. + +24:04.440 --> 24:05.440 +Lovely. + +24:05.440 --> 24:06.440 +Yeah. + +24:06.440 --> 24:12.120 +As Karthik has said vterm isn't distracting. + +24:12.120 --> 24:18.600 +It doesn't, you know, it's, it's just exactly what you expect. + +24:18.600 --> 24:20.480 +So it's not interesting either. + +24:20.480 --> 24:34.320 +No, I'm just, yeah, and so there's some good comments on the IRC. + +24:34.320 --> 24:35.320 +So yeah. + +24:35.320 --> 24:36.320 +Thanks everybody. + +24:36.320 --> 24:37.320 +It's been fun. + +24:37.320 --> 24:38.320 +All right. + +24:38.320 --> 24:39.320 +I'm going to jump off now. + +24:39.320 --> 24:40.320 +Nice talking to you, Howard. + +24:40.320 --> 24:41.320 +You too. + +24:41.320 --> 24:42.320 +All right. + +24:42.320 --> 24:43.320 +Thank you all. + +24:43.320 --> 24:46.800 +I think I'll drop off as well. + +24:46.800 --> 24:48.800 +All right. + +24:48.800 --> 24:50.800 +Thank you. + diff --git a/2022/captions/emacsconf-2022-fanfare--fanfare-for-the-common-emacs-user--john-cummings--answers.vtt b/2022/captions/emacsconf-2022-fanfare--fanfare-for-the-common-emacs-user--john-cummings--answers.vtt new file mode 100644 index 00000000..dbebe238 --- /dev/null +++ b/2022/captions/emacsconf-2022-fanfare--fanfare-for-the-common-emacs-user--john-cummings--answers.vtt @@ -0,0 +1,6638 @@ +WEBVTT + +00:00.000 --> 00:10.040 +Okay, hi, we seem to be back. Sorry for the little interruption. John, you might not have + +00:10.040 --> 00:14.640 +realized, but I was supposed to send a broadcast message to the dev track and I submitted it + +00:14.640 --> 00:20.840 +to the gen track instead, so I spoke over you for 20 seconds. I apologize humbly, deeply, + +00:20.840 --> 00:26.440 +and sincerely. But John, I have to apologize now. I will say hi to you. How are you doing? + +00:26.440 --> 00:30.120 +Hello, I'm doing good. I know I'm saying you harmonized with me. You didn't talk over me, + +00:30.120 --> 00:31.120 +you talked with me. + +00:31.120 --> 00:36.280 +You know, as much as I would like to say yes, that is possible, the fact that I did not + +00:36.280 --> 00:40.200 +have the sounds on your talk makes it very difficult for me to harmonize. You know, it's + +00:40.200 --> 00:48.200 +like try to have a barbershop quartet and they cannot hear one another. Try to tell + +00:48.200 --> 00:50.320 +them to harmonize. I'm not sure if it's going to work. + +00:50.320 --> 00:54.840 +I sang, actually sang in a barbershop chorus for a while and I know the pain that you're + +00:54.840 --> 00:59.400 +talking about. But anyway, it's water under the bridge. + +00:59.400 --> 01:04.640 +Yes, what a serendipitous discussion. I wasn't expecting this. Okay, you have the pad open + +01:04.640 --> 01:07.600 +in front of you. Do you want me to read the question or do you want to take them on your + +01:07.600 --> 01:08.600 +own? + +01:08.600 --> 01:09.600 +I'd be glad to do it. + +01:09.600 --> 01:10.600 +Right. + +01:10.600 --> 01:14.760 +All right, I'm just going to go start from the top here. I have not only one config, + +01:14.760 --> 01:20.200 +but multiple configs in different locations..emacs.init.el and.emacs.init.el and different + +01:20.200 --> 01:23.520 +Python installs in different places. This is something I should take care of earlier + +01:23.520 --> 01:27.880 +rather than later. I need to pay someone to consult on my config. Is this an existing + +01:27.880 --> 01:32.440 +business? Is there a place to barter a screen share for something else, a value in exchange? + +01:32.440 --> 01:36.720 +In any case, thank you for giving permission to have fun without the need for too much + +01:36.720 --> 01:37.720 +structure. + +01:37.720 --> 01:45.960 +That's, and that's, yeah, I feel humbled being asked this. I don't know how much insightful + +01:45.960 --> 01:51.240 +answers I can give here other than the fact that I did notice one of the talks that I + +01:51.240 --> 01:56.360 +really wanted to catch and resonate with was the Emacs buddy initiative. That was actually + +01:56.360 --> 02:00.680 +one of the points that I wanted to include in my talk, but it turns out that 10 minutes + +02:00.680 --> 02:07.260 +goes by incredibly fast when you, when the ideas are flowing. And I think that that's, + +02:07.260 --> 02:13.600 +that's probably one of the best advice that it, to sources is to find some kind of buddy + +02:13.600 --> 02:17.800 +who probably would be a great, especially someone who is, who is maybe at a similar + +02:17.800 --> 02:24.320 +or, or even a different experience or comfort level may be able to, you know, be a good + +02:24.320 --> 02:29.400 +exchange of value there. But yeah, I mean, that's, and again, it's something I'll think + +02:29.400 --> 02:33.760 +about more. I might not come up with the most interesting answers live. + +02:33.760 --> 02:38.120 +Oh, it's fine. Don't worry. You know, you don't have to worry about making the most + +02:38.120 --> 02:42.000 +exhaustive answer. You know, the whole point of, sorry, let me move myself to the left. + +02:42.000 --> 02:47.760 +Okay. Nevermind. I'm trying my best to composite the shot live. Yeah. You don't have to worry + +02:47.760 --> 02:52.680 +about making very exhaustive answer right now. Also, we have about 11 minutes. We might + +02:52.680 --> 02:56.040 +open up the chat. So you have a lot of questions. So I think a lot of people are very interested. + +02:56.040 --> 03:01.560 +I think, you know, when you have the arguments that you're trying to valorize the box standard + +03:01.560 --> 03:05.720 +user of Emacs, I think everyone is feeling very invested into the talk and might want + +03:05.720 --> 03:10.120 +to ask questions. So I'm giving you a heads up people. If you now is the last chance you + +03:10.120 --> 03:14.920 +have, we are the last talk of the day, barring the closing remarks. If you have questions + +03:14.920 --> 03:18.800 +to ask, now is the time to join DBB. We'll be opening it in two minutes. And in the meantime, + +03:18.800 --> 03:22.120 +John, feel free to go back to the question and answer as many as you can. + +03:22.120 --> 03:26.480 +Thank you. And I would love to talk about this with people in the community forever. + +03:26.480 --> 03:31.760 +So this is not the last chance to talk about it. All right. How would you suggest Emacs + +03:31.760 --> 03:35.400 +developers, including package developers, interface with non-developer users and get + +03:35.400 --> 03:43.680 +their insights to help in shaping future Emacs functionality? + +03:43.680 --> 03:50.680 +You know, I think I've seen a lot of discussion on the mailing lists where this kind of exchange + +03:50.680 --> 03:55.880 +is wanted. You know, I think this is one of those things that may, it may always be difficult + +03:55.880 --> 04:00.960 +because I've, you know, I have some participation on both sides of this, if there are sides + +04:00.960 --> 04:06.860 +to it. And I think that most people agree that there's maybe could be a more tighter + +04:06.860 --> 04:13.800 +communication. So I don't think there's anybody out there who thinks that there's work to + +04:13.800 --> 04:18.040 +be done here. There's definitely effort that should be dedicated here. It seems to me like + +04:18.040 --> 04:22.320 +it's happening. I mean, this, you know, the Emacs survey was developed pretty closely + +04:22.320 --> 04:28.800 +from what I could see with the core maintainers. So I think that it's out there. I mean, perhaps + +04:28.800 --> 04:33.280 +the mailing list is a good place to start, the several ones of them. I think that you'll + +04:33.280 --> 04:38.480 +certainly get an answer and hopefully it will start a dialogue that can continue. + +04:38.480 --> 04:44.600 +All right. Next one. My impression that many common Emacs users are migrating to other + +04:44.600 --> 04:49.080 +editors in past years. The reasons cited are configurations growing out of control, general + +04:49.080 --> 04:53.240 +rough around the edges feel of Emacs, they've been putting up with for a while and maybe + +04:53.240 --> 04:59.960 +this isn't new. As a result, Emacs is becoming a smaller set of people. More invested, do + +04:59.960 --> 05:04.520 +you share this observation? So what do I think of the trend? And I'm sorry that I was talking + +05:04.520 --> 05:09.360 +over your editing there. I hope I didn't pressure you into stopping. I mean, my, my impression + +05:09.360 --> 05:13.680 +has been that that that's a thing of the past that was happening. My impression, I've been + +05:13.680 --> 05:19.480 +using Emacs for something like 25 to 14 to 15 years, depending on exactly when you start + +05:19.480 --> 05:24.160 +counting the time. It's been a long time for me and I haven't been very aware of things + +05:24.160 --> 05:28.440 +that whole time and become more and more aware and conscientious of the scene over the years + +05:28.440 --> 05:37.160 +recently. But those impressions are that it was getting less, less usage in past years, + +05:37.160 --> 05:43.260 +but it's, it's got, I think it's been increasing pretty quickly in recent years and increasing + +05:43.260 --> 05:52.120 +at a pretty high rate. So I don't, I don't necessarily disagree that there are different + +05:52.120 --> 05:56.640 +sets of people within the Emacs community who may, whose usages may be changing and + +05:56.640 --> 06:01.160 +maybe certain sets of within the community are shrinking and their investment levels + +06:01.160 --> 06:06.360 +are changing. But my, my, up until now, if you had asked me, it would have, I would have + +06:06.360 --> 06:14.080 +said that the Emacs user base was growing, changing and the usage of what they were, + +06:14.080 --> 06:18.080 +what they were counting on was, would, would have becoming, you know, more towards the + +06:18.080 --> 06:25.820 +popular, maybe away from what the core user base would have, would have focused on previous + +06:25.820 --> 06:32.020 +to that. But yeah, overall it seems to me like it's growing. And I think that where + +06:32.020 --> 06:38.120 +we are here and everyone who's gathered here today is, is evidence of that. + +06:38.120 --> 06:47.480 +And what do I think of that trend? I mean, I, I'm happy about it. I think, I mean, I, + +06:47.480 --> 06:53.240 +one of the things that I didn't have a chance to focus too much on in the talk was, was + +06:53.240 --> 07:00.120 +the power of that vanilla out of the box experience. I am a Viper, happy Viper user. I don't think + +07:00.120 --> 07:04.200 +there really are many others that I, at least ones that I know about and they may, they + +07:04.200 --> 07:08.520 +just may be the people that I was describing in my talk. They may be out there using Viper + +07:08.520 --> 07:13.760 +happily and they're, and they're dark matter. They're there and they make up maybe a huge + +07:13.760 --> 07:21.120 +amount of the universe, but you just maybe can't, it can't feel their effect. But, you + +07:21.120 --> 07:27.280 +know, I think that the, I'm glad that that usage is growing, if it is. But I also would + +07:27.280 --> 07:32.960 +hope that people continue to value that out of the box vanilla experience. Because I think + +07:32.960 --> 07:38.640 +that it gets, it's easy to overlook and I think it probably does get overlooked. And + +07:38.640 --> 07:41.840 +that may just be a necessary consequence of the fact that when things become popular, + +07:41.840 --> 07:47.720 +when things grow in popularity, they are, what gets focus and what gets coverage is + +07:47.720 --> 07:55.040 +those things that are more receptive and lend themselves better to, to popularity. And that's + +07:55.040 --> 08:00.760 +not necessarily the same as the things that are the most, it's not everything is really + +08:00.760 --> 08:05.480 +all I can say. There's more, there's always more to it than that. So I hope that as popularity + +08:05.480 --> 08:14.000 +grows, people won't forget those things and those things will stay, stay useful for everyone. + +08:14.000 --> 08:19.200 +Should I do the last one or should I stop? Oh, yeah, I might have some comments on this + +08:19.200 --> 08:22.720 +if no one shows up afterwards, but for now, yes, feel free to answer the last question. + +08:22.720 --> 08:28.080 +Okay. Do you consider that using one of the starter packages, do me max, space max, etc. + +08:28.080 --> 08:31.820 +affect that learning process that you mentioned? Or is it a good thing from your perspective? + +08:31.820 --> 08:35.000 +You know, that was another thing I wanted to mention in a talk that I didn't, that my + +08:35.000 --> 08:39.240 +10 minutes didn't allow, or maybe just the way that I talk in those 10 minutes didn't + +08:39.240 --> 08:44.920 +allow. I wanted to just acknowledge the fact that I don't have experience with them. I've + +08:44.920 --> 08:52.560 +been using GNU Emacs since, since I started using Emacs. I think they solve a problem + +08:52.560 --> 08:59.480 +for people. I think they have a place. But, you know, I think, I think some of the thoughts + +08:59.480 --> 09:04.560 +that I had been forming that I wasn't able to put in there about these was that you need + +09:04.560 --> 09:10.220 +to start wherever gets comfortable for you. And I think that no matter what you use, whatever + +09:10.220 --> 09:17.900 +you start with, I think you, you always get to the point where you feel like you've entrenched + +09:17.900 --> 09:25.920 +yourself in mindset or a set of habits that you use and you think it's, you want to change, + +09:25.920 --> 09:29.960 +you know that you should be able to change and grow, but you've just become accustomed + +09:29.960 --> 09:41.520 +to what you do. And I think that if, if using a starter package, if using a starter package + +09:41.520 --> 09:46.680 +gets you over that initial, you know, gets you into the things, if you feel like it's, + +09:46.680 --> 09:49.720 +it's going to limit your growth later on, I don't think it's necessarily because of + +09:49.720 --> 09:53.000 +what you chose. It's just, that's, that's just the feeling that everybody's going to + +09:53.000 --> 10:01.080 +feel eventually. Yeah. + +10:01.080 --> 10:05.080 +So sorry, John, I was talking with production. Are we, are you finished with the questions? + +10:05.080 --> 10:07.080 +It seems that you are, yeah. + +10:07.080 --> 10:11.760 +Yes, I believe I am. And I will, again, I will add better thoughts to these later on + +10:11.760 --> 10:12.760 +the pad. + +10:12.760 --> 10:18.040 +Yeah, but that's fine. I think you did a bang up. I'm French. I don't know if a bang up + +10:18.040 --> 10:20.200 +job is a good job. Can you confirm it for me? + +10:20.200 --> 10:22.040 +Yes, thank you. I appreciate that. + +10:22.040 --> 10:27.000 +Cool. Thank you. So it seems like we have Bob on for a question. So Bob was the speaker + +10:27.000 --> 10:31.600 +for the HyperOrc talk earlier today. So Bob, can you hear us? + +10:31.600 --> 10:34.120 +Yes, I can hear you great. + +10:34.120 --> 10:36.520 +And we can hear you as well. + +10:36.520 --> 10:39.040 +Can you see me? Let's see if... + +10:39.040 --> 10:41.040 +We cannot see you yet though. + +10:41.040 --> 10:47.880 +Okay. Yeah. I just started, start sharing. So I wanted to ask you, I mean, one of the + +10:47.880 --> 10:58.960 +things we really suffer from hyperbole, we have this issue that we try to make things + +10:58.960 --> 11:06.560 +as easy to use as possible, right? Just point and click, press this button and the magic + +11:06.560 --> 11:12.700 +happens. But because we are dealing with a domain that has a lot of complexity to it, + +11:12.700 --> 11:20.480 +we find, like you're saying, people have always done something a certain way. They bring whatever + +11:20.480 --> 11:28.440 +processes with them that they've used before. So it feels like there's a much heavier barrier + +11:28.440 --> 11:34.440 +to get regular users on board than there really should be from what we think we're producing + +11:34.440 --> 11:41.920 +in the software. So I wanted to get your perspective about what you think that might be and, you + +11:41.920 --> 11:47.080 +know, ways we could pursue tackling that. + +11:47.080 --> 11:51.640 +And by regular users, you mean ones who have already had a lot of time and... + +11:51.640 --> 11:57.760 +Emacs users who are not developers, not just not Emacs developers, but maybe they're non-technical + +11:57.760 --> 12:06.280 +at all. But they have to manage everyday information. They do emails, they do memos and whatever + +12:06.280 --> 12:10.720 +else they're processing. + +12:10.720 --> 12:20.840 +I'm not sure if... I don't know. This might not answer things to your satisfaction, but + +12:20.840 --> 12:28.760 +I'll, you know, be glad to keep the conversation going. But I wonder if... One of the things + +12:28.760 --> 12:33.680 +I was thinking of is that it's very easy to generate, I think, a lot of psychic baggage + +12:33.680 --> 12:40.040 +with Emacs as you use it over time because you get... I think I mentioned this in the + +12:40.040 --> 12:46.600 +talk. It's very... It's hard to use it and not be aware of all the different cool functionalities + +12:46.600 --> 12:49.960 +that it's built on and the things that you can take advantage of. And part of that is + +12:49.960 --> 12:57.400 +that as you develop your own workflows, you are not only developing them, but you're, + +12:57.400 --> 13:02.000 +for pragmatic reasons, rejecting other things. But you don't, you know, you're still aware + +13:02.000 --> 13:05.280 +that you've done that and you're aware of all the different possibilities that you've + +13:05.280 --> 13:08.880 +kind of left behind, at least temporarily. + +13:08.880 --> 13:15.320 +I wonder... I think at some point that baggage can impede you. Definitely can. It can make + +13:15.320 --> 13:24.680 +you less open and feel less safe to try new things out. Especially if those things are... + +13:24.680 --> 13:30.320 +I think sometimes it scales with the more useful and exciting and maybe even... Oh, + +13:30.320 --> 13:34.920 +that's pretty... If it's going to be exciting and useful and significantly change things, + +13:34.920 --> 13:40.520 +you could maybe feel extra resistant to try them out because you're not sure that you + +13:40.520 --> 13:46.280 +want to deal with all that excitement. And sometimes, again, the more useful it is, maybe + +13:46.280 --> 13:49.200 +the more resistant you are. + +13:49.200 --> 13:55.000 +In the programming environment, you might consider the difference between Smalltalk + +13:55.000 --> 14:03.400 +and C. And Smalltalk has all this, like Lisp, all this great interactive capability, but + +14:03.400 --> 14:07.840 +you have the baggage of carrying this big image around that people didn't want many + +14:07.840 --> 14:14.280 +years ago when it was popular. And C had nothing and still largely has nothing, right? Except + +14:14.280 --> 14:22.040 +you've got Unix there. And so people stare at a blank screen. They have no dynamic support. + +14:22.040 --> 14:29.960 +Maybe they have tags, but very little tooling. And yet, C dominates over Smalltalk. So I + +14:29.960 --> 14:36.280 +think we're talking about a similar kind of problem that maybe the leap is so far for + +14:36.280 --> 14:42.400 +people that you need to give them a series in between to transition them from their very + +14:42.400 --> 14:48.480 +weak initial environment to something much, much stronger. + +14:48.480 --> 14:55.240 +Yeah, that's a good point. And that's actually something that I think of for myself and thus + +14:55.240 --> 15:01.480 +something I was thinking about in regards to my talk. When you know that you want to... + +15:01.480 --> 15:05.480 +Let's consider the kind of user that you're talking about and hyperbole. And by the way, + +15:05.480 --> 15:10.160 +I enjoyed your hyperbole talk, your hyper-org talk, but up until now I hadn't been familiar + +15:10.160 --> 15:14.720 +with it. So I may say things that don't make any sense. But let's say this user that you're + +15:14.720 --> 15:20.520 +talking about who you want to become more comfortable with hyperbole. I'll start from + +15:20.520 --> 15:26.280 +the perspective of let's say they know they want to become more comfortable with it, but + +15:26.280 --> 15:34.520 +they also are having trouble getting comfortable with that process. And so that's certainly + +15:34.520 --> 15:40.720 +something I thought about building for myself and suggesting in this talk of when you know + +15:40.720 --> 15:43.560 +that you want to accomplish something, when you know that you want to change some of your + +15:43.560 --> 15:54.400 +habits to call them out and really put your habits on display for yourself. And rather + +15:54.400 --> 15:58.680 +than trying to remember them and ingrain them into your finger muscle memory and all that + +15:58.680 --> 16:04.560 +is to make some space to have your habits be public, not public necessarily, but just + +16:04.560 --> 16:10.280 +explicit in your environment and allow yourself to be uncomfortable with new habits for a + +16:10.280 --> 16:18.760 +while and that break out of the habitual space, give yourself some kind of mnemonic structure + +16:18.760 --> 16:25.900 +that lets you do these things habitually that will eventually kind of become that mold into + +16:25.900 --> 16:30.760 +which the habits will grow on top of rather than just trying to go from one set of habits + +16:30.760 --> 16:37.080 +to a new set of habits. And I think Emacs is one of those things that is great for that + +16:37.080 --> 16:43.120 +because it's the text, and especially what you demonstrated in hyperbole in that it seems + +16:43.120 --> 16:50.040 +like it's very easy to just write some text up that can generate for you a cheat sheet + +16:50.040 --> 16:54.480 +and say I've been using this on the left side, instead I want to use this on the right side + +16:54.480 --> 16:59.120 +and maybe two buffers or something. And you don't have to worry about what it's called, + +16:59.120 --> 17:04.080 +you don't have to worry about how to execute it or the key sequence or the function. When + +17:04.080 --> 17:08.240 +you find one day you find yourself using something on the left side, I'd rather use this on the + +17:08.240 --> 17:19.000 +right. And maybe over time you can move away from that and try to make it be more automatic. + +17:19.000 --> 17:22.440 +But at least I think maybe the key there is just acknowledging that the things that are + +17:22.440 --> 17:34.520 +habitual or that you want to become habitual can start to give yourself training wheels. + +17:34.520 --> 17:40.880 +Right Jens, I'm very sorry I'm going to have to pause the conversation now. But don't leave + +17:40.880 --> 17:45.040 +quite yet, this was a very interesting discussion and I would love to participate a little more + +17:45.040 --> 17:48.440 +but we are actually preparing for the closing remarks in the background. But what I'm going + +17:48.440 --> 17:52.880 +to suggest, because I don't want you both to lose steam and the closing remarks, you + +17:52.880 --> 17:56.440 +can watch them in your own time, I'm just going to thank everyone really. So by all + +17:56.440 --> 18:00.400 +means if you want to continue the discussion, you can stay in the room, we are still going + +18:00.400 --> 18:04.360 +to be recording and if you want to continue the discussion for as long as you want, it's + +18:04.360 --> 18:08.800 +going to be all good for us. It just won't be streamed now but it will eventually be + +18:08.800 --> 18:29.760 +available. So if you want to join the discussion now, + +18:29.760 --> 18:34.640 +you only have to go to the talk page and you will be able to join there. I'm really sorry + +18:34.640 --> 18:38.720 +Bob, I'm going to have to end it off in 30 seconds because we need to move to the next + +18:38.720 --> 18:43.680 +room. So I'll leave you to say bye Bob if you want to. + +18:43.680 --> 18:48.680 +Okay, I will stay here and talk to whoever wants to talk. + +18:48.680 --> 18:54.120 +Great and Bob do you want to say bye? Bye, thanks John, I appreciate it. + +18:54.120 --> 19:01.120 +Okay see you in a bit, we'll be closing remarks in about one minute. Okay, really sorry for + +19:01.120 --> 19:04.720 +recording short, we are now off stream and you can keep talking and we are recording + +19:04.720 --> 19:07.960 +everything. Okay, see you in a bit, I have to rush. + +19:07.960 --> 19:10.720 +So yeah, again, I don't want to keep you from the closing remarks. + +19:10.720 --> 19:15.680 +No, I'm happy to talk to you. I think Leo just kept saying, well you can stay but I + +19:15.680 --> 19:21.360 +have to cut it off. So I guess he was just saying the recording. I don't care. + +19:21.360 --> 19:25.080 +Let me jump over to, there's another question that someone posted, I just want to make sure + +19:25.080 --> 19:28.240 +I don't ignore that and then I'll. + +19:28.240 --> 19:32.440 +The tip of the day package or some elaboration on that idea and Emacs help discovery for + +19:32.440 --> 19:36.160 +lay users, does that already exist? + +19:36.160 --> 19:40.960 +You know, I'm not, I can pretty, I don't know if the person who wrote this is, if it's + +19:40.960 --> 19:47.960 +plasma strike, but hopefully they'll see the recording later. I'm confident in saying that + +19:47.960 --> 19:52.840 +this does exist. I don't know what it is because I've never used it, I've never seen it, but + +19:52.840 --> 19:56.960 +I know that something like this must exist, so I'm confident in saying that it does. + +19:56.960 --> 20:01.280 +Yeah, I haven't seen it either. + +20:01.280 --> 20:07.000 +If not, I mean, it probably would be something that would be relatively easy to make. Not + +20:07.000 --> 20:12.480 +necessarily the person who wants this, but yeah, it's something that I could. + +20:12.480 --> 20:19.640 +That's kind of interesting. If you put an org or a high rollo file together of all these + +20:19.640 --> 20:27.440 +tips, it would be very easy to, yeah, have something on a timer that would just pop one + +20:27.440 --> 20:34.920 +up every so often or based on some action, but that's kind of an interesting learning + +20:34.920 --> 20:42.300 +technique. I certainly use that in some other packages where a lot of times you just X out + +20:42.300 --> 20:49.400 +of it right away, but for things that actually provide useful tips, you tend to read them + +20:49.400 --> 20:56.320 +and linger for a bit, right, before you move on, and that's a great way because, I mean, + +20:56.320 --> 21:04.000 +after decades of using Emacs, there's definitely packages in Emacs, libraries that I've never + +21:04.000 --> 21:11.040 +seen before, I didn't know were there, and that I sometimes find useful, so there's always + +21:11.040 --> 21:20.880 +a lot to discover, and that feature discovery is a difficult thing, because that's why we + +21:20.880 --> 21:26.220 +spend a lot of time documenting things, because like with the reference manual, hyperbole + +21:26.220 --> 21:34.080 +about 170 pages, I don't expect people to read the manual, but to use it in info and + +21:34.080 --> 21:39.380 +say I'm interested in the action button, okay, I'll just read that action button section, + +21:39.380 --> 21:47.020 +and that's really what it's intended for, and why we provide quick access. In fact, + +21:47.020 --> 21:55.800 +if you look at the menu structure, the pull-down menus for hyperbole, there's just one pull-down + +21:55.800 --> 22:05.660 +menu, but the submenus under there, each one has an about or a doc item, and when you click + +22:05.660 --> 22:10.600 +on that, it takes you exactly to the place in the manual, discussing the concept that's + +22:10.600 --> 22:18.120 +covered by that menu, so it makes it very easy for people, but I was wondering, you + +22:18.120 --> 22:26.200 +know, if you, I think you have a lot of good process-oriented thoughts, and I'll say, you + +22:26.200 --> 22:33.740 +know, if you know who Doug Engelbart is or was, I worked with him a bit, and he was always + +22:33.740 --> 22:40.560 +focused on you have to evolve your process while you evolve your technology, and clearly, + +22:40.560 --> 22:48.280 +a lot of the people in the Emacs developer community are sort of focused on the technology, + +22:48.280 --> 22:53.720 +which is common, right, even in corporations, and it's always sort of a struggle to get + +22:53.720 --> 23:00.160 +people to try to evolve both at the same time, so I'd be interested in sort of conversing + +23:00.160 --> 23:06.920 +along those lines about, you know, we've built, so we've built two levels, I think, in hyperbole, + +23:06.920 --> 23:12.280 +we've built the toolkit of primitives that you can build from, and customize to your + +23:12.280 --> 23:19.200 +own needs, but we haven't done a lot about, and people are always asking, well, what's + +23:19.200 --> 23:24.920 +the workflow that I should use to integrate it with, and we're like, you know, well, what's + +23:24.920 --> 23:30.280 +your knowledge workflow, you know, what sort of tasks do you have to do, and then we can + +23:30.280 --> 23:35.800 +tell you something, but it is one of those general kinds of things, you know, like I + +23:35.800 --> 23:43.240 +say, I use the K-outliner to capture requirements, because I want, when I share those requirements + +23:43.240 --> 23:49.360 +with people, I want them to say, you know, well, item 9a, let's edit this this way, because + +23:49.360 --> 23:53.760 +a lot of times, right, they can't interact with the document that directly, or they want + +23:53.760 --> 24:03.120 +me to maintain it, so I find that everything is numbered that way, in any sort of structured + +24:03.120 --> 24:14.560 +ideation process, to be extremely valuable, and so, but I think, you know, maybe, obviously, + +24:14.560 --> 24:19.180 +as you said, you haven't used that, but, and I've worked on a lot of other Emacs stuff, + +24:19.180 --> 24:27.480 +but I think it'd be valuable, you know, having some discussions with you, to talk about that, + +24:27.480 --> 24:34.720 +you know, perspective from somebody trying to grok something like this, or, you know, + +24:34.720 --> 24:45.680 +get deeper into Emacs, and I always feel like, like I'm developing some new software at work, + +24:45.680 --> 24:51.480 +and our company is kind of moving from being a more consulting company to a technology + +24:51.480 --> 24:58.720 +company, and I say, well, okay, we're doing this big, big set of applications, where's + +24:58.720 --> 25:03.860 +the market input? The business people kind of wave their hands and say, you know, we + +25:03.860 --> 25:11.900 +want something shiny, but we never get structured input from the actual clients that will be + +25:11.900 --> 25:17.120 +the users, until we build something and put it in their hands, and I'm like, that's too + +25:17.120 --> 25:25.760 +late, you know, and we need, so I think it's sort of true here, too, that it's very hard + +25:25.760 --> 25:32.400 +to just, you know, like if I said, let's just have 10 people who have never tried hyperbole, + +25:32.400 --> 25:37.360 +look at it, go through a process, and just write one page on their experience, you know, + +25:37.360 --> 25:42.320 +but I think that'd be very hard to get that set of people together in general, you know, + +25:42.320 --> 25:44.720 +without effort, significant effort. + +25:44.720 --> 25:50.520 +That's a good point, because the people that would be able to use it, i.e. people who are + +25:50.520 --> 25:56.920 +already Emacs users for the most part, they're probably either already familiar with it, + +25:56.920 --> 26:03.360 +or busy, too, or maybe they have their own ways that they don't, they might be competent + +26:03.360 --> 26:08.800 +enough to do it, but not comfortable enough to do it, or not interested enough to do it. + +26:08.800 --> 26:12.720 +Maybe you have the intersection of all the different properties, which might be pretty + +26:12.720 --> 26:13.720 +small. + +26:13.720 --> 26:22.360 +Yeah, but just having those ideas, I think it helps us, you know, to shape, and I feel + +26:22.360 --> 26:33.040 +like we can take what we have and meld it, like what, if you saw Carl Volt's talk on + +26:33.040 --> 26:39.200 +his bi-directional links, I think that's a super valuable thing that we, you know, we + +26:39.200 --> 26:44.960 +haven't really considered much, but people talk about a lot as a result of work, having + +26:44.960 --> 26:48.040 +given them that capability for a while. + +26:48.040 --> 26:52.080 +That was Eduardo Oakes, was that Eduardo Oakes, or? + +26:52.080 --> 26:54.640 +No, no, that was not Eduardo. + +26:54.640 --> 27:00.120 +He's an interesting fellow, you know, it's like clearly very bright, but he lives in + +27:00.120 --> 27:08.120 +this academic-like bubble that, like, he wants to understand everything from the atomic level + +27:08.120 --> 27:15.840 +up in order to use it, so, you know, imagine, like, personally, you're what? + +27:15.840 --> 27:21.000 +I identify with that mindset, so I, so yeah, if you wanted to use toilet paper, would you + +27:21.000 --> 27:24.400 +try to understand the atomic composition? + +27:24.400 --> 27:31.320 +I'm just saying, he takes an extreme view, which may be, for him, that's what he finds + +27:31.320 --> 27:37.760 +work, so, but some interesting things come out of that, which is his EEV kind of stuff, + +27:37.760 --> 27:40.920 +which is very, very explicit, right? + +27:40.920 --> 27:48.960 +Everything is laid out, so it's bulky in a sense, but it, but he's got some good ideas + +27:48.960 --> 27:55.240 +on, like, tutorials and stuff, and he seems like he's more a scientist than a developer, + +27:55.240 --> 28:01.920 +so, you know, when we were trying to, I said, you could, the things you want to do, Hyperbole + +28:01.920 --> 28:07.200 +has a toolkit for, so just use Hyperbole, and then we'll help you shape whatever you + +28:07.200 --> 28:14.480 +want to do, and that's where we were never able to do that, because he'd say, well, okay, + +28:14.480 --> 28:21.920 +you have a button type that does what I want it to do, but now explain to me all the activation + +28:21.920 --> 28:27.280 +process for that, and I'm like, well, then you'd have to understand the, you know, the + +28:27.280 --> 28:32.240 +key parts of the Hyperbole code base, and you don't really need to, to do what we're + +28:32.240 --> 28:37.400 +talking about, so we can't, you know, that would take a long time, so let's not do that, + +28:37.400 --> 28:43.960 +and that never worked for him, so he decided to just build his own stuff, but then you + +28:43.960 --> 28:49.520 +look into that stuff, and it's sort of what you described in your talk, is, you know, + +28:49.520 --> 28:56.440 +it's not structured, it's, it's messy, it's, it's just sort of, you know, cobbled together, + +28:56.440 --> 29:06.320 +so he's got the same, he's got the same issue that it's, he doesn't want to do it just for + +29:06.320 --> 29:12.360 +his personal need, he wants, he wants this to be somebody that, something that people + +29:12.360 --> 29:18.000 +use, and so he gives talks and things like that, and he, so he, he's got this way of + +29:18.000 --> 29:23.720 +thinking that's very different than other people, that keeps his stuff away from people, + +29:23.720 --> 29:30.640 +but that's not his intention, it's just, you know, sort of the operational mechanics of + +29:30.640 --> 29:35.920 +the way it is, and I'd love, you know, I'd love to help him with that, or do something, + +29:35.920 --> 29:41.840 +he's a very nice fellow, but I haven't gotten him past the, you know, there are other abstraction + +29:41.840 --> 29:49.200 +levels besides the atomic level, let's, let's work on some of those levels, for him, you + +29:49.200 --> 29:53.040 +know, there's some sort of barrier, I think, there, so you're saying you're a little like + +29:53.040 --> 29:59.760 +that too? You have to get your hands on everything? Yeah, and I think that's, and full disclosure, + +29:59.760 --> 30:04.680 +I don't, I didn't have a lot of time to write, or to get in, I didn't have a lot of, like, + +30:04.680 --> 30:09.120 +in those 10 minutes to say everything I wanted to say, like, I'm not, I don't want to give + +30:09.120 --> 30:14.000 +the impression that I'm not a technical person, I am, I am a programmer, and I've been, like + +30:14.000 --> 30:18.880 +I said, I've been using Emacs for a very long time, just that over time, I probably, you + +30:18.880 --> 30:24.600 +know, just kind of have stayed in my personal sphere, and kind of worked, carved out a little + +30:24.600 --> 30:31.360 +thing that works for me, so I, my perspective might be a little surprising, to come up, + +30:31.360 --> 30:35.040 +you know, to people who might think, well, a talk like that, you're, you know, you're + +30:35.040 --> 30:40.520 +still a beginner, or you're still on the fringes, I'm like, no, I don't think I'm, I'm neither, + +30:40.520 --> 30:43.840 +neither beginner, feel like I'm a beginner, nor am I on the fringes of anything, I've + +30:43.840 --> 30:50.680 +just, my path has taken me through a certain way that is, is personal, it just happens, + +30:50.680 --> 30:57.880 +you know, but I think what you're saying earlier, is that, to identify, is, is that, that is + +30:57.880 --> 31:02.760 +one tension, the tension you were just mentioning, of, want to do something, but the Emacs is + +31:02.760 --> 31:08.120 +just one of those platforms where, where it's so, can entice you to do things, it can be + +31:08.120 --> 31:12.200 +so interesting and enticing to do certain things that you, it can lead to a lot of pain, + +31:12.200 --> 31:17.520 +and that you can, and confusion, where you can really want to learn something, and think, + +31:17.520 --> 31:22.240 +in your head, I'm always, you know, I'm, you know, I'm always thinking of, it was a dialogue + +31:22.240 --> 31:26.700 +with, you know, a dozen people when I used Emacs, a dozen other people whose, whose work + +31:26.700 --> 31:33.800 +I've read about, and developers, I've, I've read their works and stuff, of, it's hard + +31:33.800 --> 31:37.600 +to be doing something, and not be thinking about making it available for somebody else + +31:37.600 --> 31:43.640 +to use, I think it's, it's both very personal, and it's also hard to have a personal barrier, + +31:43.640 --> 31:48.240 +because I'm always, you know, I'm always thinking about, how would I expose this functionality + +31:48.240 --> 31:53.000 +for general purposes, how would I, how would I publish this, and so I can identify with + +31:53.000 --> 31:58.760 +that, and also, also, I want, you, you want to know, both, maybe there's just certain + +31:58.760 --> 32:02.880 +personalities, and mine would be one of them, where you really want to know why things are + +32:02.880 --> 32:06.600 +happening the way that they're happening, and I think Emacs is one of those places where, + +32:06.600 --> 32:11.520 +when you come in, you come in on the ground floor, and you see, wow, I can go up so high, + +32:11.520 --> 32:15.360 +but also, you, you can look down and say, well, there's a hundred floors below me, and + +32:15.360 --> 32:18.040 +you get torn, you know. + +32:18.040 --> 32:25.280 +I would ask a question like, do you, do you tend to look at the way Lisp primitives are + +32:25.280 --> 32:32.880 +implemented in C, or do you just focus on the documentation of the Lisp function, and + +32:32.880 --> 32:38.160 +then work from there, in terms of your Emacs, how far down you go? + +32:38.160 --> 32:40.200 +Good question. + +32:40.200 --> 32:41.200 +It's changed recently. + +32:41.200 --> 32:47.040 +I'd say, up until a couple years ago, I was mostly focused on the, on inside, you know, + +32:47.040 --> 32:52.400 +inside the Lisp machine, and going up, but I've started getting a little more curious + +32:52.400 --> 32:55.160 +about the C layer below that. + +32:55.160 --> 32:59.000 +One of the things I started looking at was some of the way that the key maps have been + +32:59.000 --> 33:06.920 +handled, the key, the map lookups were handled at the C level, because of the, my Viper, + +33:06.920 --> 33:14.640 +sort of affinity, my affinity for Viper, because there's some, some functionality there that + +33:14.640 --> 33:20.680 +changed or was made a little bit, the implementation was made a little bit different. + +33:20.680 --> 33:24.800 +So I guess, I guess both, but I, but I could understand that, yeah, there's, I, I never + +33:24.800 --> 33:30.640 +felt like I had to understand anything below that level, but just, it's good that. + +33:30.640 --> 33:37.640 +And do you go up, do you spend a lot of time thinking about the user level and user experience, + +33:37.640 --> 33:43.920 +user interfaces in your other work even, or, you know, just to get an idea of the sort + +33:43.920 --> 33:49.880 +of problems you'd like to sink your teeth into, you know, how you might provide some + +33:49.880 --> 33:55.280 +feedback on the hyperbole side, if you were to? + +33:55.280 --> 34:01.960 +I think I'm, I, I, in terms of technical stuff, I do like to stay more, I get more satisfaction, + +34:01.960 --> 34:10.320 +I think, thinking about the, the problem solving, especially in Emacs, just how to build, how + +34:10.320 --> 34:18.440 +to solve a problem in general, just, you know, UI level stuff or user experience stuff, I + +34:18.440 --> 34:25.640 +think it's just, it's, it's harder, it can be harder to do it right, but I guess that's + +34:25.640 --> 34:31.840 +something that I don't, I just haven't, I guess I haven't put, I guess I put more of + +34:31.840 --> 34:38.560 +my energy towards the, the middle tier of things of kind of just building general solutions. + +34:38.560 --> 34:43.400 +But if, but if it comes, I mean, I, hyperbole is definitely high, if not on the top of my + +34:43.400 --> 34:49.480 +list now, coming out of today's presentation and hearing about it today, of things to look + +34:49.480 --> 34:50.480 +at no matter what. + +34:50.480 --> 34:57.120 +So, I mean, I'm, I'm eager to learn more about it and use it from, from wherever, wherever + +34:57.120 --> 35:00.440 +I end up kind of landing on, on that, that spectrum. + +35:00.440 --> 35:07.600 +Well, I'm wondering if you might have some time to, so we have, there's two other people + +35:07.600 --> 35:11.040 +who gave the two other talks who work with me. + +35:11.040 --> 35:18.360 +We do a Sunday meeting, Sunday morning, East coast time, you know, one guy's on the development + +35:18.360 --> 35:22.840 +and the other is Ramin, who is a writer. + +35:22.840 --> 35:28.200 +And I mean, he's an ML engineer too, but he's new to hyperbole. + +35:28.200 --> 35:33.120 +So he's kind of, you know, converting some of what he did in a word to hyperbole. + +35:33.120 --> 35:39.120 +So he's kind of a good feedback loop for us there too. + +35:39.120 --> 35:45.400 +Matt and I have been, you know, deep in it for many years, so we can't, we can't see + +35:45.400 --> 35:47.040 +it in an unbiased way. + +35:47.040 --> 35:52.960 +And I'm just thinking, you know, maybe if you have a bit of time, you may want to, you + +35:52.960 --> 35:58.680 +know, think about giving us some structured feedback or, you know, coming to one of those + +35:58.680 --> 36:01.320 +meetings chatting with us. + +36:01.320 --> 36:02.320 +Yeah. + +36:02.320 --> 36:08.040 +You know, so, and I'm happy to answer your questions too, because I think, I just feel + +36:08.040 --> 36:14.840 +like there's, I'll tell you, this is, so my background with Emacs, besides as a user, + +36:14.840 --> 36:22.240 +I built something called InfoDoc, which was an extensive IDE to try to bring out Emacs + +36:22.240 --> 36:24.240 +functionality. + +36:24.240 --> 36:30.000 +Many years ago, it was an extensive set of menus, popup menus, pull down menus, and fixing + +36:30.000 --> 36:36.280 +a lot of stuff like, like in our mail, the keys and the interface wasn't the same between + +36:36.280 --> 36:39.800 +the summary buffer and the main buffer. + +36:39.800 --> 36:42.920 +And I, I normalized all that fixed stuff in Dura. + +36:42.920 --> 36:50.400 +All of that was like all rolled into InfoDoc so that a lot of these warts that people talk + +36:50.400 --> 36:57.320 +about that still are there to this day, some of them I see got put together and that was + +36:57.320 --> 37:06.680 +just built to top Zmax, the fork, XZmax fork of, you know, when Jamie Zawinski was doing + +37:06.680 --> 37:07.680 +it. + +37:07.680 --> 37:12.480 +And so I, you know, I still use some of that with Gnuely Max, but I never took the time + +37:12.480 --> 37:14.280 +to repackage it and stuff like that. + +37:14.280 --> 37:15.800 +So that's sort of sitting out there. + +37:15.800 --> 37:21.880 +And then I built the OO browser, which was a small talk like a code browser for eight + +37:21.880 --> 37:24.680 +different object oriented languages. + +37:24.680 --> 37:30.320 +And that's sitting out there waiting for just a, I had it ready, largely ready except for + +37:30.320 --> 37:34.820 +some documentation and I have no time to work on it. + +37:34.820 --> 37:40.720 +So it's never been, the modern version hasn't been republished for people to use, but you + +37:40.720 --> 37:45.920 +know, it sort of tells you some of the areas that, that I've spent a lot of time in and + +37:45.920 --> 37:49.300 +I've built some pretty big things. + +37:49.300 --> 37:53.760 +So I've gotten to see, you know, what's absorbable and what's not. + +37:53.760 --> 37:59.640 +And, you know, there is a lot of people sort of staying down at that low level that I think + +37:59.640 --> 38:05.840 +you do tend to run into with Emacs users, but there was like people love people who + +38:05.840 --> 38:07.960 +use the OO browser. + +38:07.960 --> 38:13.400 +That was a very good user experience because it was just very smooth and it had multiple + +38:13.400 --> 38:16.320 +windows and, you know, did what people wanted. + +38:16.320 --> 38:21.360 +And it was very fast because I focused on the algorithms and there was nothing else + +38:21.360 --> 38:23.400 +that could do what it could do. + +38:23.400 --> 38:29.480 +Now, now that we have all these language server protocols, which I still think are not quite + +38:29.480 --> 38:34.640 +where they should be on the backend, but you know, it's nice that now they're integrating + +38:34.640 --> 38:35.640 +Eclot. + +38:35.640 --> 38:41.160 +So I'm not a big user of those yet, but I hope to get more leverage out of them if they, + +38:41.160 --> 38:47.120 +in fact, you know, can give them, satisfy the queries that I really need in my work. + +38:47.120 --> 38:51.440 +So yeah, I think you'll find, you'll definitely find some utility. + +38:51.440 --> 38:57.720 +I think, you know, once you grok a bit, and I don't think it'll take you that long to + +38:57.720 --> 39:04.360 +get enough of a sense of hyperbole to start building a couple types, button types yourself + +39:04.360 --> 39:08.360 +and tailoring it to whatever your needs are. + +39:08.360 --> 39:13.800 +But as you said, I'm kind of interested in your thoughts about what will make that easier + +39:13.800 --> 39:22.120 +for people maybe with, maybe with not as much technical knowledge as you have. + +39:22.120 --> 39:27.280 +And just, you know, that you're willing to put yourself in somebody else's shoes, I think + +39:27.280 --> 39:33.080 +is a very valuable kind of way to be and something I'd like to. + +39:33.080 --> 39:40.160 +Well, I certainly, I'm willing to, willing to try, can't promise what my mindset will + +39:40.160 --> 39:43.360 +end up producing, but I, you know, it's, let's put it this way. + +39:43.360 --> 39:47.240 +If I could, if I could benefit from what you've created, benefit from learning about it, and + +39:47.240 --> 39:53.200 +at the same time, potentially give some benefit back, you know, that seems like it's a win-win-win. + +39:53.200 --> 39:55.200 +So I'm happy. + +39:55.200 --> 40:02.440 +Well, I'd be very surprised if you can't, but we, we accept that kind of feedback too, + +40:02.440 --> 40:06.700 +is that, you know, there's too much of a barrier to entry for this reason here. + +40:06.700 --> 40:10.760 +I love to hear those things too, because, you know, there have been things that weren't + +40:10.760 --> 40:19.480 +there that we've built after, like there's a guy, Sean, Sean something, he's like a business + +40:19.480 --> 40:24.760 +user who runs his business on this custom database that he's built. + +40:24.760 --> 40:28.840 +And he uses hyperbole as a front end to that backend database. + +40:28.840 --> 40:33.200 +He calls it, I forget it's hyper or something. + +40:33.200 --> 40:38.200 +And he, he has a lot of deeper thoughts, you know, very specific, like he'll write it with + +40:38.200 --> 40:40.880 +just one issue that he's trying to do. + +40:40.880 --> 40:44.440 +And sometimes, you know, we'll implement things for him. + +40:44.440 --> 40:46.640 +And that seems to work pretty well. + +40:46.640 --> 40:51.360 +Sometimes he wants things that are further afield, you know, and we don't go there, + +40:51.360 --> 40:58.000 +but he's, he's a useful, one of the users on the very low traffic hyperbole mail list. + +40:58.000 --> 41:03.560 +So he's probably responsible for 80% of the traffic, right? + +41:03.560 --> 41:05.960 +He's the Pareto subscriber. + +41:05.960 --> 41:06.960 +Yeah. + +41:06.960 --> 41:07.960 +Yeah. + +41:07.960 --> 41:16.040 +So, but I look forward to it and I think you'd like Ramin and Matt, Matt is an engineer for + +41:16.040 --> 41:25.680 +Spotify and he has implemented 260 test cases for hyperbole that are run against the three + +41:25.680 --> 41:30.040 +major versions of Emacs every time we commit. + +41:30.040 --> 41:36.200 +And that's proven to be very successful because, you know, sometimes we're modifying things + +41:36.200 --> 41:43.080 +at the engine level and who knows what, what set of button types that affects. + +41:43.080 --> 41:50.520 +So it works really well when we're, and we've had very good success that we have very few, + +41:50.520 --> 41:58.480 +you know, bugs that we don't know about already being found by users once we make a release. + +41:58.480 --> 42:01.760 +It seems like PlasmaStrike wants to jump in. + +42:01.760 --> 42:02.760 +I'm sorry. + +42:02.760 --> 42:03.760 +I didn't, wasn't. + +42:03.760 --> 42:07.120 +I did see your link earlier possibly by the Emacs dashboard and I opened it, it looked + +42:07.120 --> 42:08.120 +pretty cool. + +42:08.120 --> 42:12.560 +Bob, you might, you might, yeah. + +42:12.560 --> 42:23.080 +I've been getting my partner into LogSec with org, which is kind of like org-roam for knowledge + +42:23.080 --> 42:24.080 +bases. + +42:24.080 --> 42:29.920 +And I've been using that, having my knowledge base on LogSec. + +42:29.920 --> 42:36.720 +He could look at it, it's getting synchronized with sync thing and he can see how I do the + +42:36.720 --> 42:37.720 +stuff. + +42:37.720 --> 42:39.480 +He can replicate it if he wants to. + +42:39.480 --> 42:45.640 +Then I'm thinking about putting CRDT with Emacs so that we could both edit the same + +42:45.640 --> 42:50.120 +document in real time. + +42:50.120 --> 42:55.920 +And that way I can get Emacs to work with the same data set as org-roam and that way + +42:55.920 --> 43:01.920 +he doesn't have to learn absolutely everything that Emacs has to offer. + +43:01.920 --> 43:07.800 +There's also, I can use all that stuff if I want to use it. + +43:07.800 --> 43:08.800 +That's cool. + +43:08.800 --> 43:16.120 +I, you know, I've heard of that, but not necessarily, didn't know anything about it. + +43:16.120 --> 43:21.080 +So that's, I'm looking, you know, all I guess all I can say at this point is that it looks + +43:21.080 --> 43:22.080 +really cool. + +43:22.080 --> 43:29.200 +It's, does it sounds like you're saying it's front, it's easy to, easy accessible, easily + +43:29.200 --> 43:30.200 +to get into. + +43:30.200 --> 43:32.360 +Well, you can also put it on your phone too. + +43:32.360 --> 43:39.360 +So it would probably be a really good way of doing that, even though it's harder to + +43:39.360 --> 43:48.160 +get Emacs on your phone and on iPhones as well. + +43:48.160 --> 43:52.400 +You got to figure out, that's what people were asking about, touchscreens. + +43:52.400 --> 43:55.640 +Have we thought about how to use touchscreens? + +43:55.640 --> 44:00.800 +I think it's an interesting challenge for Emacs, you know, you even talk about mouse + +44:00.800 --> 44:07.840 +buttons and people kind of freak out a lot of times because they're so keyboard driven. + +44:07.840 --> 44:14.200 +Well, one of the great things about Emacs is it's a keyboard is a first citizen and + +44:14.200 --> 44:19.200 +mouse can't be a first citizen because you're going to have to switch between it and all + +44:19.200 --> 44:21.200 +the time. + +44:21.200 --> 44:28.560 +If you go back to Engelbart's work, it was one hand on the mouse, one hand on the keyboard. + +44:28.560 --> 44:37.320 +And you know, we do miss some of that, that ability to point at things and make operations + +44:37.320 --> 44:38.320 +on them. + +44:38.320 --> 44:45.160 +We have things like Avi, I believe it is, right, for where you can move around across + +44:45.160 --> 44:47.720 +windows and buffers very rapidly. + +44:47.720 --> 44:53.400 +So you can get to like an exact point in a buffer much faster, and then you could act + +44:53.400 --> 44:55.120 +on it, you know, doing it that way. + +44:55.120 --> 44:57.720 +So it's kind of like a replacement for that. + +44:57.720 --> 45:03.300 +But it's amazing when you start to think a little differently like that. + +45:03.300 --> 45:07.720 +And certainly people have done that with split keyboards and they, some people only use half + +45:07.720 --> 45:09.600 +of the keyboard then. + +45:09.600 --> 45:12.920 +So and they have all the modifier keys, you know, that's what we're doing. + +45:12.920 --> 45:18.080 +In fact, Hyperbole has a module that isn't active, but it's sitting out there. + +45:18.080 --> 45:24.500 +And it turns the mouse keys into two modifier buttons. + +45:24.500 --> 45:28.720 +So it could be control and meta, or whatever have you. + +45:28.720 --> 45:34.400 +And so if you want to operate that way, you can emulate what Engelbart was doing with + +45:34.400 --> 45:38.440 +your regular keyboard and the mouse. + +45:38.440 --> 45:44.520 +Didn't that, didn't he have like a weird mouse where it had like more buttons on it? + +45:44.520 --> 45:47.520 +He was three buttons, actually, yeah. + +45:47.520 --> 45:50.080 +He had the chord keyboard you're thinking of. + +45:50.080 --> 45:56.840 +The keyboard was like five keys that you could press as chords. + +45:56.840 --> 46:02.120 +So you could press all five or three of them, and they would produce different character + +46:02.120 --> 46:03.120 +outputs. + +46:03.120 --> 46:05.880 +I mean, they had a lot of things that we don't have. + +46:05.880 --> 46:13.520 +You know, their file system was node based, and so everything could be hyperlinked to. + +46:13.520 --> 46:17.440 +And they had permanent IDs everywhere, and they had journals. + +46:17.440 --> 46:22.120 +And they had implemented almost all of this in assembly at first, and it was on a time + +46:22.120 --> 46:23.120 +shared machine. + +46:23.120 --> 46:26.800 +So everything was collaborative instead of individual. + +46:26.800 --> 46:30.680 +But you know, so we'll get there eventually. + +46:30.680 --> 46:36.320 +It's a lot of, a lot of things have changed that we've had to, you know, fight against + +46:36.320 --> 46:38.800 +separating people from collaborating. + +46:38.800 --> 46:44.760 +And now everybody's trying to get back to you and say, let's build collaborative software. + +46:44.760 --> 46:50.320 +Yeah, I noticed that's another, another one of those cycles that I noticed was the talk + +46:50.320 --> 46:57.080 +of, I forget who, it was the guy who did the SQLite thing and how he, how he was basically + +46:57.080 --> 47:03.720 +saying, hey, text is great, but these, these somewhat relational databases have a lot of + +47:03.720 --> 47:04.720 +things to offer. + +47:04.720 --> 47:07.200 +And I'm thinking, yeah, of course, I agree. + +47:07.200 --> 47:12.160 +But it's just funny how so much of the Emacs ethos has been, text can do so much, and they + +47:12.160 --> 47:13.160 +were right. + +47:13.160 --> 47:18.560 +And then now, like, this is, it's like a turning point to say, hey, text can't do all these + +47:18.560 --> 47:22.160 +things, but let's use Emacs to take advantage of all this non-text stuff too. + +47:22.160 --> 47:27.600 +That's just, that's just one of those, kind of those cyclical things of where we do what + +47:27.600 --> 47:31.360 +we can with text, and then someone notices that, hey, we, maybe we could do something + +47:31.360 --> 47:35.360 +without text, and then that, that balance might shift and just go back and forth. + +47:35.360 --> 47:39.560 +And it sounds like it's the same, like you're talking about with collaboration. + +47:39.560 --> 47:43.840 +Have you ever seen VisiData? + +47:43.840 --> 47:53.440 +It's a curses program that one guy has written that can manipulate any sort of tabular information. + +47:53.440 --> 48:00.360 +It's the, it's the Emacs of, like, you don't want to use a spreadsheet, and you want to + +48:00.360 --> 48:02.720 +do data analysis. + +48:02.720 --> 48:04.360 +It's pretty unbelievable what's in there. + +48:04.360 --> 48:06.560 +It's written in Python. + +48:06.560 --> 48:15.600 +But he has asynchronous slurping of super large CSVs that are compressed and encrypted. + +48:15.600 --> 48:17.600 +So it's basically like a Unix tool. + +48:17.600 --> 48:23.600 +You can use a command line wise, but then it gives you a curses interface, and you can + +48:23.600 --> 48:27.040 +slice and dice and get histograms. + +48:27.040 --> 48:28.040 +So it's kind of amazing. + +48:28.040 --> 48:30.680 +I tried, the key bindings were so different. + +48:30.680 --> 48:35.560 +I did some work to try to make it more Emacs-like in that. + +48:35.560 --> 48:40.600 +But he would have something that would be so valuable if it wasn't connected to the + +48:40.600 --> 48:41.600 +curses interface. + +48:41.600 --> 48:46.720 +You know, it was an API, and, but he likes it that way. + +48:46.720 --> 48:49.200 +And so he just keeps developing it. + +48:49.200 --> 48:55.440 +But it's really amazing if you have to process a lot of data and don't want to use Excel + +48:55.440 --> 48:56.440 +or something. + +48:56.440 --> 49:00.280 +That's with a Z, Visi or S, or? + +49:00.280 --> 49:02.280 +No, V-I-S-I-D-A-T-A. + +49:02.280 --> 49:05.160 +You'll find it. + +49:05.160 --> 49:12.000 +It's his name is Paul Swanson. + +49:12.000 --> 49:13.200 +It's not Swanson. + +49:13.200 --> 49:17.000 +It's something like that, though. + +49:17.000 --> 49:18.520 +I think it is. + +49:18.520 --> 49:22.640 +I think according to his website, according to the website, it says Saul Pwonson. + +49:22.640 --> 49:23.640 +So I'm guessing that. + +49:23.640 --> 49:24.640 +Yes, Saul Pwonson. + +49:24.640 --> 49:25.640 +I get it backwards. + +49:25.640 --> 49:26.640 +I was Paul Swanson. + +49:26.640 --> 49:31.640 +Yeah, he's a great guy. + +49:31.640 --> 49:32.640 +That's another thing on my list. + +49:32.640 --> 49:33.640 +It'll go. + +49:33.640 --> 49:34.640 +Yeah, check it out. + +49:34.640 --> 49:38.400 +Don't blow your mind what's in there. + +49:38.400 --> 49:43.960 +And again, it's like there's a small community, but it's like all these people that it's such + +49:43.960 --> 49:51.360 +a simple download, you know, it's a standalone executable, but largely, you know, people + +49:51.360 --> 49:52.440 +just don't know about it. + +49:52.440 --> 49:58.680 +I tripped over it and I'm like, my God, how do you get this far without me hearing about + +49:58.680 --> 49:59.680 +it? + +49:59.680 --> 50:01.240 +I think that's one of those. + +50:01.240 --> 50:06.840 +Maybe it's a case where if you don't get a lot of attention, you end up doing things + +50:06.840 --> 50:12.120 +in a way that you take things in the direction that you want to take them. + +50:12.120 --> 50:15.720 +And sometimes that leads to a bad place and sometimes it leads to a really interesting + +50:15.720 --> 50:16.720 +and good place. + +50:16.720 --> 50:23.120 +And it's probably somewhere in between that seems like he's taking this to a place. + +50:23.120 --> 50:28.360 +He had some usability issues and then he got like two other people on the team and they + +50:28.360 --> 50:34.360 +really helped him, I think with that, you know, he takes feedback pretty well and the + +50:34.360 --> 50:36.440 +team takes feedback well. + +50:36.440 --> 50:40.160 +So they've been evolving it, you know, from version one to like, I think they're on three + +50:40.160 --> 50:46.160 +now and you know, it's come a long way that way too. + +50:46.160 --> 50:52.120 +And now he's got a job, I believe, where he can work on it as well. + +50:52.120 --> 50:58.280 +So yeah, that should advance it a lot too. + +50:58.280 --> 51:03.960 +So yeah, there's so much good stuff going on, you know, and it's just what's not going + +51:03.960 --> 51:08.760 +on is sort of what we had long ago was the reusability. + +51:08.760 --> 51:13.560 +Nobody's really building libraries anymore, you know, that people can build on. + +51:13.560 --> 51:20.320 +It's all like, well, we got to wrap a web app around our API and that's it. + +51:20.320 --> 51:24.920 +And we're not going to make the code underlying the API shareable. + +51:24.920 --> 51:28.960 +You have to consume it, but that's all you can do. + +51:28.960 --> 51:35.160 +And so I think where everybody's rebuilding the same things again and again now, because + +51:35.160 --> 51:43.840 +sort of what Stallman talks about, that sharing culture has been snuffed out so broadly, you + +51:43.840 --> 51:49.520 +know, in terms of what people spend most of their waking hours on, right? + +51:49.520 --> 51:54.880 +As professional developers and, you know, you kind of miss it, right? + +51:54.880 --> 52:00.240 +From when you could, because having written that old browser, I mean, what I would do, + +52:00.240 --> 52:03.720 +what I remember doing is saying, okay, here's a thousand classes. + +52:03.720 --> 52:09.040 +I'll just run my browser over it and get to understand the interrelationships. + +52:09.040 --> 52:13.060 +And it's like, well, where are those like, you know, they're out there, there's still + +52:13.060 --> 52:18.540 +numerical libraries and things, but you just don't have the ecosystem because the energy + +52:18.540 --> 52:25.680 +is going somewhere else, you know, to the finished products, more than reusable building + +52:25.680 --> 52:26.680 +blocks. + +52:26.680 --> 52:27.680 +I think. + +52:27.680 --> 52:28.680 +Yeah. + +52:28.680 --> 52:30.480 +Have you heard of Glorious Toolkit? + +52:30.480 --> 52:35.680 +I think that's what it's called, but it's a continuation of Smalltalk and it has a lot + +52:35.680 --> 52:40.840 +of concepts like that where you have multiple representations of the same data. + +52:40.840 --> 52:46.480 +Like the, also that Mother of All Demos where Engelbarton was doing that. + +52:46.480 --> 52:47.480 +Yeah. + +52:47.480 --> 52:48.960 +I know, I've seen that many times. + +52:48.960 --> 52:53.560 +I got to work with Doug maybe for a year or so. + +52:53.560 --> 52:58.320 +By the way, Plasma Strike, I'm going to put that on my queue to watch because I've never + +52:58.320 --> 52:59.320 +actually watched. + +52:59.320 --> 53:00.320 +I know about it. + +53:00.320 --> 53:01.320 +Oh yeah. + +53:01.320 --> 53:02.320 +It's great. + +53:02.320 --> 53:03.320 +It's great. + +53:03.320 --> 53:05.040 +It's nice to see him as a young man too. + +53:05.040 --> 53:09.800 +Like that was 1968, he started like 1957 or something. + +53:09.800 --> 53:13.480 +The stuff they had before 1960 is incredible. + +53:13.480 --> 53:17.880 +There's also another spreadsheet, like what you're talking about, but an Emacs and that + +53:17.880 --> 53:23.240 +talk right there too, but yeah. + +53:23.240 --> 53:28.520 +All this, I mean, just those initial tips, you know, I was finding stuff that I need. + +53:28.520 --> 53:34.960 +So I like that idea, I think might do something with that if we can get a good database and + +53:34.960 --> 53:43.340 +link it into Hyperbole with some simple exposure that kind of gets people into some of this + +53:43.340 --> 53:48.880 +but I'll tell you what I really want that I can't find. + +53:48.880 --> 53:52.560 +There's so much effort at low code environments now. + +53:52.560 --> 54:01.120 +I want a low code environment for spinning up web apps inside a company where it's not + +54:01.120 --> 54:02.880 +your focus. + +54:02.880 --> 54:05.260 +It's just for an internal app, right? + +54:05.260 --> 54:11.520 +Like we want to do say time tracking for one small team and we want to build it ourselves. + +54:11.520 --> 54:16.380 +You know, that's not the real use case, but if you took something like that, so you don't + +54:16.380 --> 54:21.520 +have a lot of resources, you don't have a lot of time, you know how to program, but + +54:21.520 --> 54:28.040 +you want something that lets you operate like you're building a Python command line thing, + +54:28.040 --> 54:30.940 +but you want it to be a web app. + +54:30.940 --> 54:37.320 +There's a cool project I saw for that that would be, that was a peer-to-peer KISS web + +54:37.320 --> 54:42.560 +browser. + +54:42.560 --> 54:48.220 +Because I've looked at a lot of these, you know, there's no code DB. + +54:48.220 --> 54:57.640 +The best one that I came to but has been hard to set up internally was, it's like from a + +54:57.640 --> 55:04.940 +German company, it's like designed in Germany and implemented in China, a lot or pieces + +55:04.940 --> 55:09.260 +of it, and what is it called? + +55:09.260 --> 55:14.200 +I'll have to look at my database. + +55:14.200 --> 55:20.560 +There's like something like Seaborn or something like that. + +55:20.560 --> 55:33.720 +There's a couple of projects that are named that way, but let's see, Seaborn, low code. + +55:33.720 --> 56:01.320 +Let's see something, find it, but, oh, low code, so there's something, it's amazing to + +56:01.320 --> 56:11.560 +me, oh, C table, that's it, C table, SEA table, that's kind of one we've been trying to get + +56:11.560 --> 56:15.400 +to work, but there's still limits. + +56:15.400 --> 56:23.720 +There's an environment where like if Emacs could let you do the mock-up of your web app + +56:23.720 --> 56:33.480 +using Lisp and then could be fully deployable onto a web stack, that would be, I mean, we + +56:33.480 --> 56:41.200 +have a web server, it's just a question of, and we have like C-based fast web servers + +56:41.200 --> 56:49.480 +that you could interface to Lisp, so I don't think like the capacity is the problem, but + +56:49.480 --> 56:56.760 +nobody's gone from providing the web server to here's how you could program the front + +56:56.760 --> 57:00.840 +end and connect it to the back end all in Lisp. + +57:00.840 --> 57:08.960 +That's one of my biggest issues is like, and you see it in the hyperbole work, is I want + +57:08.960 --> 57:10.920 +simplicity and uniformity. + +57:10.920 --> 57:19.080 +I can't like program in three languages at the same time, so I can't use JavaScript on + +57:19.080 --> 57:25.840 +the front end and Python on the back end and then have to deal with CSS as well. + +57:25.840 --> 57:26.840 +And HTML. + +57:26.840 --> 57:27.840 +Yeah. + +57:27.840 --> 57:28.840 +And HTML. + +57:28.840 --> 57:34.840 +It's like my mind just cracks up and I'm like, why do, and even if you were brought up that + +57:34.840 --> 57:42.880 +way, like how can you be a 22-year-old and say, oh, this is so simple, because they do, + +57:42.880 --> 57:43.960 +they say that all the time. + +57:43.960 --> 57:47.240 +Well, this is a really simple thing to do. + +57:47.240 --> 57:54.560 +I mean, yeah, if you're copying and pasting all your code, which is apparently what has + +57:54.560 --> 58:01.040 +become common now, right, is I'll just use this template, then yeah, that's simple. + +58:01.040 --> 58:03.760 +But what about building it originally? + +58:03.760 --> 58:09.720 +It's like, there's just so much for your mind to process. + +58:09.720 --> 58:17.080 +And there was something called Meta HTML, which was really cool when HTML first came + +58:17.080 --> 58:21.800 +out, and you're not going to be able to find this or even a reference to it, probably. + +58:21.800 --> 58:30.600 +But this was two guys from MIT, and they said, okay, instead of programming at the HTML level, + +58:30.600 --> 58:39.720 +let's write a list-like interpreter that uses HTML syntax, but will give you all the higher + +58:39.720 --> 58:42.160 +level programming constructs you need. + +58:42.160 --> 58:47.840 +And so you could write stuff that looked like HTML, but you'd be processing lists of things + +58:47.840 --> 58:55.280 +and manipulating the DOM in these very abstract ways and very little code. + +58:55.280 --> 59:01.800 +And again, you didn't have to mix a different syntax in like you have to now. + +59:01.800 --> 59:09.940 +It was great, and it wasn't a lot of code, and it worked, and nobody cared. + +59:09.940 --> 59:11.280 +Nobody did anything with it. + +59:11.280 --> 59:12.880 +It died on the vine. + +59:12.880 --> 59:21.520 +Well, we didn't need to endlessly measure every little mouse movement and eyeball engagement + +59:21.520 --> 59:23.440 +and then monetize it and analyze it. + +59:23.440 --> 59:27.320 +So you could focus on just doing what you needed to do. + +59:27.320 --> 59:28.320 +Yeah. + +59:28.320 --> 59:29.320 +Well, that's right. + +59:29.320 --> 59:30.320 +Friction drives. + +59:30.320 --> 59:32.200 +That's what I love. + +59:32.200 --> 59:37.280 +I'm stuck in a Microsoft environment now where there's a little bit of Linux here and there, + +59:37.280 --> 59:40.480 +but I'm either a Mac user. + +59:40.480 --> 59:47.840 +I've always been a Unix user, so Windows is enormously painful despite the strides that + +59:47.840 --> 59:50.840 +they've made. + +59:50.840 --> 59:55.440 +I always look at it, and I say, well, it's a brilliant business perspective because they + +59:55.440 --> 01:00:02.280 +know they create so many problems for people, so much friction that it creates enormous + +01:00:02.280 --> 01:00:10.240 +economic opportunities for many, many people, and that's what they do. + +01:00:10.240 --> 01:00:11.640 +They have WSL. + +01:00:11.640 --> 01:00:13.720 +Do you know about that? + +01:00:13.720 --> 01:00:17.720 +The Windows System for Linux, yeah. + +01:00:17.720 --> 01:00:21.840 +They had a guy working on that who was leading it, and they were just making stride after + +01:00:21.840 --> 01:00:30.720 +stride, and apparently some high-level executive probably did not like seeing this, and so + +01:00:30.720 --> 01:00:35.740 +they moved this guy off, and now it's like Microsofty. + +01:00:35.740 --> 01:00:41.360 +So now all you see come out of there is like we've improved Windows Terminal, and the whole + +01:00:41.360 --> 01:00:47.000 +WSL thing moves at a snail's pace now, and you have to think that wasn't just like the + +01:00:47.000 --> 01:00:53.460 +guy got promoted, but that there was a strategic decision that this was helping people too + +01:00:53.460 --> 01:01:00.920 +much to live in a non-Windows environment in their mind, and we can't be supporting + +01:01:00.920 --> 01:01:01.920 +that. + +01:01:01.920 --> 01:01:13.440 +I was going to say, even though if you say, I want to use Kubernetes or in Azure, they + +01:01:13.440 --> 01:01:20.880 +say, okay, use Linux VMs, so they'll do that all day long and tell you not to use Windows, + +01:01:20.880 --> 01:01:26.800 +so there is still parts of the company that are like that and are open to it, but they + +01:01:26.800 --> 01:01:31.560 +have it pretty well locked down. + +01:01:31.560 --> 01:01:37.520 +I think it goes in line with the attention economy where they want to control the computing + +01:01:37.520 --> 01:01:43.520 +experience, and you want to use Microsoft apps, Microsoft Office. + +01:01:43.520 --> 01:01:49.240 +We don't want to make sure that you can reach out too easily into other ecosystems. + +01:01:49.240 --> 01:01:54.800 +Embrace, extend, extinguish, right? + +01:01:54.800 --> 01:01:55.800 +Is that the... + +01:01:55.800 --> 01:01:56.800 +Yep. + +01:01:56.800 --> 01:01:57.800 +That's it. + +01:01:57.800 --> 01:02:04.160 +An interesting Windows feature is you can update Windows, see that it's all the way + +01:02:04.160 --> 01:02:10.040 +up to date, reboot it, wait a day, or wait a day, and all of a sudden you have more updates + +01:02:10.040 --> 01:02:13.040 +for like a week or something along those lines. + +01:02:13.040 --> 01:02:17.600 +I don't know of any other operating system that does that. + +01:02:17.600 --> 01:02:24.900 +You only have two minutes until your reboot is done, and then it's like it comes back. + +01:02:24.900 --> 01:02:29.240 +Now it's an hour, and then another half an hour, right? + +01:02:29.240 --> 01:02:33.400 +They only give you a little snippet. + +01:02:33.400 --> 01:02:38.360 +Is PlasmaStrike, by the way, is that stack that you're describing with LogSec and syncing + +01:02:38.360 --> 01:02:39.360 +and everything? + +01:02:39.360 --> 01:02:41.400 +Is that something that you've published any examples? + +01:02:41.400 --> 01:02:46.080 +I saw you said something in the IRC, but I just lost track of what was going on in IRC, + +01:02:46.080 --> 01:02:49.080 +so I'm sorry if I missed that. + +01:02:49.080 --> 01:02:51.020 +No, I haven't. + +01:02:51.020 --> 01:02:58.880 +This is although now I'm thinking about just putting a whole bunch of some resources together + +01:02:58.880 --> 01:03:06.220 +of HyperBowl does a really good job of showing you a knowledge base, plus enough configuration + +01:03:06.220 --> 01:03:14.760 +to use an EEV does a really good job of showing you enough in-source documentation to play + +01:03:14.760 --> 01:03:19.840 +it out and see how it actually works in practice. + +01:03:19.840 --> 01:03:23.800 +Our Chrome needs something like that, so I don't know if I'll... + +01:03:23.800 --> 01:03:30.080 +But you need some minimal config to work with that, so you can look at the more philosophy + +01:03:30.080 --> 01:03:38.000 +plus packages combination. + +01:03:38.000 --> 01:03:44.560 +How do you guys like the HyperBorg term, if we use that? + +01:03:44.560 --> 01:03:48.200 +Does that strike you as a little... + +01:03:48.200 --> 01:03:50.080 +Was that what you were going for? + +01:03:50.080 --> 01:03:52.480 +Were you trying to conjure up the Borg? + +01:03:52.480 --> 01:03:53.480 +Well, yeah. + +01:03:53.480 --> 01:03:59.960 +Well, Sasha came up with HyperOrg for hyperbole and org, and then I thought, well, it'd be + +01:03:59.960 --> 01:04:09.160 +funnier if we called it HyperBorg, because it kind of is like Stalvan talks about org + +01:04:09.160 --> 01:04:16.580 +wants to take you into this environment, and hyperbole certainly does too, so if we put + +01:04:16.580 --> 01:04:21.240 +the two together, we would definitely have something like the Borg. + +01:04:21.240 --> 01:04:26.800 +My impression, and I said something to Kielaro, I don't know if I spoke wrong, but my impression + +01:04:26.800 --> 01:04:31.920 +was that this was not something that was going to be created, this was just a way, just like + +01:04:31.920 --> 01:04:32.920 +a... + +01:04:32.920 --> 01:04:33.920 +Oh, right. + +01:04:33.920 --> 01:04:34.920 +It's just a... + +01:04:34.920 --> 01:04:39.200 +Yeah, the music kind of term, but I do want to do more work. + +01:04:39.200 --> 01:04:45.080 +I've joined the org mail list, and I mean, just I did a lot of work for that presentation + +01:04:45.080 --> 01:04:53.840 +and that sort of struck me, and I said, there's a certain level of work we need to do. + +01:04:53.840 --> 01:05:00.760 +Years ago, we were thinking we'd put hyperbole into Emacs, now that org is... + +01:05:00.760 --> 01:05:07.600 +There's no reason not to, and were it to be there, there are things that there's namings + +01:05:07.600 --> 01:05:14.360 +that we would correct, and the interface points to org, we would want to do something about + +01:05:14.360 --> 01:05:17.920 +and work out with them, especially the made a return key. + +01:05:17.920 --> 01:05:23.080 +That's the main, if we could resolve that between the two packages better, and we've + +01:05:23.080 --> 01:05:28.180 +done a pretty good job just on hyperboles in, but we've never talked to the org people + +01:05:28.180 --> 01:05:29.180 +about it. + +01:05:29.180 --> 01:05:33.160 +It kind of seems like the term would work better the opposite way, because org wants + +01:05:33.160 --> 01:05:39.400 +to go around and doesn't have that modularity that your package has. + +01:05:39.400 --> 01:05:45.080 +So you're suggesting like, let them give the key over to us, and then we'll support some + +01:05:45.080 --> 01:05:46.080 +of their... + +01:05:46.080 --> 01:05:50.880 +Well, it's more reading the board taking over everything, because org mode comes and they + +01:05:50.880 --> 01:05:51.880 +take over... + +01:05:51.880 --> 01:06:02.040 +All their code works with org mode, not K outline or markdown mode or anything along + +01:06:02.040 --> 01:06:03.040 +those lines. + +01:06:03.040 --> 01:06:08.240 +Yeah, more, so the board part comes more from the hyperbole side, yeah. + +01:06:08.240 --> 01:06:12.520 +Well, but maybe it's fitting in the long run, because no matter... + +01:06:12.520 --> 01:06:18.600 +Perhaps if you provide a, or if hyperbole provides a very convenient enhancement on + +01:06:18.600 --> 01:06:23.320 +top of how people used to use org mode, it'll just become part of org mode eventually. + +01:06:23.320 --> 01:06:31.400 +Yeah, that's something I can see too, is that they just become one big thing that Stallman + +01:06:31.400 --> 01:06:36.880 +doesn't like, because we do have a bit of that in all of them. + +01:06:36.880 --> 01:06:42.280 +I mean, I totally get what he's saying and I buy it, I'm kind of like a functional programmer + +01:06:42.280 --> 01:06:49.800 +and I like bottom up development, but people ask us all the time, okay, if you have four + +01:06:49.800 --> 01:06:55.360 +or five things in hyperbole, why don't you separate them into separate packages? + +01:06:55.360 --> 01:06:57.200 +And it was the same thing for Engelbart. + +01:06:57.200 --> 01:07:02.840 +Well, one, it would be a lot more overhead just in separate manuals and dealing with + +01:07:02.840 --> 01:07:04.480 +separate communities. + +01:07:04.480 --> 01:07:09.840 +We want everyone who uses it to have the same baseline experience. + +01:07:09.840 --> 01:07:15.560 +And so even though, yes, you could separate out the button functionality from the K-outliner + +01:07:15.560 --> 01:07:23.880 +and the Rolodex, and the Rolodex originally was a separate thing by itself, we find putting + +01:07:23.880 --> 01:07:29.200 +them all together gives people the same thing that Emacs provides, it's sort of, you don't + +01:07:29.200 --> 01:07:34.680 +have to use all of the libraries, but having them there ensures you that when somebody + +01:07:34.680 --> 01:07:42.640 +references it, it works and you have a lot fewer of those kinds of, well, I only have + +01:07:42.640 --> 01:07:47.720 +the subsystem, so when I invoke your code, it breaks. + +01:07:47.720 --> 01:07:52.400 +Yeah, I think, and I think, I mean, I don't think there's any, I don't personally have + +01:07:52.400 --> 01:07:56.480 +like a preference as to what the right direction is, I just acknowledge that the downsides + +01:07:56.480 --> 01:08:00.880 +and upsides of each choice, but one thing I have noticed is I think something, I think + +01:08:00.880 --> 01:08:07.280 +it was McGit, that's how I say it, but, you know, initially it was one thing and now I + +01:08:07.280 --> 01:08:13.880 +think it's turned into a dozen or maybe even a couple dozen different packages. + +01:08:13.880 --> 01:08:19.320 +And I remember I went to update it once and they had to, you know, navigate a few different, + +01:08:19.320 --> 01:08:25.640 +like, what's the word, combinatorial, you know, they had to go two or three levels of + +01:08:25.640 --> 01:08:30.560 +dependencies deep in each level or introduce two dishes, yeah. + +01:08:30.560 --> 01:08:37.360 +So yeah, that can happen, there's situations where you can see those downsides, where the + +01:08:37.360 --> 01:08:42.000 +more, you know, splitting things apart is... + +01:08:42.000 --> 01:08:48.280 +We're fighting with that at work right now, it's like, do we create more repos so we can + +01:08:48.280 --> 01:08:54.880 +deliver microservices or, you know, how do we split things out on the containers and + +01:08:54.880 --> 01:09:00.500 +it's very, very complicated and even, you know, with years, we've got years of experience + +01:09:00.500 --> 01:09:08.640 +with our architects and we're all like going back and forth on how far to go because one + +01:09:08.640 --> 01:09:13.360 +of the people is very worried that we get into that dependency hell kind of thing with + +01:09:13.360 --> 01:09:16.120 +some of our new get packages. + +01:09:16.120 --> 01:09:23.920 +So yeah, I wish there were easier solutions and that's, again, for hyperbole, there's, + +01:09:23.920 --> 01:09:28.600 +you know, there's none of it, there's no external dependencies, it's just what version of Emacs + +01:09:28.600 --> 01:09:36.140 +you're using and people don't realize that, yeah, they say, oh, it's so big, like, it's + +01:09:36.140 --> 01:09:43.600 +dependent on all this other stuff, but it's not, it's just, you know, I mean, it will + +01:09:43.600 --> 01:09:48.640 +leverage stuff, again, that's in core Emacs, but it won't require you to load a third party + +01:09:48.640 --> 01:09:52.360 +package just because, you know, it's useful or interesting. + +01:09:52.360 --> 01:10:00.960 +I think Emacs does a really good job on this because unlike the normal GUI apps, if I want + +01:10:00.960 --> 01:10:07.520 +to change my theme in Emacs, I get to change everything to a dark theme or white theme + +01:10:07.520 --> 01:10:17.120 +or whatever and unlike, and you can't really do that very in any way that shares any of + +01:10:17.120 --> 01:10:24.200 +the code or the settings with all your GUI applications, but also with a terminal, you + +01:10:24.200 --> 01:10:34.960 +miss out on a whole bunch more stuff because, well, you don't get GUIs or unless you're + +01:10:34.960 --> 01:10:46.400 +talking about TUI apps, but they're not really CLI apps because they're like a half stepchild, + +01:10:46.400 --> 01:10:50.120 +they don't get near as good themes because they can't integrate into all the packages + +01:10:50.120 --> 01:10:59.000 +near as well, you know, mouse and all the various other things like that. + +01:10:59.000 --> 01:11:02.160 +Where are you guys located? + +01:11:02.160 --> 01:11:04.200 +I'm in, I'm in Virginia. + +01:11:04.200 --> 01:11:07.880 +Oh, I just had guests from West Virginia. + +01:11:07.880 --> 01:11:09.880 +I'm in Connecticut. + +01:11:09.880 --> 01:11:10.880 +Utah. + +01:11:10.880 --> 01:11:11.880 +Oh, wow. + +01:11:11.880 --> 01:11:12.880 +Utah. + +01:11:12.880 --> 01:11:17.160 +So we're almost spanning the entire continent, almost. + +01:11:17.160 --> 01:11:23.200 +If we round up, we can consider it to be the case. + +01:11:23.200 --> 01:11:29.400 +I work with a lot of people in India, so we've got like a 12 hour difference much of the + +01:11:29.400 --> 01:11:30.400 +year. + +01:11:30.400 --> 01:11:37.200 +That's fascinating to try to work through all the time, but on Hyperbole, we have one + +01:11:37.200 --> 01:11:44.240 +guy in Sweden and one guy in Japan, so we're all over the map too. + +01:11:44.240 --> 01:11:51.680 +Yeah, I was involved with a little hobby group for something unrelated and we were in various + +01:11:51.680 --> 01:11:56.400 +countries and it was always, the best thing that we could do was just find the time at + +01:11:56.400 --> 01:12:03.440 +which all of us would be the least miserable and the least tired and not, you know, there + +01:12:03.440 --> 01:12:07.720 +was no good time for a meeting, there was just the least bad time. + +01:12:07.720 --> 01:12:15.840 +Well, I was struggling to finish up my presentation and just, you know, I would like want to show + +01:12:15.840 --> 01:12:21.840 +an example and then I'm like, well, I need to change the code a little bit so I go and, + +01:12:21.840 --> 01:12:26.840 +you know, I'd add capability and Hyperbole and it was just a lot more work than I expected. + +01:12:26.840 --> 01:12:31.900 +So November 4th was the deadline to send in your video. + +01:12:31.900 --> 01:12:36.520 +That came and went and then I couldn't touch anything until the weekend and I get maybe + +01:12:36.520 --> 01:12:38.680 +half a day with the holidays and stuff. + +01:12:38.680 --> 01:12:43.720 +So comes to be last night, still haven't sent the video in. + +01:12:43.720 --> 01:12:49.240 +You know, I had told them though a week ago that I'll do it live if I can't get the video + +01:12:49.240 --> 01:12:53.360 +in, but I'm like, you know, it'd be nice to have it recorded and they do all this stuff + +01:12:53.360 --> 01:12:54.360 +to it. + +01:12:54.360 --> 01:13:04.600 +So I finished the video at 5.30 in the morning and I just, you know, no, I was dead so I + +01:13:04.600 --> 01:13:11.440 +just uploaded it and I figured, you know, I had tested snippets before of how I recorded. + +01:13:11.440 --> 01:13:17.560 +So I sent the two of them, I go to bed, I get up and I have a message waiting. + +01:13:17.560 --> 01:13:23.280 +The video cuts off at 18 minutes and it was 36 minutes long and I'm like, oh, come on, + +01:13:23.280 --> 01:13:28.560 +it must be the software, like just can't handle a file that size and it's stupid. + +01:13:28.560 --> 01:13:32.080 +But I play it back on my system and it plays perfectly fine. + +01:13:32.080 --> 01:13:36.560 +And they gave me the checksum of the file, the size of the file, those matched up. + +01:13:36.560 --> 01:13:38.360 +So we knew we had uploaded a good thing. + +01:13:38.360 --> 01:13:42.320 +So I just went back to them and said, no, it works here. + +01:13:42.320 --> 01:13:47.280 +And then they went and researched and found, you know, it was their software and they were + +01:13:47.280 --> 01:13:48.480 +able to make it work. + +01:13:48.480 --> 01:13:50.580 +So I was good. + +01:13:50.580 --> 01:13:53.760 +But you know, that's like right at the edge. + +01:13:53.760 --> 01:13:56.480 +It's like 5.30 this morning. + +01:13:56.480 --> 01:13:57.480 +Yeah. + +01:13:57.480 --> 01:14:00.440 +And you haven't, and then you got some sleep after that? + +01:14:00.440 --> 01:14:01.440 +Yeah. + +01:14:01.440 --> 01:14:07.080 +I got up at like 9.30 so I'm running on a little, not too much sleep, but no, I was + +01:14:07.080 --> 01:14:14.100 +very happy because I got to, I actually, like Rahman who did his and he sort of had his + +01:14:14.100 --> 01:14:23.200 +face behind an Emacs window, transparency through the Emacs window. + +01:14:23.200 --> 01:14:27.960 +He spent like at least 20 hours, like just on the video part or something. + +01:14:27.960 --> 01:14:30.680 +I literally did one recording. + +01:14:30.680 --> 01:14:35.120 +I mean, I had done samples a little bit, but I sat down, I said, I'm just going to try + +01:14:35.120 --> 01:14:37.800 +to run through the whole thing, no breaks. + +01:14:37.800 --> 01:14:44.680 +I did both my face, you know, they were separating their face video from their audio for some + +01:14:44.680 --> 01:14:45.680 +reason. + +01:14:45.680 --> 01:14:50.800 +And they did all these separate tracks, one recording and threw it over the wall. + +01:14:50.800 --> 01:14:53.800 +So it was pretty good. + +01:14:53.800 --> 01:14:58.800 +I think it's easier to do with a longer video because I was in much the same situation. + +01:14:58.800 --> 01:15:06.800 +And if any organizers are reviewing this recording, you know, I was a day ahead of you, Bob. + +01:15:06.800 --> 01:15:12.960 +I submitted it a day before you and I went to sleep, I think roughly 24 hours before + +01:15:12.960 --> 01:15:15.000 +you did. + +01:15:15.000 --> 01:15:21.120 +But you know, it's, so I was scrambling to do a lot of those things too, but you know, + +01:15:21.120 --> 01:15:22.120 +because of my own fault. + +01:15:22.120 --> 01:15:28.120 +And again, if any organizers are listening, I sincerely apologize and thank you and admire + +01:15:28.120 --> 01:15:32.920 +your saintly level of tolerance and patience there. + +01:15:32.920 --> 01:15:41.840 +And I hope that they spend a lot of time and energy just hitting things with baseball bats + +01:15:41.840 --> 01:15:47.880 +after this conference, because I think that they've probably suppressed a lot of negative + +01:15:47.880 --> 01:15:52.520 +energy from having to process things like that. + +01:15:52.520 --> 01:15:55.520 +They're incredible. + +01:15:55.520 --> 01:16:03.960 +I said thank you like an hour into the conference because it was so, I was looking at all the + +01:16:03.960 --> 01:16:09.240 +detail they had and you know, you see the way it's grown from year to year that you + +01:16:09.240 --> 01:16:13.840 +could just tell there was a tremendous amount of effort put in to have all these different + +01:16:13.840 --> 01:16:15.880 +formats and dealing with it. + +01:16:15.880 --> 01:16:21.480 +People have disabilities and you know, I mean, they're just very thoughtful all around and + +01:16:21.480 --> 01:16:23.480 +a great set of people. + +01:16:23.480 --> 01:16:26.760 +So I think every year they get better at it. + +01:16:26.760 --> 01:16:27.760 +Yeah. + +01:16:27.760 --> 01:16:33.400 +Yeah, they're clearly, I like they took a DevOps kind of approach to it, which you can + +01:16:33.400 --> 01:16:40.580 +also see, I guess they have some people, they're using Ansible to maintain some of their environments. + +01:16:40.580 --> 01:16:44.920 +So it's like, wow, that's a pretty advanced way to do it. + +01:16:44.920 --> 01:16:50.760 +And it shows they struggled in parts, you know, it's like, like this, they had trouble, + +01:16:50.760 --> 01:16:57.320 +you know, I was asking multiple times, it's like, is the video going to be playable? + +01:16:57.320 --> 01:16:59.360 +And there'd like be no answer. + +01:16:59.360 --> 01:17:03.440 +And then it's like, okay, don't worry, we're taking care of it. + +01:17:03.440 --> 01:17:08.080 +But they couldn't say because they hadn't converted it the way they wanted to yet. + +01:17:08.080 --> 01:17:12.720 +And then they finally got there and they like 20 minutes before the presentation is when + +01:17:12.720 --> 01:17:21.760 +I guess I got on with you, right, plasma strike, and we did prep before prep. + +01:17:21.760 --> 01:17:24.880 +So it was a good experience. + +01:17:24.880 --> 01:17:30.920 +But I have to know, yeah, I thought I would have it done, no problem, November 4. + +01:17:30.920 --> 01:17:37.480 +So I think that and I did get very busy at work, but you know, that tells you something + +01:17:37.480 --> 01:17:40.840 +just about and I'm not, I don't do videos much. + +01:17:40.840 --> 01:17:43.040 +So that was part of the problem. + +01:17:43.040 --> 01:17:45.600 +Yeah, it's Yeah. + +01:17:45.600 --> 01:17:50.360 +I mean, I'd say the most concrete lesson that I learned, maybe not even a lesson so much + +01:17:50.360 --> 01:17:57.940 +as a as a punishment is that if I dare to submit anything next year, I'll, I'll make + +01:17:57.940 --> 01:18:01.040 +sure that I'm done recording it before I even propose it. + +01:18:01.040 --> 01:18:07.880 +Because I wouldn't want to have them wonder, is he gonna wait until the very end? + +01:18:07.880 --> 01:18:11.660 +Like, I'm gonna, I'm sure I am. + +01:18:11.660 --> 01:18:15.600 +So I will, I will have it done in the summer of 2023. + +01:18:15.600 --> 01:18:19.080 +And I will include it, I will upload it before I even submit it to them. + +01:18:19.080 --> 01:18:21.480 +Did you not get that message? + +01:18:21.480 --> 01:18:23.000 +Sasha was so nice about it. + +01:18:23.000 --> 01:18:29.200 +She's like, you know, it's really not a problem if you don't have time, you know, we can just + +01:18:29.200 --> 01:18:30.200 +cancel. + +01:18:30.200 --> 01:18:36.320 +And I'm like, I've never canceled on a talk before, so I'm gonna get it done, even if + +01:18:36.320 --> 01:18:38.320 +I have to do it live. + +01:18:38.320 --> 01:18:43.680 +Yeah, you know, I got I got similar ones got go ahead. + +01:18:43.680 --> 01:18:44.680 +How would that work? + +01:18:44.680 --> 01:18:48.040 +If you didn't know exactly how much time that you'd have for the talk? + +01:18:48.040 --> 01:18:50.160 +If you're going to do it all in advance? + +01:18:50.160 --> 01:18:57.640 +Oh, oh, for you, because it Yeah, well, you can take a shot. + +01:18:57.640 --> 01:18:58.640 +Don't give me a slot. + +01:18:58.640 --> 01:19:01.360 +You say I have a 20 minute video ready to go. + +01:19:01.360 --> 01:19:02.360 +Yeah, yeah. + +01:19:02.360 --> 01:19:07.560 +Or, I mean, and plus, I think it's also it would be it doesn't necessarily indicate that + +01:19:07.560 --> 01:19:12.200 +it's the final product, but it could be the final product, you could say, Okay, here's, + +01:19:12.200 --> 01:19:14.720 +here's 10 minutes or 15 minutes. + +01:19:14.720 --> 01:19:16.680 +And I will try to iterate on this. + +01:19:16.680 --> 01:19:21.840 +But if I if I default on this loan, so to speak, it's it serves as collateral, maybe + +01:19:21.840 --> 01:19:24.280 +it's not, not necessarily the final product. + +01:19:24.280 --> 01:19:28.320 +But if it needs to be the final product, they could use it that way. + +01:19:28.320 --> 01:19:33.440 +I think the thing that they're most worried about was just having to having to process + +01:19:33.440 --> 01:19:39.880 +things at the last minute and having to run it live, if necessary. + +01:19:39.880 --> 01:19:49.000 +So I don't think they they, you know, care that much about changing, you know, changing + +01:19:49.000 --> 01:19:50.000 +the length or so. + +01:19:50.000 --> 01:19:51.000 +Well, maybe they would, I don't know. + +01:19:51.000 --> 01:19:53.000 +But I guess that that would mess up the schedule. + +01:19:53.000 --> 01:19:56.520 +Well, the the subtitles were really popular, I understand. + +01:19:56.520 --> 01:20:05.240 +So that's, that's a big thing that would have been nice to have, which I imagine you're + +01:20:05.240 --> 01:20:06.240 +gonna process. + +01:20:06.240 --> 01:20:13.640 +Yeah, yeah, I, I, hopefully, I can, I can help them with with subtitling some of the + +01:20:13.640 --> 01:20:16.160 +things that didn't have them yet. + +01:20:16.160 --> 01:20:20.960 +Because, yeah, there's still a lot of work that I think needs to be done even after after + +01:20:20.960 --> 01:20:21.960 +the fact. + +01:20:21.960 --> 01:20:26.800 +And, you know, with transcribing these sessions, even not all of them, but at least some of + +01:20:26.800 --> 01:20:28.800 +the questions and answers and things. + +01:20:28.800 --> 01:20:35.760 +PlasmaStrike, did you that I hear that I understand you say that you you were a volunteer for + +01:20:35.760 --> 01:20:37.320 +managing the this year? + +01:20:37.320 --> 01:20:42.320 +No, I just I was just asking the question. + +01:20:42.320 --> 01:20:43.320 +I got you. + +01:20:43.320 --> 01:20:44.320 +No, I thought I heard you. + +01:20:44.320 --> 01:20:45.320 +I might have misheard something you said earlier. + +01:20:45.320 --> 01:20:46.320 +Are you Corbin? + +01:20:46.320 --> 01:20:47.320 +Me? + +01:20:47.320 --> 01:20:48.320 +Yeah. + +01:20:48.320 --> 01:20:49.320 +No. + +01:20:49.320 --> 01:20:50.320 +No. + +01:20:50.320 --> 01:20:51.320 +No. + +01:20:51.320 --> 01:20:52.320 +No. + +01:20:52.320 --> 01:20:53.320 +Okay. + +01:20:53.320 --> 01:20:56.560 +I thought you sounded like Corbin. + +01:20:56.560 --> 01:20:57.680 +You know him? + +01:20:57.680 --> 01:20:58.680 +Maybe a little bit. + +01:20:58.680 --> 01:20:59.680 +I can hear it a little bit. + +01:20:59.680 --> 01:21:00.680 +Okay. + +01:21:00.680 --> 01:21:06.360 +But you use, PlasmaStrike, you were saying that you you do use a lot of theming and things + +01:21:06.360 --> 01:21:12.160 +like that in terms of like your like various applications, like color themes and things. + +01:21:12.160 --> 01:21:21.960 +I've used various, I've Solarize, Doom themes, I think there's a Tron theme that I use, but + +01:21:21.960 --> 01:21:26.800 +now I'm just using the Modus themes, just simple black and white that's done really + +01:21:26.800 --> 01:21:27.800 +well. + +01:21:27.800 --> 01:21:28.800 +Yeah. + +01:21:28.800 --> 01:21:29.800 +Yeah. + +01:21:29.800 --> 01:21:30.800 +Simplicity. + +01:21:30.800 --> 01:21:32.680 +That was actually going to be one of the things that I wanted to mention in my talk. + +01:21:32.680 --> 01:21:36.400 +But again, those 10 minutes were turned out to be brutal. + +01:21:36.400 --> 01:21:41.560 +I wanted to mention how how people like like us and when I say us, I just mean I don't + +01:21:41.560 --> 01:21:47.680 +mean necessarily you two, just people that I was speaking for, are maybe a little bit + +01:21:47.680 --> 01:21:48.680 +scared of themes. + +01:21:48.680 --> 01:21:52.400 +You know, like I was going to mention that we like I try to stay the heck away from fonts + +01:21:52.400 --> 01:21:58.600 +and colors and things because I just, it's, I don't know if I have the bandwidth to keep + +01:21:58.600 --> 01:21:59.600 +them. + +01:21:59.600 --> 01:22:02.840 +I kind of just declare advanced bankruptcy on those and say, you know what, whatever + +01:22:02.840 --> 01:22:06.320 +it looks like, I'm going to live with it. + +01:22:06.320 --> 01:22:13.040 +I just look at like 20 themes, pick one that suits my taste and then live with that. + +01:22:13.040 --> 01:22:21.600 +So I found one called Cream Soddy, like cream soda, but S-O-D-Y and that's what I use as + +01:22:21.600 --> 01:22:26.960 +a dark theme and I find it, you know, very appealing in general. + +01:22:26.960 --> 01:22:34.000 +So, but yeah, I was noticing like the org people have so much, tweaking the visuals, + +01:22:34.000 --> 01:22:36.200 +you know, it was kind of amazing. + +01:22:36.200 --> 01:22:42.080 +Some people's presentations, I'm like, I'm really not into that. + +01:22:42.080 --> 01:22:47.600 +But I do have a feature in hyperbole, which is kind of cool. + +01:22:47.600 --> 01:22:52.960 +So there's this subsystem called high control, which lets you control your windows and your + +01:22:52.960 --> 01:22:53.960 +frames interactively. + +01:22:53.960 --> 01:23:00.800 +So it's, it's kind of like you go into a mode and it stays live until you quit. + +01:23:00.800 --> 01:23:04.920 +And so you can use regular insertion keys to manipulate things. + +01:23:04.920 --> 01:23:12.800 +One of the things it has in conjunction with a package called Zoom Frame is you can change + +01:23:12.800 --> 01:23:20.560 +your default face across like all your frames with one key, grow it, shrink it. + +01:23:20.560 --> 01:23:25.960 +And I found that, and not just the default face, but all the related faces so that everything + +01:23:25.960 --> 01:23:28.840 +stays a consistent size. + +01:23:28.840 --> 01:23:34.560 +Every time I would try any of the built-in things, I would always end up changing a face + +01:23:34.560 --> 01:23:38.840 +or multiple and something else would stay tiny. + +01:23:38.840 --> 01:23:40.360 +And it just annoyed the hell out of me. + +01:23:40.360 --> 01:23:43.120 +So I implemented that. + +01:23:43.120 --> 01:23:44.880 +This was in high control or Zoom? + +01:23:44.880 --> 01:23:54.080 +Yeah, it's in high control, the Z keys, you use I guess capital Z for make it bigger and + +01:23:54.080 --> 01:23:56.320 +lowercase Z to make it smaller. + +01:23:56.320 --> 01:23:58.680 +So you're zooming both ways. + +01:23:58.680 --> 01:24:04.600 +And the neat thing is that what high control has is a persistent prefix argument. + +01:24:04.600 --> 01:24:10.920 +So say like you want to move a window, say you want to move a frame two pixels at a time. + +01:24:10.920 --> 01:24:14.920 +So you set the prefix argument to two, and then every time you hit your arrow key or + +01:24:14.920 --> 01:24:17.960 +whatever moves it, it moves by two pixels. + +01:24:17.960 --> 01:24:21.440 +You can change that to 20 and it'll move by 20 pixels. + +01:24:21.440 --> 01:24:26.840 +And the 20 will apply to every successive operation until you change it. + +01:24:26.840 --> 01:24:29.560 +And to change it, you just hit a decimal point. + +01:24:29.560 --> 01:24:34.280 +So you can say period one, zero, and then you get a 10. + +01:24:34.280 --> 01:24:38.920 +Or just set it to zero and then it's off. + +01:24:38.920 --> 01:24:40.240 +And so it's very rapid. + +01:24:40.240 --> 01:24:47.680 +So you're doing these single keys NPF dot one, zero. + +01:24:47.680 --> 01:24:51.960 +And so you can string these together in your key series too. + +01:24:51.960 --> 01:24:54.440 +And you get this incredible operation. + +01:24:54.440 --> 01:25:02.480 +It can place frames at any of the corners or the top center of the screen too. + +01:25:02.480 --> 01:25:10.680 +And on a Mac, it will account for the toolbar and only grow so it doesn't overlap that. + +01:25:10.680 --> 01:25:15.240 +All these kind of fit and finish things are just pre-programmed in there. + +01:25:15.240 --> 01:25:20.360 +So when you're actually doing it, I mean, don't you hate that? + +01:25:20.360 --> 01:25:26.520 +It's like you expand your window programmatically and then half of it's off screen, right? + +01:25:26.520 --> 01:25:27.520 +For no reason at all. + +01:25:27.520 --> 01:25:29.560 +And then you got to go manipulate it. + +01:25:29.560 --> 01:25:36.400 +So I don't know, there was one time when I decided to do this and I just thought of those + +01:25:36.400 --> 01:25:41.200 +pain points and I took care of them all in there. + +01:25:41.200 --> 01:25:45.360 +So that's kind of a useful thing. + +01:25:45.360 --> 01:25:54.640 +And one guy, his fingers, if you saw the presentation, he was losing carpal tunnel like problems + +01:25:54.640 --> 01:25:56.120 +but very severely. + +01:25:56.120 --> 01:26:03.520 +So he went to voice control and he was using Emacs and he discovered high control. + +01:26:03.520 --> 01:26:09.720 +And he said that was like a life changer because he always wanted to manipulate his windows, + +01:26:09.720 --> 01:26:10.720 +his frames. + +01:26:10.720 --> 01:26:14.800 +And now he didn't have a good way because he couldn't hit all these keystrokes. + +01:26:14.800 --> 01:26:25.880 +And now he can just say those key sequences and it does it all for him very rapidly. + +01:26:25.880 --> 01:26:33.360 +Another guy, years ago I was working with, there's this brilliant guy named, oh God, + +01:26:33.360 --> 01:26:35.320 +this is, what is his name? + +01:26:35.320 --> 01:26:40.160 +Works for Google now and it's an Indian name. + +01:26:40.160 --> 01:26:44.340 +I forget his name, but he's been blind since birth. + +01:26:44.340 --> 01:26:50.000 +And he got a PhD in computer science and he's worked before Google. + +01:26:50.000 --> 01:26:54.560 +He worked at like Sun and just all the major companies. + +01:26:54.560 --> 01:27:02.680 +And I guess a lot of his work is on making technology accessible to the blind or disabled. + +01:27:02.680 --> 01:27:13.080 +So he wrote a package called EmacsSpeed, yeah, Raman, Raman is his name, TV Raman. + +01:27:13.080 --> 01:27:22.920 +And so EmacsSpeak is another whole environment that lets a blind person utilize Emacs as + +01:27:22.920 --> 01:27:25.200 +an advanced screen reader. + +01:27:25.200 --> 01:27:31.000 +Instead of reading you the whole screen, it knows what your context is and it just reads + +01:27:31.000 --> 01:27:32.180 +you appropriate stuff. + +01:27:32.180 --> 01:27:35.360 +So like he can understand code very rapidly. + +01:27:35.360 --> 01:27:39.640 +Additionally, he can change the speed of the voice so he can listen to something at five + +01:27:39.640 --> 01:27:41.440 +times speed and absorb it. + +01:27:41.440 --> 01:27:44.700 +So he can actually get a picture of code and manipulate it. + +01:27:44.700 --> 01:27:54.740 +So he and I got together years ago and he integrated it with Hyperbole and he was using + +01:27:54.740 --> 01:27:59.320 +Hyperbole to give a macro kind of capability in a lot of stuff. + +01:27:59.320 --> 01:28:01.120 +So I thought that was very cool. + +01:28:01.120 --> 01:28:06.880 +And he was just a very cool guy out in Silicon Valley. + +01:28:06.880 --> 01:28:10.840 +So glad to see he's done so well all this time. + +01:28:10.840 --> 01:28:17.400 +He's got an example config in his package. + +01:28:17.400 --> 01:28:21.920 +I don't know if it has your package configured inside of it or... + +01:28:21.920 --> 01:28:22.920 +I don't know. + +01:28:22.920 --> 01:28:23.920 +I haven't. + +01:28:23.920 --> 01:28:27.600 +He's got some for using CSS. + +01:28:27.600 --> 01:28:34.120 +I think that he was talking, something I read is it would change how the tones and voices + +01:28:34.120 --> 01:28:37.320 +that the voice was using. + +01:28:37.320 --> 01:28:38.320 +Right. + +01:28:38.320 --> 01:28:45.080 +The funny thing is that he's so devoted to his seeing eye dogs, right? + +01:28:45.080 --> 01:28:48.060 +He's had to have a number of them through his life. + +01:28:48.060 --> 01:28:54.200 +So he writes these fake press releases every time he releases a version and they're all + +01:28:54.200 --> 01:28:59.240 +named after the dog and the dog is making the announcement. + +01:28:59.240 --> 01:29:07.860 +It's like so and so is proud to announce Emacs, the friendliest dog release in history. + +01:29:07.860 --> 01:29:10.520 +So they're kind of fun to read. + +01:29:10.520 --> 01:29:16.920 +I've seen his messages on the mailing lists, rather I've seen his subject lines on the + +01:29:16.920 --> 01:29:21.400 +mailing list because I usually don't have, I don't give myself the time to read a lot + +01:29:21.400 --> 01:29:22.400 +of those messages. + +01:29:22.400 --> 01:29:27.840 +But now that I have that context, I'll dig into his messages and see because it sounds + +01:29:27.840 --> 01:29:28.840 +very interesting. + +01:29:28.840 --> 01:29:29.840 +Yeah. + +01:29:29.840 --> 01:29:30.840 +I mean, it would be. + +01:29:30.840 --> 01:29:39.880 +And if you're like my son has no problem seeing, but he has a bit of trouble processing words + +01:29:39.880 --> 01:29:41.880 +when he's reading. + +01:29:41.880 --> 01:29:46.840 +So he uses audible while he reads and it's too slow for him. + +01:29:46.840 --> 01:29:53.720 +So he uses audible at like twice the speed and finds that that really helps him understand + +01:29:53.720 --> 01:29:54.720 +passages. + +01:29:54.720 --> 01:30:01.040 +So it may have utility for people without visual disabilities too. + +01:30:01.040 --> 01:30:02.520 +Good point. + +01:30:02.520 --> 01:30:03.520 +Yeah. + +01:30:03.520 --> 01:30:09.800 +That's probably so much there that doesn't really get thought about because just think + +01:30:09.800 --> 01:30:11.440 +this is what, how we have to do it. + +01:30:11.440 --> 01:30:15.880 +It's in front of you, consume it, consume it the same way everybody else consumes it. + +01:30:15.880 --> 01:30:18.600 +And if you have trouble, then it's on you. + +01:30:18.600 --> 01:30:24.680 +Well, here's an interesting usability to bit, Robin, a different Robin, the Robin who + +01:30:24.680 --> 01:30:32.040 +works on hyperbole was showing me his presentation and he had the text of the presentation there. + +01:30:32.040 --> 01:30:37.460 +And every time he would say something, the word that he was saying would be highlighted + +01:30:37.460 --> 01:30:38.460 +on the screen. + +01:30:38.460 --> 01:30:41.520 +And I'm like, wow, that's very impressive. + +01:30:41.520 --> 01:30:45.440 +And it followed his speaking perfectly. + +01:30:45.440 --> 01:30:48.520 +I'm like, how did you do that? + +01:30:48.520 --> 01:30:55.920 +And he said, Oh, I'm just highlighting each word manually. + +01:30:55.920 --> 01:30:56.920 +Wow. + +01:30:56.920 --> 01:31:01.760 +Now that it's, it's like being a drummer, you know, he had such perfect cadence that + +01:31:01.760 --> 01:31:07.200 +I couldn't tell that this wasn't automated, that he did it so beautifully while he was + +01:31:07.200 --> 01:31:14.520 +speaking or, or watching him self speak, played back. + +01:31:14.520 --> 01:31:20.040 +It would have been nice if it was an automated thing, but apparently it takes the human to + +01:31:20.040 --> 01:31:21.040 +do it. + +01:31:21.040 --> 01:31:25.460 +I had to rig something up when I was recording my video, cause I, I wrote, I did it, I scripted + +01:31:25.460 --> 01:31:26.460 +it all. + +01:31:26.460 --> 01:31:31.240 +Um, and I, I just couldn't, I wasn't, I didn't have the mental bandwidth to try to memorize + +01:31:31.240 --> 01:31:32.440 +it at that point. + +01:31:32.440 --> 01:31:37.840 +So I just split everything up into, into half paragraphs basically, and tried to get it + +01:31:37.840 --> 01:31:43.720 +up as close to my camera as I could, um, scroll my mouse wheel. + +01:31:43.720 --> 01:31:48.040 +Every time I came to the end of a paragraph, I had to scroll the script with one hand and + +01:31:48.040 --> 01:31:52.200 +my other hand was controlling the slot, the so-called slide show, which was just paging + +01:31:52.200 --> 01:31:54.400 +through my org, my org outline. + +01:31:54.400 --> 01:32:01.240 +Um, and I think about five to 10 times I had to stop recording it because I, I scrolled, + +01:32:01.240 --> 01:32:05.320 +I got off sync with, with either my script or my outline or both. + +01:32:05.320 --> 01:32:10.200 +And just, you know, with 10 minutes, like, Oh, I can't go back and I lost, I lost like + +01:32:10.200 --> 01:32:11.440 +5% of my time. + +01:32:11.440 --> 01:32:13.360 +I have to start over. + +01:32:13.360 --> 01:32:16.680 +So I can't imagine doing it on a word by word basis. + +01:32:16.680 --> 01:32:22.640 +It's strange we're still recording this, but we're getting into just the, you know, interesting + +01:32:22.640 --> 01:32:23.640 +story. + +01:32:23.640 --> 01:32:24.640 +Oh, it's the last thing. + +01:32:24.640 --> 01:32:29.880 +So, you know, this is just kind of like, I feel like this is the, the after party, right? + +01:32:29.880 --> 01:32:31.640 +Maybe they'll cut it off. + +01:32:31.640 --> 01:32:36.720 +So I work with a British guy, brilliant, uh, mathematician kind of guy. + +01:32:36.720 --> 01:32:44.520 +He's a financial guy and, uh, he, he has that, you know, often British kind of capability. + +01:32:44.520 --> 01:32:52.760 +He, he speaks beautifully, but he can speak off the cuff about anything he's working on, + +01:32:52.760 --> 01:32:56.500 +just like he has spent a week, uh, working on it. + +01:32:56.500 --> 01:33:02.040 +So he gets called on like, you know, the bigger bosses will say, we got to show this, do this + +01:33:02.040 --> 01:33:08.600 +demo for this client, literally like five minutes ahead of time, and he'll just go into + +01:33:08.600 --> 01:33:12.240 +it and there won't be an um, there won't be a pause. + +01:33:12.240 --> 01:33:14.840 +It'll just be this fluid sort of thing. + +01:33:14.840 --> 01:33:20.960 +And I'm like, man, if you could bottle that, uh, you know, because do it, what you're saying, + +01:33:20.960 --> 01:33:27.640 +doing, uh, you're on camera, doing a video thing, speaking, managing your thoughts, you + +01:33:27.640 --> 01:33:32.120 +know, keeping your context, it's, uh, super hard, I think. + +01:33:32.120 --> 01:33:37.120 +And, uh, when you see somebody who has that, like Steve Jobs, you know, he would practice + +01:33:37.120 --> 01:33:46.240 +I guess, but he had that ability that he could communicate anything, uh, beautifully. + +01:33:46.240 --> 01:33:47.820 +That's an art. + +01:33:47.820 --> 01:33:48.820 +Maybe not. + +01:33:48.820 --> 01:33:51.240 +Maybe it's just a personality trait. + +01:33:51.240 --> 01:33:56.360 +It's a, yeah, I don't, I don't think you can train, you can definitely improve, but I don't + +01:33:56.360 --> 01:34:02.360 +think you can train people if you're not born with that kind of silver tongue. + +01:34:02.360 --> 01:34:03.360 +Yeah. + +01:34:03.360 --> 01:34:04.360 +Right. + +01:34:04.360 --> 01:34:07.480 +And maybe it has to do with not being conscious of things. + +01:34:07.480 --> 01:34:13.520 +I think a lot of times it has, it's, you've never really thought about what, about what + +01:34:13.520 --> 01:34:19.000 +happens if you mess up or something just hasn't, you're blessed to not be able to worry about + +01:34:19.000 --> 01:34:20.000 +certain things. + +01:34:20.000 --> 01:34:21.000 +Yeah, that's true. + +01:34:21.000 --> 01:34:27.800 +That's why you see all the technical people that struggle, right, is, uh, but he's, you + +01:34:27.800 --> 01:34:29.800 +know, he has that too. + +01:34:29.800 --> 01:34:32.220 +He'll be very self-critical at times and stuff. + +01:34:32.220 --> 01:34:37.320 +But I think when, you know, like all of us, I mean, if I start out, I may be thinking + +01:34:37.320 --> 01:34:43.760 +about a bunch of things, but once I'm into it, you can see, you know, you sort of relax + +01:34:43.760 --> 01:34:50.040 +and you're just focused on that and all those other things kind of fade away, right? + +01:34:50.040 --> 01:34:51.320 +You can get into that zone. + +01:34:51.320 --> 01:34:52.600 +It's there for all of us. + +01:34:52.600 --> 01:34:59.640 +Well, as you become competent in things, the technology more and more disappears because + +01:34:59.640 --> 01:35:05.800 +I don't, as Emacs users, we don't think about what keyboards we, our touch typing is generally + +01:35:05.800 --> 01:35:11.200 +at another level because we split the windows without ever thinking about it. + +01:35:11.200 --> 01:35:12.200 +Muscle memory. + +01:35:12.200 --> 01:35:13.200 +Yeah. + +01:35:13.200 --> 01:35:14.600 +And that's what I'm saying. + +01:35:14.600 --> 01:35:19.680 +It's like, use that for like the value add and then, you know, literally have your muscles + +01:35:19.680 --> 01:35:26.280 +almost take care of the stuff that's silly, like, you know, opening a directory when it's + +01:35:26.280 --> 01:35:29.840 +part of a path, colon, separated, set of things. + +01:35:29.840 --> 01:35:31.080 +I don't want to think about that. + +01:35:31.080 --> 01:35:33.320 +I just want to point and go. + +01:35:33.320 --> 01:35:38.760 +And I don't want to know what the key binding is or any of that kind of stuff, so that we're + +01:35:38.760 --> 01:35:44.800 +definitely trying to like push it down to your unconscious and then see how far we can + +01:35:44.800 --> 01:35:49.120 +take that, you know, like what, how can you fly? + +01:35:49.120 --> 01:35:55.960 +Uh, I, you know, people sometimes have said there's some magic or that's why I mentioned + +01:35:55.960 --> 01:35:59.200 +that term today, but I think that's an important concept. + +01:35:59.200 --> 01:36:06.360 +You know, if it, if it seems like magic, then you've probably got it down to the right level + +01:36:06.360 --> 01:36:12.640 +that people don't have to think about it anymore and they're just, it's in their subconscious + +01:36:12.640 --> 01:36:18.120 +and they can move on to more interesting things, which is sort of why we build software in + +01:36:18.120 --> 01:36:19.120 +the first place. + +01:36:19.120 --> 01:36:20.120 +I think, right. + +01:36:20.120 --> 01:36:26.680 +It's to automate the mundane and let us keep adding value at another level. + +01:36:26.680 --> 01:36:27.680 +Yeah. + +01:36:27.680 --> 01:36:30.640 +Although it's very hard to remember that sometimes. + +01:36:30.640 --> 01:36:31.640 +Right. + +01:36:31.640 --> 01:36:36.560 +When you're, when you're saying, Oh, move this pixel over here. + +01:36:36.560 --> 01:36:37.560 +Right? + +01:36:37.560 --> 01:36:38.560 +Yeah. + +01:36:38.560 --> 01:36:43.840 +Like you were saying about front end development and how hard it can be sometimes that all + +01:36:43.840 --> 01:36:50.040 +the business people want to put their two cents in, it has to be, it has to be making + +01:36:50.040 --> 01:36:52.040 +somebody money at some point. + +01:36:52.040 --> 01:36:53.040 +Yeah. + +01:36:53.040 --> 01:36:59.160 +It's helpful, helpful when it does, but you know, not all you can build. + +01:36:59.160 --> 01:37:03.780 +You can spend a lot of money on things and they, I mean, look at, uh, look at what's + +01:37:03.780 --> 01:37:09.680 +happening to the tech companies now after billions of dollars invested and they're just + +01:37:09.680 --> 01:37:18.120 +throwing away thousands of people and all their knowledge bases and yeah, it's, it's + +01:37:18.120 --> 01:37:19.120 +competitive. + +01:37:19.120 --> 01:37:25.280 +I mean, you know, it's like, we don't need a thousand task management, commercial tools, + +01:37:25.280 --> 01:37:26.280 +right? + +01:37:26.280 --> 01:37:27.640 +Project management tools. + +01:37:27.640 --> 01:37:29.920 +So the market will shake out. + +01:37:29.920 --> 01:37:32.220 +There'll be three big ones maybe. + +01:37:32.220 --> 01:37:36.380 +And then everybody else is, if they exist, they're losing money. + +01:37:36.380 --> 01:37:40.980 +So what, you know, so are you going to be one of those three? + +01:37:40.980 --> 01:37:47.200 +That's that's the problem is that there's not enough room left for a lot of the things + +01:37:47.200 --> 01:37:49.200 +that people are trying to do. + +01:37:49.200 --> 01:37:51.680 +You talked about advancing things. + +01:37:51.680 --> 01:37:55.000 +It's like stuff like hyperbole or this mother of all demos. + +01:37:55.000 --> 01:38:01.800 +It's like sometimes we don't always have to move forward because all this mother of all + +01:38:01.800 --> 01:38:08.680 +demos is in a lot of ways, way ahead of anything we have now. + +01:38:08.680 --> 01:38:16.180 +And seems like it's ahead of hyperbole in a lot of ways and well, I've talked to a lot + +01:38:16.180 --> 01:38:20.520 +of non-technical people and they always say, you know, the problem I have is technology + +01:38:20.520 --> 01:38:21.520 +moves so fast. + +01:38:21.520 --> 01:38:22.520 +I can't keep up. + +01:38:22.520 --> 01:38:31.120 +And I say, well, actually in thinking about it over decades now that I've aged, uh, I + +01:38:31.120 --> 01:38:33.980 +see it as cycles much more, right? + +01:38:33.980 --> 01:38:40.000 +And like a sine wave that, uh, first of all, we, we do lose knowledge. + +01:38:40.000 --> 01:38:42.280 +We don't have a good way of capturing it. + +01:38:42.280 --> 01:38:47.180 +And I mean, I literally knew something about Engelbart's work and it was over a decade + +01:38:47.180 --> 01:38:53.140 +later that I rediscovered it and, and then got in touch and interacted with him. + +01:38:53.140 --> 01:38:58.480 +So, so we're definitely like forgetting about the past and get a new generation in. + +01:38:58.480 --> 01:39:00.380 +They don't know the lessons. + +01:39:00.380 --> 01:39:01.900 +They screwed things up. + +01:39:01.900 --> 01:39:06.720 +And eventually we rediscover that somebody already solved this and we can go and use + +01:39:06.720 --> 01:39:07.720 +it again. + +01:39:07.720 --> 01:39:11.800 +And then we start building on that and then the war happens and it gets destroyed. + +01:39:11.800 --> 01:39:15.080 +And then we got, so, so you actually get a lot of time, right? + +01:39:15.080 --> 01:39:16.680 +Like ethernet, right? + +01:39:16.680 --> 01:39:23.340 +To the masses from when it was invented to when it got deployed, uh, you know, hypertext. + +01:39:23.340 --> 01:39:30.880 +So let's say if Engelbart was showing it in 1968 and before that Ted Nelson was opining + +01:39:30.880 --> 01:39:37.640 +about it a ton, uh, so 1991 or two is when we got the web. + +01:39:37.640 --> 01:39:40.840 +So 25 years at least. + +01:39:40.840 --> 01:39:42.440 +And I think that's sort of cycles. + +01:39:42.440 --> 01:39:47.680 +I don't think there's a lot of technology cycles that are less than 10 years, uh, but + +01:39:47.680 --> 01:39:56.600 +you often see that the 10 to 15 to 20 year cycles from research to, you know, broad consumer + +01:39:56.600 --> 01:40:01.760 +adoption, uh, you've got about that amount of time to deal with it. + +01:40:01.760 --> 01:40:09.320 +So if you can have a research team that stays 10 years ahead of like what's out in the marketplace, + +01:40:09.320 --> 01:40:11.960 +you have lots of time to develop your product. + +01:40:11.960 --> 01:40:14.400 +It's not this, it's gotta be out yesterday. + +01:40:14.400 --> 01:40:17.480 +You only have two months or the market's going to close up. + +01:40:17.480 --> 01:40:23.580 +But it's very difficult to convince business people of that because there's so much chatter + +01:40:23.580 --> 01:40:29.420 +on the business side and people will show their, their mockups and their demos very + +01:40:29.420 --> 01:40:30.420 +broadly. + +01:40:30.420 --> 01:40:34.120 +And then they're like, they've got it, you know, it's like, what have they got? + +01:40:34.120 --> 01:40:36.000 +Well that I saw it, I saw it. + +01:40:36.000 --> 01:40:37.000 +Yeah. + +01:40:37.000 --> 01:40:41.120 +And what's behind that thing that you saw, you know, they just whipped it up right over + +01:40:41.120 --> 01:40:46.400 +a weekend and there's nothing, there's no database, there's no, uh, there's no user + +01:40:46.400 --> 01:40:47.400 +validation. + +01:40:47.400 --> 01:40:53.880 +So you kind of have to contend with that, which is probably why a lot of Emacs users + +01:40:53.880 --> 01:40:59.400 +are in academia and they don't want to deal with those issues. + +01:40:59.400 --> 01:41:00.400 +Yeah. + +01:41:00.400 --> 01:41:07.000 +It's kind of like also advanced by doing the, uh, doubling down on the stuff that works + +01:41:07.000 --> 01:41:12.160 +like for instance, uh, cars like, Oh look, the car's better. + +01:41:12.160 --> 01:41:14.440 +It's got a higher Bluetooth version. + +01:41:14.440 --> 01:41:15.540 +See it's better. + +01:41:15.540 --> 01:41:17.640 +But what about the gas mileage? + +01:41:17.640 --> 01:41:19.200 +How long does the motor last? + +01:41:19.200 --> 01:41:22.520 +But it's got a higher Bluetooth version. + +01:41:22.520 --> 01:41:28.580 +See it's, it's more technology and then, then the job is to create the need and the desire + +01:41:28.580 --> 01:41:30.600 +for that higher Bluetooth version. + +01:41:30.600 --> 01:41:31.600 +Right. + +01:41:31.600 --> 01:41:32.600 +Yeah. + +01:41:32.600 --> 01:41:38.480 +Well, haven't you bought like the same brand of car, even the same model, like a couple + +01:41:38.480 --> 01:41:41.760 +of years later and you're like, what did I just buy? + +01:41:41.760 --> 01:41:45.320 +I really loved the one from five years before. + +01:41:45.320 --> 01:41:51.440 +My, my first job out of school was in Motorola, which had a great engineering culture. + +01:41:51.440 --> 01:41:59.560 +But there came a time when, uh, they, they brought in automotive designers to shape, + +01:41:59.560 --> 01:42:02.720 +uh, the shape, the physical shape of the products. + +01:42:02.720 --> 01:42:08.600 +And we had some very sexy, beautiful looking things that those guys left the company and + +01:42:08.600 --> 01:42:13.560 +they hired a bunch of people pretty much out of college, you know, who had studied the + +01:42:13.560 --> 01:42:14.680 +field. + +01:42:14.680 --> 01:42:21.080 +And all of a sudden we had like these blocky kinds of things that like, nobody would want + +01:42:21.080 --> 01:42:26.440 +to hold in their hand and, uh, and I'm like, what, wait, what just happened? + +01:42:26.440 --> 01:42:29.080 +Didn't they document any of their work or anything? + +01:42:29.080 --> 01:42:35.220 +But that's, you know, we really do need the knowledge base inside people's head because + +01:42:35.220 --> 01:42:38.600 +we're nowhere near documenting it well enough. + +01:42:38.600 --> 01:42:44.320 +Uh, the design principles that people use, you know, you look at, you can see it in Apple + +01:42:44.320 --> 01:42:46.220 +a little bit too, right? + +01:42:46.220 --> 01:42:51.640 +Since Johnny Ive left, it's like, yeah, where's, where's the next design language? + +01:42:51.640 --> 01:42:58.320 +I just got an update to my iPhone and I noticed they changed some of the icons, but they just + +01:42:58.320 --> 01:43:06.600 +made like the time on my home screen, like three times as thick, the font width, you + +01:43:06.600 --> 01:43:12.400 +know, it's like ultra bold and I'm like, yeah, that it doesn't really look right. + +01:43:12.400 --> 01:43:18.440 +It just looks like it's in my face and I'm like, well, somebody, you know, got that through + +01:43:18.440 --> 01:43:24.760 +whatever they're running there now, but I've would have tossed that on the, you know, the + +01:43:24.760 --> 01:43:25.760 +bad idea pile. + +01:43:25.760 --> 01:43:26.760 +I think. + +01:43:26.760 --> 01:43:27.760 +Huh? + +01:43:27.760 --> 01:43:34.000 +It seems like a bit of an obnoxious change to make it for something that is so supposed + +01:43:34.000 --> 01:43:37.520 +to be, it's when you want it, you really want it and when you don't want it, it's supposed + +01:43:37.520 --> 01:43:38.520 +to be unobtrusive. + +01:43:38.520 --> 01:43:42.800 +I don't know that way. + +01:43:42.800 --> 01:43:43.800 +Yeah. + +01:43:43.800 --> 01:43:44.800 +Oh. + +01:43:44.800 --> 01:43:45.800 +Yeah. + +01:43:45.800 --> 01:43:54.480 +I wonder if that uses more power since it's, if it's white using all your, all your pixels + +01:43:54.480 --> 01:43:55.480 +there. + +01:43:55.480 --> 01:43:57.080 +Oh yeah. + +01:43:57.080 --> 01:43:59.280 +So I guess we have time in the end. + +01:43:59.280 --> 01:44:05.080 +I mean that like, you know, we all have these crazy deadlines, but in the end to actually + +01:44:05.080 --> 01:44:10.480 +move the needle forward, it's going to take a while and there's going to be certain steps + +01:44:10.480 --> 01:44:11.480 +backwards. + +01:44:11.480 --> 01:44:16.800 +And I think Emacs is sort of our shared community knowledge base, right? + +01:44:16.800 --> 01:44:21.140 +As long as we have these libraries, even if they get a little out of date, we can update + +01:44:21.140 --> 01:44:24.320 +them to the next generation when we're ready. + +01:44:24.320 --> 01:44:27.440 +And that's something that a lot of people don't have, right? + +01:44:27.440 --> 01:44:33.140 +They're just going from application to applications and they're losing all the core capabilities + +01:44:33.140 --> 01:44:36.760 +every time they transition. + +01:44:36.760 --> 01:44:41.080 +Well I think that's the, like when I was talking about the themes and the modularity and just + +01:44:41.080 --> 01:44:46.840 +using all that stuff is, if you can use all that stuff and especially if you can use a + +01:44:46.840 --> 01:44:53.380 +whole bunch of really old code, that's, that's the tricky question of how do you use as many + +01:44:53.380 --> 01:45:00.600 +things as you, as possible at once without everything clobbering each other? + +01:45:00.600 --> 01:45:13.060 +Well, I learned this lesson, don't, don't add a date created entry to your code files + +01:45:13.060 --> 01:45:21.440 +if you don't also include a last modified date, because we had 1991 entries in hyperbole + +01:45:21.440 --> 01:45:26.640 +files and people would download it and they look and they're like, this thing is ancient. + +01:45:26.640 --> 01:45:33.360 +I'm not going to use this because we had pulled out the modified because you need certain + +01:45:33.360 --> 01:45:37.400 +code to update the modified automatically when you save it. + +01:45:37.400 --> 01:45:41.240 +And you know, not every developer would necessarily have that. + +01:45:41.240 --> 01:45:46.680 +So, but when that started happening, I said, we'll put this back because they didn't want + +01:45:46.680 --> 01:45:54.560 +to get rid of the create date and lose that, that you sort of know how far back it goes. + +01:45:54.560 --> 01:46:02.520 +Yeah, yeah, I've, I've always gotten a little, I always find it interesting when I see working + +01:46:02.520 --> 01:46:06.400 +with something and I, and I realized that it hasn't been touched for, or it appears + +01:46:06.400 --> 01:46:12.040 +not to have been touched for a couple of decades and I think, oh my gosh, either I, if I found + +01:46:12.040 --> 01:46:15.080 +a problem, I'm thinking, oh, I, this can't be right. + +01:46:15.080 --> 01:46:18.080 +I must be missing something here because there's no way that this problem could have existed + +01:46:18.080 --> 01:46:22.680 +for 20 years and no one ever noticed it or cared about it. + +01:46:22.680 --> 01:46:24.120 +And sometimes I'm wrong. + +01:46:24.120 --> 01:46:25.120 +Sometimes I'm right. + +01:46:25.120 --> 01:46:26.120 +It's not a problem. + +01:46:26.120 --> 01:46:32.200 +Well, you have this quote for Emacs, it's like Emacs is you want editors, like you want + +01:46:32.200 --> 01:46:33.200 +wine. + +01:46:33.200 --> 01:46:34.200 +I think it's wine. + +01:46:34.200 --> 01:46:41.040 +It's like, the older it is, the better it gets because you get that composite of all + +01:46:41.040 --> 01:46:50.080 +these philosophies, workflows, workflows and forming packages and if you're going to be + +01:46:50.080 --> 01:46:57.600 +on the cutting edge, 95% of the ideas will probably not be good, 5% of the ideas will + +01:46:57.600 --> 01:47:05.280 +be good, but versus looking at the older stuff where a lot more of the ideas will be good + +01:47:05.280 --> 01:47:08.460 +and you'll get all like matured packages. + +01:47:08.460 --> 01:47:13.160 +Like you were talking about how you have all the window control with the Mac stuff. + +01:47:13.160 --> 01:47:19.000 +You just get the stuff, uh, Streamlint. + +01:47:19.000 --> 01:47:25.760 +And maybe like, you know, if we look at Richard Stallman's Emacs environment and maybe yours, + +01:47:25.760 --> 01:47:30.200 +John, you'd like to keep it simple, like you said, not beaming it because you've gotten, + +01:47:30.200 --> 01:47:32.920 +you know, to a steady state that works well for you. + +01:47:32.920 --> 01:47:40.440 +I visited Xerox park years ago and when I went around looking at all of the workstations, + +01:47:40.440 --> 01:47:48.300 +they were all using like 10 year old window managers, just like the oldest look and feel. + +01:47:48.300 --> 01:47:50.940 +Nobody was touching anything, right? + +01:47:50.940 --> 01:47:59.280 +Because they were creating the future, they thought, and they really didn't care about + +01:47:59.280 --> 01:48:02.760 +keeping up to date on, on their packages. + +01:48:02.760 --> 01:48:04.840 +They had to write their own stuff. + +01:48:04.840 --> 01:48:10.840 +So I thought that was kind of fascinating to learn that a lot of, you know, high level + +01:48:10.840 --> 01:48:18.120 +thinkers don't necessarily treat their tooling environments the same way. + +01:48:18.120 --> 01:48:21.240 +At least not, not every day. + +01:48:21.240 --> 01:48:30.520 +They probably say finish whatever they're doing or, you know, reach five years or something. + +01:48:30.520 --> 01:48:35.120 +That's what I'm sticking with this one Subaru car and I've had a bunch of other things, + +01:48:35.120 --> 01:48:39.840 +but this one has an engine that they don't make anymore, a V6. + +01:48:39.840 --> 01:48:45.920 +Now they're sort of like turboizing things to get the equivalent power and it doesn't + +01:48:45.920 --> 01:48:47.120 +perform the same way. + +01:48:47.120 --> 01:48:52.880 +So I'm like, well, I got to wait until the bottom of this car rusts out before I replace + +01:48:52.880 --> 01:48:56.600 +it because I like so much about it. + +01:48:56.600 --> 01:49:04.440 +Even though I'm missing some of the new technology, I just don't want to change it out. + +01:49:04.440 --> 01:49:12.040 +One of the things I like a lot about how Emacs looks as it looks to me, really nice in a + +01:49:12.040 --> 01:49:20.120 +real bullshit, ultra functional way where it's like, I like that it doesn't do the smooth + +01:49:20.120 --> 01:49:25.880 +scrolling that it scrolls line by line by line, even though that's not as modern and + +01:49:25.880 --> 01:49:34.960 +hip because it's more down or down to earth functional, I don't know, like a more engineering + +01:49:34.960 --> 01:49:40.160 +or something that's just not as flashy normal way. + +01:49:40.160 --> 01:49:44.920 +Yeah, no, I agree. + +01:49:44.920 --> 01:49:52.240 +And it affects, it really affects how it feels like you're somewhere in your brain, you're + +01:49:52.240 --> 01:49:55.480 +some kind of object that your brain thinks that you're dealing with, even if it's not + +01:49:55.480 --> 01:49:59.840 +really an object, you know, part of your brain just has to really to the world that way. + +01:49:59.840 --> 01:50:04.200 +And I think that's just one of those things is that if you can, your brain can actually + +01:50:04.200 --> 01:50:09.640 +feel like you're, you can almost feel each line like passing past, you're going past + +01:50:09.640 --> 01:50:12.640 +your scrolling action. + +01:50:12.640 --> 01:50:18.840 +Your brain is like, you keep helps keep you oriented, like you can, it's like, it's your + +01:50:18.840 --> 01:50:24.200 +visual experience creates a tactile experience for you. + +01:50:24.200 --> 01:50:31.200 +I think that's one of the the VR problems that the industry is suffering from is that + +01:50:31.200 --> 01:50:40.160 +it's so easy to program things that will entirely screw up somebody's, what do you call this + +01:50:40.160 --> 01:50:45.760 +subconscious parts of our, our nerve nervous systems. + +01:50:45.760 --> 01:50:50.800 +So right, I mean, they can scare the hell out of people, they can make them sense something + +01:50:50.800 --> 01:50:52.720 +that's not there. + +01:50:52.720 --> 01:50:58.680 +And it's like, you know, it's just, we're not ready for that in so many ways, and it's + +01:50:58.680 --> 01:51:00.280 +just too easy. + +01:51:00.280 --> 01:51:09.060 +And so if you can't depend that like physics will keep you from like flying off the earth, + +01:51:09.060 --> 01:51:12.400 +you know, anything can happen. + +01:51:12.400 --> 01:51:18.120 +I don't know how many people will want to really, you know, experience that for any + +01:51:18.120 --> 01:51:20.400 +continual amount of time. + +01:51:20.400 --> 01:51:24.280 +The other thing you don't get is like, you don't have to worry about how much time it + +01:51:24.280 --> 01:51:25.280 +does a scroll. + +01:51:25.280 --> 01:51:27.760 +So it's going to be a lot more performant, faster. + +01:51:27.760 --> 01:51:32.720 +I love turn, as a counter example, I love turning off the animations on my phone because + +01:51:32.720 --> 01:51:38.640 +it makes it snappier, faster, and I don't want to just insert animations on my phone + +01:51:38.640 --> 01:51:43.920 +just to slow it down and you open up your contacts, it's like, I want to make, I turn + +01:51:43.920 --> 01:51:51.240 +the DPI on my Android phone down, down, so that I can see more contacts at once. + +01:51:51.240 --> 01:51:59.600 +So I don't have to scroll as many times and I want, I make the home screen have more icons + +01:51:59.600 --> 01:52:01.680 +on it because I'm accurate with my thumbs. + +01:52:01.680 --> 01:52:09.520 +So I want to see as many icons as I can so I don't, so I can much faster see and click + +01:52:09.520 --> 01:52:12.960 +the right one I want to, I scroll less pages. + +01:52:12.960 --> 01:52:19.920 +Yeah, and you probably have a hard time making it do what you want, I'm guessing too, because + +01:52:19.920 --> 01:52:29.780 +it's just the one area where, for phones especially, it's just one area where you are not respected. + +01:52:29.780 --> 01:52:34.920 +You're going to take whatever experience they figured was the right one that week and force + +01:52:34.920 --> 01:52:39.160 +you to eat it, like a head of cattle. + +01:52:39.160 --> 01:52:44.480 +You're eating that experience like it's feed and it'll change whenever you want, whenever + +01:52:44.480 --> 01:52:49.880 +they want, and it's going to, I don't know if you feel the same way. + +01:52:49.880 --> 01:52:55.040 +My first phone was a Windows mobile phone that the person was selling because they wanted + +01:52:55.040 --> 01:53:05.240 +an Android phone and I've always been on custom ROMs, although lately I've been getting annoyed + +01:53:05.240 --> 01:53:11.760 +about it because they've been losing all the, let's see, I remember reading this blog post + +01:53:11.760 --> 01:53:16.320 +about somebody liking custom ROMs and they were saying that Android was becoming more + +01:53:16.320 --> 01:53:22.280 +restrictive because they would be putting an image through the USB port so you could + +01:53:22.280 --> 01:53:29.320 +have a Linux ISO connected to your computer through your phone and they wanted SE Linux + +01:53:29.320 --> 01:53:34.600 +but they'd have to compile the kernel in a different way and have the patch and all that + +01:53:34.600 --> 01:53:42.680 +type of stuff is just becoming more and more of a nightmare and you're not able to do that. + +01:53:42.680 --> 01:53:46.560 +Right now I'm messing with a Linux phone. + +01:53:46.560 --> 01:53:59.440 +Do you guys agree with Stallman and GNU thinking for FFF philosophy in general or sort of like + +01:53:59.440 --> 01:54:03.600 +you're more middle of the road about it? + +01:54:03.600 --> 01:54:11.880 +I mean I personally, I think there's a need for that philosophy. + +01:54:11.880 --> 01:54:22.440 +I don't, at least now, I don't personally 100% dedicate my beliefs and actions to it. + +01:54:22.440 --> 01:54:32.720 +I'm not certain about anything to be honest but I'm not ready to say that everything outside + +01:54:32.720 --> 01:54:41.280 +of it has no place for me or has no place at all but I think about the commonalities. + +01:54:41.280 --> 01:54:47.600 +I think that there's good that will come, there's a truth to it and there's a good that + +01:54:47.600 --> 01:54:56.360 +it will do and there's certainly no reason to not offer. + +01:54:56.360 --> 01:54:59.720 +You don't have to agree that it's the only way to agree that there's something good about + +01:54:59.720 --> 01:55:00.720 +it. + +01:55:00.720 --> 01:55:04.760 +That's my point of view. + +01:55:04.760 --> 01:55:11.760 +I think that you have the philosophy, like the Emacs is a great example of an ecosystem + +01:55:11.760 --> 01:55:17.080 +informed by that philosophy and it's an artifact of that philosophy because you look at an + +01:55:17.080 --> 01:55:22.840 +Emacs package, chances are if you look at any of the Zettelkasten systems, they're not + +01:55:22.840 --> 01:55:29.520 +going to be trying to, it's not going to be, let's see, you have org.roam. + +01:55:29.520 --> 01:55:36.240 +It's not Roam because Roam requires you to pay for a Sass subscription and it's only + +01:55:36.240 --> 01:55:40.520 +accessible online and it's like any Emacs package you use, generally you're going to + +01:55:40.520 --> 01:55:46.120 +have all the data on your local machine and it's... + +01:55:46.120 --> 01:55:50.560 +Is that, I think there was something called Roam, is that Roam research, is that what + +01:55:50.560 --> 01:55:51.560 +you're talking about? + +01:55:51.560 --> 01:55:52.560 +Yes. + +01:55:52.560 --> 01:55:53.560 +That's right. + +01:55:53.560 --> 01:55:55.560 +I thought Roam was just a verb. + +01:55:55.560 --> 01:55:56.560 +Sorry. + +01:55:56.560 --> 01:56:03.480 +They built the interface to be like that, yeah. + +01:56:03.480 --> 01:56:05.000 +It's interesting, right? + +01:56:05.000 --> 01:56:10.080 +Because yeah, you hear all these terms and you don't always know. + +01:56:10.080 --> 01:56:18.400 +Like a lot of people are like, hyperbole has adopted this org thing because they don't + +01:56:18.400 --> 01:56:27.920 +know it existed before org because the org obviously has a much broader reach right now. + +01:56:27.920 --> 01:56:35.400 +So yeah, understanding that history and that Emacs is tied into the FSF philosophy, there's + +01:56:35.400 --> 01:56:42.280 +probably a fraction of the Emacs users that even are very aware of that. + +01:56:42.280 --> 01:56:51.840 +But I think, yeah, Stallman, he's seen a lot and he's somebody who does think a lot from + +01:56:51.840 --> 01:56:55.720 +first principles and is very logical. + +01:56:55.720 --> 01:57:02.000 +He doesn't necessarily want to deal with parts of the world that exist. + +01:57:02.000 --> 01:57:09.440 +But if he makes a statement, it's usually fairly true. + +01:57:09.440 --> 01:57:17.520 +So the fact that he's concluded this and been very definitive about it for decades tells + +01:57:17.520 --> 01:57:22.200 +you that there's some truth in there that you should look into. + +01:57:22.200 --> 01:57:23.200 +Yeah. + +01:57:23.200 --> 01:57:30.120 +I think if I think of like today's earlier session where some of the questions were exposed + +01:57:30.120 --> 01:57:35.920 +some tension there and I think one of the reasons why we see that tension is because + +01:57:35.920 --> 01:57:43.040 +of the success and the kind of the more broad appeal of that org mode has brought Emacs + +01:57:43.040 --> 01:57:46.040 +and it's a healthy sign. + +01:57:46.040 --> 01:57:52.120 +It's a sign that there's people coming into the community who may not be familiar with + +01:57:52.120 --> 01:57:57.000 +the origins, the philosophical origins of the tools that they're using. + +01:57:57.000 --> 01:58:01.640 +I also think that you have a lot of the people who are interested in Emacs are probably interested + +01:58:01.640 --> 01:58:04.640 +in the Free Software Foundation. + +01:58:04.640 --> 01:58:09.080 +So it's something like the philosophy. + +01:58:09.080 --> 01:58:15.800 +I mean, maybe, but right, they could just be interested in what, which is what Stallman + +01:58:15.800 --> 01:58:17.240 +talks about too a lot. + +01:58:17.240 --> 01:58:22.080 +It's like you may just want the functionality that some software has and you may not care + +01:58:22.080 --> 01:58:26.240 +about free licensing, but you should. + +01:58:26.240 --> 01:58:32.080 +And here's why, you know, so yeah, but you start using all the, you start using all the + +01:58:32.080 --> 01:58:37.520 +packages and then the philosophy, then it kicks you into the philosophy from the reverse + +01:58:37.520 --> 01:58:39.800 +direction. + +01:58:39.800 --> 01:58:45.160 +And so I think as if you, if you start resonating with that philosophy, Emacs is the place to + +01:58:45.160 --> 01:58:46.160 +be. + +01:58:46.160 --> 01:58:55.760 +So we'll all be slanted towards wanting the GPL license or at least the BSD license because + +01:58:55.760 --> 01:59:05.920 +it's the place that it's the place in philosophy that exploits all those advantages practically. + +01:59:05.920 --> 01:59:12.600 +It's interesting because maybe, I don't know how many years ago, 10, 15 years ago, there + +01:59:12.600 --> 01:59:18.040 +was that big debate about open source and versus free software. + +01:59:18.040 --> 01:59:24.840 +And you know, it was just raging and it doesn't even seem like it's a topic anymore. + +01:59:24.840 --> 01:59:29.680 +It's like the GPL has done very well. + +01:59:29.680 --> 01:59:38.680 +Other licenses have too, but the model of software being free and open is established + +01:59:38.680 --> 01:59:45.780 +at all levels in the economy and in the technical world. + +01:59:45.780 --> 01:59:54.920 +So you know, Stallman is sort of playing the long game and what did they say, like the + +01:59:54.920 --> 02:00:03.120 +justice system bends towards right, but it's over a really long period of time or something. + +02:00:03.120 --> 02:00:04.760 +Eventually it gets to the right answer. + +02:00:04.760 --> 02:00:08.480 +I think it's sort of like that, you know, it's that we're going to have all these ups + +02:00:08.480 --> 02:00:15.760 +and downs, but eventually you'll have dictators and such, but eventually freedom will win. + +02:00:15.760 --> 02:00:22.440 +People win out over, you know, being crushed under the boot like the Russians are today. + +02:00:22.440 --> 02:00:28.120 +You know, what comes out of their society after they get crushed by the Ukrainians, + +02:00:28.120 --> 02:00:36.920 +I think will be hopefully for them, you know, because they had such great intellectual capacity, + +02:00:36.920 --> 02:00:41.260 +but they've had this broken culture for over a hundred years. + +02:00:41.260 --> 02:00:46.460 +And so if you don't, going back to Engelbart again, if you just evolve your technology + +02:00:46.460 --> 02:00:52.920 +without your process, your culture, you're left with something that may not work well + +02:00:52.920 --> 02:00:54.600 +at all for you. + +02:00:54.600 --> 02:00:57.640 +You have to take stock every now and then you need that time. + +02:00:57.640 --> 02:01:00.960 +And that's another point that I wanted to make in my talk, but I just couldn't find + +02:01:00.960 --> 02:01:10.600 +room for it is that if you know that you're going to make that time in the future, then + +02:01:10.600 --> 02:01:14.480 +you can focus on the present. + +02:01:14.480 --> 02:01:19.040 +But if you never make that time, and I don't mean, you know, it could apply to anything, + +02:01:19.040 --> 02:01:27.880 +but whether it's societal or technical, but don't stop and really think about what you + +02:01:27.880 --> 02:01:36.160 +are, you know, am I doing what I represent or are my actions representing myself and + +02:01:36.160 --> 02:01:40.440 +my needs and my goals? + +02:01:40.440 --> 02:01:47.240 +Every person, every organization of people, every society should really think about that. + +02:01:47.240 --> 02:01:54.500 +And it seems like it just, there's certain ways that society can grow where it becomes, + +02:01:54.500 --> 02:01:58.560 +you can't think about that because when you start to think about that is when you become + +02:01:58.560 --> 02:02:07.080 +vulnerable or you, I don't know, I'm not a philosopher, I'm not an international scholar. + +02:02:07.080 --> 02:02:14.800 +Does ZMAX rank up there on your hierarchy of needs, it's like number two or take that + +02:02:14.800 --> 02:02:19.960 +away from me and my survival will be jeopardized. + +02:02:19.960 --> 02:02:25.840 +And as much as my digital self is, absolutely, it's probably very close to, I mean, it really + +02:02:25.840 --> 02:02:33.320 +did, I think, save me from destruction in terms of organization personally. + +02:02:33.320 --> 02:02:38.680 +I think it was, what was it, it must have been 2008 or so, I was just so disorganized + +02:02:38.680 --> 02:02:46.000 +and I was, you know, missing bills and things like that, just because I had a pile of papers + +02:02:46.000 --> 02:02:50.760 +and I said, you know what, I need to be able to take notes, and I was taking notes, but + +02:02:50.760 --> 02:02:56.080 +I had just a bunch of flat text files and I said, I need to be able to collapse my text + +02:02:56.080 --> 02:03:03.000 +and I want to be able to take outline notes and I ended up, sorry, go ahead, I just ended + +02:03:03.000 --> 02:03:08.880 +up finding, I think it was work mode at the time, I think it was still a separate package + +02:03:08.880 --> 02:03:15.880 +and I was like, okay, finally, just this ability to collapse my notes into hierarchical structure + +02:03:15.880 --> 02:03:19.680 +so that I could have one thing, that I could think about multiple, one file, think about + +02:03:19.680 --> 02:03:24.560 +multiple things and collapse them when I didn't need to think about them anymore, and I was + +02:03:24.560 --> 02:03:30.640 +just like, okay, finally, this is the thing that's going to help me stay organized and + +02:03:30.640 --> 02:03:38.800 +from there on out, it worked, so in terms of whatever I am today, you know, I couldn't + +02:03:38.800 --> 02:03:45.920 +undo that anymore, like that's committed to my identity at this point, so yeah, yeah. + +02:03:45.920 --> 02:03:49.800 +That's a great explanation of it, you know. + +02:03:49.800 --> 02:03:56.080 +Have you looked at the ARG narrowing at all, or Emacs narrowing stuff? + +02:03:56.080 --> 02:04:03.720 +Yeah, I do that a lot, it helps me, it helped me focus on writing some of my notes for the + +02:04:03.720 --> 02:04:04.720 +talk. + +02:04:04.720 --> 02:04:12.560 +Yeah, that's very important because you can end up capturing so much, it makes it so easy + +02:04:12.560 --> 02:04:18.360 +to capture and then you one day said, okay, I captured too much, I need to, you know, + +02:04:18.360 --> 02:04:24.000 +that outline, having all those stars and whatever in your outline can be very distracting and + +02:04:24.000 --> 02:04:30.200 +I use very old stuff, so I still have, you know, just regular, a series of asterisks + +02:04:30.200 --> 02:04:39.120 +aligned to my left side, so I have a lot of visual noise in there, but yeah, yeah, I mean, + +02:04:39.120 --> 02:04:46.960 +do you have any special ways that you use it, like in terms of the narrowing or anything? + +02:04:46.960 --> 02:04:56.240 +I like using the VertiCo package because it allows you to set up different commands to + +02:04:56.240 --> 02:05:01.800 +either like be in a buffer or mini buffer or various things like that, so I can choose + +02:05:01.800 --> 02:05:07.920 +how to do that or change that over time. + +02:05:07.920 --> 02:05:14.720 +For me with Emacs, I think that is the most useful about it is I generally like trying + +02:05:14.720 --> 02:05:22.560 +out new things and Emacs is a program that got onto my computer, never left because anytime + +02:05:22.560 --> 02:05:28.220 +I want to try something new, I can just try out the packages or parts of the configs or + +02:05:28.220 --> 02:05:34.220 +variables and I get to try that stuff out, some stuff has stayed, a lot of stuff doesn't + +02:05:34.220 --> 02:05:40.800 +necessarily stay, draw up my files and... + +02:05:40.800 --> 02:05:47.240 +The first time when I'm bringing up a new system is I always like get some micro Emacs + +02:05:47.240 --> 02:05:53.960 +version just so I can edit my config files and then I get the OS stable enough and then + +02:05:53.960 --> 02:06:02.400 +I install a new Emacs and it's like I never used VI, I never learned VI, I was lucky, + +02:06:02.400 --> 02:06:10.640 +I guess, you know, they taught us first year of college we used Emacs, so all these people + +02:06:10.640 --> 02:06:16.640 +I bet they've gone through 7 to 10 editors and I'm like, well, I've gone through versions + +02:06:16.640 --> 02:06:19.800 +of Emacs and that's it. + +02:06:19.800 --> 02:06:26.080 +So it's been a little different and it is, it's crept into my subconscious, you know, + +02:06:26.080 --> 02:06:34.480 +so much so that the talk about getting Emacs, using Emacs to fill in your web form fields + +02:06:34.480 --> 02:06:42.080 +was very interesting to me because years ago I did that, when Sun was popular there was + +02:06:42.080 --> 02:06:49.600 +also Apollo which had a better networking and a better OS and so we were using some + +02:06:49.600 --> 02:06:58.560 +of their workstations and they had every shell and every window had an editing capability, + +02:06:58.560 --> 02:07:05.400 +was essentially an editor field but it was their own editor so I modified it so it was + +02:07:05.400 --> 02:07:12.040 +Emacs and you know everywhere on Apollo and it was a really beautiful environment and + +02:07:12.040 --> 02:07:20.240 +like then HP bought them and killed the OS in favor of HP UX so that went away and I + +02:07:20.240 --> 02:07:25.160 +couldn't use it anymore but we had built a really cool environment on there but that + +02:07:25.160 --> 02:07:31.360 +again, I wouldn't hand over the workstations, I was setting them up for a research team + +02:07:31.360 --> 02:07:36.120 +and I wouldn't hand them over until I had built this environment so that they all had + +02:07:36.120 --> 02:07:40.800 +the consistent editing experience and they wouldn't go off and just do something random + +02:07:40.800 --> 02:07:43.800 +with it. + +02:07:43.800 --> 02:07:48.760 +It's funny how you describe that bootstrap process because the way that I think about + +02:07:48.760 --> 02:07:54.920 +it is that a lot of times you end up, what's the path they talk about is that you need + +02:07:54.920 --> 02:08:02.240 +to learn enough bash to install Python or something like that and that's the joke is + +02:08:02.240 --> 02:08:10.280 +that that's the only amount of bash that you need to know but if you go to the Emacs path, + +02:08:10.280 --> 02:08:12.160 +you might not even need Python. + +02:08:12.160 --> 02:08:15.840 +You mentioned having it installed to edit configs and things like that and edit what + +02:08:15.840 --> 02:08:20.880 +you need to do to get another version of Emacs installed but I could see, I would love, maybe + +02:08:20.880 --> 02:08:27.840 +that'll be my inspiration for next year's talk is to find a way to, yeah, everything, + +02:08:27.840 --> 02:08:31.520 +just use Emacs as a substitute for Python and Ansible. + +02:08:31.520 --> 02:08:37.760 +I could probably use some of the packages that were out there like, what was it, Anthony + +02:08:37.760 --> 02:08:44.320 +or Tropin, Andrew Tropin, he had the RD, the reproducible Emacs, I could look at that and + +02:08:44.320 --> 02:08:45.320 +use that. + +02:08:45.320 --> 02:08:51.880 +It tells me about living through, we're always manipulating JSON now and I'm like, why does + +02:08:51.880 --> 02:08:59.680 +JavaScript have such a crappy format, it could just be S expressions and then we get rid + +02:08:59.680 --> 02:09:08.460 +of all this noise that we have to keep dealing with and it represents the same things but + +02:09:08.460 --> 02:09:13.420 +instead we settled on this crappier thing that's a little closer to the way we would + +02:09:13.420 --> 02:09:21.920 +have done it in C probably and because it is JavaScript's object format and it's like + +02:09:21.920 --> 02:09:28.120 +it's annoying to know and of course you could write a processor so it converts bi-directionally + +02:09:28.120 --> 02:09:30.140 +but nobody will do it. + +02:09:30.140 --> 02:09:37.740 +If you've ever used Lisp to replace your HTML, same sort of thing, you don't have to deal + +02:09:37.740 --> 02:09:43.840 +with your closing tags and you get all the auto editing and it's just like even without + +02:09:43.840 --> 02:09:50.680 +abstracting above any of the tags, just replacing them one for one, it's so much better but + +02:09:50.680 --> 02:09:53.380 +can you get anybody to do it? + +02:09:53.380 --> 02:10:00.040 +You look at Gix and you have the init system, that's written in Guile or scheme and then + +02:10:00.040 --> 02:10:07.680 +you got the cron program, it's mcron, that's written in Guile and you can use the normal + +02:10:07.680 --> 02:10:12.360 +cron syntax for that or a different one where you can do that and you can start labeling + +02:10:12.360 --> 02:10:15.700 +it with like say how many hours I want to do. + +02:10:15.700 --> 02:10:21.320 +I think the example they give in their documentation is like I want it to do the first Wednesday + +02:10:21.320 --> 02:10:28.160 +of every month or you could put if statements in there or a whole bunch of interesting things + +02:10:28.160 --> 02:10:35.400 +like that and it's like their package definitions are in Guile so it's like the whole operating + +02:10:35.400 --> 02:10:37.200 +system is in Guile. + +02:10:37.200 --> 02:10:39.000 +That's what we're trying to do, right? + +02:10:39.000 --> 02:10:46.120 +That was going to be the scripting language for Canoe, was going to be Guile and they + +02:10:46.120 --> 02:10:50.760 +were doing that which again, this is all like from MIT, right? + +02:10:50.760 --> 02:10:57.600 +Stallman's from the MIT AI lab, all this stuff, scheme, it's all evolved from that environment + +02:10:57.600 --> 02:11:03.600 +and they were right, this stuff is pretty good but it's like it's interesting to listen + +02:11:03.600 --> 02:11:11.600 +to him say if we were to update Emacs and allow another language to be the programming + +02:11:11.600 --> 02:11:16.360 +language, it would be scheme. + +02:11:16.360 --> 02:11:24.760 +It's not even on the radar of anybody in the industry to do that but he doesn't care. + +02:11:24.760 --> 02:11:32.880 +He's like he's the Mekana class, he sees the value, he sees what's technically good. + +02:11:32.880 --> 02:11:39.000 +Have you ever read any of his compiler code or something, I mean read his Emacs code, + +02:11:39.000 --> 02:11:48.120 +it's so clean, it's so beautiful, it's not like super abstract but it's like even the + +02:11:48.120 --> 02:11:52.580 +C code to implement the list of primitives, I mean now you don't know what he wrote versus + +02:11:52.580 --> 02:11:58.160 +somebody else and you can see in Emacs that it's gone away from the sort of stuff you + +02:11:58.160 --> 02:12:06.360 +used to write but his mind is just like so clear when doing things like that, that like + +02:12:06.360 --> 02:12:12.440 +you can learn an infinite number of things from kind of looking at the way he structures + +02:12:12.440 --> 02:12:13.440 +stuff. + +02:12:13.440 --> 02:12:17.920 +I'm going to have to, I'm making a note for myself to go seek that out specifically because + +02:12:17.920 --> 02:12:22.360 +I don't think I've ever, I've seen some of the code that he's written, I've just never + +02:12:22.360 --> 02:12:30.880 +seen it in that context of specifically going in to try to get a sense of what it is. + +02:12:30.880 --> 02:12:37.340 +I mean when you read, like read the Emacs manual, right, I mean at least through version + +02:12:37.340 --> 02:12:48.120 +19 he wrote that, right, and it's like step by step he takes you from what a point is + +02:12:48.120 --> 02:12:55.800 +to marks to windows and it's just, it's very thoughtful and you're like well he's been + +02:12:55.800 --> 02:13:00.120 +embedded in this for years and like this is second nature to him, he doesn't even think + +02:13:00.120 --> 02:13:07.640 +about it but when he talks about it, it all comes out from first principle and I think + +02:13:07.640 --> 02:13:14.120 +that's what made him a master programmer and some of the stuff that they tried to do, build + +02:13:14.120 --> 02:13:18.320 +an operating system from scratch even though they didn't have all the success they wanted + +02:13:18.320 --> 02:13:26.220 +but you look at how good they made the Unix tools compared to what they were in Berkeley + +02:13:26.220 --> 02:13:33.400 +and elsewhere and you know it's fabulous programming as well, I think very impressive. + +02:13:33.400 --> 02:13:39.960 +Cool, I know that he got, at least I saw some people praising that C manual that he recently + +02:13:39.960 --> 02:13:48.720 +published, I think it was in the last, somewhere in the last year, probably more like six months + +02:13:48.720 --> 02:13:57.120 +he released some kind of C documentation so I would wonder if he would ever consider doing + +02:13:57.120 --> 02:14:01.640 +something for Elisp or for Emacs or anything like that. + +02:14:01.640 --> 02:14:07.360 +Yeah he did talk about, that was one of the things he wanted, to update the Emacs list + +02:14:07.360 --> 02:14:16.080 +but I mean I think the intro of it if I remember, right, Chiselle's book right, I wanted to + +02:14:16.080 --> 02:14:24.880 +read it, I think the manual is pretty good but yeah, I mean there's so much to keep up + +02:14:24.880 --> 02:14:32.360 +with, I mean Ellie is so productive and I mean the rate at which they're adding stuff + +02:14:32.360 --> 02:14:39.480 +to Emacs is pretty, and that I mean if you ever look at the developer list it's a massive + +02:14:39.480 --> 02:14:44.720 +number, it's the same with the org, I don't know how people get anything done, they have + +02:14:44.720 --> 02:14:53.400 +so many, and Ehor processes like every message on there, this must be his job to some extent + +02:14:53.400 --> 02:15:01.360 +because it just, it would be so much time and like the hyperbole list, there's nothing, + +02:15:01.360 --> 02:15:06.800 +I mean it's no problem at all, it doesn't take any time but they have so many topics + +02:15:06.800 --> 02:15:11.160 +that people are talking about, it's very impressive. + +02:15:11.160 --> 02:15:18.000 +I don't understand how they get by without a better tracking system, I mean DevBugs is + +02:15:18.000 --> 02:15:28.000 +certainly good but it's not as, trying to find the right words here, I don't think I'm + +02:15:28.000 --> 02:15:35.600 +not trying to insult it but it's like a backlog, like a more kind of elaborate tracking system + +02:15:35.600 --> 02:15:40.520 +that kind of like separates, all right let's put this in our backlog, let's prioritize + +02:15:40.520 --> 02:15:48.520 +it, let's analyze it, but no, it just comes in and gets immediately handled and gets resolved, + +02:15:48.520 --> 02:15:54.880 +whether it's a no or a yes, things tend to be addressed and finished very quickly. + +02:15:54.880 --> 02:15:58.920 +So you're saying it's topics that concern me, I should bring up with them and they'll + +02:15:58.920 --> 02:16:04.120 +actually get dealt with pretty quickly? + +02:16:04.120 --> 02:16:11.680 +Whether to your satisfaction or not, I think so, my sense is in general that things don't + +02:16:11.680 --> 02:16:18.520 +come in and then get planned, they come in and they get done or they don't get done ever. + +02:16:18.520 --> 02:16:25.440 +My issues with the org, I think they've done a lot of great stuff from a user perspective, + +02:16:25.440 --> 02:16:32.960 +my issues have been with the way it was written, was very sloppy code for a long time, now + +02:16:32.960 --> 02:16:39.020 +they've spent a lot of time rewriting stuff so I think it's a lot better but I was looking + +02:16:39.020 --> 02:16:45.080 +at something the other day and it was clear that this should be at least a separate function + +02:16:45.080 --> 02:16:49.960 +or abstracted out and it was all hard coded in the function, so I think they sort of do + +02:16:49.960 --> 02:16:57.680 +that on a piecemeal basis because they've got a lot of legacy code from the way it started + +02:16:57.680 --> 02:17:03.280 +and they knew that it wasn't written the way they wanted, like having to write a totally + +02:17:03.280 --> 02:17:08.600 +new parser is a good example and yeah, we all go through that refactoring and stuff + +02:17:08.600 --> 02:17:16.160 +but I think it's because it was a quick and dirty solution for Karsten to solve, the same + +02:17:16.160 --> 02:17:24.960 +way the web was, right, I mean they just wanted a publishing platform for physicists, so now + +02:17:24.960 --> 02:17:36.300 +the guy who wrote that is a true genius, what's his name, the web inventor, so he took a broader + +02:17:36.300 --> 02:17:41.480 +approach to it but basically they had to get something up fast and running and that just + +02:17:41.480 --> 02:17:49.120 +sort of proved the concept and then you had to have the whole engineering team at Mosaic + +02:17:49.120 --> 02:17:56.800 +come in and actually do a lot more with it but they lost, the original web had full editing + +02:17:56.800 --> 02:18:03.740 +capabilities like in wikis and they lost that almost immediately when they went to the graphical + +02:18:03.740 --> 02:18:11.060 +web and so we've been hurting, you know, like every time I used to go when I was, early + +02:18:11.060 --> 02:18:18.000 +days of the web, I'd look and I'd look at this form and I'd say okay, so this is like + +02:18:18.000 --> 02:18:22.800 +you enter this data and then it runs this program and it does this thing, so how do + +02:18:22.800 --> 02:18:31.920 +I see what the program does, how does it process the form, it was never connected, the code + +02:18:31.920 --> 02:18:39.520 +was never connected to the form of like why would you want this set of inputs that is + +02:18:39.520 --> 02:18:46.920 +totally disconnected from the way it's processed, right, it was hidden in the back end, right, + +02:18:46.920 --> 02:18:52.680 +which you had no access to, it's like I guess good for proprietary vendors but it's like + +02:18:52.680 --> 02:18:58.400 +so for engineers to understand the system, it was very, very difficult, what if I have + +02:18:58.400 --> 02:19:05.480 +a hundred forms, so I see, yeah, that there's like one function that's referred to in the + +02:19:05.480 --> 02:19:11.440 +form but I don't know anything about that, I can't even see it's calling invocation + +02:19:11.440 --> 02:19:18.960 +a lot of times, right, so it's like that's just broken architecture and nobody cared, + +02:19:18.960 --> 02:19:24.240 +they just like let it go on and now you have all these, what, I mean was there an alternative + +02:19:24.240 --> 02:19:31.720 +to that, did it start somewhere else and then, well you encapsulate it as like the processing + +02:19:31.720 --> 02:19:39.800 +is part of the form abstraction, that it's an active entity and they can be separated + +02:19:39.800 --> 02:19:45.480 +if they live, right, like you have the front end and the back end piece of the form behavior + +02:19:45.480 --> 02:19:51.320 +but maybe you want that abstraction to be able to migrate front end to back end across + +02:19:51.320 --> 02:19:59.120 +time and so you need to have these two parts and we see this in building things now, right, + +02:19:59.120 --> 02:20:04.680 +what are we using, we're using TypeScript on the front end and we're using C sharp on + +02:20:04.680 --> 02:20:12.080 +the back end, so I imagine there's some impedance mismatches going on around there but we actually + +02:20:12.080 --> 02:20:17.580 +introduced a Python validation framework, I don't want to get into this too much but + +02:20:17.580 --> 02:20:23.960 +we are using those technologies and we can share those now across the front end and back + +02:20:23.960 --> 02:20:34.520 +end and so, you know, a lot of languages that you need to understand and I just think, so + +02:20:34.520 --> 02:20:40.140 +like closures, right, you're familiar with closures, right, so I mean that's what you're + +02:20:40.140 --> 02:20:49.080 +doing is you're passing around the environment so that you can interpret the data properly + +02:20:49.080 --> 02:20:57.400 +because you have the closure which wraps around it and so many things get, when you want to + +02:20:57.400 --> 02:21:05.380 +deal with unwinding state, you know, through many levels, having the closures allows you + +02:21:05.380 --> 02:21:12.200 +to do that easily, sort of the lexical binding versus the dynamic binding and so, you know, + +02:21:12.200 --> 02:21:20.920 +the callback hell that they talk about in Node.js is reflective of not having a good + +02:21:20.920 --> 02:21:29.880 +closure-based environment, when you look at most of the list-based web environments are + +02:21:29.880 --> 02:21:36.920 +closure-based and they can do much more interesting application building without dealing with + +02:21:36.920 --> 02:21:41.000 +a lot of the plumbing than if they didn't have that. + +02:21:41.000 --> 02:21:49.480 +Interesting and when you refer to closures, are you saying that there's a certain paradigm + +02:21:49.480 --> 02:21:56.760 +of form processing on the web that's more like a closure-based solution? + +02:21:56.760 --> 02:22:04.480 +That's right, yeah, look at the common Lisp, like Hutchin2 and frameworks built on top + +02:22:04.480 --> 02:22:07.400 +of that and you'll see. + +02:22:07.400 --> 02:22:12.480 +I definitely will do that but I meant more like when you're talking about the early days + +02:22:12.480 --> 02:22:20.600 +and how they separated the form from the actions, are you saying that that's a situation where + +02:22:20.600 --> 02:22:26.960 +like something that would be like a closure is more or are you just strictly talking about + +02:22:26.960 --> 02:22:27.960 +that? + +02:22:27.960 --> 02:22:32.640 +That would help solve that problem, I would say, because it gives you, you know, sort + +02:22:32.640 --> 02:22:38.040 +of you're seeing some of it in React now, they're like, oh, we've discovered components + +02:22:38.040 --> 02:22:46.040 +and so, you know, we only have to do partial updates now because we can like walk our tree + +02:22:46.040 --> 02:22:54.080 +and know that only this subcomponent, you know, and it's like, yeah, by building all + +02:22:54.080 --> 02:23:02.400 +these abstractions, you simplify your state management a lot and you simplify that and + +02:23:02.400 --> 02:23:06.720 +you localize where any of your issues can be. + +02:23:06.720 --> 02:23:15.140 +And so, if I have my processing engine totally disconnected from my input state, you know, + +02:23:15.140 --> 02:23:19.600 +it's going to cause a lot of problems and you saw it in the early days of the web where + +02:23:19.600 --> 02:23:26.200 +everything was, what was it, CGI, is that what it was, right? + +02:23:26.200 --> 02:23:32.240 +You just sort of, you had a totally separate back end and there was just this very thin + +02:23:32.240 --> 02:23:39.480 +kind of connection to the front end and everybody's rediscovered, they rediscovered sockets, okay, + +02:23:39.480 --> 02:23:45.160 +we need sockets and then everybody's fighting, well, I have to replicate the data on the + +02:23:45.160 --> 02:23:53.120 +front end and the back end, you know, just handling tables is such a bear on the web + +02:23:53.120 --> 02:23:54.920 +for similar reasons, right? + +02:23:54.920 --> 02:24:02.360 +So you had, what was that company Apollo or that was one of their frameworks who was trying + +02:24:02.360 --> 02:24:11.360 +to do real time front end, back end framework so that you can do all these pushes to a million + +02:24:11.360 --> 02:24:18.160 +clients, right, of any change and you could get like real time updates. + +02:24:18.160 --> 02:24:23.320 +You know, that seems fundamental to me if you're going to have a Facebook like kind + +02:24:23.320 --> 02:24:29.820 +of environment and you look at how much money Facebook had to spend to just build their + +02:24:29.820 --> 02:24:33.560 +basic application that scales at the level that they needed it. + +02:24:33.560 --> 02:24:35.540 +I mean, it's just nymph. + +02:24:35.540 --> 02:24:38.760 +You're talking about hot reloading, right, of data? + +02:24:38.760 --> 02:24:46.560 +Yeah, yeah, but I'm talking about like how it flows and where it's maintained and, you + +02:24:46.560 --> 02:24:50.040 +know, is there a single source of truth, right? + +02:24:50.040 --> 02:24:51.360 +That's what we really want. + +02:24:51.360 --> 02:24:57.000 +So people try to push stuff to the back end, but then you get all of this problem of the + +02:24:57.000 --> 02:24:58.960 +front ends out of date. + +02:24:58.960 --> 02:25:00.640 +So what's your method? + +02:25:00.640 --> 02:25:07.440 +You keep web sockets open, you know, it's like, well, then I have too many of those. + +02:25:07.440 --> 02:25:17.360 +So yeah, and what's your programming model for pushing all that data around anyway, right? + +02:25:17.360 --> 02:25:25.000 +Pushing, pulling, it's complex stuff, but if you solve it, there's a guy who wrote a + +02:25:25.000 --> 02:25:32.120 +web server, like tiny, tiny WB or something. + +02:25:32.120 --> 02:25:38.720 +I could look it up, but it's like, and he shows benchmarks of what he can process from + +02:25:38.720 --> 02:25:41.100 +this one like C-based program. + +02:25:41.100 --> 02:25:48.860 +And it's like five times the speed of other things just based on the algorithms that he + +02:25:48.860 --> 02:25:55.840 +implemented and so, you know, so you get your scale right like that and then you keep adding + +02:25:55.840 --> 02:26:00.600 +on some abstraction layers because now you can afford it. + +02:26:00.600 --> 02:26:06.200 +And then you simplify your programming model and like, we could be building the kinds of + +02:26:06.200 --> 02:26:12.240 +web applications that we want, you know, with menus even without, have you ever figured + +02:26:12.240 --> 02:26:16.640 +out how to do a good menu on a web app, you know? + +02:26:16.640 --> 02:26:22.920 +It's so much energy, right, when like in Emacs it would be just, here's my menu item and + +02:26:22.920 --> 02:26:23.920 +I'm done. + +02:26:23.920 --> 02:26:32.220 +So I think the baseline of what your programming model is matters so much from the syntax down + +02:26:32.220 --> 02:26:40.320 +to like the lexical scoping and, you know, and we're just lucky that Lisp got a lot of + +02:26:40.320 --> 02:26:45.780 +things right, that we have that as sort of like the thinking man's programming environment + +02:26:45.780 --> 02:26:52.460 +while all these other people were stuffed into Java, you know, in the 80s and they built + +02:26:52.460 --> 02:27:01.560 +Java beans and if you've ever looked at J2EE, I mean, that was such a monstrosity that it + +02:27:01.560 --> 02:27:04.880 +just collapsed literally of its own weight sort of. + +02:27:04.880 --> 02:27:11.440 +I mean, people are still using Java but it's like nobody wants to field a new web app, + +02:27:11.440 --> 02:27:16.760 +you know, in J2EE, it's just not done. + +02:27:16.760 --> 02:27:23.340 +So unless you have, you know, a ton of legacy investment that you have to keep up. + +02:27:23.340 --> 02:27:30.480 +So I think these design choices matter a lot and I think Apple's renaissance has been based + +02:27:30.480 --> 02:27:36.860 +on, you know, really saying, well, we'll iterate through our designs before we subject the + +02:27:36.860 --> 02:27:38.360 +users to them. + +02:27:38.360 --> 02:27:45.840 +We're not going to just make everybody one big beta test like Facebook or Microsoft and, + +02:27:45.840 --> 02:27:52.280 +you know, you see that like people have, you know, certainly in the consumer space have, + +02:27:52.280 --> 02:27:58.760 +you know, the shops are always full, I mean, wherever Apple store you go to and, you know, + +02:27:58.760 --> 02:28:04.480 +Microsoft is trying, Sony tries to have stores and stuff but you don't, they're not filled + +02:28:04.480 --> 02:28:10.480 +with this traffic, you know, because people aren't attached to the design aesthetic the + +02:28:10.480 --> 02:28:11.480 +same way. + +02:28:11.480 --> 02:28:12.480 +True, yeah. + +02:28:12.480 --> 02:28:17.120 +Yeah, they got something, they certainly have something that people want. + +02:28:17.120 --> 02:28:24.760 +Every program grows until it's a half a common list implementation or it's got a mail server + +02:28:24.760 --> 02:28:31.120 +in it, like you got those two sayings, oh, have you seen this at all? + +02:28:31.120 --> 02:28:36.240 +It's kind of lets you make desktop like apps with Common Lisp. + +02:28:36.240 --> 02:28:44.160 +I like the name though, Omnificent GUI Builder, you're giving us a lot of great links today, + +02:28:44.160 --> 02:28:45.160 +it's making me happy. + +02:28:45.160 --> 02:28:53.880 +It's for a YouTube video but they also have a GitHub page somewhere. + +02:28:53.880 --> 02:29:02.560 +I wish I did more Common Lisp but this is, and this is pretty new too, this is about + +02:29:02.560 --> 02:29:04.440 +a half a year old only. + +02:29:04.440 --> 02:29:09.320 +Well, does it look decent? + +02:29:09.320 --> 02:29:10.880 +Is it real or is it like? + +02:29:10.880 --> 02:29:18.160 +Well, it seems kind of like React.js where you're not writing, where you're, it's not + +02:29:18.160 --> 02:29:26.320 +the pure HTML post Git model where it's more like an application and like if you look at + +02:29:26.320 --> 02:29:30.240 +the screen, like you have the applications, you can move them around like it is in this + +02:29:30.240 --> 02:29:31.240 +up. + +02:29:31.240 --> 02:29:40.440 +It certainly looks functional, that would be my way to say it. + +02:29:40.440 --> 02:29:45.920 +And then you just write it in all one language. + +02:29:45.920 --> 02:29:50.040 +Just like Smalltalk, like what their environment used to look like. + +02:29:50.040 --> 02:29:57.640 +Oh yeah, and that, the glorious toolkits is the thing I was... + +02:29:57.640 --> 02:30:03.840 +Well there was a time when we had single UI builder environments and then you would just + +02:30:03.840 --> 02:30:11.160 +say what theme you wanted, Windows, Mac OS, and instantly it would look like the other + +02:30:11.160 --> 02:30:14.600 +environment and you had to do no work to get that. + +02:30:14.600 --> 02:30:22.560 +It's like, wow, that would be nice these days. + +02:30:22.560 --> 02:30:27.720 +Another thing with that philosophy of the copying the programs, you had Keanu Reeves + +02:30:27.720 --> 02:30:34.200 +talking about NFTs and it's like, what do you think about these NFTs with the matrix? + +02:30:34.200 --> 02:30:40.000 +You mean we're gonna have a computer, let's see, you mean we're gonna spend all this, + +02:30:40.000 --> 02:30:47.080 +you mean we're gonna have, you want me to be on board with charging people for these + +02:30:47.080 --> 02:30:55.320 +digital things on a computer that's designed to make copies? + +02:30:55.320 --> 02:31:01.520 +The whole person just like completely stopped because they're trying to, yeah, showed you + +02:31:01.520 --> 02:31:04.720 +how the idea was fundamentally wrong. + +02:31:04.720 --> 02:31:09.360 +Yeah, get your baseline, right? + +02:31:09.360 --> 02:31:18.880 +I mean, I've had to, I'm very pro-Ukraine and so I've learned a lot more about Russian + +02:31:18.880 --> 02:31:19.880 +history. + +02:31:19.880 --> 02:31:27.520 +I also have a number of Russian workmates who are very nice people, but they left Russia + +02:31:27.520 --> 02:31:38.560 +as well and a lot of what's going on seems to be from decisions that were made eons ago + +02:31:38.560 --> 02:31:44.280 +in the back to the Mongols and the way they ran their systems. + +02:31:44.280 --> 02:31:49.760 +So it's like when everybody says we've got to run so fast and we don't have time to really + +02:31:49.760 --> 02:31:57.520 +think through the design, they can't see the impact that that's gonna have on their enterprise + +02:31:57.520 --> 02:31:58.520 +or anything else. + +02:31:58.520 --> 02:32:05.520 +And if you're a long-term person, you obviously have to do things fast enough so the company + +02:32:05.520 --> 02:32:11.560 +can survive, but you have to think about that strategic level as well. + +02:32:11.560 --> 02:32:14.960 +Those who don't know history are doomed to repeat it. + +02:32:14.960 --> 02:32:17.520 +Yeah, exactly. + +02:32:17.520 --> 02:32:19.120 +Sometimes very badly. + +02:32:19.120 --> 02:32:27.080 +So how do we get Lisp to be something again? + +02:32:27.080 --> 02:32:28.760 +People are worried about Emacs dying out. + +02:32:28.760 --> 02:32:35.680 +I don't think that's happening so much, but certainly Lisp missed its position in web + +02:32:35.680 --> 02:32:42.680 +development, it seems, even though it can be quite capable there, but because of its + +02:32:42.680 --> 02:32:53.640 +image model and lack of focus on threading, it seems like you can't get anybody to even + +02:32:53.640 --> 02:32:58.400 +look at it now, right? + +02:32:58.400 --> 02:33:04.360 +I mean, unless you're talking about Clojure, like you talked about. + +02:33:04.360 --> 02:33:09.280 +You're talking about how Scheme would have been a lot better for JavaScript when JavaScript + +02:33:09.280 --> 02:33:15.560 +was first released, or like Emacs, because Emacs is good for a platform for distributing + +02:33:15.560 --> 02:33:25.280 +apps versus HTML as a document reader that they shoved applications into. + +02:33:25.280 --> 02:33:28.800 +I like the way you describe things. + +02:33:28.800 --> 02:33:34.080 +Yeah, I can't argue with that. + +02:33:34.080 --> 02:33:37.520 +But it is interesting to me. + +02:33:37.520 --> 02:33:45.120 +A lot of people don't know certain systems that are Lisp based that have been super successful, + +02:33:45.120 --> 02:33:55.240 +like Orbitz was based on the technology of a Cambridge company that implemented the bulk + +02:33:55.240 --> 02:34:05.000 +of their flight scheduling software in Lisp, and they had a very active kind of Lisp community. + +02:34:05.000 --> 02:34:07.280 +So you know, it's still- + +02:34:07.280 --> 02:34:10.040 +Hacker News is another one. + +02:34:10.040 --> 02:34:14.080 +Hacker News, yeah, that's built in Lisp? + +02:34:14.080 --> 02:34:21.040 +Yeah, the person who founded it was using Lisp and Paul Graham. + +02:34:21.040 --> 02:34:23.880 +Sam Altman? + +02:34:23.880 --> 02:34:25.440 +Paul Graham? + +02:34:25.440 --> 02:34:27.440 +Paul Graham. + +02:34:27.440 --> 02:34:28.440 +He founded it. + +02:34:28.440 --> 02:34:29.440 +Oh, I didn't know he was- + +02:34:29.440 --> 02:34:31.440 +Or at least he was involved in it anyway. + +02:34:31.440 --> 02:34:32.440 +Yeah, yeah, yeah. + +02:34:32.440 --> 02:34:33.440 +It was either that or Reddit. + +02:34:33.440 --> 02:34:34.440 +It was one or the other. + +02:34:34.440 --> 02:34:44.400 +He had an interesting Yahoo shopping experience where he wrote about that, how he leveraged + +02:34:44.400 --> 02:34:46.840 +Lisp to his advantage. + +02:34:46.840 --> 02:34:51.840 +So yeah, I think Python was that way until it got discovered. + +02:34:51.840 --> 02:35:02.640 +I worked with those guys back in Silicon Valley for a little while, and when we were trying + +02:35:02.640 --> 02:35:09.680 +to show the world that Python was something good, but it hadn't been noticed yet. + +02:35:09.680 --> 02:35:17.000 +So there's a lot of leverage that you can get if you're careful about it. + +02:35:17.000 --> 02:35:23.920 +One thing that I thought was interesting is you look at the- Google did some survey of + +02:35:23.920 --> 02:35:32.160 +the most efficient programming languages to run, and I think C was number one, and you + +02:35:32.160 --> 02:35:39.280 +look at the list, and the only one that even looks remotely high level is Common Lisp, + +02:35:39.280 --> 02:35:51.200 +where it's sent per the TDP or whatever that would be called, sent per execution or whatever. + +02:35:51.200 --> 02:35:53.760 +Everything else is more like C. + +02:35:53.760 --> 02:35:59.200 +Have you heard of Pico Lisp? + +02:35:59.200 --> 02:36:01.160 +A little bit. + +02:36:01.160 --> 02:36:09.840 +On RosettaCode, where they write the different implementations of algorithms in different + +02:36:09.840 --> 02:36:16.720 +languages, look at any sort of algorithm and the Pico Lisp implementation next to all the + +02:36:16.720 --> 02:36:25.600 +others, and it's always super tiny, and you've got just a ton more code and everything else. + +02:36:25.600 --> 02:36:32.920 +And then Pico Lisp is like Lisp with a database, maybe a triplet database built in, and it's + +02:36:32.920 --> 02:36:35.880 +pretty small and efficient. + +02:36:35.880 --> 02:36:39.160 +But I don't think anybody uses it. + +02:36:39.160 --> 02:36:46.200 +But it's an interesting example of a special case Lisp that you could embed in other things + +02:36:46.200 --> 02:36:48.200 +or use. + +02:36:48.200 --> 02:36:53.720 +One guy in Germany has been doing it for many years. + +02:36:53.720 --> 02:36:57.480 +Is that like an internet rule or a computing rule that we could come up with? + +02:36:57.480 --> 02:37:01.720 +No matter what you could think of, no matter what you find, there's one guy in Germany + +02:37:01.720 --> 02:37:07.440 +who's already done it. + +02:37:07.440 --> 02:37:09.760 +Well, I knew some Dutch people. + +02:37:09.760 --> 02:37:12.080 +I was in embedded systems at Motorola. + +02:37:12.080 --> 02:37:16.560 +We were working with very small microcontrollers with no memory. + +02:37:16.560 --> 02:37:21.960 +So we needed these super efficient cross compilers to build anything for us. + +02:37:21.960 --> 02:37:27.520 +And this company in Amsterdam seemed to have some skills. + +02:37:27.520 --> 02:37:31.600 +And so we started talking to them, and then we flew over there to do due diligence and + +02:37:31.600 --> 02:37:32.600 +check them out. + +02:37:32.600 --> 02:37:38.040 +And God, if they did not have one of the most advanced software development operations I'd + +02:37:38.040 --> 02:37:42.620 +ever seen, total quality assurance, great people. + +02:37:42.620 --> 02:37:46.860 +But everything was like to the T. This is how we do it, boom, boom, boom. + +02:37:46.860 --> 02:37:54.600 +So that's the only way you could get the efficiency out of compilers at the time. + +02:37:54.600 --> 02:37:56.920 +And so we worked with them. + +02:37:56.920 --> 02:38:06.680 +But they had that German kind of culture of the fit and finish has to be just so. + +02:38:06.680 --> 02:38:14.800 +So we used to have to do things like there was 256 bytes of memory. + +02:38:14.800 --> 02:38:18.360 +There's no K in there, of RAM. + +02:38:18.360 --> 02:38:28.400 +And so you would like to use overlays where you're repeating what you store in each word + +02:38:28.400 --> 02:38:33.840 +at different times in the program, and you had to manually keep track of the lifetime + +02:38:33.840 --> 02:38:34.840 +of objects. + +02:38:34.840 --> 02:38:36.720 +And it was a nightmare. + +02:38:36.720 --> 02:38:41.280 +But it was the only way to kind of squeeze some of the stuff in there. + +02:38:41.280 --> 02:38:47.560 +And we started in assembler, and then we went to C. And then we had this one time that was + +02:38:47.560 --> 02:38:55.040 +really fun that we had, God, I'm really dating myself now, but some of the people in product + +02:38:55.040 --> 02:39:02.980 +had these terminals, like 12 inch terminals with eight inch floppy disks on the terminal. + +02:39:02.980 --> 02:39:11.800 +And they were using those to interface to the microcontroller boards for emulator boards, + +02:39:11.800 --> 02:39:17.080 +where we would test out new software for a board that hadn't been released to production + +02:39:17.080 --> 02:39:18.080 +yet. + +02:39:18.080 --> 02:39:20.600 +And we would be able to iterate on that. + +02:39:20.600 --> 02:39:26.960 +And right next to these things were sun workstations that the engineers used for their normal development. + +02:39:26.960 --> 02:39:30.400 +So I was moved from research to product. + +02:39:30.400 --> 02:39:34.960 +And they said, so this is how you're going to have to do your code on this monochrome + +02:39:34.960 --> 02:39:35.960 +terminal. + +02:39:35.960 --> 02:39:40.200 +And I'm like, well, what about using the sun workstation? + +02:39:40.200 --> 02:39:43.880 +And it's just a serial port, so we'll just interface it. + +02:39:43.880 --> 02:39:45.760 +No, we tried that two years ago. + +02:39:45.760 --> 02:39:46.760 +It didn't work. + +02:39:46.760 --> 02:39:48.760 +We can't do it. + +02:39:48.760 --> 02:39:55.080 +I'm like, I am not going to sit here and use this dumpy thing for a week. + +02:39:55.080 --> 02:40:01.200 +So that afternoon, I figured out the protocol and got the thing, the sun workstation, talking + +02:40:01.200 --> 02:40:02.200 +to it. + +02:40:02.200 --> 02:40:09.760 +And then I wrote a disassembler tool so I could work the assembly, the math, behind + +02:40:09.760 --> 02:40:11.320 +it at a higher level. + +02:40:11.320 --> 02:40:13.920 +And I had all that going the first week. + +02:40:13.920 --> 02:40:18.440 +But people came over, and they're like, what are you doing? + +02:40:18.440 --> 02:40:21.600 +How is this possible? + +02:40:21.600 --> 02:40:26.600 +They just had started from the vantage point that they really had to live here, and they + +02:40:26.600 --> 02:40:29.600 +hadn't done enough of an assessment. + +02:40:29.600 --> 02:40:36.760 +So I would just look back at that when people say, this is the only way to do something. + +02:40:36.760 --> 02:40:42.660 +That's one of the great things about computers is it can speak too many languages. + +02:40:42.660 --> 02:40:48.280 +So if you want to just speak Lisp, you can just speak Lisp, relatively, anyway. + +02:40:48.280 --> 02:40:56.520 +Or if everybody else wants to speak that worst language that you don't like as much, you + +02:40:56.520 --> 02:41:03.800 +don't necessarily have to speak that, I guess, except for the www, but anyway. + +02:41:03.800 --> 02:41:11.720 +Omnificent web development language, and tell everybody that this is the be all and all. + +02:41:11.720 --> 02:41:15.320 +I think what I like the most about that is that I don't believe that omnificent is actually + +02:41:15.320 --> 02:41:23.680 +a word, so that can be accused of being incorrect, because there is no definition of omnificent + +02:41:23.680 --> 02:41:26.040 +that they can be shown not to conform to. + +02:41:26.040 --> 02:41:29.720 +I could be talking about that, but that's... + +02:41:29.720 --> 02:41:30.800 +There's a Latin word. + +02:41:30.800 --> 02:41:36.720 +That's why you know what it means, is because omni is everything, efficient is something + +02:41:36.720 --> 02:41:44.440 +about knowing, or everywhere, like the all-knowing GUI builder. + +02:41:44.440 --> 02:41:46.440 +Isn't that kind of how you read the omni-efficient? + +02:41:46.440 --> 02:41:49.080 +I think that's actually omniscient. + +02:41:49.080 --> 02:41:50.080 +I think... + +02:41:50.080 --> 02:41:51.080 +Omniscient, yeah. + +02:41:51.080 --> 02:41:52.080 +Oh, omniscient. + +02:41:52.080 --> 02:41:53.080 +Yeah, that's right. + +02:41:53.080 --> 02:41:54.080 +You're close. + +02:41:54.080 --> 02:41:55.080 +I think, yeah. + +02:41:55.080 --> 02:42:00.520 +C-L-O-G, so it's the clog builder. + +02:42:00.520 --> 02:42:02.960 +That sounds like a Lisp-y kind of thing, you know? + +02:42:02.960 --> 02:42:09.680 +It doesn't have any sexiness to it, but we've invented the clog builder. + +02:42:09.680 --> 02:42:10.680 +You know, that's funny. + +02:42:10.680 --> 02:42:12.480 +That was another thing I wanted to mention when I was writing this. + +02:42:12.480 --> 02:42:15.120 +It's just to clog how everybody else does things. + +02:42:15.120 --> 02:42:16.120 +Just clog it up. + +02:42:16.120 --> 02:42:19.120 +No, you don't have to do it that way. + +02:42:19.120 --> 02:42:24.800 +Is that something that is real? + +02:42:24.800 --> 02:42:32.140 +I feel like a lot of Emacs users are maybe just that type of person in general. + +02:42:32.140 --> 02:42:38.400 +We want things that look, not look, but sound, like clog. + +02:42:38.400 --> 02:42:47.360 +We prefer things that are awkward and are stupid acronyms, and if it seems like effort + +02:42:47.360 --> 02:42:53.720 +has been put into something to make it sound sick or market or anything, it's like, I don't + +02:42:53.720 --> 02:42:54.720 +know. + +02:42:54.720 --> 02:42:55.720 +I'm not sure. + +02:42:55.720 --> 02:43:00.480 +I think that goes back to what I was talking about with the scrolling down. + +02:43:00.480 --> 02:43:03.600 +I want it to not have animations. + +02:43:03.600 --> 02:43:10.600 +It's just spending CPU cycles to make my experience worse. + +02:43:10.600 --> 02:43:15.520 +Why would I want to scroll down half a line so I can read half of a text? + +02:43:15.520 --> 02:43:21.120 +Well, if you scroll half of a finger, that's what it would be, if you just do this. + +02:43:21.120 --> 02:43:22.400 +Oh, is this the guy? + +02:43:22.400 --> 02:43:26.960 +I think this is the guy, the one, the G toolkit, yeah, the glamorous toolkit. + +02:43:26.960 --> 02:43:28.920 +I read about this a while ago. + +02:43:28.920 --> 02:43:31.560 +This was one Google guy. + +02:43:31.560 --> 02:43:40.700 +We had a team, and then I think he left Google, and he's trying to do it, implemented in Faro, + +02:43:40.700 --> 02:43:43.000 +the pure object-oriented language. + +02:43:43.000 --> 02:43:45.760 +Yeah, this sounds like one of those things. + +02:43:45.760 --> 02:43:47.760 +Yeah, that's what it is. + +02:43:47.760 --> 02:43:52.200 +You know, there's, yeah, it's like, just get the base right, right? + +02:43:52.200 --> 02:43:53.240 +That's what Lisp did. + +02:43:53.240 --> 02:44:00.480 +Just give me Kar and Kutter and Lambda Calculus and go for it. + +02:44:00.480 --> 02:44:01.480 +What? + +02:44:01.480 --> 02:44:03.040 +And I will move the world. + +02:44:03.040 --> 02:44:04.040 +Yeah. + +02:44:04.040 --> 02:44:09.080 +Well, when you think, you know, I mean, look at the opportunity that was lost with Lisp + +02:44:09.080 --> 02:44:10.080 +machines. + +02:44:10.080 --> 02:44:11.920 +I was around for those too. + +02:44:11.920 --> 02:44:14.520 +I'm near dead, I guess. + +02:44:14.520 --> 02:44:24.520 +But I was young, at least then, and they microcoded Lisp, right? + +02:44:24.520 --> 02:44:29.480 +So everything atop that was Lisp. + +02:44:29.480 --> 02:44:33.800 +The Windows system was Lisp, you know, sort of like what Jobs was trying to do. + +02:44:33.800 --> 02:44:39.240 +He was trying to do, I don't know, well, when he did display PostScript, or he was trying + +02:44:39.240 --> 02:44:42.920 +to get common experience at different levels. + +02:44:42.920 --> 02:44:48.320 +But like, if you really have a consistent programming model across your whole damn system, + +02:44:48.320 --> 02:44:58.120 +you know, it's probably thousands of man years of work that you just eliminate right there + +02:44:58.120 --> 02:45:02.920 +if you have a decent language, right, and then a debugging environment. + +02:45:02.920 --> 02:45:09.520 +I mean, we still use stuff that there is no debugging environment for, right? + +02:45:09.520 --> 02:45:15.240 +Because it solves some problem that exists in the industry, and we haven't gotten rid + +02:45:15.240 --> 02:45:17.440 +of it yet. + +02:45:17.440 --> 02:45:22.320 +I want to set up some Raspberry Pi lights. + +02:45:22.320 --> 02:45:27.380 +If you have like that with an embedded controller, if you run that with Lisp, you're probably + +02:45:27.380 --> 02:45:33.720 +going to get a REPL for free that is going to allow you to remotely control your lights. + +02:45:33.720 --> 02:45:42.280 +You know, they have MicroPython for that, if you're into Python at all. + +02:45:42.280 --> 02:45:48.500 +That was a physicist, I don't know if he was German, but a physicist who implemented that + +02:45:48.500 --> 02:45:52.840 +to do controller hardware, and it's pretty good. + +02:45:52.840 --> 02:45:59.320 +He's moved a lot of, I think they actually got money behind it, and then started moving + +02:45:59.320 --> 02:46:01.680 +all the libraries into that too. + +02:46:01.680 --> 02:46:02.680 +So that runs pretty well. + +02:46:02.680 --> 02:46:08.340 +And you got stuff like CPython too, but I think part of the thing that makes Python + +02:46:08.340 --> 02:46:14.120 +appealing to people is you got all these libraries that people can use to build their apps with, + +02:46:14.120 --> 02:46:18.360 +and if you're running MicroPython or CPython, do you have access to those? + +02:46:18.360 --> 02:46:19.360 +Right. + +02:46:19.360 --> 02:46:24.120 +Well, that's what I'm saying, they like have been moving on that to get a lot more of the + +02:46:24.120 --> 02:46:31.200 +libraries available, because at first, that's right, that was part of what they were lacking. + +02:46:31.200 --> 02:46:36.720 +But just, you know, being able to put your language at the hardware level without a separate + +02:46:36.720 --> 02:46:41.760 +operating system is kind of an interesting concept too. + +02:46:41.760 --> 02:46:47.280 +And at that time with the Lisp machines, they were making the CPUs in line with, you had + +02:46:47.280 --> 02:46:53.800 +somebody making CPUs specifically for the Lisp machines, and ever since then, we've + +02:46:53.800 --> 02:46:59.960 +always been making CPUs to specifically target C, and I wonder how much that kind of like + +02:46:59.960 --> 02:47:07.800 +the philosophy and artifacts that you design, I wonder if like CPUs would look different + +02:47:07.800 --> 02:47:13.880 +and stuff like that, because we'd be optimizing them for Lambda calculus or something, and + +02:47:13.880 --> 02:47:17.760 +Reples, and if that would result in anything different. + +02:47:17.760 --> 02:47:25.120 +Well, I always ask my friend in London who knows everything, or he knows something about + +02:47:25.120 --> 02:47:38.720 +everything, why I remember the fastest computer I ever used was a DEC Alpha in the 80s, and + +02:47:38.720 --> 02:47:45.720 +it was, or maybe the beginning of the 90s, so it was a 64-bit machine at the time, and + +02:47:45.720 --> 02:47:52.760 +it used SCSI disks, and I would, you know, compilation took a while of programs, but + +02:47:52.760 --> 02:47:57.640 +I would go to compile, and I would just see these messages fly by me, and it would be + +02:47:57.640 --> 02:48:04.400 +like Go is today, right, be done in an instant, and like, how is that possible, I go over + +02:48:04.400 --> 02:48:11.520 +to this other machine, and they were emulating, I thought it had 128-bit data paths, but we + +02:48:11.520 --> 02:48:17.080 +looked it up, it was 64-bit, but they did have 128-bit words. + +02:48:17.080 --> 02:48:22.480 +You're talking about like boot up speed, and like how fast when you press a letter G on + +02:48:22.480 --> 02:48:26.680 +a keyboard, how fast it appears on your screen, and stuff like that, right? + +02:48:26.680 --> 02:48:32.840 +No, compilation of a complex application, how long that would take, and how long I would + +02:48:32.840 --> 02:48:38.560 +have to wait, and it was near instantaneous in many cases, and I had never experienced + +02:48:38.560 --> 02:48:39.600 +that before. + +02:48:39.600 --> 02:48:48.680 +So their disks were super fast, the throughput on the data buses was super fast, and I mean, + +02:48:48.680 --> 02:48:56.120 +it just worked like if you wanted a fast computer, it felt right, and I've not, you know, despite + +02:48:56.120 --> 02:49:02.700 +all the hardware I've had access to, I haven't had that same experience on any other machine + +02:49:02.700 --> 02:49:03.700 +to do. + +02:49:03.700 --> 02:49:11.240 +I know the Zig programming language has recently gotten an incremental compiler for it. + +02:49:11.240 --> 02:49:12.240 +Nice. + +02:49:12.240 --> 02:49:13.240 +So it would. + +02:49:13.240 --> 02:49:15.640 +Yeah, they're doing good work, they're doing good. + +02:49:15.640 --> 02:49:17.640 +Have you seen Vlang too? + +02:49:17.640 --> 02:49:19.760 +That's sort of interesting. + +02:49:19.760 --> 02:49:24.160 +I've seen that a little bit, but I haven't looked too much into it. + +02:49:24.160 --> 02:49:33.720 +There's this one Russian guy, and he's building his own Go-like replacement for C, because + +02:49:33.720 --> 02:49:40.000 +he likes Go a lot, but he wants to solve some other problems that he didn't like in Go, + +02:49:40.000 --> 02:49:43.280 +and the things he says about it are incredible. + +02:49:43.280 --> 02:49:47.640 +It doesn't, well, it didn't have garbage collection at first, right, because he wants to do all + +02:49:47.640 --> 02:49:54.760 +those machine-level things, but they seem to be able to build things that they promote + +02:49:54.760 --> 02:49:59.160 +as doing a lot, like an entire web framework they have already. + +02:49:59.160 --> 02:50:06.760 +They have their own graphics system and, you know, should be able to do very fast compositing. + +02:50:06.760 --> 02:50:13.040 +Who knows, you know, and so a lot of people say that he's over-promising, but he keeps + +02:50:13.040 --> 02:50:21.080 +delivering these snippets about, well, V, originally he had to translate V to C to get it to compile. + +02:50:21.080 --> 02:50:29.800 +Now it's self-hosting, and he can compile the whole language in 1.8 seconds from start, + +02:50:29.800 --> 02:50:39.120 +right, things like that, and so he's bootstrapping these super-efficient things to get to a very + +02:50:39.120 --> 02:50:45.680 +Rust-like systems programming language, but potentially cleaner. + +02:50:45.680 --> 02:50:51.640 +But it doesn't have, you know, people behind it like Rust, and you don't know if what he's + +02:50:51.640 --> 02:50:56.640 +saying is actually true, but if it is, you know, it might be like Zig and be something + +02:50:56.640 --> 02:50:58.640 +really interesting. + +02:50:58.640 --> 02:51:04.560 +Zig did cached compilations, so if you compiled something and then you changed a little bit + +02:51:04.560 --> 02:51:07.800 +and you compile it again, you're not going to compile very much. + +02:51:07.800 --> 02:51:11.680 +Right, so it'll be super-fast that way too. + +02:51:11.680 --> 02:51:20.000 +Yeah, I mean, memoization, that's caching if you can do it right, I'll save your ass + +02:51:20.000 --> 02:51:22.960 +every time, right, that's sort of. + +02:51:22.960 --> 02:51:27.240 +Then they have a self-hosted compiler, so I think that's one that will do the incremental + +02:51:27.240 --> 02:51:34.680 +compilations, so like that one will just be much faster and give you more debug stuff. + +02:51:34.680 --> 02:51:38.720 +But it is interesting, it's like, yeah, start with the REPL, right? + +02:51:38.720 --> 02:51:41.280 +Can you do a REPL in your language or not? + +02:51:41.280 --> 02:51:46.360 +Can you give me an interactive environment, even if everything has to be compiled? + +02:51:46.360 --> 02:51:50.280 +Like Julia, I guess, is going for some of this, right? + +02:51:50.280 --> 02:51:56.040 +They're taking some from LIST, they're taking all these efficient scientific libraries, + +02:51:56.040 --> 02:52:02.600 +and they're trying to meld them into a functional environment that gives you the most efficient + +02:52:02.600 --> 02:52:06.000 +code for any line that you write, right? + +02:52:06.000 --> 02:52:15.440 +Because it compiles it based on the dynamic types or something that it experiences, so + +02:52:15.440 --> 02:52:17.600 +it's very interesting. + +02:52:17.600 --> 02:52:19.920 +Have you seen the JANET Lisp language? + +02:52:19.920 --> 02:52:25.920 +It's kind of like V, where it's a very small language that has a web framework for it as + +02:52:25.920 --> 02:52:26.920 +well. + +02:52:26.920 --> 02:52:29.640 +No, I haven't seen that. + +02:52:29.640 --> 02:52:31.160 +I got a link on it right there. + +02:52:31.160 --> 02:52:34.840 +Yeah, I see it here, JANET Lisp, not too hard to find. + +02:52:34.840 --> 02:52:40.440 +I like their logo, 1950s JANET. + +02:52:40.440 --> 02:52:45.600 +Functional and imperative programming language runs on Windows, Linux, Mac OS, and Steam. + +02:52:45.600 --> 02:52:47.920 +Entire language is less than one megabyte. + +02:52:47.920 --> 02:52:58.000 +This sounds like REBOL, called Sasslerath, it did a lot of FORTH, and then he wrote REBOL, + +02:52:58.000 --> 02:53:02.560 +which has now evolved into REDLANG. + +02:53:02.560 --> 02:53:08.800 +It doesn't seem like a great language, but it's got that FORTH efficiency, and it's super + +02:53:08.800 --> 02:53:15.040 +small with its super small graphics, but it's not that easy to write, I think. + +02:53:15.040 --> 02:53:16.040 +This is cool. + +02:53:16.040 --> 02:53:17.660 +This sounds really interesting. + +02:53:17.660 --> 02:53:22.500 +So who's doing this, JANET? + +02:53:22.500 --> 02:53:27.360 +You know where it comes from? + +02:53:27.360 --> 02:53:28.360 +What source? + +02:53:28.360 --> 02:53:30.760 +They don't have about. + +02:53:30.760 --> 02:53:32.560 +Tell us about JANET. + +02:53:32.560 --> 02:53:37.240 +Oh, Calvin Rose and contributors. + +02:53:37.240 --> 02:53:41.920 +So again, we have one guy and contributor. + +02:53:41.920 --> 02:53:43.960 +That's well, you know, that's modern. + +02:53:43.960 --> 02:53:45.080 +That's how it is. + +02:53:45.080 --> 02:53:51.160 +You know, we talk about repeating the cycles of and how old problems are going to manifest + +02:53:51.160 --> 02:53:57.040 +with new technologies, maybe that's the problem that we're doing is that now everyone will + +02:53:57.040 --> 02:54:02.120 +have their own language and their own system and has become so satisfying and easy to do + +02:54:02.120 --> 02:54:08.240 +that that every single person will write their own programming language, their own architecture, + +02:54:08.240 --> 02:54:11.820 +and everyone will become it's like a it's like a monkey's paw or the genie granting + +02:54:11.820 --> 02:54:13.400 +you a curse. + +02:54:13.400 --> 02:54:18.120 +Everyone will become perfectly competent at this stuff, but not be able to communicate + +02:54:18.120 --> 02:54:20.920 +with each other because everyone's has their personal language. + +02:54:20.920 --> 02:54:23.960 +It's like the new Tower of Babel. + +02:54:23.960 --> 02:54:29.380 +You know, that's the claim that like my my guy in London makes about Lisp, that it's + +02:54:29.380 --> 02:54:35.040 +so efficient in making DSLs that nobody can communicate with each other. + +02:54:35.040 --> 02:54:43.720 +And I've heard that said about groups working in Lisp together, but I've never seen it. + +02:54:43.720 --> 02:54:52.560 +And it doesn't make a lot of sense to me because if you build your DSL for the domain, well, + +02:54:52.560 --> 02:54:58.920 +then it's like if people have any concept of the domain, it's going to be quite understandable. + +02:54:58.920 --> 02:55:04.720 +And because it's representative, you know, they're not going to struggle with it. + +02:55:04.720 --> 02:55:10.680 +It's only if you like, you know, make up terms that don't relate to anything and use that + +02:55:10.680 --> 02:55:11.680 +all over. + +02:55:11.680 --> 02:55:16.100 +Or if you take the scientists and they use their single character variable names, that's + +02:55:16.100 --> 02:55:21.440 +going to be a lot less understandable than something tailored for the domain that you're + +02:55:21.440 --> 02:55:22.440 +working in. + +02:55:22.440 --> 02:55:23.440 +Right? + +02:55:23.440 --> 02:55:24.440 +Good point. + +02:55:24.440 --> 02:55:25.440 +Yeah. + +02:55:25.440 --> 02:55:28.200 +I wonder how much of it has to do with going back and forth. + +02:55:28.200 --> 02:55:32.920 +You know, like if you can't spend all of your time or dedicate a long enough time, if you + +02:55:32.920 --> 02:55:38.760 +just go in and look at whatever this DSL is, switch back to idiomatic stuff. + +02:55:38.760 --> 02:55:44.520 +It's like, oh, you know, my brain is, you have to context switch all the time, maybe. + +02:55:44.520 --> 02:55:54.200 +One of the RACQ talk that was like the best talk for free software, and one of the observations + +02:55:54.200 --> 02:55:59.640 +they made was that most of everything was made by one person. + +02:55:59.640 --> 02:56:05.440 +And even if you look at a lot of the projects that have more than two people, you have one + +02:56:05.440 --> 02:56:07.960 +person and then a maintainer takes over. + +02:56:07.960 --> 02:56:10.760 +So it's still really one person working on it. + +02:56:10.760 --> 02:56:19.520 +It's like, that's going to be like 95% of everything out there, and everybody chooses + +02:56:19.520 --> 02:56:22.760 +a language that's not for that purpose. + +02:56:22.760 --> 02:56:25.460 +This was kind of the law of what they were. + +02:56:25.460 --> 02:56:28.700 +So if you're going to be doing that, you want to, if you're going to be working on a project + +02:56:28.700 --> 02:56:33.640 +over a long period of time, you want a language that has more features that you can master + +02:56:33.640 --> 02:56:39.200 +over a long period of time rather than how fast you can write hello world that can keep + +02:56:39.200 --> 02:56:44.760 +you interested in over a long period of, like Emacs for instance, Emacs can keep you interested + +02:56:44.760 --> 02:56:50.280 +in it for decades. + +02:56:50.280 --> 02:56:53.000 +And I think it's a cognitive mismatch. + +02:56:53.000 --> 02:56:54.000 +Go ahead. + +02:56:54.000 --> 02:57:02.440 +It's good to know that when given the freedom, like in software being such a new technology, + +02:57:02.440 --> 02:57:13.400 +to do whatever you want that humans will still recreate the Tower of Babel every single time. + +02:57:13.400 --> 02:57:20.840 +We'll never be able to agree on what's a good or right looking language. + +02:57:20.840 --> 02:57:25.280 +But I think the reality is that there are better ones. + +02:57:25.280 --> 02:57:35.320 +I think languages, written languages without accent marks are fundamentally better than + +02:57:35.320 --> 02:57:38.120 +those with accent marks. + +02:57:38.120 --> 02:57:44.200 +And so if you're stuck on one with there, you're probably going to get left behind even + +02:57:44.200 --> 02:57:47.120 +though you can produce the same meanings. + +02:57:47.120 --> 02:57:58.480 +And I think languages without Lisp type macros are never going to be able to solve the problems + +02:57:58.480 --> 02:58:07.640 +even though they're computationally equivalent that Lisp people attack because they just + +02:58:07.640 --> 02:58:10.840 +can't wrap the complexity in their mind enough. + +02:58:10.840 --> 02:58:19.680 +You'd have to have somebody who's 100 times better with a weaker language to do what the + +02:58:19.680 --> 02:58:29.600 +essentially average Lisp guy leveraging the macro capability could do. + +02:58:29.600 --> 02:58:36.840 +Like in hyperbole, one of the things that we solve that you can't do, I think very well + +02:58:36.840 --> 02:58:38.880 +in other languages. + +02:58:38.880 --> 02:58:47.880 +So we have our implicit button definitions look like regular defunds, but they have two + +02:58:47.880 --> 02:58:50.080 +parts in them. + +02:58:50.080 --> 02:58:54.640 +One which is the pattern match, am I in the right context? + +02:58:54.640 --> 02:58:59.600 +And then the one that calls the action. + +02:58:59.600 --> 02:59:07.400 +But you need, so to make it look the same, like there's only one path that you're running + +02:59:07.400 --> 02:59:13.480 +through this code, even though you have to do the pattern matching when you're called + +02:59:13.480 --> 02:59:18.040 +one time and you have to do the action invocation when you called another. + +02:59:18.040 --> 02:59:29.440 +There's a macro that we created called the hacked, H-A-C-T, and the macro actually takes + +02:59:29.440 --> 02:59:40.240 +a, there's a function that it uses that's implicit, that is set to different values + +02:59:40.240 --> 02:59:43.840 +at different states in the program. + +02:59:43.840 --> 02:59:50.800 +So when you're just looking for the pattern matching, that's all it does. + +02:59:50.800 --> 02:59:53.360 +And it sort of drops through the other behavior. + +02:59:53.360 --> 03:00:01.600 +And then when it comes back around and you're not doing pattern matching anymore, it executes + +03:00:01.600 --> 03:00:02.800 +the action. + +03:00:02.800 --> 03:00:09.320 +But looking at the code, you only see that one defund straight kind of path through it. + +03:00:09.320 --> 03:00:14.680 +So the engine handles all that, and I don't think you could write anything quite like + +03:00:14.680 --> 03:00:19.280 +that without the macro. + +03:00:19.280 --> 03:00:26.560 +It's magical, it's probably the closest thing to magic that we have, I guess. + +03:00:26.560 --> 03:00:35.360 +Well, you guys have filled up my brain, so I'm going to get some sleep, too. + +03:00:35.360 --> 03:00:36.360 +You deserve it. + +03:00:36.360 --> 03:00:42.720 +I'm a day ahead of you in that respect, so I'm amazed you've made it this long, to be + +03:00:42.720 --> 03:00:43.720 +honest. + +03:00:43.720 --> 03:00:51.040 +I don't know if I, did I, was there any, like, is there anything that you guys had, that + +03:00:51.040 --> 03:00:53.840 +I had neglected or anything that I should focus on? + +03:00:53.840 --> 03:00:57.320 +Well, I don't know, but I'm going to sign off. + +03:00:57.320 --> 03:01:04.500 +It's been a real pleasure talking to you guys, and John, I'll get in touch about, you know, + +03:01:04.500 --> 03:01:10.200 +give you a chance to take a look at Hyperbole a little bit, and then we could talk about, + +03:01:10.200 --> 03:01:15.160 +you know, how you could feedback some stuff, or if you want to interact with, meet some + +03:01:15.160 --> 03:01:19.040 +of the other guys in the team sometime, and just talk. + +03:01:19.040 --> 03:01:24.160 +Yeah, any of that, yeah, and you've got, I think, I mean, I'll email you if I, or you + +03:01:24.160 --> 03:01:26.360 +email me, email me either way. + +03:01:26.360 --> 03:01:33.280 +Okay, and on PlasmaStrike, if you're interested, it's open, too, I mean, we need smart people + +03:01:33.280 --> 03:01:42.080 +like yourself with lots of ideas and understanding of where things come from to just help out + +03:01:42.080 --> 03:01:43.080 +on that. + +03:01:43.080 --> 03:01:48.600 +If you have any cycles and you want to get involved, let me know. + +03:01:48.600 --> 03:01:56.840 +My email address is all over the Hyperbole code, so easy to find, just rsw.cadu.org will + +03:01:56.840 --> 03:01:57.840 +work as well. + +03:01:57.840 --> 03:02:03.640 +Yeah, if, yeah, and either of you guys feel free to, if you have any interesting ideas + +03:02:03.640 --> 03:02:10.840 +or anything, reach out and email me, I'm on the, I'm on the chatroom, thanks so much, + +03:02:10.840 --> 03:02:16.280 +I can't wait till they get this session, and they're like, wait, it's 180,000, it's the + +03:02:16.280 --> 03:02:27.600 +easiest thing I've got out of control, I guess, but, you know, they'll want to keep this because + +03:02:27.600 --> 03:02:31.800 +it's a great wide-ranging conversation, posterity. + +03:02:31.800 --> 03:02:36.520 +I have a feeling they won't run all of it through voice recognition. + +03:02:36.520 --> 03:02:39.280 +It definitely belongs with a 10-minute talk. + +03:02:39.280 --> 03:02:47.160 +Well, I'll tell you this, and I, not to prolong things, but this is, this is very representative + +03:02:47.160 --> 03:02:51.680 +of the amount of time that I, the proportional amount of effort and time that I spent preparing + +03:02:51.680 --> 03:02:57.000 +for this 10-minute talk, because for, I'll tell you something that, first, is when you + +03:02:57.000 --> 03:03:00.640 +realize that you have a 10-minute talk and you say, how am I going to get 10 minutes? + +03:03:00.640 --> 03:03:05.600 +Then you start preparing, and you start, and somehow you wind up with 100 minutes, and + +03:03:05.600 --> 03:03:11.640 +then it takes you 10 times as long to cut out, to choose which 90 minutes to cut out. + +03:03:11.640 --> 03:03:16.360 +So this is appropriate, it's appropriate for me, this is like my bookend, that I can talk + +03:03:16.360 --> 03:03:21.400 +for three hours about that, or at least starting with that time. + +03:03:21.400 --> 03:03:26.440 +You should give a talk about that, sort of like how Michelangelo went from the piece + +03:03:26.440 --> 03:03:32.000 +of marble to the David, and it's like, you know, I had this infinite amount of material + +03:03:32.000 --> 03:03:37.080 +coalescing it to 10 minutes is a 100-hour effort, because it's really true. + +03:03:37.080 --> 03:03:41.240 +I like it, because that's, that's a lot of what these tools do, is they allow you to + +03:03:41.240 --> 03:03:43.160 +capture your stuff. + +03:03:43.160 --> 03:03:47.200 +They allow you to organize it, and they allow you to formalize it, and that organizing part + +03:03:47.200 --> 03:03:52.840 +is what, is what gave me, well, isn't, isn't that what they say, that a professional programmer + +03:03:52.840 --> 03:03:59.880 +is somebody who will spend an hour automate, spend 100 hours automating something that + +03:03:59.880 --> 03:04:02.920 +only takes an hour, one time. + +03:04:02.920 --> 03:04:07.280 +I think that's what, I think maybe some professional programmers may say that. + +03:04:07.280 --> 03:04:11.160 +I don't know if their bosses would agree. + +03:04:11.160 --> 03:04:13.480 +There's some truth to it though, right? + +03:04:13.480 --> 03:04:18.520 +So have a great night guys, appreciate it. + +03:04:18.520 --> 03:04:22.120 +And yeah, and PlasmaStrike, I don't know if you, if you do end up posting anything of + +03:04:22.120 --> 03:04:27.700 +your, of your setup or anything, if you feel like it, just hit me up if you're interested + +03:04:27.700 --> 03:04:31.600 +in any of my shit, looking at it, because if you do, I'd, I'd be interested. + +03:04:31.600 --> 03:04:32.600 +That's all. + +03:04:32.600 --> 03:04:33.600 +No pressure. + +03:04:33.600 --> 03:04:34.600 +Yep. + +03:04:34.600 --> 03:04:35.600 +All right. + +03:04:35.600 --> 03:04:36.600 +Take it easy. + +03:04:36.600 --> 03:04:37.600 +Great, great meeting you. + +03:04:37.600 --> 03:04:38.600 +Great talking to you. + +03:04:38.600 --> 03:04:39.600 +Yep. + +03:04:39.600 --> 03:04:40.600 +You too. + +03:04:40.600 --> 03:04:41.600 +See ya. + +03:04:41.600 --> 03:04:42.600 +See ya. + +03:04:42.600 --> 03:04:58.280 +You're currently the only person in... + +03:04:58.280 --> 03:05:00.340 +you + +03:05:28.280 --> 03:05:30.340 +you + +03:05:58.280 --> 03:06:00.340 +you + diff --git a/2022/captions/emacsconf-2022-grail--graila-generalized-representation-and-aggregation-of-information-layers--sameer-pradhan--answers.vtt b/2022/captions/emacsconf-2022-grail--graila-generalized-representation-and-aggregation-of-information-layers--sameer-pradhan--answers.vtt new file mode 100644 index 00000000..7157036e --- /dev/null +++ b/2022/captions/emacsconf-2022-grail--graila-generalized-representation-and-aggregation-of-information-layers--sameer-pradhan--answers.vtt @@ -0,0 +1,791 @@ +WEBVTT + +00:00.000 --> 00:02.060 +you + +01:00.000 --> 01:02.000 +You + +01:09.080 --> 01:13.280 +Wait, so there's a little something though. How are we gonna get the audio? + +01:16.240 --> 01:18.240 +Give me just a second + +01:18.240 --> 01:30.520 +Ah, so can we just get a confirmation? Can you start playing the talk now Samir, please? + +01:43.280 --> 01:47.080 +So for everyone on the stream bear with us just a little bit we're trying to get it working right now + +01:47.080 --> 01:49.180 +I'm not getting any audio from you Samir + +01:53.880 --> 01:59.600 +Samir you might want to unmute yourself onto BBB. So if you could pause the video go to BBB and unmute yourself + +02:09.320 --> 02:14.080 +Okay, Samir, can you hear me now? Yeah, okay, so + +02:14.080 --> 02:17.640 +Oh, let me start. Where is it? Okay. There we go + +02:23.320 --> 02:29.400 +That sounds great, okay, we'll give you just a second to get squared away here and thanks everybody on the stream for bearing with us + +02:30.780 --> 02:34.600 +Okay, sure Samir. Can you now start playing your talk? Yeah + +02:34.600 --> 02:42.440 +I'm Samir Pradhan from the Linguistic Data Consortium at the University of Pennsylvania. Can you pause the talk for a second? + +02:44.760 --> 02:46.760 +What happened? + +02:48.760 --> 02:52.600 +Oh, you don't have audio. The thing was no audio is + +02:54.760 --> 02:56.760 +Oh + +02:56.760 --> 03:02.760 +Okay, Samir, sorry, we were just doing some last-minute checks. So yes do exactly the same thing as you did will be fine and we'll manage on our end + +03:05.760 --> 03:08.760 +Sorry everyone on the stream. We're just trying to do some last-minute shuffling + +03:10.760 --> 03:14.760 +And you are muted on BBB right now, so you will probably need to pause the talk for a second + +03:14.760 --> 03:24.760 +And you are muted on BBB right now, so you will probably need to unmute yourself on BBB and then start the talk + +03:30.760 --> 03:35.760 +So Samir, right now, sorry, could you, no, it's not working. You need to unmute yourself on BBB + +03:35.760 --> 03:37.760 +So right now you need to click the button, the microphone + +03:37.760 --> 03:42.760 +Yes, you toggled it off again. Toggle it on again, please + +03:46.760 --> 03:48.760 +What am I doing wrong? + +03:49.760 --> 03:55.760 +So do not unmute yourself now. Leave your microphone on and press, go back to the beginning of your video and press play + +03:55.760 --> 03:57.760 +Yes, from various signals + +03:58.760 --> 04:01.760 +The work we present is limited to a limited number of people + +04:01.760 --> 04:06.760 +So do not unmute yourself now. Leave your microphone on and press, go back to the beginning of your video and press play + +04:06.760 --> 04:08.760 +Yes, from various signals + +04:09.760 --> 04:12.760 +The work we present is limited to text and speech + +04:12.760 --> 04:13.760 +Good approaching + +04:13.760 --> 04:14.760 +But it can be extended + +04:15.760 --> 04:22.760 +Thank you for joining me today. I am Samir Pradhan from the Linguistic Data Consortium at the University of Pennsylvania + +04:23.760 --> 04:26.760 +And founder of osmantics.org + +04:26.760 --> 04:33.760 +We research in computational linguistics, also known as natural language processing, a sub-area of artificial intelligence + +04:34.760 --> 04:40.760 +With a focus on modeling and predicting complex linguistic structures from various signals + +04:41.760 --> 04:47.760 +The work we present is limited to text and speech, but it can be extended to other signals + +04:47.760 --> 04:57.760 +We propose an architecture, and we call it GRAIL, which allows the representation and aggregation of such rich structures in a systematic fashion + +04:59.760 --> 05:11.760 +I'll demonstrate a proof of concept for representing and manipulating data and annotations for the specific purpose of building machine learning models that simulate understanding + +05:11.760 --> 05:20.760 +These technologies have the potential for impact in almost any conceivable field that generates and uses data + +05:22.760 --> 05:32.760 +We process human language when our brains receive and assimilate various signals, which are then manipulated and interpreted within a syntactic structure + +05:33.760 --> 05:39.760 +It's a complex process that I have simplified here for the purpose of comparison to machine learning + +05:39.760 --> 05:51.760 +Recent machine learning models tend to require a large amount of raw, naturally occurring data, and a varying amount of manually enriched data, commonly known as annotations + +05:52.760 --> 06:01.760 +Owing to the complex and numerous nature of linguistic phenomena, we have most often used a divide-and-conquer approach + +06:01.760 --> 06:09.760 +The strength of this approach is that it allows us to focus on a single or perhaps a few related linguistic phenomena + +06:10.760 --> 06:17.760 +The weaknesses are the universe of these phenomena keep expanding as language itself evolves and changes over time + +06:18.760 --> 06:26.760 +And second, this approach requires an additional task of aggregating annotations, creating more opportunities for computer error + +06:26.760 --> 06:40.760 +Our challenge then is to find the sweet spot that allows us to encode complex information without the use of manual annotation or without the additional task of aggregation by computers + +06:42.760 --> 06:45.760 +So what do I mean by annotation? + +06:45.760 --> 06:59.760 +In this talk, the word annotation refers to the manual assignment of certain attributes to portions of a signal which is necessary to perform the end task + +07:00.760 --> 07:11.760 +For example, in order for the algorithm to accurately interpret a pronoun, it needs to know what that pronoun refers back to + +07:11.760 --> 07:19.760 +We may find this task trivial, however, current algorithms repeatedly fail in this task + +07:20.760 --> 07:26.760 +So the complexities of understanding in computational linguistics require annotation + +07:27.760 --> 07:36.760 +The word annotation itself is a useful example because it also reminds us that words have multiple meanings, as annotation itself does + +07:36.760 --> 07:51.760 +Just as I needed to define it in this context so that my message won't be misinterpreted, so too must annotators do at least for algorithms through manual intervention + +07:52.760 --> 07:58.760 +Learning from raw data, commonly known as unsupervised learning, poses limitations for machine learning + +07:59.760 --> 08:04.760 +As I described, modeling complex phenomena need manual annotations + +08:04.760 --> 08:10.760 +The learning algorithm uses these annotations as examples to build statistical models + +08:11.760 --> 08:13.760 +This is called supervised learning + +08:13.760 --> 08:37.760 +Without going into too much detail, I'll simply note that the recent popularity of the concept of deep learning is an evolutionary step where we have learned to train models using trillions of parameters in ways that they can learn richer hierarchical structures from very large amounts of annotated data + +08:37.760 --> 08:49.760 +These models can then be fine-tuned using varying amounts of annotated examples, depending on the complexity of the task, to generate better predictions + +08:50.760 --> 09:01.760 +As you might imagine, manually annotating complex linguistic phenomena can be a very specific, labor-intensive task + +09:01.760 --> 09:09.760 +For example, imagine if we were to go back through this presentation and connect all the pronouns with the nouns to which they refer + +09:10.760 --> 09:14.760 +Even for a short, 18-minute presentation, this would require hundreds of annotations + +09:15.760 --> 09:20.760 +The models we build are only as good as the quality of the annotations we make + +09:20.760 --> 09:31.760 +We need guidelines that ensure that the annotations are done by at least two humans who have substantial agreement with each other in their interpretations + +09:32.760 --> 09:40.760 +We know that if we try to train a model using annotations that are very subjective or have more noise, we will receive poor predictions + +09:41.760 --> 09:47.760 +Additionally, there is the concern of introducing various unexpected biases into one's models + +09:47.760 --> 09:54.760 +So, annotation is really both an art and a science + +09:55.760 --> 09:59.760 +In the remaining time, we will turn to two fundamental questions + +10:00.760 --> 10:09.760 +First, how can we develop a unified representation of data and annotations that encompasses arbitrary levels of linguistic information? + +10:10.760 --> 10:14.760 +There is a long history of attempting to answer this first question + +10:14.760 --> 10:18.760 +This history is documented in our recent article + +10:19.760 --> 10:26.760 +It is as if we as a community have been searching for our own holy grail + +10:27.760 --> 10:35.760 +The second question we will pose on is what role might Emacs, along with Org Mode, play in this process? + +10:35.760 --> 10:46.760 +While the solution itself may not be tied to Emacs, Emacs has built-in capabilities that could be useful for evaluating potential solutions + +10:47.760 --> 10:55.760 +It is also one of the most extensively documented pieces of software and the most customizable piece of software that I have ever come across + +10:56.760 --> 11:00.760 +Many would agree with that + +11:00.760 --> 11:08.760 +In order to approach this second question, we turn to the complex structure of language itself + +11:09.760 --> 11:13.760 +At first glance, language appears to us as a series of words + +11:14.760 --> 11:20.760 +Words form sentences, sentences form paragraphs, and paragraphs form completed texts + +11:20.760 --> 11:30.760 +If this was a sufficient description of the complexity of language, all of us would be able to read at least 10 different languages + +11:31.760 --> 11:33.760 +We know it is much more complex than this + +11:34.760 --> 11:37.760 +There is a rich, underlying, recursive tree structure + +11:38.760 --> 11:45.760 +In fact, many possible tree structures, which makes a particular sequence, and many others + +11:45.760 --> 11:50.760 +One of the better understood tree structures is the syntactic structure + +11:51.760 --> 12:00.760 +While a natural language has rich ambiguities and complexities, programming languages are designed to be parsed and imprinted deterministically + +12:01.760 --> 12:10.760 +Emacs has been used for programming very effectively, so there is a potential for using Emacs as a tool for annotation + +12:10.760 --> 12:14.760 +This would significantly improve our current set of tools + +12:15.760 --> 12:26.760 +It is important to note that most of the annotation tools that have been developed over the past few decades have relied on graphical indices + +12:27.760 --> 12:30.760 +Even those used for enumerated textual indices + +12:30.760 --> 12:42.760 +Most of the tools in use are designed for a user to add very specific, very restricted information + +12:43.760 --> 12:51.760 +It has not really made use of the potential that an editor, rich editing environment like Emacs, can add to the mix + +12:51.760 --> 12:59.760 +Emacs has long been able to edit and manipulate complex, embedded tree structures dependent in source code + +13:00.760 --> 13:05.760 +It is difficult to imagine the capabilities that we represent naturally + +13:06.760 --> 13:13.760 +In fact, it always does that, with features that allow us to quickly navigate sentences and graphs with a few keystrokes + +13:13.760 --> 13:20.760 +Add various text studies, create overlays to name, etc. + +13:21.760 --> 13:33.760 +Emacs has built up way too many control units, so we don't have to worry about the complexity of managing more languages + +13:34.760 --> 13:41.760 +In fact, this is not the first time Emacs has used control linguistic sequences + +13:41.760 --> 13:56.760 +One of the true moments in language natural language processing was the creation of a newly created syntactic tree for a million word collection of Wall Street articles + +13:57.760 --> 14:03.760 +This was about 1990, before Java or Oracle interfaces were common + +14:03.760 --> 14:13.760 +The tool that was used to create that corpus was Emacs, and it was created by Penn, known as the Penn Treebank + +14:14.760 --> 14:26.760 +And in 1992, about when the Linguistic Consortium was established, it's been about 30 years that it has been creating various language related resources + +14:26.760 --> 14:36.760 +The first outlining mode, in particular the outlining mode, rather enhanced the outlining mode + +14:37.760 --> 14:49.760 +Allows us to create red outlines, attaching properties to nodes, and why this command is really customizing some of the various pieces of information as per one's requirement + +14:49.760 --> 14:56.760 +This is also a very useful tool + +14:57.760 --> 15:03.760 +This enhanced outlining mode provides more power to Emacs + +15:04.760 --> 15:13.760 +It provides command for easily customizing, entering information, and at the same time hiding unnecessary context + +15:13.760 --> 15:25.760 +It allows control editing, this could be a very useful tool when we are focused on a limited amount of data + +15:26.760 --> 15:37.760 +The tool together allows us to create a rich representation that can simultaneously capture multiple possible sequences + +15:37.760 --> 15:42.760 +Capture details necessary to read the original sources + +15:43.760 --> 15:52.760 +Allows us to create hierarchical representation, wide structural capabilities that can take advantage of the concept of editance within the tree structure + +15:53.760 --> 16:00.760 +Together allow local manipulance structure, thereby minimizing data coupling + +16:00.760 --> 16:06.760 +The concept of tag outlining mode complements the hierarchy pattern + +16:07.760 --> 16:12.760 +Hierarchies can be very rigid, but through tags on hierarchies we can have multi-faceted representations + +16:13.760 --> 16:19.760 +As a matter of fact, outlining mode has the ability for tags to do their own hierarchical structure + +16:20.760 --> 16:23.760 +Further enhances the representational power + +16:23.760 --> 16:29.760 +All of this can be done as sequence, mostly for functional transformation + +16:30.760 --> 16:36.760 +Because most capabilities can be configured and customized, it is not necessary to do everything at once + +16:37.760 --> 16:41.760 +It allows us to intervene in the complexity of the representation + +16:42.760 --> 16:46.760 +Finally, all of this can be done in plain tag representation + +16:47.760 --> 16:50.760 +It has its own advantages + +16:50.760 --> 16:55.760 +Now let's look at a simple example + +16:56.760 --> 17:02.760 +The sentence is the thought of the moon with a telescope + +17:03.760 --> 17:07.760 +Let's just make a view of the sentence + +17:07.760 --> 17:19.760 +What is interesting is that it has a noun phrase i followed by an arrow to star + +17:20.760 --> 17:27.760 +Then the moon is another phrase and the telescope is a positional phrase + +17:27.760 --> 17:42.760 +Now, one thing you might remember from grammar school syntax is that there is a syntactical structure + +17:42.760 --> 17:57.760 +And in this particular case + +18:12.760 --> 18:23.760 +Because we know that the moon is not something that can hold the telescope + +18:24.760 --> 18:37.760 +That seeing must be by me, or by eye, and the telescope must be in my hand, or I am viewing the moon with a telescope + +18:37.760 --> 18:48.760 +However, it is possible that in a different context, the moon could be referred to an animated picture + +18:48.760 --> 19:07.760 +And could hold the telescope, in that case, the situation might be that I am actually seeing a moon holding a telescope + +19:07.760 --> 19:24.760 +And this is one of the most complex linguistic phenomena that requires world knowledge + +19:24.760 --> 19:38.760 +And it is called the P-attachment problem, where the positional phrases can be ambiguous and various different cues have to be used to reduce the ambiguity + +19:39.760 --> 19:45.760 +So in this case, as you saw, both the readings are technically true depending on the context + +19:45.760 --> 19:55.760 +So one thing we could do is cut the tree and duplicate it, and then create another node and call it another node + +19:56.760 --> 20:02.760 +And because this is one of the two interpreters, let's call one division A + +20:02.760 --> 20:15.760 +And that division essentially is a tile of zone A, and it says that the moon is holding the telescope + +20:15.760 --> 20:31.760 +Now we create another representation, where we capture the other interpretation, where the moon, or I am holding the telescope + +20:32.760 --> 20:38.760 +Sorry everyone to interrupt the audio here. Sameer, can you move your mouse a little bit? Just move it to the corner of your screen, thank you + +20:38.760 --> 20:49.760 +Now we have two separate interpreters in the same structure, and all we have to do is very quickly add a few keystrokes + +20:49.760 --> 21:08.760 +Now let's add another interesting thing. This is two different interpreters. It can be A, it can be B, it can be C, it can be D, or it can be D + +21:08.760 --> 21:23.760 +Basically, any entity that has the ability to see can be substituted in this particular node + +21:23.760 --> 21:37.760 +And let's see what we have here. Now we are just getting a zoom view of the entire structure we have created + +21:37.760 --> 21:52.760 +Essentially, you can see that by just using a few keystrokes, we are able to capture two different interpretations of a simple sentence + +21:52.760 --> 22:06.760 +And we are also able to add various alternate pieces of information that could help machine algorithms generalize better + +22:06.760 --> 22:25.760 +Now let's go to the next thing. In a sense, we can use the power of functional constructors to represent very potentially conflicting and structured readings + +22:25.760 --> 22:38.760 +In addition to this, we can also create a text with different structure and have them in the same place. This allows us to address the interpretation of certain sentences that may be occurring in the world + +22:38.760 --> 23:03.760 +While simultaneously giving information that can be more valuable. This makes the enrichment process all very efficient. Additionally, we can enrich the power of users of the feature or button who can not only expand, but also add information into it + +23:03.760 --> 23:19.760 +In a way, that could help machine algorithms generalize better by making efficient use of their functions. Together, UX and Ardmo can speed the enrichment of nodes in a way that allows us to focus on certain aspects and ignore others + +23:20.760 --> 23:28.760 +Extremely complex landscape structures can be captured consistently in a function that allows computers to understand the language + +23:28.760 --> 23:35.760 +We can then use tools to enhance the tests that we do in our everyday life + +23:36.760 --> 23:49.760 +However, this is the acronym or the type of specification that we are creating to capture this new and present virtual adaptation + +23:49.760 --> 24:06.760 +We will now look at an example of spontaneous speech that occurs in spoken conversations. Conversations consistently contain interest in speech, interrupts, disfluency, verbal nouns such as talk or laugh, and other noises + +24:06.760 --> 24:22.760 +Since spontaneous speech is simply a functional stream, we cannot take back words that come out of our mouths. We tend to make mistakes and correct ourselves as soon as we realize that we have spoken + +24:22.760 --> 24:35.760 +This process manifests through a combination of a handful of mechanisms, including immediate action after an error, and we do this unconsciously + +24:35.760 --> 24:51.760 +What we've taught here is an example of a language that has various aspects of the representation + +24:51.760 --> 25:14.760 +We don't have time to go through many of the details. I would highly encourage you to play. I'm making some videos for ASCII cinemas that I'll be posting and if you're interested you can go through those + +25:14.760 --> 25:33.760 +The idea here is to try a slightly more complex use case, but given the time consumption and the amount of information that can fit in the screen, this should be very informative + +25:33.760 --> 25:46.760 +But at least you'll see some idea of what can be followed. In this particular case, you're saying that there's a sense which is what I am telling now + +25:47.760 --> 25:59.760 +Essentially, there is a repetition of the I am, then there is a proper word, nobody can try to say the same thing but start by saying true, and then correct themselves by telling now + +25:59.760 --> 26:13.760 +So in this case, we can capture a sequence of words + +26:13.760 --> 26:30.760 +The interesting thing is that in NLB, sometimes we have to typically use words that have this interpretation of the context of I am + +26:30.760 --> 26:55.760 +You can see that here, this view shows that with each of the words in the sentence or in the representation, you can have a lot of different properties that can attach to them + +26:55.760 --> 27:07.760 +And these properties are typical then, like in the earlier slide, but you can use the cues of all these properties to various kind of searches and filtering + +27:07.760 --> 27:27.760 +And the slide here is actually not a legitimate text, on the right are descriptions of what each of these present. This information is also available in the article and you can see there + +27:27.760 --> 27:38.760 +But it shows how rich a context you can capture, it's just a closer snapshot of the properties on the word + +27:39.760 --> 27:50.760 +And you can see we can have like whether the word is broken or not, it's incomplete, whether some words want to be filtered for parsing, and say this is ignored + +27:50.760 --> 28:00.760 +Or some words are restart marks, we can add a restart marker, sometimes some of these migrations + +28:01.760 --> 28:10.760 +The other fascinating thing about this presentation is that you can edit properties in the content view + +28:10.760 --> 28:20.760 +So you have this pillar data structure and combining hierarchical data structure, as you can see, you may not be able to see here + +28:20.760 --> 28:48.760 +What has also happened here is that some of the tags have been inherited from earlier groups, and so you get a much better picture of things, and essentially you can filter out things that you want to access, access them, and then integrate it into the model + +28:48.760 --> 29:04.760 +So in conclusion today we have posed and implemented the use of the architecture layout, which allows representation, manipulation, and recognition of rich linguistic structure in systematic fashion + +29:05.760 --> 29:15.760 +We've shown how Google advances tools available for building machine learning models to simulate understanding + +29:15.760 --> 29:22.760 +Thank you Verj for your attention and contact information on this slide + +29:23.760 --> 29:41.760 +If you are interested in an additional sample to demonstrate the representation of speech and retext together, continue, otherwise we'll stop here + +29:41.760 --> 29:46.760 +Is it okay to stop? + +29:47.760 --> 29:53.760 +Yes Amir, it's okay to stop now. Thank you so much for your talk. Are you able to see the pad on your end? + +29:54.760 --> 29:58.760 +In the etherpad? + +29:59.760 --> 30:01.760 +Yes, in the etherpad, do you have the link? + +30:02.760 --> 30:06.760 +I'm there, nothing has happened so far + +30:06.760 --> 30:16.760 +I'm going to put a link to the pad, give me just a second right now. Colwyn, feel free to interrupt me whenever you're here + +30:17.760 --> 30:23.760 +I'm actually looking at the pad, I don't think anything is added in + +30:23.760 --> 30:37.760 +There don't seem to be questions yet, yes. It's probably because of the audio problem people might have a little bit of trouble hearing you talk + +30:38.760 --> 30:46.760 +Do you have anything else you'd like to add on your talk maybe? Because I think it was an excruciating process to get it out to us + +30:47.760 --> 30:51.760 +You had to get a lot of darlings in the process didn't you? + +30:51.760 --> 30:59.760 +Yeah, in the process of preparing this talk you had to select a lot of stuff that you wanted to include in your talk + +31:00.760 --> 31:07.760 +Can I ask you to put on your webcam or something? Are you able to do this? + +31:07.760 --> 31:25.760 +I'm starting to see a few questions come in. Just let us know when you're ready + +31:26.760 --> 31:31.760 +Colwyn, I'll let you take over. Can you hear me? + +31:31.760 --> 31:39.760 +Yeah, I hear you, the audio is just a little bit choppy, but we'll just talk slowly and hopefully that will work fine + +31:40.760 --> 31:51.760 +Well thanks for the great talk, that was just kind of mind blowing actually, I'm looking forward to re-watching it probably two or three times + +31:52.760 --> 31:54.760 +Who is this? + +31:55.760 --> 31:57.760 +This is Colwyn again + +31:57.760 --> 32:04.760 +Okay, so we do have a few questions coming in + +32:05.760 --> 32:08.760 +I'm going to answer them + +32:09.760 --> 32:14.760 +Okay, well I can read them to you and then we'll transcribe your answers if you'd like to answer them live + +32:14.760 --> 32:29.760 +Oh, I see, let me do that. The identity you've come up as the pantry, that has been to depth and people are putting out perfect scores on that + +32:30.760 --> 32:35.760 +But that's not quite the point, I mean sometimes + +32:36.760 --> 32:39.760 +Oh, I should also speak slowly + +32:39.760 --> 32:54.760 +Sometimes the research community goes too far and reuses the evaluations and doesn't really transfer to domains + +32:54.760 --> 33:14.760 +But our richer and newer data that are available is always, we're in the process, I am currently and a couple of my colleagues, we're getting new data so that we can actually make sure the learning model is better + +33:14.760 --> 33:35.760 +Oh shoot, and then I failed to unmute myself on the stream here + +33:35.760 --> 33:43.760 +And I think you're answering in text right now one of these, so I'll just let you drive + +33:44.760 --> 33:51.760 +So one thing I'll add is, please read the question that you're answering when you read out your answers + +33:52.760 --> 33:55.760 +Oh, I see, yes + +33:55.760 --> 34:06.760 +And we're showing the pad on the stream so people are seeing the text and that's probably a good approach considering we're having a little shakiness with the audio + +34:25.760 --> 34:35.760 +In fact, I think my audio may be pretty stable, so I'll just start reading out both the questions and the answers + +34:36.760 --> 34:42.760 +But Samir, if you want to, you're welcome to interrupt me if you want to expand on your remarks at all + +34:43.760 --> 34:52.760 +So the first question was, has the 92U pin corpus of articles feat been reproduced over and over again using these tools + +34:52.760 --> 35:01.760 +The answer was not quite, that was sort of a first wave, the particular corpus was the first one that started a revolution, kind of + +35:02.760 --> 35:13.760 +But there are more corpus being made available, in fact I spent about 8 years, a decade ago, building a much larger corpus with more layers of information + +35:13.760 --> 35:27.760 +And it is called the Onto Notes, it covers Chinese and Arabic, DARPA funded, this is freely available for research to anyone, anywhere + +35:28.760 --> 35:32.760 +That was quite a feature, quite a feat + +35:32.760 --> 35:45.760 +The next question, is this only for natural languages like English or more general, would this be used for programming languages + +35:46.760 --> 35:54.760 +Samir said, I am using English as a use case, but the idea is to have it completely multilingual + +35:54.760 --> 36:12.760 +I cannot think why you would want to use it for programming languages, in fact the AST in programming languages is sort of what we are trying to build upon + +36:12.760 --> 36:29.760 +So that one can capture the abstract representation and help the models learn better + +36:29.760 --> 36:49.760 +These days the models are trained on a boatload of data, and so they tend to be overfitted to the data + +36:49.760 --> 37:13.760 +So if you have a smaller data set, which is not quite the same as the one that you had the training data for, then the models really do poorly + +37:13.760 --> 37:29.760 +It is sometimes compared to learning the sine function, using the points on the sine wave, as opposed to deriving the function itself + +37:29.760 --> 37:46.760 +You can get close, but then you cannot really do a lot better with that model + +37:47.760 --> 37:56.760 +This is sort of what is happening with the deep learning hype + +37:56.760 --> 38:13.760 +It is not to say that there hasn't been a significant advancement in the tech, in the technologies + +38:13.760 --> 38:28.760 +But to say that the models can learn is an extreme overstatement + +38:28.760 --> 38:46.760 +Awesome answer. I'm going to scroll my copy of the pad down just a little bit, and we'll just take a moment to start looking at the next question + +38:46.760 --> 38:57.760 +So I'll read that out. Reminds me of the advantages of pre-computer copy and paste, cut up paper and rearrange, but having more stuff with your pieces + +38:58.760 --> 39:11.760 +Right. Kind of like that, but more intelligent than copy-paste, because you could have various local constraints that would ensure the information is consistent with the whole + +39:11.760 --> 39:30.760 +I am also envisioning this as a use case of hooks + +39:30.760 --> 39:57.760 +And if you can have rich local dependencies, then you can be sure, as much as you can, that the information signal is not too corrupted + +39:57.760 --> 40:22.760 +Have you used it on real life situations? No. I am probably the only person who is doing this crazy thing + +40:22.760 --> 40:47.760 +It would be nice, or rather, I have a feeling that something like this, if worked upon for a while, by many people, by many, might lead to a really really potent tool for the masses + +40:47.760 --> 41:00.760 +I feel strongly about using, sorry, I feel strongly about giving such power to the users + +41:00.760 --> 41:17.760 +And be able to edit and share the data openly, so that they are not stuck in some corporate vault somewhere + +41:17.760 --> 41:31.760 +Amen. One thing at a time. Plus one for that as well. + +41:31.760 --> 41:47.760 +Alright, and I will read out the next question. Do you see this as a format for this type of annotation specifically, or something more general that can be used for interlinear glosses, lexicons, etc? + +41:47.760 --> 42:12.760 +Absolutely. In fact, the project I mentioned, One Notes, has multiple layers of annotation, one of them being the propositional structure, which it uses for a large lexicon that covers about 15k verbs, so 15,000 verbs, and nouns + +42:12.760 --> 42:25.760 +and all their argument structures that we have been seeing so far in the corpora + +42:26.760 --> 42:35.760 +This is about a million propositions that have been released recently + +42:35.760 --> 42:57.760 +We just recently celebrated a 20th birthday of the Corpus. It is called the Prop Bank. + +42:57.760 --> 43:19.760 +There is an interesting history of the banks. It started with Tree Bank, and then there was Prop Bank, with a capital B + +43:19.760 --> 43:47.760 +But then, when we were developing Onto Notes, which contains syntax, named entities, conference resolution, propositions, word sense, all in the same hole + +43:47.760 --> 43:57.760 +Sorry for the interruption. We have about 5 minutes and 15 seconds. + +43:58.760 --> 44:09.760 +That sounds good. If you want to just read it out, then. I think that would be the most important thing, that people can hear your answers, and I and the other volunteers will be going through and trying to transcribe this. + +44:09.760 --> 44:19.760 +So go for it. + +44:20.760 --> 44:25.760 +So, Samuel, just to make sure, did you have something to say right now? + +44:25.760 --> 44:39.760 +Oh, okay. I think these are all good questions, and there is a lot of it, and clearly the amount of time is not enough. + +44:39.760 --> 44:54.760 +But I am trying to figure out how to have a community that can help such a person. + +44:54.760 --> 45:12.760 +One of the things that I am thinking that this could make possible is to take all the disparate resources that have inconsistent or not quite compatible additions on them, + +45:12.760 --> 45:34.760 +and which are right now just iso of data, small island of data floating in the sea. But representation could really bring them all together, and then they could be much richer, full, and consistent. + +45:34.760 --> 45:46.760 +Like you said, one of you was asking about the islands and the subcorporas that have sentiment and information. + +45:46.760 --> 46:09.760 +I am, yeah, there's a lot of various. Common people, the way it could be used for common people is to potentially make them available that currently doesn't recognize the current models on dual land, + +46:09.760 --> 46:19.760 +so that more people can use the data and not be biased towards one or the other. + +46:19.760 --> 46:42.760 +And there are some things, when people train these models using huge amounts of data, no matter how big the data is, it is a small cross-section of the universe of data, and depending on what drop select will be your model, those will be the seconds for those. + +46:42.760 --> 46:56.760 +And some people will be interested in using them on purpose X, but somebody else might want to use them on purpose Y, and if the data is not in, then it's harder to do that. + +47:00.760 --> 47:09.760 +Okay, so I think we've got just about 100 seconds left, so if you have any closing remarks you want to share, and then we'll start transitioning. + +47:09.760 --> 47:17.760 +Thank you so much, I really appreciate, this was a great experience, frankly. + +47:17.760 --> 47:46.760 +I've never had a complete pre-related level of talk before, I guess, in a way it was for a different audience. It was extremely helpful, and I learned that planning sort of tried to create a community. + +47:47.760 --> 47:52.760 +Thank you so much. + +47:53.760 --> 47:58.760 +I'll take it over, we are going to move to the next talk. Thank you so much, Samir, and sorry for the technical difficulty. + +47:58.760 --> 48:23.760 +As Corbin said, we will try to manage as much of the information that was shared during this Q&A, we will file everything away where we can use it, and make captions and all this, so don't worry about the difficulty. + +48:28.760 --> 48:29.760 +Thank you. + diff --git a/2022/captions/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--answers.vtt b/2022/captions/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--answers.vtt new file mode 100644 index 00000000..b100ee27 --- /dev/null +++ b/2022/captions/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--answers.vtt @@ -0,0 +1,815 @@ +WEBVTT + +00:00.000 --> 00:04.800 +say everyone can say hi to Sasha. Oh, we are recording now. Okay, great. But do say thanks + +00:04.800 --> 00:10.160 +to Sasha for being everywhere at once trying to make sure that the stream is working properly. + +00:10.160 --> 00:12.560 +She has the magic touch, yes, definitely. + +00:13.920 --> 00:18.640 +All right, Vala, sorry to do that. But now the floor is yours. You can take as many questions + +00:18.640 --> 00:22.720 +as you want. And I'll be making humorous comments when I'm not busy putting out fires in the + +00:22.720 --> 00:30.160 +background. Okay. All right. Thanks, folks. So thank you for the questions. I'll take one by one. + +00:30.160 --> 00:35.600 +How do you link the notes together so you could search through them in the future? Okay, this + +00:36.320 --> 00:44.560 +video I made before, or rather the experience that I shared with you was before I got into + +00:44.560 --> 00:51.600 +linking of notes and how to make sense of it. I'm still I mean, I'm thankful for guys like Leo for + +00:51.600 --> 00:59.120 +putting our room together. However, yes, you can take a bow. However, I'm still in the infancy of + +00:59.120 --> 01:07.200 +trying to link these topics. So the suggestion I have is once you convert your handwritten text + +01:07.200 --> 01:15.520 +into text, so handwritten stuff from your notebook into text, or if you write it, if you have a + +01:15.520 --> 01:24.640 +writing device, and you can convert it into text, input it into org rom and link it the way you + +01:24.640 --> 01:34.000 +would do it. So I have not yet gone into it. But having said that, I've started doing it like a + +01:34.000 --> 01:39.840 +week ago, I started linking these handwritten notes, which are converted into text, and then + +01:39.840 --> 01:47.760 +can be linked to any other note that you want. So that's that would be my response to the linking + +01:47.760 --> 01:54.640 +part. So which actually leads to the next question, is it necessary to OCR your handwriting? + +01:55.760 --> 02:00.720 +This is a necessary step, you have to do optical character recognition, as in convert all the + +02:00.720 --> 02:10.640 +handwritten stuff into text, because otherwise, indexing and linking becomes a problem later on. + +02:10.640 --> 02:16.240 +If it's only you going through the handwritten notes, so that you browse it and read it when + +02:16.240 --> 02:23.760 +you want it, that's okay. So you don't have to worry about OCR, just input the JPEG, the PNG, + +02:23.760 --> 02:31.600 +or whatever file you use, format you use, input it into under the org mode headline, or the org + +02:31.600 --> 02:40.720 +rom file, and you should be good to go. However, if you want the other stuff, then OCR becomes a + +02:40.720 --> 02:50.960 +necessity. So I'm unfamiliar with any package that does the OCR conversion inside of the Emacs + +02:50.960 --> 03:02.880 +ecosystem. So I use tools like OneNote, or I think Google Keep does that. I don't know of any other + +03:02.880 --> 03:10.240 +free slash open source tools which do that. I'm not familiar, but I use an external tool to convert + +03:10.240 --> 03:16.800 +handwritten text into notes, if you want the link again, read rating, if you want the linking and + +03:16.800 --> 03:24.560 +the indexing. If not, for me, sometimes screenshots and handwritten notes have to go together, + +03:24.560 --> 03:31.360 +so that I can find out, okay, this team or this student was talking about his project, + +03:31.360 --> 03:36.880 +or her project, and this is the screenshot of their presentation, and I write down my notes, + +03:36.880 --> 03:44.560 +and it goes along with that. That was for me a key to have that together, and not just hand + +03:44.560 --> 03:49.600 +typewritten notes, because I have no recollection later on, but handwritten notes I seem to recall + +03:49.600 --> 03:54.160 +better, and that's the whole idea of how to integrate. I was breaking my head over it. + +03:55.200 --> 04:01.840 +So those are the two responses to those two questions. What about searching notes? Notes + +04:01.840 --> 04:09.360 +to text while being offline? Oh my god, this is a related one as well. So yes, it is going to be + +04:09.360 --> 04:15.520 +searching has to be linked. If you want the searching facility, it has to be converted text. + +04:15.520 --> 04:22.320 +There are no two ways to that right now. Proprietary software like Google Keep seems to + +04:22.320 --> 04:31.120 +manage it. I think others, OneNote also, Dropbox also says that they can do it. I haven't tried it + +04:31.120 --> 04:37.600 +there, searching it inside these systems to look for handwritten text, because I don't use that for + +04:37.600 --> 04:44.160 +managing my projects or making sense of what I've written down. So when it comes to + +04:44.160 --> 04:53.200 +doing all those tasks, I use Org Mode. So I would say you absolutely mandatory for us to convert + +04:53.200 --> 05:00.160 +this, unless I've made that appeal at the end of my talk, saying if Org Mode, Emacs, Org Mode + +05:00.160 --> 05:06.080 +community can put their brains together. I don't know if I can help, but if you want me for + +05:06.080 --> 05:12.640 +testing your package, I certainly put my hands up for this for sure. I can do that. I'm keen on + +05:12.640 --> 05:21.680 +trying that out. I hope that answered the third question. These articles on, those articles are + +05:21.680 --> 05:28.960 +not taking seems interesting. Could you get a link for them? I'll definitely drop it in the Etherpad + +05:28.960 --> 05:38.800 +after this recording is done for sure. I will leave it there. It is my good friend in France + +05:38.800 --> 05:44.320 +who shared that with me saying when he saw the title of my talk, he sent me a whole bunch of + +05:44.320 --> 05:50.000 +articles saying, hey, this seems to support what you told me. And I have sort of shown you the + +05:50.000 --> 06:00.080 +screenshots in the video, but I'll definitely leave some of these links in the Etherpad after this. + +06:00.080 --> 06:05.360 +Oh yeah, I've used, the next question is, have you looked at taking handwritten notes on a tablet + +06:05.360 --> 06:13.920 +like, I don't know how to say that, journal with an X plus plus? So yes, I have started using it + +06:13.920 --> 06:22.560 +again. The only tools I used were OneNote and Google Keep because those were the only ones + +06:22.560 --> 06:30.080 +which would allow for writing using my stylus. I'm sure there are other apps which can do it, + +06:30.080 --> 06:35.600 +but do they convert it into text and how easy is it to input it into org mode is something that, + +06:35.600 --> 06:44.000 +so for now, the Dropbox method for me was I write notes, I take a mobile camera, take a picture, + +06:44.000 --> 06:51.440 +upload it to Dropbox. Why Dropbox? Because it allows JPEG to be uploaded. Whereas PDF, + +06:51.440 --> 07:00.080 +I find it very cumbersome from handwriting to get it in here. So JPEG, I can input it into + +07:00.080 --> 07:06.320 +org mode, I'm sorry, OneNote and that converts it into text and then I take it and put it into, + +07:07.200 --> 07:15.840 +the inbox has the image as well as the converted text. So I put it into my system, + +07:15.840 --> 07:22.240 +the org mode system. So that's how my workflow really is. I don't know if I answered that + +07:22.240 --> 07:30.720 +question very well. I've used X journal, but not a whole lot to give you intelligent advice. + +07:32.160 --> 07:36.560 +Have you tried out remarkable device to take handwritten notes as well? I haven't figured out + +07:36.560 --> 07:43.280 +how to link the files back into org mode in a constructive way yet. Okay, so yes, I've heard + +07:43.280 --> 07:50.160 +of remarkable devices. There's another one called Books, if I'm not wrong, and Amazon has also come + +07:50.160 --> 07:58.240 +up with a writing, I call it the writing Kindle. I don't know what it's called, a smarter name for + +07:58.240 --> 08:08.720 +that. So these devices do exist, but I'm not sure if they convert it into text and if they can put + +08:08.720 --> 08:15.760 +it in a repository, which is accessible on your computer, where you can import it into org mode. + +08:15.760 --> 08:24.560 +I'm not so sure about those things. So linking that would be nice if you can have access to + +08:24.560 --> 08:31.600 +where your Emacs org mode ecosystem is. For me, Dropbox works very well because it's on my mobile + +08:31.600 --> 08:38.480 +phone, smartphone, as well as on my computer. So the linking happens and I can just push it all + +08:38.480 --> 08:46.160 +into my org mode inbox and process them and refile the notes or do all the good stuff linking. If I + +08:46.160 --> 08:52.000 +have the text, I can link them, do all that I can. I can certainly do that. So that's my answer to + +08:52.880 --> 09:00.000 +the... where did it go? Remarkable stuff. That question is gone. I don't know. Okay, anyway, + +09:00.000 --> 09:03.200 +so that was... Yeah, I don't see it either anymore. It's disappeared, but thank you for + +09:03.200 --> 09:12.080 +taking the time to answer it. Okay. So next one. How are we on time, Leo? I can talk all day. + +09:13.360 --> 09:17.360 +You are completely good on time. Don't worry. We have until 45 at the current hour + +09:17.920 --> 09:22.480 +until we need to move on to the next box. It's very roomy. Take your time answering as many + +09:22.480 --> 09:27.520 +questions as you want. Okay. All right. So I won't have either. All right. Something to think about + +09:27.520 --> 09:33.440 +is handwritten and org transcribed notes, deduplication for searching. Do you want one or + +09:33.440 --> 09:39.360 +the other? Oh, okay. So this is wishlist. Oh, thank you so much for asking this question. Transcription + +09:39.360 --> 09:45.840 +for me has become important, not only handwritten, but also voice notes. So this is another thing + +09:45.840 --> 09:53.440 +that I've been... I have a couple of podcasts where I want a summary of my important points + +09:53.440 --> 10:01.760 +and I can grab the voice clips, but transcribing it, in spite of so many tools out there, + +10:01.760 --> 10:06.880 +I find it very difficult to transcribe them automatically. I can make the error corrections + +10:06.880 --> 10:13.680 +later on, but I find it extremely cumbersome to transcribe voice notes. So it would be nice + +10:13.680 --> 10:21.760 +if we can have voice transcription, one. Handwritten transcription also helps for sure. + +10:21.760 --> 10:29.360 +If it can be done, then it makes it... Actually, that's a great idea. Transcription. I wasn't + +10:29.360 --> 10:36.400 +thinking of inside. I was thinking of basically taking the notes and somehow linking it within + +10:36.400 --> 10:43.600 +the handwritten stuff itself. Maybe my limitation imagination, but transcription is definitely + +10:43.600 --> 10:51.200 +something that I would be very interested in. Voice as well as handwriting. I've seen it in + +10:51.200 --> 10:57.200 +some other software. I think it was OneNote where I saw that you can record yourself vocally and + +10:58.000 --> 11:03.360 +also there is a transcribe for paid packages. They have transcription as well. And then you + +11:03.360 --> 11:10.880 +could link text from there on. So if we can do it in our R mode system, nothing like that. I keep + +11:10.880 --> 11:21.920 +seeing it and notes keep coming up there. I keep writing it on my Wacom device or my remarkable + +11:21.920 --> 11:28.880 +device and it goes into my R mode as I write and as I speak. Unbelievable. This is important. This + +11:28.880 --> 11:35.120 +is really important. Thanks for the great idea. I hope this... Again, I volunteer myself to test + +11:35.120 --> 11:43.120 +this out as well. I have tons of... At least this year, I have produced 300 minutes of podcast + +11:43.120 --> 11:52.720 +content and I find it extremely cumbersome to transcribe it easily. So if this can do it for us, + +11:52.720 --> 12:01.280 +at least even a minute or two of the text, nothing like it. That's amazing. The last question I see + +12:01.280 --> 12:08.080 +is how often do you instead type in and summarize your notes? Would you consider that a suitable + +12:08.080 --> 12:17.120 +approach for yourself at the end of the day? That's a good idea of typing notes. When I'm in + +12:17.120 --> 12:26.400 +a hurry, I type. So when I'm in a tearing hurry or my notes is just lying somewhere and there's + +12:26.400 --> 12:32.400 +a meeting going on, I don't want to get up and go get my notes, I immediately go to my R mode and + +12:32.400 --> 12:39.680 +start typing there. So that's what I do. At the end of the day, I don't have that habit at all. + +12:39.680 --> 12:44.480 +I promised myself that I should do daily journaling and all that because it's... Everybody + +12:44.480 --> 12:50.240 +says it's a good habit. I've done it a few times and I found it to be good, but it's not a habit + +12:50.240 --> 13:00.400 +I'm yet on. So I mean, I also have a shortcut, a keyboard shortcut for the org-grown dailies. + +13:01.360 --> 13:05.440 +I do have that and it shows up on the calendar, the blue color. I love those features, + +13:05.440 --> 13:11.520 +but I'm not on it. I should make it a habit. As much as I look at my org agenda, + +13:11.520 --> 13:21.280 +you should have dailies as well. I type out when I'm in a hurry. Perhaps even writing + +13:22.240 --> 13:30.720 +your daily journal could be helpful. Particularly, I find that I'm comfortable typing English + +13:30.720 --> 13:40.080 +letters. If non-English, for example, my mother tongue has a different script, which I can't + +13:40.080 --> 13:46.560 +easily type using English. So perhaps writing is easier there for me rather than typing it out. + +13:46.560 --> 13:56.000 +It feels very weird. So perhaps that could help for non-English, non-Roman script. Perhaps + +13:56.000 --> 13:59.840 +writing is better for journaling as well. I guess that could help. + +14:02.320 --> 14:07.040 +Okay, Bala, if I can interrupt you for a second because don't worry, I'm not stopping you with + +14:07.040 --> 14:12.000 +the questions. I told you you have until 45 and I will honor what I said before. But I just wanted + +14:12.000 --> 14:17.440 +to let people know that we have opened up the BBB chat room. So if people want to join the room now + +14:17.440 --> 14:21.440 +and ask questions directly to Bala, who has already answered many of your questions on the + +14:21.440 --> 14:27.520 +pad, but if you have more questions or if you'd just like to chat with Bala, well, do feel free to + +14:28.320 --> 14:34.240 +join the room. The link has been pasted on the ISE channels. It's also available on the talk page at + +14:34.240 --> 14:39.040 +the top. So you should be able to find the link pretty easily. And even if we move to the next + +14:39.040 --> 14:42.960 +talk, if you're still there and still want to chat with Bala, provided Bala is available and does not + +14:42.960 --> 14:48.400 +need to sleep, by the way, with respect to the fact that it's really late over there, do feel free to + +14:48.400 --> 14:53.200 +hang around a little more and ask more questions and we'll be posting all of this on the website + +14:53.200 --> 14:58.000 +afterwards. So Bala, I think, do you have one more question on the pad or was it the last one? + +14:58.000 --> 15:04.080 +Let me check. I think that was the last one. Oh, there is a new question coming up just before that. + +15:04.800 --> 15:11.280 +Do take it then. Sure. I was going to say something of an experience I wanted to share, + +15:11.280 --> 15:18.720 +but anyway, I can answer this. How fancy has your handwritten notes import been? + +15:18.720 --> 15:28.800 +Okay, I'm going to wait for this. I'm not sure if we're talking about importing the notes into, + +15:28.800 --> 15:34.080 +like, is it merely importing the files or is it about importing it to your note-taking system, + +15:34.080 --> 15:42.720 +like, or whatnot? Okay, okay, okay. I get it. I get it. So I have a simple system for, yes, + +15:42.720 --> 15:50.240 +I absolutely agree with you. I mean, the birth of org-mode was that you wanted notes and you wanted + +15:50.240 --> 15:57.120 +tasks inside it, right? So that was the origin of that. So I think the same philosophy applies for + +15:57.120 --> 16:03.440 +handwritten notes as well because you're writing down notes and somebody says, hey Bala, can you + +16:03.440 --> 16:10.560 +send me this document by next Wednesday? And I write that down in my notes and then I send it + +16:10.560 --> 16:18.000 +and I write that down in my notes and that's a task. So I just put a star next to it. So I know + +16:18.000 --> 16:25.600 +when I am scanning, I don't think that shows up as a, I don't think star shows up as anything in my + +16:26.240 --> 16:34.320 +import, but I know when I'm scanning it that I need to keep track of that as a task. So in the + +16:34.320 --> 16:44.880 +talk about it is in OneNote, control-1 is the shortcut for ToDo and if it is converted into + +16:44.880 --> 16:54.720 +text, yes, of course, alt-enter in org-mode will work as well. So yes, so I think that is important + +16:54.720 --> 17:01.040 +even, so that's the only thing that I do is an asterisk or a star just before the note so that + +17:01.040 --> 17:09.360 +it tells me that it is a task that I have to keep track of. I even put a date so that the + +17:09.360 --> 17:18.160 +numbers also get imported into org-mode. But my wish list, this has gotten me into me wishing is + +17:18.880 --> 17:25.600 +if the handwriting notes, I mean the gadget, the device, the remarkable or the Amazon + +17:25.600 --> 17:34.160 +writing pads of the world, if we can actually write down notes with a star, an asterisk, + +17:34.160 --> 17:40.320 +and the headline and scheduled and all that and import it directly into org-mode, I think + +17:40.320 --> 17:47.840 +that's doing away with a whole bunch of in-between scanning, uploading, processing, and all that. This + +17:47.840 --> 17:54.000 +can go directly, you can start refiling into your system. So that would be nice. So somebody + +17:54.000 --> 18:01.520 +is asking me for a wish list, here's one more too, if we can do that. So that makes basically + +18:01.520 --> 18:08.960 +a writing org-mode rather than like as if it's a language, like a human language, rather than it + +18:08.960 --> 18:14.080 +being something restricted to a computer. So that's interesting. That's an interesting thought. + +18:15.440 --> 18:22.480 +Just to glorify handwriting, I don't know if it has anything to do with the questions. A few days + +18:22.480 --> 18:30.400 +ago, a client of mine asked me for a talk and I was going to give them the plain vanilla talk, + +18:31.280 --> 18:38.880 +but I decided to pause myself and write down what I was going to talk about. Actually that gave + +18:38.880 --> 18:48.080 +rise to a completely different idea and the whole thing was far more effective compared to what was + +18:48.080 --> 18:57.280 +my plain vanilla. According to me, that handwritten ideation that I did with a white space really + +18:57.280 --> 19:05.600 +helped me think beyond what was my plain vanilla talk. Of course, the talk went well, I think, + +19:06.160 --> 19:12.640 +and the audience did have fun because I even jotted down a few things that I wanted to crack + +19:12.640 --> 19:19.120 +jokes on. All that went into my notes. So I think handwriting is sort of under-marketed, + +19:19.120 --> 19:25.680 +underplayed so much with the advent of typing and these things becoming so efficient and easy + +19:25.680 --> 19:32.000 +that I think that all your ideas, if they come together, I think handwritten notes will become + +19:33.200 --> 19:40.160 +part and parcel of the org-mode system itself and an effective and efficient way of capturing our + +19:40.160 --> 19:49.280 +thoughts. All right, Bala. So I think you don't have any more questions currently. I don't see + +19:49.280 --> 19:53.040 +anyone with a microphone on. So by the way, if you're joining us on BBB and if you want to ask + +19:53.040 --> 19:57.120 +your questions, you do have to join with a microphone. It is interesting for you to join + +19:57.120 --> 20:02.960 +listening only, but if everyone does this and nobody turns on the microphone, it's going to be + +20:02.960 --> 20:07.200 +very lonely for Bala and myself. I can ask questions for you. I have plenty of questions + +20:07.200 --> 20:11.680 +that I'd love to ask. I did get my own tablet. Oh, actually, let me show the stream. Let me... + +20:11.680 --> 20:17.200 +Oops. Can I un-full screen this? Yes. Okay. Let me try to make the screen a little bigger so that + +20:17.200 --> 20:21.680 +you can see me. Okay. I was going to talk to you about, if we have a little more time, because I do + +20:21.680 --> 20:26.800 +have a tablet like this, which allows me to do handwritten notes. This is... Don't worry too much. + +20:26.800 --> 20:32.720 +This is a lead code exit slide that I was solving. And this is Yink, which allows me to type my + +20:32.720 --> 20:38.640 +stuff. And I bought this about two years ago. And I've really been struggling to find ways to... + +20:40.080 --> 20:44.720 +How do I work both in the Emacs and how do I work with my NVDA notes, which is why I was really + +20:44.720 --> 20:49.840 +interested with your talk, because honestly, right now, those are two completely separate + +20:49.840 --> 20:54.800 +collections of notes. What is in my machine, this device right there, is its own thing. + +20:56.080 --> 21:01.760 +It has its own quality. Do I do my journaling in it? I do my journaling, maybe. I also do my lead + +21:01.760 --> 21:09.040 +code exercise. But that's about it. And I wish it were easy for me to connect the dots between + +21:09.040 --> 21:14.400 +what I've got on this device and what I've got on my computer right in front of me. So I can talk + +21:14.400 --> 21:20.800 +some more about this, but people could also join and ask their own questions. I can talk to Bala + +21:20.800 --> 21:27.840 +whenever I want. I've been in touch with Bala for quite a while. And I'll be able to do this + +21:27.840 --> 21:32.640 +whenever. But this is your chance for you to do this, to have your question answered, + +21:32.640 --> 21:38.640 +and for the question to leave on EmacsConf forever and ever. All the talks for EmacsConf, + +21:38.640 --> 21:44.080 +all the questions since three years ago have been published. So it is your chance to, + +21:45.440 --> 21:50.160 +if you're not making a talk of your own, at least you have the questions of your own leaving on + +21:50.160 --> 21:59.920 +a website. So Bala, I believe you were a little interested with my little device. Do you actually + +21:59.920 --> 22:04.640 +have a device of your own that allows you to take notes like this? Or is it just written on paper? + +22:06.240 --> 22:14.800 +My computer is a touchscreen, so I can write. I have a stylus that I can use to write anywhere + +22:14.800 --> 22:22.080 +on the screen. So I take the laptop and actually fold it, and I can use it like a notebook. So this + +22:22.080 --> 22:29.840 +is my use case these days. So when I'm learning, I'm learning Japanese, by the way. And I tell you, + +22:30.480 --> 22:35.840 +there's no way I could have retained so much if I had not written Japanese out, the characters. So + +22:37.200 --> 22:44.400 +this is critical. Writing is critical. And their ideas, when they're externalized, + +22:44.400 --> 22:50.160 +you see it while you're writing it, there's a physical action, you feel the proximity to your + +22:50.800 --> 23:00.800 +ideas, what you're doing. So typing, yes, it is also physical. But for me, it's one step away from + +23:02.160 --> 23:07.760 +writing down. For me, that's going to make you laugh. I was also studying Japanese and I do have + +23:07.760 --> 23:14.800 +my own kanji that allows me to do my practice. So please don't look at it. If you're going to pause + +23:14.800 --> 23:18.640 +this video and check what I've written, you will be sorely disappointed because those are just + +23:18.640 --> 23:24.160 +collection of verbs. But this is how I practice my kanji as well. And it's been amazing. This is, + +23:25.040 --> 23:28.800 +you know, it is such a wonderful usage, because if you try learning kanji, + +23:28.800 --> 23:32.480 +just by seeing them and not putting them in your hand or embedding them in your hands, + +23:32.480 --> 23:38.400 +it's so complicated to do so. Oh, we have more things in common than I imagined. Okay. + +23:40.400 --> 23:45.760 +Yeah. So we happen to have someone in the room currently. Jack, I believe, is their nickname. + +23:46.480 --> 23:50.000 +Do you have a question? And do you want to maybe unmute yourself to ask the question? + +23:50.000 --> 23:53.520 +You are more than welcome to do so now. I might actually need to unmute you. Actually, + +23:53.520 --> 23:56.640 +I can't. Can you unmute yourself and ask the question if you want to? + +23:56.640 --> 24:06.640 +I'm just trying to get my headset set up. I'm having the similar struggle with this issue of + +24:06.640 --> 24:12.880 +handwriting my notes because that's the easiest way for me to write them quickly. It's also very, + +24:12.880 --> 24:20.880 +it does help me retain the information better. But then getting them back into org mode. I'm + +24:20.880 --> 24:26.480 +about to start experimenting with some of the iPad apps like Notability and GoodNotes to see + +24:26.480 --> 24:36.320 +if that can work or if I can use Apple Notes for that as well. My interests are probably similar + +24:36.320 --> 24:46.960 +to yours. I'm studying computer science, and I have two kinds of notes that are very difficult to + +24:46.960 --> 24:54.000 +transcribe. Mind maps, which is often the way I take class notes because it's a good outlining + +24:54.000 --> 25:04.960 +form. But the handwriting recognition blows if you're part of the expression. And equations, + +25:04.960 --> 25:16.000 +particularly involving proof steps for formal semantics. And I'm wondering if you have any ideas + +25:16.000 --> 25:22.720 +about mind mapping in particular and getting those incorporated from handwritten notes. I hate using + +25:22.720 --> 25:31.840 +the mind mapping tools that are available. I find that that replaces the bad methods that + +25:31.840 --> 25:42.240 +I use. It replaces the bad memory generation from typing with a bad memory generation for mind + +25:42.240 --> 25:53.440 +mapping. But if you have any thoughts, I'd love to hear them. Actually, I have used mind mapping + +25:53.440 --> 26:08.240 +tools. I use something called function maps, where you not only have interlinking relationships, + +26:08.240 --> 26:13.360 +this also has what is the relationship, what is the nature of relationships. All that I've been + +26:13.360 --> 26:23.760 +drawing it on my laptop screen. So that helps me internalize that. So I do not convert it into + +26:23.760 --> 26:31.920 +any other digital format. I leave it as a picture because every time I read it, but in the digital + +26:31.920 --> 26:40.160 +format itself, when you have new understanding, you can actually add another object and interlink + +26:40.160 --> 26:45.680 +them and add the relationship. So it's a lot easier if it's on this. But on a piece of paper, + +26:46.960 --> 26:55.040 +drawing a mind map and or function map and editing it and moving things around becomes a problem. + +26:55.040 --> 27:04.320 +So I find that doing it on a device and retaining it as such, not converting it into a free mind or + +27:04.320 --> 27:12.240 +any of those kind of XML or anything like that, doesn't help me at all, or a plan TML even. But + +27:12.240 --> 27:20.720 +I find that I leave it as such in the digital format. You can select it, like a lasso select, + +27:20.720 --> 27:27.440 +move it around and add new objects or remove it or shade it. You can do all those good stuff, + +27:27.440 --> 27:34.640 +if it is remaining in the same way. So I like it to be that way. Yeah, I've done that as well + +27:34.640 --> 27:44.560 +on the iPad. I'll use Nebo or something like that to give me a good way of rearranging the mind map + +27:45.600 --> 27:53.840 +directly in the iPad, exporting it as a JPEG and linking it to other notes documents that I have. + +27:53.840 --> 28:03.040 +But I do wish I had a better way of extracting the keywords that come out of it and having + +28:03.040 --> 28:09.840 +those searchable. But I get it. Okay, the answer is no, I don't have any. I usually link the live + +28:09.840 --> 28:17.840 +document itself into org mode. So for example, OneNote. OneNote colon and the entire... I just + +28:17.840 --> 28:22.640 +click on that and it goes, opens the exact document that I want and I can add more to it. + +28:22.640 --> 28:28.000 +I do something very simple. + +28:28.000 --> 28:33.200 +All right, folks, I'm really sorry for interrupting you, but we are getting close to time. + +28:33.200 --> 28:38.560 +Thank you so much for joining. We have four people on the scene right now, which is amazing. + +28:38.560 --> 28:45.440 +You can continue talking about this and people can still tune in. The link to the BBB room + +28:45.440 --> 28:50.640 +is still available on Bala's talk. You go to EmacsConf 2022, you go to the talk of Bala and + +28:50.640 --> 28:55.200 +you'll find the link at the top of the page. You can come in the room and chat with Bala some more. + +28:55.200 --> 28:58.960 +But for us on the stream, we're going to move on to the next talk in about 40 seconds. + +28:58.960 --> 29:02.400 +So Bala, thank you so much for taking all the time answering all the questions. And thank you, + +29:02.400 --> 29:08.240 +Gag, also for coming and asking also lovely questions. I suppose it was really good. + +29:08.960 --> 29:14.720 +Yeah, thank you. It was great seeing you. Sorry, I'm rushing because I'm being pressed for time. + +29:14.720 --> 29:21.360 +And I will see you both whenever I see you. OK, bye bye everyone. + +29:21.360 --> 29:23.280 +See you. Bye bye, Leo. Take care. + +29:28.000 --> 29:32.080 +Actually, I'm not sure. We are probably getting the next talk started currently, + +29:32.080 --> 29:36.000 +so you can probably still hear me on the stream, but it's going to take about + +29:36.000 --> 29:37.760 +three seconds. I'll see you after. + +29:37.760 --> 29:47.200 +OK, we are now off air. Thank you so much, Bala, for taking the time to answer all the questions. + +29:48.160 --> 29:49.120 +Thank you. Ciao. + +29:50.320 --> 29:54.800 +Yeah, I think no one is left in a BBB room, so I think people are probably not going to show up. + +29:54.800 --> 29:58.480 +So you've earned your well, your rest for tonight. + +29:59.920 --> 30:00.720 +OK, thanks. + +30:01.840 --> 30:05.040 +Mine will not come before a long time. I still have about seven hours to stream. + +30:05.040 --> 30:07.120 +Oh, my God. OK. + +30:09.360 --> 30:11.440 +All right. Well, thank you so much, Bala. See you next time. + +30:11.440 --> 30:14.400 +Thanks. Have a good day and I'll catch you soon. OK. + +30:14.960 --> 30:16.160 +Sure. Bye bye. + +30:16.160 --> 30:35.440 +Bye bye. + +30:46.960 --> 30:55.440 +Bye. + +30:55.440 --> 31:05.520 +Bye. + +31:05.520 --> 31:25.520 +Bye. + +31:35.520 --> 31:36.580 +Bye. + +32:05.520 --> 32:06.580 +Bye. + +32:35.520 --> 32:36.980 +Bye. + +33:05.520 --> 33:06.020 +Bye. + diff --git a/2022/captions/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--answers.vtt b/2022/captions/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--answers.vtt new file mode 100644 index 00000000..7f4c42b6 --- /dev/null +++ b/2022/captions/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--answers.vtt @@ -0,0 +1,554 @@ +WEBVTT + +00:01.000 --> 00:01.840 +Okay, excellent. + +00:01.840 --> 00:04.000 +I think we are live on stream. + +00:05.320 --> 00:06.360 +Yuchen is here with us. + +00:06.360 --> 00:08.560 +Thanks for the great talk, Yuchen. + +00:08.560 --> 00:11.840 +For the questions, people are welcome to post them on IRC + +00:11.840 --> 00:12.680 +or on the pad. + +00:13.560 --> 00:17.000 +And we will also open this big blue button room up + +00:17.000 --> 00:19.560 +in a few minutes if people want to join here + +00:19.560 --> 00:22.680 +and ask Yuchen the questions directly. + +00:22.680 --> 00:30.680 +So yeah, thanks again and take it away. + +00:30.680 --> 00:53.680 +Yeah, thanks. + +01:00.680 --> 01:29.680 +Okay. + +01:29.680 --> 01:33.000 +Well, I guess while we wait for some other audience questions + +01:33.000 --> 01:36.200 +to start trickling in, I wonder, + +01:37.280 --> 01:39.800 +not having yet watched your talk, obviously, + +01:39.800 --> 01:42.120 +because it's been behind the scenes, + +01:42.120 --> 01:44.320 +I wonder if your system works + +01:44.320 --> 01:46.040 +with offline documentation as well, + +01:46.040 --> 01:49.200 +because I remember seeing earlier + +01:49.200 --> 01:52.520 +some other Haskell-related workflows + +01:52.520 --> 01:56.000 +where people would have downloaded the entirety + +01:56.000 --> 02:00.280 +of the Hackage documentations + +02:00.280 --> 02:03.280 +and yeah, be able to browse them locally when offline. + +02:06.120 --> 02:06.960 +Yeah, for sure. + +02:06.960 --> 02:17.960 +I mean, that's one of the points of writing these packages. + +02:17.960 --> 02:26.520 +So the Hadock org documentation is meant for generation + +02:26.520 --> 02:30.120 +of org files of these Haskell packages + +02:30.120 --> 02:33.160 +so that you can have them locally on your computer + +02:33.160 --> 02:35.240 +rather than having to rely on Hackage, + +02:36.400 --> 02:40.440 +which is online, which is on the web. + +02:40.440 --> 02:48.720 +The other one, HCL, the code explorer, it's self-hosted. + +02:48.720 --> 02:54.920 +So all you need to do is to download the packages + +02:54.920 --> 02:58.840 +you want to index and then index them on the server + +02:58.840 --> 03:02.120 +or on the local host and then, yeah, + +03:02.120 --> 03:05.520 +then you can unplug your Ethernet cable + +03:05.520 --> 03:10.880 +and explore Haskell code on your computer. + +03:10.880 --> 03:35.880 +Nice, thanks, that makes sense. + +03:41.880 --> 03:45.640 +Maybe another question while we wait for other questions + +03:45.640 --> 03:48.800 +from the audience and again, not having had a chance + +03:48.800 --> 03:50.720 +to watch your talk yet. + +03:50.720 --> 03:53.280 +What do you think is the state of, I guess, + +03:53.280 --> 03:56.760 +integration of Haskell, both, I guess, + +03:56.760 --> 04:01.080 +the language, the packages, the tooling, all that stuff, + +04:01.080 --> 04:05.160 +integration with Emacs today in like 2022? + +04:05.160 --> 04:07.480 +Because I'm also, I do have a Haskell background, + +04:07.480 --> 04:10.120 +but I haven't done much of it in a few years. + +04:10.120 --> 04:13.200 +And back when I do remember some pain points, + +04:13.200 --> 04:16.360 +including when trying to integrate it into Emacs. + +04:16.360 --> 04:19.520 +So I do wonder what the general state of things + +04:19.520 --> 04:25.040 +are, if you could maybe answer quickly, I guess. + +04:25.040 --> 04:26.520 +Not in great detail necessarily. + +04:29.640 --> 04:33.480 +OK, yeah, I mean, I haven't tried all the packages, + +04:33.480 --> 04:34.880 +Haskell-related packages. + +04:34.880 --> 04:40.680 +And I think the most prominent ones are Haskell mode + +04:40.680 --> 04:45.080 +and Haskell language servers through language server + +04:45.080 --> 04:49.880 +packages like eglots or LSP mode. + +04:49.880 --> 04:56.280 +Yeah, I mean, Haskell mode is like, + +04:56.280 --> 05:03.160 +it feels to me like a standard language mode where + +05:03.160 --> 05:09.280 +it offers font locking, syntax highlighting, I mean, + +05:09.280 --> 05:18.520 +and REPL, like Python mode, and limited documentation + +05:18.520 --> 05:25.400 +and cross-references, which is, I mean, as I mentioned, + +05:25.400 --> 05:30.360 +that's why I did this HCL package. + +05:30.360 --> 05:38.280 +And the language server is like, it is also pretty standard + +05:38.280 --> 05:42.440 +and offering all the language server things, most of them, + +05:42.440 --> 05:43.200 +I think. + +05:43.200 --> 05:46.320 +But it's very slow. + +05:46.320 --> 05:49.520 +It's slower than any other language server I've used. + +05:49.520 --> 05:55.440 +And yeah, and it doesn't really work + +05:55.440 --> 06:03.360 +with cross-reference, which I also mentioned in the talk. + +06:03.360 --> 06:11.120 +So yeah, that's the two main packages + +06:11.120 --> 06:12.720 +I think people use most. + +06:12.720 --> 06:23.520 +And yeah, I can't think of anything else that's very + +06:23.520 --> 06:24.600 +prominent. + +06:28.280 --> 06:29.120 +Great, thanks. + +06:33.040 --> 06:34.400 +Oh, OK, I just remembered. + +06:34.400 --> 06:39.200 +There's also the Haskell TNG package. + +06:39.200 --> 06:41.120 +But I haven't looked into it yet. + +06:41.120 --> 06:47.960 +It's, if I remember correctly, it's like in the GNU ELP, + +06:47.960 --> 06:50.080 +is it in GNU ELP or non-GNU? + +06:50.080 --> 06:50.840 +Let me have a look. + +06:58.280 --> 07:00.200 +Right, it's also in non-GNU. + +07:00.200 --> 07:02.680 +Never mind. + +07:02.680 --> 07:07.200 +Yeah, I think it's a new, up-and-coming Haskell media + +07:07.200 --> 07:10.480 +mode, an experimental rewrite of Haskell mode. + +07:10.480 --> 07:12.040 +That's the description. + +07:19.080 --> 07:21.800 +Cool, and have you had a chance to maybe play around + +07:21.800 --> 07:24.640 +with that a little bit and see how + +07:24.640 --> 07:27.440 +it compares with the traditional, the older, + +07:27.440 --> 07:28.520 +the existing Haskell mode? + +07:32.960 --> 07:34.120 +No, I haven't yet. + +07:34.120 --> 07:35.680 +OK. + +08:05.000 --> 08:07.160 +Yeah, I can't think of anything else that's very prominent. + +08:07.160 --> 08:09.160 +I haven't looked into it yet. + +08:09.160 --> 08:12.120 +It's, if I remember correctly, it's like in the GNU ELP. + +08:12.120 --> 08:15.440 +Yeah, I think it's a new, up-and-coming Haskell + +08:15.440 --> 08:19.400 +media mode, an experimental rewrite of Haskell mode. + +08:19.400 --> 08:20.280 +That's the description. + +08:20.280 --> 08:22.520 +I haven't yet, I haven't looked into it, + +08:22.520 --> 08:25.480 +and I think it's a new, up-and-coming Haskell + +08:25.480 --> 08:28.920 +media mode, an experimental rewrite of Haskell mode. + +08:28.920 --> 08:31.680 +Yeah, I haven't yet, I haven't looked into it, + +08:31.680 --> 08:33.740 +you + +09:01.680 --> 09:17.280 +One question that just occurred to me, I guess, about the state of like literate Haskell and + +09:17.280 --> 09:22.960 +potential integration with org mode. I've actually never, I haven't put too much thought into this, + +09:22.960 --> 09:28.000 +but it just occurred to me that Haskell, as you likely know, already has a literate Haskell mode + +09:28.000 --> 09:36.000 +with like.LHS files. And I was wondering, I guess, if you've tried maintaining or writing + +09:36.000 --> 09:41.200 +any projects in literate Haskell, at least not, if not entirely, then with a considerable amount + +09:41.200 --> 09:50.400 +of source code in that approach and how it might compare, for example, to something like Babel, + +09:50.400 --> 09:58.160 +I guess, which is very much more documentation oriented with like code blocks intermingled. + +10:01.280 --> 10:10.880 +Okay. Yeah, I'm afraid I haven't really used the literate Haskell. I heard of it. And if I want + +10:11.600 --> 10:17.680 +to like write literate programming, I would, I mean, I would go for org mode and org Babel, + +10:17.680 --> 10:24.720 +indeed, first before, yeah, before the more language specific mode. + +10:28.240 --> 10:34.080 +Right. That makes sense. I just thought it's interesting because Haskell is, I guess, + +10:34.080 --> 10:39.200 +one of the fewer languages where it actually does have its own literate mode, if you will, + +10:39.200 --> 10:43.600 +and yeah, there might be something interesting there to think about or try exploring at some + +10:43.600 --> 10:55.040 +point. Yeah, yeah, definitely. Yeah. Yeah, I will look into it. + +10:55.040 --> 11:10.960 +Poo. + +11:25.040 --> 11:53.740 +Yeah, so I'm reading about this Haskell TNG mode. + +11:53.740 --> 11:57.400 +It looks like it can also jump to definition + +11:57.400 --> 12:03.440 +outside of the project using a thing uses + +12:03.440 --> 12:09.560 +a tool called HS Inspect, which is also + +12:09.560 --> 12:15.000 +a tool using the GHC API. + +12:15.000 --> 12:17.480 +Yeah, not sure how it is achieved, though. + +12:17.480 --> 12:21.520 +Bren. + +12:48.480 --> 12:51.360 +I think I have a question on IRC. + +12:51.360 --> 12:53.320 +Is the indexing faster? + +12:53.320 --> 12:55.400 +And when re-indexing, would it be too slow + +12:55.400 --> 12:56.480 +to re-index on demand? + +13:01.560 --> 13:05.120 +Sorry, what's the question again? + +13:05.120 --> 13:09.240 +The question is, is the indexing faster when re-indexing? + +13:09.240 --> 13:11.560 +Would it be too slow to re-index on demand? + +13:11.560 --> 13:14.960 +I think this might be for the other talk stream. + +13:14.960 --> 13:15.920 +I'm not entirely sure. + +13:15.920 --> 13:21.640 +So yeah, I mean, it sounds relevant to this talk, though. + +13:21.640 --> 13:23.600 +Oh, OK, then, yeah, OK, sorry. + +13:23.600 --> 13:26.600 +I'm a little scatterbrained. + +13:26.600 --> 13:28.320 +No, it's OK. + +13:28.320 --> 13:36.760 +Oh, yeah, yeah, re-indexing, I mean, I don't know, actually, + +13:36.760 --> 13:41.680 +because I haven't started implementing + +13:41.680 --> 13:44.400 +on-demand re-indexing yet. + +13:44.400 --> 13:49.320 +And I'm still a bit hazy about whether it strictly + +13:49.320 --> 13:53.520 +requires recompiling when re-indexing. + +13:53.520 --> 14:03.440 +And I mean, but I do think it's like the main workhorse + +14:03.440 --> 14:09.400 +of this process would be the GHC API compiling process, + +14:09.400 --> 14:15.760 +whether it can avoid recompilation efficiency. + +14:15.760 --> 14:23.680 +When, yeah, and I think it can. + +14:23.680 --> 14:28.720 +It has some optimization with recompilation. + +14:28.720 --> 14:35.480 +And also, ideally, you should start + +14:35.480 --> 14:39.800 +using a bit less heavy compilation, + +14:39.800 --> 14:45.640 +like this HIE,.hie files, instead of compiling + +14:45.640 --> 14:49.280 +the whole thing, instead of requiring + +14:49.280 --> 14:55.120 +the compilation of the whole project from using + +14:55.120 --> 14:56.000 +the whole pipeline. + +14:56.000 --> 15:01.760 +So HIE, I think, is more or less the only front-end part. + +15:01.760 --> 15:05.800 +Yeah, and if, I mean, that's one of the things, + +15:05.800 --> 15:10.520 +like, main to-dos for this project, for the HCL project, + +15:10.520 --> 15:16.920 +to replace the cabal helper with using.hie + +15:16.920 --> 15:18.920 +that I haven't looked into yet. + +15:22.920 --> 15:23.440 +Awesome. + +15:26.480 --> 15:29.000 +Yeah, sounds interesting and looking forward to it. + +15:29.000 --> 15:32.240 +I think we have about, like, less than a minute or so + +15:32.240 --> 15:34.640 +for the live Q&A. Of course, people + +15:34.640 --> 15:37.520 +are welcome to keep asking questions, + +15:37.520 --> 15:40.240 +whether on the pad or on IRC. + +15:40.240 --> 15:43.520 +And yeah, so after this, Q&A concludes. + +15:43.520 --> 15:44.920 +This is our last talk of today. + +15:44.920 --> 15:49.080 +So we would appreciate it if people would join us + +15:49.080 --> 15:54.120 +on the general stream for the closing remarks of today. + +15:54.120 --> 15:55.720 +And yeah, we'll still have tomorrow + +15:55.720 --> 15:57.440 +to look forward to the next one. + +15:57.440 --> 15:59.640 +We'll still have tomorrow to look forward to, of course. + +15:59.640 --> 16:01.160 +OK. + +16:25.960 --> 16:28.040 +I see that EmacsConf just left. + +16:28.040 --> 16:30.400 +Does that mean the Q&A is over? + +16:30.400 --> 16:31.680 +Yep, I believe so. + +16:31.680 --> 16:35.760 +So I think we should head on over to the GenStream. + +16:35.760 --> 16:36.800 +OK, cool. + +16:36.800 --> 16:39.280 +Yeah, I'll go there as well. + +16:39.280 --> 16:41.400 +All right, thanks a lot for your questions. + +16:41.400 --> 16:43.480 +Yep, and thank you, Yuchun, for your great talk. + +16:43.480 --> 16:45.000 +Thank you. + +16:45.000 --> 16:46.440 +Thanks, bye-bye. + +16:46.440 --> 16:47.200 +Bye. + +16:47.200 --> 17:03.240 +You are currently the only person in this conference. + diff --git a/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--answers.vtt b/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--answers.vtt new file mode 100644 index 00000000..85fd117d --- /dev/null +++ b/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--answers.vtt @@ -0,0 +1,653 @@ +WEBVTT + +00:00.000 --> 00:13.920 +And we are live. Hello again, everyone. It's been a while. I've been on break for the last + +00:13.920 --> 00:19.000 +one hour. It feels like I've been really far. I'm with David. Hi, David. How are you doing? + +00:19.000 --> 00:23.360 +Hi, Leo. I'm good. Thank you for having me on. + +00:23.360 --> 00:26.480 +So David, you do have the pad open in front of you. + +00:26.480 --> 00:27.480 +That's right. + +00:27.480 --> 00:32.800 +Yes. I think Sasha is putting up the pad for us so that they don't have to look at my very + +00:32.800 --> 00:38.520 +tiny face on BBB. I'm very small. I'm trying to push the boundaries. David, if you want + +00:38.520 --> 00:44.320 +to take some questions, I'm sorry, I've got hells whispering in my ears at the same time. + +00:44.320 --> 00:49.800 +Give me just a second. David, can you maybe read the first question and try to answer + +00:49.800 --> 00:50.800 +them? + +00:50.800 --> 00:58.640 +Sure. Question one. Excuse me. Do you use this just for yourself or do you use this + +00:58.640 --> 01:04.160 +to discuss or show with doctors or health professionals? The answer is it is useful + +01:04.160 --> 01:10.880 +for me and it's useful for health care providers. So it's not I'm not just able to see connections + +01:10.880 --> 01:15.440 +myself, even if we're not seeing a connection. If I'm talking to someone, if I'm talking + +01:15.440 --> 01:20.640 +to a clinician, I have brought this in on a tablet. If it's an in-person thing or on + +01:20.640 --> 01:26.040 +the phone, if it's a video appointment with someone, just send it in an email. It's very + +01:26.040 --> 01:33.160 +convenient to just send the graph around as a screenshot. So it's definitely been really + +01:33.160 --> 01:40.920 +useful to because one thing that I touch on in the talk is that let's say that we're talking + +01:40.920 --> 01:45.880 +about depression, for example. Let's say, oh, well, how have you been sleeping this + +01:45.880 --> 01:49.440 +week? Well, if you had objective information, that's perfect. Go ahead. + +01:49.440 --> 01:53.840 +Oh, sorry. I was mispressing my button for production. You're good. + +01:53.840 --> 01:59.960 +Oh, it just caught a little clip of sound. I see. Okay. Sorry. Yes. So where was I? I + +01:59.960 --> 02:05.960 +would say, okay, so on the one hand, having objective information is good not only for + +02:05.960 --> 02:09.360 +you, but when it's time to speak to someone and give them a picture of what's going on, + +02:09.360 --> 02:14.800 +you don't have to generalize. Even if you're having a good day, generalizing can be really + +02:14.800 --> 02:19.300 +like, oh, well, how are you sleeping? Oh, well, this day I woke up that, but which way + +02:19.300 --> 02:22.720 +was that Wednesday or Thursday? And then I remember this friend came over, so it must + +02:22.720 --> 02:29.000 +have been Friday. That's not I've discovered that actually just first thing in the morning + +02:29.000 --> 02:33.720 +waking up recording. How many pieces of gum did I have yesterday? How much did I sleep? + +02:33.720 --> 02:40.000 +Okay. So someone else, this segues right into the next question. How do you input the health + +02:40.000 --> 02:46.120 +data? Semi-automated with Org Mode capture templates, copy paste, automated with a smart + +02:46.120 --> 02:51.080 +watch, and if this, then that. Tasker, Org Mode document to automatically add stuff like + +02:51.080 --> 02:57.040 +sleeping data. Which parts are and are not automated? Okay. So it turns out I'm using + +02:57.040 --> 03:03.320 +an Org Mode capture template to automate the insertion of all the little category tags + +03:03.320 --> 03:10.600 +in the property drawer, but not the values. I'm not using a smart watch or anything whatsoever. + +03:10.600 --> 03:17.560 +I am just, I look at the clock when I go to bed and I look at the bed when I wake, look + +03:17.560 --> 03:21.480 +at the clock when I wake up. The very first thing I do is turn on my computer and turn + +03:21.480 --> 03:30.160 +on Emacs and enter that data. So, you know, it would be really cool if we could get some + +03:30.160 --> 03:35.120 +kind of data, you know, because if it's all, you know, if it's be able to be massaged into + +03:35.120 --> 03:40.760 +Org Mode format, it can then go into Org GNU plot. Or maybe you could cut Org Mode out + +03:40.760 --> 03:45.600 +of the equation if you find a way to go directly from that data to either CSV, which Org Mode, + +03:45.600 --> 03:50.760 +I'm sorry, which GNU plot can read, or, you know, whether you have to wear a little script + +03:50.760 --> 03:56.560 +in between. And the next question, how do you track the various health statistics that + +03:56.560 --> 04:02.720 +you're gathering? The ones, you know, for example, nicotine is an estimate. I'm pretty + +04:02.720 --> 04:08.460 +sure it was six. It was pretty sure it was seven. You know what I mean? It's pretty close + +04:08.460 --> 04:12.820 +because I do count and I think I could at most be off by one or two. So it's not fatal + +04:12.820 --> 04:16.980 +to the enterprise of collecting data. The same thing with sleep. I look at the clock, + +04:16.980 --> 04:23.240 +but I only count half hours. I say, oh, I slept seven hours, you know, seven and a half. + +04:23.240 --> 04:28.280 +It's very much a back of the napkin thing, but it's precise enough overall that as you + +04:28.280 --> 04:33.240 +can see from the data in the talk, you can see that my sleep declined pretty steadily + +04:33.240 --> 04:38.160 +over the course of that. So even if some of the values are off a little bit, you're still + +04:38.160 --> 04:44.060 +seeing trends and you can still see connections. So it's not perfect. I would love to have + +04:44.060 --> 04:49.680 +some type of more automated data, but all right. So I'm going to move on to the next + +04:49.680 --> 04:56.280 +question. It's possible to download data from Apple Watch's health app. Is it easy enough + +04:56.280 --> 05:07.000 +to incorporate those.csv files into your implementation of gnuplot? Okay. So I think + +05:07.000 --> 05:10.680 +what it would involve if you wanted to use my template generator, it would involve making + +05:10.680 --> 05:17.880 +your template, but then modifying the gnuplot script to read from that file instead of from + +05:17.880 --> 05:27.200 +an org mode table. So I think that what you would want to do is select the, yeah, I mean, + +05:27.200 --> 05:33.680 +and if you want, you know, I'll be around in the IRC after and I might even be able + +05:33.680 --> 05:38.200 +to look at their documentation or something, just even just give a peek at it to give a + +05:38.200 --> 05:39.640 +better answer to this question. + +05:39.640 --> 05:45.640 +Cool. And just to remind everyone, so, sorry, let me try to put up, okay. I did crush Dev + +05:45.640 --> 05:49.400 +earlier when trying to switch window. Oh, okay. I managed to do it. Yes, I still have + +05:49.400 --> 05:58.240 +it in me. So let me, slightly later, we will also be opening the discussion. So this BBB + +05:58.240 --> 06:01.520 +instance in which we are currently, we will be opening it so that people can come in with + +06:01.520 --> 06:06.160 +questions and maybe you're considering the personal nature of this talk, you know, maybe + +06:06.160 --> 06:11.520 +try to be a little wary of sharing personal information, especially if the stream is live, + +06:11.520 --> 06:17.000 +but otherwise you can have a chat with David, provide to David you're still available in, + +06:17.000 --> 06:21.880 +you know, 10, 20 minutes and feel free to come in and ask questions because really that's + +06:21.880 --> 06:26.480 +what Emacs Conf is about. It's about getting in touch with the speakers and this is the + +06:26.480 --> 06:30.200 +opportunity that you have to have a one-on-one with them rather than an asynchronous one + +06:30.200 --> 06:34.120 +with a pad. Sorry for the interruption. I just felt I remember. We're probably going + +06:34.120 --> 06:38.080 +to open the chat in about five to 10 minutes. We still have a lot of questions and I know + +06:38.080 --> 06:42.280 +I'd prefer if David focused on those questions. So please go ahead, David. + +06:42.280 --> 06:48.800 +Thank you so much, Leo. And yes, I am available for after, so I'll stick around. Okay. So + +06:48.800 --> 06:54.120 +regarding the medication tracking, you only have the option to record missed or not. If + +06:54.120 --> 06:58.280 +one needs to take multiple medications throughout the day, how would you propose to track that + +06:58.280 --> 07:05.240 +within GNU plot or separate? Okay. Yeah, as it is, I don't record which medication because + +07:05.240 --> 07:12.600 +it's the one I miss is typically just the same one. So the deal is, is that you would + +07:12.600 --> 07:19.660 +probably want to, you could count it as either doses or milligrams. The problem with tracking + +07:19.660 --> 07:27.660 +as milligrams, and yes, you would want to use separate variables for those. And probably + +07:27.660 --> 07:36.080 +what would make sense is either to record some lines as doses, meaning that one, whatever + +07:36.080 --> 07:43.040 +that ends up being, if it's a tablet or if it's the proper dose. And then that way, if + +07:43.040 --> 07:47.100 +one medication is late and another is not, or whatever you need to record, they're on + +07:47.100 --> 07:54.440 +separate lines, separate columns of the CSV file or I'm sorry, not CSV file of your org + +07:54.440 --> 08:04.540 +mode, separate property drawer entries in your capture template. I'm trying to think. + +08:04.540 --> 08:08.520 +It would be a little bit more work, but you could track that. The problem with tracking + +08:08.520 --> 08:13.760 +milligrams is that some medications, you would have a large range on the chart because some + +08:13.760 --> 08:18.320 +medications are a few milligrams and some medications are lots and lots for a dose. + +08:18.320 --> 08:27.720 +So tracking it as single doses might make sense. All right. So how's the workflow? This + +08:27.720 --> 08:32.120 +is the next question here. How's the workflow when working on the canoe plot code? Can you + +08:32.120 --> 08:38.560 +control C, control C and the SVG output on the right is updated automatically? The answer + +08:38.560 --> 08:46.200 +is yes. You can use something called auto revert tail mode. So you hit meta X to get + +08:46.200 --> 08:53.040 +the command and then auto revert tail mode. And that will cause the SVG file to automatically + +08:53.040 --> 08:58.840 +update every time you hit control C, control C on the canoe plot file, provided that you're + +08:58.840 --> 09:07.680 +viewing the same file that the canoe plot is going to overwrite. Let's see. Question. + +09:07.680 --> 09:13.000 +How much time does it take to process the amount of data that you add inside canoe Emacs? + +09:13.000 --> 09:21.360 +So at this point I have three or four months of data and it takes to update the whole thing, + +09:21.360 --> 09:27.360 +like, you know, get capture all the entries. It takes like a second or two. And this is + +09:27.360 --> 09:31.200 +a pretty decent PC. So we're not talking about something that takes a long time each day + +09:31.200 --> 09:39.840 +I updated. It's just, it's done pretty quick. All right. Next question. Will indent guide + +09:39.840 --> 09:45.120 +behave well with YAML files for Helm? I don't know the answer to that. Indent guide is really + +09:45.120 --> 09:52.720 +nice and it seems to behave pretty reasonably, but I wouldn't be able to speak to that. + +09:52.720 --> 09:59.280 +Okay. Just a quick interruption. So we have opened the chats now for people to join us + +09:59.280 --> 10:04.360 +on BBB. So you can go to the talk page on Emacs. You go to David's talk, which is called + +10:04.360 --> 10:08.760 +health and you should be able to join the BBB. So if you have questions that you'd like + +10:08.760 --> 10:13.800 +to ask with your voice to David, feel free to join us. And David, in the meantime, you + +10:13.800 --> 10:16.960 +can reply to the last question you have. + +10:16.960 --> 10:22.880 +Okay. Thank you. Great. The last question is, have you noticed your behavior changing + +10:22.880 --> 10:29.000 +as a result of tracking your data? And the answer is yes. The accountability has given, + +10:29.000 --> 10:36.160 +it draws habits, good or bad habits. It illustrates them in sharp relief. All of a sudden it's + +10:36.160 --> 10:44.440 +very clear what's going on, what's not going on. And it illuminates a sense of fog because + +10:44.440 --> 10:49.080 +it's hard to generalize when your awareness is changing over time. It's hard to generalize + +10:49.080 --> 10:53.560 +about what's going on each day and having the objective information. Yes, I'd say it + +10:53.560 --> 10:57.080 +has changed my behavior in a good way. + +10:57.080 --> 11:04.240 +I mean, that's a very good thing, I suppose. The whole point of tracking so much stuff, + +11:04.240 --> 11:07.680 +tracking people, it's an interesting angle that you have because you're creating data + +11:07.680 --> 11:12.320 +on a lot of health aspects. And people usually when they talk about using Emacs to better + +11:12.320 --> 11:16.000 +their life, they talk about all, they talk about getting things done. They talk about + +11:16.000 --> 11:22.560 +all the usual suspects when it comes to task organization. But plotting over time is something + +11:22.560 --> 11:27.120 +that is technically possible and that people talk about, but I feel like you've gone way + +11:27.120 --> 11:32.720 +far into this particular topic. So well done you. And you feel as a result you have a particular + +11:32.720 --> 11:40.800 +insight into seeing the curves evolve basically over time. And I think it provides very interesting + +11:40.800 --> 11:46.760 +data, something that is more easily understandable than just a list of to-dos in an agenda over + +11:46.760 --> 11:47.760 +time. + +11:47.760 --> 11:54.320 +Yeah. And what's nice is that I still can have to-dos and notes in that same file that + +11:54.320 --> 12:00.600 +produces my chart and that has all the data in it. And I keep that in version control, + +12:00.600 --> 12:05.040 +which stays in a private repo. And what's nice about that is everything's backed up. + +12:05.040 --> 12:11.920 +You know what I mean? Pardon me. I'm going to have a sip of water here. + +12:11.920 --> 12:19.680 +Please do. I mean, I'm actually down to termite. It's the good floral for thermos. And I've + +12:19.680 --> 12:23.120 +down two since we started EmacsCon today. + +12:23.120 --> 12:30.680 +Oh, wow. Yeah. And so I lost my train of thought. + +12:30.680 --> 12:36.840 +Take your time to find it. We still have about eight minutes of Q&A. By the way, I'll remind + +12:36.840 --> 12:41.200 +people we have opened the BBB room. So if you want to join us and ask live questions + +12:41.200 --> 12:56.120 +to David, feel free to do so. I'm sorry. Could you repeat that? I was asking you if you found + +12:56.120 --> 12:59.000 +the train of thought again. + +12:59.000 --> 13:08.480 +Hold on. Hold on. The last question, have I noticed behavior changing? Yeah. Then we + +13:08.480 --> 13:12.400 +talked about, oh, I talked about the fact that you can have to do the notes and appointments + +13:12.400 --> 13:18.080 +and all that kind of stuff. Like, for example, one of my next. Well, oh, now I remember the + +13:18.080 --> 13:22.560 +point that I was going to get into. The point is that once I have this routine of getting + +13:22.560 --> 13:28.600 +up every single morning and first thing, putting in my information. That habit, I feel like + +13:28.600 --> 13:33.200 +build on. For example, I added a new variable the other day. You know, I can add I thought + +13:33.200 --> 13:37.920 +of something. I'm like, hey, I should track that in my data. It reminds me I say, hey, + +13:37.920 --> 13:41.080 +there's not enough green triangles. I need to get some exercise this week. You know, + +13:41.080 --> 13:48.520 +the weather, I haven't wanted to get outside because the weather's been so dismal. So it's + +13:48.520 --> 13:58.240 +absolutely been a game changer. It really has been. And it doesn't have to be. Oh, go + +13:58.240 --> 14:04.880 +ahead. Go ahead. No, no, no. I was going to say that it's really good to hear that software + +14:04.880 --> 14:10.080 +can have such a potent impact, just the ability to track your data over time. Because the + +14:10.080 --> 14:14.480 +thing is, I think whatever you're feeling, you know, whenever you have mental ailments + +14:14.480 --> 14:20.320 +or whatnot, it's really hard to to have a healthy relationship to the chronology of + +14:20.320 --> 14:26.360 +feeling better. And it's easy to get lost into the immediate sensation. But I feel like + +14:26.360 --> 14:30.120 +being able to track over time that, you know, this daily checking in that you do in the + +14:30.120 --> 14:34.760 +morning of keeping track of your health data. I think it's the first step that shows you + +14:34.760 --> 14:42.800 +over time that, oh, yes, I am actually feeling better. And so as a result, being able to + +14:42.800 --> 14:50.440 +visually see, oh, yes, I am actually doing better. It must be reassuring, I assume. + +14:50.440 --> 14:55.060 +It is. I think that's a really interesting turn of phrase you had there earlier when + +14:55.060 --> 15:02.840 +you said it's harder to have a healthy relationship to the chronology of getting better. I think + +15:02.840 --> 15:10.160 +those were your exact words there. You know, the idea that, you know, if you've got to + +15:10.160 --> 15:16.080 +manage something, if you've got to roll with the punches, then seeing what you've accomplished, + +15:16.080 --> 15:21.440 +seeing yourself bounce back, you know, and then being able to see a trend, you might + +15:21.440 --> 15:26.920 +not notice unless you're tracking per the clock that sleep has started to decline and + +15:26.920 --> 15:33.880 +that it's time to start keeping your eye out. And it is reassuring, and you're right about + +15:33.880 --> 15:37.920 +that, you know. It's not always easy to be in the mindset of saying, hey, these lines + +15:37.920 --> 15:39.960 +move and they'll move again. + +15:39.960 --> 15:46.560 +Yeah, and I feel also it's kind of like having a scientific take on your well-being because + +15:46.560 --> 15:53.960 +you are parameter, okay, really tough word to say for the Frenchman that I am, but parameterizing + +15:53.960 --> 15:58.720 +the elements of your life, such as sleep, and we already have sleep is already more + +15:58.720 --> 16:03.960 +or less of a parameter in our lives. You know, we know, oh, you should sleep at least eight + +16:03.960 --> 16:08.820 +hours. You should have one hour, 30 blocks of sleep all the time. So this is a well parameterized + +16:08.820 --> 16:13.960 +element of our lives. But other elements that you're doing or the conflation of different + +16:13.960 --> 16:19.360 +curves feels like it's pointing out, it's providing more data and being able to see + +16:19.360 --> 16:23.920 +the trend, which is a key word in your presentation in what you do. I think that's really good. + +16:23.920 --> 16:28.800 +Chronology and trends and being able to see what works. I just have this example crossing + +16:28.800 --> 16:33.360 +my mind. Some people are plagued with canker sores, which are really nasty stuff that you + +16:33.360 --> 16:38.040 +get in mouth. But more often than not, it's really hard to track why you're getting them. + +16:38.040 --> 16:42.600 +A lot of people say it's due to stress or to poor sleep or to deficiency in iron or + +16:42.600 --> 16:47.780 +whatnot, or you're toothpaste. You might have understood that I actually suffer from them. + +16:47.780 --> 16:52.240 +So I actually know a lot of the reasons. But being able to track health data like this + +16:52.240 --> 16:57.560 +feels like it would be able to correlate the appearance of canker sores with maybe poor + +16:57.560 --> 17:03.240 +sleep or maybe changing medication or maybe stress at work or stuff like this. I really + +17:03.240 --> 17:06.240 +like this stance and I think you're really onto something here. + +17:06.240 --> 17:12.960 +Yeah. And if people wanted to chat about that more in terms of putting people's heads together, + +17:12.960 --> 17:19.120 +because let's say someone who has a more sophisticated medication tracking need, maybe they come + +17:19.120 --> 17:23.760 +up with a solution and they share their config. There's one thing I didn't talk about in the + +17:23.760 --> 17:31.580 +talk, which is I had one line where I have a formula instead, because Canoe can plot + +17:31.580 --> 17:36.760 +all kinds of formulas. So I have it plot an overall trouble score, which I did not show + +17:36.760 --> 17:45.520 +in the video, but I had it assigned three points for every hour above or below the goal + +17:45.520 --> 17:49.360 +of eight hours. So too much would give me lots of points on the trouble and too little + +17:49.360 --> 17:54.880 +will give me lots of points. So the relation to the goal or whatever, if stress is high, + +17:54.880 --> 18:00.920 +then the overall, if the anxiety line is high, then the overall trouble line should get high. + +18:00.920 --> 18:06.800 +And what I found is that that trouble line really did track with my recollection of + +18:06.800 --> 18:12.560 +how the last few weeks had gone. And so that trouble line is, you can see when it's trending + +18:12.560 --> 18:21.600 +even if it's not super obvious from the other lines. And maybe I'll share that too. + +18:21.600 --> 18:28.400 +All right, David, we are about at the end of time for the Q&A. Thank you so much for + +18:28.400 --> 18:33.000 +answering all the questions. I think it was very valuable to not only have your long presentation, + +18:33.000 --> 18:37.080 +which was very detailed, but also have this Q&A where you got the chance to answer one, + +18:37.080 --> 18:41.240 +two, three, four, five, more than seven questions, which is great. + +18:41.240 --> 18:46.960 +That's fantastic. And thank you so much for joining in and for being here. And thank you + +18:46.960 --> 18:51.720 +for having me at the conference. It's really amazing to be part of the community. And I'm + +18:51.720 --> 18:56.720 +happy to stick around. Do you want me to drop to IRC or just keep answering questions in + +18:56.720 --> 19:01.500 +voice? I don't think they're going to go on the pad, are they? + +19:01.500 --> 19:05.760 +So actually what we can do, we can leave the BBB room standing for now. If people want + +19:05.760 --> 19:10.240 +to join, they can do so. Maybe Corwin will come back to close the room afterwards. But + +19:10.240 --> 19:13.140 +for now, you can stay in the room. And if people want to unmute themselves after we + +19:13.140 --> 19:15.800 +go off stream, that would be good. + +19:15.800 --> 19:18.720 +So we are about to go into the next talk in about 30 seconds. Let me just talk to production + +19:18.720 --> 19:28.360 +real quick. So, yes, we are going to go into the next talk pretty soon. You should still + +19:28.360 --> 19:35.000 +be able to hear me, I think. Nope, they cannot. Okay. Well, David, I leave you in the room. + +19:35.000 --> 19:41.360 +I'll be in touch within five minutes to see if people are not showing up. + +19:41.360 --> 19:42.360 +Thank you, Leo. + +19:42.360 --> 19:48.160 +Yes, sorry. I'm dealing with many things at the same time. So I'm going to stop the recording. + +19:48.160 --> 19:52.680 +No, I'm going to leave the recording on. Is there anyone in the room that want to unmute? + +19:52.680 --> 19:56.760 +We are not on the stream anymore now. Does anyone want to say something or talk with + +19:56.760 --> 20:04.260 +David? Or do we want to close the room? + +20:04.260 --> 20:09.440 +Even if it's just by line. Okay, cool. So what are we going to do then? David, thank + +20:09.440 --> 20:14.080 +you so much for your time. We're actually going to close the room right now. I'm going + +20:14.080 --> 20:35.200 +to stop the recording. + diff --git a/2022/captions/emacsconf-2022-hyperorg--powerful-productivity-with-hyperbole-and-org-mode--robert-weiner--answers.vtt b/2022/captions/emacsconf-2022-hyperorg--powerful-productivity-with-hyperbole-and-org-mode--robert-weiner--answers.vtt new file mode 100644 index 00000000..4ababba9 --- /dev/null +++ b/2022/captions/emacsconf-2022-hyperorg--powerful-productivity-with-hyperbole-and-org-mode--robert-weiner--answers.vtt @@ -0,0 +1,1184 @@ +WEBVTT + +00:00.000 --> 00:03.880 +Sorry, it's a little tight. I'm doing a lot of stuff behind the scene and now we're ready + +00:03.880 --> 00:23.320 +to go live in about five seconds. Sorry, five more seconds. Five. And we are live. Hello + +00:23.320 --> 00:27.920 +again, everyone. Hopefully you can hear me just fine. And we just had a talk with Bob + +00:27.920 --> 00:32.800 +and Bob is now here in the room. Hi Bob, how are you doing? Hi, doing well. Good to see + +00:32.800 --> 00:39.120 +you, Leo. You're doing a great job. Well, thank you. I must say, I am back to asking + +00:39.120 --> 00:44.160 +questions, but for the last two hours, I have been running after pre-recordings. I have + +00:44.160 --> 00:48.800 +been doing the re-encoding and stuff like this, which means it doesn't look like this, + +00:48.800 --> 00:53.220 +but this was very much of a marathon. And I'm glad to be here to be in a room with you + +00:53.220 --> 00:57.000 +because I'm actually going to be able to rest a little bit. + +00:57.000 --> 01:04.400 +Did you see the presentation? Not yet. Okay, can I lie? If I were able to lie, I would + +01:04.400 --> 01:08.960 +say yes, I've been very attentively watching everything in a presentation, but sadly, no, + +01:08.960 --> 01:13.160 +I've been quite busy elsewhere. And because, well, no, we don't need to tell them about + +01:13.160 --> 01:20.120 +this. But Bob, do you have the pad open in front of you? Yes. Well, I can't look at both + +01:20.120 --> 01:26.280 +at the same time, but... It's fine. You don't need to see my face. You've seen it. Okay. + +01:26.280 --> 01:31.120 +I see it here. Can you have multiple implicit button files? If so, how would you know which + +01:31.120 --> 01:39.780 +link came from what files? I guess they're one-way links, so you embed buttons in any + +01:39.780 --> 01:46.600 +number of files that you want and you traverse them, or they perform actions for you. There + +01:46.600 --> 01:52.900 +are three categories of buttons. We were showing you implicit buttons, which is one category. + +01:52.900 --> 01:59.800 +Then there's explicit buttons, which can also perform arbitrary actions, but those you embed + +01:59.800 --> 02:05.860 +one at a time in a file and you say, okay, I want this to be a link to an org file section + +02:05.860 --> 02:12.560 +or something. And then... Sorry for the interruption. Can we keep going? The third kind are global + +02:12.560 --> 02:18.500 +buttons, which we demonstrated there when you put those in your personal button file, + +02:18.500 --> 02:23.920 +and then you can access them by name anywhere in Emacs without even having a buffer up on + +02:23.920 --> 02:30.560 +screen. The next question... So I should just go down the questions? You don't have any + +02:30.560 --> 02:36.960 +Leo? No, no, feel free. I'm mostly here to be the pretty face that when a problem happens, + +02:36.960 --> 02:41.400 +I'm here to help. But since you have questions already in the pad, I'm more than happy to + +02:41.400 --> 02:45.420 +have you answer the question from the pad. And if we have a little more time, I'll come + +02:45.420 --> 02:49.560 +up with my own questions, so don't worry about it. Yeah, and encourage people to come into + +02:49.560 --> 02:57.020 +the chat. We can do something live and then go back to the Etherpad and deal with these + +02:57.020 --> 03:03.800 +later as well if people want to talk. So just to specify this, we might first have you answer + +03:03.800 --> 03:07.960 +the questions on the pad first and we'll open up the BBT a little later. For now, just you + +03:07.960 --> 03:17.340 +on the pad. I'll keep you posted. So are we showing the pad so people see it or I need + +03:17.340 --> 03:24.480 +to share that? So I'm sharing the pad right now, I'm managing what people are seeing on + +03:24.480 --> 03:27.840 +the stream. You might want to have the pad in front of you and read the question anyway + +03:27.840 --> 03:33.480 +to know which question you're actually answering. Okay, I do have the pad separately. Okay. + +03:33.480 --> 03:40.920 +What about using implicit buttons with multiple people with different configs? Not quite sure + +03:40.920 --> 03:49.820 +what the question is, but hyperbole is always thinking about people working collaboratively, + +03:49.820 --> 03:56.880 +though it is also somewhat focused on your personal information. So as you saw when we + +03:56.880 --> 04:03.940 +embedded a variable, either an Emacs list variable or an environment variable in a path, + +04:03.940 --> 04:08.620 +you can share those with people. You can embed hyperbole buttons in your email messages and + +04:08.620 --> 04:13.720 +they'll adapt based on the environment that the person activates them in. So there's a + +04:13.720 --> 04:22.200 +lot of useful kind of capability like that built in for collaboration as well. Coming + +04:22.200 --> 04:27.260 +in from org mode, would it be a fair assessment that hyperbole is in some way a generalization + +04:27.260 --> 04:33.240 +of what most people think of the great features of org to work across formats with the hyperbole + +04:33.240 --> 04:38.600 +links buttons being the recurring example and that it then further adds some capabilities + +04:38.600 --> 04:45.500 +again across formats being the global miner mode is interesting. I think it goes to RMS's + +04:45.500 --> 04:51.280 +talk that org's features could be more generalized modularized. How is hyperbole in that respect? + +04:51.280 --> 04:56.800 +Yes, it hyperbole is meant to give you all of these capabilities across your entire Emacs + +04:56.800 --> 05:05.000 +experience. So everything you saw in org mode works and all sorts of other buffer types + +05:05.000 --> 05:13.560 +to accept the pieces that were activating org's specific features. Internal radio targets, + +05:13.560 --> 05:22.560 +are they able to link to other org mode files that are part of my agenda? Certainly you + +05:22.560 --> 05:33.960 +can have, you can make a link type that crosses similar to what you saw in the K outliner + +05:33.960 --> 05:41.040 +links where you specified a file and then it just would have the sub part of the link + +05:41.040 --> 05:48.640 +that you wanted that would reference the target as well. Your package advances how useful + +05:48.640 --> 05:53.880 +a mouse can be with creating links. That we didn't show but you can just drag between + +05:53.880 --> 05:59.240 +windows and create an explicit link between things as well. Do you have any experience + +05:59.240 --> 06:03.640 +or thoughts about how touchscreens or mice could be used or improved with Emacs? Yes + +06:03.640 --> 06:13.080 +I do. In fact, when hyperbole was conceived originally it was part of a broader research + +06:13.080 --> 06:19.640 +project called personalized information environments. At the dawn of the web is when this started + +06:19.640 --> 06:25.800 +and we kind of figured people would be deluged with maybe 5,000 email messages a day or just + +06:25.800 --> 06:33.240 +all sorts of things like we are deluged with today. So we were thinking about sort of like + +06:33.240 --> 06:41.160 +org brain and the graphical sort of navigation that you could do in hyper versus and came + +06:41.160 --> 06:51.920 +up with some prototypes that were kind of very iPad like in the node sort of views but + +06:51.920 --> 06:58.760 +with much greater navigation capability. So a lot of that isn't implemented but we are + +06:58.760 --> 07:04.400 +always thinking about how to make things more useful and you see the smart context handling + +07:04.400 --> 07:10.360 +that the mouse keys do because there's drags associated with the action and the assist + +07:10.360 --> 07:16.800 +keys when put onto mice and those do a great many things that sort of replicate what a + +07:16.800 --> 07:22.960 +touchscreen might do as well. Would you consider hyperbole to be more of a format spec that + +07:22.960 --> 07:28.240 +can then be handled however we want or the engine itself along with that format i.e. + +07:28.240 --> 07:33.620 +can the simple link formats be used for other extensible purposes. Yes again hyperbole was + +07:33.620 --> 07:39.560 +conceived as a hypertext engine that would be part of the personalized information environments + +07:39.560 --> 07:47.600 +or pies and it would link that engine would then be available to multiple applications. + +07:47.600 --> 07:57.560 +So we sort of built an API not a web API but just a programming API that you can use and + +07:57.560 --> 08:03.960 +that's documented in the manual to build other applications atop hyperbole. It turned out + +08:03.960 --> 08:09.280 +that a lot of people didn't have that capability to program it so we just kept programming + +08:09.280 --> 08:14.640 +a lot of these default features that you see today with all the button types to show people + +08:14.640 --> 08:20.760 +what was possible. How is the integration with org roam? We're just starting to look + +08:20.760 --> 08:29.240 +at that you know again I just find with hyperbole there are no external required packages you + +08:29.240 --> 08:34.640 +just load hyperbole and whatever Emacs has that's all that it needs so that's kind of + +08:34.640 --> 08:40.080 +unique for such a big package like this. There are optional things like ace window that you + +08:40.080 --> 08:45.200 +can add on and then hyperbole will work with them but they're not required. So similarly + +08:45.200 --> 08:55.760 +we try to never have any separate C compiled programs like SQLite or org roam which uses + +08:55.760 --> 09:03.600 +SQLite that's required. However we interface to external systems like that so basically + +09:03.600 --> 09:12.400 +you know we'll do some interesting things with org roam nodes in the near future. When + +09:12.400 --> 09:19.200 +does something when doing something where do you determine where to put it k-o-t-l rollo + +09:19.200 --> 09:28.080 +org? I like k-o-t-l k-outline for journaling and org mode for getting things done. Sure + +09:28.080 --> 09:37.820 +I mean you know org and k-outliner are both outline formats so I like k-outliner for like + +09:37.820 --> 09:44.480 +requirements gathering anytime I need things numbered quickly I'm making lists or hierarchies + +09:44.480 --> 09:52.040 +I want those IDs there. Org does some of that but not nearly to the level that the k-outliner + +09:52.040 --> 09:58.600 +does. The rollo again I just stuff all sorts of information in there and then we have very + +09:58.600 --> 10:04.440 +simple search and retrieval operations that we can use on there so I don't need to worry + +10:04.440 --> 10:10.880 +about all of these like drawers and all the complexity that org allows because you want + +10:10.880 --> 10:16.760 +to publish something. I tend to use everything as a live hypertext and don't worry about + +10:16.760 --> 10:22.320 +printing it out or displaying it in some other format too much. So it depends on your taste + +10:22.320 --> 10:28.320 +I would say. Would you recommend a specific resource for getting into hyperbole or should + +10:28.320 --> 10:33.080 +I just start with the manual? Definitely interested in getting into this. Thank you for asking + +10:33.080 --> 10:39.600 +that. Definitely don't start with manual. The manual is almost 170 pages it's a reference + +10:39.600 --> 10:45.760 +manual for specific things that you want to know. For learning once you install hyperbole + +10:45.760 --> 10:55.080 +part of the menu system is control H HDD for documentation and then demo and that puts + +10:55.080 --> 10:59.080 +you into an interactive demo that you just walk through so it's sort of like the Emacs + +10:59.080 --> 11:06.980 +tutorial and that'll get you started much better than any other way and the second thing + +11:06.980 --> 11:13.960 +to do after that I would say is watch some of the videos. One of the videos is a talk + +11:13.960 --> 11:19.800 +I gave earlier that's about an hour-long talk introducing you to hyperbole and its concepts + +11:19.800 --> 11:25.280 +so I think those are the two best ways to get started and then you can move on to the + +11:25.280 --> 11:32.240 +reference manual if you're really good at reading. What is hyperorg? That's a name that + +11:32.240 --> 11:41.360 +Sasha made up I believe for the talk here. I thought it should be hyperborg. It would + +11:41.360 --> 11:48.200 +be a little funnier that right we're trying to be like a borg and get people to use hyperbole + +11:48.200 --> 11:55.440 +and org together and then you'll never you'll never want to be anything else except users + +11:55.440 --> 12:05.920 +of those packages. Anybody want to talk live on the big blue button? + +12:05.920 --> 12:11.960 +Again so the thing is I didn't give you the time when we were supposed to finish with + +12:11.960 --> 12:22.720 +the Q&A and give me just a second. I've confirmed with the people behind me that we actually + +12:22.720 --> 12:26.080 +need to get moving to the next talk at the top of this minute so Bob thank you so much + +12:26.080 --> 12:29.320 +for answering so many questions. I'm sorry we don't have more time for questions because + +12:29.320 --> 12:33.200 +your talk I think was a little longer than we anticipated at first but I still believe + +12:33.200 --> 12:35.840 +you've done a great job at first covering a lot of stuff. + +12:35.840 --> 12:40.080 +I'll be on the etherbed for a little while if people want to push anything else there. + +12:40.080 --> 12:44.040 +Also if you want to stay here we are going to open the BBB if people want to ask you + +12:44.040 --> 12:51.360 +questions we're going to publish the link. Bob we're going to need to get going with + +12:51.360 --> 12:54.560 +the stream we're starting the next talk in 20 seconds thank you so much and I'll see + +12:54.560 --> 13:14.640 +you later. Take care Leo thank you. Bye bye. + +13:24.560 --> 13:36.400 +Gosh yeah pretty much I mean I'm still on this thing if it shows up for a minute but + +13:36.400 --> 13:56.480 +nobody's there. + +13:56.480 --> 14:13.060 +Take care. + +14:26.480 --> 14:28.540 +you + +14:56.480 --> 14:58.540 +you + +15:26.480 --> 15:28.540 +you + +15:56.480 --> 15:58.540 +you + +16:26.480 --> 16:28.540 +you + +16:56.480 --> 16:58.540 +you + +17:26.480 --> 17:28.540 +you + +17:56.480 --> 17:58.540 +you + +18:26.480 --> 18:28.540 +you + +18:56.480 --> 18:58.540 +you + +19:26.480 --> 19:28.540 +you + +19:56.480 --> 19:58.540 +you + +20:26.480 --> 20:28.540 +you + +20:56.480 --> 20:58.540 +you + +21:26.480 --> 21:28.540 +you + +21:56.480 --> 21:58.540 +you + +22:26.480 --> 22:28.540 +you + +22:56.480 --> 22:58.540 +you + +23:26.640 --> 23:28.340 +you + +23:37.680 --> 23:41.040 +Would you still be up to talking? + +23:41.040 --> 23:56.400 +Hi, are you talking to me? + +23:56.400 --> 23:57.400 +Yeah. + +23:57.400 --> 24:12.720 +For a minute, I'm going to just go take a walk in a little bit, but I can quickly pause. + +24:12.720 --> 24:14.920 +Just go ahead. + +24:14.920 --> 24:20.780 +One thing whenever I've tried setting up any knowledge bases, I've generally thrown them + +24:20.780 --> 24:24.500 +away after a while, slowly picking up more and more. + +24:24.500 --> 24:31.680 +Right now, I'm using org room and LogSec. + +24:31.680 --> 24:38.340 +And one of the features I found in LogSec that I like is you're able to have the link + +24:38.340 --> 24:44.520 +in such a way where I can make an outline of everything I want to do on a week in one + +24:44.520 --> 24:49.640 +file and then in the journal view that it will dynamically generate, it will show you + +24:49.640 --> 24:55.240 +the tasks individually on that day just for that day. + +24:55.240 --> 24:57.160 +So is there any way? + +24:57.160 --> 25:04.720 +So it creates kind of a journal based on dated items that it's extracting from multiple other + +25:04.720 --> 25:06.320 +sources, right? + +25:06.320 --> 25:07.320 +Yeah. + +25:07.320 --> 25:16.840 +So it's got a section below it that's from different sources and you can go and do that + +25:16.840 --> 25:24.160 +and it will just dynamically put it at the bottom, but just for those specific links. + +25:24.160 --> 25:32.800 +You know, sort of like the idea of transclusion, right, is something that they've addressed + +25:32.800 --> 25:37.960 +in org mode and we haven't really dealt with that in hyperbole. + +25:37.960 --> 25:43.320 +So those are areas that we want to get into. + +25:43.320 --> 25:51.760 +I think there's a lot of work going on in LogSec and Obsidian that I look at when I + +25:51.760 --> 25:53.900 +have time. + +25:53.900 --> 25:58.720 +So there's definitely ideas to draw around that. + +25:58.720 --> 26:03.920 +One of the things we find is there's just covering all across Emacs, there's so much + +26:03.920 --> 26:12.880 +to do all the time and this being a part-time project, we have to think like RMS does across + +26:12.880 --> 26:17.640 +years rather than weeks just because of the energy around it. + +26:17.640 --> 26:25.280 +But you know, the more people can kind of like write a paragraph and say if hyperbole + +26:25.280 --> 26:32.040 +or some tool could do this, you know, the more likely it is that we'll approach it and + +26:32.040 --> 26:33.920 +turn it into reality. + +26:33.920 --> 26:34.920 +Yeah. + +26:34.920 --> 26:40.440 +Well, like you could probably write some functions that will just dynamically grab information + +26:40.440 --> 26:41.440 +like that out. + +26:41.440 --> 26:49.000 +Yeah, well, I mean like you have that with the high roller so you can just make arbitrary + +26:49.000 --> 26:56.080 +documents and just put stars at the front of each node and the high roller will pull + +26:56.080 --> 27:00.000 +out anything that you want to match on. + +27:00.000 --> 27:05.400 +You know, it can be regular expressions, logic expressions with and or not. + +27:05.400 --> 27:11.400 +So that's already there and it's very simple with the other capabilities to just turn + +27:11.400 --> 27:15.600 +a search into a button somewhere in your file. + +27:15.600 --> 27:23.200 +So you basically create your own dynamic views then without any additional mechanism. + +27:23.200 --> 27:27.400 +But when you want to deal with like the dates and you want to see it, you know, that's a + +27:27.400 --> 27:33.840 +specific view that we would program for you and provide. + +27:33.840 --> 27:40.880 +With Not Much and MU4E, the thing I like about Not Much More is you're able to in your search + +27:40.880 --> 27:48.640 +queries you can use the ands and ors with subject headers or stuff that's only in the + +27:48.640 --> 27:56.520 +body of the paragraph of the email or who it's to and from and I don't think MU4E has + +27:56.520 --> 27:59.120 +near that support. + +27:59.120 --> 28:07.360 +You could use something with org mode and you could do that type of stuff searching + +28:07.360 --> 28:12.520 +like based off of keywords with, there's a package by Alpha Papa, I can't remember the + +28:12.520 --> 28:13.520 +name of it. + +28:13.520 --> 28:14.520 +Org Rifle. + +28:14.520 --> 28:15.520 +OrgQL. + +28:15.520 --> 28:17.960 +OrgQL, yeah. + +28:17.960 --> 28:23.440 +And does like you have anything? + +28:23.440 --> 28:31.280 +I mean, yeah, it's like, I'm not sure you combine say subject, colon, whatever, your + +28:31.280 --> 28:38.520 +regular expression and you map that with a logic expression. + +28:38.520 --> 28:44.600 +So in hyperbole, in high roll though, to do a logic expression, you just do it like a + +28:44.600 --> 28:46.080 +Lisp expression. + +28:46.080 --> 28:49.040 +So but you use and or, ex or not. + +28:49.040 --> 28:56.920 +So you say, you know, open paren, not, and then what you want to not match to, right? + +28:56.920 --> 29:02.480 +This node doesn't have that in it and you know, a broader expression with an and around + +29:02.480 --> 29:07.000 +it would say, so it's not this and it's this. + +29:07.000 --> 29:11.960 +So that all exists the moment you pull up the interface to say, I want to do a string + +29:11.960 --> 29:12.960 +search. + +29:12.960 --> 29:18.080 +You can actually embed those logic expressions right in your search there and it'll do them + +29:18.080 --> 29:21.820 +for you. + +29:21.820 --> 29:28.820 +That would mostly be regex, right, or is it a different syntax? + +29:28.820 --> 29:34.600 +It's a different, so you can have regexes embedded in the logic expression, but the + +29:34.600 --> 29:44.000 +logic itself is done with like the equivalent of, you know, S expressions with and or not + +29:44.000 --> 29:45.200 +an ex or. + +29:45.200 --> 29:57.320 +So I could say and bird watch and it would only find outline items that contain the words + +29:57.320 --> 29:59.280 +bird and watch. + +29:59.280 --> 30:06.000 +So it's very simple, you know, textual like that, but then bird could be a regex if I, + +30:06.000 --> 30:08.500 +you know, as well. + +30:08.500 --> 30:15.600 +So things like that, you have to try it out, I think, you know, to really get a feel for + +30:15.600 --> 30:16.600 +it. + +30:16.600 --> 30:25.080 +I've tried it some, I just, it's just a lot harder to, they have so many of these knowledge + +30:25.080 --> 30:30.120 +base programs that it's hard to make a knowledge base with each one of them and then compare + +30:30.120 --> 30:31.120 +them. + +30:31.120 --> 30:32.120 +Oh, I agree. + +30:32.120 --> 30:33.120 +I mean, that's part of why we built it, right? + +30:33.120 --> 30:39.560 +I mean, we built this before org existed, so. + +30:39.560 --> 30:46.600 +You know, I really do want to tie them together, but I agree with Stallman that org, you know, + +30:46.600 --> 30:54.540 +for scientific research purposes has embedded so many things that people outside that community + +30:54.540 --> 30:59.240 +don't really need and, you know, it's gotten to a level of complexity, I mean, you look + +30:59.240 --> 31:06.080 +at the code base that I still kind of, you know, happy to interface with it and use it + +31:06.080 --> 31:12.560 +and I see a lot of great stuff in there, but I want to be able to have a much simpler format + +31:12.560 --> 31:18.160 +for when I just have all this unstructured data that I want to deal with. + +31:18.160 --> 31:26.760 +Yeah, there's definitely a part of org mode that, that unmodularity and all the features + +31:26.760 --> 31:39.080 +that doesn't feel like Unix-y and the rest of Emacs and I think like org, yeah, just + +31:39.080 --> 31:41.800 +some of the features, org-id, I can't remember what they are. + +31:41.800 --> 31:42.800 +It's really the opposite. + +31:42.800 --> 31:49.180 +It's like, it's coming at it from, you know, that structure process, okay, we're going + +31:49.180 --> 31:54.960 +to tag everything with, you know, what property it is. + +31:54.960 --> 31:59.800 +And hyperbole is sort of the opposite to say, well, we have relational databases for when + +31:59.800 --> 32:01.520 +we're doing that kind of thing. + +32:01.520 --> 32:07.360 +So this is for your everyday information where, you know, oh, I just grabbed all this off + +32:07.360 --> 32:14.440 +the web or, you know, I just added in 200 files and now I want to deal with it and kind + +32:14.440 --> 32:17.760 +of mix it into my Hyperverse. + +32:17.760 --> 32:20.640 +What kind of capabilities can you give me to do that? + +32:20.640 --> 32:25.480 +So say like there were 200 documents that somebody handed you and they all have this + +32:25.480 --> 32:31.520 +cross-reference pattern embedded in it, right, which is a version of hyperlinks, but they're + +32:31.520 --> 32:33.100 +not actually hyperlinks. + +32:33.100 --> 32:40.800 +So you just create a couple line button type in hyperbole because all the mechanisms there + +32:40.800 --> 32:41.800 +already. + +32:41.800 --> 32:48.060 +And then once you activate that type, all of those documents now have those cross-references + +32:48.060 --> 32:50.380 +as hyperlinks. + +32:50.380 --> 32:56.360 +And you solve the problem could be for millions of cross-references with three lines of code. + +32:56.360 --> 33:02.040 +So that's the kind of leverage that we're looking to get without people having to, you + +33:02.040 --> 33:09.440 +know, touch the original source format. + +33:09.440 --> 33:15.760 +That's one of the things your package has tackled was links in the wild, email addresses, + +33:15.760 --> 33:22.440 +websites that people use and identify with. + +33:22.440 --> 33:27.600 +And then you got all that behavior without having to learn key bindings like you do in + +33:27.600 --> 33:28.600 +the org, right? + +33:28.600 --> 33:32.360 +I mean, you got to know at least like 10 in the org, I think. + +33:32.360 --> 33:37.200 +And you know, it's really too largely in hyperbole. + +33:37.200 --> 33:42.560 +So for me, when I'm going along, you know, I just want to mark things, operate on them + +33:42.560 --> 33:46.680 +and not really think about the command a lot. + +33:46.680 --> 33:52.760 +And so, of course, we all know many commands in Emacs, but, you know, so I have that the + +33:52.760 --> 33:59.760 +editing commands, but the knowledge base commands, I don't really need to add on that much more + +33:59.760 --> 34:02.080 +and I can still be very effective. + +34:02.080 --> 34:10.440 +Yeah, you dealt with links in the wild while simultaneously advancing the state of the + +34:10.440 --> 34:13.520 +art with the implicit links. + +34:13.520 --> 34:20.160 +So like what can you do if you stay within your own system and you control everything? + +34:20.160 --> 34:28.960 +Yeah, I think that's the, you know, people love implicit buttons, but it sort of takes + +34:28.960 --> 34:33.520 +a while for it to sink in what you can do with it, right? + +34:33.520 --> 34:40.200 +Because it is a little difficult to figure out how you create your own type. + +34:40.200 --> 34:48.120 +But like we have a GitHub, I don't know if you use GitHub, but type built in and, you + +34:48.120 --> 34:57.720 +know, with very short cross references, it can access issues, commits, projects, linked + +34:57.720 --> 35:04.800 +to all of their things with just, you know, a few characters in your document. + +35:04.800 --> 35:11.720 +And so, you know, there's an interface to an entire web ecosystem that's done in one + +35:11.720 --> 35:19.560 +module and I verbally and, you know, you don't, all you have to do is use it. + +35:19.560 --> 35:24.920 +Something that could be interesting there is if you had it with next common list web + +35:24.920 --> 35:33.000 +browser, you click a GitHub issue on the website and it either downloads the source code or + +35:33.000 --> 35:39.680 +just goes and then the uses maggot or forge to download the issues and then just automatically + +35:39.680 --> 35:42.520 +opens it up in Emacs for you to look at it there. + +35:42.520 --> 35:43.520 +That'd be an interesting. + +35:43.520 --> 35:44.520 +Yeah. + +35:44.520 --> 35:52.160 +Well, we have that for, so if you just type in any buffer, you put a bug pound sign and + +35:52.160 --> 36:00.080 +the number and you press your action key on that, that will display that bug number for + +36:00.080 --> 36:05.640 +Emacs in good news and the dialogue associated with it. + +36:05.640 --> 36:15.440 +So, you know, we have that similar kind of thing for GitHub, GitLab and so it's, you + +36:15.440 --> 36:19.240 +know, a lot of people are interested in that because they have Jira or something and they + +36:19.240 --> 36:24.840 +just want a simple way, you know, to get at their issues in whatever web browser they + +36:24.840 --> 36:25.840 +use. + +36:25.840 --> 36:32.480 +And that's very easy to do and one of the most common things programmers do. + +36:32.480 --> 36:38.320 +You still there? + +36:38.320 --> 36:40.320 +Yeah. + +36:40.320 --> 36:42.320 +Okay. + +36:42.320 --> 36:45.560 +It's just funny. + +36:45.560 --> 36:53.760 +So yeah, I hope, I guess you've obviously explored hyperbole a little bit, you know, + +36:53.760 --> 36:59.760 +let us know what the barriers are to, you know, becoming a regular user and we'll work + +36:59.760 --> 37:01.480 +on this. + +37:01.480 --> 37:11.080 +One thing I found that I like about the K outline is if you, long form journaling is + +37:11.080 --> 37:18.880 +if I do that with centering the buffer, making it a little bit bigger, the text a little + +37:18.880 --> 37:24.200 +bit bigger, I find that I like that more than org mode. + +37:24.200 --> 37:28.360 +If it's short enough, it doesn't matter, but if it's long enough or my thoughts are complex + +37:28.360 --> 37:38.160 +enough, not worrying about buffer headings or body paragraph content or anything along + +37:38.160 --> 37:43.800 +those lines, less presentation helps a lot in that. + +37:43.800 --> 37:50.960 +The automatic paragraph formatting just makes it work, I type, I'm good to go, it automatically + +37:50.960 --> 37:52.360 +does everything like that. + +37:52.360 --> 37:53.360 +Right. + +37:53.360 --> 37:58.400 +You can just write and you get all, you get all this stuff for free. + +37:58.400 --> 38:02.840 +That's kind of a lot, you know, that's like I talked about the cognitive overhead. + +38:02.840 --> 38:08.640 +You know, I think Emacs, people have a lot of trouble understanding why people stick + +38:08.640 --> 38:18.120 +with Emacs now, but I think it does, the common editing capabilities are very similar to hyperbole, + +38:18.120 --> 38:19.120 +right? + +38:19.120 --> 38:24.560 +So you go across all these modes, different applications, but the editing stays the same. + +38:24.560 --> 38:32.520 +That takes so much off your plate compared to learning new hotkeys for every application. + +38:32.520 --> 38:41.560 +And so, you know, we're sold and now you want that kind of thing for your writing, for your + +38:41.560 --> 38:43.560 +knowledge management. + +38:43.560 --> 38:50.840 +And yeah, I think org is, you know, really, it was built for the scientists, the researchers, + +38:50.840 --> 38:51.840 +right? + +38:51.840 --> 38:54.120 +They have to do all that stuff with citations. + +38:54.120 --> 38:57.040 +I'm never going to use the citation capability, right? + +38:57.040 --> 38:59.720 +I don't publish much anymore. + +38:59.720 --> 39:06.020 +So you know, all that work is kind of lost on me, whereas like, you know, better structured + +39:06.020 --> 39:12.840 +outlining is going to be a win for, you know, a very broad cross section of people. + +39:12.840 --> 39:19.400 +So I think it's, you know, I wish more people would give it a try, but I think now we're + +39:19.400 --> 39:25.760 +doing a lot more things that are making hyperbole more accessible to people. + +39:25.760 --> 39:31.240 +A lot of people, I don't know if we can, like people have asked for a doom interface or + +39:31.240 --> 39:32.880 +space max interface. + +39:32.880 --> 39:40.640 +I do notice on Reddit that tons of people seem to use one of those two and they've never + +39:40.640 --> 39:45.720 +learned Emacs in its core form, right? + +39:45.720 --> 39:49.160 +They're coming from VI, so they're Vim users or something. + +39:49.160 --> 39:55.500 +And they, I guess they like all this layering kind of capability, exposing the features. + +39:55.500 --> 40:00.560 +So I haven't really looked at that, but maybe, you know, if we did that and we don't have + +40:00.560 --> 40:08.480 +hyperbole on Melpa, so although, you know, some people, they replace Elpa mistakenly + +40:08.480 --> 40:12.160 +with Melpa, you know, in their config. + +40:12.160 --> 40:16.600 +And so they never see hyperbole because it's not in their packages. + +40:16.600 --> 40:22.920 +Like, I didn't know this existed, like, well, don't do that. + +40:22.920 --> 40:30.600 +One thing that would be nice for stuff like this is having Emacs in it for hyperbole with + +40:30.600 --> 40:35.780 +a knowledge base and then one with Orgrom and a knowledge base and one with the ZK package + +40:35.780 --> 40:39.300 +and a knowledge base, et cetera, et cetera. + +40:39.300 --> 40:45.740 +Is that something you might look at doing a little, you know, sort of like proof of + +40:45.740 --> 40:55.240 +concept of, and share with us, you know, give us some idea of your thoughts? + +40:55.240 --> 41:02.640 +I just thought of it while watching this talk, and I might put together some resources of, + +41:02.640 --> 41:10.360 +there's some other packages that, or ZK, or there's another one of these packages that + +41:10.360 --> 41:11.360 +has a knowledge base. + +41:11.360 --> 41:14.760 +I might put together resources like that, see if I see anybody else's. + +41:14.760 --> 41:16.880 +Yeah, that'd be great. + +41:16.880 --> 41:25.400 +And do you try to note, do you use a prods denote package? + +41:25.400 --> 41:29.600 +I haven't messed with that one yet. + +41:29.600 --> 41:32.520 +I've looked at it. + +41:32.520 --> 41:38.900 +One contention I see between using all these right here is, like, you have the org FC package + +41:38.900 --> 41:44.520 +for flashcards, and that would sound really nice for learning new English words that I + +41:44.520 --> 41:45.520 +ever come across. + +41:45.520 --> 41:50.520 +I could make that, put the description. + +41:50.520 --> 41:54.960 +But if I, it seems like you can either use org rom and you're completely tied into the + +41:54.960 --> 42:01.240 +org rom org system, or you don't do that, then you can't use any of those features where + +42:01.240 --> 42:05.800 +they treat each of the nodes as a individual system. + +42:05.800 --> 42:09.880 +I've dabbled with multiple of the systems, so maybe there's a way. + +42:09.880 --> 42:10.880 +Are you good with org rom? + +42:10.880 --> 42:13.920 +I've been having this one problem. + +42:13.920 --> 42:14.920 +It's weird. + +42:14.920 --> 42:21.280 +I get in this mode where I pointed it somewhere and it worked at one time, and now I repoint + +42:21.280 --> 42:26.040 +it somewhere, and then I point it back and it won't work anymore. + +42:26.040 --> 42:33.620 +So I can't get it to sometimes index my set of org files, and it seems like it should + +42:33.620 --> 42:43.460 +be so basic, but there's something in the sequence of how it caches, I guess, the directory + +42:43.460 --> 42:49.520 +of org files that maybe I've solved it already, I don't recall, but I was just wondering if + +42:49.520 --> 42:53.080 +anybody else had that experience. + +42:53.080 --> 43:00.000 +I've mostly just dabbled in a couple of these systems and then haven't really chosen one + +43:00.000 --> 43:02.120 +to just use. + +43:02.120 --> 43:03.120 +Do you program? + +43:03.120 --> 43:10.040 +Are you by nature a programmer or is it like a hobby? + +43:10.040 --> 43:11.040 +Hobby. + +43:11.040 --> 43:20.440 +I haven't done too much on writing my own functions, but Emacs is by far the biggest + +43:20.440 --> 43:28.720 +or longest program I've ever...longest program, config, whatever, that I've ever used. + +43:28.720 --> 43:34.200 +And you started on Emacs how long ago? + +43:34.200 --> 43:41.760 +Five or ten years ago, somewhere along those lines. + +43:41.760 --> 43:43.240 +Good one. + +43:43.240 --> 43:48.160 +Yeah, it was nice having Stelman there today, right? + +43:48.160 --> 43:56.520 +It's like, well, if you want an actual answer, there's something that only he could answer. + +43:56.520 --> 44:03.400 +I'm surprised how many questions there were on that talk. + +44:03.400 --> 44:06.240 +What about them? + +44:06.240 --> 44:09.840 +I was surprised just about how many questions there were on... + +44:09.840 --> 44:16.320 +Yeah, you hear all this negative stuff about him, but people are very interested in where + +44:16.320 --> 44:25.500 +stuff came from, why have you never used this package that everybody else uses and things + +44:25.500 --> 44:35.640 +like that, what his world view is, since it is so different than so many other people's. + +44:35.640 --> 44:47.200 +All right, well, great talking to you and good luck with your knowledge space research + +44:47.200 --> 44:51.200 +and yeah, let me know if there's something. + +44:51.200 --> 44:57.880 +Try out the development version of Hyperbole like I should, that'll get you all the newest + +44:57.880 --> 45:02.000 +features and we'll get 9.0 out as soon as we can. + +45:02.000 --> 45:06.640 +Yeah, I use the Borg, so I actually do try out the development already. + +45:06.640 --> 45:08.640 +Oh, great, super. + +45:08.640 --> 45:15.040 +Also because sometimes since I'm using the development version of Emacs, it doesn't always... + +45:15.040 --> 45:18.560 +I've had issues compiling in the past because I needed the newer code. + +45:18.560 --> 45:26.760 +I think, I can't entirely remember, but thanks for the package and good talking, nice ideas + +45:26.760 --> 45:27.760 +and talk. + +45:27.760 --> 45:28.760 +Yeah. + +45:28.760 --> 45:29.760 +Take care. + +45:29.760 --> 45:30.760 +Bye. + +45:30.760 --> 45:50.120 +Bye. + diff --git a/2022/captions/emacsconf-2022-indieweb--putting-org-mode-on-the-indieweb--michael-herstine--answers.vtt b/2022/captions/emacsconf-2022-indieweb--putting-org-mode-on-the-indieweb--michael-herstine--answers.vtt new file mode 100644 index 00000000..8845b9fd --- /dev/null +++ b/2022/captions/emacsconf-2022-indieweb--putting-org-mode-on-the-indieweb--michael-herstine--answers.vtt @@ -0,0 +1,467 @@ +WEBVTT + +00:00.000 --> 00:13.360 +and we are live hello again everyone and hi Michael how you doing very well thank you + +00:13.360 --> 00:20.360 +how are you I am doing well I am running out of energy steadily but surely but it's it's + +00:20.360 --> 00:24.920 +it's always a confusing feeling you know because I feel the energy going away the excitement + +00:24.920 --> 00:30.360 +going up because not only because we are close to an end which means my turmoil and my plight + +00:30.360 --> 00:37.560 +will come to an end but also because it's nice to have finished any Max Kant and I've + +00:37.560 --> 00:42.400 +put so many great talk in the wild for people to to be able to consume so and that's no + +00:42.400 --> 00:46.760 +little thanks to all our speakers including you Michael so thank you so much oh no you're + +00:46.760 --> 00:52.160 +very welcome I'm just happy to be a part of it yeah and we're glad you are so Michael + +00:52.160 --> 00:57.760 +do you have the pad open in front of you I do indeed looks like you've got a few questions + +00:57.760 --> 01:04.680 +coming in here yes meeting the question and then answering them sure sure let's start + +01:04.680 --> 01:10.520 +off with the one one I've already answered how did you create the drill down representation + +01:10.520 --> 01:19.320 +of the make call wondered if I sketched it out by hand and scanned it so I should every + +01:19.320 --> 01:26.480 +talk I give both at work and elsewhere people ask this question I should like get a finder's + +01:26.480 --> 01:35.120 +fee from Excalidraw but there's a website on the web called Excalidraw.com very nice + +01:35.120 --> 01:42.000 +diagramming solution it makes these awesome sort of hand written looking diagrams so that's + +01:42.000 --> 01:50.880 +what I used first question have you seen Reclaim ID this allows you to make a login that you + +01:50.880 --> 01:57.160 +own or at least is more open source and ownable seems to fit with the indie web so this is + +01:57.160 --> 02:02.320 +one of the things I've come to like about speaking at EmacsConf I feel like I learn + +02:02.320 --> 02:08.040 +you know as much or more than I teach no I am not familiar with this so I will definitely + +02:08.040 --> 02:18.160 +be taking a look there is an indie web protocol for identity it's called indie auth but yeah + +02:18.160 --> 02:24.520 +thanks for the tip I will definitely check out Reclaim ID what happens when you republish + +02:24.520 --> 02:31.360 +or re-export the same post will the web mentions be sent out repeatedly they will not not you + +02:31.360 --> 02:40.880 +could do that I suppose you might annoy some of your recipients but my solution on successful + +02:40.880 --> 02:47.600 +send of the initial web mention notes that down and is smart enough to not re-send it + +02:47.600 --> 02:56.600 +a second yeah so and actually I want to follow up on something on IRC I think Carl Voight + +02:56.600 --> 03:03.440 +said oh I don't have to have a database you don't have to have a database but I do use + +03:03.440 --> 03:14.520 +a plain text file full of just just printed list forms to maintain state let's see an + +03:14.520 --> 03:19.720 +advantage I see to using org mode for the indie web is you can use it for your notes + +03:19.720 --> 03:26.800 +org room for example no export for private yes yes the web mentions could be org file + +03:26.800 --> 03:36.200 +yes absolutely so yeah I mean so many people have found org mode so handy as a writing + +03:36.200 --> 03:44.040 +tool that you know and I just felt like you were right there right you just need a little + +03:44.040 --> 03:50.200 +bit of code to get you to transcode the HTML and get it on the web and then it was like + +03:50.200 --> 03:55.560 +well gosh I'm right there just a little bit more code and I can start sending web mentions + +03:55.560 --> 04:10.560 +I could start posseing etc etc etc any thoughts on using with ox Hugo so no not because I + +04:10.560 --> 04:18.200 +have anything against ox Hugo simply because I'm unfamiliar with it there's a couple of + +04:18.200 --> 04:25.760 +static site generators out there that you can use with org mode my design philosophy + +04:25.760 --> 04:33.120 +for this was I was going to start with emacs and org mode out of the box and see how far + +04:33.120 --> 04:43.400 +I could get with just adding a little bit of a list around it this a web 3 approach p.s. + +04:43.400 --> 05:00.280 +former not former military just losing my hair not I don't know what web 3 means some + +05:00.280 --> 05:06.960 +people it seems to be a decentralized approach and indie web is all about reclaiming your + +05:06.960 --> 05:14.160 +identity and your data from a few they call them silos right we're talking about the big + +05:14.160 --> 05:28.160 +social media oh cool great help me the web one with static sites yep yep everybody go + +05:28.160 --> 05:35.160 +out and blog on your own server and web rings were kind of like the communication mechanism + +05:35.160 --> 05:50.560 +web 2 is more interactive yeah I mean web 2 certainly was more interactive I guess I + +05:50.560 --> 06:02.080 +see it as we're gonna Michael just interrupting a little quickly we are going to open up the + +06:02.080 --> 06:06.520 +Q&A to people so if you want to join us the same dude as usual you go to the talk page + +06:06.520 --> 06:15.720 +we've also posted the sorry to give you just a second just a second I'm verifying something + +06:15.720 --> 06:21.080 +with audio level okay cool apparently my audio is perfect we were trying to do some live adjustments + +06:21.080 --> 06:25.640 +so we're saying we've opened up the BBB room so that people we want to join the last five + +06:25.640 --> 06:32.080 +questions are able to do so so either on the talk page or you can do this also on IRC + +06:32.080 --> 06:36.320 +we've posted the link over there so Michael you feel free to keep taking questions on + +06:36.320 --> 06:39.600 +the pad we still have many of them but I just wanted to let people know in case they wanted + +06:39.600 --> 06:45.200 +to join and also one last information we will need to move on with the next talk in 16 minutes + +06:45.200 --> 06:57.560 +so you still have plenty of time yeah wow I'm excited there's so much time left to answer + +06:57.560 --> 07:04.320 +question or oh wow I'm not sure what I'm gonna do for 60 minutes oh no the former oh wow + +07:04.320 --> 07:09.240 +I'm not sure I'm gonna get to all these all these right well you'll be able to answer later + +07:09.240 --> 07:14.280 +try to do as many as you can okay so I'm on IRC right now somebody's telling me I'm super + +07:14.280 --> 07:19.480 +quiet I'm gonna adjust the mic no don't worry about OJ levels it's on us you don't worry + +07:19.480 --> 07:27.080 +about it let's see Sasha's gonna try and fix is there a workflow to use emacs to publish + +07:27.080 --> 07:38.360 +and connect directly to target websites so that's an interesting question can you what + +07:38.360 --> 07:46.080 +do you mean by workflow in that question so you want to cut telegraph out of the equation + +07:46.080 --> 08:00.880 +get that that means oh I'm sorry I thought somebody had joined the chat room don't worry + +08:00.880 --> 08:04.800 +I will I will let them know if you have people joining and asking questions if you hear another + +08:04.800 --> 08:08.560 +voice than mine it's someone joining and I will try to be polite and say yeah can you + +08:08.560 --> 08:13.320 +please wait let's Michael finish the question don't worry I don't know everything so if + +08:13.320 --> 08:20.560 +you want to cut telegraph out of equation that means you're going to need to take on + +08:20.560 --> 08:28.720 +more work client side in terms of first discovering the web mention endpoint which is gonna involve + +08:28.720 --> 08:37.840 +parsing HTML which we all hate then you're going to need to send the request to that + +08:37.840 --> 08:43.960 +web your web mention to that endpoint which introduces you know the standard question + +08:43.960 --> 08:48.120 +with web hooks is what if they're down what if you can't reach them what if you're not + +08:48.120 --> 08:53.560 +on the networks and now you got to build yourself a queuing system but sure sure absolutely + +08:53.560 --> 09:02.640 +indie web is just a protocol and I think the community would actually welcome fewer points + +09:02.640 --> 09:10.520 +of failure like telegraph we got the BBB audio better okay great so questions we were discussing + +09:10.520 --> 09:22.520 +web three Carl says some people started to term web zero for similar decentralized approaches + +09:22.520 --> 09:30.000 +yeah I don't think that by no means does indie web imply static site there are actually + +09:30.000 --> 09:38.440 +CMS systems that talk to that speak the indie web protocols I think even WordPress does + +09:38.440 --> 09:44.560 +it as does Drupal yeah so I don't know if you want to we can discuss further if you + +09:44.560 --> 09:56.080 +want to hop in the room but yeah I guess I see it more as a decentralized web than three + +09:56.080 --> 10:01.320 +do I have a process nope I had sorry the question is do you have a process running on the web + +10:01.320 --> 10:09.040 +server to receive requests no so those are cashed for me and I literally have a cron + +10:09.040 --> 10:16.080 +job on my personal desktop and once an hour I just reach out and say you got any more + +10:16.080 --> 10:23.920 +web mentions for me and process them back here that does mean given that I have a statically + +10:23.920 --> 10:32.280 +generated website I need to republish every time I receive a web mention Michael if you + +10:32.280 --> 10:35.240 +don't mind interrupting we have someone in the room who would like to ask a question + +10:35.240 --> 10:41.520 +Max if you want to unmute yourself if you could ask the question I'm not sure if you're just + +10:41.520 --> 10:47.600 +showing your webcam yes you do have a question go on hi Michael no I actually didn't have + +10:47.600 --> 10:55.160 +a question I asked a question about the web 3.0 and I have a little concern about you + +10:55.160 --> 11:01.160 +know you use you describe kind of how dead it was to have just a static site and not + +11:01.160 --> 11:08.800 +be able to interact with people and so I was you know just thinking along those lines is + +11:08.800 --> 11:16.360 +anywhere is it a better way how satisfied are you with this with this with web mentions + +11:16.360 --> 11:23.120 +and you know sort of thumbs up down and did you actually get a demo running I mean are + +11:23.120 --> 11:39.960 +we able to see it somewhere well you can see it on my site which is just but I have can + +11:39.960 --> 11:43.480 +actually can you put it in the back can you put it in the back so that other people can + +11:43.480 --> 11:53.880 +actually access it including Max okay yes Max I know you're still there but I just want + +11:53.880 --> 11:57.280 +everyone to be able to click on it as well I'll do it don't worry about it I'll take + +11:57.280 --> 12:08.720 +care of it here we go Carl says web 3 is supposed to be something really strange with blockchains + +12:08.720 --> 12:22.240 +and this is definitely nothing like that yeah Carl put it much better than I could and well + +12:22.240 --> 12:26.320 +I'll just kind of okay cool Max is still here I'll just finish answering the question how + +12:26.320 --> 12:37.400 +satisfied am I it's work in progress I'm initially happy I was limited by time for this talk + +12:37.400 --> 12:43.040 +and as you can see maybe I got too far into the weeds but it was fairly involved just + +12:43.040 --> 12:50.360 +describing how to send and receive web mentions there's a second indie web protocol called + +12:50.360 --> 13:00.320 +posse publish on your own site syndicate elsewhere in which you can say okay I want to publish + +13:00.320 --> 13:09.240 +this post to my site oh and at the same time fire off a tweet referencing it and fire off + +13:09.240 --> 13:18.120 +a mastodon to referencing it and there are protocols for like pulling likes and boosts + +13:18.120 --> 13:27.480 +of that back to your own site as feedback and I've been playing with that a little bit + +13:27.480 --> 13:36.880 +and actually feeling pretty good about it yeah so happy to talk more other questions + +13:36.880 --> 13:42.200 +okay right so do I have a process running on the web server to receive requests nope + +13:42.200 --> 13:49.960 +just a cron job I think perhaps you're doing too much inside emacs yeah yeah great question + +13:49.960 --> 13:56.400 +I can't remember if I alluded to this at the end of the talk but as I said when I started + +13:56.400 --> 14:05.080 +down this path felt that was so close with just plain vanilla emacs in org mode it couldn't + +14:05.080 --> 14:12.160 +be that hard right and of course this is famous last words initially it was just a little + +14:12.160 --> 14:20.000 +bit of code around that to get the static site generator up sending web mentions are + +14:20.000 --> 14:28.480 +yeah it's a lot of code and so I'm definitely kind of at this point of you know is it time + +14:28.480 --> 14:37.040 +to turn to a proper CMS I start out using web mentions of service web mention telegraph + +14:37.040 --> 14:44.200 +then you want to change endpoint whether to a different service or I want to take them + +14:44.200 --> 14:53.480 +I see I see it didn't be the way the web mention oh I'm sorry let me finish the question I + +14:53.480 --> 14:59.960 +keep to make this clear so the question is let's suppose you start your site using web + +14:59.960 --> 15:06.800 +mentions of service and then later on you decide I want to change services or I'm just + +15:06.800 --> 15:12.080 +going to handle this myself is there sort of a dead letter problem will web mentions + +15:12.080 --> 15:21.600 +show up at the at the old address and it shouldn't be so when somebody wants to reach you that + +15:21.600 --> 15:28.560 +is when they do endpoint discovery so they if you would get request for your page and + +15:28.560 --> 15:36.560 +parse the HTML and they discover where to send web mentions there pose it for some reason + +15:36.560 --> 15:45.160 +they did that and sat on that information for some period of time of course then they + +15:45.160 --> 15:51.320 +might that you know they might send it to an old address but that would be that would + +15:51.320 --> 15:59.680 +be a non-standard use of the protocol you should be good have I seen a Gregor browser + +15:59.680 --> 16:05.480 +is a decentralized kiss browser using some of the peer-to-peer protocols interesting + +16:05.480 --> 16:14.920 +I have not I'm going there right now thank you + +16:14.920 --> 16:18.720 +somebody points out some things are better done outside of e-max I have built something + +16:18.720 --> 16:33.760 +similar at by star dot net you see www dot by hyphen star dot net okay let's go see it + +16:33.760 --> 16:38.200 +this is interesting thank you I will definitely take a look yeah so I can say I'm kind of + +16:38.200 --> 16:42.840 +on the cusp of saying okay this has been a fun experiment now I need to go code it up + +16:42.840 --> 16:51.040 +outside of e-max I like the fact that you know the discussion we were having the question + +16:51.040 --> 16:56.600 +about you know am I doing too much in e-max is literally a question that could be asked + +16:56.600 --> 17:01.960 +to every single presenter at all the e-max conference other ads because you know the + +17:01.960 --> 17:05.400 +whole point of e-max golf is showing what type of stuff you can do in e-max and naturally + +17:05.400 --> 17:09.440 +the question is going to follow that is are you just doing too much with e-max and that's + +17:09.440 --> 17:15.080 +always great question to take and I think you did spend it late yeah it's the old joke + +17:15.080 --> 17:22.640 +right it's a good editor in an awesome operating system yes I will allow you to do the usual + +17:22.640 --> 17:30.680 +jokes about e-max I will not allow you to refer to our core enemy that's they who may + +17:30.680 --> 17:37.320 +not be named okay fair okay so Michael we do have about five minutes of questions left + +17:37.320 --> 17:42.000 +I think you've answered all the questions and I don't see anyone else with a microphone + +17:42.000 --> 17:52.520 +on in BBB so we might we might leave it at that if you're okay with this okay well thank + +17:52.520 --> 17:56.200 +you so much Michael for taking the time to not only do a presentation for us but also + +17:56.200 --> 18:03.560 +for answering the questions in here no thank you all like I say I always learn as much + +18:03.560 --> 18:09.560 +as I teach here so great thank you okay amazing all right and for the others I'll hold you + +18:09.560 --> 18:13.600 +hostage a little while longer Michael we will be adding into the next talk in about four + +18:13.600 --> 18:18.800 +minutes and 30 seconds so we'll put up some music and I'll you'll hear my voice again + +18:18.800 --> 18:27.640 +when we are supposed to go live again so see you in a bit everyone and see you Michael + +18:27.640 --> 18:38.680 +and we are all fair okay I have to dash see you Michael you are calling music on Jen + +18:38.680 --> 18:59.040 +can we put yes thank you + +18:59.040 --> 19:16.440 +we volume again now to the original level + +19:16.440 --> 19:41.840 +very good + +19:41.840 --> 19:56.440 +you know what + +19:56.440 --> 20:21.880 +what + +20:21.880 --> 20:38.120 +Alright, I'm talking now. Okay, the audio is good. See you guys, see you in about 2 minutes. + diff --git a/2022/captions/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.vtt b/2022/captions/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.vtt new file mode 100644 index 00000000..dd1a46d4 --- /dev/null +++ b/2022/captions/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.vtt @@ -0,0 +1,1019 @@ +WEBVTT + +00:00.000 --> 00:01.800 +Oh, it's already being recorded. + +00:01.800 --> 00:02.800 +Great. + +00:02.800 --> 00:03.800 +So, hi, Alfred. + +00:03.800 --> 00:04.800 +How are you doing? + +00:04.800 --> 00:05.800 +I'm doing great. + +00:05.800 --> 00:06.800 +Thank you. + +00:06.800 --> 00:07.800 +It's a bit dark outside. + +00:07.800 --> 00:09.840 +I understand it's morning for most of you. + +00:09.840 --> 00:12.000 +Yes, well, not for me. + +00:12.000 --> 00:16.280 +I'm also in Europe, and I can tell you it's going to get dark pretty damn quickly. + +00:16.280 --> 00:19.000 +So, thank you so much for your talk. + +00:19.000 --> 00:22.440 +I didn't get to ask you the question before, but do you have access to the pads and the + +00:22.440 --> 00:25.000 +questions? + +00:25.000 --> 00:26.520 +I do have access to it. + +00:26.520 --> 00:30.520 +I'll just open it up. + +00:30.520 --> 00:33.520 +I'm not sure Sasha had given it to me, no. + +00:33.520 --> 00:35.520 +Sorry, what was the question? + +00:35.520 --> 00:38.520 +Could you post a link to it in the chat? + +00:38.520 --> 00:39.520 +I can give you a link. + +00:39.520 --> 00:40.520 +You can press. + +00:40.520 --> 00:45.480 +I'm pretty much getting the chat, so it should appear on the left, but in the meantime, if + +00:45.480 --> 00:49.480 +you want, I can just ask you the question, and you can maybe, whilst you do the little + +00:49.480 --> 00:54.520 +thing to open the pad, we can actually start answering one of the questions. + +00:54.520 --> 00:56.520 +Do you mind if I read you one? + +00:56.520 --> 00:58.520 +Yeah, go ahead. + +00:58.520 --> 00:59.520 +Sure. + +00:59.520 --> 01:02.720 +So the first question that we had was, it'd be interesting if you explained why WeChat + +01:02.720 --> 01:04.440 +is a necessity for you. + +01:04.440 --> 01:07.760 +Outside China, most people have no reason to use it at all. + +01:07.760 --> 01:11.520 +So can you actually give up on this? + +01:11.520 --> 01:19.520 +My utility for WeChat is basically, I've got to have calls every morning, so my manager + +01:19.520 --> 01:20.520 +has to use the tool. + +01:20.520 --> 01:23.520 +He's not a huge fan of it either. + +01:23.520 --> 01:28.520 +It's company policy, and there's plenty of sharing that has to go through that. + +01:28.520 --> 01:37.520 +So it's kind of all, since it's the tool that's used by most companies in China, it's kind + +01:37.520 --> 01:39.520 +of a tool that you have to work around. + +01:39.520 --> 01:42.520 +Now, most people know this. + +01:42.520 --> 01:49.520 +WeChat is a privacy nightmare, and as I touched on during my talk, it's also just a nightmare + +01:49.520 --> 01:51.520 +in general to work around. + +01:51.520 --> 01:57.520 +It's interesting to try and find ways to work around it or to minimize its impact on my + +01:57.520 --> 01:59.520 +life as much as possible. + +01:59.520 --> 02:02.520 +So strictly speaking, I don't need to use it, obviously. + +02:02.520 --> 02:14.520 +Functions that it has can be used by other software, but yeah, that's most of it. + +02:14.520 --> 02:15.520 +Okay, great. + +02:15.520 --> 02:16.520 +Also, I'm really sorry. + +02:16.520 --> 02:19.520 +Apparently, my audio seems to be crackling a little bit. + +02:19.520 --> 02:23.520 +I will address this as soon as we're finished with this talk, but there isn't all that much + +02:23.520 --> 02:24.520 +I can do right now. + +02:24.520 --> 02:25.520 +So sorry, people. + +02:25.520 --> 02:28.520 +You'll have to deal with it for a little while. + +02:28.520 --> 02:30.520 +Okay, so next question. + +02:30.520 --> 02:33.520 +There's a question that is actually dear to my heart. + +02:33.520 --> 02:36.520 +I've looked at CRD.er for collaborative real-time editing. + +02:36.520 --> 02:39.520 +Do you actually know what it is? + +02:39.520 --> 02:42.520 +I hadn't looked at it, no. + +02:42.520 --> 02:51.520 +For me, collaborative is less important because most of my work is just like versions. + +02:51.520 --> 02:57.520 +So I have a version of a script that I send off to my editor, and we don't work on it + +02:57.520 --> 02:58.520 +together. + +02:58.520 --> 03:08.520 +So that's kind of been less of an important part for my workflow, but it is interesting. + +03:08.520 --> 03:10.520 +I'll have to take a look at it. + +03:10.520 --> 03:16.520 +It used to be a bigger part of my workflow when I was a student. + +03:16.520 --> 03:20.520 +So it's definitely interesting to look into, but unfortunately, I don't have much to say + +03:20.520 --> 03:23.520 +about it. + +03:23.520 --> 03:25.520 +Yeah, but you're fine. + +03:25.520 --> 03:28.520 +The reason is that I hope I don't have too much now. + +03:28.520 --> 03:31.520 +Alfred, can you tell me, am I cutting off a lot when I'm talking? + +03:31.520 --> 03:32.520 +Yeah, it's pretty bad. + +03:32.520 --> 03:38.520 +I thought it was my internet connection, but it's not great. + +03:38.520 --> 03:40.520 +You know what? + +03:40.520 --> 03:44.520 +What we'll do for the moment is that we'll stick to the audio simply. + +03:44.520 --> 03:48.520 +Can you still hear me right now? + +03:48.520 --> 03:51.520 +Yeah, I can hear you a little bit better. + +03:51.520 --> 03:52.520 +Okay, sure. + +03:52.520 --> 03:54.520 +I'll put up my webcam like this. + +03:54.520 --> 03:55.520 +You know what? + +03:55.520 --> 03:57.520 +We just care about you, so you'll have to be solid on the scene. + +03:57.520 --> 04:01.520 +The reason I was asking you about CRDT, is it better now? + +04:01.520 --> 04:03.520 +Can you just confirm the audio is better? + +04:03.520 --> 04:05.520 +Yeah, the audio is much better. + +04:05.520 --> 04:06.520 +Cool, thank you. + +04:06.520 --> 04:08.520 +I'm so happy to hear this. + +04:08.520 --> 04:13.520 +The reason we're mentioning CRDT is that it's actually pretty great. + +04:13.520 --> 04:19.520 +A lot of people think about collaborative editing, and they tend to think about Google Doc + +04:19.520 --> 04:25.520 +or any kind of proprietary solution, but CRDT is kind of broaching the gap + +04:25.520 --> 04:29.520 +to what you can do with multiple people using Emacs. + +04:29.520 --> 04:33.520 +Now, I'm talking about this because I've worked with Shantan Hong, + +04:33.520 --> 04:37.520 +who is the mentor of CRDT, and we've worked a little bit on it, + +04:37.520 --> 04:42.520 +and they are still infuriating problems with it, especially making it secure + +04:42.520 --> 04:45.520 +and all this jazzy nonsense. + +04:45.520 --> 04:51.520 +But I do recommend looking into it because it would make it much easier to work with other people. + +04:51.520 --> 04:58.520 +All right, now that I am not lagging anymore, do you have the pad in front of you? + +04:58.520 --> 04:59.520 +I do. + +04:59.520 --> 05:01.520 +Do you want me to answer questions directly? + +05:01.520 --> 05:04.520 +Yes, that might be best. + +05:04.520 --> 05:09.520 +I kind of like to work with the little hells in the background to make sure that I can... + +05:09.520 --> 05:11.520 +All right, I'll leave you to it. + +05:11.520 --> 05:17.520 +I'll answer the question about org-mode files and sharing, which I've encountered. + +05:17.520 --> 05:24.520 +I've kind of had a whole issue starting out with, well, I've started working with org-mode files, + +05:24.520 --> 05:27.520 +and now I've got to figure out what do I do with them. + +05:27.520 --> 05:32.520 +So my first instinct was I'll just share the org-mode file directly, + +05:32.520 --> 05:41.520 +which as some people might have figured out, if they've tried, is not very successful with normal people. + +05:41.520 --> 05:48.520 +I've also tried exporting it to docx or to ODT, but that's problematic because you have, well, + +05:48.520 --> 05:51.520 +plenty of standards in ODT which don't transfer well. + +05:51.520 --> 05:59.520 +So for example, by default, the ODT kind of adopts, what's it called, a latex-like structure. + +05:59.520 --> 06:08.520 +So it's like 1.1.1, which isn't optimal for writing and sharing documents, at least in the way that I write them. + +06:08.520 --> 06:15.520 +So what I've settled for is for now just not sharing the org directly. + +06:15.520 --> 06:25.520 +I wanted to be able to do that through GitHub or GitLab, but it's a bit too much of a hassle to ask people to create an account there. + +06:25.520 --> 06:34.520 +And I've just created some export profiles for my ODT documents, which sorts out that problem + +06:34.520 --> 06:40.520 +and allows me to just share that through that and kind of bypass org-mode files for now. + +06:40.520 --> 06:45.520 +So unfortunately, I kind of am not able to stay 100% org. + +06:45.520 --> 06:53.520 +My plan on the long term is to have it go up on a website, so kind of make a work wiki, + +06:53.520 --> 06:59.520 +which will allow me to link back to some research documents in the script. + +06:59.520 --> 07:12.520 +So that's the long term plan, and that'll be built with org-mode documents, so with OX Hugo and all that kind of thing. + +07:12.520 --> 07:15.520 +But yeah, that's most of it. + +07:15.520 --> 07:21.520 +Pandoc for incoming and outgoing docs, repeating conversions. + +07:21.520 --> 07:28.520 +So I do use Pandoc for outgoing docs, as I just said. + +07:28.520 --> 07:32.520 +I found some issues with document quality. + +07:32.520 --> 07:43.520 +So as I said, layouts are kind of wonky, but that's possible to work through if you go into the settings + +07:43.520 --> 07:49.520 +and adjust basically to how you want it to look like. + +07:49.520 --> 07:54.520 +And for incoming docs, so that's a bit more of a hassle. + +07:54.520 --> 08:02.520 +My plan for this talk was to have it a bit more ready, but I've got this integration for org-ic, + +08:02.520 --> 08:10.520 +org-apple-pages documents, that kind of thing. + +08:10.520 --> 08:22.520 +So that's often the documents that I get from my colleagues, and I found a way to transfer them into org documents. + +08:22.520 --> 08:29.520 +I did that kind of quickly, so I don't think I'm quite ready to share exactly how it went, + +08:29.520 --> 08:34.520 +but I'm planning on doing some documentation around that. + +08:34.520 --> 08:40.520 +But yeah, basically the gist of it is, I don't find it a huge issue. + +08:40.520 --> 08:52.520 +I do use other tools other than just Pandoc to complement that, because otherwise, yes, I wouldn't be able to use that for incoming and outgoing docs, + +08:52.520 --> 08:56.520 +and I'd have to copy and paste that. Yes? + +08:56.520 --> 09:00.520 +Sorry, I mispress my talking to production button. Don't mind me. + +09:00.520 --> 09:02.520 +No worries. + +09:02.520 --> 09:13.520 +Begin on Emacs again. Welcome. Yeah, that's an issue I've got as well. + +09:13.520 --> 09:14.520 +Let's take your time. + +09:14.520 --> 09:24.520 +So Alfred, what we're probably going to do soon is that, as we've probably told you in the opening remarks, we will be letting people in. + +09:24.520 --> 09:37.520 +So right now we are in the room with Alfred on BBB, BigBlueButton, and we have now opened the session so that people can join and ask questions with their voice rather than having to type them out. + +09:37.520 --> 09:40.520 +And we have about 10 more minutes until we need to move on to the next talk. + +09:40.520 --> 09:51.520 +So normally, if you go to the talk page or all the areas that Sasha pointed out earlier, you should be able to find the link to the room and join us to ask questions directly to Alfred. + +09:51.520 --> 09:56.520 +And Alfred, in the meantime, I don't think we have any more questions for now. + +09:56.520 --> 10:01.520 +You have the questions about beginning on Emacs that is now finished, if you want to take this one in the meantime. + +10:01.520 --> 10:08.520 +Yeah. And so the comments and all that, I'll go through the notes again once I've got a bit more time. + +10:08.520 --> 10:16.520 +It's been a bit of a hectic day and put some more references in. + +10:16.520 --> 10:21.520 +So what was your moment when you started to work in Emacs instead of config editing? + +10:21.520 --> 10:33.520 +Interesting. So basically, as I hinted at in my talk, I did spend a lot of time this summer just editing my configs. + +10:33.520 --> 10:50.520 +And I kind of had the click, the moment where, oh, I really need to stop doing just that after I had editing, well, text editing workflow that I was happy with. + +10:50.520 --> 10:56.520 +So I think it's possible to just jump into doing Emacs without editing the config at all. + +10:56.520 --> 10:58.520 +That's not the way that I work. + +10:58.520 --> 11:09.520 +But I think that, yeah, being able to not be too frustrated in like figuring out how to take notes, like the Space NMT in Doom Emacs, + +11:09.520 --> 11:18.520 +just creating an org capture templates or using an org capture templates and realizing, all right, I can just, any config idea that I have, + +11:18.520 --> 11:28.520 +I can put off to later and continue focusing on this work that I have right in front of me. + +11:28.520 --> 11:34.520 +I think that was kind of a moment where I realized, all right, I don't need to edit this config all day. + +11:34.520 --> 11:42.520 +And I like to edit my config for like a whole month, but obviously that's not quite feasible. + +11:42.520 --> 11:51.520 +I mean, working on a month on your config, you know, some of us have been working on our config for the better part of the last 30 years or 10 years or 20 years, depending on your age. + +11:51.520 --> 11:54.520 +So do not worry, you will find the time to work on your config. + +11:54.520 --> 11:57.520 +Emacs is just about editing your config. + +11:57.520 --> 11:59.520 +So before you continue, I just want to let people know. + +11:59.520 --> 12:05.520 +So we have opened up the question and answer room and now people can join and ask questions. + +12:05.520 --> 12:13.520 +But I see for now, we mostly have people wanting to listen in, but that's also because as soon as we'll need to move the stream to the next talk, + +12:13.520 --> 12:17.520 +you'll still be able to join the BBB room and it will still be open. + +12:17.520 --> 12:25.520 +So that if you want to ask questions to Alfred off stream, be careful, it will still be recorded and still be posted on the website afterwards. + +12:25.520 --> 12:26.520 +Well, you can do so. + +12:26.520 --> 12:30.520 +And as long as Alfred is available, he can answer your questions. + +12:30.520 --> 12:41.520 +And otherwise, if you don't want to join, you can still type your questions in a pad and I'm sure we'll find the time maybe after Christmas or whenever we are all a little more available to answer all the questions that we have. + +12:41.520 --> 12:45.520 +All right. So sorry, Alfred, you can go now again. + +12:45.520 --> 12:53.520 +OK, so I've seen I've seen the latest question from Vidianos. + +12:53.520 --> 12:55.520 +So why is Emacs recommended for journalism? + +12:55.520 --> 13:02.520 +It's actually an interesting question because that's that's what I had asked myself when I just started. + +13:02.520 --> 13:15.520 +And I wouldn't say it's recommended. Obviously, it's it's like just as Emacs isn't recommended to anyone in particular because you have you have to really figure out, oh, this is for me. + +13:15.520 --> 13:18.520 +But I think it's yeah. + +13:18.520 --> 13:25.520 +Sorry, sorry, sorry. Is my button not working again? I will, I will chastise myself. + +13:25.520 --> 13:29.520 +So I think it's. + +13:29.520 --> 13:40.520 +Gotta get back into it. And it's valuable for journalism in the sense that there are plenty of tools that are used for scientific research, which are also used for journalism research. + +13:40.520 --> 13:48.520 +And in the sense that Emacs is kind of tailored through big tags, through big latex, through like Orgrom and Orgrom Noter, that kind of thing. + +13:48.520 --> 13:56.520 +And it's it's very easy to transfer these skills into journalism. + +13:56.520 --> 14:05.520 +And because you're just researching topics and you're transcribing interviews, you're like going through data and trying to figure out, all right, this is the part that's that's valuable. + +14:05.520 --> 14:13.520 +This is like something that I'm going to research. And for me, Orgrom is kind of a game changer because it allows me to just. + +14:13.520 --> 14:22.520 +Set my set my thoughts aside, just create a create a Rome link and know that I'm going to I'm going to get back to it. + +14:22.520 --> 14:30.520 +And so I think it's recommended in that sense, because otherwise I'd just be writing in in a Google Drive document. + +14:30.520 --> 14:36.520 +And just be spending all my days working on stuff that's not exactly related. + +14:36.520 --> 14:45.520 +But obviously, for people who have a bit more self-control than I do, it's probably a bit easier and less less necessary. + +14:45.520 --> 14:51.520 +But it's so good to hear this. Sorry for the interruption, but it's so good to hear that Orgrom actually manages to. + +14:51.520 --> 14:55.520 +People manage to use Orgrom to, you know, give some more life to their notes. + +14:55.520 --> 15:00.520 +It's just not a scribbled notes in one of your book that you never open again. + +15:00.520 --> 15:06.520 +It's the fact that it's just a file and that you can link it very easily to the rest of your files. + +15:06.520 --> 15:14.520 +It makes it really easily accessible to not forget about it and to try to refine it later on into something more valuable. + +15:14.520 --> 15:17.520 +Be it an article, be it a research paper or stuff like this. + +15:17.520 --> 15:21.520 +So, yeah, I'm very pleased to hear that Orgrom is being put to such use. + +15:21.520 --> 15:29.520 +And we'll hear plenty more about Orgrom and Zettelkasten as usual ever since there was the boom in 2020 about Orgrom stuff and Zettelkasten stuff. + +15:29.520 --> 15:36.520 +So don't worry about it. And if you're tired about it, well, sorry, you can go watch that or something. + +15:36.520 --> 15:44.520 +Yeah, no, I think that when I realized how to use Orgrom was also kind of a moment that made me want to stay to stay there. + +15:44.520 --> 16:01.520 +Like I had shown it on the on the talk, but my my documentary ideas page is basically just like chock full of ideas of stuff that I have thought about for five minutes and just stuff there. + +16:01.520 --> 16:05.520 +And no, but I can I can create like stumble on the link at some point and work on it. + +16:05.520 --> 16:22.520 +So it's yeah, it's very valuable. I think it's something that we even outside of Emacs, we should probably be a bit more conscious of of using these kinds of tools and promoting promoting that kind of association and kind of linking. + +16:22.520 --> 16:29.520 +Even outside of the confines of Orgrom as much as as there are confines, I suppose. + +16:29.520 --> 16:44.520 +I think people are already complaining that there's too much Orgrom being talked about. So before we start, well, going outside of Emacs, you know, there are plenty of tools as well outside of Emacs tools, which are also floss, which allow you to have similar workflows. + +16:44.520 --> 16:57.520 +But I believe really that tools within Emacs are within the entire stack of Emacs with the philosophy of Emacs that allows so much different modes to be developed on top of it, which is amazing. + +16:57.520 --> 17:03.520 +Before we continue, I kind of want to check the clock because we will need to get started on the next talk eventually. + +17:03.520 --> 17:11.520 +We do have a lot of people joining on BBB and thank you. Hi, everyone. You are probably hearing me twice, once in BBB and once on the stream. + +17:11.520 --> 17:17.520 +So don't forget to pause the stream if you are hearing my voice in doubles. + +17:17.520 --> 17:27.520 +We will need to move at 45, so in five minutes, to the next talk. And until then, until then, it is very French of me to say then and not then. + +17:27.520 --> 17:31.520 +We can take a couple more questions then, Alfred, if you want. + +17:31.520 --> 17:34.520 +Absolutely. + +17:34.520 --> 17:47.520 +So yeah, open the questions to people joining in on the mic. And if there's nothing, I'm happy to chat around or to wait. + +17:47.520 --> 17:53.520 +Sure. Do we have any other questions on the panel? I think you've been pretty thorough and thank you so much for taking the time to answer this. + +17:53.520 --> 18:04.520 +One of the reasons that we wanted to have two tracks this year is to be able to spend a little more time with Spukers because it was really heart wrenching last year to have so many talks going one after the other. + +18:04.520 --> 18:10.520 +We barely had the time to talk. And this year, it's a more of a leisurely paced stream. + +18:10.520 --> 18:16.520 +And yeah, it feels like I can take my time. I'm not running constantly out of breath. + +18:16.520 --> 18:26.520 +It's still the beginning. OK, I still was extremely stressed whenever we need to press the start stream button, you know, all kinds of fire starts spawning left and right. + +18:26.520 --> 18:39.520 +But if we don't have any more questions, well, maybe we can just go on a little break and reconvene in four minutes because I don't see people on BBB having their mic open. + +18:39.520 --> 18:42.520 +So, Alfred, you're more than welcome to stay in the room. + +18:42.520 --> 18:48.520 +What we are probably going to do now is go on a little bit of a break. So we're going to try to put something on the screen. + +18:48.520 --> 18:55.520 +There's just been a question from Corwin. So are you closing out the room? + +18:55.520 --> 19:01.520 +Oh, no, no, no. We probably will. Well, OK, let me just read Corwin's question. + +19:01.520 --> 19:04.520 +Yes, you do have a question for Corwin, but we're not going to close the room. + +19:04.520 --> 19:12.520 +We're going to leave it open as long as you want to stay. You can stay five to ten minutes. Maybe people might show up. But otherwise. + +19:12.520 --> 19:17.520 +So just reading Corwin's questions because it's not in a pad yet, I think. + +19:17.520 --> 19:25.520 +So do you use any fancy solutions for annotating text onto particular video timestamps? + +19:25.520 --> 19:30.520 +Well, I don't use it yet, but it's planned. + +19:30.520 --> 19:38.520 +So I've started a Reddit thread and Sasha has been helpful with answering that one. + +19:38.520 --> 19:50.520 +But my plan is to work with subtitle editing at some points and to introduce. + +19:50.520 --> 20:00.520 +Wait, annotate. I might have misunderstood the question. Oh, sorry. + +20:00.520 --> 20:04.520 +I'm looking for the question as well. So don't worry if you're lost, I'm also lost. + +20:04.520 --> 20:18.520 +Annotation text. If it's possible to get a clarification for what you mean by annotation text, is that like text effects or is that subtitles? + +20:18.520 --> 20:28.520 +I think it was mostly about you were talking about notes taking. I think annotation in that sense on the videos would be you have a video and you're trying to take note on this video. + +20:28.520 --> 20:35.520 +Like either you have the timestamp on the side or you overlay something. But I think it's mostly about taking notes on videos. + +20:35.520 --> 20:43.520 +OK, yeah. So for now, I'm creating a new link between every video or podcast that I listen to, + +20:43.520 --> 20:56.520 +but I but I remember to do so and creating just an org room, an org room documents for every for every for every new episode or every new video. + +20:56.520 --> 21:12.520 +But I am definitely going to have to take some time and figure out a process in which I can link together RSS feeds or L feed as well to to be able to annotate that and link it up with my other text notes. + +21:12.520 --> 21:20.520 +So nothing fancy yet, but that is planned. So stick around till next year and I might have something for you. + +21:20.520 --> 21:23.520 +And we will love to have you back. + +21:23.520 --> 21:31.520 +Yeah, it's thanks. Thanks so much for organizing this. It's it's great to have to have these questions. + +21:31.520 --> 21:43.520 +Yeah, well, thank you so much, Alfred. It was you know, you had nothing to do with it, but you were the first speaker to come. And even though, you know, having a prereq makes it that much less stressful to be facing the crowd, + +21:43.520 --> 21:50.520 +you still had to take the first questions from the crowd. And thank you so much because you did it brilliantly and you answered so many questions considering. + +21:50.520 --> 21:55.520 +So, Alfred, you're going to probably stay in a room a little while. I don't see a lot of people joining quite yet. + +21:55.520 --> 22:05.520 +I don't think people are, I think most of the questions have already been addressed on the pad, but you can stick around in two minutes and we'll be with you shortly to help you close the room. + +22:05.520 --> 22:10.520 +But right now, what we're going to do is we're going to take, well, we're not going to take any break. + +22:10.520 --> 22:16.520 +We're just going to move straight into the next talk. Do bear with us because it's a it's a fine machinery. + +22:16.520 --> 22:22.520 +And if something flashes on the screen, bear with us. It will be live pretty soon. + +22:22.520 --> 22:31.520 +OK, it's apparently live. Bye bye. Take care. + +22:31.520 --> 22:39.520 +OK, so we are now off the stream. We are playing the next prereq. Thank you so much, Alfred, and sorry for the intermittent microphone tuning in. + +22:39.520 --> 22:43.520 +It was basically my push to talk button with production that is misbehaving a little bit. + +22:43.520 --> 22:52.520 +It's working so well that I'm actually if I keep talking whilst I'm releasing the button, I'm talking to you, which is really weird and really confusing. + +22:52.520 --> 23:00.520 +OK, you know, it's always it's always rough with new audio setups going live with them at the same time as you're discovering them. + +23:00.520 --> 23:05.520 +It's always an interesting, interesting, especially since it's only one aspect of the stuff we're doing. + +23:05.520 --> 23:08.520 +You know, we're doing so much stuff on the side as well. OK, I'm going to have to get going. + +23:08.520 --> 23:13.520 +I don't see I don't see any people joining on BBB, so you can stick around a little while. + +23:13.520 --> 23:16.520 +Corwin might be back in about two to three minutes to help you close the room. + +23:16.520 --> 23:20.520 +But otherwise, you can just leave if no one shows up in two minutes. OK. All right. + +23:20.520 --> 23:25.520 +Thanks so much. And thank you so much. + +23:25.520 --> 23:54.520 +Merci and see you next time. All right, guys, if you have any questions, this is the last the last the last moment. + +23:54.520 --> 24:04.520 +To launch launch a question, if you're if you don't want to be recorded, I'm happy to I'm happy to take a question off off air or something. + +24:04.520 --> 24:08.520 +I don't know. I don't know if the chats. Oh, Max. Yes. + +24:08.520 --> 24:17.520 +When I get stuck with the next problem. + +24:17.520 --> 24:26.520 +For non-tech people, do you mean non-technical minded like I'm. + +24:26.520 --> 24:30.520 +I'm trying to figure out. Oh, great. + +24:30.520 --> 24:37.520 +Well, typically, typically, I try and just research on on. + +24:37.520 --> 24:49.520 +On Stack Overflow or other platforms where you can share code and share problems, but I typically don't go into too much like non-tech places for EMAX problems. + +24:49.520 --> 24:54.520 +I have other problems. So, for example, research problems and that kind of thing. + +24:54.520 --> 25:00.520 +And I'm not sure I answered the core of your question. + +25:00.520 --> 25:03.520 +The. + +25:03.520 --> 25:15.520 +Oh, all right. Yes. + +25:15.520 --> 25:27.520 +Yeah, I mean, I do, I do have other other communities that I joined in, but I try to talk talk about these issues with that aren't that aren't EMAX. + +25:27.520 --> 25:33.520 +But obviously, it's difficult to talk about EMAX problems with non EMAX users. + +25:33.520 --> 25:43.520 +So, yeah, that's that's the whole the whole issue with it being so complicated to get started is that you can you can say you can say all you want about how great it is. + +25:43.520 --> 25:52.520 +But people people aren't always keen to spend three months of their life trying to learn it, which fair enough. + +25:52.520 --> 26:04.520 +All right. Well, I hope I answered the I answered your questions to the as much as I could, I'll get back to the to the note documents. + +26:04.520 --> 26:13.520 +And at some point in the coming week and putting in some more notes about about the stuff you guys were interested in. + +26:13.520 --> 26:23.520 +And, yeah, well thanks for thanks for asking questions thanks for being here and hopefully, hopefully see you next time in the EMAX Conf. + +26:23.520 --> 26:45.520 +You are currently the only person in this conference. + +26:53.520 --> 27:18.520 +Okay. + +27:23.520 --> 27:25.520 +You + +27:53.520 --> 27:55.520 +You + +28:23.520 --> 28:25.520 +You + +28:53.520 --> 28:55.520 +You + +29:23.520 --> 29:25.520 +You + +29:53.520 --> 29:55.520 +You + +30:23.520 --> 30:25.520 +You + +30:53.520 --> 30:55.520 +You + +31:23.520 --> 31:25.520 +You + +31:53.520 --> 31:55.520 +You + +32:23.520 --> 32:25.520 +You + +32:53.520 --> 32:55.520 +You + +33:23.520 --> 33:25.520 +You + +33:53.520 --> 33:55.520 +You + +34:23.520 --> 34:25.520 +You + +34:53.520 --> 34:55.520 +You + +35:23.520 --> 35:25.520 +You + +35:53.520 --> 35:55.520 +You + +36:23.520 --> 36:25.520 +You + +36:53.520 --> 36:55.520 +You + +37:23.520 --> 37:25.520 +You + +37:53.520 --> 37:55.520 +You + +38:23.520 --> 38:25.520 +You + +38:53.520 --> 38:55.520 +You + +39:23.520 --> 39:25.520 +You + +39:53.520 --> 39:55.520 +You + +40:23.520 --> 40:25.520 +You + +40:53.520 --> 40:55.520 +You + +41:23.520 --> 41:25.520 +You + +41:53.520 --> 41:55.520 +You + +42:23.520 --> 42:25.520 +You + +42:53.520 --> 42:55.520 +You + +43:23.520 --> 43:25.520 +You + +43:53.520 --> 43:55.520 +You + +44:23.520 --> 44:25.520 +You + +44:53.520 --> 44:55.520 +You + +45:23.520 --> 45:25.520 +You + +45:53.520 --> 45:55.520 +You + +46:23.520 --> 46:25.520 +You + +46:53.520 --> 46:55.520 +You + +47:23.520 --> 47:25.520 +You + +47:53.520 --> 47:55.520 +You + +48:23.520 --> 48:25.520 +You + +48:53.520 --> 48:55.520 +You + +49:23.520 --> 49:25.520 +You + +49:53.520 --> 49:55.520 +You + +50:23.520 --> 50:25.520 +You + +50:53.520 --> 50:55.520 +You + +51:23.520 --> 51:25.520 +You + +51:53.520 --> 51:55.520 +You + +52:23.520 --> 52:25.520 +You + +52:53.520 --> 52:55.520 +You + +53:23.520 --> 53:25.520 +You + +53:53.520 --> 53:55.520 +You + +54:23.520 --> 54:25.520 +You + +54:53.520 --> 54:55.520 +You + +55:23.520 --> 55:25.520 +You + +55:53.520 --> 55:55.520 +You + +56:23.520 --> 56:25.520 +You + +56:53.520 --> 56:55.520 +You + +57:23.520 --> 57:25.520 +You + +57:53.520 --> 57:55.520 +You + +58:23.520 --> 58:25.520 +You + +58:53.520 --> 58:55.520 +You + +59:23.520 --> 59:25.520 +You + +59:53.520 --> 59:55.520 +You + +01:00:23.520 --> 01:00:25.520 +You + +01:00:53.520 --> 01:00:55.520 +You + +01:01:23.520 --> 01:01:25.520 +You + +01:01:53.520 --> 01:01:55.520 +You + +01:02:23.520 --> 01:02:25.520 +You + diff --git a/2022/captions/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--answers.vtt b/2022/captions/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--answers.vtt new file mode 100644 index 00000000..38b57dc8 --- /dev/null +++ b/2022/captions/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--answers.vtt @@ -0,0 +1,464 @@ +WEBVTT + +00:00.000 --> 00:07.200 +Okay, so we are live now. So hi, everyone. Sorry, we were doing some last minute verification + +00:07.200 --> 00:12.720 +with Blaine. We wanted to share screens, but somehow the Firefox gods are not in our favor + +00:12.720 --> 00:15.640 +today. So hi, Blaine. How are you doing? + +00:15.640 --> 00:21.480 +I'm doing great, Will. This has been a great conference. I've seen some talks this morning + +00:21.480 --> 00:27.100 +that are going to change my life. I just can't wait to start applying some of the packages + +00:27.100 --> 00:28.100 +I've learned about. + +00:28.100 --> 00:33.240 +That's amazing. And it's only day one. We've got more of this coming today, too. + +00:33.240 --> 00:34.240 +Exactly. + +00:34.240 --> 00:38.000 +So, Blaine, we haven't had the chance to tell you, but do you have the pad open on + +00:38.000 --> 00:39.000 +your end? + +00:39.000 --> 00:40.000 +Let's see. + +00:40.000 --> 00:45.040 +Oh, yes, because I asked you to close Firefox, so you don't have it. Do you need the URL, + +00:45.040 --> 00:46.040 +maybe? + +00:46.040 --> 00:48.080 +Yeah, that would be great. + +00:48.080 --> 00:52.280 +I will put it into BBB, the chat right on your left. + +00:52.280 --> 00:58.200 +Okay. I see it. So if I click on this and open a new window? + +00:58.200 --> 01:00.520 +Yes, don't worry about it. + +01:00.520 --> 01:05.600 +Okay. So I have some questions. Oh, that's fantastic. This is kind of a silly question, + +01:05.600 --> 01:10.560 +but I'm curious. Do you have a favorite color theme? + +01:10.560 --> 01:21.120 +So I do. I've been using a color theme that is sort of light green. It's from a set of + +01:21.120 --> 01:29.760 +themes that Prot put together and made available this fall on Melpa, and in some of the slides + +01:29.760 --> 01:36.880 +you'll see that I have this, like, white background, but I'm currently using a sort of a mint green + +01:36.880 --> 01:45.240 +color, which I find actually has great contrast, and I had to install some fonts for the Mac + +01:45.240 --> 01:52.360 +to be able to use that theme, but Prot provides detailed instructions, and it was pretty easy + +01:52.360 --> 01:54.360 +to do. + +01:54.360 --> 02:03.960 +Okay. Let's see. To your knowledge, so the second question is, to your knowledge, are + +02:03.960 --> 02:09.000 +recent coming security changes in Chrome going to impact browser extension? + +02:09.000 --> 02:16.560 +Oh, that's a great question. I, to be honest, I don't know. I'm not aware of that issue + +02:16.560 --> 02:23.400 +because I ran and I installed some extension I probably shouldn't have installed in Chrome + +02:23.400 --> 02:30.120 +a couple weeks ago, and I've been getting pop-up ads, and so I switched to Firefox, + +02:30.120 --> 02:39.960 +but so far I have used GhostText in a number of browsers. I can vouch that it works in + +02:39.960 --> 02:50.120 +Safari, Chrome, obviously Firefox, Brave, and then amongst the Firefox family of browsers + +02:50.120 --> 02:56.240 +there's WaterFox and IceCat. It works in those two. + +02:56.240 --> 03:02.400 +So if Chrome's security issues become a problem, then there are other browsers for which maybe + +03:02.400 --> 03:07.960 +that problem won't be an issue. + +03:07.960 --> 03:14.580 +Is this, a third question is, is this browser, is this browser agnostic, or do you have to + +03:14.580 --> 03:17.760 +use Chrome? + +03:17.760 --> 03:25.460 +That's a good question. So obviously, as you've seen that, or just heard, it works in a number + +03:25.460 --> 03:30.480 +of other browsers. There's probably at least ten other browsers in which it will work. + +03:30.480 --> 03:35.840 +So there's sort of three families of extensions, one for Safari, one for Firefox, and one for + +03:35.840 --> 03:47.580 +Chrome, and often one of those extensions will work in a different browser. + +03:47.580 --> 03:53.060 +You mentioned, fourth question is, you mentioned a couple other solutions to allow Emacs editing + +03:53.060 --> 04:02.600 +of text areas, pointers. Well, unfortunately, I didn't do my due diligence in researching + +04:02.600 --> 04:07.000 +those other solutions. I'm aware that there's something called Emacs Everywhere that's supposed + +04:07.000 --> 04:13.840 +to have a similar capability, but I haven't dug into using it, so I can't say anything + +04:13.840 --> 04:14.840 +about it. + +04:14.840 --> 04:27.040 +I'll have to say that. So because you're setting up a server from an editor, and you have this + +04:27.040 --> 04:35.520 +extension in a browser, things don't always mesh. You may have port 4001 occupied by some + +04:35.520 --> 04:43.720 +other server from Emacs or another application, and so you have to sort that out. That can + +04:43.720 --> 04:49.360 +happen from time to time. I've had trouble with the Emacs server sometimes using that + +04:49.360 --> 04:57.800 +port, but I think you can redirect that Emacs server to another port to avoid that issue. + +04:57.800 --> 05:02.240 +That would be the greatest difficulty is just getting the two sides talking to each other + +05:02.240 --> 05:10.160 +through the web socket, but once that's going, I use it every day, and I'll go for weeks + +05:10.160 --> 05:16.560 +without any issue, and then, of course, I'll be changing something about Emacs configuration + +05:16.560 --> 05:22.520 +where I'm turning on some new server that fires up when I start Emacs, and then I break + +05:22.520 --> 05:28.760 +it there, or something along those lines, but the great hazard of fiddling with your + +05:28.760 --> 05:49.520 +Emacs configuration, just a hazard of being an Emacs user. Let's see. Why not save text? + +05:49.520 --> 05:56.120 +So I have a fifth question, which is why not save text from Emacs? I would like to hear + +05:56.120 --> 06:04.560 +some solution to the issue I ran into. So if I am editing a document in a web browser + +06:04.560 --> 06:13.200 +and then via Emacs, and I save that to a document on disk, then I, okay, that's great if I'm + +06:13.200 --> 06:19.020 +not going to make any more changes, everything's fine, that works great, but if I then decide + +06:19.020 --> 06:27.200 +to make more changes in the browser, and then I try to save those changes, the copy on disk + +06:27.200 --> 06:32.280 +is out of sync with the copy in the browser, and I've had the connection break when I do + +06:32.280 --> 06:42.080 +that. So I heard that there might be a way of solving that problem. I'm not, but I have + +06:42.080 --> 06:48.040 +not implemented the solution. I forget what the suggestion was. Maybe somebody in the + +06:48.040 --> 06:51.840 +audience has an idea. + +06:51.840 --> 06:56.760 +Speaking of the audience, we have opened up the chat now, so if you want to join the current + +06:56.760 --> 07:02.200 +BBB Discord room in which we are and ask questions directly to Blaine, feel free to do so, otherwise + +07:02.200 --> 07:05.840 +we're still taking questions on the pad as long as we have them, although right now I + +07:05.840 --> 07:10.120 +think we have answered all of them. Am I wrong, Blaine, or did we answer all of them already? + +07:10.120 --> 07:13.200 +You're correct, we've answered all of them. + +07:13.200 --> 07:18.120 +So we're going to still discuss for about 2-3 minutes. If people want to add last questions + +07:18.120 --> 07:23.360 +to the pad, feel free to do so. If you want to join us in BBB, the link is at the top + +07:23.360 --> 07:28.140 +of the talk of Blaine, Euclid Maxco 2022. You know everything now. We are at the end + +07:28.140 --> 07:33.640 +of the day, and you can tell it's the end of the day because my accent is getting significantly + +07:33.640 --> 07:40.840 +Frencher as a result. It's not getting any better since last year, I think. I wish I + +07:40.840 --> 07:44.760 +could contribute, Blaine, more to your talk, but I feel like I'm way out of my league. + +07:44.760 --> 07:50.280 +I'm the guy who plays with Org on the side, and I tune into your talks every year, and + +07:50.280 --> 07:54.840 +I see molecules, and I see stuff that I can barely comprehend, and I feel very humbled + +07:54.840 --> 07:56.840 +as a result. + +07:56.840 --> 08:03.320 +Well, I'm just trying to make my talks kind of unique. + +08:03.320 --> 08:07.960 +You are succeeding amazingly well. It reminds me, have you been talking with John Kinchin + +08:07.960 --> 08:15.680 +or something? Because you seem to be evolving in seminal fields, in a way, with Emacs. + +08:15.680 --> 08:26.160 +I have been. I'm a fan of his. I have installed CyMax and his configuration for Emacs, but + +08:26.160 --> 08:33.960 +I haven't. I've just started poking around with it, and I've used his configuration. + +08:33.960 --> 08:43.280 +I've got it up and running, and I've used GhostText with it, and I was trying to tap + +08:43.280 --> 08:49.880 +into his OrgRef package, which is super powerful for managing bibliographies. + +08:49.880 --> 08:50.880 +Yeah. + +08:50.880 --> 08:53.880 +Yeah, he's very inspiring. + +08:53.880 --> 08:59.880 +I'm glad to hear you're very much inspired. Go on, please. + +08:59.880 --> 09:05.280 +He's very amazing. He's very accomplished in Emacs and a very accomplished teacher, + +09:05.280 --> 09:11.160 +and he has now, as you probably know, a series of videos on YouTube that he's been putting + +09:11.160 --> 09:18.920 +together about programming. So he's teaching students at Carnegie Mellon University how + +09:18.920 --> 09:26.200 +to program in Python via Emacs, and he has been sharing these videos on YouTube, and + +09:26.200 --> 09:30.720 +they're like just 20-minute videos, kind of short snippets, but you can learn a lot from + +09:30.720 --> 09:33.480 +them. It's really fantastic. + +09:33.480 --> 09:39.240 +It's an amazing journey, isn't it? You start from a field that has nothing to do whatsoever + +09:39.240 --> 09:43.800 +with Emacs, and yet you find yourself so attracted to the idea of programming and making your + +09:43.800 --> 09:49.620 +workflow easier that you end up actually transitioning into a little bit of a programming role or + +09:49.620 --> 09:54.900 +teaching programming role. I mean, I was studying literature. I was all well and good in my + +09:54.900 --> 10:00.040 +English faculty, and then I decided to say, oh yeah, let's try Emacs, and 10 years later + +10:00.040 --> 10:06.160 +I find myself spending more time working on Emacs than working on my literature papers. + +10:06.160 --> 10:12.920 +My history is that I developed a dozen years ago, started teaching students how to do molecular + +10:12.920 --> 10:17.960 +graphics, and then I got into Python programming to develop tools to make it easier for them + +10:17.960 --> 10:22.680 +to use molecular graphics, and then evolved into making these snippets available for a + +10:22.680 --> 10:29.680 +wide range of text editors that meant learning about – so I prepared these snippets for + +10:29.680 --> 10:35.440 +about 20 different text editors, leading ones, and of course I saved for the end Emacs. First + +10:35.440 --> 10:42.800 +I went through Vim and the month of hell of rewiring your brain to do the Vim key bindings + +10:42.800 --> 10:51.920 +and then on to Emacs, which I call the ultimate text editor, because there is no other text + +10:51.920 --> 10:56.040 +editor beyond Emacs. It's the end of the line. + +10:56.040 --> 11:01.360 +I absolve you for your herrings with Vim as a result of the last comment you just made. + +11:01.360 --> 11:05.680 +Actually, no, I have new write of that solution. I can agree to your solution. You'll have + +11:05.680 --> 11:09.200 +to ask RMS tomorrow. + +11:09.200 --> 11:16.800 +Well, I spent a year in evil mode, but I switched about half a year ago to just Emacs key bindings + +11:16.800 --> 11:24.840 +and bye-bye Vim. I use Vim when I log into remote servers and have to edit something + +11:24.840 --> 11:30.720 +really quick, but I've probably forgotten most of the key bindings. There's only about + +11:30.720 --> 11:36.560 +a dozen you really need to know to get the essential work done. But yeah, it's been + +11:36.560 --> 11:37.560 +quite a journey. + +11:37.560 --> 11:45.160 +Sorry for the interruption. We do have one question, a very simple question about what + +11:45.160 --> 11:51.200 +was the key binding for Linux Firefox. Do you have it on top of your mind? + +11:51.200 --> 11:52.200 +So Linux Firefox. + +11:52.200 --> 11:57.240 +I'm not sure what they're referring to as well, which is why I threw you this purple, + +11:57.240 --> 11:59.240 +hoping that it would make sense for you. + +11:59.240 --> 12:00.240 +It's Control-Shift-H. + +12:00.240 --> 12:14.120 +I hope this answers your questions. So I think Control-Shift-H, yes. Well Blaine, I see some + +12:14.120 --> 12:18.120 +people have joined on BBB, but no one with a microphone still. I will tide you at the + +12:18.120 --> 12:21.560 +end. We are reaching the end of the day. We are reaching closing remarks and I will be + +12:21.560 --> 12:26.720 +making a plea for more people to join with a microphone. Last year we had pretty much + +12:26.720 --> 12:30.440 +the same setting. We were opening the room afterwards and people were showing up with + +12:30.440 --> 12:33.760 +the microphones and we had lovely discussions. So in this year, it feels like everyone's + +12:33.760 --> 12:38.940 +a little shy, shouldn't you know? That's the whole point is for you to talk and for + +12:38.940 --> 12:43.160 +us all to listen. Well Blaine, that was very insightful. Thank you so much for both the + +12:43.160 --> 12:44.960 +presentation and the questions. Go on. + +12:44.960 --> 12:51.200 +We have a question in the panel on the left and blue button. So how long have I been using + +12:51.200 --> 13:03.520 +Emacs? I made a commitment to use it full-time about 18 months ago, maybe 20 months ago. + +13:03.520 --> 13:09.240 +So I'm a newbie. I'm still in the steep part of the learning curve. + +13:09.240 --> 13:13.640 +You just have to provide context for the people. Blaine presented something at the last year's + +13:13.640 --> 13:19.440 +EmacsConf and it was as impressive as this year's presentation. And afterwards he told + +13:19.440 --> 13:23.760 +us, oh yeah, I've been using Emacs for six months or so. And that's where everyone's + +13:23.760 --> 13:28.920 +jewels dropped to the floor because some people have been using Emacs for 10 years and we + +13:28.920 --> 13:31.960 +couldn't even imagine doing some of the stuff you're doing with it. + +13:31.960 --> 13:33.960 +Thank you. + +13:33.960 --> 13:40.880 +Do we have any other questions? I think that's pretty much it. I'm not seeing anything appear + +13:40.880 --> 13:48.520 +on the other screen. I think we're pretty much good. So Blaine, I'm not going to keep + +13:48.520 --> 13:52.880 +you any longer. We are probably going to bring this Q&A to a close. Thank you so much for + +13:52.880 --> 13:59.880 +all the answers. What are we going to do for the stream? We still have a talk going on + +13:59.880 --> 14:05.960 +on the dev channel currently. And then we'll be going to the closing remarks for the day + +14:05.960 --> 14:10.680 +at about 55 of the current hour. So we are going on a break for 20 to 25 minutes. So + +14:10.680 --> 14:14.040 +Blaine, sorry for keeping you off stage as I'm making the announcement, but it's the + +14:14.040 --> 14:16.520 +best way for people to see my face as I do it. + +14:16.520 --> 14:20.800 +Thank you very much, Leo. I appreciate it. + +14:20.800 --> 14:26.720 +And thank you so much for all your time and all your answers. I will be closing BBB now + +14:26.720 --> 14:31.600 +and we will put some music on and some announcements and see you at the top of the hour for the + +14:31.600 --> 14:57.720 +others or 55 rather than top of the hour. All right. Bye bye everyone. Bye bye Blaine. + diff --git a/2022/captions/emacsconf-2022-localizing--prelocalizing-emacs--jeanchristophe-helary--answers.vtt b/2022/captions/emacsconf-2022-localizing--prelocalizing-emacs--jeanchristophe-helary--answers.vtt new file mode 100644 index 00000000..a6a4ba40 --- /dev/null +++ b/2022/captions/emacsconf-2022-localizing--prelocalizing-emacs--jeanchristophe-helary--answers.vtt @@ -0,0 +1,497 @@ +WEBVTT + +00:00.000 --> 00:09.260 +Excellent. Thank you for the great talk. As someone whose first language wasn't English + +00:09.260 --> 00:14.960 +and speaks other languages, I think localization and internationalization is a very important + +00:14.960 --> 00:20.920 +topic that's near and dear to my heart, and especially when it comes to Emacs. I think + +00:20.920 --> 00:26.700 +there's a lot that we could do better. So, yeah, thanks so much. Folks, if you have questions, + +00:26.700 --> 00:32.880 +you can post them on IRC on the pad, and Jon-Karstof will answer them, and we will also open up + +00:32.880 --> 00:37.600 +this big blue button for people who would like to join here and ask their questions + +00:37.600 --> 00:45.760 +directly. Jon-Karstof, please take it away. Okay, thank you. I'm not seeing much activity + +00:45.760 --> 00:55.920 +on IRC or the pad, so let me add a few things. First, that patch was really interesting in + +00:55.920 --> 01:03.680 +terms of actually getting into the code and understanding how really can a beginner join + +01:03.680 --> 01:11.080 +development, even if it's just a few lines. I mentioned in the first part of the presentation + +01:11.080 --> 01:17.600 +that there was this small integration bug with Mac, and that's the thing that actually + +01:17.600 --> 01:22.400 +got me started, and that was interesting because at the time I was trying to use Aquamax because + +01:22.400 --> 01:28.280 +it looked simpler, and I thought, okay, if I need to fix that, rather than fixing it + +01:28.280 --> 01:34.400 +in Aquamax, maybe I should just go to Emacs and fix it there. So, that was the first attempt + +01:34.400 --> 01:40.440 +for me to actually contribute something serious, and it was really nice to – I mean, this + +01:40.440 --> 01:47.160 +Emacs development list is really amazing. 99% of the discussion is just way above your + +01:47.160 --> 01:54.120 +head, but sometimes you grasp something, and the more you grasp it, the more you understand + +01:54.120 --> 02:00.600 +and the more you feel like you can actually do something, especially since – I mean, + +02:00.600 --> 02:06.640 +as for all the free software development projects, most of them, I guess, it's really just do + +02:06.640 --> 02:13.920 +it kind of thing. And if you try to do something, somebody's going to help you, and what I + +02:13.920 --> 02:21.200 +really enjoy when being there is that the people are always very nice. Sometimes you + +02:21.200 --> 02:28.080 +feel some tension when there are discussions about a specific topic, but it's – everybody + +02:28.080 --> 02:37.520 +is really polite, I mean, 99% of the time. And what I like the most is all the people + +02:37.520 --> 02:42.680 +are very strong opinionated, so they have a very good idea of what Emacs should be or + +02:42.680 --> 02:47.640 +should not be, and so it gives you a very good idea of in what direction you should + +02:47.640 --> 02:57.400 +go. So that experience – I mean, pretty much those 2017, 2018 years were until now + +02:57.400 --> 03:02.040 +the peak of my Emacs activity. I've had to craddle with that because I was busy with + +03:02.040 --> 03:07.160 +other things, but I'm really planning to go back to working on maybe not localization + +03:07.160 --> 03:13.480 +because it's really – it's too big for me right now. And what I was told is that + +03:13.480 --> 03:20.520 +it involved a bit of C programming and things like this, so I'm not really into that right + +03:20.520 --> 03:30.840 +now. But I think eventually one day – I just turned 53, so I guess in a few years + +03:30.840 --> 03:36.800 +from now when I have more time, I guess I'll just dive in and just work on those localization + +03:36.800 --> 03:43.800 +issues and really to bring Emacs to a different world because I think it's – if we were + +03:43.800 --> 03:49.920 +able to have – it's a big job. I mean, it's really – if you check the threads + +03:49.920 --> 03:55.400 +on dev, check my name, you will see that I mostly post on translation or localization + +03:55.400 --> 04:01.360 +issues at least at the time. And I did an estimate of the sheer volume of strings to + +04:01.360 --> 04:10.360 +translate. For example, the manuals were about 2 million words. That's big. That's big. + +04:10.360 --> 04:14.040 +But it's okay. I mean, it's not something that's impossible. And if you check the strings + +04:14.040 --> 04:20.160 +– that was a really rough estimate. If you check the strings for Emacs proper, not even + +04:20.160 --> 04:29.120 +talking about the packages and things, I think that would add probably like 500,000 words. + +04:29.120 --> 04:34.360 +I mean, I have no idea, but my very rough estimate would be that. So it's not something + +04:34.360 --> 04:41.120 +that's impossible to do. And we'd have to ensure that we have a good process for people + +04:41.120 --> 04:46.200 +who review the strings and contribute new strings and things like this and also best + +04:46.200 --> 04:53.560 +practices like what I tried to show in this video. And I was really not trying to be dismissive + +04:53.560 --> 04:58.680 +about the people who worked on Package L because they did a wonderful job at actually helping + +04:58.680 --> 05:02.840 +people like me access all those packages. So it's – I mean, the point of the video + +05:02.840 --> 05:10.840 +is naturally to dismiss the code. But I was kind of scared because I was like, if they + +05:10.840 --> 05:18.720 +write code like this for strings, then what about the rest of the code? Is it – so it + +05:18.720 --> 05:25.560 +was kind of – I mean, something that I really can't evaluate. But I'm like – I mean, + +05:25.560 --> 05:30.600 +those guys obviously are really smart and they're trying to make intelligent things + +05:30.600 --> 05:37.400 +about how they want to factor their code, et cetera. But if they do that for strings, + +05:37.400 --> 05:44.400 +which is quite simple actually – I mean, it's simple to mess up strings. So I was + +05:44.400 --> 05:50.320 +like, what about the rest of the code? Is it that complex or that difficult to understand? + +05:50.320 --> 05:56.000 +So that's kind of a put off for me. I'm like, I really don't want to try to envisage + +05:56.000 --> 06:01.760 +that more because – plus it's not – it's really not my area at all. So anyway, that's + +06:01.760 --> 06:04.400 +what I wanted to add. Yeah. + +06:04.400 --> 06:11.680 +Awesome. Yeah, I think I pretty much agree with all of what you said. + +06:11.680 --> 06:17.360 +Yeah, yeah, yeah. I have a question – I see a question on the pad. I use Emacs on + +06:17.360 --> 06:23.520 +English, but my mother language is – no, no, no. Okay. So the answer is that Emacs + +06:23.520 --> 06:33.760 +is not localized. And my understanding is that right now it's not localizable. And + +06:33.760 --> 06:40.840 +those discussions took place about four or five years ago. So check on the dev list and + +06:40.840 --> 06:46.280 +you'll see the state of the discussion because there is only a discussion at the moment. + +06:46.280 --> 06:57.480 +What I did for package L, I think it was really just a one-time attempt at fixing one package. + +06:57.480 --> 07:05.640 +And I did check the other – a number of other packages in core Emacs. And not a lot + +07:05.640 --> 07:12.280 +of them had – I mean, as far as I checked. And I really did not check everything. But + +07:12.280 --> 07:20.840 +basically what you have to do is check all the functions that impact strings. And some + +07:20.840 --> 07:28.600 +are really not user-facing strings, so they're not really interesting for us. And actually, + +07:28.600 --> 07:34.640 +that's really interesting to do that. So if you just take one list package, list code + +07:34.640 --> 07:40.480 +and just go through the thing and just check all of print1, printc, message, format, concat + +07:40.480 --> 07:43.520 +and stuff and just see how it goes. + +07:43.520 --> 07:50.240 +So basically right now there is no infrastructure to localize the thing. There is no process + +07:50.240 --> 07:56.720 +to extract the strings. And there is no way to actually import them back into the code. + +07:56.720 --> 08:02.800 +So what we can do right now is really just what I did, make sure that it's eventually + +08:02.800 --> 08:10.760 +possible one day. And as I just shown, it's really not such a big deal. If you're very + +08:10.760 --> 08:19.800 +careful about understanding the way that the strings are handled, it's just a few rewrites + +08:19.800 --> 08:24.560 +away. I mean, it's really not much. So there's – I mean, there's not a lot to be proud + +08:24.560 --> 08:31.140 +about in my patch. But it was really fun. And I think it's a very good entry point + +08:31.140 --> 08:39.480 +for people like us. I suppose – I mean, I suppose the first person question. I mean, + +08:39.480 --> 08:44.240 +I don't know. Maybe I'm just – I should not suppose that. But people who really enjoy + +08:44.240 --> 08:51.320 +working in Emacs and just sometimes would like to contribute something and are not programmers + +08:51.320 --> 08:56.320 +or anything or maybe even programmers. I mean, I'm not excluding them. But that's really + +08:56.320 --> 09:02.280 +a good way to just start doing something. And eventually from there, you can – I mean, + +09:02.280 --> 09:07.020 +you just use a package that you like and that you think is important and just check the + +09:07.020 --> 09:10.200 +strings and do things like this. And then eventually, you'll find other parts of the + +09:10.200 --> 09:18.840 +code that you want to improve or add functions. So yeah, actually, the patch that I did, this + +09:18.840 --> 09:26.840 +patch is actually in the process of the thing that I started with Equimax. So I did one + +09:26.840 --> 09:35.600 +little thing regarding those that were not fully integrated in macOS. And then I did + +09:35.600 --> 09:41.880 +something about a small function. I think I added the possibility to add an option. + +09:41.880 --> 09:48.960 +I did documentation improvement as well. So really just little things. And then the deeper + +09:48.960 --> 09:53.000 +you dive, the more interesting it gets. And then you find something that you really want + +09:53.000 --> 10:07.160 +to do. So just use that entry point as a way to have fun in Emacs. + +10:07.160 --> 10:15.240 +Well, so I mentioned Regex on strings. Well, it's not really a red flag for localization. + +10:15.240 --> 10:28.080 +But the way it's used, I mean, I guess there are ways to properly use it. But I think really + +10:28.080 --> 10:38.400 +the basically using that means that you're making assumptions on the way language is + +10:38.400 --> 10:45.800 +structured. And I did exactly the same mistake on a different project that I'm working on. + +10:45.800 --> 10:51.280 +Actually, I'm in charge of rewriting a manual. And we were using Docbook. And I just thought + +10:51.280 --> 10:57.240 +it would be smart to have automated links to parts of the chapters, et cetera. And the + +10:57.240 --> 11:01.240 +thing is that depending on the language, you've got different ways to introduce chapters. + +11:01.240 --> 11:10.540 +So I should know that. I should know that. You should not automatically insert strings + +11:10.540 --> 11:20.720 +in code because it's going to produce something that can't be handled by the translator. So + +11:20.720 --> 11:28.840 +basically Regex on strings is something that probably you might use. But if you see, I + +11:28.840 --> 11:33.320 +mean, you can see the way it was used in the original code. So if you see something like + +11:33.320 --> 11:39.360 +that, I mean, just don't run and just fix the thing because there is no way these can + +11:39.360 --> 11:44.920 +be localized, I mean, extracted properly and then localized. And that's the reason too + +11:44.920 --> 11:50.480 +why numbers are a big problem because, for example, in English but in French too, we + +11:50.480 --> 11:56.920 +have only singular forms and plural forms. But some languages have zero forms. Some languages + +11:56.920 --> 12:03.720 +have two forms like pair forms. Some languages don't have a different form for anything. + +12:03.720 --> 12:09.920 +For example, I live in Japan. I work in Japanese. And in Japanese, you don't have a form. You + +12:09.920 --> 12:16.640 +don't have different inflections for words based on their number. So saying one whatever + +12:16.640 --> 12:23.400 +or two whatevers or an infinity of whatevers or even zero whatever, it's just the same + +12:23.400 --> 12:28.480 +form. So making assumption on the number of things and the way it's expressed in the language + +12:28.480 --> 12:34.640 +is usually, and that's something that we already know in free software. I mean, if you check + +12:34.640 --> 12:40.060 +the getex library, they've got everything sorted out. And that's something that was + +12:40.060 --> 12:46.880 +created in the 90s at Sun Microsystem. And then it was freed, et cetera. But when you + +12:46.880 --> 12:52.560 +see the work that it did at the time, you would kind of expect that people understand + +12:52.560 --> 12:58.920 +that. But no. And that's OK because developers develop and localizers localize. So we kind + +12:58.920 --> 13:04.820 +of split. But everything has been done already. So we just have to be aware of what's being + +13:04.820 --> 13:11.720 +done. And we have to be aware of the rules. And I think of one very good set of rules + +13:11.720 --> 13:19.880 +that's been online for a while. It's the Worldwide Consortium. They have a really good internationalization + +13:19.880 --> 13:26.640 +page where everything is pretty much black on white on paper, on the web at least. And + +13:26.640 --> 13:31.960 +if you read that, you can see exactly what should be done for localization, what should + +13:31.960 --> 13:35.880 +not be done, what should be avoided at all costs, et cetera, et cetera. + +13:35.880 --> 13:44.440 +So there are plenty of references here and there. And in terms of software localization, + +13:44.440 --> 13:49.980 +it's the same. If you check the getex page, you should be able to get an idea of what + +13:49.980 --> 13:59.240 +should be good. So is my project to localize all of Emacs? I wish it were. Eventually I'll + +13:59.240 --> 14:05.160 +be rich. Hopefully. I don't know. I'm working on that. It's not working well. But the day + +14:05.160 --> 14:11.540 +I can take just one year off totally and focus on that, I think that's something I would + +14:11.540 --> 14:18.760 +love to work on and just get up to speed with the process of programming all the things, + +14:18.760 --> 14:23.080 +checking all the things, and organizing the infrastructure. But seriously, I don't think + +14:23.080 --> 14:31.240 +that will ever happen because I'm a poor translator. And I still have, what, like 20 years to go + +14:31.240 --> 14:40.560 +before I can't work anymore. And we don't have savings or anything with the corona shit. + +14:40.560 --> 14:47.560 +So I don't think that's ever going to happen. But I would love to help. And yes, yes. How + +14:47.560 --> 14:53.480 +deep would useful localization go? Because the core of Emacs are duck strings and localization. + +14:53.480 --> 15:00.280 +Yes, yes, yes. I mean, all those discussions have been made. I mean, no conclusion reached. + +15:00.280 --> 15:07.880 +But we have addressed those things on the discussions. And so just, I mean, it's really + +15:07.880 --> 15:13.560 +pretentious to say, check my name on the Emacs table list because I've talked about that. + +15:13.560 --> 15:18.680 +It's really pretentious. But that's not what I'm saying. I mean, there has been a lot of + +15:18.680 --> 15:24.400 +discussion on the development list. So if you check for localization, translation, stuff + +15:24.400 --> 15:30.800 +like that, you'll see keywords, and you'll see the discussion. And people are aware of + +15:30.800 --> 15:36.440 +the issues. So I mean, we just need to have a framework for that. + +15:36.440 --> 15:40.120 +Thank you. Just to quickly chime in to say, I think we have about two more minutes of + +15:40.120 --> 15:45.800 +on stream Q&A. And then you're welcome to either stay here, Jean-Christophe, or continue + +15:45.800 --> 15:48.800 +taking questions on the pad on IRC. + +15:48.800 --> 15:57.120 +I think, well, I got to go to work. So I need to get ready. But I think, unless we have + +15:57.120 --> 16:08.760 +something on IRC, I think we're good. If you find something else that I've not addressed, + +16:08.760 --> 16:19.840 +I'm good. Otherwise, yes, yes, yeah, we need to take all the C code. But I mean, you can + +16:19.840 --> 16:29.160 +decide the level down to which you want to work. So you can go all the way to the C code. + +16:29.160 --> 16:32.920 +But actually, the C code is actually easier to extract because there is all these get + +16:32.920 --> 16:40.280 +text things that works on the C code already. So the issue is pretty much the Emacs Lisp + +16:40.280 --> 16:47.760 +code, as far as I can understand. So that would be the process that we need to address. + +16:47.760 --> 16:56.800 +Doc strings, indeed. But then the doc strings and the manual, they are very close. And actually, + +16:56.800 --> 17:03.560 +yeah, my estimate of the 500,000 word, I think it was based on doc strings. So yeah, we need + +17:03.560 --> 17:09.760 +to take all that. And that's an ongoing project that's not going to go away anyway. So we'll + +17:09.760 --> 17:12.760 +be here 10 years from now, I'm sure. + +17:12.760 --> 17:17.680 +OK, cool. And yeah, I think that's about all the time that we have on the stream. I guess + +17:17.680 --> 17:21.720 +if folks have further questions, they could maybe reach out to you later on IRC or via + +17:21.720 --> 17:22.720 +email. + +17:22.720 --> 17:29.640 +And I'll be back on the development list shortly, maybe six months from now. So yeah, I can + +17:29.640 --> 17:30.640 +take it from there. + +17:30.640 --> 17:31.640 +Sounds great. + +17:31.640 --> 17:32.640 +Thank you very much. + +17:32.640 --> 17:33.640 +Thank you very much. + +17:33.640 --> 17:34.640 +Yeah, thanks again for your great talk. Cheers. + +17:34.640 --> 17:35.640 +Cheers. + +17:35.640 --> 17:56.640 +OK, bye. + diff --git a/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--answers.vtt b/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--answers.vtt new file mode 100644 index 00000000..2c0a2ac5 --- /dev/null +++ b/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--answers.vtt @@ -0,0 +1,1046 @@ +WEBVTT + +00:00.000 --> 00:04.000 +Thank you, Mohsen, very much for the great talk. + +00:04.000 --> 00:08.000 +People, if you have questions, please put them on the pad, + +00:08.000 --> 00:12.000 +or IRC, but preferably the pad, and then we'll also open this room + +00:12.000 --> 00:16.000 +in a minute or two so that if anyone who wants to join here and ask the questions + +00:16.000 --> 00:19.000 +directly to Mohsen, they could do that as well. + +00:19.000 --> 00:22.000 +Dear Mohsen, please take it away. + +00:22.000 --> 00:25.000 +Hello, greetings. + +00:25.000 --> 00:29.000 +Yeah, I don't see any questions yet, + +00:29.000 --> 00:35.000 +so let me add a few additional notes + +00:35.000 --> 00:39.000 +to what was in the presentation. + +00:39.000 --> 00:43.000 +In there, I make several points. + +00:43.000 --> 00:49.000 +Some of them are tactical, some are more strategic. + +00:49.000 --> 00:56.000 +Let me delve into the strategic message a bit. + +00:56.000 --> 01:02.000 +On the messaging capabilities of Emacs + +01:02.000 --> 01:08.000 +and the broader office environment capabilities of Emacs, + +01:08.000 --> 01:14.000 +we have a huge, incredibly powerful asset, + +01:14.000 --> 01:18.000 +but the amount of complexity + +01:18.000 --> 01:27.000 +and the surrounding configuration capabilities + +01:27.000 --> 01:32.000 +and hurdles and difficulties that are involved + +01:32.000 --> 01:41.000 +into making a really powerful environment for ourselves, + +01:41.000 --> 01:44.000 +we have a big obstacle, + +01:44.000 --> 01:49.000 +and that obstacle is that of integration. + +01:49.000 --> 01:58.000 +Over the past 40 years, the general model has been that of producing components + +01:58.000 --> 02:03.000 +where we do great stuff. + +02:03.000 --> 02:13.000 +We put various email MTAs and support them through Emacs. + +02:13.000 --> 02:21.000 +Additionally, we say that we want Emacs to be used on all platforms. + +02:21.000 --> 02:25.000 +If you're on Windows, there is Emacs support for it. + +02:25.000 --> 02:30.000 +If there is Mac OS, there is support for that. + +02:30.000 --> 02:35.000 +And of course, all of the GNU Linux stuff, + +02:35.000 --> 02:39.000 +capabilities and platforms. + +02:39.000 --> 02:46.000 +So all of this results into tremendous amounts of energy + +02:46.000 --> 02:54.000 +to go both on the developer side and on the user side to support everything. + +02:54.000 --> 02:59.000 +And that's what we have been doing over the past 40 years. + +02:59.000 --> 03:07.000 +What I am saying is that perhaps we should revisit this approach + +03:07.000 --> 03:16.000 +and consider moving towards creating a complete + +03:16.000 --> 03:23.000 +Libre Halal free software digital ecosystem for ourselves + +03:23.000 --> 03:28.000 +and consider Emacs as the usage environment + +03:28.000 --> 03:33.000 +of that totality of the digital ecosystem. + +03:33.000 --> 03:42.000 +This will solve many problems if we were to buy into such an approach. + +03:42.000 --> 03:47.000 +If we were to say that as the platform de facto + +03:47.000 --> 03:54.000 +and because of everything that is happening, + +03:54.000 --> 03:57.000 +Debian is a reasonable good choice. + +03:57.000 --> 04:06.000 +And then we would tie in all Emacs capabilities + +04:06.000 --> 04:13.000 +primarily and firstly to our own platform + +04:13.000 --> 04:17.000 +and start building on it. + +04:17.000 --> 04:28.000 +So let's take the situation with email in such a scenario. + +04:28.000 --> 04:34.000 +The main obstacles that we have right now is that + +04:34.000 --> 04:41.000 +GNU comes out with support for pretty much everything. + +04:41.000 --> 04:50.000 +But as the user, someone trying to buy into doing email on Emacs, + +04:50.000 --> 04:55.000 +which of these facilities, which of these features + +04:55.000 --> 04:58.000 +would be the right way to go? + +04:58.000 --> 05:07.000 +So what I am saying, having chosen our platform as Debian, + +05:07.000 --> 05:14.000 +what if we were to say that we would buy into something like Q-mail + +05:14.000 --> 05:24.000 +as the outgoing message model and just fully bring it in + +05:24.000 --> 05:30.000 +and consider it as the only and the default MTA + +05:30.000 --> 05:33.000 +for everything that we do? + +05:33.000 --> 05:39.000 +Suddenly a whole lot of complexity goes away. + +05:39.000 --> 05:45.000 +And similarly for bringing in email, + +05:45.000 --> 05:50.000 +what if we were to say that we have bought into offline IMAP + +05:50.000 --> 05:55.000 +and then the next really interesting piece is + +05:55.000 --> 05:59.000 +what should be our mailboxes? + +05:59.000 --> 06:08.000 +This notion that today de facto Gmail is the universal place + +06:08.000 --> 06:11.000 +where you get your mailboxes. + +06:11.000 --> 06:15.000 +And very easily we can, not very easily, + +06:15.000 --> 06:20.000 +but we certainly can support Gmail. + +06:20.000 --> 06:27.000 +But what if we were to get in the business of actually providing + +06:27.000 --> 06:32.000 +mailboxes for everyone and combine that with the platform + +06:32.000 --> 06:35.000 +and the main user agent? + +06:35.000 --> 06:43.000 +So that's really the strategic message that I want to, + +06:43.000 --> 06:48.000 +that I'm sending. + +06:48.000 --> 06:49.000 +Excellent, thank you. + +06:49.000 --> 06:52.000 +And I think in the meantime we have four questions + +06:52.000 --> 06:54.000 +on the panel already. + +06:54.000 --> 07:00.000 +Okay, I don't see them here. + +07:00.000 --> 07:03.000 +Oh, are you looking in the public chat here on the big blue button? + +07:03.000 --> 07:04.000 +Yes. + +07:04.000 --> 07:06.000 +Okay, let me put a link. + +07:06.000 --> 07:10.000 +So there's a separate pad where people are posting their questions. + +07:10.000 --> 07:13.000 +Okay, now I am seeing. + +07:13.000 --> 07:17.000 +Yeah, if it might be easier I could probably copy the questions over here. + +07:17.000 --> 07:20.000 +No, no, I am actually seeing them. + +07:20.000 --> 07:21.000 +Okay. + +07:21.000 --> 07:25.000 +Perfectly, perfectly okay. + +07:25.000 --> 07:31.000 +So the first question is something I have liked about Not Much + +07:31.000 --> 07:35.000 +is using Maildear makes searching fast + +07:35.000 --> 07:40.000 +and the knowledge that you have all your email period. + +07:40.000 --> 07:45.000 +Why GNU's over Not Much? + +07:45.000 --> 07:53.000 +As a side note, you have also Much Think for Not Much client + +07:53.000 --> 07:59.000 +and Jmap for more exotic normal clients. + +07:59.000 --> 08:04.000 +So I think there are two things going on here. + +08:04.000 --> 08:07.000 +Not Much is more than one thing. + +08:07.000 --> 08:13.000 +Not Much is a search, a mail search engine + +08:13.000 --> 08:20.000 +and also Not Much is a MUA. + +08:20.000 --> 08:30.000 +So in terms of choosing, certainly for search, for mail search capabilities, + +08:30.000 --> 08:33.000 +we should go with Not Much + +08:33.000 --> 08:40.000 +and there is GNU's search capabilities for Not Much in there. + +08:40.000 --> 08:48.000 +So what I am suggesting is that we stick to GNU's as an MUA, + +08:48.000 --> 08:52.000 +but the search capabilities that you are talking about + +08:52.000 --> 08:59.000 +or that the question mentions are certainly available. + +08:59.000 --> 09:05.000 +A second question is, so the idea is more about Emacs + +09:05.000 --> 09:10.000 +as a holistic computing experience with other packages and services + +09:10.000 --> 09:14.000 +rather than about email specifically + +09:14.000 --> 09:19.000 +as an alternative to something like Microsoft Office Suite. + +09:19.000 --> 09:23.000 +Yes, this is right on the point. + +09:23.000 --> 09:28.000 +What I am saying is that email by itself + +09:28.000 --> 09:33.000 +is not really all that meaningful or interesting + +09:33.000 --> 09:38.000 +and everywhere that you look in the proprietary model, + +09:38.000 --> 09:43.000 +you would see that the likes of Google and the likes of Microsoft + +09:43.000 --> 09:49.000 +do not view email as standalone capabilities. + +09:49.000 --> 09:52.000 +They see it as integrated with address book. + +09:52.000 --> 09:55.000 +They see it as integrated with calendar. + +09:55.000 --> 09:59.000 +They see it integrated with search. + +09:59.000 --> 10:06.000 +They see it as integrated with your to-do list and time management. + +10:06.000 --> 10:09.000 +So you are very right. + +10:09.000 --> 10:13.000 +The question is right on point. + +10:13.000 --> 10:18.000 +Email by itself is not significant + +10:18.000 --> 10:26.000 +and the reason why Emacs is the right place to do email + +10:26.000 --> 10:29.000 +is because Emacs is the kitchen sink. + +10:29.000 --> 10:35.000 +It does absolutely everything and that is what you want. + +10:35.000 --> 10:38.000 +The third question is, + +10:38.000 --> 10:43.000 +early on you express misgivings about the Western copyright regime + +10:43.000 --> 10:46.000 +but you are using a GPL license. + +10:46.000 --> 10:49.000 +Is that a conflict? + +10:49.000 --> 10:52.000 +Great work by the way. + +10:52.000 --> 10:55.000 +No, I don't think it is a conflict. + +10:55.000 --> 11:04.000 +My position is that the Western intellectual property right regime + +11:04.000 --> 11:08.000 +is a colossal ownership mistake. + +11:08.000 --> 11:15.000 +Having said that, and I do call for its abolishment, + +11:15.000 --> 11:21.000 +having said that, it is unrealistic to assume or recognize + +11:21.000 --> 11:26.000 +that just because I say it and just because I believe it, + +11:26.000 --> 11:34.000 +in fact it will be abolished or that a significant change would happen, + +11:34.000 --> 11:38.000 +particularly in the Western world. + +11:38.000 --> 11:44.000 +So in the Western context, what can we do? + +11:44.000 --> 11:46.000 +What should we do? + +11:46.000 --> 11:52.000 +What I am saying there is that particularly in the context of services, + +11:52.000 --> 12:00.000 +all licenses should be the strictest ones possible + +12:00.000 --> 12:07.000 +and the one that is codified is the Afero GPL license. + +12:07.000 --> 12:12.000 +So I have subjected all my work to the Afero GPL license. + +12:12.000 --> 12:27.000 +I know of GNU, how do you think about using it for packaging, + +12:27.000 --> 12:31.000 +configuring Emacs, your various packages, + +12:31.000 --> 12:37.000 +else you might look it up or NixOS. + +12:37.000 --> 12:46.000 +So the idea here is that when we go back to this full integration + +12:46.000 --> 12:49.000 +in the context of a digital ecosystem, + +12:49.000 --> 12:59.000 +a major challenge is that of bringing in all the necessary packages + +12:59.000 --> 13:01.000 +from different sources. + +13:01.000 --> 13:08.000 +So for example, in the context of male user agents, + +13:08.000 --> 13:13.000 +to put things together you need a set of apt packages + +13:13.000 --> 13:17.000 +coming from the DBN world. + +13:17.000 --> 13:25.000 +You need a set of pypi packages coming from the Python world + +13:25.000 --> 13:32.000 +and you need a set of list packages coming from Elisp archives. + +13:32.000 --> 13:38.000 +And likely you need a whole lot of others. + +13:38.000 --> 13:47.000 +You need possibly Node.js stuff and you also possibly need Ruby stuff. + +13:47.000 --> 13:54.000 +And this integration is going to be complex. + +13:54.000 --> 14:01.000 +The approach that I have taken is that of going best of breed + +14:01.000 --> 14:06.000 +in the context of each of the domains. + +14:06.000 --> 14:13.000 +So in Python, while there may be other packaging models, + +14:13.000 --> 14:16.000 +we go with pypi. + +14:16.000 --> 14:19.000 +On the platform, it's clear that it's apt. + +14:19.000 --> 14:25.000 +On the Linux, over the past five years, we have solved mostly + +14:25.000 --> 14:29.000 +that archiving machinery. + +14:29.000 --> 14:39.000 +If the question is, and I'm not familiar with the specifics + +14:39.000 --> 14:44.000 +of what was mentioned in terms of a unified packaging model, + +14:44.000 --> 14:54.000 +but if the question is that of a unified packaging integration model, + +14:54.000 --> 14:58.000 +I'd love to do it when it's mature and ready. + +14:58.000 --> 15:05.000 +At this point, I am going the route of best of breed selections + +15:05.000 --> 15:09.000 +within each domain. + +15:09.000 --> 15:15.000 +And if I chime in briefly, Mohsen, I think there was a typo in the question. + +15:15.000 --> 15:19.000 +They are asking about GNU Geeks or mentioning GNU Geeks + +15:19.000 --> 15:21.000 +and also potentially NixOS. + +15:21.000 --> 15:24.000 +And I think these two also very much go with your idea + +15:24.000 --> 15:28.000 +of tying everything together, these different package management systems. + +15:28.000 --> 15:33.000 +So GNU Geeks is a GNU Linux distribution like Debian is, + +15:33.000 --> 15:37.000 +but it's written in GNU Guile Lisp or Guile Scheme. + +15:37.000 --> 15:41.000 +And it's a very interesting concept where all of the packaging code + +15:41.000 --> 15:46.000 +and everything is done in GNU Guile Scheme and ties everything together + +15:46.000 --> 15:48.000 +and integrates great with Emacs. + +15:48.000 --> 15:51.000 +So that might be something worth checking out later on. + +15:51.000 --> 15:52.000 +Right. + +15:52.000 --> 16:01.000 +I had taken a very cursory look at that, and I'll keep my eyes open on it. + +16:01.000 --> 16:07.000 +I think in due course, maybe that's the way to go. + +16:07.000 --> 16:13.000 +There's one more question coming in. + +16:13.000 --> 16:21.000 +I let the person who is asking the question to complete it. + +16:21.000 --> 16:22.000 +Okay. + +16:22.000 --> 16:26.000 +Yeah, in the meantime, I'll also mention that I think we have about + +16:26.000 --> 16:32.000 +four more minutes of on-stream live Q&A time, at which point after that, + +16:32.000 --> 16:33.000 +the stream will move on. + +16:33.000 --> 16:38.000 +But you Mohsen and, of course, people watching are welcome to come here, + +16:38.000 --> 16:41.000 +join this Big Blue Button Room directly and ask the questions here + +16:41.000 --> 16:42.000 +or on the pad. + +16:42.000 --> 16:43.000 +Great. + +16:43.000 --> 16:44.000 +Great. + +16:44.000 --> 16:47.000 +So let me read the question. + +16:47.000 --> 16:54.000 +Is this being split up in a heavily configured server for email hosting + +16:54.000 --> 17:00.000 +and the thin client package for you locally client to integrate with your + +17:00.000 --> 17:02.000 +Emacs package? + +17:02.000 --> 17:11.000 +Maybe with a client thin Docker container for other packages, + +17:11.000 --> 17:15.000 +like not much locally? + +17:15.000 --> 17:23.000 +Actually, that is not really exactly what I am speaking of. + +17:23.000 --> 17:32.000 +The concept of a thin client is difficult to characterize. + +17:32.000 --> 17:41.000 +So if you have Emacs and everything else that you want to use as a usage + +17:41.000 --> 17:49.000 +environment along with your email system, if we want to call that a thin + +17:49.000 --> 17:59.000 +client, certainly that is what I call the usage environment. + +17:59.000 --> 18:10.000 +On the services side, I am not speaking of just one. + +18:10.000 --> 18:15.000 +I am speaking of support for multiple, of course, obviously, + +18:15.000 --> 18:22.000 +but having one that in my own case, for example, by name.net, + +18:22.000 --> 18:27.000 +is the primary support. + +18:27.000 --> 18:36.000 +And in terms of packaging that as a thin client instead of inside of a + +18:36.000 --> 18:45.000 +Docker, that is certainly possible, but it is not, I don't consider it as + +18:45.000 --> 18:47.000 +the only way to go. + +18:47.000 --> 18:56.000 +You can do your packaging any way you want and, well, you can do your + +18:56.000 --> 19:04.000 +packaging and then deliver it however you want. + +19:04.000 --> 19:11.000 +On these questions, if I was not on the point in understanding the + +19:11.000 --> 19:16.000 +questions and answering them correctly, if there are any follow-ups, + +19:16.000 --> 19:42.000 +I would be happy to take them. + +19:42.000 --> 19:51.000 +Yeah, if there are no other questions, I can perhaps bring up the + +19:51.000 --> 20:04.000 +presentation and maybe make a few additional points. + +20:04.000 --> 20:23.000 +So, I think one key slide in here is this one, where what I am saying + +20:23.000 --> 20:32.000 +is that we have been very good at producing components and that we + +20:32.000 --> 20:42.000 +really need to get into systems development or environments + +20:42.000 --> 20:46.000 +development as opposed to components development. + +20:46.000 --> 20:55.000 +And to raise that a bit more so that we can move towards having + +20:55.000 --> 21:01.000 +something that we can call a non-procreatory digital ecosystem, + +21:01.000 --> 21:10.000 +I think we need to work towards having frameworks for services. + +21:10.000 --> 21:17.000 +And while we have defined free software or what I call Libre + +21:17.000 --> 21:25.000 +Halal software, we don't have precise definitions for Libre services, + +21:25.000 --> 21:27.000 +free services. + +21:27.000 --> 21:32.000 +Free services is going to be a very bad name, because we want it to + +21:32.000 --> 21:34.000 +be commercial. + +21:34.000 --> 21:39.000 +We want people to pay for it as they use it. + +21:39.000 --> 21:45.000 +And so the natural name would be something like Libre services. + +21:45.000 --> 21:52.000 +And in that context, if you go to Libre services.org, you will see + +21:52.000 --> 22:00.000 +my definition of what that would mean, what non-proprietary + +22:00.000 --> 22:05.000 +codification of services would mean. + +22:05.000 --> 22:20.000 +Another slide perhaps to take a look at is this one, where I am + +22:20.000 --> 22:35.000 +making the case for not considering Emacs by itself as core of + +22:35.000 --> 22:43.000 +anything, but viewing and cultivating and introducing this + +22:43.000 --> 22:48.000 +concept of common agent and building on it. + +22:48.000 --> 22:58.000 +Let me go see if there are any other questions. + +22:58.000 --> 23:08.000 +Yeah, I didn't see any more. + +23:08.000 --> 23:12.000 +May I drop in and ask a question directly? + +23:12.000 --> 23:14.000 +Of course. + +23:14.000 --> 23:21.000 +Okay, so I have a question regarding combining GNU and NotMuch. + +23:21.000 --> 23:23.000 +Yes. + +23:23.000 --> 23:30.000 +So do you combine tagging facilities of NotMuch into GNU as well? + +23:30.000 --> 23:32.000 +Sorry, can you repeat that? + +23:32.000 --> 23:37.000 +Do you also integrate tagging facilities of NotMuch into GNU? + +23:37.000 --> 23:41.000 +Tagging? I have not done that. + +23:41.000 --> 23:46.000 +Okay, because I was looking into combining GNU and NotMuch at some point, + +23:46.000 --> 23:53.000 +but what stopped me from continuing is that NotMuch is mostly about tags, + +23:53.000 --> 24:00.000 +and then GNU has a search option for NotMuch, using NotMuch. + +24:00.000 --> 24:05.000 +But how do you add tags from GNU? + +24:05.000 --> 24:11.000 +Right, in terms of continuous use, it's only recently that I'm doing that, + +24:11.000 --> 24:16.000 +and I don't think it means that it is not doable. + +24:16.000 --> 24:22.000 +It's just that in my own case, I haven't done it. + +24:22.000 --> 24:24.000 +Yeah, it's certainly doable. + +24:24.000 --> 24:30.000 +You present this unified system that brings everything together. + +24:30.000 --> 24:33.000 +So I was wondering if it's already implemented. + +24:33.000 --> 24:44.000 +Yeah, I must say all that I do is I want to say that that is the direction that I want to go. + +24:44.000 --> 24:45.000 +Okay. + +24:45.000 --> 24:47.000 +We have a long way to go. + +24:47.000 --> 24:58.000 +It's mostly a question of, and that is not the general direction and formalization that has been happening. + +24:58.000 --> 25:06.000 +So more or less, a lot of what I mentioned in there is not fully baked. + +25:06.000 --> 25:17.000 +Okay, thanks. + +25:17.000 --> 25:20.000 +I think we also have a question here in chat, Mohsen. + +25:20.000 --> 25:22.000 +I wasn't sure if you already saw or answered it or not. + +25:22.000 --> 25:24.000 +Sorry. + +25:24.000 --> 25:28.000 +No, let me, is it on the chat? + +25:28.000 --> 25:30.000 +Yes, public chat here on big blue button. + +25:30.000 --> 25:31.000 +Question by Thuna. + +25:31.000 --> 25:34.000 +Oh, public chat on the big blue button. + +25:34.000 --> 25:38.000 +Yeah. + +25:38.000 --> 25:41.000 +Can you expand on definition of Libre Halal? + +25:41.000 --> 25:42.000 +I'm a bit lost. + +25:42.000 --> 25:44.000 +Yes. + +25:44.000 --> 25:46.000 +Yes, yes, yes, yes. + +25:46.000 --> 26:05.000 +So, you see, we have labels of free software that are well established, and we have definitions of open source that are well established. + +26:05.000 --> 26:20.000 +And both of these are in the Western context and from the perspective of Western folks. + +26:20.000 --> 26:29.000 +What I am saying is that neither free software nor open source are the right labels. + +26:29.000 --> 26:37.000 +What we are looking for is actually ethical software, not free software. + +26:37.000 --> 26:49.000 +Freedom is something that is wonderful and great, but it may not be the right thing to be free. + +26:49.000 --> 27:01.000 +What I am saying here is that a manner of existence of software is the key concept. + +27:01.000 --> 27:06.000 +Allow me to share the screen. + +27:06.000 --> 27:09.000 +Just one moment. + +27:09.000 --> 27:18.000 +And maybe point you to a place where I could answer it in depth. + +27:18.000 --> 27:27.000 +It is certainly not a topic that I could do justice to in just a moment. + +27:27.000 --> 27:51.000 +So, if you were to look for nature of polyexistentials and Googling that would take you there, there is a 250-page document there that says why I believe the Western intellectual property rights is wrong. + +27:51.000 --> 28:10.000 +And it goes through and says, well, if polyexistentials are not to be governed by the intellectual property rights regime, then what is the right manner of governing them? + +28:10.000 --> 28:21.000 +So, what is the right manner of existence of software? And what label should we use for that? + +28:21.000 --> 28:41.000 +And in here, there is a whole section that about 10 pages or so that describes what Halal means and why the Libre Halal label is the right label. + +28:41.000 --> 29:01.000 +So, let me perhaps point you to that section. + +29:01.000 --> 29:11.000 +Yeah, this is on the Cure section. + +29:11.000 --> 29:32.000 +I think if you were to go to chapter 12, that would be a good place. + +29:32.000 --> 29:37.000 +Do you happen to have the link to this page handy, Mohsan? + +29:37.000 --> 29:46.000 +Yeah, it is included in the presentation. Let me go there very quickly. + +29:46.000 --> 29:48.000 +Oops, sorry. + +29:48.000 --> 29:52.000 +Just one moment. + +29:52.000 --> 30:05.000 +Yeah, it's in the presentation with a QR code. So, let me look it up and bring it back up again. + +30:05.000 --> 30:13.000 +Thank you. + +30:13.000 --> 30:25.000 +So, the link for that document is on slide 13. + +30:25.000 --> 30:29.000 +Can you see it? + +30:29.000 --> 30:38.000 +I'm not seeing your slides, but okay, it is getting shared again. Yep. Thanks. + +30:38.000 --> 30:39.000 +Yeah, sorry. Go ahead. + +30:39.000 --> 30:42.000 +Yeah, that is the... + +30:42.000 --> 30:47.000 +Oh, very good. Somebody else also threw it up on there. + +30:47.000 --> 30:49.000 +But it's a little bit different. + +30:49.000 --> 31:01.000 +Yes, yes. + +31:01.000 --> 31:18.000 +Yeah, it's PLPC 120.0.33. + +31:18.000 --> 31:24.000 +I mean, any other questions? Yes, thank you. + +31:24.000 --> 31:27.000 +Thanks. Yeah, I don't see any other questions on the panel. + +31:27.000 --> 31:30.000 +Oh, there's one new question here from Thuna again. + +31:30.000 --> 31:35.000 +What is the scope of what you are imagining? Just software? + +31:35.000 --> 31:42.000 +No, certainly not just software. It is software and services. + +31:42.000 --> 31:49.000 +So, that is, I think, the next challenge and the next step for us. + +31:49.000 --> 32:03.000 +We have to think of ways of competing with Gmail and Outlook.com. + +32:03.000 --> 32:07.000 +So, services are certainly within the scope. + +32:07.000 --> 32:14.000 +In the abstract sense of what polyexistentials are. + +32:14.000 --> 32:18.000 +So, polyexistentials are things that exist in multiples. + +32:18.000 --> 32:24.000 +So, any form of knowledge is within the scope. + +32:24.000 --> 32:48.000 +And that goes to medications, goes to anything that is patentable and art and anything that is copyable. + +32:48.000 --> 33:03.000 +Yes, NFTs are a form of creating mono-existentials out of polyexistentials. + +33:03.000 --> 33:13.000 +So, by the time that you create an NFT, it is no longer the subject of what I am talking about. + +33:13.000 --> 33:23.000 +But the process of creating mono-existentials off of polyexistentials is what we should be discussing. + +33:23.000 --> 33:36.000 +There is a section in that book on that topic as well with the same subject of how one goes about creating that. + +33:36.000 --> 33:44.000 +You see, any sort of a name could be thought of as an NFT. + +33:44.000 --> 33:54.000 +So, if you think of our domain name system, although it is in the realm of software and services, + +33:54.000 --> 34:17.000 +what you have emacsconf.org that has become unique and it's a mono-existential. + +34:17.000 --> 34:30.000 +I think my key message here is this vocabulary of polyexistence and mono-existence and mixed existence, + +34:30.000 --> 34:38.000 +which is the novelty in the stuff that I have written. + +34:38.000 --> 34:43.000 +We all have understood these for a long time. + +34:43.000 --> 35:07.000 +It's a question of coming up with the right vocabulary to express them with precision that remains and then acting on them. + +35:07.000 --> 35:08.000 +Excellent. + +35:08.000 --> 35:15.000 +As a lot of people have said, I think both here and also in IRC, there is a lot of information and material to digest from this talk + +35:15.000 --> 35:21.000 +and to try to think really deeply about for the coming weeks and months. + +35:21.000 --> 35:24.000 +So, that's great. + +35:24.000 --> 35:28.000 +Thank you. + +35:28.000 --> 35:30.000 +We can keep this session going as long as you want. + +35:30.000 --> 35:33.000 +The stream has already moved on, but here it is open. + +35:33.000 --> 35:40.000 +If folks have any more questions, feel free to post them here or on the separate pad page. + +35:40.000 --> 35:46.000 +Yeah, or if not, then we can all drop off at some point. + +35:46.000 --> 35:48.000 +Sure. + +35:48.000 --> 35:52.000 +If there are any questions, I'll be happy to answer them. + +35:52.000 --> 36:07.000 +Otherwise, perhaps we could go and watch the rest. + +36:23.000 --> 36:31.000 +Yeah, I mean, I think perhaps it's a good thing to consider the session complete. + +36:31.000 --> 36:33.000 +Sure, sounds good to me. + +36:33.000 --> 36:36.000 +Thank you again very much Mohsen, really appreciate it. + +36:36.000 --> 36:38.000 +Thank you. + +36:38.000 --> 36:39.000 +Cheers, take care. + +36:39.000 --> 36:57.000 +Take care. + diff --git a/2022/captions/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--answers.vtt b/2022/captions/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--answers.vtt new file mode 100644 index 00000000..f7dd1b18 --- /dev/null +++ b/2022/captions/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--answers.vtt @@ -0,0 +1,785 @@ +WEBVTT + +00:00.000 --> 00:08.160 +now. We seem to be back. Sorry for the little shuffling chairs around. We are now live with + +00:08.160 --> 00:16.400 +Sid. Hi, Sid. Let me contextualize a little bit for the people because we are on Gen right now + +00:16.400 --> 00:22.800 +and the talk was happening on Dev. Sid, can I ask you explaining what your talk was about in about + +00:22.800 --> 00:28.560 +one to two minutes? Yes, sure. The talk was called Maintaining the Maintainer's Attribution + +00:28.560 --> 00:35.200 +as a Model for Open Source Projects, and the idea is that instead of having an economic system based + +00:35.200 --> 00:40.160 +on supply and demand, which is capitalism, we have an economic system based on attribution + +00:40.160 --> 00:47.120 +and agreement, the power of our words, taking on incentives in the world, and that this can work + +00:47.120 --> 00:52.240 +for open source projects as a proving ground, and I think it can scale beyond that, and I hope it + +00:52.240 --> 00:59.920 +will scale beyond that in general. Okay, well I think you did, I'm not sure if you rehearsed + +00:59.920 --> 01:05.040 +this before, but that was such a perfect elevator speech for your talk. I am beyond amazed. + +01:06.720 --> 01:10.960 +Thank you, thank you. It's the adrenaline from being late and all the time zone shifting. + +01:12.080 --> 01:19.920 +You're not supposed to mention this, you know. You know, the things we keep telling people, + +01:19.920 --> 01:24.560 +you know, is that EmacsConf, yes, you see us rustling and being really grumpy when we don't + +01:24.560 --> 01:30.640 +get prereq, but really the live event is one part of EmacsConf, but really the better part of it is + +01:30.640 --> 01:37.600 +just having all the talks out of the head of people online, easily viewable, easily accessible + +01:37.600 --> 01:42.000 +with subtitles and stuff like this. So don't worry, it's fine if you're all right for submitting a + +01:42.000 --> 01:46.720 +prereq, it's fine if you don't show up to the Q&A, eventually we will find you, we will ask you the + +01:46.720 --> 01:51.840 +questions and all the data will be out there, so don't worry about it. Yeah, the magic of editing + +01:51.840 --> 01:57.360 +and stuff like that, you know. Yes, but we don't have it now, so we'll have to stick, you know, + +01:57.360 --> 02:02.800 +time is going to dilute, we'll have to stick with strict adherence to chronology right now. So + +02:02.800 --> 02:07.680 +starting with Sid, do you want to take the first question on the pad? Okay, let's look at them. + +02:09.280 --> 02:14.960 +So the first question is, this seems to assume that there will be money contributions commensured + +02:14.960 --> 02:20.400 +with the value of the project versus everyone freeloading because there's no incentive to pay. + +02:21.840 --> 02:26.400 +Right, so actually there is an incentive to pay, so I think what the question is referring to + +02:26.400 --> 02:32.720 +is that everyone is going to pay to other projects, or no one is going to pay to projects because + +02:32.720 --> 02:38.080 +they're free anyway and you can use them and you don't have to pay, but one of the new things + +02:38.080 --> 02:43.920 +with attribution-based economics is the idea that in open source projects we agree, we all + +02:43.920 --> 02:50.400 +collectively agree on a fair market price for a project, and this isn't a price in the sense that + +02:50.400 --> 02:55.200 +you are prohibited from using the product until you pay the price, but rather it's for an accounting + +02:55.200 --> 02:59.920 +purpose, which is that if you pay more than that price, then that means you are now an investor, + +03:00.480 --> 03:06.080 +and so you can sort of, that means you are now attributable in future revenues that come to the + +03:06.080 --> 03:11.520 +project. So if you think there's a project that's going to do some nice things, you can essentially + +03:11.520 --> 03:16.160 +buy shares in it, except these are not ownership shares, they're shares and attribution because + +03:16.160 --> 03:22.240 +you contribute value by contributing money and that's attributable, so there is an incentive + +03:22.240 --> 03:30.720 +to pay, and I think, but also beyond this, the financial model is incredibly complex, + +03:30.720 --> 03:36.160 +it is much simpler than what we have today in a capitalist world, but still finance is a very + +03:36.160 --> 03:43.040 +complex thing, and I think we're in the very very early stages of figuring out the financial model, + +03:43.040 --> 03:48.480 +and I think there's a number, there's tons of open questions, needs a lot of help from people + +03:49.520 --> 03:56.480 +to figure these out, so there's promising angles here, but I think we have a lot to work out as + +03:56.480 --> 04:03.360 +well. Should I go to the second question? Yeah, feel free to do so, you are the master, you're + +04:03.360 --> 04:11.040 +in Q&A. Okay, so the second question is, are you aware of projects like OpenQ, would that fit the + +04:11.040 --> 04:18.960 +model in your opinion? I'm actually not familiar with OpenQ, so maybe I should just move on to the + +04:18.960 --> 04:25.840 +next question and come back to that if we have time. Sure. The next one says, I see incredible + +04:25.840 --> 04:30.800 +amounts of overlap with the source cred system, where attribution of antecedents, graph of + +04:30.800 --> 04:36.640 +contributions, fair in hindsight, backpropagation. Oh, backpropagation, interesting. I'm sensing a + +04:36.640 --> 04:40.560 +pattern though, so you are being exposed to stuff that you do not know, which is amazing, that + +04:40.560 --> 04:45.760 +brings an opportunity to do research later on, but feel free to delay those questions until, + +04:45.760 --> 04:49.920 +perhaps, I would invite the people who ask those questions in the pad maybe to describe in a little + +04:49.920 --> 04:55.520 +blurb that Sid can read, what is the meaning of those particular platforms, and in the meantime, + +04:55.520 --> 05:00.000 +Sid, you can move on to the next questions. Sure, but I will say one thing on the subject of both + +05:00.000 --> 05:07.200 +of these things, which is that I think it's significantly underappreciated the extent to which + +05:07.200 --> 05:13.040 +value is created in the world that is both independently created of other value that happens + +05:13.040 --> 05:20.720 +to be very similar, as well as dependently related and that may be unknown, and this is something + +05:20.720 --> 05:26.720 +that I call subliminal transmission, which is like if you think about a turbulent flow, + +05:26.720 --> 05:30.800 +you know, and that's what our world is, you know, we like to have all these linear narratives and + +05:30.800 --> 05:37.840 +simple stories where I think if you take all of Wikipedia, right, even a single person's life + +05:37.840 --> 05:42.240 +has more information and richness than all of Wikipedia, so when you think about it in those + +05:42.240 --> 05:47.920 +terms, you realize just how small our stories are in expressing what really happens and what has + +05:47.920 --> 05:53.040 +really happened in the world, so from that perspective, I think there's this thing called + +05:53.040 --> 05:58.720 +subliminal transmission, which is like a turbulent flow where you have little vortices that appear + +05:58.720 --> 06:02.480 +here and then they disappear, they're gone, but then you see them again here and they're like + +06:02.480 --> 06:05.600 +bigger, but they're the same, and then you see them in a different place and they're not the + +06:05.600 --> 06:11.440 +same, they're different, yet somehow the same, and I think our world is like that, and if we have + +06:11.440 --> 06:16.960 +an economic system that's capable of not saying that, oh, it should be this other way, which it + +06:16.960 --> 06:22.480 +isn't, but in fact we see this is how it is, let's make sure that we recognize this and empower the + +06:22.480 --> 06:29.440 +right voices, given that this is how the world is, and from that perspective, I think projects like + +06:29.440 --> 06:34.320 +OpenQ and SourceCred and any number of others might exist which are creating value in the world, + +06:34.320 --> 06:39.360 +and I think that we all deserve to be empowered, you know, if we're creating similar kinds of + +06:39.360 --> 06:44.320 +value, then these are voices that have something useful to say for us moving forward, and they + +06:44.320 --> 06:50.640 +deserve to be empowered, so yeah, it doesn't have to be causally related, you know, you can have + +06:50.640 --> 06:56.080 +empowerment of all of these different projects because they work together, so yeah, very long + +06:56.080 --> 07:00.720 +-winded answer to a short question, or non-question, meta-question. + +07:00.720 --> 07:04.480 +You're fine, you can be as long-winded as you want, because honestly you have been so + +07:04.480 --> 07:10.080 +eloquent in your answer, and the little ingestors that accompany these little vertices + +07:11.440 --> 07:15.520 +do carry on with as much velocity as you want. We will be going until about + +07:15.520 --> 07:20.880 +52-53 of the current hours, which means we have about 20 more minutes. Also, we have a lot of + +07:20.880 --> 07:25.600 +questions in the pad, so I would prefer if Sid started answering the questions over the pad first, + +07:25.600 --> 07:30.400 +but we are going to be opening the pad in about six to seven minutes if you want to join and ask + +07:30.400 --> 07:35.520 +questions live to Sid, but in the meantime, Sid, sorry, I'm getting tired, it's late, in the meantime, + +07:35.520 --> 07:41.280 +Sid, feel free to answer more questions. Sure, okay, thank you. The next question is, + +07:41.280 --> 07:46.480 +how is this different from money? Not in some abstract ownership versus attribution way. + +07:46.480 --> 07:52.000 +Open-source funding is an incentive problem, which this does not change as far as I can see. + +07:54.000 --> 08:00.960 +So, on the one hand, it does add new incentives, as we talked about. I'm not sure about the question + +08:00.960 --> 08:06.800 +of how this is different from money. This isn't proposing to replace money in any way. + +08:06.800 --> 08:13.920 +Rather, it employs money as, you know, the mechanism by which we recognize value. I think + +08:13.920 --> 08:23.440 +money is perhaps something that can be revisited and, you know, reflected upon in the future, + +08:23.440 --> 08:28.960 +but I don't think we need to do that at this stage. At this stage, I'm content to rest on the + +08:28.960 --> 08:33.520 +black box abstractions of certain things that we've already developed, like money, + +08:33.520 --> 08:37.600 +as a means of exchange and as a means of recognizing value, and I think we can use that, + +08:37.600 --> 08:43.440 +so I'm not trying to replace money. Open-source funding is an incentive program. This doesn't + +08:43.440 --> 08:47.680 +change incentives, so I think we already covered how it does add incentives in the sense that you + +08:47.680 --> 08:53.520 +can invest in open-source projects, which is a new incentive, and, you know, we also talked about + +08:53.520 --> 08:58.080 +how there are some unopened questions. I'm not sure if this is one of them. + +08:58.080 --> 09:07.680 +How would you approach a viable experiment? So, the prototype that we have, that we talked about + +09:07.680 --> 09:13.760 +in the talk, so there's a prototype, for those who didn't watch the talk. We have an open-source + +09:14.560 --> 09:19.520 +project, you know, it's a GitHub action, and, you know, I love to support other platforms. I'm not + +09:19.520 --> 09:24.960 +married to GitHub in any way. I don't have any special affection for GitHub. I don't have any + +09:24.960 --> 09:31.520 +special affection for GitHub. But it's a GitHub action at the moment, and what it will do is, + +09:31.520 --> 09:37.120 +when you follow all of the processes in the Constitution, which says, you know, + +09:37.120 --> 09:43.360 +open-source repository, create an issue that solicits related work reports from members of + +09:43.360 --> 09:49.600 +the public, and then create this folder structure which has a report of the contributors and this + +09:49.600 --> 09:55.440 +and that, once you do all of that, like initial logistical work, this GitHub action will process + +09:55.440 --> 10:00.720 +fresh payments that come in, which you report as single line item files, text files. Everything is + +10:00.720 --> 10:07.360 +text input and output, and then, you know, you can basically get all the accounting done for you by + +10:07.360 --> 10:14.960 +this system. So, that's what the nature of the experiment is, and I think we're starting with + +10:14.960 --> 10:19.840 +just one or two repos, because there's tremendous number of unresolved questions, and it's all going + +10:19.840 --> 10:27.360 +to be resolved through dialogue, agreement. We all decide how this thing works, and I think, + +10:27.360 --> 10:36.400 +you know, there's, yeah, so we'll see about how the experiment goes. Next question, given that + +10:36.400 --> 10:45.040 +oversight is a social process, how do you constrain the cognitive and time burdens of deciding the + +10:45.040 --> 10:54.080 +values of attributed contributions? Okay, this is a great question. So, first of all, you know, + +10:54.080 --> 11:00.080 +let's talk about long-term vision, right? Long-term vision, I don't imagine that any of us, that is, + +11:00.080 --> 11:04.160 +the actual contributors to the projects, are going to have to worry about this at all. + +11:04.160 --> 11:08.240 +We're not going to have to engage in this process of what is called dialectical inheritance + +11:08.240 --> 11:13.440 +attribution, which is, you know, it's a lot of work. There's all these standards and precedents, + +11:13.440 --> 11:18.800 +and how do you compare ideas versus works versus the materials that went into the project? It's a + +11:18.800 --> 11:24.400 +very hard problem, and I think it's something we'll be improving upon for possibly even decades. + +11:25.200 --> 11:30.000 +But at that stage, I believe there will be experts, much like today's investment bankers + +11:30.000 --> 11:36.400 +and lawyers, investment IP lawyers. These are the people who are going to specialize in it, + +11:36.400 --> 11:40.880 +going to be professionals, and that's the kind of work that they're going to do, and we can leave it + +11:40.880 --> 11:48.000 +to them. But at this stage, yes, we have to do it. We have to set these principles and standards in + +11:48.000 --> 11:55.840 +place. And how do we constrain that? We start with simple heuristics. So, initially, we want to have, + +11:55.840 --> 11:59.680 +you know, if you can imagine, this is, I don't know, this is probably a bad metaphor, but if you have, + +11:59.680 --> 12:07.040 +like, a big hole and you're trying to patch it, you know, if you put, like, little tiny things on + +12:07.040 --> 12:12.240 +it and try to focus on little tiny things, okay, what I'm trying to say is order of magnitude, + +12:12.240 --> 12:19.280 +right? Let's solve the problem at the first order of magnitude and then get the little harmonics + +12:19.280 --> 12:27.520 +and, like, solve those over time. So, basically, we want to have usable, workable heuristics that + +12:27.520 --> 12:33.760 +are low maintenance that solve the majority of the problem for our immediate purposes and then + +12:33.760 --> 12:40.960 +iterate on those over time and develop proper models, which I think we will start to do in the + +12:40.960 --> 12:47.040 +next phase. The initial phase is heuristics that are easy and low maintenance and useful. + +12:47.040 --> 12:53.600 +Right, Sid, I just want to barge in a little bit. I just want to let people know that we have opened + +12:53.600 --> 13:00.000 +up the Q&A BBB window right now, so the same spiel as usual. If you want to join Sid and ask questions + +13:00.000 --> 13:04.160 +directly, we still have some questions in the pad. Don't worry, Sid will get to them first. + +13:04.160 --> 13:09.040 +But if you want to join and have a discussion with Sid, we have until about, we've got about + +13:09.040 --> 13:14.240 +20, 18 minutes left of discussion there. So, please do not hesitate. This is a very interesting talk. + +13:14.240 --> 13:19.840 +We have a very interesting speaker as well. So, use this opportunity, please. In the meantime, + +13:19.840 --> 13:24.720 +Sid, you can answer more questions. Sure. Should we take one from the field? + +13:25.360 --> 13:28.080 +I guess while people are thinking about it, I'll take one more question, maybe. + +13:29.360 --> 13:37.440 +Okay. So, the next question is, how are the attribution amounts calculated? + +13:37.440 --> 13:42.960 +Okay, how are the attribution amounts calculated? This is going to be done through standards. + +13:42.960 --> 13:49.040 +So, there is a, there's a repo, you know, if you go to the github.org account, dream-org, + +13:49.040 --> 13:57.760 +d-r-y-m-dash-org-slash-foundation. This contains the founding documents of how we will manage this + +13:57.760 --> 14:04.080 +process. And it can, it is, it will contain more standards. It has a few at the moment, very high + +14:04.080 --> 14:10.240 +level ones, but we will keep adding more standards there that are general enough to be universally + +14:10.240 --> 14:16.880 +applicable, and that can be specialized to the individual projects. And the attribution is going + +14:16.880 --> 14:22.400 +to be decided by these standards, by the members of the public, members of the community. + +14:22.400 --> 14:28.240 +Yeah. And they calculate, they must add up to 100%. So, it's, you know, and that's okay, actually, + +14:28.240 --> 14:36.080 +I should say. One of the mechanisms by which attribution will be done initially is this heuristic + +14:36.080 --> 14:45.040 +procedure called the Analyze, Appraise, Anonymize Attribute Loop. What that means is we first + +14:45.040 --> 14:49.600 +analyze the project, decompose it into its components, and we can do any number of such + +14:49.600 --> 14:53.280 +analyses, any number of people can do these analyses, and there can be a decision procedure + +14:53.280 --> 14:58.320 +for combining them. But that, I digress. We'll keep it simple first. We analyze the project into its + +14:58.320 --> 15:05.520 +components, then we agree on the proportion of value contributed by each of those components, + +15:05.520 --> 15:10.480 +then we analyze the activities done by the contributors, and then we analyze the + +15:10.480 --> 15:15.120 +activities done by the contributors and anonymize them. And we say, this was done, this was done, + +15:15.120 --> 15:20.240 +this was done, this was done. This is how much proportion of value these activities contribute + +15:20.240 --> 15:24.720 +to each of these components. And then once you have this chart, this graph of all of these + +15:24.720 --> 15:32.880 +connections and proportions of value, then you anonymize and you aggregate the sum of proportions + +15:32.880 --> 15:38.480 +of value by contributor. And contributor is not necessarily a person, a contributor is a + +15:38.480 --> 15:45.040 +project, it can be an antecedent, it doesn't have to be a direct contributor to the project, + +15:45.040 --> 15:50.160 +it doesn't have to be someone who wrote code, it can be a person who created a bug report, + +15:50.160 --> 15:57.200 +or a person who had a good idea for the design. And anyway, so once you do this, you aggregate + +15:57.200 --> 16:02.800 +by contributor, you have a set of proportions that total up to one, or a set of percentages + +16:02.800 --> 16:09.920 +that total up to 100, that dictate how the revenues that come into the project are to + +16:09.920 --> 16:21.760 +be divided amongst all of these antecedents and contributors. Let's see, what's the next question? + +16:22.800 --> 16:26.240 +Okay, the next question is being written down as we speak. + +16:26.240 --> 16:33.200 +It's fine, we can wait a little bit. In the meantime, I'll just mention, + +16:35.360 --> 16:41.360 +so actually, when we keep track of presentation for Emacs, we do have slugs for them. And this + +16:41.360 --> 16:47.440 +year, the slug for your talk, Sid, was made. And it was not an anodyne choice, because last year, + +16:47.440 --> 16:53.360 +we also had another talk by a maintainer, or well, the org maintainer, or one of the org maintainers, + +16:53.360 --> 16:59.520 +Bastien Guerri. And it feels like Bastien's talk was mostly geared towards sustaining + +16:59.520 --> 17:05.360 +maintenance, and your is more about maintaining the software effort in general. And it feels like + +17:05.360 --> 17:13.280 +the two talks are related, but yours seems to be more, I wouldn't say visionary, I think they are + +17:13.280 --> 17:17.120 +very complimentary in nature. I'm not sure, have you been able to watch Bastien's talk from last + +17:17.120 --> 17:22.080 +year? I have not, but that sounds very interesting. I'll definitely check it out after this. + +17:22.080 --> 17:27.360 +Right. And I will now stop my blabbering, and you can answer the last question. + +17:28.960 --> 17:32.640 +The last question is, what are your assumptions about human nature, + +17:33.280 --> 17:42.000 +vis-a-vis self-interest versus altruism? The funny thing is, I don't actually feel like + +17:42.000 --> 17:50.000 +we need to opine on that, from the perspective of an economic system. I mean, yes, we have to + +17:50.000 --> 17:55.360 +recognize that, you know, some people will say, oh, human nature is fundamentally selfish, or, + +17:55.360 --> 18:00.320 +you know, we have to be good, and we have to help each other. And I think both of these perspectives + +18:00.320 --> 18:07.360 +are not necessarily, you know, I don't know if they're necessarily the right way to think about + +18:07.360 --> 18:13.040 +it, because you have the idea about, well, capitalism assumes people are fundamentally + +18:13.040 --> 18:17.840 +selfish, or they have to act that way in order to be rational in the system. That's one side of it. + +18:17.840 --> 18:22.800 +The other side of it is this notion of altruism, right, that somehow you have to help others, + +18:22.800 --> 18:28.320 +and that, you know, there's like a charitable component, and you have all these people who + +18:28.960 --> 18:33.520 +make billions and billions of dollars, and then, you know, start giving that away. Which, + +18:33.520 --> 18:36.880 +you know, if you're going to make billions and billions of dollars, and you give it away, + +18:36.880 --> 18:41.600 +and like help the world, that's better than not giving it away and not helping the world. + +18:41.600 --> 18:46.560 +On the other hand, the fact that you got those billions and billions of dollars in a capitalist + +18:46.560 --> 18:54.160 +economic system, which fundamentally skews the value recognition in ways that, you know, is very, + +18:54.160 --> 18:59.840 +very subversive and very, very minimizing of the source, the true sources of value, + +18:59.840 --> 19:06.160 +means that you've led yourself to go down this path and essentially unwittingly and inevitably + +19:06.160 --> 19:09.920 +ended up causing a lot of problems, too. Like, it's not necessarily the case that if you're + +19:09.920 --> 19:14.560 +wealthy in a capitalist economy, that you've created a lot of value, because yes, you have, + +19:14.560 --> 19:19.040 +but at the same time, the net value is not guaranteed to be above zero, really, + +19:20.320 --> 19:27.040 +because capitalism can't express all forms of value. So I don't think thinking about self-interest + +19:27.040 --> 19:35.680 +versus altruism is the right way to think about things from the perspective of economic systems. + +19:35.680 --> 19:42.480 +In an economic system where the incentives are so set up that the maximum value to all + +19:42.480 --> 19:47.840 +is recognized the most, then it's inevitable that people want to do that. And it doesn't mean that + +19:47.840 --> 19:51.280 +you're a naturalistic person or a selfish person. You're just going to do it because there are + +19:51.280 --> 20:00.240 +incentives that are set up that way that everybody agreed on. And I think in such a system, your own + +20:00.240 --> 20:07.040 +sort of spiritual inclinations towards this are secondary. Not secondary. I don't want to say + +20:07.040 --> 20:14.800 +secondary. I want to say that they are up to you. And your actions in the world will be rewarded to + +20:14.800 --> 20:20.320 +the extent that you help others. The more you give, the more you will be empowered. So from + +20:20.320 --> 20:25.280 +that perspective, you could say that the system rewards altruism. But at the same time, if you're + +20:25.280 --> 20:32.320 +just giving and you're not in a position where... I mean, the system ensures that if you give, + +20:32.320 --> 20:36.560 +you're also taken care of, so that you don't have to choose between altruism and selfishness. + +20:36.560 --> 20:44.160 +Altruism is empowering yourself. So that's kind of the beauty of this system, really. That's the + +20:44.160 --> 20:50.240 +beauty of an attribution-based system is that you become more empowered by giving more. But we don't + +20:50.240 --> 20:54.880 +have to get into the spirituality stuff of it, really. It's beside the point as far as the + +20:54.880 --> 21:02.400 +mechanisms of the economic system go. All right. I think that was the last question, unless I'm + +21:02.400 --> 21:09.920 +mistaken. That's the last one I see. Yes. Well, you did a fine job answering, however, many + +21:09.920 --> 21:15.920 +questions before. Again, very lengthy, as you said, but very eloquent, as I will say to you. + +21:17.680 --> 21:22.080 +There is one question that appeared on ISE, which was the URL of the project. You mentioned + +21:22.080 --> 21:27.520 +dream.org. Would you be able to maybe type it out in the chat so that people can + +21:27.520 --> 21:32.640 +check it, and I'll place it on ISE for the person that was asking? Or on BBB, it's fine, too. + +21:34.000 --> 21:41.520 +It's actually dream-org. Oh, that's why I did dream.org, which was the problem. + +21:43.840 --> 21:47.280 +It's the GitHub repo. And actually, sorry, you should also check out + +21:48.480 --> 21:55.840 +dream-org.old-abe. That is the billing prototype, which is the GitHub action, + +21:55.840 --> 22:01.520 +which you can add to your repo. And it's got all the startup instructions for how you can + +22:01.520 --> 22:08.720 +set up attribution-based economics. So I'll let you type it out. github.com slash dream + +22:10.480 --> 22:18.080 +dash org slash old-abe. + +22:18.080 --> 22:25.280 +It's good for you for remembering it. I will place this in BBB right now. Sorry, + +22:25.280 --> 22:32.640 +not in BBB, in the pad so that people can click on it. Sid, is there anything else you'd like to + +22:32.640 --> 22:41.200 +say? We are about at the end of the Q&A right now. I guess attribution-based economics is open for + +22:41.200 --> 22:50.560 +business, as it were. So if you can go to some of the repos at the dream-org GitHub org account, + +22:51.280 --> 22:56.240 +many of those repos are starting attribution-based economics. And simx.el in particular is one for + +22:56.240 --> 23:00.560 +the Emacs community. So I encourage you guys. And of course, old-abe, that's another one that + +23:00.560 --> 23:04.560 +started. And that's the only one that's actually ready to accept payments and distribute payments, + +23:04.560 --> 23:09.120 +because we have done the attributions already, given that it was written in the last few days. + +23:09.120 --> 23:16.480 +But the other ones, we might start payments out, I think, on January 1. So between now and January + +23:16.480 --> 23:24.480 +1, we'll start doing the attribution process and deciding the antecedents, who's owed what, + +23:24.480 --> 23:28.080 +what proportion of value came from whom, and all that stuff between now and then. And then we're + +23:28.080 --> 23:36.880 +going to start paying out from the repositories January 1 is the plan. If you can contribute to + +23:36.880 --> 23:41.280 +these projects, then that would help prove the model out, and that would create incentives for + +23:41.280 --> 23:45.920 +people to join. So I encourage you to do so. Thank you. Well, thank you. You've definitely + +23:45.920 --> 23:50.320 +made a very nice case for it, and people can make their own minds now by checking the link. + +23:50.320 --> 23:55.280 +We really encourage you to follow up on a lot of the talks. It's one thing. One thing that we always + +23:55.280 --> 24:02.080 +say with Sasha to the people, be they speakers, be they user group members, is that Emacs can't, + +24:02.080 --> 24:08.000 +and user groups, any kind of community activity for Emacs is about curiosity. And it's one thing + +24:08.000 --> 24:14.960 +to ignite the flame of curiosity in some peoples. It's actually much better to actually follow the + +24:14.960 --> 24:19.120 +fuse and see where it leads you. Because, you know, it's a little fuse, a little tiny flame, + +24:19.120 --> 24:24.000 +a flicker of a flame, a flicker of light going in a direction that might explode so much curiosity + +24:24.000 --> 24:32.960 +later down the line. I was talking earlier with Blaine about, you know, oh, last year he was + +24:32.960 --> 24:39.280 +presenting, it had only been six, it had only been, I can't speak English, it's 10.45 a.m. in + +24:39.280 --> 24:46.000 +my time zone. I'm starting to tire. But he had only started using Emacs six months prior to + +24:46.000 --> 24:51.040 +presenting, and he was already so proficient in it. And it feels like, it's kind of like in Lost, + +24:51.040 --> 24:55.280 +you know, when you have the rope and you pull on the rope and it brings you so far away. Well, + +24:55.280 --> 25:01.200 +do follow this curiosity, be it for what Sid has presented to you today, but for any of the topics + +25:01.200 --> 25:04.960 +that we've presented to you today. So thank you so much, Sid, for all your time, all your + +25:04.960 --> 25:09.280 +presentation, and your answers. Thank you so much, Leo. Appreciate it. Thanks for having me. + +25:10.320 --> 25:14.480 +Great. I'll still make some last-minute announcement. So we are still running, + +25:14.480 --> 25:23.280 +sorry, the elves are yelling in my ears again. We will be waiting a little bit for the track, + +25:24.480 --> 25:29.280 +development track to finish, which should take about five to ten minutes, and we will reconvene + +25:29.280 --> 25:33.920 +in seven minutes in this channel for the closing remarks for day one. So see you in a bit, + +25:33.920 --> 25:48.000 +and thank you again, Sid. Thank you. Okay, Sid, we are not live anymore. Thank you so much. I need + +25:48.000 --> 25:51.040 +to get going. I need to prepare the closing remarks. All right. Thank you so much, Leo. + +25:51.040 --> 25:57.760 +Appreciate it. Where can I watch the closing remarks? Closing remarks? You go to emacs.org + +25:57.760 --> 26:03.520 +slash 2022. You'll have everything over there. Watch. I'm going to give you the page. I have + +26:03.520 --> 26:11.280 +the time to do this. 22, watch. Check on BBB. We will be on the general channel in about + +26:11.280 --> 26:28.240 +six minutes. Okay, perfect. Thanks, Leo. See you in a bit. See ya. + diff --git a/2022/captions/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--answers.vtt b/2022/captions/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--answers.vtt new file mode 100644 index 00000000..2918301d --- /dev/null +++ b/2022/captions/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--answers.vtt @@ -0,0 +1,563 @@ +WEBVTT + +00:00.000 --> 00:14.120 +All right. Hi, again, everyone. So, we are back. And I am with Vavin. Hi, Vavin. How + +00:14.120 --> 00:15.120 +are you doing? + +00:15.120 --> 00:18.120 +I'm good. How about you? + +00:18.120 --> 00:24.040 +I'm doing well. You will note that I now have an extra layer because I was absolutely frozen + +00:24.040 --> 00:28.960 +in the first half of this year's EmacsConf. But now, hopefully, I should start getting + +00:28.960 --> 00:33.080 +a little warmer. Usually, I'm more stressed, you know, when we only have one track and + +00:33.080 --> 00:36.640 +we only have about two minutes between every talk. I need to run all the time. And even + +00:36.640 --> 00:40.840 +though we are in the dead of winter in Europe, usually, I'm pretty warm. But today, I am + +00:40.840 --> 00:45.920 +so relaxed that I have the mental availability to be cold. Anyway, this is not about me. + +00:45.920 --> 00:47.920 +This is about you, Vavin. + +00:47.920 --> 00:54.740 +So, for the new joiners, newcomers to the chat, we do have a pad where you can ask questions. + +00:54.740 --> 00:59.400 +And we are primarily looking at this pad for the questions. What we'll do afterwards is + +00:59.400 --> 01:06.720 +that we'll open up this current room in which we are. And we will allow you to ask questions + +01:06.720 --> 01:12.360 +directly to Vavin. And it's a subject, you know, user group that is very close to Sasha + +01:12.360 --> 01:17.720 +and my heart because we've done a lot of work towards it. And we might have some knowledge + +01:17.720 --> 01:23.440 +to contribute afterwards. But for now, I prefer if we heard about Vavin. So, Vavin, take it + +01:23.440 --> 01:24.440 +away. + +01:24.440 --> 01:25.440 +Yep. + +01:25.440 --> 01:36.640 +I see one question. What about using on multiple computers? I think that's not related or I'm + +01:36.640 --> 01:38.440 +not sure what it is about. + +01:38.440 --> 01:40.440 +I'm not sure either. + +01:40.440 --> 01:46.840 +Yeah, I'll just do the next one. What about collaborative editing with this multiple computers + +01:46.840 --> 01:50.920 +with Macs like CRDT or with R2D2? + +01:50.920 --> 01:57.920 +I think there's something weird going on. I'll give you just a second. + +01:57.920 --> 02:04.120 +I'll just pick up the relevant one in that case. + +02:04.120 --> 02:05.680 +Sure, thank you. + +02:05.680 --> 02:07.840 +Thoughts on physical meetups. + +02:07.840 --> 02:19.560 +Yeah, so this year, I think a few months back, I had thought of doing it. But the way right + +02:19.560 --> 02:28.040 +now it is, at least in my region, the community is comparatively small. So usually right now + +02:28.040 --> 02:33.480 +the model is working is basically the remote one. And we get people from some people from + +02:33.480 --> 02:39.080 +I think China, some people from Australia. So we get to have a couple of people and good + +02:39.080 --> 02:46.680 +discussions usually. Whereas for physical meetups, what I've been thinking is maybe + +02:46.680 --> 02:52.960 +one off meetup can be physical. Let's say you come together similar to people have been + +02:52.960 --> 03:00.680 +watching Emacs on this year. So something like you come together, do the online meetup + +03:00.680 --> 03:05.520 +first and then networking and discussions can happen offline. So that was one of my + +03:05.520 --> 03:12.880 +idea. Maybe I'll try it with Emacs APAC sooner or later and we'll see how it goes. So that's + +03:12.880 --> 03:18.880 +the current plan about physical meetups. And in terms of if you ask me thoughts, they are + +03:18.880 --> 03:25.340 +good too. So you get to talk with people face to face, you got to make more connections. + +03:25.340 --> 03:30.840 +So yeah, I might experiment some mixed way of doing it right once in a while you meet + +03:30.840 --> 03:36.720 +or otherwise you do it online so that people who are not able to join in or travel to that + +03:36.720 --> 03:40.160 +particular area or region, they can just join online. + +03:40.160 --> 03:48.240 +Yeah, it's a very interesting topic of physical meetups because we, so I participate in one + +03:48.240 --> 03:56.880 +of the workshop Emacs Paris and we used to have in-person meetups in Paris and usually + +03:56.880 --> 04:02.040 +there were about five to 10 people showing up, which was a good number. But when COVID + +04:02.040 --> 04:07.820 +happened and we moved to virtual meetings, we started having a lot more people. Now we + +04:07.820 --> 04:12.680 +are averaging about 15 to 20 people at every session and it's amazing. But the problem + +04:12.680 --> 04:20.000 +is, I'm knocking on wood really hard, but now that COVID is a little easier to manage + +04:20.000 --> 04:25.720 +and that's a lot of people are returning to in-person meetings, it's a little more complicated + +04:25.720 --> 04:32.040 +really to say, do we go back to physical meetings even though we have more people on a virtual + +04:32.040 --> 04:36.640 +meeting? It causes us to ask many questions about why do we want those meetings to be + +04:36.640 --> 04:44.320 +held? And we need to think about this in 2023 with the organizers of Emacs Paris and I think + +04:44.320 --> 04:53.840 +Emacs SF also was in the process of thinking about how to go back to physical venues. And + +04:53.840 --> 05:01.680 +I think right now the consensus amongst a lot of workshop user group organizers is that + +05:01.680 --> 05:06.920 +they would like to have both. So if it was a monthly meeting before, why not have a physical + +05:06.920 --> 05:14.960 +meeting every month and a virtual meeting every month as well on a two-week cycle. So + +05:14.960 --> 05:25.240 +that's a lot more work, obviously. It's not choosing, it's choosing. I'm not sure how + +05:25.240 --> 05:30.400 +big the pool of people you have in Emacs APAC actually is but it feels like it's a much + +05:30.400 --> 05:39.720 +larger area than say Emacs Paris for France. So you try it even though. Yeah, exactly. + +05:39.720 --> 05:48.320 +So in India, there is the region with this Maharashtra Pune, it is like one end and across + +05:48.320 --> 05:54.880 +maybe you can say 500-600 kilometers radius, you have many other cities where more people + +05:54.880 --> 06:02.960 +are there. So having all of them at one place is basically event like conference or something. + +06:02.960 --> 06:08.400 +Monthly meetup, probably not. So there is one more meetup group I managed, not related + +06:08.400 --> 06:14.280 +to Emacs, but we had same question, what to do now? We have many people joining us throughout + +06:14.280 --> 06:20.920 +the state and should we have a meetup in one city only? So yeah, I think we'll have to + +06:20.920 --> 06:25.400 +experiment and see. Yeah, but it's fun to experiment, it's fun + +06:25.400 --> 06:30.160 +to have. We know that we have interested people all around the world, like that it showed + +06:30.160 --> 06:34.840 +you the type of workshop that we can have and how to run your own, but we already have + +06:34.840 --> 06:39.120 +many workshops around the world. It wasn't the case if you go back three years ago. I + +06:39.120 --> 06:44.720 +think if I'm completely speedboarding now, but I think we had about five user groups + +06:44.720 --> 06:52.520 +worldwide three years ago, and now we must have something like 12, 13, 14 even, which + +06:52.520 --> 06:56.680 +is a massive increase when you think about it. Now that Babin has provided you with the + +06:56.680 --> 07:01.440 +tools to do just the same and start your own workshop, and also you have the buddy system + +07:01.440 --> 07:07.880 +of Andrea that you saw earlier today, you have more options than ever to be able to + +07:07.880 --> 07:13.240 +meet people talking about Emacs. Now, there's obviously EmacsConf as well, which is helping + +07:13.240 --> 07:18.800 +and we have a lot of lovely tools to share with you, but I think it's better or it's + +07:18.800 --> 07:24.120 +a good compliment to have a monthly checkup with people who might feel a little closer + +07:24.120 --> 07:28.920 +to you, either, and closer can have multiple definitions, you know, it can be closer in + +07:28.920 --> 07:34.840 +terms of proficiency with Emacs, or it can be closer geographically, which makes it easier + +07:34.840 --> 07:39.960 +or culturally, which will make it easier to converse with people. We do have a question + +07:39.960 --> 07:44.440 +about hybrid meetings. Do you want to take this one, Babin? It's so related to what we + +07:44.440 --> 07:45.440 +were talking about. + +07:45.440 --> 07:53.800 +Yep, yep, yep, yeah. So I tried it, not with Emacs one, but with the other one I organized. + +07:53.800 --> 07:59.800 +And even I had some thoughts. The only problem is what happens, the people who are joining + +07:59.800 --> 08:07.960 +virtually, they usually end up feeling left out. Because people who are in the room, they + +08:07.960 --> 08:13.640 +might be discussing something face to face, they might have some discussions. The only + +08:13.640 --> 08:21.200 +way I think would work is everyone joins the online link from their own machines. You do + +08:21.200 --> 08:27.680 +your regular meetup discussions. And after that, you have some discussions. Because otherwise, + +08:27.680 --> 08:33.560 +one side or other side will end up feeling left out. Rather than doing it, I'll just + +08:33.560 --> 08:39.160 +keep it one or other, either completely virtual or completely in person. + +08:39.160 --> 08:47.240 +Yeah, I think it is really complicated to do a hybrid stream well. I told you the figures + +08:47.240 --> 08:52.960 +of the people we had, which was roughly between five to 15 people at most in physical venues. + +08:52.960 --> 08:55.800 +Right now, by the way, we should probably say hi to the people in Switzerland who are + +08:55.800 --> 09:03.880 +currently watching Emacs in a very nice, warm room. I'm thinking warm because I'm cold. + +09:03.880 --> 09:07.320 +It's not only warm in terms of the weather inside the room, but also warm in terms of + +09:07.320 --> 09:13.320 +the people around it. Hi, everyone. Hybrid meetings pretty much take the attention + +09:13.320 --> 09:18.880 +of two people entirely. One to manage the physical venue, and one to manage the virtual + +09:18.880 --> 09:24.480 +interactions. And generally, those two people would be core organizers of the events. And + +09:24.480 --> 09:30.520 +that takes a lot of energy. And I think people are a little scared to do such events because + +09:30.520 --> 09:34.360 +you also need to manage webcams, you need to manage presentation, how to take questions, + +09:34.360 --> 09:41.000 +how to relay audio. And frankly, as someone who organizes or helps organize EmacsConf + +09:41.000 --> 09:45.080 +every year, I can tell you that it can be plenty of wrong going on with audio setup, + +09:45.080 --> 09:49.880 +video setup, and making sure that everyone is being listened to. But ultimately, we are + +09:49.880 --> 09:55.560 +sharing these tools. So maybe we could share the tools for EmacsConf for people to actually + +09:55.560 --> 10:00.280 +start running their own workshop. That would be interesting. But please don't send me an + +10:00.280 --> 10:03.680 +email asking for this. I need to rest. + +10:03.680 --> 10:13.760 +So there is one, I think, thought. Yeah, one thought in the IRC. It is about the time it + +10:13.760 --> 10:22.280 +takes for me to organize the meetup. So what I have done is creating the announcement, + +10:22.280 --> 10:29.360 +posting it at least on the website, I have automated it. So at times, even I forget that + +10:29.360 --> 10:36.120 +when is the meetup and all. But my automation takes care of creating the online website + +10:36.120 --> 10:42.760 +entries, announcements and all. So that saves me a lot of time and a lot of cognitive load + +10:42.760 --> 10:53.440 +I should say. I don't have to remember I have to announce it. And what happens is, I do + +10:53.440 --> 11:00.480 +plan to automate more things like announcements on IRC, announcements on Mastodon and stuff. + +11:00.480 --> 11:07.420 +So that will save a lot more time. But usually, that basically means I don't have to do much + +11:07.420 --> 11:12.920 +stuff before the meetup. It's like 15 to 20 minutes. And during the meetup, obviously + +11:12.920 --> 11:19.040 +I attend along with everyone else. And post meetup, it might take more time. But I haven't + +11:19.040 --> 11:26.080 +worked on processing or collecting the video and publishing those. So maybe add more, let's + +11:26.080 --> 11:29.280 +say, 30 minutes or so. So yep. + +11:29.280 --> 11:36.000 +Yeah, there is definitely something to be said about how do we use the workshops to + +11:36.000 --> 11:41.040 +make content that lasts after the workshop. It's a discussion we've been having with some + +11:41.040 --> 11:47.520 +of the workshop organizers. I remember mostly Emacs SF again, and also Emacs Paris. We were + +11:47.520 --> 11:52.760 +talking about, yes, we record the sessions, but we share the sessions only with members + +11:52.760 --> 11:59.440 +of the event. What if we have a really great presentation? It would be such a shame to + +11:59.440 --> 12:05.440 +leave it live merely on the BBB record server where only users can see it. No, it's actually + +12:05.440 --> 12:09.840 +much better if we could find a way to share it on YouTube, for instance, or any other + +12:09.840 --> 12:15.120 +distribution platform where people would be able to share this. With EmacsConf, we share + +12:15.120 --> 12:19.960 +all the talks that happen in prior years. What if we could have user groups and workshops + +12:19.960 --> 12:23.840 +do the same? That would be amazing. But I think people are feeling a little iffy and + +12:23.840 --> 12:28.880 +rightfully so. This is a lot of energy to first make presentations like this for the + +12:28.880 --> 12:36.080 +speakers, but then to package them, to caption them for accessibility. We are able to broadcast + +12:36.080 --> 12:42.000 +talk this year with captions with no little thanks to Bavin, who is actually helping us + +12:42.000 --> 12:47.840 +a lot behind the scenes working on the subtitles. Thank you again so much, Bavin, for all this. + +12:47.840 --> 12:52.020 +You will be the first to tell, this is a lot of work, actually. I'm not sure how much time + +12:52.020 --> 12:58.400 +you've spent in the last two months working on subtitles, but it's been a long time. + +12:58.400 --> 13:03.720 +It does take time. That's why I'm still not sure how much time it will take for me to + +13:03.720 --> 13:09.400 +get those talks or recordings out, right? But as a first step, like I mentioned in the + +13:09.400 --> 13:17.160 +talk as well, just get it out first and then work towards refining it. + +13:17.160 --> 13:24.440 +Yeah, that's the usual saying that good is better than perfect or here and there is better + +13:24.440 --> 13:30.760 +than later and never. I think that's a very good plan here. Bavin, we have about five + +13:30.760 --> 13:35.200 +more minutes until we need to head into the next store. We have opened the chat room, + +13:35.200 --> 13:39.320 +so if people wanted to join and ask questions with Bavin, mostly if you're interested in + +13:39.320 --> 13:43.480 +running your own workshop, this would be a golden opportunity to converse with Bavin + +13:43.480 --> 13:48.160 +and see how you could get started on this. Or maybe if you want to find people interested + +13:48.160 --> 13:53.560 +in starting a workshop, maybe not in BBB today, but it'd be interesting for you to connect + +13:53.560 --> 14:00.440 +on the pad or whatever else really to be able to say, oh yeah, I want to start an Emacs + +14:00.440 --> 14:04.560 +Michigan meeting or whatever. I'm not sure why I defaulted to Michigan, don't ask me. + +14:04.560 --> 14:08.480 +But you would be able to find maybe other people willing to do so and that'd be great. + +14:08.480 --> 14:12.080 +Why don't you stop moving my hands like this? This is the one gesture I'm doing today and + +14:12.080 --> 14:17.760 +I need to pluralize it a little bit. Do we have any more questions on the pad? I think + +14:17.760 --> 14:18.760 +no. + +14:18.760 --> 14:25.800 +Not on pad. I think there are two questions in IRC. I'll just quickly answer them. One + +14:25.800 --> 14:33.320 +is about automation. So I have my repository, the website repository on GitLab and they + +14:33.320 --> 14:40.160 +provide something called pipelines. So you can just schedule things and I have a cronjob + +14:40.160 --> 14:47.880 +you can say sort of on their platform itself, which goes and gets triggered on certain days + +14:47.880 --> 14:57.920 +and my script basically takes care of publishing a new blog entry basically. And there was + +14:57.920 --> 15:08.280 +one question, what is iLuxy? So it is a new Linux user group from Chennai, India. So yeah, + +15:08.280 --> 15:15.080 +I think I've been using their mailing list and there have been a couple of people from + +15:15.080 --> 15:23.160 +that part of the country who joined the meetup as well. + +15:23.160 --> 15:28.240 +And we're definitely trying to make Emacs user group a thing. Like Lug, Linux user group + +15:28.240 --> 15:33.520 +has been a thing for decades at this point. And if only we could manage to make, I mean, + +15:33.520 --> 15:41.760 +the thing it doesn't sound as well, a huge, probably the worst argument in its favor really, + +15:41.760 --> 15:47.000 +but Emacs user group feels like it should be something that is widely adopted as much + +15:47.000 --> 15:51.240 +as Linux user groups. Because when you think about it, whether it be Linux or whether it + +15:51.240 --> 15:57.080 +be Emacs, those groups are where a lot of people get to experiment with those tools + +15:57.080 --> 16:02.600 +and learn, especially a lot of beginners who make it to those meetings. They get propelled + +16:02.600 --> 16:07.200 +in the future in terms of how much they learn and it's so much better. You probably heard + +16:07.200 --> 16:13.000 +more about this in the Android talk we had earlier today. Right, I'm blabbering on about, + +16:13.000 --> 16:18.960 +but it's a topic very dear to my heart and I'm so glad that you managed to feel sorry + +16:18.960 --> 16:26.080 +a topic and a presentation. Sorry, I'm mixing up everything there. + +16:26.080 --> 16:33.140 +We will soon be moving on to the next stream. So I see that we have a couple of people still + +16:33.140 --> 16:38.120 +on BBB, but no one with a microphone. So again, when we open the BBB chat room, if you want + +16:38.120 --> 16:42.800 +to join and ask questions, it's all the better. It's good if you want to join and listen, + +16:42.800 --> 16:47.520 +but we need people to actually be asking questions because that's when we have the speaker in + +16:47.520 --> 16:52.400 +one room and you can gather all the questions. I'm going to give you a little secret. If + +16:52.400 --> 16:56.360 +sometimes it doesn't sound like I'm making any sense, it's because on one here, I am + +16:56.360 --> 17:00.520 +listening to Bavin. That's the left here. On the right here, I'm listening to production + +17:00.520 --> 17:07.640 +and sometimes stuff is burning in the background and I have to take a deep breath and focus + +17:07.640 --> 17:12.120 +on, for instance, everyone is talking in my ear. It's really complicated. So what I'll + +17:12.120 --> 17:16.880 +be doing is that in about 1 minute and 20 seconds, we'll be moving into the next talk. + +17:16.880 --> 17:21.480 +Bavin, thank you so much for taking the time to answer all the questions. You'll probably + +17:21.480 --> 17:24.960 +be sleeping fairly soon, right? + +17:24.960 --> 17:31.880 +Yeah, please help us in the backstage. But yes, thank you so much for all your help. + +17:31.880 --> 17:36.000 +Thank you for your presentation. As for the others, we are about to move to the next talk + +17:36.000 --> 17:40.840 +in about 1 minute. So it's going to be a bit of an awkward pause again. Sorry for this, + +17:40.840 --> 17:46.800 +but at the top of the next minute, we'll be starting the next talk. See you in a bit, + +17:46.800 --> 17:49.400 +I suppose. Thank you again, Bavin. + +17:49.400 --> 17:53.760 +Thank you. Thank you for organizing the event. It has been fun. + +17:53.760 --> 17:54.880 +Thank you for participating in it. + diff --git a/2022/captions/emacsconf-2022-orgsuperlinks--linking-headings-with-orgsuperlinks-poormans-zettelkasten--karl-voit--answers.vtt b/2022/captions/emacsconf-2022-orgsuperlinks--linking-headings-with-orgsuperlinks-poormans-zettelkasten--karl-voit--answers.vtt new file mode 100644 index 00000000..f9ec7319 --- /dev/null +++ b/2022/captions/emacsconf-2022-orgsuperlinks--linking-headings-with-orgsuperlinks-poormans-zettelkasten--karl-voit--answers.vtt @@ -0,0 +1,611 @@ +WEBVTT + +00:00.000 --> 00:09.660 +About five seconds until we go live. + +00:09.660 --> 00:10.660 +And we are live! + +00:10.660 --> 00:11.660 +Hello again! + +00:11.660 --> 00:15.580 +It's the first time you're seeing me today, and hopefully you're still laughing from + +00:15.580 --> 00:18.940 +the little joke Carl had at the end of his talk. + +00:18.940 --> 00:20.940 +Hi Carl, how are you doing? + +00:20.940 --> 00:26.260 +I'm fine thanks, how are you doing? + +00:26.260 --> 00:29.700 +I'm doing pretty fine, but I am currently struggling to make my windows slightly larger + +00:29.700 --> 00:31.240 +because what am I doing? + +00:31.240 --> 00:34.920 +Okay, okay, I think people can see me relatively well right now. + +00:34.920 --> 00:38.120 +Yeah, I am doing well, and thank you for the joke. + +00:38.120 --> 00:42.960 +It feels like when I see people wearing suits during a BBB presentation, or sorry, not a + +00:42.960 --> 00:47.880 +BBB presentation, an EmacsConc presentation, I feel like it's a reply to my own style and + +00:47.880 --> 00:48.880 +I feel attacked. + +00:48.880 --> 00:53.200 +But I will just confirm, how do I do this without making too much of a fool, I will + +00:53.200 --> 01:00.260 +lower my standing desk, and you can see that I am actually wearing trousers. + +01:00.260 --> 01:04.000 +So yes, I am wearing socks and sandals because it's really cold right now and it's very comfortable + +01:04.000 --> 01:05.000 +as well. + +01:05.000 --> 01:11.580 +Don't ask me on this, but I am technically more dressed than you are. + +01:11.580 --> 01:17.580 +Well this was a lederhose, actually a quite nice lederhose, which you wear for specific + +01:17.580 --> 01:18.580 +occasions. + +01:18.580 --> 01:23.440 +It's not considered as something special. + +01:23.440 --> 01:28.320 +No, definitely, but it is looking a little bit odd to my French style. + +01:28.320 --> 01:32.400 +Yeah, especially the combination, yes, you're right. + +01:32.400 --> 01:36.680 +Right, we could be talking about hours for this, but I suppose people are not actually + +01:36.680 --> 01:39.720 +here to hear us talk about this, but about you talk. + +01:39.720 --> 01:44.720 +I'm not going to make the affront of asking if you've got the pad open, considering that + +01:44.720 --> 01:48.520 +you have been managing the pad and helping us manage the pad for what, three years now, + +01:48.520 --> 01:49.520 +or something? + +01:49.520 --> 01:57.240 +Yeah, but this year, actually, it's doing great without my help, so yeah. + +01:57.240 --> 02:00.100 +Actually there are already two answers. + +02:00.100 --> 02:04.360 +Somebody was nice enough to copy my answers from the IRC to here. + +02:04.360 --> 02:10.440 +Can you filter out blocked tasks on stuff like your agenda, on specific agenda view, + +02:10.440 --> 02:14.920 +when you want to know what you can do next? + +02:14.920 --> 02:20.120 +That's a tricky question. + +02:20.120 --> 02:25.280 +The blocked tasks are never shown on the agenda by default. + +02:25.280 --> 02:36.200 +Whenever there is no scheduled timestamp attached to a heading, it's not visible on my agenda. + +02:36.200 --> 02:43.400 +If you use the dependencies, as I described it in the demo, you will see that the scheduled + +02:43.400 --> 02:51.520 +timestamp, or date stamp, is only added when the previous one is marked as done, or canceled. + +02:51.520 --> 02:57.480 +So therefore, blocked tasks are never shown on the agenda by default, if you use it in + +02:57.480 --> 03:01.520 +this, in that way. + +03:01.520 --> 03:06.720 +The functionality seems quite nice, but the markup seems pretty heavy in the property + +03:06.720 --> 03:07.720 +drawers. + +03:07.720 --> 03:17.320 +Do you ever have any issues having so much meta-level information? + +03:17.320 --> 03:27.960 +No, as long as I don't have to type it manually, I don't see any issue at all, so far. + +03:27.960 --> 03:35.000 +Because I tend to have very, rather large org-mode files in any way. + +03:35.000 --> 03:41.840 +So far, I haven't thought of, oh my gosh, this is so bloated, I need to simplify it. + +03:41.840 --> 03:45.320 +Not yet. + +03:45.320 --> 03:52.360 +Looking for the IRC, if there is something going on. + +03:52.360 --> 03:56.120 +If not, we'll be able to, because this is the showdown people were waiting. + +03:56.120 --> 04:02.720 +Two years ago, you wrote an article about Algrom not being good, and I'm being polite. + +04:02.720 --> 04:05.160 +We need to fight this out right now. + +04:05.160 --> 04:07.000 +Yeah, sure. + +04:07.000 --> 04:18.120 +Actually, I do think that Zettelkasten methods are interesting, but so far, I haven't seen + +04:18.120 --> 04:21.400 +much use in my personal use. + +04:21.400 --> 04:26.960 +But I can imagine that, for example, if you're working on a PhD thesis, or you're studying + +04:26.960 --> 04:31.780 +in some research field and so forth, it's quite handy. + +04:31.780 --> 04:40.800 +The only thing my concept so far doesn't have what the usual Zettelkasten methods do provide + +04:40.800 --> 04:46.960 +is this visual navigation method, which I would not use anyway. + +04:46.960 --> 04:53.960 +So I don't see any purpose at all for Zettelkasten methods for my personal use cases, as long + +04:53.960 --> 05:01.160 +as I don't think that this visual navigation would be very handy in my case. + +05:01.160 --> 05:07.880 +I'm very happy with the bidirectional links, because they get me from A to B, and I can + +05:07.880 --> 05:12.700 +connect ideas and headings and tasks and whatnot. + +05:12.700 --> 05:20.440 +So this is basically the most important part of Zettelkasten method from my perspective. + +05:20.440 --> 05:26.880 +And this is what these bidirectional links and dependencies provide for me in my personal + +05:26.880 --> 05:27.880 +setup. + +05:27.880 --> 05:34.080 +Yeah, and I was taking a jab at it, because even you, with your own article, you were + +05:34.080 --> 05:41.080 +saying how, you know, it's a title to grab attention, but actually you had a lot of things + +05:41.080 --> 05:42.080 +Yeah, it was trick-based. + +05:42.080 --> 05:48.200 +Yeah, I didn't want to say the word, you know, I'm trying to be, like, I didn't read the + +05:48.200 --> 05:51.960 +actual title that should title the article. + +05:51.960 --> 05:55.760 +But yeah, I think you were also interested in what we were discussing yesterday. + +05:55.760 --> 06:00.240 +I can't remember which talk, because we had a number of org talks, but when I was discussing + +06:00.240 --> 06:05.680 +in one of the Q&A the concept of a slip box for multiple peoples, you seemed to be interested + +06:05.680 --> 06:07.800 +in this topic as well. + +06:07.800 --> 06:08.800 +Yes. + +06:08.800 --> 06:15.440 +Yeah, my personal interest is in personal information management, but collaborative + +06:15.440 --> 06:20.540 +information management is of course a very related and important part, and I have some + +06:20.540 --> 06:27.240 +background by writing a PhD thesis on organizing information and files and whatnot, and therefore + +06:27.240 --> 06:37.460 +I'm interested in the ideas how to make a collaborative, let's say, something that might + +06:37.460 --> 06:42.200 +actually work within a work group or even larger. + +06:42.200 --> 06:49.960 +There are some things that overlap between personal information management and collaborative, + +06:49.960 --> 07:01.680 +for example, I'm sure you know the vocabulary problem, where people do have different mental + +07:01.680 --> 07:08.520 +models of the same stuff, so therefore finding one common phrase or one common word is a + +07:08.520 --> 07:15.200 +difficult task to do, and you get these kind of troubles all over the place if you go into + +07:15.200 --> 07:16.680 +that direction. + +07:16.680 --> 07:23.560 +Yeah, this is why I think just like a lot of software solutions, they need to be backed + +07:23.560 --> 07:25.720 +up by strong methodology on the side. + +07:25.720 --> 07:30.080 +It feels like it's always a balance when you have the tools that are helping you enable + +07:30.080 --> 07:39.160 +something like Emacs, like Org, like Zorcast, EL, Orgrom, or any kind of the, I don't want + +07:39.160 --> 07:44.040 +to say Orgrom clone, it's like Dark Souls, when everything becomes a Dark Souls clone, + +07:44.040 --> 07:50.840 +that's not the point, we have Zorcast and modes in Emacs that allow you to do this no-taking, + +07:50.840 --> 07:51.840 +so that's the tools. + +07:51.840 --> 07:55.960 +And then you have the methods on the other end, which are about how do you use those + +07:55.960 --> 08:00.800 +tools to work with multiple people, we're only talking about collective sandbox here. + +08:00.800 --> 08:06.760 +And yeah, there is obviously the vocabulary discussion, the point that Carl just mentioned, + +08:06.760 --> 08:11.200 +there are some solutions methodologically, like you can have a taxonomy of all the words + +08:11.200 --> 08:16.760 +you're using, if you have a list of patterns, for instance, it's good to fix the language + +08:16.760 --> 08:21.600 +within a file, so that you can have something that people can read. + +08:21.600 --> 08:27.840 +It's kind of like, you have dictionaries, obviously, but it reminds me of some very + +08:27.840 --> 08:32.720 +specific dictionaries, like the hacker dictionary, when you have a lot of entries, where people + +08:32.720 --> 08:38.200 +can learn the lingua, how to use the internet, how to chat on IOC, stuff like this, it feels + +08:38.200 --> 08:45.320 +like a group sandbox is always going to be oriented towards solving a particular project, + +08:45.320 --> 08:49.600 +I think, and I think taxonomy and vocabulary would be very important to have. + +08:49.600 --> 08:54.280 +Anyway, I don't want to take too much, this is a very interesting topic, obviously, you + +08:54.280 --> 09:00.080 +wrote a PhD on it, and I wrote software on it, and you've wrote software on it as well, + +09:00.080 --> 09:06.640 +but we should probably talk about this later, at least, but maybe come up with something + +09:06.640 --> 09:08.640 +to present in a year or so. + +09:08.640 --> 09:09.640 +Okay. + +09:09.640 --> 09:17.480 +So, somebody wrote the BBB is not open yet, I don't know if it's on purpose or not. + +09:17.480 --> 09:18.480 +I'll do this now. + +09:18.480 --> 09:21.640 +You'll see me whisper, you'll see something very fancy, look at me, I'm going to press + +09:21.640 --> 09:24.600 +the button, you're going to see something appear at the bottom to talk to production, + +09:24.600 --> 09:30.440 +this is the thing that I've developed since yesterday, it's amazing, wasn't it? + +09:30.440 --> 09:32.840 +This was technology, right there. + +09:32.840 --> 09:37.320 +So yes, the BBB will be open in about 30 seconds to one minute. + +09:37.320 --> 09:42.080 +And people, it's the first one of the day, so I'll do the reminder. + +09:42.080 --> 09:48.440 +In order to join us in a room right now, where I'm talking with Carl, you will need to go + +09:48.440 --> 09:56.280 +to the talk page, so you can find all the talks on emaskov.org-2022. + +09:56.280 --> 10:02.000 +Then you find the talk by Carl Voigt, you can look for his name, you click on the link + +10:02.000 --> 10:06.800 +over there and at the top you will have a link to the BBB room in which we are currently. Also + +10:06.800 --> 10:13.840 +if you're on IRC you will just have gotten a notification about joining the room. So in the + +10:13.840 --> 10:18.400 +meantime Carl, how about we answer some of the new questions that you have on the pad whilst people + +10:18.400 --> 10:29.680 +get warmed up. Sure. So the next one, does this change how you use to-do keywords next to do + +10:29.680 --> 10:40.880 +blocked? Avoiding some or starting to use others? No. I don't see any connection. And my keywords + +10:40.880 --> 10:56.160 +are next, oops, next, started, waiting, done, cancelled. That's basically it if you're interested. + +10:56.160 --> 11:02.800 +But my configuration is online anyway. I can paste the link later. And yes, I can paste the link to + +11:02.800 --> 11:12.880 +my thesis as well as ask on the IRC. Carl, if you don't mind, I do have a quick question because + +11:12.880 --> 11:19.360 +I'm going to forget otherwise. We have someone in IRC asking you, is your PhD published? I'm not a + +11:19.360 --> 11:26.560 +PhD but your thesis is published. Yes, of course. Everything of my PhD is public including the actual + +11:26.560 --> 11:33.760 +research work, the hard figures of the user experiments and the derived functions, everything + +11:33.760 --> 11:41.920 +of course. The later one actually should be also in org mode so 100% reproducible which was very + +11:41.920 --> 11:47.200 +important to me. Would you have a link, so maybe not right now but in the pad, could you include a + +11:47.200 --> 11:53.760 +link later on? I've already wrote down a question for that on my own so that I don't forget to + +11:53.760 --> 11:58.240 +answer it afterwards. Okay, amazing. Thank you. You can continue with the questions. We also have + +11:58.240 --> 12:02.400 +people joining on. I see microphones now and some of the people joining on BBB so I'm excited. I'm + +12:02.400 --> 12:07.680 +getting ready for your questions. But in the meantime, Carl, feel free to go. I'm answering + +12:07.680 --> 12:15.200 +all the questions in the pad anyway so if somebody is asking something in the BBB, I'm open to it. + +12:15.200 --> 12:21.360 +Right, there is just one other thing I need to say. We need to move with the next talk in about + +12:21.360 --> 12:27.440 +eight minutes. So, Carl, if you could maybe not rush but answer fairly quickly the last questions + +12:27.440 --> 12:35.680 +on the pad, then we can move on to live Q&A inside BBB. Sure. OrgBrain has stuff like parent links + +12:35.680 --> 12:40.560 +and directional links, sibling links, and if org.roam.else had nothing else interesting, + +12:40.560 --> 12:48.560 +what about, like, the previous stuff? I'm going to be honest, I'm not sure what the previous stuff + +12:48.560 --> 12:59.360 +was either. So, referring to side window, where it's not only the linked heading, so not only the + +12:59.360 --> 13:08.240 +link is shown but actually some heading title and short contents below it. So, that's very handy + +13:08.240 --> 13:13.520 +when you are looking, like, or is it relevant, or it's not relevant. + +13:16.720 --> 13:25.040 +To me, it's not relevant at the moment. I don't have the requirement for specific link types + +13:25.760 --> 13:32.080 +or directions. I like how, Carl, you feel obligated to write and speak at the same time. + +13:32.080 --> 13:36.240 +Like, you can let go of your responsibility as the pad. We have another volunteer helping you + +13:36.240 --> 13:42.000 +with the pad right now, so don't worry about it. Perfect. So, do you find that the links are fragile, + +13:42.000 --> 13:50.080 +hard to maintain? No, not at all. The only thing that I have to remark here is probably that + +13:50.080 --> 13:58.640 +sometimes I rename the links when the heading actually was renamed afterward and the link name + +13:58.640 --> 14:06.640 +isn't reflecting the actual heading. Then I do a quick search and replace all of my Org Mode files, + +14:06.640 --> 14:13.840 +but that's basically it. So, no, I really love the bi-directional and uni-directional links, + +14:14.640 --> 14:23.440 +and it doesn't give me any burden to maintain them. Would it be of interest to, like, make auto + +14:23.440 --> 14:35.840 +description for links in Org? You have an ID, you don't have any description, but then + +14:35.840 --> 14:44.240 +description is generated automatically. My IDs are auto-generated and they are generated from + +14:44.240 --> 14:50.880 +the heading title, so usually my links are pretty much self-explanatory. + +14:50.880 --> 14:58.640 +Oh, so what you're referring to is that you have a link, then you rename the linked heading, + +14:58.640 --> 15:05.440 +and then you change the link ID. Oh yeah, that's true. Links are not synchronized with their + +15:05.440 --> 15:15.120 +headings once they are generated, but usually a heading title is not changed that often by me, + +15:15.120 --> 15:24.960 +so this is not a really important problem in my use cases. PhD thesis unlinked later. + +15:24.960 --> 15:33.440 +Why not Org UUIDs for IDs and the Preferences human-readable ones? Yeah, I hate UUIDs because + +15:33.440 --> 15:42.640 +they tell me nothing at all, so I want to get an idea to what I'm linking to. Therefore, I've got + +15:42.640 --> 15:52.800 +rid of all UUIDs in my setup and I prefer something that gives me as a user an idea of + +15:52.800 --> 16:04.000 +what's happening when I open up this link. Sorry, have you been able to hear me? Is it + +16:04.000 --> 16:10.000 +the first OTS mic of the conference? Wow, this is amazing. I was mispressing the button, I think. + +16:10.000 --> 16:14.320 +I apologize humbly, deeply, and sincerely about the hot mic. No problem. + +16:19.360 --> 16:26.640 +Do you have or use anything for what links here to this heading in a more occurred grep style + +16:26.640 --> 16:36.560 +buffer and auto? No, not yet. I'm not using that, but I may be able to what links to here + +16:36.560 --> 16:42.480 +by looking for the ID. All the heading IDs start with a date stamp and then a + +16:43.440 --> 16:52.160 +string which is made up from the heading title. If I want to see what links to this specific heading + +16:52.160 --> 17:01.200 +without having backlinks, I usually use org occur within the buffer and get the result right away. + +17:01.200 --> 17:08.640 +All right, I'm just going to give you, I have the bad role here, I have to be the man with + +17:08.640 --> 17:14.320 +the watch telling you that we have about three minutes left in this talk and afterwards we'll + +17:14.320 --> 17:18.240 +need to move on to the next one. So you have about two minutes. Carla, I didn't ask you if + +17:18.240 --> 17:22.640 +you had anything else to add over your talk. I wish we had more time to discuss because it's + +17:22.640 --> 17:26.400 +a very interesting topic, but sadly we will have to get going with the next talk in two minutes. + +17:26.400 --> 17:33.280 +So the next two minutes are yours. I continue answering questions on the + +17:33.280 --> 17:46.720 +pad of course and you'll see me around on the IRC. I'm still around in IRC. I will answer all + +17:46.720 --> 17:54.400 +the questions on the pad even after we continue and everybody who wants to get in touch and talk + +17:54.400 --> 18:01.920 +about this stuff may find me on the internet. Sure, there is still the nebulous concept. + +18:01.920 --> 18:07.520 +Every Microsoft says we should have a meeting room for maintainers or for people well invested + +18:07.520 --> 18:14.000 +into org and melpa stuff and package writing because it feels like if we have so many ideas + +18:14.640 --> 18:18.640 +and so far the only person who's been able to implement every single idea they have is + +18:18.640 --> 18:25.600 +Alfa Papa because I have no idea how they do it. That's actually a group of people I think. + +18:26.640 --> 18:33.440 +Yes, we need to check if Alfa Papa appeared in two different rooms at the same time. I need to + +18:33.440 --> 18:42.000 +confirm this for my own sanity. But yeah, barring Adam from being able to do this, we have so many + +18:42.000 --> 18:46.400 +ideas and it feels like if we were talking about them with other people we might be able to implement. + +18:46.400 --> 18:49.760 +I've been asking about the cloning machine so maybe Alfa Papa got one. + +18:51.200 --> 18:56.560 +Yeah, well anyway I'm sorry for cutting the conversation a little short but we will have + +18:56.560 --> 19:02.480 +to get started with the next talk. So thank you so much Karl for taking the time first to send a + +19:02.480 --> 19:07.440 +recording to us for answering questions now and also for being a volunteer for eMaximum. Thank + +19:07.440 --> 19:14.000 +you so much for all of those three things. Oh, you're welcome. We will probably see you next + +19:14.000 --> 19:20.160 +year. I am now definitely set on expecting a Cardboard talk every year and you will have to + +19:20.160 --> 19:25.600 +top it next year. I'm not sure what you will find to make the end funny but you have set the bar + +19:25.600 --> 19:31.840 +quite high and you need to go even higher this time. Next time without the Leda Jose oil. + +19:33.280 --> 19:38.240 +As long as you don't show up, put more clothes, not fewer garments, please. + +19:38.240 --> 19:45.520 +We will have to get started with the next talk. Thank you so much Karl. No, I'm sorry. We need to + +19:45.520 --> 19:49.760 +get moving to the next talk. I'll be closing the BBB room and we'll start with the next talk at + +19:49.760 --> 19:58.160 +the top of the minute in 30 seconds. Bye-bye everyone. Bye. All right, we are not live anymore. + +19:58.160 --> 20:01.920 +Thank you so much Karl. I have to get going. We need to make sure everything works now. + +20:01.920 --> 20:07.840 +Sure. Bye. Bye-bye. + diff --git a/2022/captions/emacsconf-2022-orgvm--orgvm-a-simple-http-server-for-org--corwin-brust--answers.vtt b/2022/captions/emacsconf-2022-orgvm--orgvm-a-simple-http-server-for-org--corwin-brust--answers.vtt new file mode 100644 index 00000000..7f9550b2 --- /dev/null +++ b/2022/captions/emacsconf-2022-orgvm--orgvm-a-simple-http-server-for-org--corwin-brust--answers.vtt @@ -0,0 +1,2348 @@ +WEBVTT + +00:00:00.000 --> 00:00:26.000 + [MUSIC PLAYING] + +00:00:26.000 --> 00:00:36.000 + [MUSIC PLAYING] + +00:00:36.000 --> 00:00:42.480 + And so this little application-- + +00:00:42.480 --> 00:00:46.480 + well, I'll skip that and just kind of jump right + +00:00:46.480 --> 00:00:49.760 + into my thesis for those of you that + +00:00:49.760 --> 00:00:53.360 + might be planning to duck out for the RMS talk, + +00:00:53.360 --> 00:00:55.520 + starting in a little bit. + +00:00:55.520 --> 00:00:59.360 + So essentially, my thesis here is really + +00:00:59.360 --> 00:01:04.800 + that the Emacs toolchain can easily + +00:01:04.800 --> 00:01:10.280 + be combined with other skills and used in kind of a Unix + +00:01:10.280 --> 00:01:13.280 + paradigm of having sort of different tools + +00:01:13.280 --> 00:01:14.960 + to do different steps. + +00:01:14.960 --> 00:01:17.760 + We might actually use the same tool + +00:01:17.760 --> 00:01:19.240 + to implement a couple of steps. + +00:01:19.240 --> 00:01:22.080 + But with that paradigm, each step + +00:01:22.080 --> 00:01:24.960 + is an individual item that can be sort of dropped in + +00:01:24.960 --> 00:01:26.400 + and replaced. + +00:01:26.400 --> 00:01:29.560 + So over the course of the talk, hopefully I'll + +00:01:29.560 --> 00:01:31.080 + come back to that thesis. + +00:01:31.080 --> 00:01:35.800 + But I'll now jump back and start walking through what is + +00:01:35.800 --> 00:01:37.040 + orgvm? + +00:01:37.040 --> 00:01:39.560 + So this is a very simple proof of concept program. + +00:01:39.560 --> 00:01:44.200 + We'll just jump over to perhaps a prettier view of the + +00:01:44.200 --> 00:01:44.880 + source + +00:01:44.880 --> 00:01:45.520 + code for it. + +00:01:45.520 --> 00:01:49.200 + This is implemented-- oops. + +00:01:49.200 --> 00:01:53.160 + There's some cruft, I think, in my local. + +00:01:53.160 --> 00:01:56.560 + All right, so there's config block at the top. + +00:01:56.560 --> 00:01:58.120 + And we'll be jumping back and forth + +00:01:58.120 --> 00:02:01.880 + between the code and the documentation. + +00:02:01.880 --> 00:02:04.080 + So the first thing I want to point out + +00:02:04.080 --> 00:02:05.960 + is that this is written in Node.js. + +00:02:05.960 --> 00:02:08.600 + But I think you'll find it'd be pretty trivial to implement + +00:02:08.600 --> 00:02:10.840 + in any language. + +00:02:10.840 --> 00:02:13.960 + Certainly, you're more than welcome to use this. + +00:02:13.960 --> 00:02:17.920 + I'd be happy to accept your patches or feature requests + +00:02:17.920 --> 00:02:20.080 + and things like that. + +00:02:20.080 --> 00:02:21.680 + Of course, bug reports. + +00:02:21.680 --> 00:02:25.760 + But I'd also encourage others to roll their own. + +00:02:25.760 --> 00:02:28.760 + You might well come up with a different version of this + +00:02:28.760 --> 00:02:29.600 + that's even cooler. + +00:02:29.600 --> 00:02:32.160 + And we can learn from each other. + +00:02:32.160 --> 00:02:34.200 + If you heard one of my talks before, + +00:02:34.200 --> 00:02:36.200 + you probably recognize a common theme. + +00:02:36.200 --> 00:02:40.320 + I'm a big fan of head-first development + +00:02:40.320 --> 00:02:43.540 + as a way to get invested in both the tool chain and a + +00:02:43.540 --> 00:02:44.120 + culture. + +00:02:44.120 --> 00:02:49.560 + All right, so let's come back to orgvm. + +00:02:49.560 --> 00:02:52.280 + First of all, we'll start with the itch I was trying to + +00:02:52.280 --> 00:02:52.840 + scratch. + +00:02:52.840 --> 00:02:58.240 + I wanted to be able to quickly use a web browser + +00:02:58.240 --> 00:03:00.680 + to browse my org documents. + +00:03:00.680 --> 00:03:03.530 + It's particularly handy when the documents are full of + +00:03:03.530 --> 00:03:03.960 + cross + +00:03:03.960 --> 00:03:05.640 + links to each other. + +00:03:05.640 --> 00:03:10.080 + That meant I wanted to automatically export, + +00:03:10.080 --> 00:03:12.280 + particularly to HTML. + +00:03:12.280 --> 00:03:17.280 + But it made sense for me to include Markdown, PDF, + +00:03:17.280 --> 00:03:18.880 + or whatever format I want. + +00:03:18.880 --> 00:03:22.760 + Because many times, I'm going to look at that file + +00:03:22.760 --> 00:03:29.480 + and then pop it into an email or upload it somewhere. + +00:03:29.480 --> 00:03:33.240 + And then finally, it should be, therefore, + +00:03:33.240 --> 00:03:36.840 + pretty easy to download the document rather than view it + +00:03:36.840 --> 00:03:38.320 + once I'm done. + +00:03:38.320 --> 00:03:42.200 + So let's just run a quick demo. + +00:03:42.200 --> 00:03:44.760 + You'll see I'm still a Windows user. + +00:03:44.760 --> 00:03:45.960 + Yeah, I'm working on it. + +00:03:45.960 --> 00:03:52.320 + So all right, first thing that we're going to do + +00:03:52.320 --> 00:03:53.320 + is fire up the program. + +00:03:53.320 --> 00:04:00.200 + Actually, for simplicity, let's just + +00:04:00.200 --> 00:04:01.760 + admit we live in a DOS world. + +00:04:01.760 --> 00:04:19.760 + And as you can see, there's not much to it + +00:04:19.760 --> 00:04:21.520 + to get the application running. + +00:04:22.680 --> 00:04:22.680 + + +00:04:22.680 --> 00:04:25.960 + So with that done, then, I can run out to my local host. + +00:04:25.960 --> 00:04:36.780 + And we'll just start by plugging in the name of an org file + +00:04:36.780 --> 00:04:37.560 +. + +00:04:37.560 --> 00:04:45.820 + So I've got a little org file that I prepared that just + +00:04:45.820 --> 00:04:46.640 + kind + +00:04:46.640 --> 00:04:49.040 + of provides a proof of concept to this. + +00:04:49.040 --> 00:04:53.560 + And you can see, as imagined, we're automatically + +00:04:53.560 --> 00:04:54.640 + turning that org file. + +00:04:54.640 --> 00:04:56.320 + Let's just take a quick look at it. + +00:04:56.320 --> 00:05:10.280 + And here's that file now. + +00:05:10.280 --> 00:05:11.960 + But you can see nothing up my sleeve. + +00:05:11.960 --> 00:05:14.000 + This is a very basic org file that I + +00:05:14.000 --> 00:05:16.560 + use for testing this program. + +00:05:16.560 --> 00:05:17.640 + Images work. + +00:05:17.640 --> 00:05:21.800 + We've got some nicely syntax highlighted code + +00:05:21.800 --> 00:05:25.560 + blocks in a couple different languages. + +00:05:25.560 --> 00:05:29.760 + And not really that much going on there. + +00:05:29.760 --> 00:05:33.760 + All right, let's come back to the documentation. + +00:05:33.760 --> 00:05:36.680 + I pretty well covered this, I think. + +00:05:36.680 --> 00:05:39.720 + But you'll need a relatively recent version of Emacs. + +00:05:39.720 --> 00:05:43.640 + I haven't taken any pains to make this backward compatible. + +00:05:43.640 --> 00:05:46.000 + To be fair, I haven't tested it extensively. + +00:05:46.000 --> 00:05:50.320 + It may well work on Emacs 26 or older versions. + +00:05:50.320 --> 00:05:55.120 + I'm personally running 27.1 and 28, + +00:05:55.120 --> 00:05:57.080 + as well as recent builds of 29. + +00:05:57.080 --> 00:06:02.560 + There's some quick start instructions here, + +00:06:02.560 --> 00:06:03.900 + which I'm going to take as read. + +00:06:03.900 --> 00:06:09.160 + You probably saw the key element of this, which + +00:06:09.160 --> 00:06:11.920 + involves starting the program. + +00:06:11.920 --> 00:06:13.520 + You do-- I will call out Yale. + +00:06:13.520 --> 00:06:15.320 + If you're trying to play with this yourself, + +00:06:15.320 --> 00:06:20.080 + don't forget to run the npm install command. + +00:06:20.080 --> 00:06:23.240 + That'll bring in express.js, which the JavaScript we're + +00:06:23.240 --> 00:06:24.920 + about to look at is built on. + +00:06:24.920 --> 00:06:33.480 + So let's just take a look at the usage patterns real quick. + +00:06:33.480 --> 00:06:35.920 + To use this, we're simply giving the document name + +00:06:35.920 --> 00:06:42.760 + without the org extension in whatever file path-- + +00:06:42.760 --> 00:06:46.960 + or I'm sorry, whatever we've configured the server + +00:06:46.960 --> 00:06:50.800 + to run on, in this case, port 3000. + +00:06:50.800 --> 00:06:52.960 + I also want to call attention to the fact + +00:06:52.960 --> 00:06:55.880 + that nothing in this program protects you + +00:06:55.880 --> 00:06:57.240 + from damaging yourself. + +00:06:57.240 --> 00:07:00.560 + This isn't meant as a production capability. + +00:07:00.560 --> 00:07:03.290 + This is something that's used to publish your own note + +00:07:03.290 --> 00:07:04.840 + files + +00:07:04.840 --> 00:07:06.520 + and roll them up to yourself. + +00:07:06.520 --> 00:07:08.680 + That's something I'll definitely look at adding, + +00:07:08.680 --> 00:07:12.240 + but I want people to be careful of it + +00:07:12.240 --> 00:07:14.720 + while this is in an alpha state. + +00:07:14.720 --> 00:07:22.960 + So the default response is HTML, and we saw that here. + +00:07:22.960 --> 00:07:26.240 + But we also can modify the response format. + +00:07:26.240 --> 00:07:29.800 + We're currently supporting HTML, Markdown, and PDF. + +00:07:29.800 --> 00:07:34.280 + And that's really enough to select a different format. + +00:07:34.280 --> 00:07:36.640 + That's really nothing more than adding-- + +00:07:36.640 --> 00:07:45.040 + [AUDIO OUT] + +00:07:45.040 --> 00:07:48.040 + --type, OK. + +00:07:48.040 --> 00:07:50.680 + Not sure what's going on there. + +00:07:50.680 --> 00:07:57.080 + OK, well, there goes my demo. + +00:07:57.080 --> 00:07:59.440 + Shows me for doing my talk live. + +00:08:03.920 --> 00:08:06.960 + But this, fortunately, this error message + +00:08:06.960 --> 00:08:08.840 + is a nice segue to the part of the talk + +00:08:08.840 --> 00:08:10.240 + that I'd really like to focus on, + +00:08:10.240 --> 00:08:13.520 + hopefully bringing me back to that thesis. + +00:08:13.520 --> 00:08:17.760 + So as we start to look at code, what we're looking for + +00:08:17.760 --> 00:08:21.640 + is really this Emacs Lisp that's getting generated here. + +00:08:21.640 --> 00:08:24.000 + And you'll notice that's the stuff + +00:08:24.000 --> 00:08:27.600 + I thought was important to produce as diagnostics + +00:08:27.600 --> 00:08:29.840 + for the programs running as well. + +00:08:29.840 --> 00:08:34.000 + So spoiler, this e-lisp is dynamically + +00:08:34.000 --> 00:08:35.400 + generated by the program. + +00:08:35.400 --> 00:08:38.160 + And that's really the core of the way + +00:08:38.160 --> 00:08:42.680 + org VM or my org VM works. + +00:08:42.680 --> 00:08:47.360 + So this should look pretty similar to the view of the code + +00:08:47.360 --> 00:08:48.880 + we had a moment ago. + +00:08:48.880 --> 00:08:51.840 + You can see I've got some bases. + +00:08:51.840 --> 00:08:53.680 + This is all hard-coded into the program, + +00:08:53.680 --> 00:08:56.720 + nothing fancy going on here. + +00:08:56.720 --> 00:09:00.280 + The debug is simply controlling that diagnostic output + +00:09:00.280 --> 00:09:01.560 + that we looked at. + +00:09:01.560 --> 00:09:04.240 + There's some other, hopefully fairly self-explanatory + +00:09:04.240 --> 00:09:09.160 + programs or properties, where to find Emacs and so forth. + +00:09:09.160 --> 00:09:16.320 + And then finally, we come in to the meat of it, + +00:09:16.320 --> 00:09:21.840 + the variables that are used to control what e-lisp we + +00:09:21.840 --> 00:09:24.280 + can generate dynamically. + +00:09:24.280 --> 00:09:27.400 + So here, we're controlling the extension + +00:09:27.400 --> 00:09:29.360 + that it should look for org files. + +00:09:29.360 --> 00:09:31.560 + Hopefully not too many people out there + +00:09:31.560 --> 00:09:34.080 + with a weird extension for the org files, + +00:09:34.080 --> 00:09:37.920 + but this should support that. + +00:09:37.920 --> 00:09:40.120 + I'm afraid that is something I've been known to do. + +00:09:40.120 --> 00:09:49.520 + Then we define a list of additional export types. + +00:09:49.520 --> 00:09:50.760 + Here's one that ought to work. + +00:09:50.760 --> 00:09:53.200 + Let's take a look at type equals org. + +00:09:54.720 --> 00:09:54.720 + + +00:09:54.720 --> 00:09:59.320 + And, aha, it's giving us the file. + +00:09:59.320 --> 00:10:00.680 + So I'm not going to open that up, + +00:10:00.680 --> 00:10:02.400 + but now we can see that that's definitely + +00:10:02.400 --> 00:10:09.200 + working for certain versions of working. + +00:10:09.200 --> 00:10:14.280 + So this list of type parameters is + +00:10:14.280 --> 00:10:15.720 + controlling the supported types. + +00:10:15.720 --> 00:10:18.550 + Hopefully it should be fairly easy to add in different ones + +00:10:18.550 --> 00:10:18.800 +. + +00:10:18.800 --> 00:10:21.480 + The fancy footwork here is just a list + +00:10:21.480 --> 00:10:23.480 + of the types that we're going to be using. + +00:10:23.480 --> 00:10:29.320 + The fancy footwork here involves, first of all, + +00:10:29.320 --> 00:10:32.240 + there's the extension and the MIME type. + +00:10:32.240 --> 00:10:36.520 + That's, as you might guess, used to control the response + +00:10:36.520 --> 00:10:37.040 + content + +00:10:37.040 --> 00:10:38.720 + type. + +00:10:38.720 --> 00:10:40.920 + We also have this replace variable. + +00:10:40.920 --> 00:10:44.000 + This prevents-- there's an optimization + +00:10:44.000 --> 00:10:48.840 + to send an existing PDF or HTML file if that's already + +00:10:48.840 --> 00:10:53.520 + there, but only if the original source org file hasn't + +00:10:53.520 --> 00:10:56.240 + been modified since. + +00:10:56.240 --> 00:10:59.920 + This replace effectively can turn that off. + +00:10:59.920 --> 00:11:03.040 + If I remove the replace equals true attribute, + +00:11:03.040 --> 00:11:07.600 + then I'll be prevented from overwriting that. + +00:11:07.600 --> 00:11:10.320 + In other words, I'll always send a cached version. + +00:11:10.320 --> 00:11:13.880 + That might be helpful if, for example, you've + +00:11:13.880 --> 00:11:16.560 + got hand-tuned PDFs and you don't want to accidentally + +00:11:16.560 --> 00:11:17.200 + overwrite them. + +00:11:19.120 --> 00:11:19.120 + + +00:11:19.120 --> 00:11:23.480 + All right, let's get into the code a little bit more. + +00:11:23.480 --> 00:11:28.280 + I'm going to skip past the really good stuff + +00:11:28.280 --> 00:11:32.520 + and jump into the boring parts so that we have them + +00:11:32.520 --> 00:11:34.240 + as context. + +00:11:34.240 --> 00:11:37.160 + Here's the default path. + +00:11:37.160 --> 00:11:41.880 + And it is going to send me the readme from the project-- + +00:11:41.880 --> 00:11:47.120 + from the project repo if I don't specify a path. + +00:11:47.120 --> 00:11:51.240 + And then we have a couple of different endpoints + +00:11:51.240 --> 00:11:52.480 + that we support. + +00:11:52.480 --> 00:11:55.560 + We'll come back to this first one. + +00:11:55.560 --> 00:11:59.600 + For now, let's start with the more normal one, which + +00:11:59.600 --> 00:12:01.760 + is just giving us a file name. + +00:12:01.760 --> 00:12:04.160 + So we can see we start by figuring out + +00:12:04.160 --> 00:12:08.520 + what the physical file name should be called. + +00:12:08.520 --> 00:12:10.280 + And assuming that that exists-- + +00:12:15.600 --> 00:12:17.080 + sorry, I've confused myself. + +00:12:17.080 --> 00:12:23.000 + So this is the caching or the optimization + +00:12:23.000 --> 00:12:25.640 + that I mentioned, sending the existing file. + +00:12:25.640 --> 00:12:31.360 + This file exists is where the optimization is + +00:12:31.360 --> 00:12:38.680 + that regenerates the file if the source + +00:12:38.680 --> 00:12:41.840 + or document for the HTML generator has changed. + +00:12:45.080 --> 00:12:46.760 + Again, this is a short talk, so I'm not + +00:12:46.760 --> 00:12:49.320 + going to go into all the nuances of this JavaScript code. + +00:12:49.320 --> 00:12:52.800 + It's pretty far from an Emacs-related thing. + +00:12:52.800 --> 00:12:56.040 + So with that said, then, the rest of this program + +00:12:56.040 --> 00:12:59.360 + is really mostly just handling the different error. + +00:12:59.360 --> 00:13:01.000 + I didn't understand that type. + +00:13:01.000 --> 00:13:02.080 + I don't know the document. + +00:13:02.080 --> 00:13:03.040 + I failed. + +00:13:03.040 --> 00:13:06.480 + Otherwise, there's the caching. + +00:13:06.480 --> 00:13:14.520 + And here's really where things get interesting, + +00:13:14.520 --> 00:13:19.200 + where we've generated some ELISP, + +00:13:19.200 --> 00:13:22.280 + and then we're calling Emacs with that ELISP. + +00:13:22.280 --> 00:13:24.760 + If everything works, we'll send the file. + +00:13:24.760 --> 00:13:27.800 + If it doesn't, we'll send the 500. + +00:13:27.800 --> 00:13:30.920 + And we've already seen the 500, so we know that works. + +00:13:30.920 --> 00:13:33.760 + All right, let's get to the interesting part. + +00:13:33.760 --> 00:13:37.320 + Sorry, one more footnote. + +00:13:37.320 --> 00:13:39.320 + There is a capability built in that will + +00:13:39.320 --> 00:13:41.040 + allow us to execute an org block. + +00:13:41.040 --> 00:13:42.840 + Let's see if that's working in our local. + +00:13:44.800 --> 00:13:44.800 + + +00:13:44.800 --> 00:13:47.200 + I'll remind myself how to do it. + +00:13:47.200 --> 00:13:49.560 + It's run. + +00:13:49.560 --> 00:13:53.320 + I think it's called test. + +00:13:53.320 --> 00:13:56.360 + And that's returning a 500. + +00:13:56.360 --> 00:13:58.400 + I'm suspecting that's running because I'm running + +00:13:58.400 --> 00:13:59.760 + in command instead of bash. + +00:13:59.760 --> 00:14:06.040 + Oh, yeah, so the failure is happening + +00:14:06.040 --> 00:14:07.720 + after I generate the ELISP. + +00:14:07.720 --> 00:14:10.280 + I'm pretty confident that is what the actual problem is. + +00:14:10.280 --> 00:14:12.760 + If we have time, I'll jump back over there + +00:14:12.760 --> 00:14:19.280 + and relaunch it in mingity-bash. + +00:14:19.280 --> 00:14:21.440 + And we can see it actually work. + +00:14:21.440 --> 00:14:24.200 + But this works pretty well for me on my work laptop. + +00:14:24.200 --> 00:14:25.860 + I didn't have to make any changes to it. + +00:14:25.860 --> 00:14:28.120 + So I have a fairly high amount of confidence, + +00:14:28.120 --> 00:14:32.400 + at least in trivial cases, this works pretty well. + +00:14:32.400 --> 00:14:37.800 + All right, so what I actually wanted to talk about today-- + +00:14:37.800 --> 00:14:42.400 + and I'm going to be kind of hand-waving around this ES5 + +00:14:42.400 --> 00:14:46.480 + class that I've got and kind of the way that works. + +00:14:46.480 --> 00:14:49.840 + Hopefully, this will be pretty familiar to you + +00:14:49.840 --> 00:14:53.440 + if you are a JavaScript programmer. + +00:14:53.440 --> 00:14:58.660 + The interesting stuff comes when we want to build some LISP + +00:14:58.660 --> 00:14:59.000 +. + +00:15:01.960 --> 00:15:09.410 + Here, you can see that I really don't have a whole lot of + +00:15:09.410 --> 00:15:09.720 + code + +00:15:09.720 --> 00:15:11.280 + around formatting LISP. + +00:15:11.280 --> 00:15:14.360 + You can see that I've special-cased + +00:15:14.360 --> 00:15:19.840 + whether the arguments that were passed + +00:15:19.840 --> 00:15:20.880 + happen to be a function. + +00:15:20.880 --> 00:15:25.480 + If they are, I'm going to call that function. + +00:15:25.480 --> 00:15:31.720 + And then the result will be formatted as LISP. + +00:15:31.720 --> 00:15:35.040 + So this would be a recursive call here. + +00:15:35.040 --> 00:15:40.960 + Otherwise, I'm just going to return the arguments. + +00:15:40.960 --> 00:15:48.440 + Sorry, otherwise, I will slap a pair of parentheses + +00:15:48.440 --> 00:15:53.440 + around the result of walking that list + +00:15:53.440 --> 00:15:57.880 + if I get formatting each element of the list of arguments + +00:15:57.880 --> 00:16:02.600 + that this format LISP process calls + +00:16:02.600 --> 00:16:04.920 + and separating them with spaces. + +00:16:04.920 --> 00:16:10.880 + So in short form, this program walks through a list. + +00:16:10.880 --> 00:16:14.000 + If the list it receives is a function, + +00:16:14.000 --> 00:16:16.080 + it calls that function. + +00:16:16.080 --> 00:16:19.320 + Once that's handled or otherwise, + +00:16:19.320 --> 00:16:22.720 + we simply walk the list, taking the arguments, + +00:16:22.720 --> 00:16:26.000 + concatenating them on strings, and finally, + +00:16:26.000 --> 00:16:28.560 + wrap the results in parentheses. + +00:16:28.560 --> 00:16:31.760 + So what I didn't mention there but might be obvious + +00:16:31.760 --> 00:16:36.120 + is if I have a nested list, the inner list + +00:16:36.120 --> 00:16:38.600 + will be subjected to the same treatment. + +00:16:38.600 --> 00:16:43.000 + So this is a recursive sort of algorithm. + +00:16:43.000 --> 00:16:51.520 + All right, so now when I go to export, + +00:16:51.520 --> 00:16:53.520 + actually, in the interest of time, + +00:16:53.520 --> 00:16:55.800 + I'm going to avoid walking through that piece of code + +00:16:55.800 --> 00:16:58.840 + and let's focus instead on the more interesting part + +00:16:58.840 --> 00:17:02.360 + of how that LISP gets encoded. + +00:17:02.360 --> 00:17:07.520 + So coming back to the PDF is a good example here + +00:17:07.520 --> 00:17:10.320 + because it's got a special case. + +00:17:10.320 --> 00:17:14.280 + You can see I've specified this export fun or export + +00:17:14.280 --> 00:17:15.320 + function. + +00:17:15.320 --> 00:17:19.560 + That's a property none of these other types have. + +00:17:22.400 --> 00:17:27.280 + And you can see it contains a meat LISP telling us + +00:17:27.280 --> 00:17:29.760 + how to call the export for it. + +00:17:29.760 --> 00:17:32.680 + Let's go see how that's used. + +00:17:32.680 --> 00:17:35.720 + At the very end of what I just skipped over, + +00:17:35.720 --> 00:17:40.600 + the detailed how the org export process works, + +00:17:40.600 --> 00:17:45.040 + you'll see that I am ending with a step + +00:17:45.040 --> 00:17:48.000 + to call the export function. + +00:17:48.000 --> 00:17:54.520 + Here, I look to see whether I have an export function + +00:17:54.520 --> 00:17:55.400 + property. + +00:17:55.400 --> 00:18:00.920 + If I do, I call that function. + +00:18:00.920 --> 00:18:06.760 + And if I don't, I build this list with the default org + +00:18:06.760 --> 00:18:14.320 + export to file function using the file name and an output + +00:18:14.320 --> 00:18:15.640 + file name. + +00:18:15.640 --> 00:18:18.480 + So this, hopefully, is pretty familiar to anybody + +00:18:18.480 --> 00:18:22.950 + that's manually messed around with calling org export to + +00:18:22.950 --> 00:18:23.560 + file. + +00:18:23.560 --> 00:18:25.800 + If it isn't, you can pretty well trust me for it. + +00:18:25.800 --> 00:18:28.280 + There's nothing very special going on. + +00:18:28.280 --> 00:18:30.760 + This looks rather like-- + +00:18:30.760 --> 00:18:37.240 + poor example there. + +00:18:37.240 --> 00:18:38.960 + Let's go back to our markdown. + +00:18:38.960 --> 00:18:46.320 + [AUDIO OUT] + +00:18:46.320 --> 00:18:47.720 + And there, we can see-- + +00:18:47.720 --> 00:18:49.840 + - I'm going to make a quick announcement. + +00:18:49.840 --> 00:18:50.760 + Can you hear me? + +00:18:50.760 --> 00:18:52.480 + - Yes, go for it. + +00:18:52.480 --> 00:18:54.280 + - OK, let me just show my face. + +00:18:54.280 --> 00:18:55.400 + Oh, I'm not showing my face. + +00:18:55.400 --> 00:18:55.640 + Damn it. + +00:18:55.640 --> 00:18:57.000 + OK, I'll make the announcement. + +00:18:57.000 --> 00:18:58.600 + You won't see my face quite yet. + +00:18:58.600 --> 00:19:00.360 + We are about to get started. + +00:19:00.360 --> 00:19:02.440 + Well, we actually just got started on dev + +00:19:02.440 --> 00:19:06.040 + with the talk by RMS. + +00:19:06.040 --> 00:19:08.920 + So if you want to hop over to watch the talk by RMS, + +00:19:08.920 --> 00:19:09.760 + feel free to do so. + +00:19:09.760 --> 00:19:12.240 + Otherwise, we will be continuing on Gen with Corwin + +00:19:12.240 --> 00:19:14.520 + to finish his talk and have a Q&A. Corwin, + +00:19:14.520 --> 00:19:16.080 + you can feel free to go now. + +00:19:16.080 --> 00:19:18.560 + - OK, bye, everybody. + +00:19:18.560 --> 00:19:22.800 + And for those sticking around, I'm + +00:19:22.800 --> 00:19:25.040 + just going to keep pressing on with this. + +00:19:25.040 --> 00:19:30.240 + In fact, I'm going to dive back into the part + +00:19:30.240 --> 00:19:35.400 + that I skipped here, which is the rest of how + +00:19:35.400 --> 00:19:37.400 + this export functionality works. + +00:19:37.400 --> 00:19:41.400 + So just to make sure the dot is tied together, + +00:19:41.400 --> 00:19:44.440 + the core of how this program works + +00:19:44.440 --> 00:19:49.320 + is generating some ELISP and then passing it + +00:19:49.320 --> 00:19:51.680 + to Emacs in batch mode. + +00:19:51.680 --> 00:19:53.280 + So if that wasn't perfectly clear, + +00:19:53.280 --> 00:19:57.240 + that's really what's going on with this program. + +00:19:57.240 --> 00:19:59.240 + The rest of the implementation is just + +00:19:59.240 --> 00:20:01.840 + a way to do that or certain features that + +00:20:01.840 --> 00:20:08.440 + are supported in that generated ELISP, if you will. + +00:20:08.440 --> 00:20:11.720 + So this is, you could say, the minimum implementation + +00:20:11.720 --> 00:20:16.220 + I could come up with to create a web server for my local + +00:20:16.220 --> 00:20:16.560 + org + +00:20:16.560 --> 00:20:17.320 + documents. + +00:20:17.320 --> 00:20:24.440 + And I will also interrupt myself to just pull up + +00:20:24.440 --> 00:20:28.040 + the etherpad real quick. + +00:20:28.040 --> 00:20:29.600 + Actually, if somebody is listening + +00:20:29.600 --> 00:20:34.720 + and can share a link to that, I closed my browser window + +00:20:34.720 --> 00:20:36.400 + with my links in it. + +00:20:36.400 --> 00:20:44.520 + But sure, I'm happy to take questions at any point, Leo, + +00:20:44.520 --> 00:20:48.480 + if there are any questions for me. + +00:20:48.480 --> 00:20:49.720 + Are you hanging out with me? + +00:20:49.720 --> 00:20:53.360 + Instead of watching RMS, you can go. + +00:20:53.360 --> 00:20:54.600 + I'm teasing. + +00:20:54.600 --> 00:20:58.840 + No, I mean, we know that some people can + +00:20:58.840 --> 00:21:00.000 + have both streams open. + +00:21:00.000 --> 00:21:01.560 + It's fine. + +00:21:01.560 --> 00:21:03.320 + And right now, it's not the Q&A with RMS. + +00:21:03.320 --> 00:21:04.640 + It's just the presentation. + +00:21:04.640 --> 00:21:07.040 + So feel free to hang out a little longer + +00:21:07.040 --> 00:21:09.080 + if you just want the live stuff. + +00:21:09.080 --> 00:21:09.960 + Don't worry about it. + +00:21:09.960 --> 00:21:10.760 + You're fine. + +00:21:10.760 --> 00:21:13.720 + Yeah, and forgive me, everybody. + +00:21:13.720 --> 00:21:16.280 + If you were hoping for a quick, succinct talk, + +00:21:16.280 --> 00:21:18.960 + I happen to know I was going to be opposite RMS. + +00:21:18.960 --> 00:21:23.240 + So I awarded myself the liberty of rambling. + +00:21:23.240 --> 00:21:26.840 + So if you do have a question, something that I alluded to + +00:21:26.840 --> 00:21:29.800 + and haven't come back to yet, you should, by all means, + +00:21:29.800 --> 00:21:30.320 + prompt me. + +00:21:30.320 --> 00:21:33.800 + A comment I might do-- + +00:21:33.800 --> 00:21:35.400 + I'm just giving you a little heads up. + +00:21:35.400 --> 00:21:38.640 + I might need to go help at some point of a dev. + +00:21:38.640 --> 00:21:43.120 + So if I need to do so, I will let you know right now + +00:21:43.120 --> 00:21:44.280 + inside the BBB room. + +00:21:44.280 --> 00:21:46.160 + And you'll be on your own to manage the chat. + +00:21:46.160 --> 00:21:47.960 + And you can just talk backstage to us + +00:21:47.960 --> 00:21:50.240 + to manage what we do with the stream, OK? + +00:21:50.240 --> 00:21:52.160 + Yep, that should be no problem at all. + +00:21:52.160 --> 00:21:53.760 + I've got my pad up now. + +00:21:53.760 --> 00:21:55.160 + Thank you, Chancellor. + +00:21:55.160 --> 00:21:58.040 + And I'm sorry about butchering your name there. + +00:21:58.040 --> 00:22:03.360 + And yep, I've got my chat open. + +00:22:03.360 --> 00:22:06.400 + And I think I'm pretty well set to self-manage. + +00:22:06.400 --> 00:22:07.640 + Oh, I don't have a camera on. + +00:22:07.640 --> 00:22:09.360 + So you can't see me giving you the thumbs up. + +00:22:09.360 --> 00:22:09.860 + OK, good. + +00:22:09.860 --> 00:22:16.000 + All right, so let's just walk through, + +00:22:16.000 --> 00:22:18.400 + because it's sort of an interesting code. + +00:22:18.400 --> 00:22:20.560 + Let's just take a look real quick + +00:22:20.560 --> 00:22:24.720 + at how we generated our e-list here, + +00:22:24.720 --> 00:22:26.520 + because it is-- + +00:22:26.520 --> 00:22:27.640 + there we go. + +00:22:27.640 --> 00:22:29.240 + It is a little bit interesting. + +00:22:29.240 --> 00:22:32.040 + So here is the method. + +00:22:32.040 --> 00:22:34.080 + So I didn't get into detail on this. + +00:22:34.080 --> 00:22:37.680 + But there's an ES5 class that represents an org mode + +00:22:37.680 --> 00:22:38.920 + document. + +00:22:38.920 --> 00:22:42.260 + It has the static debug property that, as you might imagine + +00:22:42.260 --> 00:22:42.400 +, + +00:22:42.400 --> 00:22:45.480 + can be overridden by that debug setting + +00:22:45.480 --> 00:22:48.440 + we looked at in the defaults. + +00:22:48.440 --> 00:22:51.440 + We also have a static variable that-- + +00:22:51.440 --> 00:22:57.440 + a static property that does nothing more than getting + +00:22:57.440 --> 00:23:00.360 + the path to emacs out of those defaults. + +00:23:00.360 --> 00:23:02.120 + Similarly, we have a class method + +00:23:02.120 --> 00:23:09.520 + to spawn out an emacs, as I mentioned, in batch mode, + +00:23:09.520 --> 00:23:12.720 + eval-ing some arbitrary list that's passed in. + +00:23:12.720 --> 00:23:20.480 + All right, so the type-- + +00:23:20.480 --> 00:23:23.080 + this is where things start to get interesting. + +00:23:23.080 --> 00:23:26.480 + So this is an implementation detail, + +00:23:26.480 --> 00:23:30.040 + but-- that it's written as a static method. + +00:23:30.040 --> 00:23:32.160 + But essentially, what's going on here + +00:23:32.160 --> 00:23:34.840 + is looking up from that type list + +00:23:34.840 --> 00:23:37.480 + to try to find a type that's passed in, + +00:23:37.480 --> 00:23:41.240 + and that's returning one of these blocks. + +00:23:41.240 --> 00:23:44.800 + Let's say I requested HTML, which would be the default. + +00:23:44.800 --> 00:23:48.760 + Then I'm going to get this set of properties back. + +00:23:50.760 --> 00:23:50.760 + + +00:23:50.760 --> 00:23:51.260 + All right. + +00:23:51.260 --> 00:24:04.200 + Essentially, this program generates a program + +00:24:04.200 --> 00:24:10.840 + or a little block of executable elisp. + +00:24:10.840 --> 00:24:15.920 + However, in some cases, where if the load path has + +00:24:15.920 --> 00:24:20.920 + been customized in that type block, + +00:24:20.920 --> 00:24:25.000 + or I think that's the only case I supported. + +00:24:25.000 --> 00:24:28.960 + There was another complexity I removed. + +00:24:28.960 --> 00:24:32.000 + So in that case, then I can simply + +00:24:32.000 --> 00:24:33.560 + replace that program with a let. + +00:24:33.560 --> 00:24:41.680 + Either way, I'm going to have everything I generate + +00:24:41.680 --> 00:24:45.840 + be encapsulated in a single block. + +00:24:45.840 --> 00:24:49.240 + The-- then I'm calling that format list process + +00:24:49.240 --> 00:24:52.760 + that we talked about, appending to that-- + +00:24:52.760 --> 00:25:01.680 + or inserting into, you could say, the outer scope. + +00:25:01.680 --> 00:25:05.000 + And we start by finding the file. + +00:25:05.000 --> 00:25:11.400 + We then load any libraries that might be needed. + +00:25:11.400 --> 00:25:13.520 + In some cases, the type might not + +00:25:13.520 --> 00:25:15.160 + have any external libraries. + +00:25:15.160 --> 00:25:18.440 + So we just-- so that's a no op. + +00:25:18.440 --> 00:25:24.120 + And then finally, we're going to execute + +00:25:24.120 --> 00:25:27.160 + that logic I mentioned before about selecting + +00:25:27.160 --> 00:25:30.160 + either the default or export to file, + +00:25:30.160 --> 00:25:36.200 + or else whatever elisp we've staged for exporting + +00:25:36.200 --> 00:25:38.160 + that particular file type. + +00:25:38.160 --> 00:25:41.480 + And again, in the case of PDF, there's + +00:25:41.480 --> 00:25:46.240 + a special function that's used to trigger that export. + +00:25:46.240 --> 00:25:49.160 + Or you may be aware that that's a little more complicated. + +00:25:49.160 --> 00:25:50.840 + There's intermediate forms there. + +00:25:50.840 --> 00:25:56.760 + All right. + +00:25:56.760 --> 00:26:01.320 + So just reminding myself if there's anything else + +00:26:01.320 --> 00:26:03.760 + I have to cover on background. + +00:26:03.760 --> 00:26:07.440 + And I think that pretty well covers the basics. + +00:26:07.440 --> 00:26:09.880 + All right, let's look at that source block execute. + +00:26:09.880 --> 00:26:14.600 + This is the other use of the format list function. + +00:26:14.600 --> 00:26:16.800 + So here, rather than looking at the type + +00:26:16.800 --> 00:26:24.720 + and passing that through our org export method, + +00:26:24.720 --> 00:26:29.080 + and then that type is used to get the list + +00:26:29.080 --> 00:26:30.840 + that we want to create. + +00:26:30.840 --> 00:26:37.600 + In the case of source block execute, + +00:26:37.600 --> 00:26:40.520 + we're kind of rolling it a lot more by hand. + +00:26:40.520 --> 00:26:43.920 + So this gives us a good chance to sort of unwind + +00:26:43.920 --> 00:26:49.600 + how that list looks when it's staged as JavaScript data. + +00:26:49.600 --> 00:26:52.760 + So here again, I wrap everything in a progon. + +00:26:52.760 --> 00:26:58.480 + I start by preventing an interactive prompt + +00:26:58.480 --> 00:27:01.240 + for the Babel execution. + +00:27:01.240 --> 00:27:04.960 + And then we load languages. + +00:27:04.960 --> 00:27:12.240 + This relates to another piece of our configuration + +00:27:12.240 --> 00:27:17.600 + where we've specified a set of languages + +00:27:17.600 --> 00:27:19.920 + that it's OK to execute. + +00:27:19.920 --> 00:27:24.120 + So if that type isn't in this list, + +00:27:24.120 --> 00:27:28.800 + then we won't be able to execute it in line + +00:27:28.800 --> 00:27:32.720 + through our trivial little web server. + +00:27:32.720 --> 00:27:33.640 + All right. + +00:27:33.640 --> 00:27:40.600 + With that done, then, loading the selected language, + +00:27:40.600 --> 00:27:43.960 + we then once again open the file. + +00:27:43.960 --> 00:27:46.360 + And we're-- whoops. + +00:27:46.360 --> 00:27:51.800 + Let bind a return value, which is + +00:27:51.800 --> 00:27:55.840 + calculated by using org source block execute on the name + +00:27:55.840 --> 00:27:58.040 + of the block that's given. + +00:27:58.040 --> 00:28:05.160 + And then we use a temp buffer to write that out + +00:28:05.160 --> 00:28:06.640 + to a temporary file. + +00:28:06.640 --> 00:28:08.440 + This is actually a little clumsy, + +00:28:08.440 --> 00:28:12.720 + but I haven't put the effort in to have this written out + +00:28:12.720 --> 00:28:17.480 + to the standard output cleanly instead of using a temp file + +00:28:17.480 --> 00:28:17.840 +. + +00:28:17.840 --> 00:28:20.480 + So under-- this is another example of where it may not + +00:28:20.480 --> 00:28:22.520 + be production-- well, it definitely + +00:28:22.520 --> 00:28:27.680 + is not production-worthy code in that under heavy load, + +00:28:27.680 --> 00:28:30.860 + this would certainly break with collisions on the Babel + +00:28:30.860 --> 00:28:32.040 + file, + +00:28:32.040 --> 00:28:34.120 + the name of the Babel file. + +00:28:34.120 --> 00:28:37.480 + In any case, once we've staged up our ELISP, which is-- + +00:28:37.480 --> 00:28:42.560 + this is basically variable interpolation, + +00:28:42.560 --> 00:28:47.680 + then we just call emacs on that. + +00:28:47.680 --> 00:28:49.720 + And if we look down to where that's called, + +00:28:49.720 --> 00:28:54.640 + you can see that the org Babel file name calculated here. + +00:28:54.640 --> 00:28:58.040 + [AUDIO OUT] + +00:28:58.040 --> 00:29:15.000 + Is there a problem? + +00:29:15.000 --> 00:29:15.760 + No, I'm fine. + +00:29:15.760 --> 00:29:18.000 + I'm just lost in my code. + +00:29:18.000 --> 00:29:19.040 + OK, cool. + +00:29:19.040 --> 00:29:21.160 + Oh, means, oh, I need to intervene. + +00:29:21.160 --> 00:29:22.240 + What is going on? + +00:29:22.240 --> 00:29:23.200 + Carry on, please. + +00:29:23.200 --> 00:29:24.120 + No, I'm fine, Leo. + +00:29:24.120 --> 00:29:25.480 + Thank you. + +00:29:25.480 --> 00:29:27.280 + All right, so then-- + +00:29:27.280 --> 00:29:28.680 + so you can see we get-- + +00:29:28.680 --> 00:29:36.720 + we send the Babel file here, which + +00:29:36.720 --> 00:29:41.640 + is calculated manually. + +00:29:41.640 --> 00:29:45.440 + A bit sloppy there, since I have essentially the same-- + +00:29:45.440 --> 00:29:47.000 + I have two different places where + +00:29:47.000 --> 00:29:52.480 + I'm calculating the org doc file in two different ways. + +00:29:52.480 --> 00:29:54.720 + Have I encouraged you to write your own yet? + +00:29:54.720 --> 00:29:56.440 + Or send patches. + +00:29:56.440 --> 00:30:01.240 + All right, so that's pretty much the nuts and bolts + +00:30:01.240 --> 00:30:02.400 + of this program. + +00:30:02.400 --> 00:30:06.720 + Let's go back to just seeing if we can't make it run. + +00:30:22.120 --> 00:30:22.620 + All right. + +00:30:22.620 --> 00:30:45.880 + All right, well, I apologize for not + +00:30:45.880 --> 00:30:49.560 + having taken the time to stage my demo this morning. + +00:30:49.560 --> 00:30:52.680 + I'm going to try to make it better for you. + +00:30:52.680 --> 00:30:59.920 + But apparently, it's going to be non-trivial + +00:30:59.920 --> 00:31:04.520 + to make the program work. + +00:31:04.520 --> 00:31:07.160 + Let's just-- before I completely give up, + +00:31:07.160 --> 00:31:13.320 + let's go ahead and try our Babel execute. + +00:31:13.320 --> 00:31:14.800 + And that, too, is failing. + +00:31:14.800 --> 00:31:18.040 + So there's something unhappy in my local world. + +00:31:18.040 --> 00:31:19.040 + There it goes. + +00:31:19.040 --> 00:31:26.600 + But in any case, let's go ahead and just take a look at + +00:31:26.600 --> 00:31:28.000 + that. + +00:31:28.000 --> 00:31:30.640 + Let's see. + +00:31:30.640 --> 00:31:31.600 + Control Enter. + +00:31:31.600 --> 00:31:40.200 + Let's take a look at that generated ELS + +00:31:40.200 --> 00:31:42.840 + and compare it to-- whoa-- + +00:31:42.840 --> 00:31:44.000 + and compare it to-- + +00:31:44.000 --> 00:31:52.400 + I'm just going to format this manually, + +00:31:52.400 --> 00:31:56.000 + because I've forgotten my key bindings to auto-format it. + +00:31:56.000 --> 00:32:02.240 + There we go. + +00:32:02.240 --> 00:32:07.960 + All right. + +00:32:07.960 --> 00:32:13.120 + So now we can see, as promised, there's really + +00:32:13.120 --> 00:32:16.200 + nothing going on here other than the interpolation + +00:32:16.200 --> 00:32:18.640 + of the variables in. + +00:32:18.640 --> 00:32:24.360 + We're inserting-- we're using an insert and write file + +00:32:24.360 --> 00:32:27.800 + method, which is, again, rather sloppy, + +00:32:27.800 --> 00:32:32.040 + to generate the text file. + +00:32:32.040 --> 00:32:32.880 + All right. + +00:32:32.880 --> 00:32:34.760 + Let's come back to our documentation + +00:32:34.760 --> 00:32:39.760 + and see if we can put a bow on the project. + +00:32:39.760 --> 00:32:43.760 + So I hope I've convinced you that this was actually + +00:32:43.760 --> 00:32:45.480 + rather easy to do. + +00:32:45.480 --> 00:32:52.440 + The entirety of my index.js file is 262 lines, + +00:32:52.440 --> 00:32:59.810 + and that includes a good 40 of whitespace and configuration + +00:32:59.810 --> 00:33:00.280 +. + +00:33:03.760 --> 00:33:06.840 + It has only one dependency, the Express, which + +00:33:06.840 --> 00:33:08.240 + really builds the web server. + +00:33:08.240 --> 00:33:11.520 + Any language you'd rather implement this in + +00:33:11.520 --> 00:33:14.120 + will have a similar capability for building + +00:33:14.120 --> 00:33:16.280 + some type of trivial web server. + +00:33:16.280 --> 00:33:18.400 + And I think you may find-- + +00:33:18.400 --> 00:33:22.640 + I certainly found that a large portion of the code base + +00:33:22.640 --> 00:33:28.080 + is really making the errors meaningful, + +00:33:28.080 --> 00:33:32.420 + in that, in some cases, sending an appropriate HTTP status + +00:33:32.420 --> 00:33:34.360 + based on what happened. + +00:33:34.360 --> 00:33:41.160 + In other cases-- let's see if I've got an explicit throw + +00:33:41.160 --> 00:33:41.520 + left + +00:33:41.520 --> 00:33:42.640 + in here-- + +00:33:42.640 --> 00:33:45.840 + in other cases, just trapping different types + +00:33:45.840 --> 00:33:47.440 + of failure conditions. + +00:33:47.440 --> 00:33:54.000 + I'm going to look at my pad, and I do see a question here. + +00:33:54.000 --> 00:33:55.120 + So let me jump in here. + +00:33:55.120 --> 00:33:58.880 + [VIDEO PLAYBACK] + +00:33:58.880 --> 00:34:00.640 + - Cohen, just to make sure, are you switching to Q&A? + +00:34:00.640 --> 00:34:02.380 + Are you finished with your presentation? + +00:34:02.380 --> 00:34:05.260 + - Well, as I said, I'm happy to take Q&A throughout. + +00:34:05.260 --> 00:34:08.420 + But yes, let's say yes to that. + +00:34:08.420 --> 00:34:10.900 + - OK, so Cohen, what I'm going to need to do now-- + +00:34:10.900 --> 00:34:12.140 + you are in charge of the room. + +00:34:12.140 --> 00:34:14.060 + We are going to open up the room so + +00:34:14.060 --> 00:34:17.220 + that if people have questions watching right now on Gen, + +00:34:17.220 --> 00:34:18.700 + feel free to come in. + +00:34:18.700 --> 00:34:22.780 + And there was something else I needed to say. + +00:34:22.780 --> 00:34:24.620 + Yes, Cohen, if there's any problem, + +00:34:24.620 --> 00:34:25.700 + whisper to us on Mumble. + +00:34:25.700 --> 00:34:27.500 + So you might want to unmute Mumble + +00:34:27.500 --> 00:34:29.620 + and be able to listen to us over there. + +00:34:29.620 --> 00:34:32.480 + - I can't do that, Leo. + +00:34:32.480 --> 00:34:36.440 + If I unmute, Mumble is going to bleed through. + +00:34:36.440 --> 00:34:36.960 + - OK, sure. + +00:34:36.960 --> 00:34:41.160 + Well, if you have any problem, type in emacsconf-org.ch + +00:34:41.160 --> 00:34:41.160 +annel, + +00:34:41.160 --> 00:34:42.520 + and we'll be with you, OK? + +00:34:42.520 --> 00:34:43.520 + - Or I'll PM somebody. + +00:34:43.520 --> 00:34:45.760 + But I don't anticipate having any problems. + +00:34:45.760 --> 00:34:49.040 + I'll put something in org when I run out of steam here. + +00:34:49.040 --> 00:34:50.400 + How's that? + +00:34:50.400 --> 00:34:51.160 + - Amazing, cool. + +00:34:51.160 --> 00:34:53.320 + So I will have to leave the room, though. + +00:34:53.320 --> 00:34:56.800 + I'm leaving the recording going so that we have your Q&A. + +00:34:56.800 --> 00:34:58.080 + And whenever you're available-- + +00:34:58.080 --> 00:35:02.180 + - I'll shut off the recording when I close the room. + +00:35:02.180 --> 00:35:02.980 + - OK, great. + +00:35:02.980 --> 00:35:04.460 + Good luck, Cohen. + +00:35:04.460 --> 00:35:06.500 + - Thank you. + +00:35:06.500 --> 00:35:09.780 + All right, and if you're still with me, well, thanks. + +00:35:09.780 --> 00:35:13.620 + I appreciate that. + +00:35:13.620 --> 00:35:16.740 + I did offer to be opposite RMS. + +00:35:16.740 --> 00:35:20.060 + And I'm in no way offended if people do want to jump over, + +00:35:20.060 --> 00:35:23.540 + especially as that starts to shift over to Q&A. + +00:35:23.540 --> 00:35:26.980 + I'm taking Leo's leaving as a pretty good indication + +00:35:26.980 --> 00:35:28.780 + that that's happening now-ish. + +00:35:28.780 --> 00:35:34.750 + So I totally understand if folks are more excited to do + +00:35:34.750 --> 00:35:35.020 + that. + +00:35:35.020 --> 00:35:37.940 + Meanwhile, let me just jump over to the question + +00:35:37.940 --> 00:35:38.660 + that I received. + +00:35:38.660 --> 00:35:46.460 + I'll show the pad here so that I save myself + +00:35:46.460 --> 00:35:47.860 + reading the question out. + +00:35:47.860 --> 00:35:48.940 + But I'll paraphrase it. + +00:35:48.940 --> 00:35:52.660 + Why am I not running the web server in emacs? + +00:35:52.660 --> 00:35:54.380 + That would be a great way to do it. + +00:35:54.380 --> 00:35:57.100 + I chose to build it in Node.js because that + +00:35:57.100 --> 00:35:58.460 + was trivially easy for me. + +00:36:22.140 --> 00:36:24.780 + And then finally, am I using org info.js? + +00:36:24.780 --> 00:36:27.540 + No, I learned about this essentially at this conference. + +00:36:27.540 --> 00:36:30.660 + So that's something I'll be learning more about. + +00:36:30.660 --> 00:36:32.460 + And it could well influence this project. + +00:36:32.460 --> 00:36:34.900 + [TYPING] + +00:36:34.900 --> 00:36:56.180 + All right, and thanks for the questions. + +00:36:59.020 --> 00:37:02.820 + All right, I'm going to slow my roll just a little bit here + +00:37:02.820 --> 00:37:06.980 + because I think I kind of have all the time in the world. + +00:37:06.980 --> 00:37:11.540 + I will be wrapping up within about 15 or 20 minutes + +00:37:11.540 --> 00:37:15.620 + at the latest just to avoid stressing out + +00:37:15.620 --> 00:37:19.100 + my fellow organizers, especially Leo and Sasha that + +00:37:19.100 --> 00:37:22.260 + have the bulk of the heavy lifting this year. + +00:37:22.260 --> 00:37:26.820 + And amen, and really, thanks all to everybody. + +00:37:26.820 --> 00:37:29.540 + God, the nicest part of doing my own talk + +00:37:29.540 --> 00:37:31.980 + is that I get to say that. + +00:37:31.980 --> 00:37:35.460 + It's just so much fun to contribute to emacsConf. + +00:37:35.460 --> 00:37:38.740 + And if you're at all interested, there's + +00:37:38.740 --> 00:37:43.100 + plenty of completely backstage, behind the curtain role. + +00:37:43.100 --> 00:37:45.340 + Behind the curtain roles doesn't mean + +00:37:45.340 --> 00:37:49.020 + you have to be somebody that likes talking or being + +00:37:49.020 --> 00:37:50.060 + on webcam. + +00:37:50.060 --> 00:37:52.300 + Sorry that my camera isn't working this year. + +00:37:52.300 --> 00:37:53.980 + I spent quite a while fussing with that + +00:37:53.980 --> 00:37:56.740 + and lost all my time to get my prereq working. + +00:37:56.740 --> 00:38:10.140 + All right, so trying to think where I can take us + +00:38:10.140 --> 00:38:11.540 + without my demo working. + +00:38:11.540 --> 00:38:14.540 + I was really hoping to show the org Babel piece. + +00:38:14.540 --> 00:38:15.580 + That's really fun. + +00:38:15.580 --> 00:38:20.420 + So let me just mention briefly how I'm using this at work. + +00:38:20.420 --> 00:38:25.980 + So at work, I'll have some type of org document. + +00:38:25.980 --> 00:38:27.700 + And usually, it's a project. + +00:38:27.700 --> 00:38:32.900 + So the title of the document is My Project. + +00:38:32.900 --> 00:38:37.820 + And then I'll have a requirements section. + +00:38:37.820 --> 00:38:43.540 + And I'll have a meeting notes section. + +00:38:43.540 --> 00:38:44.980 + That's probably the key thing. + +00:38:44.980 --> 00:38:49.540 + And then as the project goes on, I'll start having-- + +00:38:49.540 --> 00:38:50.740 + I'm a solutions architect. + +00:38:50.740 --> 00:38:55.420 + So my job is formalizing design in large part. + +00:38:55.420 --> 00:39:01.740 + So then I'll have a design documents section. + +00:39:01.740 --> 00:39:05.020 + And this is where I'll be doing a lot of my work. + +00:39:05.020 --> 00:39:07.220 + So I'll start out saying-- + +00:39:07.220 --> 00:39:26.620 + [AUDIO OUT] + +00:39:26.620 --> 00:39:29.340 + And maybe Bob is a subject matter expert + +00:39:29.340 --> 00:39:32.460 + whose buy-in I need to have on how we're going + +00:39:32.460 --> 00:39:34.820 + to do the high-level design. + +00:39:34.820 --> 00:39:38.470 + Maybe a lead engineer or a dev manager or something like + +00:39:38.470 --> 00:39:39.460 + that. + +00:39:39.460 --> 00:39:43.580 + All right, as my work goes on, then this + +00:39:43.580 --> 00:39:47.620 + will start getting into more detail. + +00:39:47.620 --> 00:40:16.620 + [AUDIO OUT] + +00:40:16.620 --> 00:40:18.660 + And things of this nature. + +00:40:18.660 --> 00:40:20.180 + As things get further and further, + +00:40:20.180 --> 00:40:21.740 + I'll actually have documentation + +00:40:21.740 --> 00:40:22.820 + that I'm adding in here. + +00:40:22.820 --> 00:40:28.900 + Oh, I see. + +00:40:28.900 --> 00:40:29.740 + It's a big mess. + +00:40:29.740 --> 00:40:32.140 + All right, well, we'll just reuse this. + +00:40:32.140 --> 00:40:40.380 + So I can insert those all in line. + +00:40:40.380 --> 00:40:44.140 + And now for the fun part, let's see if the most trivial + +00:40:44.140 --> 00:40:44.460 + case + +00:40:44.460 --> 00:40:45.460 + is working here. + +00:40:47.460 --> 00:40:47.460 + + +00:40:47.460 --> 00:40:49.940 + [CLICK] + +00:40:49.940 --> 00:40:51.180 + No. + +00:40:51.180 --> 00:40:52.900 + All right, completely broken. + +00:40:52.900 --> 00:40:57.260 + Let me drag. + +00:40:57.260 --> 00:41:05.180 + All right, well, apologies again for the poor quality + +00:41:05.180 --> 00:41:06.260 + of my demo today. + +00:41:06.260 --> 00:41:13.900 + And let me just look real quick at my Etherpad once more. + +00:41:13.900 --> 00:41:16.820 + And I'll glance at BBB to see if there's anybody + +00:41:16.820 --> 00:41:18.140 + jumping in with questions. + +00:41:18.140 --> 00:41:23.740 + And then I'll go back to IRC and look for questions there. + +00:41:23.740 --> 00:41:33.180 + OK, and I don't see any additional questions on the pad. + +00:41:33.180 --> 00:41:35.780 + I'm just going to scan IRC real quick. + +00:41:35.780 --> 00:41:42.460 + I suspect that the TreeSitter comment isn't for me. + +00:41:42.460 --> 00:41:44.900 + [CHUCKLES] + +00:41:44.900 --> 00:41:56.620 + All right, and I'm not seeing a lot of questions there. + +00:41:56.620 --> 00:42:04.340 + So I'm just going to vamp for just a minute or two. + +00:42:04.340 --> 00:42:07.980 + As I mentioned, I'm a conference volunteer. + +00:42:07.980 --> 00:42:09.700 + This is my third year volunteering + +00:42:09.700 --> 00:42:11.940 + with the conference. + +00:42:11.940 --> 00:42:15.140 + And probably if you take one thing away from my talk, + +00:42:15.140 --> 00:42:17.740 + it should be I really like volunteering + +00:42:17.740 --> 00:42:18.500 + for the conference. + +00:42:18.500 --> 00:42:19.900 + It's fun. + +00:42:19.900 --> 00:42:23.500 + It makes me feel sort of close to the pulse. + +00:42:23.500 --> 00:42:26.660 + And it gives me a chance to just interact + +00:42:26.660 --> 00:42:29.260 + with people that have very different perspectives + +00:42:29.260 --> 00:42:32.740 + on Emacs, which is something that I really value a lot. + +00:42:32.740 --> 00:42:40.220 + Emacs, like anything else sort of in the internet world, + +00:42:40.220 --> 00:42:42.940 + has a real echo chamber factor. + +00:42:42.940 --> 00:42:47.660 + If you do or don't use Package, you probably + +00:42:47.660 --> 00:42:49.380 + interact with a lot of people that + +00:42:49.380 --> 00:42:53.500 + feel the same way about that. + +00:42:53.500 --> 00:42:57.420 + And so I really recommend volunteering for EmacsConf + +00:42:57.420 --> 00:43:01.340 + as a way to sort of mix it up and get + +00:43:01.340 --> 00:43:05.250 + to know people that may not use Emacs the same way that you + +00:43:05.250 --> 00:43:05.540 + do. + +00:43:08.380 --> 00:43:10.420 + Or perhaps more on topic, though, + +00:43:10.420 --> 00:43:14.300 + the log line for this talk is it's really quite easy + +00:43:14.300 --> 00:43:20.760 + to build a program that uses Emacs in a pipeline capability + +00:43:20.760 --> 00:43:20.980 +. + +00:43:20.980 --> 00:43:23.780 + I think there's a ton of opportunity in this space. + +00:43:23.780 --> 00:43:27.700 + This particular example is just a trivial web server + +00:43:27.700 --> 00:43:29.540 + written + +00:43:29.540 --> 00:43:30.780 + using Node.js. + +00:43:30.780 --> 00:43:39.660 + But as was pointed out, we could have used LNode as a web + +00:43:39.660 --> 00:43:40.060 + server + +00:43:40.060 --> 00:43:44.060 + and done the entire thing within Emacs Lisp. + +00:43:44.060 --> 00:43:49.980 + Or really, almost any technology would get us this + +00:43:49.980 --> 00:43:52.900 + capability. + +00:43:52.900 --> 00:43:54.660 + From an implementation standpoint, + +00:43:54.660 --> 00:43:59.270 + I had a lot of fun building this trivial little e-lisp pars + +00:43:59.270 --> 00:43:59.580 +er. + +00:43:59.580 --> 00:44:03.220 + And I'm rather pleased with the fact + +00:44:03.220 --> 00:44:07.340 + that the entirety of that-- + +00:44:07.340 --> 00:44:14.180 + the entire algorithm for turning JavaScript or JSON data, + +00:44:14.180 --> 00:44:20.420 + we could say, into e-lisp is really a one-liner. + +00:44:20.420 --> 00:44:25.820 + Albeit a nasty one-liner, that was pretty cool + +00:44:25.820 --> 00:44:28.180 + to discover how simple that was. + +00:44:28.180 --> 00:44:31.220 + So in my mind, that opens up a lot of possibility. + +00:44:31.220 --> 00:44:32.940 + If it's this easy in JavaScript, I + +00:44:32.940 --> 00:44:35.700 + wouldn't expect it to be hard, any more difficult + +00:44:35.700 --> 00:44:36.860 + in your favorite language. + +00:44:36.860 --> 00:44:41.140 + Glance one more time to see if there + +00:44:41.140 --> 00:44:42.940 + happen to be any other questions. + +00:44:42.940 --> 00:44:47.300 + And not seeing any, I'm going to go ahead and start + +00:44:47.300 --> 00:44:49.500 + wrapping up my chat now. + +00:44:49.500 --> 00:44:51.620 + It will take me a couple of minutes to do that. + +00:44:51.620 --> 00:44:54.580 + So if you do have any other questions that you + +00:44:54.580 --> 00:44:56.460 + want to drop into the pad or any comments, + +00:44:56.460 --> 00:44:59.740 + you're more than welcome to hit me with those + +00:44:59.740 --> 00:45:03.820 + as I coordinate closing this chat, this talk, + +00:45:03.820 --> 00:45:06.100 + with the organizer team. + +00:45:06.100 --> 00:45:09.580 + [AUDIO OUT] + +00:45:09.580 --> 00:45:12.580 + [AUDIO OUT] + +00:45:14.580 --> 00:45:14.580 + + +00:45:14.580 --> 00:45:17.580 + [AUDIO OUT] + +00:45:17.580 --> 00:45:20.580 + [AUDIO OUT] + +00:45:22.580 --> 00:45:22.580 + + +00:45:22.580 --> 00:45:25.580 + [AUDIO OUT] + +00:45:25.580 --> 00:45:33.580 + [AUDIO OUT] + +00:45:33.580 --> 00:45:44.580 + [AUDIO OUT] + +00:45:44.580 --> 00:45:47.620 + [AUDIO OUT] + +00:45:47.620 --> 00:45:50.620 + [AUDIO OUT] + +00:45:50.620 --> 00:45:53.620 + [AUDIO OUT] + +00:45:53.620 --> 00:45:56.620 + [AUDIO OUT] + +00:45:56.620 --> 00:45:59.620 + [AUDIO OUT] + +00:46:01.620 --> 00:46:01.620 + + +00:46:01.620 --> 00:46:04.620 + [AUDIO OUT] + diff --git a/2022/captions/emacsconf-2022-rde--rde-emacs-introduction--andrew-tropin--answers.vtt b/2022/captions/emacsconf-2022-rde--rde-emacs-introduction--andrew-tropin--answers.vtt new file mode 100644 index 00000000..7365f8e9 --- /dev/null +++ b/2022/captions/emacsconf-2022-rde--rde-emacs-introduction--andrew-tropin--answers.vtt @@ -0,0 +1,1133 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.160 + We'll hit start recording. + +00:00:02.160 --> 00:00:03.400 + All right, everyone. + +00:00:03.400 --> 00:00:05.840 + Thanks, Andrew, for the great talk. + +00:00:05.840 --> 00:00:06.840 + Super cool. + +00:00:06.840 --> 00:00:09.240 + So now we have the live Q&A with Andrew. + +00:00:09.240 --> 00:00:12.440 + Folks, you can start by asking your questions on the pad. + +00:00:12.440 --> 00:00:14.680 + And we will also open up this big blue button + +00:00:14.680 --> 00:00:17.160 + room in a few minutes for folks who + +00:00:17.160 --> 00:00:19.920 + want to join here and ask questions here directly + +00:00:19.920 --> 00:00:21.320 + to Andrew. + +00:00:21.320 --> 00:00:24.080 + Thanks again, and take it away, Andrew. + +00:00:24.080 --> 00:00:26.400 + OK, thank you. + +00:00:26.400 --> 00:00:29.720 + Let's start from pod questions. + +00:00:29.720 --> 00:00:35.560 + The first one, do I use this to have multiple configs + +00:00:35.560 --> 00:00:35.880 + running + +00:00:35.880 --> 00:00:39.560 + side by side for deep comparison? + +00:00:39.560 --> 00:00:43.920 + Actually, I have two configurations primary here. + +00:00:43.920 --> 00:00:46.640 + The first one is my main configuration + +00:00:46.640 --> 00:00:51.600 + for the whole environment, which manages all the dot files. + +00:00:51.600 --> 00:00:55.080 + And the second one is virtualenv-like. + +00:00:55.080 --> 00:00:59.600 + It creates a new shell with some environment variables. + +00:00:59.600 --> 00:01:01.000 + It's set inside it. + +00:01:01.000 --> 00:01:05.920 + And it includes Emacs load path and other things + +00:01:05.920 --> 00:01:10.240 + to make Emacs able to explore packages + +00:01:10.240 --> 00:01:13.040 + inside this small environment. + +00:01:13.040 --> 00:01:18.120 + And it removes all unnecessary environment variables, + +00:01:18.120 --> 00:01:20.160 + which pollutes the environment. + +00:01:20.160 --> 00:01:25.800 + So we have quite a small scope on which only Emacs + +00:01:25.800 --> 00:01:28.480 + and a few other packages are available. + +00:01:28.480 --> 00:01:31.280 + And as you saw at the end of the talk, + +00:01:31.280 --> 00:01:33.880 + it was the example of such small environment + +00:01:33.880 --> 00:01:38.500 + where I set up Emacs and all the dependencies from ground + +00:01:38.500 --> 00:01:38.920 + up. + +00:01:38.920 --> 00:01:40.760 + And actually, the similar thing I + +00:01:40.760 --> 00:01:43.760 + use for development of my projects, + +00:01:43.760 --> 00:01:45.440 + I have their project environments + +00:01:45.440 --> 00:01:47.640 + made in the same way. + +00:01:47.640 --> 00:01:52.400 + But usually, I use my primary Emacs instance. + +00:01:52.400 --> 00:01:55.880 + But sometimes, it can be kind of mixed. + +00:01:55.880 --> 00:01:59.080 + I have a few talks on my YouTube channel. + +00:01:59.080 --> 00:02:03.630 + And you can check them out to get more information about it + +00:02:03.630 --> 00:02:04.000 +. + +00:02:04.000 --> 00:02:04.560 + The second-- + +00:02:04.560 --> 00:02:05.060 + Sorry. + +00:02:05.060 --> 00:02:06.320 + One quick request, Andrew. + +00:02:06.320 --> 00:02:08.780 + People are saying if you could maybe speak up a little bit + +00:02:08.780 --> 00:02:11.170 + more so that they could hear you better, that would be + +00:02:11.170 --> 00:02:11.760 + great. + +00:02:11.760 --> 00:02:12.840 + OK, sure. + +00:02:12.840 --> 00:02:14.560 + Thank you. + +00:02:14.560 --> 00:02:16.760 + The second question. + +00:02:16.760 --> 00:02:20.080 + Are you using Gix system or Gix on top of another distro? + +00:02:20.080 --> 00:02:22.480 + If system, any tips? + +00:02:22.480 --> 00:02:24.920 + I tried Gix system, but found getting started + +00:02:24.920 --> 00:02:27.760 + was very difficult due to lack of Wi-Fi firmware + +00:02:27.760 --> 00:02:31.640 + and incomplete documentation. + +00:02:31.640 --> 00:02:35.280 + Personally, I use Gix system, Gix home, + +00:02:35.280 --> 00:02:38.200 + Gix as a package manager, and also as a deployment tool + +00:02:38.200 --> 00:02:40.880 + for a few services. + +00:02:40.880 --> 00:02:44.700 + I started from very basic setup where I didn't have + +00:02:44.700 --> 00:02:45.360 + anything + +00:02:45.360 --> 00:02:49.080 + and build it piece by piece, including + +00:02:49.080 --> 00:02:52.400 + building Gix home project. + +00:02:52.400 --> 00:02:56.680 + So yeah, I use Gix system and all the things. + +00:02:56.680 --> 00:03:02.040 + And talking about Wi-Fi, first option + +00:03:02.040 --> 00:03:04.680 + is to buy a Wi-Fi adapter, which doesn't + +00:03:04.680 --> 00:03:07.080 + require proprietary firmware. + +00:03:07.080 --> 00:03:11.040 + And another option is finding the firmware and installing + +00:03:11.040 --> 00:03:12.000 + it. + +00:03:12.000 --> 00:03:13.760 + So it's up to you. + +00:03:13.760 --> 00:03:17.840 + Everything actually is relatively easy, + +00:03:17.840 --> 00:03:23.600 + and you can relatively easy find the way to do it. + +00:03:23.600 --> 00:03:25.560 + The third question. + +00:03:25.560 --> 00:03:29.360 + One of the issues I have had managing Emacs packages + +00:03:29.360 --> 00:03:32.360 + with Gix is a conflict between Gix package + +00:03:32.360 --> 00:03:35.160 + attest read-only and the Emacs package + +00:03:35.160 --> 00:03:37.840 + attest hackable in real time. + +00:03:37.840 --> 00:03:40.680 + Any suggestions to resolve this? + +00:03:40.680 --> 00:03:45.600 + Yes, I have suggestions to resolve this. + +00:03:45.600 --> 00:03:46.600 + Actually, it's true. + +00:03:46.600 --> 00:03:50.560 + Everything which is in GNU store is read-only. + +00:03:50.560 --> 00:03:55.680 + Everything which is built with Gix is almost set in stone, + +00:03:55.680 --> 00:04:00.720 + and you can't edit it in real time. + +00:04:00.720 --> 00:04:02.720 + But what I do-- + +00:04:02.720 --> 00:04:03.760 + can I share my screen? + +00:04:03.760 --> 00:04:09.160 + One second. + +00:04:09.160 --> 00:04:14.140 + I will press a few buttons, and I hope you will see it soon + +00:04:14.140 --> 00:04:14.360 +. + +00:04:16.360 --> 00:04:16.360 + + +00:04:16.360 --> 00:04:18.080 + Or maybe not so soon. + +00:04:18.080 --> 00:04:26.600 + What I basically do, I take parts of the ELISP, + +00:04:26.600 --> 00:04:30.240 + and I have them inside my scheme file + +00:04:30.240 --> 00:04:36.640 + that I use to define my home environment and other things. + +00:04:36.640 --> 00:04:38.560 + I don't know-- oh, OK. + +00:04:38.560 --> 00:04:39.640 + That's it. + +00:04:39.640 --> 00:04:43.560 + For example, here, this part is a scheme code. + +00:04:43.560 --> 00:04:46.640 + But this part is pure ELISP code. + +00:04:46.640 --> 00:04:56.400 + And I can use a direct region and use Emacs ELISP mode here + +00:04:56.400 --> 00:04:56.440 +. + +00:04:56.440 --> 00:05:01.160 + I will need parts, edit those parts, and select. + +00:05:01.160 --> 00:05:05.520 + And when I'm fine with all the edits I did here-- + +00:05:05.520 --> 00:05:08.400 + for example, I can evaluate this form using + +00:05:08.400 --> 00:05:10.760 + Control-X, Control-E, and so on. + +00:05:10.760 --> 00:05:13.300 + And when I'm good with the results, + +00:05:13.300 --> 00:05:16.920 + I can just save it and rebuild my whole home environment + +00:05:16.920 --> 00:05:21.360 + and see it on a fresh Emacs instance load + +00:05:21.360 --> 00:05:26.760 + from the new configuration and see if everything + +00:05:26.760 --> 00:05:28.880 + works here as well. + +00:05:28.880 --> 00:05:32.760 + So it's a little less interactive + +00:05:32.760 --> 00:05:35.000 + than the usual Emacs configuration, + +00:05:35.000 --> 00:05:36.480 + but still works quite well. + +00:05:40.800 --> 00:05:43.540 + A question-- what is next for RD? + +00:05:43.540 --> 00:05:48.420 + Actually, I have short-term plans and a little more + +00:05:48.420 --> 00:05:49.660 + long-term plans. + +00:05:49.660 --> 00:05:52.580 + Short-term plan is to make a first release + +00:05:52.580 --> 00:05:54.740 + by the end of this year. + +00:05:54.740 --> 00:05:58.860 + And this release-- actually, RD is quite usable currently, + +00:05:58.860 --> 00:06:02.220 + but there is not much documentation and not + +00:06:02.220 --> 00:06:04.620 + so many examples. + +00:06:04.620 --> 00:06:09.060 + So I would like to prepare a documentation + +00:06:09.060 --> 00:06:15.500 + getting started guide, live CD that you can use + +00:06:15.500 --> 00:06:23.020 + for exploration purpose and for installation. + +00:06:23.020 --> 00:06:31.380 + And also, I would like to find one or two maintainers which + +00:06:31.380 --> 00:06:37.260 + will help with upcoming patches, because it's already + +00:06:37.260 --> 00:06:40.300 + at least a few people who use it on a daily basis, + +00:06:40.300 --> 00:06:42.860 + and they send a lot of patches. + +00:06:42.860 --> 00:06:46.860 + And sometimes I have a hard time keeping up + +00:06:46.860 --> 00:06:49.660 + with the speed of creating patches. + +00:06:49.660 --> 00:06:53.540 + So the short-term plans is to make a first release + +00:06:53.540 --> 00:06:54.860 + by the end of the year. + +00:06:54.860 --> 00:07:00.140 + The long-term plans we can discuss later, I think. + +00:07:00.140 --> 00:07:03.580 + And I will share them in RD announced mailing list. + +00:07:06.220 --> 00:07:12.980 + OK, I think that's it for patterns. + +00:07:12.980 --> 00:07:14.580 + Let me check RC. + +00:07:14.580 --> 00:07:30.060 + I have-- OK, it seems that I answered all questions + +00:07:30.060 --> 00:07:31.540 + that I found. + +00:07:31.540 --> 00:07:33.180 + Let me know if something appears. + +00:07:33.180 --> 00:07:39.580 + [AUDIO OUT] + +00:07:39.580 --> 00:07:40.580 + Cool, thanks, Andrew. + +00:07:40.580 --> 00:07:44.820 + And yeah, I think we still have over 10 minutes, maybe + +00:07:44.820 --> 00:07:49.460 + 12 minutes or so of live Q&A time on the stream. + +00:07:49.460 --> 00:07:51.180 + So if people still have more questions, + +00:07:51.180 --> 00:07:53.180 + please feel free to either add them on the pad, + +00:07:53.180 --> 00:07:54.540 + or I think you should now also be + +00:07:54.540 --> 00:08:00.020 + able to join this big blue button room to ask directly. + +00:08:00.020 --> 00:08:04.100 + OK, I see one more question. + +00:08:04.100 --> 00:08:08.100 + But I'm not sure what does it mean. + +00:08:08.100 --> 00:08:10.380 + Do you use Emacs without this? + +00:08:10.380 --> 00:08:13.940 + If so, for what purpose? + +00:08:13.940 --> 00:08:17.780 + And how does it feel compared to RD? + +00:08:17.780 --> 00:08:20.980 + OK, it's a question in general. + +00:08:20.980 --> 00:08:24.020 + No, I don't use Emacs without RD. + +00:08:24.020 --> 00:08:28.700 + Actually, all the Emacs configurations I use + +00:08:28.700 --> 00:08:33.340 + is based on RD and built from that. + +00:08:33.340 --> 00:08:43.580 + There is a way to add almost everything + +00:08:43.580 --> 00:08:45.940 + you have in your basic Emacs configuration + +00:08:45.940 --> 00:08:52.540 + to your RD Emacs configuration by creating a file + +00:08:52.540 --> 00:08:56.780 + in your usual .config/emacsd directory + +00:08:56.780 --> 00:09:01.740 + and loading it from your .init/el directory. + +00:09:01.740 --> 00:09:07.940 + So you actually can have a very usual Emacs configuration + +00:09:07.940 --> 00:09:12.420 + workflow in addition to RD. + +00:09:12.420 --> 00:09:16.500 + But I don't use it because it's not a reproducible way + +00:09:16.500 --> 00:09:20.940 + to do things because such workflow means + +00:09:20.940 --> 00:09:25.220 + that I need to install packages separately somehow, + +00:09:25.220 --> 00:09:31.740 + either with gix install or maybe some other package manager + +00:09:31.740 --> 00:09:31.740 +, + +00:09:31.740 --> 00:09:37.610 + or maybe this package manager, like package.al or straight. + +00:09:37.610 --> 00:09:37.860 +al. + +00:09:37.860 --> 00:09:44.060 + And it doesn't work well in the long term + +00:09:44.060 --> 00:09:46.620 + because if I move such configuration, which + +00:09:46.620 --> 00:09:52.700 + partially RD and partially usual Emacs configuration, + +00:09:52.700 --> 00:09:58.980 + it will break on the new machine or maybe somewhere else + +00:09:58.980 --> 00:10:03.700 + where I would like to move this configuration later. + +00:10:03.700 --> 00:10:23.700 + OK. + +00:10:23.700 --> 00:10:27.700 + We have a last slot for Q and A in the pad. + +00:10:27.700 --> 00:10:39.380 + [LAUGHS] + +00:10:39.380 --> 00:10:43.940 + Thank you, everyone, for joining this talk. + +00:10:43.940 --> 00:10:46.820 + It was a pleasure to interview you. + +00:10:46.820 --> 00:10:52.780 + I will be here for at least an hour or so + +00:10:52.780 --> 00:10:56.340 + before I will go preparing to sleep. + +00:10:56.340 --> 00:11:02.740 + So you can reach me by email, RC, here in big blue button + +00:11:02.740 --> 00:11:07.220 + or some other way, probably. + +00:11:07.220 --> 00:11:09.660 + Are there any plans to push things + +00:11:09.660 --> 00:11:12.660 + from RD to gix main channel? + +00:11:12.660 --> 00:11:16.420 + Actually, I have a commit access to gix, + +00:11:16.420 --> 00:11:20.300 + and I try to upstream everything that + +00:11:20.300 --> 00:11:25.060 + can be beneficial for both RD and gix to gix + +00:11:25.060 --> 00:11:30.740 + and use it from the upstream. + +00:11:30.740 --> 00:11:35.320 + But sometimes on some question, we didn't reach an + +00:11:35.320 --> 00:11:35.900 + agreement, + +00:11:35.900 --> 00:11:40.660 + or sometimes it's much easier to implement it + +00:11:40.660 --> 00:11:46.500 + in a more rapid way, which probably I + +00:11:46.500 --> 00:11:52.380 + wouldn't like to add to gix because it will require + +00:11:52.380 --> 00:11:56.340 + too much time trying to fit to some gix. + +00:11:56.340 --> 00:11:59.140 + So I keep it only in RD. + +00:11:59.140 --> 00:12:04.020 + But the things that I see beneficial for both projects, + +00:12:04.020 --> 00:12:07.460 + I try to share and to move them to gix. + +00:12:21.500 --> 00:12:22.220 + Sounds great. + +00:12:22.220 --> 00:12:23.780 + And another reminder for the folks + +00:12:23.780 --> 00:12:26.460 + that you can join big blue button also directly. + +00:12:26.460 --> 00:12:29.340 + If you want to type your questions into chat here + +00:12:29.340 --> 00:12:32.580 + or just ask them over mic or with a microphone, + +00:12:32.580 --> 00:12:33.540 + you can do that as well. + +00:12:33.540 --> 00:12:46.260 + I think we still have about actually 10 or 12 more minutes. + +00:12:46.260 --> 00:12:48.100 + I think I underestimated what we had. + +00:12:48.100 --> 00:12:50.100 + So we still have plenty of time for questions. + +00:12:50.100 --> 00:12:56.500 + [AUDIO OUT] + +00:12:56.500 --> 00:13:01.540 + Added one more slot for Gondi in case someone + +00:13:01.540 --> 00:13:05.180 + would like to fill it. + +00:13:05.180 --> 00:13:06.740 + Thanks. + +00:13:06.740 --> 00:13:34.220 + [AUDIO OUT] + +00:13:34.220 --> 00:13:39.260 + How difficult is to add support for new packages to gix? + +00:13:39.260 --> 00:13:44.020 + Have you found that's burdensome versus package L + +00:13:44.020 --> 00:13:48.540 + or other in Emacs package management approach? + +00:13:48.540 --> 00:13:53.940 + Actually, I find it quite easy to create packages for gix. + +00:13:53.940 --> 00:13:59.460 + Maybe because I'm quite familiar with gix source code. + +00:13:59.460 --> 00:14:03.580 + But maybe because it's not that difficult, + +00:14:03.580 --> 00:14:11.660 + you just open a respective model like rd packages or gnu + +00:14:11.660 --> 00:14:13.540 + packages in gix repository. + +00:14:13.540 --> 00:14:15.660 + And you define the package you want. + +00:14:15.660 --> 00:14:19.100 + And you define the dependencies you want. + +00:14:19.100 --> 00:14:25.540 + Actually, a lot of packages already here in gix. + +00:14:25.540 --> 00:14:29.580 + And some of the packages I package in rd + +00:14:29.580 --> 00:14:31.660 + and later move to the gix. + +00:14:31.660 --> 00:14:37.300 + So it's not hard to reference the dependencies + +00:14:37.300 --> 00:14:40.780 + and find the dependencies already declared for you. + +00:14:40.780 --> 00:14:46.420 + But what's more important, you can use dependencies not + +00:14:46.420 --> 00:14:46.780 + only + +00:14:46.780 --> 00:14:49.660 + on Emacs packages, but also on system packages. + +00:14:49.660 --> 00:14:53.300 + For example, in my git package, you + +00:14:53.300 --> 00:14:55.700 + can use a reference to git binary + +00:14:55.700 --> 00:14:58.820 + and predefine the path to the git binary + +00:14:58.820 --> 00:15:03.540 + inside a package configuration by fetching the source code + +00:15:03.540 --> 00:15:04.860 + or something like that. + +00:15:04.860 --> 00:15:11.220 + So any package that requires some system package to work + +00:15:11.220 --> 00:15:14.180 + can use the system package as a dependency. + +00:15:14.180 --> 00:15:18.780 + And it is a big benefit comparing + +00:15:18.780 --> 00:15:21.500 + to other packaging solutions, which + +00:15:21.500 --> 00:15:25.460 + can depend only on Elisp packages. + +00:15:25.460 --> 00:15:36.340 + [AUDIO OUT] + +00:15:36.340 --> 00:15:40.060 + Do you reckon rd is currently opinionated, + +00:15:40.060 --> 00:15:44.180 + or is it a one-size-fits-all framework? + +00:15:44.180 --> 00:15:49.020 + I would say it's quite opinionated. + +00:15:49.020 --> 00:15:52.620 + I started from really bare-bone Emacs. + +00:15:52.620 --> 00:15:55.100 + And I suffered for a while. + +00:15:55.100 --> 00:15:58.620 + And I did features one by one very carefully, + +00:15:58.620 --> 00:16:02.500 + crafting the current state of rd-emacs. + +00:16:02.500 --> 00:16:08.180 + And it's, as I already said, vanilla flavored. + +00:16:08.180 --> 00:16:12.180 + I try to stick with Emacs key bindings + +00:16:12.180 --> 00:16:15.700 + to use built-in packages over external packages, + +00:16:15.700 --> 00:16:21.460 + or use packages which are in the same way, + +00:16:21.460 --> 00:16:26.100 + work in a similar manner to built-in packages. + +00:16:26.100 --> 00:16:29.740 + So it's not usual. + +00:16:29.740 --> 00:16:37.060 + It's not that user-friendly as Doom Emacs or Space Emacs. + +00:16:37.060 --> 00:16:45.580 + It's more like a Prelude, or even more vanilla flavored + +00:16:45.580 --> 00:16:47.380 + than Prelude. + +00:16:47.380 --> 00:16:50.420 + But the good thing is that you can declare a feature + +00:16:50.420 --> 00:16:51.340 + yourself. + +00:16:51.340 --> 00:16:55.260 + And if you don't like something about rd-emacs provided + +00:16:55.260 --> 00:16:59.860 + by features created by me or other contributors, + +00:16:59.860 --> 00:17:03.500 + you can use the features declared by yourself + +00:17:03.500 --> 00:17:06.060 + or by other people. + +00:17:06.060 --> 00:17:11.140 + And one of the plans that I have according to rd, + +00:17:11.140 --> 00:17:13.940 + which we are discussing on mailing list right now, + +00:17:13.940 --> 00:17:20.140 + is contrib directory, which can include features provided + +00:17:20.140 --> 00:17:21.660 + by different people. + +00:17:21.660 --> 00:17:28.500 + For example, it's quite often asked to add evils support. + +00:17:28.500 --> 00:17:31.540 + But I don't use evils. + +00:17:31.540 --> 00:17:35.460 + And I don't want to maintain this package. + +00:17:35.460 --> 00:17:38.140 + But I understand that many people + +00:17:38.140 --> 00:17:43.140 + use such a way of interacting with text editor. + +00:17:43.140 --> 00:17:45.660 + So it would be cool if someone who actually + +00:17:45.660 --> 00:17:48.420 + using this feature will be maintaining it + +00:17:48.420 --> 00:17:51.020 + in contrib directory. + +00:17:51.020 --> 00:17:55.180 + And this feature will be sound with all other features + +00:17:55.180 --> 00:17:55.460 + which + +00:17:55.460 --> 00:17:58.340 + provided by rd itself. + +00:17:58.340 --> 00:18:05.100 + And I think this way, it can cover more people needs + +00:18:05.100 --> 00:18:07.940 + that it can cover right now. + +00:18:07.940 --> 00:18:11.260 + So it will fit more people. + +00:18:11.260 --> 00:18:17.820 + But the core rd won't be expanding its scope. + +00:18:17.820 --> 00:18:19.020 + It will be quite focused. + +00:18:19.020 --> 00:18:27.940 + How to get into rd is already documentation + +00:18:27.940 --> 00:18:31.060 + and getting started guide. + +00:18:31.060 --> 00:18:34.740 + There is a repository on source hut, + +00:18:34.740 --> 00:18:42.700 + github.com/github/sourcehut/abcdw/rd. + +00:18:42.700 --> 00:18:47.620 + And here you can see a very small readme, + +00:18:47.620 --> 00:18:52.540 + which probably doesn't give you too much understanding of + +00:18:52.540 --> 00:18:52.780 + what + +00:18:52.780 --> 00:18:53.580 + is going on. + +00:18:53.580 --> 00:18:56.860 + But it has all the necessary links. + +00:18:56.860 --> 00:18:58.740 + It has a link to manual. + +00:18:58.740 --> 00:19:02.860 + It has information of mailing lists, + +00:19:02.860 --> 00:19:05.940 + which you can use to get help. + +00:19:05.940 --> 00:19:14.620 + It has information about IRC channel in manual. + +00:19:14.620 --> 00:19:18.540 + And you can join this channel and ask questions here. + +00:19:18.540 --> 00:19:22.060 + And of course, you can take the source code + +00:19:22.060 --> 00:19:23.860 + and take a look at it. + +00:19:23.860 --> 00:19:29.500 + And currently, we have examples. + +00:19:29.500 --> 00:19:37.380 + And here in examples, my whole configuration of my team + +00:19:37.380 --> 00:19:38.340 + is present. + +00:19:38.340 --> 00:19:43.580 + It's a little bit drafty. + +00:19:43.580 --> 00:19:47.380 + I would like to reorganize this a little + +00:19:47.380 --> 00:19:50.340 + to make it easier to follow. + +00:19:50.340 --> 00:19:55.140 + And before first release, I hope I will do so. + +00:19:55.140 --> 00:20:04.140 + But you can use it as an example, build on [INAUDIBLE] + +00:20:04.140 --> 00:20:09.700 + Unfortunately, the documentation + +00:20:09.700 --> 00:20:12.180 + is not very extensive. + +00:20:12.180 --> 00:20:17.740 + So you can find it a little hard to follow. + +00:20:17.740 --> 00:20:24.140 + Or maybe you can find it missing some important things. + +00:20:24.140 --> 00:20:29.140 + But before first release, I hope the situation + +00:20:29.140 --> 00:20:30.900 + will become a little better. + +00:20:30.900 --> 00:20:33.860 + But anyway, you can always ask questions + +00:20:33.860 --> 00:20:35.420 + until the documentation is ready. + +00:20:35.420 --> 00:20:44.060 + Can you mix RD with custom Emacs init file? + +00:20:44.060 --> 00:20:45.220 + Yes, you can. + +00:20:45.220 --> 00:20:47.780 + I already mentioned it. + +00:20:47.780 --> 00:20:53.220 + You can just define in your init.el + +00:20:53.220 --> 00:20:57.100 + the statement that you load some other file + +00:20:57.100 --> 00:21:02.860 + and use this file as your usual init.el file. + +00:21:02.860 --> 00:21:06.460 + It will work completely OK. + +00:21:06.460 --> 00:21:13.780 + And you can partially migrate to RD by using such approach. + +00:21:13.780 --> 00:21:17.540 + But I don't recommend this approach in long term. + +00:21:17.540 --> 00:21:19.020 + I already mentioned it. + +00:21:19.020 --> 00:21:24.140 + But having usual init.el file and managing your + +00:21:24.140 --> 00:21:25.340 + dependencies + +00:21:25.340 --> 00:21:29.580 + using package.el or straight.el doesn't + +00:21:29.580 --> 00:21:33.140 + cover system dependencies and other stuff, which + +00:21:33.140 --> 00:21:38.900 + will lead to maybe irreproducible configurations. + +00:21:38.900 --> 00:21:49.780 + [AUDIO OUT] + +00:21:49.780 --> 00:21:51.700 + It's the heads up that we have about two more + +00:21:51.700 --> 00:21:53.180 + minutes of live Q&A time. + +00:21:53.180 --> 00:21:55.100 + And then after that, the stream will move on. + +00:21:55.100 --> 00:21:58.300 + But people are welcome to continue asking questions, + +00:21:58.300 --> 00:22:01.460 + either on the pad or IRC or by joining the Speakable button + +00:22:01.460 --> 00:22:02.380 + room directly. + +00:22:02.380 --> 00:22:04.380 + Thanks again, Andrew. + +00:22:04.380 --> 00:22:23.700 + [AUDIO OUT] + +00:22:23.700 --> 00:22:27.660 + Actually, I didn't expect so much questions. + +00:22:27.660 --> 00:22:33.340 + And when I first took a look at the pad + +00:22:33.340 --> 00:22:38.700 + and thought, OK, those six slots for Q&A will be enough. + +00:22:38.700 --> 00:22:45.100 + Yeah, it's always a nice surprise, I guess. + +00:22:45.100 --> 00:23:04.140 + [AUDIO OUT] + +00:23:04.140 --> 00:23:07.780 + I hope everyone will be OK with jumping windows around, + +00:23:07.780 --> 00:23:10.420 + because I switch between workspaces. + +00:23:10.420 --> 00:23:12.660 + And it may be a little too noisy. + +00:23:12.660 --> 00:23:16.780 + [AUDIO OUT] + +00:23:16.780 --> 00:23:18.660 + Yeah, I think it's fine for the most part. + +00:23:18.660 --> 00:23:20.380 + It was a bit of an interesting thing + +00:23:20.380 --> 00:23:23.500 + trying to keep up the stream with it, because by default, + +00:23:23.500 --> 00:23:26.020 + we maximize the speaker's webcam. + +00:23:26.020 --> 00:23:27.900 + But then you're also sharing your screen + +00:23:27.900 --> 00:23:29.180 + and sharing important details. + +00:23:29.180 --> 00:23:32.780 + So we were also trying to get that on the stream as well. + +00:23:32.780 --> 00:23:33.660 + But yeah, it was fine. + +00:23:33.660 --> 00:23:41.260 + [AUDIO OUT] + +00:23:41.260 --> 00:23:46.780 + OK, I think that there's no more questions. + +00:23:46.780 --> 00:23:53.980 + And we can finish in this section. + +00:23:53.980 --> 00:23:55.580 + All right, sounds good. + +00:23:55.580 --> 00:23:58.020 + Thanks again, Andrew, for the great talk. + +00:23:58.020 --> 00:24:02.780 + As a fellow Tiling Window Manager user and GNU gigs-- + +00:24:02.780 --> 00:24:06.180 + well, former committer, but still very much enthusiast, + +00:24:06.180 --> 00:24:07.540 + I'm very much interested in this. + +00:24:07.540 --> 00:24:09.820 + So I know I'll definitely be checking your work out. + +00:24:09.820 --> 00:24:11.660 + So thanks again. + +00:24:11.660 --> 00:24:13.860 + Thank you very much for organization + +00:24:13.860 --> 00:24:15.820 + and all your contributions. + +00:24:15.820 --> 00:24:17.540 + Very much appreciated. + +00:24:17.540 --> 00:24:18.100 + Thank you. + +00:24:18.100 --> 00:24:18.600 + Thank you. + +00:24:18.600 --> 00:24:19.340 + Appreciate it. + +00:24:19.340 --> 00:24:20.140 + All right, take care. + +00:24:20.140 --> 00:24:22.580 + And we'll see you around. + +00:24:22.580 --> 00:24:23.580 + Bye-bye. + +00:24:23.580 --> 00:24:25.140 + Bye. + +00:24:25.140 --> 00:24:28.500 + [AUDIO OUT] + +00:24:30.500 --> 00:24:30.500 + + diff --git a/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--answers.vtt b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--answers.vtt new file mode 100644 index 00000000..eee7b8cc --- /dev/null +++ b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--answers.vtt @@ -0,0 +1,2217 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.492 +[Amin]: Yep, thanks RMS for the great talk. + +00:00:02.493 --> 00:00:04.759 +Now it's time for questions and answers. + +00:00:04.760 --> 00:00:13.519 +I will paste the questions here and RMS will choose which ones to answer. + +00:00:13.520 --> 00:00:17.501 +[Richard]: Please don't post a lot of questions in the Mumble chat + +00:00:17.502 --> 00:00:19.239 +and fill up the buffer. + +00:00:19.240 --> 00:00:25.359 +There's a limit to what I can see on the screen, so make sure it's visible. + +00:00:25.360 --> 00:00:27.159 +Don't get too far ahead. + +00:00:27.160 --> 00:00:42.279 +[Amin]: Sure, I will only paste one or two questions at a time. + +00:00:42.280 --> 00:00:43.639 +I think it would also be helpful + +00:00:43.640 --> 00:00:47.359 +if you read out the questions as you answer them, Richard. + +00:00:47.360 --> 00:00:56.799 +[Richard]: Okay. + +NOTE Pragmatically, how are people that buy into these ideals, and especially those that build the software, meant to live/thrive, short of renouncing many of the luxuries of modern life, as many have been struggling to reconcile both it appears. Wouldn't it be smarter and more productive longer-term to solve that problem too? + +00:00:56.800 --> 00:01:01.079 +Well, this question is a little silly. + +00:01:01.080 --> 00:01:05.159 +It's based on sort of all or none thinking. + +00:01:05.160 --> 00:01:09.079 +Pragmatically, how are people that buy into these ideals? + +00:01:09.080 --> 00:01:11.199 +I find that term offensive. + +00:01:11.200 --> 00:01:16.479 +And especially those that build the software meant to live/thrive, + +00:01:16.480 --> 00:01:20.839 +short of renouncing many of the luxuries of modern life. + +00:01:20.840 --> 00:01:24.239 +It's repackaged standard. + +00:01:24.240 --> 00:01:30.319 +You'll die if you don't write proprietary software. + +00:01:30.320 --> 00:01:33.839 +But most people in the world don't write proprietary software + +00:01:33.840 --> 00:01:36.079 +and that doesn't kill them. + +00:01:36.080 --> 00:01:41.799 +Whatever you do to make money, if you're reasonably well paid at it, + +00:01:41.800 --> 00:01:44.119 +which if you're working in software, I hope you are, + +00:01:44.120 --> 00:01:49.479 +that enables you to have a lot of time to do something else, + +00:01:49.480 --> 00:01:53.199 +like write some free software, even supposing you find no way + +00:01:53.200 --> 00:02:01.639 +to make any money from the free software world, but that's just the worst case. + +00:02:01.640 --> 00:02:08.079 +And for a lot of people, the life they find isn't the worst case. + +00:02:08.080 --> 00:02:13.559 +So I think it's basically, the question is an exaggeration. + +00:02:13.560 --> 00:02:16.399 +We don't need to worry about it. + +00:02:16.400 --> 00:02:22.479 +There are many businesses which do hire people to write free software. + +00:02:22.480 --> 00:02:26.079 +So write whatever free program for the business + +00:02:26.080 --> 00:02:28.079 +that the business wants you to write. + +00:02:28.080 --> 00:02:32.759 +And make sure you get permission to write your own software + +00:02:32.760 --> 00:02:34.639 +and release it as free software + +00:02:34.640 --> 00:02:38.239 +and contribute it to free software projects, + +00:02:38.240 --> 00:02:46.759 +and you'll be able to contribute. + +00:02:46.760 --> 00:02:48.439 +How can I help? + +00:02:48.440 --> 00:02:52.519 +In addition, one very big part of the software business + +00:02:52.520 --> 00:02:56.359 +is custom software development for a client. + +00:02:56.360 --> 00:02:59.919 +One client at a time, basically. + +00:02:59.920 --> 00:03:05.519 +And if that business is not treating its clients as suckers, + +00:03:05.520 --> 00:03:10.719 +it will release the code to them under a free software license. + +00:03:10.720 --> 00:03:14.039 +Okay, there you are. You're getting paid to write free software. + +00:03:14.040 --> 00:03:24.599 +Perfectly ethical. + +NOTE I have been admiring your work for free software for many years now. I am a bit concerned about what will happen to the GNU project when you retire (not soon, I hope!!). Have you planned how to manage the GNU project in the long run? + +00:03:24.600 --> 00:03:28.719 +I have been admiring your work for free software for many years now. + +00:03:28.720 --> 00:03:33.639 +I'm a bit concerned about what will happen to the GNU project when you retire. + +00:03:33.640 --> 00:03:37.359 +Have you planned how to manage the GNU project in the long run? + +00:03:37.360 --> 00:03:45.359 +I haven't found a way. I had an idea for what to do. + +00:03:45.360 --> 00:03:54.639 +I hoped to train some people who were activists and committed supporters + +00:03:54.640 --> 00:04:01.159 +to start making some decisions without me and I would give them feedback. + +00:04:01.160 --> 00:04:10.199 +But I didn't succeed in getting them to discuss issues and propose decisions. + +00:04:10.200 --> 00:04:11.719 +Well, I guess I'll have to try again. Over. + +00:04:11.720 --> 00:04:28.679 +Just a second. I have to go and open the door. + +NOTE In response to your aversion to JavaScript support in Emacs: In the same way that to revolt against the nonfree spirit in software development one has to develop software, and that to fight nonfree compilers one has to write a free compiler - can you fairly consider rejection of JavaScript as a tool conducive to improving the state of free JavaScript? A server can send back any MIME type to execute on your machine, JS was just the most convenient. + +00:04:52.520 --> 00:04:55.479 +In response to your aversion to JavaScript support in Emacs + +00:04:55.480 --> 00:04:58.039 +in the same way that to revolt against + +00:04:58.040 --> 00:05:00.479 +the non-free spirit in software development, + +00:05:00.480 --> 00:05:04.439 +one has to develop software and that to fight non-free compilers, + +00:05:04.440 --> 00:05:05.999 +one has to write a free compiler. + +00:05:06.000 --> 00:05:11.199 +Can you fairly consider rejection of JavaScript as a tool conducive + +00:05:11.200 --> 00:05:14.159 +to improving the state of free JavaScript? + +00:05:14.160 --> 00:05:16.759 +There's a fundamental confusion here. + +00:05:16.760 --> 00:05:23.439 +The problem with JavaScript is not comparable to the problem of + +00:05:23.440 --> 00:05:31.519 +non-free C compilers or C++ compilers or Java compilers. + +00:05:31.520 --> 00:05:36.839 +This is a totally different kind of issue. + +00:05:36.840 --> 00:05:40.479 +We have free JavaScript support. + +00:05:40.480 --> 00:05:45.839 +Free browsers contain that. + +00:05:45.840 --> 00:05:48.519 +That's not the issue. + +00:05:48.520 --> 00:05:52.399 +The issue is what about the programs you're going to run? + +00:05:52.400 --> 00:05:58.359 +If you're talking about C, well, if you're going to run a C program, + +00:05:58.360 --> 00:06:02.799 +it's because at compile at first, it's because you got the source code. + +00:06:02.800 --> 00:06:09.039 +Probably it's free software or else it's a private project, + +00:06:09.040 --> 00:06:14.919 +internal project, and there's no particular danger in that. + +00:06:14.920 --> 00:06:18.399 +If JavaScript were just like that, + +00:06:18.400 --> 00:06:21.319 +there'd be no particular danger in JavaScript either. + +00:06:21.320 --> 00:06:26.959 +The problem is that hundreds of thousands of websites, + +00:06:26.960 --> 00:06:33.199 +or is it millions, are sending JavaScript programs to their visitors + +00:06:33.200 --> 00:06:35.919 +who don't even know what JavaScript is, + +00:06:35.920 --> 00:06:39.159 +who are not programmers, who have no idea what's going on. + +00:06:39.160 --> 00:06:43.439 +So these programs are usually non-free. + +00:06:43.440 --> 00:06:48.599 +They end up in the user's browser, they run, many of them are malware. + +00:06:48.600 --> 00:06:51.039 +So what's going to happen? + +00:06:51.040 --> 00:06:57.679 +Basically, JavaScript is a platform for websites to mistreat users. + +00:06:57.680 --> 00:06:59.679 +I know it can be used in other ways, + +00:06:59.680 --> 00:07:06.319 +but socially, the existence of those other ways makes little difference. + +00:07:06.320 --> 00:07:10.799 +The important thing about JavaScript is the danger that it creates. + +NOTE With all the recent additions and optimizations to Emacs Lisp (lexical scoping, native compilation etc.) would you deem Emacs Lisp suitable for general purpose programming outside Emacs (i.e. scripting, running web servers). If not, why? + +00:07:27.000 --> 00:07:32.279 +This question is about the idea of using Emacs Lisp + +00:07:32.280 --> 00:07:37.919 +for general purpose programming that has nothing to do with Emacs. + +00:07:37.920 --> 00:07:44.479 +Well, in theory, I guess, in principle, there's nothing wrong with that. + +00:07:44.480 --> 00:07:56.879 +But I think that would be a distraction, and I'd rather we didn't do it. + +00:07:56.880 --> 00:08:02.359 +Now, if we had a thousand great programmers ready to do that, + +00:08:02.360 --> 00:08:05.999 +and every other thing we could use, sure. + +00:08:06.000 --> 00:08:12.639 +But the fact is, we don't. And I'd really rather-- + +00:08:12.640 --> 00:08:17.479 +There are many platforms that are fine to write programs on. + +00:08:17.480 --> 00:08:26.399 +So I'd rather we work on making Emacs better at editing + +00:08:26.400 --> 00:08:30.799 +and improving Emacs Lisp in the ways that help that goal, + +00:08:30.800 --> 00:08:38.999 +and leave developing general purpose programming platforms to other languages. + +NOTE Could you give a few examples of the medium-sized jobs necessary for WYSIWYG-editor support in Emacs? + +00:08:44.760 --> 00:08:51.559 +Could I give a list of the specific medium-sized jobs + +00:08:51.560 --> 00:08:54.959 +necessary for WYSIWYG editing? + +00:08:54.960 --> 00:08:58.999 +Well, I can't really. I don't have a list of one. + +00:08:59.000 --> 00:09:04.399 +And I'd really appreciate it if people started putting together such a list. + +00:09:04.400 --> 00:09:08.839 +But if you look at every feature that LibreOffice has + +00:09:08.840 --> 00:09:14.399 +that Emacs doesn't have, I think you will get a list. + +00:09:14.400 --> 00:09:17.679 +Now, maybe some of those are not that important. + +00:09:17.680 --> 00:09:23.759 +Maybe only a subset of them would make the list of really important ones. + +00:09:23.760 --> 00:09:27.439 +But I think that will give everybody a start. + +NOTE Should GNU (or someone else) define a safe-subset of HTML/CSS/JS to make web browsers simpler and safer (e.g. by preventing JS from contacting servers)? + +00:09:33.480 --> 00:09:39.159 +Should GNU or someone else define a safe subset of HTML, CSS, JS + +00:09:39.160 --> 00:09:41.559 +to make web browsers simpler and safer? + +00:09:41.560 --> 00:09:46.519 +You know, that would be an interesting thing to explore. + +00:09:46.520 --> 00:09:48.879 +But I don't know whether it can be done. + +00:09:48.880 --> 00:09:53.439 +The thing is, one of the dangerous things about JavaScript + +00:09:53.440 --> 00:09:55.959 +is browser profiling. + +00:09:55.960 --> 00:10:02.559 +Every machine runs a program at a slightly different speed. + +00:10:02.560 --> 00:10:09.399 +And the idea of browser profiling is that the website sends a JavaScript program + +00:10:09.400 --> 00:10:13.399 +to run on every visitor's browser. + +00:10:13.400 --> 00:10:19.999 +And it's actually a collection of benchmarks. + +00:10:20.000 --> 00:10:26.079 +And the collection of results is different for each user's computer. + +00:10:26.080 --> 00:10:30.919 +And so it enables the website to recognize each one when it comes back + +00:10:30.920 --> 00:10:34.799 +even if there's no cookie to help it. + +00:10:34.800 --> 00:10:42.719 +So, which features are sufficient to make possible browser profiling? + +00:10:42.720 --> 00:10:46.799 +There may be no particular unusual feature that's crucial. + +00:10:46.800 --> 00:10:48.639 +But arithmetic might be enough. + +NOTE How can we ensure the continuity of an understanding of the more arcane parts of the [Emacs] source code, and increase their evolvability, notably with regards to display, single-threading limitations, etc.? + +00:10:57.440 --> 00:11:00.679 +How can we ensure the continuity of an understanding + +00:11:00.680 --> 00:11:02.999 +of the more arcane parts of source code + +00:11:03.000 --> 00:11:08.279 +and increase their evolvability, notably with regard to display, + +00:11:08.280 --> 00:11:14.879 +single-threading limitations, etc.? + +00:11:14.880 --> 00:11:19.759 +Well, single-threading is a very specific thing. + +00:11:19.760 --> 00:11:26.559 +And the furthest that I've bothered to think about it is + +00:11:26.560 --> 00:11:33.799 +how can we enable easily multiple list program threads + +00:11:33.800 --> 00:11:35.199 +to be running in parallel. + +00:11:35.200 --> 00:11:39.759 +But if you're talking about multi-threading in display, + +00:11:39.760 --> 00:11:42.239 +I don't know if that even helps. + +00:11:42.240 --> 00:11:48.599 +Of course, my machine doesn't really enable me to run + +00:11:48.600 --> 00:11:57.719 +multiple threads in a single program, so it never mattered to me. + +00:11:57.720 --> 00:12:06.319 +Basically, now, development of a display code + +00:12:06.320 --> 00:12:12.239 +not in regard to threads, well, that's more feasible. + +00:12:12.240 --> 00:12:19.279 +But the thing is, generally, any new feature is likely to require + +00:12:19.280 --> 00:12:25.799 +changes in the buffer data structure to represent the use of the feature. + +00:12:25.800 --> 00:12:29.199 +And I think that's going to be the hard part. + +00:12:29.200 --> 00:12:33.479 +So, display won't be the hard part, and it won't be the first part. + +00:12:33.480 --> 00:12:37.599 +The first part is figuring out how you're going to represent a buffer + +00:12:37.600 --> 00:12:43.519 +with a certain display bell or whistle in it. + +00:12:43.520 --> 00:12:47.719 +And once you've worked that out and worked out how it's going to work well + +00:12:47.720 --> 00:12:51.359 +in editing, then I think you'll be able to figure out + +00:12:51.360 --> 00:12:55.119 +what display has to do to handle it. + +00:12:55.120 --> 00:13:01.079 +Of course, you have to decide that data structure, + +00:13:01.080 --> 00:13:05.199 +thinking about how display is going to handle it efficiently. + +00:13:05.200 --> 00:13:13.119 +If the data structure is bad, it won't be possible to display efficiently. + +00:13:13.120 --> 00:13:15.759 +So you need to think about that at that stage. + +00:13:15.760 --> 00:13:19.599 +But the actual work is working out the data structure + +00:13:19.600 --> 00:13:21.559 +and the editing to handle it. + +00:13:21.560 --> 00:13:31.639 +Do you recommend reaching out to schools for volunteers instead of universities + +00:13:31.640 --> 00:13:35.639 +because they're more prone to value the objectives of freedom? + +00:13:35.640 --> 00:13:38.519 +Well, reaching out for what? + +00:13:38.520 --> 00:13:43.719 +Reaching out to try to teach people about freedom? + +00:13:43.720 --> 00:13:47.479 +Or reaching out to find more developers? + +00:13:47.480 --> 00:13:50.479 +Maybe that person could respond. + +NOTE Are there any problems or disadvantages using the GNU AGPL for non-networked software like Emacs packages? + +00:13:50.480 --> 00:14:05.199 +Is there any problem or disadvantage in using the GNU AGPL + +00:14:05.200 --> 00:14:08.519 +for non-network software like Emacs packages? + +00:14:08.520 --> 00:14:10.239 +I don't see one. + +00:14:10.240 --> 00:14:17.359 +The reason why I didn't put the AGPL clause into the regular GNU GPL + +00:14:17.360 --> 00:14:22.319 +is it seemed a bit radical and I figured the community + +00:14:22.320 --> 00:14:27.079 +would be happier if that radical change didn't happen + +00:14:27.080 --> 00:14:31.839 +in the GNU general public license itself. + +00:14:31.840 --> 00:14:35.839 +I would like the person who asked the previous question + +00:14:35.840 --> 00:14:40.719 +to respond to what I said so I can get that answer + +00:14:40.720 --> 00:14:43.519 +and finish answering her question. + +00:14:43.520 --> 00:14:46.119 +Right. + +00:14:46.120 --> 00:14:50.279 +I will let you know if we end up hearing back from you--from per. + +NOTE Is there a list of Emacs issues which can be solved by programmers with different levels? For example my level is A, I know basic elisp and C. How can I help? + +00:14:50.280 --> 00:15:03.439 +Is there a list of Emacs issues which can be solved by programmers + +00:15:03.440 --> 00:15:05.079 +with different levels? + +00:15:05.080 --> 00:15:07.319 +I don't know of one. + +00:15:07.320 --> 00:15:14.159 +I tend to think that people who know basic programs + +00:15:14.160 --> 00:15:20.359 +the basic level of list programming can't contribute yet. + +00:15:20.360 --> 00:15:25.919 +They might be able to start debugging problems. + +00:15:25.920 --> 00:15:30.359 +It won't be easy but that might be a good first thing to do. + +00:15:30.360 --> 00:15:36.359 +Look at bugs that are waiting and see if you can debug one of them + +00:15:36.360 --> 00:15:39.519 +and then when you find out what's actually going wrong + +00:15:39.520 --> 00:15:44.159 +you can send that to the developers and it will very likely + +00:15:44.160 --> 00:15:46.679 +enable them to fix the problem quickly. + +00:15:46.680 --> 00:15:52.279 +In the process you'll learn a lot about programs + +00:15:52.280 --> 00:15:54.039 +and how programs are actually written + +00:15:54.040 --> 00:15:56.959 +and how to understand the code you actually come across. + +00:15:56.960 --> 00:16:02.439 +With features like Org mode and enriched mode, + +00:16:02.440 --> 00:16:06.759 +it seems that Emacs is getting closer to the goal of WYSIWYG. + +00:16:06.760 --> 00:16:10.799 +Well it's got somewhat closer but it has a very long way to go. + +00:16:10.800 --> 00:16:15.119 +If you compare it with something like LibreOffice + +00:16:15.120 --> 00:16:17.039 +you'll see how long away there is to go. + +00:16:17.040 --> 00:16:31.399 +There was an effort called GuileEmacs a while back + +00:16:31.400 --> 00:16:36.839 +which was some effort to get Guile to be able to compile and run Emacs Lisp. + +NOTE What roadblocks kept some of the other efforts from being used with Emacs? + +00:16:36.840 --> 00:16:40.959 +[Amin]: You mentioned there were still some challenges relating to Guile. + +00:16:40.960 --> 00:16:45.879 +What roadblocks kept some of the other efforts from being used with Emacs? + +00:16:45.880 --> 00:16:50.275 +[Richard]: Well we never finished solving the problem + +00:16:50.276 --> 00:16:55.239 +of reconciling Guile data types with Emacs Lisp data types. + +00:16:55.240 --> 00:17:02.439 +We got an idea for how to deal with the fact that + +00:17:02.440 --> 00:17:08.599 +Scheme handling of nil is different from Lisp handling of nil. + +00:17:08.600 --> 00:17:14.679 +The idea was that maybe this would get us close enough it could actually work. + +00:17:14.680 --> 00:17:19.359 +But I don't think anyone fully implemented it and made it actually work. + +NOTE What do you use emacs for beyond editing? + +00:17:36.240 --> 00:17:39.759 +What do you use Emacs for beyond editing? + +00:17:39.760 --> 00:17:42.679 +Well I use it for reading and writing email. + +00:17:42.680 --> 00:17:44.759 +That's what I mainly do. + +00:17:44.760 --> 00:17:47.839 +That's what I do most of the day. + +00:17:47.840 --> 00:17:52.559 +I could... I mean should I sing my song? + +00:17:52.560 --> 00:17:55.119 +Sure. + +NOTE Song about e-mail + +00:17:55.120 --> 00:18:02.639 +I've been answering my email all the goddamn day. + +00:18:02.640 --> 00:18:10.879 +I've been answering my email 'cause my work gets done that way. + +00:18:10.880 --> 00:18:14.879 +Can't you feel the fingers aching? + +00:18:14.880 --> 00:18:18.479 +Type until early in the morn. + +00:18:18.480 --> 00:18:22.319 +Can't you see the letters blurring? + +00:18:22.320 --> 00:18:25.799 +It's just an ad for porn. + +00:18:25.800 --> 00:18:30.519 +You can see how out of date that song is 'cause we don't + +00:18:30.520 --> 00:18:32.039 +get ads for porn much anymore. + +00:18:32.400 --> 00:18:37.279 +[Amin]: Thanks for the performance. + +NOTE Emacs is used by a small population relative to the population that could benefit from it. Do you have any thoughts on how to expand the user base more broadly even among software developers? + +00:18:49.556 --> 00:18:52.919 +[Richard]: Emacs is used by a small population relative to + +00:18:52.920 --> 00:18:54.639 +the population that could benefit from it. + +00:18:54.640 --> 00:18:59.519 +Do you have any thoughts on how to expand the user base more broadly, + +00:18:59.520 --> 00:19:02.159 +even among software developers? + +00:19:02.160 --> 00:19:11.679 +No. Basically, the fact is that on that aspect of things, + +00:19:11.680 --> 00:19:20.759 +VS Code has an advantage and the advantage comes from Microsoft. + +00:19:20.760 --> 00:19:28.159 +It's pushing that together as part of a large collection + +00:19:28.160 --> 00:19:32.839 +of evil proprietary software that subjugates its users. + +00:19:32.840 --> 00:19:36.119 +But those users don't understand that issue. + +00:19:36.120 --> 00:19:40.639 +So, I mean, I sure wish I could come up with an idea + +00:19:40.640 --> 00:19:44.279 +for how to spread awareness of free software + +00:19:44.280 --> 00:19:46.599 +and the injustice of non-free software. + +00:19:46.600 --> 00:19:52.879 +The best one that I know of is to show them the TEDx talk that you saw. + +00:19:52.880 --> 00:19:57.239 +If you show that to people, they'll get at least a basic idea + +00:19:57.240 --> 00:19:59.039 +of what's at stake here and why. + +NOTE Would a namespace system similar to Common Lisp packages but without :USE work in Emacs? Modern CL implementations have package local nicknames to create package local prefixes. + +00:20:05.760 --> 00:20:10.719 +Would a namespace system similar to Common Lisp packages but without :USE + +00:20:10.720 --> 00:20:12.199 +work in Emacs? + +00:20:12.200 --> 00:20:14.319 +I suppose it would. + +00:20:14.320 --> 00:20:18.399 +I mean, basically, the thing that's really broken about + +00:20:18.400 --> 00:20:21.599 +Common Lisp packages is use. + +00:20:21.600 --> 00:20:29.999 +But it's not crucial, or at least it's not crucial to allow that to exist + +00:20:30.000 --> 00:20:32.119 +for arbitrary use. + +00:20:32.120 --> 00:20:37.079 +Maybe you want to have something saying where a package can specify + +00:20:37.080 --> 00:20:42.759 +whether to use the standard system functions and variables and so on. + +00:20:42.760 --> 00:20:49.679 +But there is a drawback to Common Lisp packages, + +00:20:49.680 --> 00:21:01.719 +which is that all of the aspects of any given symbol have to go together. + +00:21:01.720 --> 00:21:07.319 +So if compile-foo is a variable and it's also a function, + +00:21:07.320 --> 00:21:09.999 +and it's also a property name, + +00:21:10.000 --> 00:21:15.359 +then if your symbol foo is aliased to compile-foo, + +00:21:15.360 --> 00:21:21.839 +that means it's aliased as a function, aliased as a variable, + +00:21:21.840 --> 00:21:23.959 +and aliased as a property name. + +00:21:23.960 --> 00:21:30.319 +And aliased is anything else that you're going to point to from list structure. + +00:21:30.320 --> 00:21:35.799 +So it's not going to work really smoothly. + +00:21:35.800 --> 00:21:42.239 +And I tend to think that we're better off with a naming convention. + +00:21:42.240 --> 00:21:50.599 +Since the use feature of Common Lisp packages causes trouble, + +00:21:50.600 --> 00:21:57.919 +well if you don't use that, why is it better to write compile-foo + +00:21:57.920 --> 00:22:03.479 +and have that be foo in the compile package than to write compile-foo? + +00:22:03.480 --> 00:22:09.959 +The packages are almost equivalent to name prefixes. + +00:22:09.960 --> 00:22:18.799 +And I think that there is an advantage of clarity to writing the name prefixes, + +00:22:18.800 --> 00:22:20.639 +even in the same file. + +00:22:20.640 --> 00:22:28.759 +That abbreviation, which is meant to just shorten the code and make it simpler, + +00:22:28.760 --> 00:22:32.319 +looks simpler, I believe doesn't actually help. + +00:22:32.320 --> 00:22:42.439 +And I say that based on many years of writing code that way. + +NOTE With Emacs 29 adding more (awesome) features into vanilla Emacs, how should we ensure vanilla Emacs does not get bloated with many similar features? (example: ido/icomplete, vc/magit) + +00:22:42.440 --> 00:22:48.719 +With Emacs 29 adding more awesome features into Vanilla Emacs, + +00:22:48.720 --> 00:22:52.919 +how should we ensure vanilla Emacs does not get bloated + +00:22:52.920 --> 00:22:54.879 +with many similar features? + +00:22:54.880 --> 00:23:03.799 +Example, ido/icomplete, vc/magit. + +00:23:03.800 --> 00:23:08.759 +Well, to some extent we can't. Users do things differently. + +00:23:08.760 --> 00:23:13.679 +I have never used Magit because I don't want to get used to using anything + +00:23:13.680 --> 00:23:18.839 +that's not, packages that are not actually part of Emacs. + +00:23:18.840 --> 00:23:25.199 +Now, a couple of years ago, the author of Maggot said he was starting to work + +00:23:25.200 --> 00:23:30.919 +on getting the copyright assignments to include Magit in Emacs. + +00:23:30.920 --> 00:23:36.159 +But I was unable to get any information on how this is progressing. + +00:23:36.160 --> 00:23:44.599 +So because I've never actually seen Magit and because Git is actually not + +00:23:44.600 --> 00:23:50.559 +the VC system that I use most, I don't know if I'd want to use Magit. + +00:23:50.560 --> 00:23:53.199 +I'd probably be happier using VC. + +00:23:53.200 --> 00:23:59.959 +I'm told that they have extremely different basic approaches to doing things. + +00:23:59.960 --> 00:24:03.319 +They're not just slight variants of each other. + +00:24:03.320 --> 00:24:07.039 +Now, having multiple slight variants, you know, + +00:24:07.040 --> 00:24:10.919 +things doing similar jobs in little different ways, + +00:24:10.920 --> 00:24:13.959 +that could be seen as redundant. + +00:24:13.960 --> 00:24:23.759 +But when packages have very different approaches, I think that's not redundant. + +00:24:23.760 --> 00:24:26.919 +Clarified version of earlier question. + +NOTE Do you recommend reaching out in [high] schools for volunteers instead of universities because they are more prone to value the objectives of freedom? + +00:24:26.920 --> 00:24:31.599 +Do you recommend reaching out in schools for volunteers for both advocacy + +00:24:31.600 --> 00:24:35.239 +and development instead of universities? + +00:24:35.240 --> 00:24:40.839 +I think that you'll find few people in high schools. + +00:24:40.840 --> 00:24:46.799 +I think the question when it says schools means high schools. + +00:24:46.800 --> 00:24:51.079 +I think you will find only very rarely someone in high school + +00:24:51.080 --> 00:24:57.279 +who is good enough at programming to start actually developing things. + +00:24:57.280 --> 00:25:00.239 +Once in a while, I guess. + +00:25:00.240 --> 00:25:07.039 +As an activist, I think somewhat more often. + +00:25:07.040 --> 00:25:09.919 +But the main thing is, do you know how to have a rapport + +00:25:09.920 --> 00:25:13.039 +with high school students? + +00:25:13.040 --> 00:25:16.359 +If you do, it would be a great thing to try. + +00:25:16.360 --> 00:25:26.519 +We have had some projects of teaching free software to people in public schools. + +00:25:26.520 --> 00:25:32.559 +And if you want to work on that, I suggest sending me an email + +00:25:32.560 --> 00:25:35.039 +and I'll put you in touch with someone who's done it. + +NOTE What was the thought process behind making Emacs Lisp dynamically scoped when you first created it? What advantages did it provide over the alternative? + +00:25:35.040 --> 00:25:44.719 +What was the thought process behind making Emacs Lisp dynamically scoped? + +00:25:44.720 --> 00:25:46.039 +It was easy. + +00:25:46.040 --> 00:25:53.159 +I knew perfectly well how to write a simple, small Lisp interpreter + +00:25:53.160 --> 00:25:55.039 +that was dynamically scoped. + +00:25:55.040 --> 00:26:03.919 +And small was absolutely necessary at the time because I was trying to make it + +00:26:03.920 --> 00:26:12.079 +able to run in a machine whose total address space was one megabyte. + +00:26:12.080 --> 00:26:16.639 +So the code had to be small. + +00:26:16.640 --> 00:26:25.239 +Why did I implement if and I believe not cond? + +00:26:25.240 --> 00:26:30.359 +Why did I implement or and not unless? + +00:26:30.360 --> 00:26:33.439 +Because you didn't need those others. + +00:26:33.440 --> 00:26:39.839 +You could write your Lisp code with a smaller Lisp interpreter + +00:26:39.840 --> 00:26:49.759 +if you didn't have those other convenient traditional standard parts of Lisp. + +00:26:49.760 --> 00:26:54.519 +So I stripped Emacs Lisp down to bare bones. + +00:26:54.520 --> 00:27:01.679 +Of course, nowadays that's not necessary anymore. + +00:27:01.680 --> 00:27:08.239 +Emacs used to be criticized as eight megabytes and constantly swapping. + +00:27:08.240 --> 00:27:10.799 +And someone pointed out to me ten years ago + +00:27:10.800 --> 00:27:13.079 +that if something's only eight megabytes, + +00:27:13.080 --> 00:27:14.879 +it's not going to swap at all anymore. + +NOTE It's hard to pick up Emacs if you do not speak English. Can something be done to address that? + +00:27:18.766 --> 00:27:21.759 +It's hard to pick up Emacs if you do not speak English. + +00:27:21.760 --> 00:27:24.679 +Can something be done to address that? + +00:27:24.680 --> 00:27:28.239 +Well, what do you actually suggest? + +00:27:28.240 --> 00:27:30.039 +Is it the documentation? + +00:27:30.040 --> 00:27:34.279 +Is it the names of commands? + +00:27:34.280 --> 00:27:39.319 +Is it the doc strings or is it the manual or both? + +00:27:39.320 --> 00:27:43.879 +Is it the messages that Emacs displays? + +00:27:43.880 --> 00:27:47.679 +I mean, each of these is a different issue technically. + +00:27:47.680 --> 00:27:51.759 +Now, the easiest thing to deal with would be the messages + +00:27:51.760 --> 00:27:53.679 +because in other GNU packages, + +00:27:53.680 --> 00:27:57.639 +we have a system for internationalizing messages. + +00:27:57.640 --> 00:28:01.079 +It's hard to adapt it directly to Emacs + +00:28:01.080 --> 00:28:06.199 +because it's designed for programs, tools, or applications + +00:28:06.200 --> 00:28:09.639 +that have a fixed set of messages to display. + +00:28:09.640 --> 00:28:12.239 +Emacs doesn't. You load in a different Lisp program, + +00:28:12.240 --> 00:28:14.359 +it's got a different set of messages. + +00:28:14.360 --> 00:28:17.119 +How exactly do you want to handle this? + +00:28:17.120 --> 00:28:18.439 +But it could be done. + +00:28:18.440 --> 00:28:20.879 +It's not a terribly hard problem. + +00:28:20.880 --> 00:28:25.559 +If you're interested, please work on it. + +00:28:25.560 --> 00:28:29.719 +What about the command names? + +00:28:29.720 --> 00:28:35.319 +Well, you could imagine coming up with an alternate set of command names + +00:28:35.320 --> 00:28:40.159 +and maybe a different character instead of M-x + +00:28:40.160 --> 00:28:46.839 +so that it would read only the translated command names + +00:28:46.840 --> 00:28:51.319 +and the ordinary Emacs command names wouldn't get in the way. + +00:28:51.320 --> 00:28:57.719 +M-x might still be there, but if you type this other thing, M-foobar, + +00:28:57.720 --> 00:29:05.799 +then it would only complete over the command names in the other language. + +00:29:05.800 --> 00:29:10.479 +This might be pretty simple to do technically, + +00:29:10.480 --> 00:29:16.559 +although working out the details might take a good deal of thought. + +00:29:16.560 --> 00:29:20.999 +And then docstrings? + +00:29:21.000 --> 00:29:25.799 +Well, you could just write another set of them + +00:29:25.800 --> 00:29:28.839 +and have other help commands to display them. + +NOTE Do you use Org or Org mode, and if so, to what extent? + +00:29:28.840 --> 00:29:36.159 +Do you use Org or Org mode, and if so, to what extent? + +00:29:36.160 --> 00:29:39.759 +I have never used them, and here's why. + +00:29:39.760 --> 00:29:48.359 +I think that the design process of Org mode went awry, + +00:29:48.360 --> 00:29:52.959 +not at the very beginning, but at the next stage. + +00:29:52.960 --> 00:29:56.759 +Originally, Org mode was an outlining mode. + +00:29:56.760 --> 00:29:58.559 +It's not something I wanted to use. + +00:29:58.560 --> 00:30:02.999 +I had nothing against including it, but I didn't ever try to use it. + +00:30:03.000 --> 00:30:08.719 +The documentation of it somehow wasn't easy for me to grasp, + +00:30:08.720 --> 00:30:11.719 +especially since I had no actual use for it, + +00:30:11.720 --> 00:30:16.079 +no reason to go through and remember all those things. + +00:30:16.080 --> 00:30:24.599 +Anyway, then people started developing other facilities to use the Org syntax, + +00:30:24.600 --> 00:30:27.599 +and they're totally unrelated to each other. + +00:30:27.600 --> 00:30:30.599 +They just happen to use the Org syntax, + +00:30:30.600 --> 00:30:34.719 +and some of them, occasionally, I thought it might be interesting to use this, + +00:30:34.720 --> 00:30:38.639 +but to use it, first I'd have to learn the Org syntax, + +00:30:38.640 --> 00:30:43.199 +and that was a task that had already proved discouraging. + +00:30:43.200 --> 00:30:46.759 +Now, the mistaken design, I think, + +00:30:46.760 --> 00:30:51.159 +was to integrate all those other facilities with Org mode. + +00:30:51.160 --> 00:30:54.239 +They should all have been separate, modularly separate, + +00:30:54.240 --> 00:30:59.439 +so that you could maybe use them with Org mode if you wanted to, + +00:30:59.440 --> 00:31:03.199 +but also use them separately from Org mode, + +00:31:03.200 --> 00:31:05.279 +and they'd be documented separately, + +00:31:05.280 --> 00:31:08.999 +and those I wanted to use, I would have learned to use. + +00:31:09.000 --> 00:31:10.999 +But that was hard to do. + +00:31:11.000 --> 00:31:16.639 +They had been welded together such that it was not easy to separate them. + +00:31:16.640 --> 00:31:20.439 +I really wish they'd get separated, but that's not an easy job. + +00:31:20.440 --> 00:31:23.759 +Each one needs to be remodularized. + +00:31:23.760 --> 00:31:31.759 +Anyway, there is something for which I think Org mode could become an advance. + +00:31:31.760 --> 00:31:39.759 +I'm not saying it isn't useful for people who like what it does, + +00:31:39.760 --> 00:31:46.399 +but it might play an important role if it were extended to do it, + +00:31:46.400 --> 00:31:53.639 +and that is we could use a replacement for Texinfo. + +00:31:53.640 --> 00:31:57.639 +Texinfo's syntax is arcane. + +00:31:57.640 --> 00:32:05.559 +It was based on what I could implement on top of TeX in 1984 or so. + +00:32:05.560 --> 00:32:15.519 +And, well, Org mode, Org syntax doesn't make all the distinctions, + +00:32:15.520 --> 00:32:20.599 +all the semantic markup distinctions that we can make in Texinfo. + +00:32:20.600 --> 00:32:25.839 +If it did, which would require extending it, + +00:32:25.840 --> 00:32:33.399 +then it might become a good format to write GNU manuals in. + +00:32:33.400 --> 00:32:37.639 +It could conceivably become a better format than we have now, + +00:32:37.640 --> 00:32:39.719 +and that would be a good thing. + +00:32:39.720 --> 00:32:43.599 +Not that many people know Texinfo syntax. + +00:32:43.600 --> 00:32:47.479 +It's not widely used except for GNU manuals. + +00:32:47.480 --> 00:32:52.439 +But probably more people know Org syntax, + +00:32:52.440 --> 00:32:57.239 +and if it were extended so that it did in a fairly natural way + +00:32:57.240 --> 00:33:02.319 +all the things that Texinfo does and maybe some additional ones, + +00:33:02.320 --> 00:33:05.279 +then it could be superior. + +00:33:05.280 --> 00:33:11.239 +And then we could gradually switch our manuals over to it. + +00:33:11.240 --> 00:33:14.119 +But we need to be able to generate all the output formats + +00:33:14.120 --> 00:33:15.359 +that we can generate now. + +00:33:15.360 --> 00:33:19.999 +That means HTML to put on websites. + +00:33:20.000 --> 00:33:27.159 +That means either info files or perhaps another form of the HTML output + +00:33:27.160 --> 00:33:30.079 +that would be good for an info browser, + +00:33:30.080 --> 00:33:34.079 +including the one inside Emacs and the one that's separate. + +00:33:34.080 --> 00:33:42.479 +And generating input to TeX so that it would generate pretty-looking manuals, + +00:33:42.480 --> 00:33:46.719 +which is one of the advantages of Texinfo. + +00:33:46.720 --> 00:33:48.719 +This is not a gigantic job. + +00:33:48.720 --> 00:33:54.479 +I'd say this is a medium-sized job, or maybe two or three medium-sized jobs. + +NOTE What do you have in mind for more modular Emacs development? + +00:33:54.480 --> 00:34:05.879 +What do you have in mind for more modular Emacs development? + +00:34:05.880 --> 00:34:13.479 +I think that that's... + +00:34:13.480 --> 00:34:17.679 +There's no specific feature that I have in mind to solve that. + +00:34:17.680 --> 00:34:21.719 +It's more of an approach to how you develop things. + +00:34:21.720 --> 00:34:28.719 +It's thinking about modularity when you write each package that you write, + +00:34:28.720 --> 00:34:34.119 +because you will find situations where it has to interact + +00:34:34.120 --> 00:34:37.439 +in various ways with other packages. + +00:34:37.440 --> 00:34:40.879 +And sometimes you'll find the other packages have hooks + +00:34:40.880 --> 00:34:42.719 +that will enable you to do it. + +00:34:42.720 --> 00:34:45.239 +And sometimes you'll find that + +00:34:45.240 --> 00:34:47.679 +the hook you'd really need for this is missing. + +00:34:47.680 --> 00:34:52.519 +In that case, the best thing to do might be to add + +00:34:52.520 --> 00:34:58.479 +a suitable, fairly general hook that can be used for your job + +00:34:58.480 --> 00:35:00.879 +to the other existing package, + +00:35:00.880 --> 00:35:08.399 +so that instead of a rigid connection to other parts of Emacs, + +00:35:08.400 --> 00:35:09.599 +which is somewhat unmodular, + +00:35:09.600 --> 00:35:12.999 +you could use a general-purpose hook, + +00:35:13.000 --> 00:35:17.039 +which you designed because it could do a lot of things, + +00:35:17.040 --> 00:35:19.039 +including the thing you need to do. + +NOTE Reframing the school question + +00:35:19.040 --> 00:35:32.039 +It might be interesting to reframe the school question. + +00:35:32.040 --> 00:35:34.399 +I think it is related to the first part, + +00:35:34.400 --> 00:35:36.959 +how to bring Libre software into schools. + +00:35:36.960 --> 00:35:42.159 +For example, my entry point was LaTeX in school. + +00:35:42.160 --> 00:35:44.439 +Well, it's okay. + +00:35:44.440 --> 00:35:50.599 +I don't see anything wrong with that, by all means, if it works. + +00:35:50.600 --> 00:36:00.479 +Now, my naive, perhaps, guess is that it wouldn't arouse much interest, + +00:36:00.480 --> 00:36:05.879 +because I suspect most people would rather use a WYSIWYG text editor + +00:36:05.880 --> 00:36:13.959 +than a text formatter like LaTeX, any text formatter. + +00:36:13.960 --> 00:36:18.639 +But if your experience is otherwise, go ahead. + +NOTE In light of that critique of JavaScript not being about the language per se but rather the "culture of blindly getting and running packages/libraries", what's so different with what's currently done by the vast majority of Emacs/Elisp users to just install packages blindly? + +00:36:18.640 --> 00:36:28.799 +In the light of that critique of JavaScript not being about language per se, + +00:36:28.800 --> 00:36:33.759 +but rather the culture of blindly getting and running packages, libraries. + +00:36:33.760 --> 00:36:36.119 +What's so different with what's currently done by the vast + +00:36:36.120 --> 00:36:42.199 +majority of EmacsLib users to just install packages blindly? + +00:36:42.200 --> 00:36:44.199 +Well, they know they're installing a package, + +00:36:44.200 --> 00:36:46.799 +and that makes all the difference. + +00:36:46.800 --> 00:36:50.879 +And people can post various versions of a package, + +00:36:50.880 --> 00:36:53.679 +and then people can compare them and say, + +00:36:53.680 --> 00:36:59.279 +"Hey, I looked at that version there, and it has a horrible bug." + +00:36:59.280 --> 00:37:03.959 +And so the community can do something about that. + +00:37:03.960 --> 00:37:09.519 +With JavaScript sent by websites, there is no way to do anything like that. + +00:37:09.520 --> 00:37:13.039 +And in addition, most of those programs are not free. + +00:37:13.040 --> 00:37:16.559 +How would you know? If you're not running LibreJS, + +00:37:16.560 --> 00:37:20.799 +you don't know what JavaScript programs are being installed + +00:37:20.800 --> 00:37:25.319 +into your browser at any given moment, or whether they're free. + +00:37:25.320 --> 00:37:31.119 +You know, very likely you'll just get a bunch of obfuscript, + +00:37:31.120 --> 00:37:35.559 +and you won't know what the source code is, or whether you could even find it. + +00:37:35.560 --> 00:37:41.399 +These things don't happen with EmacsList packages. + +00:37:41.400 --> 00:37:48.799 +At least not when they're in reputable package archives. + +NOTE Do you still intend to merge your patch to the "shorthands" feature to the master branch? + +00:37:48.800 --> 00:37:55.839 +Do you still intend to merge your patch to the shorthands feature + +00:37:55.840 --> 00:37:57.519 +to the master branch? + +00:37:57.520 --> 00:38:05.159 +Yes, but I've seen that something needs to be done with the docstrings, + +00:38:05.160 --> 00:38:17.679 +because s.el mentions in its docstrings the function names used in s.el, + +00:38:17.680 --> 00:38:27.199 +and the magnars string library that works just by renaming those symbols + +00:38:27.200 --> 00:38:31.119 +really would want to alter the docstrings too. + +00:38:31.120 --> 00:38:34.719 +And now there are multiple ways of doing that. + +00:38:34.720 --> 00:38:39.519 +One of them maybe is to edit the s.el source file + +00:38:39.520 --> 00:38:42.559 +so it'll do the right thing in either case. + +00:38:42.560 --> 00:38:48.879 +That would need a new docstring construct. + +00:38:48.880 --> 00:38:52.159 +Well, we've added many docstring constructs. + +00:38:52.160 --> 00:38:54.879 +We could add one more. It's not that hard a thing. + +NOTE Do you think the freedom e.g., we have in Emacs, becomes a hurdle for some people to pursue more important things in the world? I used to do a lot of Emacs programming, but I recently try to stay away from tinkering on Emacs. + +00:38:54.880 --> 00:39:05.799 +Do you think the freedom, e.g., we have in Emacs becomes a hurdle + +00:39:05.800 --> 00:39:09.319 +for some people to pursue more important things in the world? + +00:39:09.320 --> 00:39:12.359 +Is there something more important in the world? + +00:39:12.360 --> 00:39:17.399 +I used to do a lot of Emacs programming, but recently I decided to stay away + +00:39:17.400 --> 00:39:22.199 +from tink-linking, from tinking Emacs. + +00:39:22.200 --> 00:39:27.159 +I'm not sure what-- tinking is a strange word to me, tinkering with maybe. + +00:39:27.160 --> 00:39:33.559 +Well, there may be more important things for you to do than extend Emacs. + +00:39:33.560 --> 00:39:39.239 +On the other hand, when you look at all the distractions that the world offers + +00:39:39.240 --> 00:39:42.439 +that distract a lot more people than this, + +00:39:42.440 --> 00:39:47.799 +it really seems unfair to criticize Emacs because it's something + +00:39:47.800 --> 00:39:50.959 +you could put a lot of time into tinkering with. + +00:39:50.960 --> 00:39:54.599 +Look how much time people put into playing video games, + +00:39:54.600 --> 00:39:58.199 +which achieves nothing except distracting them. + +00:39:58.200 --> 00:40:04.599 +And if you distract yourself by playing with Emacs Lisp code, + +00:40:04.600 --> 00:40:07.399 +that's surely better. + +00:40:07.400 --> 00:40:10.919 +It has a chance of resulting in something + +00:40:10.920 --> 00:40:17.919 +actually useful and a chance that you'd learn something + +00:40:17.920 --> 00:40:27.919 +that's more important as learning than how to win a certain video game. + +NOTE Question about software freedom: how does it apply to software that are art/media experiences, like videogames? In your view, Is the creator of a videogame obliged to release it under a free license? + +00:40:27.920 --> 00:40:29.919 +Questions about software freedom. + +00:40:29.920 --> 00:40:34.719 +How does it apply to software that are art/media experiences + +00:40:34.720 --> 00:40:36.919 +like video games in your view? + +00:40:36.920 --> 00:40:42.719 +Well, I'd say that a video game typically is a collection of things, + +00:40:42.720 --> 00:40:49.319 +some of which are programs and some of which are art. + +00:40:49.320 --> 00:40:54.719 +And so once you analyze the game in that way, + +00:40:54.720 --> 00:40:59.479 +if you agree with my ideas about what the moral rules are + +00:40:59.480 --> 00:41:04.319 +for each of those categories, you can apply them separately + +00:41:04.320 --> 00:41:06.759 +to each thing in the collection. + +00:41:06.760 --> 00:41:12.279 +Programs are operational. They do things for you. + +00:41:12.280 --> 00:41:15.879 +And anything that does things for you should be free. + +00:41:15.880 --> 00:41:20.999 +The art that is simply displayed is not of that kind, + +00:41:21.000 --> 00:41:26.239 +so it doesn't, in my view, have to be free. + +00:41:26.240 --> 00:41:29.359 +It does have to be shareable. + +00:41:29.360 --> 00:41:36.199 +You have to be free to non-commercially redistribute an exact copy. + +00:41:36.200 --> 00:41:40.039 +When I talk about sharing, that's what it means, precisely that. + +00:41:40.040 --> 00:41:45.319 +Non-commercially redistribute exact copies to others when you wish. + +00:41:45.320 --> 00:41:58.359 +How would technologies like WebAssembly fit with the JavaScript issues? + +00:41:58.360 --> 00:42:00.519 +They don't change anything much. + +00:42:00.520 --> 00:42:06.079 +Basically, if the program is JavaScript source code + +00:42:06.080 --> 00:42:09.999 +that you could actually read, well, then if it had a free license on it, + +00:42:10.000 --> 00:42:11.279 +it would be free software. + +00:42:11.280 --> 00:42:16.319 +And if the free license is indicated in the standardized format + +00:42:16.320 --> 00:42:24.959 +that LibreJS understands, it would actually recognize it as free software. + +00:42:24.960 --> 00:42:30.759 +If it's obfuscated, then it's not the source code. + +00:42:30.760 --> 00:42:35.599 +And if it's WebAssembly, then it's not the source code. + +00:42:35.600 --> 00:42:41.999 +So those are both compiled versions of source code that isn't in the page. + +00:42:42.000 --> 00:42:45.759 +So they make things somewhat nastier, + +00:42:45.760 --> 00:42:51.159 +in the sense that you couldn't have much chance of reading it + +00:42:51.160 --> 00:42:52.999 +and seeing what it does. + +00:42:53.000 --> 00:42:55.479 +But either way, it's not free, + +00:42:55.480 --> 00:43:00.599 +even if it's source code with no free license, it's still not free. + +00:43:00.600 --> 00:43:03.639 +If it's a compiled version rather than source, + +00:43:03.640 --> 00:43:07.359 +that's a little further away from being free. + +00:43:07.360 --> 00:43:11.599 +But further away from being free doesn't make it worse. + +00:43:11.600 --> 00:43:13.599 +It's equally bad. + +00:43:13.600 --> 00:43:18.559 +If it gets further away from being free, + +00:43:18.560 --> 00:43:23.439 +that means the work that you might have to do to free it is more, + +00:43:23.440 --> 00:43:26.239 +but it's not worse. + +00:43:26.240 --> 00:43:28.839 +Non-free is bad. + +NOTE Have you seen Haketilo? It seems similar to LibreJS. + +00:43:35.915 --> 00:43:38.959 +Have you seen Haketilo? + +00:43:38.960 --> 00:43:41.679 +It seems similar to LibreJS. + +00:43:41.680 --> 00:43:44.519 +Haketilo is meant to enable people + +00:43:44.520 --> 00:43:49.199 +to get some of the benefits of the free software community + +00:43:49.200 --> 00:43:54.439 +with free replacement JavaScript programs for websites. + +00:43:54.440 --> 00:44:00.879 +So potentially it offers a real solution to the JavaScript problem. + +00:44:00.880 --> 00:44:05.039 +It has a long way to go from what I hear. + +00:44:05.040 --> 00:44:07.999 +If you want to work on it, please do. + +00:44:08.000 --> 00:44:14.159 +Of course, writing free replacement JavaScript + +00:44:14.160 --> 00:44:16.919 +for a million websites is an enormous job, + +00:44:16.920 --> 00:44:19.319 +but maybe we could do it for some sites. + +00:44:19.320 --> 00:44:24.319 +It depends how many people get enthusiastic about doing it + +00:44:24.320 --> 00:44:25.959 +and how many sites cooperate. + +00:44:25.960 --> 00:44:32.719 +Is writing free software replacement to GitHub Copilot + +00:44:32.720 --> 00:44:36.759 +with proper license attribution a good idea? + +00:44:36.760 --> 00:44:44.959 +Maybe, but remember that Copilot is not a program. Copilot is a service. + +00:44:44.960 --> 00:44:50.119 +It is something that somebody else's computer will do for you. + +00:44:50.120 --> 00:44:55.439 +It's a computation that someone else's server will do for you when you ask. + +00:44:55.440 --> 00:45:06.239 +And so what are the practical problems of doing that? I'm not sure. + +00:45:06.240 --> 00:45:13.479 +The point is, of course, the server runs by running a program. + +00:45:13.480 --> 00:45:17.439 +The service operates by running programs. + +00:45:17.440 --> 00:45:21.119 +But still, a service is a very different kind of thing from a program. + +00:45:21.120 --> 00:45:28.999 +People who use Copilot don't get any sort of copy of Copilot. + +00:45:29.000 --> 00:45:33.319 +All they do is send something they're working on to that server + +00:45:33.320 --> 00:45:34.999 +and they get something back. + +00:45:35.000 --> 00:45:45.567 +So it might be a good idea. + +NOTE +Do you have any suggestions for helping propective contributers streamline +the copyright assignment needed to contribute to Emacs (and other FSF software +projects)? + +00:45:45.568 --> 00:45:48.359 +Do you have any suggestions for helping prospective contributors + +00:45:48.360 --> 00:45:53.359 +streamline the copyright assignment needed to contribute to Emacs? + +00:45:53.360 --> 00:45:57.279 +I don't think that's needed. + +00:45:57.280 --> 00:46:04.359 +Basically, the copyright assignment itself is pretty easy + +00:46:04.360 --> 00:46:06.599 +and doesn't take very long. + +00:46:06.600 --> 00:46:09.919 +What is sometimes harder is the copyright disclaimer, + +00:46:09.920 --> 00:46:14.959 +the employer disclaimer, where your employer, + +00:46:14.960 --> 00:46:20.399 +if you're employed to program, or if your job includes programming + +00:46:20.400 --> 00:46:24.399 +or could include programming, we want to be sure that your employer + +00:46:24.400 --> 00:46:30.559 +is not going to say that you had no right to contribute that to any program + +00:46:30.560 --> 00:46:37.799 +because it belonged to the employer all along and you broke the rules + +00:46:37.800 --> 00:46:42.319 +and the project you contributed to is shafted. + +00:46:42.320 --> 00:46:50.679 +Well, we are working on some simplifications to that text + +00:46:50.680 --> 00:46:55.119 +in the hope of making it easier to get companies to say yes to it. + +00:46:55.120 --> 00:46:59.039 +But fundamentally, they've got to say yes to it. + +00:46:59.040 --> 00:47:06.279 +We need them to say yes to it. + +00:47:06.280 --> 00:47:08.719 +We can't make them say yes to it. + +00:47:08.720 --> 00:47:09.799 +We can only ask. + +NOTE Can complexity induced by company-funded free/libre code become a problem, when the company pulls out, leaving the code potentially unmaintainable? + +00:47:09.800 --> 00:47:13.759 +Can complexity induced by company funded... + +00:47:13.760 --> 00:47:17.119 +Sorry, it talks about open code. + +00:47:17.120 --> 00:47:21.359 +I don't know what that means. + +00:47:21.360 --> 00:47:23.759 +Is this talking about free software? + +00:47:23.760 --> 00:47:27.759 +[Amin]: I think it would be safe to assume that they are indeed + +00:47:27.760 --> 00:47:28.959 +talking about free software. + +00:47:28.960 --> 00:47:34.119 +[Richard]: Okay, because I don't use the term open to classify programs. + +00:47:34.120 --> 00:47:39.359 +I'm not a supporter of open source and I never was. + +00:47:39.360 --> 00:47:42.519 +And the reason is very important. + +00:47:42.520 --> 00:47:50.199 +I touched on this briefly in the TEDx video. + +00:47:50.200 --> 00:47:58.639 +But basically, the idea of the free software movement is that users deserve + +00:47:58.640 --> 00:48:04.559 +the freedom to study, change and redistribute the code that they use. + +00:48:04.560 --> 00:48:09.879 +And it is an injustice to deny that to users. + +00:48:09.880 --> 00:48:13.719 +And therefore, software must be free. + +00:48:13.720 --> 00:48:16.159 +It's wrong if it's not free. + +00:48:16.160 --> 00:48:22.879 +Well, the people who created the idea of open source about 14 years later, + +00:48:22.880 --> 00:48:27.719 +they wanted to avoid bringing up that question. + +00:48:27.720 --> 00:48:31.999 +And they more or less succeeded when people talk about open source. + +00:48:32.000 --> 00:48:38.959 +Occasionally, that question has seeped in from the free software community. + +00:48:38.960 --> 00:48:41.599 +But most of the time, it never occurs to them. + +00:48:41.600 --> 00:48:47.519 +They simply take for granted that it's legitimate for a program not to be open. + +00:48:47.520 --> 00:48:52.759 +Well, that's missing the point that I consider most important. + +00:48:52.760 --> 00:48:57.679 +So whenever I talk about this area, I talk about it in + +00:48:57.680 --> 00:49:04.039 +terms of free, libre, freedom-respecting software. + +00:49:04.040 --> 00:49:09.839 +So, can complexity-induced by company-funded free code + +00:49:09.840 --> 00:49:12.399 +become a problem when the company pulls out, + +00:49:12.400 --> 00:49:16.239 +leaving the code potentially unmaintainable? + +00:49:16.240 --> 00:49:21.999 +Well, I'd say over-complicated free programs + +00:49:22.000 --> 00:49:24.879 +which don't have community contributors + +00:49:24.880 --> 00:49:27.359 +can fall into that problem. + +00:49:27.360 --> 00:49:31.279 +It's not limited to programs developed by companies, I think. + +NOTE What do you think of Hyperbole or EEV instead of org mode, or other things for the stuff that org mode does "second brain / knowledge base", or GTD 'getting things done' etc... among other things in Emacs or other Emacs packages + +00:49:31.280 --> 00:49:42.239 +What do you think of Hyperbole or EEV instead of Org mode? + +00:49:42.240 --> 00:49:46.759 +Well, I don't actually know that much about either of them. + +00:49:46.760 --> 00:49:49.439 +I don't know what EEV is. + +00:49:49.440 --> 00:49:54.257 +I've heard of Hyperbole, but it was many years ago that I looked at it, + +00:49:54.258 --> 00:49:56.399 +and I don't remember what I saw. + +00:49:56.400 --> 00:50:03.199 +So, I'm sorry I can't have an educated opinion about those specific things. + +00:50:03.200 --> 00:50:07.319 +It would be interesting for somebody to study that. + +00:50:07.320 --> 00:50:10.319 +Now, there'd be a lot to study. + +00:50:10.320 --> 00:50:14.999 +After all, Org mode consists of an outlining mode together + +00:50:15.000 --> 00:50:20.119 +with lots of other specific features that have been welded onto it. + +00:50:20.120 --> 00:50:26.479 +And if they were separated, made modular, separate parts of Emacs, + +00:50:26.480 --> 00:50:31.599 +it would be a lot easier to adapt some of them to work with hyperbole + +00:50:31.600 --> 00:50:32.799 +if we wanted to. + +00:50:32.800 --> 00:50:34.879 +Of course, do we want to? + +00:50:34.880 --> 00:50:36.359 +That's another question. + +00:50:36.360 --> 00:50:38.519 +What is EEV? + +00:50:38.520 --> 00:50:46.279 +I think it's similar in many ways to hyperbole. + +00:50:46.280 --> 00:50:50.039 +I haven't used either of them too much myself, but yeah, + +00:50:50.040 --> 00:50:51.759 +they are fairly similar as far as I know. + +00:50:51.760 --> 00:50:55.759 +If they're fairly similar, I guess that brings up the question, + +00:50:55.760 --> 00:50:58.319 +is either of them actually part of Emacs? + +00:50:58.320 --> 00:51:04.639 +I think hyperbole is a GNU package. + +00:51:04.640 --> 00:51:07.719 +I'm not sure if it's part of Emacs or GNU ELPA. + +00:51:07.720 --> 00:51:10.879 +It might be, but EEV is not as of yet. + +00:51:10.880 --> 00:51:12.159 +But both are free software. + +00:51:12.160 --> 00:51:19.159 +Well, it might be that it doesn't make sense to include them both in any sense. + +00:51:19.160 --> 00:51:21.159 +People can write them and distribute them, + +00:51:21.160 --> 00:51:23.679 +but that doesn't mean we need to pick them up. + +00:51:23.680 --> 00:51:28.359 +We might want to compare them and see which one is better + +00:51:28.360 --> 00:51:32.799 +and then look at whether it could be improved further + +00:51:32.800 --> 00:51:35.319 +by bringing in features from the other. + +00:51:35.320 --> 00:51:40.199 +This is what you do if those two things exist + +00:51:40.200 --> 00:51:42.519 +and you want to make the best possible thing + +00:51:42.520 --> 00:51:44.999 +to add, for instance, to Emacs. + +00:51:45.000 --> 00:51:56.319 +But since I don't know any specifics anymore, and with EEV I never did, + +00:51:56.320 --> 00:52:01.639 +I don't want to state any sort of a priori preference. + +00:52:01.640 --> 00:52:06.250 +I don't have one. + +NOTE Are there plans to bring modal editing (eg. evil-mode, viper) to Emacs core and did your opinion on modal editing change over the years? + +00:52:06.251 --> 00:52:10.959 +Are there plans to bring modal editing to Emacs core? + +00:52:10.960 --> 00:52:11.759 +What does that mean? + +00:52:11.760 --> 00:52:19.399 +[Amin]: I think they're speaking about projects or editing modes such as VI, + +00:52:19.400 --> 00:52:23.639 +where by default whatever you type is not getting inserted, + +00:52:23.640 --> 00:52:28.319 +but you can navigate between different modes + +00:52:28.320 --> 00:52:30.199 +and one of them being text insertion. + +00:52:30.200 --> 00:52:35.759 +[Richard]: Well, I don't have a wish for that. + +00:52:35.760 --> 00:52:38.399 +Now, I mean, it's not somehow morally anathema. + +00:52:38.400 --> 00:52:49.279 +I mean, it's not as if it were a non-free program. + +00:52:49.280 --> 00:52:58.439 +But it wouldn't be easy to design that in such a way that + +00:52:58.440 --> 00:53:02.999 +it fit into the framework of existing Emacs without doing any violence to it. + +NOTE What is your opinion on the current state of large machine +learning/AI models? + +00:53:03.000 --> 00:53:16.719 +What is your opinion of the current state of large machine learning models? + +00:53:16.720 --> 00:53:20.919 +Even if the model is released under a free license, + +00:53:20.920 --> 00:53:25.399 +it cannot be modified in a meaningful way? + +00:53:25.400 --> 00:53:29.039 +I don't think that's true. + +00:53:29.040 --> 00:53:33.279 +A person who was in the field of machine learning + +00:53:33.280 --> 00:53:35.839 +told me that you can modify it. + +00:53:35.840 --> 00:53:38.999 +You can modify it by starting with what you've got + +00:53:39.000 --> 00:53:40.839 +and doing some further training, + +00:53:40.840 --> 00:53:47.159 +and you don't need, I'm told, the previously used training data to train it, + +00:53:47.160 --> 00:53:49.439 +to modify it. + +00:53:49.440 --> 00:53:53.399 +Based on that, I concluded that the trained neural network + +00:53:53.400 --> 00:53:56.879 +can be treated as source code. + +00:53:56.880 --> 00:54:01.079 +And after all, it's not made from any other kind of source code. + +00:54:01.080 --> 00:54:04.839 +So, in some sense, what else could the source code be? + +NOTE I thought it was a virtue to separate the content from the style or +appearance of information. Part of being free is also to view information in the +format that you want. Does your WYSIWYG idea erode this virtue and lead to more +thinking -- perhaps undue thinking about style over substance? + +00:54:14.302 --> 00:54:17.519 +I thought it was a virtue to separate the content + +00:54:17.520 --> 00:54:19.719 +from the style or appearance of information. + +00:54:19.720 --> 00:54:24.759 +Part of being free is also to view information in the format you want. + +00:54:24.760 --> 00:54:29.959 +Does your WYSIWYG idea erode this virtue and lead to more thinking, + +00:54:29.960 --> 00:54:34.359 +perhaps undue thinking about style over substance? + +00:54:34.360 --> 00:54:38.919 +Well, I don't know, actually. + +00:54:38.920 --> 00:54:43.959 +I know that in LibreOffice you can make named styles, + +00:54:43.960 --> 00:54:46.959 +and you can apply them to parts of the text, + +00:54:46.960 --> 00:54:51.239 +and later on you can change what any given named style + +00:54:51.240 --> 00:54:53.719 +means in terms of appearance. + +00:54:53.720 --> 00:55:03.319 +So, is that enough independence of appearance from semantics? + +00:55:03.320 --> 00:55:06.319 +I am hardly a power user of LibreOffice. + +00:55:06.320 --> 00:55:09.239 +I've come across that feature. I've never used it. + +00:55:09.240 --> 00:55:17.559 +The only things I write with it are pretty simple. + +00:55:17.560 --> 00:55:23.519 +I have a feeling that I've been doing this for a rather long time. + +00:55:23.520 --> 00:55:27.279 +Do you recall when I started answering questions? + +00:55:27.280 --> 00:55:29.799 +I think it was something like an hour ago. + +00:55:29.800 --> 00:55:35.759 +Yeah, I think so. About an hour or 45 minutes-ish. + +00:55:35.760 --> 00:55:38.839 +Well, then I'll do a few questions more. + +NOTE Do you ever dabble in retro-computing, e.g. logging into TOPS10/20 systems SDF, etc? + +00:55:38.840 --> 00:55:42.679 +Do you ever dabble in retrocomputing? + +00:55:42.680 --> 00:55:47.319 +No. I decided it's a waste of time. + +00:55:47.320 --> 00:55:51.759 +It basically would be tinkering that would not develop + +00:55:51.760 --> 00:55:56.039 +anything of any importance or use. + +00:55:56.040 --> 00:56:02.839 +And I know that if I'm going to enjoy developing something, + +00:56:02.840 --> 00:56:06.079 +I could enjoy it developing anything. + +00:56:06.080 --> 00:56:10.239 +You know, I could enjoy just as much developing something + +00:56:10.240 --> 00:56:17.199 +that I think is needed right now for non-retrocomputing + +00:56:17.200 --> 00:56:20.679 +as I could enjoy working on retrocomputing. + +00:56:20.680 --> 00:56:26.079 +So I decided never to let retrocomputing + +00:56:26.080 --> 00:56:30.759 +distract my attention from useful computing. + +NOTE Do you know Gemini? + +00:56:38.196 --> 00:56:40.359 +Do you know the Gemini Project - + +00:56:40.360 --> 00:56:45.239 +a network of very simplified markdown-like text files without images + +00:56:45.240 --> 00:56:52.759 +and third-party materials transmitted via an open public free protocol, + +00:56:52.760 --> 00:56:56.519 +which is not HTTPS? + +00:56:56.520 --> 00:56:58.839 +I don't remember if I ever heard of that before. + +00:56:58.840 --> 00:57:02.639 +Sorry, I have no opinion about it. + +00:57:02.640 --> 00:57:10.799 +But I think that the lack of images will turn out to be a considerable drawback. + +00:57:10.800 --> 00:57:14.159 +I mean, imagine a website. + +00:57:14.160 --> 00:57:19.439 +Well, there are lots of reasons you might want to put in images. + +00:57:19.440 --> 00:57:27.559 +It's not limited just to making it look snazzy and distracting. + +00:57:27.560 --> 00:57:32.159 +There are a lot of pictures you might want to include and diagrams, + +00:57:32.160 --> 00:57:37.719 +and scientific papers include pictures and diagrams. + +00:57:37.720 --> 00:57:41.359 +It would be crippling if they couldn't be in there. + +00:57:41.360 --> 00:57:46.519 +So basically, I think that exclusion of images is a big loss. + +00:57:46.520 --> 00:57:56.879 +[Amin]: Thanks. I think that's so far all the questions I see on the pad, + +00:57:56.880 --> 00:58:00.319 +but let's give it maybe another minute or two + +00:58:00.320 --> 00:58:04.479 +if people have any other question or two to get in before we call this close. + +NOTE stallmansupport.org + +00:58:04.480 --> 00:58:27.520 +[Richard] Well, I'd like to mention that if you've heard + +00:58:27.521 --> 00:58:43.959 +rumors of attacks against me that people have made, it's mostly false, + +00:58:43.960 --> 00:58:50.079 +and you can find out more by looking at stallmansupport.org. + +00:58:50.080 --> 00:58:55.359 +So I refer you there, and I hope you'll take a look. + +00:58:55.360 --> 00:59:04.639 +[Amin]: Yes, thank you. + +00:59:04.640 --> 00:59:08.599 +All right, I think that's pretty much all the questions that we have. + +00:59:08.600 --> 00:59:10.559 +Thanks again, Richard, both for your great talk + +00:59:10.560 --> 00:59:14.319 +and also for taking this much time answering so many questions. + +00:59:14.320 --> 00:59:17.999 +We really appreciate it. + +00:59:18.000 --> 00:59:21.639 +[Richard]: Well, this is what I do. + +00:59:21.640 --> 00:59:28.839 +GNU and the Free Software Movement are what I've dedicated my life to, + +00:59:28.840 --> 00:59:34.679 +and since I'm still alive, I've got more to dedicate to them. + +00:59:34.680 --> 00:59:40.319 +[Amin]: Wonderful, and we all hope that it keeps on coming + +00:59:40.320 --> 00:59:43.839 +and you're able to continue for a very long time into the future. + +00:59:43.840 --> 00:59:46.079 +[Richard]: Happy hacking. + +00:59:46.080 --> 00:59:49.960 +[Amin]: Happy hacking. Bye. diff --git a/2022/captions/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--answers.vtt b/2022/captions/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--answers.vtt new file mode 100644 index 00000000..6ad95d62 --- /dev/null +++ b/2022/captions/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--answers.vtt @@ -0,0 +1,1232 @@ +WEBVTT + +00:00:00.000 --> 00:00:06.000 + I'm fine. So we can start, right? + +00:00:06.000 --> 00:00:09.100 + Yeah, sure. I mean, you pretty much know the drill. + +00:00:09.100 --> 00:00:11.050 + Everyone watching the show now already knows the drill. V + +00:00:11.050 --> 00:00:13.090 +idianus is going to read the questions. If you want to read + +00:00:13.090 --> 00:00:16.000 + the questions on your own, you can open up the pad. + +00:00:16.000 --> 00:00:18.080 + Otherwise, Vidianus will be reading the questions and + +00:00:18.080 --> 00:00:20.210 + answering them in line. And I'll be making jazz in the + +00:00:20.210 --> 00:00:22.780 + background whenever something doesn't work. So Vidianus, + +00:00:22.780 --> 00:00:24.000 + the floor is yours. + +00:00:24.000 --> 00:00:32.310 + Okay. So do you use flitting notes as well? Do you keep + +00:00:32.310 --> 00:00:33.780 + them in the org room? And flitting notes are a very + +00:00:33.780 --> 00:00:35.580 + interesting subject. In the initial draft of this talk, I + +00:00:35.580 --> 00:00:37.330 + wanted to include flitting notes as well, but it would take + +00:00:37.330 --> 00:00:40.000 + a bit too long. So I said, let's not do it. + +00:00:40.000 --> 00:00:43.980 + I'm going to add a link here to my .files in the section + +00:00:43.980 --> 00:00:48.350 + for flitting notes. But I can very quickly share my screen + +00:00:48.350 --> 00:00:52.970 + for a moment and show you something about it. So give me a + +00:00:52.970 --> 00:00:54.000 + moment. + +00:00:54.000 --> 00:01:00.000 + Yes, you can do this. + +00:01:00.000 --> 00:01:05.000 + Okay. So you see the screen now, I think? + +00:01:05.000 --> 00:01:08.000 + Yes, I can see it. + +00:01:08.000 --> 00:01:13.590 + So I have a key binding which opens my daily note. I have + +00:01:13.590 --> 00:01:17.490 + some notes from other talks in EmacsConf and talks that I'm + +00:01:17.490 --> 00:01:21.400 + going to miss due to the two tracks. Don't mind them. So I + +00:01:21.400 --> 00:01:28.000 + write, for example, flitting note. + +00:01:28.000 --> 00:01:31.890 + And I have a command down here which will automatically + +00:01:31.890 --> 00:01:35.760 + give it a to do value. So let's say, for example, I'm + +00:01:35.760 --> 00:01:40.000 + crossing it. It adds a tag to the current projects node, + +00:01:40.000 --> 00:01:44.840 + which is essentially a node I have for things I want to do + +00:01:44.840 --> 00:01:46.000 + right now. + +00:01:46.000 --> 00:01:52.590 + It makes it an org-rem node. And then I can write something + +00:01:52.590 --> 00:01:59.360 + here, blah, blah, blah. And if I go on org-rem node find, + +00:01:59.360 --> 00:02:04.000 + actually, I need to save it first. It will appear here. + +00:02:04.000 --> 00:02:10.720 + And then once I say it's done, it is not a node anymore. It + +00:02:10.720 --> 00:02:16.470 + is removed here. This allows me to archive things. I can + +00:02:16.470 --> 00:02:21.320 + stop the sharing now. This allows me to archive flitting + +00:02:21.320 --> 00:02:22.000 + notes. + +00:02:22.000 --> 00:02:26.860 + So I don't need -- because flitting notes are not something + +00:02:26.860 --> 00:02:31.740 + that needs to remain my shell custom. I want them for some + +00:02:31.740 --> 00:02:34.000 + point and then deleting them. + +00:02:34.000 --> 00:02:38.140 + And this is done with org-journal and not org-rem-dailys + +00:02:38.140 --> 00:02:41.960 + because with org-journal I can have this -- I make it a + +00:02:41.960 --> 00:02:45.000 + node and then I remove it from a node. + +00:02:45.000 --> 00:02:48.620 + While I don't think you can do that with org-rem-dailys, + +00:02:48.620 --> 00:02:52.020 + the code for all of this is in the section I pasted on the + +00:02:52.020 --> 00:02:57.000 + etherpad. And if you have any questions, you can email me. + +00:02:57.000 --> 00:03:11.240 + >> Okay. >> Sorry, just to specify, all the contact + +00:03:11.240 --> 00:03:11.560 + information will be available on the talk page. So be it + +00:03:11.560 --> 00:03:12.020 + the email to Vidianos, also the pads, the recording, + +00:03:12.020 --> 00:03:14.590 + everything will be available after the conference as soon + +00:03:14.590 --> 00:03:16.000 + as we have the bandwidth for this. + +00:03:16.000 --> 00:03:18.950 + So that's where you'll be able to find contact information. + +00:03:18.950 --> 00:03:21.000 + Okay. You can keep going, Vidianos. Sorry for the inter + +00:03:21.000 --> 00:03:21.000 +ruption. + +00:03:21.000 --> 00:03:25.630 + >> Okay. So the second question is if it works for PDFs + +00:03:25.630 --> 00:03:31.400 + only or Word and Excel or EPUB, websites, CWW and YouTube. + +00:03:31.400 --> 00:03:37.520 + So I'm not sure. Give me a moment to look at OrgNotor and + +00:03:37.520 --> 00:03:41.400 + see if it says -- because I said I didn't remember. Use it + +00:03:41.400 --> 00:03:43.000 + with PDFs typically. + +00:03:43.000 --> 00:03:48.370 + >> Yes. From the top of my mind, I think OrgNotor works + +00:03:48.370 --> 00:03:53.580 + with EPUB file via the package that is managed I think by + +00:03:53.580 --> 00:03:57.250 + -- was it by Wasamasa? I can't remember actually now. But + +00:03:57.250 --> 00:03:59.000 + at some point it was managed by Wasamasa. + +00:03:59.000 --> 00:04:07.550 + He was probably watching right now and probably yelling at + +00:04:07.550 --> 00:04:16.000 + me in the background. So I'll keep you posted on this. But + +00:04:16.000 --> 00:04:16.000 + yes, the OrgNotor allows you mostly to take notes on PDF + +00:04:16.000 --> 00:04:16.000 + via PDFView, but it also allows you to take notes on EPUB. + +00:04:16.000 --> 00:04:16.000 + And they're working relatively well. + +00:04:16.000 --> 00:04:19.000 + But as for the other -- yeah, go on, Vidianos. + +00:04:19.000 --> 00:04:22.840 + >> I opened OrgNotor and it says it also is compatible with + +00:04:22.840 --> 00:04:27.000 + DocView for Office, so Word, Excel and things like that. + +00:04:27.000 --> 00:04:30.430 + >> Yeah. And otherwise, if you really want to take notes on + +00:04:30.430 --> 00:04:33.760 + such documents, you can probably use either OrgConvert or + +00:04:33.760 --> 00:04:37.210 + Pandoc to generate a document that would be editable within + +00:04:37.210 --> 00:04:40.200 + OrgNotor. It shouldn't be too difficult to do so. And + +00:04:40.200 --> 00:04:43.400 + usually it's mostly PDFs when you're working on research + +00:04:43.400 --> 00:04:45.000 + stuff or stuff like this. + +00:04:45.000 --> 00:04:47.110 + Anyway, sorry for interrupting. This is a topic very dear + +00:04:47.110 --> 00:04:49.570 + to my heart as well because as you know, I have worked a + +00:04:49.570 --> 00:04:52.000 + little bit in OrgGram and OrgNotor especially. + +00:04:52.000 --> 00:04:58.560 + >> Yeah. So I think you should be able to do Word, Excel + +00:04:58.560 --> 00:05:03.000 + and EPUB. I don't think it works with websites and it + +00:05:03.000 --> 00:05:07.240 + definitely doesn't work with videos. Not sure if there's + +00:05:07.240 --> 00:05:09.000 + other solutions for those. + +00:05:09.000 --> 00:05:11.950 + >> I believe there is one. Sorry, I keep inserting myself + +00:05:11.950 --> 00:05:15.070 + into the discussion. This is a very interesting topic. I + +00:05:15.070 --> 00:05:18.290 + think Alfred Papa developed an Org package to capture a + +00:05:18.290 --> 00:05:21.570 + webpage. So it's like an OrgCapture, you know, Org protocol + +00:05:21.570 --> 00:05:24.000 + that allows you to capture stuff from your browser. + +00:05:24.000 --> 00:05:27.410 + It allows you to capture a page and basically Pandocs the + +00:05:27.410 --> 00:05:31.050 + results into an HTML, sorry, it Pandocs from HTML to an Org + +00:05:31.050 --> 00:05:34.860 + document with a structure and a hierarchy. And this way you + +00:05:34.860 --> 00:05:38.030 + can actually take notes on the documents and just have all + +00:05:38.030 --> 00:05:41.000 + the features you would expect in an Org document. + +00:05:41.000 --> 00:05:49.460 + >> I'll shut up now. This is your talk, not mine. If I + +00:05:49.460 --> 00:05:58.280 + really wanted to talk about this, I should have made a talk + +00:05:58.280 --> 00:06:00.000 +. Anyway, back to you. + +00:06:00.000 --> 00:06:04.160 + >> Okay. So next one. I used Take Notes on PDF with OrgNot + +00:06:04.160 --> 00:06:08.500 +er, but Zotero PDF Reader is also very nice. So, okay. Yeah, + +00:06:08.500 --> 00:06:12.280 + I have seen the Zotero PDF Reader. It does look nice as + +00:06:12.280 --> 00:06:16.000 + well, I would agree, but I have two problems with it. + +00:06:16.000 --> 00:06:21.310 + One, Emacs key bindings don't work, and two, it's not Emacs + +00:06:21.310 --> 00:06:26.330 +. Basically, I think it's nice, but I want to use things + +00:06:26.330 --> 00:06:31.790 + that are outside Emacs for as little as possible. And I use + +00:06:31.790 --> 00:06:36.310 + it there because I haven't found a way in Emacs to save the + +00:06:36.310 --> 00:06:41.000 + article somewhere and download the PDF automatically. + +00:06:41.000 --> 00:06:46.170 + I know there is DOI Utils, which was mentioned by RC a few + +00:06:46.170 --> 00:06:51.610 + moments ago as well, but it hasn't worked perfectly for me + +00:06:51.610 --> 00:06:56.730 + in the past when I tried it, so I use Zotero for that, but + +00:06:56.730 --> 00:07:01.900 + I wouldn't use it for the PDF Reader as well because I want + +00:07:01.900 --> 00:07:04.000 + to use it in Emacs. + +00:07:04.000 --> 00:07:07.590 + Next one. Thanks for saying that it was a great + +00:07:07.590 --> 00:07:12.500 + presentation. My thoughts on the future of Zelle Casten. I + +00:07:12.500 --> 00:07:18.980 + think Zelle Casten has a bright future, personally, because + +00:07:18.980 --> 00:07:24.000 + it is plain text. Plain text will never go away, basically. + +00:07:24.000 --> 00:07:28.610 + You will be able to use it forever, and also, Orgrom is + +00:07:28.610 --> 00:07:33.630 + open source with a very vibrant community, so that won't go + +00:07:33.630 --> 00:07:39.640 + away either anytime soon, I think. So, it probably has a + +00:07:39.640 --> 00:07:44.000 + future, if you mean it that way. + +00:07:44.000 --> 00:07:49.480 + And I think that, in general, it is a noting method that is + +00:07:49.480 --> 00:07:55.040 + very efficient. I have used it for university the past few + +00:07:55.040 --> 00:08:01.300 + years, and I have right now like 850 notes on it, and they + +00:08:01.300 --> 00:08:05.000 + will probably only keep increasing. + +00:08:05.000 --> 00:08:11.250 + So, I don't think it's going away. If you want to ask + +00:08:11.250 --> 00:08:16.000 + anything else, we can talk more about it. + +00:08:16.000 --> 00:08:19.970 + Actually, I do have something to add to this particular + +00:08:19.970 --> 00:08:24.010 + point, because on the topic of Zelle Casten and how useful + +00:08:24.010 --> 00:08:27.470 + it can be. Now, it's been a little while since Zelle Casten + +00:08:27.470 --> 00:08:32.630 + really started exploding. I think in 2020, right when COVID + +00:08:32.630 --> 00:08:35.200 + started, a lot of people started getting interested in Z + +00:08:35.200 --> 00:08:36.000 +elle Casten methods. + +00:08:36.000 --> 00:08:39.570 + And ever since, we have a lot of software that were + +00:08:39.570 --> 00:08:43.940 + released, including the ones we have in Orgrom. I'm going + +00:08:43.940 --> 00:08:47.940 + to use Orgrom because it's the one I'm most familiar with + +00:08:47.940 --> 00:08:51.700 + as a commentator, but we also have D-Notes by Prot and + +00:08:51.700 --> 00:08:54.000 + other solutions as well. + +00:08:54.000 --> 00:08:58.310 + And one thing that I'm currently working on, and a key area + +00:08:58.310 --> 00:09:02.240 + of interest for me, is how do we use the concept of Zelle + +00:09:02.240 --> 00:09:06.700 + Casten, a collection of notes. Generally, when you think of + +00:09:06.700 --> 00:09:10.280 + Zelle Casten, it's a really individual collection of notes, + +00:09:10.280 --> 00:09:11.000 + right? + +00:09:11.000 --> 00:09:14.550 + It's something that you have, it's the stuff that you find + +00:09:14.550 --> 00:09:18.280 + during your research, during the paper that you read. But + +00:09:18.280 --> 00:09:21.700 + how about trying to have a slipbox for a group of people, + +00:09:21.700 --> 00:09:25.060 + so that they could start sharing notes on research that + +00:09:25.060 --> 00:09:26.000 + they do. + +00:09:26.000 --> 00:09:29.190 + It wouldn't be the same thing as a personal slipbox, but + +00:09:29.190 --> 00:09:32.100 + you can think of it as the knowledge bank for a group of + +00:09:32.100 --> 00:09:35.420 + people, where they keep track of the concept that they use + +00:09:35.420 --> 00:09:38.810 + within their organization, the patterns that they like to + +00:09:38.810 --> 00:09:41.000 + use when they work together. + +00:09:41.000 --> 00:09:44.390 + So, we actually wanted to do a talk this year on some of + +00:09:44.390 --> 00:09:47.960 + those adjacent topics, but sadly, we were a little taken by + +00:09:47.960 --> 00:09:51.600 + time, and you'll have to wait for next year. But I will + +00:09:51.600 --> 00:09:55.540 + agree with you, Vidianos, there's a lot of very interesting + +00:09:55.540 --> 00:09:59.380 + stuff abound for Zelle Casten method, and especially Zelle + +00:09:59.380 --> 00:10:01.000 + Casten inside Emacs. + +00:10:01.000 --> 00:10:03.000 + All right, back to you now. + +00:10:03.000 --> 00:10:06.850 + Thanks for the additions, I like them as well, and I think + +00:10:06.850 --> 00:10:10.240 + that what you said about collaboration, it would be very + +00:10:10.240 --> 00:10:12.000 + interesting, really. + +00:10:12.000 --> 00:10:14.000 + Great. + +00:10:14.000 --> 00:10:18.070 + The only problem is having other people using the same + +00:10:18.070 --> 00:10:19.000 + methods with you. + +00:10:19.000 --> 00:10:24.420 + Sorry, Vidianos, I'm not sure if you asked me a question, I + +00:10:24.420 --> 00:10:29.740 + was at a health, whispering my ear in the background at the + +00:10:29.740 --> 00:10:31.000 + same time. + +00:10:31.000 --> 00:10:34.870 + I just said that I really like the idea that you said about + +00:10:34.870 --> 00:10:36.000 + collaboration. + +00:10:36.000 --> 00:10:38.830 + Yeah, because it is really something that is missing when + +00:10:38.830 --> 00:10:42.200 + you think about it. Like, the good thing about Emacs, and + +00:10:42.200 --> 00:10:44.900 + the philosophy of Emacs generally, is that we have + +00:10:44.900 --> 00:10:48.390 + different modes working together, and they do one thing, or + +00:10:48.390 --> 00:10:51.000 + multiple things, and they do it very well. + +00:10:51.000 --> 00:10:54.890 + We have org mode for editing structured documents, we have + +00:10:54.890 --> 00:10:58.200 + maggots to manage repositories, we have calc to do + +00:10:58.200 --> 00:11:02.000 + calculations with a polished notation and whatnot. + +00:11:02.000 --> 00:11:04.960 + It feels like we have a great tool for collaboration, + +00:11:04.960 --> 00:11:08.050 + editing a singular buffer, which is CRDT, which we've + +00:11:08.050 --> 00:11:10.000 + already talked about before. + +00:11:10.000 --> 00:11:13.420 + I'm not sure if we did have a presentation on Emacs about + +00:11:13.420 --> 00:11:17.130 + CRDT. I think, if you're more interested in this, go back + +00:11:17.130 --> 00:11:20.410 + to the talk I did last year with Joe Connelly and Noura El + +00:11:20.410 --> 00:11:24.000 + Hassan on Emacs Research Group. + +00:11:24.000 --> 00:11:26.000 + We did demonstrate what CRDT was. + +00:11:26.000 --> 00:11:28.890 + So, we have a very good tool for working on a buffer, and + +00:11:28.890 --> 00:11:31.000 + we have a very good way to take notes. + +00:11:31.000 --> 00:11:34.220 + Why not try to combine the two tools, like Emacs is so good + +00:11:34.220 --> 00:11:36.660 + at doing? We take one mode, we take another mode, we clash + +00:11:36.660 --> 00:11:38.580 + them together and we do something very interesting with + +00:11:38.580 --> 00:11:39.000 + them. + +00:11:39.000 --> 00:11:42.430 + Well, we should probably be doing something similar with + +00:11:42.430 --> 00:11:46.140 + note-taking, so that people can actually start building + +00:11:46.140 --> 00:11:47.000 + notes together. + +00:11:47.000 --> 00:11:51.190 + I think that would be a really key step in the future. But + +00:11:51.190 --> 00:11:54.330 + anyway, I think I'm repeating myself a little bit, and I + +00:11:54.330 --> 00:11:57.000 + don't want to say too much right now. + +00:11:57.000 --> 00:11:59.210 + You'll see it in the future, it's coming month or coming + +00:11:59.210 --> 00:12:01.000 + year, so you're not in a rush and flus. + +00:12:01.000 --> 00:12:03.000 + Okay, Vityan, it's back to you now. + +00:12:03.000 --> 00:12:05.350 + Okay, so how do you find a way to get a nice overview of + +00:12:05.350 --> 00:12:07.000 + multiple notes to rearrange them? + +00:12:07.000 --> 00:12:09.790 + Like, basically putting many small notes on another table + +00:12:09.790 --> 00:12:11.000 + and rearranging them. + +00:12:11.000 --> 00:12:16.930 + So, my initial idea when I tried to make Zettle Desk was to + +00:12:16.930 --> 00:12:20.000 + get as close as possible to this. + +00:12:20.000 --> 00:12:22.800 + Have a lot of small notes in my table and be able to + +00:12:22.800 --> 00:12:24.000 + rearrange them. + +00:12:24.000 --> 00:12:29.000 + Due to Org Mode being text, this is not exactly possible. + +00:12:29.000 --> 00:12:33.190 + But I don't know if this question was before the third demo + +00:12:33.190 --> 00:12:34.000 + or not. + +00:12:34.000 --> 00:12:39.870 + What I showed in that demo, I think, to an extent, showed + +00:12:39.870 --> 00:12:42.000 + what I do for rearranging. + +00:12:42.000 --> 00:12:47.720 + You add all the things you want on the Zelda scratch buffer + +00:12:47.720 --> 00:12:50.000 +, and then rearrange them however you want. + +00:12:50.000 --> 00:12:56.000 + So, that's as close as I have been able to get to that. + +00:12:56.000 --> 00:13:05.230 + It's not perfect, but I think it is alright for being text, + +00:13:05.230 --> 00:13:11.000 + which making it graphically would be hard, I think. + +00:13:11.000 --> 00:13:17.000 + And the next one seems to be a follow-up on that question. + +00:13:17.000 --> 00:13:20.260 + Yeah, it says it's difficult or impossible to do that. Yeah + +00:13:20.260 --> 00:13:21.000 +, I agree. + +00:13:21.000 --> 00:13:27.000 + Okay. + +00:13:27.000 --> 00:13:33.560 + So, this package that you say on the next one, on the next + +00:13:33.560 --> 00:13:39.000 + question, I will check this link out. + +00:13:39.000 --> 00:13:44.840 + It seems very interesting for writing your notes on a big + +00:13:44.840 --> 00:13:46.000 + canvas. + +00:13:46.000 --> 00:13:50.230 + I think it would definitely make sense for my workflow to + +00:13:50.230 --> 00:13:53.260 + use something like this, if it is what I have understood + +00:13:53.260 --> 00:13:54.000 + you mean it is. + +00:13:54.000 --> 00:13:59.000 + I would love to try it. And we'll get back to you. + +00:13:59.000 --> 00:14:03.750 + Whoever left that message, if you want to leave any contact + +00:14:03.750 --> 00:14:08.000 + information or talk to me, I would love to get back to you + +00:14:08.000 --> 00:14:09.000 + about this. + +00:14:09.000 --> 00:14:11.000 + Because it looks very interesting. + +00:14:11.000 --> 00:14:14.810 + Yes, so again, all the contact information will be + +00:14:14.810 --> 00:14:17.000 + available on the talk page. + +00:14:17.000 --> 00:14:18.630 + By the way, if you're worried about the lighting changes in + +00:14:18.630 --> 00:14:21.370 + my place, it's just that sometimes I have a lot of light in + +00:14:21.370 --> 00:14:22.000 + my face. + +00:14:22.000 --> 00:14:25.000 + And then, when I'm a little tired, I do rest like this. + +00:14:25.000 --> 00:14:28.000 + And it's very different, but it's still me. Don't worry + +00:14:28.000 --> 00:14:28.000 + about it. + +00:14:28.000 --> 00:14:30.460 + I'm not going to turn it off, because every time it's like + +00:14:30.460 --> 00:14:32.000 + a flashbang going into my eyes. + +00:14:32.000 --> 00:14:35.240 + So, if you want to talk to Vidyanos afterwards, maybe do + +00:14:35.240 --> 00:14:38.000 + not leave your coordinates right into the pad. + +00:14:38.000 --> 00:14:41.000 + Maybe get in touch with Vidyanos instead. + +00:14:41.000 --> 00:14:43.380 + Those ads are going to be public eventually, and even + +00:14:43.380 --> 00:14:46.000 + though we will be reviewing all the content within them, + +00:14:46.000 --> 00:14:49.000 + it means that they will be open to people for a while. + +00:14:49.000 --> 00:14:52.000 + So, maybe avoid putting personal information over there. + +00:14:52.000 --> 00:14:54.440 + But otherwise, you'll be able to connect after the + +00:14:54.440 --> 00:14:57.590 + conference relatively easily, and Vidyanos will be able to + +00:14:57.590 --> 00:14:58.000 + follow up. + +00:14:58.000 --> 00:15:01.000 + Or even just on the questions, whenever you have the time. + +00:15:01.000 --> 00:15:03.760 + But it might take one or two weeks for the speakers to get + +00:15:03.760 --> 00:15:06.000 + back to the questions you put into the pad. + +00:15:06.000 --> 00:15:09.000 + We will be asking them frequently. + +00:15:09.000 --> 00:15:11.890 + We do have this policy, as you know, with Emacs, of nudging + +00:15:11.890 --> 00:15:13.000 + speakers to do something. + +00:15:13.000 --> 00:15:15.860 + So, we will nudge speakers towards answering your questions + +00:15:15.860 --> 00:15:18.510 +, but it might take us about one or two weeks to get all the + +00:15:18.510 --> 00:15:19.000 + answers. + +00:15:19.000 --> 00:15:22.000 + I think we don't have any more questions currently. + +00:15:22.000 --> 00:15:24.000 + There is one more. + +00:15:24.000 --> 00:15:26.000 + Oh, there is one more. So, please take it. + +00:15:26.000 --> 00:15:29.800 + Can we use Zettelkasten for coding too, especially when + +00:15:29.800 --> 00:15:32.000 + using the IDs like Visual Studio and Excel? + +00:15:32.000 --> 00:15:38.080 + So, I can't say for sure if you can use it, because I'm not + +00:15:38.080 --> 00:15:39.000 + in coding. + +00:15:39.000 --> 00:15:44.000 + The only language I know the best for coding is Emacs Lisp. + +00:15:44.000 --> 00:15:48.770 + And the only other one I know is Matlab for doing + +00:15:48.770 --> 00:15:54.000 + calculations, for example, for things in university. + +00:15:54.000 --> 00:15:59.000 + But I think you should be able to do that. + +00:15:59.000 --> 00:16:03.600 + If you look for Zettelkasten for coding, you will probably + +00:16:03.600 --> 00:16:06.000 + find some resources for it. + +00:16:06.000 --> 00:16:14.000 + I don't think it breaks the Zettelkasten principles. + +00:16:14.000 --> 00:16:21.000 + You can make atomic nodes for coding concepts. + +00:16:21.000 --> 00:16:24.000 + So, it should work, I believe. + +00:16:24.000 --> 00:16:26.000 + Yeah, and I can actually confirm this. + +00:16:26.000 --> 00:16:31.150 + I did share with you before in one of the previous Q&A how + +00:16:31.150 --> 00:16:33.390 + we're taking notes on this little device right here to do + +00:16:33.390 --> 00:16:34.000 + lead code exercises. + +00:16:34.000 --> 00:16:38.400 + The thing about lead code exercises is that, well, lead + +00:16:38.400 --> 00:16:40.000 + code, sorry, let's be more vague about it. + +00:16:40.000 --> 00:16:42.990 + Lead code is a platform and not a free platform as well, + +00:16:42.990 --> 00:16:44.000 + and I'm not advertising them. + +00:16:44.000 --> 00:16:46.700 + But the concept of data structure and algorithm is really + +00:16:46.700 --> 00:16:48.000 + important to programming. + +00:16:48.000 --> 00:16:53.260 + And usually when you try to solve algorithmic problems, you + +00:16:53.260 --> 00:16:58.000 + rely on a number of patterns that have been developed by... + +00:16:58.000 --> 00:17:01.260 + Sorry, I get people telling me to my right here that, oh, + +00:17:01.260 --> 00:17:02.000 + the sim is going down. + +00:17:02.000 --> 00:17:06.850 + And so my stomach is falling into my body, just, oh, what + +00:17:06.850 --> 00:17:08.000 + happened? + +00:17:08.000 --> 00:17:10.310 + Anyway, going back to the point, we do rely on patterns and + +00:17:10.310 --> 00:17:13.000 + identification of patterns within a problem. + +00:17:13.000 --> 00:17:17.130 + So, as a result, it would be very much possible to create + +00:17:17.130 --> 00:17:20.000 + separate nodes for all these patterns. + +00:17:20.000 --> 00:17:22.630 + And you can have different exercises and say you have an + +00:17:22.630 --> 00:17:25.000 + exercise that is using two different things. + +00:17:25.000 --> 00:17:29.000 + It's using a tree pattern and it's using a depth search. + +00:17:29.000 --> 00:17:31.640 + If neither of those two words make any sense to you, do not + +00:17:31.640 --> 00:17:35.100 + worry and be grateful because this will haunt you at night + +00:17:35.100 --> 00:17:36.000 + otherwise. + +00:17:36.000 --> 00:17:38.730 + But it would be very, I think it would be a prime candidate + +00:17:38.730 --> 00:17:42.000 + really for atomization and linking within a Zettelkasten. + +00:17:42.000 --> 00:17:44.780 + Because it would make it so much easier to structure your + +00:17:44.780 --> 00:17:47.730 + knowledge in a way that is organic rather than hierarchical + +00:17:47.730 --> 00:17:48.000 +. + +00:17:48.000 --> 00:17:52.030 + So, yeah, this was a very good question and I'd be happy to + +00:17:52.030 --> 00:17:56.390 + encourage the asker to try it on their own and maybe make a + +00:17:56.390 --> 00:17:58.000 + presentation next year at the next EMACS Conf. + +00:17:58.000 --> 00:18:01.210 + Vidyanos, before we continue, I just want to give up the + +00:18:01.210 --> 00:18:02.000 + heads up. + +00:18:02.000 --> 00:18:05.230 + So, we have opened the room currently. If you want to join + +00:18:05.230 --> 00:18:10.000 + the room with Vidyanos, we have posted the link on ISC. + +00:18:10.000 --> 00:18:12.400 + And if you go to the talk page of Vidyanos talk, you will + +00:18:12.400 --> 00:18:14.000 + be able to join the room as well. + +00:18:14.000 --> 00:18:16.650 + We did have quite a number of questions. So, feel free to + +00:18:16.650 --> 00:18:17.000 + join. + +00:18:17.000 --> 00:18:19.530 + In about four minutes, we'll need to move on to the next + +00:18:19.530 --> 00:18:20.000 + talk. + +00:18:20.000 --> 00:18:23.000 + But, well, actually, I give you about three more minutes. + +00:18:23.000 --> 00:18:26.000 + Do we have any more questions on the pad, Vidyanos? + +00:18:26.000 --> 00:18:29.000 + On the pad, no. I'm looking on IRC. + +00:18:29.000 --> 00:18:34.000 + Someone says if Zeldas.dl will be available in Melpa. + +00:18:34.000 --> 00:18:39.000 + It is on Melpa right now. You can find it. + +00:18:39.000 --> 00:18:44.390 + Right. And you just have to -- sorry, my voice is getting + +00:18:44.390 --> 00:18:45.000 + raspier. + +00:18:45.000 --> 00:18:47.680 + It's only the first day of EMACS Conf. It's not even lunch + +00:18:47.680 --> 00:18:49.000 + and I'm already losing my voice. + +00:18:49.000 --> 00:18:51.000 + This is not booting well for the rest. + +00:18:51.000 --> 00:18:54.100 + But, yeah, you should be able to find it pretty easily by + +00:18:54.100 --> 00:19:00.080 + looking on doc.go for Melpa and space and zeldacaster.el, + +00:19:00.080 --> 00:19:01.000 + the name of the package. + +00:19:01.000 --> 00:19:03.000 + You'll be able to find it. And we can put it on the page. + +00:19:03.000 --> 00:19:04.600 + I'm pretty sure it's already on your talk page, Vidyanos, + +00:19:04.600 --> 00:19:05.000 + as well. + +00:19:05.000 --> 00:19:07.000 + Yeah, it is on the talk page. + +00:19:07.000 --> 00:19:09.000 + Yeah, you'll be able to find it really quickly. + +00:19:09.000 --> 00:19:11.000 + So we have about two more minutes. + +00:19:11.000 --> 00:19:12.670 + Did you see any other question that you'd like to answer as + +00:19:12.670 --> 00:19:13.000 + well? + +00:19:13.000 --> 00:19:17.800 + I'm scrolling on IRC since the talk started to see if there + +00:19:17.800 --> 00:19:19.000 + is anything else. + +00:19:19.000 --> 00:19:21.000 + I don't see anything else. + +00:19:21.000 --> 00:19:28.000 + If anyone has a room here, I would love to continue. + +00:19:28.000 --> 00:19:33.000 + If not, then I think we've already answered enough things. + +00:19:33.000 --> 00:19:38.000 + Sure, I would concur. You have covered a lot of ground. + +00:19:38.000 --> 00:19:41.240 + I am personally happy to be seeing so many talks about Zeld + +00:19:41.240 --> 00:19:42.000 +acaster. + +00:19:42.000 --> 00:19:44.430 + It feels like I was a little bit of a forerunner at EMACS + +00:19:44.430 --> 00:19:46.000 + Conf talking about Zeldacaster. + +00:19:46.000 --> 00:19:48.450 + And now, we are two years later and we're still talking + +00:19:48.450 --> 00:19:49.000 + about it. + +00:19:49.000 --> 00:19:51.170 + I know a lot of people are getting a little tired of + +00:19:51.170 --> 00:19:53.000 + hearing about Zeldacaster all the time. + +00:19:53.000 --> 00:19:59.050 + But if you part all the communication, if you focus on what + +00:19:59.050 --> 00:20:00.000 + it actually does, + +00:20:00.000 --> 00:20:03.000 + and I keep saying it's just notes and it's just links, + +00:20:03.000 --> 00:20:05.000 + it's actually quite amazing what you can do with it. + +00:20:05.000 --> 00:20:07.000 + It's just a mental model, really. + +00:20:07.000 --> 00:20:11.690 + So I would kind of use the, you know, sorry for the voxing + +00:20:11.690 --> 00:20:12.000 + here. + +00:20:12.000 --> 00:20:16.460 + But if you have been interested in Zeldacaster at some + +00:20:16.460 --> 00:20:17.000 + point, + +00:20:17.000 --> 00:20:20.000 + or if you are frustrated by all the talk about Zeldacaster, + +00:20:20.000 --> 00:20:22.000 + that seems to be kind of like a cult at some point, + +00:20:22.000 --> 00:20:27.460 + well, I would encourage you maybe to try, not necessarily + +00:20:27.460 --> 00:20:28.000 + try it for yourself, + +00:20:28.000 --> 00:20:31.000 + but try to understand really the simple stuff behind it. + +00:20:31.000 --> 00:20:34.340 + Because honestly, there's nothing very revolutionary about + +00:20:34.340 --> 00:20:36.000 + this note-taking method. + +00:20:36.000 --> 00:20:39.370 + It's just that it used to be done with paper, and now it's + +00:20:39.370 --> 00:20:40.000 + done with computers, + +00:20:40.000 --> 00:20:42.000 + and it makes it a little more easier. + +00:20:42.000 --> 00:20:45.500 + Personally, what I find the most helpful in this type of + +00:20:45.500 --> 00:20:48.000 + note-taking is how organic everything feels. + +00:20:48.000 --> 00:20:50.650 + You do not need to be thinking about the structure from the + +00:20:50.650 --> 00:20:51.000 + get-go, + +00:20:51.000 --> 00:20:53.000 + and this is extremely freeing. + +00:20:53.000 --> 00:20:56.000 + OK, Vidyanos, we are about out of time. + +00:20:56.000 --> 00:20:58.240 + Thank you so much for taking the time to answer the + +00:20:58.240 --> 00:20:59.000 + questions. + +00:20:59.000 --> 00:21:01.690 + We will be in touch in the future, and we'll be looking + +00:21:01.690 --> 00:21:04.000 + forward to having more presentations about Zeldacaster, + +00:21:04.000 --> 00:21:08.000 + and perhaps maybe one by you in the future. + +00:21:08.000 --> 00:21:11.000 + So, well, thank you so much. + +00:21:11.000 --> 00:21:13.470 + And, Vidyanos, I don't see anyone in the room, so feel free + +00:21:13.470 --> 00:21:15.000 + to leave the room after we're done. + +00:21:15.000 --> 00:21:18.410 + So in about one minute, we're going to go with the next + +00:21:18.410 --> 00:21:19.000 + talk. + +00:21:19.000 --> 00:21:23.000 + We might go a little bit quiet until the top of the minute. + +00:21:23.000 --> 00:21:26.000 + I need to drink, and I need to rest my voice. + +00:21:26.000 --> 00:21:28.000 + But in one minute, we'll be starting the next talk. + +00:21:28.000 --> 00:21:30.000 + Vidyanos, thank you so much, and see you next time. + +00:21:30.000 --> 00:21:32.000 + Bye. + +00:21:32.000 --> 00:21:35.000 + (Break) + +00:21:37.000 --> 00:21:37.000 + + +00:21:37.000 --> 00:21:40.000 + (Break) + +00:21:42.000 --> 00:21:42.000 + + +00:21:42.000 --> 00:21:45.000 + (Break) + +00:21:47.000 --> 00:21:47.000 + + +00:21:47.000 --> 00:21:50.000 + (Break) + +00:21:50.000 --> 00:21:53.000 + (Break) + +00:21:55.000 --> 00:21:55.000 + + +00:21:55.000 --> 00:21:58.000 + (Break) + +00:22:00.000 --> 00:22:00.000 + + +00:22:00.000 --> 00:22:03.000 + (Break) + diff --git a/2022/captions/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--answers.vtt b/2022/captions/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--answers.vtt new file mode 100644 index 00000000..8391419c --- /dev/null +++ b/2022/captions/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--answers.vtt @@ -0,0 +1,1535 @@ +WEBVTT + +00:00:02.000 --> 00:00:02.000 + + +00:00:02.000 --> 00:00:05.780 + All right. I think we're live. Thank you, Andrew, for the + +00:00:05.780 --> 00:00:06.480 + great talk. + +00:00:06.480 --> 00:00:09.040 + Folks, if you'd like to ask your questions, please post + +00:00:09.040 --> 00:00:11.280 + them on the pad. And at some point + +00:00:11.280 --> 00:00:13.340 + in like a minute or two, we'll also open this big blue + +00:00:13.340 --> 00:00:14.560 + button room if you'd like to + +00:00:14.560 --> 00:00:17.480 + join here directly and ask questions here. Take it away, + +00:00:17.480 --> 00:00:18.000 + Andrew. + +00:00:18.000 --> 00:00:25.200 + Yeah, thanks. So should I be reading the questions from the + +00:00:25.200 --> 00:00:26.880 + pad? Yeah. + +00:00:26.880 --> 00:00:28.400 + Yeah, that would be great. + +00:00:29.040 --> 00:00:34.760 + OK, so I see there's a question about is this built into Em + +00:00:34.760 --> 00:00:37.440 +acs? I guess that refers to SQLite. + +00:00:37.440 --> 00:00:41.630 + And is it possible to have multiple schemas, multiple + +00:00:41.630 --> 00:00:43.840 + databases? Yes, you could do all that + +00:00:43.840 --> 00:00:48.270 + with Emacs 29. SQLite is built in. You can open up multiple + +00:00:48.270 --> 00:00:50.000 + databases simultaneously and do just + +00:00:50.000 --> 00:00:53.460 + the normal things that you can do with databases. You can + +00:00:53.460 --> 00:00:54.640 + create whatever tables you want. + +00:00:55.440 --> 00:01:00.720 + You can create-- you can have transactions. So it's pretty + +00:01:00.720 --> 00:01:04.000 + full featured. With SQLite, + +00:01:04.000 --> 00:01:08.270 + there's also a notion of additions. You could kind of + +00:01:08.270 --> 00:01:10.880 + compile new things into it. And I'm not + +00:01:10.880 --> 00:01:14.560 + exactly sure to the extent that that is possible as well. + +00:01:14.560 --> 00:01:16.400 + So it's like how full featured of a + +00:01:16.400 --> 00:01:19.540 + SQLite is it? I'm not sure. But the basic stuff, you can + +00:01:19.540 --> 00:01:21.680 + certainly do. And that basic stuff is + +00:01:21.680 --> 00:01:26.860 + fantastic. Next question is, what about collaborative + +00:01:26.860 --> 00:01:29.920 + editing with this? Can you + +00:01:29.920 --> 00:01:35.070 + have multiple computers with multiple Emacs with org mode? + +00:01:35.070 --> 00:01:37.840 + I think it sort of depends. Yes, + +00:01:37.840 --> 00:01:41.640 + I mean, databases are fantastic for having multiple users + +00:01:41.640 --> 00:01:44.080 + doing multiple things at the same time. + +00:01:44.080 --> 00:01:48.990 + And they're really designed for this use case. So I would + +00:01:48.990 --> 00:01:51.760 + say, yes, you could have multiple + +00:01:51.760 --> 00:01:56.810 + editing of the database, multiple editing, whereas you see + +00:01:56.810 --> 00:02:04.160 + some [AUDIO OUT] probably not the best + +00:02:04.160 --> 00:02:06.830 + solution. I suspect it might be possible, but I wouldn't + +00:02:06.830 --> 00:02:08.720 + want to try it. I think it's better for, + +00:02:08.720 --> 00:02:12.660 + like, oh, you can have multiple processes, multiple users, + +00:02:12.660 --> 00:02:14.400 + perhaps contributing to the + +00:02:14.400 --> 00:02:17.610 + same database. And you're growing the database, but not + +00:02:17.610 --> 00:02:20.080 + such tight synchronous interactivity that + +00:02:20.080 --> 00:02:24.520 + I think you might be imagining here. What about using this + +00:02:24.520 --> 00:02:26.880 + on multiple computers? How do you + +00:02:26.880 --> 00:02:31.140 + synchronize your data? I don't know. I need to figure that + +00:02:31.140 --> 00:02:33.040 + out. I think there's a-- like, + +00:02:33.040 --> 00:02:36.470 + yes, you can synchronize your database in the same [AUDIO + +00:02:36.470 --> 00:02:38.320 + OUT] Emacs doesn't have any great + +00:02:38.320 --> 00:02:43.000 + solutions for this. That is, like, when-- let's say I want + +00:02:43.000 --> 00:02:45.680 + to synchronize the things I'm editing + +00:02:45.680 --> 00:02:49.280 + on Emacs with my phone. There's all sorts of various + +00:02:49.280 --> 00:02:52.320 + solutions. You could use Dropbox, Google + +00:02:52.320 --> 00:02:56.930 + Drive, these kinds of things. The database makes that a + +00:02:56.930 --> 00:02:59.600 + little bit harder in the sense that it's + +00:02:59.600 --> 00:03:04.400 + one giant database. I suspect there are interesting ways to + +00:03:04.400 --> 00:03:06.560 + do this, but I haven't explored this area + +00:03:06.560 --> 00:03:09.180 + yet. I think it's a great question, though, and I would + +00:03:09.180 --> 00:03:10.800 + like to investigate this further. + +00:03:10.800 --> 00:03:16.640 + Are you planning to further-- this is a new other question. + +00:03:16.640 --> 00:03:18.720 + Are you planning to further develop EKG? + +00:03:18.720 --> 00:03:22.330 + It's highly [AUDIO OUT] me, and I do prefer SQLite over + +00:03:22.330 --> 00:03:23.920 + Text. Thank you for buying into + +00:03:25.200 --> 00:03:29.280 + the vision. I really like to hear that. Yeah, I am + +00:03:29.280 --> 00:03:32.080 + personally using EKG. I am developing it. + +00:03:32.080 --> 00:03:36.940 + I don't think it's ready for general use yet. I'd like to + +00:03:36.940 --> 00:03:39.680 + get it to a state where it is ready + +00:03:39.680 --> 00:03:43.410 + for general use probably by the end of the month. I think I + +00:03:43.410 --> 00:03:45.600 +'ll have a lot of time. There's a pretty + +00:03:45.600 --> 00:03:50.500 + slow month. So that would be really nice. I've just added a + +00:03:50.500 --> 00:03:52.160 + bunch of stuff to it. + +00:03:53.360 --> 00:03:55.970 + I'm exploring. I think the difficult thing is not + +00:03:55.970 --> 00:03:58.000 + necessarily to make it production, + +00:03:58.000 --> 00:04:01.800 + like to make it stable and everything like that and to do + +00:04:01.800 --> 00:04:04.320 + all the developer things that you want + +00:04:04.320 --> 00:04:09.380 + to see in the state of the art era, but really, it's a + +00:04:09.380 --> 00:04:12.240 + different model of how to have notes. + +00:04:12.240 --> 00:04:16.860 + I'm still thinking about some of these fundamental concepts + +00:04:16.860 --> 00:04:18.080 +. It took me a long + +00:04:18.080 --> 00:04:22.030 + time to iterate on various designs before I came up with EK + +00:04:22.030 --> 00:04:24.240 +G, which I think is [AUDIO OUT] + +00:04:24.240 --> 00:04:27.200 + and so we're going to really see how this goes. But yes, + +00:04:27.200 --> 00:04:29.920 + look for it soon. I'll probably announce it + +00:04:29.920 --> 00:04:39.410 + and maybe on email. And then I will make it available + +00:04:39.410 --> 00:04:40.960 + probably maybe on + +00:04:42.000 --> 00:04:46.780 + new alpha is what I would like to do. Is it possible to + +00:04:46.780 --> 00:04:47.760 + combine the + +00:04:47.760 --> 00:04:51.610 + triples database with some custom tables in the same SQLite + +00:04:51.610 --> 00:04:56.240 + file? Yes. I'm sorry. Let me continue + +00:04:56.240 --> 00:04:59.670 + reading. You need to build a log table next to the triples + +00:04:59.670 --> 00:05:02.080 + table or a quick query of event data. + +00:05:02.080 --> 00:05:04.270 + Yeah, you certainly could do that. And I've been thinking + +00:05:04.270 --> 00:05:04.720 + of adding, + +00:05:05.520 --> 00:05:09.210 + like, just having a record of changes might be an + +00:05:09.210 --> 00:05:12.720 + interesting thing. But yeah, it's just one table + +00:05:12.720 --> 00:05:17.840 + and you really could use this one table called triples, the + +00:05:17.840 --> 00:05:22.000 + triples table, in any other database + +00:05:22.000 --> 00:05:24.230 + or with any other database. It's kind of designed to be its + +00:05:24.230 --> 00:05:26.080 + own database though. But yeah, you could + +00:05:26.080 --> 00:05:28.500 + certainly add things to the side and I can imagine people + +00:05:28.500 --> 00:05:29.840 + writing extensions that do + +00:05:30.560 --> 00:05:34.000 + add some tables to the side to do whatever. It's just that + +00:05:34.000 --> 00:05:37.680 + I think you want to be careful because + +00:05:37.680 --> 00:05:42.660 + that once you start doing that, you might want to, you don + +00:05:42.660 --> 00:05:45.040 +'t want to kind of duplicate information or + +00:05:45.040 --> 00:05:47.490 + start having things go out of sync. It's kind of nice just + +00:05:47.490 --> 00:05:49.600 + to have one kind of data. But I think + +00:05:49.600 --> 00:05:52.090 + in certain circumstances, like the kind you're thinking + +00:05:52.090 --> 00:05:54.320 + about, it'd be appropriate. Yeah, so + +00:05:54.320 --> 00:06:00.010 + seems like a good idea. And then I see this final question + +00:06:00.010 --> 00:06:02.800 + here, final for now. What are your + +00:06:02.800 --> 00:06:05.270 + thoughts on adding a timestamp attribute to triple so that + +00:06:05.270 --> 00:06:07.280 + the database becomes append-only and by + +00:06:07.280 --> 00:06:10.570 + default you return the latest fact for a subject-object + +00:06:10.570 --> 00:06:13.360 + pair? Oh, really interesting question. + +00:06:13.360 --> 00:06:19.560 + Let's just say I haven't thought of that and I'll have to + +00:06:19.560 --> 00:06:21.680 + think about it. I don't think, + +00:06:21.680 --> 00:06:26.110 + I haven't seen other triples databases do this. I'd be + +00:06:26.110 --> 00:06:28.000 + interested in what you thought + +00:06:28.000 --> 00:06:33.610 + would be some of the, what you thought might be some of the + +00:06:33.610 --> 00:06:34.960 + interesting + +00:06:34.960 --> 00:06:39.440 + things that come out of this. Yes, you can maybe go back in + +00:06:39.440 --> 00:06:41.760 + time, which is nice, + +00:06:41.760 --> 00:06:45.620 + but then it seems hard to do things like deletes. I guess + +00:06:45.620 --> 00:06:48.000 + you could have tombstones or something + +00:06:48.000 --> 00:06:51.110 + like that, but it becomes a little bit more complicated. + +00:06:51.110 --> 00:06:52.880 + And also just one thing is like, + +00:06:52.880 --> 00:06:55.390 + these kind of databases, I didn't really talk about this in + +00:06:55.390 --> 00:06:57.120 + the talk, but they take up a little + +00:06:57.120 --> 00:06:59.870 + bit of room and I'm a little bit reluctant to have them + +00:06:59.870 --> 00:07:01.760 + even more kind of heavyweight. + +00:07:01.760 --> 00:07:05.380 + On the other hand, perhaps this would go well with the + +00:07:05.380 --> 00:07:07.680 + question about synchronization. If you + +00:07:07.680 --> 00:07:11.840 + were to do as you suggest and have timestamped triples, + +00:07:11.840 --> 00:07:14.080 + synchronization actually becomes pretty + +00:07:14.080 --> 00:07:18.110 + easy. So definitely an interesting thought that I'll have + +00:07:18.110 --> 00:07:19.600 + to think a little bit more about. I + +00:07:19.600 --> 00:07:23.970 + would love to solve the synchronization problem. All right. + +00:07:23.970 --> 00:07:29.520 + I don't see any other, oh yeah, + +00:07:29.520 --> 00:07:33.740 + I don't see any other questions, but you can ask on this, + +00:07:33.740 --> 00:07:38.160 + on the big blue button or type in any + +00:07:38.160 --> 00:07:42.730 + other questions. Otherwise I think we might be done. Cool. + +00:07:42.730 --> 00:07:45.280 + And I will add that. I think we still + +00:07:45.280 --> 00:07:48.590 + have about like, I guess, 15 minutes or so of live Q&A talk + +00:07:48.590 --> 00:07:52.320 + for this talk on stream. If there are no + +00:07:52.320 --> 00:07:54.790 + questions, you're welcome to cut it short, but otherwise we + +00:07:54.790 --> 00:07:56.320 + have plenty of time. So yeah, if + +00:07:56.320 --> 00:07:59.910 + people want to get more questions in, please do. I'm just + +00:07:59.910 --> 00:08:01.680 + going to sit back and wait for the + +00:08:01.680 --> 00:08:06.000 + questions to roll in then. Sounds good. Thank you. + +00:08:06.000 --> 00:08:35.920 + All right. I see another question pop up. + +00:08:37.040 --> 00:08:37.040 + + +00:08:37.040 --> 00:08:41.400 + With EKG, what about views like org-roam-node-mindmap-views + +00:08:41.400 --> 00:08:44.080 +? Yeah. I personally have + +00:08:44.080 --> 00:08:47.280 + not found those views to be super helpful, but I know + +00:08:47.280 --> 00:08:49.680 + people like them a lot. I don't see any + +00:08:49.680 --> 00:08:52.800 + reason why you couldn't do this. It just would be a + +00:08:52.800 --> 00:08:56.000 + slightly different implementation. Like this + +00:08:56.000 --> 00:09:02.940 + stuff forms a graph. You can do whatever you, you know, you + +00:09:02.940 --> 00:09:05.920 + could easily transform it like that same + +00:09:05.920 --> 00:09:09.560 + org-roam UI. You just have to have like another sort of + +00:09:09.560 --> 00:09:12.160 + translation layer basically to kind of + +00:09:12.160 --> 00:09:16.450 + like figure out how to deal with the stuff in EKG or really + +00:09:16.450 --> 00:09:19.520 + anything with triples. Like fundamentally + +00:09:19.520 --> 00:09:23.240 + it's a graph database, so it lends itself naturally to + +00:09:23.240 --> 00:09:25.680 + things that you're going to be doing, + +00:09:25.680 --> 00:09:30.080 + that anything you're going to be doing with the triples + +00:09:30.080 --> 00:09:30.800 + library. + +00:09:32.400 --> 00:09:32.400 + + +00:09:32.400 --> 00:09:52.480 + [silence] + +00:09:52.480 --> 00:09:46.220 + I see another question. Can ordinary Lisp data types, Lisp + +00:09:46.220 --> 00:09:59.440 + symbols, etc. be stored in the + +00:09:59.440 --> 00:10:04.760 + database? Yes, they can. In fact, it's primarily like if + +00:10:04.760 --> 00:10:07.120 + you don't specify anything, it kind of + +00:10:07.120 --> 00:10:10.900 + defaults to a list. That's sort of, I'm not exactly sure + +00:10:10.900 --> 00:10:13.520 + that's the right design choice, but that's + +00:10:13.520 --> 00:10:19.230 + kind of, it seems like a lot of the times it, this kind of + +00:10:19.230 --> 00:10:24.000 + makes sense. Like what if I just added + +00:10:24.000 --> 00:10:27.000 + like a title, I think, if I remember. I did add a title, + +00:10:27.000 --> 00:10:29.360 + but I'm trying to remember. If I just added + +00:10:29.360 --> 00:10:33.770 + the notion of like having a title to EKG and I believe that + +00:10:33.770 --> 00:10:36.240 +'s a list. Because you think about it, + +00:10:36.240 --> 00:10:39.160 + you could maybe have alternate titles or multiple titles. + +00:10:39.160 --> 00:10:40.880 + So these are ordered lists and so it kind + +00:10:40.880 --> 00:10:44.380 + of stores it. So basically what happens is you store in the + +00:10:44.380 --> 00:10:46.560 + list of like, but each list item is + +00:10:46.560 --> 00:10:49.910 + a separate row in the table and it has, we call them tri + +00:10:49.910 --> 00:10:52.880 +ples, but there's actually one more column + +00:10:52.880 --> 00:10:54.720 + that I don't talk about a lot because it just confuses the + +00:10:54.720 --> 00:10:56.160 + story. But in this case it's relevant + +00:10:56.160 --> 00:10:59.040 + because there you just say what the index is of the item + +00:10:59.040 --> 00:11:01.120 + that you're doing it. So like you'd be + +00:11:01.120 --> 00:11:09.150 + subject and then the predicate would be title in a sense. + +00:11:09.150 --> 00:11:12.400 + And then title one and then like, + +00:11:12.400 --> 00:11:15.860 + okay, that's index one on the fourth column. And then same + +00:11:15.860 --> 00:11:17.200 + thing with the other items. + +00:11:17.840 --> 00:11:24.090 + You can store symbols, SQLite and Emac SQL allow you to + +00:11:24.090 --> 00:11:27.920 + sort of kind of, well, Emac SQL kind of + +00:11:27.920 --> 00:11:31.130 + naturally lets you store lots of different things. And SQL + +00:11:31.130 --> 00:11:33.840 +ite, I kind of had to do something that + +00:11:33.840 --> 00:11:39.790 + was very similar to Emac SQL. Emac SQL, in SQL, you have to + +00:11:39.790 --> 00:11:43.120 + just, in your database, it basically + +00:11:43.120 --> 00:11:47.000 + has to be string. Like almost everything besides the predic + +00:11:47.000 --> 00:11:49.120 +ates, like the object has to be a string + +00:11:49.120 --> 00:11:52.250 + because it could really be anything. And the subject has to + +00:11:52.250 --> 00:11:53.840 + be a string because it could be + +00:11:53.840 --> 00:12:00.490 + anything. And because of that, we kind of have to make sure + +00:12:00.490 --> 00:12:04.080 + that we kind of have to just store + +00:12:04.080 --> 00:12:06.840 + things in a certain way. Like symbols are just strings and + +00:12:06.840 --> 00:12:10.720 + lists. You could even have a list, + +00:12:12.640 --> 00:12:17.810 + you could have really any list expression as a subject, + +00:12:17.810 --> 00:12:21.600 + right? But it gets just written to a + +00:12:21.600 --> 00:12:27.720 + string and then it gets, when it gets read, it basically, + +00:12:27.720 --> 00:12:30.960 + if it's just a string, it gets read + +00:12:30.960 --> 00:12:36.370 + basically as a list symbol or expression. And if it's a + +00:12:36.370 --> 00:12:39.840 + string, it's a string with a string inside, + +00:12:39.840 --> 00:12:44.130 + that is like the string actually has quotes on either end. + +00:12:44.130 --> 00:12:46.000 + Then we say it's actually a string. + +00:12:46.000 --> 00:12:48.770 + That's how kind of the internal implementation works. And + +00:12:48.770 --> 00:12:50.320 + that's what Emac SQL does as well. + +00:12:50.320 --> 00:12:55.040 + For those who are not familiar, Emac SQL is like this other + +00:12:55.040 --> 00:12:58.560 + way to kind of interact with SQL in + +00:12:58.560 --> 00:13:02.210 + your databases and it works well with SQLite and allows you + +00:13:02.210 --> 00:13:04.400 + to do things like store numbers and + +00:13:05.600 --> 00:13:08.960 + lists as well. And it does this exact same thing. So we try + +00:13:08.960 --> 00:13:10.320 + to keep compatibility. + +00:13:10.320 --> 00:13:18.910 + So you could start a database in Emacs 28 using Emacs SQL + +00:13:18.910 --> 00:13:23.440 + and then you could read it with Emacs 29 + +00:13:23.440 --> 00:13:27.430 + using the built in SQLite. That's the hope. I mean, I have + +00:13:27.430 --> 00:13:28.720 + tests, but I don't think anyone + +00:13:28.720 --> 00:13:35.050 + has actually tried to do that exact thing yet. Let's see. + +00:13:35.050 --> 00:13:39.040 + Are there any other new questions? + +00:13:39.040 --> 00:13:44.240 + Oh, there are some. Beyond note taking, what kind of + +00:13:44.240 --> 00:13:45.360 + packages do you + +00:13:45.360 --> 00:13:49.680 + think would benefit from a triple library? I think, + +00:13:49.680 --> 00:13:53.830 + I mean, I think it's generally just an easy way to store + +00:13:53.830 --> 00:13:54.880 + things. So + +00:13:56.800 --> 00:14:03.200 + anything in which you, think of packages that have to store + +00:14:03.200 --> 00:14:03.440 + like + +00:14:03.440 --> 00:14:09.440 + list expressions on the side. Like for example, like BBDB, + +00:14:09.440 --> 00:14:11.200 + if you've used that, + +00:14:11.200 --> 00:14:14.110 + it's just a, it is a database. It's the big brother + +00:14:14.110 --> 00:14:17.200 + database. It's not in a database because + +00:14:17.200 --> 00:14:19.890 + it was written before. Like there was an easy way to use + +00:14:19.890 --> 00:14:22.480 + databases in Emacs. Like that should, + +00:14:22.480 --> 00:14:24.640 + that could definitely, like you don't need the triples + +00:14:24.640 --> 00:14:26.160 + library, but you could easily do this + +00:14:26.160 --> 00:14:31.120 + in the triples library. And I would kind of think triples, + +00:14:31.120 --> 00:14:33.120 + you know, just takes care of a lot of + +00:14:33.120 --> 00:14:37.280 + things and gives a little option over everything. So I mean + +00:14:37.280 --> 00:14:39.760 +, there's all sorts of things like, + +00:14:39.760 --> 00:14:42.210 + as I, as I kind of demoed like bookmarks, like why are book + +00:14:42.210 --> 00:14:43.920 +marks not in the database? They should be. + +00:14:43.920 --> 00:14:48.150 + So I think if you just look around and look at all these, + +00:14:48.150 --> 00:14:50.640 + all these things as, + +00:14:51.280 --> 00:14:55.680 + as just, just dumping, dumping list expressions to a file, + +00:14:55.680 --> 00:14:57.440 + those probably + +00:14:57.440 --> 00:15:01.870 + SQLite and, and, you know, maybe triples would be a useful + +00:15:01.870 --> 00:15:03.200 + way to do that. + +00:15:03.200 --> 00:15:08.720 + Are you, another question, are you trying to PIM? I think + +00:15:08.720 --> 00:15:11.120 + that means personal information management + +00:15:11.120 --> 00:15:16.160 + with EKG. And what information do you want to manage? I'm + +00:15:16.160 --> 00:15:17.120 + kind of wondering + +00:15:18.720 --> 00:15:21.400 + how I, what I want to do, but like, as I just said in the + +00:15:21.400 --> 00:15:23.440 + previous question, like, I think + +00:15:23.440 --> 00:15:26.960 + you should be storing everything. Yeah. Like libraries, + +00:15:26.960 --> 00:15:28.880 + like, yeah, actually, yeah. BBBB, + +00:15:28.880 --> 00:15:32.180 + you can store contacts and email addresses. And I would + +00:15:32.180 --> 00:15:34.320 + like to, you know, why, if you're storing + +00:15:34.320 --> 00:15:37.110 + that, then it's kind of natural, like, oh, well, you know, + +00:15:37.110 --> 00:15:38.880 + sometimes I want to have a annotation. + +00:15:38.880 --> 00:15:41.380 + I want to write something about this person and, you know, + +00:15:41.380 --> 00:15:44.000 + maybe I want to have something and have, + +00:15:46.400 --> 00:15:48.930 + you know, maybe I want to tag this person. Maybe I want to, + +00:15:48.930 --> 00:15:53.200 + maybe I want to have notes that refer + +00:15:53.200 --> 00:15:55.700 + to this person. So like, it all starts to look like one + +00:15:55.700 --> 00:15:57.280 + giant database when I, when you kind + +00:15:57.280 --> 00:16:01.120 + of think about it a lot, which is kind of why in a, if you + +00:16:01.120 --> 00:16:04.800 + look at the develop, develop branch of + +00:16:04.800 --> 00:16:08.290 + triples, I, I'm work, I think what's going to be in the + +00:16:08.290 --> 00:16:10.400 + next version is, is going to be a + +00:16:10.400 --> 00:16:14.110 + standardized place to, to have a database. That is, you can + +00:16:14.110 --> 00:16:17.360 + just connect to a, to a, the standard + +00:16:17.360 --> 00:16:19.360 + database and you don't have to worry about where the + +00:16:19.360 --> 00:16:21.280 + database is. We'll keep track of that for you. + +00:16:21.280 --> 00:16:27.540 + And, and then everything should be working very easily and + +00:16:27.540 --> 00:16:30.320 + like allow this kind of collaborative + +00:16:30.320 --> 00:16:32.770 + use of, of these things. So like, yeah, it could be a + +00:16:32.770 --> 00:16:34.720 + personal information manager that has all + +00:16:34.720 --> 00:16:37.330 + sorts of information because I think that's what people + +00:16:37.330 --> 00:16:39.440 + tend to use Emacs for is that, you know, + +00:16:39.440 --> 00:16:43.610 + I have my own notes, my own contacts, my own tasks, you + +00:16:43.610 --> 00:16:46.080 + know, why aren't tasks in, tasks should + +00:16:46.080 --> 00:16:49.820 + also perhaps be in, in, in the database. Like, yeah, it's + +00:16:49.820 --> 00:16:52.000 + kind of, org mode is completely awesome, + +00:16:52.000 --> 00:16:56.110 + like really incredible. And it's, it's nice to mix to do's + +00:16:56.110 --> 00:16:58.480 + with things with text, but sometimes + +00:16:58.480 --> 00:17:01.850 + maybe you just want to do's that are not with text and + +00:17:01.850 --> 00:17:04.160 + maybe those could be also in the database. + +00:17:04.160 --> 00:17:06.050 + I don't know. It's just things I, things I'm thinking about + +00:17:06.050 --> 00:17:07.200 +. I'm not sure how far I want to + +00:17:07.200 --> 00:17:12.160 + take that. Another question. What about using other + +00:17:12.160 --> 00:17:16.000 + database programs like Postgres, MonoDB? + +00:17:16.000 --> 00:17:27.550 + You, so I think you could, yes, you could do that. I don't + +00:17:27.550 --> 00:17:29.920 + see it's a, I don't know why you, + +00:17:29.920 --> 00:17:32.720 + I don't know if there's any advantage to doing this. Like + +00:17:32.720 --> 00:17:35.280 + SQLite is kind of nice because it is + +00:17:35.280 --> 00:17:38.490 + light. It is kind of, it is built into Emacs and we don't + +00:17:38.490 --> 00:17:39.760 + really need anything incredibly + +00:17:39.760 --> 00:17:42.210 + sophisticated here. Just having a database is like such a + +00:17:42.210 --> 00:17:43.680 + higher level of sophistication than + +00:17:43.680 --> 00:17:47.500 + what we've been doing in Emacs are so far. Then you know, I + +00:17:47.500 --> 00:17:50.000 + think the other stuff might be overkill, + +00:17:50.000 --> 00:17:52.800 + but I see no reason why it wouldn't work. I just don't + +00:17:52.800 --> 00:17:54.640 + really see if there's really any big + +00:17:54.640 --> 00:18:00.620 + advantages. What is your preferred reference to underscan + +00:18:00.620 --> 00:18:04.960 + triples graph DBs? To sort of think + +00:18:04.960 --> 00:18:07.330 + about better schema design? Oh, that's a really awesome + +00:18:07.330 --> 00:18:12.480 + question. And I would, I don't, I don't + +00:18:12.480 --> 00:18:15.570 + think I can answer that immediately. I kind of know all + +00:18:15.570 --> 00:18:17.520 + this stuff from talking to people + +00:18:17.520 --> 00:18:21.730 + basically, instead of like reading things. And like in my + +00:18:21.730 --> 00:18:25.040 + work, I use these triples. That is, + +00:18:25.040 --> 00:18:28.100 + that's kind of like, you know, I kind of work on a + +00:18:28.100 --> 00:18:30.560 + knowledge graph. So I just have a, from, + +00:18:30.560 --> 00:18:35.860 + you know, working knowledge of how these things work. So, + +00:18:35.860 --> 00:18:38.400 + but it is an awesome question that let + +00:18:38.400 --> 00:18:41.530 + me, let me look into it after I kind of finished this and I + +00:18:41.530 --> 00:18:43.440 +'ll, I'll try to fill it in, in the, + +00:18:43.440 --> 00:18:47.210 + in the either pad that is connected to this talk. So thank + +00:18:47.210 --> 00:18:49.200 + you for that great question. + +00:18:49.200 --> 00:18:53.960 + So another question, will it slow down with the growth of a + +00:18:53.960 --> 00:18:56.960 + database? Yeah, I need to do + +00:18:56.960 --> 00:19:00.040 + tests about this. Cause I'd like to see like how much, how + +00:19:00.040 --> 00:19:01.360 + much the database blows up, + +00:19:01.360 --> 00:19:05.120 + how much it slows down for sure. Triples is not the most + +00:19:05.120 --> 00:19:07.360 + efficient way. It's not even close + +00:19:07.360 --> 00:19:10.650 + to being a greatly efficient way to store data for doing + +00:19:10.650 --> 00:19:13.120 + any arbitrary things. But what it is, + +00:19:13.120 --> 00:19:17.510 + it you're trading off standardization, which is, so you get + +00:19:17.510 --> 00:19:19.600 + standardization, but you lose, + +00:19:19.600 --> 00:19:24.880 + you lose the power of getting things in one SQL expression. + +00:19:24.880 --> 00:19:26.480 + So you often have to kind of like do + +00:19:26.480 --> 00:19:31.400 + a bunch of round trips and that's slow. However, I I'm + +00:19:31.400 --> 00:19:36.320 + using this now. I have a bunch of data + +00:19:36.320 --> 00:19:40.440 + and you know, quite a bit. I've, I kind of poured it over + +00:19:40.440 --> 00:19:42.720 + my old org Rome to, to EKG. + +00:19:42.720 --> 00:19:45.860 + And you know, I've been accumulating stuff in our room for + +00:19:45.860 --> 00:19:47.920 + like, you know, two years now, + +00:19:47.920 --> 00:19:52.510 + and it's pretty big, but it's very fast, really just no, no + +00:19:52.510 --> 00:19:55.200 + problems at all. So yes, I'm sure + +00:19:55.200 --> 00:20:00.750 + that there is a, a size in which it's too big to be fast. + +00:20:00.750 --> 00:20:04.400 + But I haven't hit it. And I suspect for + +00:20:04.400 --> 00:20:09.230 + most ordinary uses of, of, of Emacs, I doubt other people + +00:20:09.230 --> 00:20:12.160 + will hit it as well. I mean, it's kind of + +00:20:12.160 --> 00:20:14.380 + similar to, you know, when people think about org Rome and + +00:20:14.380 --> 00:20:15.760 + things like, well, you know, you're + +00:20:15.760 --> 00:20:17.980 + storing everything in one database, like how many notes + +00:20:17.980 --> 00:20:19.520 + could have possibly hold, like that's also + +00:20:19.520 --> 00:20:25.980 + going to get slow. Right. So yeah, it's, it's I think these + +00:20:25.980 --> 00:20:29.760 + limits exist, but people tend not to + +00:20:29.760 --> 00:20:32.480 + hit them and it's like, yes, this is going to get slow, but + +00:20:32.480 --> 00:20:34.320 + it'll certainly do better. I think that + +00:20:34.320 --> 00:20:38.850 + files in the file system. What are the, here's another + +00:20:38.850 --> 00:20:41.920 + question. What are your thoughts on + +00:20:41.920 --> 00:20:47.130 + allowing for a true graph DB backend? Whatever the current + +00:20:47.130 --> 00:20:50.480 + best free software alternative to Neo4j + +00:20:50.480 --> 00:20:54.710 + is, I guess. Okay. Great question. I've actually, yeah, I + +00:20:54.710 --> 00:20:57.360 + actually used graph databases and several + +00:20:57.360 --> 00:21:00.580 + companies I used to work for and you know, but we always + +00:21:00.580 --> 00:21:03.040 + ended up switching to SQL. I like it's, + +00:21:03.040 --> 00:21:08.000 + it's I can't, it's just at least for serious applications, + +00:21:08.000 --> 00:21:10.080 + they tended to be slow and + +00:21:10.880 --> 00:21:14.310 + lend themselves to a use that was not, that was very iter + +00:21:14.310 --> 00:21:16.480 +ative and not very well thought out. + +00:21:16.480 --> 00:21:23.880 + So however, I don't think it's as I said, with the last + +00:21:23.880 --> 00:21:28.720 + question for the way people want to, + +00:21:28.720 --> 00:21:31.090 + you know, the kind of data I think Emacs users will want, I + +00:21:31.090 --> 00:21:32.480 + think a graph database would work + +00:21:32.480 --> 00:21:36.610 + quite well. I don't know if there would be like, what are + +00:21:36.610 --> 00:21:38.720 + the advantages over triples + +00:21:38.720 --> 00:21:41.700 + aside from sort of just a more, you don't have to kind of + +00:21:41.700 --> 00:21:43.440 + even deal with the SQL layer, but like, + +00:21:43.440 --> 00:21:46.040 + I'm kind of, I'm kind of building, you know, with triples, + +00:21:46.040 --> 00:21:47.760 + we're sort of like, don't even worry about + +00:21:47.760 --> 00:21:50.220 + what the layer is, right? It's just, you don't even have to + +00:21:50.220 --> 00:21:51.920 + worry about SQL if you're just using + +00:21:51.920 --> 00:21:57.040 + kind of the normal functionality. So you can yeah. So, you + +00:21:57.040 --> 00:22:00.160 + know, maybe there are interesting + +00:22:00.160 --> 00:22:02.670 + implications for using a graph database, but I can't really + +00:22:02.670 --> 00:22:03.680 + think of any right now. + +00:22:03.680 --> 00:22:09.910 + It's a good question though. Thank you. - And I'll quickly + +00:22:09.910 --> 00:22:10.880 + add that we have about, + +00:22:10.880 --> 00:22:14.850 + I think two more minutes ish on this live stream. And then + +00:22:14.850 --> 00:22:17.120 + folks are welcome to either join here for + +00:22:17.120 --> 00:22:19.560 + continuing the Q and A or keep posting questions on the pad + +00:22:19.560 --> 00:22:21.040 + and you can continue here in this room + +00:22:21.040 --> 00:22:24.000 + after the stream moves on. - Okay. In that case, I'll, + +00:22:24.000 --> 00:22:28.320 + I will stick around until I don't get any more questions + +00:22:28.320 --> 00:22:30.080 + for a few minutes, then I'll probably + +00:22:31.200 --> 00:22:33.440 + log off. - Sounds great. Thank you. + +00:22:33.440 --> 00:22:35.440 + - Yeah. + +00:22:58.960 --> 00:23:02.640 + - I'm hungry. Did I get writing and recording this? So I + +00:23:02.640 --> 00:23:06.560 + actually did a month ago. So like, + +00:23:06.560 --> 00:23:10.530 + I don't even, I hardly even remember what it was, what that + +00:23:10.530 --> 00:23:12.160 + time was like, but yes, it's, + +00:23:12.160 --> 00:23:14.480 + it took a long time. These things, you know, these + +00:23:14.480 --> 00:23:16.480 + recordings are a little bit challenging. And in + +00:23:16.480 --> 00:23:18.780 + fact, I only kind of screwed up in several instances of the + +00:23:18.780 --> 00:23:20.240 + recording. And like, I just, + +00:23:20.240 --> 00:23:22.240 + I just don't have energy to kind of keep redoing. It's like + +00:23:22.240 --> 00:23:23.760 +, it's a long recording. It's also, + +00:23:23.760 --> 00:23:26.000 + I think I chopped it up into three bits. I'm not sure if it + +00:23:26.000 --> 00:23:27.600 + was that, is that obvious, but like, + +00:23:27.600 --> 00:23:31.860 + I guess, notes for people doing future sessions, it's like, + +00:23:31.860 --> 00:23:35.680 + make sure you have natural pauses that + +00:23:35.680 --> 00:23:39.860 + you can sort of just like record a segment because + +00:23:39.860 --> 00:23:42.880 + something would inevitably go wrong. And then like, + +00:23:42.880 --> 00:23:45.200 + if you're trying to repeat a 20 minute talk, it just takes + +00:23:45.200 --> 00:23:48.720 + forever. Yes. Oh yeah. The recipes. + +00:23:48.720 --> 00:23:54.230 + That's right. Yeah. I, well, yes, I'm glad you enjoyed the + +00:23:54.230 --> 00:23:56.480 + recipe. This is great. You put the + +00:23:56.480 --> 00:23:59.800 + recipes in there. Like one thing that I think is, is useful + +00:23:59.800 --> 00:24:01.840 + for, you know, regardless of what + +00:24:01.840 --> 00:24:06.110 + thing you're using in org-roam or EKG or whatever, you know + +00:24:06.110 --> 00:24:08.240 +, when you're making a recipe, + +00:24:08.240 --> 00:24:11.230 + you know, record in your daily diary, like, you know, when + +00:24:11.230 --> 00:24:12.800 + you, what you did it, if it worked, + +00:24:12.800 --> 00:24:16.160 + like what, what, you know, what adjustments you had to make + +00:24:16.160 --> 00:24:17.760 +, how it turned out, how it could be + +00:24:17.760 --> 00:24:21.320 + better. Then like, if it's linked to the recipe, then you + +00:24:21.320 --> 00:24:23.040 + have a kind of a record of like, oh, + +00:24:23.040 --> 00:24:25.720 + these are, you know, not just the recipe, but like your + +00:24:25.720 --> 00:24:27.840 + experiences making the recipe. I think + +00:24:27.840 --> 00:24:32.140 + it's really powerful because then you can see how, you know + +00:24:32.140 --> 00:24:34.480 +, you can kind of refine, refine and + +00:24:34.480 --> 00:24:37.030 + refine. It's really hard to do this in other ways. Like if + +00:24:37.030 --> 00:24:38.640 + just, you're just using your memory, + +00:24:38.640 --> 00:24:40.730 + you're, you're kind of like, well, it's, I can't remember + +00:24:40.730 --> 00:24:42.000 + what I did the last time I made this + +00:24:42.000 --> 00:24:45.940 + recipe, but like, you know, it seems a little bit extreme, + +00:24:45.940 --> 00:24:48.240 + but I think it's quite useful to use + +00:24:48.240 --> 00:25:01.720 + these note-taking applications for this use case. Okay. I + +00:25:01.720 --> 00:25:03.440 + think the stream has moved on, but again, + +00:25:03.440 --> 00:25:05.620 + you're all welcome to stay here and continue to Q&A as long + +00:25:05.620 --> 00:25:06.720 + as there are any questions. + +00:25:06.720 --> 00:25:13.440 + Thank you for your moderation. + +00:25:15.120 --> 00:25:19.920 + Cheers. Happy to. Thanks for the great talk. + +00:25:21.200 --> 00:25:21.200 + + +00:25:21.200 --> 00:25:23.200 + [end of transcript] + +00:25:46.080 --> 00:25:49.120 + While I see if there's any more questions, I'm going to + +00:25:49.120 --> 00:25:50.320 + fill in, I think not, not all + +00:25:50.320 --> 00:25:52.710 + the replies are filled in. So I'm going to start filling in + +00:25:52.710 --> 00:25:53.200 + this, you know, + +00:25:53.200 --> 00:25:56.240 + the pad that's associated with this. + +00:25:56.400 --> 00:25:56.400 + + +00:25:56.400 --> 00:25:58.400 + [end of transcript] + +00:26:00.160 --> 00:26:00.160 + + +00:26:00.160 --> 00:26:00.560 + Okay. + +00:26:02.560 --> 00:26:02.560 + + +00:26:02.560 --> 00:26:04.560 + [end of transcript] + +00:26:04.560 --> 00:26:14.560 + Okay. + +00:26:16.560 --> 00:26:16.560 + + +00:26:16.560 --> 00:26:18.560 + [end of transcript] + +00:26:20.560 --> 00:26:20.560 + + +00:26:20.560 --> 00:26:20.560 + Okay. + +00:26:22.560 --> 00:26:22.560 + + +00:26:22.560 --> 00:26:22.560 + Okay. + +00:26:24.560 --> 00:26:24.560 + + +00:26:24.560 --> 00:26:24.560 + Okay. + +00:26:26.560 --> 00:26:26.560 + + +00:26:26.560 --> 00:26:26.560 + Okay. + +00:26:28.560 --> 00:26:28.560 + + +00:26:28.560 --> 00:26:28.560 + Okay. + +00:26:30.560 --> 00:26:30.560 + + +00:26:30.560 --> 00:26:30.560 + Okay. + +00:26:32.560 --> 00:26:32.560 + + +00:26:32.560 --> 00:26:32.560 + Okay. + +00:26:34.560 --> 00:26:34.560 + + +00:26:34.560 --> 00:26:34.560 + Okay. + +00:26:36.560 --> 00:26:36.560 + + +00:26:36.560 --> 00:26:36.560 + Okay. + +00:26:36.560 --> 00:26:46.560 + Okay. + +00:26:46.560 --> 00:26:56.560 + Okay. + +00:26:56.560 --> 00:27:06.560 + Okay. + +00:27:06.560 --> 00:27:16.560 + Okay. + +00:27:16.560 --> 00:27:26.560 + Okay. + +00:27:26.560 --> 00:27:36.560 + Okay. + +00:27:36.560 --> 00:27:46.560 + Okay. + +00:27:46.560 --> 00:27:56.560 + Okay. + +00:27:56.560 --> 00:28:06.560 + Okay. + +00:28:06.560 --> 00:28:16.560 + Okay. + +00:28:16.560 --> 00:28:26.560 + Okay. + +00:28:26.560 --> 00:28:36.560 + Okay. + +00:28:36.560 --> 00:28:46.560 + Okay. + +00:28:46.560 --> 00:28:56.560 + Okay. + +00:28:56.560 --> 00:29:06.560 + Okay. + +00:29:06.560 --> 00:29:16.560 + Okay. + +00:29:16.560 --> 00:29:26.560 + Okay. + +00:29:26.560 --> 00:29:36.560 + Okay. + +00:29:36.560 --> 00:29:46.560 + Okay. + +00:29:46.560 --> 00:29:56.560 + Okay. + +00:29:56.560 --> 00:30:06.560 + Okay. + +00:30:06.560 --> 00:30:16.560 + Okay. + +00:30:16.560 --> 00:30:26.560 + Okay. + +00:30:26.560 --> 00:30:30.560 + All right. I, there's no one here and I don't like any + +00:30:30.560 --> 00:30:35.360 + other questions. So I am going to log out. Thank you + +00:30:35.360 --> 00:30:36.560 + everyone for your questions. + +00:30:36.560 --> 00:30:38.560 + [end of transcript] + +00:30:40.560 --> 00:30:40.560 + + diff --git a/2022/captions/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--answers.vtt b/2022/captions/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--answers.vtt new file mode 100644 index 00000000..87f60bd6 --- /dev/null +++ b/2022/captions/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--answers.vtt @@ -0,0 +1,2153 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.600 + going to start recording. All right. Thanks, Michael, for + +00:00:03.600 --> 00:00:05.040 + the great talk. So + +00:00:05.040 --> 00:00:09.070 + the Q&A is live now. Folks can ask questions on IRC or the + +00:00:09.070 --> 00:00:10.440 + pad. And then + +00:00:10.440 --> 00:00:12.660 + at some later point, we'll also open up this PDB room + +00:00:12.660 --> 00:00:13.860 + itself for people to join + +00:00:13.860 --> 00:00:16.310 + and ask their questions here if they want. Michael, take it + +00:00:16.310 --> 00:00:16.720 + away. + +00:00:16.720 --> 00:00:21.470 + Okay, I will start with the first question of etherpad is + +00:00:21.470 --> 00:00:22.600 + are you using + +00:00:22.600 --> 00:00:28.920 + this as it as a replacement of x ex WM? No, not yet. But I + +00:00:28.920 --> 00:00:33.040 +'m planning to. I'm a + +00:00:33.040 --> 00:00:39.700 + I use x WM since many years like for my main computing + +00:00:39.700 --> 00:00:42.400 + environment with Emacs. + +00:00:42.400 --> 00:00:47.530 + And I would love to have a replacement and Wayland. I'm not + +00:00:47.530 --> 00:00:49.120 + actually that sure + +00:00:49.120 --> 00:00:54.390 + if that needed. But I plan on using it. It's not finished. + +00:00:54.390 --> 00:00:55.760 + So is this testable? + +00:00:55.760 --> 00:01:04.660 + Yes, it is testable. I have gonna provide you the code. At + +00:01:04.660 --> 00:01:05.960 + the end of the + +00:01:05.960 --> 00:01:10.180 + video, there was a link to my site, but there's no site yet + +00:01:10.180 --> 00:01:12.160 +. I bought this URL a + +00:01:12.160 --> 00:01:16.520 + year ago, and that's a good reason to put something on + +00:01:16.520 --> 00:01:18.040 + there. So wait a few + +00:01:18.040 --> 00:01:22.250 + days and you can download a git repository. At least that's + +00:01:22.250 --> 00:01:23.640 + the plan. And + +00:01:23.640 --> 00:01:26.710 + then you can test it. Input handling is still missing, as I + +00:01:26.710 --> 00:01:30.560 + said. Yes, that makes + +00:01:30.560 --> 00:01:36.390 + it a bit rough. So the input is only guided by where the + +00:01:36.390 --> 00:01:39.560 + mouse pointer is. And + +00:01:39.560 --> 00:01:43.770 + it's missing in the C part in the C server part. But if + +00:01:43.770 --> 00:01:45.160 + this is in there, I + +00:01:45.160 --> 00:01:49.450 + think you can use it as a replacement. So it's testable, + +00:01:49.450 --> 00:01:50.240 + and it's not a + +00:01:50.240 --> 00:01:54.140 + replacement yet. Have you considered contributing to Emacs + +00:01:54.140 --> 00:01:55.080 + cores? The next + +00:01:55.080 --> 00:02:00.590 + question? Yes. Is it a general question? If I would like to + +00:02:00.590 --> 00:02:03.680 + do that? Yeah, I got + +00:02:03.680 --> 00:02:07.560 + quite a lot into Emacs core in the last year because I did + +00:02:07.560 --> 00:02:08.800 + language work with + +00:02:08.800 --> 00:02:13.030 + Lisp and really nerded out and got to know the core. So I + +00:02:13.030 --> 00:02:15.360 + like it. Why not? If + +00:02:15.360 --> 00:02:18.980 + it's a more specific question, if I would like to + +00:02:18.980 --> 00:02:20.840 + contribute the Wayland + +00:02:20.840 --> 00:02:24.810 + support to Emacs core, then I'm not that sure if it belongs + +00:02:24.810 --> 00:02:27.160 + there. Like at first, + +00:02:27.160 --> 00:02:29.660 + I thought, of course, you have to put it in the core. It's + +00:02:29.660 --> 00:02:30.520 + C. It has to work + +00:02:30.520 --> 00:02:35.120 + together. But after I looked into it a little bit more, how + +00:02:35.120 --> 00:02:36.280 + to do a Wayland + +00:02:36.280 --> 00:02:39.270 + compositor with Emacs, I found out, okay, there's this Way + +00:02:39.270 --> 00:02:40.280 +land protocol and + +00:02:40.280 --> 00:02:43.970 + all the programs that are working together in a Wayland + +00:02:43.970 --> 00:02:45.560 + desktop, they talk + +00:02:45.560 --> 00:02:51.150 + in this protocol. And when I got Emacs to talk with the Way + +00:02:51.150 --> 00:02:53.320 +land protocol, it + +00:02:53.320 --> 00:02:57.200 + was solved. And that is in the library, because it's an + +00:02:57.200 --> 00:02:58.920 + asynchronous process, + +00:02:58.920 --> 00:03:02.440 + like a network connection. And Emacs has an event loop that + +00:03:02.440 --> 00:03:05.560 + listens to + +00:03:06.480 --> 00:03:06.480 + + +00:03:06.480 --> 00:03:09.490 + messages on the network. So it's integrated into the Emacs + +00:03:09.490 --> 00:03:10.360 + core. You + +00:03:10.360 --> 00:03:13.870 + don't have to do anything more. But where it gets + +00:03:13.870 --> 00:03:15.920 + interesting, again, is this + +00:03:15.920 --> 00:03:21.900 + idea I had, maybe we could use it for more in Emacs. Emacs + +00:03:21.900 --> 00:03:23.840 + is fundamentally + +00:03:23.840 --> 00:03:26.740 + about drawing buffers to a screen and not fundamentally. + +00:03:26.740 --> 00:03:27.720 + But the part that's + +00:03:27.720 --> 00:03:30.800 + not a Lisp machine, the graphical part, it's drawing buff + +00:03:30.800 --> 00:03:32.000 +ers to a screen and you + +00:03:32.000 --> 00:03:36.060 + have to composite these buffers somehow. And now we're + +00:03:36.060 --> 00:03:38.400 + using different desktop + +00:03:38.400 --> 00:03:43.640 + toolkits like GTK on the Linux. And maybe we don't have to, + +00:03:43.640 --> 00:03:45.000 + we can just draw + +00:03:45.000 --> 00:03:49.980 + pixel buffers, like draw into a pixel buffer. Like, I don't + +00:03:49.980 --> 00:03:50.880 + know, what do we + +00:03:50.880 --> 00:03:55.640 + use for rendering? I forgot, Cairo or something. And this + +00:03:55.640 --> 00:03:56.760 + could just write + +00:03:56.760 --> 00:03:59.770 + into a pixel buffer. So now we arranged, and Emacs is + +00:03:59.770 --> 00:04:01.080 + already a window manager. + +00:04:01.080 --> 00:04:03.970 + So it's not that difficult to implement a window manager + +00:04:03.970 --> 00:04:05.320 + with Emacs because Emacs + +00:04:05.320 --> 00:04:11.060 + is a window manager, pretty good one, I think. And no, I + +00:04:11.060 --> 00:04:13.040 + just lost a little bit + +00:04:13.040 --> 00:04:16.670 + more train of thought. But so far to contributing to the + +00:04:16.670 --> 00:04:17.960 + core and we could do + +00:04:17.960 --> 00:04:20.840 + more with it. So next question. + +00:04:20.840 --> 00:04:23.960 + - One thing, Michael, quickly. Sorry. Yeah, it would be + +00:04:23.960 --> 00:04:25.200 + great if you could also + +00:04:25.200 --> 00:04:27.510 + repeat the questions for the stream before you answer them. + +00:04:27.510 --> 00:04:28.040 + That would be + +00:04:28.040 --> 00:04:28.440 + awesome. + +00:04:28.440 --> 00:04:30.120 + - I will do that. + +00:04:30.120 --> 00:04:30.920 + - Thank you. + +00:04:32.600 --> 00:04:32.600 + + +00:04:32.600 --> 00:04:36.260 + Question. Is this valent compositor in Emacs? What + +00:04:36.260 --> 00:04:39.040 + different with XReparent in + +00:04:39.040 --> 00:04:45.290 + X11? Okay, this is a little bit difficult for me to + +00:04:45.290 --> 00:04:48.520 + understand, but I answered + +00:04:48.520 --> 00:04:53.550 + anyway. So first, is this a valent compositor in Emacs? I + +00:04:53.550 --> 00:04:54.840 + would say no, + +00:04:54.840 --> 00:04:58.870 + because the Emacs doesn't do the valent compositoring. I + +00:04:58.870 --> 00:05:00.440 + first planned to do it + +00:05:00.440 --> 00:05:03.130 + like this, but it doesn't work out like this because you + +00:05:03.130 --> 00:05:06.120 + have to handle file + +00:05:06.120 --> 00:05:10.120 + descriptors and Emacs can't handle file descriptors except + +00:05:10.120 --> 00:05:11.480 + you go down to the C + +00:05:11.480 --> 00:05:19.930 + part. So no, it's not. It's a C, a WL roots valent compos + +00:05:19.930 --> 00:05:22.840 +itor that talks to + +00:05:22.840 --> 00:05:29.290 + Emacs and Emacs is, it's just like a helper compositor. Em + +00:05:29.290 --> 00:05:31.160 +acs says where to + +00:05:31.160 --> 00:05:34.380 + put the windows. It's the window manager. And in the future + +00:05:34.380 --> 00:05:35.360 +, where to put the + +00:05:35.360 --> 00:05:40.170 + inputs so that you can insert Emacs into the input stream + +00:05:40.170 --> 00:05:43.320 + like XWM does it. Okay, + +00:05:43.320 --> 00:05:49.070 + then what different with XReparent in X11? I don't actually + +00:05:49.070 --> 00:05:51.000 + know what XReparent + +00:05:51.000 --> 00:05:55.150 + is, so I'm sorry. I have to skip this one. How would + +00:05:55.150 --> 00:05:57.000 + multiple monitors be + +00:05:57.000 --> 00:05:59.990 + handled? Separate frames? Yes, separate frames. This is + +00:05:59.990 --> 00:06:01.160 + already testable. It's + +00:06:01.160 --> 00:06:08.540 + implemented. As soon as a new monitor crops up, the Emacs + +00:06:08.540 --> 00:06:10.320 + is, the valent + +00:06:10.320 --> 00:06:15.490 + protocol informs about a new output event and Emacs then + +00:06:15.490 --> 00:06:17.000 + pops up a new frame + +00:06:17.000 --> 00:06:22.240 + on this output. And depending on how usable you want to + +00:06:22.240 --> 00:06:24.760 + have it, you can just, + +00:06:24.760 --> 00:06:27.160 + there could be a menu like where do you want the output? Do + +00:06:27.160 --> 00:06:27.840 + you want to have a + +00:06:27.840 --> 00:06:30.230 + screen on it or something like that? And then you have + +00:06:30.230 --> 00:06:31.480 + output handling. Output + +00:06:31.480 --> 00:06:35.100 + handling is already working. So separate frames, one per + +00:06:35.100 --> 00:06:37.480 + output because that's + +00:06:37.480 --> 00:06:41.010 + the Emacs analog. You have windows, you have frames, frames + +00:06:41.010 --> 00:06:42.760 + are like monitors. + +00:06:42.760 --> 00:06:45.800 + And the special thing about valent outputs is they don't + +00:06:45.800 --> 00:06:46.600 + have to be a whole + +00:06:46.600 --> 00:06:49.980 + monitor or hardware device. They can also be like a normal + +00:06:49.980 --> 00:06:52.840 + frame. Next question + +00:06:52.840 --> 00:06:57.440 + is, could you make it so you can restart Emacs without + +00:06:57.440 --> 00:06:59.400 + logging out or switch to + +00:06:59.400 --> 00:07:02.640 + non-Emacs buffer while Emacs is blocking? These are the + +00:07:02.640 --> 00:07:05.080 + biggest issues with XWM. + +00:07:05.080 --> 00:07:13.240 + While Emacs is blocking. Okay, I have to think about this a + +00:07:13.240 --> 00:07:14.760 + little bit + +00:07:16.120 --> 00:07:19.270 + because right now I have a problem with restarting and the + +00:07:19.270 --> 00:07:20.600 + code I wrote. Emacs + +00:07:20.600 --> 00:07:25.340 + starts the valent server and then starts to talk to it, the + +00:07:25.340 --> 00:07:28.520 + server to Emacs. And + +00:07:28.520 --> 00:07:33.070 + as soon as the server terminates, Emacs terminates. Because + +00:07:33.070 --> 00:07:34.680 + GTK has this feature + +00:07:34.680 --> 00:07:38.550 + and it's a bug since several years and they know it, but + +00:07:38.550 --> 00:07:39.880 + apparently it's a + +00:07:39.880 --> 00:07:44.830 + feature, not a bug. So as soon as a valent GTK window + +00:07:44.830 --> 00:07:47.000 + terminates, it terminates + +00:07:47.000 --> 00:07:51.420 + its process. That means if there's an Emacs frame on valent + +00:07:51.420 --> 00:07:52.440 + and the frame is + +00:07:52.440 --> 00:07:57.610 + powered by GTK as Emacs currently does it, valent termin + +00:07:57.610 --> 00:07:59.560 +ates the frame, Emacs + +00:07:59.560 --> 00:08:02.870 + gets terminated, whole thing is terminated. Well, normally + +00:08:02.870 --> 00:08:03.480 + you would like + +00:08:03.480 --> 00:08:06.500 + something that like Emacs terminal frame, and then you pop + +00:08:06.500 --> 00:08:07.640 + open valent buffer + +00:08:07.640 --> 00:08:10.160 + or something like that. And it's just a long running Emacs + +00:08:10.160 --> 00:08:11.640 + session, but that's + +00:08:11.640 --> 00:08:16.670 + a blocker right now and it's GTK's fault. But we already + +00:08:16.670 --> 00:08:18.040 + know the other + +00:08:18.040 --> 00:08:22.220 + bug we have since years. And so I don't think this one is + +00:08:22.220 --> 00:08:23.640 + resolved either. + +00:08:23.640 --> 00:08:29.040 + So what does mean or switch to non-Emacs buffers while Em + +00:08:29.040 --> 00:08:31.000 +acs is blocking? No, + +00:08:31.000 --> 00:08:35.090 + you can't. Okay. Now you can't do this because Emacs does + +00:08:35.090 --> 00:08:36.200 + the window managing + +00:08:36.200 --> 00:08:43.700 + as in EXWM. So there's a new window or you want to switch a + +00:08:43.700 --> 00:08:45.960 + window. So it has + +00:08:45.960 --> 00:08:50.640 + to go through Emacs. Emacs gets a request for new window or + +00:08:50.640 --> 00:08:52.280 + Emacs just says layout + +00:08:52.280 --> 00:08:55.820 + this window at this point. And if Emacs as it's single + +00:08:55.820 --> 00:08:58.200 + threaded is blocked, it + +00:08:58.200 --> 00:09:05.830 + can't issue this layout request. So yeah, that's not going + +00:09:05.830 --> 00:09:09.320 + to work out as long + +00:09:09.320 --> 00:09:17.190 + as Emacs is just single threaded. Next question. Did this + +00:09:17.190 --> 00:09:19.400 + project can implement + +00:09:19.400 --> 00:09:23.680 + mirror of buffer for Emacs different window? Okay. I think + +00:09:23.680 --> 00:09:25.320 + I got this question. + +00:09:27.320 --> 00:09:31.810 + Can you, okay. In Emacs normally you know how buffers work. + +00:09:31.810 --> 00:09:32.760 + Like you have one + +00:09:32.760 --> 00:09:35.420 + buffer, you split it, you have two buffers, but it's the + +00:09:35.420 --> 00:09:37.000 + same buffer. Then you can + +00:09:37.000 --> 00:09:39.320 + take one of the buffers and look at another place in this + +00:09:39.320 --> 00:09:42.360 + buffer. You can't do + +00:09:42.360 --> 00:09:45.930 + this with Emacs buffers, but you can't do it like an EXWM. + +00:09:45.930 --> 00:09:47.080 + You can't do it with + +00:09:47.080 --> 00:09:50.980 + the X windows because there's only one view on the X + +00:09:50.980 --> 00:09:54.440 + windows. So now the special + +00:09:54.440 --> 00:09:57.790 + thing with Valent, you can have multiple views on the same + +00:09:57.790 --> 00:10:00.040 + window. And when I got + +00:10:00.040 --> 00:10:03.210 + to implement this idea, I was, yeah, of course I'm going to + +00:10:03.210 --> 00:10:04.440 + do multiple views, + +00:10:04.440 --> 00:10:09.710 + same window as Emacs does it. And I had it implemented. And + +00:10:09.710 --> 00:10:11.560 + then I found out, no, + +00:10:11.560 --> 00:10:16.660 + this is not going to work. Because a window has always one + +00:10:16.660 --> 00:10:18.920 + size. Like you can't, + +00:10:18.920 --> 00:10:23.000 + if you have a video open, you can't just tell it, make it + +00:10:23.000 --> 00:10:24.680 + this size. Or if you have + +00:10:24.680 --> 00:10:29.080 + a web browser open and you can't have different sizes. So + +00:10:29.080 --> 00:10:32.360 + it's in principle, it's + +00:10:32.360 --> 00:10:37.910 + comfortable with the Emacs model. Like the normal desktop + +00:10:37.910 --> 00:10:39.640 + model doesn't work with Emacs. So + +00:10:39.640 --> 00:10:44.200 + no, this still doesn't work. You can do a hack. I tried it. + +00:10:44.200 --> 00:10:45.320 + You have like one big + +00:10:45.320 --> 00:10:48.750 + window that you have other windows and you scale them or + +00:10:48.750 --> 00:10:50.600 + you crop them, but this isn't + +00:10:50.600 --> 00:10:54.890 + well supported in WL roots. And also it doesn't make a lot + +00:10:54.890 --> 00:10:57.720 + of sense actually. So I scrapped it + +00:10:57.720 --> 00:11:02.030 + and there's just one view. Okay. So just one view because + +00:11:02.030 --> 00:11:04.280 + it doesn't make a lot of sense to have + +00:11:04.280 --> 00:11:08.120 + multiple views. How does this next question, how does the + +00:11:08.120 --> 00:11:10.840 + single threaded, threaded affects + +00:11:10.840 --> 00:11:16.470 + the project? Yeah. And so far as it does affect any Emacs + +00:11:16.470 --> 00:11:19.640 + package, like it's not a special + +00:11:19.640 --> 00:11:25.400 + problem, not a, not a actual problem. Like the only, only, + +00:11:25.400 --> 00:11:26.480 + um, um, + +00:11:26.480 --> 00:11:32.850 + there's just one thing where Emacs could block, uh, the + +00:11:32.850 --> 00:11:35.720 + other windows. It's when the other window + +00:11:35.720 --> 00:11:39.730 + requests a layout, like there's a new program that opened a + +00:11:39.730 --> 00:11:42.760 + window or another window opened + +00:11:42.760 --> 00:11:46.840 + and Emacs is blocking and can't service this new surface + +00:11:46.840 --> 00:11:49.400 + request. So you won't see anything, + +00:11:49.400 --> 00:11:53.620 + but except from that, um, if you see the window Emacs hangs + +00:11:53.620 --> 00:11:57.320 + like with the EXWVM, you just can use + +00:11:57.320 --> 00:12:00.790 + the other program because it's not coupled to Emacs in any + +00:12:00.790 --> 00:12:02.120 + significant way. + +00:12:03.720 --> 00:12:08.190 + Um, and the good thing is, and that's the short side remark + +00:12:08.190 --> 00:12:11.240 +. If you want to go further than our + +00:12:11.240 --> 00:12:14.000 + single threaded thing, it's like, I think we, we have a + +00:12:14.000 --> 00:12:16.200 + talk somewhere in this conference, like, + +00:12:16.200 --> 00:12:21.420 + um, how Emacs was always async and is it, is async and Em + +00:12:21.420 --> 00:12:24.200 +acs is async. Well, we have async + +00:12:24.200 --> 00:12:27.670 + processes. We have callbacks, we have network processes we + +00:12:27.670 --> 00:12:29.800 + can use asynchronously. And I think + +00:12:29.800 --> 00:12:33.820 + that's the way forward for Emacs to don't be blocking, like + +00:12:33.820 --> 00:12:35.800 + have worker threads, something + +00:12:35.800 --> 00:12:40.140 + like this and have a main thing because it's one big muddle + +00:12:40.140 --> 00:12:43.160 + of muddle of code. I don't think you + +00:12:43.160 --> 00:12:49.280 + can just separate it. So, but we could lean more into these + +00:12:49.280 --> 00:12:53.320 + helpers and workers like Node.js does + +00:12:53.320 --> 00:12:57.950 + it or something like that. So next question is this + +00:12:57.950 --> 00:13:01.800 + technology. I have a short matter question. + +00:13:01.800 --> 00:13:08.200 + Do I have to stop or can I answer all the questions? Um, + +00:13:08.200 --> 00:13:09.880 + yeah, I think we can go on for now. + +00:13:09.880 --> 00:13:13.420 + And, um, the BBB room is also open for anyone who does want + +00:13:13.420 --> 00:13:15.720 + to join here to ask questions directly, + +00:13:15.720 --> 00:13:18.420 + um, in case the stream moves on. But I think this is our + +00:13:18.420 --> 00:13:20.280 + last talk on the Dev track before the launch + +00:13:20.280 --> 00:13:22.850 + break. So yeah, you should be good. Ah, nice. I don't need + +00:13:22.850 --> 00:13:24.520 + a lunch break because, uh, uh, + +00:13:24.520 --> 00:13:32.110 + in Europe it's already like the next meal. Right. So, um, + +00:13:32.110 --> 00:13:34.760 + next question is this technology + +00:13:34.760 --> 00:13:38.840 + need right? Valence server. Can it works with GNOME 3? + +00:13:38.840 --> 00:13:42.760 + Actually, yes, it needs to write a + +00:13:42.760 --> 00:13:47.490 + valence server because valence needs a valence server. And, + +00:13:47.490 --> 00:13:49.320 + uh, just for you, what does the + +00:13:49.320 --> 00:13:53.900 + server actually do? The server does, um, for example, it is + +00:13:53.900 --> 00:13:55.880 + the compositor. The valence + +00:13:55.880 --> 00:13:58.680 + compositor is part of the valence compositor. It's like + +00:13:58.680 --> 00:14:00.360 + difficult naming they had there. + +00:14:00.360 --> 00:14:04.320 + And it does a merging of, of windows. You have, um, you + +00:14:04.320 --> 00:14:06.760 + have an application and it draws a window. + +00:14:06.760 --> 00:14:09.730 + So you give it a pixel buffer, the application draws in + +00:14:09.730 --> 00:14:11.560 + this pixel buffer, and then you put it + +00:14:11.560 --> 00:14:16.310 + on the screen and compositor this other surfaces that are + +00:14:16.310 --> 00:14:19.560 + on the screen. And, um, you have to look + +00:14:19.560 --> 00:14:22.320 + into the frame rate you want to have and stuff like that. + +00:14:22.320 --> 00:14:24.360 + So it's really low level stuff. It's, + +00:14:24.360 --> 00:14:28.020 + it's, um, that's the thing the valence compositor does. And + +00:14:28.020 --> 00:14:30.200 + it does input handling like lip input, + +00:14:30.200 --> 00:14:33.760 + and then it receives something and routes it to this + +00:14:33.760 --> 00:14:37.320 + surface of that surface, or I think shell + +00:14:37.320 --> 00:14:41.340 + it's called. It's a shell that reserves the input. Okay. + +00:14:41.340 --> 00:14:44.760 + Can it work with GNOME 3? Yes, + +00:14:44.760 --> 00:14:47.930 + maybe. I don't know how open they are and if you can + +00:14:47.930 --> 00:14:50.600 + integrate it, but I don't think that's, + +00:14:50.600 --> 00:14:55.520 + that's a good direction because what do you want to build? + +00:14:55.520 --> 00:15:00.040 + So, ah, just one thing since Emacs can + +00:15:00.040 --> 00:15:04.130 + talk valence and is a normal valence client with the + +00:15:04.130 --> 00:15:07.880 + library I wrote, it can take, can talk to any + +00:15:07.880 --> 00:15:13.520 + other valence program and maybe you can do something useful + +00:15:13.520 --> 00:15:16.520 + with GNOME 3 and Emacs as a + +00:15:16.520 --> 00:15:19.500 + valence client. Like you can automate parts of your desktop + +00:15:19.500 --> 00:15:21.720 + or something like that. Um, yeah, + +00:15:21.720 --> 00:15:25.850 + that would be a possibility. Good. I'm going now to the + +00:15:25.850 --> 00:15:28.200 + next question that is, could there be an + +00:15:28.200 --> 00:15:31.940 + Emacs valence server and just connect with Emacs client? + +00:15:31.940 --> 00:15:36.600 + Cool. I named my thing Emacs valence + +00:15:36.600 --> 00:15:42.050 + server. So there is already an Emacs valence server. Um, + +00:15:42.050 --> 00:15:44.600 + connect with Emacs client. + +00:15:44.600 --> 00:15:50.600 + I don't actually get the question, but I think, um, yes, of + +00:15:50.600 --> 00:15:53.080 + course you have an Emacs running. + +00:15:53.080 --> 00:15:56.070 + It doesn't have to be an Emacs valence server because Emacs + +00:15:56.070 --> 00:15:56.920 + is multi-display + +00:15:56.920 --> 00:16:01.090 + and then you can just pop open the windows in valence or + +00:16:01.090 --> 00:16:04.360 + something like this. Next question is + +00:16:04.360 --> 00:16:07.650 + when you share your code, could you provide the equivalent + +00:16:07.650 --> 00:16:10.040 + of an X session script for those who + +00:16:10.040 --> 00:16:17.920 + are on XWM and want to test? Yes, I can, because it's my + +00:16:17.920 --> 00:16:21.720 + goal is to have it run like this for + +00:16:21.720 --> 00:16:24.660 + myself. But when I share the code in the coming days, as I + +00:16:24.660 --> 00:16:29.640 +'m planning, no, you won't run it like + +00:16:29.640 --> 00:16:33.910 + this because it's not that polished yet. So a startup is a + +00:16:33.910 --> 00:16:36.360 + little bit more involved and I + +00:16:36.360 --> 00:16:41.030 + haven't researched all the ways you can make it polished, + +00:16:41.030 --> 00:16:44.600 + but it's on the roadmap. So stay tuned. + +00:16:46.520 --> 00:16:51.220 + The next question is, I have a demo to show this Emacs val + +00:16:51.220 --> 00:16:52.520 +ence compositor, + +00:16:52.520 --> 00:16:56.900 + even if buggy now, just curious. Yes, there is a demo. Like + +00:16:56.900 --> 00:16:59.480 + you just watched one in the video. It + +00:16:59.480 --> 00:17:06.370 + was the compositor running. It did the compositing of the + +00:17:06.370 --> 00:17:11.080 + video I made. And the other demo is the + +00:17:11.080 --> 00:17:16.980 + code I'm planning to release. The code right now is working + +00:17:16.980 --> 00:17:21.960 +, but there's some documentation also, + +00:17:21.960 --> 00:17:26.510 + but it's not finished. So have fun digging in there, but + +00:17:26.510 --> 00:17:29.400 + don't expect anything like hyper + +00:17:29.400 --> 00:17:33.690 + polished or something like this. More, yeah, I'm looking + +00:17:33.690 --> 00:17:36.680 + for feedback and ideas and where to take + +00:17:36.680 --> 00:17:42.260 + this thing. Now we're going to get to buffer mirroring. So + +00:17:42.260 --> 00:17:44.760 + next question is, so the current + +00:17:44.760 --> 00:17:47.950 + limitation is that buffer mirroring doesn't respect + +00:17:47.950 --> 00:17:50.360 + different widths or heights. Yeah, + +00:17:50.360 --> 00:17:53.530 + the limitation is fundamentally if you have a normal + +00:17:53.530 --> 00:17:55.800 + desktop window, look at your browser + +00:17:55.800 --> 00:17:59.980 + or your video player, just watching me, you are just + +00:17:59.980 --> 00:18:04.600 + watching me. It just has one size. You can't + +00:18:04.600 --> 00:18:08.570 + say, please make yourself this size and this size and show + +00:18:08.570 --> 00:18:12.040 + me two different parts of your site or + +00:18:12.040 --> 00:18:17.520 + that doesn't work. It's not thought like this. So you can + +00:18:17.520 --> 00:18:20.680 + hack something up that you have like + +00:18:20.680 --> 00:18:24.300 + a big window and then you show a little crop part of it and + +00:18:24.300 --> 00:18:26.760 + another buffer. This does actually work, + +00:18:27.560 --> 00:18:32.940 + but just a little site or like if you want to do something + +00:18:32.940 --> 00:18:38.680 + like this, be prepared. WL roots doesn't, + +00:18:38.680 --> 00:18:43.740 + okay. So a Wayland server or compositor has to do its own + +00:18:43.740 --> 00:18:47.880 + compositing. That means it has to + +00:18:47.880 --> 00:18:51.590 + composite the different buffers or pixel buffer it has in + +00:18:51.590 --> 00:18:53.880 + one pixel buffer and put it on the output. + +00:18:55.000 --> 00:18:59.600 + That means you have to do that yourself. And there's a + +00:18:59.600 --> 00:19:01.960 + helper to do this in WL roots. + +00:19:01.960 --> 00:19:07.410 + This is WLR scene as it's called. And it does this for you. + +00:19:07.410 --> 00:19:09.720 + You build a scene tree and does + +00:19:09.720 --> 00:19:14.510 + damage tracking so it doesn't repaint everything. It saves + +00:19:14.510 --> 00:19:16.920 + battery and it's a lot of work to do this + +00:19:16.920 --> 00:19:21.710 + and it's ready there. But what is missing in this helper is + +00:19:21.710 --> 00:19:24.920 + cropping and resizing. So right now you + +00:19:24.920 --> 00:19:28.700 + can't crop and you can't resize. And I would say this is + +00:19:28.700 --> 00:19:31.240 + the main blocker for using the thing I + +00:19:31.240 --> 00:19:38.100 + built, Wayland compositor is you can't crop windows. And if + +00:19:38.100 --> 00:19:42.920 + you, maybe you use MP4 like the + +00:19:42.920 --> 00:19:48.310 + video player, it doesn't respect what you tell it, what the + +00:19:48.310 --> 00:19:51.480 + size it should get. It just, it keeps its + +00:19:51.480 --> 00:19:55.400 + aspect ratio and then just respects and either width or + +00:19:55.400 --> 00:19:58.280 + height, but not both if they don't fit. + +00:19:58.280 --> 00:20:01.790 + So you want to fit it in a buffer and then it's stay, it's + +00:20:01.790 --> 00:20:04.360 + overflows the buffer a little bit. You + +00:20:04.360 --> 00:20:09.200 + can see it in the talk video. In my talk, I posted like the + +00:20:09.200 --> 00:20:11.720 + little camera picture of me is not always + +00:20:11.720 --> 00:20:15.550 + there where it should be. It's over the mode line or + +00:20:15.550 --> 00:20:18.680 + something like that. And yeah, there needs to + +00:20:18.680 --> 00:20:25.180 + be some cropping. XWVM does cropping. It crops. You can try + +00:20:25.180 --> 00:20:28.920 + it out. If someone of you is a XWM + +00:20:28.920 --> 00:20:39.560 + user, he can do a full screen video MP4 video, and then + +00:20:39.560 --> 00:20:42.200 + just split right. And then you'll see + +00:20:42.200 --> 00:20:46.990 + just half the video screen because it's no cropped, but the + +00:20:46.990 --> 00:20:49.320 + video player in the background + +00:20:49.320 --> 00:20:55.480 + still sends the full screen. Okay. So much for this topic. + +00:20:55.480 --> 00:20:59.420 + Ah, okay. And if you want to do cropping, you have to do + +00:20:59.420 --> 00:21:03.720 + your own compositor. I asked the real W + +00:21:05.080 --> 00:21:09.870 + WL roots. Sorry. That's this W is complicated for me. I + +00:21:09.870 --> 00:21:16.120 + asked the WL roots developers on their IRC + +00:21:16.120 --> 00:21:19.450 + channel and they told me, yes, we wanted to have this. We + +00:21:19.450 --> 00:21:21.400 + have an issue open, but it's not + +00:21:21.400 --> 00:21:24.870 + implemented and you have to do it yourself. And yes, + +00:21:24.870 --> 00:21:27.320 + whoever wants us has to do it himself. And + +00:21:27.320 --> 00:21:32.180 + that's a lot of work in C. Okay. I'll jump in quickly at + +00:21:32.180 --> 00:21:33.800 + one thing. Yeah. I think we were about + +00:21:33.800 --> 00:21:36.040 + like two minutes break, sorry, two minutes away from our + +00:21:36.040 --> 00:21:38.840 + lunch break. At which point I think the + +00:21:38.840 --> 00:21:42.160 + stream will be moving on or will be stopped, but this BQB + +00:21:42.160 --> 00:21:44.600 + room will be open. So yeah, Michael and + +00:21:44.600 --> 00:21:47.250 + anyone else who is participating in the Q&A, you're more + +00:21:47.250 --> 00:21:49.160 + than welcome to stay here and continue the + +00:21:49.160 --> 00:21:55.160 + question and answer. Okay. Thank you for this announcement. + +00:21:55.160 --> 00:21:59.960 + Yeah. I would like to keep answering + +00:21:59.960 --> 00:22:05.570 + questions and maybe yeah, until there's no more interest or + +00:22:05.570 --> 00:22:08.200 + I am hungry too, but I don't need a + +00:22:08.200 --> 00:22:12.600 + lunch as I already. Yep. Okay. Sounds great. Yep. So yeah, + +00:22:12.600 --> 00:22:14.840 + the stream will probably be cut off in + +00:22:14.840 --> 00:22:17.940 + about a minute or so, but yeah, this room will be open and + +00:22:17.940 --> 00:22:20.040 + you and others will be able to stay here + +00:22:20.040 --> 00:22:25.160 + and keep asking and answering questions. Okay. Thanks. + +00:22:25.160 --> 00:22:29.720 + Thank you. Then let's go on to the next + +00:22:29.720 --> 00:22:48.790 + question. I just scrolled. I forgot my place. Okay. Could + +00:22:48.790 --> 00:22:51.000 + you use some of the packages with + +00:22:51.000 --> 00:22:54.920 + other Wayland compositors? Probably not all of it's way KDE + +00:22:54.920 --> 00:22:57.160 +, Rivergnome. Yes, you can. And thank + +00:22:57.160 --> 00:23:01.680 + you for this idea because I already, I didn't think of this + +00:23:01.680 --> 00:23:04.440 + before. You can use it because you + +00:23:04.440 --> 00:23:07.620 + can talk to them. Like you can talk to Wayland protocols. + +00:23:07.620 --> 00:23:09.560 + You can have a look at them. There's + +00:23:09.560 --> 00:23:14.830 + like the core protocol of Wayland is in the core repository + +00:23:14.830 --> 00:23:18.120 + of the Wayland project. And there's a + +00:23:18.120 --> 00:23:21.680 + Wayland protocols repository. They have like three tier + +00:23:21.680 --> 00:23:23.720 + staging, experimental and stable, + +00:23:23.720 --> 00:23:26.900 + almost nothing in Wayland is stable. So be prepared for + +00:23:26.900 --> 00:23:28.920 + some changes in the future, I think. + +00:23:28.920 --> 00:23:35.700 + And you can talk to these protocols. They are not that + +00:23:35.700 --> 00:23:39.800 + difficult, but some things are already a bit + +00:23:39.800 --> 00:23:43.370 + too complicated. Like you have to take output and then to + +00:23:43.370 --> 00:23:45.640 + get the actual width or something like + +00:23:45.640 --> 00:23:49.630 + this, you have to request another output. And this one + +00:23:49.630 --> 00:23:52.600 + talks to you and the other output says, okay, + +00:23:52.600 --> 00:23:55.050 + I'm done or something like this. Some things are a little + +00:23:55.050 --> 00:23:58.680 + bit difficult, but it's quite readable + +00:23:58.680 --> 00:24:03.520 + and understandable and you can do scripting Sway, but I don + +00:24:03.520 --> 00:24:06.120 +'t have a lot of experience there because + +00:24:06.120 --> 00:24:11.930 + like I'm an XWM user. I do it in Emacs. I'm staying on X. I + +00:24:11.930 --> 00:24:14.520 + had Sway several years ago, + +00:24:14.520 --> 00:24:18.110 + but only a short time. So I'm not that knowledgeable. The + +00:24:18.110 --> 00:24:20.040 + next question is, + +00:24:20.760 --> 00:24:26.170 + will Wayland support reach feature parity with XWM in the + +00:24:26.170 --> 00:24:29.560 + future? Will there be other trade-offs? + +00:24:29.560 --> 00:24:35.830 + No, it won't. Okay. But don't think, it's not something + +00:24:35.830 --> 00:24:38.760 + usable because I don't think all the + +00:24:38.760 --> 00:24:45.530 + features in the EXWM is needed. I want to work spaces as I + +00:24:45.530 --> 00:24:49.320 + said in the talk, because yeah, + +00:24:49.320 --> 00:24:53.460 + Emacs does work spaces and I won't do this, but I will do + +00:24:53.460 --> 00:24:58.200 + everything. Like what's my plan with + +00:24:58.200 --> 00:25:01.690 + this thing? It's like the two use cases I already alluded + +00:25:01.690 --> 00:25:06.280 + to in the video. The first is you have a + +00:25:06.280 --> 00:25:11.030 + Wayland surface and you show it inside an Emacs buffer or + +00:25:11.030 --> 00:25:13.160 + an Emacs window. So you have a kind of + +00:25:13.160 --> 00:25:22.510 + Wayland buffer, I'm calling it. That's the thing EXWM does. + +00:25:22.510 --> 00:25:26.600 + And I think, yeah, it should reach + +00:25:26.600 --> 00:25:30.710 + feature parity with it. It also has output management and + +00:25:30.710 --> 00:25:32.600 + like the input handling, + +00:25:32.600 --> 00:25:37.700 + there's like the simulation keys and I don't know what else + +00:25:37.700 --> 00:25:41.080 +, but actually I don't have a solution + +00:25:41.080 --> 00:25:46.060 + yet for the input handling. It's a thing I haven't looked + +00:25:46.060 --> 00:25:49.480 + that much into. Will there be other + +00:25:49.480 --> 00:25:53.660 + trade-offs? Yeah, most certainly there are always trade- + +00:25:53.660 --> 00:25:56.200 +offs, but I can't tell you which. + +00:25:56.200 --> 00:26:00.920 + So the next question is, what is the biggest difference + +00:26:00.920 --> 00:26:01.880 + between X, + +00:26:01.880 --> 00:26:07.000 + Org and Wayland that you have found? Okay, what's the + +00:26:07.000 --> 00:26:10.360 + biggest difference? + +00:26:10.360 --> 00:26:18.970 + Don't know actually, don't know. First of all, I'm not that + +00:26:18.970 --> 00:26:23.320 + knowledgeable in X, Org. I used it, + +00:26:23.320 --> 00:26:28.150 + but I have no more programs in X Window Manager. I haven't + +00:26:28.150 --> 00:26:30.520 + looked a lot into it, except + +00:26:31.400 --> 00:26:37.380 + WEM, I looked into the code, into Elisp code and how it + +00:26:37.380 --> 00:26:39.880 + does the communication and + +00:26:39.880 --> 00:26:46.750 + took inspiration of course. Yeah, big difference is you don + +00:26:46.750 --> 00:26:50.120 +'t have one monolithic server. Like you + +00:26:50.120 --> 00:26:54.390 + have one X, Org server and in Wayland you have lots of + +00:26:54.390 --> 00:26:57.800 + servers like GNOME has one, KDE has one, + +00:26:58.760 --> 00:27:02.510 + then WL roots is another approach, Swae has an + +00:27:02.510 --> 00:27:05.480 + implementation in WL roots and so on. + +00:27:05.480 --> 00:27:10.350 + So now it's the last question I find in my path is, did you + +00:27:10.350 --> 00:27:13.880 + know EAF? Yes, I know. Of course, + +00:27:13.880 --> 00:27:17.000 + like I think we have a talk. We have a talk. We had talks + +00:27:17.000 --> 00:27:21.400 + and I never used it. I'm sorry. + +00:27:22.440 --> 00:27:29.400 + Maybe it's interesting. It's Python. I don't do a lot of + +00:27:29.400 --> 00:27:31.640 + Python and + +00:27:31.640 --> 00:27:37.220 + similar use case. It's like, I think it's embedded X + +00:27:37.220 --> 00:27:40.200 + widgets. Please correct me if I'm wrong. + +00:27:40.200 --> 00:27:47.450 + Yeah, that's all I can say to this topic. But I think like + +00:27:47.450 --> 00:27:49.800 + any application framework, + +00:27:49.800 --> 00:27:53.920 + you can want to do an Emacs or stuff like that will mesh + +00:27:53.920 --> 00:27:57.240 + really good with Emacs compositor that + +00:27:57.240 --> 00:28:02.650 + is integrated or like almost integrated in Emacs because + +00:28:02.650 --> 00:28:05.640 + now you can use this to do your application + +00:28:05.640 --> 00:28:10.070 + framework and paint the windows in Emacs. And I think maybe + +00:28:10.070 --> 00:28:12.440 + we can come back to the reparenting + +00:28:12.440 --> 00:28:18.450 + X thing, which I don't really understand. So I don't know + +00:28:18.450 --> 00:28:21.560 + exactly how X does the X widgets, like + +00:28:21.560 --> 00:28:28.190 + no idea. But I think we can do something similar with Way + +00:28:28.190 --> 00:28:31.960 +land. Like we can just embed the little + +00:28:31.960 --> 00:28:36.710 + Wayland surfaces in an Emacs buffer. And that's a thing I + +00:28:36.710 --> 00:28:40.440 + wanted to get a discussion started. + +00:28:40.440 --> 00:28:45.950 + Someone, yeah, maybe someone has an idea. Maybe someone is + +00:28:45.950 --> 00:28:49.000 + already deep down in Emacs internals + +00:28:49.000 --> 00:28:54.620 + and knows how these displays stuff works like image display + +00:28:54.620 --> 00:28:57.880 +, X widget display, and so on. + +00:28:57.880 --> 00:29:03.290 + And maybe this person or someone else has an idea how we + +00:29:03.290 --> 00:29:05.640 + could do the Wayland surfaces. + +00:29:05.640 --> 00:29:09.280 + Right now it's just Emacs receives a request for new + +00:29:09.280 --> 00:29:13.160 + surface. Okay. You open a new program. + +00:29:13.160 --> 00:29:16.430 + The program says to the Wayland server, "Hey, I'm here. I + +00:29:16.430 --> 00:29:19.480 + want to have surface." Wayland server + +00:29:19.480 --> 00:29:24.750 + gives it the surface and says to Emacs, "Hey, here's a new + +00:29:24.750 --> 00:29:27.880 + surface. You can lay it out." And + +00:29:27.880 --> 00:29:31.080 + Emacs then can lay it out or not, however it likes. + +00:29:31.080 --> 00:29:33.480 + Normally the default path I choose is + +00:29:33.480 --> 00:29:38.490 + Emacs bundles, the surface with a buffer. And if the buffer + +00:29:38.490 --> 00:29:40.600 + is shown, it shows the surface. + +00:29:40.600 --> 00:29:43.690 + And otherwise it's just hidden. But you can do whatever you + +00:29:43.690 --> 00:29:45.800 + want with the surface. You just + +00:29:45.800 --> 00:29:49.050 + have to say, please put it at this coordinate and this + +00:29:49.050 --> 00:29:52.280 + width and this height. So you can put it in + +00:29:52.280 --> 00:29:54.980 + a buffer and you can scroll it in a buffer. But this + +00:29:54.980 --> 00:29:57.560 + integration, how to put something in a buffer + +00:29:57.560 --> 00:30:00.060 + and scroll it there. I don't know how to do it. And I don't + +00:30:00.060 --> 00:30:02.920 + know how to do it. It should be like + +00:30:02.920 --> 00:30:06.070 + a good solution. I don't know how to do it. Maybe someone + +00:30:06.070 --> 00:30:10.040 + of you has an idea. I'm finished with the + +00:30:10.040 --> 00:30:17.190 + questions of the path. I haven't had a look in IRC because + +00:30:17.190 --> 00:30:20.600 + yes, I was busy talking. + +00:30:20.600 --> 00:30:27.910 + I can either like browse through the IRC if you want, or + +00:30:27.910 --> 00:30:31.480 + maybe someone wants to say something or + +00:30:31.480 --> 00:30:36.410 + have a look. Ah, thank you. I already answered the IRC + +00:30:36.410 --> 00:30:39.880 + questions. So yes, I'm finished. + +00:30:39.880 --> 00:30:47.720 + I still see some people in the room. Yeah. Maybe someone, + +00:30:47.720 --> 00:30:49.880 + if you have an idea or wants to use it. + +00:30:49.880 --> 00:30:58.330 + I don't know how fast I will have it in a usable state. It + +00:30:58.330 --> 00:30:58.840 +'s like, + +00:31:01.080 --> 00:31:05.200 + at first I just wanted to do this presentation and show to + +00:31:05.200 --> 00:31:09.400 + you the possibility. I already read + +00:31:09.400 --> 00:31:13.400 + in the internet some places like Emacs, Devel, Mailindus + +00:31:13.400 --> 00:31:16.120 + that was one time and other places that + +00:31:16.120 --> 00:31:20.080 + other people's had the same, other person had the same + +00:31:20.080 --> 00:31:25.800 + ideas. But I was thinking just to lay out + +00:31:25.800 --> 00:31:29.740 + the general idea to you. And then I thought, okay, do an + +00:31:29.740 --> 00:31:32.200 + experiment, show if it works. And the + +00:31:32.200 --> 00:31:35.870 + experiments spun a little bit. It worked. And so I got + +00:31:35.870 --> 00:31:40.520 + further and now I have an almost usable thing, + +00:31:40.520 --> 00:31:46.990 + but I already spent like a month with it. So we'll take + +00:31:46.990 --> 00:31:49.640 + some more time to finish. + +00:31:52.840 --> 00:31:59.040 + Yeah. Thanks that you think, Gary, that you think it's, you + +00:31:59.040 --> 00:32:03.800 + are happy to test it. Thank you. + +00:32:03.800 --> 00:32:08.870 + I would like to have it like a little bit more flexible + +00:32:08.870 --> 00:32:11.240 + than the X solutions, because + +00:32:11.240 --> 00:32:16.880 + as I told you can have it nested, like you have a normal Em + +00:32:16.880 --> 00:32:20.760 +acs and you can just do the embedding + +00:32:20.760 --> 00:32:24.710 + and the embedded surfaces. And so in a normal Emacs and you + +00:32:24.710 --> 00:32:27.400 + don't have to give Emacs the whole + +00:32:27.400 --> 00:32:35.080 + desktop. So you don't have to do XWM. You can just have a + +00:32:35.080 --> 00:32:39.080 + normal Emacs window and have all the goodies + +00:32:39.080 --> 00:32:45.770 + and features there. Okay. Again, the code will be available + +00:32:45.770 --> 00:32:49.080 + on my site. I can post you the link, + +00:32:49.080 --> 00:32:54.330 + but there's nothing there yet. Oh, wait a few days. I was + +00:32:54.330 --> 00:32:57.480 + thinking of doing it this weekend, + +00:32:57.480 --> 00:33:03.190 + but it's EmacsConf and I want to listen to your ideas and + +00:33:03.190 --> 00:33:06.360 + participate and don't do coding instead. + +00:33:06.360 --> 00:33:15.080 + This is the link. I could put it on another code forge, but + +00:33:15.080 --> 00:33:18.120 + I want to do something + +00:33:19.880 --> 00:33:19.880 + + +00:33:19.880 --> 00:33:26.340 + myself instead. I have a landing page. If I put it in my + +00:33:26.340 --> 00:33:29.320 + browser, it's just, + +00:33:29.320 --> 00:33:35.840 + yeah, no connection possible. It's not configured. It's + +00:33:35.840 --> 00:33:39.080 + just bought, wait a few days. + +00:33:42.120 --> 00:33:46.520 + Okay. Short question for the room. Does anyone know someone + +00:33:46.520 --> 00:33:48.280 + else working on stuff like this? + +00:33:48.280 --> 00:34:05.250 + Because if, please let them know so we can team up and don + +00:34:05.250 --> 00:34:06.840 +'t do it twice. + +00:34:11.800 --> 00:34:14.440 + I had a lot of fun with the Emacs part of the code. I like + +00:34:14.440 --> 00:34:17.640 + coding in Elisp in general, + +00:34:17.640 --> 00:34:22.480 + but it's not that much fun to work on the C side. It's + +00:34:22.480 --> 00:34:26.520 + complex and prone to break. + +00:34:26.520 --> 00:34:32.360 + So don't mind collaborating. + +00:34:41.560 --> 00:34:45.960 + Why the sad face? + +00:34:45.960 --> 00:34:56.920 + Yes, I know the lack of active development. + +00:35:02.920 --> 00:35:09.400 + Okay. Because yeah, so no problem. You can't know anyone or + +00:35:09.400 --> 00:35:10.120 + a lot of, + +00:35:10.120 --> 00:35:15.280 + like, it's a good thing. So I got to start it and I wanted + +00:35:15.280 --> 00:35:16.200 + to start, + +00:35:16.200 --> 00:35:24.260 + you know, people quitting the XW. I don't have problems yet + +00:35:24.260 --> 00:35:26.120 +. It's not that I started + +00:35:26.120 --> 00:35:28.720 + implementing this because I thought, ah, it's not working + +00:35:28.720 --> 00:35:30.840 + anymore. I need something new. It's like, + +00:35:30.840 --> 00:35:37.680 + it's works fine. I just did it because I thought, well, why + +00:35:37.680 --> 00:35:39.720 + not do something new? And because it + +00:35:39.720 --> 00:35:45.180 + opens new possibilities, which weren't there before, or at + +00:35:45.180 --> 00:35:47.320 + least I didn't know of them. + +00:35:47.320 --> 00:35:58.920 + Okay. How could I put this? Okay. If it's ready for no, as + +00:35:58.920 --> 00:36:00.440 + I will promote it. If it's + +00:36:00.440 --> 00:36:06.030 + ready for normal usement, like you can just install it and + +00:36:06.030 --> 00:36:09.480 + use it for an everyday driver + +00:36:09.480 --> 00:36:12.150 + and have you do it. You would X session file and can just + +00:36:12.150 --> 00:36:14.840 + start it up. It won't be an X session + +00:36:14.840 --> 00:36:18.660 + file because that's X and that's a thing of the past and, + +00:36:18.660 --> 00:36:20.200 + but something similar. + +00:36:20.200 --> 00:36:26.320 + I could imagine posting, like, I don't know, he makes lists + +00:36:26.320 --> 00:36:28.280 +, Reddit, something like this, but + +00:36:29.160 --> 00:36:33.240 + until then, like the code I will release now, it's just + +00:36:33.240 --> 00:36:34.200 + experimental and + +00:36:34.200 --> 00:36:41.710 + it's for the people who want to get involved and, or want + +00:36:41.710 --> 00:36:43.320 + to do their own thing with it, + +00:36:43.320 --> 00:36:48.130 + use the client to automate sway or so for them. It's really + +00:36:48.130 --> 00:36:49.640 + interesting. + +00:36:50.200 --> 00:36:50.200 + + +00:36:50.200 --> 00:37:00.200 + [inaudible] + +00:37:00.200 --> 00:37:02.760 + Yes, I know. Like you, + +00:37:02.760 --> 00:42:20.290 + okay, this sway.el, I have to look at it, but I don't think + +00:42:20.290 --> 00:37:15.000 + now is a good idea. + +00:37:17.160 --> 00:37:21.680 + Maybe something useful there. Thank you, PlasmaStrike and G + +00:37:21.680 --> 00:37:22.520 +argiola. + +00:37:22.520 --> 00:37:28.450 + Yes, people are moving and Valent is the future. That's the + +00:37:28.450 --> 00:37:30.680 + point I wanted to say. Like, I think + +00:37:30.680 --> 00:37:36.840 + you can stay on X, like in the future, but it's not gonna + +00:37:36.840 --> 00:37:38.760 + get that much development and + +00:37:38.760 --> 00:37:42.520 + sooner or later, like there will be new features and you + +00:37:42.520 --> 00:37:44.200 + won't have it in the old one and stuff + +00:37:44.200 --> 00:37:48.690 + like that. And for Emacs to be viable as a window manager + +00:37:48.690 --> 00:37:51.560 + in this whole computing environment, or as + +00:37:51.560 --> 00:37:56.810 + I said, a Lispy Linux desktop, I think it needs to have + +00:37:56.810 --> 00:37:59.000 + this Valent capability and + +00:37:59.000 --> 00:38:08.680 + that's the way for it to get it. + +00:38:09.960 --> 00:38:09.960 + + +00:38:09.960 --> 00:38:21.960 + [inaudible] + +00:38:21.960 --> 00:38:28.510 + I'm just reading the IRC log and someone wrote, I was + +00:38:28.510 --> 00:38:32.600 + amazed to see the video inside Emacs. + +00:38:32.600 --> 00:38:44.280 + Thank you. That was meant to be amazing. Yeah, thank you. + +00:38:45.560 --> 00:38:45.560 + + +00:38:45.560 --> 00:38:45.640 + [inaudible] + +00:38:46.920 --> 00:38:46.920 + + +00:38:46.920 --> 00:38:47.000 + [inaudible] + +00:38:48.280 --> 00:38:48.280 + + +00:38:48.280 --> 00:38:48.360 + [inaudible] + +00:38:49.640 --> 00:38:49.640 + + +00:38:49.640 --> 00:38:49.720 + [inaudible] + +00:38:51.000 --> 00:38:51.000 + + +00:38:51.000 --> 00:38:51.080 + [inaudible] + +00:38:52.080 --> 00:38:52.240 + [inaudible] + +00:38:52.240 --> 00:38:52.400 + [inaudible] + +00:38:52.400 --> 00:38:52.480 + [inaudible] + +00:38:52.480 --> 00:38:52.640 + [inaudible] + +00:38:52.640 --> 00:38:52.720 + [inaudible] + +00:38:52.720 --> 00:38:52.800 + [inaudible] + +00:38:52.800 --> 00:38:52.880 + [inaudible] + +00:38:52.880 --> 00:38:52.960 + [inaudible] + +00:38:52.960 --> 00:38:53.040 + [inaudible] + +00:38:53.040 --> 00:38:53.120 + [inaudible] + +00:38:53.120 --> 00:38:53.200 + [inaudible] + +00:38:53.200 --> 00:38:53.200 + [inaudible] + +00:38:53.200 --> 00:38:53.280 + [inaudible] + +00:38:53.280 --> 00:38:53.360 + [inaudible] + +00:38:53.360 --> 00:38:53.440 + [inaudible] + +00:38:53.440 --> 00:38:53.520 + [inaudible] + +00:38:53.520 --> 00:38:53.600 + [inaudible] + +00:38:53.600 --> 00:38:53.680 + [inaudible] + +00:38:53.680 --> 00:38:53.760 + [inaudible] + +00:38:53.760 --> 00:38:53.840 + [inaudible] + +00:38:53.840 --> 00:38:53.920 + [inaudible] + +00:38:53.920 --> 00:38:54.000 + [inaudible] + +00:38:54.000 --> 00:38:54.080 + [inaudible] + +00:38:54.080 --> 00:38:54.160 + [inaudible] + +00:38:54.160 --> 00:38:54.160 + [inaudible] + +00:38:54.160 --> 00:38:54.240 + [inaudible] + +00:38:54.240 --> 00:38:54.240 + [inaudible] + +00:38:54.240 --> 00:38:54.320 + [inaudible] + +00:38:54.320 --> 00:38:54.400 + [inaudible] + +00:38:54.400 --> 00:38:54.480 + [inaudible] + +00:38:54.480 --> 00:38:54.560 + [inaudible] + +00:38:54.560 --> 00:38:54.640 + [inaudible] + +00:38:54.640 --> 00:38:54.640 + [inaudible] + +00:38:54.640 --> 00:38:54.720 + [inaudible] + +00:38:54.720 --> 00:38:54.720 + [inaudible] + +00:38:54.720 --> 00:38:54.800 + [inaudible] + +00:38:54.800 --> 00:38:54.880 + [inaudible] + +00:38:54.880 --> 00:38:54.960 + [inaudible] + +00:38:54.960 --> 00:38:55.040 + [inaudible] + +00:38:55.040 --> 00:38:55.120 + [inaudible] + +00:38:55.120 --> 00:39:20.000 + [inaudible] + +00:39:20.000 --> 00:39:20.080 + [inaudible] + +00:39:20.080 --> 00:39:20.160 + [inaudible] + +00:39:20.160 --> 00:39:20.240 + [inaudible] + +00:39:20.800 --> 00:39:20.800 + + +00:39:20.800 --> 00:39:25.920 + Okay, Emax could already do. I'm just reading the IRC + +00:39:25.920 --> 00:39:46.400 + because I don't know what else to say right now. + +00:39:46.400 --> 00:39:57.040 + [inaudible] + +00:39:57.040 --> 00:40:00.880 + Yeah, it's nice to see so many people saying thank you and + +00:40:00.880 --> 00:40:07.600 + at least I read it like two times now. So yeah, I'm pleased + +00:40:07.600 --> 00:40:10.160 + to see this and the interest in + +00:40:10.160 --> 00:40:16.400 + gender. + +00:40:16.400 --> 00:40:26.640 + [inaudible] + +00:40:26.640 --> 00:40:38.640 + [inaudible] + +00:40:38.640 --> 00:40:49.370 + Okay, I see there's still some people typing and it's a lot + +00:40:49.370 --> 00:40:52.240 + of more thank yous and yeah, + +00:40:52.240 --> 00:41:00.980 + thank you. I'm pleased and I will publish stuff like if it + +00:41:00.980 --> 00:41:06.320 +'s usable. I want to use it myself, + +00:41:06.320 --> 00:41:13.410 + so if you're in luck, you can use it too. And let's see, I + +00:41:13.410 --> 00:41:18.160 + think I wrap up this Q&A here and + +00:41:18.160 --> 00:41:22.780 + yeah, thank you for the discussion, for your questions and + +00:41:22.780 --> 00:41:27.280 + your interest and have a nice rest + +00:41:27.280 --> 00:41:48.950 + of EmaxConf. Yeah, bye. I'm just going to leave the room or + +00:41:48.950 --> 00:41:51.760 + microphone or go back to EmaxConf. + +00:41:55.360 --> 00:41:56.480 + Sounds good. Thanks again. + +00:41:56.480 --> 00:42:00.320 + Ah, you're still there. + +00:42:00.320 --> 00:42:03.760 + Hey, yeah, I just got back for a second. + +00:42:03.760 --> 00:42:05.380 + Okay. + +00:42:05.380 --> 00:42:08.960 + Yeah, just wanted to say thanks for the great talk and I'll + +00:42:08.960 --> 00:42:10.720 + definitely be watching it and the Q&A. + +00:42:10.720 --> 00:42:13.280 + And yeah, it's very exciting stuff. + +00:42:13.280 --> 00:42:17.350 + Yeah, thank you. I got the feedback now. It's exciting. I + +00:42:17.350 --> 00:42:20.400 + think so too. So yeah, + +00:42:20.400 --> 00:42:24.160 + have a nice time at EmaxConf and see you next time. Bye. + +00:42:24.160 --> 00:42:27.920 + Thank you. You as well. See you around. Bye. + +00:42:27.920 --> 00:42:28.420 + Bye. + +00:42:30.420 --> 00:42:30.420 + + +00:42:30.420 --> 00:42:30.920 + Bye. + +00:42:32.920 --> 00:42:32.920 + + +00:42:32.920 --> 00:42:33.420 + Bye. + +00:42:35.420 --> 00:42:35.420 + + +00:42:35.420 --> 00:42:35.920 + Bye. + +00:42:37.920 --> 00:42:37.920 + + +00:42:37.920 --> 00:42:38.420 + Bye. + +00:42:38.420 --> 00:42:46.420 + Bye. + diff --git a/2022/captions/emacsconf-2022-workflows--org-workflows-for-developers--george-mauer--answers.vtt b/2022/captions/emacsconf-2022-workflows--org-workflows-for-developers--george-mauer--answers.vtt new file mode 100644 index 00000000..407cc711 --- /dev/null +++ b/2022/captions/emacsconf-2022-workflows--org-workflows-for-developers--george-mauer--answers.vtt @@ -0,0 +1,893 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.760 + Okay, hi everyone. Yeah, sorry George, I'm just going to + +00:00:03.760 --> 00:00:06.520 + introduce you a little bit. + +00:00:06.520 --> 00:00:10.500 + For context, generally when I arrive on a BBB room, I have + +00:00:10.500 --> 00:00:11.880 + a little bit of time to chat + +00:00:11.880 --> 00:00:14.810 + with the speaker, but right now I made it right on time and + +00:00:14.810 --> 00:00:16.040 + I barely had time to say + +00:00:16.040 --> 00:00:19.190 + hi to George, but I will do it live. Hi George, how are you + +00:00:19.190 --> 00:00:19.720 + doing? + +00:00:19.720 --> 00:00:26.330 + Hello! No, doing well. I do think some of the content in + +00:00:26.330 --> 00:00:28.520 + the etherpad got overridden. + +00:00:28.520 --> 00:00:33.520 + Like I was typing out a whole bunch of different stuff with + +00:00:33.520 --> 00:00:36.320 + other workflows to develop, but + +00:00:36.320 --> 00:00:40.330 + I will try to find where that went. Yeah, so George, + +00:00:40.330 --> 00:00:41.640 + nothing is lost. Don't worry + +00:00:41.640 --> 00:00:47.260 + about this, we will get it back to you. I believe it's my + +00:00:47.260 --> 00:00:49.760 + fault. I looked at the pad + +00:00:49.760 --> 00:00:51.920 + and I said, "Oh, this is not a question, this is a pad." + +00:00:51.920 --> 00:00:53.800 + And I think one of my Helvan + +00:00:53.800 --> 00:00:56.060 + helps in the background said, "Oh yeah, I'm just going to + +00:00:56.060 --> 00:00:57.400 + wipe this all out." But don't + +00:00:57.400 --> 00:01:00.360 + worry, it's still in the history and we'll be able to find + +00:01:00.360 --> 00:01:01.600 + all the code you had. + +00:01:01.600 --> 00:01:07.310 + Cool, we'll find it. Yeah, so... So George, I'm just going + +00:01:07.310 --> 00:01:08.240 + to... Sorry, this + +00:01:08.240 --> 00:01:11.940 + is my task, to give you some context otherwise. Do you have + +00:01:11.940 --> 00:01:13.840 + the pad open in front of you? + +00:01:13.840 --> 00:01:18.030 + I do, yeah. I have the pad open. Would you be able to take + +00:01:18.030 --> 00:01:19.000 + questions from there? + +00:01:19.000 --> 00:01:23.630 + Yeah, so we can take questions from here. I think we've + +00:01:23.630 --> 00:01:26.240 + already answered a bunch. So + +00:01:26.240 --> 00:01:30.060 + one of the ones that's in there right now is, "Does it + +00:01:30.060 --> 00:01:32.720 + become unwieldy due to the indirection + +00:01:32.720 --> 00:01:36.000 + of the edit org source to use org mode and the virtual + +00:01:36.000 --> 00:01:37.880 + linear programming as the project + +00:01:37.880 --> 00:01:44.250 + becomes larger?" It can. So I generally use it for... I + +00:01:44.250 --> 00:01:47.160 + find parts of the project that + +00:01:47.160 --> 00:01:53.390 + are more useful for it and to be dropping in. So like on a + +00:01:53.390 --> 00:01:56.400 + large project, when I'm working + +00:01:56.400 --> 00:02:01.200 + with other people, I do not use it as much because you need + +00:02:01.200 --> 00:02:03.680 + to actually be able to modify + +00:02:03.680 --> 00:02:08.480 + the code. However, I just recently found out about a + +00:02:08.480 --> 00:02:11.160 + feature called detangle, which is + +00:02:11.160 --> 00:02:15.060 + the inverse of the tangle where as long as there's certain + +00:02:15.060 --> 00:02:17.120 + tokens emitted into your file, + +00:02:17.120 --> 00:02:20.110 + you'll be able to take the file and re-update back into the + +00:02:20.110 --> 00:02:21.960 + linear programming document, + +00:02:21.960 --> 00:02:24.840 + which is kind of mind-blowing as a feature. I have not had + +00:02:24.840 --> 00:02:26.280 + a chance to experiment with + +00:02:26.280 --> 00:02:34.170 + it yet though, and I think that could work really, really + +00:02:34.170 --> 00:02:35.920 + well. Thanks for restoring + +00:02:35.920 --> 00:02:41.090 + the stuff I was putting in. "I want to take a look at the + +00:02:41.090 --> 00:02:42.880 + files used in your demo. Are + +00:02:42.880 --> 00:02:47.420 + they somewhere online?" So I dropped the stuff I used for + +00:02:47.420 --> 00:02:51.720 + the Arduino stuff. Now, caveat + +00:02:51.720 --> 00:02:55.220 + with that, I was figuring out the workflows as I did it. So + +00:02:55.220 --> 00:02:57.320 + there's like a readme of... + +00:02:57.320 --> 00:03:02.110 + I was both figuring out Arduino and workflows. So the + +00:03:02.110 --> 00:03:05.400 + initial readme has a bunch of projects + +00:03:05.400 --> 00:03:08.270 + as I kind of did them one by one. So the workflow becomes + +00:03:08.270 --> 00:03:10.240 + more mature the further down the list + +00:03:10.240 --> 00:03:16.080 + you are. The ones earlier on are just copy-pasting a lot. + +00:03:16.080 --> 00:03:21.600 + Do we have any other questions? This + +00:03:21.600 --> 00:03:25.590 + is not the same shirt. You noticed. Also, the room's been + +00:03:25.590 --> 00:03:27.440 + rearranged because my wife + +00:03:27.440 --> 00:03:30.640 + made me move everything. + +00:03:30.640 --> 00:03:33.350 + That's fine. Don't worry about it. It looks fine in the + +00:03:33.350 --> 00:03:35.000 + background. I was implying that + +00:03:35.000 --> 00:03:37.290 + you know the seven mistake game, trying to see what changed + +00:03:37.290 --> 00:03:38.360 + in the background. I was + +00:03:38.360 --> 00:03:40.330 + very interested though in some of the stuff that I was + +00:03:40.330 --> 00:03:41.720 + seeing, including this dinner in + +00:03:41.720 --> 00:03:42.720 + the background. + +00:03:42.720 --> 00:03:50.080 + Yeah. Yeah, yeah. Yeah. There you go. There. It's my five- + +00:03:50.080 --> 00:03:54.560 +year-old's birthday party in + +00:03:54.560 --> 00:04:00.030 + the summer. And it's been far more useful as a video + +00:04:00.030 --> 00:04:03.680 + background than a bunch of five-year-olds + +00:04:03.680 --> 00:04:04.680 + were impressed with it. + +00:04:04.680 --> 00:04:08.350 + Yeah. Sorry. I do have to... It begs a question though, + +00:04:08.350 --> 00:04:10.760 + which is it's a fairly large structure + +00:04:10.760 --> 00:04:14.080 + to be made by a five-year-old. Like it is several five- + +00:04:14.080 --> 00:04:15.240 +years-old tall. + +00:04:15.240 --> 00:04:19.950 + Yeah. Well, the idea was I wanted them to be able to fit + +00:04:19.950 --> 00:04:23.160 + them. But it didn't quite work. + +00:04:23.160 --> 00:04:25.370 + Yeah. It definitely feels like the mouth would be able to + +00:04:25.370 --> 00:04:26.680 + fit a five-year-old. Yeah. So I + +00:04:26.680 --> 00:04:28.730 + think we're good. We might want to get back on track. Sorry + +00:04:28.730 --> 00:04:29.400 + for getting distracted by + +00:04:29.400 --> 00:04:32.680 + this menacing presence in the background. + +00:04:32.680 --> 00:04:36.090 + I had not heard of org-transclusion. I should look into + +00:04:36.090 --> 00:04:41.400 + this. I'm waiting for the next one + +00:04:41.400 --> 00:04:47.800 + to get typed up. I'll post a couple more things that... + +00:04:47.800 --> 00:04:54.960 + Here. Into the chat. So a couple... + +00:04:54.960 --> 00:05:00.430 + I mentioned in the chat that first of all, that org-entry- + +00:05:00.430 --> 00:05:03.480 +get thing to be able to... + +00:05:03.480 --> 00:05:07.660 + So you could put properties into... You could put variables + +00:05:07.660 --> 00:05:09.480 + into properties on your org + +00:05:09.480 --> 00:05:13.200 + outline and then have them be referenced is really, really, + +00:05:13.200 --> 00:05:15.600 + really powerful. Because especially + +00:05:15.600 --> 00:05:19.470 + because you can call into blocks from other parts of the + +00:05:19.470 --> 00:05:22.400 + outline. You can basically... + +00:05:22.400 --> 00:05:25.050 + You know how... I don't know if anyone here does React. But + +00:05:25.050 --> 00:05:26.360 + there's something that's very + +00:05:26.360 --> 00:05:29.640 + powerful that happens because you could do... You kind of + +00:05:29.640 --> 00:05:31.240 + have dynamic scoping over the + +00:05:31.240 --> 00:05:35.940 + DOM tree. And you get a similar type of power that you get + +00:05:35.940 --> 00:05:38.760 + with React contexts in org mode. + +00:05:38.760 --> 00:05:41.540 + Because you have variables that you could set depending on + +00:05:41.540 --> 00:05:42.800 + what's the closest point + +00:05:42.800 --> 00:05:48.570 + in the outline tree is. And then have defaults cascade + +00:05:48.570 --> 00:05:49.640 + upwards. + +00:05:49.640 --> 00:05:57.160 + Let's see. Are workflows as they are in your life closely + +00:05:57.160 --> 00:06:01.400 + tied to particular projects? + +00:06:01.400 --> 00:06:05.600 + Or are they general workflows? So I think there's general + +00:06:05.600 --> 00:06:09.040 + ones. Like repository source + +00:06:09.040 --> 00:06:12.820 + code analysis that I've gone to and used over and over + +00:06:12.820 --> 00:06:16.120 + again. So I mentioned down below + +00:06:16.120 --> 00:06:24.200 + Codemod and JORS. That's a pretty common trick I use to... + +00:06:24.200 --> 00:06:25.480 + Like just when I sit down with + +00:06:25.480 --> 00:06:28.770 + a project to analyze its history. Make a movie of how it + +00:06:28.770 --> 00:06:30.480 + plays out. And a lot of that is + +00:06:30.480 --> 00:06:35.820 + very... It's easiest to orchestrate in org. So here + +00:06:35.820 --> 00:06:39.640 + actually I'll drop... I'll drop one + +00:06:39.640 --> 00:06:44.560 + right at the top of the other cool workflows. Here's an + +00:06:44.560 --> 00:06:48.840 + example of something I did... I + +00:06:48.840 --> 00:06:54.080 + don't want that to... We'll figure out how to make that not + +00:06:54.080 --> 00:06:57.240 + be... There we go. + +00:06:57.240 --> 00:07:02.870 + So here's an example I did where it was like... I'll clean + +00:07:02.870 --> 00:07:05.880 + that up a little bit. But where + +00:07:05.880 --> 00:07:13.400 + you basically are using org. Within org you use Codemod. + +00:07:13.400 --> 00:07:14.320 + Here's the thing. This stuff + +00:07:14.320 --> 00:07:18.050 + is hard to do if you can't just write about it and say this + +00:07:18.050 --> 00:07:19.960 + is what I'm trying to do. + +00:07:19.960 --> 00:07:23.000 + And talk about it in prose. Because you're doing things + +00:07:23.000 --> 00:07:24.600 + like analysis and you have to + +00:07:24.600 --> 00:07:28.990 + have it all ready in front of mind. And if you don't have + +00:07:28.990 --> 00:07:31.400 + that... And if you have... + +00:07:31.400 --> 00:07:33.980 + You just have an empty document. You can type into whatever + +00:07:33.980 --> 00:07:35.560 +. You can type what you're trying + +00:07:35.560 --> 00:07:39.690 + to do. And then figure out how to do it in terms of these + +00:07:39.690 --> 00:07:40.520 + blocks. + +00:07:40.520 --> 00:07:43.970 + So for example, this is pretty generic and something I end + +00:07:43.970 --> 00:07:45.600 + up going to a lot. Where you + +00:07:45.600 --> 00:07:49.520 + use something like Codemod to basically run analysis on + +00:07:49.520 --> 00:07:52.480 + like... Well, what sort of stuff + +00:07:52.480 --> 00:07:55.590 + does... Or I guess that first one's not even Codemod. That + +00:07:55.590 --> 00:07:58.320 + first one's just Git log analysis. + +00:07:58.320 --> 00:08:02.730 + What sort of stuff has a person done? What files have they + +00:08:02.730 --> 00:08:04.200 + touched? And then like... + +00:08:04.200 --> 00:08:06.380 + Okay. I don't want to see the full list of the files. I + +00:08:06.380 --> 00:08:07.640 + just want to get an idea of what + +00:08:07.640 --> 00:08:12.750 + areas they've worked. So really take the first few director + +00:08:12.750 --> 00:08:14.640 +ies of there. And just emit that + +00:08:14.640 --> 00:08:18.770 + out to the screen. And now I can kind of go by each author + +00:08:18.770 --> 00:08:20.240 + and figure that out. And then + +00:08:20.240 --> 00:08:24.220 + the next example is me using the Codemod project to do + +00:08:24.220 --> 00:08:28.720 + something like... Well, what's... Let's + +00:08:28.720 --> 00:08:32.070 + look at coupling. So whenever one file within this project + +00:08:32.070 --> 00:08:33.200 + changes, what other files are + +00:08:33.200 --> 00:08:36.090 + likely to change? Oh, and I don't care about test files. + +00:08:36.090 --> 00:08:37.760 + And I don't care about doc files. + +00:08:37.760 --> 00:08:40.440 + And I don't care about package log or whatever. And then + +00:08:40.440 --> 00:08:42.680 + again, you get that analysis. It's + +00:08:42.680 --> 00:08:43.680 + very useful. + +00:08:43.680 --> 00:08:46.190 + - Sorry, George. Interjecting real quickly to say two + +00:08:46.190 --> 00:08:47.880 + things. First, we have opened the + +00:08:47.880 --> 00:08:51.260 + Q&A if you want to join and ask questions to George or... + +00:08:51.260 --> 00:08:52.560 + Just like I'm doing right + +00:08:52.560 --> 00:08:55.810 + now. And also, George, I am a little lost. You are the + +00:08:55.810 --> 00:08:57.880 + green collar on the bad, right? + +00:08:57.880 --> 00:09:04.240 + - I am the what? Oh, I am now the... Yes, I am the green + +00:09:04.240 --> 00:09:05.480 + collar. + +00:09:05.480 --> 00:09:07.200 + - Okay. So I've lost... + +00:09:07.200 --> 00:09:11.000 + - No, you're the green collar. I am now... Goodness. + +00:09:11.000 --> 00:09:13.770 + - Okay. Can you tell me at which time you were? Because I + +00:09:13.770 --> 00:09:15.120 + was a little lost in the bad + +00:09:15.120 --> 00:09:16.520 + on what you were commenting on right now. + +00:09:16.520 --> 00:09:19.600 + - Okay. Yeah, yeah, yeah. That was... I'm purple collar now + +00:09:19.600 --> 00:09:20.920 +. So that first block under + +00:09:20.920 --> 00:09:24.000 + other cool workflows is what I just put in there. + +00:09:24.000 --> 00:09:26.280 + - Okay. Cool. It is on screen now. + +00:09:26.280 --> 00:09:29.480 + - Yeah, yeah, yeah. And then there's a question, possibly + +00:09:29.480 --> 00:09:31.320 + weak understanding here, but why + +00:09:31.320 --> 00:09:36.930 + direct use of Tangle versus Org Babel? So take something + +00:09:36.930 --> 00:09:40.160 + like Arduino CLI. That is running + +00:09:40.160 --> 00:09:44.810 + at the file system level. Well, okay, no. Arduino CLI works + +00:09:44.810 --> 00:09:46.360 + with the file system. You're + +00:09:46.360 --> 00:09:51.010 + telling it, "Here are some files. Go do some stuff with + +00:09:51.010 --> 00:09:55.480 + those files." So in order to do + +00:09:55.480 --> 00:09:59.560 + that at the... And you have to have a specific type of file + +00:09:59.560 --> 00:10:01.640 + system. So in order to do that + +00:10:01.640 --> 00:10:05.280 + directly in Org Babel, I'd have to write an Org Babel + +00:10:05.280 --> 00:10:07.840 + extension, which are not super easy + +00:10:07.840 --> 00:10:11.450 + to write, that kind of writes files into a temp directory + +00:10:11.450 --> 00:10:13.320 + in a certain format, blah, + +00:10:13.320 --> 00:10:16.720 + blah, blah, which is hard. What's a lot easier is just tell + +00:10:16.720 --> 00:10:18.600 + Tangle to just dump the file + +00:10:18.600 --> 00:10:22.020 + and have a file watcher running. And whenever it happens, + +00:10:22.020 --> 00:10:24.120 + it just deploys to an Arduino, + +00:10:24.120 --> 00:10:33.630 + for example. Yeah, so it's basically a way of integrating + +00:10:33.630 --> 00:10:35.120 + with things that require the + +00:10:35.120 --> 00:10:36.120 + file system. + +00:10:36.120 --> 00:10:41.650 + - Sorry, George, was there a question for me? I'm not sure + +00:10:41.650 --> 00:10:43.160 + I was... + +00:10:43.160 --> 00:10:46.240 + - Oh, no, no, no, no, no. I think that was the answer to + +00:10:46.240 --> 00:10:48.120 + the question. I'm now looking + +00:10:48.120 --> 00:10:49.120 + to see if there's... + +00:10:49.120 --> 00:10:50.120 + - Okay, sorry. + +00:10:50.120 --> 00:10:51.120 + - Yeah, we have more questions. + +00:10:51.120 --> 00:10:55.050 + - Also, George, to give you a little bit of a heads up, we + +00:10:55.050 --> 00:10:57.240 + have opened the Q&A right now, + +00:10:57.240 --> 00:11:00.830 + and people should be able to join. But we only have about + +00:11:00.830 --> 00:11:02.640 + three more minutes until we + +00:11:02.640 --> 00:11:06.260 + need to go on a little bit of a break. So feel free to + +00:11:06.260 --> 00:11:08.480 + answer as many questions on the + +00:11:08.480 --> 00:11:11.500 + pad as possible. I don't see anyone in the chat, on BBB + +00:11:11.500 --> 00:11:13.240 + right now, so questions on the + +00:11:13.240 --> 00:11:14.240 + pad. + +00:11:14.240 --> 00:11:20.400 + - Yeah, so I'll just put a couple more things. I'm a big + +00:11:20.400 --> 00:11:24.720 + fan of plant QML, and I will regularly + +00:11:24.720 --> 00:11:30.750 + use plant QML to do both architecture diagrams and wire + +00:11:30.750 --> 00:11:34.800 +frames using their salt language for + +00:11:34.800 --> 00:11:37.850 + mockups. So I'll write an entire technical document being + +00:11:37.850 --> 00:11:39.160 + like, "Here's what we should + +00:11:39.160 --> 00:11:42.250 + do," and be putting stuff directly in it. People see it, + +00:11:42.250 --> 00:11:45.040 + and they're like, "Oh, mockup's + +00:11:45.040 --> 00:11:50.990 + great." Not directly about... Oh, TreeSitter integration, + +00:11:50.990 --> 00:11:53.600 + because you can now use TreeSitter. + +00:11:53.600 --> 00:11:57.110 + So you can use TreeSitter to analyze other code files. So + +00:11:57.110 --> 00:11:59.080 + for example, I recently wrote + +00:11:59.080 --> 00:12:03.210 + a little TreeSitter script that would pop open a TypeScript + +00:12:03.210 --> 00:12:05.200 + file, analyze all the exports, + +00:12:05.200 --> 00:12:08.420 + and grab everything that's exported along with its .com and + +00:12:08.420 --> 00:12:10.000 + just dump it into my document + +00:12:10.000 --> 00:12:14.780 + so I can review it and update it just by with a keystroke + +00:12:14.780 --> 00:12:18.160 + as that file evolves. And just + +00:12:18.160 --> 00:12:23.820 + an honorable mention, I would say I recently found out Org- + +00:12:23.820 --> 00:12:25.720 +Rome UI. So if you're an Org-Rome + +00:12:25.720 --> 00:12:29.050 + user, that's an awesome visualization where it starts a + +00:12:29.050 --> 00:12:30.720 + server and shows you a little + +00:12:30.720 --> 00:12:35.370 + web page with everything visualized. And just in terms of + +00:12:35.370 --> 00:12:38.720 +... It's nice and cool and useful, + +00:12:38.720 --> 00:12:42.690 + but it's also a great politics hack where you start a new + +00:12:42.690 --> 00:12:44.680 + job or a team, and then you + +00:12:44.680 --> 00:12:47.670 + spend a month, a week taking your notes. So you have 80 + +00:12:47.670 --> 00:12:49.080 + notes or something like that, + +00:12:49.080 --> 00:12:50.800 + because they're a little bit... And then at the end of the + +00:12:50.800 --> 00:12:51.760 + week, you do your one-on-one + +00:12:51.760 --> 00:12:54.560 + with your manager. You're like, "Here's the visualization + +00:12:54.560 --> 00:12:56.360 + and everything," and your jaw + +00:12:56.360 --> 00:12:57.360 + drops. Yes. + +00:12:57.360 --> 00:13:00.750 + It is. It is amazing. Org-Rome UI is amazing. I'm a little + +00:13:00.750 --> 00:13:02.480 + biased, so I won't talk too much + +00:13:02.480 --> 00:13:04.500 + about it because people in the know will know that I've + +00:13:04.500 --> 00:13:06.040 + actually helped with the development + +00:13:06.040 --> 00:13:08.700 + of Org-Rome. But yes, Org-Rome UI is so great. I also + +00:13:08.700 --> 00:13:11.000 + worked in a team where we were presenting + +00:13:11.000 --> 00:13:14.930 + Org-Rome and Org-Rome UI to people who had no idea of what + +00:13:14.930 --> 00:13:16.840 + was Emacs or Org-Mode, but + +00:13:16.840 --> 00:13:21.420 + they could see atoms and they could see them being linked. + +00:13:21.420 --> 00:13:24.160 + It was so amazing. It just works. + +00:13:24.160 --> 00:13:26.320 + It's great when things just work. + +00:13:26.320 --> 00:13:27.320 + Yeah. + +00:13:27.320 --> 00:13:31.120 + All right, George. Any last thing you'd like to say to the + +00:13:31.120 --> 00:13:32.960 + stream before we wrap up? + +00:13:32.960 --> 00:13:36.980 + Nope. Put more workflows in the document if you have any + +00:13:36.980 --> 00:13:38.320 + other ideas too. + +00:13:38.320 --> 00:13:41.440 + Cool. Amazing. We'll be on the lookout for this. So George, + +00:13:41.440 --> 00:13:42.440 + thank you so much for your + +00:13:42.440 --> 00:13:45.640 + presentation and for your questions, and we will see you + +00:13:45.640 --> 00:13:46.760 + later probably. + +00:13:46.760 --> 00:13:47.760 + Thank you. Bye-bye. + +00:13:47.760 --> 00:13:48.760 + Bye-bye. + +00:13:48.760 --> 00:13:58.820 + I'm still there. See you in a bit, folks. Oh, sorry. Sorry. + +00:13:58.820 --> 00:14:00.920 + I'm panicking. Give me + +00:14:00.920 --> 00:14:08.300 + a second. Sure. You saw me whisper right now. We will be + +00:14:08.300 --> 00:14:09.640 + going on a little bit of a break + +00:14:09.640 --> 00:14:14.960 + right now. The next talk will be due in about 10 minutes. + +00:14:14.960 --> 00:14:18.200 + So at 35 of the current hour, + +00:14:18.200 --> 00:14:21.450 + we will be reconvening on Gen for the next talk. So see you + +00:14:21.450 --> 00:14:23.560 + in a bit and enjoy the break. + +00:14:23.560 --> 00:14:29.160 + You are currently the only person in this conference. + +00:14:29.160 --> 00:14:41.310 + Give me just a second. I'll put some music for the break. + +00:14:41.310 --> 00:14:45.240 + Right now I'm doing too many + +00:14:45.240 --> 00:14:47.140 + things at the same time. So we will have to wait a little + +00:14:47.140 --> 00:14:48.280 + bit for everything to work. + +00:14:48.280 --> 00:14:50.340 + I'll put the music on first so that you have something nice + +00:14:50.340 --> 00:14:51.560 + to listen to, which is Shoshin + +00:14:51.560 --> 00:15:04.440 + Music the Lloyd. + +00:15:04.440 --> 00:15:20.440 + (Music) + +00:15:20.440 --> 00:15:40.440 + (Music) + +00:15:40.440 --> 00:16:00.440 + (Music) + +00:16:00.440 --> 00:16:20.440 + (Music) + +00:16:20.440 --> 00:16:40.440 + (Music) + +00:16:40.440 --> 00:17:00.440 + (Music) + +00:17:00.440 --> 00:17:20.440 + (Music) + +00:17:20.440 --> 00:17:40.440 + (Music) + +00:17:40.440 --> 00:17:54.440 + (Music) + diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index 58820930..ee8186f4 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -94,16 +94,19 @@ Previous priorities; | [[#ansible][ansible]] | none | *DONE S: some automation* | comprehensive, can also work against containers | | [[#intro][intro and exit]] | *DONE: slide on screen, host on Mumble* | per-talk video, recorded voiceover | Emacs thing so we can display info, countdowns, IRC | * Next comms update +SCHEDULED: <2022-12-18 Sun> :PROPERTIES: :CUSTOM_ID: update :CREATED: [022-12-11 Sun 10:0] :END: -- next step is to make chapter markers +- all the Q&A videos are available +- updated GRAIL talk, uploaded orgvm talk +- volunteers: next step is to make chapter markers, large model VTTs are now available - [2022-12-15 Thu] all Q&A videos posted, large model VTTs available - [2022-12-12 Mon] Updated grail, updated backstage view - [2022-12-11 Sun] Thank-you notes sent to all the speakers with Toobnix and YouTube URLs, BBB playback info -- [2022-12-10 Sat] small-model VTTs uploaded for easier review and chapter markers, still working on large-model transcripts + * Projects and other long-running tasks :PROPERTIES: :CUSTOM_ID: projects @@ -710,9 +713,13 @@ https://manual.audacityteam.org/man/scripting.html https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8ae66be38ea6 -*** SOMEDAY Figure out ways to make sense of IRC logs +*** STARTED Figure out ways to make sense of IRC logs :PROPERTIES: :CREATED: [2022-12-13 Tue 16:37] +:Effort: 0:30 +:END: +:LOGBOOK: +CLOCK: [2022-12-20 Tue 10:34] :END: ssh Possible: thread speaker messages? @@ -740,7 +747,7 @@ CLOSED: [2022-12-16 Fri 13:53] Least extra work if I do it after chapter markers, but I can just do them now and then update them later -#+begin_src emacs-lisp :eval no +#+begin_src emacs-lisp :eval yes (mapc (lambda (o) (let ((default-directory "~/vendor/PeerTube/")) (when (emacsconf-publish-upload-answers o 'toobnix) @@ -760,7 +767,7 @@ Least extra work if I do it after chapter markers, but I can just do them now an CLOSED: [2022-12-16 Fri 21:35] SCHEDULED: <2022-12-17 Sat> :PROPERTIES: :CREATED: [2022-12-16 Fri 08:01] -:header-args: :eval no +:header-args: :eval yes :END: :LOGBOOK: - State "WAITING" from "SOMEDAY" [2022-12-16 Fri 12:58] \\ @@ -807,6 +814,11 @@ context.add_cookies(json.loads(Path("cookies.json").read_text())) page.goto("https://studio.youtube.com/") #+end_src +#+RESULTS: +:results: +<Response url='https://studio.youtube.com/' request=<Request url='https://studio.youtube.com/' method='GET'>> +:end: + Save the cookies after it's all set up #+begin_src python :dir "/home/sacha/proj/plays" :session plays @@ -903,6 +915,17 @@ https://youtu.be/Q453L_whGEc :CREATED: [2022-12-17 Sat 14:26] :END: +*** TODO Check that webms have latest vtts +:PROPERTIES: +:CREATED: [2022-12-17 Sat 08:09] +:END: + +*** TODO Break autocaptions every 5 minutes or so, so that they can be included on the webpage +SCHEDULED: <2022-12-20 Tue> +:PROPERTIES: +:CREATED: [2022-12-15 Thu 22:05] +:END: + ** TODO Send thanks :PROPERTIES: :CUSTOM_ID: thanks @@ -2920,6 +2943,20 @@ https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-vt1.html :CREATED: [2022-12-13 Tue 16:38] :END: +** SOMEDAY Ideas for people to reach out to for talks? +*** Using emacs mail to prefilter mail +https://www.reddit.com/r/emacs/comments/zp0qn6/a_tragic_story_of_emacs_lover/j0r7i1f/ + +** SOMEDAY Check ffmpeg benchmarks and recommendations; can we speed up our encoding for last-minute submissions? +:PROPERTIES: +:CREATED: [2022-12-13 Tue 15:38] +:END: + +*** SOMEDAY https://www.reddit.com/r/AV1/comments/k7colv/encoder_tuning_part_1_tuning_libvpxvp9_be_more/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button +:PROPERTIES: +:CREATED: [2022-12-13 Tue 20:58] +:END: + * Things to figure out / decisions to make :PROPERTIES: :CUSTOM_ID: decisions diff --git a/2022/talks/asmblox.md b/2022/talks/asmblox.md index b779c622..b97f7169 100644 --- a/2022/talks/asmblox.md +++ b/2022/talks/asmblox.md @@ -72,7 +72,7 @@ The source code can be found at <https://github.com/zkry/asm-blox> regexs: <https://github.com/zkry/go-ttest.el> - Q: Are there tools to add more puzzles? - A: So the game code itself has a asm-blox-puzzles.el file which - defines each puzlze. It's pretty easy to add new puzzles but it + defines each puzzle. It's pretty easy to add new puzzles but it involves digging into the code. - QLike a binding to graphviz? (assume this is a continuation of the "what kind of tool" question) @@ -82,6 +82,11 @@ The source code can be found at <https://github.com/zkry/asm-blox> the diagon tool: <https://arthursonzogni.com/Diagon/#Math> +Other feedback from IRC: + +- Great presentation. Game actually looks quite fun +- Thanks again for your answers. Du bist das Beste + [[!inline pages="internal(2022/info/asmblox-after)" raw="yes"]] [[!inline pages="internal(2022/info/asmblox-nav)" raw="yes"]] diff --git a/2022/talks/dbus.md b/2022/talks/dbus.md index 78500f10..773b2a41 100644 --- a/2022/talks/dbus.md +++ b/2022/talks/dbus.md @@ -162,10 +162,16 @@ Emacs Operating System. interface that lets you open a URL, but nothing else. I'm not sure about other browsers, since LibreWolf is what I use. If you use d-feet to examine the session bus, you can see! -- Q: - - A: +- Q: Nice, thanks! I had been looking for a udisks tool. Is it available? + - A: Yes, https://codeberg.org/emacs-weirdware/discomfort It's alpha, but way nicer than using udisksctl. +Other discussions from IRC: +- Very interesting talk Ian! +- Pretty interesting... I am already scratching my head thinking on applications! +- Thanks, fascinating ieure, now onto refactoring everything not yet into Emacs to be managed in Emacs via d-bus... +- One usage example I've recently stumbled over is the scad-dbus package which can control the openscad gui from Emacs, move around the camera etc. +- @ieure : Thanks for the great talk, love these expositions of yours, especially of things that have gone under-appreciated - and the packaging into timeless tunes obviously! [[!inline pages="internal(2022/info/dbus-after)" raw="yes"]] diff --git a/2022/talks/eev.md b/2022/talks/eev.md index ef922e9d..c8d40a9b 100644 --- a/2022/talks/eev.md +++ b/2022/talks/eev.md @@ -49,6 +49,20 @@ notes on a language $LANGUAGE and programs written in that language. For more info see [this page](http://angg.twu.net/emacsconf2022-kla.html). +# Discussion + +- Q: Can you say why you like all your links to be elisp expressions rather than something more textual? Is it just so you can always evaluate the expressions? + - A: rswgnu5: it is quicker to create hyperlinks that don't have titles, and many years ago I had some problems when I gave titles that were not very good, and I ended up with links that didn't do what I expected, so I sort of stopped trusting links whose actions are hidden and only their titles are shown. also, I am trying to write code in which all parts are easy to understand. +- Q: I am fond of and inspired by your idea of Lisp Markup & Interfaces. Have you thought of other Lisp Markup uses than Links? How do you think of incorporating tree-sitter? If that makes sense to you or at all. + - A: can you explain your idea? I haven't had time to play with tree-sitter yet, but my holidays will start in a few weeks... I sometimes get stuck trying to understand the inner details of things whose inner details shouldn't be relevant... I had this problem with both Org and Hyperbole several times, and I guess that I will have it with tree-sitter too... + - edrx: I don't have a concrete idea. I just have been thinking of the intersection of Markup, minimalist Textinterfaces and little Languages | language oriented programming for a while. Eg Lisp is a nice List/ tree data syntax. You use it for links. Do you have other markup like uses for? And speaking of tree data, tree-sitter is a tool to incrementally & robust build a tree from a flat text buffer. + - do you know this? https://github.com/mmontone/emacs-inspector +- Bi-directional links is a good idea. +- I look forward to trying it out and seeing how it feels. It certainly looked cool! +- awesome! btw edrx i'd really enjoyed the last eev workshop, would be totally down to attend another one later too +- An interesting link type to add would be org id for org roam or denote id link types. +- I've been trying to use eev to explore parts of Emacs that I don't understand... a basic example is M-x list-packages +- Something to love about org mode, hyperbole, and eev is how they push the idea of links further [[!inline pages="internal(2022/info/eev-after)" raw="yes"]] diff --git a/2022/talks/eshell.md b/2022/talks/eshell.md index b1ffac32..011b1a31 100644 --- a/2022/talks/eshell.md +++ b/2022/talks/eshell.md @@ -134,6 +134,27 @@ Want _all_ the code? See my literate dotfiles for #emacs at <https://github.com/ command history and directory tracking? - A: I don't. If I am going to SSH somewhere, I just start vterm, and haven't thought about any interop. +- Q: Where can I find your eshell/do command? Probably you also have another bunch of interesting Eshell helpers. + - https://gitlab.com/howardabrams/hamacs/-/blob/main/ha-eshell.org?plain=1#L741-761 + +Other comments from IRC: + +- Impressive. eshell is an emacs REPL! I knew I could issue some emacs commands but not this level of interactivity. Thanks! +- The real elisp REPL is ielm, but eshell is more generally useful. +- eshell is a REPL focused on the specific niche of shell. ielm's the pure elisp repl, and it rocks. +- yes. i know ielm. just hadn't realised how powerful eshell is. +- howard-abrams : every time I've watched a talk of yours over the years, Emacs/Org-mode has absorbed one more use cases of mine, and made them be in literate form. I'm down to Emacs and a web browser, so I'm looking ahead to your talk about the Web in Emacs :) +- You can also leverage org-mode source blocks tu turn outputs into inputs to other blocks so, plenty of alternatives to pipes +- Wow! Eshell is awesome! I have just learnt more tips! Thanks howard-abrams! +- I think of Eshell as my *universal* machine REPL, i.e. not just ielm for emacs/elisp nor a shell for the machine, but *both* emacs/elisp and the OS/env.. In that way it's quite neat. +- howard-abrams: thank you, very inspiring! I've always found 'normal' command line usage somewhat cumbersome and am certanly going to look at the code +- I really like eshell but I sometimes find the aliases a bit hard to write. alias f if $* {find-file $1; for i in {cdr {flatten-tree $*}} {find-file-other-window $i}} {echo "No files"} - Should probably use Elisp instead + - I think the aliases are almost completely broken, and only seem to work in the barest of cases. + - Yes, in particular the Lisp part is broken. In combination with $* + - I agree that you should write a function for that. Because as I mentioned in my talk, aliases don't accept $* at all. + - Oh, they do. This alias works. I don't recall the reason why I wrote this as an alias. I probably just wanted to use an alias where possible. + - Huh ... that works? I need to try it out. I couldn't get that working, so that is why I wrote the function that I did. +- watching your talk now; TIL /dev/kill and /devl/clip [[!inline pages="internal(2022/info/eshell-after)" raw="yes"]] diff --git a/2022/talks/justl.md b/2022/talks/justl.md index 1f6a6875..640bc168 100644 --- a/2022/talks/justl.md +++ b/2022/talks/justl.md @@ -28,6 +28,13 @@ Bio: [https://psibi.in/about.html](https://psibi.in/about.html) - [justl.el Home page](https://github.com/psibi/justl.el) - [Just tool Home page](https://github.com/casey/just) +## Discussion + +- thanks for the great talk sibi :) +- Seems like a pretty focused and useful tool! +- will try out Just after that talk +- Great talk. I'll definitively give it a try. + [[!inline pages="internal(2022/info/justl-after)" raw="yes"]] [[!inline pages="internal(2022/info/justl-nav)" raw="yes"]] diff --git a/2022/talks/localizing.md b/2022/talks/localizing.md index f719e52b..88927f26 100644 --- a/2022/talks/localizing.md +++ b/2022/talks/localizing.md @@ -44,14 +44,13 @@ Even if it is a beginner’s patch (thoroughly reviewed by dev-experts), it show - A: - Q: So, your project is to localize all of Emacs? - A: -- Q: - - A: - Q: How deep would usefull localization go? Because at the core of emacs are Docstrings and localizing them could also imply localizing Elisp. - A: Other feedback: + - Merci Jean-Christophe ! I really enjoyed your talk (and would very much like to help localise Emacs). [[!inline pages="internal(2022/info/localizing-after)" raw="yes"]] diff --git a/2022/talks/lspbridge.md b/2022/talks/lspbridge.md index 40b444f6..a6fcfb19 100644 --- a/2022/talks/lspbridge.md +++ b/2022/talks/lspbridge.md @@ -49,6 +49,7 @@ Related design, please check <https://manateelazycat.github.io/emacs/2022/05/12/ - Q:Will this be a candidate for core Emacs? - A:Perhaps not, it uses a lot of Python and many Emacsers may not like that instead of pure elisp. + - (someone else on IRC): And as I said above, this breaks introspectivity, which is one of the main features of Emacs. - Q:If performance is the main objective, why Python and not something like, e.g. Rust? - A:Python is easy to develop in, and LSP's performance is @@ -88,7 +89,7 @@ Related design, please check <https://manateelazycat.github.io/emacs/2022/05/12/ project. - Q: does lsp-bridge work over Tramp? - A: tramp is very slow, I will planinng write new plugin to - replace tramp, then we will make lsp-bridge work on remote + replace otramp, then we will make lsp-bridge work on remote machine, and something like VSCode does, idea <https://github.com/manateelazycat/lsp-bridge/issues/357> - Q: Does acm mode work on terminal or it only works on GUI? @@ -108,6 +109,32 @@ Related design, please check <https://manateelazycat.github.io/emacs/2022/05/12/ - A: breadcrumbs is not LSP procotol, I just want we coding like hacker that live in Emacs, I don't want make Emacs like a VSCode clone. +- Q: doesn't Python have the same fundamental problem with threads? I mean GIL. + - A: NO, if you really wrote multi-thread code. +- GIL doesn't matter for handling blocking IO in multiple threads + - lounge-4227, same is true for elisp + - Most emacsers haven't experience on multi-thread, python GIL won't block this. + - But Emacs's haven't multi-thread. + - Emacs's single-thread and GC can't handle LSP in real-time. +- Q: ManateeLazyCat Do you think Emacs could be fixed in order to allow for this kind of multithreaded implementations in Elisp itself? + - A: No, there have so many elisp code running single-thread, if elisp implement multithread, Emacs will break out. +- Q: I tried lsp-bridge, and it's wonderful. What I miss most is imenu integration in lsp-mode/eglot. Is there any plan to support it ? + - A: I doesn't use imenu, I'm personal no plan to support it, but any PR are welcome. +- I don't have anything against Python, in fact I like it myself, but it seems strange that this can't be solved without requiring a second runtime + - A: It's not technology, it's about Emacs's history, if emacs include multi-thread, will break most elisp plugins. +- Q: Does the package manage the external LSP and bridge processes. + - A: Yes. + +Other feedback from IRC: + +- I can relate Java LSP and a huge repository :D +- Fast response from LSP really impressed me. +- Smooth-as-butter, that's a really apt description of it. In the past few days I have learned it for the improvement of acm-mode and I am very comfortable. I was a TabNine user, so it was exciting that acm-mode supported it out-of-box. +- I was hooked on Corfu and Cape right before I touched on acm-mode, but acm-mode turned me around in an instant. +- Yeah, I like the ideas behind lsp-bridge, and a great explanation of it. I may have to have a wrapper function to toggle corfu and whatnot whenever I start the lsp-bridge. +- Well, you just did, with this work, so there is at least one way that was done. It means that it should be a way to restrict multithreading in a way that doesn't break existing code but adds functionality for solving particular problems +- Yes, definitely not easy, but worth it. Your work proves it, so I hope it motivates people to solve the fundamental problem at some point. In the meantime, please continue the awesome work you are doing! +- Big thanks for working on this project, I think it's great that there's a solution out there for LSP performance. My setup has been struggling on some particularly large projects w/ many thousand line TS/Ruby files [[!inline pages="internal(2022/info/lspbridge-after)" raw="yes"]] diff --git a/2022/talks/rde.md b/2022/talks/rde.md index 988c51b8..1f422e2c 100644 --- a/2022/talks/rde.md +++ b/2022/talks/rde.md @@ -94,6 +94,10 @@ if you move to a new laptop/workstation. - Q: Can you mix RDE with custom emacs init file? - Yes, you can, but it will add irreproducibility to your setup. +Other discussions from IRC: + +- Easy reliable rollbacks is definitely one of the things I love about nix and guix +- Yes! It is great to know that stuff is hard to mess up. This leads to more fun experimenting. [[!inline pages="internal(2022/info/rde-after)" raw="yes"]] diff --git a/2022/talks/rms.md b/2022/talks/rms.md index e02c5fcb..a78c1d99 100644 --- a/2022/talks/rms.md +++ b/2022/talks/rms.md @@ -375,6 +375,13 @@ We played [Richard Stallman's 2014 TEDx video: "Free Sofware, Free Society"](htt on me I refer you to stallmansupport.org. <https://stallmansupport.org/> +Some comments from IRC: + +- wasamasa : I admire the commitment and integrity. I'm just taking a step back and thinking if this should be expected, or a more pragmatic but still uncompromising approach would be warranted in the bigger scheme. +- emacs has so many great features and packages just in the latest years and my feeling is that they are very much inspired/cloned/reworked from the features that came out of sublime text/atom/vs code/other current popular editor + - That's what happens when you have the freedom to shape the tool as you want. Different people like different features and sometimes (pretty often actually) it just happens that they end up implementing features they liked in other tools they used before. +- it's important to state non-goals like fullblown webbrowser, javascript etc. because they are not obvious to newcomers and would add a lot of bloat + Some comments from YouTube: - One thing I learned for sure after watching this great talk is that @@ -417,6 +424,7 @@ Reactions: - <https://news.ycombinator.com/item?id=33888981> - [Why do we hack?](http://curious.galthub.com/blog/2022-12-04/) - [RMS On What He Wants and Doesn’t Want in Emacs](https://irreal.org/blog/?p=11013) +- <https://www.reddit.com/r/emacs/comments/zktblg/emacsconf_2022_what_id_like_to_see_in_emacs/> [[!inline pages="internal(2022/info/rms-after)" raw="yes"]] diff --git a/2022/talks/sqlite.md b/2022/talks/sqlite.md index 5d262430..8982e91b 100644 --- a/2022/talks/sqlite.md +++ b/2022/talks/sqlite.md @@ -167,6 +167,12 @@ For more information and the packages discussed here, see the how it went, what could be better, etc. Then you can later see the recipe and notes on it at once, which helps you further refine the recipe. +- Q: beyond note taking what kind of packages do you think would benefit from triples library + +Other discussions from IRC: + +- I like the font he's using in his org doc. +- In some way, triples (turtle, RDF and similar things) describe a directed graph, where echa edge is like: Subject--Predicate-->Object. A datalog can describe this too (for example: with predicates like triple(S,P,O)). [[!inline pages="internal(2022/info/sqlite-after)" raw="yes"]] diff --git a/2022/talks/wayland.md b/2022/talks/wayland.md index 786cd443..9f633c8a 100644 --- a/2022/talks/wayland.md +++ b/2022/talks/wayland.md @@ -93,8 +93,7 @@ Discussions: - Q: there have a demo to show this emacs-wayland-compositor, even it buggy now? Just curious. ;) - A: - - Q: So the current limitation is that buffer mirroring doesn't - respect different widths/heights? +- Q: So the current limitation is that buffer mirroring doesn't respect different widths/heights? - A:(answered - transcript tbd) - Q:Could you use some of this package with other walyand compositers "probably not all of it" , sway, kde, river, gnome. @@ -107,8 +106,13 @@ Discussions: - A:(answered - transcript tbd) - Q: Did you know EAF <https://github.com/emacs-eaf/emacs-application-framework> ? -- Do you have the code available somewhere (git repo)? - - perma-curious.eu +- Q: Do you have the code available somewhere (git repo)? + - <https://perma-curious.eu> +- Q: So the current limitation is that buffer mirroring doesn't respect different widths/heights? + +Other discussions from IRC: + +- If I understand correctly, this project is more like philosophy of EXWM, but it not based on X11, instead based on Wayland. [[!inline pages="internal(2022/info/wayland-after)" raw="yes"]] |