WEBVTT

00:00:00.000 --> 00:00:01.720
So maybe one of the things that I want to do

00:00:01.720 --> 00:00:03.799
is I want to print out the value of this variable

00:00:03.799 --> 00:00:06.620
foo after it's been multiplied by two. I'll do

00:00:06.620 --> 00:00:10.720
G question mark V. And what will happen is debug

00:00:10.720 --> 00:00:13.279
print will insert a print line. I'm going to

00:00:13.279 --> 00:00:15.820
run the script again in my terminal. You'll see

00:00:15.820 --> 00:00:17.960
that it now prints out debug print. And here

00:00:17.960 --> 00:00:20.260
it's printing out at the end the value foo equals

00:00:20.260 --> 00:00:23.320
246. If I want to repeat it down here, debug

00:00:23.320 --> 00:00:26.399
print supports dot repeat, the fin dot repeat

00:00:26.399 --> 00:00:29.379
function. So I can just press dot. And now I

00:00:29.379 --> 00:00:32.039
get that same print out here. Debug print is

00:00:32.039 --> 00:00:34.000
able to remove those statements anyway, because

00:00:34.000 --> 00:00:36.640
it provides the command called delete debug prints.

00:00:37.039 --> 00:00:39.700
So I can just type delete debug prints and they're

00:00:39.700 --> 00:00:41.659
all gone. If you're listening to this as a podcast,

00:00:41.960 --> 00:00:44.140
remember that it was originally recorded as a

00:00:44.140 --> 00:00:46.200
video. If you're not following along, you can

00:00:46.200 --> 00:00:48.479
go to my YouTube channel. My username is Linkarzu.

00:00:48.640 --> 00:00:50.820
And if you want to support me to keep this podcast

00:00:50.820 --> 00:00:53.600
going, you can donate in Ko -fi. I'm going to

00:00:53.600 --> 00:00:55.759
leave a link in the description. All right. So

00:00:55.759 --> 00:00:58.420
let's get started with this chapter then. Hey,

00:00:58.420 --> 00:01:01.840
Andrew, how's it going? It's going good. It's

00:01:01.840 --> 00:01:04.120
going good. Chris, how's it going with you? It's

00:01:04.120 --> 00:01:06.819
going good as well. What time is it where you're

00:01:06.819 --> 00:01:11.900
at? It's just gone 20 past six in the evening.

00:01:12.120 --> 00:01:15.739
So, yeah, kind of like beginning to wrap up for

00:01:15.739 --> 00:01:18.200
the day here. So great time to great time to

00:01:18.200 --> 00:01:22.299
connect and chat. Oh, yeah. It's 1121 a .m. here.

00:01:22.739 --> 00:01:26.359
So, yeah, thanks for joining. Thanks for. No

00:01:26.359 --> 00:01:28.909
problem. your time today, you're going to share

00:01:28.909 --> 00:01:31.930
with us about your NeoBIM plugin. Is that correct?

00:01:32.090 --> 00:01:35.230
Yeah, that's right. Yeah, I thought I'd talk

00:01:35.230 --> 00:01:37.750
to you a little bit about a NeoBIM plugin I've

00:01:37.750 --> 00:01:41.969
built called DebugPrint or DebugPrint. and maybe

00:01:41.969 --> 00:01:43.549
kind of give you a little bit of a demo and a

00:01:43.549 --> 00:01:46.109
flavor, or we can talk a little bit about, you

00:01:46.109 --> 00:01:48.109
know, what kind of led me to create it in the

00:01:48.109 --> 00:01:50.150
first place. And, you know, some of my experience

00:01:50.150 --> 00:01:53.030
is creating NeoVim plugins or specifically this

00:01:53.030 --> 00:01:56.069
NeoVim plugin. Okay. Is this your first plugin

00:01:56.069 --> 00:01:59.250
or you have more? So I actually have another

00:01:59.250 --> 00:02:02.329
plugin that I maintain as well called wrapping

00:02:02.329 --> 00:02:06.780
.envim. I think debug print is kind of more interesting.

00:02:06.879 --> 00:02:08.740
It's certainly more full feature than it's kind

00:02:08.740 --> 00:02:10.759
of where most of my attention goes these days.

00:02:10.879 --> 00:02:12.840
So that's why I thought we'd talk about that

00:02:12.840 --> 00:02:14.840
today. But yeah, I have another plugin called

00:02:14.840 --> 00:02:17.500
wrapping .envim, which is all to do with kind

00:02:17.500 --> 00:02:20.020
of switching between soft and hard wrapping automatically.

00:02:20.419 --> 00:02:22.560
It needs a little bit of love and attention though.

00:02:22.659 --> 00:02:25.360
So that's one of the reasons why I thought maybe

00:02:25.360 --> 00:02:28.099
we'd talk about debug print instead today. Okay,

00:02:28.219 --> 00:02:32.620
wonderful. Do you mind showing us your repo?

00:02:33.080 --> 00:02:35.479
just to get an idea of what the plugin is about?

00:02:36.099 --> 00:02:38.659
Yeah, sure. So this is the repo you can see here

00:02:38.659 --> 00:02:41.819
on the screen. You can find it here at andrewferrier

00:02:41.819 --> 00:02:47.080
.debugprint .envim. So essentially, if we kind

00:02:47.080 --> 00:02:48.919
of just sort of scroll down and take a look at

00:02:48.919 --> 00:02:50.860
the readme. So basically, this is just kind of

00:02:50.860 --> 00:02:54.180
talking about what DebugPrint does in the general

00:02:54.180 --> 00:02:57.680
sense. So really, this plugin was kind of born

00:02:57.680 --> 00:03:02.150
out of some pain that I had in debugging. um

00:03:02.150 --> 00:03:05.129
kind of shell scripts and python scripts and

00:03:05.129 --> 00:03:07.569
other things i don't do a lot of kind of like

00:03:07.569 --> 00:03:11.050
hardcore programming programming myself anymore

00:03:11.050 --> 00:03:12.990
it's not something that i do as part of my day

00:03:12.990 --> 00:03:15.770
job but i still do it as kind of a hobbyist from

00:03:15.770 --> 00:03:19.830
time to time and so my attitude towards debugging

00:03:19.830 --> 00:03:22.909
tends to be quite lo -fi and low -tech right

00:03:22.909 --> 00:03:26.379
i don't really use kind of full blown debuggers.

00:03:26.379 --> 00:03:29.060
Instead, I like to, you know, use the kind of

00:03:29.060 --> 00:03:31.460
old school method of sticking in lots of kind

00:03:31.460 --> 00:03:34.099
of print statements. But that can be a bit tedious,

00:03:34.180 --> 00:03:37.289
and you know, ends up a bit of a mess. And so

00:03:37.289 --> 00:03:39.889
the idea of debug print was kind of borne out

00:03:39.889 --> 00:03:42.370
some pain there where, you know, I wanted to

00:03:42.370 --> 00:03:44.469
work with several different file types and I

00:03:44.469 --> 00:03:48.370
wanted an easy way to insert kind of debug statements

00:03:48.370 --> 00:03:53.849
into different kind of types of programming language

00:03:53.849 --> 00:03:56.629
or script such that it would kind of show you

00:03:56.629 --> 00:04:00.990
where you were. And it kind of sort of started

00:04:00.990 --> 00:04:03.610
fairly small. You know, I supported only a few

00:04:03.610 --> 00:04:06.189
languages. It's grown a bit, right? So it now

00:04:06.189 --> 00:04:09.590
supports kind of up to 40 file types or programming

00:04:09.590 --> 00:04:11.750
languages and various different variants, including

00:04:11.750 --> 00:04:14.710
almost all of the standard ones that, you know,

00:04:14.729 --> 00:04:17.389
folks in the NeoVim community tend to use. In

00:04:17.389 --> 00:04:19.990
my experience, you know, most modern languages,

00:04:20.149 --> 00:04:24.189
Python, JavaScript, Java, C, Lua, and loads and

00:04:24.189 --> 00:04:27.750
loads of others. um actually if you're interested

00:04:27.750 --> 00:04:29.910
in in this plugin you want to see if it supports

00:04:29.910 --> 00:04:32.750
the language that you're working with if you

00:04:32.750 --> 00:04:34.730
click on this more link it will take you down

00:04:34.730 --> 00:04:37.230
the bottom of the readme to this feature comparison

00:04:37.230 --> 00:04:40.050
table so this feature comparison table actually

00:04:40.050 --> 00:04:43.470
shows how debug print compares to some bits let's

00:04:43.470 --> 00:04:45.910
call them competitor plugins or similar plugins

00:04:45.910 --> 00:04:48.910
and if you take a look down there you can actually

00:04:48.910 --> 00:04:51.730
see down the bottom i've got a list of all of

00:04:51.730 --> 00:04:53.209
the different file types that are supported.

00:04:53.389 --> 00:04:56.310
And of course, I'm showing that debug print tends

00:04:56.310 --> 00:04:59.430
to support kind of almost all of the common ones.

00:05:00.589 --> 00:05:03.470
But yeah, so that's the basic idea is it's there

00:05:03.470 --> 00:05:06.209
to kind of insert kind of debug print lines.

00:05:06.509 --> 00:05:08.449
If you still don't know what that means, it's

00:05:08.449 --> 00:05:10.750
probably going to be easier to show by way of

00:05:10.750 --> 00:05:13.250
a demo, which I guess we'll kind of get to in

00:05:13.250 --> 00:05:16.220
a second. and over time it's grown a whole bunch

00:05:16.220 --> 00:05:19.000
of sort of sophisticated features around highlighting

00:05:19.000 --> 00:05:22.500
lines outputting variables it provides neovim

00:05:22.500 --> 00:05:24.480
key mappings for all of the different sort of

00:05:24.480 --> 00:05:28.319
standard neovim modes and a whole bunch of kind

00:05:28.319 --> 00:05:32.199
of ancillary features as well oh wonderful do

00:05:32.199 --> 00:05:35.240
you want to quickly give us a demo well not quickly

00:05:35.240 --> 00:05:37.800
because that's the that's really interesting

00:05:37.800 --> 00:05:39.879
part of the call you know can you just show us

00:05:39.879 --> 00:05:43.670
around and give us a better idea Sure I can.

00:05:43.870 --> 00:05:46.009
So let me open up a terminal window and I'll

00:05:46.009 --> 00:05:49.069
just start up NeoVim. I tend to use the nightly

00:05:49.069 --> 00:05:51.689
distribution of NeoVim because I'm developing

00:05:51.689 --> 00:05:53.930
a plugin. And so, you know, I tend to like to

00:05:53.930 --> 00:05:55.589
make sure I've got all the very latest stuff

00:05:55.589 --> 00:05:58.370
to, you know, make sure the plugin is able to

00:05:58.370 --> 00:06:00.529
stay on the bleeding edge as well. Although at

00:06:00.529 --> 00:06:02.930
least for debug print, I try to do a reasonable

00:06:02.930 --> 00:06:05.189
job of making sure it's compatible with a few

00:06:05.189 --> 00:06:07.350
versions back. So I think at the moment, you

00:06:07.350 --> 00:06:09.350
know, it's still compatible with NeoVim version

00:06:09.350 --> 00:06:13.420
0 .10, for example. But anyway, let me open up

00:06:13.420 --> 00:06:15.839
just kind of a sort of a sample file, right?

00:06:15.939 --> 00:06:17.620
So what I'm going to do is I'm just going to

00:06:17.620 --> 00:06:23.319
go actually into the debug print repo, the debug

00:06:23.319 --> 00:06:27.279
print repo itself. And I've actually got, let

00:06:27.279 --> 00:06:30.000
me just sort of scroll around. I've actually

00:06:30.000 --> 00:06:32.860
got a sample Python script here, for example.

00:06:33.220 --> 00:06:35.319
So you can see this Python script, incredibly

00:06:35.319 --> 00:06:38.480
rudimentary, even if the folks watching this

00:06:38.480 --> 00:06:41.160
video don't. you know, don't write Python, I'm

00:06:41.160 --> 00:06:43.860
sure they'll understand what this does. You know,

00:06:43.879 --> 00:06:45.519
if you have any kind of programming experience

00:06:45.519 --> 00:06:47.319
at all, right, so obviously, we're just assigning

00:06:47.319 --> 00:06:49.779
the value 123 to the variable foo, and then we're

00:06:49.779 --> 00:06:53.100
multiplying the variable foo by two, bar is being

00:06:53.100 --> 00:06:55.439
assigned 456. And then we're just summing those

00:06:55.439 --> 00:06:57.379
two values together. And we're printing out that

00:06:57.379 --> 00:07:00.000
sum, obviously, a very simple script, right,

00:07:00.040 --> 00:07:01.800
but just for kind of demonstration purposes.

00:07:02.649 --> 00:07:05.069
So, you know, let me open up another terminal

00:07:05.069 --> 00:07:10.990
window and I will go into my DevoPrint. repository

00:07:10.990 --> 00:07:14.329
and I will find that sample script here it is

00:07:14.329 --> 00:07:16.310
let me run that sample script and here you go

00:07:16.310 --> 00:07:19.410
here's the value here's the answer 702 but let's

00:07:19.410 --> 00:07:22.290
say that I'm a little bit confused about why

00:07:22.290 --> 00:07:25.050
it got to the value 702 that wasn't quite what

00:07:25.050 --> 00:07:27.829
I was expecting so I want to insert some kind

00:07:27.829 --> 00:07:31.110
of debug print statements into my code to understand

00:07:31.110 --> 00:07:33.949
what's going on So maybe one of the things that

00:07:33.949 --> 00:07:35.870
I want to do is I want to print out the value

00:07:35.870 --> 00:07:38.230
of this variable foo after it's been multiplied

00:07:38.230 --> 00:07:40.949
by two, but before we add it to bar, right? Just

00:07:40.949 --> 00:07:43.850
so I can see what the result of multiplying one,

00:07:43.910 --> 00:07:46.509
two, three by two is, right? Again, this is obviously

00:07:46.509 --> 00:07:48.370
a bit of a contrived example because clearly

00:07:48.370 --> 00:07:50.850
we can figure that out relatively easily in our

00:07:50.850 --> 00:07:53.449
heads. But let's say I want to print foo. So

00:07:53.449 --> 00:08:01.339
what I'll do is I'll do G question mark V. Excuse

00:08:01.339 --> 00:08:05.459
me. I'll do G question mark V. And what will

00:08:05.459 --> 00:08:08.160
happen is debug print will insert a print line.

00:08:08.839 --> 00:08:11.779
You can see that it's basically formatted in

00:08:11.779 --> 00:08:14.319
a sort of standard Pythonic way in this particular

00:08:14.319 --> 00:08:17.180
case. So it's got this string debug print in

00:08:17.180 --> 00:08:19.420
here. And then you can see towards the end it's

00:08:19.420 --> 00:08:22.259
printing out the value of V. Now, for those of

00:08:22.259 --> 00:08:24.199
you who are watching the video who maybe haven't

00:08:24.199 --> 00:08:26.800
written Python before, essentially this is a

00:08:26.800 --> 00:08:30.259
Python's way of inlining variables into a string

00:08:30.259 --> 00:08:33.519
using this kind of syntax here where it has these

00:08:33.519 --> 00:08:36.500
curly braces. So if I go and run the script again

00:08:36.500 --> 00:08:40.620
in my terminal. Sorry, I need to save the script

00:08:40.620 --> 00:08:42.500
first. That would help. I go and run the script

00:08:42.500 --> 00:08:44.940
again in my terminal. You'll see that it now

00:08:44.940 --> 00:08:47.019
prints out debug print. And here it's printing

00:08:47.019 --> 00:08:50.759
out at the end the value foo equals 246. So,

00:08:50.759 --> 00:08:53.240
you know, not particularly complicated, but the

00:08:53.240 --> 00:08:55.960
really powerful thing is we can then go and repeat

00:08:55.960 --> 00:08:59.059
that, right? So if I want to print out the value

00:08:59.059 --> 00:09:01.899
of foo here just after I've assigned 1, 2, 3

00:09:01.899 --> 00:09:09.480
to it, I can do G question mark V. If I want

00:09:09.480 --> 00:09:11.779
to repeat it down here, debug print supports

00:09:11.779 --> 00:09:14.840
dot repeat, the bin dot repeat function, so I

00:09:14.840 --> 00:09:18.179
can just press dot. And now I get that same printout

00:09:18.179 --> 00:09:21.440
here. Or if I want to print out bar, I can do

00:09:21.440 --> 00:09:26.639
G quote mark V down here, and I'll print out

00:09:26.639 --> 00:09:29.230
the value of bar. If I want to print out some,

00:09:29.470 --> 00:09:31.049
I can do the same thing down here. So you can

00:09:31.049 --> 00:09:34.429
see I can very rapidly debug print statements

00:09:34.429 --> 00:09:38.509
all the way throughout my code. Sometimes I might

00:09:38.509 --> 00:09:41.750
also want to print something more generic just

00:09:41.750 --> 00:09:44.769
to understand where I've got to. This code doesn't

00:09:44.769 --> 00:09:47.570
really have any ifs or loops or kind of conditional

00:09:47.570 --> 00:09:51.529
logic in it at all. But sometimes you might have

00:09:51.529 --> 00:09:54.070
some if statements. So let's say, for example...

00:09:55.159 --> 00:09:58.259
right let's change this can you undo and add

00:09:58.259 --> 00:10:01.620
those debug statements if you just undo yeah

00:10:01.620 --> 00:10:04.580
i can i can and actually i was going a bit too

00:10:04.580 --> 00:10:06.360
quick there wasn't i right because what i've

00:10:06.360 --> 00:10:09.159
actually just done is hit the vim undo key it

00:10:09.159 --> 00:10:12.159
supports vim undo right so i can just hit you

00:10:12.159 --> 00:10:14.720
to remove the statement that i just added in

00:10:14.720 --> 00:10:17.299
the same ways you can undo a lot of stuff in

00:10:17.299 --> 00:10:20.320
vim but there are also other ways of doing it

00:10:20.320 --> 00:10:24.539
so if for example i add a few back in again Right.

00:10:24.659 --> 00:10:28.779
Maybe I save my file. Maybe I even quit Vim and

00:10:28.779 --> 00:10:32.740
I come back and I open that file up again. Right.

00:10:32.820 --> 00:10:35.220
Maybe I've lost my undo history at this point,

00:10:35.259 --> 00:10:38.759
depending on how I've set up NeoVim. But debug

00:10:38.759 --> 00:10:40.860
print is able to remove those statements anyway,

00:10:40.960 --> 00:10:43.179
because it provides the command called delete

00:10:43.179 --> 00:10:46.100
debug prints. So I can just type delete debug

00:10:46.100 --> 00:10:48.679
prints and they're all gone. oh and basically

00:10:48.679 --> 00:10:51.279
all it's doing is just doing a simple match on

00:10:51.279 --> 00:10:55.799
this string debug print here in in capitals and

00:10:55.799 --> 00:10:57.679
it just literally deletes them from the file

00:10:57.679 --> 00:10:59.539
right so that's that's kind of all that's going

00:10:59.539 --> 00:11:03.679
on there um i can actually do some other stuff

00:11:03.679 --> 00:11:08.759
so for example if i type uh toggle uh excuse

00:11:08.759 --> 00:11:14.720
me if i type debug print toggle comments debug

00:11:14.720 --> 00:11:16.279
prints. I don't know why I couldn't find that

00:11:16.279 --> 00:11:18.860
there for a second, but if I type toggle comment

00:11:18.860 --> 00:11:20.559
debug prints, one of the things it will do is

00:11:20.559 --> 00:11:22.279
it will then go through the file and it will

00:11:22.279 --> 00:11:24.200
actually comment them all, right? So in this

00:11:24.200 --> 00:11:26.480
particular case, it's using Python comment syntax,

00:11:26.740 --> 00:11:28.700
which is to put a hash mark in front of each

00:11:28.700 --> 00:11:30.620
line, but it will do that in a way that makes

00:11:30.620 --> 00:11:32.519
sense for the language that you're working with,

00:11:32.580 --> 00:11:35.740
of course, right? So if I now go back to my script

00:11:35.740 --> 00:11:37.919
and I run it again, I'm not printing anything

00:11:37.919 --> 00:11:40.799
out. If I go back to my script and I run toggle

00:11:40.799 --> 00:11:43.179
comment debug prints, it will uncomment them

00:11:43.179 --> 00:11:46.139
again. So if I save that and now I run my script,

00:11:46.240 --> 00:11:49.059
now I've got my debug prints back again. Okay.

00:11:49.659 --> 00:11:52.059
And in script brackets, you see the line number.

00:11:52.179 --> 00:11:54.019
Oh, no, it's not the line number. What is that?

00:11:54.100 --> 00:11:56.679
It's not the line number. No. So the way this

00:11:56.679 --> 00:12:00.870
works by default. is that here it's showing test

00:12:00.870 --> 00:12:03.769
p y is the name of the file and then three is

00:12:03.769 --> 00:12:06.370
the line number it's the line number when the

00:12:06.370 --> 00:12:09.470
line was inserted so debug print isn't smart

00:12:09.470 --> 00:12:13.070
enough to update these statements as you edit

00:12:13.070 --> 00:12:16.169
the file right so if you add lots of lines The

00:12:16.169 --> 00:12:19.529
debug print statement won't change. That's maybe

00:12:19.529 --> 00:12:21.370
a little shortcoming, if we're being honest.

00:12:21.610 --> 00:12:24.149
But that's the line statement when it was inserted.

00:12:24.370 --> 00:12:26.990
So, for example, if I go up here and I insert

00:12:26.990 --> 00:12:29.950
one just after line one, you'll see that it's

00:12:29.950 --> 00:12:32.789
got the line number one as part of that debug

00:12:32.789 --> 00:12:35.350
print statement. The number in the square brackets

00:12:35.350 --> 00:12:38.570
after debug print is how many debug print statements

00:12:38.570 --> 00:12:42.009
I've inserted ever since I've started using debug

00:12:42.009 --> 00:12:44.889
print, right? So I actually, obviously I've done

00:12:44.889 --> 00:12:48.570
more than 22 in my career, right? Because I developed

00:12:48.570 --> 00:12:50.789
debug print itself, but I actually reset that

00:12:50.789 --> 00:12:53.470
counter earlier before we started, you know,

00:12:53.490 --> 00:12:57.210
recording this conversation. But if I quit NeoVim

00:12:57.210 --> 00:13:01.529
and I reopen it again, and I go back to my Python

00:13:01.529 --> 00:13:03.950
script and I insert some more debug print lines,

00:13:04.090 --> 00:13:06.149
you should see it carries on from the same number.

00:13:06.230 --> 00:13:10.610
There you go. 23 if i insert another one 24 if

00:13:10.610 --> 00:13:13.970
i insert another one 25 and this is quite powerful

00:13:13.970 --> 00:13:16.049
because this means if i've got multiple files

00:13:16.049 --> 00:13:18.669
that i'm inserting my debug print lines into

00:13:18.669 --> 00:13:21.509
you know i kind of got this just monotonically

00:13:21.509 --> 00:13:24.190
increasing counter so it makes it easy to tell

00:13:24.190 --> 00:13:26.889
them apart when i'm running my script right so

00:13:26.889 --> 00:13:29.009
you know if my script consists of multiple classes

00:13:29.009 --> 00:13:31.409
or files or modules you know whatever programming

00:13:31.409 --> 00:13:33.809
language i'm using i can easily tell where they

00:13:33.809 --> 00:13:37.429
came from right so this debug print 20 If I'm

00:13:37.429 --> 00:13:39.009
looking at that and that's really interesting,

00:13:39.190 --> 00:13:40.889
but I need to go and correlate it back to my

00:13:40.889 --> 00:13:43.169
source code, all I really need to do is search

00:13:43.169 --> 00:13:45.649
for the number 25 and then I found it. That's

00:13:45.649 --> 00:13:49.429
kind of the idea. So it actually inserts a line

00:13:49.429 --> 00:13:53.190
and it inserts the print statement, basically,

00:13:53.370 --> 00:13:56.450
right? That's correct. That's correct. And it

00:13:56.450 --> 00:13:58.529
does this in Python because it knows that we're

00:13:58.529 --> 00:14:01.799
working with Python. If I were to work with a

00:14:01.799 --> 00:14:03.960
different programming language, so let's say

00:14:03.960 --> 00:14:07.120
I go and edit some Lua code instead, right? I

00:14:07.120 --> 00:14:08.899
write quite a lot of Lua because, of course,

00:14:08.960 --> 00:14:11.360
NeoVim plugins are written in Lua and DeepiPrint

00:14:11.360 --> 00:14:14.320
is written in Lua, right? So if I'm working with

00:14:14.320 --> 00:14:16.940
Lua instead, I can use exactly the same key bindings.

00:14:16.940 --> 00:14:22.679
So I can do G question mark V. Oh, I didn't type

00:14:22.679 --> 00:14:25.700
that fast enough. I do G question mark V, and

00:14:25.700 --> 00:14:28.100
now it inserts the lower equivalent, right? So

00:14:28.100 --> 00:14:30.460
rather than Python code, which of course wouldn't

00:14:30.460 --> 00:14:32.480
make sense in this context, instead it's using

00:14:32.480 --> 00:14:34.799
print, and then it's using this vim .inspected

00:14:34.799 --> 00:14:38.019
tax here to inspect the value of fit. So it's

00:14:38.019 --> 00:14:40.919
basically the lower equivalent of what the Python

00:14:40.919 --> 00:14:43.820
statement would be. And as I say, it works across

00:14:43.820 --> 00:14:46.899
40 -odd different programming languages, right?

00:14:46.960 --> 00:14:50.259
So we have templates that make sense. hopefully,

00:14:50.360 --> 00:14:52.820
at least, for each of those different programming

00:14:52.820 --> 00:14:55.080
languages. And you can actually add your own

00:14:55.080 --> 00:14:57.200
and customize the templates as well if you want

00:14:57.200 --> 00:14:59.960
to kind of get fancy in advance. But out of the

00:14:59.960 --> 00:15:02.679
box, this is kind of how it works. Okay. And

00:15:02.679 --> 00:15:05.000
you specify that highlight group. That's why

00:15:05.000 --> 00:15:08.080
it looks red, the background, right? Yes. So

00:15:08.080 --> 00:15:10.799
the way that it works is out of the box, debug

00:15:10.799 --> 00:15:14.440
print is configured. If you're using mini .envim,

00:15:14.480 --> 00:15:16.940
I'm sure many of your... And many of the people

00:15:16.940 --> 00:15:18.440
watching this video will have come across Mini.

00:15:18.539 --> 00:15:20.039
It's, you know, one of the most popular, in fact,

00:15:20.100 --> 00:15:22.539
if not the most popular kind of like meta plugin

00:15:22.539 --> 00:15:26.559
in the NeoVim ecosystem. So it has a submodule

00:15:26.559 --> 00:15:29.259
called, I think it's Mini Highlight or something

00:15:29.259 --> 00:15:31.179
similar. I forget the exact name off the top

00:15:31.179 --> 00:15:33.470
of my head. But debug print works with that.

00:15:33.610 --> 00:15:36.929
So if you've got mini installed, it will use

00:15:36.929 --> 00:15:39.710
that highlighting module to basically highlight

00:15:39.710 --> 00:15:43.110
any line that contains this exact string debug

00:15:43.110 --> 00:15:49.000
printing in. in capital letters, right? So anywhere

00:15:49.000 --> 00:15:51.659
that you insert it, it will automatically highlight

00:15:51.659 --> 00:15:54.940
that. But it's actually mini -envim that's doing

00:15:54.940 --> 00:15:57.139
that, and then debug -print kind of configures

00:15:57.139 --> 00:16:00.059
it to do that out of the box. If you don't use

00:16:00.059 --> 00:16:02.460
mini and you're not interested and you've never

00:16:02.460 --> 00:16:04.059
installed it and you're not interested in installing

00:16:04.059 --> 00:16:06.340
it, you won't see that red highlight. It will

00:16:06.340 --> 00:16:09.139
just appear like any other code. So that's just

00:16:09.139 --> 00:16:11.179
a convenience feature, and you can turn it off

00:16:11.179 --> 00:16:13.279
in the debug -print options as well if you don't

00:16:13.279 --> 00:16:16.600
like it. Okay, but it does not install. that

00:16:16.600 --> 00:16:19.299
mini plugin as a dependency you have to add it

00:16:19.299 --> 00:16:22.600
manually right if you want the highlight That's

00:16:22.600 --> 00:16:25.639
right. Well, the way that this works, if you

00:16:25.639 --> 00:16:27.740
have a look in the readme for debug print, just

00:16:27.740 --> 00:16:29.820
going back to the Git repo, the way that this

00:16:29.820 --> 00:16:32.120
works, if we go down here, you'll see that the

00:16:32.120 --> 00:16:34.679
example that I give for installing debug print,

00:16:34.899 --> 00:16:37.580
which is for that lazy Envim plugin manager,

00:16:37.799 --> 00:16:39.440
by the way, which I think is probably the most

00:16:39.440 --> 00:16:44.120
commonly used one. Here I'm listing mini Envim

00:16:44.120 --> 00:16:46.519
as a dependency, and it says needed for line

00:16:46.519 --> 00:16:48.580
highlighting. But as it says there, it's optional,

00:16:48.659 --> 00:16:50.700
right? So if you don't include this dependency,

00:16:51.610 --> 00:16:54.070
That's fine. You just won't get that line highlighting,

00:16:54.529 --> 00:16:56.570
basically. So it's kind of your choice. And the

00:16:56.570 --> 00:16:59.350
reason I implemented it that way is because implementing

00:16:59.350 --> 00:17:01.690
that line highlighting is actually not straightforward.

00:17:02.090 --> 00:17:04.430
I kind of looked at doing it myself as part of

00:17:04.430 --> 00:17:07.130
debug print, but doing it in a way that's reliable

00:17:07.130 --> 00:17:09.910
and accurate across all of the different file

00:17:09.910 --> 00:17:13.670
types is quite tricky. So I decided to outsource

00:17:13.670 --> 00:17:18.390
that job, basically, to mini -end them. As an

00:17:18.390 --> 00:17:21.230
aside, I mean, if there are other line highlighters,

00:17:20.839 --> 00:17:23.059
highlighting plugins that folks watching this

00:17:23.059 --> 00:17:25.819
video are using and they're interested in getting

00:17:25.819 --> 00:17:28.200
debug print to work with that i'd certainly be

00:17:28.200 --> 00:17:30.460
interested in hearing from people so feel free

00:17:30.460 --> 00:17:32.960
to open up an issue on debug print if you you

00:17:32.960 --> 00:17:35.460
know if you wanted to work with other similar

00:17:35.460 --> 00:17:38.000
plugins but i used i started with mini nbin just

00:17:38.000 --> 00:17:40.000
because it's probably the most popular one at

00:17:40.000 --> 00:17:42.759
least the most popular one i'm aware of okay

00:17:42.759 --> 00:17:45.839
wonderful so it's installation it's just this

00:17:45.839 --> 00:17:49.970
just basically specify the plugin repo plugin

00:17:49.970 --> 00:17:53.069
name dependencies version in case they want to

00:17:53.069 --> 00:17:56.230
stick to a specific version otherwise you're

00:17:56.230 --> 00:17:59.809
using latest i guess right yeah so this is all

00:17:59.809 --> 00:18:02.009
you need by default if you want to use all the

00:18:02.009 --> 00:18:04.410
default values or the default options for debug

00:18:04.410 --> 00:18:07.920
print This is kind of all you need. You can put

00:18:07.920 --> 00:18:10.420
in some custom options in here. I'll show that

00:18:10.420 --> 00:18:12.680
in a second. They're kind of sort of listed further

00:18:12.680 --> 00:18:15.019
down. And then these are actually just sort of

00:18:15.019 --> 00:18:16.960
standard features of the lazy plugin manager.

00:18:17.180 --> 00:18:20.059
So this is just basically this lazy equals false

00:18:20.059 --> 00:18:22.740
is required to make that line highlighting that

00:18:22.740 --> 00:18:25.019
we were just talking about work. If you don't

00:18:25.019 --> 00:18:28.099
have that set up, it won't work until you do

00:18:28.099 --> 00:18:30.460
the first debug print command for reasons that

00:18:30.460 --> 00:18:32.559
are a bit fiddly and too complicated to explain

00:18:32.559 --> 00:18:35.579
here. But that's why. have lazy equals false

00:18:35.579 --> 00:18:38.460
in there. And then yes, this basically makes

00:18:38.460 --> 00:18:41.720
it use the stable version. So the way that I've

00:18:41.720 --> 00:18:44.099
been developing this plugin, at least, which

00:18:44.099 --> 00:18:46.559
seems to be following the sort of standard conventions

00:18:46.559 --> 00:18:50.420
in the NeoVim kind of plugin ecosystem is I give

00:18:50.420 --> 00:18:54.779
my plugins tags or version numbers in GitHub,

00:18:55.160 --> 00:18:57.900
right? So, you know, using the way that lazy

00:18:57.900 --> 00:19:00.380
works, basically, it will install the latest

00:19:00.380 --> 00:19:03.200
tag. And then from time to time, I will create

00:19:03.200 --> 00:19:05.960
a new version. based upon all the new features

00:19:05.960 --> 00:19:09.180
and fixes and stuff on the head of my main branch,

00:19:09.359 --> 00:19:12.000
and then that becomes the new version. But basically,

00:19:12.099 --> 00:19:14.279
if you're not that interested in the plug -in

00:19:14.279 --> 00:19:16.240
development aspect and you just want to use this,

00:19:16.519 --> 00:19:18.900
then version equals star is almost certainly

00:19:18.900 --> 00:19:20.740
what you want because it just gives you the latest

00:19:20.740 --> 00:19:24.339
stable version of debug print, basically. Okay.

00:19:24.440 --> 00:19:28.779
I have a question. What if there's someone that

00:19:28.779 --> 00:19:32.140
encounters... programming language that is not

00:19:32.140 --> 00:19:35.079
supported. Can they submit PRs? Do you accept

00:19:35.079 --> 00:19:38.740
PRs? Absolutely. Absolutely. I'd be very keen

00:19:38.740 --> 00:19:42.119
to accept PRs, although you can also just configure

00:19:42.119 --> 00:19:46.079
it for yourself locally. That works too. So if

00:19:46.079 --> 00:19:52.839
you go down in the repo, there's a whole bunch

00:19:52.839 --> 00:19:55.279
of sections here, by the way, that talk about

00:19:55.279 --> 00:19:58.420
all of the standard key mappings and kind of

00:19:58.420 --> 00:20:01.829
how they work. I've sort of shown the one for

00:20:01.829 --> 00:20:04.230
variable in particular, but there's also just

00:20:04.230 --> 00:20:06.470
plain debugging and then there's surrounds and

00:20:06.470 --> 00:20:08.890
other things that I haven't sort of shown yet.

00:20:09.569 --> 00:20:11.789
But anyway, that's all listed in there. And then

00:20:11.789 --> 00:20:13.369
there's a whole section that talks about all

00:20:13.369 --> 00:20:15.549
of the different customizations and options that

00:20:15.549 --> 00:20:18.569
you can do. But if you scroll down a little bit

00:20:18.569 --> 00:20:22.990
further, all the way, where is this listed? All

00:20:22.990 --> 00:20:25.849
the way down the bottom, you'll see that there's

00:20:25.849 --> 00:20:28.710
an ability to add custom file types. So if you

00:20:28.710 --> 00:20:31.269
click on that, That takes you to what I call

00:20:31.269 --> 00:20:35.849
the showcase. So this configuration showcase

00:20:35.849 --> 00:20:39.049
file, this is basically like an addition to the

00:20:39.049 --> 00:20:43.430
readme. And what I'm trying to do in here is

00:20:43.430 --> 00:20:46.490
capture some kind of sort of more advanced tips

00:20:46.490 --> 00:20:50.390
and tricks for debug print or kind of more unusual

00:20:50.390 --> 00:20:53.190
customizations for folks who want to use stuff,

00:20:53.390 --> 00:20:55.329
you know, that's kind of a little bit just beyond

00:20:55.329 --> 00:20:58.640
that. kind of outbox functionality. And one of

00:20:58.640 --> 00:21:00.400
the things in there, as you can see, is kind

00:21:00.400 --> 00:21:03.799
of modifying or adding your own file types, right.

00:21:03.940 --> 00:21:07.059
So basically, the way that you do this is you

00:21:07.059 --> 00:21:09.259
kind of sort of set up this simple little structure

00:21:09.259 --> 00:21:13.000
in lower locally in your NeoVim configuration.

00:21:13.940 --> 00:21:16.240
Basically, there's a mechanism where you specify

00:21:17.480 --> 00:21:19.980
you know, both the sort of left -hand side of

00:21:19.980 --> 00:21:22.500
the print statement before the auto -generated

00:21:22.500 --> 00:21:25.500
NeoVim bit, and then the right -hand side bit

00:21:25.500 --> 00:21:28.599
of that print statement. And you express that

00:21:28.599 --> 00:21:30.940
in whatever makes sense for the programming language

00:21:30.940 --> 00:21:33.500
you're working with. And then you kind of pass

00:21:33.500 --> 00:21:37.200
that into the setup mechanism, the setup function

00:21:37.200 --> 00:21:41.609
that you're setting up debug print with. in lazy

00:21:41.609 --> 00:21:44.029
or whatever programming language you want to

00:21:44.029 --> 00:21:46.569
use. So you can just do that locally in your

00:21:46.569 --> 00:21:49.529
own NeoVim configuration if you want to. But

00:21:49.529 --> 00:21:51.910
if you figure one out for a programming language

00:21:51.910 --> 00:21:53.829
that you think other people would want to use,

00:21:53.950 --> 00:21:56.569
I'm absolutely very keen and happy for people

00:21:56.569 --> 00:22:00.069
to open, I say issue here, but I'm also obviously

00:22:00.069 --> 00:22:02.549
pull request is fine too, right? You know, we'd

00:22:02.549 --> 00:22:05.009
be very keen and happy to hear from anybody who's

00:22:05.009 --> 00:22:08.380
using. Maybe a language that's a little bit unusual

00:22:08.380 --> 00:22:11.319
that, you know, isn't part of the sort of standard

00:22:11.319 --> 00:22:15.579
40 that are kind of sort of currently supported

00:22:15.579 --> 00:22:18.400
by debug print. More than happy to kind of sort

00:22:18.400 --> 00:22:21.480
of add those in and maintain those. You know,

00:22:21.519 --> 00:22:23.220
the configuration of each programming language

00:22:23.220 --> 00:22:26.500
is not particularly tricky to do. As long as

00:22:26.500 --> 00:22:28.359
you know how to program in that language and

00:22:28.359 --> 00:22:30.519
you know how to print out a string, you can pretty

00:22:30.519 --> 00:22:33.880
much figure this out, right? So, yeah. happy

00:22:33.880 --> 00:22:36.180
to and if anyone's kind of struggling with this

00:22:36.180 --> 00:22:37.759
process because you know it can be a little bit

00:22:37.759 --> 00:22:39.200
fiddly especially if you've never written any

00:22:39.200 --> 00:22:41.960
lure before again happy to help you figure it

00:22:41.960 --> 00:22:44.200
out if you want to open up an issue on that on

00:22:44.200 --> 00:22:46.299
the repo i can i can talk to people about that

00:22:46.299 --> 00:22:49.559
so that makes it very flexible then you don't

00:22:49.559 --> 00:22:51.599
have to wait on the pr to be accepted and all

00:22:51.599 --> 00:22:54.660
that so you can just add it yourself locally

00:22:54.660 --> 00:22:57.819
and you're good to go That's right. That's right.

00:22:57.920 --> 00:23:00.619
And part of the reason I did this was also because

00:23:00.619 --> 00:23:03.460
I thought that there may be circumstances where

00:23:03.460 --> 00:23:07.099
certain people want local customizations that

00:23:07.099 --> 00:23:11.980
we don't typically have as part of the sort of

00:23:11.980 --> 00:23:14.880
standard debug print. I'll give you a good example.

00:23:14.940 --> 00:23:19.019
One of the things that has come up a lot, especially

00:23:19.019 --> 00:23:21.380
for folks who write JavaScript or TypeScript,

00:23:21.519 --> 00:23:23.259
which is obviously a pretty common language these

00:23:23.259 --> 00:23:27.859
days. is that some people want to use console

00:23:27.859 --> 00:23:31.400
.info rather than console .warn, which is what...

00:23:31.900 --> 00:23:34.579
debug print uses by default. You know, there's

00:23:34.579 --> 00:23:37.200
a good reason why debug print uses console .warn.

00:23:37.279 --> 00:23:39.859
You know, I've been through a conversation, like

00:23:39.859 --> 00:23:42.200
if you're really interested in all the gory details

00:23:42.200 --> 00:23:44.019
and you're into your TypeScript, you can go and

00:23:44.019 --> 00:23:46.779
read this issue here where we sort of debated

00:23:46.779 --> 00:23:49.359
it back and forth. But if you still don't like,

00:23:49.359 --> 00:23:51.900
you know, the answer that I gave, you know, you

00:23:51.900 --> 00:23:54.000
don't like the fact that it uses console .warn

00:23:54.000 --> 00:23:56.140
rather than console .info, you can just change

00:23:56.140 --> 00:23:58.259
that. And I've got an example snippet of how

00:23:58.259 --> 00:24:02.109
to do that. of how to do that here right so both

00:24:02.109 --> 00:24:04.089
folks can have their own local customizations

00:24:04.089 --> 00:24:07.250
for for debug print that are more than just um

00:24:07.250 --> 00:24:09.970
you know more than just what kind of comes out

00:24:09.970 --> 00:24:12.869
of the box if they if they want to do okay so

00:24:12.869 --> 00:24:15.369
you specify it for different file types for four

00:24:15.369 --> 00:24:18.190
different file types the same print statement

00:24:18.190 --> 00:24:21.309
right that's right that's right so that's what

00:24:21.309 --> 00:24:24.750
i'm doing here because the way that JavaScript

00:24:24.750 --> 00:24:28.849
and TypeScript work in NeoVim. There are four

00:24:28.849 --> 00:24:31.250
different NeoVim file types, right? JavaScript,

00:24:31.569 --> 00:24:34.049
TypeScript, JavaScript React, and TypeScript

00:24:34.049 --> 00:24:38.390
React for folks writing React .js. In fact, there

00:24:38.390 --> 00:24:40.950
may even be more variations than that. But off

00:24:40.950 --> 00:24:43.190
the top of my head, those are the ones I'm aware

00:24:43.190 --> 00:24:46.869
of. So that's kind of how I've expressed it there.

00:24:47.109 --> 00:24:49.309
So the way these file types work is these are

00:24:49.309 --> 00:24:53.430
NeoVim file types. So depending on how familiar

00:24:53.430 --> 00:24:56.190
you are, you are with NeoVim. If you take a look

00:24:56.190 --> 00:25:00.589
at your NeoVim window, I've got a custom status

00:25:00.589 --> 00:25:02.369
line. So this may look a little bit different

00:25:02.369 --> 00:25:04.410
from how other folks have got their NeoVim set

00:25:04.410 --> 00:25:07.490
up. But, you know, every NeoVim file has a file

00:25:07.490 --> 00:25:10.230
type. Lua is obviously Lua, right? Python is

00:25:10.230 --> 00:25:11.950
obviously Python. But, you know, some of them

00:25:11.950 --> 00:25:14.250
are a little bit less obvious. I guess JavaScript

00:25:14.250 --> 00:25:16.309
React is one of those. But yeah, these are NeoVim

00:25:16.309 --> 00:25:19.730
file types, basically. Okay, wonderful. You want

00:25:19.730 --> 00:25:22.549
to show us other stuff that you use the plugin

00:25:22.549 --> 00:25:27.259
for? Sure. So there's a few kind of like slightly

00:25:27.259 --> 00:25:30.140
more unusual features. Let me see what we can

00:25:30.140 --> 00:25:34.740
find. So let me just go back to my script .lua.

00:25:34.819 --> 00:25:36.900
So one of the things I added relatively recently

00:25:36.900 --> 00:25:40.079
at someone's request is what I call the surround

00:25:40.079 --> 00:25:45.599
feature. So if I do G question mark S. p it will

00:25:45.599 --> 00:25:48.180
actually insert two debug print lines one above

00:25:48.180 --> 00:25:51.839
and one below that's actually it sounds a little

00:25:51.839 --> 00:25:54.059
bit weird but it's the kind of thing if you do

00:25:54.059 --> 00:25:56.180
this if you use this kind of do this type of

00:25:56.180 --> 00:25:58.460
debugging a lot because you're a bit lazy like

00:25:58.460 --> 00:26:00.339
me and you like to do it this way rather than

00:26:00.339 --> 00:26:02.240
using a proper debugger that can actually be

00:26:02.240 --> 00:26:04.680
quite useful right because maybe bar equals two

00:26:04.680 --> 00:26:08.269
takes 10 seconds to run I mean obviously it doesn't

00:26:08.269 --> 00:26:09.990
in this case right but you know maybe it's a

00:26:09.990 --> 00:26:12.470
long running operation or you're kind of surrounding

00:26:12.470 --> 00:26:14.250
a function invocation or something like that

00:26:14.250 --> 00:26:16.190
and you want a print statement directly before

00:26:16.190 --> 00:26:18.670
it runs and then a print statement directly after

00:26:18.670 --> 00:26:21.049
it runs so you can do that and then that's a

00:26:21.049 --> 00:26:23.490
kind of an atomic thing so if I undo that they

00:26:23.490 --> 00:26:26.230
both disappear at the same time you know I can

00:26:26.230 --> 00:26:28.549
also do the same thing with the variable variation

00:26:28.549 --> 00:26:31.690
so I'm not sure how well I explained this earlier

00:26:31.690 --> 00:26:34.920
but Debug print basically has kind of two standard

00:26:34.920 --> 00:26:39.759
keystrokes. One is G question mark P. That just

00:26:39.759 --> 00:26:43.480
inserts a sort of standard print line with no

00:26:43.480 --> 00:26:46.279
variable content in it. So all this is doing

00:26:46.279 --> 00:26:48.880
is basically just saying after the line where

00:26:48.880 --> 00:26:51.380
you set bar equals two, that's where I've got

00:26:51.380 --> 00:26:53.940
to. If I actually wanted to print the value of

00:26:53.940 --> 00:26:58.769
bar, I do G question mark V. Oh, I didn't do

00:26:58.769 --> 00:27:01.369
that fast enough. G question mark V. And now

00:27:01.369 --> 00:27:03.630
I actually get the printout, the current value

00:27:03.630 --> 00:27:06.809
of bar, right, which in lower is bar equals.

00:27:06.970 --> 00:27:09.250
And then we've got this Vim inspect bar. And

00:27:09.250 --> 00:27:11.329
then there's the surround variations on both

00:27:11.329 --> 00:27:16.930
of those. So if I do G question mark SP, then,

00:27:16.990 --> 00:27:18.769
you know, I get the print plane version. And

00:27:18.769 --> 00:27:23.029
if I do the V, then I get the V version. So that's

00:27:23.029 --> 00:27:26.019
kind of one of the. One of the sort of slightly

00:27:26.019 --> 00:27:29.000
more unusual features, I'm actually just going

00:27:29.000 --> 00:27:31.000
to go back to the readme here to prompt myself

00:27:31.000 --> 00:27:36.220
to see what else there is. So one of the things

00:27:36.220 --> 00:27:39.359
to be aware of is that there are key bindings

00:27:39.359 --> 00:27:43.500
for many different modes. So everything I've

00:27:43.500 --> 00:27:45.460
been showing you so far I've been doing in normal

00:27:45.460 --> 00:27:47.940
mode, but you can also work, for example, in

00:27:47.940 --> 00:27:51.599
visual mode. So let's say I, for example, visually

00:27:51.599 --> 00:27:54.519
select foo here, right? So I've selected that

00:27:54.519 --> 00:27:58.819
variable. If I now do G question mark V, it will

00:27:58.819 --> 00:28:02.779
print out the value of foo below. If I undo that,

00:28:02.839 --> 00:28:06.079
if I instead visually select bar and do G question

00:28:06.079 --> 00:28:08.960
mark V, it will print out the value of bar instead.

00:28:09.839 --> 00:28:12.299
And for some languages, I can even do expressions.

00:28:12.500 --> 00:28:14.859
So let's say I'm interested in the value of foo

00:28:14.859 --> 00:28:18.039
plus bar. I can select that whole thing, and

00:28:18.039 --> 00:28:21.000
then I can do G question mark V, and now I get

00:28:21.000 --> 00:28:23.579
foo plus bar equals vim inspect foo plus bar,

00:28:23.740 --> 00:28:26.539
right? Obviously, in this case, I know we've

00:28:26.539 --> 00:28:28.740
just assigned it to banana, right? So that's

00:28:28.740 --> 00:28:31.539
a bit of a fake example, but you get the idea,

00:28:31.799 --> 00:28:36.099
right? You can also do what are called operator

00:28:36.099 --> 00:28:41.019
pending expressions. So this is quite, let's

00:28:41.019 --> 00:28:43.500
call it this way. It's quite an old school Vim

00:28:43.500 --> 00:28:46.500
thing, right? Like not everyone who uses NeoVim

00:28:46.500 --> 00:28:48.920
necessarily does this, but it's a very powerful

00:28:48.920 --> 00:28:52.359
feature to know in general, not just for debug

00:28:52.359 --> 00:28:55.420
print, but debug print supports it too. So if

00:28:55.420 --> 00:29:00.359
I do G question mark O, I have to do this quite

00:29:00.359 --> 00:29:04.089
quickly because of the way I've set up my, time

00:29:04.089 --> 00:29:07.289
out in my neo vim configuration but if i do d

00:29:07.289 --> 00:29:11.349
question mark o inside word it will now produce

00:29:11.349 --> 00:29:17.660
um it will now do um the value of right if i

00:29:17.660 --> 00:29:20.599
hover over bar and i do g question mark inside

00:29:20.599 --> 00:29:23.359
words oops excuse me i didn't do it fast enough

00:29:23.359 --> 00:29:26.140
g question mark o inside words it will do the

00:29:26.140 --> 00:29:28.640
same thing for bar so you don't have to select

00:29:28.640 --> 00:29:31.819
the word in visual mode before right correct

00:29:31.819 --> 00:29:35.400
correct in fact in fact if if the folks watching

00:29:35.400 --> 00:29:37.799
this haven't come across operator pending mode

00:29:37.799 --> 00:29:40.579
before i can show you a simpler example that

00:29:40.579 --> 00:29:43.279
doesn't even use debug print if i'm sitting on

00:29:43.279 --> 00:29:47.660
the word foo and i do D -I -W, delete inside

00:29:47.660 --> 00:29:50.859
word, is basically going to delete the word foo

00:29:50.859 --> 00:29:53.640
from my NeoVim buffer. So that's got nothing

00:29:53.640 --> 00:29:55.680
to do with debug print. That's just standard

00:29:55.680 --> 00:29:59.839
Vim, NeoVim behavior, right? It's basically using

00:29:59.839 --> 00:30:04.220
text objects. So inside word, I -W, means inside

00:30:04.220 --> 00:30:07.940
the word I'm currently on. So if I go D -I -W,

00:30:08.039 --> 00:30:12.309
it deletes it. If I do C -I -W, it switches into

00:30:12.309 --> 00:30:15.789
insert mode and allows me to replace it. So that's

00:30:15.789 --> 00:30:19.569
standard kind of Vim behavior. But DeboPrint

00:30:19.569 --> 00:30:23.809
extends on this by having G question mark O inside

00:30:23.809 --> 00:30:26.289
Word and allows me to kind of print it out like

00:30:26.289 --> 00:30:28.589
that. So if you're the kind of person who likes

00:30:28.589 --> 00:30:31.369
to use that kind of Vim interaction, you can

00:30:31.369 --> 00:30:33.920
do it that way. if you don't like that you can

00:30:33.920 --> 00:30:36.440
do it with visual mode instead i think these

00:30:36.440 --> 00:30:39.339
days my experience is that folks in the neo vim

00:30:39.339 --> 00:30:42.700
community are more especially folks who maybe

00:30:42.700 --> 00:30:45.059
have come from another editor like vs code or

00:30:45.059 --> 00:30:46.779
whatever they're more familiar and more comfortable

00:30:46.779 --> 00:30:49.920
with using visual mode that's fine you can do

00:30:49.920 --> 00:30:54.809
that too that works So, you know, whatever you

00:30:54.809 --> 00:30:57.250
prefer, basically. But debug print supports all

00:30:57.250 --> 00:31:00.430
of these. Okay. What happens if I have three

00:31:00.430 --> 00:31:03.329
variables declared, like foobar and banana? And

00:31:03.329 --> 00:31:05.670
I select all of them in visual mode, and then

00:31:05.670 --> 00:31:09.890
I bring debug print, like the three. of a more

00:31:09.890 --> 00:31:12.289
selective you may you may you may or may not

00:31:12.289 --> 00:31:14.250
depending upon the language you're using get

00:31:14.250 --> 00:31:17.609
something invalid right so it debo print is not

00:31:17.609 --> 00:31:21.170
that smart about understanding what you've actually

00:31:21.170 --> 00:31:23.569
selected right it just treats it in a relatively

00:31:23.569 --> 00:31:26.829
naive way so for example if i select this whole

00:31:26.829 --> 00:31:31.049
line banana equals food plus bar and i do g question

00:31:31.049 --> 00:31:34.549
mark v i'll get a line that looks like this banana

00:31:34.549 --> 00:31:37.269
equals food plus bar equals well that's just

00:31:37.269 --> 00:31:39.789
a string so that will be fine because it's just

00:31:39.789 --> 00:31:42.109
printing out a string. And then it'll do vim

00:31:42.109 --> 00:31:45.269
.inspect banana equals food plus bar. This is

00:31:45.269 --> 00:31:47.869
a syntax error in Lua because you can't have

00:31:47.869 --> 00:31:49.829
an equal sign in the middle of an expression

00:31:49.829 --> 00:31:53.089
like this. So that won't work, right? But DeboPrint

00:31:53.089 --> 00:31:55.410
doesn't understand that those variables. It's

00:31:55.410 --> 00:31:57.650
not that smart. It's just looking at this as

00:31:57.650 --> 00:32:00.289
text, basically. So it does rely on you having

00:32:00.289 --> 00:32:02.789
a little bit of understanding of the programming

00:32:02.789 --> 00:32:05.089
language you're working in and what you're doing.

00:32:05.680 --> 00:32:07.799
But in general, to be honest, I don't tend to

00:32:07.799 --> 00:32:09.559
use it for anything that sophisticated anyway.

00:32:09.759 --> 00:32:12.839
I'm just generally doing this. Yes, you want

00:32:12.839 --> 00:32:15.940
something quick, right? Exactly, exactly. That's

00:32:15.940 --> 00:32:17.960
kind of the idea, right? So I'm not trying to

00:32:17.960 --> 00:32:22.700
be too smart about this. In some languages, but

00:32:22.700 --> 00:32:25.519
not all of the ones that it supports, so LoRa

00:32:25.519 --> 00:32:29.200
as an example, NeoVim is a little bit smarter,

00:32:29.400 --> 00:32:33.319
and it tries to use TreeSitter, which is, again,

00:32:33.440 --> 00:32:34.940
for anyone who's watching the video who's not

00:32:34.940 --> 00:32:36.940
familiar, TreeSitter is one of the more modern

00:32:36.940 --> 00:32:40.640
NeoVim features that allows NeoVim to kind of

00:32:40.640 --> 00:32:43.099
like build up an internal tree of a language

00:32:43.099 --> 00:32:44.880
and kind of understand it. its different features.

00:32:45.259 --> 00:32:48.839
So for some languages, I think maybe three or

00:32:48.839 --> 00:32:52.500
four, DevoPrint actually uses TreeSetter to try

00:32:52.500 --> 00:32:55.740
and slightly more smartly understand what the

00:32:55.740 --> 00:32:58.859
variable is. But for some other languages, it

00:32:58.859 --> 00:33:01.180
does not. It really depends on what you're working

00:33:01.180 --> 00:33:06.799
with. Okay, wonderful. So I guess that covers

00:33:06.799 --> 00:33:09.359
the demo. Do you want to show something else

00:33:09.359 --> 00:33:11.000
before we get to know you a little bit more?

00:33:13.049 --> 00:33:17.410
I don't think so. Oh, there is one other feature

00:33:17.410 --> 00:33:20.990
that may be interesting. I'm actually cheating

00:33:20.990 --> 00:33:23.789
through my own readme to remind myself of all

00:33:23.789 --> 00:33:26.509
the different features. So there is one other

00:33:26.509 --> 00:33:29.170
potentially interesting feature. Again, it's

00:33:29.170 --> 00:33:31.509
maybe sort of a slightly more advanced, you know,

00:33:31.529 --> 00:33:34.809
traditional NeoVim -y thing. But one of the things

00:33:34.809 --> 00:33:38.109
you can do is you can put the contents of your

00:33:38.109 --> 00:33:43.660
debug print expressions into registers. So I'll

00:33:43.660 --> 00:33:47.140
give you an example. If I'm sitting on foo here,

00:33:47.279 --> 00:33:54.819
for example, I can do quote a g question mark

00:33:54.819 --> 00:33:57.779
v. Nothing appears to have happened apart from

00:33:57.779 --> 00:33:59.279
the fact you can see down the bottom it says

00:33:59.279 --> 00:34:02.500
written variable debug line for foo to register

00:34:02.500 --> 00:34:07.170
a. And then I can do the same thing for B, except

00:34:07.170 --> 00:34:11.130
this time I'm going to do capital A register,

00:34:11.250 --> 00:34:13.489
which means it's going to append to the register.

00:34:13.769 --> 00:34:18.550
So I'm going to do quote capital A G question

00:34:18.550 --> 00:34:22.190
mark V, and it's appended bar to register A.

00:34:22.449 --> 00:34:26.050
So at this point, all NeoVim is doing is writing

00:34:26.050 --> 00:34:29.769
stuff into standard, excuse me, all debug print

00:34:29.769 --> 00:34:32.170
is doing is writing stuff into standard NeoVim

00:34:32.170 --> 00:34:34.980
registers. But the reason why I've done all that

00:34:34.980 --> 00:34:37.360
is because maybe I actually want to insert those

00:34:37.360 --> 00:34:39.920
debug lines all the way down here. So what I

00:34:39.920 --> 00:34:44.440
can now do is quote a P and now bingo. And now

00:34:44.440 --> 00:34:46.800
I've got my two registers further down in my

00:34:46.800 --> 00:34:51.860
two debug print lines further down in my script.

00:34:52.079 --> 00:34:54.380
So I'm printing out foo and I'm printing out

00:34:54.380 --> 00:34:57.219
bar all the way down here. This is quite useful

00:34:57.219 --> 00:34:59.900
if maybe I've got a whole bunch of variables

00:34:59.900 --> 00:35:02.809
here and I want to print out all of them. but

00:35:02.809 --> 00:35:04.530
I want to do it kind of sort of further down

00:35:04.530 --> 00:35:07.809
in the script or something like that. occasionally

00:35:07.809 --> 00:35:10.389
useful but again it's a slightly more kind of

00:35:10.389 --> 00:35:13.929
advanced thing you know folks watching this video

00:35:13.929 --> 00:35:16.670
if you're kind of deeply into your vim or your

00:35:16.670 --> 00:35:19.250
neo vim you know you might have come across you

00:35:19.250 --> 00:35:21.550
know different names registers and be using them

00:35:21.550 --> 00:35:24.329
like this many folks just use a simple kind of

00:35:24.329 --> 00:35:26.949
you know clipboard that right so it really depends

00:35:26.949 --> 00:35:28.969
on you know how you tend to use your near them

00:35:28.969 --> 00:35:31.449
if you don't want to use that feature don't use

00:35:31.449 --> 00:35:34.800
it but it's there okay okay and Since they're

00:35:34.800 --> 00:35:38.099
just print statements, you can move them from,

00:35:38.159 --> 00:35:41.219
you could move all of them from where they put

00:35:41.219 --> 00:35:44.619
it to the bottom of the file. Absolutely. Once

00:35:44.619 --> 00:35:46.619
the print statements are inserted, there's nothing

00:35:46.619 --> 00:35:48.940
special about them. They're just text in your

00:35:48.940 --> 00:35:51.179
script, same as anything else. They're being

00:35:51.179 --> 00:35:53.460
highlighted in red because they happen to have

00:35:53.460 --> 00:35:55.559
this phrase debug printed in them. Although you'll

00:35:55.559 --> 00:35:58.579
notice if I delete, for example, this T, immediately

00:35:58.579 --> 00:36:01.969
the red highlight. disappears right so they're

00:36:01.969 --> 00:36:04.489
just they're just text in your script right i

00:36:04.489 --> 00:36:07.250
can delete this line i can move it up here i

00:36:07.250 --> 00:36:10.769
can modify it right you know i can put whatever

00:36:10.769 --> 00:36:13.170
rubbish i want in there like you know it's just

00:36:13.170 --> 00:36:15.510
it's just part of your script at this point okay

00:36:15.510 --> 00:36:20.650
wonderful okay and moving on to other type of

00:36:20.650 --> 00:36:24.409
questions when did you start with um with neovim

00:36:24.409 --> 00:36:26.949
to get you know to get to know a little bit better

00:36:28.039 --> 00:36:30.679
Sure. Well, I was actually taking a look at my

00:36:30.679 --> 00:36:34.719
.files, my config, kind of the other day, you

00:36:34.719 --> 00:36:37.199
know, just niching around, taking a look, you

00:36:37.199 --> 00:36:39.920
know, in preparation for our discussion. So I

00:36:39.920 --> 00:36:42.760
think I actually started with Vim, not NeoVim,

00:36:42.760 --> 00:36:45.000
right? So I've been using Vim for quite some

00:36:45.000 --> 00:36:48.679
time, I think since 2010, if I'm not mistaken.

00:36:48.699 --> 00:36:52.219
So I guess I've been using Vim and NeoVim for...

00:36:52.750 --> 00:36:56.610
getting on for 15 years now. I don't remember

00:36:56.610 --> 00:36:59.869
when I exactly made the transition from Vim to

00:36:59.869 --> 00:37:02.090
NeoVim. I think it must have been around about

00:37:02.090 --> 00:37:06.829
NeoVim version 0 .3, 0 .4, something like that.

00:37:06.909 --> 00:37:08.889
I was kind of sort of watching the project from

00:37:08.889 --> 00:37:11.849
afar. And initially, I guess I didn't quite understand

00:37:11.849 --> 00:37:14.150
what the guys were trying to do with NeoVim.

00:37:14.230 --> 00:37:16.300
But, you know, then it became a little bit. It

00:37:16.300 --> 00:37:19.139
became a little bit more obvious. And it sounded

00:37:19.139 --> 00:37:21.800
really interesting. So I kind of sort of took

00:37:21.800 --> 00:37:25.780
the plunge and I converted. I had a VimRC file,

00:37:26.000 --> 00:37:28.219
which is like the Vim equivalent of your NeoVim

00:37:28.219 --> 00:37:31.639
configuration, which was quite long. And it was

00:37:31.639 --> 00:37:34.260
written in VimScript. And for the folks on the

00:37:34.260 --> 00:37:36.960
call who maybe have only ever used NeoVim, you

00:37:36.960 --> 00:37:40.179
know, VimScript is an interesting language, right?

00:37:40.260 --> 00:37:43.659
But it's a little bit painful to work with compared

00:37:43.659 --> 00:37:46.579
to Lua. So in one sense, I really liked the fact

00:37:46.579 --> 00:37:48.920
that they made the transition to Lua. But yeah,

00:37:48.980 --> 00:37:50.960
I took the plunge and I basically converted that

00:37:50.960 --> 00:37:54.659
BMRC into Lua and I kind of not really looked

00:37:54.659 --> 00:37:57.360
back. I mean, I tried to maintain a dual config

00:37:57.360 --> 00:38:01.000
for a while, but that was even more painful.

00:38:01.139 --> 00:38:03.099
And I just kind of gave up on that in the end

00:38:03.099 --> 00:38:06.079
and kind of went the whole hog into the NeoVim

00:38:06.079 --> 00:38:09.280
ecosystem. And I just really like it. But yeah,

00:38:09.420 --> 00:38:12.719
so I guess if you count Vim as well, about 15

00:38:12.719 --> 00:38:15.789
years, but you know. Maybe seven or eight years

00:38:15.789 --> 00:38:17.429
in the event, something like that. I don't know

00:38:17.429 --> 00:38:21.130
the exact time. Oh, so that's your main text

00:38:21.130 --> 00:38:24.090
editor. What about other editors? What are your

00:38:24.090 --> 00:38:26.289
thoughts on Emacs, for example, or other ones?

00:38:28.289 --> 00:38:31.750
So Emacs, I kind of dabbled with Emacs a while

00:38:31.750 --> 00:38:34.369
ago. Somewhere I still have an Emacs configuration,

00:38:34.530 --> 00:38:36.730
but it's probably getting on for like 20 years

00:38:36.730 --> 00:38:40.710
old at this point. I mean, I never used it. Like,

00:38:40.730 --> 00:38:43.050
it's probably in my .files somewhere or something.

00:38:43.269 --> 00:38:46.730
But, yeah, I've never used that. And I remember

00:38:46.730 --> 00:38:49.889
Emacs being quite painful. I could never really

00:38:49.889 --> 00:38:52.570
kind of get to grips with all the list -based

00:38:52.570 --> 00:38:55.510
configuration. And the slightly more serious

00:38:55.510 --> 00:38:58.829
answer, I mean, these days, yes, I use NeoVim

00:38:58.829 --> 00:39:02.019
for... almost everything. Occasionally, I've

00:39:02.019 --> 00:39:04.980
dabbled with using things like VS Code. Oh, I

00:39:04.980 --> 00:39:07.079
tried out Cursor the other day, which is, you

00:39:07.079 --> 00:39:09.519
know, one of the more AI -enabled, you know,

00:39:09.519 --> 00:39:14.159
sort of VS Code forks, I guess. And yeah, I quite

00:39:14.159 --> 00:39:16.219
like using that kind of thing for its more kind

00:39:16.219 --> 00:39:19.440
of like visual view, right? So, you know, if

00:39:19.440 --> 00:39:22.139
someone's given me a repository of some code

00:39:22.139 --> 00:39:24.559
or something, and I want to kind of read it and

00:39:24.559 --> 00:39:27.500
get to grips with it, sometimes using VS Code

00:39:27.500 --> 00:39:31.619
can be can be handy. Um, just cause I don't know,

00:39:31.659 --> 00:39:33.739
it's the graphical nature of it somehow makes

00:39:33.739 --> 00:39:35.460
it a little bit easier to kind of navigate around.

00:39:36.219 --> 00:39:39.380
Um, but you know, for my own little pet projects

00:39:39.380 --> 00:39:41.780
and my own dabbling around and so on, it's, it's,

00:39:41.780 --> 00:39:44.579
it's almost exclusively, uh, almost exclusively

00:39:44.579 --> 00:39:49.260
near them. Oh, okay. Okay. And what are your

00:39:49.260 --> 00:39:51.239
thoughts on distribution? I guess you have your

00:39:51.239 --> 00:39:55.599
own configuration, right? Yeah. I mean, I think,

00:39:56.710 --> 00:39:59.329
I kind of go back and forth on that, right? Like

00:39:59.329 --> 00:40:02.289
I think distributions, like I think LazyVim is

00:40:02.289 --> 00:40:06.590
pretty popular these days as an example. I mean,

00:40:06.610 --> 00:40:08.230
I wouldn't claim to know all the distributions

00:40:08.230 --> 00:40:10.530
very well, but I know LazyVim well enough because

00:40:10.530 --> 00:40:12.190
I've kind of sort of seen it referred to on,

00:40:12.250 --> 00:40:15.650
you know, Reddit and stuff like that. It's not

00:40:15.650 --> 00:40:18.769
for me personally, because part of the fun for

00:40:18.769 --> 00:40:21.809
me is kind of like dabbling in the details. And

00:40:21.809 --> 00:40:24.190
I guess distributions kind of abstract some of

00:40:24.190 --> 00:40:26.360
that away from you. But for a lot of people,

00:40:26.440 --> 00:40:28.500
particularly people who, you know, just need

00:40:28.500 --> 00:40:31.539
to use, you know, NeoVim to get their work done,

00:40:31.679 --> 00:40:34.340
like, I can completely understand why, you know,

00:40:34.360 --> 00:40:36.659
they want a distribution. And I think it is a

00:40:36.659 --> 00:40:40.420
good way of getting people who are new into the

00:40:40.420 --> 00:40:43.679
NeoVim ecosystem into that kind of thing. So,

00:40:43.679 --> 00:40:46.019
you know, it's easy to be snobby about these

00:40:46.019 --> 00:40:48.039
things, but I don't think, you know, I don't

00:40:48.039 --> 00:40:49.440
think there's anything wrong with distributions

00:40:49.440 --> 00:40:53.360
if that's what works for people, then use it,

00:40:53.440 --> 00:40:57.650
right? Yeah. OK, OK, wonderful. You want to share

00:40:57.650 --> 00:41:00.530
a little bit about you and where can people find

00:41:00.530 --> 00:41:06.050
you? Yeah, sure. So I've been working in the

00:41:06.050 --> 00:41:10.489
technology industry now for about like 20 years

00:41:10.489 --> 00:41:14.090
or so. I kind of sort of started out as a as

00:41:14.090 --> 00:41:16.650
a coder, as a developer. I've kind of like sort

00:41:16.650 --> 00:41:19.449
of, you know, moved roles a few times. I no longer

00:41:19.449 --> 00:41:22.679
code on a daily basis. I now kind of like. work

00:41:22.679 --> 00:41:25.539
as a consultant in a political organization right

00:41:25.539 --> 00:41:27.800
you know still focused on technology but i don't

00:41:27.800 --> 00:41:29.880
you know i don't code on a daily basis it's more

00:41:29.880 --> 00:41:33.699
about you know kind of um advice and and kind

00:41:33.699 --> 00:41:35.260
of sort of facilitation and things like that

00:41:35.260 --> 00:41:37.920
but i've always been of the opinion that like

00:41:37.920 --> 00:41:39.699
you know if you're going to be in technology

00:41:39.699 --> 00:41:43.289
you should still you know fundamentally, you

00:41:43.289 --> 00:41:45.210
should still know how to code on some level or

00:41:45.210 --> 00:41:47.869
at least know enough to be dangerous, right?

00:41:47.949 --> 00:41:50.010
Like when other people are talking about technology,

00:41:50.090 --> 00:41:52.469
you know the general things they're referring

00:41:52.469 --> 00:41:55.190
to. And I find that just kind of keeping my hand

00:41:55.190 --> 00:41:57.670
in and that stuff in my spare time is one of

00:41:57.670 --> 00:41:59.429
the ways of doing that. And so that's one of

00:41:59.429 --> 00:42:01.769
the reasons why I maintain things like debug

00:42:01.769 --> 00:42:03.670
print in my spare time, just because I find it

00:42:03.670 --> 00:42:08.949
fun and I find it a way to dabble in programming

00:42:08.949 --> 00:42:11.719
and at least make sure that I still know. approximately

00:42:11.719 --> 00:42:13.679
what I'm talking about. You know, I can do things

00:42:13.679 --> 00:42:16.179
like, like I use test -driven development, for

00:42:16.179 --> 00:42:18.619
example, for debug print, right? So, you know,

00:42:18.619 --> 00:42:21.199
it's just a way of like teaching myself. Again,

00:42:21.400 --> 00:42:23.159
I'm not going to claim I'm a guru in that stuff.

00:42:23.619 --> 00:42:25.480
Maybe it's not, they're not the very best tests,

00:42:25.519 --> 00:42:27.860
but they're good enough. And, you know, it teaches

00:42:27.860 --> 00:42:29.840
me a little bit about some of the principles

00:42:29.840 --> 00:42:31.599
so that when other people are talking about it,

00:42:31.659 --> 00:42:34.099
I know enough, at least that's what I like to

00:42:34.099 --> 00:42:38.079
think. Okay, wonderful. You too know, right?

00:42:38.590 --> 00:42:39.969
You don't have a YouTube channel or anything

00:42:39.969 --> 00:42:41.969
like that? I don't have my own YouTube channel

00:42:41.969 --> 00:42:45.230
yet. I've considered it. You know, this is probably

00:42:45.230 --> 00:42:48.190
one of my first, like, you know, proper being

00:42:48.190 --> 00:42:50.429
on YouTube experiences, which is one of the reasons

00:42:50.429 --> 00:42:52.389
I was keen and excited to talk to you today.

00:42:52.710 --> 00:42:54.530
So, no, I don't have a YouTube channel of my

00:42:54.530 --> 00:42:59.699
own, but, you know, I follow... at least some

00:42:59.699 --> 00:43:03.460
of the kind of NeoVim core folks like TJ DeVries,

00:43:03.719 --> 00:43:06.920
for example, and stuff like that on YouTube.

00:43:07.380 --> 00:43:10.539
And I've definitely thought about doing that.

00:43:10.639 --> 00:43:13.679
Whether I would do it in a, you know, development

00:43:13.679 --> 00:43:15.699
-focused way or about something like NeoVim,

00:43:15.800 --> 00:43:19.599
I don't know yet. But yeah, not yet. Okay, wonderful.

00:43:20.059 --> 00:43:24.219
How has the experience been with the plugin?

00:43:24.440 --> 00:43:29.510
How has the open source? Pretty good. Pretty

00:43:29.510 --> 00:43:34.829
good. I mean, like, you know, the reason I started

00:43:34.829 --> 00:43:38.309
doing it was I thought, like, you know, it's

00:43:38.309 --> 00:43:39.989
like many of these things. It's like scratching

00:43:39.989 --> 00:43:42.630
your own itch, right? Like, I found myself wanting

00:43:42.630 --> 00:43:45.090
to put these debug statements in stuff I was

00:43:45.090 --> 00:43:46.530
doing. And so I was like, well, let me create

00:43:46.530 --> 00:43:48.110
a little script. And so I created a little script.

00:43:48.230 --> 00:43:50.070
And then I thought, oh, well, actually, maybe

00:43:50.070 --> 00:43:52.369
if I just put a little bit of effort into generalizing

00:43:52.369 --> 00:43:54.730
that, I could, you know, release it on GitHub.

00:43:54.809 --> 00:43:57.510
And so I did. But then, of course, you know,

00:43:57.530 --> 00:43:59.170
people start saying, well, you know, wouldn't

00:43:59.170 --> 00:44:00.809
it be great if it could do this? Wouldn't it

00:44:00.809 --> 00:44:03.110
be great if it could do that? And so, like, you

00:44:03.110 --> 00:44:04.929
know, it kind of sort of spirals over time. But

00:44:04.929 --> 00:44:07.949
it is rewarding. It's nice. Like, I literally,

00:44:08.050 --> 00:44:10.050
I love it when people open up issues and pull

00:44:10.050 --> 00:44:11.829
requests because it actually kind of sort of

00:44:11.829 --> 00:44:13.789
shows that people are kind of interested and

00:44:13.789 --> 00:44:17.039
engaged with it. That kind of motivates me. So

00:44:17.039 --> 00:44:19.500
to anyone watching this, by the way, if you're

00:44:19.500 --> 00:44:21.900
interested and you want me to keep maintaining

00:44:21.900 --> 00:44:23.880
debug print, you know, I'm not there for the

00:44:23.880 --> 00:44:26.300
money or sponsorship or anything like that. You

00:44:26.300 --> 00:44:27.760
know, I just kind of want to do it for the fun

00:44:27.760 --> 00:44:29.659
of it. So, you know, if you want me to keep doing

00:44:29.659 --> 00:44:31.739
that, then by all means, please, please engage,

00:44:31.940 --> 00:44:34.139
you know, sort of send me issues or pull requests

00:44:34.139 --> 00:44:36.880
or things like that. You know, I'm always more

00:44:36.880 --> 00:44:38.760
than happy to have those conversations with people.

00:44:39.019 --> 00:44:41.280
So in general, I found it like really positive.

00:44:41.340 --> 00:44:44.340
I wouldn't say I've had any. major problems right

00:44:44.340 --> 00:44:47.579
occasionally you have probably the trickiest

00:44:47.579 --> 00:44:51.119
thing I've had so far and DevoPrint isn't a very

00:44:51.119 --> 00:44:53.719
high profile plugin so I guess you know I probably

00:44:53.719 --> 00:44:55.840
don't get that many issues and so on you know

00:44:55.840 --> 00:44:57.639
there's been one or two where I've had issues

00:44:57.639 --> 00:45:00.659
where people are asking for something do you

00:45:00.659 --> 00:45:03.340
think well that's quite a good idea but I need

00:45:03.340 --> 00:45:07.119
to think about how we generalize that to make

00:45:07.119 --> 00:45:10.280
sure that it's useful to a lot of people, right?

00:45:10.440 --> 00:45:13.239
Rather than necessarily, you know, I'll give

00:45:13.239 --> 00:45:15.300
you an example. I think someone opened an issue.

00:45:15.760 --> 00:45:17.780
I forget the specifics, but someone opened an

00:45:17.780 --> 00:45:19.480
issue saying something like, you know, wouldn't

00:45:19.480 --> 00:45:22.460
it be great if I could have an emoji in my debug

00:45:22.460 --> 00:45:24.840
print statement, right? So I can see them clearly.

00:45:25.039 --> 00:45:27.420
And I'm like, yeah, that is great. But what actually

00:45:27.420 --> 00:45:30.320
I should really do is generalize it so that you

00:45:30.320 --> 00:45:32.860
can change the tag to anything you like. So actually,

00:45:32.920 --> 00:45:34.820
by the way, way it doesn't have to be debug print

00:45:34.820 --> 00:45:37.179
you can configure that you can set it to a different

00:45:37.179 --> 00:45:40.019
string if you want uh in the configuration options

00:45:40.019 --> 00:45:42.300
so just little things like that where it's like

00:45:42.300 --> 00:45:45.159
you know someone makes a request but i want to

00:45:45.159 --> 00:45:47.219
implement it in a way that's generally useful

00:45:47.219 --> 00:45:50.800
to everybody not you know kind of super specific

00:45:50.800 --> 00:45:53.059
so basically kind of like trying to make the

00:45:53.059 --> 00:45:55.260
right architectural choices i know architecture

00:45:55.260 --> 00:45:58.000
is probably a very fancy word to use about something

00:45:58.000 --> 00:46:02.190
so simple as a plugin like this but um But, yeah,

00:46:02.289 --> 00:46:04.130
I would say in general it's been very positive

00:46:04.130 --> 00:46:07.889
and, like, you know, most people seem to engage

00:46:07.889 --> 00:46:10.230
in good faith. Like I mentioned earlier, there's

00:46:10.230 --> 00:46:12.369
one or two other plugins that, quote, compete

00:46:12.369 --> 00:46:15.610
with debug print, you know, but, you know, I've

00:46:15.610 --> 00:46:17.849
been in touch with the maintainers of both of

00:46:17.849 --> 00:46:21.289
those and, you know, we have some healthy competition,

00:46:21.530 --> 00:46:23.769
let's put it that way, I guess, right? You know,

00:46:23.769 --> 00:46:26.349
like neither of them seem to – I think one of

00:46:26.349 --> 00:46:28.210
them was aware of debug print and the other one

00:46:28.210 --> 00:46:31.449
wasn't, but, you know, no one – We see that as

00:46:31.449 --> 00:46:33.670
like, I'll implement something and maybe they

00:46:33.670 --> 00:46:35.889
go and implement something similar or I decide

00:46:35.889 --> 00:46:38.070
that that feature isn't right for debug print

00:46:38.070 --> 00:46:40.550
or whatever, right? But, you know, it's just

00:46:40.550 --> 00:46:43.469
a way of everybody, you know, learning from each

00:46:43.469 --> 00:46:45.809
other, basically. That's the way I see it. Okay,

00:46:45.969 --> 00:46:50.929
wonderful. What file explorer do you use on Uvim?

00:46:52.579 --> 00:46:55.119
I don't know if you count it as a file explorer.

00:46:55.360 --> 00:46:57.739
I just use oil. So I don't know how familiar

00:46:57.739 --> 00:47:00.000
you are with that. But for folks who haven't

00:47:00.000 --> 00:47:04.679
used it, yeah, so this is oil. It's not a tree

00:47:04.679 --> 00:47:07.920
style kind of file explorer like NerdTree or

00:47:07.920 --> 00:47:11.079
whatever. It's basically an extension of if you've

00:47:11.079 --> 00:47:15.239
ever used the inbuilt net RW or if you've used

00:47:15.239 --> 00:47:18.219
vinegar, which was kind of the previous incarnation

00:47:18.219 --> 00:47:22.480
of this concept before oil came along. basically

00:47:22.480 --> 00:47:24.980
just excuse me just basically a way of making

00:47:24.980 --> 00:47:29.260
your your file uh directories editable right

00:47:29.260 --> 00:47:32.940
so you know i can navigate here here is my debug

00:47:32.940 --> 00:47:35.639
print repository you know if i go up to the doc

00:47:35.639 --> 00:47:37.699
directory and press enter then it changes into

00:47:37.699 --> 00:47:40.059
the doc directory i'm just pressing the minus

00:47:40.059 --> 00:47:42.989
key to go up in the file tree But it's quite

00:47:42.989 --> 00:47:45.449
powerful because you can use it in a NeoVim -like

00:47:45.449 --> 00:47:48.070
way, right? So let's say I want to rename my

00:47:48.070 --> 00:47:51.250
readme file from readme to readme -andrew. I

00:47:51.250 --> 00:47:53.050
can literally just edit this, and then when I

00:47:53.050 --> 00:47:55.969
save this file buffer, bingo, the file is renamed,

00:47:56.269 --> 00:47:59.750
right? So for me, this meshes quite well with

00:47:59.750 --> 00:48:03.130
the NeoVim way of using things, and I'm quite

00:48:03.130 --> 00:48:06.230
happy with it. It's relatively simple, but it

00:48:06.230 --> 00:48:09.369
does what I need it to. Okay. Since you like

00:48:09.369 --> 00:48:13.860
that type of file, manipulation have you heard

00:48:13.860 --> 00:48:19.960
about this many that files i have i tried to

00:48:19.960 --> 00:48:22.980
use it briefly i didn't put very much time into

00:48:22.980 --> 00:48:26.619
it if i'm honest um but i'm not that familiar

00:48:26.619 --> 00:48:31.340
with it i don't know i like thinking of it like

00:48:31.340 --> 00:48:35.880
a mixture between oil and uh neotree because

00:48:35.880 --> 00:48:39.800
you kind of get like a tree right you can get

00:48:39.800 --> 00:48:43.929
all of your emotions right i can yank this paste

00:48:43.929 --> 00:48:47.469
it somewhere else i can delete it using vim navigation

00:48:47.469 --> 00:48:51.130
basically but i get a preview i have the preview

00:48:51.130 --> 00:48:54.869
on the right i have like these sort of little

00:48:54.869 --> 00:49:00.750
windows right yeah navigating my directory i

00:49:00.750 --> 00:49:05.110
don't know okay yeah so i when i'm doing i am

00:49:05.110 --> 00:49:08.039
quite a terminal kind of geek like I tend to

00:49:08.039 --> 00:49:10.460
do a lot of stuff in the terminal and I do tend

00:49:10.460 --> 00:49:12.880
to use the lf file manager quite a lot which

00:49:12.880 --> 00:49:17.880
is kind of similar um similar I guess to ranger

00:49:17.880 --> 00:49:20.599
if people have ever used that or there's one

00:49:20.599 --> 00:49:22.420
or two other similar ones I forget the name of

00:49:22.420 --> 00:49:24.940
all of them but yeah so I use lf quite a lot

00:49:24.940 --> 00:49:27.199
right which is kind of similar you know it enables

00:49:27.199 --> 00:49:29.900
me to kind of navigate up and down through file

00:49:29.900 --> 00:49:33.230
trees for whatever reason I use that independently

00:49:33.230 --> 00:49:37.010
of NeoVim. I don't quite know why. I've actually

00:49:37.010 --> 00:49:39.730
set up a NeoVim key binding that allows me to

00:49:39.730 --> 00:49:43.690
open that in a separate window. But yeah, that's

00:49:43.690 --> 00:49:45.789
what I tend to use. But I will probably give

00:49:45.789 --> 00:49:49.309
minifiles a go at some point. I use many of the

00:49:49.309 --> 00:49:53.469
other mini sub -plugins, I guess I should call

00:49:53.469 --> 00:49:54.829
them. I don't know what the official name for

00:49:54.829 --> 00:49:57.070
them is. But I use some of the other ones, but

00:49:57.070 --> 00:49:59.889
I've never really tried minifile. Okay, okay.

00:50:00.489 --> 00:50:02.889
now move it on to something else well let's just

00:50:02.889 --> 00:50:05.869
discuss neovim right now and uh then we can touch

00:50:05.869 --> 00:50:08.929
on the other subjects so the color scheme that

00:50:08.929 --> 00:50:12.250
you're using you're uh like i think i just used

00:50:12.250 --> 00:50:14.349
christmas box if i remember i think i just used

00:50:14.349 --> 00:50:16.769
grab box to remember riley yeah just gruff box

00:50:16.769 --> 00:50:19.869
i'm not i'm not majorly into like changing my

00:50:19.869 --> 00:50:22.960
colors i'm not there's a whole community if i'm

00:50:22.960 --> 00:50:25.480
making their their their uh linux distribution

00:50:25.480 --> 00:50:28.079
look look super fancy and i'm yeah that's not

00:50:28.079 --> 00:50:30.480
that's not for me it's all right spend my time

00:50:30.480 --> 00:50:32.199
doing so i just use grab box which i think is

00:50:32.199 --> 00:50:33.860
you know pretty old color theme at this point

00:50:33.860 --> 00:50:36.579
but you know it works for me okay you prefer

00:50:36.579 --> 00:50:41.739
a die a light i don't know i actually i actually

00:50:41.739 --> 00:50:44.280
have it set up to switch so it switches in the

00:50:44.280 --> 00:50:46.820
evening to dark and then it switches back again

00:50:46.820 --> 00:50:50.699
in the morning to light Oh, okay. Yeah. I spent

00:50:50.699 --> 00:50:53.219
probably more time than I should do on getting

00:50:53.219 --> 00:50:56.239
that working in my terminal and in NeoVim and

00:50:56.239 --> 00:50:58.900
so on. Like you can see, I've actually got this

00:50:58.900 --> 00:51:01.579
like state file where it sort of maintains whether

00:51:01.579 --> 00:51:04.099
it's light or dark and it kind of automatically

00:51:04.099 --> 00:51:07.139
switches within NeoVim. If we stay on this phone

00:51:07.139 --> 00:51:09.039
call long enough, you may even see it happen

00:51:09.039 --> 00:51:10.940
automatically because it's getting on for 10

00:51:10.940 --> 00:51:12.780
past seven in the evening here. So it'll probably

00:51:12.780 --> 00:51:15.579
go dark in about, I don't know, an hour's time,

00:51:15.659 --> 00:51:20.170
something like that. But yeah. So like I said,

00:51:20.250 --> 00:51:21.989
I probably spent more time than I really should

00:51:21.989 --> 00:51:24.449
do on kind of getting that working. But it was

00:51:24.449 --> 00:51:30.369
a bit of fun. OK. And do you use any tool to

00:51:30.369 --> 00:51:35.960
take notes, like Obsidian or something? At work,

00:51:35.980 --> 00:51:39.360
I use a Mac. You can see I'm using Linux here.

00:51:39.480 --> 00:51:42.199
But, yeah, at work, I use a Mac. And so most

00:51:42.199 --> 00:51:45.320
of my note -taking is in that context. So I just

00:51:45.320 --> 00:51:47.780
use iCloud Notes, which I know is not particularly

00:51:47.780 --> 00:51:50.940
kind of hackery. But, you know, it works fine

00:51:50.940 --> 00:51:52.699
for me because I have an iPhone and a MacBook.

00:51:52.940 --> 00:51:55.900
So that's what I tend to use. Yeah. I guess for

00:51:55.900 --> 00:51:58.059
personal stuff, maybe occasionally I'll just

00:51:58.059 --> 00:52:00.260
write stuff into a Markdown document. But, I

00:52:00.260 --> 00:52:02.340
mean, that's about as sophisticated as it gets.

00:52:02.480 --> 00:52:04.900
I think fancy. Okay. No, I think I don't see.

00:52:05.199 --> 00:52:08.260
What tool do you use to push to versioning control?

00:52:09.619 --> 00:52:11.840
So most of my version control, again, because

00:52:11.840 --> 00:52:13.980
I'm a bit of an old school guy, I either tend

00:52:13.980 --> 00:52:16.659
to work with Git commands directly from the command

00:52:16.659 --> 00:52:20.380
line, or sometimes I will work with TIG. So for

00:52:20.380 --> 00:52:22.619
folks who haven't come across TIG before, so

00:52:22.619 --> 00:52:25.099
this is my .files repo, for example, which is

00:52:25.099 --> 00:52:26.920
public, by the way, so if anyone's interested

00:52:26.920 --> 00:52:29.320
in looking at my .files, it's part of my GitHub

00:52:29.320 --> 00:52:34.010
account. But yeah, so I tend to use TIG, which

00:52:34.010 --> 00:52:36.889
is just like command line 2E, basically. So,

00:52:36.889 --> 00:52:39.289
you know, you can just go along and see all of

00:52:39.289 --> 00:52:42.230
the different changes. You know, I can see what's

00:52:42.230 --> 00:52:45.369
staged. I can stage stuff. I can unstage stuff.

00:52:45.590 --> 00:52:48.309
I can commit, you know, things of that nature,

00:52:48.469 --> 00:52:51.230
right? So that's basically what I use probably

00:52:51.230 --> 00:52:55.590
like 95 % of the time. TIG, okay. I hadn't heard

00:52:55.590 --> 00:52:58.869
about that. So it's like a terminal tool. CLI

00:52:58.869 --> 00:53:00.269
tool. Yeah, it's a terminal tool. It's very,

00:53:00.329 --> 00:53:02.360
very... Very common. You'll find it in all the

00:53:02.360 --> 00:53:04.420
standard Linux distributions and stuff like that

00:53:04.420 --> 00:53:07.440
as a package. But yeah, TIG, basically. I mean,

00:53:07.460 --> 00:53:10.019
I have a few very minor customizations, but mostly

00:53:10.019 --> 00:53:12.019
I just use it kind of as it is out of the box.

00:53:12.500 --> 00:53:15.679
Okay, wonderful. What are your thoughts on Tmux?

00:53:15.780 --> 00:53:21.360
Do you use it? I sometimes use it, to be honest,

00:53:21.559 --> 00:53:24.639
mostly just as like... i don't really tend to

00:53:24.639 --> 00:53:27.820
i don't really tend to use it like for kind of

00:53:27.820 --> 00:53:30.340
splitting up windows because i use the i3 window

00:53:30.340 --> 00:53:32.239
manager which is what you'll see on my screen

00:53:32.239 --> 00:53:34.780
right here which kind of does a lot of similar

00:53:34.780 --> 00:53:37.760
stuff right so for example i can kind of split

00:53:37.760 --> 00:53:40.480
my windows up like that and i can create stuff

00:53:40.480 --> 00:53:42.500
and i can kind of drag it around with my mouse

00:53:42.500 --> 00:53:45.179
and rearrange it like that so that's how i tend

00:53:45.179 --> 00:53:48.199
to use that the only time i ever really use tmux

00:53:48.199 --> 00:53:51.360
is i've got a few like one or two kind of little

00:53:51.360 --> 00:53:54.119
home mini servers. So if I want to run something

00:53:54.119 --> 00:53:56.880
on one of those, I'll log into it, create a TMUX

00:53:56.880 --> 00:53:59.139
session so that I can start something long running,

00:53:59.280 --> 00:54:02.000
like a backup or whatever, disconnect from it,

00:54:02.079 --> 00:54:04.260
and then come back the next day and kind of reconnect

00:54:04.260 --> 00:54:06.219
it, which obviously you can't really do with

00:54:06.219 --> 00:54:08.460
your window manager. So that's the main thing

00:54:08.460 --> 00:54:10.659
I tend to use TMUX for. But, you know, when I'm

00:54:10.659 --> 00:54:13.000
just mucking around on my laptop like this, I'll

00:54:13.000 --> 00:54:17.280
just split windows using i3. Maybe it's just

00:54:17.280 --> 00:54:19.869
me, but I always found all the TMUX keys bindings

00:54:19.869 --> 00:54:22.469
a bit kind of confusing i could never really

00:54:22.469 --> 00:54:25.090
i can never really remember which control b prefix

00:54:25.090 --> 00:54:27.710
thing does what so i just i use it in a really

00:54:27.710 --> 00:54:30.409
basic way where i just attach and detach from

00:54:30.409 --> 00:54:33.449
sessions most of the time okay okay wonderful

00:54:33.449 --> 00:54:37.510
so you mentioned that you use linux right in

00:54:37.510 --> 00:54:41.289
your personal uh computer linux at work you use

00:54:41.289 --> 00:54:45.849
mac so yeah why do you choose linux have you

00:54:45.849 --> 00:54:50.369
used that all the time Yeah, so let's see. Well,

00:54:50.630 --> 00:54:55.550
like in my professional life, I mean, you know,

00:54:55.590 --> 00:54:58.289
15 years ago, I used to use Windows. And then

00:54:58.289 --> 00:55:00.030
at some point, I had the opportunity to switch

00:55:00.030 --> 00:55:03.550
to Mac. And I never looked back because for me,

00:55:03.610 --> 00:55:07.900
like Mac, the Mac. The Mac at work makes sense

00:55:07.900 --> 00:55:11.559
because it's like that nice mix between, you

00:55:11.559 --> 00:55:13.619
know, it's a bit hackery and customizable and

00:55:13.619 --> 00:55:15.960
I can still get terminals and stuff, but it just

00:55:15.960 --> 00:55:18.380
basically works out of the box, right? Which

00:55:18.380 --> 00:55:19.900
is why I need it at work because I need to get

00:55:19.900 --> 00:55:23.619
my work done. But at home, I tend to use Linux

00:55:23.619 --> 00:55:25.380
because obviously it's a bit more customizable.

00:55:26.019 --> 00:55:27.980
Well, it's a lot more customizable, you know,

00:55:28.000 --> 00:55:29.820
and I can fiddle with it and I can play with

00:55:29.820 --> 00:55:31.920
it. But obviously that also comes with the risk

00:55:31.920 --> 00:55:34.940
of... you know, breaking stuff too, right? So

00:55:34.940 --> 00:55:37.880
like, yeah, in my personal life, I use Linux.

00:55:38.000 --> 00:55:41.559
And I mean, I've used Linux again, like certainly

00:55:41.559 --> 00:55:43.940
probably for about 20 years at this point, off

00:55:43.940 --> 00:55:47.760
and on in various different ways, like initially

00:55:47.760 --> 00:55:50.260
just through servers. So, you know, I've kind

00:55:50.260 --> 00:55:53.079
of had the home server for quite some time in

00:55:53.079 --> 00:55:56.159
various different forms, like headless servers,

00:55:56.219 --> 00:55:59.179
basically, just to kind of, you know, run backup

00:55:59.179 --> 00:56:01.699
jobs and file shares and other stuff at home.

00:56:02.739 --> 00:56:05.500
But, yeah, more recently, the last 10 years or

00:56:05.500 --> 00:56:08.400
so, I've started using it on my personal desktop,

00:56:08.539 --> 00:56:13.519
my personal laptop as well. And, yeah, I'm using

00:56:13.519 --> 00:56:18.139
Arch Linux here at the moment as a desktop, again,

00:56:18.239 --> 00:56:20.099
just because it sort of strikes that nice combination

00:56:20.099 --> 00:56:22.860
between being reasonably easy to use but also

00:56:22.860 --> 00:56:26.980
quite customizable, I guess. And then I use Debian

00:56:26.980 --> 00:56:29.769
on mine. servers just because it's nice and stable.

00:56:30.309 --> 00:56:32.610
Yeah, just because it's nice and stable and reliable

00:56:32.610 --> 00:56:35.510
and, you know, it doesn't break very easily,

00:56:35.610 --> 00:56:37.230
basically. That's the one that I use as well.

00:56:37.349 --> 00:56:39.889
First person that tells me Debian on servers

00:56:39.889 --> 00:56:43.550
and that's the one that I love. Like, why Ubuntu,

00:56:43.590 --> 00:56:46.730
right? If I could just go to the grandfather

00:56:46.730 --> 00:56:50.190
of that. I went through a phase of using Ubuntu

00:56:50.190 --> 00:56:52.570
on my servers and I kind of regretted it because

00:56:52.570 --> 00:56:55.760
I realized at some point I don't know about Ubuntu

00:56:55.760 --> 00:56:57.800
on the desktop. I think Ubuntu did a lot of good

00:56:57.800 --> 00:56:59.900
things for the desktop. Not some bad things,

00:56:59.920 --> 00:57:02.420
too, but a lot of good things. But on servers,

00:57:02.739 --> 00:57:05.679
I realized that Ubuntu server is basically more

00:57:05.679 --> 00:57:07.900
or less just rebranded Debian, but with some

00:57:07.900 --> 00:57:09.460
things that are kind of broken and annoying.

00:57:10.280 --> 00:57:12.539
And so after a while, I realized there really

00:57:12.539 --> 00:57:14.420
wasn't any point in using it, especially for

00:57:14.420 --> 00:57:16.860
a home user like me. I'm not interested in like...

00:57:17.179 --> 00:57:19.139
you know, formal support contracts and all that

00:57:19.139 --> 00:57:21.000
kind of stuff. I just want to, you know, just

00:57:21.000 --> 00:57:23.539
want to use it as a hobbyist, right? So, you

00:57:23.539 --> 00:57:25.840
know, Debian is just plain and simple and it

00:57:25.840 --> 00:57:28.860
works and it's stable and it generally doesn't

00:57:28.860 --> 00:57:33.260
break, right? So, yeah. Yeah, I just use Debian.

00:57:33.320 --> 00:57:37.179
And I've been using Debian since version 2, I

00:57:37.179 --> 00:57:40.960
think. Like, you know, maybe version 3 on a server.

00:57:41.119 --> 00:57:43.880
Like, I still remember at university, what, 20

00:57:43.880 --> 00:57:46.480
years or so ago, having a sort of... a server

00:57:46.480 --> 00:57:49.340
in my dorm room, you know, with Debian installed,

00:57:49.519 --> 00:57:52.139
Debian 2 or Debian 3, I think, installed on it.

00:57:52.239 --> 00:57:54.079
And, you know, it's stable then and it's still

00:57:54.079 --> 00:57:56.719
stable now. So, yeah, I really like it. I think

00:57:56.719 --> 00:57:59.619
it's a great project. Yeah, I love Debian too.

00:58:00.159 --> 00:58:02.019
The only thing is that there's more documentation

00:58:02.019 --> 00:58:06.280
for Ubuntu, but you can find your way around

00:58:06.280 --> 00:58:09.300
in Debian as well, right? Yeah, and a lot of

00:58:09.300 --> 00:58:11.539
the stuff is very similar, right? Because Ubuntu

00:58:11.539 --> 00:58:13.800
is based on Debian, so a lot of the time you

00:58:13.800 --> 00:58:16.599
can kind of copy commands or adapt them or whatever.

00:58:17.320 --> 00:58:20.559
Yeah. Okay. What are your thoughts on Windows?

00:58:23.949 --> 00:58:27.489
i mean these days for me personally it's mostly

00:58:27.489 --> 00:58:31.150
irrelevant right like i mean you know i think

00:58:31.150 --> 00:58:36.030
um like i i went through a phase like when i

00:58:36.030 --> 00:58:37.650
was a kid you know i had quite a lot of like

00:58:37.650 --> 00:58:40.130
windows you know machines and so on and so i

00:58:40.130 --> 00:58:41.809
went through a phase like customizing them a

00:58:41.809 --> 00:58:43.489
lot and fiddling with them a lot you know that

00:58:43.489 --> 00:58:46.050
was back in like windows 95 days and things like

00:58:46.050 --> 00:58:50.659
that but i mean these days Whenever I've used

00:58:50.659 --> 00:58:52.739
Windows recently, which is not very often at

00:58:52.739 --> 00:58:54.280
all, it tends to be when I'm helping someone

00:58:54.280 --> 00:58:57.500
else out who's got Windows on their laptop. I'm

00:58:57.500 --> 00:59:00.440
sure all us techie people have the same thing,

00:59:00.480 --> 00:59:02.400
right? Someone comes along and is like, can you

00:59:02.400 --> 00:59:05.820
help me fix my laptop? And so I'll try, and often

00:59:05.820 --> 00:59:09.199
I can fix the problem, but my experience is it

00:59:09.199 --> 00:59:13.380
just seems to be overcomplicated for simple things.

00:59:14.079 --> 00:59:16.940
And I just don't really see that it has any notable

00:59:16.940 --> 00:59:21.099
advantages at this point beyond, you know, using

00:59:21.099 --> 00:59:23.800
a Mac or, you know, maybe even using Linux Mint,

00:59:23.900 --> 00:59:25.880
for example. I have one or two family members

00:59:25.880 --> 00:59:28.519
who are not very technical and I tend to install

00:59:28.519 --> 00:59:30.559
Linux Mint on their laptops because it's just

00:59:30.559 --> 00:59:32.639
nice and straightforward and easy to use kind

00:59:32.639 --> 00:59:36.920
of out of the box, you know, without really needing

00:59:36.920 --> 00:59:38.780
to be techie or kind of understand what a terminal

00:59:38.780 --> 00:59:42.380
is or any of that kind of nonsense, right? So,

00:59:42.380 --> 00:59:44.739
you know, if I have a family member who's like,

00:59:44.820 --> 00:59:47.780
can you sort out my laptop for me? 90 % of the

00:59:47.780 --> 00:59:49.920
time, that's get rid of Windows, install Linux

00:59:49.920 --> 00:59:52.019
Mint. And they can't really tell the difference

00:59:52.019 --> 00:59:54.420
because it's kind of pretty similar, right? Like,

00:59:54.420 --> 00:59:57.800
you know, to all the things that it matters for

00:59:57.800 --> 01:00:00.460
them, at least, like, it's pretty similar. Which

01:00:00.460 --> 01:00:03.380
is browser, basically. Which is a browser and

01:00:03.380 --> 01:00:05.960
maybe an email client. Yeah, things like that,

01:00:06.039 --> 01:00:09.340
right? Okay, okay. Window Manager, you mentioned

01:00:09.340 --> 01:00:12.059
that you use i3, right? Is that what you started

01:00:12.059 --> 01:00:17.039
with? No, I think I went through a phase of transitioning

01:00:17.039 --> 01:00:20.820
across to using i3 about three or four years

01:00:20.820 --> 01:00:26.300
ago, something like that. I mean, I've used loads

01:00:26.300 --> 01:00:28.579
of Window Managers over the years. I can't even

01:00:28.579 --> 01:00:30.619
remember what I was using before that. Probably

01:00:30.619 --> 01:00:35.849
some GNOME thing, I think. I just quite like

01:00:35.849 --> 01:00:39.730
the idea of using the keyboard a lot. Like, you

01:00:39.730 --> 01:00:41.489
know, I sort of went through a phase of trying

01:00:41.489 --> 01:00:44.190
to learn keyboard shortcuts for loads of stuff

01:00:44.190 --> 01:00:45.929
just because it makes you so much more efficient.

01:00:46.230 --> 01:00:48.610
And the nice thing about using Live 3 is, like,

01:00:48.710 --> 01:00:51.369
I'm sitting here and I'm barely touching my mouse

01:00:51.369 --> 01:00:54.659
a lot of the time, right? I mean, I use my mouse

01:00:54.659 --> 01:00:56.920
in my browser, I suppose. That's probably the

01:00:56.920 --> 01:00:59.059
one place where I use it quite a lot. But, you

01:00:59.059 --> 01:01:00.579
know, if I'm doing stuff on terminals, I can

01:01:00.579 --> 01:01:02.920
just open my terminal. I can open another terminal.

01:01:03.039 --> 01:01:05.300
I can change the splits around. I can do all

01:01:05.300 --> 01:01:07.380
kinds of stuff. Like I'm just touching my keyboard.

01:01:07.460 --> 01:01:09.880
I'm not even, you know, touching the mouse at

01:01:09.880 --> 01:01:12.199
this point. So that's one of the things I like

01:01:12.199 --> 01:01:16.239
about i3. And I know there's similar window managers

01:01:16.239 --> 01:01:20.059
to i3. I'm actually blanking on the names right

01:01:20.059 --> 01:01:21.980
now, right? You know, there are other kind of

01:01:21.980 --> 01:01:25.730
sort of, sort of BSP -type window managers like

01:01:25.730 --> 01:01:27.489
that. But I don't know. For some reason, when

01:01:27.489 --> 01:01:29.610
I was looking, I kind of settled on i3, and it

01:01:29.610 --> 01:01:31.449
does everything I need it to. So that's kind

01:01:31.449 --> 01:01:35.190
of what I stick with. Okay, wonderful. Are you

01:01:35.190 --> 01:01:38.269
a single monitor person or multiple monitors?

01:01:39.130 --> 01:01:41.630
Well, multiple monitor today, just because it's

01:01:41.630 --> 01:01:43.869
easier for us to do our recording like this.

01:01:43.929 --> 01:01:45.989
But no, generally, I'm a single monitor guy,

01:01:46.150 --> 01:01:50.320
right? Yeah, I mean, I'm lucky enough to have

01:01:50.320 --> 01:01:52.280
a nice big monitor on my desk at home, but I

01:01:52.280 --> 01:01:55.059
also have a relatively small desk, so it's just

01:01:55.059 --> 01:01:57.940
the one monitor. And yeah, generally that works

01:01:57.940 --> 01:02:00.800
for me. I've kind of dabbled in the past, in

01:02:00.800 --> 01:02:03.099
years past, with kind of having multiple monitors.

01:02:03.239 --> 01:02:05.360
But for me, at least, I find it kind of annoying,

01:02:05.519 --> 01:02:07.659
like stretching my neck and stuff. So, you know,

01:02:07.760 --> 01:02:10.679
I just tend to stick with one. One big one is

01:02:10.679 --> 01:02:14.639
kind of my approach. Okay, wonderful. Yeah, me

01:02:14.639 --> 01:02:17.860
too. Single monitor. I used a big TV in the past,

01:02:17.880 --> 01:02:22.179
but... No, it's not efficient. I prefer to have

01:02:22.179 --> 01:02:25.800
one. Yep. What terminal emulator do you use?

01:02:26.360 --> 01:02:29.920
At the moment I use Kitty. You know, there are

01:02:29.920 --> 01:02:32.519
lots of similar terminal emulators out there.

01:02:32.579 --> 01:02:35.219
I know that. I'm not like super wedded to Kitty,

01:02:35.340 --> 01:02:38.199
but I've spent a little bit of time kind of customizing

01:02:38.199 --> 01:02:41.159
it for my needs. You know, we've kind of sort

01:02:41.159 --> 01:02:43.260
of, and I just like the way that Kitty does kind

01:02:43.260 --> 01:02:46.260
of quite a lot of. nice stuff out of the box.

01:02:46.360 --> 01:02:48.460
Like it's quite standards compliant these days.

01:02:48.519 --> 01:02:50.420
So it does all the kind of slightly more advanced

01:02:50.420 --> 01:02:55.599
stuff. Um, but you know, it also supports a whole

01:02:55.599 --> 01:02:58.300
bunch of like rich features. So yeah, I just

01:02:58.300 --> 01:03:01.820
tend to use Kitty. Okay. Wonderful. Do you use

01:03:01.820 --> 01:03:06.679
a special keyboard? Uh, no, not particularly.

01:03:06.960 --> 01:03:10.559
No, I just got a standard standard UK keyboard,

01:03:10.659 --> 01:03:13.320
which is, which is where I am. And that's, that's

01:03:13.320 --> 01:03:16.679
what I use. Okay. Use which layout? QWERTY or

01:03:16.679 --> 01:03:19.280
something different? Oh, yeah, yeah, QWERTY.

01:03:19.460 --> 01:03:22.420
Yeah, yeah, yeah. Yeah, no, no, I sort of vaguely

01:03:22.420 --> 01:03:24.659
dabbled with the idea of trying Dvorak or one

01:03:24.659 --> 01:03:26.760
of these alternative layouts. But the problem

01:03:26.760 --> 01:03:29.019
I find is you can never interact in the real

01:03:29.019 --> 01:03:31.500
world by doing that because you do it on your

01:03:31.500 --> 01:03:33.219
laptop, but then as soon as you go to someone

01:03:33.219 --> 01:03:34.679
else's laptop, someone else is like, oh, can

01:03:34.679 --> 01:03:36.139
you help me fix a problem on my laptop? And you

01:03:36.139 --> 01:03:37.980
try and type something in, and it's like, that's

01:03:37.980 --> 01:03:40.119
just going to die. My brain is not big enough

01:03:40.119 --> 01:03:41.880
to cope with both of those things simultaneously.

01:03:42.280 --> 01:03:44.360
So, yeah, no, I just stick with standard QWERTY.

01:03:44.519 --> 01:03:47.719
I know it's supposed to be more efficient keyboard.

01:03:47.849 --> 01:03:50.590
layouts but i just haven't got the patience to

01:03:50.590 --> 01:03:53.750
deal with learning one of them okay do you use

01:03:53.750 --> 01:03:58.530
ai what are your thoughts on it yeah so i use

01:03:58.530 --> 01:04:03.349
interesting so yeah i use ai a bit in my job

01:04:03.349 --> 01:04:07.000
right because i'm kind of a consultant sort of

01:04:07.000 --> 01:04:09.780
technology consultant in my in my job so sometimes

01:04:09.780 --> 01:04:12.940
I'll use it to like research issues or you know

01:04:12.940 --> 01:04:15.960
things like that but it's like probably more

01:04:15.960 --> 01:04:18.619
more relevant and interesting to this video and

01:04:18.619 --> 01:04:21.780
the folks watching it you know how do I use it

01:04:21.780 --> 01:04:23.659
in kind of like more sort of programming kind

01:04:23.659 --> 01:04:25.679
of or you know kind of like development type

01:04:25.679 --> 01:04:30.420
context it's interesting so I Haven't integrated

01:04:30.420 --> 01:04:33.320
it with NeoVim. I tried one or two NeoVim AI

01:04:33.320 --> 01:04:36.059
plugins to interact with things like GPT and

01:04:36.059 --> 01:04:39.440
stuff like that. It's probably just me being

01:04:39.440 --> 01:04:41.099
impatient and not spending enough time on it,

01:04:41.139 --> 01:04:43.320
but I haven't yet found any that I like. I'm

01:04:43.320 --> 01:04:45.619
quite unusual, I think, in the NeoVim community

01:04:45.619 --> 01:04:48.340
in that I really hate autocomplete. I keep trying

01:04:48.340 --> 01:04:50.619
it, but I just can't get with it. So I kind of

01:04:50.619 --> 01:04:52.260
turn it off. And, you know, I think a lot of

01:04:52.260 --> 01:04:54.960
that AI stuff works quite well in an autocomplete

01:04:54.960 --> 01:04:57.980
context. What I will do, though, sometimes is

01:04:57.980 --> 01:05:00.260
I'll go to chat GPT, for example, and I'll just

01:05:00.260 --> 01:05:02.340
be like, can you write me a snippet of code to

01:05:02.340 --> 01:05:05.699
do X, Y, Z? And then I'll like copy and paste

01:05:05.699 --> 01:05:09.599
it in and adapt it. Or, for example, the other

01:05:09.599 --> 01:05:11.380
day I was playing around with a Python script

01:05:11.380 --> 01:05:13.780
and I was like, I don't know how to read in this

01:05:13.780 --> 01:05:16.940
JSON file whilst doing, you know, whilst doing

01:05:16.940 --> 01:05:19.159
some like. type assertions and stuff like that,

01:05:19.260 --> 01:05:23.139
so I would get it to explain it to me. So it's

01:05:23.139 --> 01:05:25.139
more like a little bit kind of a coding assistant.

01:05:25.360 --> 01:05:28.179
To be honest, if I was doing, like, coding professionally,

01:05:28.380 --> 01:05:30.860
I would probably spend more time on getting that

01:05:30.860 --> 01:05:33.599
set up properly so that it integrated with NeoVim

01:05:33.599 --> 01:05:36.400
or, you know, VS Code or whatever editor I was

01:05:36.400 --> 01:05:39.000
using, but I don't do it enough professionally

01:05:39.000 --> 01:05:42.300
to, like, justify spending the time on, like,

01:05:42.340 --> 01:05:47.940
getting it all perfectly. Okay. I lasted for

01:05:47.940 --> 01:05:50.699
a second, but you're here again. Can you hear

01:05:50.699 --> 01:05:53.280
me? Yeah. Yeah, I can hear you. Can you hear

01:05:53.280 --> 01:05:59.019
me clearly? Yep, I can. Okay. Okay. And are you

01:05:59.019 --> 01:06:01.179
working on any other projects that you want to

01:06:01.179 --> 01:06:06.059
share with someone watching? Not any kind of

01:06:06.059 --> 01:06:08.179
like, not too many kind of sort of personal projects

01:06:08.179 --> 01:06:10.820
at this stage. I mean, like I said earlier, I

01:06:10.820 --> 01:06:12.590
am kind of sort of... dabbling with the idea

01:06:12.590 --> 01:06:14.710
of doing a YouTube channel, but I'm still trying

01:06:14.710 --> 01:06:16.789
to figure out what ideas and stuff I want to

01:06:16.789 --> 01:06:19.010
do there. So nothing kind of to publicly announce.

01:06:19.309 --> 01:06:22.050
I did mention earlier, I have kind of one other

01:06:22.050 --> 01:06:26.769
NeoVim plugin, right? So if you kind of go up

01:06:26.769 --> 01:06:32.650
into my... into my uh github username so you'll

01:06:32.650 --> 01:06:34.130
see i've got another plugin here called wrapping

01:06:34.130 --> 01:06:37.329
.nvm it does need a bit of attention i will warn

01:06:37.329 --> 01:06:39.750
you so you know if anyone's feeling on like trying

01:06:39.750 --> 01:06:42.130
this out you're more than welcome but it hasn't

01:06:42.130 --> 01:06:45.710
had any uh maintenance in a little while so you

01:06:45.710 --> 01:06:47.010
know it might be a little bit more rough around

01:06:47.010 --> 01:06:50.150
the edges than uh debug print essentially what

01:06:50.150 --> 01:06:52.150
this was supposed to do was this was supposed

01:06:52.150 --> 01:06:54.690
to deal with This is supposed to deal with the

01:06:54.690 --> 01:06:57.670
fact that things like markdown files, for example,

01:06:57.670 --> 01:07:00.909
sometimes have soft or hard kind of wrapping

01:07:00.909 --> 01:07:04.190
modes, like soft or hard wrapping endings. And

01:07:04.190 --> 01:07:06.309
wrapping .envim is designed to automatically

01:07:06.309 --> 01:07:10.510
detect that and then change the relevant NeoVim

01:07:10.510 --> 01:07:12.329
settings to kind of handle that automatically,

01:07:12.469 --> 01:07:14.750
which is something, surprisingly, that NeoVim

01:07:14.750 --> 01:07:18.409
doesn't do out of the box. But like I say, it

01:07:18.409 --> 01:07:20.369
probably needs a little bit of kind of sort of

01:07:20.369 --> 01:07:22.170
love and care and updating. You know, there's

01:07:22.170 --> 01:07:23.989
a few issues that need attention there and so

01:07:23.989 --> 01:07:26.409
on. It should still work. So if folks are interested

01:07:26.409 --> 01:07:28.349
in trying it, by all means, please go and try

01:07:28.349 --> 01:07:30.909
it. And if you're interested in using it or it's

01:07:30.909 --> 01:07:33.530
not working for you, again, please open an issue.

01:07:33.670 --> 01:07:35.829
You know, maybe that will motivate me to give

01:07:35.829 --> 01:07:37.829
it a bit more attention. But that's one thing.

01:07:38.989 --> 01:07:41.409
It's not really a project, but if folks are interested

01:07:41.409 --> 01:07:44.250
in seeing my NeoVim .files, you can take a look.

01:07:44.349 --> 01:07:48.489
If you go into my... .files repo. This is actually

01:07:48.489 --> 01:07:50.989
my .files for all kinds of stuff, not just NeoVim.

01:07:51.050 --> 01:07:53.389
So if you go into this directory here, stow,

01:07:53.510 --> 01:07:57.409
and then you go down to where are we, if command,

01:07:57.510 --> 01:08:00.730
it's a little bit kind of hidden. And then down

01:08:00.730 --> 01:08:03.809
here to nvim, that's where all my NeoVim kind

01:08:03.809 --> 01:08:05.889
of .files are. So, you know, if you're interested

01:08:05.889 --> 01:08:07.750
in seeing what I'm doing there, then you can

01:08:07.750 --> 01:08:11.190
have a look in that if that's interesting. So

01:08:11.190 --> 01:08:12.650
that's kind of the main stuff that I have going

01:08:12.650 --> 01:08:16.119
on. Okay. Wonderful. You mind sharing three of

01:08:16.119 --> 01:08:21.039
your favorite terminal tools or TUIs or CLI tools,

01:08:21.399 --> 01:08:27.279
whatever? Yes, I do. So I already mentioned kind

01:08:27.279 --> 01:08:32.079
of one of them, which is LF, right? I'm opening

01:08:32.079 --> 01:08:33.779
up on the wrong screen there, so you won't be

01:08:33.779 --> 01:08:35.760
able to see that. Let me just try and do that

01:08:35.760 --> 01:08:37.039
on the right screen. There we go. So hopefully

01:08:37.039 --> 01:08:39.359
you can see that in the window. So, yeah, so

01:08:39.359 --> 01:08:41.039
I already mentioned one of them, LX. So, like

01:08:41.039 --> 01:08:42.739
I said, this is just a kind of a file manager.

01:08:42.880 --> 01:08:45.060
I've spent a little bit of time kind of customizing

01:08:45.060 --> 01:08:47.600
that for my needs. If you're interested, the

01:08:47.600 --> 01:08:50.659
.file for that is in my .files repo as well.

01:08:52.199 --> 01:08:55.039
Another one that I use sometimes that's maybe

01:08:55.039 --> 01:08:56.840
a little bit less well -known is a thing called

01:08:56.840 --> 01:09:02.039
Entra, E -E -E -N -T -R. So if you go, I'll show

01:09:02.039 --> 01:09:04.680
you by example. So if you go into, here's, for

01:09:04.680 --> 01:09:08.689
example, the debug print. repository in my home

01:09:08.689 --> 01:09:11.189
directory, you know, where lazy checks it out.

01:09:12.149 --> 01:09:14.890
So one of the things I mentioned earlier is the

01:09:14.890 --> 01:09:17.409
debug print has some unit tests. So if I just

01:09:17.409 --> 01:09:21.850
run make, it will run the unit tests for debug

01:09:21.850 --> 01:09:24.569
print. And hopefully they're all passed. Yep,

01:09:24.630 --> 01:09:26.770
they did all pass. That's great. So, you know,

01:09:26.810 --> 01:09:30.359
debug print's working. But when I'm developing

01:09:30.359 --> 01:09:32.180
on debug print, one of the things I sometimes

01:09:32.180 --> 01:09:35.199
want to do is repeatedly run those unit tests,

01:09:35.340 --> 01:09:36.819
right? Because that's kind of the whole point

01:09:36.819 --> 01:09:39.939
of having automated testing. So one of the things

01:09:39.939 --> 01:09:42.140
I'll do is I'll use entra to set that up. So

01:09:42.140 --> 01:09:45.520
what you can do is you can basically say find

01:09:45.520 --> 01:09:48.500
dot, right? So probably as many people will know,

01:09:48.560 --> 01:09:51.159
if I just run find dot, that will list all of

01:09:51.159 --> 01:09:53.640
the files under the debug print repo. So I can

01:09:53.640 --> 01:09:56.319
do find dot, and then I can pipe that into entra.

01:09:57.199 --> 01:10:00.260
And I can type make. And what that will basically

01:10:00.260 --> 01:10:03.699
do is it will watch all of those files, right?

01:10:03.779 --> 01:10:06.100
Every single one of them. And if any one of them

01:10:06.100 --> 01:10:09.159
changes, it will rerun the make command, which

01:10:09.159 --> 01:10:11.920
in this particular case is like synced up to

01:10:11.920 --> 01:10:14.159
basically run the unit test, right? So if I just

01:10:14.159 --> 01:10:17.380
run that, the first time it will run make. If

01:10:17.380 --> 01:10:20.180
I then open up another terminal window, and maybe

01:10:20.180 --> 01:10:22.279
let's put them side by side so that you can see

01:10:22.279 --> 01:10:24.569
what's going on a little bit more clearly. If

01:10:24.569 --> 01:10:28.329
I go back into the debug print repository, oh,

01:10:28.489 --> 01:10:30.590
that's the wrong place. If I go back into the

01:10:30.590 --> 01:10:34.130
debug print repository, let's say, for example,

01:10:34.329 --> 01:10:38.409
I just, I don't know, let's modify the readme,

01:10:38.470 --> 01:10:40.170
right, because obviously that's not going to

01:10:40.170 --> 01:10:42.489
actually change anything in the code, but, you

01:10:42.489 --> 01:10:44.729
know, it's still changing some contents of the

01:10:44.729 --> 01:10:47.369
repo. So let's say I change the readme and press

01:10:47.369 --> 01:10:50.920
write quit. You'll see it. reruns the tests over

01:10:50.920 --> 01:10:53.479
here right so basically this is like a really

01:10:53.479 --> 01:10:57.140
easy way of like i'm changing some code or maybe

01:10:57.140 --> 01:10:59.699
i'm changing one of the tests every time i change

01:10:59.699 --> 01:11:02.000
something and i write and quit it reruns the

01:11:02.000 --> 01:11:04.380
whole test suite over there on the left But you

01:11:04.380 --> 01:11:06.800
can generalize this concept, right? So it's not

01:11:06.800 --> 01:11:09.300
just for running tests. That's just how I happen

01:11:09.300 --> 01:11:12.119
to be using it here. Basically, any command that

01:11:12.119 --> 01:11:14.619
you have that will create a list of files on

01:11:14.619 --> 01:11:18.119
your file system, Entra will then find it's quite

01:11:18.119 --> 01:11:19.560
a convenient way of doing that. But there's obviously

01:11:19.560 --> 01:11:22.100
many other ways. Entra will then watch that entire

01:11:22.100 --> 01:11:24.239
list. And any time any of those files changes,

01:11:24.300 --> 01:11:26.899
it reruns the command that comes after Entra,

01:11:27.060 --> 01:11:29.539
which in this case is make, which reruns the

01:11:29.539 --> 01:11:32.140
test. So it's quite a useful general command

01:11:32.140 --> 01:11:35.569
for watching stuff. and doing stuff oh that is

01:11:35.569 --> 01:11:39.250
a pretty interesting tip thank you for that okay

01:11:39.250 --> 01:11:45.109
any other one uh immediately comes to mind no

01:11:45.109 --> 01:11:50.109
no okay that's fine that's fine do you have three

01:11:50.109 --> 01:11:54.170
favorite neobim plugins Three favorite NeoVim

01:11:54.170 --> 01:11:56.130
plugins. So I didn't have a list prepared, but

01:11:56.130 --> 01:11:58.829
let's take a look in my top files and see what

01:11:58.829 --> 01:12:02.510
I can suggest for you. Let me just clear up my

01:12:02.510 --> 01:12:07.390
screen a little bit. Let's go and take a look

01:12:07.390 --> 01:12:09.930
at my NeoVim configuration. So the way my NeoVim

01:12:09.930 --> 01:12:11.569
configuration is structured, and again, by the

01:12:11.569 --> 01:12:13.250
way, this is all public, so if anyone's interested

01:12:13.250 --> 01:12:15.189
in looking at any of this stuff, you can just

01:12:15.189 --> 01:12:18.850
go to my GitHub repo for my .files. So you can

01:12:18.850 --> 01:12:20.789
see I actually use quite a lot of NeoVim plugins.

01:12:21.010 --> 01:12:22.789
I always used to like to say that I was quite

01:12:22.789 --> 01:12:25.689
a Vim minimalist, but it turns out I'm actually

01:12:25.689 --> 01:12:29.619
not. I've got quite a few. So let's see, what

01:12:29.619 --> 01:12:31.699
have I got in here? So one of the interesting

01:12:31.699 --> 01:12:35.159
ones is, I'm trying to see if there's anything

01:12:35.159 --> 01:12:38.569
particularly unusual in here. folks watching

01:12:38.569 --> 01:12:42.090
this may not have come across before um one of

01:12:42.090 --> 01:12:44.270
the ones i quite like is capture it's really

01:12:44.270 --> 01:12:46.710
simple right but basically if i'm in near them

01:12:46.710 --> 01:12:51.090
if i do something like um i don't know for example

01:12:51.090 --> 01:12:54.970
hi uh let's think of a good example if i type

01:12:54.970 --> 01:12:57.989
highlight here as a command it will print out

01:12:57.989 --> 01:13:00.529
um all of these different highlight groups and

01:13:00.529 --> 01:13:03.170
it does it in a way where it's kind of a really

01:13:03.170 --> 01:13:05.750
annoying pager where you can only go down it's

01:13:05.750 --> 01:13:09.060
quite old school In fact, there is a NeoVim issue,

01:13:09.159 --> 01:13:11.439
I think, to fix that. But one of the things you

01:13:11.439 --> 01:13:13.720
can do is you can type Capture Highlight with

01:13:13.720 --> 01:13:16.220
this plugin installed, and it will then capture

01:13:16.220 --> 01:13:18.159
all that, and it will put it in a buffer. Now,

01:13:18.180 --> 01:13:20.399
actually, in this case, that was quite a bad

01:13:20.399 --> 01:13:22.220
example because the whole point of the highlight

01:13:22.220 --> 01:13:24.140
thing is to have them all printed out with different

01:13:24.140 --> 01:13:25.819
colors, and of course it hasn't actually honored

01:13:25.819 --> 01:13:28.180
that. So that's maybe not the best example I

01:13:28.180 --> 01:13:30.659
could have used, but still, Capture is kind of

01:13:30.659 --> 01:13:34.890
pretty helpful sometimes. Let's see what else

01:13:34.890 --> 01:13:37.590
is kind of sort of particularly interesting.

01:13:38.279 --> 01:13:40.479
Oh, so one of the other interesting ones, I actually

01:13:40.479 --> 01:13:42.520
only started using this recently, is this thing

01:13:42.520 --> 01:13:45.220
called Quicker, which is quite interesting. So

01:13:45.220 --> 01:13:47.720
what it enables you to do is you can do things

01:13:47.720 --> 01:13:51.560
like, let's say I'm in my .files directory, for

01:13:51.560 --> 01:13:53.979
example. So let's change the current directory

01:13:53.979 --> 01:13:57.680
as my .files. And then let's grep for, I don't

01:13:57.680 --> 01:14:02.500
know, the word plugin. I'm sure that's in there

01:14:02.500 --> 01:14:05.760
plenty of times. It is. So now that I've grep

01:14:05.760 --> 01:14:09.619
for the word plugin, It's found all of those

01:14:09.619 --> 01:14:12.319
and it's put them into a quick fix window. Probably

01:14:12.319 --> 01:14:15.140
many of the people watching this video will be

01:14:15.140 --> 01:14:16.819
familiar with the quick fix window, but just

01:14:16.819 --> 01:14:19.079
in case you're not, this is kind of like a sort

01:14:19.079 --> 01:14:22.060
of standard old school Vim thing, right? That

01:14:22.060 --> 01:14:24.079
basically kind of, you know, allows you to capture.

01:14:25.410 --> 01:14:27.949
basically kind of files and lines and so in this

01:14:27.949 --> 01:14:29.930
particular case it's taken the output of grep

01:14:29.930 --> 01:14:31.729
and it's put that into this quick fix window

01:14:31.729 --> 01:14:34.630
right so i can navigate up and down between those

01:14:34.630 --> 01:14:37.189
different uh all the different places that it's

01:14:37.189 --> 01:14:39.960
found the word plug in across the whole of my

01:14:39.960 --> 01:14:42.539
dot files repo so that's great right so i'm just

01:14:42.539 --> 01:14:46.479
pressing you know uh next bracket q to just kind

01:14:46.479 --> 01:14:48.100
of navigate up and down through my quickspace

01:14:48.100 --> 01:14:51.039
window so that's fine but then what this quicker

01:14:51.039 --> 01:14:53.960
plugin also allows me to do is to basically manipulate

01:14:53.960 --> 01:14:57.770
the quick fix window So let's say, for example,

01:14:57.869 --> 01:15:00.409
now having done that search on the word plugin,

01:15:00.689 --> 01:15:02.989
what I want to do is I actually want to replace

01:15:02.989 --> 01:15:06.770
everywhere in this file where it says the word

01:15:06.770 --> 01:15:10.829
plug with the word banana. Right. So I'm just

01:15:10.829 --> 01:15:13.649
using sort of a standard Vim search and replace

01:15:13.649 --> 01:15:19.189
within the quick fix list buffer. So I'm replacing

01:15:19.189 --> 01:15:21.989
the word plug with the word banana. And I'm going

01:15:21.989 --> 01:15:24.510
to put the C option on here as well, which allows

01:15:24.510 --> 01:15:29.760
me to confirm it. Oh, that didn't work. Okay,

01:15:29.859 --> 01:15:33.180
that's a bit of a shame. That should have worked,

01:15:33.220 --> 01:15:37.460
I think. I wonder if the plugin's not working.

01:15:38.000 --> 01:15:40.420
Oh, there we go. There we go. I sort of cheated

01:15:40.420 --> 01:15:43.060
by changing it, but it may be that there's a

01:15:43.060 --> 01:15:45.640
bug with the plugin. It's not my plugin, so I'm

01:15:45.640 --> 01:15:48.140
going to disclaim responsibility there. But the

01:15:48.140 --> 01:15:51.159
idea is supposed to be that I can basically now

01:15:51.159 --> 01:15:54.300
manipulate this buffer. And once I save those

01:15:54.300 --> 01:15:57.319
changes, it's a little bit like oil. Once I save

01:15:57.319 --> 01:15:59.300
those changes, they will actually be reflected

01:15:59.300 --> 01:16:01.720
in the original files, right? So if I go through

01:16:01.720 --> 01:16:05.199
and I replace it with banana, here, here, not

01:16:05.199 --> 01:16:09.279
here, here, not here, I can basically use any

01:16:09.279 --> 01:16:11.600
Vim command I want, you know, edit this buffer

01:16:11.600 --> 01:16:13.779
in any way I like. And then when I press right,

01:16:14.020 --> 01:16:16.979
it should reflect those in the original file.

01:16:17.470 --> 01:16:19.069
But obviously this plugin isn't quite working

01:16:19.069 --> 01:16:20.869
right for some reason. I'm sure it's a good plugin.

01:16:20.970 --> 01:16:22.909
Maybe I just haven't got it set up right or something.

01:16:23.270 --> 01:16:25.270
Maybe you need to do some debugging offline.

01:16:25.470 --> 01:16:27.729
But that's kind of the idea is that it enables

01:16:27.729 --> 01:16:30.329
you to actually edit quick fix buffers and then

01:16:30.329 --> 01:16:32.989
make changes to them. But clearly it's not working

01:16:32.989 --> 01:16:36.529
right for some reason. Oh, and then like this

01:16:36.529 --> 01:16:38.949
one is completely frivolous and a little bit

01:16:38.949 --> 01:16:41.789
silly. but I quite like it, and it's called Tiny

01:16:41.789 --> 01:16:44.470
Glimmer. So basically what it does is it kind

01:16:44.470 --> 01:16:47.430
of, like, animates your yanks and puts and so

01:16:47.430 --> 01:16:49.810
on and so forth. So if I, like, yank, yank that

01:16:49.810 --> 01:16:52.649
line, I don't know how well this is coming out

01:16:52.649 --> 01:16:54.689
over YouTube and over the recording because it's

01:16:54.689 --> 01:16:57.069
quite a smooth animation, but hopefully you'll

01:16:57.069 --> 01:16:59.130
at least get the idea. If I, like, yank, yank

01:16:59.130 --> 01:17:01.970
that line, it kind of highlights and flickers

01:17:01.970 --> 01:17:04.890
it. And then if I paste it down here, you can

01:17:04.890 --> 01:17:08.430
see it, like, sort of zooms in. Probably on the

01:17:08.430 --> 01:17:10.369
recording it may look... a little bit more janky

01:17:10.369 --> 01:17:12.789
than it would in real life, but you kind of get

01:17:12.789 --> 01:17:16.369
the idea. So yeah, there you go. There's three

01:17:16.369 --> 01:17:19.390
off the top of my head. I mean, if you're interested

01:17:19.390 --> 01:17:21.590
in seeing what other plugins I'm using, then

01:17:21.590 --> 01:17:24.050
by all means look in my .files, but that's kind

01:17:24.050 --> 01:17:28.670
of the idea. Okay, okay, wonderful. And what

01:17:28.670 --> 01:17:34.170
are your thoughts on homelabs? What are my thoughts

01:17:34.170 --> 01:17:37.050
on homelabs? I wouldn't go so far as to say I

01:17:37.050 --> 01:17:40.710
have a homelab. But I have a home to servers.

01:17:42.250 --> 01:17:46.109
So, like, I do do quite a lot of sort of self

01:17:46.109 --> 01:17:49.810
-hosting of stuff. So, like, for example, I kind

01:17:49.810 --> 01:17:55.390
of sort of self -host my own iCal server for

01:17:55.390 --> 01:17:58.810
my calendar, like, that I use with my, you know,

01:17:58.850 --> 01:18:02.430
iPhone and stuff like that. What else do I self

01:18:02.430 --> 01:18:06.989
-host? uh i self -host an ad blocker and stuff

01:18:06.989 --> 01:18:09.649
like that so i mean yeah i i have felt like my

01:18:09.649 --> 01:18:12.100
whole network i mean So, yeah, I have, like,

01:18:12.159 --> 01:18:15.979
one or two servers that I kind of have running

01:18:15.979 --> 01:18:19.060
at home. But I wouldn't say I'm, like, majorly

01:18:19.060 --> 01:18:22.979
into that. Just enough, basically, for kind of

01:18:22.979 --> 01:18:26.520
what I need. I'm more of a software guy than

01:18:26.520 --> 01:18:28.800
a hardware guy. Let's put it that way, right?

01:18:28.899 --> 01:18:32.319
So, you know, they're nothing fancy. They're

01:18:32.319 --> 01:18:35.260
just those little mini ITX, are they called,

01:18:35.439 --> 01:18:40.220
I think? Like the little Intel NUCs. I don't

01:18:40.220 --> 01:18:42.250
even know. how you pronounce it but yeah just

01:18:42.250 --> 01:18:44.109
just those kind of little boxes they're not they're

01:18:44.109 --> 01:18:47.569
nothing particularly powerful oh you run a hypervisor

01:18:47.569 --> 01:18:51.029
on them or just straight linux no i just run

01:18:51.029 --> 01:18:53.909
debian on them directly i mean these days people

01:18:53.909 --> 01:18:55.550
seem to be getting more and more into running

01:18:55.550 --> 01:18:58.529
things like proxmox and stuff like that on them

01:18:58.529 --> 01:19:01.199
and i've certainly heard about that but but so

01:19:01.199 --> 01:19:02.819
far it's not something i've been particularly

01:19:02.819 --> 01:19:05.159
interested in doing so yeah i just run debian

01:19:05.159 --> 01:19:08.819
on them directly on bare metal okay okay wonderful

01:19:08.819 --> 01:19:12.039
you want to share to end the call two of your

01:19:12.039 --> 01:19:17.869
favorite music bands yeah so music i have a diverse

01:19:17.869 --> 01:19:20.829
and eclectic kind of musical interest i guess

01:19:20.829 --> 01:19:23.470
i would say but you know as of recent years i'm

01:19:23.470 --> 01:19:25.729
quite into my metal so things like nine inch

01:19:25.729 --> 01:19:28.350
nails metallica things of things of that nature

01:19:28.350 --> 01:19:31.010
like fast stuff that kind of sort of helps me

01:19:31.010 --> 01:19:33.930
like stay in the zone and focus when i'm working

01:19:33.930 --> 01:19:36.630
basically so things like that but i'm not i'm

01:19:36.630 --> 01:19:40.149
no like musical expert guru i just kind of like

01:19:40.149 --> 01:19:43.590
what i like basically okay okay wonderful and

01:19:43.590 --> 01:19:49.720
what about movies cheesy 80s Hollywood action

01:19:49.720 --> 01:19:52.939
stuff. So like, you know, Die Hard, Beverly Hills

01:19:52.939 --> 01:19:55.220
Cop, that kind of stuff. That's the kind of thing

01:19:55.220 --> 01:19:58.359
I like, you know. Did you ever watch... Just

01:19:58.359 --> 01:20:02.199
pre -CGI. Pre -CGI, basically, is kind of like

01:20:02.199 --> 01:20:05.880
my genre. Sorry, did I ever watch... Yeah, did

01:20:05.880 --> 01:20:10.319
you ever watch White Man Can't Jump? I have not

01:20:10.319 --> 01:20:15.739
seen it. Is it good? Hold on, let me see. I like

01:20:15.739 --> 01:20:20.630
the movie. My wife hates it. This one. Hold on.

01:20:21.189 --> 01:20:27.550
Where's my... Where's my screen? There we go.

01:20:27.729 --> 01:20:32.050
This one. Yeah, Woody Harrelson and... Wesley

01:20:32.050 --> 01:20:37.149
Snipes. Wesley Snipes, yeah. Yeah. I don't know.

01:20:37.210 --> 01:20:42.109
It's an old movie, you know? Yeah. I don't know.

01:20:42.149 --> 01:20:47.550
I just like it. Okay. Yeah. I'll stick it on

01:20:47.550 --> 01:20:52.829
the list. Yep. And video games? Are you into

01:20:52.829 --> 01:20:56.430
video games? I'm not a huge video gamer. I guess

01:20:56.430 --> 01:20:59.310
I'm probably what some people might kind of derogatorily

01:20:59.310 --> 01:21:02.130
call quite a casual gamer. You know, I'll play

01:21:02.130 --> 01:21:05.100
my... you know tower defense games on my ipad

01:21:05.100 --> 01:21:07.460
and stuff like that i'm not like a big big gamer

01:21:07.460 --> 01:21:10.119
in the way that some guys some some people are

01:21:10.119 --> 01:21:14.140
um i've sometimes you know kind of got into things

01:21:14.140 --> 01:21:16.100
like doom and stuff like that for a while but

01:21:16.100 --> 01:21:18.859
yeah again it's all like fairly old school stuff

01:21:18.859 --> 01:21:21.060
i'm not i'm not one of these people who buys

01:21:21.060 --> 01:21:24.079
like some huge fancy rig with the very latest

01:21:24.079 --> 01:21:26.760
gpu to download so i like that's that's not me

01:21:26.760 --> 01:21:31.800
okay wonderful so um any final words before we

01:21:32.250 --> 01:21:35.029
Wrap it up, Andrew? No, not really. Just to say,

01:21:35.050 --> 01:21:38.010
firstly, thank you for inviting me and for talking

01:21:38.010 --> 01:21:40.109
to me about this. And for anyone watching this,

01:21:40.210 --> 01:21:43.170
I hope you found this kind of useful and interesting.

01:21:44.250 --> 01:21:46.310
You know, I'm always happy to chat to anyone

01:21:46.310 --> 01:21:49.800
about... um near them you know you probably the

01:21:49.800 --> 01:21:51.819
best way to reach me certainly through debug

01:21:51.819 --> 01:21:54.600
print context is kind of through issues or pull

01:21:54.600 --> 01:21:57.500
requests on on on the repo right so you know

01:21:57.500 --> 01:21:59.060
if you want to provide any feedback you know

01:21:59.060 --> 01:22:01.760
features bugs that kind of type of thing by all

01:22:01.760 --> 01:22:04.640
means go that way uh you can also find me on

01:22:04.640 --> 01:22:07.520
reddit i think my reddit username is andrew fz

01:22:07.520 --> 01:22:11.039
if i'm not mistaken um so you can reach me there

01:22:11.039 --> 01:22:12.979
as well if you kind of want to talk to me in

01:22:12.979 --> 01:22:16.539
a in another context But, yeah, so thank you

01:22:16.539 --> 01:22:18.640
very much. I really appreciate the time chatting

01:22:18.640 --> 01:22:21.220
to you today and talking through debug print

01:22:21.220 --> 01:22:24.859
and some other things. I hope folks found it

01:22:24.859 --> 01:22:27.560
useful and interesting. Oh, yeah. Thanks to you

01:22:27.560 --> 01:22:30.680
for your time and for reaching out. Yeah, and

01:22:30.680 --> 01:22:35.220
thanks for setting up the call, Chris, and thanks

01:22:35.220 --> 01:22:38.460
for sorting this all out. Okay, wonderful. Nice

01:22:38.460 --> 01:22:40.359
to meet you. I'll talk to you later. Nice to

01:22:40.359 --> 01:22:43.079
meet you, too. Cheers. Thanks very much. Bye.

01:22:43.180 --> 01:22:44.100
Take care. Bye -bye.
