Skip to main content
LawHub
Search

Patch Me If You Can

May 3, 2026
Listen to this episode

We dig into the Copy Fail vulnerability and test a proof-of-concept against our own box. Plus, Jon Seager, VP of Engineering at Canonical joins us, and we kick off the BSD Challenge!

Sponsored By:

Support LINUX Unplugged

Links:

Transcript

WEBVTT 00:00:11.309 --> 00:00:15.909 Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris. 00:00:16.089 --> 00:00:16.689 My name is Wes. 00:00:16.849 --> 00:00:17.529 And my name is Brent. 00:00:17.709 --> 00:00:21.929 Hello, gentlemen. Coming up on the show today, we'll cover the copy-fail vulnerability, 00:00:22.149 --> 00:00:26.069 tearing through Linux distributions out there, plus Ubuntu 2604, 00:00:26.289 --> 00:00:30.949 the Resolute Raccoon, is here, and John Seeger will dig into the details with us. 00:00:31.089 --> 00:00:34.249 And then we'll round out the show with some great boosts and picks and a heck 00:00:34.249 --> 00:00:38.089 of a lot more. So before we get into that, this is like three big shows in one. 00:00:38.329 --> 00:00:41.609 We've got to bring in our virtual lug. time-appropriate greetings, Mumble Room. 00:00:42.149 --> 00:00:44.029 Hello, Chris. Hello, Brent. 00:00:44.589 --> 00:00:44.889 Hello. 00:00:44.929 --> 00:00:45.529 Hello, hello. 00:00:45.949 --> 00:00:48.649 And shout out to everybody up there in the quiet listening and everybody on 00:00:48.649 --> 00:00:50.529 the live stream. Pershing H. 00:00:50.609 --> 00:00:52.229 We see you. You hear us. 00:00:53.529 --> 00:00:56.349 Something like that. A version of that somewhere in there. 00:00:56.589 --> 00:00:57.549 You boost? I don't know. 00:00:57.629 --> 00:01:01.569 I don't know. Also, good morning to our friends over at Defined Networking. 00:01:01.609 --> 00:01:03.709 Go check out Manage Nebula from Defined Networking. 00:01:03.849 --> 00:01:09.969 It gives you a decentralized VPN built on the open-source Nebula platform that we just love. 00:01:10.129 --> 00:01:14.929 And what I really like is the flexibility. You can build the network you want 00:01:14.929 --> 00:01:19.829 and the way you actually want it, from maybe your home lab to a full enterprise setup. 00:01:20.009 --> 00:01:23.609 And you have the option to run your own lighthouse nodes so you own the stack 00:01:23.609 --> 00:01:26.289 end-to-end. But you don't have to start the hard way. 00:01:26.809 --> 00:01:30.629 Define gives you a full managed experience, so that way you can get up and running 00:01:30.629 --> 00:01:34.709 fast with speed, security, and resilience baked in from day one. 00:01:35.129 --> 00:01:39.809 No big tech login required. Try it for free, 100 hosts, no credit card, 00:01:39.949 --> 00:01:42.889 at defined.net slash unplugged. 00:01:42.949 --> 00:01:46.169 That is defined.net slash unplugged. You go over there, you support the Unplugged 00:01:46.169 --> 00:01:49.969 program, defined.net slash unplugged. And a big thank you to the defined folks 00:01:49.969 --> 00:01:54.609 over there and the fine, fine folks at Defined for sponsoring this here program. 00:01:56.287 --> 00:02:00.507 Let's get right into it. Gentlemen, we have ourselves quite the vulnerability this week. 00:02:00.687 --> 00:02:04.407 Copy fail, which is an unprivileged local attack that allows, 00:02:04.527 --> 00:02:09.687 say, even just a generic Brent user with no admin rights to pop your box. 00:02:09.847 --> 00:02:10.607 Yeah, that's not great. 00:02:10.787 --> 00:02:16.867 No. And it turns out it's been baked into most Linux distros since 2017-ish. Is that right? 00:02:17.047 --> 00:02:17.187 Yeah. 00:02:17.407 --> 00:02:19.887 So that's a while and just about everything that's shipping right now. 00:02:20.267 --> 00:02:24.067 And some distros are still working very hard to get it patched. 00:02:24.567 --> 00:02:28.747 ours writes it's the quote most severe linux threat to the to surface in years 00:02:28.747 --> 00:02:33.507 and it is catch it has caught the world flat-footed and my tongue what do you 00:02:33.507 --> 00:02:36.707 think there wes pano what i want to get your take on this first because you've 00:02:36.707 --> 00:02:38.147 actually been playing around with the exploit. 00:02:38.147 --> 00:02:40.867 Yeah um it is worth noting right you do need some sort 00:02:40.867 --> 00:02:43.747 of access right so you need you if you don't have a user account on 00:02:43.747 --> 00:02:46.567 the box you need some other chain some other vulnerability maybe it's a 00:02:46.567 --> 00:02:49.427 you know some kind of injection in a web app whatever 00:02:49.427 --> 00:02:52.667 it is um but once you have that user access then 00:02:52.667 --> 00:02:56.087 yeah pretty much any system because it's a kernel logic issue the 00:02:56.087 --> 00:02:59.047 particular like the first poc that was released was 00:02:59.047 --> 00:03:03.687 like a python 3 thing and sort of made some assumptions about like particular 00:03:03.687 --> 00:03:09.507 set uid binaries like su uh but those are all particular implementation details 00:03:09.507 --> 00:03:12.647 so it's important to realize that like the core thing is this is this kernel 00:03:12.647 --> 00:03:16.607 flaw uh which we could get into because it's it's kind of fascinating because it, 00:03:17.554 --> 00:03:21.674 As often is the case. Well, one, I guess we should note, it was an AI-assisted 00:03:21.674 --> 00:03:25.614 finding, but began with insight from human researchers at Theore, 00:03:26.494 --> 00:03:30.754 Taiyang Li, who's studying how the Linux crypto subsystem interacts with page 00:03:30.754 --> 00:03:32.834 cache-backed data, and we'll get into that. 00:03:33.334 --> 00:03:37.274 So there's a few layers. The first is the VFS layer. There's this call called 00:03:37.274 --> 00:03:41.634 Splice that kind of lets you combine pipes and file descriptors. 00:03:41.714 --> 00:03:45.934 So you can open a file for reading and then combine that with a pipe and then 00:03:45.934 --> 00:03:50.194 pipe it into other things that you're using when you're calling kernel APIs. 00:03:51.434 --> 00:03:57.794 And in particular, there's this AFALG API and it lets user space programs take 00:03:57.794 --> 00:04:00.494 advantage of all the cryptographic stuff or a lot of the cryptographic stuff 00:04:00.494 --> 00:04:03.434 that exists in the kernel, which is good, both because like you don't have to 00:04:03.434 --> 00:04:05.634 reimplement it, but also the kernel has access to hardware stuff. 00:04:05.754 --> 00:04:08.314 Like there's various reasons the kernel might be able to do it faster or more 00:04:08.314 --> 00:04:12.534 securely or better than the random user space program that needs to handle encrypted data. 00:04:13.034 --> 00:04:18.814 The problem is that in 2017, there was an in-place optimization made. 00:04:19.014 --> 00:04:24.034 So basically to avoid allocating duplicate memory during decryption processes, 00:04:24.034 --> 00:04:26.074 you have some encrypted data, you're calling the kernel to say, 00:04:26.154 --> 00:04:27.594 hey, please decrypt this for me. 00:04:27.994 --> 00:04:30.114 The kernel tries this in-place operation. 00:04:30.814 --> 00:04:34.854 Basically, you need to pass the data into the kernel for what you want to decrypt. 00:04:34.894 --> 00:04:35.634 And there's various parts. 00:04:35.794 --> 00:04:38.934 There's like some of the cryptographic primitives, which is the actual encrypted 00:04:38.934 --> 00:04:41.654 data, and there's the authentication tag. 00:04:41.654 --> 00:04:46.074 and it builds this buffer that it's going to pass into the kernel and it copies 00:04:46.074 --> 00:04:50.854 some of the first parts in there but it doesn't actually copy the tag instead 00:04:50.854 --> 00:04:55.874 it basically passes a reference to the tag's memory at the end there instead 00:04:55.874 --> 00:04:58.614 of like allocating new memory and putting the tag in there. 00:04:59.408 --> 00:05:03.568 And unfortunately, later on in the cryptographic algorithms, 00:05:03.868 --> 00:05:09.628 this spot, the RxSGL, the destination, is inherently treated as writable. 00:05:10.288 --> 00:05:13.808 So in this stage, like kind of when you have the splice side of it, 00:05:13.948 --> 00:05:18.048 it's all fine. It's like read-only. You're just kind of like splicing on this read-only reference. 00:05:18.528 --> 00:05:22.608 And we'll get more into that. But it's really the problem where we did this 00:05:22.608 --> 00:05:27.468 optimization in the mechanism that lets user space programs call into the kernel. 00:05:27.468 --> 00:05:33.508 And then you need another piece, which is there's a particular encryption mechanism 00:05:33.508 --> 00:05:38.708 for IPsec, auth and ESN for extended sequence numbers. 00:05:38.908 --> 00:05:40.448 And basically it's these 64-bit 00:05:40.448 --> 00:05:43.668 numbers that they need to do stuff and rearrange some of the bits for. 00:05:44.168 --> 00:05:49.268 And it kind of cheats. It uses the caller's destination buffer, 00:05:49.428 --> 00:05:52.808 which is the thing we were just talking about, as a temporary scratch space. 00:05:52.888 --> 00:05:53.408 That's okay, though. 00:05:54.488 --> 00:05:58.888 And specifically, it uses scatter, walk, map, and copy to write four bytes past 00:05:58.888 --> 00:06:02.368 the end of the legitimate plain text data precisely at an offset. 00:06:02.748 --> 00:06:05.788 So you kind of put this all together, and this is what the actual, 00:06:05.788 --> 00:06:08.308 like, exploit does is... 00:06:09.894 --> 00:06:13.854 The attacker, so you basically, you need some sort of file that you have read 00:06:13.854 --> 00:06:16.914 access to. That's important. So you open that file for reading. 00:06:17.034 --> 00:06:20.234 Which should just, I mean, that should be pretty easy. As long as you can get on the box. 00:06:20.354 --> 00:06:23.694 Yeah, yeah. So there's some file that the user can read. We'll get into that. 00:06:23.874 --> 00:06:27.354 But could that even be like a web server process? I mean, this is, 00:06:27.474 --> 00:06:28.894 that's pretty generic. Okay. 00:06:29.134 --> 00:06:31.654 Yeah, it doesn't need special permissions or anything. 00:06:31.794 --> 00:06:32.034 Yeah, yeah. 00:06:32.254 --> 00:06:36.074 So it basically opens that file, which loads it into the page cache, 00:06:36.154 --> 00:06:39.314 right? which was the memory cache that sort of like you put things in so that 00:06:39.314 --> 00:06:41.014 you don't have to go fetch them from disk all the time in the kernel. 00:06:41.234 --> 00:06:43.214 And this ends up being system-wide, by the way. 00:06:43.454 --> 00:06:46.634 And so it has that available, and then it makes this splice call to sort of 00:06:46.634 --> 00:06:50.574 set up this pipe that gives it basically a memory reference to that data. 00:06:50.934 --> 00:06:55.974 So the attacker aligns the splice offset so that what it is thinking is this 00:06:55.974 --> 00:06:59.034 tag reference, right? It's trying to pass a tag into the crypto API. 00:06:59.394 --> 00:07:03.454 That actually points exactly over where it's trying to write in whatever the 00:07:03.454 --> 00:07:07.074 target is. So it opens, say, the SU binary, right, with this. 00:07:07.254 --> 00:07:08.674 It opens it just for reading. 00:07:08.854 --> 00:07:08.974 Yeah. 00:07:09.314 --> 00:07:13.574 And then it kind of aligns things then so it passes a memory reference to wherever 00:07:13.574 --> 00:07:14.594 it's trying to overwrite. 00:07:15.183 --> 00:07:19.223 and then it calls into the crypto API, and then it just blindly changed that 00:07:19.223 --> 00:07:22.643 page cache reference because the actual reference it gets is the page cache. 00:07:22.763 --> 00:07:25.243 It's the page cache for the binary. 00:07:25.663 --> 00:07:28.183 That's a key part of it, right? So it's like when it opens it for reading, 00:07:28.283 --> 00:07:31.943 the kernel happily goes and reads it and then gives it a reference to the memory 00:07:31.943 --> 00:07:34.383 that corresponds to the actual page cache entry. 00:07:35.023 --> 00:07:39.523 So then when the crypto stuff happens, it just changes that tag thing, 00:07:39.643 --> 00:07:44.903 which ends up being the page cache reference, onto the actual final buffer that it's going to be using. 00:07:45.183 --> 00:07:50.903 And then the particular IPsec encryption algorithm does its byte shuffling stuff 00:07:50.903 --> 00:07:54.923 and writes those four bytes, which are now attacker controlled, 00:07:55.163 --> 00:07:57.803 past the normal sort of plain text stuff it's supposed to be using. 00:07:58.183 --> 00:08:02.043 And then that, because it was aligned from our first thing with the splice, 00:08:02.263 --> 00:08:06.863 then writes not to the file on disk, but it writes four bytes to whatever you 00:08:06.863 --> 00:08:09.463 like in the page cache version of the file. 00:08:09.763 --> 00:08:13.143 They have a very clever little payload. it's 00:08:13.143 --> 00:08:16.123 like 158 bytes and people have been golfing this further but 00:08:16.123 --> 00:08:19.743 it's basically a super clever tiny little minimal elf thing 00:08:19.743 --> 00:08:22.963 that like all it really does is look so 00:08:22.963 --> 00:08:26.183 instead of having to figure out like target a particular binary 00:08:26.183 --> 00:08:28.843 to patch in a particular way they just override it from the 00:08:28.843 --> 00:08:32.243 start with a super minimal little tiny custom binary it's clever 00:08:32.243 --> 00:08:34.943 to be like as position independent as can be and like work is in 00:08:34.943 --> 00:08:39.003 many places but it basically just it calls set uid zero to like really sort 00:08:39.003 --> 00:08:42.603 of sink in and like make sure it has full root permissions it's already running 00:08:42.603 --> 00:08:45.883 here in like a context of a set uid binary but like it makes sure that's synced 00:08:45.883 --> 00:08:49.763 to all the kernels places and then it just has like a nice clever way to call 00:08:49.763 --> 00:08:52.743 slash bin slash sh but it could do anything here that you wanted this was just 00:08:52.743 --> 00:08:54.823 a quick way to spawn a root shell. 00:08:55.432 --> 00:08:58.972 Now, what's interesting is, like, if you just do it on, say, 00:08:59.032 --> 00:09:00.972 like, an affected Ubuntu instance, it'll just work. 00:09:01.052 --> 00:09:05.092 But the script that was first sort of put out there, hard-coded user bin SU. 00:09:05.372 --> 00:09:07.732 So, like, on a NixOS app, when I was trying to play with it, 00:09:07.892 --> 00:09:10.572 at first that didn't work just for the reason that that's not the right path 00:09:10.572 --> 00:09:12.472 for where SU lives on a Nix system. 00:09:12.772 --> 00:09:17.392 But then also, it turns out that on NixOS, a lot of SUID binaries, 00:09:17.572 --> 00:09:20.752 or the wrappers for them, are configured as execute only. 00:09:20.992 --> 00:09:24.112 So you don't actually have read permissions. So that's another way it could 00:09:24.112 --> 00:09:26.372 fail. And you could think that you're not actually impacted, 00:09:26.372 --> 00:09:29.892 but those are all just implementation details because you could also, 00:09:30.192 --> 00:09:32.712 like, there are a bunch of stuff that you kind of have to be able to read, 00:09:32.872 --> 00:09:35.772 like shared libraries, libc, pamunix. 00:09:36.292 --> 00:09:39.252 You could also target something like etsypassword, say, right? 00:09:39.292 --> 00:09:42.452 There's like a lot of stuff that you could overwrite that you have to have read 00:09:42.452 --> 00:09:43.792 access to to be able to do. 00:09:43.972 --> 00:09:48.912 And then what's so tricky about this, right, is then it's poisoned the page cache. 00:09:48.912 --> 00:09:53.012 but the kernel in all of this stuff that's happening it never there's like an 00:09:53.012 --> 00:09:56.692 error but it never sort of undoes anything and it never then marks that as dirty 00:09:56.692 --> 00:10:00.832 so it doesn't know that it needs to be re-read like anything's wrong and so, 00:10:01.946 --> 00:10:06.566 If you go try to hash it, the hash will go check the, like the hash thing command 00:10:06.566 --> 00:10:08.606 will actually go get the bytes on disk and it'll be fine. 00:10:08.826 --> 00:10:14.566 But if you make an exec call, like the exeve call in the system call, 00:10:14.766 --> 00:10:16.766 the kernel is just going to use the page cache. 00:10:16.866 --> 00:10:17.026 Yeah. 00:10:17.206 --> 00:10:18.386 That's the whole thing. That's the point. 00:10:18.586 --> 00:10:19.046 Oh, man. 00:10:19.206 --> 00:10:23.066 And you're not checking that. Right. And so you have to be much more clever 00:10:23.066 --> 00:10:25.966 around how to detect it because you can't just like do the hash. 00:10:26.106 --> 00:10:28.506 Now, it does mean it's not persistent because if you reboot, 00:10:28.626 --> 00:10:31.486 then the page cache is gone. So that's a small blessing here. 00:10:31.586 --> 00:10:31.746 Yeah. 00:10:31.946 --> 00:10:38.026 But it's, yeah, it's widespread, kind of nasty. It does need some chaining in a lot of cases, but... 00:10:38.026 --> 00:10:40.746 Containerization doesn't solve it because it's still using these same primitives. 00:10:40.866 --> 00:10:42.006 It does seem like systems that 00:10:42.006 --> 00:10:45.766 have strict SE Linux and perhaps AppArmor profiles might be better off. 00:10:45.946 --> 00:10:50.006 Or like you said, if you have it where execute is only and read isn't an option. 00:10:50.986 --> 00:10:55.046 So key takeaways are this is a bad one. And it's been on machines for a while. 00:10:55.386 --> 00:10:57.926 And we're going to have a lot of patching to do. 00:10:58.406 --> 00:11:02.386 and the bug was found by an AI-assisted coding analysis tool in roughly an hour. 00:11:03.186 --> 00:11:06.566 So expect the cadence of deep kernel disclosures to pick up. 00:11:06.806 --> 00:11:11.806 Yeah, I guess folks at the xint.io and they've got some various setups and harnesses 00:11:11.806 --> 00:11:12.866 to kind of go poke around. 00:11:12.986 --> 00:11:16.566 So they had some hypotheses, partly from human researchers, exploring various 00:11:16.566 --> 00:11:21.606 places that might have bugs and then I guess they threw some AI at it. 00:11:21.666 --> 00:11:25.686 It turned up a bunch of stuff and this is what it rated as the highest severity issue. 00:11:25.926 --> 00:11:29.266 Mm-hmm. Mm-hmm. So 2604, not currently affected? 00:11:29.526 --> 00:11:30.586 No, I believe not. 00:11:30.766 --> 00:11:34.446 That's good. And, of course, the Debian security channel has a patch. 00:11:34.726 --> 00:11:36.306 Alma Linux has it patched. 00:11:36.806 --> 00:11:40.026 So the patch is getting out there. NixOS has something, even though, 00:11:40.166 --> 00:11:43.246 like you said, your box wasn't. But all the big distros are going to get it 00:11:43.246 --> 00:11:44.766 affected. There is a way people can tell, right? 00:11:45.507 --> 00:11:47.927 If they just look at their kernel version, if they have, well, 00:11:48.007 --> 00:11:49.647 basically anything since 2017. 00:11:50.027 --> 00:11:54.507 And you can also, like, there are very safe, like, little test exploits you can run. 00:11:54.687 --> 00:11:54.827 Yeah. 00:11:54.827 --> 00:11:57.767 You can also check, like, you do need some of these modules. 00:11:58.067 --> 00:11:59.607 Like, some kernels have them built in. 00:11:59.747 --> 00:12:01.127 Some are as, like, loadable modules. 00:12:01.127 --> 00:12:03.927 So you could sort of remove them and prevent them from being loaded. 00:12:04.067 --> 00:12:07.887 So there's various mitigations per distro, sort of, depending on how your kernel is set up. 00:12:08.287 --> 00:12:12.627 I think we're going to have to, as a community, look at this as an opportunity, 00:12:12.627 --> 00:12:15.827 not as a burden, even though it is absolutely going to be a massive workload. 00:12:16.327 --> 00:12:22.207 But as a community, we have always championed the idea that more eyes means shallower bugs. 00:12:22.407 --> 00:12:26.907 And now we are getting dramatically more eyes. We are getting exponentially more eyes. 00:12:27.007 --> 00:12:29.607 More AIs means less shallow bugs. 00:12:29.687 --> 00:12:36.087 More AIs means, yeah, exactly. And the upshot is our software will get more secure. 00:12:36.367 --> 00:12:40.007 Yeah, so when they fixed this, they didn't actually fix the IPsec part where 00:12:40.007 --> 00:12:44.487 it was kind of cheating and using that little scratch part. They fixed the in-place 00:12:44.487 --> 00:12:49.087 optimization from 2017 so that it never passes this reference anymore. 00:12:49.187 --> 00:12:52.467 So there's no longer some sort of coupling between the input and output and 00:12:52.467 --> 00:12:53.587 reusing some of those stuff. 00:12:53.727 --> 00:12:57.687 And the part that's so funny is in the commit message, they note there's actually 00:12:57.687 --> 00:13:01.147 no benefit in operating in-place in this way since the source and destination 00:13:01.147 --> 00:13:02.207 come from different mappings. 00:13:02.407 --> 00:13:04.587 So we didn't even really need to be doing this. 00:13:05.367 --> 00:13:08.367 I have a question for you, Wes. It's more of maybe your opinion. 00:13:08.367 --> 00:13:13.607 Given this has come out now and is somewhat obscure for the kernel, 00:13:14.167 --> 00:13:18.807 any thoughts on, given the kernel's complexity, like how many of these little 00:13:18.807 --> 00:13:20.167 things are just hiding in there? 00:13:20.287 --> 00:13:21.027 That's a good question. 00:13:21.207 --> 00:13:21.467 Yeah. 00:13:21.847 --> 00:13:22.627 It's hard to estimate. 00:13:22.787 --> 00:13:23.847 And think about every library... 00:13:24.987 --> 00:13:28.027 every service, every service on the internet that listens remotely. 00:13:28.367 --> 00:13:31.067 But we probably have been needing to do this for a long time. 00:13:31.067 --> 00:13:33.527 We probably should have had a lot more humans focused on this, 00:13:33.587 --> 00:13:34.647 but we just weren't doing it. 00:13:34.747 --> 00:13:35.287 It's a hard problem. 00:13:35.487 --> 00:13:38.747 It is also right, like that where, you know, and maybe using the assistance 00:13:38.747 --> 00:13:42.567 where you can, whatever, to try and up your posture and do things more by default. 00:13:42.567 --> 00:13:47.027 Because like, if you do things like, you know, okay, fewer permissions on set 00:13:47.027 --> 00:13:50.767 UID binaries, or you try to take as much advantage of all the hardening that 00:13:50.767 --> 00:13:54.567 systemd services offers by default. so that it sees less of the system and has 00:13:54.567 --> 00:13:56.547 less access to things, even read-only. 00:13:56.767 --> 00:13:59.847 There are tools we have, and we need to grow better ones. 00:14:00.107 --> 00:14:03.047 But I think it just means defense in depth will become even more important. 00:14:03.267 --> 00:14:06.627 I do think when we see these, a lot of times, folks that have taken the time 00:14:06.627 --> 00:14:11.187 to actually have a solid SE Linux setup and actually use it have been validated 00:14:11.187 --> 00:14:13.947 over and over again that it's worth the effort because they end up protected 00:14:13.947 --> 00:14:14.867 from these kinds of things. 00:14:18.161 --> 00:14:21.221 I want to thank our members for supporting this here podcast. 00:14:21.221 --> 00:14:25.981 It really has made quite the difference recently as we're very lean on the advertising 00:14:25.981 --> 00:14:28.301 and we're trying to turn that around. 00:14:28.341 --> 00:14:31.741 But in the meantime, the members and the boosters are really keeping us going. 00:14:31.921 --> 00:14:36.721 If you sign up to you get quite the bootleg this week, we had a chance to go 00:14:36.721 --> 00:14:39.701 to Valve and we tell that story in the bootleg. 00:14:39.841 --> 00:14:43.341 So go to linuxunplugged.com slash membership and sign up. 00:14:43.381 --> 00:14:46.221 You can get the bootleg edition or the ad-free edition, whichever fits your 00:14:46.221 --> 00:14:47.881 schedule better because the bootleg is kind of long. 00:14:48.161 --> 00:14:51.741 And, of course, you can support all the shows, including the launch, 00:14:52.021 --> 00:14:55.461 This Week in Bitcoin, and more at jupyter.party, and you get special access 00:14:55.461 --> 00:14:58.201 to all of them, including the bootleg for this here show. 00:14:58.381 --> 00:15:02.401 You can also boost an episode with Fountain FM, and that gives a signal on what 00:15:02.401 --> 00:15:05.321 you thought about that particular topic, how we did, the value, et cetera. 00:15:05.501 --> 00:15:08.461 And it also goes to each one of us directly and to Editor Drew, 00:15:08.841 --> 00:15:10.781 as well as the developer, and the podcast index. 00:15:11.021 --> 00:15:12.981 So it's a nice way to kind of put it all around. 00:15:13.241 --> 00:15:14.401 Support all the great things. 00:15:14.501 --> 00:15:17.761 Mm-hmm. And it's nice, too, because it's all transparent. It's open source, free software stack. 00:15:18.381 --> 00:15:22.681 And like I like to say, the contract is in the RSS feed, so you as an audience 00:15:22.681 --> 00:15:24.121 get to see exactly where everything goes. 00:15:24.421 --> 00:15:28.161 But we appreciate the memberships as our foundation and the boosts as our signal. 00:15:31.856 --> 00:15:36.976 Well, this week, we had a chance to chat with John Seeger. He is the VP of Engineering 00:15:36.976 --> 00:15:38.576 over at Canonical for Ubuntu. 00:15:38.876 --> 00:15:46.596 And, of course, the big news is 2604 is out. And this is one of the LTS releases, the 11th LTS release. 00:15:47.296 --> 00:15:50.316 Yeah, and this, as they often are, was a focus on stability. 00:15:50.316 --> 00:15:53.376 But a few bits of innovation worked in there. 00:15:53.636 --> 00:15:56.936 We have a couple of highlights in here, like TPM-backed full disk encryption. 00:15:57.696 --> 00:15:58.776 Wayland's now the default. 00:15:58.776 --> 00:16:01.236 Obviously, they're now like, they're shipped in the interim, 00:16:01.376 --> 00:16:04.936 but now they're actually shipping some of that Rust stuff in the user land and 00:16:04.936 --> 00:16:07.036 the core utils, which is exciting. 00:16:07.216 --> 00:16:11.796 And something I want to chat with John about, too, is they've done that thing 00:16:11.796 --> 00:16:15.376 they do in Ubuntu where they one-click something, kind of, and for now it's CUDA. 00:16:16.016 --> 00:16:17.976 And Rock M. I don't hate on AMD. 00:16:18.116 --> 00:16:22.656 No, I love Rock M. But it's just that there's so much demand out there, 00:16:22.676 --> 00:16:24.296 and you combine it with new hardware. 00:16:24.656 --> 00:16:27.516 It's just, that's a really nice thing, especially for an LTS release. 00:16:28.216 --> 00:16:32.776 And then John also made posts recently about an AI strategy that they're taking 00:16:32.776 --> 00:16:35.156 on at Canonical, which made a lot of news. 00:16:35.256 --> 00:16:37.576 So I think that's something we could chat with him about as well. 00:16:37.736 --> 00:16:40.076 So John is joining us on the Unplugged program. 00:16:42.950 --> 00:16:47.530 We didn't scare him away last time. Returning to the show, John Seeger from 00:16:47.530 --> 00:16:49.950 Canonical. John, welcome back to the Unplugged program. 00:16:50.470 --> 00:16:51.350 Hello there, thanks for having me. 00:16:51.550 --> 00:16:55.870 Hello and congratulations on the LTS release, which, rumor has it, 00:16:55.950 --> 00:16:58.650 is also the first LTS under your watch. 00:16:58.830 --> 00:17:03.730 That's right, yeah. So the questing release was my first kind of interim that 00:17:03.730 --> 00:17:07.670 I had, I guess, a full cycle, and then this is the first LTS, yeah. 00:17:07.910 --> 00:17:11.150 Okay, is it a little different this time? I mean, does it feel different? 00:17:11.150 --> 00:17:13.010 being on the inside hit different john. 00:17:13.010 --> 00:17:15.710 It uh i mean from the 00:17:15.710 --> 00:17:18.710 perspective of like the release and planning and uh the whole 00:17:18.710 --> 00:17:21.510 we do this sprint in london where the release team come along and we get everything 00:17:21.510 --> 00:17:24.890 together it all felt kind of similar but just with a little bit more pressure 00:17:24.890 --> 00:17:29.790 to you know it kind of has to fly a little bit quicker and be a bit less or 00:17:29.790 --> 00:17:35.630 even more bug free i suppose than an interim but we also decelerate slightly 00:17:35.630 --> 00:17:40.530 the pace of change and we we make the call slightly differently as we get close to the release date, 00:17:40.570 --> 00:17:43.930 whether or not something's going to make it based on our view on whether it's 00:17:43.930 --> 00:17:45.550 going to cause any instability or issues. 00:17:45.690 --> 00:17:49.390 Whereas, you know, the early interims, we would maybe be a little bit more. 00:17:50.323 --> 00:17:55.583 Risky so i i do hear that a lot but is there still something in the lts release 00:17:55.583 --> 00:17:59.923 that is like the thing that you're excited about releasing do you like i'm sure 00:17:59.923 --> 00:18:02.163 that happens with the interim releases where you're like this is the thing we're 00:18:02.163 --> 00:18:05.043 really looking at but does that happen with an lts release or is it all old 00:18:05.043 --> 00:18:06.383 by then you just it's all known. 00:18:06.383 --> 00:18:14.323 And there's nothing new that we've never done in this release aside from the shipping rock m and cuda. 00:18:14.323 --> 00:18:16.503 Oh part of canonical sure but. 00:18:16.503 --> 00:18:22.923 Of course it is also the first time that everybody or 90% of our users will 00:18:22.923 --> 00:18:25.443 get the Rust core utils and the Rust sudo. 00:18:25.783 --> 00:18:29.363 And so as much as I'm confident in those changes, we've done testing, 00:18:29.543 --> 00:18:32.823 we've had lots of feedback, there are going to be a whole bunch more people 00:18:32.823 --> 00:18:35.003 getting that over the next few weeks. 00:18:35.363 --> 00:18:40.343 Right. Now it's really getting out to a whole new group of users, the real base. 00:18:40.403 --> 00:18:44.123 Yeah, I can kind of tell in some of your writing that there's obviously the 00:18:44.123 --> 00:18:47.643 regular sort of professional pride in releasing a nice product and running a 00:18:47.643 --> 00:18:51.743 good team and all that but it feels like you all get the you know just how much 00:18:51.743 --> 00:18:57.203 of the internet and the cloud sort of is underpinned especially by these lts releases it's. 00:18:57.203 --> 00:19:01.083 One of honestly one of the most exciting things about working on ubuntu in my 00:19:01.083 --> 00:19:07.523 view i quite like that sort of sense of impending doom if you get it wrong uh keeps you sharp. 00:19:07.523 --> 00:19:10.383 Yeah it means your work matters clearly okay. 00:19:10.383 --> 00:19:14.243 Let's keep talking about the rest stuff for a minute because I saw a recent, 00:19:14.763 --> 00:19:17.983 I think it was a post on the community discourse that, 00:19:19.113 --> 00:19:22.213 I may be getting some of the details wrong, so John, so please fill in the details, 00:19:22.373 --> 00:19:27.253 that you hired a third-party audit firm to go through some of the Rust core utils. 00:19:27.573 --> 00:19:31.953 They found some stuff, and now you guys are working through bug fixing that. 00:19:32.033 --> 00:19:33.953 Can you work me through, because obviously I'm a little vague on the details, 00:19:34.073 --> 00:19:34.753 can you work me through that? 00:19:35.853 --> 00:19:39.033 So when we first committed to doing this, our security team, 00:19:39.153 --> 00:19:43.453 which is pretty large at this point, as you would imagine, were keen to take a look and double check. 00:19:43.453 --> 00:19:47.273 They found a few issues themselves, and as a kind of abundance of caution, 00:19:47.393 --> 00:19:51.373 we decided to fund a third-party security audit with a company called Zellic. 00:19:51.913 --> 00:19:55.033 They found a bunch of stuff, fixed a bunch of stuff, worked with Sylvest, 00:19:55.213 --> 00:19:57.173 who runs the Utils project. 00:19:57.733 --> 00:20:01.313 We were pretty happy, but we thought we would go again, do another round of 00:20:01.313 --> 00:20:05.653 security audit, and also get some assistance from Zellic on patching in some 00:20:05.653 --> 00:20:07.533 cases. I found a bunch more stuff. 00:20:08.013 --> 00:20:11.193 They were pretty great to work with. Sylvest, I have to say, 00:20:11.613 --> 00:20:13.173 did a phenomenal job. I think we, 00:20:14.066 --> 00:20:18.326 piled a lot on his plate. We gave some funding to the project and we tried to 00:20:18.326 --> 00:20:21.606 be as careful as possible, but we found a lot of issues. 00:20:21.746 --> 00:20:25.966 There was a lot of bug reports from our users, et cetera, and he handled it superbly. 00:20:26.206 --> 00:20:32.086 And so where we've landed is we patched the vast majority of the vulnerabilities 00:20:32.086 --> 00:20:34.106 that we found or the issues that we found. 00:20:34.646 --> 00:20:39.906 There are three utilities which are still affected, which is CP, Move, and RM. 00:20:40.126 --> 00:20:44.426 And so we chose not to make those the default in the LTS, just sort of out of 00:20:44.426 --> 00:20:47.346 an abundance of caution. So this is a time of check, time of use error. 00:20:48.426 --> 00:20:51.186 They're all linked to kind of the same problem and will get patched over the 00:20:51.186 --> 00:20:54.566 coming weeks and we will then switch those utilities out for the next interim. 00:20:54.906 --> 00:20:57.686 I wonder if it's, you mentioned that specific vulnerability. 00:20:57.886 --> 00:21:01.126 I wonder if these rounds have been informative around sort of the things that 00:21:01.126 --> 00:21:04.706 like the Rust improvements can address and the things that, you know, 00:21:04.766 --> 00:21:07.806 still just need to be addressed via, you know, more traditional software techniques. 00:21:08.586 --> 00:21:11.986 Right, that's it. Writing Rust code does not mean bug-free. 00:21:12.686 --> 00:21:16.306 means a much lower likelihood of memory safety violations were used correctly, 00:21:16.686 --> 00:21:18.166 and this is kind of proof of that. 00:21:18.446 --> 00:21:22.426 Although not all of the issues we found were exclusive to the Rust versions. 00:21:22.446 --> 00:21:25.306 We found issues in the GNU versions, and if you actually look at the latest 00:21:25.306 --> 00:21:31.286 GNU Core Utils release, Sylvester's one of the most prolific contributors to that release. 00:21:31.826 --> 00:21:35.946 So it's nice. There's nowhere near as much animosity as perhaps people might 00:21:35.946 --> 00:21:42.026 suggest. It's quite collaborative. um the game here is not to discredit the 00:21:42.026 --> 00:21:46.126 new core utils as if we find things that can benefit them that work goes upstream too. 00:21:46.126 --> 00:21:49.066 So that's that's great i mean especially because right having having 00:21:49.066 --> 00:21:52.306 two implementations is just all the better for the whole ecosystem it 00:21:52.306 --> 00:21:55.506 did strike me too you touched on you know working upstream and just especially 00:21:55.506 --> 00:21:58.826 with the the rust version just it's one thing to get funding and doing all the 00:21:58.826 --> 00:22:01.366 support that y'all are offering which is wonderful but it's kind of another 00:22:01.366 --> 00:22:05.966 to then i don't know implicitly be willing to accept some of your priorities 00:22:05.966 --> 00:22:09.806 if in like an upstream way of you know being able to prioritize those things 00:22:09.806 --> 00:22:11.366 and keep the working relationship. 00:22:12.361 --> 00:22:15.241 And this was, and I'll be honest, it got tough a couple of times. 00:22:15.381 --> 00:22:19.321 You know, there was a point midway through this cycle where I think we didn't 00:22:19.321 --> 00:22:22.361 quite get that balance right or our communication wasn't perfect and we had 00:22:22.361 --> 00:22:24.941 a bit of a shaky moment with Sylvester and we got on a call and we, 00:22:25.061 --> 00:22:28.841 you know, made it better. We found a little bit more funding to help. 00:22:29.481 --> 00:22:32.121 But it is hard. And this is why when we started this project, 00:22:32.141 --> 00:22:35.341 before we ever announced it, we started with conversations for these projects 00:22:35.341 --> 00:22:39.021 to say, we'd love to do this, but it could get kind of intense. 00:22:39.861 --> 00:22:43.921 You know, what do you think? Like, is the project in a position to support this? 00:22:45.101 --> 00:22:50.741 You know, how could we help? What funding, what support could we try and extend 00:22:50.741 --> 00:22:55.261 where we have the resources to kind of make it as successful as possible and 00:22:55.261 --> 00:22:56.381 also not bury the project? 00:22:56.521 --> 00:23:00.821 It's no good for us to switch it in the LTS if the project then flames out and disappears. Sure. 00:23:01.161 --> 00:23:04.621 Yeah. Okay. I know we've touched on this before, but somebody listening maybe 00:23:04.621 --> 00:23:07.201 that hasn't heard our previous conversation, they've got to be asking themselves, 00:23:07.201 --> 00:23:10.161 why go through the trouble? You've already got these great utils. 00:23:10.301 --> 00:23:12.841 They've been around for 30 years. Why not just use those? John, 00:23:13.001 --> 00:23:15.821 why are you going through all this trouble for this buggy software? 00:23:17.041 --> 00:23:22.121 It is. There are a lot of answers to that question. So one is it's a bit of a statement of intent. 00:23:22.781 --> 00:23:29.061 So I 90 some 90 percent of vulnerabilities in the software world are due to 00:23:29.061 --> 00:23:33.261 memory safety violations. and so I think if we move to a language where that 00:23:33.261 --> 00:23:35.821 becomes very difficult or impossible, that's great. 00:23:36.121 --> 00:23:40.601 And you could argue that starting with the core utils maybe isn't the best target, 00:23:40.761 --> 00:23:44.801 but starting with the core utils is kind of the statement in a sense. 00:23:45.081 --> 00:23:46.321 There's also loads of them. 00:23:47.370 --> 00:23:53.690 And I think it is a way of us getting more people engaged with open source development. 00:23:53.930 --> 00:23:57.210 There's lots of new graduates who are learning Rust at university and think Rust is very exciting. 00:23:57.470 --> 00:24:02.990 And we need to keep thinking about ways to keep people involved in open source 00:24:02.990 --> 00:24:07.030 and having them learn or work in languages they're interested in with modern 00:24:07.030 --> 00:24:08.930 tooling, with a vibrant community is one way. 00:24:09.650 --> 00:24:11.030 There's the cynical angle, which 00:24:11.030 --> 00:24:13.690 was kind of highlighted to me after we committed to it, if I'm honest. 00:24:13.830 --> 00:24:17.270 The cynical angle is we get paid for fixing security vulnerabilities in code. 00:24:17.370 --> 00:24:21.130 Like we, long-term support and security maintenance is how Canonical makes its money. 00:24:21.250 --> 00:24:25.770 And one assumes that over the next 15 years, we will have to address fewer with 00:24:25.770 --> 00:24:29.710 this change, though we bluntly have made quite a large upfront investment in 00:24:29.710 --> 00:24:30.910 this. So I think it'll be a few years. 00:24:31.270 --> 00:24:35.510 But it is seen as a large, it's seen as an upfront investment in perhaps a long-term 00:24:35.510 --> 00:24:38.070 payoff for support a decade down the road. 00:24:38.250 --> 00:24:43.150 I think it will be personally. I, you know, that wasn't particularly front of 00:24:43.150 --> 00:24:46.570 my mind in the decision-making calculus. What was front in my mind in the decision-making 00:24:46.570 --> 00:24:49.990 was, I want to ship the most resilient operating system I can. 00:24:50.630 --> 00:24:54.930 And the fewer things, or I'll say the more things that are written in a memory-safe 00:24:54.930 --> 00:24:58.250 language that are high-performance, that are well-tested, the better. 00:24:59.770 --> 00:25:02.890 So Core Utils is one of those projects where there was quite high conformance 00:25:02.890 --> 00:25:03.810 with the original test suite. 00:25:04.090 --> 00:25:06.930 Pseudo-RS was another of those where it was quite a high-quality, 00:25:07.070 --> 00:25:08.350 quite a mature project already. 00:25:08.350 --> 00:25:12.530 the next one will be NTP DRS, which I'm actually really excited about because 00:25:12.530 --> 00:25:17.670 I think that'll be the first time we get a single binary that can handle NTP, 00:25:18.050 --> 00:25:23.150 NTS, and PTP all in one utility that is both the client and the server. 00:25:23.350 --> 00:25:25.650 Whereas previously, it has been a bit of a dance. 00:25:26.050 --> 00:25:30.550 So that's part of the work that we're funding on the way to rusty time syncing in Ubuntu. 00:25:31.890 --> 00:25:32.870 Rusty time syncing. 00:25:33.010 --> 00:25:35.390 Well, and that seems exactly kind of what you said, right? You're interested 00:25:35.390 --> 00:25:39.070 in a resilient, robust, well-functioning operating system. 00:25:39.230 --> 00:25:41.650 And, you know, most of us don't usually have to think about it, 00:25:41.710 --> 00:25:45.430 but especially in distributed systems, keeping the time is of critical importance. 00:25:46.500 --> 00:25:49.860 Right. And another target is going to be compression libraries. 00:25:50.140 --> 00:25:56.000 And the bit that genuinely gets me fired up here is, okay, compression could 00:25:56.000 --> 00:25:57.200 be a little faster, maybe. 00:25:57.660 --> 00:26:02.080 What's even more exciting is the energy usage? You think the scale of Ubuntu 00:26:02.080 --> 00:26:04.780 and how many machines are running Ubuntu. 00:26:05.080 --> 00:26:09.300 Imagine if we took 1% energy usage of every single one of those machines on the planet. 00:26:09.620 --> 00:26:13.340 Now, we're not going to get there by changing CP and RM and move. 00:26:13.480 --> 00:26:17.640 And we maybe even won't get there with compression or a single compression algorithm. 00:26:17.840 --> 00:26:22.640 But cumulatively, over the space of five years, we could genuinely make a meaningful 00:26:22.640 --> 00:26:25.940 difference to the idle consumption of a machine anywhere on the planet, 00:26:26.000 --> 00:26:28.180 which I think is an interesting goal. 00:26:28.180 --> 00:26:30.540 Yeah, it's these are the kind of 00:26:30.540 --> 00:26:35.400 goals that you don't necessarily start an operating system having in mind. 00:26:35.520 --> 00:26:40.460 But something like Ubuntu being around so long, you can start to have the luxury 00:26:40.460 --> 00:26:44.620 of having these greater goals in mind. So I like hearing that. 00:26:44.880 --> 00:26:50.100 I do have a question about Rust. You mentioned an obvious reason to adopt Rust, 00:26:50.260 --> 00:26:52.040 the memory safety aspect of it. 00:26:52.040 --> 00:27:00.100 I'm curious how that has affected the team in adopting Rust and also why Rust 00:27:00.100 --> 00:27:01.760 if you ignore the memory safety? 00:27:01.980 --> 00:27:03.920 There are other potential languages out there. 00:27:05.080 --> 00:27:07.620 How's it going, maybe, is the general way of putting all that? 00:27:07.940 --> 00:27:12.800 It's going. I would say mixed. With any other push for a new tooling, 00:27:13.100 --> 00:27:17.180 there are people who are really excited by it and people who are less excited by it. 00:27:17.440 --> 00:27:20.580 Our foundation's team have really leaned in here. We're doing some work on boot 00:27:20.580 --> 00:27:21.960 at the moment, which will be in Rust. 00:27:23.480 --> 00:27:26.180 I am trying to get us away from, 00:27:27.032 --> 00:27:31.772 in as many places as possible from things that are becoming more antiquated. 00:27:32.212 --> 00:27:36.032 And so I have asked the team to stop writing new C code. 00:27:36.192 --> 00:27:39.212 We still have to keep maintaining old C code. That's going to happen for a long 00:27:39.212 --> 00:27:42.612 time. We need to maintain our, you know, app is still written in C++, for example. 00:27:43.112 --> 00:27:46.052 Although we'll start to introduce Rust, I suspect, in the next year or so. 00:27:46.772 --> 00:27:50.512 But when we're writing new code and when we're looking at bits of tooling that 00:27:50.512 --> 00:27:53.812 we use for building the distro, I would really prefer it if we stopped using 00:27:53.812 --> 00:27:59.012 C. we ideally didn't use bash and python bash is great for small scripts but, 00:27:59.655 --> 00:28:01.835 I don't know, like as they get bigger and bigger and bigger, 00:28:01.895 --> 00:28:03.115 they get harder to maintain and test. 00:28:03.475 --> 00:28:08.095 Python, language is nice, bit of a packaging distribution nightmare. 00:28:08.375 --> 00:28:13.875 And so I'm steering my teams at the moment towards generally go for where things 00:28:13.875 --> 00:28:16.235 are very networky or very concurrent. 00:28:16.715 --> 00:28:20.835 So programming language designed for doing network, networking and concurrency. 00:28:21.095 --> 00:28:24.275 And I don't think that's kind of low level systems programming towards Rust. 00:28:24.495 --> 00:28:27.335 I think Rust is the best option we have right now as 00:28:27.335 --> 00:28:32.835 a replacement or a successor to the c and c++ ecosystem so we we don't tend 00:28:32.835 --> 00:28:36.215 to adopt loads and loads and loads of programming languages at canonical we're 00:28:36.215 --> 00:28:39.135 not that big it wouldn't be very helpful if we had one team doing haskell and 00:28:39.135 --> 00:28:41.775 another team doing erlang and one doing rust and one doing zig and one doing 00:28:41.775 --> 00:28:45.175 java so we try to be quite deliberate and generally those languages at canonical 00:28:45.175 --> 00:28:46.935 are python go and rust well. 00:28:46.935 --> 00:28:49.955 It makes sense that you can kind of like rust is one of those languages now 00:28:49.955 --> 00:28:53.095 that can target a lot of things between like a modern tool chain that, 00:28:53.235 --> 00:28:56.255 you know, I'm sure a bunch of, and Canuck has a lot of experience trying to 00:28:56.255 --> 00:29:00.315 find the limited pool of developers who are up to date on the sort of esoteric 00:29:00.315 --> 00:29:03.115 desktop Linux, you know, how you put together a distro. 00:29:03.395 --> 00:29:07.535 So if you have that wider, but you also get, right, like abstractions that don't 00:29:07.535 --> 00:29:10.535 have as much runtime cost, and you can have security benefits. 00:29:10.655 --> 00:29:13.275 So you kind of get this all in a package, and there's just not that many other 00:29:13.275 --> 00:29:15.675 languages right now that compete with that. 00:29:15.875 --> 00:29:19.235 Yeah, and I think the Rust Foundation, the core team take it very seriously. 00:29:19.335 --> 00:29:22.295 So we recently joined the Rust Foundation as gold members. 00:29:22.415 --> 00:29:29.315 And that was partially to support the ecosystem and the folks who develop the 00:29:29.315 --> 00:29:33.095 language, but also with a bit of an agenda of our own, which is to try and work 00:29:33.095 --> 00:29:36.495 with them on things like the crates.io security story, 00:29:36.895 --> 00:29:40.355 on things like hopefully enhancing the standard library. 00:29:40.535 --> 00:29:45.375 I have some opinions about where Rust could go with that and potentially some 00:29:45.375 --> 00:29:48.715 of the mechanics around things like async.io or async, sorry. 00:29:48.715 --> 00:29:54.115 So we joined the foundation to give funding, but also to try and contribute 00:29:54.115 --> 00:29:57.955 expertise from Canonical where we have them in the right discussions, that kind of thing. 00:29:58.355 --> 00:30:02.575 And they've been, we only joined formally in 2018. 00:30:03.207 --> 00:30:06.467 When was it? Whenever KubeCon was February, I think, February or March. 00:30:07.867 --> 00:30:11.567 But they've been great to work with so far. And I'm looking forward to seeing where that goes. 00:30:11.747 --> 00:30:16.887 Well, there's a lot in there. I want to bring us back to Ubuntu a bit, 00:30:16.887 --> 00:30:21.187 because just before we got on the horn yesterday or so, 00:30:21.967 --> 00:30:28.827 you posted a post on the discourse that was titled The Future of AI in Ubuntu. 00:30:29.227 --> 00:30:33.027 And it's a rundown of Canonical's approach. 00:30:33.207 --> 00:30:38.647 your thoughts around integration of these toolings, how to get the balance right, and all of that. 00:30:38.767 --> 00:30:43.467 And this, of course, it's a huge topic. AI is such a huge, encompassing term 00:30:43.467 --> 00:30:47.887 for a bunch of different technologies that users are going to want to use on top of Ubuntu. 00:30:49.447 --> 00:30:52.967 So, John, can you kind of walk us through what the announcement is here and what the plan is? 00:30:53.287 --> 00:30:57.387 Yeah, so, I mean, I'll preface this by saying, like, I knew this was going to be spicy. 00:30:57.847 --> 00:30:58.887 Yeah, I imagine, right? 00:30:59.027 --> 00:31:00.787 This is, like... 00:31:00.787 --> 00:31:02.507 If you thought the rough stuff was spicy. 00:31:02.507 --> 00:31:07.167 Right, like I figured I'd annoyed all of the people I probably could with that, 00:31:07.267 --> 00:31:11.367 so it's time to shift on something even more exclusive. So I think the point here is. 00:31:12.985 --> 00:31:16.905 Anytime there's a change like this, and I see people reacting, 00:31:17.245 --> 00:31:20.285 I always think, I try to understand where they're coming from. 00:31:20.405 --> 00:31:25.805 And the thing that I would try to remind people of is whatever your feeling 00:31:25.805 --> 00:31:29.105 is valid, like if you really don't want AI in your operating system, 00:31:29.205 --> 00:31:31.045 that's a perfectly acceptable position. 00:31:31.885 --> 00:31:38.385 But what I try to articulate in a way that isn't too brash is Ubuntu is not for me. 00:31:38.605 --> 00:31:41.545 It's not for you. Ubuntu is for millions of people. 00:31:41.905 --> 00:31:46.465 And for everyone who is desperately trying to avoid AI, who is an Ubuntu user, 00:31:46.825 --> 00:31:49.385 there are probably as many people who can't get it quick enough. 00:31:49.705 --> 00:31:53.405 And so the challenge that we have is always like, how do we walk that line? 00:31:54.965 --> 00:31:58.465 Balancing either two sides of a feature like AI, but more broadly, 00:31:58.705 --> 00:32:02.545 making an operating system that is appealing to educators and students, 00:32:02.965 --> 00:32:06.205 to two-man startups, to Fortune 500 companies. 00:32:06.545 --> 00:32:12.065 It's a difficult line to walk. And so we haven't pounced on this too quickly. 00:32:12.345 --> 00:32:19.265 And really, this is the first post to open the conversation about how AI will 00:32:19.265 --> 00:32:20.645 play a part in Ubuntu's future. 00:32:20.785 --> 00:32:25.685 It will play a part in Ubuntu's future, partly because I truly believe there 00:32:25.685 --> 00:32:28.025 is some value in the technology when it's applied correctly. 00:32:28.265 --> 00:32:32.965 And partly because it's kind of difficult not to in 2026. Like customers, 00:32:33.245 --> 00:32:35.565 partners are asking us what our plan is. 00:32:37.352 --> 00:32:40.972 So we've thought about this quite a lot. We've taken what I think is a really 00:32:40.972 --> 00:32:42.612 measured approach at Canonical. 00:32:42.772 --> 00:32:48.372 You see lots of, frankly, quite scary things on the internet about companies 00:32:48.372 --> 00:32:53.012 setting token quotas for people and measuring the percentage of code they write with AI. 00:32:53.212 --> 00:32:55.492 And I don't really believe in that. 00:32:56.292 --> 00:32:59.652 That doesn't seem like the right approach. We're taking a more careful approach. 00:32:59.812 --> 00:33:04.432 We are heavily, as of this year, heavily encouraging, incentivizing our folks 00:33:04.432 --> 00:33:10.792 to go at the team level to go pick a vendor and a tool, ideally an open source harness if possible. 00:33:10.952 --> 00:33:12.972 But if a team really wants to use Claude, we'll let them use Claude, 00:33:13.312 --> 00:33:15.532 understand it, get to know it. 00:33:16.512 --> 00:33:21.392 And then that way we can get a sense of which are the tools that work for Canonical, et cetera. 00:33:23.332 --> 00:33:27.592 And we'll ramp up our expectations. It'll be start with experiment with something, 00:33:27.892 --> 00:33:30.432 then it'll be demonstrate that you've built a bit of a habit around it, 00:33:30.612 --> 00:33:33.952 perhaps demonstrate that you've been able to accelerate a roadmap feature with 00:33:33.952 --> 00:33:36.792 it, and then demonstrate that there There is rigor around it in terms of running 00:33:36.792 --> 00:33:41.332 evals and really understanding how it can be embedded into automation workflows, 00:33:41.912 --> 00:33:44.912 potentially things like Claws, I know you guys have been having fun with. 00:33:46.092 --> 00:33:49.212 These are all possibilities, but not things to be taken lightly. 00:33:49.712 --> 00:33:53.252 There was news this week of, I forget the name of the company, 00:33:53.772 --> 00:33:58.232 an AI bot that supposedly went rogue and took out production infrastructure. 00:33:58.412 --> 00:34:01.812 The AI bot didn't go rogue. The AI bot was given far too broad of permissions, 00:34:01.952 --> 00:34:03.232 right? That's what happened there. 00:34:03.352 --> 00:34:04.452 And probably vague instructions. 00:34:05.172 --> 00:34:07.832 All right, so our challenge is how do we... 00:34:08.960 --> 00:34:11.920 Like if we're going to, how should we integrate AI into Ubuntu? 00:34:12.020 --> 00:34:13.020 And I see this in two camps. 00:34:13.260 --> 00:34:17.480 I laid this out in the post as kind of implicit features and explicit features. 00:34:17.840 --> 00:34:21.940 And the way I would think about this is implicit features are enhancements to 00:34:21.940 --> 00:34:23.260 things the OS already did. 00:34:23.660 --> 00:34:27.800 So this could be screen reading, could be speech to text or text to speech, 00:34:27.980 --> 00:34:29.980 could be follow focus on a camera, 00:34:30.580 --> 00:34:34.400 things that people have kind of become accustomed to being enhanced by ML. 00:34:35.040 --> 00:34:39.940 And I wouldn't necessarily call those AI features, even as we add models to 00:34:39.940 --> 00:34:43.760 those features, I wouldn't necessarily be decorating them as AI features. 00:34:43.980 --> 00:34:44.240 Right. 00:34:44.420 --> 00:34:48.900 But think about, you know, from the perspective of a user who is hard of hearing 00:34:48.900 --> 00:34:53.160 or visually impaired in some way, this could be a huge game changer. 00:34:53.540 --> 00:34:53.620 Right. 00:34:53.740 --> 00:34:57.020 Screen readers are pretty tough to use. And imagine you could point a camera 00:34:57.020 --> 00:34:58.820 at the screen instead and ask it, I don't know what's going on. 00:34:58.940 --> 00:35:01.600 And it's an area in particular that Linux could use some help with, 00:35:01.700 --> 00:35:02.880 right? It's an area that... 00:35:02.880 --> 00:35:03.220 For sure. 00:35:03.400 --> 00:35:03.560 Yeah. 00:35:03.560 --> 00:35:07.960 For sure. So then the explicit side is a little bit harder to quantify because 00:35:07.960 --> 00:35:09.960 I don't want to tell you what we're planning yet because we're still planning it. 00:35:11.660 --> 00:35:14.960 The explicit is much more like this is an AI feature. 00:35:15.860 --> 00:35:21.320 And I would describe this as features that introduce a new mental model or a 00:35:21.320 --> 00:35:23.980 new way of working with your machine that you didn't have before. 00:35:24.120 --> 00:35:26.900 Like you guys have already explored this. You're sending telegram messages and 00:35:26.900 --> 00:35:30.120 matrix messages to a bot that is doing things on your behalf. 00:35:30.120 --> 00:35:33.940 That is, like, you have not been able to Telegram message your computer before in such a rich way. 00:35:34.080 --> 00:35:38.200 That's a new, like, mental model for interacting with the machine. 00:35:38.420 --> 00:35:41.340 Standing up infrastructure via Telegram, basically, you know? 00:35:41.620 --> 00:35:41.920 Right. 00:35:42.100 --> 00:35:42.400 It's a new area. 00:35:42.640 --> 00:35:47.700 But also, like, Linux is so wildly powerful, but also kind of vexing for people 00:35:47.700 --> 00:35:49.140 who aren't experienced. Yeah. 00:35:49.940 --> 00:35:55.080 And imagine if, you know, you could bring up a box and say, my Wi-Fi is not working. 00:35:55.280 --> 00:35:58.720 Why isn't my Wi-Fi working? Can you help me fix it? Or, um... 00:35:59.672 --> 00:36:02.792 I don't know. I'd like to run a Postgres container. Can you help me with that? 00:36:03.032 --> 00:36:04.012 Right, right. 00:36:04.312 --> 00:36:08.552 And interestingly, lots of the things we've been working on over time, 00:36:08.592 --> 00:36:12.272 I don't think we could have necessarily predicted this much of a fit, 00:36:12.392 --> 00:36:15.432 but things like snaps turn out to be kind of a boon here. 00:36:15.692 --> 00:36:20.792 Like individual tools or models confined with individual profiles of confinement 00:36:20.792 --> 00:36:23.392 that say, this thing is allowed to read these directories, access the camera, 00:36:23.932 --> 00:36:26.872 you know, do this on the system. 00:36:27.032 --> 00:36:30.112 And we can have a bunch of them on the machine with very, very tightly scoped 00:36:30.112 --> 00:36:33.492 permissions using a mechanism that we trust that is in the kernel that is AppArmor. 00:36:35.092 --> 00:36:37.492 And one of the questions that got asked a lot on that thread, 00:36:37.612 --> 00:36:42.792 and I posted a follow-up, was about would we do an AI kill switch in Ubuntu? 00:36:43.312 --> 00:36:47.792 Which I think controversially, I answered no to. And I answered no to because 00:36:47.792 --> 00:36:49.732 I don't think we can hand on heart honestly do that. 00:36:49.972 --> 00:36:53.892 There are so many ways which you can consume software on a machine. 00:36:54.052 --> 00:36:57.212 What happens if I say, we're going to ship a kill switch, you turn the kill 00:36:57.212 --> 00:37:00.972 switch on, and then Mozilla ship a package update in their official dev that you just smell at them. 00:37:01.032 --> 00:37:03.832 Yeah, or a driver even. I mean, it could happen at any level. 00:37:04.112 --> 00:37:04.292 Or a driver. 00:37:04.532 --> 00:37:05.032 Yeah, it could be. 00:37:05.032 --> 00:37:08.072 Unless you're proxying every request that any system makes. Like, 00:37:08.132 --> 00:37:09.012 how could you even have that? 00:37:09.192 --> 00:37:13.552 It could, yeah, it could just sneak in. Yeah, that's where we're at now. And for better or worse. 00:37:14.232 --> 00:37:17.312 Yeah. So how do you address that? Because it does seem like a user, 00:37:17.772 --> 00:37:20.192 there is some sort of user demand there for that. 00:37:20.432 --> 00:37:23.112 Either for performance or for privacy or a variety of things. 00:37:23.152 --> 00:37:27.672 We have seen Mozilla try to offer for some kind of kill switch in Firefox. 00:37:28.012 --> 00:37:32.252 Yeah, and I think in something like the browser, it makes a bit more sense. 00:37:33.071 --> 00:37:36.431 It has a kind of product where you can, it's a bit more isolated. 00:37:36.691 --> 00:37:39.291 So no browsers are huge now. It's a bit more isolated than the whole OS. 00:37:39.731 --> 00:37:46.191 So my approach is, firstly, for all of the distaste people have for snaps, 00:37:46.471 --> 00:37:48.831 this is an area where it's actually going to be really beneficial. 00:37:48.911 --> 00:37:52.731 So we can't ship LLM models in the installer because our ISO will be. 00:37:54.691 --> 00:37:56.111 It's already a little happy. 00:37:57.291 --> 00:38:00.971 It carries a little bit of timber these days, so I don't want to make that decision. 00:38:00.971 --> 00:38:06.491 So my plan is that we will, as part of the first run onboarding wizard, 00:38:06.791 --> 00:38:07.931 you will get the opportunity. 00:38:08.191 --> 00:38:13.311 We'll say, hey, we have this thing to be defined. Do you want in or out? It uses AI. 00:38:13.571 --> 00:38:18.851 And if you are in, then it will go off and get the correctly sized model to 00:38:18.851 --> 00:38:19.991 run locally on your machine. 00:38:20.551 --> 00:38:26.771 And so the irony here is lots of the same people, I think, who have displayed 00:38:26.771 --> 00:38:31.131 some distaste for snaps are now displaying distaste for AI. but it is the snaps 00:38:31.131 --> 00:38:33.631 that are going to allow them to remove the AI from their machine very cleanly. 00:38:33.791 --> 00:38:34.511 Oh, that is ironic. 00:38:35.791 --> 00:38:38.611 It does seem like the, you've mentioned a few things that snaps help here. 00:38:38.711 --> 00:38:42.671 It does seem like the sort of architecture awareness that snaps have is probably 00:38:42.671 --> 00:38:46.011 pretty helpful here considering all of the AI models and custom silicon and all that. 00:38:46.011 --> 00:38:46.691 Yeah, really. 00:38:47.191 --> 00:38:52.471 We did some work a few months ago called Inference. We did a product called Inference Snaps. 00:38:52.531 --> 00:38:55.571 I talked about this at a meetup, and if you search for Inference Snaps, 00:38:55.611 --> 00:38:56.331 you'll find the details. 00:38:56.451 --> 00:39:00.671 But this is essentially, we are packaging models like Gemma 3, 00:39:01.251 --> 00:39:04.711 DeepSeq, Quen, Nematron from NVIDIA. 00:39:04.991 --> 00:39:08.951 And then you say you can snap install Gemma 3, you can snap install Nematron, 00:39:09.111 --> 00:39:10.291 you can snap install DeepSeq. 00:39:10.631 --> 00:39:14.011 But the work we're doing that's actually interesting is we then work with all 00:39:14.011 --> 00:39:17.651 the silicon vendors like AMD, NVIDIA, Qualcomm, MediaTek. 00:39:17.791 --> 00:39:23.791 And we work with them where they want to on particular models to get like silicon, 00:39:24.011 --> 00:39:27.951 how to describe it, silicon optimized versions of those models precisely for 00:39:27.951 --> 00:39:29.271 your hardware. so there's like a, 00:39:29.935 --> 00:39:33.135 manifest your machine goes hey this is what i've got talks to our store and 00:39:33.135 --> 00:39:36.495 our store goes haha we know all about that gpu so does amd here's a model that 00:39:36.495 --> 00:39:37.635 works just great on that gpu. 00:39:37.635 --> 00:39:39.735 Just the tensors for you wow that's amazing. 00:39:39.735 --> 00:39:44.415 Right so it saves you having to do this go to hugging face hit search and then 00:39:44.415 --> 00:39:46.935 sit there scratching your head for a few minutes trying to work out that's going 00:39:46.935 --> 00:39:50.115 to fit on your machine right just go i've heard of gemma 4 i want gemma 4 let 00:39:50.115 --> 00:39:55.355 me install it and so the foundation for ai in ubuntu will be these snaps so 00:39:55.355 --> 00:39:56.895 local first local inference, 00:39:57.535 --> 00:40:01.135 with models that we distribute, having worked with the silicon vendors to get 00:40:01.135 --> 00:40:05.815 the most efficient form of it to you that we can with some confinement around it as well, right? 00:40:06.075 --> 00:40:09.015 So does part of this process work when, you know, you're looking at the roadmap 00:40:09.015 --> 00:40:13.755 for Ubuntu and hardware partners come to you or come to Canonical and they say, 00:40:13.915 --> 00:40:17.875 in the next two, three years, we're going to be building these inference chips 00:40:17.875 --> 00:40:19.695 into our laptops and desktops. 00:40:19.915 --> 00:40:22.855 We'd really like your desktop to take advantage of this. And then, 00:40:22.935 --> 00:40:25.515 so you're looking at the plan, you go, okay, this is some ways we can do that. 00:40:25.515 --> 00:40:27.415 Is that part of the calculation here? 00:40:27.915 --> 00:40:32.035 Yeah, absolutely. It's actually quite interesting to me that I hadn't really 00:40:32.035 --> 00:40:35.995 appreciated this until I stepped into this role, even though I'd been at Canonical for some time. 00:40:36.535 --> 00:40:41.395 The silicon partnership side of our business is increasingly one of our strongest assets. 00:40:41.555 --> 00:40:41.935 Oh, okay. 00:40:42.095 --> 00:40:46.635 If you think about the work we just did to ship CUDA, so like apt install CUDA, 00:40:46.875 --> 00:40:49.055 ROCKM, apt install ROCKM, that's huge. 00:40:49.155 --> 00:40:49.275 It is. 00:40:49.275 --> 00:40:51.355 From the perspective of like a developer getting up and running, 00:40:51.455 --> 00:40:53.975 getting the right version that works with their kernel. you don't end up with 00:40:53.975 --> 00:40:57.495 loads of DKMS modules building every time. 00:40:57.735 --> 00:40:59.555 100%, it's a huge deal for them. 00:40:59.615 --> 00:41:03.035 Even just renting a GPU, it probably spins up an Ubuntu VPS, so the better that gets. 00:41:03.055 --> 00:41:03.575 Yeah, really. 00:41:04.275 --> 00:41:08.535 Right, and so the same is true of other kind of harbor and eggments. 00:41:08.675 --> 00:41:11.415 So one of the things we're shipping is the Docker OFED stack, 00:41:11.675 --> 00:41:15.135 which is the accelerated networking stack, like data center networking stack 00:41:15.135 --> 00:41:17.735 that NVIDIA, or that's the SDK that NVIDIA distributes. 00:41:17.935 --> 00:41:23.155 So I think it is really important. Things like AI in Ubuntu, Thank you. 00:41:23.578 --> 00:41:28.098 and being able to, with some confidence, tell you that that will be plausible 00:41:28.098 --> 00:41:32.718 in a local first way is only really possible if we work with the people who 00:41:32.718 --> 00:41:34.038 are building the chips really closely. 00:41:34.198 --> 00:41:38.058 And it's quite a symbiotic thing, right? They want to build the best silicon possible. 00:41:38.398 --> 00:41:41.438 They don't want to concern themselves with Linux distribution packaging and, 00:41:43.158 --> 00:41:45.778 because they have their focus and we have ours. 00:41:46.178 --> 00:41:49.658 And that partnership worked out really nicely for us with NVIDIA, with the DGX Spark. 00:41:50.238 --> 00:41:54.118 We sort of went on this journey with NVIDIA where they used to take ubuntu you 00:41:54.118 --> 00:41:57.218 know with agreement with us repackage it into a thing called dgx os, 00:41:57.698 --> 00:42:01.518 and then put some extra stuff on top of it and ship it with their dgx machines 00:42:01.518 --> 00:42:05.038 the dgx spark was the first time nvidia went you know what we're just going 00:42:05.038 --> 00:42:09.038 to ship ubuntu and so the dgx spark which is like a four thousand dollar ai 00:42:09.038 --> 00:42:12.598 workstation went out the door where the only supported os was, 00:42:13.918 --> 00:42:18.478 ubuntu and it was just like not special nvidia ubuntu not like weird frank and 00:42:18.478 --> 00:42:22.498 ubuntu it was like just go download Ubuntu, put it on a USB stick, off you go. 00:42:23.358 --> 00:42:27.578 And I think it's a nice experience in the end. 00:42:27.878 --> 00:42:31.538 It's really great. It's the perfect positioning at the right time. 00:42:31.698 --> 00:42:35.258 This could have gone a different direction where all of this was done on Windows 00:42:35.258 --> 00:42:37.018 or Macs or something like that. 00:42:37.338 --> 00:42:41.078 And it's, you know, have what people say about AI and how they feel about it. 00:42:41.258 --> 00:42:43.398 I am very grateful that it is... 00:42:44.046 --> 00:42:47.526 Linux is very much part of this, and people that are deploying all this infrastructure 00:42:47.526 --> 00:42:48.706 are deploying it on Linux. 00:42:48.866 --> 00:42:52.366 And there's been a lot of great open source work here, just with LamaCPP, 00:42:52.466 --> 00:42:53.566 all kinds of stuff in this space. 00:42:53.646 --> 00:42:57.886 But there are some things that the open source community side is less well-situated 00:42:57.886 --> 00:43:01.246 for, which is things like working with partnerships with companies making hardware. 00:43:01.526 --> 00:43:04.286 Yeah, that's very true. 00:43:04.446 --> 00:43:08.486 And it's interesting. So one of the things I would argue that has been complicated 00:43:08.486 --> 00:43:12.986 for Linux's desktop adoption is the fragmentation. And I think fragmentation 00:43:12.986 --> 00:43:18.626 in the desktop space is simultaneously Linux's biggest strength and also weakness. 00:43:18.846 --> 00:43:21.846 It's its strength in the sense that there have been like thousands of really 00:43:21.846 --> 00:43:25.366 bright people who have scratched an itch that they've had over time and done amazing things. 00:43:26.226 --> 00:43:31.326 The drawback is they're not always necessarily motivated to make it work seamlessly 00:43:31.326 --> 00:43:34.166 with other people's stuff, which is why if you look at the modern Linux desktop, 00:43:34.346 --> 00:43:37.406 it's like so many different things kind of stitched together. 00:43:37.406 --> 00:43:41.026 And every time something breaks on my Linux machine, I'm simultaneously kind 00:43:41.026 --> 00:43:43.186 of annoyed and also kind of stunned it works at all. 00:43:43.486 --> 00:43:44.706 Yeah, I agree. 00:43:46.506 --> 00:43:51.946 But I think in the world of agents and think about what I was saying about perhaps 00:43:51.946 --> 00:43:55.806 an experience where you could ask your machine to do something or troubleshoot itself. 00:43:55.966 --> 00:43:59.206 Like all of a sudden that fragmentation problem isn't such a problem if you've 00:43:59.206 --> 00:44:00.986 got a thing that already knows all the things, right? 00:44:01.106 --> 00:44:05.306 Or knows how to go and get information about all of the particular parts of 00:44:05.306 --> 00:44:08.186 the system that you have. Like, in reality, I don't know anybody, 00:44:08.386 --> 00:44:12.006 even the best Linux admins I've ever met do not know everything about every 00:44:12.006 --> 00:44:12.866 package on their machine. 00:44:14.126 --> 00:44:17.746 But now we have something that can pull the actual source and read it and teach 00:44:17.746 --> 00:44:19.826 itself a lay of the land in, you know, a few minutes. 00:44:19.886 --> 00:44:22.366 I think we're going to end up with a lot more Linux usage. Yes. 00:44:23.286 --> 00:44:26.146 Don't you think we're just going to see even more free software, 00:44:26.326 --> 00:44:28.266 more Ubuntu, more Linux deployed because of this? 00:44:28.726 --> 00:44:34.966 I do. And I totally recognize people's skepticism. I have a lot of empathy for the people who... 00:44:36.422 --> 00:44:40.802 are replying to my posts a little hot under the collar. And I guess it is our 00:44:40.802 --> 00:44:45.542 responsibility to demonstrate to our users that we will keep privacy in mind. 00:44:45.682 --> 00:44:50.762 We will try to pick models that are licensed in such a way that it feels aligned 00:44:50.762 --> 00:44:51.882 with the values of open source. 00:44:52.022 --> 00:44:55.922 Because I think even when you talk about things like open weight and open source, 00:44:56.022 --> 00:44:58.222 they just carry a different meaning in this space. 00:44:58.322 --> 00:45:01.722 It's not the same thing that open source people have been used to. 00:45:01.942 --> 00:45:06.542 And so we have to work out how to navigate that in a way that is useful to the 00:45:06.542 --> 00:45:09.682 people who are all in and want to play and provides a nice on-ramp, 00:45:09.942 --> 00:45:12.922 but not offensive to the people who just want out at the end of the day. 00:45:13.022 --> 00:45:17.962 And my goal is absolutely not to start shipping a Clippy or a co-pilot button 00:45:17.962 --> 00:45:19.622 on everyone's dock and forcing you to use it. 00:45:19.762 --> 00:45:23.162 Do you know what I mean? That's not the model. No doubt. 00:45:24.082 --> 00:45:27.962 I can almost hear people typing about the Amazon affiliate link that happened 00:45:27.962 --> 00:45:29.242 to you from like 15 years ago. 00:45:29.422 --> 00:45:30.642 It's not going to be like that. 00:45:30.762 --> 00:45:31.822 Now we're introducing Debbie. 00:45:32.142 --> 00:45:32.942 Yeah, right? 00:45:34.402 --> 00:45:38.182 Right. So we are going to, we are going to build a layer features in, I hope, 00:45:38.994 --> 00:45:43.954 as an experiment, but I'm quite committed to it. It's not an experiment that I think will fail. 00:45:44.134 --> 00:45:47.794 It's just that we have a few ideas. We'll try them out. 00:45:48.094 --> 00:45:51.374 You know, I'm excited because, John, it has a lot of potential, 00:45:51.594 --> 00:45:55.094 especially when you're saying the solve my Wi-Fi, why won't my printer connect, 00:45:55.234 --> 00:45:59.134 my second monitor isn't turning on, because you have an opportunity to focus 00:45:59.134 --> 00:46:00.674 something that knows the system well. 00:46:00.854 --> 00:46:03.174 It knows the version of Ubuntu it's on. It knows it's on. 00:46:03.794 --> 00:46:07.694 There's these things that will just the agent or whatever it'll be that's running 00:46:07.694 --> 00:46:11.234 on the system will be aware of that a user would have to spend a lot of time 00:46:11.234 --> 00:46:15.294 if they just opened up OpenCode or something the first time trying to get the same results out of. 00:46:15.654 --> 00:46:18.794 So I think that has a ton of potential there. That's exciting. 00:46:19.154 --> 00:46:24.874 I'm curious if you gents think that that will make us Linux users less aware 00:46:24.874 --> 00:46:26.554 of our systems and how they're built. 00:46:26.694 --> 00:46:31.214 Because part of the joy, I think, early on in probably each of our Linux journey 00:46:31.214 --> 00:46:34.894 is breaking all the things and learning how it's all put together and then being 00:46:34.894 --> 00:46:42.454 able to customize it in such a way that makes it our own or makes you understand some users', 00:46:43.294 --> 00:46:47.674 challenges and solve them if you have that kind of position at somewhere like Canonical. 00:46:47.874 --> 00:46:52.674 And so is using some of these tools going to take us away from understanding what's under the hood? 00:46:53.774 --> 00:46:57.254 I don't think so if you have an interest in understanding what's under the hood. 00:46:57.554 --> 00:47:00.594 But I think if you are someone who wants your computer to work and you don't 00:47:00.594 --> 00:47:02.534 care how, it's a huge level up. 00:47:02.654 --> 00:47:06.714 So I have, you know, a year ago, I know I was very much in the skeptic category. 00:47:06.934 --> 00:47:13.194 I have completely immersed myself in clawed code and played around with claws and all this stuff. 00:47:13.214 --> 00:47:16.794 I've gone really deep on it and tried to learn as much as I can and use it as 00:47:16.794 --> 00:47:18.654 kind of natively as possible. 00:47:19.434 --> 00:47:23.574 And I have found it the most unbelievable accelerator for learning some things 00:47:23.574 --> 00:47:27.934 I've always wanted to learn, for trying out perhaps new architecture patterns 00:47:27.934 --> 00:47:31.314 that maybe I'd never have had the time to do. So of course one can, 00:47:32.151 --> 00:47:34.931 poke the machine blindly accept what it has and ship it 00:47:34.931 --> 00:47:37.491 and actually for little personal projects why not do you know 00:47:37.491 --> 00:47:40.791 what i mean like you want to do something for you do the thing but 00:47:40.791 --> 00:47:44.711 an example like i built this coffee tracking app i'm a insufferable filter 00:47:44.711 --> 00:47:47.391 coffee nerd i built this thing and i think you guys picked up on the book thing 00:47:47.391 --> 00:47:51.691 which was actually a fork of the coffee thing there was a bunch of stuff in 00:47:51.691 --> 00:47:56.471 there that i had never done before and it took me a while to build it but like 00:47:56.471 --> 00:48:00.791 it was really interesting to be able to go through that process you know i was bringing the, 00:48:00.931 --> 00:48:04.051 this is how I want this application to be structured. I want to use domain-driven design. 00:48:04.191 --> 00:48:07.851 There are some rules I don't want you to break. And it was able to assist with the bits I didn't know. 00:48:08.011 --> 00:48:12.651 And I was, it felt more like a long-lived pair programmer than someone who was 00:48:12.651 --> 00:48:13.531 just doing the work for me. 00:48:13.831 --> 00:48:15.751 It wasn't a vending machine for an app, do you know what I mean? 00:48:15.811 --> 00:48:16.931 I was heavily involved in it. 00:48:17.071 --> 00:48:21.591 It's a fascinating journey I think people take. Similar one myself, very skeptical. 00:48:21.891 --> 00:48:26.191 It's just autocomplete. What's the point to finding an extremely useful and 00:48:26.191 --> 00:48:30.151 an accelerator myself, and realizing it's a very powerful Linux tool as well. 00:48:30.391 --> 00:48:35.011 It does make me think we have an opportunity for the show, just in that to Brent's 00:48:35.011 --> 00:48:37.571 point, you learn a lot when you have to constantly fix things. 00:48:37.771 --> 00:48:40.331 The trade-off is you don't always get to choose, right? Sometimes you have to 00:48:40.331 --> 00:48:43.251 fix it when you'd much rather be using your computer for something, right? 00:48:43.591 --> 00:48:46.451 So then the danger is maybe you never stop to ask. If you don't have to fix 00:48:46.451 --> 00:48:49.651 it, you never ask, but I think that's maybe an opportunity for us to make sure 00:48:49.651 --> 00:48:52.811 people who want to be curious know that there are questions they can't ask. 00:48:52.951 --> 00:48:56.511 And I think, John, I don't know what for you, but it reminds me too of some 00:48:56.511 --> 00:49:00.211 of the arguments we're still having to this day about cloud computing versus 00:49:00.211 --> 00:49:03.411 spinning up your own Linux system or serverless computing is, 00:49:03.471 --> 00:49:05.451 you know, it's essentially abstracting away part of, 00:49:05.611 --> 00:49:08.871 if you do a one-app deployment on DigitalOcean or if you deploy something on 00:49:08.871 --> 00:49:12.551 AWS or use serverless technology, you're not really learning Linux either. 00:49:13.800 --> 00:49:16.160 And you don't even know NTPD needs to be a thing. 00:49:16.360 --> 00:49:21.200 And I see lots of the, lots of the arguments, and this is, I don't know, 00:49:21.620 --> 00:49:24.840 like, this is maybe a hot take, but like lots of the arguments sound exactly 00:49:24.840 --> 00:49:27.260 like the arguments people made when we first got compilers. 00:49:27.420 --> 00:49:30.120 Yes. And package managers. I don't trust that to write code. 00:49:30.520 --> 00:49:31.900 And package managers as well. 00:49:31.920 --> 00:49:35.620 I'm not going to let that install stuff in my Linux box. Are you crazy? You're right. 00:49:35.620 --> 00:49:39.740 Yeah. And so what I say is like, to people who perhaps have been skeptical, I've been there. 00:49:39.980 --> 00:49:44.400 I feel like I really get it. But the space moves so fast that if your opinion 00:49:44.400 --> 00:49:48.140 is even six months old, it's worth just playing around and seeing what happens. 00:49:48.280 --> 00:49:48.980 I think that's so true. 00:49:50.200 --> 00:49:53.540 I've also seen people who have bounced off it where they've said, 00:49:53.640 --> 00:49:56.460 okay, well, I've heard about this Vibe coding thing, and they've gone away and 00:49:56.460 --> 00:49:59.260 tweaked their Vim configuration and tried to get an LSP. 00:49:59.500 --> 00:50:01.740 And like, okay, cool, you can kind of make it work with Vim. 00:50:01.800 --> 00:50:04.440 But just spend a day with Antigravity or VS Code and Claude. 00:50:04.920 --> 00:50:09.920 Spend a day in an environment that was designed to be used in this way and just 00:50:09.920 --> 00:50:13.100 see, like, just poke around a bit, see how it feels. 00:50:13.220 --> 00:50:17.660 Like, you know, my feeling is that this really isn't going anywhere. 00:50:19.200 --> 00:50:25.300 And I think there are two ways we could try and stop this or try and shape this. 00:50:25.520 --> 00:50:28.020 One is stamp our feet and say, we're not doing it. We don't like it. 00:50:28.100 --> 00:50:32.640 It's open source. It's big tech, blah, blah, blah. And be petulant over it. We're not going to win. 00:50:32.940 --> 00:50:36.860 The other way is to educate ourselves as much as we possibly can, 00:50:36.980 --> 00:50:39.100 be part of the conversation and influence it. 00:50:39.220 --> 00:50:45.500 so that it isn't a burden on open source, it is a positive force. 00:50:45.740 --> 00:50:50.880 So right now, lots of projects are absolutely suffering because people are irresponsibly 00:50:50.880 --> 00:50:52.700 hurling commits at them that they haven't reviewed. 00:50:52.920 --> 00:50:58.660 I think it is the responsibility of us all to basically try to work with those 00:50:58.660 --> 00:51:01.600 people and say, hey, this isn't quite what we're looking for. 00:51:03.075 --> 00:51:05.855 Can we work with you to kind of like, we like the idea. Can we work with you 00:51:05.855 --> 00:51:07.215 to get this in a state that we can review it? 00:51:07.275 --> 00:51:10.015 And over time, we will have a generation of people who really understand how 00:51:10.015 --> 00:51:12.775 to yield these tools in a way that gets great results. 00:51:13.515 --> 00:51:15.695 Yeah, we don't have a lot of culture yet, you know? 00:51:15.895 --> 00:51:16.015 Yeah. 00:51:16.115 --> 00:51:18.575 We don't know how to use these. We're constantly discovering what we can even 00:51:18.575 --> 00:51:20.295 do, let alone how we should do it with each other. 00:51:20.415 --> 00:51:26.175 However, I think that's the right mindset to start building a culture around this tooling in Ubuntu. 00:51:26.335 --> 00:51:29.235 I think you have the right recipe there to build something responsible in Ubuntu. 00:51:29.375 --> 00:51:30.975 So I'm looking forward to see where you take it. 00:51:31.155 --> 00:51:35.635 It's an exciting time. I personally have gone from being, like I said, 00:51:35.715 --> 00:51:40.755 very skeptical to feeling like I'm more excited about coming to work and working 00:51:40.755 --> 00:51:42.415 on tech than I've been in a really long time. 00:51:42.575 --> 00:51:42.715 Yeah. 00:51:42.875 --> 00:51:47.975 There is something unlocked in my mind and I am building side projects at an alarming rate. 00:51:48.755 --> 00:51:49.655 I love it. 00:51:49.895 --> 00:51:54.475 It's just, it's been, I sort of also, I have sympathy for the, 00:51:54.515 --> 00:51:57.215 it's taking my craft and I can see that people are... 00:51:58.767 --> 00:52:02.247 I can see how people would have the other reaction. My experience has been the 00:52:02.247 --> 00:52:04.747 opposite. I'm like, all of a sudden, there's all this stuff I can build that 00:52:04.747 --> 00:52:05.967 I've been thinking about for years. 00:52:06.247 --> 00:52:09.087 Yeah, we've been saying it's the most fun we've had with computers in years. 00:52:09.247 --> 00:52:10.827 It feels like finding Linux again, in a way. 00:52:10.887 --> 00:52:14.387 It really does. And to your point, too, you're right. There is a bit of a craft 00:52:14.387 --> 00:52:18.327 in art that I see Wes wince when I produce some slop things. 00:52:19.287 --> 00:52:23.407 But at the same time, it's a comparison that's a little cliche, 00:52:23.487 --> 00:52:26.687 but I was just thinking when you were talking, it's very much like digital photography. 00:52:26.987 --> 00:52:29.387 Everybody now has a camera in their pocket, And because of that, 00:52:29.527 --> 00:52:32.607 I have incredible pictures of my children that I wouldn't have had otherwise. 00:52:32.987 --> 00:52:36.607 So I'm glad the digital photography and cameras came along, even though it sort 00:52:36.607 --> 00:52:40.207 of wrecked the art of photography a little bit for everybody trying to get that 00:52:40.207 --> 00:52:41.787 perfect golden hour sunset shot. 00:52:42.327 --> 00:52:45.707 It was a tradeoff, but now I have these keepsakes that I'll treasure forever 00:52:45.707 --> 00:52:46.887 that are extremely valuable to me. 00:52:47.047 --> 00:52:51.367 And I think it's kind of a similar tradeoff with, yes, some of the craft and 00:52:51.367 --> 00:52:53.047 the art of programming will be lost. 00:52:53.307 --> 00:52:55.347 That's not going away. They're still photographers. 00:52:55.847 --> 00:52:58.787 but I also will have these keepsakes and these personal things that are extremely 00:52:58.787 --> 00:53:04.087 valuable to me and it makes me very excited and I'm glad that Ubuntu isn't shying 00:53:04.087 --> 00:53:08.207 away from it and that they seem that you seem to have a very responsible and 00:53:08.207 --> 00:53:10.767 practical pragmatic take for it so I think it's great. 00:53:10.927 --> 00:53:13.807 John I mean this is, it's been a great week, it's been a great chat. 00:53:14.147 --> 00:53:16.647 Is there anything else you want to touch on before we scoot? 00:53:17.347 --> 00:53:21.067 No other than we're going to need help so if this sounds interesting then hit 00:53:21.067 --> 00:53:26.467 us up we are hiring like crazy which is a little unusual at the moment in tech, 00:53:26.587 --> 00:53:30.287 but we have a lot of openings and a very famous hiring process. 00:53:30.527 --> 00:53:32.727 If you'd like to come play, then I would recommend it. 00:53:33.087 --> 00:53:36.807 But otherwise, I think the next exciting thing is let's make the interims crazy 00:53:36.807 --> 00:53:39.027 again. I promised it when I took over Ubuntu. 00:53:39.767 --> 00:53:42.887 So the next release is going to be the stonking stingray. 00:53:44.747 --> 00:53:45.647 Good name. 00:53:45.907 --> 00:53:46.867 I like that. 00:53:47.827 --> 00:53:52.267 Very excited about. And so, yeah, we'll start to see the first of these new 00:53:52.267 --> 00:53:54.607 features landing and we'll see where it goes. 00:53:54.607 --> 00:53:57.247 We'll keep an eye. John, thank you so much. I hope we can chat again soon. 00:53:57.507 --> 00:53:58.247 Likewise. Thanks very much. 00:54:02.842 --> 00:54:06.142 Well, dear listeners and distinguished hosts, you may have noticed this week 00:54:06.142 --> 00:54:08.662 is Linux Unplugged 6.6.5. 00:54:08.762 --> 00:54:09.102 Oh, yeah. 00:54:09.582 --> 00:54:13.042 And we've been teasing that, well, this week, this coming week, 00:54:13.242 --> 00:54:15.662 is the BSD Challenge week. 00:54:17.102 --> 00:54:21.602 We officially are kicking off the BSD Challenge. This is my stupid stinger. 00:54:25.595 --> 00:54:26.695 is that what it. 00:54:26.695 --> 00:54:27.835 Sounds like when you put BSD. 00:54:27.835 --> 00:54:31.635 Yeah that's my that's BSD in a song in a stinger so. 00:54:31.635 --> 00:54:36.375 You've mentioned BSD a great number of times this week compared to I don't know. 00:54:36.375 --> 00:54:36.875 Every other. 00:54:36.875 --> 00:54:42.995 Week this year so I'm wondering have you gotten any closer to deciding what you're going to do this. 00:54:42.995 --> 00:54:45.995 Week yeah yes I have because 00:54:45.995 --> 00:54:48.775 I wanted to hit the ground running like we 00:54:48.775 --> 00:54:51.475 do with these challenges there's no rule that says you can't poke around a little 00:54:51.475 --> 00:54:54.495 bit before the starting line oh of course not you know like if you're going 00:54:54.495 --> 00:54:59.295 to race a car you take it on the track a few times so uh i wanted to have the 00:54:59.295 --> 00:55:07.175 best experience possible to to to flip my impression of bsd as a desktop operating system. 00:55:07.175 --> 00:55:08.195 Oh what's your impression currently. 00:55:08.195 --> 00:55:12.955 That it's it's it's for masochists it's for people that like to hurt themselves, 00:55:13.495 --> 00:55:16.415 and and just want to struggle the entire time they're 00:55:16.415 --> 00:55:19.195 using computers or trying to get software running or anything like that 00:55:19.195 --> 00:55:22.275 okay great um and so i thought ghost bsd would 00:55:22.275 --> 00:55:25.035 be a great way to kind of get a modern take on free 00:55:25.035 --> 00:55:27.955 bsd designed for the desktop to kind of smooth over 00:55:27.955 --> 00:55:30.795 some of those rough edges and give me a good shot of 00:55:30.795 --> 00:55:33.675 changing my impression and that may 00:55:33.675 --> 00:55:36.455 be the case but i wanted to test the car out around the 00:55:36.455 --> 00:55:39.435 track a few times so i downloaded the latest 00:55:39.435 --> 00:55:42.515 release and try to get it going on my machine in 00:55:42.515 --> 00:55:45.295 qmu kvm and it just wouldn't it 00:55:45.295 --> 00:55:47.935 wouldn't start up it started to boot and would fail start to boot and fail and i 00:55:47.935 --> 00:55:51.535 looked into it and it turns out that gosh darn 00:55:51.535 --> 00:55:54.975 it wouldn't you know it for the most recent release of ghost bsd there 00:55:54.975 --> 00:56:02.855 is a currently open bug where the live session fails to start x under qmu and 00:56:02.855 --> 00:56:06.975 so just your luck so i'm like oh okay okay before i saw this bug i'm like i'll 00:56:06.975 --> 00:56:12.735 go get the community iso which uses xfce instead of mate sure same problem same exact problem come on, 00:56:13.774 --> 00:56:18.234 And then I found this open bug report that exactly is my issue, 00:56:18.254 --> 00:56:22.334 which doesn't mean I couldn't use it on a desktop, and I still might. It's still a candidate. 00:56:23.514 --> 00:56:24.894 You couldn't easily try it. 00:56:25.034 --> 00:56:30.914 Yeah, I couldn't easily try it. So I decided to pivot to FreeBSD 15.1 because 00:56:30.914 --> 00:56:33.574 the beta just came out this week, and I like me some fresh stuff. 00:56:35.054 --> 00:56:41.234 And this version of FreeBSD is supposed to offer, in the TUI installer, Plasma Desktop. 00:56:41.594 --> 00:56:42.034 Oh. 00:56:43.194 --> 00:56:48.454 And I'm like, oh, imagine if I could get myself a modern Plasma desktop on BSD. 00:56:48.654 --> 00:56:49.234 That's pretty good. 00:56:49.374 --> 00:56:53.334 I'd have Kate, console. I'd have all the stuff I like. I think I could make that work, right? 00:56:53.754 --> 00:56:55.074 This feels unfair already. 00:56:55.234 --> 00:56:58.594 So I download this morning before the show thinking I'm going to get this in 00:56:58.594 --> 00:57:01.454 and I'm going to get a sense of it. So I have an answer for the segment. 00:57:02.314 --> 00:57:06.814 And I boot it up in the old VM and it starts and the installer, 00:57:06.974 --> 00:57:09.934 you know, classic free BSD text based installer, TUI, whatever. 00:57:11.864 --> 00:57:15.484 Doesn't have the Plasma option. It's not in there. They talked about it being 00:57:15.484 --> 00:57:16.384 in there. It's not in there. 00:57:16.904 --> 00:57:20.604 It's not in there. So what I got was a headless FreeBSD install. 00:57:20.864 --> 00:57:22.784 Well, that's not that. That's always what you were going to get, 00:57:23.024 --> 00:57:24.704 really, right? Didn't we know that? Didn't we know that? 00:57:24.904 --> 00:57:25.584 Good try, though. 00:57:25.864 --> 00:57:27.144 But you could add it later, probably. 00:57:27.144 --> 00:57:32.524 Well, I tried that. I tried that. And I do get SDDM working. And I can log in. 00:57:32.704 --> 00:57:33.004 Okay. 00:57:33.224 --> 00:57:36.084 And then I get a blank session. Because there's some kind of bug that's preventing 00:57:36.084 --> 00:57:38.184 X11 from working under QMU on FreeBSD. 00:57:38.264 --> 00:57:38.704 Come on. 00:57:38.744 --> 00:57:41.464 See, I've got that working on. I don't have 15.1. 00:57:42.084 --> 00:57:43.224 Which one do you have 15. 00:57:43.224 --> 00:57:44.164 Yeah maybe. 00:57:44.164 --> 00:57:46.244 We should trade notes maybe i should try the 15. 00:57:46.244 --> 00:57:50.404 Although i did then end up just for convenience so i started using a vnc session 00:57:50.404 --> 00:57:52.024 so you could also try that so. 00:57:52.024 --> 00:57:52.804 You've been kicking tires. 00:57:52.804 --> 00:57:56.544 Yeah i got an i3 going um oh yeah on free bsd that. 00:57:56.544 --> 00:57:57.064 Seems like a good. 00:57:57.064 --> 00:58:00.544 Choice i took the cheating route though because i noticed that props to free 00:58:00.544 --> 00:58:04.244 bsd they provide a bunch of pre-built images and stuff ready to go like cloud 00:58:04.244 --> 00:58:08.644 in it minimal ones and like more full ones including with zfs set up in a pool 00:58:08.644 --> 00:58:09.924 already just as a thing yeah. 00:58:09.924 --> 00:58:11.644 I did do zfs on route why not. 00:58:11.644 --> 00:58:15.044 So actually i need to do it play with the installer because this just meant 00:58:15.044 --> 00:58:17.284 i haven't actually tried the installer yet because i was able to just sort of 00:58:17.284 --> 00:58:23.064 dd that right into memory and then boot that in qemu and start mucking around 00:58:23.064 --> 00:58:24.624 you know get my rc conf you and. 00:58:24.624 --> 00:58:25.564 Ram disc all the way. 00:58:25.564 --> 00:58:29.524 Yeah nice just as because it was an exploratory setup right i do so like i was 00:58:29.524 --> 00:58:33.764 trying to i did have some issues i do think there probably are some some things 00:58:33.764 --> 00:58:37.004 we could figure out or work around perhaps maybe i mean look into around the 00:58:37.004 --> 00:58:39.604 qmu stuff specifically especially for the graphics side i. 00:58:39.604 --> 00:58:41.424 Also at this point i could just 00:58:41.424 --> 00:58:43.784 give up i mean i'm ultimately for the week i'm gonna run it on hardware. 00:58:43.784 --> 00:58:44.404 Yeah so i could. 00:58:44.404 --> 00:58:48.544 I just i wanted to just try out a few options to see which one i wanted to commit 00:58:48.544 --> 00:58:54.064 to hardware i guess silly me but yeah all right i might i mean i don't know, 00:58:54.956 --> 00:58:58.676 So which one are you going with officially? 15? FreeBSD 15? 00:58:58.816 --> 00:59:01.936 Yeah, well, I wanted to try 15 one. I was just having some issues. 00:59:02.016 --> 00:59:04.616 Maybe I needed to do some setup, because I think they've made some changes to 00:59:04.616 --> 00:59:08.456 how some of the package and user land stuff is getting shipped. 00:59:09.816 --> 00:59:12.936 But I was using it slightly before the beta was officially out, so I don't know. 00:59:13.736 --> 00:59:15.616 Brantley, have you picked a BSD that you're going to roll? 00:59:16.136 --> 00:59:19.596 I think my choices may be less responsible than both of yours. 00:59:20.756 --> 00:59:24.576 I was under a car for most of the week, and then I had this brilliant thought 00:59:24.576 --> 00:59:29.796 while I was under there, as you do, that I might give Nick's BSD a try. 00:59:30.556 --> 00:59:30.916 Whoa. 00:59:31.276 --> 00:59:32.616 I can't believe we didn't think of that. 00:59:32.736 --> 00:59:34.876 Actually. I know. I know. I was waiting to see if either of you. 00:59:35.016 --> 00:59:38.136 So you're going to have a real advantage, possibly, here. 00:59:38.236 --> 00:59:39.936 Or disadvantage. We're going to find out. 00:59:39.936 --> 00:59:41.696 Yeah, he might have some compiling to do. 00:59:41.956 --> 00:59:42.916 Oh, I hope he does. 00:59:42.936 --> 00:59:48.036 I think I also probably need a backup, because I'm not sure. 00:59:48.156 --> 00:59:51.356 So I would love to hear from the audience. 00:59:51.396 --> 00:59:58.836 You vote, and I will honor this, vote for which BSD Brent needs to try. 00:59:59.036 --> 00:59:59.536 We better get in quick. 00:59:59.656 --> 01:00:00.476 If next BSD doesn't work. 01:00:00.676 --> 01:00:01.536 Gotta get in quick. 01:00:01.656 --> 01:00:05.896 Yeah. So send in a boost. We will read them ahead of time because I probably 01:00:05.896 --> 01:00:08.096 in a day or two will desperately need an option B. 01:00:08.416 --> 01:00:08.576 Yeah. 01:00:08.796 --> 01:00:11.776 Or send us an email, linuxunplugged.com slash contact. 01:00:12.056 --> 01:00:16.416 Or even if you're on Matrix, we've got the Linux Unplugged feedback room. 01:00:16.576 --> 01:00:17.976 So I'll keep an eye on all three of those. 01:00:18.156 --> 01:00:22.636 And I will honor whatever crazy BSD choice you guys send out there. 01:00:22.756 --> 01:00:26.496 Okay. I'm thinking, I'm thinking for me, I might go retro hardware too, 01:00:26.896 --> 01:00:28.616 which may increase the suffering. 01:00:29.076 --> 01:00:31.496 Now I have different degrees of retro. 01:00:31.776 --> 01:00:34.156 Uh, we got the whole museum over there. What are you choosing? 01:00:34.316 --> 01:00:37.556 PJ? I don't know if you remember, but did, is that Dell that, 01:00:37.596 --> 01:00:41.356 that prototype Dell laptop? Is that in working shape at the moment or did we 01:00:41.356 --> 01:00:43.556 have to harvest from that to make the Odroid work? 01:00:43.736 --> 01:00:47.036 Uh, it should work fine. It just needs a drive actually. 01:00:47.316 --> 01:00:50.976 Okay. Okay. So I may try and power. 01:00:51.856 --> 01:00:58.556 Right, right. And it takes a lot of power. I may try running BSD. Oh, there we go. 01:00:58.556 --> 01:00:58.736 That's fine. 01:00:59.156 --> 01:01:01.356 I mean, this laptop is- Whoa. 01:01:01.416 --> 01:01:02.376 This is a chunker. 01:01:02.476 --> 01:01:07.716 It's a Dell prototype that was gifted to us when I toured Dell way back, 01:01:07.936 --> 01:01:09.756 I don't know, four, five, six, seven years ago. 01:01:10.136 --> 01:01:11.896 It needs 180 watts? 01:01:12.096 --> 01:01:13.776 It takes 180 watts of power. 01:01:14.016 --> 01:01:15.156 That's going to be the biggest issue. 01:01:15.256 --> 01:01:17.816 Because the reason is it has two Xeons in it. 01:01:17.916 --> 01:01:18.256 What? 01:01:18.256 --> 01:01:22.396 It has two Xeons. It can have up to something like three or four drives, 01:01:22.556 --> 01:01:25.536 an insane amount of RAM, although it doesn't have an insane amount of RAM in it. 01:01:25.676 --> 01:01:27.696 Oh, it's got that old docking connector of theirs. 01:01:27.876 --> 01:01:29.396 The old classic docking connector. 01:01:29.656 --> 01:01:31.056 Obviously came with Windows Pro. 01:01:32.096 --> 01:01:35.776 It's beautiful on the inside. When you open it up, it is absolutely beautiful. 01:01:35.936 --> 01:01:38.516 It's huge, too. Open up that. Open up. Just go ahead and. 01:01:39.036 --> 01:01:43.356 How would you describe the size of that, Wes? It's larger than any laptop probably on the market. 01:01:43.436 --> 01:01:44.516 I feel like I'm sinking into it. 01:01:44.776 --> 01:01:45.136 Monstrous. 01:01:45.376 --> 01:01:50.136 Yeah. I mean, it was a big one, so I don't think I were planning to ship a lot 01:01:50.136 --> 01:01:51.456 of them, so they just went crazy. 01:01:51.676 --> 01:01:52.456 Small trackpad. 01:01:52.836 --> 01:01:55.756 Yeah, tiny trackpad. Well, actually, it's a big trackpad. It does have a trackpoint. 01:01:55.876 --> 01:01:55.956 Though. 01:01:56.016 --> 01:02:00.836 It is actually a big trackpad. It's just a huge laptop. That's what's going on. 01:02:01.016 --> 01:02:02.136 The perspectives are all shipped. 01:02:03.736 --> 01:02:06.676 Because, look, it's got a full 10 key and a full QWERTY keyboard. 01:02:07.296 --> 01:02:09.976 I have a question. When's the last time this thing booted? 01:02:10.796 --> 01:02:11.916 The last couple days ago. 01:02:12.416 --> 01:02:12.716 Really? 01:02:12.916 --> 01:02:13.836 Jeff got it powered up. 01:02:13.996 --> 01:02:14.316 Whoa. 01:02:14.476 --> 01:02:14.636 Yeah. 01:02:14.636 --> 01:02:15.676 What did he power it with. 01:02:15.676 --> 01:02:18.876 Um some usbc battery thing some high power battery. 01:02:18.876 --> 01:02:20.736 And he didn't he didn't leave that for you well. 01:02:20.736 --> 01:02:21.376 It's his toy it. 01:02:21.376 --> 01:02:21.836 Was pulling. 01:02:21.836 --> 01:02:23.676 Nearly 100 watts from that by the way. 01:02:23.676 --> 01:02:26.616 Oh this thing weighs a lot yeah. 01:02:26.616 --> 01:02:27.796 It's very heavy too. 01:02:27.796 --> 01:02:30.236 Holy yeah you've got hdmi though, 01:02:31.480 --> 01:02:31.800 Huh. 01:02:33.060 --> 01:02:34.100 It's a USB-C. 01:02:34.220 --> 01:02:34.860 This thing is... 01:02:34.860 --> 01:02:38.960 It does have USB-C. However, it's sort of an early implementation of USB-C due 01:02:38.960 --> 01:02:41.120 to the era, and it does not pull enough power. 01:02:41.460 --> 01:02:44.400 So you have to use the barrel connector to actually properly power it. 01:02:44.580 --> 01:02:44.800 Wow. 01:02:44.980 --> 01:02:46.060 And I don't know if I'm going to find that. 01:02:46.640 --> 01:02:47.640 Okay. Good luck. 01:02:47.780 --> 01:02:51.180 So that's my leading candidate for hardware, just because it'd be a lot of fun 01:02:51.180 --> 01:02:55.720 to get that old thing running again. It's been on the shelf for a long time, and it's a one-of-one. 01:02:56.120 --> 01:02:58.600 However, I don't know. I may have to go a different direction. 01:02:58.880 --> 01:03:02.600 So that all kicks off after the show. We have to officially start knocking off 01:03:02.600 --> 01:03:03.960 the points. We do have the details. 01:03:04.140 --> 01:03:08.140 We'd love you to participate and let us know how it goes. LinuxUnplugged.com slash BSD. 01:03:09.040 --> 01:03:16.300 And it will give you the details on the Linux Unplugged 666 BSD challenge. 01:03:16.660 --> 01:03:17.480 Join us, won't you? 01:03:17.620 --> 01:03:19.540 Oh, episode 666. 01:03:24.640 --> 01:03:28.740 Please send in your experiences because we want to know how it went for you 01:03:28.740 --> 01:03:32.160 as well. by that episode. You've got one week. 01:03:32.740 --> 01:03:35.140 Good luck. The scoring system is on the website. 01:03:39.860 --> 01:03:46.300 Ooh, Kongaroo Paradox kicks us off with a baller boost. 177,000 sats. 01:03:58.534 --> 01:04:02.374 Mr. Paradox writes, it's been a while since I boosted, so here's some value 01:04:02.374 --> 01:04:04.494 back for all the value you provide each week. 01:04:04.854 --> 01:04:08.114 I think you're also getting the right balance of your AI coverage. Keep it up. 01:04:08.234 --> 01:04:08.514 Nice. 01:04:08.734 --> 01:04:11.794 Woo-hoo! Thank you very much. 01:04:12.154 --> 01:04:14.714 Did you mention how much the boost was for? 01:04:15.254 --> 01:04:16.334 Yeah, $177,000. 01:04:16.354 --> 01:04:18.034 Okay, great. I missed that. That's unbelievable. 01:04:18.174 --> 01:04:18.494 It is. 01:04:18.534 --> 01:04:20.294 I just was in a state of, yeah. 01:04:20.454 --> 01:04:21.754 But you know what else is unbelievable? 01:04:21.974 --> 01:04:26.554 Oh, Derivation Ding is coming in with $102,767. 01:04:27.254 --> 01:04:27.694 What? 01:04:32.134 --> 01:04:33.194 Oh my goodness! 01:04:39.334 --> 01:04:43.134 Wow! All right. Also, we just got to see Derivation Dingus. 01:04:43.194 --> 01:04:43.994 Yeah, such a treat. 01:04:44.094 --> 01:04:47.034 So one of these is a live boost. Great seeing you guys. Linux Fest was a blast. 01:04:47.234 --> 01:04:49.254 I'm writing this while sitting directly in front of you. 01:04:49.374 --> 01:04:49.874 Oh, amazing. 01:04:50.014 --> 01:04:50.714 At our live show. 01:04:50.914 --> 01:04:51.094 Uh-huh. 01:04:51.434 --> 01:04:52.634 Right, right, right. 01:04:52.834 --> 01:04:56.954 And then also props to Dingus for sending us a really nice breakdown to some 01:04:56.954 --> 01:05:01.354 of the copy-fail stuff, including some neat disassembly visualization there. 01:05:01.474 --> 01:05:05.034 A little pre-value, because he saw the lit pending item, saw we were going to 01:05:05.034 --> 01:05:07.614 be talking about a copy-fail, and hooked us up with some 411. 01:05:07.934 --> 01:05:08.374 Great. 01:05:08.794 --> 01:05:12.954 Thank you, Derivation, for that. That's a double-layer value this episode. Very nice. 01:05:13.074 --> 01:05:15.094 And it was indeed great seeing you at LinuxFail. 01:05:15.094 --> 01:05:15.834 Yes, indeed. 01:05:16.894 --> 01:05:18.214 You know what else is unbelievable? 01:05:18.314 --> 01:05:18.734 What's that? 01:05:19.334 --> 01:05:24.214 A Dude Trying Stuff is also a booster with 100,000 sats. 01:05:24.614 --> 01:05:25.054 What?! 01:05:28.654 --> 01:05:31.554 Oh my goodness, what is going on? 01:05:36.722 --> 01:05:39.162 Boosting in to celebrate getting a new job. 01:05:39.542 --> 01:05:40.962 Hey, congratulations, buddy. 01:05:41.542 --> 01:05:45.942 It is rough out there, gents. Been applying for over six months. 01:05:46.782 --> 01:05:47.502 Way to stick with it. 01:05:47.662 --> 01:05:50.962 Thank you for doing the most to keep us updated on the happenings in the community 01:05:50.962 --> 01:05:56.182 and helping me keep my passion and remember how awesome software really can be. Cheers. 01:05:56.542 --> 01:06:00.302 Cheers to you and congratulations. Thanks for sending some value our way, 01:06:00.422 --> 01:06:01.862 dude. Nice to hear from you too. 01:06:02.002 --> 01:06:02.362 Keep trying stuff. 01:06:02.622 --> 01:06:09.162 Yeah. Keep trying stuff. The dude abides comes in with 65,432 satoshis. 01:06:12.404 --> 01:06:16.284 Quite nice as well. Hey, yo, I just realized the last time only a portion of 01:06:16.284 --> 01:06:18.364 my boost got to all you, so here's a little bit more. 01:06:18.864 --> 01:06:22.564 Live boost! Thank you. Very nice. 01:06:23.984 --> 01:06:30.504 Amunday boosts in Big Ducks, 22,222 cents. 01:06:31.084 --> 01:06:32.984 Live show, LinuxFest Northwest boost. 01:06:33.124 --> 01:06:37.744 Very nice. Thank you. Boosting right there from the audience. How about that? 01:06:37.804 --> 01:06:45.764 That was fun last week. Well, tomato or tomato or tomato boosts in 4,444 sats. 01:06:45.864 --> 01:06:46.564 You say tomato. 01:06:48.144 --> 01:06:54.644 Love the LinuxFest Northwest coverage. I've got Dragonfly BSD and OpenBSD both downloaded. 01:06:55.104 --> 01:06:58.144 I've never run either of them before, so let's see how this goes. 01:06:58.544 --> 01:07:01.504 666, devil horns, et cetera, et cetera. 01:07:01.584 --> 01:07:04.584 Ah, yes. Dragonfly BSD. I'm surprised that didn't come up. 01:07:04.644 --> 01:07:07.904 I don't know if you saw, Brant, but I started a little poll for you in the Matrix chat. 01:07:07.904 --> 01:07:10.104 Oh, thank you. That's very kind of you. 01:07:10.204 --> 01:07:14.364 Yes, good. Let's get to voting. And you know the mission. You know what the mission is here. 01:07:14.784 --> 01:07:15.924 NetBSD, all the way. 01:07:17.524 --> 01:07:21.244 So good. Hey, our buddicy, our buddicy, our buddicy, Odyssey. 01:07:22.484 --> 01:07:27.044 Odyssey Westriff from Spooking comes in with 5,151 sats. 01:07:28.964 --> 01:07:32.224 Great to see you all live. Odyssey, it is always great to see you live. 01:07:32.384 --> 01:07:36.184 I was saying to the guys and to Angela, it's like, it's not a Linux fest unless Albert shows up. 01:07:36.184 --> 01:07:41.284 Oh, and I got a little 3D printed gift from Albert as well. These little tiny, 01:07:41.744 --> 01:07:43.784 really impressively printed penguins. 01:07:43.884 --> 01:07:45.744 Super smooth 3D printed penguins. 01:07:45.824 --> 01:07:47.004 Yeah, super nice. Thank you. 01:07:47.204 --> 01:07:49.184 And he gave me 3D gift to the kids, which I did. 01:07:49.344 --> 01:07:50.684 I saw them a little all over. 01:07:50.864 --> 01:07:51.344 Yeah, yeah. 01:07:51.524 --> 01:07:56.524 Also, Odyssey Westra is in the live chat right now saying, I'm just trying to 01:07:56.524 --> 01:07:58.864 get Ghost BSD to boot on this damn Chromebook. 01:07:59.244 --> 01:08:03.944 Can't get it to boot though. Can't mount the U2F mount. 01:08:03.944 --> 01:08:07.864 Well, it is famous for its wide variety of Chromebook support. 01:08:08.584 --> 01:08:10.464 Thanks for the value, Albert. We appreciate it. 01:08:11.365 --> 01:08:16.485 Moon and I boots in with 2,000 sets. I've been using Ventoy for a while, 01:08:16.485 --> 01:08:20.165 and I'm curious what baggage and edge cases y'all are referring to in this episode. 01:08:20.365 --> 01:08:23.045 I don't know. These two guys don't like Ventoy. 01:08:23.325 --> 01:08:23.585 Zero. 01:08:24.345 --> 01:08:25.185 I love it. 01:08:25.325 --> 01:08:30.025 I have never had success with Ventoy. I don't know what I'm doing wrong. 01:08:30.645 --> 01:08:34.725 I've tried several times, but I always run into an issue where it can't boot 01:08:34.725 --> 01:08:36.545 the specific ISO I want to be booting. 01:08:36.825 --> 01:08:42.045 And I don't know if it's a hardware issue. I don't know. I don't know. 01:08:42.045 --> 01:08:44.125 We should try maybe one that we make. 01:08:44.125 --> 01:08:45.045 Yeah maybe I mean the. 01:08:45.045 --> 01:08:45.845 Long time No I. 01:08:45.845 --> 01:08:49.965 Have He has one on a like really fancy USB drive. 01:08:49.965 --> 01:08:51.565 With SSD in there Oh even that doesn't work Still. 01:08:51.565 --> 01:08:54.465 Using that by the way from the very first time we covered it I'm still. 01:08:54.465 --> 01:08:56.245 Using that same thing That's true NVMe. 01:08:56.245 --> 01:08:57.625 In there and it rocks It's got 01:08:57.625 --> 01:09:01.665 C on one end A on the other end It works on every machine ever Not at all. 01:09:01.665 --> 01:09:02.545 Wow Yeah. 01:09:02.545 --> 01:09:04.385 So let us know what you think about Ventoy. 01:09:04.385 --> 01:09:09.025 I will add so there's the some people struggle with it seems like maybe some 01:09:09.025 --> 01:09:14.125 firmwares or UFI setups similar just don't like it so mileage may vary but then 01:09:14.125 --> 01:09:17.985 separately there's some concern around binary blobs that are present in the 01:09:17.985 --> 01:09:22.125 code base and so it's been brought up it hasn't ever really been fully addressed, 01:09:22.745 --> 01:09:27.345 there's been more tension about it over time so some folks have sort of provenance 01:09:27.345 --> 01:09:30.945 and trust issues with the delivery of how you get Ventoy you. 01:09:30.945 --> 01:09:32.345 Can pivot to that now that. 01:09:32.345 --> 01:09:33.845 Makes me feel slightly better. 01:09:33.845 --> 01:09:38.505 But thank you for that question clearly Moon and Night it needs addressing and 01:09:38.505 --> 01:09:40.385 I'd like to hear what people think about Ventoy. 01:09:40.385 --> 01:09:45.245 I guess last year the dev did have some response saying that the blobs come 01:09:45.245 --> 01:09:48.125 from other open source and propose to build them from GitHub CI. 01:09:48.425 --> 01:09:51.425 I don't know if any of that's actually really happened yet. 01:09:52.545 --> 01:09:53.605 Maybe instead of blobs. 01:09:53.645 --> 01:09:55.805 Make your own judgment. I don't know. It kind of depends on what your trust. 01:09:55.825 --> 01:10:00.205 What if we called them magic boxes instead of blobs? And then it's not so bad. 01:10:00.425 --> 01:10:03.105 You know, it's got some magic boxes. It ships with a few magic boxes. 01:10:03.525 --> 01:10:06.485 I mean, I'd like to know how it works, but it's magic. Okay, 01:10:06.545 --> 01:10:08.585 I'll accept that. And then we don't call them blobs. 01:10:09.750 --> 01:10:14.750 Blobs is something you fight in a video game. Distro Stu comes in with 3,333. 01:10:15.930 --> 01:10:19.390 And says, you're doing a great job. Well, thank you, Distro. 01:10:20.010 --> 01:10:25.970 You're doing a great job. Should we, you want to play a little, I got that for you. 01:10:27.310 --> 01:10:30.210 I do like the Leonard Nimoy clips from time to time. 01:10:35.730 --> 01:10:36.510 Indeed it does. 01:10:36.590 --> 01:10:40.410 That's a good one. And then, as distrust to be requested, there you go. 01:10:40.910 --> 01:10:43.730 I just need to let that steep for a bit. 01:10:44.610 --> 01:10:50.010 Well, Monty comes in with a row of ducks. Thanks for the push to get my rescue 01:10:50.010 --> 01:10:52.290 drive system updated and in place. 01:10:52.570 --> 01:10:52.850 Nice. 01:10:53.050 --> 01:10:57.950 I added a rescue Nix config with boot to RAM now to my flake and have a USB 01:10:57.950 --> 01:10:59.830 drive plugged into my Proxmox host. 01:11:00.030 --> 01:11:05.170 From my laptop, I can update the config, build it, and flash it over the network to the USB drive. 01:11:05.350 --> 01:11:06.670 Nice. with. 01:11:06.670 --> 01:11:10.950 Just file so i don't forget and i can then boot a vm on proxmox that has the 01:11:10.950 --> 01:11:13.390 usb drive passed through to test it. 01:11:13.390 --> 01:11:15.170 Now that's using your kidneys that's. 01:11:15.170 --> 01:11:20.170 Fancy i can pull the rescue drive out whenever i need it and then we get a link to monty's config. 01:11:20.170 --> 01:11:27.290 Oh monty's a baller you know we love the configs thank you oh yeah oh i'm just 01:11:27.290 --> 01:11:31.430 saying i like up front he's got the structure listed in the readme a real quick 01:11:31.430 --> 01:11:33.570 blurb for 30 plus hosts my goodness, 01:11:34.530 --> 01:11:40.490 and then even MIT licensing on there well done it's a clean lean machine. 01:11:41.490 --> 01:11:45.410 Whomever whiz boosts in 10,011 sats, 01:11:51.081 --> 01:11:54.761 Eric here. I had the best time at LinuxFest Northwest. 01:11:55.201 --> 01:11:59.161 The brilliant and creative members of this community are intellectually inspiring, 01:11:59.621 --> 01:12:02.741 funny, astute, inclusive, and generous. 01:12:03.101 --> 01:12:07.561 I even managed to hook up on Matrix before I left this year so I can stay connected 01:12:07.561 --> 01:12:09.401 and keep that conversation going. 01:12:09.781 --> 01:12:15.301 Thank you so much for showing me the way to find my people. Fun will now commence. 01:12:16.081 --> 01:12:19.981 Yeah, it really is great, isn't it, Eric? It's more than you can even imagine 01:12:19.981 --> 01:12:22.881 from afar, and I'm really glad that you had a chance to share that with us. 01:12:23.081 --> 01:12:24.301 Thank you for the value, too. 01:12:25.261 --> 01:12:29.281 Mr. Mayhem is here with 6,660 sats. 01:12:30.721 --> 01:12:34.601 Week one is done, and he posted a full write-up so far. He's started, 01:12:34.781 --> 01:12:37.621 and he is going for maximum points. 01:12:37.921 --> 01:12:44.121 The madman is repurposing what he calls a bad luck NixOS machine into a fresh free BSD setup. 01:12:45.181 --> 01:12:49.721 He's avoiding past ghost BSD concerns. He's going for full graphical desktop. 01:12:49.781 --> 01:12:53.761 He's got a browser. He's got his user count and mounts. Audio are already working. He's got that done. 01:12:54.601 --> 01:12:57.701 System administration tasks include package updates, OS updates, 01:12:57.861 --> 01:12:59.081 SSH, service, and scripts. 01:13:00.081 --> 01:13:03.101 And apparently he has a BSD jail with NGINX running inside of it. 01:13:03.221 --> 01:13:05.641 We're going to need to see. Oh, we're going to need to see the submission. I don't know. 01:13:05.741 --> 01:13:08.461 Yeah, I just think it's sounding like Mayhem is winning. 01:13:08.761 --> 01:13:12.621 Yeah, so far. Stretch goals include a PF firewall rule, beehive virtualization, 01:13:13.021 --> 01:13:16.701 ZFS snapshots, and Dragonfly BSD. 01:13:16.981 --> 01:13:17.801 And tailscale. Oh, yeah. 01:13:18.981 --> 01:13:19.741 So Mayhem, if you want to. 01:13:19.741 --> 01:13:21.921 I mean, that's a good playbook right there if you just want to join the challenge. 01:13:22.041 --> 01:13:23.181 Do you want to just set mine up too? 01:13:23.341 --> 01:13:24.421 If you want to be my challenge buddy. 01:13:24.421 --> 01:13:26.801 Yeah, send us a disc image. Boost it in. 01:13:27.501 --> 01:13:32.721 That would be great. Thank you, everybody, who boosted in. 01:13:33.061 --> 01:13:36.021 Also, thank you, everybody who streamed sats. 18 of you streamed sats as you 01:13:36.021 --> 01:13:40.081 listened, and collectively, you stacked 25,350 sats. 01:13:41.600 --> 01:13:44.580 When you combine that with our baller boosters and everybody who boosted, 01:13:44.600 --> 01:13:48.020 and we had some great ballers this week, it turned out to be a tremendous episode. 01:13:48.160 --> 01:13:51.120 And this is the interesting thing about Value for Value. About three days ago, 01:13:51.200 --> 01:13:53.120 it looked like it was going to be a rather low episode. 01:13:53.420 --> 01:13:56.540 And then just a couple of members in the community stepped up. 01:13:56.820 --> 01:13:57.760 Huge value storm. 01:13:57.900 --> 01:14:00.720 It's one of our better episodes. And it's funny how that can happen sometimes. 01:14:00.960 --> 01:14:04.360 And we just ride the wave, and we're so grateful. So thank you, everybody. 01:14:04.620 --> 01:14:11.080 We stacked a grand total of 526,592 sats. 01:14:11.600 --> 01:14:12.020 Thank you. 01:14:12.700 --> 01:14:15.660 That is very, very great. We really do appreciate that. 01:14:15.920 --> 01:14:19.580 And if you would like to boost in, Fountain FM makes it really easy these days 01:14:19.580 --> 01:14:25.000 with Fiat or Sats, including multiple ways to do that and connecting to your own AlbiHub. 01:14:25.200 --> 01:14:28.540 Now, if you go AlbiHub, you can integrate with lots of different applications, 01:14:29.260 --> 01:14:31.680 including the podcast index, and you can just boost from the web. 01:14:32.040 --> 01:14:36.420 It's a great way to support the show, or you can become a member and put your support on Autopilot. 01:14:36.800 --> 01:14:41.220 Thank you, everybody who supported episode 665, and we look forward to hearing 01:14:41.220 --> 01:14:43.660 from you and you boosted in on the BSD challenge. 01:14:43.900 --> 01:14:46.800 Let us know how it goes with a boost or the contact page. 01:14:47.000 --> 01:14:47.620 BSD boost. 01:14:48.660 --> 01:14:53.000 We should have, yeah, 6,666 that's. Is that the BSD boost or something like that? 01:14:53.000 --> 01:14:54.260 Any number of sixes will do. 01:14:54.800 --> 01:14:57.660 All right, so we got a different kind of pick for you this week. 01:14:57.800 --> 01:15:01.060 This is kind of, we're going to ask you to try it and report back. 01:15:01.320 --> 01:15:03.380 Since we're busy with the BSD challenge. 01:15:03.540 --> 01:15:05.980 Ask not what your show can pick for you, something like that? 01:15:06.881 --> 01:15:10.241 I like that. Yeah. But what you can pick for your podcast. 01:15:10.361 --> 01:15:10.721 There we go. 01:15:11.321 --> 01:15:18.421 We'd like you to get nasty. N-A-S-T-Y. It is a NAS operating system built on NixOS and BcacheFS. 01:15:18.841 --> 01:15:22.301 It turns your hardware into a storage appliance that serves NFS, 01:15:22.381 --> 01:15:25.101 Samba, iSCSI, NVMe over Ethernet. 01:15:25.281 --> 01:15:27.921 Managed all from a nice web UI. 01:15:28.221 --> 01:15:32.261 Updated automatically. Has rollback support. New version just came out that 01:15:32.261 --> 01:15:35.601 integrates a complete backup system using Rustic Core. 01:15:35.601 --> 01:15:39.081 So you can go to anything basically rustic supports, which is a lot of the things 01:15:39.081 --> 01:15:43.461 the new log viewer in the UI as services page with unified services configuration 01:15:43.461 --> 01:15:47.921 for NFS, Samba, iSCSI, MVME, over networking, UPS stuff, SSH, 01:15:48.001 --> 01:15:48.941 Docker, backup server, etc. 01:15:49.321 --> 01:15:55.961 And ARM support. It's GPL3. So if you are not participating in the BSD challenge. 01:15:56.864 --> 01:15:57.964 and have some time. 01:15:58.184 --> 01:16:00.064 An alternate B-based challenge. 01:16:00.384 --> 01:16:04.704 Try out nasty. And report in, because what we're trying to essentially get to 01:16:04.704 --> 01:16:06.524 is if it's worth us giving it a full go. 01:16:07.324 --> 01:16:09.124 Finally a NAS built on BcashFS. 01:16:09.224 --> 01:16:12.584 Yeah. Wes, is this your project? It feels like something you would want. 01:16:12.604 --> 01:16:15.644 I am interested. I will also just sneak in here. 01:16:15.824 --> 01:16:21.064 BcashFS a day ago had V138.2 come out. A bunch of performance stuff. 01:16:21.284 --> 01:16:23.644 Cycle detector and six locks improvements. 01:16:24.204 --> 01:16:28.304 Btree write buffer multi-threading. btree node merge attempt thrashing fixed 01:16:28.304 --> 01:16:35.444 so now uh kent writes if you've got a workload where we're slower than butterfs or zfs let me know. 01:16:35.444 --> 01:16:38.444 Oh it's open all right we'll ride 01:16:38.444 --> 01:16:42.084 that wave with nasty and let us know how it goes and if we should try it out 01:16:42.084 --> 01:16:46.784 now we do have a pick that i think is very handy it's one of those legacy pick 01:16:46.784 --> 01:16:50.104 here you know a standard pick but it's one of those you need it when you need 01:16:50.104 --> 01:16:56.244 it it's called diffuse and it allows you to remove backgrounds from images locally on your desktop. 01:16:56.284 --> 01:17:01.004 It's a GTK4-based application written in Python using Libidwadia, 01:17:01.004 --> 01:17:07.364 and it just uses web GPU acceleration on x86-64 systems. 01:17:07.404 --> 01:17:13.104 So it's using web GPU to do an accelerated GPU removal of the background on 01:17:13.104 --> 01:17:16.544 just a little simple purpose-built application. You don't need to go to a website. 01:17:16.544 --> 01:17:19.604 You don't need to go to a service. You can just use Diffuse. 01:17:20.535 --> 01:17:24.475 Processing is performed using the ISNet general model through Onyx Runtime. 01:17:24.715 --> 01:17:27.255 And it is also GPL3. 01:17:27.495 --> 01:17:29.475 Neat. Have you tried it? How does it work? 01:17:29.615 --> 01:17:33.715 It's pretty good. It does have some challenges on hair, but for some of the 01:17:33.715 --> 01:17:36.835 stuff, I had a funny picture of Brent to make a sticker. I wanted to use it to make a sticker. 01:17:37.055 --> 01:17:37.255 Oh, good. 01:17:37.395 --> 01:17:37.795 Hey, no. 01:17:37.955 --> 01:17:38.935 Yeah, we need Brent stickers. 01:17:39.015 --> 01:17:42.375 And then there's also, I have this picture of Jeff when he's holding a long 01:17:42.375 --> 01:17:44.955 pole, and that made for a great sticker. 01:17:46.195 --> 01:17:49.915 I have them for when I need them, you know? If you get a moment, you make a sticker. 01:17:50.015 --> 01:17:51.515 That's right. that's responsible sticker. 01:17:51.515 --> 01:17:55.115 It's also available on flathub and no 01:17:55.115 --> 01:17:57.975 no diffuse we'll put a link to that in the show notes 01:17:57.975 --> 01:18:00.895 link to nass link to everything we talked about today will be 01:18:00.895 --> 01:18:06.135 in the show notes you can find those over at linuxunplugged.com slash six six 01:18:06.135 --> 01:18:11.715 five and of course you know what next week's it is the result of the bsd challenge 01:18:11.715 --> 01:18:15.375 and we'd love to hear how it went for you too and wes some pro tips for people 01:18:15.375 --> 01:18:18.135 before we get out of here you got any yeah um. 01:18:18.135 --> 01:18:21.035 I'm hooked on structured metadata, maybe you are too. 01:18:21.555 --> 01:18:25.175 So we have an XML file. And in that XML file, we have a JSON file. 01:18:26.035 --> 01:18:27.015 Actually, maybe several. 01:18:27.235 --> 01:18:27.335 What? 01:18:27.595 --> 01:18:29.215 Yeah, and that has chapters. 01:18:29.475 --> 01:18:30.175 Oh, nice. 01:18:30.315 --> 01:18:32.455 Yeah, which is metadata about the show. 01:18:32.535 --> 01:18:32.755 Uh-huh. 01:18:32.935 --> 01:18:35.475 And we have even more metadata if you want like. 01:18:35.575 --> 01:18:35.895 We do? 01:18:36.095 --> 01:18:37.915 Yeah, well, if you want like an SRT file. 01:18:38.035 --> 01:18:38.215 Mm. 01:18:38.535 --> 01:18:40.135 Yeah, or a VTT file. 01:18:40.315 --> 01:18:40.455 Oh. 01:18:40.475 --> 01:18:42.515 And then that's like, who said what? When? 01:18:42.995 --> 01:18:43.495 In there. 01:18:43.815 --> 01:18:44.175 Right? 01:18:44.375 --> 01:18:44.555 Ready. 01:18:44.595 --> 01:18:46.195 Right, embedded. I mean, it's like a. 01:18:46.395 --> 01:18:46.735 Good to go. 01:18:46.735 --> 01:18:51.195 You go to the XML, and then that points you to the SRT, and then you got the data. 01:18:51.435 --> 01:18:51.795 You got it. 01:18:51.875 --> 01:18:51.995 Yeah. 01:18:52.095 --> 01:18:52.555 I got it. All right. 01:18:52.735 --> 01:18:55.915 But there's these things called podcast apps. 01:18:56.075 --> 01:18:56.235 Yeah. 01:18:56.755 --> 01:18:57.995 A lot of them do that for you. 01:18:58.155 --> 01:18:59.555 Oh, what a great idea. 01:18:59.695 --> 01:19:04.135 Yeah. It's quite the ecosystem. They call it podcasting 2.0. 01:19:04.275 --> 01:19:05.635 They also support live streams. 01:19:09.040 --> 01:19:13.560 Yeah, that's right. We are live on a Sunday. You can make it a Tuesday by joining 01:19:13.560 --> 01:19:20.640 us over at jblive.tv or jblive.fm or like Wes said, in your podcasting 2.0 app of choice. 01:19:20.860 --> 01:19:23.300 A lot of them just support the live streaming. In there we go. 01:19:23.600 --> 01:19:26.740 We have it pending so you know like a day before the show when it's going to 01:19:26.740 --> 01:19:28.800 be. Boom, you hit the button, you're listening. It's incredible. 01:19:28.940 --> 01:19:30.160 It's amazing. It's a podcast app. 01:19:30.360 --> 01:19:34.040 We also got the website, linuxunplugged.com. That uses HTML and CSS. 01:19:34.040 --> 01:19:36.240 It looks pretty good and it gives you links to stuff. Check it out. 01:19:36.320 --> 01:19:38.940 You're going to love it. But thank you so much for joining us on this week's 01:19:38.940 --> 01:19:40.720 episode of your Unplugged program. 01:19:41.940 --> 01:19:44.280 Hope you enjoyed it. Let us know what you thought. This is a big episode, 01:19:44.300 --> 01:19:48.860 and we'll see you right back here next Tuesday, as in Sunday!
Previous episode

Related episodes

Search

Search