I had the discussion with my wife, you know,
because she always knows better than me. She
says that Calibre is pronounced Calibre. And
I'm like, no, but I had a call with the guy that
created the tool and he says Calibre. So I just
want to hear this once and for all. How do you
pronounce it? I had a misconception of you. And
this comes from the discussions in GitHub, right?
They call you like a root maintainer. I don't
know, that you're sometimes harsh on people.
Do you want to share something about that with
us? How is the competition with other terminals?
Ghosty is up in the market right now, creating
a lot of new features. Westterm has been in the
market for a long time already, right? So why
not use the computer like a normal person? Like
go to the browser, go to the Explorer, the native
Explorer, and use your mouse a lot. Why all of
this love? For the terminal. Why do you want
to be in the terminal most of the day? So this
is the browser. So it's called Vice, V -I -S
-E. So you can see it's got tabs on the side.
And, you know, it's got no Chrome at all. It's
got a status bar at the bottom, but that's it.
What's going to happen with your projects when
you're gone? Is there a successor? Are there
any plans? Or is Kitty dead and Calibur dead
when you're gone? I'm still young enough that
I don't expect to die anytime soon. So I, of
course, have set up automated tooling so that
when I get a long PR, I just shunt it into an
AI and ask it for a summary. So it doesn't really
affect me because if it's a long PR, I just get
it summarized. You fight AI with AI. Yes, that's
the way to go. Okay, makes sense. How would you
respond to a 2009 PR that you're not going to
merge? That doesn't fit your design goal. You
close it right away and you just send them the
finger emoji? Okay. So who started the GPU terminals?
That's my question then. Was it you? I think
it's the case. Speaking of workflows, I saw that
you migrated to sessions in Kitty. How's it going
for you? I wanted to touch on that. Look this
way. This is how it's going. If you're listening
to this as a podcast, Remember that it was originally
recorded as a video. If you're not following
along, you can go to my YouTube channel. My username
is Linkarzu. And if you want to support me to
keep this podcast going, you can donate in Ko
-Fi. I'm going to leave a link in the description.
All right. So let's get started with this chapter
then. COVID, how's it going? Good, good. Good
to see you again. I think it's been three months
since we last talked. Yeah, around three, four
months, something like that. Yeah. I had to let
you go that day because you were busy. And I
still have some questions for you. And a lot
of people also had a lot of questions. How much
time do you have today, by the way? I think about
an hour, hour and a half. Okay. Okay. Awesome.
So, first of all, thanks for being here with
us. It's Sunday. What time is it for you? It's
7 .30. 7 .30? Yeah. You had a pretty busy...
Oh, yeah, p .m. You had a busy day today? Oh,
yeah. I've been working really hard on the next
kitty feature, actually. Oh, really? I was trying
to get it finished in time to demo it on this
video. So let's see if I succeeded. Oh, what
is it about? Do you want to share that with us?
I told you about it in the last talk, the Juice
Files kitten. So I've kind of finished that finally,
and now it has previews for images and videos
and documents and stuff. And it's integrated
into kitty, so you can press a key. Do you want
to show it? Sure, why not? Okay. I'll switch
to your screen then. Yeah. Are you able to see
my screen? Yep, I can see it. Cool. So this is
the choose files kitten. So for example here,
I'm in kitty at a prompt. So I press a shortcut,
which is configurable, but whatever. So here
you get the choose files kitten. You can go down
and, you know, look at things. And you can see
on the right -hand side, you can see that there's
a pre -syntax highlighted preview of text files.
I'll show you later the different types of previews.
And you can type anything you want to, you know,
like a fuzzy finder, basically. So let's get
the setup file that's, you know, right there.
Or if you want something deep inside, let's see
the more control. So you get... It's the usual
thing. Everybody's familiar with this. But the
nice part is that it's integrated into KITI.
So if I press enter here, you see that the file
I selected, remote control .py, is inserted into
my prompt. LS is obviously a trivial command,
but it could be a more complicated command. So
rather than using a fuzzy finder integrated into
your shell, you can use one integrated into your
terminal. But of course, this is not all that
the choose files kitten has. So first I'll just
show you some examples of the different types
of previews. So you can see here there's a video
preview. There's the previous text file preview,
syntax highlighting, there's animated images.
Then, you know, my other project caliber. So
this is... integrated with Calibre to give you
a preview of ebooks, documents. So you can see
here in the right panel, there's the title of
the authors and the cover of the book. This is
a good book, by the way, I recommend it. So,
you know, even for Docker X5, for example, you
get the title and authors. There's no cover,
but you get some metadata about it. So that's
the Choose Files Kitten's basic functionality.
But the really cool part about the Choose Files
Kitten is it integrates, at least on Linux, it
integrates with your GUI programs as well. So
let me start up my favorite GUI program, Calibre
itself. So when I click the Add Books button
here, instead of the usual file open dialog,
I get the Choose Files Kitten. Okay. So you can
see at the bottom here, you can see the filter
that you get in usual GUI dialogues with different
types of files. So you actually have that here
as well. And, you know, you can choose files.
And so, for example, if I choose breakneck and
press enter, it gets added to Calibre. So, you
know, it integrates with the GUI programs, which
is a big advantage for me because I like to,
you know, do fuzzy finding everywhere. So now
I can do it in my GUI programs as well, not just
in, say, Vim. And does it work on the browser?
Yes, yes, yes, it does. So I'll show you an example
of that if you can still see my screen. So this
is a regular Chrome, Google Chrome browser. So
let me choose, say, function, which is somewhere
here. So this basically hijacks the system, whatever
thing is used to. Now you're on Linux. I'm on
Mac OS and I hate that prompt that shows up when
I'm on a Mac OS. It just, you know, just takes
me out of my flow, right? So I have to go to
finder at the small pop -up and I have to search.
It's horrible. Will this work in macOS or just
Linux? I haven't found a way to make it work
in macOS. Apple doesn't give you the, at least
that I know of, give you the integration points.
So, so far it's Linux only, but maybe, you know,
somebody who knows a little bit more about macOS
can contribute a PR to get to work there as well.
Hopefully. There's a lot of macOS users in the
Kitty community. Yes, yes. This is something
that I'm going to use a lot myself. So I spent
the last month working on this, and it was quite
a task. So, you know, the previews that I showed
you, the image and videos and stuff. The choose
files kitten is written in Go, like all kitties.
And so Go doesn't have very good imaging libraries.
So I actually had to write my own. So I had to
write my own parser for something called ICC
color profiles, which is sort of how you interpret
colors in image files to get them on the screen.
So there's a whole spec for that, a 100 -page
spec for that. I had to implement that, and I
had to do a whole bunch of other stuff. to get
the imaging libraries in a form that was good
enough for my use case here. So I spent the last
month and a half doing that. So just about finished
just in time for today. For today. Let me ask
you something. Why do you create all these protocols
and stuff? Is it to make your job easier? Is
it fun? Or what happens there? Both. So I am
a big... I love to hack on my own tools. I have
my own productivity shortcuts. I actually have
written my own browser, which I use rather than
Chrome or Firefox or whatever. Similarly, I wrote
my own terminal. I have my own desktop manager.
I don't have my own window manager yet, but maybe
someday. I like to do this because in the long
run, I find that the time I spend on this It
comes back to me multiplied. So I save much more
time in the long run than I do building it. And
of course, in the case of KT, many people can
use it. So it's kind of a gift to the world as
well. And yes, it's fun. I learn new things.
Like I told you about the ICC color profile thing.
I knew nothing about color profiles before I
started that, but I learned all about it. So
it's a new thing I learned. And I find coding
fun, so I just keep doing it. And over the years,
I've built up a whole suite of tools of my own
that I use. Okay, to make your job easier. Now,
when you're working on something and there's
something that itches, right? You do something
and you say, okay, I can improve this in my workflow.
I can fix it. Do you stop your work? and go and
fix that or you live with the pain of that itch
there continue your work and you fix it later
like do you over optimize it depends it depends
on how boring the work is if i'm doing something
fun and work -wise then i keep doing it but if
it's if i have some time or if i'm you know doing
something boring and i want to procrastinate
then i go and dive into So like, for example,
the choose file std is, I kind of have the excuse
that it's sort of work. You know, it's for kitty,
other people use it, it's not just for me. So,
but I mean, if it was not for my own personal
use case, I would never have spent so much time
on it. But, you know, both kitty and caliber
are tools that I myself use a lot. That is why
I spend so much time on them. And that's why
I polish all their bugs and I fix all their bugs.
Polish all the rough edges and stuff. I like
to have the principle of dogfooding. I like to
use what I can build. And that's the best way
to keep its quality high. Definitely. What file
manager do you use? Because that's something
that I struggle with a lot, you know, because
I'm on macOS. I use Finder or I use another proprietary
one because I need to copy files from here to
there, especially videos. And I don't enjoy that
because I have to leave the terminal. How do
you manage? Do you use a file manager, something
you custom build? Do you use Yassi or what? I
just use shadow commands. I don't use a file
manager. I use CP and MV and friends. I don't
actually. So like this choose files kitten, I
showed, I demoed how I can use it to select files
and insert them into the prompt. So now I'm going
to be, I just finished it today, but I'll be
using it in the future. So I want to copy a file
that's somewhere deep inside a folder hierarchy.
I can just press a key and get the choose files
kitten, select that file and insert it into the
CP command line. So, yeah. But I mostly just
use shell commands. I don't actually use a file
manager. Okay, okay. Now, I have a question for
you as well. I had the discussion with my wife,
you know, because she always knows better than
me. She says that Calibre is pronounced Calibre.
And I'm like, no, but I had a call with the guy
that created the tool, and he says Calibre. So
I just want to hear this once and for all. How
do you pronounce it? It's caliber. So it's the
British spelling or the Indian spelling. In British
or Indian English, BRE is pronounced as BER.
Okay. So the name was actually chosen by my wife,
since we're talking about wives. And so it has
a lot of... So the Libre, it's pronounced as
caliber, but there's a Libre in it. So that sounds,
you know, that's like free software. And then
Calibre is, you know, like a high -caliber product.
And I was in California when I named it. So the
Cal is from California. There's a whole bunch
of stuff. It's actually in the Calibre pack.
Okay. I was going to ask you about the name as
well. I also read about the name, the kitty name.
I spoiled it for myself because I already know
the history, but for people watching, why did
you choose that name, kitty? There's a lot of
people, myself included, that didn't like the
name kitty because I don't like cats. Well, but
where did it come from? Well, two places. One
was that I lost my cat of 10 years, passed away.
The name and the logo, the chili logo is actually
something I drew myself as a tribute to my cat.
The cat's name was Lychee. Lychee? So, yes, Lychee.
It's a fruit. It's the name of a fruit. Oh, the
red ones. I love those. Yes, yes, yes. We're
in season. We're in season right now. Well, last
month. It's a season here as well. It's a season
here as well. So anyway, so, yeah, so that was
one place the name came from, the name of the
logo. The other thing is that it stands for COVID's
TTY. COVID's TTY. COVID's TTY. So the KI is from
COVID and the TTY is TTY. And of course I wanted
a word with TTY in it and there aren't that many.
Okay. So you had to make it work then. Yes. Now,
just to learn a little bit more about your background
and history, would you mind sharing with us How
did all get started? How did you get started
with computers? You went to study at Caltech,
right? So you moved from India to the United
States to study, then you went back. So how did
you get started with computers? Do you want to
share with us a little bit about your background?
Sure. I started with computers because my mother
was doing a PhD in economics and she got a ZX
Spectrum. That's a really old computer. It's
basically a keyboard. It connects to your TV.
It used to run a form of guessing. So she used
to use it for her thesis work. And I, of course,
used it for other things. So at the age of seven,
I had to bug up multiplication tables. In school,
they make you multiply multiplication tables.
So I said, what the hell? I don't want to do
this. So I sat and wrote a program on my Spectrum.
to print out the multiplication tables. It had
colors and everything. And, you know, it was
in my studio tabular form. So that was my first
sort of programming experience. And then the
other thing I used to do on that spectrum is
my mother got me this book, which had the source
code of various games written in BASIC printed
out in the book. So I basically used to type
those in and, you know, fix the errors and whatever.
And at the end of my efforts, have a game to
play. So that was how I started programming.
Programming has been a hobby for me throughout
my life. So I think I've been using Linux now
for 30 years. So yeah, it was always a hobby
for me. So I wanted to be a physicist. I remember
after my junior college, which is sort of at
the age of 18, I took a year off from my education
and quarantine. Just do other stuff. I remember
writing something in Java which was supposed
to simulate the human brain. It had a very similar
idea to the basis of AI nowadays. It had neurons
and feedback and shit. It didn't go anywhere.
That was an interesting project I did in my youth.
And so my modern programming, open source programming
career really started with something called SuperKaramba,
which is the KDE desktop, had a widget system.
So back in KDE three days, it had a widget system
called SuperKaramba in which you have to write
widgets in Python. And they'll show up on your
desktop and whatever. So in those days, I never
used to get much email. I was not a well -known
person. I was just a student. So I had a lot
of time. So I said, okay, no, it doesn't matter
if I don't get a lot of email. Let me write a
widget that shows the different emails in different
folders and stuff like that on my desktop. So
I wrote that. I released it. And that was my
first open source release. And then I used, and
then, so to do that, I learned Python and then
I ended up using Python and my thesis work for
some numerics for quantum computing. And there
was a, there was a lattice -based quantum computer
whose simulation I had to do with Python partly.
And then after that, what happened was that Sony
released its PRS -500, which was the first e
-ink -based e -book reader. I was in the US at
the time. And at the time I had, a little handheld
device called a Mitac Neo, which was a GPS device.
I used to use it to navigate around the place.
I wasn't familiar with the city too much. And
so you could hack it and read plain text files
on it. So I used to download plain text files
from Project Gutenberg or wherever and read them
on that. So when Sony announced its e -ink reader,
I was all over it. And the day that it was released,
I went to the Sony store and I picked it up.
But when I got back, I was home. I was horrified
to realize that it required, it was user proprietary
USB protocol. It required software from Sony.
It only worked on Windows. So this was not something
I could let stand. So I went online. I looked
for, you know, what do I do? Like, how do I get
this to work with Linux? And I found a community
called mobileread .com, which I'm still a member.
And there were a lot of enthusiasts there, mobile
reading enthusiasts. And with the help of some
of them, I bought what's called a PRS -500, which
was sort of like a library to talk to this device.
I remember I used to print out USB traces from
the device. And at my lunch break, I would take
it over to a nearby paja burrito where I used
to get a burrito. I used to eat the burrito and
look over those USB traces and try to reverse
engineer the USB protocol. um so that was a fun
you know grad students have a lot of time so
i did there's a lot of fun uh fun sort of side
project and i ended up releasing late prs 500
and eventually that went on to become caliber
okay yeah okay so i had a gui and you know it'll
use it for windows and micros okay okay that's
how caliber was born so you're not a programmer
by profession right so you're a theoretical physicist
Correct? Yes. Okay. Do you do a lot of programming
there or your programming background helped you
a lot in your career? So I was a physicist for
10 years. I quit after I got my PhD. I worked
full -time on Calgary. But during my PhD itself,
I did a fair bit of programming. Like I said,
I had to do some numerical simulations of quantum
computing. but yeah no but most of my work was
mathematical theoretical it wasn't really programming
for reality do you enjoy that still theoretical
yes yes i keep in touch uh very few papers okay
people breast of things okay now what does your
family and your wife think of you uh leaving
caltech to work on open source because you mentioned
that in the other video right that you left because
your wife had a job so then you quit your job
i think and then you guys moved back to india
or something so yeah so basically what happened
was that we were both in grad school we're both
physicists and uh at the time um we had two we
were graduating we were both graduating after
the same time six months difference or something
and uh we had to find a job as a postdoc or whatever
so now the problem is finding jobs when you're
both physicists is it's really difficult to find
a job in the same place because there aren't
that many openings and so you know like any given
university might have an opening for one person
but not for two in the same department so it's
really difficult to find it's called it's called
the it's called the two body problem in physics
so anyway so so so what we so I so at the time
I had I was doing Calibre as a side thing. But
the thing was that I was making enough money
from it that I could make something like $1 ,000
a month at the time. So that's good enough. I
can sort of grow this and whatever. And so I
talked to my wife and we decided that she'd take
a job wherever she gets it and I'll just join
her and work on Calibre. And then we'll see how
it goes. And it went really well. So that was
history. Okay. And are you happy with that decision
of working full -time in open source? Or sometimes
you look back at it and you're like, man, I should
have continued in physics and all that stuff.
No, no. I'm very happy with open source. So the
thing, the reason I wanted to be a physicist,
part of the reason, apart from liking physics,
of course, is that I wanted to be an academic
because I felt that they had a lot of freedom
and flexibility to work on what they wanted and
so on. But the thing is that uh actually speaking
nowadays at least academics don't have that much
freedom you have to spend a lot of time getting
funding grants teaching whatever you don't get
as much freedom as i would like i actually think
i have more freedom to work on uh whatever i
want doing uh caliber uh kitty open source work
i don't have any bosses i don't have to i don't
have to i'm not dependent on funding agency i
don't have to write ground proposals I just have
to keep a few million users happy. You're living
the Linux life, right? The open source life.
Yes. Okay. Now, I had a misconception of you
before the interview, you know, and a lot of
people do as well. You have your water there,
right? I think you're going to need it. Not yet.
And this comes from the... discussions in GitHub,
right? They call you like a root maintainer.
I don't know that you're sometimes harsh on people.
Do you want to share something about that with
us? Well, the thing is that I deal with about
50 to 100 pieces of user interaction every single
day, 365 days a year. I've been doing that for
20 years. And after a point, being friendly is
just not sustainable. I mean, I am a friendly
person in person. I think so. At least I feel
so. I don't have any complaints. I don't have
any complaints from people in my life. But online,
it becomes day after day, day after day, answering
the same questions, the same. You just tend to
lose. You just can't maintain that level of friendliness.
It's not sustainable. So I have this philosophy
where I like to be at zero bugs. Any bug that
I... is reported to me, and that I can reproduce
or understand, I fix immediately. Or immediately
means within the next few days, whatever, as
soon as possible. I don't like to leave bugs
open. But then the flip side of that is that,
in a sense, the entire world has a direct line
into my inbox. So anybody who opens a bug report,
it can tend to distract me from my work, it can
whatever. Uh, so, you know, so I tend to be extremely
short and blunt and whatever, uh, when I am dealing
with bug reports because I deal with so many
and I like to deal with them fast and it just,
that's the only way it's sustainable for me.
Yeah. So, yeah, you know, I know, I know, I know
lots of people think I'm rude or arrogant or
whatever, but okay. That's the price I pay. Yeah,
we were talking about that with Justin the other
day. He's the lead maintainer in U of M, and
I was like, Ben, but imagine having two projects
as big as Calibre and Kitty. I wouldn't have
the time, you know, and I would be even worse.
I would be like, no, no, because many issues
a day. Which tool gets more issues and discussions,
Calibre or Kitty? So over its lifetime, Calibre
by far. In the last year or two, it's been Kitty
because I've been focusing a little more on Kitty
and a little less on Calibre. So there's been
less releases in Calibre and less new features.
So at the moment, it's Kitty. But over their
entire lifetime, it's Calibre by far. Calibre
has 3 million active users. Kitty is not in that
ballpark. How is the competition with other terminals?
Ghosty is up in the market right now, creating
a lot of new features. Westerm has been in the
market for a long time already, right? So Ghosty,
Westerm, what else do we have right now? Kitty,
of course, the main ones. I don't pay too much
attention. Like I said, I write these things
for myself. And I don't really need them to succeed.
Calibre has given me all the success I really
need. So Kitty is very much... a passion project.
I love terminal workflows and I want to make
them better and more powerful. And Kitty is basically
doing that. So, you know, I wanted to push forward
the terminal ecosystem. So I can add support
for images, add support for the keyboard events,
and so on. And so Kitty was kind of my platform
to do that. So the origin story of Kitty is really
that I was using a GUI -based win. Oh, okay.
I used that on Windows. Yep, yep. Yes, yes. So
this was a long time ago, more than 10 years
ago. So, you know, there was some problem. I
don't remember exactly what it was now. It was
slow or something. And so I wanted to switch
to Terminal Win. But Terminal Win was even slower.
And so I profiled it and I found that the reason
was that the terminal was slow. At the time,
the terminal, whatever terminal I was using,
I don't remember now, maybe console, maybe something
else. It was slow. And I kind of analyzed the
problem and I thought that I can do better. And
there's another thing that I really missed going
from G win to terminal win, which was, you know,
the squiggly colored underlines where you get
errors. The spell. That was not available in
terminals at all. So I initially wrote KDE to
do two things, to be fast and to have squiggly
underlines. And so that is how KDE was born.
And then once I developed it, because my workflow
is totally terminal -based, I use MAT, I use
RIM, most of my tools, apart from the browser
and Calibre itself. are running the terminal.
So, you know, I wanted to add more capabilities
so that my tools could be more capable running
the terminal. So I wanted to add images for that
reason. You know, better keyboard shortcuts for
that reason. So that's how I keep adding features.
So like recently I added the ability to Kitty
to have different size text. So you can have
headings that are big and so on. So, you know,
that's again because I want to like browse a
markdown file in my terminal and I want to want
to be able to see the headings in big form a
basic thing like that so just to make my own
life better now why all of this love for the
terminal like let me ask it a different way why
not use the computer like a normal person like
go to the browser go to the exploder the native
exploder and use your mouse a lot why all of
this love for the terminal why do you why do
you want to be in the terminal most of the day
Mostly because terminal -based workflows are
keyboard -first. So you can do a lot more with
the keyboard than most GUI programs. There's
no reason that it has to be this way. You can
make a GUI program that is perfectly keyboard
-driven, but it doesn't end up like that. And
so the thing is that I spend most of my time
working in a handful of programs throughout the
day, right? It's not like I'm using 100 different
programs. So when you are spending most of your
time in a handful of programs, it makes sense
to optimize them. It's not an undue burden to
learn the keyboard shortcuts. It's not an undue
burden to write some macros, automation, whatever,
you know, that kind of thing. And so terminal
-based workflows are much more conducive to that,
generally speaking. And so that's why I tend
to stick to the terminal as much as possible.
Okay. Do other people around you understand your
passion for the terminal? Or they're like, because
my wife doesn't get it. She's like, what is this
guy doing? And I configure my keyboard, you know,
home row mods and all that stuff. And she's like,
and I don't use the number row. I don't use the
F row on my keyboard. And she's like, man, you're
just, and I try not to use the mouse and I try
to explain to her, okay, look, if you do this,
you don't need to use the mouse, like the motions
and all that stuff. And she's like. Man, no.
So do other people around you understand this
passion that you have for terminals? Not in my
immediate channel, none. Nobody else is. I mean,
my wife uses Linux. My children used to use Linux,
but I'll play Windows 6 through Windows. But
yeah, none of them are terminal fans. No. So
like, for example, I work on a laptop with a
small screen. I don't even have a mouse. So my
laptop has a touchpad and a... track point you
know so lenovo it has the redirect or track point
thing so i'm disabled the touchpad and i just
use the track point and the track point is quite
it's quite awkward to use uh you know it's not
as convenient as a mouse uh so i try to completely
avoid uh you know using the mouse so like for
example i told you i use my own browser uh so
i don't know if you can see my screen still but
let me share it let me share it yeah So this
is the browser. So it's called Vice, V -I -S
-E. So you can see it's got tabs on the side.
And, you know, it's got no Chrome at all. It's
got a status bar at the bottom, but that's it.
So, for example, if you want to follow links,
you press the F key and all the links are highlighted.
You can tap a key and follow it. So it's going
to click things. Okay. It has a command line
where you can enter commands and, you know, open.
uh open urls and so on uh and the nice part of
it is that uh this this this facility to open
urls i can actually use it inside win so if i
do that you get a url and say i do github so
that you see that the url gets inserted into
win and it got it from the browser from vice
right from the browser yes yes so so you know
this is uh this is really sorry i'm switching
back to the uh yep oh yeah um so this is really
useful for me because like i said i deal with
a lot of user communication and so a lot of user
queries can be answered with links to help resources
right and so all those links are there in my
browser history because i've you know visited
them so at some point many years ago i decided
to make this accessible everywhere in my system
so i could uh you know look at my uh current
browser history and easily fuzzy find urls from
it and insert them into him or insert them into
my you know user response automation tools and
so on and you know and then the ability to follow
links without having to use the mouse and stuff
so all those kind of things there used to be
a there used to be a firefox extension interactive
i think i used to use that for the for the link
following uh features but then got you know the
firefox changed its extension uh mechanisms and
made it more restrictive or something uh and
so it stopped working so well um so i decided
to write my own browser to let this only dependent
on you know firefox or chrome or whatever so
my browser is basically uh a wrapper around uh
chromium by a qt web engine and you know it's
it's it's not it's not for public consumption
it's not that polished it's but it does whatever
i need it to do so that's what matters you know
what limitations do you find in vice do you have
any do you find any limitations not really no
i use it for pretty much everything because it's
got a it's got chromium as its engine yeah so
okay there are no Okay. And is it a project that
is open to the public so everyone can install
it? There's documentation and all that? It's
on GitHub, but like I said, it's not really for
public consumption. It's not as configurable
or polished or whatever as my usual projects
are. This is pretty much a personal use thing.
Because I decided, I thought about making it
for public consumption, but the amount of effort
needed to... So polishing to that level is a
little too high. I mean, there are already tools
like this. There's something called Qt Browser,
which is basically the same thing. It uses Web
Engine with its own UI and so on. So at the time,
I don't know why Qt Browser didn't exist or had
various problems. I don't know. Nowadays, you
know, if anybody asks, I say you just use Qt
Browser. Okay. Okay. Okay. Now, when you are
about to deploy a new project, do you think of
the amount of issues and discussions that it
will generate and all of the time that it will
take away from you? Like this Vice browser, for
example, if you make it public, you know that
a hundred or a thousand or more than a thousand
issues are coming your way. So do you think about
that? Does that hold you back a little bit as
well? So in the case of Vice, it did, because
most of us, I didn't. It wasn't something I enjoyed
very much. It's basically writing a UI on top
of Chrome, which is not that exciting for me.
So I didn't feel like, you know, doing that work.
So I decided not to release it publicly. But
like I said, I mean, Calibre has 3 million active
users. I have a huge stream of bug reports and
user interactions already. So most projects don't
even make a dent in that. I mean, I have seven
dozen open source projects. Apart from Kitty,
all the rest of them put together don't make
a dent in my workload. Okay, okay. Now, in the
previous call, you also mentioned that your projects
are, you know, a bus factor of one, right? What's
going to happen with your projects when you're
gone? Is there a successor? Are there any plans?
Or is Kitty dead and Calibur dead when you're
gone? I have no idea. I haven't made any plans.
I'm still young enough that I don't expect to
die anytime soon. Like I said, there are a lot
of things that I should do, set up. and set up
some sort of organization, whatever. I just,
you know, I prefer the code. I don't like spending
time on that kind of stuff. So both Calibre and
Kitty have, especially Calibre, less Kitty, have
very long -term contributors, many people who
have contributed to it over the years, for many
years. In fact, one of the long -term, actually
not one, but two of the long -term Calibre contributors
have actually passed away. Because Calibre, one
of the main demographics that love Calibre is
older people. Because e -books are very useful
for older people because you can increase the
font size. I don't know. I myself am now old
enough that I find that a really big point in
favor of e -books. But yeah, so as I said, a
lot of Calibre contributors tended to be retired
software professionals. And they have the time,
they have the interest. So there are a lot of
contributors. And I would hope that if I pass
away, somebody will take over maintenance. But
I don't have any sort of designated successor
or formal process for it. But it's open source.
Anyone can fork it and continue it. Do you have
any maintainers in Kiti that are pretty active
and that know it in and out? Or you're just the
only one? No, Kitty, it's pretty much... Kitty
doesn't have any... I mean, Kitty has had a lot
of pull requests from lots of people. It has
hundreds of contributors, but nobody who's sort
of stuck around and, you know, doing a lot of
continuous work. There have been some pretty
impressive pull requests. I mean, I always get
amazed when I get pull requests from somebody
who has done a deep dive on the code base and,
you know, understood a lot. and made a pull request
that sort of touches along the internals, you
know, the hairy bits. I've had quite a few of
such pull requests. There are, I think, about
five or six people who have sent me such pull
requests. So, you know, it's not that the codebase
is completely inscrutable, but yes, I am the
main maintainer for Kitty pretty much as of now.
Okay. Now that you mentioned PRs, there's a new
trend uh because of ai of sending you know like
those 2000 line added generated prs and they're
ai generated right and and you can tell has that
happened to you and what are your thoughts uh
so interestingly enough i got a pr for adding
ai functionality to caliber that was written
by an air But it was not an AI alone. There was
a person behind it. It was a sincere effort.
It was not a spam or whatever. And in fact, I
ended up merging that PR eventually. So from
the perspective of a maintainer, my key thing
is that people who send me both issues and PRs,
to keep it as succinct and short as possible.
Because very often, just reading through that
whole wall of text, It's a waste of time. Or
at least summarize things at the beginning well
and then have your wall of text. So I, of course,
have set up automated tooling so that when I
get a long PR, I just shunt it into an AI and
ask it for a summary. So it doesn't really affect
me because if it's a long PR, I just get it summarized.
You fight AI with AI. Yes, that's the way to
go. Okay, makes sense. Yeah, so it's okay. As
long as there's a human being behind it and it's
not spam, I'm fine with getting AI -based PRs.
I don't mind if the code is written by AI as
well, as long as the human being is signing off
on it and saying that, you know, I understand
this code, I've read this code, whatever. And
I have to review the code either way, whether
it's written by a human or an AI. It doesn't
really change my workload. So, yeah, I mean,
if people want to use AI and send me PRs, that's
fine, as long as, you know. you're sincere about
it you're making a you know good faith effort
i'm happy to entertain your peers okay so if
it's a really long pr you send it over to an
ai to quickly see what it's doing and have a
better idea so you're not you don't waste your
time right yes because very often uh you know
PR might need to be rewritten. It may not match
my design goals. You know, I don't need to review
the whole thing to say that, right? If I can
just get an idea that, okay, all this has to
be fixed first, I can just quickly send that
response. And then, you know, the people can
come back and do, you know, edit it and change
it. Then I can review it in more detail. And
that's good for the contributor, the PR sender
as well, because they get feedback quickly. So
I think I... I think I said earlier, I have this
zero bugs philosophy. It's the same for PRs.
I don't like to leave them hanging around. If
for whatever reason I have to leave something
hanging around, I always make it a point to say,
I'm busy right now. It's going to take me maybe
a month or whatever to get to this. So I don't
like to leave things unanswered as much as possible.
Okay, you don't like that to accumulate in the
backlog. So how would you respond to a 2009 PR
that you're not going to merge, that doesn't
fit your design goal? You close it right away
and you just send them the finger emoji? I write
a couple of lines explaining why it's not a fit
and I close it. And I say, if the person is pushy
about it, when I say that it's open source, you're
free to fork it and maintain your own fork with
your features. Okay, okay, okay. Now, in the
previous call, also you mentioned, and right
now you mentioned that terminals were slow at
the time. So you decided to go GPU accelerated
and you learned OpenGL. And I was wondering,
did Alacrity exist already when you decided to
start with Kitty or Kitty came first? No, they
were pretty much contemporaneous. I think Alacrity's
announcement was about a week before Kitty's.
So Kitty existed for about a year before that,
but I hadn't released it probably. So we're pretty
much contemporaneous. Oh, okay. I guess it was
the time had come for GPU -based terminals. Okay.
So who started the GPU terminals? That's my question
then. Was it you? I think it's a case of simultaneous
evolution. Okay. Okay. Different people, different
people came up with the idea at the same time.
Okay. Okay. Makes sense. Like Alacrity's, Alacrity's
performance, I mean, his focus has always been
only performance. That was not my, that was not,
I mean, performance is important to me, obviously,
but, but it's not my main goal and it's not,
it's not, it's not the only thing that Kitty
is good at. So, the performance was, for me,
was kind of like table stakes. I wanted to, expand
the terminal ecosystem, move it forward. I knew
that to do that, I needed to have a terminal
that's compelling for users. And performance
is a big part of that. So the performance was
the basic thing. I had to get the performance
in place so that I could then build on it. So
for me, performance is a substrate. It's stable
stakes. It's the basic thing that you get right.
And then you build on it. Okay. I mean, I don't
want to speak for Alacrity. I don't know too
much about it. I mean, as far as I know, it's
a great terminal. But from what I know, it's
kind of conservative about adding features. It
has relatively few features. That's its philosophy.
That's a fine philosophy. Nothing wrong with
that. But, you know, KDE is very much about seeing
what you can do with terminals. For somebody
who lives in a terminal and wants to make it
as powerful as possible, enable advanced workflows
and so on. Speaking of workflows, I saw that
you migrated to sessions in Qt. How's it going
for you? I wanted to touch on that. Look this
way. This is how it's going, man. Like in our
previous call, you remember we talked about Tmux,
your favorite tool of all times, right? So, you
know, I didn't know a different way of using
the terminal. I use Tmux and the reason I use
Tmux is because of sessions, right? But let me
show you right now real quick. I don't think
you'll be able to see it, right? I have my kitty
sessions. Can you see it a little bit there?
It's on your phone, I think. No, I've got it
on my laptop as well now, thanks to your second
channel. Oh, awesome. So I can see it quite well.
So I have my sessions. I can switch to my .files
pretty fast. I can switch to my blog post if
I want .files again, you know, because that's
what I like doing. I like keeping the sessions
that I use the most a key press away, right?
So if I want to go back to my daily note. to
what we were looking at right now. And I did
this with Tmux in the past, right? But it adds
that additional layer, right? And I felt it a
little bit slower. You don't feel it that much,
but if you spend a lot of the day in the terminal
or most of the day in the terminal, you feel
it when it's gone. So I feel that it improved
a little bit, you know? And, you know, one less
tool. And I haven't been using Tmux for, what,
two months? Over two months, I think. Yeah, it's
been great. Do you use sessions or you don't?
I don't use sessions. I actually have my own
solution for that that I just did longer for
Kitty. So I haven't felt the need for sessions
personally, which is why it took so long for
me to add sessions to Kitty because I didn't
need it personally. In fact, my interview with
you was something that moved it up in the to
-do list a little bit. What was your solution?
So I use Hyperland as my window monitor currently,
but I actually have an extension for it of my
own that allows me to do various things. So I
use that as my integration point for creating
a session, not the terminal. This existed a long
time ago, before I had KT. So I haven't migrated
that workflow yet to Kitty. Maybe I'll do that
in the future. But so far, it's working for me,
and I've been using it for a decade plus. So
originally, I used to use i3 on X11. So it used
to work there. And then I migrated to Sway on
Wayland, and I ported it to work there. Then
I migrated to Hyperland, and I ported it to work
there. It's been going strong for a long time.
Okay. And do you mind demoing how you use sessions
there? I'm not a Linux user. I don't know if
you know, but I use Mac mainly. So mostly I have
key presses that open things easily. So for example,
if I want to switch to Kini, I just press a key
press. And so right now I don't have a Kini session,
but... There you go. That's a key discussion.
So, you know, three key presses. And so the thing
is that I don't, sorry, I don't have my terminal
integrated with my editor. Because like I told
you, originally I used to use GVM and I switched
to terminal. So this workflow has actually existed
since those days. So I used to have my terminal
separate. So what I have is I have a single key
press that gets me to my terminal. The terminal
is connected to my sessions. So when I open a
session there, the terminal automatically goes
to the corresponding directory and is ready for
action. It's not 100 % efficient because it would
actually be better if I moved it all into KDE
and used KDE sessions. But I just haven't got
around to doing that. Yeah, it takes time. It
took me... quite some time to migrate away from
tmux because then you have to think about the
scroll back you know but i love that i can use
kitty scroll back i'm just opening neovim right
now with the scroll back i don't have colors
but justin from the neovim team told me that
this is something available in within neovim
0 .12 right so if i do this right now and if
i bring up the scroll back if i press the letter
m on my keyboard brings it up right I don't have
colors at the moment, but I do have numbers.
And I have the jump plugin here. So if I want
to jump here, I can do it. So it's awesome. I
see you're using Cursor Trails as well. Yeah,
I am using the Trails as well. Cursor Trails
was actually a contribution, a PR from someone.
It was not something that was on my radar, but
I was happy to merge it. It's quite a popular
feature. yeah it's pretty popular because that's
something that uh ghosty came up with and everyone's
like carcer trail so yeah you cannot you cannot
stay behind yeah well no kitty kitty had because
she has about a year of the publicity uh -huh
oh he was the first kitty was it he was the first
gentleman to have tested shirts uh it was copied
from neowide uh which is not a terminal yeah
i've used neovite and i like the carcer trails
there yeah So the contributor who contributed
to Kitty copied it from me, right? And Kosti
implemented it very recently, a few months back.
Kitty's at it for more than a year. Oh, okay,
okay. And going back to Alacrity, I think Alacrity
is intended to be used with Tmux. I don't, I'm
not sure. Well, or is it intended to be used
with your window manager? Since you mentioned...
Yeah, either one works, I guess. The Tmux thing
never made sense to me. Alacrity's big selling
point was that it's speed, but then if you run
10 Tmux inside it, its performance sucks. In
fact, the end -user performance sucks, so it
never made any sense to me. I have, in fact,
on the Kitty benchmark page, I have a benchmark
where it's using a benchmark tool. And so Alacrity
does well, but then when you do Alacrity plus
Tmux, the performance halves. It halves? Yes.
I mean, also, it just doesn't make sense. But
usually with a window manager, fine, yes, that's
good. But with Tmux, the performance thing, I
mean, if you care about performance, you don't
want to be using Tmux. Okay, okay. Yeah, we talked
about Tmux a lot in the previous video. So if
someone has questions about Tmux, go and watch
that interview. Kovic shares all his thoughts
on Tmux, right? Not your favorite tool. Yeah,
I don't want to sound too negative. I mean, Tmux
has its users, especially for people who like
to use it on remote servers or whatever. It makes
sense. It's a useful tool. But it has certain
downsides that I think outweigh its usefulness.
But anyway, that's my opinion. Okay. And I was
going to ask you about that as well, right? The
only, well, I was using TMAX locally, right,
to manage my sessions locally, but it doesn't
make much sense, right? How would you manage
that situation then in which you need to open
something that stays, you know, active the whole
time on the remote server and that you can attach
to it? Is that something that you do or you don't
do at all? Yes. so for example i mentioned using
computation in my grad in my in my grad work
so part of that i had to log into a powerful
uh supercomputer and run jobs and uh those would
take days to run so you cannot depend on sh for
them right yeah so you know i used to run them
in screen okay back then so i didn't use it for
multiplexing i just used it for persisting that
so that I could disconnect and reconnect whenever
I needed to. And this was not a TUI that I was
running inside. It was just a simple program
that printed out some stuff. It didn't matter
if the screen screwed up the terminal emulation
or whatever. It didn't matter. And actually,
nowadays, there are a lot of other options. You
can use disown in a shell, and that mostly works
as long as you don't lose your connection. And
nowadays connections are pretty stable. I mean,
back then it was still an issue that connections
used to drop, but nowadays, at least for most
people, that's not really an issue anymore. So
like Qt, for example, has an SSH kitchen. that
uses SSH control masters and automatically multiplexes
multiple windows into one SSH connection. So
yes, if you lose your connection, then all those
windows are screwed. You lose everything. But
at least for me, personally, that doesn't happen
anymore. It's very rare that I lose connection
to my servers. So it's not an issue that I face
myself. That said, it is on my long -term to
-do list to write a tool that, would do remote
session persistence properly, not like Tmux or
Screen, not by emulating a terminal. Instead,
it would be a server that talks to your terminal
emulator and just, you know, it'd be as thin
and transparent a wrapper as possible. It'll
actually use a single pseudo -terminal per job
rather than trying to have multiple windows on
one pseudo -terminal device. So that... That
negates most of the disadvantages of general
multiplexers. So that's on my to -do list to
do. But yeah, as you can imagine, a very long
to -do list. Yeah. So you would start a process
on the server, like KDE, whatever, KDE Master,
whatever, you started there, and then you just
attach to that process from your local machine.
Yes, yes, yes. You can attach over SSH or over
TCP or whatever. It doesn't matter. So like Giddy,
for example, has a remote control facility, which
you can do using Unix sockets, TCP networking,
even pipes. And so it'd be something similar.
The remote end would start a server that would
listen on whatever you configured it to listen
on. And then you connect to that however you
like. You can connect it over SSH, you can connect
over plain TCP, HTTP, whatever. The transfer
is not important to be flexible. And then if
you drop the connection drops, you just reconnect.
And it will maintain the state. But the important
distinction from Tmux and Friends is that it
won't multiplex. It will leave the multiplexing
to the terminal, which can do it properly. And
it will just preserve state. So each new program,
each new window that you create would have its
own TDY device. And it would correspond to a
local TDY device and data would be forwarded
between them. But there would be no translation
in the middle. I talked about it in my previous
interview about how the problem with multiplexers
is they have to translate the STF codes to make
the split screen and so on work. So there won't
be any of that. So that greatly mitigates the
main disadvantage of terminal -based multiplexers.
Yeah, because what you care about is that the
process remains active on the server. It doesn't
matter if you disconnect or not, right? What
you care about is that whatever you were doing
there keeps running in the background and you
can attach to it whenever you want, right? It
doesn't matter if you disconnect from it or not.
Okay, okay. So there's a program called Detach.
I think it's available on GitHub. You can use
that for something like this. There's SHFool,
which is a multiplexer that, again, tries to
be as thin and layer as possible. not doing actual
multiplexing just for suspense that kind of thing
so there are solutions like this um but i would
like if i if i do this i would i would sort of
leverage the facilities that kitty gives you
so you get multiplexing and all the powerful
features but in a robust and you know well designed
way okay okay now Moving to other topics, your
IDE, why did you choose NeoVim and why didn't
you go with Emacs? Because it seems that Emacs
has a lot of the things that you want, you know,
single environment that does everything. So the
main reason is that I have very big hands. I'm
quite tall. I'm six feet four. I have very big
hands. They don't fit on most keyboards. And
so, you know, the shortcuts with lots of modifiers.
is difficult and painful for me. The Emacs pinky,
they say it's like broken, right? Yes. So for
me, it's a particularly bad problem because of
my large hands. I mean, I could, of course, get
a large keyboard or whatever, but back in those
days when I was a kid and a student and all,
I couldn't afford such things. And so I had to
work with whatever I had. And so to make the
most of it, I thought model editing was more
suited to me. So that was the main reason. I
mean, I'm not a... I'm not a soldier in the EMAX
wars. I think they're both fine editors. I wish
them both as much success as possible. For me,
it just came down to big hands. Okay. Okay. So
you have any thoughts on EMAX then? I love EMAX,
actually. I actually started out with EMAX, but
I found the big hand problem. Troublesome, so
I switched to Win at some point. This is very
long ago, it's more than 20 plus years ago, so
I don't really remember the details anymore.
Since then, I spy on Remax once in a while, mostly
to debug issues with Kitty. But yeah, other than
that, I'm not very familiar with Remax these
days. Okay, now, what about handheld? Because
you mentioned that you used your... laptop keyboard
and your hands are big aren't they like this
the whole time have you ever thought about split
keyboards um i actually bought myself a split
keyboard and started using it and taught myself
to touch type and stuff but nowadays what i do
is uh i have this chair this is a massage chair
actually but i don't care about the massage part
so much it's the good part is it declines and
then i have a lap desk a very simple lab desk
and i put my laptop on that and my hands my arms
my elbows rest on the on the on the armrests
of the chair okay and i'm sort of reclined i'm
reclined at about 60 degrees and i type my hands
i don't know if i see them but they're sort of
straight but the important part in in carpenter
and you know rsi type things is to keep your
wrist straight uh -huh there shouldn't be there
shouldn't be a bend they're they're bent yeah
because i used to keep mine like this bent yes
yes they should be straight so because of the
sort of way i arrange my entire body uh even
with a small laptop keyboard i can mostly keep
my hands straight so since i've been doing this
i haven't had any issues with a wrist or uh elbow
problems. I actually had, there was a time I
used to have problems with my shoulders and my
wrists, elbows, but I managed to fix that by
sort of changing how I keep my whole body rather
than just my keyboard. And so the good part is
now I don't have to, I don't have to use any
fancy keyboard. I can use, you know, a normal
keyboard. And, you know, if I, if I go traveling
and I take my laptop and, you know, I'm used
to the keyboard, it's not a problem. It's, yeah.
And what did you think about split keyboards?
Did you hate the experience? No, I actually liked
it. I liked it enough that it motivated me to
learn to touch type. So I never bothered up to
that point. I type fairly fast, but I do look
at the keyboard sometimes. So I used to keep
a touch keyboard in my lap, but I couldn't see
it. And I would stare at the screen, and then
I would, you know, I taught myself to touch type
with it and stuff. It was good. I mean, it's
something I recommend to people who are having
issues, if they don't want to be eligible to
work in a declining chair. Yeah, we're all going
that route. We're all finding ways because I'm
in my chair here. I'm not comfortable. I bought
one of those standing desks. I never used it.
I used it like five times. Now it has never gone
up. Now that didn't work. So I think that's the
OG way. That's the next step. I'm going to talk
to my wife and she's going to be like, but now
what? She's not going to be happy about it. Yeah,
this was, I actually had to convince my wife
to get me this as a birthday present. Do your
purchases have to go through the approval of
the boss in the house? If you want to buy a new
keyboard, does he have to approve it? No, not
to that level, but this was a pretty big purchase.
In fact, the chair was so large that it didn't
fit through the door of my room. We had to disassemble
it and bring it in and then reassemble. So it's
like a throne. That kind of thing, yes, the boss
has to sign off. It's like a throne. It's not
a chair, right? So you're like the king of the
house there. Okay. It has a built -in massage
function. So, you know, I get a massage every
day. So that's nice. Oh, that's cool. You mentioned
the other day that you swim, right? Because in
the previous call that we had, you mentioned
that you came from swimming. Do you take swimming?
Is that your sport or? So I do two things. Swimming
and stair climbing. So I swim three days a week.
Stair climbing, okay. Stair climbing. So I have
this big, I have this big backpack, 12 kg backpack.
I strap that on and I climb 185 floors. So I
live in a multi -story building. So, you know,
I just climb multiple rounds of it. So those
are the two things I do. So I'm, I'm a big, I'm
a big trekker. I love to trek in the mountains,
the Himalayas, which is, you know, north of India.
So every year, my entire family, we go for like
a three week vacation in the Himalayas. go for
long treks and stuff. So the stair climbing is
kind of a way to stay in shape. You know, now
my kids are growing up and I'm growing old, so
I have to keep up with that. So, you know, I
do a lot of hard work to make sure I can keep
up with that. Oh, okay. And what about your knees?
Don't you get scared about your knees doing the
stair climbing and all that stuff? So I do a
bunch of warm -ups and exercises and I wear,
you know, those kneecap things that they must
take. supports for your knees so actually as
a young man when i used to play badminton i dislocated
my kneecap oh and so as a result as a result
that week is although me has always been the
week but i take good care of it i do a lot of
exercises and stuff and the way i look at it
is you know you you have one life you might as
well use your knees for something you enjoy while
you can okay and what do you swim you swim like
in a private pool or something you take out so
my my i live in a multi -story so there's a it
has an attached gym and swimming pool and stuff
oh okay nice yeah okay okay now you're into caliber
right so i i assume you like to take notes i'm
not sure but what tool do you use to take notes
if you you so i don't take notes So I told you
my philosophy is very much finish everything
as soon as you can. So I take something and then
I work on it, focus, concentrate, finish it,
and then forget about it. So I write whatever
notes in line as documentation. So I don't know
if you've looked at Saykiri's documentation,
it's quite comprehensive. So I'm making it a
habit to always document everything I do in a
way that's accessible to other people as well.
And so that serves as my notes. I look at my
own documentation in the future if I need to
understand something. Similarly in the source
code where I feel that there is something that's
complicated or I want to document it right there.
And that serves as my notes. I also use emails
as a to -do list. So I have a very sophisticated...
I told you about that funny widget system of
KDE where I wrote my first widget. to track the
email so i so you know ever since those days
i have a very sophisticated email system you
know everything gets seed scripted and you know
put into folders and stuff and so i use that
as a category list okay okay awesome now talking
about operating systems what's your history with
linux why did you decide to go with linux were
you on windows before and uh yeah just about
your operating system history Like I said, I
started with a ZX Factory. It ran basically,
it had no real OS. Okay. After that, my first
normal winter laptop, I think my dad got a laptop
from work. So that was my first proper laptop.
And I remember playing Prince of Persia on it.
As for Linux, the reason I installed it is because
I'm a tinkerer. I love to tinker with things,
both physical things and software. And so, you
know, Linux just, you know, it's meant for tinkerers.
So I installed, I think it was a Red Hat 6. I
think it was the first Linux I installed ever.
I think I used the KDE desktop. Again, I preferred
KDE to GNOME because, again, KDE is more tinker
-friendly than GNOME. And so I remember in those
days, you know, there was no so much internet.
I mean, I think you had to connect to the internet
through a BBS, a dial -up service. And so you
couldn't download big files and stuff. And I
remember I got a Linux Red Hat 6 CD from... computing
magazine. I'm not sure, I don't remember. It's
something like on the CD, and I use that to install
Red Hat 6. Initially, I used to dual boot with
Windows, mostly for games. But then, pretty soon,
I switched to Linux only. I think from Red Hat,
I moved to Gen 2, again, because of the tinkering
thing. And then at some point, about 20 years
ago, I think, I switched to Arch. I've been with
Arch ever since then. Mostly because the compile
times in Gen 2 were getting too annoying. So
I switched to Arch. I actually run Arch on all
my servers as well. Oh, really? So you're not
scared of anything? You're not scared of anything?
No, not at all. I don't know, maybe it's hubris,
but I feel that any software problem, I can solve
it. Modesty apart, right? Modesty apart. Yeah,
no, I mean, I just have that attitude. I'm not
scared of having a software problem. I've struggled
with problems many times, but in the end, I'm
able to solve them for sure. Okay. Yeah. So Arch
is your main driver then, right? Yes, yes. You
look more stable. You look more like a Debian
person. What are your thoughts on Debian? I've
never used Debian. But I will say that it is
extremely annoying as a software maintainer because
it has extremely out -of -date software. So people
will try to run your up -to -date software on
a system that's really old. And then there are
also issues with that that you have to deal with.
But other than that, I don't use it, so I don't
really have much to say about it. People seem
to be happy with it. More power to them. Okay.
And you mentioned you run Arch in all your servers.
No GUI, I guess, just headless servers, right?
No, absolutely no GUIs. Okay. Have you had any
issues with Arch there? None. No? I don't have
issues with Arch. If there is an issue with some
software, I just roll it back or I fix it myself.
Okay. And so what do you think people have issues
with Arch? What would you say is the main issue?
And how do you roll back? Is that something you
do at the operating system level, like with snaps?
I'm not sure how you guys do it, but how do you
roll back? I'm an Arch user from way before snapshot
file systems existed. I do it the old -fashioned
way. I go look in the Pac -Man cache for the
old version of the package and manually install
it to hear what... whatever the issue is. Mostly,
if there's an issue, you can fix it yourself
or I can fix it myself. But very rarely, I need
to revert and I do that. I just manually revert
that particular package that's causing a problem
and put a note in the Pac -Man conf file that
this thing should not be upgraded. I use the
word term slot, which is from Gen 2, but the
article isn't. I masked it or whatever it's called.
And then, you know, That's fine. It's what's
great for me. I run, my servers have like multi
-year uptime. Okay. My laptop has typically a
month or two of uptime. It ends up getting rebooted
because I take it somewhere and switch it off
for one hour. Okay. So, like you said, I seem
stable. So, my computing experience is very stable.
Okay. I stick with Arch because it works. It's
stable for me. I'm not saying it's for everybody,
but at least for me, it's very insane. Okay.
And have you thought about this other one out
there? OS? Yeah, it's an operating system, Nix,
that everyone talks about. You should move to
Nix, Nix, Nix, Nix, Nix. Have you heard about
it? Do you have any thoughts? So I'm probably
going to get blamed for this, but I find Nix
OS... is an unnecessary complication. It's like
a whole extra layer on top of the base system
that gives you some good things. It gives you
reproducibility and the original back and stuff
like that. And that's great. But I don't think
it's worth the complication. So again, this is
a personal thing. I'm not saying this is true
for anybody else, but I find that Linux by itself
is pretty easy to maintain and to keep functional.
given that you don't really need, I don't really
need what NixOS gives you. And so I find that
the extra complication from it is not worth the
benefit for me. As a single user, right? If you're
a user that maintains, I don't use Nix and I'm
not planning on using Nix, but I would say that
if you're maintaining, I don't know, 200 computers
and you need to clone them, you know. all at
once, probably could be useful. But other than
that, and you're a single computer using Nix,
does it make a lot of sense? No, to me, it doesn't.
So I actually was the sysadmin for the particle
theory group at Caltech. So I used to maintain
about 50 desktops and a couple of supercomputers.
And I think back then, there was obviously no
Nix. As far as I remember, we used to use Red
Hat and I used to script that. get the system
to the state I wanted it in. So, you know, if
a computer was terminally broken, I would just
take off the user data from the home partition
and wipe it and reinstall it with my script and
put back the data. A bash script. I think it
was a Python script. I haven't put it under now,
actually. This is long, long time ago. But that
was my experience with running a fleet of computers,
a small fleet, 50 computers. But, Yeah, I mean,
I found even there that that was enough. Most
of these computers were used by the faculty and
students. And they didn't really screw up so
much. I didn't give them root access, so... They
couldn't do much. Yeah, yeah. And these were
physicists. They weren't computer geeks. They
didn't want to keep installing software and trying
new things and shit like that. They just wanted
a stable system that worked well. It worked out
fine. Okay, okay. What are your thoughts on macOS?
I noticed that you use macOS. How do you run
macOS, by the way? Because in the last time that
you shared your screen, I saw that you were running
macOS. How do you run it? I actually have an
Airbox. I need to have both Windows and macOS
computers for Calibre, actually, because Calibre
deals with devices that connect via USB. So I
need to have actual computers to test things
on. Okay. So I have those. But in addition, I
run both macOS and Windows in QMU VMs. Oh. So
both Calibre and Qt are actually built via operating
systems in QMU VMs that run on a server somewhere
in the cloud. So it's kind of like a CI service.
But again, this thing existed a modern decade
before CI services existed. So I've been doing
that since then. It works for me, so I keep doing
it. Because I run macOS as a virtual machine
in Proxmox, but there's a limitation in macOS
with the 7 megabytes of VRAM, and it feels really
slow. Have you encountered that issue on macOS?
I don't use it as a GUI. I use it headless. Oh,
the macOS just headless? No, the VMs are just
headless. The actual MacBook Air that I have,
that's where I test the GUI. So for me, the QEMU
VMs are all headless. Both the Windows and the
Mac OS VMs are headless. I SSH into them and
run my build jobs or test jobs or whatever it
is. So just in the terminal then? Like the Mac
OS one, for example. So what... So it runs an
SSH server. So what I do is I install it in QEMU
using the GUI. And yes, the performance sucks.
There's no USB, there's no video, etc. But this
is for the installation. You don't really need
performance there. And then once it's installed,
I set up the SSH server. And then I just log
out and reboot into it headless. And then I do
everything from the SSH channel. Oh, okay. And
what are your thoughts on macOS then? I had never
used macOS beyond for supporting Calibre and
KDE. So I'm not really qualified to... comment
on it. One thing I will say is I don't like the,
I told you I'm a tinkerer. I like to be able
to change things. And Apple is kind of a bit
of a control freak. It doesn't like you to change
things so much. So that kind of is against my
personal philosophy. So that's why I never even
really looked at macros much. It's attractive
that it's a stable system that has a Unix foundation.
But again, like I said, for me personally, I
find Linux to be quite stable. So, you know,
I've already looked into my class. But if it
works for you, that's great. I'm very much of
the philosophy that you should use what works
for you. I don't like to be prescriptive about
it. I can tell you what works for me, but everybody's
different. For video, macOS works for me. But
I've been thinking about switching to Linux,
you know, but because if I do these type of stuff,
videos, I would find a little bit of limitations.
They're like my phone is my camera right now.
And it's natively picked up by the computer,
right? So if I switch to Linux, I would have
to find a different camera. So, yeah, if I wouldn't
do YouTube, I would be on Linux, I think. I'm
pretty sure you can get your phone to be a camera
on Linux as well. I don't remember the name now,
but there is some app you can install on Android
phones that allows you to use it as a set. People
have mentioned that, yeah. Yeah, maybe I'm just
finding excuses. Well, I mean, it makes sense.
You have a system that works for you that's set
up. I mean, there's a big cost to moving. It's
a lot of work. It's a lot of work. And what are
your thoughts on Windows? Do you like Windows?
I have mad respect for Microsoft's maintaining
backward compatibility across Windows versions.
It's the only system where compared to Microsoft
Linux where an application that was compiled
20 years ago is still likely to work. That said,
the downside, the flip side of that is that the
actual APIs in Windows are a horrendous mess.
And because it's It's the only non -unique source
system. So yeah, everything is different. For
example, something that really gets my goat in
Calibre, in Windows, is it has mandatory file
locking. So if a file is open in one program,
no other program can access it. You don't tend
to realize that, but when you're writing a program
that manages files, it's a huge pain. For example,
in Calibre, say you change the title of a book.
The location and the file system where it's stored
changes because the folder name contains the
title. Or the file name contains the title. Now
if a user happens to have, say, opened that folder
in Explorer or opened the e -book in some program,
the rename operation fails. Like a PDF. Let's
say they have it open as a PDF and they're PDF.
So the rename operation fails. And, you know,
it's insane. It's really difficult to write robust
file operations on Windows because, ironically,
the old point of mandatory file locking is supposed
to be more robust. But in a lot of situations,
it ends up being less robust. You actually have
to sometimes reboot Windows to complete file
move operations. What's that? For a long time,
there was this meme that every time Windows updates,
you have to reboot it. A big reason for that
is these mandatory file logs. Yeah, anyway, that's
my criticism of Windows. But like I said, I have
mad respect for the level of backward compatibility
it gets. And yeah, it is the most successful
and most popular operating system out there.
Okay, okay. Now, you mentioned as well about
the servers that you run. Do you have a home
lab or something? No, these are all in the clouds.
I use OVH. I used to be a Rackspace user and
before that a Slicehost user. And now it's just
a VH, so the one in the cloud. I do have like
six network computers at home, but I will call
it Homeland. Okay, okay. And on your keyboard,
do you use QWERTY or do you use a different layout?
QWERTY. Yeah. Why didn't you go to one of the
exotic ones? I never fed the cost -resort game.
The destruction, if it teaches you how to type
again, and not... all the way, but, you know,
quite a bit. And I don't, I don't thought the
benefit was that. So like, I know a lot of people
obsess about typing, but I don't think typing,
at least for me, is a bottleneck. When I'm, when
I'm coding, I'm thinking, I'm, you know, designing
things in my mind. The speed at which I type
is really not a bottleneck or a concern. I do
find keeping my fingers on the keyboard to be
good. I don't like to, switch to the mouse i
told you i have a i don't even have a mouse i
have a track point so i don't have to switch
to the outlet and that is one of the reasons
that i uh you know like download flows and that
but beyond that i don't think i don't think typing
at least for me is a bottleneck i just i find
it like fast enough i'm not i'm not a fast typer
but i'm fast enough okay okay yeah Now, to wrap
it up, Kovid, just questions that are not tech
-related. Are there two movies that you want
to share with us? Movies that you like? Movies.
Yeah. Recent movies? Or your favorite movies
of all time? Well, speaking of favorite movies,
the movie that gave me the courage to take the
leap from grad school to caliber was, funnily
enough, a movie called Frost Mixin'. which was
about Nixon, the US president, and a journalist
named Frost who interviewed him. And, you know,
he had to, I don't remember the details now,
this was 20 years ago, but that movie sort of
inspired me, gave me the courage to do what I,
what I, yes, that's the movie, you know, what
I really wanted to do. Yeah, so that's a movie
I recommend everybody watch. Another favorite
movie of mine is Dr. Zivago. Dr. Zivago. It's
an old movie. It was starring Omar Sharif. Yes,
this one, yes. So this was a... I actually love
the novel and the movie, so I really recommend
everybody to do. read them all the AdWords today.
Okay. Okay. Awesome. And what type of music are
you into? Do you want to share with us two of
your favorite bands? I'm not much of a musical
person. I don't listen to music very often. You
cannot concentrate and listen to music and work
at the same time? I find it. One type of music
that kind of works for that is Gregorian chant,
especially monks. But that's it. But yeah, I
don't normally listen to music. I sometimes listen
to music when I'm working out, but even that,
I don't normally do. So I'm very much off the
sort of mindset, I guess, that you need to focus
on what you're doing one thing at a time. So
I like to give my full focus to whatever I'm
doing. If I don't listen to music, I only listen
to music. If I'm, you know, doing something else.
Can you do multiple things at once? I'm very
bad at doing multiple things. Yeah, me neither.
If I'm talking on the phone, right, or I'm talking
on the phone and my wife talks to me, she's gone.
I'm not, I may look at her, but I'm not there,
you know? So I cannot, and she can't do those
things. She can't be talking and doing something
else. Me, I can't. Are you good with that? No,
I'm the same way. I can't do much. I actually
find women tend to be better than men at this
kind of thing, but I don't know if they're multitaskers
at all. But yeah, I personally can't. I have
to do one thing at a time. Okay. Now, to wrap
it up then, what is the best way, let's say that
someone finds caliber? Calibre is an amazing
first grade tool. My wife used it and she's like,
man, this is amazing. It should be more popular.
You should be a millionaire because of this tool.
Just Calibre itself, right? Is Kiti your tool
to work in Calibre or how does that work? Yeah,
is Kiti your tool, basically? That's what I'm
trying to ask. Yeah, Kiti is, as I told you,
mostly because I wanted to use terminal win and
Or, you know, I didn't find the existing terminals
good enough. And I'm very much a terminal workflow
person. So Kitty, you know, facilitates my workflows
and makes me more efficient at working on everything,
including Calibre. But yes, at this point, it's
fun. It's just something I do as a fun side project.
Kitty is my fun side project. Calibre is my day
job. Okay, okay. And what is the best way then
to support you? Going to GitHub and donating
there or in the Patreon? Because you have a Patreon
for Calibre, I think, right? Yes, yes. What's
the best way? Whatever works for you. If you
go to the Calibre website, you can make a donation
by PayPal, by Patreon, by GitHub sponsors. It's
all there, whatever works for you. It's very,
very received. I've been I've been working full
time on open source supported by donations for
now 20 years almost. So I hope to continue doing
so for many years months. Awesome. Awesome. So
any final words before we wrap it up? Thanks
for listening. I hope I wasn't too helpful. It
was interesting. You know, keep up your interest,
keep up your, keep tinkering, keep discovering
new tools, keep, you know, fooling around, having
fun. Remember that the reason that we are all
into computers is because it's fun. Don't lose
that sense of fun. Have fun. Enjoy yourselves.
All right, COVID. Really appreciate it. Have
a great Sunday, man. Thanks for having me. You
too.