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