Tech Over Tea - More Than Just Another Vim Like Editor | tauraamui

Episode Date: June 27, 2025

Today 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)
Starting point is 00:00:00 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.
Starting point is 00:00:24 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.
Starting point is 00:00:41 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.
Starting point is 00:01:25 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
Starting point is 00:01:43 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.
Starting point is 00:02:20 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
Starting point is 00:02:40 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.
Starting point is 00:03:18 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
Starting point is 00:03:40 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.
Starting point is 00:04:15 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
Starting point is 00:04:43 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.
Starting point is 00:05:41 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
Starting point is 00:06:23 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.
Starting point is 00:06:36 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,
Starting point is 00:07:07 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.
Starting point is 00:07:42 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
Starting point is 00:08:18 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
Starting point is 00:09:02 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
Starting point is 00:09:40 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.
Starting point is 00:10:03 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,
Starting point is 00:10:43 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.
Starting point is 00:11:11 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?
Starting point is 00:11:38 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
Starting point is 00:11:56 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
Starting point is 00:12:19 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
Starting point is 00:12:58 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
Starting point is 00:13:38 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
Starting point is 00:14:26 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,
Starting point is 00:14:49 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,
Starting point is 00:15:29 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
Starting point is 00:16:05 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...
Starting point is 00:16:37 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,
Starting point is 00:17:06 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.
Starting point is 00:17:37 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
Starting point is 00:17:59 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.
Starting point is 00:18:34 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
Starting point is 00:19:03 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?
Starting point is 00:19:46 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,
Starting point is 00:20:27 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
Starting point is 00:20:51 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.
Starting point is 00:21:16 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.
Starting point is 00:21:55 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.
Starting point is 00:22:19 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.
Starting point is 00:23:16 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
Starting point is 00:23:57 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.
Starting point is 00:24:38 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
Starting point is 00:25:11 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,
Starting point is 00:25:40 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
Starting point is 00:26:09 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
Starting point is 00:27:04 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.
Starting point is 00:27:47 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.
Starting point is 00:28:10 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
Starting point is 00:28:51 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?
Starting point is 00:29:16 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
Starting point is 00:29:33 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
Starting point is 00:30:04 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.
Starting point is 00:30:38 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
Starting point is 00:31:21 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.
Starting point is 00:31:43 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.
Starting point is 00:32:11 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.
Starting point is 00:32:43 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
Starting point is 00:33:17 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
Starting point is 00:33:40 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
Starting point is 00:34:20 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
Starting point is 00:34:53 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.
Starting point is 00:35:16 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.
Starting point is 00:35:53 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
Starting point is 00:36:18 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.
Starting point is 00:36:37 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
Starting point is 00:37:00 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
Starting point is 00:37:34 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?
Starting point is 00:37:54 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.
Starting point is 00:38:19 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,
Starting point is 00:38:35 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
Starting point is 00:38:59 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
Starting point is 00:39:18 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,
Starting point is 00:39:39 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
Starting point is 00:40:17 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,
Starting point is 00:40:43 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
Starting point is 00:41:16 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...
Starting point is 00:41:50 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?
Starting point is 00:42:24 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?
Starting point is 00:42:57 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
Starting point is 00:43:36 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
Starting point is 00:44:06 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
Starting point is 00:44:49 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
Starting point is 00:45:26 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.
Starting point is 00:45:58 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.
Starting point is 00:46:23 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.
Starting point is 00:46:46 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.
Starting point is 00:47:06 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.
Starting point is 00:47:42 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.
Starting point is 00:48:20 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...
Starting point is 00:48:52 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,
Starting point is 00:49:21 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.
Starting point is 00:50:02 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.
Starting point is 00:50:21 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
Starting point is 00:50:42 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,
Starting point is 00:51:26 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.
Starting point is 00:51:55 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
Starting point is 00:52:37 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.
Starting point is 00:53:11 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?
Starting point is 00:53:32 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,
Starting point is 00:54:20 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
Starting point is 00:55:02 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...
Starting point is 00:55:50 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.
Starting point is 00:56:16 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
Starting point is 00:56:39 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.
Starting point is 00:57:00 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.
Starting point is 00:57:53 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
Starting point is 00:58:37 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
Starting point is 00:59:20 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...
Starting point is 01:00:08 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.
Starting point is 01:00:52 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.
Starting point is 01:01:27 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
Starting point is 01:01:58 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
Starting point is 01:02:44 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
Starting point is 01:03:16 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,
Starting point is 01:03:45 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.
Starting point is 01:04:14 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
Starting point is 01:04:54 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
Starting point is 01:05:33 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.
Starting point is 01:06:26 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
Starting point is 01:06:52 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
Starting point is 01:07:37 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
Starting point is 01:08:10 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.
Starting point is 01:08:49 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.
Starting point is 01:09:48 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
Starting point is 01:10:25 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.
Starting point is 01:11:14 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?
Starting point is 01:11:52 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.
Starting point is 01:12:16 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
Starting point is 01:12:50 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?
Starting point is 01:13:26 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
Starting point is 01:14:16 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.
Starting point is 01:14:45 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
Starting point is 01:15:10 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
Starting point is 01:15:47 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
Starting point is 01:16:19 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.
Starting point is 01:16:36 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...
Starting point is 01:16:56 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.
Starting point is 01:17:13 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
Starting point is 01:17:36 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.
Starting point is 01:18:02 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,
Starting point is 01:18:38 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,
Starting point is 01:19:26 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
Starting point is 01:20:11 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
Starting point is 01:21:03 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
Starting point is 01:21:41 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.
Starting point is 01:21:58 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.
Starting point is 01:22:18 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
Starting point is 01:22:51 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.
Starting point is 01:23:17 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
Starting point is 01:23:49 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.
Starting point is 01:24:18 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.
Starting point is 01:24:47 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
Starting point is 01:25:41 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.
Starting point is 01:26:29 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.
Starting point is 01:26:52 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,
Starting point is 01:27:19 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.
Starting point is 01:28:05 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.
Starting point is 01:28:22 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
Starting point is 01:28:54 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
Starting point is 01:29:21 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...
Starting point is 01:29:53 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.
Starting point is 01:30:14 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
Starting point is 01:30:32 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
Starting point is 01:31:07 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
Starting point is 01:31:27 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.
Starting point is 01:31:55 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.
Starting point is 01:32:33 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
Starting point is 01:33:13 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
Starting point is 01:33:43 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.
Starting point is 01:34:02 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.
Starting point is 01:34:28 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.
Starting point is 01:34:45 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
Starting point is 01:35:15 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
Starting point is 01:35:42 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?
Starting point is 01:36:25 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.
Starting point is 01:36:59 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
Starting point is 01:37:34 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,
Starting point is 01:38:18 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.
Starting point is 01:38:58 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
Starting point is 01:39:34 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.
Starting point is 01:40:16 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
Starting point is 01:40:36 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
Starting point is 01:41:06 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.
Starting point is 01:41:53 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.
Starting point is 01:42:22 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,
Starting point is 01:42:56 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.
Starting point is 01:43:28 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
Starting point is 01:44:15 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.
Starting point is 01:44:42 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
Starting point is 01:45:25 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
Starting point is 01:46:08 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
Starting point is 01:46:42 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,
Starting point is 01:47:13 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.
Starting point is 01:47:39 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.
Starting point is 01:47:56 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
Starting point is 01:48:26 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.
Starting point is 01:49:03 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
Starting point is 01:49:37 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
Starting point is 01:50:11 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
Starting point is 01:50:45 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.
Starting point is 01:51:18 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.
Starting point is 01:51:48 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.
Starting point is 01:52:28 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.
Starting point is 01:53:06 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
Starting point is 01:53:38 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
Starting point is 01:54:17 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
Starting point is 01:55:01 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
Starting point is 01:55:40 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
Starting point is 01:56:19 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?
Starting point is 01:56:39 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
Starting point is 01:57:13 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
Starting point is 01:57:45 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
Starting point is 01:58:38 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.
Starting point is 01:59:14 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
Starting point is 01:59:53 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
Starting point is 02:00:27 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?
Starting point is 02:00:54 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
Starting point is 02:01:27 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
Starting point is 02:01:49 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?
Starting point is 02:02:30 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
Starting point is 02:02:44 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
Starting point is 02:03:17 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.
Starting point is 02:03:42 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.
Starting point is 02:04:28 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,
Starting point is 02:05:06 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,
Starting point is 02:05:20 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.
Starting point is 02:05:41 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,
Starting point is 02:06:05 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,
Starting point is 02:06:34 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.
Starting point is 02:07:05 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
Starting point is 02:07:34 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.
Starting point is 02:08:08 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,
Starting point is 02:08:34 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,
Starting point is 02:09:02 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.
Starting point is 02:09:38 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.
Starting point is 02:09:59 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.
Starting point is 02:10:37 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.
Starting point is 02:11:07 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.
Starting point is 02:11:39 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.
Starting point is 02:12:04 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?
Starting point is 02:12:31 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
Starting point is 02:12:57 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.
Starting point is 02:13:16 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.
Starting point is 02:13:39 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?
Starting point is 02:14:21 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!

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.