Hey, everybody, welcome to Linuxcast. I'm your host Matt. I'm Tyler. Steve. And I'm Josh. All right. By the way, I don't know where we'll end up cutting this for editing, because I'm sure that I'll have to put that beginning there in. But it took us at least three tries to get started. So those of you who are watching live, you've had some entertainment. I'm glad for that. I've been trolled again this week. So you're going to have to put up with that. So we'll see how that goes. Anyways, welcome to the Linuxcast. This is the Linux show where we talk about Linux-y things, usually no absolutely no tangents, and no nuggies. Because these fuckers didn't even bring me any.  All right, anyways. You've got to come to Ohio first. McDonald's has delivery. I'm not paying that doordash fee. Especially out here, man.  Anyways, this is going to be a horrible podcast, at least in terms of trolling Matt, because it's going to be, everyone in the chat is going like crazy on it. And then two of my fellow friends here who I thought were my friends, but apparently hate my guts. Anyways, welcome. So today we have a good topic for you. But before we jump into that, we're going to be talking about what we've done this weekend open source, as we usually do. So Tyler, you get to go first. What have you been up to this week? I did a video on Gentoo installing Arch, Gentoo, and then Fedora on the main PC. Then I did a live stream where Josh kindly gave me $100. So I would install OpenMandriva on my machine, which totally didn't go completely oddly weird, where it boots on every other system in my house, but it gives me a black screen on my desktop PC, tried everything. I mean, like different USB ports, different BIOS settings, tried everything, switching up, only using one monitor, two monitors, like I've tried everything. It don't boot on it. So now I did install or download a GNOME ISO for it, because maybe it's SDDM causing an issue. And I'll try that on it, but I also got to keep Fedora installed for a little while, just because I got to do some video editing and recording. And I got to record with Steve here soon. So kind of can't have another broken computer. He's been wanting to record me for two days, and we ain't been able to do it because my computer keep breaking. I mean, I could have done it on Fedora, but I figured I'd have it fixed by now. Nah. Well, I mean, the first time it was with the Wi-Fi, I couldn't figure out how to get the Wi-Fi to work. Turns out you just got to reboot it enough times, and then the Wi-Fi will just work. I don't know why. Thank you, Fedora. But yeah. Oh, buddy, I am so sorry. I am so sorry. Here's your lucky dude. There you go. Good boy. Good boy. So what have you boys come up to this week? All right. Steve, you next. What have you been up to? OK. Where should I start? I have been working with a few friends of mine on learning more about PKG builds, because it turns out that you can run scripts called install scripts dot install scripts via PKG build. I didn't know that. And you can run as many commands as you want within those. Anyway, so besides that, I was learning more batch scripting thanks to my good pal VLK on the server. He's been instrumental in the NVIDIA and Wayland script. We're optimizing it even more now. We're reintroducing the 470XX drivers for not. I wouldn't like to call those drivers legacy, although they are, but they're not old enough to be considered as legacy. There are 600 series and stuff. They're not really legacy. It's just they're old. So we're reintroducing those and no more TKG. I'm just using the ones being maintained on the AUR because they get updated faster than the TKG ones. I've been talking to TKG on the back burner and cleaning up some packages from the packages file in all the ISOs because apparently the latest ISO felt like bloated because too many applications started showing in the app menu. So people want less packages. So I will try to minimize as much as I can because dependencies and we're adding. I'm adding more support for joysticks and joypads and like the PlayStation 5 controller and stuff for gamers who like to use those kind of controllers and for the window managers because guess what? There's a few users out there who install Hyperland on Xero Linux because apparently since you have KDE you can install Hyperland on Xero Linux pretty easily just a couple of packages and you're up and running. So for those people I will be including something called X remap KDE. X remap basically allows you to remap your, if you have key broken keys or you can create override or add more key bindings that don't already exist in the system and it gives you more granularity over your key bindings and shortcuts. And I'm learning more also about global shortcuts because apparently I'm late to the game. I saw a new setting in the KDE settings that I've never seen before since I don't use Wayland all that much. To me it was new but apparently it has existed since 527 for global shortcuts. And to me that meant that the KDE people are taking into consideration the people who keep complaining about keyboard shortcuts not working outside applications and stuff like that. So I'm learning more about that because I'm currently on Wayland and I have been using Wayland for the past three days on KDE. I've been using it for three months on my laptop on Nome but on KDE that's the longest I've been on Wayland and so far, absolutely zero issues. Josh, what you been up to? Well, since I read this comment showing up on Zany's channel here where he challenged me to use either Void Linux or NixOS for a whole year. I've installed Void Linux and I've already fixed three packages and I'm now currently working on getting something submitted upstream to Void Linux to fix all my issues with Void Linux. And you broke Lutris from what I saw? I didn't break Lutris, I broke the PR that I pushed because I didn't amend my last commit. Instead when I pushed the commit it updated not just one package because according to the Git repository you're only supposed to update one package at a time per PR and I turned that PR from one package into 17 packages by accident. Oh boy.  Not yet. Okay, eventually. I closed the PR. All right, so I have been gaming like crazy this week so I've been delving into some retro games. I've been playing some Pokemon. I played some cities. I also got into some regular gaming so a few weeks ago when Cities Skylines 2 came out I bought that and I've been playing that. It's been really good on Linux guys. They're like super stable, like crazy. Way better than the native Linux port was for CS1 just way beyond. So that's been basically what I've been doing and I played some Hearthstone. So I've been gaming when I say I'm not a gamer this last week and a half or so. It's been kind of nuts. I'm gonna, I haven't. Playing some Hearthstone? I might actually need to join you for some Hearthstone, man. You gotta be honest. It's a good game. Anyways, I also, I've been looking into figuring out how to do some retro gaming on the Steam Deck because I've been, I played. I can teach you. I can teach you, come to me, baby. Retro, yeah. I can teach you. See, everyone has a different recommendation over what you should use. So I'm gonna go with several other people. Battlesera. Battlesera for the win. Stop interrupting me, Steve. Retro gaming Battlesera, okay, sorry. All right, let's go ahead and jump into the main topic. So today was a topic that has been a long time coming because Josh didn't show up for the first week and then we took a wake off and did something else. Anyways, we're gonna be talking about NixOS and it's seeing us how it's Josh's topic. Josh, take us away. Oh, yeah. Steve was, everybody has impressed with NixOS as everybody else's in the world. My question is, is NixOS actually over-hyped? Okay, do I have to go first? I'll go first. Okay, so I don't think that it, NixOS is kind of like ArchLink was when ArchLink was hard to install. People like to talk about it because it's different. You know what I mean? It's something that gets installed in the regular way now. Like it didn't used to be but now you can just use Calamari's installer but because it does so many things in a different way people find that impressive about themselves. They manage their entire distro through a configuration file that there's not any other distribution out there that really does it that way. Well, I mean probably Geeks and, right? Does Geeks do it through a config file? Geeks and Nix are really about the only ones that have declarative configuration unless you wanna talk about like the really fancy ansible scripts. Okay, so I mean there's not many distributions out there that are like that. So because it's so different and does things in such a different way, I think people like to talk about it and think of themselves as doing something different than everybody who's just using a regular Linux distribution. I think that's the reason why people talk about it so much. I've been using it now on hardware for well over a month and I have to say I'm not gonna give away my review or anything but it's fine. It's fine.  Like total garbage but other than that it's fine. But I mean for NixOS and Nix has a package manager, I think they are overhyped in the sense that they are. A lot of people say that you should just start using them and it's great for any use case and it probably does work for any use case. Cause I mean as long as you can get a working Nix system and manage it, it's not really that hard to do. The only problem is it's not really mint for a lot of use cases. Like a lot of people aren't actually developing software with their system and that's where NixOS shines. Like also a lot of people don't really have multiple machines. So there's like a lot of people that could use Nix but probably don't really have a lot of good benefits for them like or benefits for them. They just won't get a lot of the really nice things about Nix that they use a lot. Like they'll just be using it for the sake of using it. Which is not a bad idea.  If you know how to use Nix in and out that that can get you a job. So that is something that you do have to give to Nix.  I think everyone could like just getting a job from knowing their favorite Linux distro. That's pretty cool. So the only reason NixOS gets bad rap sometimes is because users are trying to use it for the wrong purpose. They wanna use it as a regular desktop, I mean a regular distro for daily use. When it's primary target is not those kind of people. I mean, it can be used for daily use, but just not. It can be by knowledgeable people, not by some John Doe who just came from Mac or Windows. It's got a learning curve. It's just like you said, like Arch in the early days where it required a lot of learning curve to get it installed in the first place. But NixOS still has that because it still didn't flutter from its philosophy of being a more advanced kind of distro. Whereas Arch on the other hand, they're doing their best to make it easier and easier and easier. And now with Arch install, it just takes minutes instead of having to read the wiki over and over and over again to get it through your skull how to configure Wi-Fi, so. Well, I think NixOS is getting better there. Their documentation is continuously getting better. Well, also they have a Calamari's installer version, which makes it easier to install. Well, I mean, yeah, I mean, for NixOS, you can't just, I mean, the main one that they recommend is their one that just comes with GNOME.  So like for most people, that's fine too. Well, I mean, they offer both, but their recommended one is GNOME. So I think that's the one that they actually like. And I, listen, to be honest, if a distro wants to position itself as a stable or not stable as a usable distro, GNOME is the desktop environment to ship with. Like Workstation. And I get why a lot of distros ship their flagship with GNOME, it's because GNOME is just much easier to understand out of the box versus KDE where you have to hunt for the settings and. Well, I think it's just more stable. That's the main one. More stable, yeah. And I'm using, listen, I've been using it for the past three, four months on my laptop. And I am more productive on GNOME because GNOME stays out of my way. Let's pull this back away from the whole GNOME versus KDE stuff, because that's not the topic. I know it's not the topic. I'm just saying that the NixOS choosing GNOME is a good idea as their flagship. Every distro chooses GNOME, basically. So I have thoughts about NixOS as well. And I just figured I'd raise up my thoughts last and let you guys talk first, because I actually do see a legitimate use case for NixOS. And I can also see where it does deserve some of the praise that it does get. Because the big benefit of NixOS is the declarative configuration. And okay, so what I've got right here is my NixOS configuration. This is an Etsy slash NixOS. This is my configuration.Nix. This is off of a freshly installed virtual machine using just normal BIOS boot. So you can see where I'm declaring my bootloader configurations. I'm declaring my time zone, my key map, basically all the things that you would typically set yourself. But the big benefit of this is that, let's see if I can find it, I can declare users right here, along with user defined packages in just this one file. And I can already, and I can configure groups, I can configure permissions and everything with just a single file. That is the big benefit to NixOS. Now, this means that NixOS as a whole can actually have a very specific use case in the cloud market itself. Not necessarily like the user desktop market, but that cloud managed for any cloud system administrators that they're messing around with Docker containers and such like that, you can declare Docker containers in the Nix configuration as well. So if you're not wanting to invest in Ansible knowledge, but you can use NixOS as well. In fact, you can actually use Ansible to deploy NixOS if you really want. But it gives you, and what this configuration file allows is a completely reproducible system. Now, where NixOS falls short is of course documentation. The NixOS user manual for like getting the system installed, fantastic, until you get to the very bottom of the manual, where it basically tells you that at this point, we don't know where to go from here. So if you want to figure out how to do something on NixOS, you need to look at this file over here and basically reverse engineer the package and figure it out for yourself. The creators of NixOS do that in the documentation. It basically used to say that. I don't know if it still says it anymore, but anyways, that's where it falls short. And then the community comes in, they come out with projects such as Flakes and Home Manager and Flakes, nobody can really explain them, not properly, but think of Flakes more similar to like a very specified version of Nix's variant of the AUR and that sort of explains Flakes to you. For Home Manager, it's basically configuration.Nix for a user profile. It's really just a way to manage the home directory. You can package up like all of your music files, your video files, your documents folder and everything right there. And it basically expands the reproducibility from the core system down to user profile at the same time. So yes, Steve, you can make a zero Linux Nix edition if you really want. Way to go to, way to go to stab me in the heart. You're welcome. Well, I think NixOS is definitely going to be something that like lives on for quite a while because it is one of those things where the people who do really use it day in and day out will love it like it's kind of like the Void gang, you know? Like Void is not a, yeah, Void's not popular, but like the people who are in it are in literally a gang. Like they die for each other. Like if you start an argument as one Void user, there will be six others that will die on that hill with you. Like they will battle to the end with you. Void has a very strong tight knit community and so does Nix. Like I think that's also a good argument for getting into Nix, even though the documentation may be crap, there is plenty of Nix users that I've seen personally offer their day to me to help me do something with Nix or help me use Nix, install it. Like there's plenty of people that will help you. The package manager is kind of useful. I know you can use it anywhere and everywhere. That's what Valve is considering adding in the future releases of Steam OS or whatever if it ever comes out. But the package manager, at first, like I was telling Tyler earlier before we came on, at first I couldn't understand what the heck it was doing, why it was pulling like a million files, but after he explained it to me, I see a very good use for it, especially for people on a connection like mine. It's very useful to use a distro that has a package manager that does things the way Nix does. It pulls smaller files and it puts them in a tempfs and then moves them to their correct location. And the ability to have multiple versions of a package is very useful, especially for developers, as Tyler was telling me. And I could see that, especially for me who maintains packages for XeroLinux. It allows me to see if I should hold back a package or not. We're trying to move away from holding back packages, but if we have to, we have a place to put them and this type of methodology or philosophy would work better. So I'm starting to, and you can sorta kinda do that with Python these days, but Dix does it way better. So it's way beneficial, more beneficial to use a distro like that. I know this is a benefit, but this is as far as I can talk about Nix because it booked itself in my VM and then I had to remove it. Yeah, so just for the chat here, what I'm gonna do is I'm gonna post a link to a Git repository. This is a Nix config that I came up with several months ago, but when I attempted to daily drive NixOS myself, I did drop it. But I am curious if there's a NixOS user that might be listening to this podcast. You know, just send an email into the show with a link to your Nix configuration because I'm personally actually kind of curious on what other people are doing with this. Yeah, that would be really cool if people started sharing their NixOS configs. Here's my question for you guys. We have two or three different kind of ways that they're thinking about doing immutable distros these days. So we have the silver blue kind of way of doing things. You have the Nix way of doing things, you know, and then we have the kind of the blended ways of doing things kind of do a bit of both. Do you guys think that one way is better than the other? So this is where I come in and say that NixOS shouldn't even be included in that conversation because the only thing immutable about Nix is that yes, the root file system is read only. That's for good reason because, you know, you shouldn't be mess around the root file system. You should be managing the configuration file. But that doesn't mean that NixOS is immutable because you can totally change it if you really want. Well, okay, so I understand what you're coming from there, Josh, but the developers themselves call it an immutable distro. I'm sure that they call it. I'm just saying that they shouldn't be included in that conversation. Okay, let's include them in the conversation anyways, just for shits and giggles. Let's just say that the developers know what they're talking about and that they think that it's an immutable distro. Do you think that there's one way of doing this over the other that is better? Because guys, Silverblue is fairly new. Obviously, the open Suiza, Micro-West or whatever they call it, Aeon or whatever it's called now is fairly new. You've got all the new kids on the blocks, like Blend and Vanilla or whatever, all the new immutable distros that's been around for just a couple of years. But NixOS has been around for 20 years. It's been around for a very long time. So it feels like if this was the way that Linux was going to go that more distros would be emulating it. Well, I don't know. Because even if we don't go, like I know a lot of people do like immutable distros and there's plenty of people that aren't using them but are interested in them. But there's also a lot of people that just don't want to use an immutable distro. So to me, I think it really doesn't matter which way the majority of Linux systems go because there will always be choice between the two. I think the important part is that we have stuff like Nix or these kind of like universal package managers available that are actually like continuously developed and improved upon. So you can have any type of Linux system that you want whether it be immutable or otherwise and still have the access to the same packages on all of them. I think that the more idea between, let's ignore the technicalities behind the how the file systems work and the right ability and stuff. I know technically that's what immutable is all about but I think more what people think about when they think of immutable distros at least I do is the ability to move forward and back. So like in Nix you have the generations, right? So every time you run, switch, you go to forward and back generations and it allows you to take your system either towards which you're the president or back towards, let's say you install GNOME first and then KDE could go back to just to GNOME, same thing like that. And then you can do something similar but it's done completely differently on like silver blue, silver blue and all the others, they use a combination of like ButterFS snapshots and stuff like that in order to get that stuff done whereas NixOS doesn't use ButterFS at all. They do the generations in a completely different way and it's all based on that configuration file, right? So it just feels like they're doing things completely different but you guys said something earlier that just kind of just to bring it back to the main conversation. I think it was you Tyler said something about like fantastic for you and Steve, this is fantastic for developers, right? And over the course of the time that I've been using it the more I realized that this really is the distribution that would be great for developers but it's not the only one, right? Obviously developers can use whatever distribution they want but they have so many tools, it feels like they've developed this for developers and because they've created a way to create virtual environments that run their own client, their own shell and everything together so they can basically have a whole Nix shell right there so you can use it and keep things contained that way. Obviously they have the generations and stuff like that and you have all this stuff that is very focused on developing applications and creating containers and stuff like that. So it feels like it was very much designed and developed for people who are developing software which leads me to the question, why do you guys think so many normies are using it? Because there are a lot of people especially this is going on to people in my Discord who use it who are definitely not developers. The same reason so many people use Arch Linux because content creators, yeah, because content creators have praised NixOS. Yeah. That's the wrong thing that's happening. This is something wrong that's happening in the content creation world where a lot of them, they say they keep portraying NixOS in the wrong way. Well, I don't even know that it's that because I think it's a lot of, so because of the lack of good documentation and people being very familiar with their being really good tutorials and that type of content on YouTube, Nix content, if you do a tutorial or that kind of stuff about Nix, it does extraordinarily well on YouTube. So I think a lot of people are getting into Nix knowing that it's something, like as long as they can get into it and understand it, there's multiple different avenues for them to benefit from that knowledge. And I'm not saying like that's a bad thing at all. I think that's a good thing. But I think that's what causes a lot of people to start using Nix who wouldn't otherwise even be interested in any of the benefits that Nix offers. But I mean, still, nevertheless, those people who wouldn't end up getting into development related stuff, most likely when Nix are going to be exposed to developers. So I don't know, Nix could be a really good way of onboarding young developers into Linux and everything else. That was awesome of you, Ty, because I'm not used to listening to you saying words of wisdom. There you go. But everything you said is true. Because of the documentation is lacking, sometimes the videos kind of are used kind of in a way to complete or reorganize that documentation because the users, the content creators making the videos are helping NixOS documentation get better. Yeah, that is true. But like Alex said in the chat, Mike Kuya, Alex said in the chat, mostly the top reason why people, normies try to use Nix is to belong because they wanted this feeling of belonging to the elite. It's kind of like using NixOS, it's kind of like, hey, I'm part of the elite. Yeah, I mean, there is that aspect, but there is that aspect with every distro. This is one of the highest aspects these days. Well, I don't know, because a lot of, I mean, the belonging thing is true, but I think with NixOS, I mean, as we all know, NixOS has a very tight-knit community and it is a pretty, it's a really good group to belong to. It doesn't even come from an elite thing. The feeling of belonging to any group is nice. Like, I chose ARCH for XeroLinux because I wanted to feel in a way, not directly, indirectly, I wanted to feel like I was part of the elite. I'm using something that is not used by the masses because of its complexity. And when I found that Eric Dubois made it so simple using his ALCI script, I was like, it was presented to be on a silver platter, but I quickly found out that it wasn't as easy as it was portrayed to be. Well, that's the problem with wanting to feel superior than everybody with any Linux distro. Someone's going to script all of the complex things and if it hasn't already been done in two months. Yeah, it will make it look something that appear like something that is not. Yeah, I mean, that's the thing. Like, right now, the reason that there are enterprise jobs for NixOS is the actual, like, you know, very talented people already there can't get past the documentation and also have other things to do where they literally can't put in hours trying to figure out the right method to get something to work or like they don't have time for learning and like filling in holes in the documentation, stuff like that. So if you're already familiar with Nix, you already know how to do stuff, then that can benefit a company. So, but again, it's not like there's a lot of companies hiring for NixOS developers, but. It just feels so weird that a distribution that is solely managed through a terminal and or a configuration file, I suppose you could use as a regular text editor, but whatever, you still have to run commands in the terminal order to get that to go forth. So it feels weird that so many normal people who would normally be on the side of doing everything in a GUI are looking towards NixOS to be their distribution. And it makes me wonder, besides the whole being part of the club thing, what features they find once they're there that keep them there? Cause usually when like every Linux nerd who decides that they're going to invest themselves in Linux at one point or another, installs Gentoo, right? But only a select few actually find Gentoo useful and good and awesome, you know? And they continued using it, right? I'm sorry. No, there's nothing wrong with it. Use flags on Gentoo is probably one of those is one of those key Linux features that just isn't available on the vast majority of Linux distros out there and it makes it awesome, right? There's a reason why, like someone who says I use Gentoo, I can understand why that person uses Gentoo because of use flags and the ability to fully control all of your packages and all that stuff, right? When someone says, I use NixOS unless they're a developer, I have to question, what do you find good about it, right? What has drawn, not really what drew you there because maybe you're there because your friends are all there and it's whatever, but what keeps you there? Could you hold on a second Steve? Usually when someone gets on a distribution, the reason why they stay is because they've found features that they enjoy. Like what part of the NixOS experience for the normal people? I'll tell you one major one. One of my friends told me that a while ago like you said, it's the total control over the system, kind of like Gentoo and the fact that they can, it ties in with DT's reason for using app images is like they can keep multiple versions of any application that they are using. In case they wanna go back to a version because of one feature works on the older version and there's another feature that doesn't exist in the older version exists on the newer version, they keep a switching back and forth. Is that a normal person in the new space? That's one of the reasons that's what one friend of mine told me. Other than that, I don't know. I think a big aspect that draws people there and keeps them there is if you wanna do something different that a lot of people aren't doing, Nix covers that, then there's also the aspect of, well, okay, so I wanna do something custom. I wanna make it cool. The one worry that a lot of people have is, I'm gonna have to do this over and over again and I'm not really interested in doing that. So Nix covers you there. You set up one configuration file, you can do something custom and that's all you need and that's it. So for someone who wants to do something cool, they've got a free week to mess around with their computer, NixOS is a really good way of doing something different, cool and interesting and once you're done with that configuration, you're done. You don't have to go back. You're not gonna get an update that borks it. Theoretically, should, never happen. Nothing's perfect. It's actually a lot harder to break NixOS than it is to even break Silver Blue. I've tried. The only thing that I've found that reliably breaks NixOS is corrupting the file's list of itself. Well, yeah, that's a good way of going about breaking anything. Yeah, but anyways, so for clarification, by the way for the chat, I am actually a small business owner and because I said owner and not worker, I have a very specific use case for both using NixOS and not using NixOS because as a result, because my place of business is many miles away from my house because I don't work from home, I have a computer at my business. I also have a computer here at my home. A big benefit that I can personally see with NixOS is having the same computer in both locations because I can sync that Nix configuration between the two systems and have exactly the same system. Of course, I can't use NixOS because some of the applications that I use at work just don't work with NixOS because NixOS is not Linux file system compliant as in they put their root directories in different places than what other distros do. And of course that breaks many business related applications or enterprise related applications. So I can't use NixOS, but if those applications worked, I could actually very well see myself be using NixOS. All right, before we jump into the thing is let's talk a little bit about the package manager because that is one of the things that people kind of tout, not necessarily just because it's on NixOS itself, but because it's transportable between different distros. Like the idea of having one package manager that you can have everywhere kind of like Snap or FlatPacks, but with a much broader selection of packages and the ability to run things that aren't containerized in Snaps or FlatPacks. So a lot of people think that the Nix package manager is like, oh, this thing is really, really awesome. I've used it and it pisses me off a lot because just like with NixOS, they do things differently in ways that really make it hard for the packages that you install to interact with packages are installed normally. So because they're installed in a weird place, they set their own paths and stuff. It makes it hard to interact with the rest of the system. So that always bugged me quite a bit, but the idea behind it is intriguing at least. Josh, you had something to say? Yeah, so the Nix package manager, just to let everybody know, Nix is actually a source-based distribution, like actually source-based distribution, but they do it very differently from like Gen2 because you're not always gonna be compiling things from the source on your system. It's just if you're the first person to install the package as it's been declared, yes, you will be compiling it. So every now and then you might call an update or change to your configuration and you might be wondering why your system, why your command is taking three hours because it decided to compile Chromium or something. But anyways, what they do is when a package gets compiled, it gets pushed into a public cache. And then at that point, it's basically just like a pseudo binary distribution back to you anyway. So if you're the first person to install something, you're gonna be compiling. If you're the second person to be installing, that means that somebody already compiled it for you. You can give them a thanks. But the biggest benefit for the package manager is that they've got over 80,000 applications you can install through it. And the fact that you can install on other distros is not necessarily unique to Nix itself because you can install package managers on other distributions. The difference is that the Nix package manager also can recognize if it's running as the system or if it's running as a user. And it won't board your root file system like others will. Instead, what it'll just be doing is just dropping all of its files into a brand new folder that it places in root file system called slash Nix. Yeah, so this is one thing that I did test in NixOS. And the idea that it's transportable and you can put it anywhere, and you said 80,000 packages, well, the AUR has 86,000 packages, but AUR cannot become- And it's still an impressive number. So, but again, like I said earlier, the fact that you can install multiple versions of an application through that package manager is awesome. And for connections like mine, I see a benefit, like Tyler made me aware earlier, that it saves a little bit on a bandwidth and saves on other stuff. So I was wondering why it was pulling all these thousands of files, but it does it in a very good fashion and putting them in a tempFS and then moving the thing. It's a very robust package manager. And speaking of other package manager being available to other distros, I found out the other day that Pac-Man is available on Debian and Fedora and whatever, and APT is available on Arch and Fedora and- I mean, you can put any package manager on whatever distro you want. I mean, that's been- Yeah, I didn't know that for a very long time. I just figured that out. So I'm late to the game. So Nick's OS package manager is pretty neat. And I did try it on the Steam Deck briefly because Chris Tytus recommended it in one of his guides. It just works. It just works. And I never had any issues installing packages and dependencies and whatnot, unlike Arch. Oh, the dependency hell on Arch. I love that someone in chat is talking about APT on Fedora. I mean, like, there are some package managers that are meant to go other places and then there are some that are not. And that's a good example. That and APT-RPM does exist, by the way. Theoretically, you can install anything on any distro that you want if you're willing to put the work in it. Doesn't mean that you should. Exactly. Exactly. It doesn't mean that you should, but you can. But you guys definitely give DNF on opens to the try. It's actually pretty awesome. But anyways, let's go ahead and move on to the last section, unless you guys have anything else to say about NixOS right now. Anything going on? This is a great question. I'm not really. All right, so I have been ganged up upon. I have been bullied. I have been trolled. Everyone just piled on and forced me to change the last section of the show. And we're no longer calling them thingies of the week. They are now and forever more called. God help me. Nuggets of the week. Sucks it. Uh-oh. I'll eat a nugget of that one. I already ate all my things. I didn't get any. Anyways, so this is the thing where we talk about the things that are interesting. So Tyler, God damn it, you're Nugget of the week. Yes. My Nugget of the week is actually quite simple. I think I've probably talked about it before, but I'm not too sure. I may not have. And if I haven't, I'm so sorry y'all. It's Eddie. If you're ever needing to install a deb package, Eddie is a great installer. It comes from elementary OS. But I mean, you can obviously install it anywhere you need to install a deb. It's great. I really do love it. It's a program that you probably don't need. Well, especially if you know what you're doing, you definitely don't need it. But it is a very good program. It looks good. It's fast. It does exactly what you expect it to. There's no weird settings that you need to mess with. Like it's great. So that's mine. Yeah, my Nugget of the week. I forgot to push it to the repo, but I mentioned it earlier. It's CasaOS. CasaOS basically is a container manager, kind of like Portainer, but a much simpler version of that. Even my grandma can do it. It's just one command, one terminal bash command. You run in terminal. That's it. You run this command. So you install those packages. You run the command. You're up and running. And if you want to start installing containers, it's an app manager. It's kind of like a NAS OS.  Anyway, you run that. You access it via your IP address or local host or whatever you use to remap your local host to. I use zero-volt.local. So basically, and my problem with it is it doesn't create its own self-signed certificate and thus you will end up with always having this pop-up telling you an insecure connection, insecure connection depends on how you set up your browser. Anyway, but since it's offline for me, I don't care. I just access it and then turn off the computer, but it's so simple. And they allow you to add the, for example, there's the Linux server. They have over 10,000 docker containers that you can select from. So you can just add that list to the application list and then your list will be populated, updated.  And then when you wanna use it, it opens in a new tab and you're up and running. You don't have to think about anything complex at all. You don't have to think about IPs or configurations or whatever, but this one removes the need to use NextCloud, at least if you're using it just locally in your home local network, because it automatically shares all the drives, all the folders, everything. There is a big, big problem for me. It even shares the root drive and your root file system. I talked to the developers and they're gonna send me a configuration script to hide the root file system because that's not what I wanna share or not what I wanna be clicking on by mistake. But other than that, and it's a work in progress. It's an open source project with a big community behind it and they're very friendly on the server. Not very active, but very friendly when they are. And I recommend it. I really, really highly recommend it if you wanna, if you have a computer that you use as a storage computer, like a NAS, but you wanna have a desktop as well to play around with from time to time and just, and you can access. There is something I asked the developers, I haven't received a reply yet. We needed a phone app for it. There isn't no phone app. The only reply from one user I got, just add it to home, open it in your browser and add it to home screen. Use a web app, create a web app out of it. Josh, your Nuggy of the Week place. My Nuggy of the Week is Tellin' It. The old-fashioned command that we use since before the days of SSH. It's a remote control protocol, completely not encrypted, but there is a link that I'm gonna post here in the YouTube chat. If you're on that command, you can use that to watch the very first Star Wars movie in your terminal. Archolenex had that in the very first releases of Archolenex. But anyways, I've had to use Tellin' It recently. You know, talking to old classic servers that don't have SSH installed, but for some reason, Tellin' It ports open. So that was fun and interesting. Thanks, Chinese machines, thanks. Like recently, and I finished watching a video where he was reintroducing us to a dial-up internet. Okay. That's actually a wonderful series. Yeah. Very interesting. I missed the handshake. But anyways, my Nuggy of the Week, God, I hate that name, is, I'm gonna go ahead and choose City Skylines 2. It is, so if you ever played City Skylines 1, it's that but better. It's obviously the sequel. It plays wonderfully on Linux. There's a few general, like graphics, like artifacts that go on every like rare once in a while. But other than that, it plays as well as you could expect on any operating system. And if you're into city builders, it's the best one by far. Like it's so, so good. And it's so much better than the first one even because they've integrated so many of the mod ideas that burn City Skylines 1 right into the game. So they've done some things with traffic manager and stuff like that and the engineering stuff. Anyways, just, it's a really, really, really good game if you're into city's buildings. If you're not into city building games, then maybe you won't like it. But it's like Sim City from back in the day, but on steroids. It's a fantastic game. All right. Anyway, so that's it for this episode of the Linuxcast. Before we go, we should talk about the contact information. If you wanna get in contact with us, you can do so in any number of ways. The best way is to head on over to the website, which I swear is going to get updated again eventually. I'm just working on some stuff in the background with it. So it does have most of the previous episodes all the way back to season one. You can also find the blog posts that I've done so far up there as well. Josh, you can find him on his website, 10lyj.com slash contact, I remembered. Tyler has a YouTube channel where he's actually been posting videos. It's really weird. He's been posting more videos than I have. You can head on over there, check him out, make sure you subscribe. YouTube.com slash Zanio G is where you'll find him. Steve is on Fosodon or Mastodon at Fosodon.org slash at zero Linux zero with an X. And you can find all this stuff if you wanna find all the rest of their links to their discords and all of their websites and stuff like that. You can find that at thelinxcast.org slash contact. You can follow me obviously at the Linuxcast on Mastodon as well. And if you wanna support me, you can do so at patreon.com slash linxcast or head on over to the store where you'll find all sorts of awesome merchandise sets that shop at thelinxcast.org. So before we jump out, we should take a moment to thank my current patrons. Thanks to everybody who does support me on Patreon. You guys are all awesome. Thank you so very, very much for that. Without you, the channel just won't be anywhere near where it is right now. And the podcast probably wouldn't still be going, just to be honest with you. Half the time I just, other people really want the podcast, but I better do one.  So motivation, it's awesome. Anyways, patreon.com slash linxcast. We record this live every Saturday at three o'clock PM Eastern time and we switch around topics. And I don't know, I wrote down who's topic is next and forgot what I forgot. And I think it's Steve's topic. It's gonna be awesome. I'm sure. Anyways, make sure you turn in tune in next Saturday. If you wanna watch this live, if not, we'll have it edited and posted on the channel shortly afterwards. So thanks to everybody for watching. We'll see you next time. Bye.


Hi guys, what is up? Welcome to my channel.  In all seriousness, in today's video, I am going to be doing a luxury makeup haul. I do have a number of more high-end products in here as well, but for the most part, there is a lot of luxury makeup items. On my channel here, I love to keep it well-rounded and review luxury high-end and drugstore makeup products. So today we're gonna keep it a little bit more precise. So if you're interested in seeing what I picked up, then just keep watching. I may or may not have mentioned in the past couple videos that Tom Ford has stolen my heart. I'm very upset about it. I resisted Tom Ford for a very long time. As you guys know, I did go to a cosmetic company store and they were selling Tom Ford for like 50% off. And yes, I know some of those items are like from previous collections or they may be old, but I'm willing to take the risk honestly for half the price, whatever. But seriously, shop there at your own risk. But here is what I picked up from there. So I picked up some of this stuff at the regular Tom Ford store for full price, and then I picked up some for not full price. So the first thing that I picked up is the illuminating primer. I've only had the opportunity to use this once and I really like it. I've been really into glowy bases, especially since I am a dry gal. And this is really beautiful on the skin. It's not too overpowering and not too illuminating, but it is still beautiful and it's very smooth on the skin. So thus far I really like this. This I got at the cosmetic company store. I also picked up the sheer cheek duo in the shade Lavender Lear. You can still get this on Beautylish and these are so beautiful. They just make your cheek look so healthy when you wear them. They do have decent amounts of pigmentation, not crazy, but a good amount. And when you put it on, it just has this sheen that just makes you look healthy and glowy, but it's not super glowy where you have a highlighted cheek like I do today. This is just a beautiful blush duo. Again, I got this at the cosmetic company store. And then I picked up the sheer highlighting duo in the shade Reflex Gel. You can still get this in the regular Tom Ford line. This is beautiful. This was in my monthly favorites. It's what I'm wearing at the tops of my cheeks right now. Honestly, this just goes on the cheek so smooth. I've been loving this. This is a very, very exceptionally good highlighting formula. It's really good. Yes, really, really good. I also picked up the cream color for eyes in the shade Sphinx. I wasn't going to get it. I didn't want to get it, but it is such a beautiful duo chrome. I haven't touched this yet. So this is like a gold with a pink duo chrome. It's super, super unique. Let me swatch it for you guys so you can see how pretty this is. This is going to look just so beautiful all over the eyes. It's super unique. Everything from Tom Ford just looks sophisticated on you and I cannot wait to test this out. This is so beautiful. And here's one I'm very embarrassed about. I used to be super against Tom Ford quads. But here we are. I'm embarrassed. I might have picked up a couple more than I'm not featuring. Let's get into these guys. So the first couple you did see me do a whole video on because these are Tom Ford's newest ones. So we have body heat here, which a lot of you guys seem very interested in. Honestly, of the Tom Ford quads, this really isn't my favorite. I do think it's nice, but I just think there's prettier ones in the line. But this one is still really nice. And then I also have double indemnity, which is like the perfect smoky eye palette. I have been loving this. This is so beautiful. You should check out my video where I do tutorials using both of these. The smoky eye created with this one was insane. All right, here's where I get embarrassing because I have more. I picked up African violet. This one, I mean, the colors just spoke to me. This is like bright for Tom Ford and this purple is amazing. This whole quad together is amazing. I like that one. That one is probably like my favorite. And then we have nude dip. Again, another one that I could argue is my favorite. It's just so simple. It does not look like anything unique in the quad itself. But on the eyes, it is so pretty. Super like platinum, glowy, natural, sophisticated. And then the last one that I have is the classic honeymoon. A lot of people love honeymoon. It's really, really gorgeous. So I do need to play with those a lot more because, but yeah, I'm a Tom Ford fan. Okay, moving on. I did purchase this a while ago and I did mention to some of you guys, this is the Chanel lace beiges eyeshadow palette. I just haven't really been into Chanel makeup and I wanted to try something and these are really pretty. These are really great everyday neutral colors and I love a good neutral. I love a good color too, but I just think that these are so functional and appropriate for daytime. And this is a really, really nice palette. I will be honest, I haven't used this as much as I would like before I say too much about it. I just kind of picked a couple colors and I've used them a few times, but I haven't really dove in and thought too much about the product. So I can't say too much on it. It is really nice and I don't really own anything from Chanel besides a couple of lipsticks, honestly. So maybe I need to build on my Chanel collection a little bit more. And then Charlotte Tilbury. I did pick up a couple eyes to mesmerize. I've been liking these. These are very soft on the eye. They don't really go on as crazy as they look. So the first one that I got is Verushka, which is kind of like a gun-medley green-grey color. Very unique, very beautiful for an evening out. It does kind of sheer out so it's not as intimidating as it looks, but this one is really pretty. It's almost like an army green. I don't know, it's a very, very unique color and I really like that formula from her. I broke down and got the rose gold kind of melted a little bit to the side, but I love a good rose gold and this is just absolutely stunning. So I am so happy that I picked this one up. And you guys saw these. I did a review on these, but I did get three Gucci lipsticks. I guess Gucci has kind of redone their makeup brands and they came out with so many different lipsticks. And I mean this packaging though. I don't want to talk too much about these because I do have a video on these, but just to show you the colors that I picked up, we have No More Orgids, which if you watch my video you will know this is not as scary as it looks. This is a balm. And then we have Diana Amber, which again, not as scary as it looks. This is a sheer lip color. And then my favorite, the Painted Veil, which is like the perfect everyday lip. So really have been liking this one in particular. This is the best formula if you ask me. I don't really think the balm is worth the money and then the sheer one is nice. I think it's going to be really good for the summer. Next up from Bobby Brown, I picked up a couple of Crushed Liquid Lips. They had a collaboration with two influencers. I didn't know who the influencers were, but I thought these just looked really pretty. They must have had really good marketing or something, but I really liked these colors because they are brown-y nudes, and I love a good brown nude. And I just ended up picking up both because the packaging of these are stunning. The shades themselves are stunning. I haven't tried them on yet. These are like two of my newest pickups. But this one is West Coast Bay, which is the deeper shade, kind of a deeper, almost grey-y brown. Really pretty. This is going to be really pretty in the fall or, I mean, you can wear it whenever. And then East Coast Slay. Now the influencer with the darker skin tone was wearing this, and she looked stunning in this. I was obsessed with how it looked on her. Obviously we have very different complexions, but I want it to look like that on me. It's not going to, but I want it to. But yeah, these just look absolutely beautiful. So I haven't tried these yet, but wow. And then from Nars, I talked about the Suede palette, which I've been loving, and I broke down and got quartz slowly, but surely picking them all up. I just think this is a beautiful jewel-toned palette. They are so pretty. When you swatch this, this is actually like a very unique palette. I don't think it's the most appealing at first glance, but when I kind of really studied it more, I was like, this is really pretty. And I really like the size of the compacts. I just think they're super cute. And I do really like Nars. Even though I've been getting mad at Nars lately, I do really like that. Originally, I wasn't going to pick this up. Somebody that I love to watch on YouTube here is Ashley Clady, and she, wow, I talked about this palette. I wanted it so bad. Then I got over it, and then here I am again. This is the One Palette by Lawless. It is a clean beauty brand. I really should do a video on clean, cool, tea-free makeup. I mean, I like all makeup, but I do think it is good to do your part for the environment, I suppose. And this is just like the perfect palette. This is like the basics palette. Everything you need. You have pinks. You have worms. You have neutrals. You have things for smoky eyes. You have different mixes of textures. I haven't put this on my eyes yet. This, I kind of picked up on a whim. Kind of regretting it, but also not. So I will update you guys on my thoughts on this, but yeah, this is just a great everyday palette. I feel like this color story so many of you are going to love. So I haven't heard too much about this brand, but I am very curious about it. So, experimental purposes. Next, I did end up picking up the Huda Beauty tan tour. I got mine in the shade Fair. These seem to run pretty dark. I know it does blend out, but I was very intimidated. So I got the Fair, and I haven't tried it yet. I've only swatched it, so I can't speak on that. But it's kind of hard to screw back on. And I don't know. I'll just have to keep you guys updated. I like Huda, so yeah. Also, I've picked these up at two different Sephora's because I can't stop staring at them. Are the Cover FX monochromatic blush duo. I do have Mojave mauve, which is a more pinky one. I don't know if I showed that in a haul or not. I don't think I did. But I just picked that one up. And then I picked up this one, Warm Honey. I actually wore Warm Honey today. Not what I'm wearing now, but earlier today. And it's really pretty for medium skin tones. I liked it on myself, too. But this is great for medium skin tones or deeper skin tones because it's quite pigmented. But it really did add a warm flush to my face. That was super pretty. So I really like that. And then this one I haven't tried yet. But this is gorgeous. I think this one is my favorite. This is Soft Peach. And this is more friendly towards my skin tone than the Warm Honey. And it is just so stunning. And I love this product. I think these are great cover effects. Did a great job with these. So since we're on the topic of me just spending a ton of money, yesterday I went into Ulta. And the Becca and Chloe collaboration are on sale for 40% off. And I love Becca's lipstick formula. It's so good. And I really did like the lipsticks that came in that collection, but I didn't pick them up at the time because the lipsticks are pricey at full price. And the colors weren't super unique. But since they were 40% off, I do really like the colors. So I picked up three. So the first one that I have here is Hot Tamale, which is kind of like a hot orange red. I wore this today. So pretty.  It has my name written all over it. It basically should just be called Morgan. And Cupid's Kiss, which is a little bit deeper, but these are beautiful lipsticks. I mean, the colors are so nice. And again, like I said, I've been loving this formula as well. So these were 40% off. I couldn't say no. The other one was just like kind of a regular red. That one didn't speak to me at all. I didn't, but the other one's really nice. And then I did pick these up a while ago during the Sephora V.I.B sale, but I don't think I mentioned these to you guys. I picked up the Nude Sticks Nudeys Bloom Blushes. So some of you guys are asking me about these. I really do like them. They are a dewy version of the regular nude sticks kind of colors. And I picked up this one is Sweet Peach right here, which is a light pinky peach color. And then this one is Cherry Blossom Fabe, which is much more like bubblegum pinky. I do really like these, and I like the fresh finish that they gave on my skin. But the one thing that I do not like about these is I feel like my face is sticky. Like when I put them on, my cheeks stick to my hands. So it kind of settles throughout the day, so it's not as sticky. I wish it dried down a little bit more, but I do actually like these. They blend out nice. You do have to give a little bit of extra work, but it just looks so pretty on the skin that I do actually like these, but they're not perfect. They are not. And then I picked up the Milk Makeup Sunshine Skin Tint. I really like milk products, and I wanted to try this since summer is on its way. I've used this once, and I really like it. It's not long-wearing at all, but dang, it makes me do-wee. Like, do-wee. This obviously doesn't provide a ton of coverage. It's a skintint, but I've never owned a skintint before, and I really like this. It's different, but I really like it. It's nice. Also, Kaja came out with some new Bento Bouncy Matte and Shimmer Eyeshadow Trios. These little cute things, let me show you. I picked up all the colors that they came out with. I originally wasn't going to get them at all, but then I was like, but I love them. And I couldn't decide which ones I wanted, so why not get them all? So there will be a review up on these if it's not already up. But I don't want to talk about them too much because I'm going to review them. But Chocolate Dahlia is more like neutral. I'm not even going to show you, okay? Because you'll have to check out my review. Well, Chocolate Dahlia, we have Hella Azalea, which is like more pinky, and we have Glowing Guava. I really like this one. This is like rosier. And then Poppy Champagne, which this one is brighter. Actually, I need to be reminded of what this looks like. So it's really bright on the side. Look how cute these are. These are amazing. And these have matte eyeshadows now. So you can create a whole look. These were definitely not something that I needed, but I needed it. Oh, I forgot to call things. Okay, so I ordered these off of Muse Beauty Pro. They had a Memorial Day sale. It was like 15% off. And I have been following Denessa Myrick's on Instagram, and I've just been so mesmerized by her tutorials. So I picked up a couple of color fixes. I do have one, but when I got it, I didn't really know what it was or how to use it. And it's kind of a... I don't even know where it's at, to be honest. So I picked up Blackout. She used it as an eyeliner, and I wanted to try it as an eyeliner. And I don't know, these can be really versatile if they are as good as I hope that they are.  Because I feel like this would be so beautiful for a monochromatic look. This all over the lid, on the cheeks, and the lips. Love this color. So I'm excited for these. Hopefully I love these because she has a bunch of fun colors. Last thing. Last thing. I love eyelashes, if you didn't know. And I love Lily lashes. So she came out with this bridal lash collection. I'm not getting married, but I just... I like sets. So boom, boom. Comes with five eyelashes. We have the Wedding Lash 24 Carat, Always and Forever, Preenup, Happy Wife, Happy Life. We have a lash applicator, and a lash glue, and all of the packaging is white, and the lash is just really, really pretty. I don't know how to show you. They're still in plastic, and I'm too scared to open these, but I love a good lash, and I love a good lash set. It was one of those times when it was, like, midnight. I was up with nothing to do, so I spent money. Anyways, that is all I have for this haul. I hope you guys enjoyed this video. I hope you had fun talking about new makeup things that I picked up. I love luxury makeup. It just makes me feel so fancy. If you are not subscribed to my channel, hopefully you decide to take the time to subscribe to my channel. I love all of my subscribers. You guys are awesome. Let me know of any videos that you guys would like to see from me, and I will see you guys in my next video. Bye, guys. Have a great day.


Let's get started. I'm Dan Leigham, my talk is, it's time for a Ruby editor. So it's time for a Ruby editor. What on earth am I talking about? I've got plenty of Ruby editors out there, right? Well, when I say Ruby editor, I have a particular kind of thing in mind. I'm thinking of a self-posting editor. A self-posting editor is an editor or an idea that's written in the same language that it's used to edit. So it's like a circle of them. And there are quite a few of these. There are a lot of these around. Almost certainly use them at one time or another. Some examples, the editor of the language. Padra, Pearl ID, Eclipse, a Java ID, Wing from Python. Another one is Small Talk. The development environment is written in Small Talk itself. So you've probably been using these, and these are popular editors. Why are self-posting editors so interesting? A few reasons. First of all, integration. They're written in the same language that they're used for. They usually run in the same language, run time as the language you're using. So features such as syntax analysis or a debug in, are usually easier to come by and more powerful. It's also more convenient. You already know the language, the editor is written in, so if you want to extend it, you can do that very easily. It's a lot of fun. Sometimes you want to drop down and just mess around and you're ready to even do that. People enjoy tweaking and proving their editors. They can do that. That relies on you actually liking the language that you use, but I think that most of us here, that should be true. And finally, there's a lot of power in having an editor that's implemented in the same language. What I mean by that is, every extra ID has a plugin API. Now if plugin API is written in the same language as the editor is implemented in, that means you can usually do a lot more. You can write plugins that reach down to the guts of the editing changes. You're not limited by a language divide. So for all these reasons, sub-listing editors are popular. And they exist in the Ruby world as well. You've probably used at least one of them, especially if you started with Ruby a few years ago. There's an ID for free ride, which is pretty good to stable IDE written in Ruby and used to edit Ruby. It has very clean internals. We learned a lot from it. And sadly now, a dead project that's in Ruby history that I'm sure a lot of you are familiar with. A more modern example of a Ruby sub-listing Ruby editor is Arcadia. Arcadia is, again, written in Ruby. It's aimed at Rubyists. It has some good features for editing Ruby, like there's an outline view, you can see on the right, and a debugger, and so on. So if that use case is particularly important to you, this might be a good choice. Another sub-listing Ruby editor is Diacos. This is a curses editor written in Ruby 1.9. So you might like to use it for when you show into your servers and edit Ruby code on there. And again, extensible in Ruby. So sub-listing Ruby editor already exists, for sure. But sadly, they haven't seen a very wide adoption compared to other languages in particular. If I was to walk around here, down the aisles and look at what you're all using to code right now, I don't think I would see any one of these. And in fact, out of interest, has anyone used these? Does anyone use these? Which one do you use? I use Diacos. Diacos, yeah. It's a good edit. So not as popular as sub-listing editors have been. Another languages, I think that's a little bit sad because it feels like we're missing something that other programmers have in other languages. So what I'd like to introduce to you today is a new self-hosted Ruby editor called Red Car. Red Car is written almost entirely in Ruby. It runs on the JRU platform using the SWT GUI toolkit. So it is cross-platform completely. You can install it as a gem. And if anyone would like to install it during this talk, please feel free to threaten the wifi. And if you have any problems, I'll be happy to help you out. Or any questions that you have to answer after the talk. And what I'm going to do now is give a brief demo of Red Car. I'm going to keep it short because you've all seen editors before. So, oh, this is going to be, okay. So, this is going to be a point. So, this is Red Car editing project. It happens to be Red Car itself. I'm going to open up a file. And in that, you can see the syntax property. I can do some typing, a very useful one. I can, I've got snippets available. There is syntax checking.  Has a syntax and it'll tell you exactly what that is. Some simple feature that I want to show you because I want to show you the implementation later is go to line. Okay, I'm going to see how much of this I can do without looking at the screen. This is going to be interesting. So you can see at the bottom, there's a go to line command. There's a bar that's popped up. Try and drag that up for you. I can just jump to the location. Pretty simple, but I want to show you how it works later. So, slightly more useful, more interesting. If I put my cursor inside this storage word here across command tune, it will take me to the definition of the task. So if I select that and open search, I can see all the currencies of that in my project. This is pretty quick because red car has been indexing my project in the background using receipt. So the search is very fast, which is another good reason to be on JRuby because we were able to just get the lucene jar drop in and start using it. That was terrific. With a small raffle, I think it'd be good for someone. If we haven't been on JRuby, getting cross platform indexing solution and working with a heck of a lot more work than a few days working was to get this working. Some features that seem simple, but if you are using particular, I'd say you may be feeling the lack of, it's just really weird. That's another interesting thing is we have, I can't see the menus, it's just wasn't possible. We have a really good record. So this is like an IRB session inside red car. Don't know the entire question there. So you can execute code and play around in here. I can play around with the red car API. Say hello to you all, like so. So you can see this is really a nice way to fill around the side of red car and get handle on what APIs are like. And the press okay, so it will turn on okay. And something slightly more useful. So I've got a document there. That's the fine file document. And it's a Ruby object I can play around with. I can ask it for a line count. So that means that 115 lines, which is correct. I can do slightly more involved things with my document such as I can run up across all the lines, replace each one. This block will be passed to the current line. So I can take that line and say modified, or I can say if the line contains permission, then let's leave it there. So if I execute that, you'll notice that you can do editing on multiple lines here because it's not only evaluated on the press command there. Yeah, so I've been able to, yeah, it's out of definition to the end of every line there. So you can use this to mess around, but you can also use this to script the editor and to do more complex document manipulations that you might be interested in. It feels a lot like the Firebug console if you've used Firefox. You know, that same kind of being able to just make very anything from a console. There's one more thing I want to show you in this demo, which I promised I would do in the abstract, and that is to create a new command for Red Car and add it to menus right here. So we're gonna do that before we finish the demo. There's a My Plugin plugin, which is an easy way to get started with Red Car started adding new things. If I go to Edit My Plugin, it will open up and I can start playing. So the hello world command, you already saw how I was implanted, it's just a message box. We're gonna add a new command. What we're gonna suppose is that for some reason, you wanted to be able to reverse all the text in your document. Not only it comes up very often, which is why there's no command for it already. We're gonna implement this to create command in Red Car. You subclass the other tab command, or just the command class, and then you implement a execute method. The execute method contains the code that should learn when the command is right. So what we're gonna do is we have the doc available to us already here. So we're gonna set the text on the document to be, well, the text the document currently has. Reversed. Naturally, I'm gonna use cars to make sure there are steps, you can see my characters as well. And that's that. We now define the command, we wanna put it in the menus as well. So I'm going to add it to the menus, do it yourself there. And you can see there's so many plugins, so let me write them in two items, and you can see that that corresponds to these menu items here. So let's have the command we just created. And also see we've got auto-continue in it as well. So save that, and now it has not shown the menus, because what we need to do now is tell the webcast to reload this plugin to us. This is the plugin manager, let's store the plugins in the webcast, you can go down to my plugin and hit reload. Then you can go back to here, you can find that again, and there's a new command in the menu. So if we hit reverse text for the good look, that reverses the text. You can see lots of goodies. That's how you know it's really, it's really reversed it. And then you can obviously put it back to how it was before. So I hope that gave some idea of how easy it is to get started adding new things in Redcar. I believe with the current release there's another thing, which is that if you install the gem with pseudo, you need to win Redcar and pseudo to do this. And I'll fix that for the next one, because that's a bit of a test. And that concludes the demo version of the talk. So let's switch back to the presentation. Okay, great. Did you have a question? Yeah, if it's not good. No, but how easy would it be to add a key strip? Quite easy for, if you wanted it in menu, just a key strip on its own in a document. Isn't something that we do yet? I'm planning to keep on doing overhaul as soon as I get a chance. Okay, so everything you saw there, as I said, implemented in menu. Which is a morning break up. Everything's implemented in menu. So the API that we used to implement all these features, and I can show you right now. So the speed bar example you saw of go to line, we call that speed bar. Similar to what you get in Firefox, when you search or something. It looked like that. Very simple. There are some more complex ones. This is the simplest one. And the implementation of that, also, very simple. If you want to create a speed bar like this in one of your plugins in Redcar, all you have to do is create a new class, the go to line speed bar, that inherits from the default speed bar class. And then for everything in the speed bar, you need to declare line by line, exactly this. So the first thing in the speed bar is a go to line label. So we say that's what we've got. Then there's a text box, and there's a button. And the block that's given to the button method is called when that button is pressed by the user. And because this is so simple, I can actually show you the implementation of this. First thing we do, we get the line number that the user wants to move to. And that line method that's there in the block is automatically generated from the text box name that we gave. So that's how it gets the value of that when you press the button. We turn that into an integer, shift it by form. Then we validate that it's in the correct bounds. And if it is, we move the cursor, scroll the window, and close the speed bar. And that's the complete implementation for that. Take it from Redcar, no cheating or anything. So again, it's quite easy to create these kind of features in there. Another example of an API, I'd like to show you. These things. So you probably recognize these from TechMate. The one on the top left is the fuzzy file finder. We also have a jump to class or method and switching views. TechMate uses these in a few places and Redcar uses them all over the place because they're really a nice input convention. And they're very easy to print in Redcar. We call them filter list dialogues because that's conceptually what you're doing, filtering and choosing from a list. And to create your own one of these, you subclass a filter list dialogue and define two methods. Update list, give them a filter. So whenever the user types a new filter into that list, that method will be called and you can return a list back again, which we've been populated with. And the filter on the rank bar is a helpful method provided for you to influence the sorting and ranking algorithm. And then you also implement a selected method.  So because these are really easy to create, you tend to do some favor thing because they are a nice way of jumping around at this. Now I want to emphasize that these APIs aren't plug-in APIs per se. Because in Redcar, there's no such thing as a plug-in API. There's just Redcar. There's just the APIs. And that's because in Redcar, everything is a plug-in, okay? There's no distinction between core features and extension features. We've got a lot of plug-ins in core. Here's a truncating list of some of them. I'd like to expand one of the plug-ins and show you a little bit of what's inside in the Redcar plug-in. Every Redcar plug-in looks a little bit like a mini Rumi library, right? It's got a live directory with code inside. It has features and specs. It has tests just for that plug-in. It has views. So that search result you saw will be a ERB template that's rendered so they live inside there as well. There's a plug-in Rb definition file, which lets tells Redcar exactly what the name of the plug-in is, the version number, and whether it has any of the dependencies of the plug-ins that it needs to be loaded. I said that the plug-ins have features. Here's an example of the kind of features we have. This is the feature that tests the auto pair, which is when in Redcar you type a quote mark, it will automatically insert a closing quote. So you can see that test in versus an item. When I open a new Reddit tab and I type quote, then the contents should be quote, cursor, quote. Similarly for parentheses. And then the final one is if I type quote, the prospects face shouldn't be anything then. It should have automatically removed the quotes. And these go on and on. We have these sort of features for pretty much every plug-in in the system. And every API it shows you already has a set of helper steps. So you can do a full integration test of your new filter list dialogue without having to know how the tool works at all. Because you can use those steps to test it. And that's what we approach people to do when they're writing that couple of minutes. So I've shown you a lot of code so far. I'd like to take a step back and talk a little bit about philosophy of Redcar. But there will be more code. Because so far it's a bit like text-made, but it's written in Ruby. What's the actual point of this? So first of all, first and foremost, Redcar is an editor in the text-made tradition. If you use Redcar, sorry, if you use text-made all the time, you might not have sat on the floor about what makes it such a great editor. But the things that jump out to me as making text-made great, it has great commands for text-slinging. And sometimes when you're thinking of figuring it all out, someone will show you some new thing, and you discover another layer. And so there's a lot of power there. Text-made has a philosophy of declarative extensions. So the themes, the grounds, and the snippets, they're all declared as XMAP. They're not code, which allows text-made to remain a very small editor with very well-defined APIs, rather than becoming huge, and still support hundreds of languages. You can write text-made commands in any language just about, which means that for you, text-made can usually be, is almost a self-posting editor. And a lot of the commands in text-made are written in Ruby, which is one of the reasons why it's so popular in our community. And finally, text-made is built on regular expressions. The features are implemented in them, and if you know regular expressions, you'll get a lot more out of the editor. And I think it's true to say that before text-made, editors and IDs did not make such common use of regular expressions. So that's something text-made has brought as well. And there are a lot of editors now that exist since text-made, but very self-consciously placed themselves inside the text-made tradition, because of the new ideas that text-made did bring to editor. So I should say, from text-made, we use text-made's open source bundles. We use the syntax highlighting, we have text-made themes and text-made snippets, because when our created text-made, he made the bundles open source. So there's a lot of editors that use those now, and we do as well. So I should say, thank you, down on my guard, and to any one who's contributed to text-made bundles, because you've been part of what's helped as a bootstrap recommender, and making a great editorial team. So, as well as all these features that text-made has, there's a sort of philosophy, there's a sort of coherence to text-made. And I can best illustrate that by showing you what text-made isn't.  This is a powerful editor. You can tell, look at it. You can feel the power. I don't know what you're talking about. But it's not. And if you need any particular functionality or display there, then you need it. It's useful to you, you've got to have it. But it's still not the direction red car is going in. When I'm using an editor like this, when I have used this sort of thing in the past, it's always felt to me like, I'm sitting at a pub table outside trying to do some work, and I've got stacks of pages there. But it's a windy day. So anything could blow away at any moment. I'm going to keep my hand on this one. We keep track of that one. I don't know what that one's going to blow away as well. I'm going to keep track of everything. If I lose anything for a second, I'm going to lose track of what's going on. So maybe that's just me, but that's how I feel when I use this kind of thing. I much prefer the text-made workflow. Perhaps just it better fits inside my tiny mind just to have these few elements with organizational structure on the side with files to edit and with an HTML preview there. So there's three things that text-made has. Directories, files, HTML previews. I'm implementing these in Ruby, and I'm thinking these things could be more general. Let's take directories to start with. Breakup has directory view. At the same time, over there on the left, you don't just have directories, you can also have bookmarks. They have rate taxes. And these are examples of the category. You get a lot in editors and under-news. Class outline views to do this and so on. And they're all examples of the dominant organizational metaphor that you get in editors and ids, which are treats. So in red, that would say, it's not just a directory you have over there. It's any kind of tree. It's where you keep all the things that organize your work. They live over here. And if you want to implement a new tree of your own, there are two classes for you to define. You need a top-level tree which has a method called top, with the top-level elements. And then it's a recursive definition. I'm going to use, for example, an imaginary node taking plug-in, but it's not going to do well on that too much. And then each row in the tree is a node which has an icon, a text, and every row has to have children, which are more nodes. And also a leaf method to tell you whether it's the bottom of the tree or not. And if you define those two classes and have them to a red car, it'll put the tree you implemented in the sidebar there for you. So they're very easy to create new ones if you want to. So we've generalized this organizational structure to any kind of tree. It's not just direct trees. Moving on to a similar thing with files. Implementing files and thinking, well, it's only a coincidence that these files could be any one of a number of things. You already see a couple of examples. You've got, you've got a file for one thing. You saw the record. That's also editable. And in general, there are lots of things you can edit which you just, they're textual and you want to be able to edit them. Commit entrance or notes or blog posts. Any red car, they're all examples of things called documents. And a document, the tiny feature of a document is it's textual, you edit it. But at the same time, it's representative of some resource that sits behind the document. It might be a file or it might be a running by the instance or it might be a WordPress blog installation API if you're editing blog posts. So to implement your own document, again, very simple. Actually, there's a little bit more on this, but this is a poor bit. There's a title method that appears in the tab. You have to be able to read it from somewhere. So if it's the file you're reading out from disk, you have to be able to commit it. So if it's a file, you're saving that to disk. In the case of a note-taking plugin, you might be reading that from a SQL identity. So if you're not, and maybe the notes are saved in SQL identity as well. So if you have those two things, we might have implemented your own document in Redcar. You can see where I'm going. HTML previews. In TextMate, there's static HTML file that gives the appearance of dynamic nature. In Redcar, you can get much more complex interactions. So you already saw a search view with the search results. That's done inside HTML view. You saw the plugin manager as well. Another one is the task manager. And in general, there are lots of things you might want to display with HTML and then to an ID, like documentation, like command output. And in Redcar, we've got these things. Webviews. I'm looking for a better name. In fact, my code letters will be raising the eyebrows at the same because you won't write any remersals. But they seem to be distinctive of what they did. But Webview in Redcar has two parts. It has a Ruby controller, which is an object that you create. And it has a JavaScript side and an HTML side that lives inside the browser in that tab. And they can intercommunicate. The only restriction being that they have to communicate with objects that can be serialized as JSON. Let's take a look at how that looks if you can imagine a plugin to a view to search to all your notes in this imaginary notebook. Unifying a node search controller. The index method that you define is special. It has to return the HTML, which is displayed. And then you can define any other methods you want. So in this case, we're defining a search notes method that takes a query. That's it. That's instantiated and passed to Redcar. And it displays that in the Webview. Then in the Webview, there's some JavaScript. And the JavaScript might look something like this. It's been a jQuery. When you click on the search button, it can call that search notes method we define on a JavaScript object called control, which is made available by Redcar. And that's how you get that communication back and forth. So this is how the search view is implemented in Redcar that I showed you before. When you press the search button, it collects the JavaScript, the JavaScript collects the values from the form and calls a method on Ruby control. And then receives the results back and inserts them in the string. So we've taken each of the three things from the TextMate workflow and generalized it, making them a little bit more powerful. So what we've done is created an opinionated editor. You can extend it in any way you want, but this is where different things live. We've got a single organizing tool, the tree. It's not completely general, but it's close. And if you have an overview of anything, an organizational view on anything in a plugin, they live over here, so you know where to find them. Editing text is the dominant interaction in any editor or an ID. So that has to find a place and it has its own thing. But again, it can be anything. And for everything else, any kind of custom interaction you need or any kind of funerary display, I'm putting them in a practical way. We've got the web views. So with these three things, people are starting to create some really interesting plugins for a class and really complex things. And it's starting to look more and more like an IDE. Which is something that I always said that it was never gonna be. But it still feels like an editor because it's opinionated about where it's going to live. So if it is an IDE, it's an IDE that feels like an editor. It's a platform on which you can create whatever you want. But at the same time, everything remains comprehensible and your workflow remains simple and sane. I'd like to talk a little bit about the community around Red Car. We have an open commit policy. So if you get a Patrick's at the master, you put on the Red Car team on GitHub and you can commit to master straightaway. So it's something that a Rumbinius project did and the Patrick project did to do its success. And we now have seven contributors, seven regular contributors to Red Car. Tim, over there, is speaking today about adding C extensions to JRuby, which seems like an interesting topic, so you should head over to that. All these seven people, Delisa, Alex, and Matt, Charlie, this is their first Ruby project they contributed to. Which I hope means that Red Car's bringing more people in to Ruby, which is great. And we have more than 35 other contributors as well, which has made a lot of progress over the last three or four months. These are the releases just from the last three or four months. I have hope to get not quite nine out for this conference, but it's not quite there yet. That will have the online project search, some JavaScript syntax checking, and there's a lot of things in there. That should be out soon, by which I mean Sunday. Okay. So given all the part of my work's left, what opportunities are left for people who might be interested in contributing to Red Car? Well, we need a Ruby debugger. There's lots of prior art on this, so you should be able to find some examples of what kind of need to do. We need breakpoints and we need a debugger. The Red Car is currently very simple. It runs inside Red Car, you can't load your project code into it, so you can't get anything by the script console. We need to be able to load project codes that you need to be able to send code from your documents into the record, and that should be an interesting project to take along. Tech to make some multi-language editor. I would like Red Car to be a multi-language editor as well. If any of you came to the Green Regents talk earlier today in this room, you'll know that a lot is possible with JVB in terms of integrating other languages on the JVN. We want to support that Red Car. We have a pretty good closure record already, but it's very simple. So if there's anyone here who uses Red Car, but it's interesting, kind of interesting in closure, I don't know if there will be anyone like that here, but if there are, you can contribute to Red Car. You can add closure support, you can work on closure on a meta level when you're belating the runtime and you will learn a lot by doing that. I wish I actually had time to do that to be honest. Another small thing, the web views are very manly. We're writing a lot of the HTML out of itself. If anyone here is interested in Rails 3, we'd love someone to come along and take action to help us from Rails 3, which is, first, we all work for an extensible map and bring them into Red Car so that we can use them in the web views and we can use them in the web controllers. So if anyone's interested in Rails 3 and Red Car, that'll be a fun project to take on and you get something done quite quickly at the end of that as well. I want to emphasize that this is not yet one-pointed project. So it lacks a certain polish. There are some things that you'd expect to find that aren't there. For instance, like incremental search is work. We don't have that. We've also got quite a slow start of time. Sorry. One of the Red Car's running, it's pretty quick. Loading a project is instantaneous, for instance, which is great. But I hope you can see past the rough edges and see some potential here and come and join us and help make Red Car a great review of it. And hopefully, in the future, when we come, I'll be able to walk down to us here, take a look at what people are using and see them using a Ruby Editor written in Ruby. So thank you all for listening. If anyone has any questions, maybe it's time. How hard would it be to add Emacs and VI key bindings? I said earlier that I'm planning a key binding overall. One of the things I'd like to do is to make swappable key maps. I think doing that is a way that you could say, this command swaps out key map for this one would enable the V-Mode as big as you could say and then press I. It swaps out that key map for a new set of key maps. So that's on the roadmap. Anyone else? Yes? So I understand the point, but now you're adding another one, which is important. Which is interesting, because you would think, was there a purpose that you're going to enter? Or is it focused on Ruby first and that it's just a weird dichotomy? I see. It's focused on Ruby. But I wouldn't be averse to adding other languages on an equal footing. I suspect that it will always be with Ruby in the core and we will have some kind of translation layer. So at the moment, focused on Ruby, but it shouldn't have to be. It's on the JVM. There's a lot of fun stuff we can do. I hear the questions. What's the best way to get up to speed with the API? I know it. What's the best way to get up to speed with the API? I would say, look at some of the plugins. So you might have to look at the macros plugin or you might have to look at the declarations plugin, which is the thing to jump to declarations. Looking at the code, it's still the best way of knowing where it can come in. So, any questions? Yeah. You had a question from earlier. Yeah, actually I've kind of abandoned that question, but one of the things that's interesting about self-hosting editors, we were talking about this the other day, is that they have access to like the AST in the language so that you can do smarter refactoring and navigation. How much does Red Car support that and what types of tricks can you do with refactoring from, with your whole honor project? So the question was, how to use JVM in Red Car to get better refactoring support? And something we do for that already is the syntax checkup. That loads JVM, uses the JVM, syntax parser to check syntax. And for other languages as well, and we have a JavaScript checkup as well, we use Ryder for that to do JavaScript checkup. And as for further interesting and firmly refactoring things, I think that would be a very interesting project to take on, but no one's done much with that yet. Someone did it with the R-Sense plugin, which gives you some more advanced code completion and I think some refactories, but it's the obvious thing to do, it's just there's a million on these things. Yes. What about, how hard would it be to do a collaborative editor? Now, didn't someone, Tim, didn't someone say that we're gonna start working on that? Collaborative editor. Okay, maybe that was just loose talk in IRC. I know nothing about that. In the sense that you can modify anything in the editor and there's some very good hooks for adding new things. For instance, I suppose at the back end of the document could be something clever, I don't know. I think it would be as easy as that to be an editor at any editor. It's possible to edit files using SFP on other rows and if not done, how easy would that be? We have a remote project plugin, which is not very well maintained because as far as I'm aware, none of the content is actually gonna use it, but it does work, it can be made to work quite easily. I'm looking towards other ways of using remote projects because in terms of all that new C indexing that's going on and you won't get those features. So, a much better option I'm exploring is using R-Sync to keep two equestries in close sync all the time, which allows you to have all the great project features in a remote project as well. But still to be decided, finally, that's where we're going to go. Yes? Is there a go-to place for red card bundles or plugins? The red card organization on GitHub has a red card-bundles repo in it and it's a clone of the text-made bundles with some minor modifications. Can you install... Yes, you can. I mean, can you bundle onto the camera? Bundles? Not quite. Something I'd like to add, especially if we have the other Ruby gems or the every language support that would be great. Obviously, it is to customize one of the tree view, for example. Like, can you use just the HTML to customize them with their words? The tree view is... This is how easy it is to customize the appearance of a tree. The tree view is a Guru widget. So, apart from changing the icons, at the moment, there's no support for reskinning that at all. Okay. Yes? So, I think this is a great idea for the unit because it's simple and especially because it's free. But it's not trivial to install. You guys might need to make that install. Well, for Ruby, it's the same. I would... I think for Ruby, it's quite easy to install as a gem. But before 1.0, I would like to get 1.0 install for the tree platforms. But right now, just making it easy for Ruby is to install it as the priority. And yes, for beginners, one of the places that's being used in real life now is people who are doing Ruby training. For people who are new to Ruby, it's just said, just download this. And they've been able to get up, start everybody in the Ruby editor in their training sessions. So, yeah, for beginners. Anyone else? Does it support, like, block editing?  Yeah. And select that area. If you select something that's Control-B, it will switch to a block selection. Control-B goes back again. Oh. Or Command-B in Mac. And when you're doing the code navigation, does it have, like, a stack where you can, like, now get you new method called for it? Sounds like that. Can we wrap that up? Better using different gem sets, switching around a lot. Is there some way to set it up so that you're using one installation on the right part? There's no support for that. It installs as a gem, so it should play fairly well with an RBM. Except there's a common resource directory where it stores its jobs, so you may run into a little bit of trouble. Try that and let us know how you've been doing it. Yeah? I just wanted to comment that. I'm using it with RBL. I just want to be installing for each version of Ruby, but all my gem sets will be at 192. It works fine with it. Okay, sounds like a good experience with RBM. You have a question, isn't it? Does it use a split screen enemy? Yes, it does. Only two ways, but I don't know if I was lucky. Yes? You can actually install it in a global gem set which is available on all the gem sets. You can install it in a free-true Ruby. Free-true Ruby would just be installed. Yes. Okay. You could even just have one installed and use RBM proper to get it.  Someone should write up the best variant on the team. Please. Any more questions? Okay, thank you very much.