WEBVTT

00:00:00.000 --> 00:00:02.220
I had the discussion with my wife, you know,

00:00:02.240 --> 00:00:04.900
because she always knows better than me. She

00:00:04.900 --> 00:00:10.300
says that Calibre is pronounced Calibre. And

00:00:10.300 --> 00:00:12.640
I'm like, no, but I had a call with the guy that

00:00:12.640 --> 00:00:15.939
created the tool and he says Calibre. So I just

00:00:15.939 --> 00:00:19.359
want to hear this once and for all. How do you

00:00:19.359 --> 00:00:22.239
pronounce it? I had a misconception of you. And

00:00:22.239 --> 00:00:26.600
this comes from the discussions in GitHub, right?

00:00:27.019 --> 00:00:29.199
They call you like a root maintainer. I don't

00:00:29.199 --> 00:00:31.160
know, that you're sometimes harsh on people.

00:00:31.780 --> 00:00:34.159
Do you want to share something about that with

00:00:34.159 --> 00:00:36.359
us? How is the competition with other terminals?

00:00:36.939 --> 00:00:39.399
Ghosty is up in the market right now, creating

00:00:39.399 --> 00:00:42.039
a lot of new features. Westterm has been in the

00:00:42.039 --> 00:00:44.399
market for a long time already, right? So why

00:00:44.399 --> 00:00:46.880
not use the computer like a normal person? Like

00:00:46.880 --> 00:00:50.140
go to the browser, go to the Explorer, the native

00:00:50.140 --> 00:00:53.600
Explorer, and use your mouse a lot. Why all of

00:00:53.600 --> 00:00:56.219
this love? For the terminal. Why do you want

00:00:56.219 --> 00:01:00.200
to be in the terminal most of the day? So this

00:01:00.200 --> 00:01:03.479
is the browser. So it's called Vice, V -I -S

00:01:03.479 --> 00:01:06.739
-E. So you can see it's got tabs on the side.

00:01:07.579 --> 00:01:10.219
And, you know, it's got no Chrome at all. It's

00:01:10.219 --> 00:01:11.840
got a status bar at the bottom, but that's it.

00:01:12.040 --> 00:01:14.200
What's going to happen with your projects when

00:01:14.200 --> 00:01:16.920
you're gone? Is there a successor? Are there

00:01:16.920 --> 00:01:19.680
any plans? Or is Kitty dead and Calibur dead

00:01:19.680 --> 00:01:22.780
when you're gone? I'm still young enough that

00:01:22.780 --> 00:01:27.239
I don't expect to die anytime soon. So I, of

00:01:27.239 --> 00:01:29.739
course, have set up automated tooling so that

00:01:29.739 --> 00:01:32.340
when I get a long PR, I just shunt it into an

00:01:32.340 --> 00:01:35.659
AI and ask it for a summary. So it doesn't really

00:01:35.659 --> 00:01:39.319
affect me because if it's a long PR, I just get

00:01:39.319 --> 00:01:43.680
it summarized. You fight AI with AI. Yes, that's

00:01:43.680 --> 00:01:47.459
the way to go. Okay, makes sense. How would you

00:01:47.459 --> 00:01:49.799
respond to a 2009 PR that you're not going to

00:01:49.799 --> 00:01:51.920
merge? That doesn't fit your design goal. You

00:01:51.920 --> 00:01:55.079
close it right away and you just send them the

00:01:55.079 --> 00:02:00.659
finger emoji? Okay. So who started the GPU terminals?

00:02:00.840 --> 00:02:03.560
That's my question then. Was it you? I think

00:02:03.560 --> 00:02:07.459
it's the case. Speaking of workflows, I saw that

00:02:07.459 --> 00:02:09.960
you migrated to sessions in Kitty. How's it going

00:02:09.960 --> 00:02:12.979
for you? I wanted to touch on that. Look this

00:02:12.979 --> 00:02:15.379
way. This is how it's going. If you're listening

00:02:15.379 --> 00:02:17.659
to this as a podcast, Remember that it was originally

00:02:17.659 --> 00:02:19.560
recorded as a video. If you're not following

00:02:19.560 --> 00:02:21.580
along, you can go to my YouTube channel. My username

00:02:21.580 --> 00:02:23.639
is Linkarzu. And if you want to support me to

00:02:23.639 --> 00:02:25.939
keep this podcast going, you can donate in Ko

00:02:25.939 --> 00:02:27.539
-Fi. I'm going to leave a link in the description.

00:02:27.879 --> 00:02:29.719
All right. So let's get started with this chapter

00:02:29.719 --> 00:02:35.740
then. COVID, how's it going? Good, good. Good

00:02:35.740 --> 00:02:38.219
to see you again. I think it's been three months

00:02:38.219 --> 00:02:41.479
since we last talked. Yeah, around three, four

00:02:41.479 --> 00:02:44.240
months, something like that. Yeah. I had to let

00:02:44.240 --> 00:02:46.400
you go that day because you were busy. And I

00:02:46.400 --> 00:02:49.280
still have some questions for you. And a lot

00:02:49.280 --> 00:02:52.500
of people also had a lot of questions. How much

00:02:52.500 --> 00:02:54.979
time do you have today, by the way? I think about

00:02:54.979 --> 00:02:58.719
an hour, hour and a half. Okay. Okay. Awesome.

00:02:58.800 --> 00:03:01.319
So, first of all, thanks for being here with

00:03:01.319 --> 00:03:04.539
us. It's Sunday. What time is it for you? It's

00:03:04.539 --> 00:03:08.599
7 .30. 7 .30? Yeah. You had a pretty busy...

00:03:08.599 --> 00:03:12.520
Oh, yeah, p .m. You had a busy day today? Oh,

00:03:12.520 --> 00:03:15.569
yeah. I've been working really hard on the next

00:03:15.569 --> 00:03:17.969
kitty feature, actually. Oh, really? I was trying

00:03:17.969 --> 00:03:21.889
to get it finished in time to demo it on this

00:03:21.889 --> 00:03:25.229
video. So let's see if I succeeded. Oh, what

00:03:25.229 --> 00:03:26.930
is it about? Do you want to share that with us?

00:03:28.530 --> 00:03:30.870
I told you about it in the last talk, the Juice

00:03:30.870 --> 00:03:33.870
Files kitten. So I've kind of finished that finally,

00:03:34.009 --> 00:03:37.530
and now it has previews for images and videos

00:03:37.530 --> 00:03:41.169
and documents and stuff. And it's integrated

00:03:41.169 --> 00:03:47.360
into kitty, so you can press a key. Do you want

00:03:47.360 --> 00:03:52.099
to show it? Sure, why not? Okay. I'll switch

00:03:52.099 --> 00:03:56.099
to your screen then. Yeah. Are you able to see

00:03:56.099 --> 00:04:01.060
my screen? Yep, I can see it. Cool. So this is

00:04:01.060 --> 00:04:03.560
the choose files kitten. So for example here,

00:04:03.759 --> 00:04:09.280
I'm in kitty at a prompt. So I press a shortcut,

00:04:09.580 --> 00:04:13.039
which is configurable, but whatever. So here

00:04:13.039 --> 00:04:16.420
you get the choose files kitten. You can go down

00:04:16.420 --> 00:04:18.899
and, you know, look at things. And you can see

00:04:18.899 --> 00:04:21.839
on the right -hand side, you can see that there's

00:04:21.839 --> 00:04:24.040
a pre -syntax highlighted preview of text files.

00:04:24.660 --> 00:04:27.339
I'll show you later the different types of previews.

00:04:27.339 --> 00:04:31.019
And you can type anything you want to, you know,

00:04:31.019 --> 00:04:33.620
like a fuzzy finder, basically. So let's get

00:04:33.620 --> 00:04:36.540
the setup file that's, you know, right there.

00:04:36.620 --> 00:04:38.899
Or if you want something deep inside, let's see

00:04:38.899 --> 00:04:44.379
the more control. So you get... It's the usual

00:04:44.379 --> 00:04:46.540
thing. Everybody's familiar with this. But the

00:04:46.540 --> 00:04:48.259
nice part is that it's integrated into KITI.

00:04:48.759 --> 00:04:53.740
So if I press enter here, you see that the file

00:04:53.740 --> 00:04:57.139
I selected, remote control .py, is inserted into

00:04:57.139 --> 00:05:02.300
my prompt. LS is obviously a trivial command,

00:05:02.439 --> 00:05:04.779
but it could be a more complicated command. So

00:05:04.779 --> 00:05:07.620
rather than using a fuzzy finder integrated into

00:05:07.620 --> 00:05:09.300
your shell, you can use one integrated into your

00:05:09.300 --> 00:05:12.410
terminal. But of course, this is not all that

00:05:12.410 --> 00:05:16.810
the choose files kitten has. So first I'll just

00:05:16.810 --> 00:05:21.589
show you some examples of the different types

00:05:21.589 --> 00:05:24.269
of previews. So you can see here there's a video

00:05:24.269 --> 00:05:28.290
preview. There's the previous text file preview,

00:05:28.490 --> 00:05:31.449
syntax highlighting, there's animated images.

00:05:33.050 --> 00:05:35.689
Then, you know, my other project caliber. So

00:05:35.689 --> 00:05:38.620
this is... integrated with Calibre to give you

00:05:38.620 --> 00:05:42.060
a preview of ebooks, documents. So you can see

00:05:42.060 --> 00:05:45.120
here in the right panel, there's the title of

00:05:45.120 --> 00:05:48.399
the authors and the cover of the book. This is

00:05:48.399 --> 00:05:51.500
a good book, by the way, I recommend it. So,

00:05:51.540 --> 00:05:54.120
you know, even for Docker X5, for example, you

00:05:54.120 --> 00:05:55.620
get the title and authors. There's no cover,

00:05:55.779 --> 00:06:00.459
but you get some metadata about it. So that's

00:06:00.459 --> 00:06:02.920
the Choose Files Kitten's basic functionality.

00:06:03.300 --> 00:06:05.279
But the really cool part about the Choose Files

00:06:05.279 --> 00:06:07.939
Kitten is it integrates, at least on Linux, it

00:06:07.939 --> 00:06:11.540
integrates with your GUI programs as well. So

00:06:11.540 --> 00:06:14.279
let me start up my favorite GUI program, Calibre

00:06:14.279 --> 00:06:18.220
itself. So when I click the Add Books button

00:06:18.220 --> 00:06:21.620
here, instead of the usual file open dialog,

00:06:21.879 --> 00:06:26.560
I get the Choose Files Kitten. Okay. So you can

00:06:26.560 --> 00:06:29.519
see at the bottom here, you can see the filter

00:06:29.519 --> 00:06:31.980
that you get in usual GUI dialogues with different

00:06:31.980 --> 00:06:34.699
types of files. So you actually have that here

00:06:34.699 --> 00:06:38.480
as well. And, you know, you can choose files.

00:06:38.620 --> 00:06:41.160
And so, for example, if I choose breakneck and

00:06:41.160 --> 00:06:46.079
press enter, it gets added to Calibre. So, you

00:06:46.079 --> 00:06:49.959
know, it integrates with the GUI programs, which

00:06:49.959 --> 00:06:52.579
is a big advantage for me because I like to,

00:06:52.600 --> 00:06:56.660
you know, do fuzzy finding everywhere. So now

00:06:56.660 --> 00:07:00.480
I can do it in my GUI programs as well, not just

00:07:00.480 --> 00:07:05.160
in, say, Vim. And does it work on the browser?

00:07:06.000 --> 00:07:09.500
Yes, yes, yes, it does. So I'll show you an example

00:07:09.500 --> 00:07:12.899
of that if you can still see my screen. So this

00:07:12.899 --> 00:07:17.399
is a regular Chrome, Google Chrome browser. So

00:07:17.399 --> 00:07:21.500
let me choose, say, function, which is somewhere

00:07:21.500 --> 00:07:35.759
here. So this basically hijacks the system, whatever

00:07:35.759 --> 00:07:39.839
thing is used to. Now you're on Linux. I'm on

00:07:39.839 --> 00:07:42.740
Mac OS and I hate that prompt that shows up when

00:07:42.740 --> 00:07:45.899
I'm on a Mac OS. It just, you know, just takes

00:07:45.899 --> 00:07:47.860
me out of my flow, right? So I have to go to

00:07:47.860 --> 00:07:50.420
finder at the small pop -up and I have to search.

00:07:50.480 --> 00:07:53.459
It's horrible. Will this work in macOS or just

00:07:53.459 --> 00:07:56.519
Linux? I haven't found a way to make it work

00:07:56.519 --> 00:07:58.639
in macOS. Apple doesn't give you the, at least

00:07:58.639 --> 00:08:01.600
that I know of, give you the integration points.

00:08:02.040 --> 00:08:05.420
So, so far it's Linux only, but maybe, you know,

00:08:05.420 --> 00:08:07.480
somebody who knows a little bit more about macOS

00:08:07.480 --> 00:08:10.000
can contribute a PR to get to work there as well.

00:08:10.590 --> 00:08:12.769
Hopefully. There's a lot of macOS users in the

00:08:12.769 --> 00:08:17.430
Kitty community. Yes, yes. This is something

00:08:17.430 --> 00:08:19.509
that I'm going to use a lot myself. So I spent

00:08:19.509 --> 00:08:24.009
the last month working on this, and it was quite

00:08:24.009 --> 00:08:27.209
a task. So, you know, the previews that I showed

00:08:27.209 --> 00:08:33.899
you, the image and videos and stuff. The choose

00:08:33.899 --> 00:08:37.320
files kitten is written in Go, like all kitties.

00:08:38.279 --> 00:08:41.299
And so Go doesn't have very good imaging libraries.

00:08:42.039 --> 00:08:44.139
So I actually had to write my own. So I had to

00:08:44.139 --> 00:08:48.159
write my own parser for something called ICC

00:08:48.159 --> 00:08:50.879
color profiles, which is sort of how you interpret

00:08:50.879 --> 00:08:53.360
colors in image files to get them on the screen.

00:08:54.039 --> 00:08:56.620
So there's a whole spec for that, a 100 -page

00:08:56.620 --> 00:08:59.000
spec for that. I had to implement that, and I

00:08:59.000 --> 00:09:01.649
had to do a whole bunch of other stuff. to get

00:09:01.649 --> 00:09:03.870
the imaging libraries in a form that was good

00:09:03.870 --> 00:09:08.490
enough for my use case here. So I spent the last

00:09:08.490 --> 00:09:12.070
month and a half doing that. So just about finished

00:09:12.070 --> 00:09:15.669
just in time for today. For today. Let me ask

00:09:15.669 --> 00:09:18.490
you something. Why do you create all these protocols

00:09:18.490 --> 00:09:21.230
and stuff? Is it to make your job easier? Is

00:09:21.230 --> 00:09:27.490
it fun? Or what happens there? Both. So I am

00:09:27.490 --> 00:09:31.620
a big... I love to hack on my own tools. I have

00:09:31.620 --> 00:09:34.379
my own productivity shortcuts. I actually have

00:09:34.379 --> 00:09:36.460
written my own browser, which I use rather than

00:09:36.460 --> 00:09:41.779
Chrome or Firefox or whatever. Similarly, I wrote

00:09:41.779 --> 00:09:45.299
my own terminal. I have my own desktop manager.

00:09:46.200 --> 00:09:49.860
I don't have my own window manager yet, but maybe

00:09:49.860 --> 00:09:55.299
someday. I like to do this because in the long

00:09:55.299 --> 00:10:00.199
run, I find that the time I spend on this It

00:10:00.199 --> 00:10:03.679
comes back to me multiplied. So I save much more

00:10:03.679 --> 00:10:07.639
time in the long run than I do building it. And

00:10:07.639 --> 00:10:09.960
of course, in the case of KT, many people can

00:10:09.960 --> 00:10:14.419
use it. So it's kind of a gift to the world as

00:10:14.419 --> 00:10:16.960
well. And yes, it's fun. I learn new things.

00:10:17.059 --> 00:10:19.620
Like I told you about the ICC color profile thing.

00:10:20.000 --> 00:10:22.019
I knew nothing about color profiles before I

00:10:22.019 --> 00:10:23.720
started that, but I learned all about it. So

00:10:23.720 --> 00:10:27.490
it's a new thing I learned. And I find coding

00:10:27.490 --> 00:10:31.409
fun, so I just keep doing it. And over the years,

00:10:31.429 --> 00:10:34.029
I've built up a whole suite of tools of my own

00:10:34.029 --> 00:10:37.370
that I use. Okay, to make your job easier. Now,

00:10:37.490 --> 00:10:39.789
when you're working on something and there's

00:10:39.789 --> 00:10:42.230
something that itches, right? You do something

00:10:42.230 --> 00:10:46.409
and you say, okay, I can improve this in my workflow.

00:10:46.649 --> 00:10:51.690
I can fix it. Do you stop your work? and go and

00:10:51.690 --> 00:10:55.610
fix that or you live with the pain of that itch

00:10:55.610 --> 00:10:57.870
there continue your work and you fix it later

00:10:57.870 --> 00:11:02.649
like do you over optimize it depends it depends

00:11:02.649 --> 00:11:06.250
on how boring the work is if i'm doing something

00:11:06.250 --> 00:11:09.950
fun and work -wise then i keep doing it but if

00:11:09.950 --> 00:11:13.389
it's if i have some time or if i'm you know doing

00:11:13.389 --> 00:11:14.929
something boring and i want to procrastinate

00:11:14.929 --> 00:11:17.539
then i go and dive into So like, for example,

00:11:17.639 --> 00:11:19.740
the choose file std is, I kind of have the excuse

00:11:19.740 --> 00:11:23.440
that it's sort of work. You know, it's for kitty,

00:11:23.539 --> 00:11:26.240
other people use it, it's not just for me. So,

00:11:26.340 --> 00:11:28.759
but I mean, if it was not for my own personal

00:11:28.759 --> 00:11:30.480
use case, I would never have spent so much time

00:11:30.480 --> 00:11:36.860
on it. But, you know, both kitty and caliber

00:11:36.860 --> 00:11:40.559
are tools that I myself use a lot. That is why

00:11:40.559 --> 00:11:42.179
I spend so much time on them. And that's why

00:11:42.179 --> 00:11:44.399
I polish all their bugs and I fix all their bugs.

00:11:45.049 --> 00:11:48.250
Polish all the rough edges and stuff. I like

00:11:48.250 --> 00:11:51.750
to have the principle of dogfooding. I like to

00:11:51.750 --> 00:11:56.769
use what I can build. And that's the best way

00:11:56.769 --> 00:12:07.570
to keep its quality high. Definitely. What file

00:12:07.570 --> 00:12:09.429
manager do you use? Because that's something

00:12:09.429 --> 00:12:11.350
that I struggle with a lot, you know, because

00:12:11.350 --> 00:12:15.179
I'm on macOS. I use Finder or I use another proprietary

00:12:15.179 --> 00:12:18.519
one because I need to copy files from here to

00:12:18.519 --> 00:12:23.740
there, especially videos. And I don't enjoy that

00:12:23.740 --> 00:12:25.679
because I have to leave the terminal. How do

00:12:25.679 --> 00:12:28.100
you manage? Do you use a file manager, something

00:12:28.100 --> 00:12:31.779
you custom build? Do you use Yassi or what? I

00:12:31.779 --> 00:12:35.500
just use shadow commands. I don't use a file

00:12:35.500 --> 00:12:39.320
manager. I use CP and MV and friends. I don't

00:12:39.320 --> 00:12:41.399
actually. So like this choose files kitten, I

00:12:41.399 --> 00:12:44.080
showed, I demoed how I can use it to select files

00:12:44.080 --> 00:12:47.440
and insert them into the prompt. So now I'm going

00:12:47.440 --> 00:12:49.279
to be, I just finished it today, but I'll be

00:12:49.279 --> 00:12:52.679
using it in the future. So I want to copy a file

00:12:52.679 --> 00:12:54.580
that's somewhere deep inside a folder hierarchy.

00:12:54.759 --> 00:12:57.340
I can just press a key and get the choose files

00:12:57.340 --> 00:13:00.580
kitten, select that file and insert it into the

00:13:00.580 --> 00:13:08.059
CP command line. So, yeah. But I mostly just

00:13:08.059 --> 00:13:11.620
use shell commands. I don't actually use a file

00:13:11.620 --> 00:13:15.139
manager. Okay, okay. Now, I have a question for

00:13:15.139 --> 00:13:17.559
you as well. I had the discussion with my wife,

00:13:17.720 --> 00:13:19.820
you know, because she always knows better than

00:13:19.820 --> 00:13:25.399
me. She says that Calibre is pronounced Calibre.

00:13:25.679 --> 00:13:28.159
And I'm like, no, but I had a call with the guy

00:13:28.159 --> 00:13:31.440
that created the tool, and he says Calibre. So

00:13:31.440 --> 00:13:34.960
I just want to hear this once and for all. How

00:13:34.960 --> 00:13:37.740
do you pronounce it? It's caliber. So it's the

00:13:37.740 --> 00:13:41.120
British spelling or the Indian spelling. In British

00:13:41.120 --> 00:13:43.879
or Indian English, BRE is pronounced as BER.

00:13:44.899 --> 00:13:51.500
Okay. So the name was actually chosen by my wife,

00:13:51.580 --> 00:13:55.919
since we're talking about wives. And so it has

00:13:55.919 --> 00:13:59.440
a lot of... So the Libre, it's pronounced as

00:13:59.440 --> 00:14:01.940
caliber, but there's a Libre in it. So that sounds,

00:14:02.039 --> 00:14:06.840
you know, that's like free software. And then

00:14:06.840 --> 00:14:09.100
Calibre is, you know, like a high -caliber product.

00:14:09.500 --> 00:14:15.480
And I was in California when I named it. So the

00:14:15.480 --> 00:14:17.320
Cal is from California. There's a whole bunch

00:14:17.320 --> 00:14:19.320
of stuff. It's actually in the Calibre pack.

00:14:20.059 --> 00:14:22.539
Okay. I was going to ask you about the name as

00:14:22.539 --> 00:14:25.740
well. I also read about the name, the kitty name.

00:14:25.980 --> 00:14:28.879
I spoiled it for myself because I already know

00:14:28.879 --> 00:14:32.440
the history, but for people watching, why did

00:14:32.440 --> 00:14:34.299
you choose that name, kitty? There's a lot of

00:14:34.299 --> 00:14:36.419
people, myself included, that didn't like the

00:14:36.419 --> 00:14:38.980
name kitty because I don't like cats. Well, but

00:14:38.980 --> 00:14:43.679
where did it come from? Well, two places. One

00:14:43.679 --> 00:14:47.419
was that I lost my cat of 10 years, passed away.

00:14:49.149 --> 00:14:52.350
The name and the logo, the chili logo is actually

00:14:52.350 --> 00:14:56.110
something I drew myself as a tribute to my cat.

00:14:56.169 --> 00:15:00.250
The cat's name was Lychee. Lychee? So, yes, Lychee.

00:15:00.289 --> 00:15:01.950
It's a fruit. It's the name of a fruit. Oh, the

00:15:01.950 --> 00:15:04.549
red ones. I love those. Yes, yes, yes. We're

00:15:04.549 --> 00:15:07.809
in season. We're in season right now. Well, last

00:15:07.809 --> 00:15:10.029
month. It's a season here as well. It's a season

00:15:10.029 --> 00:15:13.850
here as well. So anyway, so, yeah, so that was

00:15:13.850 --> 00:15:15.350
one place the name came from, the name of the

00:15:15.350 --> 00:15:17.570
logo. The other thing is that it stands for COVID's

00:15:17.570 --> 00:15:24.710
TTY. COVID's TTY. COVID's TTY. So the KI is from

00:15:24.710 --> 00:15:28.429
COVID and the TTY is TTY. And of course I wanted

00:15:28.429 --> 00:15:31.409
a word with TTY in it and there aren't that many.

00:15:31.789 --> 00:15:38.889
Okay. So you had to make it work then. Yes. Now,

00:15:38.889 --> 00:15:43.289
just to learn a little bit more about your background

00:15:43.289 --> 00:15:48.500
and history, would you mind sharing with us How

00:15:48.500 --> 00:15:50.620
did all get started? How did you get started

00:15:50.620 --> 00:15:53.440
with computers? You went to study at Caltech,

00:15:53.559 --> 00:15:55.980
right? So you moved from India to the United

00:15:55.980 --> 00:15:58.919
States to study, then you went back. So how did

00:15:58.919 --> 00:16:00.759
you get started with computers? Do you want to

00:16:00.759 --> 00:16:02.340
share with us a little bit about your background?

00:16:03.019 --> 00:16:06.460
Sure. I started with computers because my mother

00:16:06.460 --> 00:16:12.740
was doing a PhD in economics and she got a ZX

00:16:12.740 --> 00:16:15.919
Spectrum. That's a really old computer. It's

00:16:15.919 --> 00:16:18.259
basically a keyboard. It connects to your TV.

00:16:18.820 --> 00:16:23.179
It used to run a form of guessing. So she used

00:16:23.179 --> 00:16:25.759
to use it for her thesis work. And I, of course,

00:16:25.759 --> 00:16:31.080
used it for other things. So at the age of seven,

00:16:31.240 --> 00:16:36.980
I had to bug up multiplication tables. In school,

00:16:37.080 --> 00:16:39.080
they make you multiply multiplication tables.

00:16:39.200 --> 00:16:40.539
So I said, what the hell? I don't want to do

00:16:40.539 --> 00:16:43.919
this. So I sat and wrote a program on my Spectrum.

00:16:45.399 --> 00:16:47.960
to print out the multiplication tables. It had

00:16:47.960 --> 00:16:49.919
colors and everything. And, you know, it was

00:16:49.919 --> 00:16:52.919
in my studio tabular form. So that was my first

00:16:52.919 --> 00:16:55.779
sort of programming experience. And then the

00:16:55.779 --> 00:16:57.379
other thing I used to do on that spectrum is

00:16:57.379 --> 00:17:02.139
my mother got me this book, which had the source

00:17:02.139 --> 00:17:05.799
code of various games written in BASIC printed

00:17:05.799 --> 00:17:08.839
out in the book. So I basically used to type

00:17:08.839 --> 00:17:11.779
those in and, you know, fix the errors and whatever.

00:17:12.079 --> 00:17:14.259
And at the end of my efforts, have a game to

00:17:14.259 --> 00:17:19.960
play. So that was how I started programming.

00:17:20.500 --> 00:17:22.900
Programming has been a hobby for me throughout

00:17:22.900 --> 00:17:27.319
my life. So I think I've been using Linux now

00:17:27.319 --> 00:17:31.660
for 30 years. So yeah, it was always a hobby

00:17:31.660 --> 00:17:34.579
for me. So I wanted to be a physicist. I remember

00:17:34.579 --> 00:17:37.740
after my junior college, which is sort of at

00:17:37.740 --> 00:17:40.500
the age of 18, I took a year off from my education

00:17:40.500 --> 00:17:45.200
and quarantine. Just do other stuff. I remember

00:17:45.200 --> 00:17:50.539
writing something in Java which was supposed

00:17:50.539 --> 00:17:56.660
to simulate the human brain. It had a very similar

00:17:56.660 --> 00:18:00.400
idea to the basis of AI nowadays. It had neurons

00:18:00.400 --> 00:18:02.819
and feedback and shit. It didn't go anywhere.

00:18:03.819 --> 00:18:07.740
That was an interesting project I did in my youth.

00:18:08.519 --> 00:18:14.079
And so my modern programming, open source programming

00:18:14.079 --> 00:18:18.460
career really started with something called SuperKaramba,

00:18:18.619 --> 00:18:21.940
which is the KDE desktop, had a widget system.

00:18:22.200 --> 00:18:25.480
So back in KDE three days, it had a widget system

00:18:25.480 --> 00:18:27.819
called SuperKaramba in which you have to write

00:18:27.819 --> 00:18:33.549
widgets in Python. And they'll show up on your

00:18:33.549 --> 00:18:36.990
desktop and whatever. So in those days, I never

00:18:36.990 --> 00:18:40.069
used to get much email. I was not a well -known

00:18:40.069 --> 00:18:43.890
person. I was just a student. So I had a lot

00:18:43.890 --> 00:18:45.849
of time. So I said, okay, no, it doesn't matter

00:18:45.849 --> 00:18:47.410
if I don't get a lot of email. Let me write a

00:18:47.410 --> 00:18:49.809
widget that shows the different emails in different

00:18:49.809 --> 00:18:53.130
folders and stuff like that on my desktop. So

00:18:53.130 --> 00:18:56.089
I wrote that. I released it. And that was my

00:18:56.089 --> 00:19:01.039
first open source release. And then I used, and

00:19:01.039 --> 00:19:03.339
then, so to do that, I learned Python and then

00:19:03.339 --> 00:19:05.500
I ended up using Python and my thesis work for

00:19:05.500 --> 00:19:09.400
some numerics for quantum computing. And there

00:19:09.400 --> 00:19:12.240
was a, there was a lattice -based quantum computer

00:19:12.240 --> 00:19:15.119
whose simulation I had to do with Python partly.

00:19:15.579 --> 00:19:19.420
And then after that, what happened was that Sony

00:19:19.420 --> 00:19:22.599
released its PRS -500, which was the first e

00:19:22.599 --> 00:19:26.000
-ink -based e -book reader. I was in the US at

00:19:26.000 --> 00:19:29.700
the time. And at the time I had, a little handheld

00:19:29.700 --> 00:19:33.240
device called a Mitac Neo, which was a GPS device.

00:19:33.559 --> 00:19:35.880
I used to use it to navigate around the place.

00:19:35.900 --> 00:19:39.400
I wasn't familiar with the city too much. And

00:19:39.400 --> 00:19:42.440
so you could hack it and read plain text files

00:19:42.440 --> 00:19:44.019
on it. So I used to download plain text files

00:19:44.019 --> 00:19:47.720
from Project Gutenberg or wherever and read them

00:19:47.720 --> 00:19:50.000
on that. So when Sony announced its e -ink reader,

00:19:50.079 --> 00:19:52.599
I was all over it. And the day that it was released,

00:19:52.799 --> 00:19:55.640
I went to the Sony store and I picked it up.

00:19:56.270 --> 00:19:59.130
But when I got back, I was home. I was horrified

00:19:59.130 --> 00:20:01.710
to realize that it required, it was user proprietary

00:20:01.710 --> 00:20:04.769
USB protocol. It required software from Sony.

00:20:04.809 --> 00:20:10.950
It only worked on Windows. So this was not something

00:20:10.950 --> 00:20:14.809
I could let stand. So I went online. I looked

00:20:14.809 --> 00:20:16.609
for, you know, what do I do? Like, how do I get

00:20:16.609 --> 00:20:19.750
this to work with Linux? And I found a community

00:20:19.750 --> 00:20:22.170
called mobileread .com, which I'm still a member.

00:20:23.720 --> 00:20:25.519
And there were a lot of enthusiasts there, mobile

00:20:25.519 --> 00:20:28.180
reading enthusiasts. And with the help of some

00:20:28.180 --> 00:20:33.079
of them, I bought what's called a PRS -500, which

00:20:33.079 --> 00:20:35.940
was sort of like a library to talk to this device.

00:20:36.440 --> 00:20:39.740
I remember I used to print out USB traces from

00:20:39.740 --> 00:20:42.819
the device. And at my lunch break, I would take

00:20:42.819 --> 00:20:45.819
it over to a nearby paja burrito where I used

00:20:45.819 --> 00:20:48.259
to get a burrito. I used to eat the burrito and

00:20:48.259 --> 00:20:50.480
look over those USB traces and try to reverse

00:20:50.480 --> 00:20:53.859
engineer the USB protocol. um so that was a fun

00:20:53.859 --> 00:20:56.000
you know grad students have a lot of time so

00:20:56.000 --> 00:20:59.200
i did there's a lot of fun uh fun sort of side

00:20:59.200 --> 00:21:01.579
project and i ended up releasing late prs 500

00:21:01.579 --> 00:21:03.759
and eventually that went on to become caliber

00:21:03.759 --> 00:21:10.440
okay yeah okay so i had a gui and you know it'll

00:21:10.440 --> 00:21:13.900
use it for windows and micros okay okay that's

00:21:13.900 --> 00:21:16.539
how caliber was born so you're not a programmer

00:21:16.539 --> 00:21:19.680
by profession right so you're a theoretical physicist

00:21:20.329 --> 00:21:23.130
Correct? Yes. Okay. Do you do a lot of programming

00:21:23.130 --> 00:21:26.990
there or your programming background helped you

00:21:26.990 --> 00:21:31.670
a lot in your career? So I was a physicist for

00:21:31.670 --> 00:21:36.569
10 years. I quit after I got my PhD. I worked

00:21:36.569 --> 00:21:39.829
full -time on Calgary. But during my PhD itself,

00:21:39.890 --> 00:21:42.589
I did a fair bit of programming. Like I said,

00:21:42.609 --> 00:21:44.789
I had to do some numerical simulations of quantum

00:21:44.789 --> 00:21:49.400
computing. but yeah no but most of my work was

00:21:49.400 --> 00:21:52.680
mathematical theoretical it wasn't really programming

00:21:52.680 --> 00:21:56.700
for reality do you enjoy that still theoretical

00:21:56.700 --> 00:22:02.940
yes yes i keep in touch uh very few papers okay

00:22:02.940 --> 00:22:07.059
people breast of things okay now what does your

00:22:07.059 --> 00:22:10.980
family and your wife think of you uh leaving

00:22:10.980 --> 00:22:13.779
caltech to work on open source because you mentioned

00:22:13.779 --> 00:22:17.099
that in the other video right that you left because

00:22:17.099 --> 00:22:20.000
your wife had a job so then you quit your job

00:22:20.000 --> 00:22:22.039
i think and then you guys moved back to india

00:22:22.039 --> 00:22:25.579
or something so yeah so basically what happened

00:22:25.579 --> 00:22:27.460
was that we were both in grad school we're both

00:22:27.460 --> 00:22:33.740
physicists and uh at the time um we had two we

00:22:33.740 --> 00:22:35.200
were graduating we were both graduating after

00:22:35.200 --> 00:22:37.519
the same time six months difference or something

00:22:37.519 --> 00:22:42.680
and uh we had to find a job as a postdoc or whatever

00:22:42.680 --> 00:22:47.369
so now the problem is finding jobs when you're

00:22:47.369 --> 00:22:49.190
both physicists is it's really difficult to find

00:22:49.190 --> 00:22:52.390
a job in the same place because there aren't

00:22:52.390 --> 00:22:54.549
that many openings and so you know like any given

00:22:54.549 --> 00:22:56.750
university might have an opening for one person

00:22:56.750 --> 00:23:00.089
but not for two in the same department so it's

00:23:00.089 --> 00:23:01.869
really difficult to find it's called it's called

00:23:01.869 --> 00:23:03.970
the it's called the two body problem in physics

00:23:03.970 --> 00:23:10.029
so anyway so so so what we so I so at the time

00:23:10.029 --> 00:23:13.019
I had I was doing Calibre as a side thing. But

00:23:13.019 --> 00:23:14.920
the thing was that I was making enough money

00:23:14.920 --> 00:23:18.079
from it that I could make something like $1 ,000

00:23:18.079 --> 00:23:21.460
a month at the time. So that's good enough. I

00:23:21.460 --> 00:23:24.940
can sort of grow this and whatever. And so I

00:23:24.940 --> 00:23:27.539
talked to my wife and we decided that she'd take

00:23:27.539 --> 00:23:30.359
a job wherever she gets it and I'll just join

00:23:30.359 --> 00:23:33.779
her and work on Calibre. And then we'll see how

00:23:33.779 --> 00:23:37.220
it goes. And it went really well. So that was

00:23:37.220 --> 00:23:40.539
history. Okay. And are you happy with that decision

00:23:40.539 --> 00:23:43.539
of working full -time in open source? Or sometimes

00:23:43.539 --> 00:23:45.880
you look back at it and you're like, man, I should

00:23:45.880 --> 00:23:48.619
have continued in physics and all that stuff.

00:23:49.559 --> 00:23:51.839
No, no. I'm very happy with open source. So the

00:23:51.839 --> 00:23:53.539
thing, the reason I wanted to be a physicist,

00:23:53.539 --> 00:23:55.059
part of the reason, apart from liking physics,

00:23:55.119 --> 00:23:57.740
of course, is that I wanted to be an academic

00:23:57.740 --> 00:23:59.400
because I felt that they had a lot of freedom

00:23:59.400 --> 00:24:03.299
and flexibility to work on what they wanted and

00:24:03.299 --> 00:24:09.220
so on. But the thing is that uh actually speaking

00:24:09.220 --> 00:24:11.980
nowadays at least academics don't have that much

00:24:11.980 --> 00:24:13.619
freedom you have to spend a lot of time getting

00:24:13.619 --> 00:24:16.859
funding grants teaching whatever you don't get

00:24:16.859 --> 00:24:20.460
as much freedom as i would like i actually think

00:24:20.460 --> 00:24:23.000
i have more freedom to work on uh whatever i

00:24:23.000 --> 00:24:28.259
want doing uh caliber uh kitty open source work

00:24:28.259 --> 00:24:31.619
i don't have any bosses i don't have to i don't

00:24:31.619 --> 00:24:34.619
have to i'm not dependent on funding agency i

00:24:34.619 --> 00:24:37.940
don't have to write ground proposals I just have

00:24:37.940 --> 00:24:41.400
to keep a few million users happy. You're living

00:24:41.400 --> 00:24:45.339
the Linux life, right? The open source life.

00:24:45.519 --> 00:24:50.440
Yes. Okay. Now, I had a misconception of you

00:24:50.440 --> 00:24:53.880
before the interview, you know, and a lot of

00:24:53.880 --> 00:24:56.900
people do as well. You have your water there,

00:24:57.059 --> 00:25:01.039
right? I think you're going to need it. Not yet.

00:25:01.759 --> 00:25:06.930
And this comes from the... discussions in GitHub,

00:25:07.150 --> 00:25:09.509
right? They call you like a root maintainer.

00:25:09.569 --> 00:25:11.890
I don't know that you're sometimes harsh on people.

00:25:12.470 --> 00:25:14.910
Do you want to share something about that with

00:25:14.910 --> 00:25:18.670
us? Well, the thing is that I deal with about

00:25:18.670 --> 00:25:22.869
50 to 100 pieces of user interaction every single

00:25:22.869 --> 00:25:25.990
day, 365 days a year. I've been doing that for

00:25:25.990 --> 00:25:30.809
20 years. And after a point, being friendly is

00:25:30.809 --> 00:25:34.519
just not sustainable. I mean, I am a friendly

00:25:34.519 --> 00:25:36.599
person in person. I think so. At least I feel

00:25:36.599 --> 00:25:39.319
so. I don't have any complaints. I don't have

00:25:39.319 --> 00:25:42.579
any complaints from people in my life. But online,

00:25:42.779 --> 00:25:46.000
it becomes day after day, day after day, answering

00:25:46.000 --> 00:25:49.240
the same questions, the same. You just tend to

00:25:49.240 --> 00:25:52.519
lose. You just can't maintain that level of friendliness.

00:25:52.660 --> 00:25:56.980
It's not sustainable. So I have this philosophy

00:25:56.980 --> 00:26:01.299
where I like to be at zero bugs. Any bug that

00:26:01.299 --> 00:26:04.789
I... is reported to me, and that I can reproduce

00:26:04.789 --> 00:26:08.890
or understand, I fix immediately. Or immediately

00:26:08.890 --> 00:26:11.769
means within the next few days, whatever, as

00:26:11.769 --> 00:26:14.970
soon as possible. I don't like to leave bugs

00:26:14.970 --> 00:26:19.549
open. But then the flip side of that is that,

00:26:19.650 --> 00:26:23.849
in a sense, the entire world has a direct line

00:26:23.849 --> 00:26:27.289
into my inbox. So anybody who opens a bug report,

00:26:27.630 --> 00:26:30.690
it can tend to distract me from my work, it can

00:26:30.690 --> 00:26:35.380
whatever. Uh, so, you know, so I tend to be extremely

00:26:35.380 --> 00:26:42.440
short and blunt and whatever, uh, when I am dealing

00:26:42.440 --> 00:26:44.500
with bug reports because I deal with so many

00:26:44.500 --> 00:26:48.079
and I like to deal with them fast and it just,

00:26:48.180 --> 00:26:50.180
that's the only way it's sustainable for me.

00:26:50.599 --> 00:26:53.440
Yeah. So, yeah, you know, I know, I know, I know

00:26:53.440 --> 00:26:56.839
lots of people think I'm rude or arrogant or

00:26:56.839 --> 00:27:00.660
whatever, but okay. That's the price I pay. Yeah,

00:27:00.759 --> 00:27:03.019
we were talking about that with Justin the other

00:27:03.019 --> 00:27:05.339
day. He's the lead maintainer in U of M, and

00:27:05.339 --> 00:27:07.799
I was like, Ben, but imagine having two projects

00:27:07.799 --> 00:27:10.660
as big as Calibre and Kitty. I wouldn't have

00:27:10.660 --> 00:27:13.660
the time, you know, and I would be even worse.

00:27:13.880 --> 00:27:17.160
I would be like, no, no, because many issues

00:27:17.160 --> 00:27:19.839
a day. Which tool gets more issues and discussions,

00:27:20.160 --> 00:27:24.680
Calibre or Kitty? So over its lifetime, Calibre

00:27:24.680 --> 00:27:28.619
by far. In the last year or two, it's been Kitty

00:27:28.619 --> 00:27:31.700
because I've been focusing a little more on Kitty

00:27:31.700 --> 00:27:34.359
and a little less on Calibre. So there's been

00:27:34.359 --> 00:27:37.619
less releases in Calibre and less new features.

00:27:38.180 --> 00:27:41.240
So at the moment, it's Kitty. But over their

00:27:41.240 --> 00:27:43.740
entire lifetime, it's Calibre by far. Calibre

00:27:43.740 --> 00:27:47.859
has 3 million active users. Kitty is not in that

00:27:47.859 --> 00:27:51.339
ballpark. How is the competition with other terminals?

00:27:51.900 --> 00:27:54.380
Ghosty is up in the market right now, creating

00:27:54.380 --> 00:27:57.000
a lot of new features. Westerm has been in the

00:27:57.000 --> 00:27:59.700
market for a long time already, right? So Ghosty,

00:27:59.720 --> 00:28:02.000
Westerm, what else do we have right now? Kitty,

00:28:02.099 --> 00:28:05.700
of course, the main ones. I don't pay too much

00:28:05.700 --> 00:28:08.119
attention. Like I said, I write these things

00:28:08.119 --> 00:28:12.059
for myself. And I don't really need them to succeed.

00:28:13.740 --> 00:28:15.519
Calibre has given me all the success I really

00:28:15.519 --> 00:28:19.599
need. So Kitty is very much... a passion project.

00:28:19.759 --> 00:28:23.480
I love terminal workflows and I want to make

00:28:23.480 --> 00:28:26.420
them better and more powerful. And Kitty is basically

00:28:26.420 --> 00:28:30.259
doing that. So, you know, I wanted to push forward

00:28:30.259 --> 00:28:33.000
the terminal ecosystem. So I can add support

00:28:33.000 --> 00:28:35.680
for images, add support for the keyboard events,

00:28:36.039 --> 00:28:40.119
and so on. And so Kitty was kind of my platform

00:28:40.119 --> 00:28:42.960
to do that. So the origin story of Kitty is really

00:28:42.960 --> 00:28:50.410
that I was using a GUI -based win. Oh, okay.

00:28:50.529 --> 00:28:54.289
I used that on Windows. Yep, yep. Yes, yes. So

00:28:54.289 --> 00:28:55.789
this was a long time ago, more than 10 years

00:28:55.789 --> 00:28:59.250
ago. So, you know, there was some problem. I

00:28:59.250 --> 00:29:01.069
don't remember exactly what it was now. It was

00:29:01.069 --> 00:29:04.170
slow or something. And so I wanted to switch

00:29:04.170 --> 00:29:08.069
to Terminal Win. But Terminal Win was even slower.

00:29:08.349 --> 00:29:10.950
And so I profiled it and I found that the reason

00:29:10.950 --> 00:29:14.640
was that the terminal was slow. At the time,

00:29:14.640 --> 00:29:15.960
the terminal, whatever terminal I was using,

00:29:16.059 --> 00:29:18.259
I don't remember now, maybe console, maybe something

00:29:18.259 --> 00:29:23.660
else. It was slow. And I kind of analyzed the

00:29:23.660 --> 00:29:26.660
problem and I thought that I can do better. And

00:29:26.660 --> 00:29:31.700
there's another thing that I really missed going

00:29:31.700 --> 00:29:35.220
from G win to terminal win, which was, you know,

00:29:35.240 --> 00:29:37.700
the squiggly colored underlines where you get

00:29:37.700 --> 00:29:41.809
errors. The spell. That was not available in

00:29:41.809 --> 00:29:44.769
terminals at all. So I initially wrote KDE to

00:29:44.769 --> 00:29:47.109
do two things, to be fast and to have squiggly

00:29:47.109 --> 00:29:50.569
underlines. And so that is how KDE was born.

00:29:50.910 --> 00:29:54.690
And then once I developed it, because my workflow

00:29:54.690 --> 00:29:58.630
is totally terminal -based, I use MAT, I use

00:29:58.630 --> 00:30:02.190
RIM, most of my tools, apart from the browser

00:30:02.190 --> 00:30:05.200
and Calibre itself. are running the terminal.

00:30:05.720 --> 00:30:07.819
So, you know, I wanted to add more capabilities

00:30:07.819 --> 00:30:10.319
so that my tools could be more capable running

00:30:10.319 --> 00:30:11.900
the terminal. So I wanted to add images for that

00:30:11.900 --> 00:30:16.099
reason. You know, better keyboard shortcuts for

00:30:16.099 --> 00:30:19.539
that reason. So that's how I keep adding features.

00:30:19.819 --> 00:30:21.700
So like recently I added the ability to Kitty

00:30:21.700 --> 00:30:24.900
to have different size text. So you can have

00:30:24.900 --> 00:30:28.940
headings that are big and so on. So, you know,

00:30:28.960 --> 00:30:30.660
that's again because I want to like browse a

00:30:30.660 --> 00:30:33.180
markdown file in my terminal and I want to want

00:30:33.180 --> 00:30:35.299
to be able to see the headings in big form a

00:30:35.299 --> 00:30:39.400
basic thing like that so just to make my own

00:30:39.400 --> 00:30:43.660
life better now why all of this love for the

00:30:43.660 --> 00:30:46.480
terminal like let me ask it a different way why

00:30:46.480 --> 00:30:48.920
not use the computer like a normal person like

00:30:48.920 --> 00:30:52.200
go to the browser go to the exploder the native

00:30:52.200 --> 00:30:55.660
exploder and use your mouse a lot why all of

00:30:55.660 --> 00:30:58.859
this love for the terminal why do you why do

00:30:58.859 --> 00:31:01.140
you want to be in the terminal most of the day

00:31:02.150 --> 00:31:05.470
Mostly because terminal -based workflows are

00:31:05.470 --> 00:31:08.890
keyboard -first. So you can do a lot more with

00:31:08.890 --> 00:31:15.589
the keyboard than most GUI programs. There's

00:31:15.589 --> 00:31:18.650
no reason that it has to be this way. You can

00:31:18.650 --> 00:31:21.829
make a GUI program that is perfectly keyboard

00:31:21.829 --> 00:31:27.430
-driven, but it doesn't end up like that. And

00:31:27.430 --> 00:31:32.319
so the thing is that I spend most of my time

00:31:32.319 --> 00:31:34.740
working in a handful of programs throughout the

00:31:34.740 --> 00:31:36.660
day, right? It's not like I'm using 100 different

00:31:36.660 --> 00:31:39.200
programs. So when you are spending most of your

00:31:39.200 --> 00:31:41.299
time in a handful of programs, it makes sense

00:31:41.299 --> 00:31:44.400
to optimize them. It's not an undue burden to

00:31:44.400 --> 00:31:46.220
learn the keyboard shortcuts. It's not an undue

00:31:46.220 --> 00:31:49.039
burden to write some macros, automation, whatever,

00:31:49.279 --> 00:31:51.079
you know, that kind of thing. And so terminal

00:31:51.079 --> 00:31:53.420
-based workflows are much more conducive to that,

00:31:53.519 --> 00:31:56.079
generally speaking. And so that's why I tend

00:31:56.079 --> 00:31:58.180
to stick to the terminal as much as possible.

00:31:59.519 --> 00:32:03.650
Okay. Do other people around you understand your

00:32:03.650 --> 00:32:05.809
passion for the terminal? Or they're like, because

00:32:05.809 --> 00:32:07.930
my wife doesn't get it. She's like, what is this

00:32:07.930 --> 00:32:11.150
guy doing? And I configure my keyboard, you know,

00:32:11.190 --> 00:32:13.190
home row mods and all that stuff. And she's like,

00:32:13.289 --> 00:32:15.450
and I don't use the number row. I don't use the

00:32:15.450 --> 00:32:18.529
F row on my keyboard. And she's like, man, you're

00:32:18.529 --> 00:32:21.190
just, and I try not to use the mouse and I try

00:32:21.190 --> 00:32:23.890
to explain to her, okay, look, if you do this,

00:32:23.950 --> 00:32:25.930
you don't need to use the mouse, like the motions

00:32:25.930 --> 00:32:27.990
and all that stuff. And she's like. Man, no.

00:32:28.130 --> 00:32:30.910
So do other people around you understand this

00:32:30.910 --> 00:32:33.450
passion that you have for terminals? Not in my

00:32:33.450 --> 00:32:37.630
immediate channel, none. Nobody else is. I mean,

00:32:37.650 --> 00:32:41.190
my wife uses Linux. My children used to use Linux,

00:32:41.289 --> 00:32:44.049
but I'll play Windows 6 through Windows. But

00:32:44.049 --> 00:32:49.029
yeah, none of them are terminal fans. No. So

00:32:49.029 --> 00:32:51.150
like, for example, I work on a laptop with a

00:32:51.150 --> 00:32:54.609
small screen. I don't even have a mouse. So my

00:32:54.609 --> 00:32:56.960
laptop has a touchpad and a... track point you

00:32:56.960 --> 00:32:59.460
know so lenovo it has the redirect or track point

00:32:59.460 --> 00:33:02.480
thing so i'm disabled the touchpad and i just

00:33:02.480 --> 00:33:03.980
use the track point and the track point is quite

00:33:03.980 --> 00:33:07.619
it's quite awkward to use uh you know it's not

00:33:07.619 --> 00:33:11.400
as convenient as a mouse uh so i try to completely

00:33:11.400 --> 00:33:15.180
avoid uh you know using the mouse so like for

00:33:15.180 --> 00:33:17.599
example i told you i use my own browser uh so

00:33:17.599 --> 00:33:19.380
i don't know if you can see my screen still but

00:33:19.380 --> 00:33:22.380
let me share it let me share it yeah So this

00:33:22.380 --> 00:33:25.700
is the browser. So it's called Vice, V -I -S

00:33:25.700 --> 00:33:28.940
-E. So you can see it's got tabs on the side.

00:33:29.799 --> 00:33:32.420
And, you know, it's got no Chrome at all. It's

00:33:32.420 --> 00:33:34.059
got a status bar at the bottom, but that's it.

00:33:35.319 --> 00:33:37.799
So, for example, if you want to follow links,

00:33:37.880 --> 00:33:40.359
you press the F key and all the links are highlighted.

00:33:40.700 --> 00:33:43.000
You can tap a key and follow it. So it's going

00:33:43.000 --> 00:33:47.019
to click things. Okay. It has a command line

00:33:47.019 --> 00:33:48.900
where you can enter commands and, you know, open.

00:33:49.630 --> 00:33:53.630
uh open urls and so on uh and the nice part of

00:33:53.630 --> 00:33:57.349
it is that uh this this this facility to open

00:33:57.349 --> 00:34:01.269
urls i can actually use it inside win so if i

00:34:01.269 --> 00:34:06.230
do that you get a url and say i do github so

00:34:06.230 --> 00:34:09.050
that you see that the url gets inserted into

00:34:09.050 --> 00:34:12.110
win and it got it from the browser from vice

00:34:12.110 --> 00:34:15.329
right from the browser yes yes so so you know

00:34:15.329 --> 00:34:18.699
this is uh this is really sorry i'm switching

00:34:18.699 --> 00:34:23.079
back to the uh yep oh yeah um so this is really

00:34:23.079 --> 00:34:25.539
useful for me because like i said i deal with

00:34:25.539 --> 00:34:28.579
a lot of user communication and so a lot of user

00:34:28.579 --> 00:34:30.940
queries can be answered with links to help resources

00:34:30.940 --> 00:34:35.679
right and so all those links are there in my

00:34:35.679 --> 00:34:38.079
browser history because i've you know visited

00:34:38.079 --> 00:34:41.219
them so at some point many years ago i decided

00:34:41.219 --> 00:34:43.679
to make this accessible everywhere in my system

00:34:43.679 --> 00:34:48.139
so i could uh you know look at my uh current

00:34:48.139 --> 00:34:51.360
browser history and easily fuzzy find urls from

00:34:51.360 --> 00:34:54.940
it and insert them into him or insert them into

00:34:54.940 --> 00:34:57.639
my you know user response automation tools and

00:34:57.639 --> 00:35:01.440
so on and you know and then the ability to follow

00:35:01.440 --> 00:35:03.780
links without having to use the mouse and stuff

00:35:03.780 --> 00:35:05.699
so all those kind of things there used to be

00:35:05.699 --> 00:35:09.199
a there used to be a firefox extension interactive

00:35:09.199 --> 00:35:13.179
i think i used to use that for the for the link

00:35:13.179 --> 00:35:17.519
following uh features but then got you know the

00:35:17.519 --> 00:35:21.500
firefox changed its extension uh mechanisms and

00:35:21.500 --> 00:35:24.519
made it more restrictive or something uh and

00:35:24.519 --> 00:35:26.860
so it stopped working so well um so i decided

00:35:26.860 --> 00:35:29.159
to write my own browser to let this only dependent

00:35:29.159 --> 00:35:32.480
on you know firefox or chrome or whatever so

00:35:32.480 --> 00:35:35.809
my browser is basically uh a wrapper around uh

00:35:35.809 --> 00:35:40.469
chromium by a qt web engine and you know it's

00:35:40.469 --> 00:35:42.210
it's it's not it's not for public consumption

00:35:42.210 --> 00:35:44.769
it's not that polished it's but it does whatever

00:35:44.769 --> 00:35:47.889
i need it to do so that's what matters you know

00:35:47.889 --> 00:35:50.949
what limitations do you find in vice do you have

00:35:50.949 --> 00:35:54.090
any do you find any limitations not really no

00:35:54.090 --> 00:35:57.570
i use it for pretty much everything because it's

00:35:57.570 --> 00:36:00.710
got a it's got chromium as its engine yeah so

00:36:00.710 --> 00:36:06.239
okay there are no Okay. And is it a project that

00:36:06.239 --> 00:36:09.280
is open to the public so everyone can install

00:36:09.280 --> 00:36:12.400
it? There's documentation and all that? It's

00:36:12.400 --> 00:36:15.139
on GitHub, but like I said, it's not really for

00:36:15.139 --> 00:36:18.579
public consumption. It's not as configurable

00:36:18.579 --> 00:36:21.860
or polished or whatever as my usual projects

00:36:21.860 --> 00:36:26.159
are. This is pretty much a personal use thing.

00:36:26.260 --> 00:36:28.800
Because I decided, I thought about making it

00:36:28.800 --> 00:36:31.400
for public consumption, but the amount of effort

00:36:31.400 --> 00:36:35.559
needed to... So polishing to that level is a

00:36:35.559 --> 00:36:38.000
little too high. I mean, there are already tools

00:36:38.000 --> 00:36:39.519
like this. There's something called Qt Browser,

00:36:39.659 --> 00:36:42.639
which is basically the same thing. It uses Web

00:36:42.639 --> 00:36:48.139
Engine with its own UI and so on. So at the time,

00:36:48.139 --> 00:36:50.139
I don't know why Qt Browser didn't exist or had

00:36:50.139 --> 00:36:53.900
various problems. I don't know. Nowadays, you

00:36:53.900 --> 00:36:55.900
know, if anybody asks, I say you just use Qt

00:36:55.900 --> 00:37:00.219
Browser. Okay. Okay. Okay. Now, when you are

00:37:00.219 --> 00:37:03.960
about to deploy a new project, do you think of

00:37:03.960 --> 00:37:06.760
the amount of issues and discussions that it

00:37:06.760 --> 00:37:09.199
will generate and all of the time that it will

00:37:09.199 --> 00:37:11.739
take away from you? Like this Vice browser, for

00:37:11.739 --> 00:37:13.719
example, if you make it public, you know that

00:37:13.719 --> 00:37:15.860
a hundred or a thousand or more than a thousand

00:37:15.860 --> 00:37:18.320
issues are coming your way. So do you think about

00:37:18.320 --> 00:37:20.480
that? Does that hold you back a little bit as

00:37:20.480 --> 00:37:24.159
well? So in the case of Vice, it did, because

00:37:24.159 --> 00:37:26.710
most of us, I didn't. It wasn't something I enjoyed

00:37:26.710 --> 00:37:28.610
very much. It's basically writing a UI on top

00:37:28.610 --> 00:37:32.349
of Chrome, which is not that exciting for me.

00:37:32.710 --> 00:37:34.829
So I didn't feel like, you know, doing that work.

00:37:35.130 --> 00:37:38.210
So I decided not to release it publicly. But

00:37:38.210 --> 00:37:40.550
like I said, I mean, Calibre has 3 million active

00:37:40.550 --> 00:37:44.670
users. I have a huge stream of bug reports and

00:37:44.670 --> 00:37:47.949
user interactions already. So most projects don't

00:37:47.949 --> 00:37:53.190
even make a dent in that. I mean, I have seven

00:37:53.190 --> 00:37:56.809
dozen open source projects. Apart from Kitty,

00:37:56.969 --> 00:37:59.250
all the rest of them put together don't make

00:37:59.250 --> 00:38:05.510
a dent in my workload. Okay, okay. Now, in the

00:38:05.510 --> 00:38:08.230
previous call, you also mentioned that your projects

00:38:08.230 --> 00:38:14.110
are, you know, a bus factor of one, right? What's

00:38:14.110 --> 00:38:16.409
going to happen with your projects when you're

00:38:16.409 --> 00:38:19.230
gone? Is there a successor? Are there any plans?

00:38:19.449 --> 00:38:21.929
Or is Kitty dead and Calibur dead when you're

00:38:21.929 --> 00:38:26.070
gone? I have no idea. I haven't made any plans.

00:38:27.010 --> 00:38:29.409
I'm still young enough that I don't expect to

00:38:29.409 --> 00:38:36.550
die anytime soon. Like I said, there are a lot

00:38:36.550 --> 00:38:42.940
of things that I should do, set up. and set up

00:38:42.940 --> 00:38:46.239
some sort of organization, whatever. I just,

00:38:46.380 --> 00:38:50.719
you know, I prefer the code. I don't like spending

00:38:50.719 --> 00:38:54.420
time on that kind of stuff. So both Calibre and

00:38:54.420 --> 00:38:57.639
Kitty have, especially Calibre, less Kitty, have

00:38:57.639 --> 00:39:00.320
very long -term contributors, many people who

00:39:00.320 --> 00:39:02.920
have contributed to it over the years, for many

00:39:02.920 --> 00:39:05.719
years. In fact, one of the long -term, actually

00:39:05.719 --> 00:39:08.679
not one, but two of the long -term Calibre contributors

00:39:08.679 --> 00:39:13.610
have actually passed away. Because Calibre, one

00:39:13.610 --> 00:39:17.409
of the main demographics that love Calibre is

00:39:17.409 --> 00:39:21.010
older people. Because e -books are very useful

00:39:21.010 --> 00:39:22.389
for older people because you can increase the

00:39:22.389 --> 00:39:27.869
font size. I don't know. I myself am now old

00:39:27.869 --> 00:39:31.510
enough that I find that a really big point in

00:39:31.510 --> 00:39:34.949
favor of e -books. But yeah, so as I said, a

00:39:34.949 --> 00:39:37.389
lot of Calibre contributors tended to be retired

00:39:37.389 --> 00:39:41.570
software professionals. And they have the time,

00:39:41.670 --> 00:39:43.349
they have the interest. So there are a lot of

00:39:43.349 --> 00:39:47.070
contributors. And I would hope that if I pass

00:39:47.070 --> 00:39:50.170
away, somebody will take over maintenance. But

00:39:50.170 --> 00:39:52.510
I don't have any sort of designated successor

00:39:52.510 --> 00:39:55.730
or formal process for it. But it's open source.

00:39:55.789 --> 00:40:01.050
Anyone can fork it and continue it. Do you have

00:40:01.050 --> 00:40:04.590
any maintainers in Kiti that are pretty active

00:40:04.590 --> 00:40:07.090
and that know it in and out? Or you're just the

00:40:07.090 --> 00:40:11.550
only one? No, Kitty, it's pretty much... Kitty

00:40:11.550 --> 00:40:14.409
doesn't have any... I mean, Kitty has had a lot

00:40:14.409 --> 00:40:16.309
of pull requests from lots of people. It has

00:40:16.309 --> 00:40:18.030
hundreds of contributors, but nobody who's sort

00:40:18.030 --> 00:40:21.570
of stuck around and, you know, doing a lot of

00:40:21.570 --> 00:40:25.809
continuous work. There have been some pretty

00:40:25.809 --> 00:40:27.550
impressive pull requests. I mean, I always get

00:40:27.550 --> 00:40:29.929
amazed when I get pull requests from somebody

00:40:29.929 --> 00:40:32.469
who has done a deep dive on the code base and,

00:40:32.510 --> 00:40:36.559
you know, understood a lot. and made a pull request

00:40:36.559 --> 00:40:40.420
that sort of touches along the internals, you

00:40:40.420 --> 00:40:43.260
know, the hairy bits. I've had quite a few of

00:40:43.260 --> 00:40:45.300
such pull requests. There are, I think, about

00:40:45.300 --> 00:40:46.980
five or six people who have sent me such pull

00:40:46.980 --> 00:40:50.420
requests. So, you know, it's not that the codebase

00:40:50.420 --> 00:40:54.400
is completely inscrutable, but yes, I am the

00:40:54.400 --> 00:40:57.900
main maintainer for Kitty pretty much as of now.

00:40:58.440 --> 00:41:02.320
Okay. Now that you mentioned PRs, there's a new

00:41:02.320 --> 00:41:05.639
trend uh because of ai of sending you know like

00:41:05.639 --> 00:41:10.820
those 2000 line added generated prs and they're

00:41:10.820 --> 00:41:15.119
ai generated right and and you can tell has that

00:41:15.119 --> 00:41:18.460
happened to you and what are your thoughts uh

00:41:18.460 --> 00:41:22.420
so interestingly enough i got a pr for adding

00:41:22.420 --> 00:41:24.599
ai functionality to caliber that was written

00:41:24.599 --> 00:41:30.619
by an air But it was not an AI alone. There was

00:41:30.619 --> 00:41:32.400
a person behind it. It was a sincere effort.

00:41:32.539 --> 00:41:36.360
It was not a spam or whatever. And in fact, I

00:41:36.360 --> 00:41:39.900
ended up merging that PR eventually. So from

00:41:39.900 --> 00:41:45.079
the perspective of a maintainer, my key thing

00:41:45.079 --> 00:41:48.179
is that people who send me both issues and PRs,

00:41:48.179 --> 00:41:51.619
to keep it as succinct and short as possible.

00:41:52.340 --> 00:41:54.360
Because very often, just reading through that

00:41:54.360 --> 00:41:57.869
whole wall of text, It's a waste of time. Or

00:41:57.869 --> 00:42:00.050
at least summarize things at the beginning well

00:42:00.050 --> 00:42:03.329
and then have your wall of text. So I, of course,

00:42:03.429 --> 00:42:05.889
have set up automated tooling so that when I

00:42:05.889 --> 00:42:08.610
get a long PR, I just shunt it into an AI and

00:42:08.610 --> 00:42:12.130
ask it for a summary. So it doesn't really affect

00:42:12.130 --> 00:42:15.670
me because if it's a long PR, I just get it summarized.

00:42:15.750 --> 00:42:19.829
You fight AI with AI. Yes, that's the way to

00:42:19.829 --> 00:42:25.619
go. Okay, makes sense. Yeah, so it's okay. As

00:42:25.619 --> 00:42:27.639
long as there's a human being behind it and it's

00:42:27.639 --> 00:42:31.119
not spam, I'm fine with getting AI -based PRs.

00:42:31.219 --> 00:42:33.280
I don't mind if the code is written by AI as

00:42:33.280 --> 00:42:35.639
well, as long as the human being is signing off

00:42:35.639 --> 00:42:36.840
on it and saying that, you know, I understand

00:42:36.840 --> 00:42:39.659
this code, I've read this code, whatever. And

00:42:39.659 --> 00:42:42.119
I have to review the code either way, whether

00:42:42.119 --> 00:42:44.239
it's written by a human or an AI. It doesn't

00:42:44.239 --> 00:42:48.960
really change my workload. So, yeah, I mean,

00:42:49.000 --> 00:42:51.099
if people want to use AI and send me PRs, that's

00:42:51.099 --> 00:42:54.179
fine, as long as, you know. you're sincere about

00:42:54.179 --> 00:42:57.519
it you're making a you know good faith effort

00:42:57.519 --> 00:43:02.260
i'm happy to entertain your peers okay so if

00:43:02.260 --> 00:43:05.099
it's a really long pr you send it over to an

00:43:05.099 --> 00:43:07.559
ai to quickly see what it's doing and have a

00:43:07.559 --> 00:43:09.300
better idea so you're not you don't waste your

00:43:09.300 --> 00:43:12.639
time right yes because very often uh you know

00:43:13.599 --> 00:43:16.019
PR might need to be rewritten. It may not match

00:43:16.019 --> 00:43:19.519
my design goals. You know, I don't need to review

00:43:19.519 --> 00:43:21.400
the whole thing to say that, right? If I can

00:43:21.400 --> 00:43:23.340
just get an idea that, okay, all this has to

00:43:23.340 --> 00:43:25.679
be fixed first, I can just quickly send that

00:43:25.679 --> 00:43:28.599
response. And then, you know, the people can

00:43:28.599 --> 00:43:31.159
come back and do, you know, edit it and change

00:43:31.159 --> 00:43:34.639
it. Then I can review it in more detail. And

00:43:34.639 --> 00:43:37.340
that's good for the contributor, the PR sender

00:43:37.340 --> 00:43:40.380
as well, because they get feedback quickly. So

00:43:40.380 --> 00:43:43.159
I think I... I think I said earlier, I have this

00:43:43.159 --> 00:43:45.320
zero bugs philosophy. It's the same for PRs.

00:43:45.559 --> 00:43:47.699
I don't like to leave them hanging around. If

00:43:47.699 --> 00:43:49.239
for whatever reason I have to leave something

00:43:49.239 --> 00:43:51.079
hanging around, I always make it a point to say,

00:43:51.159 --> 00:43:53.239
I'm busy right now. It's going to take me maybe

00:43:53.239 --> 00:43:57.360
a month or whatever to get to this. So I don't

00:43:57.360 --> 00:43:59.840
like to leave things unanswered as much as possible.

00:44:00.559 --> 00:44:03.579
Okay, you don't like that to accumulate in the

00:44:03.579 --> 00:44:06.619
backlog. So how would you respond to a 2009 PR

00:44:06.619 --> 00:44:08.300
that you're not going to merge, that doesn't

00:44:08.300 --> 00:44:10.460
fit your design goal? You close it right away

00:44:10.460 --> 00:44:16.500
and you just send them the finger emoji? I write

00:44:16.500 --> 00:44:19.139
a couple of lines explaining why it's not a fit

00:44:19.139 --> 00:44:24.900
and I close it. And I say, if the person is pushy

00:44:24.900 --> 00:44:27.260
about it, when I say that it's open source, you're

00:44:27.260 --> 00:44:29.119
free to fork it and maintain your own fork with

00:44:29.119 --> 00:44:35.239
your features. Okay, okay, okay. Now, in the

00:44:35.239 --> 00:44:37.179
previous call, also you mentioned, and right

00:44:37.179 --> 00:44:39.400
now you mentioned that terminals were slow at

00:44:39.400 --> 00:44:42.380
the time. So you decided to go GPU accelerated

00:44:42.380 --> 00:44:46.960
and you learned OpenGL. And I was wondering,

00:44:47.159 --> 00:44:50.599
did Alacrity exist already when you decided to

00:44:50.599 --> 00:44:53.940
start with Kitty or Kitty came first? No, they

00:44:53.940 --> 00:44:58.420
were pretty much contemporaneous. I think Alacrity's

00:44:58.420 --> 00:45:00.880
announcement was about a week before Kitty's.

00:45:01.039 --> 00:45:03.380
So Kitty existed for about a year before that,

00:45:03.420 --> 00:45:06.440
but I hadn't released it probably. So we're pretty

00:45:06.440 --> 00:45:10.059
much contemporaneous. Oh, okay. I guess it was

00:45:10.059 --> 00:45:14.199
the time had come for GPU -based terminals. Okay.

00:45:14.239 --> 00:45:16.780
So who started the GPU terminals? That's my question

00:45:16.780 --> 00:45:20.820
then. Was it you? I think it's a case of simultaneous

00:45:20.820 --> 00:45:25.469
evolution. Okay. Okay. Different people, different

00:45:25.469 --> 00:45:27.210
people came up with the idea at the same time.

00:45:27.969 --> 00:45:32.510
Okay. Okay. Makes sense. Like Alacrity's, Alacrity's

00:45:32.510 --> 00:45:35.190
performance, I mean, his focus has always been

00:45:35.190 --> 00:45:38.530
only performance. That was not my, that was not,

00:45:38.610 --> 00:45:40.090
I mean, performance is important to me, obviously,

00:45:40.110 --> 00:45:42.750
but, but it's not my main goal and it's not,

00:45:42.789 --> 00:45:45.110
it's not, it's not the only thing that Kitty

00:45:45.110 --> 00:45:50.210
is good at. So, the performance was, for me,

00:45:50.230 --> 00:45:54.690
was kind of like table stakes. I wanted to, expand

00:45:54.690 --> 00:45:56.969
the terminal ecosystem, move it forward. I knew

00:45:56.969 --> 00:45:59.610
that to do that, I needed to have a terminal

00:45:59.610 --> 00:46:02.190
that's compelling for users. And performance

00:46:02.190 --> 00:46:04.969
is a big part of that. So the performance was

00:46:04.969 --> 00:46:06.650
the basic thing. I had to get the performance

00:46:06.650 --> 00:46:11.489
in place so that I could then build on it. So

00:46:11.489 --> 00:46:14.510
for me, performance is a substrate. It's stable

00:46:14.510 --> 00:46:16.469
stakes. It's the basic thing that you get right.

00:46:16.849 --> 00:46:22.429
And then you build on it. Okay. I mean, I don't

00:46:22.429 --> 00:46:23.710
want to speak for Alacrity. I don't know too

00:46:23.710 --> 00:46:25.170
much about it. I mean, as far as I know, it's

00:46:25.170 --> 00:46:27.409
a great terminal. But from what I know, it's

00:46:27.409 --> 00:46:29.750
kind of conservative about adding features. It

00:46:29.750 --> 00:46:32.949
has relatively few features. That's its philosophy.

00:46:33.150 --> 00:46:34.610
That's a fine philosophy. Nothing wrong with

00:46:34.610 --> 00:46:39.369
that. But, you know, KDE is very much about seeing

00:46:39.369 --> 00:46:41.130
what you can do with terminals. For somebody

00:46:41.130 --> 00:46:42.530
who lives in a terminal and wants to make it

00:46:42.530 --> 00:46:46.730
as powerful as possible, enable advanced workflows

00:46:46.730 --> 00:46:50.360
and so on. Speaking of workflows, I saw that

00:46:50.360 --> 00:46:52.880
you migrated to sessions in Qt. How's it going

00:46:52.880 --> 00:46:55.880
for you? I wanted to touch on that. Look this

00:46:55.880 --> 00:46:59.679
way. This is how it's going, man. Like in our

00:46:59.679 --> 00:47:01.960
previous call, you remember we talked about Tmux,

00:47:02.000 --> 00:47:05.519
your favorite tool of all times, right? So, you

00:47:05.519 --> 00:47:08.719
know, I didn't know a different way of using

00:47:08.719 --> 00:47:11.260
the terminal. I use Tmux and the reason I use

00:47:11.260 --> 00:47:14.000
Tmux is because of sessions, right? But let me

00:47:14.000 --> 00:47:15.480
show you right now real quick. I don't think

00:47:15.480 --> 00:47:18.030
you'll be able to see it, right? I have my kitty

00:47:18.030 --> 00:47:20.190
sessions. Can you see it a little bit there?

00:47:20.269 --> 00:47:22.190
It's on your phone, I think. No, I've got it

00:47:22.190 --> 00:47:24.170
on my laptop as well now, thanks to your second

00:47:24.170 --> 00:47:27.130
channel. Oh, awesome. So I can see it quite well.

00:47:27.329 --> 00:47:30.809
So I have my sessions. I can switch to my .files

00:47:30.809 --> 00:47:33.929
pretty fast. I can switch to my blog post if

00:47:33.929 --> 00:47:37.210
I want .files again, you know, because that's

00:47:37.210 --> 00:47:40.150
what I like doing. I like keeping the sessions

00:47:40.150 --> 00:47:43.170
that I use the most a key press away, right?

00:47:43.230 --> 00:47:45.619
So if I want to go back to my daily note. to

00:47:45.619 --> 00:47:47.559
what we were looking at right now. And I did

00:47:47.559 --> 00:47:51.340
this with Tmux in the past, right? But it adds

00:47:51.340 --> 00:47:54.739
that additional layer, right? And I felt it a

00:47:54.739 --> 00:47:56.719
little bit slower. You don't feel it that much,

00:47:56.739 --> 00:47:58.900
but if you spend a lot of the day in the terminal

00:47:58.900 --> 00:48:01.340
or most of the day in the terminal, you feel

00:48:01.340 --> 00:48:03.860
it when it's gone. So I feel that it improved

00:48:03.860 --> 00:48:07.500
a little bit, you know? And, you know, one less

00:48:07.500 --> 00:48:11.679
tool. And I haven't been using Tmux for, what,

00:48:11.840 --> 00:48:14.900
two months? Over two months, I think. Yeah, it's

00:48:14.900 --> 00:48:17.400
been great. Do you use sessions or you don't?

00:48:17.739 --> 00:48:21.400
I don't use sessions. I actually have my own

00:48:21.400 --> 00:48:24.480
solution for that that I just did longer for

00:48:24.480 --> 00:48:28.980
Kitty. So I haven't felt the need for sessions

00:48:28.980 --> 00:48:31.400
personally, which is why it took so long for

00:48:31.400 --> 00:48:32.900
me to add sessions to Kitty because I didn't

00:48:32.900 --> 00:48:36.139
need it personally. In fact, my interview with

00:48:36.139 --> 00:48:38.860
you was something that moved it up in the to

00:48:38.860 --> 00:48:43.670
-do list a little bit. What was your solution?

00:48:44.730 --> 00:48:51.230
So I use Hyperland as my window monitor currently,

00:48:51.389 --> 00:48:55.070
but I actually have an extension for it of my

00:48:55.070 --> 00:48:58.690
own that allows me to do various things. So I

00:48:58.690 --> 00:49:01.750
use that as my integration point for creating

00:49:01.750 --> 00:49:06.269
a session, not the terminal. This existed a long

00:49:06.269 --> 00:49:09.980
time ago, before I had KT. So I haven't migrated

00:49:09.980 --> 00:49:11.860
that workflow yet to Kitty. Maybe I'll do that

00:49:11.860 --> 00:49:15.679
in the future. But so far, it's working for me,

00:49:15.739 --> 00:49:20.119
and I've been using it for a decade plus. So

00:49:20.119 --> 00:49:25.559
originally, I used to use i3 on X11. So it used

00:49:25.559 --> 00:49:28.699
to work there. And then I migrated to Sway on

00:49:28.699 --> 00:49:33.179
Wayland, and I ported it to work there. Then

00:49:33.179 --> 00:49:36.239
I migrated to Hyperland, and I ported it to work

00:49:36.239 --> 00:49:42.929
there. It's been going strong for a long time.

00:49:43.250 --> 00:49:47.969
Okay. And do you mind demoing how you use sessions

00:49:47.969 --> 00:49:50.429
there? I'm not a Linux user. I don't know if

00:49:50.429 --> 00:49:55.070
you know, but I use Mac mainly. So mostly I have

00:49:55.070 --> 00:49:58.670
key presses that open things easily. So for example,

00:49:58.849 --> 00:50:02.969
if I want to switch to Kini, I just press a key

00:50:02.969 --> 00:50:05.949
press. And so right now I don't have a Kini session,

00:50:06.090 --> 00:50:08.420
but... There you go. That's a key discussion.

00:50:09.400 --> 00:50:13.800
So, you know, three key presses. And so the thing

00:50:13.800 --> 00:50:18.139
is that I don't, sorry, I don't have my terminal

00:50:18.139 --> 00:50:20.400
integrated with my editor. Because like I told

00:50:20.400 --> 00:50:23.260
you, originally I used to use GVM and I switched

00:50:23.260 --> 00:50:26.519
to terminal. So this workflow has actually existed

00:50:26.519 --> 00:50:30.360
since those days. So I used to have my terminal

00:50:30.360 --> 00:50:32.920
separate. So what I have is I have a single key

00:50:32.920 --> 00:50:36.760
press that gets me to my terminal. The terminal

00:50:36.760 --> 00:50:42.860
is connected to my sessions. So when I open a

00:50:42.860 --> 00:50:44.579
session there, the terminal automatically goes

00:50:44.579 --> 00:50:48.300
to the corresponding directory and is ready for

00:50:48.300 --> 00:50:55.159
action. It's not 100 % efficient because it would

00:50:55.159 --> 00:50:57.320
actually be better if I moved it all into KDE

00:50:57.320 --> 00:50:59.639
and used KDE sessions. But I just haven't got

00:50:59.639 --> 00:51:02.500
around to doing that. Yeah, it takes time. It

00:51:02.500 --> 00:51:05.639
took me... quite some time to migrate away from

00:51:05.639 --> 00:51:07.599
tmux because then you have to think about the

00:51:07.599 --> 00:51:10.579
scroll back you know but i love that i can use

00:51:10.579 --> 00:51:12.960
kitty scroll back i'm just opening neovim right

00:51:12.960 --> 00:51:14.980
now with the scroll back i don't have colors

00:51:14.980 --> 00:51:17.960
but justin from the neovim team told me that

00:51:17.960 --> 00:51:21.559
this is something available in within neovim

00:51:21.559 --> 00:51:25.019
0 .12 right so if i do this right now and if

00:51:25.019 --> 00:51:26.920
i bring up the scroll back if i press the letter

00:51:26.920 --> 00:51:30.230
m on my keyboard brings it up right I don't have

00:51:30.230 --> 00:51:32.170
colors at the moment, but I do have numbers.

00:51:32.489 --> 00:51:35.849
And I have the jump plugin here. So if I want

00:51:35.849 --> 00:51:41.050
to jump here, I can do it. So it's awesome. I

00:51:41.050 --> 00:51:44.289
see you're using Cursor Trails as well. Yeah,

00:51:44.329 --> 00:51:49.449
I am using the Trails as well. Cursor Trails

00:51:49.449 --> 00:51:51.949
was actually a contribution, a PR from someone.

00:51:52.670 --> 00:51:54.670
It was not something that was on my radar, but

00:51:54.670 --> 00:51:57.469
I was happy to merge it. It's quite a popular

00:51:57.469 --> 00:52:00.920
feature. yeah it's pretty popular because that's

00:52:00.920 --> 00:52:04.519
something that uh ghosty came up with and everyone's

00:52:04.519 --> 00:52:07.059
like carcer trail so yeah you cannot you cannot

00:52:07.059 --> 00:52:11.440
stay behind yeah well no kitty kitty had because

00:52:11.440 --> 00:52:13.840
she has about a year of the publicity uh -huh

00:52:13.840 --> 00:52:16.500
oh he was the first kitty was it he was the first

00:52:16.500 --> 00:52:19.219
gentleman to have tested shirts uh it was copied

00:52:19.219 --> 00:52:22.599
from neowide uh which is not a terminal yeah

00:52:22.599 --> 00:52:25.400
i've used neovite and i like the carcer trails

00:52:25.400 --> 00:52:28.699
there yeah So the contributor who contributed

00:52:28.699 --> 00:52:33.139
to Kitty copied it from me, right? And Kosti

00:52:33.139 --> 00:52:35.840
implemented it very recently, a few months back.

00:52:36.380 --> 00:52:39.860
Kitty's at it for more than a year. Oh, okay,

00:52:40.000 --> 00:52:43.880
okay. And going back to Alacrity, I think Alacrity

00:52:43.880 --> 00:52:47.760
is intended to be used with Tmux. I don't, I'm

00:52:47.760 --> 00:52:50.179
not sure. Well, or is it intended to be used

00:52:50.179 --> 00:52:52.619
with your window manager? Since you mentioned...

00:52:52.989 --> 00:52:56.969
Yeah, either one works, I guess. The Tmux thing

00:52:56.969 --> 00:52:59.469
never made sense to me. Alacrity's big selling

00:52:59.469 --> 00:53:02.650
point was that it's speed, but then if you run

00:53:02.650 --> 00:53:07.269
10 Tmux inside it, its performance sucks. In

00:53:07.269 --> 00:53:10.269
fact, the end -user performance sucks, so it

00:53:10.269 --> 00:53:14.050
never made any sense to me. I have, in fact,

00:53:14.070 --> 00:53:17.670
on the Kitty benchmark page, I have a benchmark

00:53:17.670 --> 00:53:21.480
where it's using a benchmark tool. And so Alacrity

00:53:21.480 --> 00:53:23.340
does well, but then when you do Alacrity plus

00:53:23.340 --> 00:53:27.780
Tmux, the performance halves. It halves? Yes.

00:53:28.280 --> 00:53:31.420
I mean, also, it just doesn't make sense. But

00:53:31.420 --> 00:53:33.900
usually with a window manager, fine, yes, that's

00:53:33.900 --> 00:53:37.659
good. But with Tmux, the performance thing, I

00:53:37.659 --> 00:53:39.219
mean, if you care about performance, you don't

00:53:39.219 --> 00:53:43.420
want to be using Tmux. Okay, okay. Yeah, we talked

00:53:43.420 --> 00:53:45.539
about Tmux a lot in the previous video. So if

00:53:45.539 --> 00:53:48.320
someone has questions about Tmux, go and watch

00:53:48.320 --> 00:53:51.780
that interview. Kovic shares all his thoughts

00:53:51.780 --> 00:53:55.179
on Tmux, right? Not your favorite tool. Yeah,

00:53:55.260 --> 00:53:57.820
I don't want to sound too negative. I mean, Tmux

00:53:57.820 --> 00:54:01.059
has its users, especially for people who like

00:54:01.059 --> 00:54:03.480
to use it on remote servers or whatever. It makes

00:54:03.480 --> 00:54:07.860
sense. It's a useful tool. But it has certain

00:54:07.860 --> 00:54:11.280
downsides that I think outweigh its usefulness.

00:54:11.880 --> 00:54:15.659
But anyway, that's my opinion. Okay. And I was

00:54:15.659 --> 00:54:18.570
going to ask you about that as well, right? The

00:54:18.570 --> 00:54:22.010
only, well, I was using TMAX locally, right,

00:54:22.090 --> 00:54:24.130
to manage my sessions locally, but it doesn't

00:54:24.130 --> 00:54:28.929
make much sense, right? How would you manage

00:54:28.929 --> 00:54:31.489
that situation then in which you need to open

00:54:31.489 --> 00:54:35.489
something that stays, you know, active the whole

00:54:35.489 --> 00:54:38.369
time on the remote server and that you can attach

00:54:38.369 --> 00:54:41.429
to it? Is that something that you do or you don't

00:54:41.429 --> 00:54:45.150
do at all? Yes. so for example i mentioned using

00:54:45.150 --> 00:54:47.789
computation in my grad in my in my grad work

00:54:47.789 --> 00:54:50.269
so part of that i had to log into a powerful

00:54:50.269 --> 00:54:55.250
uh supercomputer and run jobs and uh those would

00:54:55.250 --> 00:55:00.150
take days to run so you cannot depend on sh for

00:55:00.150 --> 00:55:03.889
them right yeah so you know i used to run them

00:55:03.889 --> 00:55:08.269
in screen okay back then so i didn't use it for

00:55:08.269 --> 00:55:11.210
multiplexing i just used it for persisting that

00:55:12.019 --> 00:55:16.599
so that I could disconnect and reconnect whenever

00:55:16.599 --> 00:55:19.860
I needed to. And this was not a TUI that I was

00:55:19.860 --> 00:55:22.000
running inside. It was just a simple program

00:55:22.000 --> 00:55:26.019
that printed out some stuff. It didn't matter

00:55:26.019 --> 00:55:28.820
if the screen screwed up the terminal emulation

00:55:28.820 --> 00:55:33.119
or whatever. It didn't matter. And actually,

00:55:33.280 --> 00:55:39.369
nowadays, there are a lot of other options. You

00:55:39.369 --> 00:55:45.190
can use disown in a shell, and that mostly works

00:55:45.190 --> 00:55:47.389
as long as you don't lose your connection. And

00:55:47.389 --> 00:55:48.989
nowadays connections are pretty stable. I mean,

00:55:49.050 --> 00:55:51.989
back then it was still an issue that connections

00:55:51.989 --> 00:55:56.150
used to drop, but nowadays, at least for most

00:55:56.150 --> 00:56:01.489
people, that's not really an issue anymore. So

00:56:01.489 --> 00:56:05.679
like Qt, for example, has an SSH kitchen. that

00:56:05.679 --> 00:56:09.199
uses SSH control masters and automatically multiplexes

00:56:09.199 --> 00:56:12.260
multiple windows into one SSH connection. So

00:56:12.260 --> 00:56:14.340
yes, if you lose your connection, then all those

00:56:14.340 --> 00:56:16.539
windows are screwed. You lose everything. But

00:56:16.539 --> 00:56:19.699
at least for me, personally, that doesn't happen

00:56:19.699 --> 00:56:23.119
anymore. It's very rare that I lose connection

00:56:23.119 --> 00:56:28.300
to my servers. So it's not an issue that I face

00:56:28.300 --> 00:56:32.380
myself. That said, it is on my long -term to

00:56:32.380 --> 00:56:35.880
-do list to write a tool that, would do remote

00:56:35.880 --> 00:56:40.920
session persistence properly, not like Tmux or

00:56:40.920 --> 00:56:43.920
Screen, not by emulating a terminal. Instead,

00:56:44.059 --> 00:56:45.860
it would be a server that talks to your terminal

00:56:45.860 --> 00:56:50.139
emulator and just, you know, it'd be as thin

00:56:50.139 --> 00:56:52.719
and transparent a wrapper as possible. It'll

00:56:52.719 --> 00:56:55.079
actually use a single pseudo -terminal per job

00:56:55.079 --> 00:56:58.599
rather than trying to have multiple windows on

00:56:58.599 --> 00:57:01.809
one pseudo -terminal device. So that... That

00:57:01.809 --> 00:57:05.250
negates most of the disadvantages of general

00:57:05.250 --> 00:57:08.250
multiplexers. So that's on my to -do list to

00:57:08.250 --> 00:57:12.550
do. But yeah, as you can imagine, a very long

00:57:12.550 --> 00:57:15.590
to -do list. Yeah. So you would start a process

00:57:15.590 --> 00:57:18.610
on the server, like KDE, whatever, KDE Master,

00:57:18.750 --> 00:57:20.510
whatever, you started there, and then you just

00:57:20.510 --> 00:57:23.150
attach to that process from your local machine.

00:57:23.369 --> 00:57:27.269
Yes, yes, yes. You can attach over SSH or over

00:57:27.269 --> 00:57:32.480
TCP or whatever. It doesn't matter. So like Giddy,

00:57:32.480 --> 00:57:36.059
for example, has a remote control facility, which

00:57:36.059 --> 00:57:40.940
you can do using Unix sockets, TCP networking,

00:57:41.360 --> 00:57:46.110
even pipes. And so it'd be something similar.

00:57:46.489 --> 00:57:50.949
The remote end would start a server that would

00:57:50.949 --> 00:57:53.210
listen on whatever you configured it to listen

00:57:53.210 --> 00:57:55.530
on. And then you connect to that however you

00:57:55.530 --> 00:57:57.369
like. You can connect it over SSH, you can connect

00:57:57.369 --> 00:58:02.809
over plain TCP, HTTP, whatever. The transfer

00:58:02.809 --> 00:58:10.989
is not important to be flexible. And then if

00:58:10.989 --> 00:58:12.949
you drop the connection drops, you just reconnect.

00:58:13.760 --> 00:58:16.079
And it will maintain the state. But the important

00:58:16.079 --> 00:58:19.440
distinction from Tmux and Friends is that it

00:58:19.440 --> 00:58:22.019
won't multiplex. It will leave the multiplexing

00:58:22.019 --> 00:58:25.059
to the terminal, which can do it properly. And

00:58:25.059 --> 00:58:29.059
it will just preserve state. So each new program,

00:58:29.139 --> 00:58:32.400
each new window that you create would have its

00:58:32.400 --> 00:58:35.340
own TDY device. And it would correspond to a

00:58:35.340 --> 00:58:37.820
local TDY device and data would be forwarded

00:58:37.820 --> 00:58:39.840
between them. But there would be no translation

00:58:39.840 --> 00:58:42.780
in the middle. I talked about it in my previous

00:58:42.780 --> 00:58:47.739
interview about how the problem with multiplexers

00:58:47.739 --> 00:58:50.519
is they have to translate the STF codes to make

00:58:50.519 --> 00:58:54.840
the split screen and so on work. So there won't

00:58:54.840 --> 00:59:00.960
be any of that. So that greatly mitigates the

00:59:00.960 --> 00:59:04.900
main disadvantage of terminal -based multiplexers.

00:59:05.420 --> 00:59:07.960
Yeah, because what you care about is that the

00:59:07.960 --> 00:59:10.280
process remains active on the server. It doesn't

00:59:10.280 --> 00:59:12.260
matter if you disconnect or not, right? What

00:59:12.260 --> 00:59:14.280
you care about is that whatever you were doing

00:59:14.280 --> 00:59:16.539
there keeps running in the background and you

00:59:16.539 --> 00:59:18.519
can attach to it whenever you want, right? It

00:59:18.519 --> 00:59:20.280
doesn't matter if you disconnect from it or not.

00:59:20.719 --> 00:59:24.019
Okay, okay. So there's a program called Detach.

00:59:24.340 --> 00:59:26.340
I think it's available on GitHub. You can use

00:59:26.340 --> 00:59:29.280
that for something like this. There's SHFool,

00:59:29.380 --> 00:59:32.519
which is a multiplexer that, again, tries to

00:59:32.519 --> 00:59:35.239
be as thin and layer as possible. not doing actual

00:59:35.239 --> 00:59:38.300
multiplexing just for suspense that kind of thing

00:59:38.300 --> 00:59:42.039
so there are solutions like this um but i would

00:59:42.039 --> 00:59:44.460
like if i if i do this i would i would sort of

00:59:44.460 --> 00:59:46.659
leverage the facilities that kitty gives you

00:59:46.659 --> 00:59:49.360
so you get multiplexing and all the powerful

00:59:49.360 --> 00:59:52.780
features but in a robust and you know well designed

00:59:52.780 --> 00:59:57.389
way okay okay now Moving to other topics, your

00:59:57.389 --> 01:00:00.630
IDE, why did you choose NeoVim and why didn't

01:00:00.630 --> 01:00:03.170
you go with Emacs? Because it seems that Emacs

01:00:03.170 --> 01:00:04.949
has a lot of the things that you want, you know,

01:00:04.969 --> 01:00:09.550
single environment that does everything. So the

01:00:09.550 --> 01:00:13.469
main reason is that I have very big hands. I'm

01:00:13.469 --> 01:00:16.389
quite tall. I'm six feet four. I have very big

01:00:16.389 --> 01:00:19.489
hands. They don't fit on most keyboards. And

01:00:19.489 --> 01:00:22.989
so, you know, the shortcuts with lots of modifiers.

01:00:23.739 --> 01:00:26.239
is difficult and painful for me. The Emacs pinky,

01:00:26.400 --> 01:00:29.480
they say it's like broken, right? Yes. So for

01:00:29.480 --> 01:00:31.420
me, it's a particularly bad problem because of

01:00:31.420 --> 01:00:34.159
my large hands. I mean, I could, of course, get

01:00:34.159 --> 01:00:36.400
a large keyboard or whatever, but back in those

01:00:36.400 --> 01:00:38.420
days when I was a kid and a student and all,

01:00:38.440 --> 01:00:41.420
I couldn't afford such things. And so I had to

01:00:41.420 --> 01:00:44.019
work with whatever I had. And so to make the

01:00:44.019 --> 01:00:48.539
most of it, I thought model editing was more

01:00:48.539 --> 01:00:51.539
suited to me. So that was the main reason. I

01:00:51.539 --> 01:00:56.000
mean, I'm not a... I'm not a soldier in the EMAX

01:00:56.000 --> 01:00:59.659
wars. I think they're both fine editors. I wish

01:00:59.659 --> 01:01:03.039
them both as much success as possible. For me,

01:01:03.079 --> 01:01:06.579
it just came down to big hands. Okay. Okay. So

01:01:06.579 --> 01:01:10.179
you have any thoughts on EMAX then? I love EMAX,

01:01:10.179 --> 01:01:14.260
actually. I actually started out with EMAX, but

01:01:14.260 --> 01:01:18.659
I found the big hand problem. Troublesome, so

01:01:18.659 --> 01:01:21.039
I switched to Win at some point. This is very

01:01:21.039 --> 01:01:23.619
long ago, it's more than 20 plus years ago, so

01:01:23.619 --> 01:01:24.940
I don't really remember the details anymore.

01:01:25.519 --> 01:01:29.940
Since then, I spy on Remax once in a while, mostly

01:01:29.940 --> 01:01:33.679
to debug issues with Kitty. But yeah, other than

01:01:33.679 --> 01:01:35.739
that, I'm not very familiar with Remax these

01:01:35.739 --> 01:01:40.820
days. Okay, now, what about handheld? Because

01:01:40.820 --> 01:01:43.550
you mentioned that you used your... laptop keyboard

01:01:43.550 --> 01:01:45.730
and your hands are big aren't they like this

01:01:45.730 --> 01:01:47.710
the whole time have you ever thought about split

01:01:47.710 --> 01:01:51.969
keyboards um i actually bought myself a split

01:01:51.969 --> 01:01:54.269
keyboard and started using it and taught myself

01:01:54.269 --> 01:01:57.230
to touch type and stuff but nowadays what i do

01:01:57.230 --> 01:02:00.750
is uh i have this chair this is a massage chair

01:02:00.750 --> 01:02:03.170
actually but i don't care about the massage part

01:02:03.170 --> 01:02:05.949
so much it's the good part is it declines and

01:02:05.949 --> 01:02:10.909
then i have a lap desk a very simple lab desk

01:02:10.909 --> 01:02:15.429
and i put my laptop on that and my hands my arms

01:02:15.429 --> 01:02:19.849
my elbows rest on the on the on the armrests

01:02:19.849 --> 01:02:22.210
of the chair okay and i'm sort of reclined i'm

01:02:22.210 --> 01:02:26.909
reclined at about 60 degrees and i type my hands

01:02:26.909 --> 01:02:31.690
i don't know if i see them but they're sort of

01:02:31.690 --> 01:02:35.909
straight but the important part in in carpenter

01:02:35.909 --> 01:02:38.309
and you know rsi type things is to keep your

01:02:38.309 --> 01:02:40.730
wrist straight uh -huh there shouldn't be there

01:02:40.730 --> 01:02:42.730
shouldn't be a bend they're they're bent yeah

01:02:42.730 --> 01:02:45.570
because i used to keep mine like this bent yes

01:02:45.570 --> 01:02:47.989
yes they should be straight so because of the

01:02:47.989 --> 01:02:51.230
sort of way i arrange my entire body uh even

01:02:51.230 --> 01:02:53.110
with a small laptop keyboard i can mostly keep

01:02:53.110 --> 01:02:56.510
my hands straight so since i've been doing this

01:02:56.510 --> 01:03:01.869
i haven't had any issues with a wrist or uh elbow

01:03:02.500 --> 01:03:04.559
problems. I actually had, there was a time I

01:03:04.559 --> 01:03:06.860
used to have problems with my shoulders and my

01:03:06.860 --> 01:03:12.400
wrists, elbows, but I managed to fix that by

01:03:12.400 --> 01:03:15.320
sort of changing how I keep my whole body rather

01:03:15.320 --> 01:03:18.699
than just my keyboard. And so the good part is

01:03:18.699 --> 01:03:20.000
now I don't have to, I don't have to use any

01:03:20.000 --> 01:03:21.599
fancy keyboard. I can use, you know, a normal

01:03:21.599 --> 01:03:25.019
keyboard. And, you know, if I, if I go traveling

01:03:25.019 --> 01:03:27.300
and I take my laptop and, you know, I'm used

01:03:27.300 --> 01:03:31.239
to the keyboard, it's not a problem. It's, yeah.

01:03:32.039 --> 01:03:34.699
And what did you think about split keyboards?

01:03:34.860 --> 01:03:37.880
Did you hate the experience? No, I actually liked

01:03:37.880 --> 01:03:40.639
it. I liked it enough that it motivated me to

01:03:40.639 --> 01:03:44.760
learn to touch type. So I never bothered up to

01:03:44.760 --> 01:03:47.739
that point. I type fairly fast, but I do look

01:03:47.739 --> 01:03:51.940
at the keyboard sometimes. So I used to keep

01:03:51.940 --> 01:03:54.639
a touch keyboard in my lap, but I couldn't see

01:03:54.639 --> 01:03:56.880
it. And I would stare at the screen, and then

01:03:56.880 --> 01:03:59.380
I would, you know, I taught myself to touch type

01:03:59.380 --> 01:04:02.559
with it and stuff. It was good. I mean, it's

01:04:02.559 --> 01:04:05.440
something I recommend to people who are having

01:04:05.440 --> 01:04:07.719
issues, if they don't want to be eligible to

01:04:07.719 --> 01:04:12.300
work in a declining chair. Yeah, we're all going

01:04:12.300 --> 01:04:14.579
that route. We're all finding ways because I'm

01:04:14.579 --> 01:04:16.739
in my chair here. I'm not comfortable. I bought

01:04:16.739 --> 01:04:19.139
one of those standing desks. I never used it.

01:04:19.159 --> 01:04:21.820
I used it like five times. Now it has never gone

01:04:21.820 --> 01:04:24.260
up. Now that didn't work. So I think that's the

01:04:24.260 --> 01:04:26.800
OG way. That's the next step. I'm going to talk

01:04:26.800 --> 01:04:29.079
to my wife and she's going to be like, but now

01:04:29.079 --> 01:04:33.159
what? She's not going to be happy about it. Yeah,

01:04:33.179 --> 01:04:36.699
this was, I actually had to convince my wife

01:04:36.699 --> 01:04:39.860
to get me this as a birthday present. Do your

01:04:39.860 --> 01:04:42.840
purchases have to go through the approval of

01:04:42.840 --> 01:04:46.760
the boss in the house? If you want to buy a new

01:04:46.760 --> 01:04:49.920
keyboard, does he have to approve it? No, not

01:04:49.920 --> 01:04:52.440
to that level, but this was a pretty big purchase.

01:04:52.980 --> 01:04:56.019
In fact, the chair was so large that it didn't

01:04:56.019 --> 01:04:58.679
fit through the door of my room. We had to disassemble

01:04:58.679 --> 01:05:02.300
it and bring it in and then reassemble. So it's

01:05:02.300 --> 01:05:06.019
like a throne. That kind of thing, yes, the boss

01:05:06.019 --> 01:05:09.429
has to sign off. It's like a throne. It's not

01:05:09.429 --> 01:05:11.489
a chair, right? So you're like the king of the

01:05:11.489 --> 01:05:15.869
house there. Okay. It has a built -in massage

01:05:15.869 --> 01:05:17.969
function. So, you know, I get a massage every

01:05:17.969 --> 01:05:21.090
day. So that's nice. Oh, that's cool. You mentioned

01:05:21.090 --> 01:05:23.809
the other day that you swim, right? Because in

01:05:23.809 --> 01:05:25.969
the previous call that we had, you mentioned

01:05:25.969 --> 01:05:28.690
that you came from swimming. Do you take swimming?

01:05:28.750 --> 01:05:32.789
Is that your sport or? So I do two things. Swimming

01:05:32.789 --> 01:05:35.969
and stair climbing. So I swim three days a week.

01:05:36.090 --> 01:05:39.199
Stair climbing, okay. Stair climbing. So I have

01:05:39.199 --> 01:05:42.179
this big, I have this big backpack, 12 kg backpack.

01:05:42.460 --> 01:05:47.519
I strap that on and I climb 185 floors. So I

01:05:47.519 --> 01:05:49.159
live in a multi -story building. So, you know,

01:05:49.179 --> 01:05:53.179
I just climb multiple rounds of it. So those

01:05:53.179 --> 01:05:55.380
are the two things I do. So I'm, I'm a big, I'm

01:05:55.380 --> 01:05:57.159
a big trekker. I love to trek in the mountains,

01:05:57.239 --> 01:06:01.000
the Himalayas, which is, you know, north of India.

01:06:02.079 --> 01:06:04.599
So every year, my entire family, we go for like

01:06:04.599 --> 01:06:07.159
a three week vacation in the Himalayas. go for

01:06:07.159 --> 01:06:09.519
long treks and stuff. So the stair climbing is

01:06:09.519 --> 01:06:12.559
kind of a way to stay in shape. You know, now

01:06:12.559 --> 01:06:15.059
my kids are growing up and I'm growing old, so

01:06:15.059 --> 01:06:18.960
I have to keep up with that. So, you know, I

01:06:18.960 --> 01:06:21.860
do a lot of hard work to make sure I can keep

01:06:21.860 --> 01:06:24.559
up with that. Oh, okay. And what about your knees?

01:06:24.760 --> 01:06:26.780
Don't you get scared about your knees doing the

01:06:26.780 --> 01:06:30.519
stair climbing and all that stuff? So I do a

01:06:30.519 --> 01:06:32.860
bunch of warm -ups and exercises and I wear,

01:06:32.960 --> 01:06:35.739
you know, those kneecap things that they must

01:06:35.739 --> 01:06:38.599
take. supports for your knees so actually as

01:06:38.599 --> 01:06:41.599
a young man when i used to play badminton i dislocated

01:06:41.599 --> 01:06:44.860
my kneecap oh and so as a result as a result

01:06:44.860 --> 01:06:46.619
that week is although me has always been the

01:06:46.619 --> 01:06:49.619
week but i take good care of it i do a lot of

01:06:49.619 --> 01:06:52.039
exercises and stuff and the way i look at it

01:06:52.039 --> 01:06:55.760
is you know you you have one life you might as

01:06:55.760 --> 01:06:58.320
well use your knees for something you enjoy while

01:06:58.320 --> 01:07:02.320
you can okay and what do you swim you swim like

01:07:02.320 --> 01:07:04.780
in a private pool or something you take out so

01:07:04.780 --> 01:07:07.380
my my i live in a multi -story so there's a it

01:07:07.380 --> 01:07:09.880
has an attached gym and swimming pool and stuff

01:07:09.880 --> 01:07:16.559
oh okay nice yeah okay okay now you're into caliber

01:07:16.559 --> 01:07:19.500
right so i i assume you like to take notes i'm

01:07:19.500 --> 01:07:22.059
not sure but what tool do you use to take notes

01:07:22.059 --> 01:07:26.710
if you you so i don't take notes So I told you

01:07:26.710 --> 01:07:29.389
my philosophy is very much finish everything

01:07:29.389 --> 01:07:32.469
as soon as you can. So I take something and then

01:07:32.469 --> 01:07:35.710
I work on it, focus, concentrate, finish it,

01:07:35.750 --> 01:07:39.789
and then forget about it. So I write whatever

01:07:39.789 --> 01:07:43.590
notes in line as documentation. So I don't know

01:07:43.590 --> 01:07:45.530
if you've looked at Saykiri's documentation,

01:07:45.789 --> 01:07:48.730
it's quite comprehensive. So I'm making it a

01:07:48.730 --> 01:07:51.170
habit to always document everything I do in a

01:07:51.170 --> 01:07:52.670
way that's accessible to other people as well.

01:07:54.480 --> 01:07:57.139
And so that serves as my notes. I look at my

01:07:57.139 --> 01:07:59.099
own documentation in the future if I need to

01:07:59.099 --> 01:08:00.920
understand something. Similarly in the source

01:08:00.920 --> 01:08:04.480
code where I feel that there is something that's

01:08:04.480 --> 01:08:06.400
complicated or I want to document it right there.

01:08:07.199 --> 01:08:13.380
And that serves as my notes. I also use emails

01:08:13.380 --> 01:08:16.680
as a to -do list. So I have a very sophisticated...

01:08:16.680 --> 01:08:20.079
I told you about that funny widget system of

01:08:20.079 --> 01:08:23.130
KDE where I wrote my first widget. to track the

01:08:23.130 --> 01:08:24.970
email so i so you know ever since those days

01:08:24.970 --> 01:08:27.510
i have a very sophisticated email system you

01:08:27.510 --> 01:08:30.970
know everything gets seed scripted and you know

01:08:30.970 --> 01:08:33.350
put into folders and stuff and so i use that

01:08:33.350 --> 01:08:38.189
as a category list okay okay awesome now talking

01:08:38.189 --> 01:08:41.569
about operating systems what's your history with

01:08:41.569 --> 01:08:44.069
linux why did you decide to go with linux were

01:08:44.069 --> 01:08:47.850
you on windows before and uh yeah just about

01:08:47.850 --> 01:08:50.909
your operating system history Like I said, I

01:08:50.909 --> 01:08:53.649
started with a ZX Factory. It ran basically,

01:08:53.930 --> 01:08:58.970
it had no real OS. Okay. After that, my first

01:08:58.970 --> 01:09:03.510
normal winter laptop, I think my dad got a laptop

01:09:03.510 --> 01:09:08.930
from work. So that was my first proper laptop.

01:09:09.649 --> 01:09:12.130
And I remember playing Prince of Persia on it.

01:09:14.140 --> 01:09:18.479
As for Linux, the reason I installed it is because

01:09:18.479 --> 01:09:20.579
I'm a tinkerer. I love to tinker with things,

01:09:20.659 --> 01:09:24.439
both physical things and software. And so, you

01:09:24.439 --> 01:09:27.199
know, Linux just, you know, it's meant for tinkerers.

01:09:27.899 --> 01:09:33.819
So I installed, I think it was a Red Hat 6. I

01:09:33.819 --> 01:09:36.880
think it was the first Linux I installed ever.

01:09:37.420 --> 01:09:42.319
I think I used the KDE desktop. Again, I preferred

01:09:42.319 --> 01:09:45.300
KDE to GNOME because, again, KDE is more tinker

01:09:45.300 --> 01:09:50.960
-friendly than GNOME. And so I remember in those

01:09:50.960 --> 01:09:54.000
days, you know, there was no so much internet.

01:09:54.180 --> 01:09:55.739
I mean, I think you had to connect to the internet

01:09:55.739 --> 01:09:59.060
through a BBS, a dial -up service. And so you

01:09:59.060 --> 01:10:01.460
couldn't download big files and stuff. And I

01:10:01.460 --> 01:10:06.520
remember I got a Linux Red Hat 6 CD from... computing

01:10:06.520 --> 01:10:09.180
magazine. I'm not sure, I don't remember. It's

01:10:09.180 --> 01:10:11.079
something like on the CD, and I use that to install

01:10:11.079 --> 01:10:15.479
Red Hat 6. Initially, I used to dual boot with

01:10:15.479 --> 01:10:21.020
Windows, mostly for games. But then, pretty soon,

01:10:21.079 --> 01:10:25.760
I switched to Linux only. I think from Red Hat,

01:10:25.840 --> 01:10:28.739
I moved to Gen 2, again, because of the tinkering

01:10:28.739 --> 01:10:33.500
thing. And then at some point, about 20 years

01:10:33.500 --> 01:10:36.229
ago, I think, I switched to Arch. I've been with

01:10:36.229 --> 01:10:41.289
Arch ever since then. Mostly because the compile

01:10:41.289 --> 01:10:43.630
times in Gen 2 were getting too annoying. So

01:10:43.630 --> 01:10:48.170
I switched to Arch. I actually run Arch on all

01:10:48.170 --> 01:10:51.069
my servers as well. Oh, really? So you're not

01:10:51.069 --> 01:10:53.310
scared of anything? You're not scared of anything?

01:10:53.550 --> 01:10:58.729
No, not at all. I don't know, maybe it's hubris,

01:10:58.850 --> 01:11:01.750
but I feel that any software problem, I can solve

01:11:01.750 --> 01:11:07.079
it. Modesty apart, right? Modesty apart. Yeah,

01:11:07.079 --> 01:11:08.560
no, I mean, I just have that attitude. I'm not

01:11:08.560 --> 01:11:11.859
scared of having a software problem. I've struggled

01:11:11.859 --> 01:11:14.920
with problems many times, but in the end, I'm

01:11:14.920 --> 01:11:19.119
able to solve them for sure. Okay. Yeah. So Arch

01:11:19.119 --> 01:11:23.100
is your main driver then, right? Yes, yes. You

01:11:23.100 --> 01:11:26.079
look more stable. You look more like a Debian

01:11:26.079 --> 01:11:31.260
person. What are your thoughts on Debian? I've

01:11:31.260 --> 01:11:35.920
never used Debian. But I will say that it is

01:11:35.920 --> 01:11:38.979
extremely annoying as a software maintainer because

01:11:38.979 --> 01:11:43.100
it has extremely out -of -date software. So people

01:11:43.100 --> 01:11:47.020
will try to run your up -to -date software on

01:11:47.020 --> 01:11:49.500
a system that's really old. And then there are

01:11:49.500 --> 01:11:52.159
also issues with that that you have to deal with.

01:11:53.220 --> 01:11:55.720
But other than that, I don't use it, so I don't

01:11:55.720 --> 01:12:00.279
really have much to say about it. People seem

01:12:00.279 --> 01:12:03.579
to be happy with it. More power to them. Okay.

01:12:03.579 --> 01:12:07.479
And you mentioned you run Arch in all your servers.

01:12:07.680 --> 01:12:10.300
No GUI, I guess, just headless servers, right?

01:12:10.760 --> 01:12:14.399
No, absolutely no GUIs. Okay. Have you had any

01:12:14.399 --> 01:12:18.220
issues with Arch there? None. No? I don't have

01:12:18.220 --> 01:12:21.159
issues with Arch. If there is an issue with some

01:12:21.159 --> 01:12:24.520
software, I just roll it back or I fix it myself.

01:12:25.319 --> 01:12:29.260
Okay. And so what do you think people have issues

01:12:29.260 --> 01:12:31.819
with Arch? What would you say is the main issue?

01:12:31.939 --> 01:12:34.020
And how do you roll back? Is that something you

01:12:34.020 --> 01:12:36.859
do at the operating system level, like with snaps?

01:12:37.100 --> 01:12:39.140
I'm not sure how you guys do it, but how do you

01:12:39.140 --> 01:12:44.260
roll back? I'm an Arch user from way before snapshot

01:12:44.260 --> 01:12:46.800
file systems existed. I do it the old -fashioned

01:12:46.800 --> 01:12:49.539
way. I go look in the Pac -Man cache for the

01:12:49.539 --> 01:12:51.699
old version of the package and manually install

01:12:51.699 --> 01:12:54.819
it to hear what... whatever the issue is. Mostly,

01:12:54.939 --> 01:12:56.539
if there's an issue, you can fix it yourself

01:12:56.539 --> 01:13:00.079
or I can fix it myself. But very rarely, I need

01:13:00.079 --> 01:13:04.600
to revert and I do that. I just manually revert

01:13:04.600 --> 01:13:06.460
that particular package that's causing a problem

01:13:06.460 --> 01:13:10.439
and put a note in the Pac -Man conf file that

01:13:10.439 --> 01:13:14.340
this thing should not be upgraded. I use the

01:13:14.340 --> 01:13:16.619
word term slot, which is from Gen 2, but the

01:13:16.619 --> 01:13:20.079
article isn't. I masked it or whatever it's called.

01:13:21.699 --> 01:13:24.779
And then, you know, That's fine. It's what's

01:13:24.779 --> 01:13:28.239
great for me. I run, my servers have like multi

01:13:28.239 --> 01:13:32.539
-year uptime. Okay. My laptop has typically a

01:13:32.539 --> 01:13:35.619
month or two of uptime. It ends up getting rebooted

01:13:35.619 --> 01:13:37.600
because I take it somewhere and switch it off

01:13:37.600 --> 01:13:43.399
for one hour. Okay. So, like you said, I seem

01:13:43.399 --> 01:13:47.079
stable. So, my computing experience is very stable.

01:13:47.859 --> 01:13:51.090
Okay. I stick with Arch because it works. It's

01:13:51.090 --> 01:13:53.109
stable for me. I'm not saying it's for everybody,

01:13:53.250 --> 01:13:56.989
but at least for me, it's very insane. Okay.

01:13:57.130 --> 01:13:59.390
And have you thought about this other one out

01:13:59.390 --> 01:14:04.050
there? OS? Yeah, it's an operating system, Nix,

01:14:04.069 --> 01:14:06.149
that everyone talks about. You should move to

01:14:06.149 --> 01:14:08.369
Nix, Nix, Nix, Nix, Nix. Have you heard about

01:14:08.369 --> 01:14:10.750
it? Do you have any thoughts? So I'm probably

01:14:10.750 --> 01:14:15.270
going to get blamed for this, but I find Nix

01:14:15.270 --> 01:14:20.210
OS... is an unnecessary complication. It's like

01:14:20.210 --> 01:14:23.329
a whole extra layer on top of the base system

01:14:23.329 --> 01:14:26.029
that gives you some good things. It gives you

01:14:26.029 --> 01:14:30.329
reproducibility and the original back and stuff

01:14:30.329 --> 01:14:33.869
like that. And that's great. But I don't think

01:14:33.869 --> 01:14:36.270
it's worth the complication. So again, this is

01:14:36.270 --> 01:14:39.069
a personal thing. I'm not saying this is true

01:14:39.069 --> 01:14:42.430
for anybody else, but I find that Linux by itself

01:14:42.430 --> 01:14:44.829
is pretty easy to maintain and to keep functional.

01:14:46.079 --> 01:14:49.039
given that you don't really need, I don't really

01:14:49.039 --> 01:14:52.539
need what NixOS gives you. And so I find that

01:14:52.539 --> 01:14:55.539
the extra complication from it is not worth the

01:14:55.539 --> 01:15:00.420
benefit for me. As a single user, right? If you're

01:15:00.420 --> 01:15:02.960
a user that maintains, I don't use Nix and I'm

01:15:02.960 --> 01:15:05.279
not planning on using Nix, but I would say that

01:15:05.279 --> 01:15:07.659
if you're maintaining, I don't know, 200 computers

01:15:07.659 --> 01:15:10.789
and you need to clone them, you know. all at

01:15:10.789 --> 01:15:13.229
once, probably could be useful. But other than

01:15:13.229 --> 01:15:15.130
that, and you're a single computer using Nix,

01:15:15.270 --> 01:15:18.850
does it make a lot of sense? No, to me, it doesn't.

01:15:19.010 --> 01:15:22.350
So I actually was the sysadmin for the particle

01:15:22.350 --> 01:15:25.029
theory group at Caltech. So I used to maintain

01:15:25.029 --> 01:15:27.850
about 50 desktops and a couple of supercomputers.

01:15:29.710 --> 01:15:32.430
And I think back then, there was obviously no

01:15:32.430 --> 01:15:35.449
Nix. As far as I remember, we used to use Red

01:15:35.449 --> 01:15:41.149
Hat and I used to script that. get the system

01:15:41.149 --> 01:15:43.850
to the state I wanted it in. So, you know, if

01:15:43.850 --> 01:15:46.130
a computer was terminally broken, I would just

01:15:46.130 --> 01:15:48.449
take off the user data from the home partition

01:15:48.449 --> 01:15:50.970
and wipe it and reinstall it with my script and

01:15:50.970 --> 01:15:56.310
put back the data. A bash script. I think it

01:15:56.310 --> 01:15:57.890
was a Python script. I haven't put it under now,

01:15:57.909 --> 01:16:03.050
actually. This is long, long time ago. But that

01:16:03.050 --> 01:16:05.970
was my experience with running a fleet of computers,

01:16:06.289 --> 01:16:10.970
a small fleet, 50 computers. But, Yeah, I mean,

01:16:10.970 --> 01:16:13.609
I found even there that that was enough. Most

01:16:13.609 --> 01:16:16.090
of these computers were used by the faculty and

01:16:16.090 --> 01:16:18.750
students. And they didn't really screw up so

01:16:18.750 --> 01:16:22.069
much. I didn't give them root access, so... They

01:16:22.069 --> 01:16:26.029
couldn't do much. Yeah, yeah. And these were

01:16:26.029 --> 01:16:28.149
physicists. They weren't computer geeks. They

01:16:28.149 --> 01:16:30.130
didn't want to keep installing software and trying

01:16:30.130 --> 01:16:32.270
new things and shit like that. They just wanted

01:16:32.270 --> 01:16:37.130
a stable system that worked well. It worked out

01:16:37.130 --> 01:16:41.220
fine. Okay, okay. What are your thoughts on macOS?

01:16:41.859 --> 01:16:44.819
I noticed that you use macOS. How do you run

01:16:44.819 --> 01:16:46.939
macOS, by the way? Because in the last time that

01:16:46.939 --> 01:16:49.079
you shared your screen, I saw that you were running

01:16:49.079 --> 01:16:52.739
macOS. How do you run it? I actually have an

01:16:52.739 --> 01:16:56.899
Airbox. I need to have both Windows and macOS

01:16:56.899 --> 01:17:00.460
computers for Calibre, actually, because Calibre

01:17:00.460 --> 01:17:03.979
deals with devices that connect via USB. So I

01:17:03.979 --> 01:17:05.899
need to have actual computers to test things

01:17:05.899 --> 01:17:09.479
on. Okay. So I have those. But in addition, I

01:17:09.479 --> 01:17:16.180
run both macOS and Windows in QMU VMs. Oh. So

01:17:16.180 --> 01:17:20.520
both Calibre and Qt are actually built via operating

01:17:20.520 --> 01:17:24.199
systems in QMU VMs that run on a server somewhere

01:17:24.199 --> 01:17:28.359
in the cloud. So it's kind of like a CI service.

01:17:28.539 --> 01:17:30.479
But again, this thing existed a modern decade

01:17:30.479 --> 01:17:33.979
before CI services existed. So I've been doing

01:17:33.979 --> 01:17:37.569
that since then. It works for me, so I keep doing

01:17:37.569 --> 01:17:39.989
it. Because I run macOS as a virtual machine

01:17:39.989 --> 01:17:43.229
in Proxmox, but there's a limitation in macOS

01:17:43.229 --> 01:17:47.109
with the 7 megabytes of VRAM, and it feels really

01:17:47.109 --> 01:17:49.989
slow. Have you encountered that issue on macOS?

01:17:50.050 --> 01:17:54.069
I don't use it as a GUI. I use it headless. Oh,

01:17:54.109 --> 01:17:57.149
the macOS just headless? No, the VMs are just

01:17:57.149 --> 01:18:00.050
headless. The actual MacBook Air that I have,

01:18:00.130 --> 01:18:05.659
that's where I test the GUI. So for me, the QEMU

01:18:05.659 --> 01:18:07.840
VMs are all headless. Both the Windows and the

01:18:07.840 --> 01:18:11.260
Mac OS VMs are headless. I SSH into them and

01:18:11.260 --> 01:18:14.380
run my build jobs or test jobs or whatever it

01:18:14.380 --> 01:18:17.300
is. So just in the terminal then? Like the Mac

01:18:17.300 --> 01:18:21.899
OS one, for example. So what... So it runs an

01:18:21.899 --> 01:18:26.699
SSH server. So what I do is I install it in QEMU

01:18:26.699 --> 01:18:29.859
using the GUI. And yes, the performance sucks.

01:18:30.039 --> 01:18:34.090
There's no USB, there's no video, etc. But this

01:18:34.090 --> 01:18:36.289
is for the installation. You don't really need

01:18:36.289 --> 01:18:38.350
performance there. And then once it's installed,

01:18:38.550 --> 01:18:41.529
I set up the SSH server. And then I just log

01:18:41.529 --> 01:18:45.770
out and reboot into it headless. And then I do

01:18:45.770 --> 01:18:50.869
everything from the SSH channel. Oh, okay. And

01:18:50.869 --> 01:18:53.649
what are your thoughts on macOS then? I had never

01:18:53.649 --> 01:18:58.010
used macOS beyond for supporting Calibre and

01:18:58.010 --> 01:19:01.779
KDE. So I'm not really qualified to... comment

01:19:01.779 --> 01:19:04.479
on it. One thing I will say is I don't like the,

01:19:04.600 --> 01:19:06.840
I told you I'm a tinkerer. I like to be able

01:19:06.840 --> 01:19:09.760
to change things. And Apple is kind of a bit

01:19:09.760 --> 01:19:13.460
of a control freak. It doesn't like you to change

01:19:13.460 --> 01:19:16.439
things so much. So that kind of is against my

01:19:16.439 --> 01:19:18.260
personal philosophy. So that's why I never even

01:19:18.260 --> 01:19:21.939
really looked at macros much. It's attractive

01:19:21.939 --> 01:19:25.199
that it's a stable system that has a Unix foundation.

01:19:26.800 --> 01:19:30.529
But again, like I said, for me personally, I

01:19:30.529 --> 01:19:33.770
find Linux to be quite stable. So, you know,

01:19:33.829 --> 01:19:37.609
I've already looked into my class. But if it

01:19:37.609 --> 01:19:40.670
works for you, that's great. I'm very much of

01:19:40.670 --> 01:19:42.630
the philosophy that you should use what works

01:19:42.630 --> 01:19:45.390
for you. I don't like to be prescriptive about

01:19:45.390 --> 01:19:49.609
it. I can tell you what works for me, but everybody's

01:19:49.609 --> 01:19:52.579
different. For video, macOS works for me. But

01:19:52.579 --> 01:19:54.300
I've been thinking about switching to Linux,

01:19:54.439 --> 01:19:56.539
you know, but because if I do these type of stuff,

01:19:56.760 --> 01:20:00.279
videos, I would find a little bit of limitations.

01:20:00.520 --> 01:20:03.039
They're like my phone is my camera right now.

01:20:03.119 --> 01:20:05.600
And it's natively picked up by the computer,

01:20:05.699 --> 01:20:07.659
right? So if I switch to Linux, I would have

01:20:07.659 --> 01:20:11.359
to find a different camera. So, yeah, if I wouldn't

01:20:11.359 --> 01:20:16.039
do YouTube, I would be on Linux, I think. I'm

01:20:16.039 --> 01:20:18.520
pretty sure you can get your phone to be a camera

01:20:18.520 --> 01:20:22.220
on Linux as well. I don't remember the name now,

01:20:22.319 --> 01:20:24.560
but there is some app you can install on Android

01:20:24.560 --> 01:20:29.539
phones that allows you to use it as a set. People

01:20:29.539 --> 01:20:31.859
have mentioned that, yeah. Yeah, maybe I'm just

01:20:31.859 --> 01:20:36.779
finding excuses. Well, I mean, it makes sense.

01:20:36.920 --> 01:20:38.500
You have a system that works for you that's set

01:20:38.500 --> 01:20:43.020
up. I mean, there's a big cost to moving. It's

01:20:43.020 --> 01:20:44.920
a lot of work. It's a lot of work. And what are

01:20:44.920 --> 01:20:46.960
your thoughts on Windows? Do you like Windows?

01:20:49.520 --> 01:20:53.340
I have mad respect for Microsoft's maintaining

01:20:53.340 --> 01:20:56.340
backward compatibility across Windows versions.

01:20:57.000 --> 01:21:00.199
It's the only system where compared to Microsoft

01:21:00.199 --> 01:21:03.199
Linux where an application that was compiled

01:21:03.199 --> 01:21:08.100
20 years ago is still likely to work. That said,

01:21:08.359 --> 01:21:12.800
the downside, the flip side of that is that the

01:21:12.800 --> 01:21:15.840
actual APIs in Windows are a horrendous mess.

01:21:16.439 --> 01:21:19.770
And because it's It's the only non -unique source

01:21:19.770 --> 01:21:23.210
system. So yeah, everything is different. For

01:21:23.210 --> 01:21:25.350
example, something that really gets my goat in

01:21:25.350 --> 01:21:28.789
Calibre, in Windows, is it has mandatory file

01:21:28.789 --> 01:21:31.569
locking. So if a file is open in one program,

01:21:31.670 --> 01:21:34.430
no other program can access it. You don't tend

01:21:34.430 --> 01:21:36.689
to realize that, but when you're writing a program

01:21:36.689 --> 01:21:42.170
that manages files, it's a huge pain. For example,

01:21:42.170 --> 01:21:44.010
in Calibre, say you change the title of a book.

01:21:45.479 --> 01:21:47.479
The location and the file system where it's stored

01:21:47.479 --> 01:21:50.659
changes because the folder name contains the

01:21:50.659 --> 01:21:53.279
title. Or the file name contains the title. Now

01:21:53.279 --> 01:21:55.979
if a user happens to have, say, opened that folder

01:21:55.979 --> 01:22:01.199
in Explorer or opened the e -book in some program,

01:22:01.859 --> 01:22:05.119
the rename operation fails. Like a PDF. Let's

01:22:05.119 --> 01:22:07.079
say they have it open as a PDF and they're PDF.

01:22:07.760 --> 01:22:11.100
So the rename operation fails. And, you know,

01:22:11.180 --> 01:22:15.970
it's insane. It's really difficult to write robust

01:22:15.970 --> 01:22:18.149
file operations on Windows because, ironically,

01:22:18.649 --> 01:22:21.810
the old point of mandatory file locking is supposed

01:22:21.810 --> 01:22:23.949
to be more robust. But in a lot of situations,

01:22:24.149 --> 01:22:27.569
it ends up being less robust. You actually have

01:22:27.569 --> 01:22:29.670
to sometimes reboot Windows to complete file

01:22:29.670 --> 01:22:33.890
move operations. What's that? For a long time,

01:22:33.930 --> 01:22:35.609
there was this meme that every time Windows updates,

01:22:35.750 --> 01:22:37.970
you have to reboot it. A big reason for that

01:22:37.970 --> 01:22:44.239
is these mandatory file logs. Yeah, anyway, that's

01:22:44.239 --> 01:22:47.079
my criticism of Windows. But like I said, I have

01:22:47.079 --> 01:22:49.100
mad respect for the level of backward compatibility

01:22:49.100 --> 01:22:52.680
it gets. And yeah, it is the most successful

01:22:52.680 --> 01:22:54.659
and most popular operating system out there.

01:22:55.359 --> 01:22:58.720
Okay, okay. Now, you mentioned as well about

01:22:58.720 --> 01:23:01.119
the servers that you run. Do you have a home

01:23:01.119 --> 01:23:04.159
lab or something? No, these are all in the clouds.

01:23:04.439 --> 01:23:08.739
I use OVH. I used to be a Rackspace user and

01:23:08.739 --> 01:23:11.609
before that a Slicehost user. And now it's just

01:23:11.609 --> 01:23:16.930
a VH, so the one in the cloud. I do have like

01:23:16.930 --> 01:23:19.649
six network computers at home, but I will call

01:23:19.649 --> 01:23:23.649
it Homeland. Okay, okay. And on your keyboard,

01:23:23.770 --> 01:23:25.789
do you use QWERTY or do you use a different layout?

01:23:26.729 --> 01:23:30.050
QWERTY. Yeah. Why didn't you go to one of the

01:23:30.050 --> 01:23:33.989
exotic ones? I never fed the cost -resort game.

01:23:35.250 --> 01:23:38.090
The destruction, if it teaches you how to type

01:23:38.090 --> 01:23:41.829
again, and not... all the way, but, you know,

01:23:41.829 --> 01:23:44.729
quite a bit. And I don't, I don't thought the

01:23:44.729 --> 01:23:48.409
benefit was that. So like, I know a lot of people

01:23:48.409 --> 01:23:51.489
obsess about typing, but I don't think typing,

01:23:51.550 --> 01:23:54.770
at least for me, is a bottleneck. When I'm, when

01:23:54.770 --> 01:23:58.270
I'm coding, I'm thinking, I'm, you know, designing

01:23:58.270 --> 01:24:00.609
things in my mind. The speed at which I type

01:24:00.609 --> 01:24:04.909
is really not a bottleneck or a concern. I do

01:24:04.909 --> 01:24:08.569
find keeping my fingers on the keyboard to be

01:24:08.569 --> 01:24:10.479
good. I don't like to, switch to the mouse i

01:24:10.479 --> 01:24:12.100
told you i have a i don't even have a mouse i

01:24:12.100 --> 01:24:14.720
have a track point so i don't have to switch

01:24:14.720 --> 01:24:16.560
to the outlet and that is one of the reasons

01:24:16.560 --> 01:24:20.500
that i uh you know like download flows and that

01:24:20.500 --> 01:24:22.699
but beyond that i don't think i don't think typing

01:24:22.699 --> 01:24:26.800
at least for me is a bottleneck i just i find

01:24:26.800 --> 01:24:28.920
it like fast enough i'm not i'm not a fast typer

01:24:28.920 --> 01:24:33.960
but i'm fast enough okay okay yeah Now, to wrap

01:24:33.960 --> 01:24:36.439
it up, Kovid, just questions that are not tech

01:24:36.439 --> 01:24:39.699
-related. Are there two movies that you want

01:24:39.699 --> 01:24:42.779
to share with us? Movies that you like? Movies.

01:24:43.140 --> 01:24:46.880
Yeah. Recent movies? Or your favorite movies

01:24:46.880 --> 01:24:50.500
of all time? Well, speaking of favorite movies,

01:24:50.560 --> 01:24:54.739
the movie that gave me the courage to take the

01:24:54.739 --> 01:24:58.619
leap from grad school to caliber was, funnily

01:24:58.619 --> 01:25:00.899
enough, a movie called Frost Mixin'. which was

01:25:00.899 --> 01:25:04.520
about Nixon, the US president, and a journalist

01:25:04.520 --> 01:25:10.000
named Frost who interviewed him. And, you know,

01:25:10.060 --> 01:25:13.720
he had to, I don't remember the details now,

01:25:13.760 --> 01:25:16.199
this was 20 years ago, but that movie sort of

01:25:16.199 --> 01:25:18.300
inspired me, gave me the courage to do what I,

01:25:18.439 --> 01:25:22.340
what I, yes, that's the movie, you know, what

01:25:22.340 --> 01:25:27.649
I really wanted to do. Yeah, so that's a movie

01:25:27.649 --> 01:25:32.510
I recommend everybody watch. Another favorite

01:25:32.510 --> 01:25:38.550
movie of mine is Dr. Zivago. Dr. Zivago. It's

01:25:38.550 --> 01:25:42.670
an old movie. It was starring Omar Sharif. Yes,

01:25:43.489 --> 01:25:49.630
this one, yes. So this was a... I actually love

01:25:49.630 --> 01:25:53.829
the novel and the movie, so I really recommend

01:25:53.829 --> 01:25:56.470
everybody to do. read them all the AdWords today.

01:25:57.029 --> 01:26:00.250
Okay. Okay. Awesome. And what type of music are

01:26:00.250 --> 01:26:02.069
you into? Do you want to share with us two of

01:26:02.069 --> 01:26:05.050
your favorite bands? I'm not much of a musical

01:26:05.050 --> 01:26:09.670
person. I don't listen to music very often. You

01:26:09.670 --> 01:26:12.770
cannot concentrate and listen to music and work

01:26:12.770 --> 01:26:17.050
at the same time? I find it. One type of music

01:26:17.050 --> 01:26:20.449
that kind of works for that is Gregorian chant,

01:26:20.829 --> 01:26:26.020
especially monks. But that's it. But yeah, I

01:26:26.020 --> 01:26:28.819
don't normally listen to music. I sometimes listen

01:26:28.819 --> 01:26:30.920
to music when I'm working out, but even that,

01:26:30.979 --> 01:26:36.239
I don't normally do. So I'm very much off the

01:26:36.239 --> 01:26:38.760
sort of mindset, I guess, that you need to focus

01:26:38.760 --> 01:26:41.420
on what you're doing one thing at a time. So

01:26:41.420 --> 01:26:44.340
I like to give my full focus to whatever I'm

01:26:44.340 --> 01:26:46.520
doing. If I don't listen to music, I only listen

01:26:46.520 --> 01:26:49.899
to music. If I'm, you know, doing something else.

01:26:50.409 --> 01:26:52.409
Can you do multiple things at once? I'm very

01:26:52.409 --> 01:26:56.109
bad at doing multiple things. Yeah, me neither.

01:26:56.409 --> 01:26:59.130
If I'm talking on the phone, right, or I'm talking

01:26:59.130 --> 01:27:02.270
on the phone and my wife talks to me, she's gone.

01:27:02.609 --> 01:27:05.810
I'm not, I may look at her, but I'm not there,

01:27:05.930 --> 01:27:08.270
you know? So I cannot, and she can't do those

01:27:08.270 --> 01:27:10.550
things. She can't be talking and doing something

01:27:10.550 --> 01:27:13.909
else. Me, I can't. Are you good with that? No,

01:27:14.010 --> 01:27:17.420
I'm the same way. I can't do much. I actually

01:27:17.420 --> 01:27:19.699
find women tend to be better than men at this

01:27:19.699 --> 01:27:22.520
kind of thing, but I don't know if they're multitaskers

01:27:22.520 --> 01:27:27.760
at all. But yeah, I personally can't. I have

01:27:27.760 --> 01:27:33.039
to do one thing at a time. Okay. Now, to wrap

01:27:33.039 --> 01:27:35.619
it up then, what is the best way, let's say that

01:27:35.619 --> 01:27:38.479
someone finds caliber? Calibre is an amazing

01:27:38.479 --> 01:27:41.579
first grade tool. My wife used it and she's like,

01:27:41.739 --> 01:27:44.060
man, this is amazing. It should be more popular.

01:27:44.199 --> 01:27:46.180
You should be a millionaire because of this tool.

01:27:46.279 --> 01:27:49.819
Just Calibre itself, right? Is Kiti your tool

01:27:49.819 --> 01:27:55.899
to work in Calibre or how does that work? Yeah,

01:27:56.039 --> 01:27:58.060
is Kiti your tool, basically? That's what I'm

01:27:58.060 --> 01:28:02.020
trying to ask. Yeah, Kiti is, as I told you,

01:28:02.039 --> 01:28:05.859
mostly because I wanted to use terminal win and

01:28:07.690 --> 01:28:09.670
Or, you know, I didn't find the existing terminals

01:28:09.670 --> 01:28:12.649
good enough. And I'm very much a terminal workflow

01:28:12.649 --> 01:28:17.630
person. So Kitty, you know, facilitates my workflows

01:28:17.630 --> 01:28:19.909
and makes me more efficient at working on everything,

01:28:20.090 --> 01:28:24.470
including Calibre. But yes, at this point, it's

01:28:24.470 --> 01:28:29.050
fun. It's just something I do as a fun side project.

01:28:29.310 --> 01:28:31.670
Kitty is my fun side project. Calibre is my day

01:28:31.670 --> 01:28:35.189
job. Okay, okay. And what is the best way then

01:28:35.189 --> 01:28:37.750
to support you? Going to GitHub and donating

01:28:37.750 --> 01:28:40.189
there or in the Patreon? Because you have a Patreon

01:28:40.189 --> 01:28:43.529
for Calibre, I think, right? Yes, yes. What's

01:28:43.529 --> 01:28:46.970
the best way? Whatever works for you. If you

01:28:46.970 --> 01:28:50.069
go to the Calibre website, you can make a donation

01:28:50.069 --> 01:28:56.750
by PayPal, by Patreon, by GitHub sponsors. It's

01:28:56.750 --> 01:28:58.659
all there, whatever works for you. It's very,

01:28:58.680 --> 01:29:00.920
very received. I've been I've been working full

01:29:00.920 --> 01:29:04.420
time on open source supported by donations for

01:29:04.420 --> 01:29:09.880
now 20 years almost. So I hope to continue doing

01:29:09.880 --> 01:29:14.600
so for many years months. Awesome. Awesome. So

01:29:14.600 --> 01:29:17.979
any final words before we wrap it up? Thanks

01:29:17.979 --> 01:29:20.899
for listening. I hope I wasn't too helpful. It

01:29:20.899 --> 01:29:25.180
was interesting. You know, keep up your interest,

01:29:25.399 --> 01:29:28.479
keep up your, keep tinkering, keep discovering

01:29:28.479 --> 01:29:31.600
new tools, keep, you know, fooling around, having

01:29:31.600 --> 01:29:34.319
fun. Remember that the reason that we are all

01:29:34.319 --> 01:29:37.520
into computers is because it's fun. Don't lose

01:29:37.520 --> 01:29:41.840
that sense of fun. Have fun. Enjoy yourselves.

01:29:42.560 --> 01:29:45.319
All right, COVID. Really appreciate it. Have

01:29:45.319 --> 01:29:48.960
a great Sunday, man. Thanks for having me. You

01:29:48.960 --> 01:29:49.060
too.
