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