Tech Over Tea - More Than Just Another Vim Like Editor | tauraamui
Episode Date: June 27, 2025Today we have a bit of a fun show, we have the developer of a relatively new project called Lilly on the show, a Vim like text editor that spawned out of the performance issues with heavy use of Vim P...lugins==========Support The Channel==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson==========Guest Links==========Repo: https://github.com/tauraamui/lillyWebsite: https://tauraamui.website/==========Support The Show==========► Patreon: https://www.patreon.com/brodierobertson► Paypal: https://www.paypal.me/BrodieRobertsonVideo► Amazon USA: https://amzn.to/3d5gykF► Other Methods: https://cointr.ee/brodierobertson=========Video Platforms==========🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg=========Audio Release=========🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw==🎵 Anchor: https://anchor.fm/tech-over-tea==========Social Media==========🎤 Discord:https://discord.gg/PkMRVn9🐦 Twitter: https://twitter.com/TechOverTeaShow📷 Instagram: https://www.instagram.com/techovertea/🌐 Mastodon:https://mastodon.social/web/accounts/1093345==========Credits==========🎨 Channel Art:All my art has was created by Supercozmanhttps://twitter.com/Supercozmanhttps://www.instagram.com/supercozman_draws/DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.
Transcript
Discussion (0)
Good morning, good day, and good evening.
As always, I'm your host, Broody Robertson.
And this was very quickly gonna turn into one
of those episodes where nothing actually happens
because we spent about 15 minutes talking
before we started recording.
So welcome to the show.
I don't actually know how to pronounce your username.
Well, my actual name is Adam.
OK, I had your username on the screen.
So that's fine.
Yes, it's Toramwe is how I pronounce it.
I was never going to get there.
I've actually encountered people that know how to pronounce it weirdly.
And I'm surprised all the time that they do.
But yeah.
So before we go down some random tangent
and completely forget to do what we were supposed to do at the start,
I guess briefly introduce who you are and the project you work on.
Sure. So I am just a Go developer.
I guess I can call myself that because I've done primarily Go for the last eight years or so professionally.
I actually recently left my last job and I don't really have anything kind of happening right now and so able to focus on this side project that we're talking about full time
at the moment. And it's basically kind of my response to finding some things to do with
Neovim not ideal for me and I've just kind of always been interested in Editors.
So anyway, so sorry, the project is the LIDI editor.
It's basically a, I guess you could refer to it
as kind of a NeoVim alternative.
It's not currently in that state,
but that's kind of the plan.
So basically kind of everything included,
batteries, you know, batteries included stuff,
no plugins required for like basic
modern functionality you'd expect. It's essentially, I would would kind of if you want like a short tagline,
it's basically Helix but for the motions as the fast class system rather than cocoon motions,
because I feel I find that like, I prefer the motion philosophy, especially as well
as my like personal style of working with different computers and platforms and things. I like having a portable motion set that I can go anywhere with,
rather than trying to mentally switch every time I'm on a machine
that doesn't have some cocoon editor base.
You know, so yeah, I mean, that's...
Which is far more likely than not, like in most cases.
You're going to have something...
Yeah, definitely.
...Vim, Vi, your server.
Yeah, yeah.
If I'm going to be restricted on permissions or
something, I don't really want to have to be the first thing I install, be an editor I can
actually use or at least like, and even if I can't do that, yes, I could just switch back to
Vim motions, but then again, could I really? Because the whole point of it in my mind is
that it's supposed to be something you don't think about it's intuitive. It's fast, right?
That's part of the speed you just kind of you don't think about it. So having to switch motion types
That's by definition gonna you know, that's gonna get in the way you think about it
so it just seems a bit silly to me to
restrict yourself in that sense if you don't need to but
yeah, I mean, I think my frustration with it was just that
Yeah, I mean, I think my frustration with it was just that, um, inexplicably I was finding that like, for various different reasons, and some reasons I don't even understand still,
Neovim would just suddenly inexplicably break for me, um, the configuration set specifically.
So let's say if I, when I sent you that clip the other day, didn't I? Ah, yeah. I was trying to show you how
on one of my machines, Neovim
performs fairly poorly compared to what
you'd expect, and then I didn't even get
that far because all I did was just start Neovim.
I hadn't run it for a few weeks on that machine,
and then just suddenly none of the
NSP was loaded and the configuration seemed
to break, and then I tried doing the
Packer update, then I was told the Packer was deprecated,
and I was like, brilliant. And then a bunch of the configurations that rely on, sorry, the
plugins themselves, some of the plugin dependencies were deprecated as well. And it just feels
like an annoying spaghetti mess that I don't really want to have to deal with, especially
if I'm just quickly opening my laptop to just quickly do something. I don't want to have
to spend the next half an hour fixing my configuration every time. And I think I was starting to feel like it's not normally a problem for people,
probably because I get the sense that you're not really supposed to just want to sit on one set of configurations forever.
I think the whole ecosystem kind of assumes that you're going to flow and flux and change things as you go.
Whereas I kind of found that actually I really
liked the configuration I had.
And it felt like a solid base to just work from.
It has everything I need and nothing I don't.
But the ecosystem it's built on is seemingly fragile
from my experience.
So anyway, all that to say, I guess
I kind of, I've been thinking about it for a long time. I just kind of always never really felt like I was at home with my configurations constantly breaking. And then I just kind of felt like, well, you know, there's, I looked around, and I like running my editors in the terminal for various reasons. And that there didn't seem to be from what I could tell, any alternative to actual VimMotion-first editors in the terminal
that came with everything you needed as a basic experience.
And one of the complaints I hear often, and even the things people make fun of with NeoVim, is often the configuration thing.
You know, it's useless out the box, you have to configure it.
It's kind of the point, also the main downside in the way, at the same time.
Its main benefit and main weakness, I think, is that core Nexus thing.
And yeah, there is the Helix option, but again, as I kind of clarified,
I don't feel personally like it's a good alternative.
I mean, yes, I like the fact it comes with everything out of the box
that you would probably need ever, I suppose. But I mean, it doesn't feel worth the having to
learn the other motions just kind of feels like a non-optional thing to have to do.
Right, like once you're already comfortable using Vim motions, that's already taken you
so long to get there. If you go to some other system, it's like like you're sort of going right back to the start.
Yeah, I guess so. Yeah, it's like, so I'm only learning this motion set because I want to use
an editor that doesn't require configuration. Okay, now I'm having to lose all of the initial
intuitive sense I had on the original motion set I was using. I don't personally subscribe very
well to the Cocoon set.
Like, some people are die-hard Cocoon fans.
That's cool.
Whatever.
You prefer that motion set?
Nice for you.
But I mean, it kind of feels like you've got no option
but to learn that if you want to.
So the choice is use Neovim and deal with the configuration
pain, or use Helix and don't have configuration pain,
but also be forced to learn a different kind
of philosophy of working. And correct me if I'm wrong, anyone, but I mean, from
what I can tell, until I started making my editor, at least as far as I could find, there
doesn't seem to be, yeah, as I said, Helix, but for Vim, I think there's probably a good
reason for that. I mean, if you look around, you know, a little bit, there are bundles
of configurations that people provide as individual projects, right? There's like LazyVim,
and there's a few others. I find that idea kind of almost offensive, because it's kind of like,
it's kind of like using a game engine, but for like, I don't know, like, it defeats the point,
in my opinion. Right. The fact it's on Neovim is a historical accident.
Really.
You've created this configuration model because you can see in the community that there are
people struggling to deal with configurations themselves in Neovim.
So the solution that you came up with was, okay, well, I'll just create a whole set of
configurations then.
And I guess there's a few things with that that I don't like.
So first off, as I said, it defeats the point. I feel like, again, Neovim's greatest strength
in a way is the fact that you can configure it to do exactly what you want it to do. However,
if you're, you know, you're still, let's say you're like a novice user of Neovim and you've
decided to download bundle configuration to try and get around the fact you don't know
what you're doing, things still break sometimes. Like sometimes a configuration, you know, like a plugin will
become deprecated before the bundle author has a time to respond or realize. You're also
having to rely on not just the event, like, you know, development cycle and people making
work there, but also now you're also having to rely on this person maintaining this configuration
model for you. You don't really know what's going on, you don't really know what's happening or why. If things do break you're unlikely probably
to know how to fix it, and if you do then I guess why you're using a configuration bundle.
And it's also slower than it needs to be. I know that I know that Neovim has the lower jet
which makes things like nice and stuff but again mean, even my personal configuration I have going, we
can cut we can touch on this later, I suppose. But I'm sometimes that's, that's still too
slow for me, based on what machines I'm using. So yeah, I don't know. I and the reason I
sound like I'm trying to defend myself is because I because I feel like that's often
the response I get is people start to change a bit more recently, I think.
But I mean, I think people get this all the time.
I know I've heard of people like Jonathan Blow with the Jai language and different things.
They often one of the main complaints they have from people talking to them in the community is they often,
rather than even bothering to like just say, oh, that's cool. You know, whatever, good for you.
It's kind of like almost, I don't know if you've had this, I don't I don't drink
alcohol. This is completely off topic. It's a very similar parallel to that.
Like if you if you know, I'm very uncomfortable when I get I'm not hurting
when I go to like places, you know, pubs and social drinking things. It's a
similar experience I have there. Like if you know, if I've had to go to like places, you know, pubs and social drinking things. It's a similar experience I have there.
Like if you know, if I've had to go to the after work thing
because someone's leaving and I feel like, you know, obligated to go. Right.
Noticeably, you know, you asked to go get people's drinks
and I have no idea what the hell are on about IPA, what
guy in in tribal dress on the bottle?
Well, I don't understand what's going on.
And you're like, it's very quick for them to realize that you don't have any idea what's going on. And it's very quick for
them to realise that you don't have any idea what's going on, you're not at home there,
you don't drink. And then they kind of ask you, well, why aren't you just drinking Pepsi
Max? And I'm like, I don't drink. And then it's like a what? Like a visceral, it's so
bizarre. It's like your choice to not subscribe to something rather than just blindly going for
it is almost like you're offending them or you're like directly attacking them or something
for their interest. I would say it's a similar thing when people find out you're not daring
to do something that's like reinventing the wheel is what they refer to it as. In my opinion,
I think I've kind of come up with this idea about, I don't
think you can reinvent the wheel. Not really. I think that, I think if anything, we all
create our own wheels. And in my opinion, the more options of anything, the better.
Generally speaking, I mean, obviously there is optional paralysis or whatever the hell
the phrase is.
Choice paralysis? That one.
Yeah, I think so. Like if you go to the shop and you want to buy one pack of cereal and there's like 12 different options.
Yeah, yeah, yeah.
And you think, what's the texture going to be like? What's the taste going to be like?
Oh no, it's too much sugar. It's not enough sugar or something.
I don't think that's the fault of the people doing the product offerings.
I feel like that's inevitable. I feel like if there's going to be any choice, you're going to have to make that choice.
So I think the better option is to rather restrict people in any way.
If you feel like there's a gap or that there's something that needs to be addressed
or done again, you know, like, for example, a great example is rip, rip, rip.
Sorry, what?
Rip, rip, rip, rip, rip, rip, rip, rip.
Yeah, sorry. I mixed up the I and the E there.
You know, I'm sure the person that started making that was told, you know, what the hell
are you doing?
Oh, guaranteed.
No question.
And yet now everyone uses it, right?
Especially the people in the Neovim space, which is the only reason I knew about it in
the first place.
It was the, I think it's one of the base, um, Aussie finder kind of options for telescope
or something.
So it's kind of like, it's a
relevant question really. It's like why are you doing this? Well why do you
care really? It should be the response. This is not your time. Why are you so
offended by that concept? Is it because you would have done it if you weren't so
scared? Is it that you find it offensive that someone else has got a
different idea to you? Or that, you know, in my opinion again I think that the
more choice in this space the better. I think the more languages we have, the better. I think the more tools
that we have, the better. I think everyone, if they have that in an ideal world, if everyone
could program, or if everyone that could program had the time, I actually think that every
single program that's ever been written should probably be written again by someone. And
not just because like, obviously
if they're going to make exactly the same work the same way, it's probably like a like
a know-up like someone help maybe. But I think that, you know, it's demonstrably a good idea
because things change and things evolve, problems evolve, people change.
Yeah, everybody has different sort of issues they run into with software and if you know
how to write code, like you can address those problems, even if that means rebuilding the
tool from the ground up, just specifically to deal with the one issue you have.
Yeah, yeah, and amazing things can come out of that.
Having the freedom to try out things, once you have this
this amazing base to start from, you know, you never know what might happen. Like a great example
is, it's a slightly off topic again, but I was talking to, it's weird, having been working on
this editor for so long and been okay with the few features it has, I've just been kind of like
fumbling along using it every day and then talking to people about it.
I've become quite embedded in the TUI space now, as you kind of imagine, I guess.
And a few people I've met along the way, one of them is Raf. Honestly, I can't remember his surname. I'm sorry, Raf, if you're listening.
I can't remember how to pronounce your surname. But there's a really nice chap. He works at charm bracer i don't know if you've heard of them they they specialize in specializing go
lying like to e library stuff they're really cool people i really like them they're really nice
but anyway i've been talking to them a lot and one of the guys there he makes a terminal emulator
called rio um and if you're into like trying different
terminal emulators or whatever,
you might have come across him or his work.
And the other day we were chatting
and he was kind of saying, you know,
they were talking about something to do with
the way that Lily tells terminal emulators how to render.
And he kind of mentioned that he's been thinking a lot
about how, you know, we've been kind of mentioned that he's been thinking a lot about how,
you know, we've been kind of stuck for the last however long, probably 50 years or maybe more,
with the only mechanism that exists that's like standard is to, if you want to tell the, if you, if you as a terminal program want to instruct your host, the terminal emulator,
what to do, you know, in terms of setting
the cursor shape or rendering something. You have to do it via the standard out using ANSI
escape codes. And those are the only two, you know, those are the options you have.
And we were saying like, well, he was saying actually, he kind of said, you know, it feels
a bit silly that no one's kind of thought about, well, what if we just stopped doing that and actually
came up with a new standard or something, like a more efficient way of doing things,
you know, because currently you're having to pass a load of strings and you have to send a bunch of
nodes. For example, the editor is a great example, I guess, because I'm sending potentially
hundreds of kilobytes of data, and then I'm also sending probably about 25% extra data just to tell it what's color to render everything out
Which just feels a bit silly so
You know we were saying, you know because he has this for like this is kind of coming back to what I was saying before
About you know to try things right like these things have established technologies have been around for pretty much as long as computers have been
I guess
But now because we've created our own versions
of these things, and we have these universes
we can now fully control and influence,
we're free to do whatever we want.
Like, for example, there's nothing to stop my friend, Raf,
to start implementing a kind of underlying protocol,
which is new and unheard of, that Rio can potentially use
to be told by a terminal program what to do. And there's nothing to stop me from making Liny have the reference implementation
for a client for that. And I don't know if this is like maybe in parallel to the...
What's the name of the protocol that everyone uses for... There's a recent thing being able
to render images in the terminal. I think Kitty was the first to do that?
Yeah, Kitty was one of the first ones.
The interesting thing about Kitty is it started as something
just for that terminal, but other terminals
kind of adopted that method as well.
Yes, because it makes sense, right?
It makes sense to be a standard, to have a standard,
right? Otherwise you'd have two other ways of doing the same thing.
Um, there's another one that was popular that I can't find right now.
Are you thinking about that script that was like a workaround? Was it, um, they had a
weird German name, I think.
Ah, Ubersound.
German sounding name. They had a weird German name, I think. Ah, Ubersound. Yeah, yeah, I was looking into how that works and it's, it's a bit unfortunate.
It was actually basically just a window, a borderless floating X window that would like
position itself to be in the correct place on top of the terminal.
I see.
Okay, okay.
I'm pretty sure that's how it works.
It was completely a hack.
I mean, but that's in the spirit of OG Unix stuff, I guess, right?
And it feels okay to talk about it like that, but then again, it works, people were happy
with it.
So obviously, arguably, the new thing of doing it, the new wave is much better, because it's
natively supported by all the terminologies, and they can completely control where the
image goes and all that
stuff. So anyway, yeah, I've kind of lost, I've reached the end of my thread, I think,
about just to say, I'm making this terminolator, sorry, I'm not making a terminolator, I'm
making an editor that can run an terminolator and just deal with it. You know, like get over it.
Because why not, right?
So yeah.
You brought up a good point earlier.
Where was it? It was somewhere...
Wait, I had...
You know what? We're just going to ignore that part.
We're going to go in a different direction.
So when you brought up the whole thing about like why like people were asking me
Why did you do it? Like why why is why are we making another another editor?
I think it's kind of two things here and it kind of goes back to
Firstly that XKCD where it's like hey, there's 13 standards. Oh, we're gonna make the universal standard
Oh, there's 14 standards now. The other thing is
I think a lot of people look at, especially people who are not developers,
they look at work being done in the FOSS world as if it's kind of like some big mega corporation, right?
Where if you're working on this fun thing that you like, you're not working on the problem they have.
Even if you were never gonna work on that problem, some people look at it as,
you could be better spending though, that time on something more important, some problem they have,
something where, you know, it's gonna affect more people.
That's... What the fuck are you on about? What?
I've run into a lot of people like this where it's like, oh, why are people working on another
desktop environment instead of working on this desktop environment instead? It's just
like, that's just not how people allocate their time.
Okay, I need to take that in for a second, honestly. That's insane. This is what happens when you have a YouTube channel and you get all manner of commenters
on it.
Yeah, I'm sure. All kinds of people. I mean, you talk about on your channel, from my memory,
currently, if I'm not mistaken, I might be mixing you up with other people. Sorry.
Some of the things you do cover is stuff that's like fringe projects, right? So people, I'm sure people come to you and complain like,
Oh God, why are they daring to make this thing?
They should be fixing my problem or something.
Let me just think about that for a second, because that's I've literally,
I think I'm vaguely aware of maybe that sentiment somewhere in the background.
I was never, I never, I'm surprised.
OK, so this is like your, what is this, like your day-to-day experience from people?
Pretty much, yeah
Especially like when I talk about something like the cosmic desktop, for example
Um, you know you have people say like why are they making like the cosmic desktop?
They could work on this other desktop that already exists like
What's the point here?
I need to think about this to be honest because I want to respond in like what I hope is a
coherent way from a perspective of someone that does...
It's fine, the commenters aren't coherent anyway, so...
Sorry?
It's fine, some of the commenters aren't coherent anyway.
Okay, well I mean, I don't know, they deserve a coherent answer if I can make one.
I'm just trying to think from their point of view.
So I can try and answer from a place that makes sense to them in a way.
I think, okay, that makes sense.
I think I understand a bit more now as to why people would maybe respond in an angry
capacity when they found out something that they think is deplorable or not relevant or like something.
What you said about open source being a big...
So hang on. So you think that... Sorry, not you think.
Your impression from people, some of them, is that open source is what?
Like a large overarching corporation or something?
That's sort of like...
Do they actually think that?
No, I don't think they like actually think that.
I think that's like sort of the- I don't know, they see work being done and feel like
if you weren't working on that thing, you'd be working on some other thing that they might
think is important.
If that makes sense.
Okay, let me think- I think I know how to answer this in a short, think about
the thing you like and realize that the only reason you know that thing exists and you like it is
because random person decided to make it one day. That should be a good enough answer, I feel like,
because yeah, I mean, wow. I think, okay, I think I can see it from their point of view in a way as well because I imagine it's like, once you get good this all the time, to completely forget what it was
like to not have that level of skill.
And conversely, I think it's probably the same for people that desire a skill and haven't
quite reached it yet.
To be honest, a lot of the intrigue and the magic of stuff can sort of go away once you
do that skill.
Like, for example, a great example is, I'm actually fiddling with it right now because I fiddle with everything all the time.
I have a Rubik's cube on my desk, right? And I was always like, Oh my God, it's like magic.
How do they do that thing? And then I learned it and I was like, Oh, that was disappointing.
I feel like it's somehow related to what we're talking about because
learning things is hard, your brain has, right? Especially if it's something you didn't learn in school, or like there's been
no there's been no suggestion or hint from society or your peers
that you would ever need to do this thing or it would ever be
useful or whatever. I think unless it's been, you know,
within the last 10 years or something, I think programming
is a good example of that. I didn't need a university to do anything, right? So I just
randomly decided to learn programming one day. Okay, that's a bit more complicated than
that. I won't go into the whole backstory about where I came from and why, but I kind of started learning programming for
its own sake in a way, and I feel like that helps to try and progress. You know, it wasn't
so much what I was making, it was more just like an interesting set of puzzles to solve.
I'm trying to relate, so I imagine a lot of people are complaining about this. Whatever
reason they either decided they can't program or they tried and they,
they decided they can't.
Well, it may not admit that they can't program.
Maybe they look at some big project and don't really know how to get involved in
it. Right? Like you see a project that's 50,000 lines of code long.
That is really difficult to sort of understand to an extent
where you can effectively contribute, especially in a case where a lot of FOSS projects aren't
really well documented in the code. So it kind of takes a while to get yourself up to
speed to make something actually productive.
Well, I mean, if we're talking about the people that are complaining that other developers,
well, sorry, not other, that developers as a group, choosing to work on things that they
don't care about, I would imagine that those people are the ones that aren't actually contributing
themselves.
Right, right, right, right.
Because otherwise they wouldn't care about that, because they would just do it themselves,
I would have thought, right?
Yeah.
I'm trying to think about it from their point of view, those people.
For whatever reason, they don't feel like they can personally contribute to something. And so
I guess if they're frustrated about an issue with a project they care about, and they've seen the issue sit there for six months and no one's touched it, and then they hear about another project that's
come up somewhere else, and they're like, oh my god, this is an outrage, how dare they make something
else? They should have come over to my project
that only five people know about
and fix the one issue that I raised six months ago
and the author's not addressed yet or something.
That's an insane worldview, I think, to have.
Just about anything, like, that's just,
I can't believe that that's really how they think. Like, I know do you know what I mean it's just like no I get what you're saying it's like that for one thing you don't know whether that person that's working the other project even knows how to deal with your project like it might be a completely you know the programming space is such a massive ecosystem I don't you know like for example there's um there's a project I kind of lurk on called Lamein, which is a bootloader.
And sometimes I go on the chat and ask them, why are you working on this? Because obviously I
be hypocritical. I mean, like, I asked them, like, how much work does this thing really need? Like,
it's a bootloader? Why are you still working on this? Like, surely there's only a certain
number of things you need to do? You know, what's the dealio? And they're like, well, it needs to support
all architectures and all combinations of architecture and biases. I'm like, okay, now I understand.
I had literally no idea this existed until just now. I've never heard of this.
Yeah, it's a, I don't know, it's actually, interestingly, this kind of relates to the
V project in a way. I only found out about it because
as being kind of a fringe member of the V community, the V language community, which is relevant by the, I guess we haven't mentioned this at all yet, but the V language is a thing. And one of the main
kind of projects out of that was this office system called Vinex, which is an implementation of a
kernel in V to demonstrate that you can do that without doing weird stuff.
For example, someone's making a kernel in Go,
and I think they're using the Tiny Go compiler
because it's the only one that doesn't automatically
require runtime support stuff.
And then I think the way they do things is they go compiler,
sorry, the Go kernel, it basically specifically uses
Go features that doesn't require a memory runtime.
And then eventually it bootstraps the garbage collector to like start up and do a few things.
Whereas V is like, you know, low level nothing.
Sorry?
You said the name of that project was Vinex, yes?
Oh, it should. I think it is. Yeah.
No, sorry. That's just a really inconvenient name because there is a um, there is a Linux distro also called Vinix.
Oh no, oh damn. Okay, well shit. I don't know which one came first, but maybe someone needs to talk about that.
Anyway, just to say that the person that was mainly kind of developing that is called Mint, and I don't know who they are, it doesn't really matter.
But I was like lurking on what they do, I was like, this is really cool. You know, I've always been fascinated by just the idea of making a kernel. And I've always been like
against trying to, sorry, not against, this is kind of the wrong way of saying it.
I think the way I try and approach things like that is like, I need to know how everything works
from the ground up. Like if I was going to write a kernel, I would need to know where to start in terms of like,
I would want to understand how the,
like when the power turns on,
like how does the CPU start doing its thing?
What is the ALU?
Where does it live?
I think it's inside the CPU for my memory.
And there's, is it like a hardware based sequence
that does all of the like peripheral exploration
to figure out what's there and what isn't, you know,
and I would need to learn all of that stuff.
So I wouldn't ever do anything, because I'd be too busy
learning about all the minutia.
Anyway, so because of that, I followed these projects
to just see what they were up to.
And I noticed one of the main ones Mint does,
aside from Binix and the operating system in V,
is this project called Lamine, which is the Vloader thing.
I can't even remember where I was talking about this now. I think I was just trying to say yeah that's it. But I wouldn't be able to deal
with, you know, I have no idea how to write a bootloader. A bootloader what? I don't know.
Something kernel boot IO something. So like what are you talking about? Like why would I,
random person that's doing you with a project over here, why is it offensive to you that I'm not
working on another project?
You have no idea who I am. You don't know what I care about. You don't know what I know. What I don't know.
You know, what the fuck? Like, so it's just such a weird...
To be completely frank, it feels like an entitled childish point of view to have.
And I can't, I almost can't comprehend that that exists as a concept.
I'm just struggling to, I'm struggling to understand. I'm trying to relate to them and I'm trying to
respond in a way that they can maybe see it from someone else's point of view, but I don't know
how to do it in a polite, coherent way because it's just a weird way of thinking.
No, I get that. I remember the thing I was going to say before, it was about, it was like 20 whatever minutes ago.
When you're talking about people using a pre-config version of NeoVim,
Yes.
Another problem with that is you don't actually know what is part of the config and what is part of NeoVim.
This is the same problem I have with people who recommended like, oh my ZSH to use on top of ZSH.
You don't actually know like what
What is part of that core program and what is something from the extension if you just go straight into the giant
extension thing and if you put in a situation where you have to use a clean version of Vim, you're on a server or something like that
It's very easy to Have no idea what you're doing, because you might have things that
seem like they have emotions, but were actually from some plugin, from something you're using,
and you had no idea that was the case.
Yeah, that's a good point.
I hadn't thought of it like that.
I mean, I guess, let's say, I'm not ragging on lazymen at all, but I mean, I'm just kidding.
No, me neither.
I think it's a cool project.
It's just not for me.
No, no, yeah, yeah. I'm just trying to... No, me neither. I think it's cool for a project. It's just not for me.
No, no. Yeah, yeah. I'm just trying to drop a name so people can understand what we're exactly talking about. Let's say if I was to be told by a friend to use near vim,
don't use near vim, use lazy vim.
OK. What's the difference?
Doesn't matter. Just use this thing.
OK, cool. Then I guess it shouldn't be a problem. Like if you just have
you know, lazy vim and you just use it and that's all you use and it's fine.
But I guess yeah, what you're saying is like
at least because what I yeah,
I was always thinking about it from the point of view of like someone that that personally finds the configuration stuff annoying
and then finds that there is something called lazy vim and uses that.
finds the configuration stuff annoying and then finds that there is something called lazy boom and uses that. Because those people, at the very least, I would expect them to know what's part of
lazy boom and what's not because they know what they were missing. That's why they want to use it.
But I hadn't thought about it from the point of view of someone telling you, you know, I know
you're struggling with wanting to try out near them because you're scared of the configuration stuff.
So just use this thing called lazy boom and then maybe at some point the person even
forgets that they're even using Neovim, they just call it LazyVim all the time or something.
Yeah, yeah, yeah.
It's an interesting, like, that's a good perspective to think about. I hadn't thought about it like that,
although I guess I would maybe not counter it, but I would just say that, like, I feel like
Neovim itself is a special case in that way because you're unlikely to
be using lazyVim, NeoVim, whatever, if you're probably not a programmer. I would say it's
fairly unlikely because if you're going to be, let's say you're just like a really powered
like a power user author or something, you're probably more realistically going to be using
a UE program with Vim motions turned
on or something, like a plugin that gives you Vim motions.
You're less likely, I would say, to using...
Having it in the terminal is pretty less important to you.
So I think I understand that idea.
Yeah, that's a good point of view to have.
However, I think if you're going to be using anything in the terminal, you're probably
already at the level that you're going to have some awareness of that, I think, if that
makes sense. Sure. No, I get what you're probably already at the level that you're gonna you're gonna have some awareness of that i think sure if that makes sense sure no i get what you're saying so it's like a different
level but yeah yeah i know what you mean so currently the uh the project uh is it considered
a pre-alpha is that what it was that yeah so i'm calling it pre-alpha because i don't know what
alpha means and i fair enough i don't know what i don't know what the difference would be so i'm just kind of i'm saying pre-alpha because i feel like it's enough to basically i don't know what alpha means and I don't know what the difference would be. So I'm just kind of saying pre-alpha because I feel like it's enough to...
Basically, I don't really like the idea of people trying to use it right now
because I don't want them to be disappointed.
And so I'm just using the word pre-alpha because I've heard about it as a phrase
and I feel like it's enough of like a kind of a speed hump.
If you're going to be
reading the description of the project you go oh pre-alpha oh not an alpha I feel like that's
hopefully enough to make you're going to go oh okay well maybe that's like you know some special
state that that's like not you know ready to I don't know does that make sense yeah no it's
sort of like you don't want people to go into it expecting it to be a full release and then they
try and they're like oh this is missing that's missing it just crashed why does it crash all of this stuff exactly yeah
exactly that's it i mean i'm calling it pre-alpha because i feel like people expect alphas to at
least be usable in some way i think um because of the game dev industry i think that's kind of
that's normal term in terms of completely ruined terms like alpha and beta like you get a yeah it's
a week before the game comes out, here is the open beta.
Like no, that's a demo.
Shut up.
And I feel like that's unfortunate, but I guess it's just kind of the world we live
in now.
So I'm trying to fit into that world by using terms like pre-alpha.
Pre-alpha is basically...
I don't have it in a state which I feel like is a cohesive experience yet. I would put it into alpha. So,
alpha for me is like, it's, it's featureful enough to be used as a base experience, but I don't think
that, I don't actually trust or really feel like anything really works and I have no idea.
Because it's not been used enough in that state yet. And then I think maybe a beta is like,
because it's not been used enough in that state yet. And then I think maybe a beta is like, I don't know.
Beta generally means like feature complete.
Yeah, I guess so.
Although, yeah, maybe that's true.
Anyways, so I guess it kind of leads on to the state
of the project.
So I'm calling it free alpha because the way it's currently
set up in terms of a project
is it's kind of a big, it's currently in a big, I'm doing a basically a big move right
now.
So the way that it started was me just kind of, which is kind of the way I do everything
really.
I was just doing the easiest low hanging fruit like, I need a way of rendering text.
Okay, cool.
I need a way of being able to input text.
Okay, cool.
And so I was literally just doing the most naive
options available, like, you know,
implementations just as simple as possible.
Obviously, as I was adding more things and doing more stuff,
the project's kind of grown in complexity
and layout of the code has changed.
And so I guess a good analogy is I was implementing
basic motions the other day.
Well, I say the other day.
This is like eight months ago or something.
And I was like, OK, I'm getting fed up now
with the way that we're storing the document in memory.
So I know I'm going to move to something called a gap buffer. So I'll just migrate all of the code
we currently have and all the new code we're going to be adding. I'll just make it, you know, instead
of it being a list of strings, which is literally, you know, I said the most naive thing, that's
literally how it works. It was a, every document line was literally a list in a, in a, sorry,
an entry in a list, right? The dumbest thing you could possibly do, which is really bad for
lots of different reasons, but also really good at the same time. It was really straightforward to work with at
the beginning. Anyway, so I started migrating to the GapBuffer in order to make making basic
motion support easier for me to do. Then I was like, one day I was like, hang on, I'm,
you know, we're kind of in this big halfway state now between quite a lot of stuff being
moved to the GapBuffer, but also quite a lot of stuff not been moved
to the app buffer yet.
I've got to two comments all over the place.
There's lots of fixed means everywhere.
I want a way of being able to just quickly find
all the to-do comments in the project, right?
So I started adding a to-do modal thing,
which I then did.
Then I was like, well, actually I want to be able
to select a specific comment in the list.
When I hit enter, I want it to go to that document, and I want it to center that specific
line in the document.
But then I was like, well, actually, the existing document renderer doesn't support being told
to jump to a specific line independent of the user input.
So I was like, oh, shit.
OK, well, I need to fix that.
But then I was like, well, actually, I can't fix that easily because a lot of the code assumes
that that isn't possible or something.
And so I was like, okay,
well now I need a new document renderer.
So I then started working on a new document renderer.
And then I was like, well, okay,
well now I'm making a new document renderer.
I should make the, I'm probably just,
this is just this day-to-day development stuff, right?
But I think this is gonna be something like-
No, like I totally understand what you're saying here here like every single thing you try to do creates like
five more to-dos exactly so it's like it's eight months running and I still
haven't migrated the gab off yet so so I guess it is useful to finish the thread
though just because I feel like it's a good summary of like where the current
state of the project is so anyway so yeah new document renderer and I was
like well okay I want to change the way the syntax highlighting works
because the old way wasn't that good.
And I've gotten better at using V now and stuff.
So then I was like, OK, well, now the new document renderer
is basically finished.
Right, great.
Oh, but now I'm seeing rendering performance problems
because now I'm doing way more granular renders.
Because the syntax highlighting has changed,
I'm now making like probably 20 times more
individual render calls to the way the rendering works.
So now it's flickering on like every terminal
in the neighboring existence, including especially Windows,
like Windows Plus.
So then I spent the last, like, I don't know how long,
like maybe the last month or something,
just trying to fix the rendering problem.
So like performance with rendering was a pain in the ass. And the way that rendering works is like, it's like immediate mode
style. So you know, like, I'm gooey. I think it kind of started to factor representation of like,
how you do immediate mode design or rendering. It's like you kind of, so for example, in the
code for Lily, when we render text, we basically flag a color on in like the palette
and well then all subsequent text that's drawn is then set to that color and then you turn off the
color and then you keep drawing whatever. Having that way of rendering was actually a very good
foresightful choice because moving from the old document renderer, sorry not the document renderer,
moving from the old rendering system to the new one,
was actually, for most of the editor, it was a one-line change in the main file.
The rest of the editor doesn't have to care.
It renders the exact same way as it does before,
but it's way more efficient now and it's much better.
Anyway, so that's kind of pretty much where we are now.
I've just finished doing the re-rendering stuff,
so now rendering is now fixed again,
so it's really fast. And then I'm just adding a few things that are missing for the New
Yorker renderer. Then when the document render has been swapped to the new one, I'm going
to try to go back to doing that to do modal thing. And then once the to do modal thing
is done, I can then use that to help me complete the gap buffer migration stuff. So anyway,
all that to say is I'm open to people trying to help
me with anything, but I have to warn anyone that's going to try and look at it, that the code is in
a sort of halfway house state. I've gone out of my way to make sure that nothing's existing is
broken as much as possible. There are if statements in places I wouldn't normally want to have an if
statement, for example, that kind of thing. So everything still technically works. It's just there's two different branches. There's some stuff
that like when you do a document edit, it will either go to the GAT buffer or the regular,
you know, the old way of doing it, depending on what configuration flag you've set.
Because that's how I'm trying to try out the new implementation and everything.
But I mean, yeah, there is, you can follow the flow, you know, everything kind of still
follows the same flow. It's just some stuff goes to some places, some place, some stuff goes to other places.
It's all a bit slightly...
I'm trying my best to get to a point where I can just flatten everything out again and tidy it all up.
So I don't know how long that's going to take me.
Hopefully not that long now that I've finished stuff and I will say I'm able to focus on it full time now.
But for at least the time being anyway. So yeah, I don't know. Sorry for rambling again.
No, totally fine. How long has the project been a work in progress for?
So I started working on it, I think, it's been such a blur. I think maybe two and a
half years or something.
Okay, so why don't I say?
Yeah, actually. yeah, and I remember
loads of the initial wins and gains were like within the first few weeks, not even that,
probably the first, some of the first few days even. And then I feel like for lots of different
reasons the project did stagnate for maybe about a year. And I think a lot of that was because I got obsessed with MMO Minecraft servers for a
while.
Fair enough.
So I was like, oh my god, I actually like MMOs.
What?
Because I always found them to like, to Age of Empires-y, you know, the regular MMOs,
I guess. But then Minecraft MMO. Oh my gosh
What is this crack? I'd like to wait. Hold on. What do you what do you mean by that? That doesn't really I'm not sure you're getting out there
So I I mean, I'm what do you mean? Like what am I talking about?
Empire Z that that I see. Okay. Well, it's like
it's third person often kind of far away from your
character. Very NPC interacty. I see.
Not direct kind of in like, I like, I like direct combat interaction, I suppose, rather
than like just seeing some spell animations go off or something. Right.
I never really cared enough about like buffing characters or builds. I don't even really
know what build means still.
So that kind of thing, you know, it's just, again, it's a different...
You know, some people like it for some reason, some people don't. Well, I don't particularly.
But I tried getting into my mind. It was just never anything. But when I discovered, I think it was Pirate Games
Block Game was the first one I tried and then I was like, well, this is cool.
But then I wanted to
see if there's anything else and I found, I started playing Windcraft and then I was, I don't know,
I got distracted basically. I got distracted from it and then I think, what was the other reason,
I think I got the other two into a state where it was good enough for me to use it for my work
and I didn't really, I think, oh, that was it. I think I took a long
time. So amongst being distracted and stuff going on at home and stuff, I think it was
precisely, you know what? Yeah, I know, I know, I now recall what it was, I think. Even
though I've also got out my way to, you know, write as many tests as possible to make sure
I don't have any regressions and things. I think I was just really worried about making big swathing changes. I wasn't
really sure how to do that, but also keep everything working at the same time. And I
think one day I just go through phases of things just clicking constantly for my brain.
And I feel like I have to pay attention to pay attention to that And then sometimes I just go well, my brain just just doesn't care or something
and it's like I can't I can't turn it on and off it's like a
Yeah, I don't know how to explain it really but anyway I
For the longest time I just was like, you know, I know
but I didn't want to add new stuff because again
You get like an intuitive sense that you know that
you're really just laying more cement on top of the tech debt and eventually you're going
to have to come in with your drill and then take it all off and then also get rid of the
tech debt.
So you're basically just giving yourself more work that you know you're going to have to
deal with.
It's always that balancing out.
Software projects are always this choice between how much work do you want to put in now, then how much pain do you want to save yourself for the future?
And obviously, and people that care about money always care about the immediate gains, despite the fact that it's going to cost them tens of hours more in the future.
So yeah, I was kind of the same thing. I think I, one day I was just like, you know, it's bugging me that I haven't really progressed
this.
I want to have this vision.
I really thought I would get to a point before this time and I haven't.
So I think I just kind of, I just dove back in and then I started remembering how much
I love the V language again.
And then I was like, you know what, I'm just going to start making huge changes.
And then now I kind of have more of a semblance of a plan.
I don't really have an exact plan.
I have an overarching vision for the whole project,
but I don't know day to day what's
important until it kind of bubbles up to my brain
and sort of waves itself at me and tells me, I guess.
I think it's like right now, like I said,
the to-do comment thing, that's the thing I really
want the most as a function right now.
But I can't do it yet because there's other things in the way that I know would be a better...
Yeah, I'm basically just trying to set up.
It's like foundations for a house, right?
Like I need to, I need to make sure that I feel comfortable with the house being built on whatever I'm making.
Right.
You don't want to like focus on the fun, fancy features.
And then...
Yeah, exactly. Yeah.
I mean, I could easily do all of the low hanging fruit and I could implement all the motions under the sun.
I could do like 25D XC5.
I could do macros or something.
But I know fundamentally that that's just a bad idea because I'm not going to give people the real solidity and long-term features and,
you know, I would be doing people... I'd basically be, you know, like a magician or something.
I'd be like, oh, look over here, sparkly shiny stuff, but don't look over there, but don't
look behind my, you know, behind my curtain because I've got like a load of crap running
all up.
Yeah, and if the foundation isn't good,, like you might run into a point where you need to redo all of that stuff again anyway, so it makes more sense to make the foundation solid.
Yeah, and I don't want to rush anything. I just, I want things to take as long as they take.
I've been taking a lot of inspiration from...
This is going to sound weird to say, I don't like Jonathan Blow. This is like a random satanian.
As a person, he just seems abrasive and a bit of a dick.
Um, but I but I think that's good. I think in a way like sorry, I think I think that's not true to say.
Okay, so that's that's true to say what I just said, but
Because of that, I like him a lot.
I feel like I respect him immensely.
And I I hope I can recognize when he's talking out of his ass and when he isn't.
I'm also just inherently aware that he has been around for like, you know, it's just a fact that he's been a developer for a long time.
And it's obvious if anyone takes two seconds to watch him program, but he's in his element.
He knows what he's doing in nearly every sense. And I can't ignore that. It's like a...
You know, if I want to have an idea about...
I don't know how to explain it really.
Um...
I feel like, what is it?
I guess there's a phrase I could say something like, um...
Just because I respect what you have to say and I think it's profound,
doesn't mean that I'd like you.
I would care if anyone else knew anything you say or whatever, right?
It's perfectly valid to appreciate someone's point of view without also agreeing with everything they say or liking them or something.
I don't know why it was important for me to point out that I'm not like a massive...
I think I'm just trying to say I'm not a massive Jonathan Boy fan as such,
but I do often find myself having his videos playing in the background. He has
a big playlist of different programming videos and I really love having him just droning in the
background because I feel like I'm hoping I'm just kind of picking up some sense of like
programming wisdom via osmosis or something. And he's very good at optimizing the way he's
solving the problems as well. And so I think it does actually help me weirdly, like having him...
He's like my, I don't know, he's like my talking rubber duck in a way.
He's solving a completely different problem than me, but he's just, you know, I don't
know, anyway, sorry, I'm just like, you're rambling again.
Sorry, my bad.
No, you're all good, you're all good. I was wondering, do you want to talk about why I chose the V language?
I did want to get there eventually.
Yeah, we're almost an hour in right now.
Okay, I'm sorry.
I don't know how long you have.
No, this is good.
I usually go for the two hour mark.
That's usually my go-to.
Okay, cool.
Okay, fine.
Yeah, I'm sorry. I don't want to... I feel like we could ram off for ages. I go for like the two hour mark. That's usually my go-to. Okay. Okay, cool. Okay fine. Um
Yeah, i'm sorry. I don't want to I feel like we could ram off for ages. Um
You were intrigued by the V language I remember and you said that
You wanted to know more about it because I feel like you hadn't heard of it before right or something
I wouldn't um looked up some stuff afterwards. I I must have at least come across it
I went and looked up some stuff afterwards. I must have at least come across it once or twice before.
I must have blanked it out of my mind entirely, but yeah, I am curious about it.
Okay.
Let me think.
So...
I guess I should start from just explaining why I'm writing it, sorry, why I'm using V to write
Lillie. And I guess I would just say that there isn't really a good answer in a sense. Like I,
I, as a side topic, I've always also been interested in, Well, one of the reasons I mentioned Jonathan Blow, for example,
is because I was aware of him before Jai,
and I've always looked at his stuff and stuff.
But I mean, Jai was of particular interest to me
because I guess I would say I'm like a language...
If you have a specific nerd interest,
like within my actual special interest in programming
stuff, I have another special interest of programming languages.
I wouldn't say I've tried every single language.
I've tried to become aware of every single language I can find, so at least I know that
it exists.
If I like the way that it looks enough, or I think the problem main that it exists and if it's like if I like the way that it looks enough or that I think the problem
main that it's trying to solve is close enough to what I'm trying to do or if I think it's
interesting I'll try it. So that just means that like I'm saying before I think the more tools
that you have the more likely it is that you're going to find the right tool for the right job, right?
And I know that that's a phrase people often say, just as they say, don't reinvent the
wheel, probably the same people will also come turn around and claim that they use the
right tool for the right job and then immediately use the wrong tool for the wrong job.
Well, in the opposite sense of that, like, you know, if the only tool you have is a hammer, every problem
looks like a nail.
It's kind of like the opposite approach of that, right?
Yeah, I guess so.
If all you wanted was a pristine cupboard, and it's covered in nails, then you want tweezers?
What the fuck am I all about? Sorry. I don't know.
I think I was trying to come up with a mirror analogy but it doesn't work.
Yeah I think you- I'm not sure what you're trying to do there but-
Because tweezers, like yeah, well not all pliers. I mean pliers is all you need to do that I guess.
I don't know. Anyway. Sorry. Forget that. Whoops.
I was trying to sound profound there, wasn't I?
But I didn't really work.
You didn't work all that time.
No.
What was I saying?
Okay, so I think it's tricky to answer because I'm kind of always, again, I'm trying to answer it
with keeping in mind that people are going to be like viscerally foaming at the mouth
just the concept that I'm using a language that's not their favorite one or something.
So I'm trying to answer it.
Oh, I get a lot of these people in my comments. Like I have a lot of Rust fans in my comments.
I have a lot of Zig fans in my comments. Of course I have a lot of C fans.
Yeah, I think it's very much religious, isn't it? Like it's weird and it's interesting.
I think it's a shame really. I feel like, from my like naive observations of this whole thing,
it doesn't really matter in a lot of ways, although it does at the same time.
What I'm trying to say is it matters immensely that you use the right tool for the right
job. The fact that someone's using a language you disagree with, that doesn't matter, I
think, because you don't know what the problem is you're trying to solve, because you're
not the one trying to solve it. And it's that, what's that, there's that website called Just or something, right? There's that, I think it's a site that tries to like,
communicate this idea that it's a, it's a, it's a bad look to try and say,
someone, well, why didn't you just do this? You're struggling with this thing. You've told me that
you're having this problem. So why didn't you just do this other thing? And the problem with that is
like, well, why do you think I didn't? Or why do
you think you know enough about the problem to even suggest that kind of thing, right?
I think it's a similar thing. Like, yeah. So why did I use V for making Lily?
There isn't really a good, I mean, okay, fundamentally, I like me. I've come from this
background of having GoLang, you know, a lot of GoLang experience. My first... Okay, I
guess if I do it like a story again, my first initial choice was to use GoLang. The problem
is I don't feel like GoLang is good for that because from my...
Sorry, I'm just trying to think as I...
Golang didn't feel right as a choice.
I think that Go does make it easy to make servers, web servers.
I think Golang is very good at what it's been designed
to be good at.
It was very good at making web servers and command line tools.
And obviously, there's quite a lot
parallel between command line tools
and something like an editor.
But there isn't at the same time.
I think an editor is way more stateful than a regular CLI,
obviously.
It's a whole program.
Sorry.
Well, CLIs are whole
programs as well. What I'm trying to say is they just intuitively or instinctually,
GoLang didn't feel like the good option for this. I mean, I don't really want to answer
the question. I could answer the question by going through all the languages and explaining
why I didn't choose those. Let's try that, let's try that actually, because that's pretty good.
Sure.
A good way.
So I thought, well, I'm experienced at Go, I know Go a lot.
I like Go.
It sounds like a nice idea to use the language I enjoy for a project that's big and potentially
long running hopefully.
But I think I knew just from instinct that it was going to be a bad choice and that I would regret it.
There's a few different things I could probably explain in more detail in a minute if I remember what they are, but there's like...
Yeah, anyway, I don't know. I feel good when I use Go for things I feel like it's designed for, especially concurrency things.
I don't feel like I felt like it was it didn't feel like a
good choice anyway. So let's see why didn't I choose Python? Well, I didn't
choose Python because
I'm not a Macasmasochist. I didn't choose Python because I don't like how it's not easily distributable as a solution.
And again, it doesn't really feel like a good fit for this.
I didn't choose something else like, you know, Zig.
I did actually look into Zig, but I was already quite aware of the...
before I tried... you know, I was already...
so this is kind of like an accident in history, I suppose, but I...
actually, you know what? I'll talk about Rust first, because it's kind of slightly related to why I did ZIG.
So Rust, I don't like Rust a lot, but I also love Rust at the same time.
I think that the other day I was working on a,
actually this is kind of weirdly tied to what we were saying earlier before this whole call started. Do you remember I mentioned about Red on Penguin or whatever it's called? So I was watching
one of her videos the other day and one of the tools she mentioned was actually very opportune
for me. It's called pastel and it basically is a cool way of being able to like
pick colors and figure out like what hues are possible in your current terminal and that kind
of thing. I was looking at this feature set and thinking you know what would be really cool is if
I could convert just the ANSI like color number into RGB. That doesn't seem to be one of the
options it has and so I know I'll just go at it because you know I'm a developer I can it doesn't have a
feature I want it I'll go at it right and I was like this is really nice like
Rust is it feels cool like it's I mean the hype aside you know it felt like a
good experience to me adding this this feature was pretty straightforward to do
didn't require much effort didn't have to use any external tools, I didn't use an SP,
I didn't use a fancy editor or anything, I just did a grip grep, you know, where is this current
flag that I know exists in the same kind of vein of what I'm trying to add, and I'll add my thing
next to it, whatever. It was quite an easy, nice experience. Although at the same time I guess I just I don't know. I feel like Rust
is too far removed from everything else. It has a similar problem in terms of Go in that
it's like its own universe in a way, and it has its own way of working.
And I didn't want to...
I think I had this intuitive sense that like,
by learning to use Rust for a problem, I'm almost prescribing to solving it in the Rust way.
Right.
And I don't really think I agree with the way that Rust sort of gets you to inevitably solve problems in it in
that way. It's like a strange mix between functional and procedural. It has a similar
feel that JavaScript unfortunately has in that they have like app paradigms but it lives
within a procedural space rather than it being a cohesive functional experience.
It's not a functional programming language, but it's trying to be one in a way.
And I just felt like...
There's also just extra complexity that I didn't want to have to mentally take on as baggage.
And the other thing is, I guess, that I felt like Rust was overkill, basically, is what I'm trying to say, I think. Like, it's good for...
I think it's very good for doing low-level memory-safe things.
Stuff like, you know, firmware drivers for pacemakers or something, right?
Where I really don't want my relative to die because of a memory bug or something.
I don't really care about my editor crashing because of a memory bug.
If anything, that's better than it staying alive and then corrupting data or something.
Sure.
So I just felt like it wasn't a good...
The costs I felt like you would have to take on for Rust weren't enough to justify making an editor in it.
Especially knowing that I really needed to be existed by that point.
Which I'll come to in a minute space and then okay
and then the other question is why the music because Sig is like the
Guess it's kind of thought of as the I don't know what the funkier
Hippocampus in the of us now. I remember when um
when rust was first getting attention and it was like the the super cool super new language and
And it was like the the super cool super new language and you know now rust is adopted by giant companies
Everybody knows about rust so like the people who want to be on the hip cool new language
Then they've now become zinc shields
Yeah, that's true. Yeah, and it's and it's
It's shit right because it I guess okay, I guess, okay. I think, to be honest as well, I think, I don't know if this is probably true in the timeline of things, but I guess I'm wary of
hype because I don't know what the phrase is. Like, just because everyone's doing something
doesn't mean it's a good idea. Like, there's this idea about, I saw someone on Twitter
the other day saying something like,
if you don't agree with this particular person's point of views or like predictions or something,
you're not prepared for what's coming. It's probably some bullshit related to AI or something.
Sure, sure.
And I read that and I thought, well actually, you know, they aren't the same thing. They're
not parallels. Parallels isn't really the right phrase maybe but
They're not equivalents like
You can be aware of something and understand it and also not agree with it, right? Well, you can like
Don't agree with it and also be prepared for the future at the same time. I don't know
so I guess that's part of the reason why I didn't choose for us precisely because
maybe something seemed to be true like why So I guess that's part of the reason why I didn't choose Rust, precisely because maybe
something seemed too good to be true.
I get that it's very good at what it is supposed to be for, which is maybe to be used to rewrite
critical applications in it or something.
Because it's a good alternative.
If you're working on something that's very secure,
or needs to be very secure, or has secure data in it or something,
then yeah, it makes sense, whatever.
But I mean, I guess there's a clear cost benefit choice to make,
and I feel like the average person who isn't like Russ Pilled or whatever the phrase is, it's not a good
tool for every situation, right?
Like I was saying before.
I think there's some things that Python's amazing at and should always be used for that
thing.
I think there's some things that SEA is amazing at and should always be used for that thing.
And there's lots of different, and Zig is probably amazing at certain things as well.
But yeah, I know what you mean.
I feel like that's something that has something to do with the choices I make, I think. Especially
because if people are like running away from Ross now because because of the last year
was also the foundation didn't really help themselves with. Sure. Yeah. It was like,
oh, shit, what's going on here? That's like
I think I think that point of view comes from that mentality of like
You can only have one favorite right like you if you're gonna use a language You have to use that language and that's it or something sure
And so I just don't think that's true. I just I don't agree with that and so therefore I
Don't think about it in those terms, right? So
with that and so therefore I don't think about it in those terms right so I don't know I think that's somehow rapid 12 should I say a second ago anyway why didn't I use zinc okay I didn't use zinc
because I found the documentation at the time to be atrocious and there was there didn't seem to be
any actual real active community and weirdly certainly not as much as there was for the V community
and I felt at the time that was important because I was like trying to do this new thing
To me anyway that you knew to me. We started this two and a half years ago. Yeah
Yeah, so I
Think it's still the case now actually from what I remember vaguely recently
That when I went to look at it, I was like, well, I do understand this stuff,
but then because I've not had to suffer with C, I don't really know why I'm going through
this extra pain. Because I think Rust is like, you know, if I was a disenfranchised 55 year
old extremely angry grumpy man that's been using c++ for 30 years. I would be much more happy
Oh, uh, yeah, I love discord give me one second
Hello hey discord decided it wants to kill my audio for a second. What a great program. OK, sorry.
All right.
Um, I can't remember what to say now. Uh, yeah, yeah, that's it.
Run V, C++ developer.
Yeah, and then Zig was, from, to my point of view, it kind of seemed similar again.
It was like, well, ironically, I think Zig would be a great place to go to
if I've just been dealing with Rust for the last few years.
If I've been tearing my hair out because I've hated trying to deal with borrower checker, and
I want something that's kind of similar to rust safety guarantees or whatever. I don't
know, I think Zeek has similar guarantees in terms of safety or whatever. Not in the
same way, it has a different paradigm to that. I don't subscribe to the idea that the borrower
checker is the right trade-off that they made. I don't think it was the right way to solve that problem.
I think it could have been done different.
And I think Zig is a good example of how it could be done differently.
But again, the way that the Zig ties those kind of benefits into it's like it's so it's
so into the language like that. It's just into the language. With Rust it was the map box stuff as well as the
borough checker. You have all these strange built in types that only exist because of
the memory safety thing, which I don't even really care that much about anyway. So you're
getting in the way of me solving my problem. Like, I don't care about all these extra things. Like, now I'm basically having to, instead of just writing my problem solution
in like a nice flowy way that's just coming out of my brain,
and it's like I'm, I don't know, playing music on a piano or something,
now I'm actually also having to shove a solution into your fucking box.
Literally a box, right?
I'm having to like rethink how I'm going to approach solving something
to fit into your bizarre, like like mental gymnastics paradigm and the only reason I'm doing that is because you keep telling me
I'm it's a moral. It's a moral virtue what I'm doing, right? It's like
Yeah, I think I think going back to what we were saying before about people being like religious about languages
I think Russ is in a way worse and so maybe even zig because it's like people actually see it
I made a joke on twitter
the other day about how okay guys there's a project that exists and it wasn't written in rust
so instant like go straight to jail whatever like it's like it's a moral failing that you
haven't decided to use rust like how dare you in today's day and age start a new project if you dare
decide to make it in c++ you're you're++, you're clearly a genocidal maniac or something.
It's a fact that it's a moral failing to not use Rust. That's it. You're not supposed to
question it. Just accept that that's the truth or something. I don't think Zigg was really
giving me that impression either, but I,
it didn't feel good that there was like all this extra stuff to care about,
and it was kind of in the way, I suppose, for Zig, right? So anyway, all I have to say is,
I chose V because it felt like a kind of a go-lang-done- right from my point of view, I guess. It's got very similar syntax to Go.
It has very similar syntax to Rust and Zig, I think, as well. It's been inspired by lots of different programming languages. I can't remember. There's a list somewhere, I think, if you want to
go find it. It should be a thing I've heard before. Influenced by Go, Oberon, I've no idea what that is.
Rust, Swift, Kotlin and Python is what they list in the documentation.
Yeah so I guess I...
It felt good to use it.
Like I think it was kind of like a, oh my god it does everything I
want without any of the stuff that I don't care about. It felt like, I don't know if
this is a good example or how to explain it maybe, but my sister's been trying to get
into painting, right? So she was explaining to me the other day that she's gotten to the
point now where she's nearing the stages where
there's things that she can do with her brush that she can just intuitively do without really thinking about.
It would have before required a load of extra effort and stuff.
I really like V because it feels like the perfect medium to just let my thoughts pour out into or something.
The fact that I'm programming is a side effect of what I'm trying to do, right?
It feels good to get problems out and make them work, but it doesn't have to be programming.
If it was LEGOs or something I could do that instead, I guess, even though I'm not very
good at building cool projects like that. But it's like a thin medium that's not really, for my brain's point of view,
it's just a medium that I'm just painting with or something. It's just like a necessity.
And it doesn't really feel like a, it's not important. Like it needs to look good for my
brain to like make nice shapes out of it that I can easily work with. And so that by
kind of extension ends up meaning that just by side effect, it does then have this intuitive sense
of how the code should feel or how it should look. Sorry, no, what I'm trying to say is it doesn't
matter how the code looks, really. It's how the code feels. That's important to me. Does it feel
fluid? Does it feel suitably rigid in that moment?
Does it need to be really solid and rigid right now?
And does it need to be fluid in this other sense?
It changes.
I don't know how to explain it really, but I guess I'm trying my best.
No, I sort of get what you're saying there.
Weaner's language kind of clicked for me in that way.
It feels like it's going out of my way.
It feels natural to me.
Yeah, it's like a and honestly, this is a good.
I think in my in my philosophy of more tools, the better.
I think when you're choosing what to use, you should never.
You should never trust anyone what they say.
Because because if you think about it, they don't have any idea what you should be using because they're not you
They know I think there was a there was a quote from DTHH or whatever Hiller's name is
I can't remember his full name the guy that made Ruby and Rails. Yeah
He had a really interesting article that I think prime covered once that basically outlined how
You know, he was,
as a young gentleman, he had this kind of philosophy that, well, actually, Ruby on Rails is the only
choice. Sorry, not Ruby on Rails, Ruby itself. Ruby made so much sense to him that it was like
a natural flowy thing, probably the same thing I'm describing now. And so he didn't make the
distinction that that's his experience. Right? And and so but just because you feel that way with using Ruby and it's just seems like the obvious answer to
You know to what program I should use
That's not necessarily the case for everyone else and it feels like an obvious thing to say
Apparently to him and maybe others it wasn't right
So I don't feel like
People ask you know, what language do you recommend? Well, well, I don't feel like... people ask you, you know, what language do you recommend?
Well, well I don't. Right? It's an impossible question to answer.
I think you have to try everything you think is relevant to your space.
So I... yeah, and then just see what clicks really.
So I think that's just, yeah. I know what felt wrong and felt like felt actively repelling which was unfortunately rust and big um for different
reasons like I guess yeah I didn't have to think much about using V for this stuff the other reason
why I'd like to I like to use V is um a major reason I didn't use Go actually was because um
reason I didn't use Go actually was because there's no... when you interact with C via Go, you have this massive performance overhead that you deal with. I had another project,
I'm going to hopefully really explain quickly, I don't want to spend too much time on this, but
I had this idea the other day, well I keep saying that the other day, okay five years ago or something, right? That's even worse than before.
Yeah, sorry.
I had this idea about, you know Excel, you must know, obviously you know Excel.
Yeah, yeah, yeah, yeah.
It's for a cheat.
Or whatever, Libre Sheets or whatever the hell it's called, anything really.
The fact that it's a contiguous grid of cells in an infinite space doesn't feel conducive
to me.
Sorry, that doesn't feel like it's actually helping it be a usable program.
The fact is an infinite grid of cells.
So I was like, well, this is a bad UI.
This is awful to deal with.
I don't like this.
What would be much better, I think, in terms of the feeling is suggest, well, let's just
have an infinite empty canvas.
And then whenever I want to have a table of data, that's that's the I just have a table
of data and it just floats in space, right?
So I can just rearrange my tables in any any way I want.
It's like an infinite canvas, you know, and then when I create a formula, other than it
being I'm really sorry, I should have muted that.
My wife is go away.
I'll put this program, okay thanks. Right, yeah, when you have a formula, you know, you just make the formula live in a certain cell somewhere and then you may or may not remember where the formula
lives in that cell. Conventions are often applied to try and deal with that problem. It shouldn't be
a problem, like the only reason that's a problem is because of the historical, you know, it's an accident that we had it had to work that way in the
first place, right? Probably because of computer limitations or something. It just makes it
just easier for it to deal with. If it is like a, you just offset, you make an infinite
space, it's really easy to make it look infinite because you're just offsetting what you're
rendering from a certain point or whatever. To actually have a real canvas full of just
random matrices of data is probably quite intensive. So we couldn't really do that back
in the day, right? But the problem is, i think we should have moved on from that right like i was
saying before if it ain't broke don't fix it but it is broke you're now like you know imagine your
day now you want to create 10 different tables and you need to have them on the same sheet but
what if one of the columns is a really long title you want to expand that column oh but now you've
broken like all the 10 tables below it.
Yeah. Now you need that.
You can sell mind you think.
And it's just it's just like, what are we doing, guys?
Like, what the fuck are we doing?
Like, Jesus.
So it just it just feels like a no brainer.
Anyway, so all that to say is I started making an experiment to see
if I could just create something like that.
So you have you have different tables all over the place in the canvas.
And then if you want to have a transform happen,
you literally just have an arrow
go from the data source table to another table
that shows the transform.
And then again, you can have a non-destructive way of...
In Excel, it's destructive because you have formulas.
It changes the value in place, which is cool.
I mean, the real value is probably still there somewhere, maybe.
But it's like a weird...
Anyway, I started using that in Go because that's the main thing I knew at the time. Well, I mean, it still there somewhere, maybe. But it's like a weird... Anyway, I started using that in Go,
because that's the main thing I knew at the time.
Well, I mean, it still is, I guess.
But it was supposed to be just a quick and dirty experiment.
But one thing I found almost immediately
was I could barely render anything
before my four little machines started to crawl.
Because then I found out that actually it's
because of the C A B I thing.
If I was using any program, if I want to render anything to the screen, because
it's go, I have to use something else. That's really in C or something, right? And then
because of that, I'm then having to deal with this performance penalty. And I couldn't really
find a good alternative to anything that would let me do that nicely in go. And so one thing
I was acutely aware of when I decided to write this editor was that I have no idea how much C code
I might end up needing to interact with, depending
on what it is I'm doing.
I think a good example of that is actually that,
so I have a Clipboard implementation for,
the only native implementation I have currently that works
is for Mac OS.
And so I had to write a little bit of Objective C to to make that work and then I wrote a little wrapper in V.
But that works natively, right? There's no performance benefit
because V transpiles to C. So offensively I'm technically writing an
editor in C in a way. And so there's no performance overhead, that kind of thing.
That feels really nice too. So anyway, yeah, I think that's, um,
I'll have to say, I, I,
I don't maybe have a coherent exact like set of reasons, but it was mostly feeling, mostly trying things out. Right. Right. Right.
It's just going with my gut a lot of the time and, and yeah,
that it kind of ended up being the, I think what I would say though, just,
just to summarize, I guess, is I,
what I absolutely did not factor
into any of my decision making was what was the flavor of the month, I guess, because
that doesn't matter to me whatsoever. So yeah, and the other thing I guess I would quickly
mention, I mean, we could talk about this again, maybe sometime, I don't know. Depending
on how OG you are, V has like a really bad taste in the mouth for some people and reputation because of historical reasons mostly.
And it's unfortunate. I mean, I guess I could, I don't know how much you want to know if a language does what you need it to do today,
just literally go off and see if it does and that's it. Yeah. Don't need to pay attention to
marketing. Don't read the tag lines. Don't trust some random YouTuber like Brody that's telling you
whether you should do something. Just go and look. Just open your eyes and figure it out yourself.
Honestly, you should listen to me because that's what I tell people half the time. Just just go and look just open your eyes and figure it out yourself honestly
You should listen to me because that's what I tell people half the time like
Whenever whenever i'm looking at some like linux desktop or anything like that. Just like I like it for this
Try it out. Like it's gonna just see what it's like for you. If you like it you like it if you don't you don't
Find out what you enjoy. Yeah, exactly. And it seems obvious to us, maybe. But I mean, again, the only reason
it bears repeating is because people, people want the easy option, right? They just want
to be told what to do. They want to be told what to like, they have to make the hard decisions.
Tough luck. Life is hard. Programming is hard. You've got to pick your battle somewhere. If the language
you choose is because... the only reason you choose it is because you really enjoy programming
in it, but it's also a terrible choice for your domain, keep that in mind. Yeah, okay, maybe you
should choose that one then, but you've also got to remember that actually You might hate your life in two years or something because you've locked yourself into a horrible workaround system. Mm-hmm
So it's really just making those choices and no no one else will know the problem you're trying to solve better than you
I think anyway, so so yeah, that's all I would say for that. I mean he has a long complicated history
I think it's there are still blog posts from like five years ago that are woefully outdated that people still
point to now. Actually, I don't know if this is something you add to podcast notes or anything,
but there is a there is a Hacker News thread. For some reason, someone posted my editor to Hacker
News like ages ago. And it got quite a lot of track in there. And actually, I was in I thought
this would happen, I predicted it. There was some was some people coming onto that thread not to talk about the editor but to rant about
the fact I decided to use V to make it because they are some of the people that find it offensive
that you choose it for anything I can send you that as a link because that would that would be
a good it kind of is a good case study of like how people feel about the language sorry from
about two months ago? Probably, yeah.
Yeah, count it.
Oh, wow, that was fast.
Jesus.
OK.
Yeah, so on that thread, I even say,
I really hope this thread doesn't
devolve into a stupid argument about V again or something.
So in there, you see some fairly good people
trying to explain the history.
I've noticed it a lot less nowadays. Like, when I started working in the editor,
there was certainly a lot more.
I wouldn't say the V haters.
I think they were just, I don't know,
just to quickly summarize my awareness of this, I guess,
from an outside point of view.
I started looking into V about 2020 or so,
like before I really used it for anything.
And I remember reading a few articles back then, because that was kind of when it was happening,
basically complaining that language had been marketed as if the features that were planned
or envisioned to be a thing were available in that moment. So people tried it out, hoping that
those things were there. And then found out
actually that they're not, they're not done yet, or they're not kind of finished yet or
something. Even though it was also kind of advertised very clearly the language hadn't
reached, you know, the language isn't stable. You know, even today, it hasn't reached 1.0
yet, right? Right. When the actual like syntax and the compiler and everything that's that's
been stable for years now. It doesn't have to be, you know, there's nothing to stop them
from completely breaking my program tomorrow.
If they want to.
Hopefully not.
I'm accepting that because I'm aware that they haven't reached a stable standard yet.
But it feels nice enough and it feels stable enough to use today.
Anyway, so I don't know.
I feel like if I was to find a new Shiny language to try out tomorrow, I would go to the website, I
would actually ignore like 90% of what it's claiming it can do.
Simple, clean, amazing language.
Yeah, it's like, I don't give a fuck what you're saying, like, just let me try it and
see.
I don't know.
So anyway, that's kind of my, I think unfortunately that when it was advertised or first happened to be a thing, I think the
author would be okay with me saying this.
I think they were less experienced with the FOSS world and what people expect from open
source software and having kind of...
What's the word?
Optimistic...
No, optimistic is the wrong word, shit.
I can't remember the phrase, I'm sorry.
Having it kind of claimed, you know, aspirational things.
Having an aspirational set of features is almost the same thing as saying it does that
today apparently from people's point of view.
So they kind of felt burned.
I think they tried using it, they felt like they were being lied to or something, felt like it was a scam.
I think I don't understand that as well because I think again-
Yeah I did see a lot of people saying things like, oh it's vaporware, things like that.
Yeah, leave the vaporware as a very popular phrase.
I think that only made sense in the first six months of it being publicly announced as a thing.
I think initially it was announced, the compiler was available, but the source code wasn't.
And then people couldn't believe, sorry I'm just going to take a drink.
The claims that the author was making were so out of this world that people were like,
well this can't be how it works, that's just not possible or insane or something.
And I think there's a well-hated feature that was mostly advertised in the very beginning
called auto-free for V, which is the way that so the way that V does deals with memory
nowadays anyway which is what I'm doing for Lily it will use for Lily sorry is
V does have a tiny garbage collector mm-hmm they can turn off easily you know
I could if I really wanted to I could do arenas or something you know like
manual management.
But I find it's powerful enough that it doesn't seem to have any impact on anything I'm doing.
And also the runtime that that provides is way, way, way more efficient and smaller than something like the Go runtime, for example.
So V with its garbage collection run can run in smaller places than I think the Golang programs could.
So I think it requires less kernel features or something.
Anyway, so the way it kind of works nowadays is that the auto-free is a feature that works and it does... the way it's supposed to work is it basically kind of infers where you need to clear memory or free memory
and it basically just also inserts free statements for you.
Sure.
And that's very hard to do for like an entire program. It's basically impossible because again, there's the whole thing problem, right?
You don't know, even a program, how can you ever specify when it will actually terminate?
Sure.
I think is how it goes or something.
And I don't know, I'm not a compiler author,
I'm not a language designer, but that's my understanding.
It's an unsolved problem.
And to V's credit, all he wanted to do was just to see,
it didn't, I guess kind of espousing
what we're going on about in a way.
They were told by the status quo,
this is an impossible to solve problem,
we've been trying the last 50 years to solve this halting problem problem. You're never going to be
able to have it so that a compiler can also like 100% of the time just automatically insert free
statements or something. And they just say, okay, let me try. I don't know if that's true. Like,
you're just telling me that's true, right? I think that's commendable. Literally, that's
like how everything should be. That's science. That's like literally what we should be doing,
I think. So it turns out that, yes, the Holy Prop is a hard problem to solve. So it makes
sense, right? But they tried. And so now the situation is, so AutoFree was originally supposed
to be the whole, you know, the solution. You can't do that. So now
auto-free is, I think it's like 95% or maybe 99% of all the allocations get freed by it. But anything that's left-angling, just in case there is stuff around, there is a garbage collector.
So the garbage collector actually also has way less work than it otherwise would have done if auto-free
wasn't a thing. So with Go, it's the only solution.
So the garbage collector is the only thing you have.
It has to run all the time.
It has to go and collect everything.
As in my program, I mean, I haven't checked exactly,
but it maybe runs like, I don't know,
10% of the time that the Go one would run or something,
or sorry, it takes 10% as much time
because it's got way less stuff to clear up.
I don't know.
I haven't checked.
I don't honestly need to care. Like as far as I know, you I know, when I run Liny, it doesn't use loads of memory,
it doesn't use loads of CPU, it seems to run fast, it does what I want it to do. Great. Whatever.
That's all that matters to me. So I don't... The minutiae of exactly how many bytes it's allocated
in certain places and why or whatever. It doesn't matter and
it shouldn't really matter to anyone that's sane either. So I think the only reason you go into
that level of complaining is if you're a religious zealot and you have a fan base somewhere else or
something or whatever. You've tied your religions to a language so anything else daring to exist is
offensive to you. So it's your life mission now to go and dispute it or to try and complain about
it in any way possible basically
And I think it's a complete waste of time
What the fuck are you doing?
So yeah, sorry
So one of the thing I don't want to do what I talk about there is um
So that video I showed earlier that was you doing stuff with a
Or trying to do stuff. You couldn't get near of him to work properly,
but on a Chromebook, which I thought was kind of neat.
Yeah. So that actually was my...
I actually do have a couple of Chromebooks on my shelf. I've got one of them running
Linux, my Ivy Ridge device. The other one I need to get around to setting up Linux on
it. What's the BIOS that you're using?
Did you have to reflash the BIOS chip?
So the one that I...
The Ivy Ridge one, sorry.
I actually bought it with Linux on it.
I thought it was funny that it was running Linux already.
So yeah, someone's just selling on eBay set up like that.
Oh, okay, cool. OK, nice.
The other one I'm going to mess around with on stream and I've got
I've got the little thing to unlock the whatever.
I need to read the documentation.
Get around to it.
It was a whole process.
You have to make sure that the old CPU architecture is supported by the
flashing software.
Like, you know, I bought a device specifically for that.
Oh, OK. OK, nice. Yeah, of course, you know what you're doing. Oh, Brody, sorry, my bad. flashing software like I know I bought a device specifically for that okay okay
nice yeah of course you know what you're doing you're pretty sorry my bad I
shouldn't tell you well before I bought the device I was I was talking to the
developers about it anyway so I check with them to make sure it was fine nice
okay yeah I know I spent I mean this is my original anyway so a little aces
Chromebook thing that's got limits on it. I did reflash the BIOS to be able to put...
It's running Bunsen Labs.
I actually run it headless as well, by the way. I'm using a... because I run it in TTY mode, because then...
Because then I almost immediately then start up my friend's... my friend wrote his tiny window manager for X
in V.
And I use that all the time on that machine
because the whole UI for Bunsen Labs is,
as you would imagine, like a regular,
like any distribution really, it's pretty heavyweight.
Like even XCFV is quite heavyweight in my opinion,
compared to what I'm doing anyway.
So all I really want is just a window.
I want a decent terminal that actually has
like a Unicode support, so I can't run a TTY
completely.
So then I start Window Manager, I have a browser window, switch between that and the terminal,
and that's it.
But yeah, I mean, so yeah, that video I showed you, or the video I sent you of me doing that,
what I was doing was I was planning on trying to show you side by side how much faster Linny performs on my little tiny Chromebook.
I think it's like 1.2 GHz or something.
Let's see, you said middle link earlier.
1.1.
Yeah, 1.1. So it's a very underpowered machine.
And supposedly enough for Neovim to run anyway, because it's Neovim, right? But my experience,
with my fairly minimal, I don't have a huge configuration set in my Neovim configuration.
It's still pretty slow for me on that machine. So, I mean, that was one of the reasons I was
trying to show you. So, yeah, anyway. So, I started up Neovim to try and show you how much
slower it was compared. And I hadn't changed anything as far as I knew.
The last time I used Neovim on that machine, the configuration was working.
Hadn't changed anything since.
And I just started up Neovim and all of a sudden,
all of my configurations are broken for some reason or something.
So it was a good case study, again, as to why I'm finding it frustrating
trying to use Neovim in the long term with a static
configuration. It doesn't feel like it's a possible world to live in. Anyway, so yes,
this machine, I love it because it fits perfectly into my son's nappy changing bag, so we can
take it wherever we go. If I get a spare five seconds or something, I can take it wherever we go Like I you know, I forget a spare five seconds or something that you know, I can get it out and do whatever
It's also yeah, it's also very very underpowered so I
like working with Lily on it because
if something is gonna be slow on this machine and
Well, it's not necessarily gonna be guaranteed to be slow on my Mac or something but you know
Okay, if something's gonna be saw my Mac is it's almost certainly gonna be unusable on my little right?
Yeah, yeah
It's important for me
They'll to use my little machine because I use it all the time, right?
So I kind of it kind of means that I'm doing development on the lowest power machine I have
And it's useful in that sense in that it helps me
try to keep things as fast as possible.
So yeah, I have a suite of different Chromebooks.
So I have this little Azuse Chromebook thing.
I actually put Linux on it because Chrome OS is too old now
for it to be supported, I think.
Right.
In this machine.
OK.
Then I have a, what's it called,
I'm just lifting you out so I can read underneath. I don't know because I've got a sticker on top of
it. I have a larger Chromebook that I use quite a lot. It's the machine that's in my laptop stand
on my desk, so it's kind of my main case. Then I have another portable Chromebook. Sorry, I'm
saying portable because they're all portable, but I mean, the biggest laptop I have,
I don't really want to have to take everywhere with me.
Fair enough.
So it lives on my desk.
And I have a medium kind of size one.
I guess you can call them the Goldilocks laptops.
I have like a medium.
This is my favorite one.
It's called the Google Pixelbook Go, I think it is.
I think it's discontinued now, fortunately.
I would love to be able to get another one or something.
But anyway, this is bloody brilliant. I love this machine to program on.
Oh, that one. Yeah.
It's amazing. I love it. It's got a lot more memory and a lot more power.
But I'm also a lot more attached to it. So I don't really care about my tiny ASUS
network one in terms of like, you know, be annoying. So I don't really care about my tiny Asus netbook one.
In terms of like, you know, it would be annoying but I wouldn't be devastated if it got broken
or something or lost or whatever. So actually ironically that means it's the one I use the
most because it's the one I take out with me the most. But if I'm going on a holiday
or something I'll take my medium one. You know, the go book, whatever it's called. That's
my favorite Chromebook, I love that. It's a really nice keyboard, really nice backlight.
And the reason I use Chromebooks, actually, to program on,
aside from the Linux network now, I guess you could call it,
this is going to be a bit strange as well.
I'm such a weirdo, aren't I?
I don't know.
I really like it because it's a solid base experience that I
know is going to be stable.
So if I'm away somewhere, I need to know that my computer is going to
keep functioning and not randomly break because if it does randomly break, I'm not necessarily
going to be in a position to reformat it because I don't have another computer with me to download
an ISO and burn it onto a disk or whatever. So I like the fact that Chrome OS
is a nice cohesive kind of fairly performant out-of-the-box experience. Then it also has
natively supported load-ins containers. So I like WSL, but better. And it's better because
the underlying kernel of the Chrome OS operating system is also Linux, right?
So they have a lot more interoperability than Linux does on Windows, for example, right?
I think Windows, to make WSL work, they have to implement some presumably horrendous native layer or something, right?
Yeah, they have some kernel-level driver they need to run alongside of it.
Yeah, I'm not sure on the full architecture, but it's definitely had to like glue some
stuff together to make it work.
Yeah, and that's not really what I want to base my whole workflow on, I think.
So I mean, I haven't used Windows for like 10 years or something.
I don't know.
Right.
I only used it when I was in school and college and stuff.
So anyway, so yeah, I mean, I don't know, I'm not trying to have
it. I'm not being paid by Google or anything. But but yeah, I think Chrome OS is the what's
that phrase under rate? I think it's the most underrated development system you can get.
It's very cheap. Actually, life is often very good. For whatever reason. You know, there's
a huge different range of like power that you can get from different hardware manufacturers and stuff. It's kind of slept on I think is a development
target. It's native Linux experience. The only thing I could possibly think is a problem
is stuff like obviously games isn't is pretty much out. Streaming is almost certainly out
because there is there is a limitation in terms of like because of security reasons like the
Linux container is completely bastardized from its host like it doesn't have direct access to
everything so like for example if I'm running t-mux and I've got my plug-in to tell me my
battery life it doesn't have any idea it just thinks it's 100% all the time okay because
because the base os is telling it that's that's the case but because I'm not running, you know, because I have Chrome OS and it's telling me what
battery life is, that's fine, whatever.
So yeah, I would say just, it also helps in terms of actually because of that as well,
now I think about it, there are, I do come across interesting situations as well, where
software that normally would work fine in a Linux quote-unquote environment breaks in interesting ways because of that setup.
And I think that helps. I found interesting bugs in different programs that I've then gone and tried to write PRs or raise issues for.
Otherwise it wouldn't have come across or found. That probably would have been a problem in another environment or something, not just
for me.
But it has helped me feel like, you know, if my editor can run inside a weird container
inside Chrome OS, it's definitely going to be able to run fine on just regular Linux
or something.
That's kind of how I think about it.
The only thing I guess that's a bit of a sad thing about that is that I specifically
can't really use a window manager like i3 or something because again I mean the whole
point of me using a Chrome because that it's using the Chromeware space I don't even want
to I haven't even looked because I don't want to know but I doubt there's an app for doing
window management so I really I really hope there isn't because I doubt that's going to
work properly.
So yeah, like there's no, you know, because you run Android native apps, sorry, you can run Android apps natively if there's like a, it might be one to like make a, to try and pseudo do window
management or something, but I doubt that would really work. I just had a look for it and yes,
there are people who've done something. Okay, no, I'm not going to have a leg, don't.
I do feel like this is a sad thing I'm missing out on, but I could install it on my little
netbook, you know, Window Manager, but again, with the whole thing about me wanting to have
a portable experience, if I'm intuitively expecting to be able to just press a bunch
of different keys and get a certain experience. Mm.
Did this just die again?
What a great piece of software this is.
Hi.
Hi. I hate this so much.
OK, sorry.
Um, did you get what I was saying just there?
Sorry about that.
Sorry, I lost the last like 10 seconds
You're saying a bunch of keys to do something
Yeah, so like if I you know, I could install i3 or whatever on on my the one machine
I do have this running raw Linux
Then I would always but I would be annoyed because then I can't use that same
Sort of hotkeys that I've kind of instilled in my brain on every other machine I'm using, right? And so
the benefit of having a window manager that's efficient and easy to
navigate is completely outweighed by the fact I can't use it on most of my
computers because I'm using Chrome OS, like, it's using to make that choice.
Well, I have got a Mac M2, luckily, which is great actually because
it means I can... Yeah, one downside of the actually just to
quickly say is that cross compilation is a pain in the ass right and like not really a thing right
now and so I the only way I would be able to compile for macOS is either probably using
something like go-releaser I guess or just having access to a Mac, right? So, yeah, that's my environment is a bunch of different laptops, whatever the situation is,
I mean, that changes. So I'm always using like five or three or four different laptops in any
different situations. So not having to deal with configuration migration by having an editor that comes with everything
out of the box is great for that too.
But yeah.
But yeah.
I think we've reached the 2 hour mark.
I don't know if you want to wrap everything up or?
Well, we've reached the 2 hour mark since the call's been going, but we're a little
bit before that for the actual recording.
So we've got a bit longer if you can keep going.
Okay, I'm fine. I've got a warning or whatever.
Okay. Well, I want to talk a bit about your experience with Linux and your experience with development.
You were saying before we actually started recording that you basically always just use Linux.
Yeah, I mean, I've always used it in my spare time.
So, well, what I mean to say is when I'm at school or when I was at college, I had to use Windows.
Sure, sure, sure.
For the most part.
Although I would use a bootstick if I could kind of get away with it or
make the teacher not realize what I'm doing, I guess.
So, yeah, I was saying to you before, I'll just kind of repeat it.
My... I wouldn't say we were like, badly off or anything at all like that. But I mean,
we were quite frugal with not buying things we didn't need to. And it didn't seem to be
an immediate need for having everyone have their own machine or a big computer or anything back in the day.
Sorry about that.
So I would, yeah, so if I wanted to, you know, if we went away on holiday or something, or
if I wanted to use, you know, software, I would often my choice was to, the choice I
had was to use a boot stick with Linux on it.
And then I would borrow
my dad's white laptop and boot Linux off of it.
Precisely because I wouldn't have to deal with, you know, because I obviously wasn't
out of there, what his login was I didn't want to use this opposite anyway.
I think it was XP that he had, like it was a ThinkPad running XP and yeah, if you just
boot off that and the boot stick itself has got persistence obviously because it was Ubuntu.
And I can just kind of save everything I want want to to the stick sometimes it would break but then I
would just reformat it. So yeah that was my that was my initial experience and I didn't really get
much experiences from from Windows before then. I think maybe a couple of times at friends houses
or something maybe I think my grandad might have had 2000 or 99 like 98 whatever it was called yeah 98 so yeah i think i i always i don't know um
it did it did kind of cross my eyes a bit whenever i went to school or college
how different windows was was always kind of a bit of a pain. And then I think I,
I was always thinking, you know, why, why is it like this?
Why, why isn't it like the other thing?
Wouldn't it be great if it could just work the same way or whatever?
So
this is this is like way before I even
decided to start getting into programming at all.
So.
Hmm. So what version of Ubuntu were you using back then? Do you want to add
yourself? I don't remember the version. I know that it was running Nome 2. Okay. So
that was when it had the, by default it had the bar at the top and the bar at the bottom
Yeah, the dust thoughts switching was at the bottom and then the the other stuff was on the top
Mm-hmm, and it didn't have like a dog bar or anything. It just had you know, there's two these two bars
I love that that's a moment when it would have set up like that anyway
I do remember when they moved to time three and I guess also by extension unity
I was like, oh, this is like Windows 8 all over again.
I love the opinion.
Like I wasn't using Linux back then, but I always love the, um,
the, like the, the stances that people have on Gnome over the years.
Like you'll hear people now who are like, I wish we had GTK3 Gnome back, but I remember a few years back before the GTK4 version came out,
there were people being like, oh, I wish we had Unity back, but then you go even further back when
you- the change to Unity happened, who were like, I want Gnome back, get rid of this Unity thing.
It seems like people always kind of just want the thing that they were first
introduced with.
Yeah, yeah, that makes sense. I think it's natural that that's
it's familiar, it's kind of what you're used to and it feels like the better experience.
I think I like to think though that my my visceral hatred of unity was more...
I think I like to think though that my my visceral hatred of unity was more I
Was open I was open-minded to it because I am aware that that's the bias you would have and I was trying to like see You know, maybe this is better. Hmm
But I found that with unity I was actually doing like 20 more mouse clicks than I needed to or something right?
The search was terrible as far as I remember
I think it searched by category rather than searched by actual application name.
Or it tried to combine the two.
It didn't help. They had some weird choices of...
They had like an Amazon plugin installed by default.
So you would do like web searches alongside file search like Windows 8 was doing when that came along.
So I don't know why they decided to see what Windows was doing and then decide
that that was a good idea or good direction to go in. If anything, you should run in the
opposite direction of whatever Microsoft decided to do, I think, with their assistant. But,
yeah, it was a bad... I remember, I think I even read in like a bloody Linux magazine,
that the reasoning was that they thought that desktop on the mobile was going to be a thing.
So like, I think they even had a manufacturer at one point they were pairing with where
they were going to try and make a phone.
Yes.
That was just because everyone was thinking that, oh, we're not going to be using PCs
in 10 years.
We're going to be everyone's going to be using mobile phones for everything.
Yeah.
And if you think about it for two seconds, you're like, well, that's retarded because
screen real estate is obviously, you know,
it's not going to work. Like, what do you want about basically
saying that no office jobs going to be a thing in 10 years,
right?
Well, the idea was that it wasn't necessarily you would
they would be a dockable thing. Yeah, yeah.
Have the phone in a dock and then it would kind of be a whole
thing. So I think I think that was the that's the natural
conclusion. You realize that's a bad idea. Think everything's
going on mobile, then you realize that's never going to happen. But then you think, well, actually,
maybe it could still happen, but in a weird way, right? So yeah, I think the Unity experience was
precisely called Unity because it was supposed to be the... It was supposed to be the unified
desk experience. Unified experience between... Yeah, exactly. Well, they weren't just doing
your phone. This is how fun Unity was getting. So they they had a TV in the works
Oh god It wasn't a it wasn't real though. There was it was you want to talk about something actually being vaporware
That was vaporware. They showed it off at CES back in whatever year it was
It was
They it was nothing it was a it was a PC under the table plugged into it.
Oh god.
Yeah. They had the phone, that was the Ubuntu Edge.
That wasn't just like a little bit successful. That was, I think at the time, the most successful Indiegogo campaign.
I'm pr... yeah. Some... it raised a lot of money.
And that turned into absolutely nothing
It was I think it's a shame because I thought it was quite a cool idea
Yeah, it was actually it would have justified the visceral hatred of my I hate unity
And I I think it would have made it slightly more palatable right if I could see the feel of actually having it
You know, yes, i'm dealing with all this extra shit, but actually, you, at least it gives me a unified experience or something. I guess you could say yeah. Yeah
I
Mean it could have been it would have been quite cool. I remember back in the day
I think around that same time my dad's got
Very first Fairphone. I don't know if you know, but ah, yes
And I remember being really jealous of it, especially because it had a really cool star Lego in the top right of the screen
And I just really liked that look so I remember thinking when I had it I was like
Oh, this is actually quite a chunky phone, you know be quite cool if it was like
You know my chunky boy like my actual desk top
I'm actually not something you know when is this unity thing gonna come out like and I think I looked it up and I'll
It's like dead like what what's going on?
So yeah, anyway, I think at that point, they probably should have revised course and just scrapped Unity and so they're trying to keep it
going because it was just terrible. Yeah. Yeah. So.
They were trying a lot of things back then.
I think a lot of the choices they made were really dumb, but like Mozilla was doing a lot of weird stuff back then as well.
Like they had their mobile operating system.
They had a bunch of other random stuff they were doing.
I think a lot more people...
There was this big push for this like unification of device classes,
but no one really cared about it. And now you sort of have this other problem where it's not a unification device classes, but no one really cared about it. And now you sort of have this
other problem where it's not a unification device classes, it's a lot of people are growing up and
just don't get a computer, they do everything on a phone. And their only experience with a computer
is at school and then when they get a job. Yeah, you know what, actually that makes me think about
it in a different way as well. Like from the point of view of someone going to school nowadays,
all they've experienced at home is like fun, mostly, right?
Like tablets, phones and Xbox.
And then they'll see the PC is only a boring business tool.
That's a shame.
I hadn't thought about it.
I know it's a slightly different thread to what you're on about, but yeah,
just imagining it from their point of view, I guess I'm trying to anyway.
No, I get what you're saying.
There was a pirate software clip that came out ages back where he was talking about demoing
a game at a convention, and he had a keyboard and mouse on one of the stands and then a
controller on the other one.
And what he realized after the first day is nobody went to the keyboard and mouse.
They had no idea how to use it.
Yeah, yeah, yeah. I think I remember seeing this clip.
Yeah, yeah.
And then he...
And then eventually he realized that they didn't even know how to use a controller.
Everyone was trying to touch the screen.
Yeah, getting their grubby fingers all over it or something.
Yeah, I've heard of something similar. like, I think, what was this, like, a few years ago I heard something about how there was some report about some kids would be shown a glossy, like, textbook. They would be confused about when they swipe around on the page, why stuff wasn't moving. I can't believe that's real, but I mean, maybe it is, I guess.
It sounds like something out of a Black Mirror episode or something. Yeah, it really does. I've heard this before. I don't know how true it is. What I have seen
before, which is really a... It is straight out of a Black Mirror episode. Is there are these videos of like babies and really young children swiping in their sleep?
Oh, OK. Interesting.
Yeah.
I'm hoping that they're dreaming about VR interfaces or something.
Something cool like that.
That would be nice. Probably not.
No, probably not.
I mean, did you want to hear about, like, how I got into programming or something?
Yeah, sure.
Sure, we can do that before we wrap up.
OK, OK, so I mean, sure, so I was...
So I'm trying to think how to explain. I I mean some of this might be slightly illegal as well
um
I don't know if i'm gonna wrap myself. Yeah, maybe don't incriminate yourself with some of it think about that
I I can cut anything that you want me to cut
Sorry, I said, okay, you can cut I can cut anything you want me to cut
Okay, I mean, um Sorry, okay., so I went to, I said earlier I
didn't go to university, right, so I went to, I started the track, the regular track of trying to
go to university in the UK. So in the UK, we do this thing called A-levels after GCSE. So GCSEs
is kind of, I don't know what the equivalent is in America, I'm not sure, but GCSEs is you kind of
pick up like 11 or so subjects,
I think it was 11 at my school, so to kind of include the required ones like mass English and
whatever, and then a bunch of others and stuff, and then you do A levels, which is like normally
three or four subjects, and I knew that I wasn't going to be able to do three subjects, so I
decided to convince them to let me do two, I think it was two, maybe it was three. I don't know. No, sorry, that was the other way around.
Not four subjects. I said, let me do three subjects or something. And so I chose art, geography and IT,
which is like a strange combination, I think, in hindsight.
They were my favorite subjects anyway, so I chose those.
And then I found it extremely, there was such a massive discussion between how they treated
you in regular GCC level to, because I went to Sixon, so it's technically the same, I
went to the same actual school as I've just been at for the last like, you know, seven
years, or I can't remember how long it is, right, like 11 years, I guess, I don't know,
long time um and I was
going to be there for another two or three years based on this this new track right they just have
a separate area for the eight level students that you know we wear our own clothes and they wear the
uniform whatever right right right anyway I quickly just kind of found that without being
pushed directly I just start to lose interest in doing any of the stuff. And there were lots of different reasons I started to kind of just disengaging
from the whole thing. And I ended up spending most of my time on the computers in the 6.1
comm room, which is what you know, the 6.1 is like the name of the group of students
and 6.1 comm room, we had our own space to hang out in and stuff. And I found quite quickly that the teachers didn't care where I was. They didn't care because you could go home whenever
you want to, you know, you don't have to be there, whatever. And so I was like, okay, well, I'll just
stay here and learn about computers, I guess, or something. I just decided to start like, you know,
I did that Wikipedia thing, I started going down rabbit hole after rabbit hole after rabbit hole
on Wikipedia. And I learned about loads of things I started reading about dotnet
I started I learned about what wake online is
You know, I was interested. I was like why does you know because again I had this I had this awareness of like
You know Linux exists. I'm aware of Linux. I'm aware of Windows and they seem to be quite different
Why is that like where does the different come from?
started looking into that basically and I kind of started learning about all these different
things to do with Windows.
And I was kind of interested in how things worked
at that point.
I guess I just kind of like, again,
I wanted to learn about everything.
I was like, well, you know, how does.NET work?
Like how does the network layer work?
How does TCP work?
How does UDP work?
What is the difference?
Like how do the cables transmit anything? What does that actually mean? What does TCP work? How does UDP work? What is the difference? How do the cables
transmit anything? What does that actually mean? What is electrons? I was doing all this deep diving
and at one point I was like, it would be really cool if I could poke around on the computer
network. Sorry, this is going to be a big of a tangent. So I may have allegedly installed OPH track on a USB stick. It may be the case
that I allegedly cracked the app in password for the school network.
I was not that crazy. We just took it at my school. Okay, fair enough.
I'll stop being quiet about that.
Hopefully no one ever hears about this from my school.
I basically figured out what the open password was by cracking it.
It was a really basic password.
It was easy for the... It did rainbow tables. It was that technique.
It just did the hash comparison
thing and I guess someone else had found that. So anyway, that gave me loads more power to
do basically whatever I wanted and I started figuring out, so I was fascinated by wake
on LAN and the fact that if you remotely, so basically what it works, how it works is
the network card stays on when the computer turns off and then it means you can boot it up remotely again and so I was like well this is cool let me see if I can figure out how to use
that and so I started using remote commands to like interfere with computers all over the school
so there was a there was a set of tools called PS6C or whatever. I can't remember if it's PS tools, right? You remember
PS tools? I think it's been bought by Microsoft now. Yeah, Vagel ringing a bell. Yeah, so there
was one program called PS6C or whatever. And I think I can't see your credit. And the way it
worked was you it basically lets you run software and other computers on the network. And it would
still do it even if the software wasn't
on that other machine, because it would copy it over. And so I started causing havoc by...
I started getting around... because I had all this free time. I was just at school. I didn't
want to go home because my parents would realize I wasn't doing anything right. So I would stay at
school and just mess around. So I walked around the school. I started memorizing the layout of
all the different computers, because all the computers are numbered. They would be numbered from the door to be like one and then it'd be 30 up to the teacher's
desk or whatever. So I would remember when certain classes would start and when they weren't there.
And I remember all the numbers in the rooms. And so I would go back to the common room and then I
would basically write a script. I was like, how do I do things automatically? So I wrote some hash scripts to automatically invoke like a loop to just say, you know,
turn off all these computers one to something remotely. And then because I knew that once
they've been shut down remotely, that they can be started up again, I would then start
them up again. And I would I would run it with a delay. I'd log out of the computer.
I'd lock the computer because you could lock them, right. So some people using them. I'd
run back to the classroom on that on that corridor and then watch
the computers turn off and then turn back on again. And it felt so cool. You know what I mean? It was
just like, oh my god, I'm like a wizard or something. And so I just kept doing stuff like that.
And I think I got to the level of like, I was in the library one time and I saw that someone was,
this is going to make me feel really bad, well I feel really bad about sleeping today. I noticed that someone
was like basically just playing flash games in the library and I was like, well you're,
you know, if for some reason that really irks me, I was like, you're supposed to be working,
you're not even working, like you're not even hiding it, you're obviously just thinking
about.
I felt like I was being productive or something. So anyway, I
realized I could list the processes that were running on someone else's machine
via this one of the tools I had. So I listed it and I saw he's running,
you know, he is actually running Word. And so I thought, you know, fuck you, man,
if you're not going to be working, I'm just going to close your Word for you.
So it turns out he hadn't actually saved his document that he'd been working on
for the last like hour or something. Oh no.
And that was bad. I was like, oh shit. I had to basically leave the room and he was like, started having him out.
He was one of these, I don't know if it's like, what's the PC way of saying it?
He would sometimes need like one-to-one assistance from support staff.
Like, especially-
He was one of those students.
Yeah, I guess so. So he had he had a less than stellar reaction,
that wasn't kind of wound in by social norms, right? He would, he basically freaked out. And
I was like, fuck, I fucked up. So anyway, that was like my whole that was my whole original
interaction to that. So I was I was just spent last I spent like a year learning as much as I
could about computers. I picked about on the network. I accidentally a few times restarted computers in an active classroom
When people were trying to work and things and yeah, it felt fun
then I went to
Inevitably I ended up flunking my a levels because I didn't really
Yeah, I'm surprised
I
Basically because after the first year I was like well
I'm definitely not
going to get through like the rest of these years, right, so I just decided to switch. So I switched
to the local community college thing, whatever the equivalent phrase is for Americans, whatever,
and I did an IT course there and that's where I met my very good friend Lee, who
we instantly just completely hated each other somehow, I think. At least I found him extremely irritating and abrasive or something. Poor Lee, I hope
he doesn't find that offensive. If he hears it. Then I was like, he's fascinating at the
same time. They went round the, when they went around the classroom
or like introduced each other,
and he said he had a blog about tech stuff.
I was like, you have a blog?
He's like, what, what?
I was like, he has like his own website
and he's, you know, into programming and stuff.
I was like really interested in the fact
he'd done all this stuff.
And then I, so you know, I said to him, you know,
I would like to do programming,
but I haven't got around to trying to get lessons
or whatever, or do, you know, study it or something, or get someone to like give me a course or something.
And he went off on me like, he had a massive rant, basically, I was quite surprised. He
basically shouted at me for being an idiot. You know, saying stuff like you don't need to
get taught programming, just learn it yourself. You know, it's not a big deal. You know, you're
an idiot. And because he found it like like I think he basically found it annoying that
I was holding myself back in that way. Hmm
And then I'll say okay. Well fuck you guy. If you think it's so straightforward
Why don't you teach me how to program and then and then he did and then we actually spent
I actually had another little netbook at the time
That did actually have windows on it because I didn't want to dare I didn't want to fiddle with that was in the machine
I'd ever been bought so didn't want to fiddle with it too much. So anyway, it had have Windows on it because I didn't want to fiddle with it. That was the only machine I'd ever been bought so I didn't want to fiddle with it too much.
It had Windows on it.
And we did... what was it? I think I decided I was going to learn Python.
So I was like, can you teach me Python? He was like, well I only really know Java's my thing.
So I will have to learn Python at the same time to teach you.
He'd been doing programming for like 10 years before that.
So I had... how old were we?
I must have been both about 17, 16, 17, something like that. Maybe, maybe, yeah, something, something like that, something about that age. And he'd been programming as a kind of escape from from stuff for ages basically. So he was like, I'd always seen him as somebody, someone to try and aspire to be like or catch up to.
Once I started to realize I could kind of do programming as well.
And he was a really good teacher, actually.
I kind of weirdly, so every lunch break, we would go down to the outside kind of part
of the college and we'd program on my little network.
And we'd basically, every week we'd try out a different thing in Python, essentially.
And then over time, I think I moved from Python to Java was the next thing.
I've usually got massive headaches from having to deal with all the squiggly brackets that I didn't really understand.
That's where I started. That was not pleasant.
It was a big shift. Yeah. And I was like, oh, joy.
But I was like, the performance games were amazing. I was like, Jesus, things can actually run this fast.
And then it kind of progressed from there, really.
And I think we both kind of graduated college around the same time.
He went into industry into the very Microsoft corporate kind of direction, so C Sharp land.
And I went in the opposite direction in very much open source kind of Ruby, Go, you know, whatever else, Python kind of direction direction that kind of land. I think, I mean, our plan,
we always said to each other one day
we would try and come back together
and do our own thing together.
And we would just kind of like,
I think that's still the current plan
is basically just be in the industry
for as long as we want to be,
kind of see what we have to learn here,
see what ideas people have, see what's going on,
and then come back and do our own thing one day in our own space.
But then we can kind of share,
draw on these two different shared paradigms,
because they're completely different worlds really.
The whole approach to solving problems
in the Microsoft land is completely different
to the open source ecosystem from what I can tell.
Well, actually, to be fair,
nowadays they are sort of converging,
but at the time, they were still very kind of much worlds apart, I think.
Yeah, for sure.
At least it felt like that. So yeah, I mean, that's kind of my overarching story about
how I started to get into programming and then I kind of really felt like it was, to
be fair as well, a lot of my motivation to learn programming was because I really enjoyed
hanging out with my friend Lee,
and it was the thing that meant that we spent the most time together and spoke the most.
I wanted to relate to him as much as I could, and so that was a big motivation for me to try and stick with it.
And he inspired me loads because he had this philosophy of like, do everything yourself.
Like, if you can do anything yourself, do it.
Like, don't use a library.
He actually works at Rockstar now.
He works in the, I can't really tell you exactly what he does,
because I'm not technically really supposed to know much,
but he works at Rockstar in a department
that basically helps power, like,
everyone that needs to interact with the engine,
he basically does the stuff that helps that. So he's been hugely, yeah, he was always really into game engine stuff when we knew
each other he'd show me a new feature on his personal game engine he'd done every day.
And I was always like in awe of him like, oh my god, you're like, you know, you're a
genius or whatever and you can do all this stuff.
It was never really about the cloud.
It was just that, yeah, it was just like.
For the sake of learning it right.
Right. So I feel I feel like actually that that whole philosophy has kind of stayed
with me, maybe probably longer than it should have done.
I think I think nowadays I'm actually surprised at how little that philosophy is.
Well, OK, to be fair, it's not not with him necessarily, but I think the think I'm nowadays I'm actually surprised at how little that philosophy is well, okay to be fair. It's not not with him
Necessarily, but I think the context for him has changed
So he's like he's now resigned to the idea that you know, if you want to make a game, yeah, you could use Godot
It's fine. But for me, it's like yeah, that does sound like a good idea. But at the same time, uh,
like I'm having to deal with
Like your thing. Hmm
Like isn't my way in the end? Yes, the upfront cost is way less, but actually,
what if your engine is going to physically make something I want to do with my game impossible?
That's going to be a huge time sink, trying to work around that. It's not necessarily a guarantee
time sink as much as making my own engine would be. But at least if I know I put that time in the beginning, I could still do whatever I
wanted.
That's kind of, I think that's kind of the approach that, for example, Jonathan Blow
has.
The upfront time is completely worth it because then the freedom you have is forever.
Right.
Right.
It's like, it's always that thing.
Like, there's that graph, right, with developers, oh, task takes 10 minutes,
spends three weeks working on a solution to make that 10 minutes, takes zero time or something,
right? It only matters if you have to do that thing more than once. Most of the time, I
do have to do things more than once. So I would much rather have a solution I spent way more time working on.
And then actually for my editor even,
sometimes I daydream about myself in maybe 10 years
being 10 times faster than someone using near them,
because I know how to use my editor as best as I can,
because it's my editor.
Even if the motions of how you interface with it, whatever,
I feel like there's still some underlying power you get from just being the core person, like you know everything about it, like exactly how to do
everything, right? That kind of thing. Anyway, so that's, I don't know, that's my whole post
introduction, I guess, kind of thing. So, yeah. I'm sorry for talking, I think we've spoken quite
long time now. Yeah, no, it's been a bit. This has been a very...
I don't know what I expected going into this episode.
I don't know how much we talked about the editor,
but I don't actually care.
That's the thing.
I think this is a really fun episode.
I think you're clearly incredibly passionate about what you're doing.
And I don't know. fun episode. I think you're you're clearly incredibly passionate about what you're doing.
And I don't know, I think it just makes for an interesting conversation, even if there wasn't much that I could say, because you just kept going on and on and on.
Oh, yeah, I'm sorry about that.
I didn't know.
No, that's totally fine.
No, I love these episodes.
I love when I can have someone on who really cares about the work they're doing and really
aspires to do something cool.
I'm just doing what feels comfy.
Right. I get it. I get it.
No, that's that's that I think came across really well.
No, that's that's yeah, that I think came across really well. I think I think I'm it's important to me to to do the right thing in every way I can and to have the right motivations to do the thing I'm doing.
I think it's what I'm trying to say.
Anyway, yeah.
Thank you for the summary.
I mean, I really enjoyed the conversation.
I'm I'm aware of how much I've rambled.
I'm sorry for if you had more questions, I didn't even give you an opening to give me.
I think I'm just trying to like, again, I've never done a podcast before, so I guess
I'm just trying to kind of communicate the deep thinking I've done about some things
that maybe will be useful for other people or you or whatever.
This is why I like handling it in a very sort of off the cuff way.
There's definitely value in some episodes being like very structured and hitting on
very specific points.
But at the same time, I do like to have these ones where it can just be sort of this, I
guess, torrent of thought and just see where it takes us, I
guess.
Yeah, I mean, I think I think actually we did cover, I mean, certainly from the points
you sent me, I think we have covered pretty much everything in some way, maybe not like
in a cohesive order.
Yeah, yeah.
And I think we did touch on everything.
So so there's a lot of a lot of rambling for me. Yeah. I think we did touch on everything. So those is a lot of rambling for me.
I will say I do feel slightly bad for the...
I have quite a few members of my audience who have English as a second language and
you speak very fast.
I speak very fast because I know that I'm taking a long time to speak as it is.
No, I can't.
It's good training for them.
They can learn to deal with that.
I mean, I guess they could always listen back to it over and over again or something.
But yeah, just your segments run at like a quarter speed or something.
Maybe, yeah.
Well, I mean, yeah, thanks so much for having me on.
I really enjoyed talking to you.
If people want to check out the project or maybe get involved with it, where can they go?
The best place is probably the Discord server. It is currently dead because I guess I'm just the only
person currently looking into like working on it. But if people have any questions about what they
could work on, I think actually someone did message me recently on it saying something.
And I've hopefully got a fairly cohesive summary about what
they could do there as well.
So maybe the answers have been answered already on the server.
But yeah, if you want to actually talk to me about it
and figure out what you could do, either just raise issues
or just go to the server and just ask, I guess.
But yeah, Sony, I wouldn't recommend
you download it and expect so that I can actually be completely
usable experience yet.
It's not currently in that state.
But yeah, it's certainly, I don't know, I'm working on it.
I'm trying to get there.
Awesome.
Anything else you wanted to mention or I can do my outro?
No, I think that was everything.
Okay. Cool. We went, what, two hours that was everything. Okay, um, cool.
We went, what is it, two hours, 30 minutes of the recording?
Okay, yeah, that's not that crazy.
Um, so, my main channel is Brody Robertson.
I do Linux videos there six-ish days a week.
Uh, do streams there sometimes as well, depending on how I feel.
I've got the gaming channel, Brody on Games.
I am currently playing through Ori... whatever the second...
Blah... whatever the second game is called. Will of the Wisps? Yeah, Will of the Wisps, that one.
And Kazan the First Berserker. I also upload clips from that channel over to Brody Rumps and
Reacts, so check that out as well. If you want to see the video version of this and you listen to
the audio, it is available on YouTube at Tech over T. If you'd like to find the audio version of this and you listen to the audio it is available on YouTube at tech over t If you'd like to find the audio version it is on Spotify which also is video which is cool
It's on basically every podcast platform. There is an RSS feed there as well
So if you prefer that that is also an option now, how would you like to sign off the episode?
I never tell people they're doing this and I always like to see how they react.
Thanks for listening.
I hope it's been useful.
Sorry for my rambling.
Sweet!