WEBVTT

00:00:11.488 --> 00:00:16.213
<v Chris>Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.

00:00:16.213 --> 00:00:17.136
<v Wes>My name is Wes.

00:00:17.351 --> 00:00:18.353
<v Brent>And my name is Brent.

00:00:18.353 --> 00:00:23.043
<v Chris>Hello, gentlemen. Coming up on the show this week, Greg KH has been busy.

00:00:23.043 --> 00:00:25.124
<v Chris>Seven Linux kernels landed on Saturday.

00:00:25.693 --> 00:00:30.763
<v Chris>Almost all of them were in LTS. We'll break down what changed and what releases

00:00:30.763 --> 00:00:32.479
<v Chris>just might fit your home lab best.

00:00:32.879 --> 00:00:40.333
<v Chris>And then why generating truly random numbers is so dang hard and how it's gone so bad in the past.

00:00:40.333 --> 00:00:42.574
<v Chris>We'll talk about that and we'll round it out with some boosts,

00:00:42.910 --> 00:00:45.893
<v Chris>some picks, and a lot more. So before we get there, let's say time appropriate

00:00:45.893 --> 00:00:48.993
<v Chris>greetings to our virtual lug. Hello, Mumble Room.

00:00:50.653 --> 00:00:51.463
<v Chris>Hello, guys.

00:00:51.463 --> 00:00:52.355
<v Mumble>Hello, Brent.

00:00:52.506 --> 00:00:55.283
<v Chris>And hello up there in the quiet listening and everybody watching live over at

00:00:55.283 --> 00:00:58.189
<v Chris>jblav.tv, making it a Tuesday on a Sunday.

00:00:59.012 --> 00:01:02.518
<v Chris>And good morning to our friends at Defined Networking.

00:01:02.855 --> 00:01:07.743
<v Chris>Check out Defined.net slash unplugged and sign up for Managed Nebula 100 hosts

00:01:07.743 --> 00:01:09.380
<v Chris>for free, no credit card required.

00:01:09.780 --> 00:01:15.765
<v Chris>Nebula is one of my favorite technologies, and Manage Nebula makes it so straightforward,

00:01:16.166 --> 00:01:18.197
<v Chris>and now they give you a lighthouse to get going real quick.

00:01:18.998 --> 00:01:25.173
<v Chris>Picture a Mesh VPN completely and totally under your control with a design that

00:01:25.173 --> 00:01:28.524
<v Chris>is intelligent and low resources from the beginning.

00:01:28.908 --> 00:01:32.423
<v Chris>Something designed to connect some of the most important and sensitive data

00:01:32.423 --> 00:01:36.833
<v Chris>around the world is now available to you and, through the magic of cryptography,

00:01:36.833 --> 00:01:38.474
<v Chris>is very straightforward to set up.

00:01:38.817 --> 00:01:41.443
<v Chris>You get strong encryption, direct device-to-vice connections,

00:01:41.443 --> 00:01:45.503
<v Chris>and you can self-host Lighthouse Nodes, giving you complete control over the

00:01:45.503 --> 00:01:48.488
<v Chris>network that you depend on. That's huge.

00:01:49.457 --> 00:01:54.821
<v Chris>So go get started. 100 hosts for free. No credit card required at Defined.net slash unplugged.

00:01:55.239 --> 00:01:58.814
<v Chris>Go check it out. We love it. Defined.net slash unplugged.

00:02:01.164 --> 00:02:03.710
<v Chris>You know, we just have a really quick housekeeping this week.

00:02:04.270 --> 00:02:07.890
<v Chris>We wanted to say thank you. We meant to say thank you last week when we were

00:02:07.890 --> 00:02:09.366
<v Chris>remote at Brent's place.

00:02:09.883 --> 00:02:13.870
<v Chris>But it dawned on us afterwards, once again, a big thank you to everybody who

00:02:13.870 --> 00:02:15.287
<v Chris>helped us get those headsets.

00:02:16.048 --> 00:02:17.270
<v Chris>It's almost been, what, two years now?

00:02:17.870 --> 00:02:22.180
<v Brent>Those things have been just solid. I don't think they've never ever caused us

00:02:22.180 --> 00:02:25.545
<v Brent>a technical issue we've had to solve. Everything else has, but never those headsets.

00:02:25.713 --> 00:02:30.154
<v Chris>It's crazy. It's crazy what a reduction in complexity and gear that was for us, too.

00:02:30.972 --> 00:02:35.700
<v Wes>Really? Yeah. I mean, at that point, it's them and a mixer of some kind that

00:02:35.700 --> 00:02:36.650
<v Wes>can handle enough inputs.

00:02:36.650 --> 00:02:36.934
<v Chris>Yeah.

00:02:37.085 --> 00:02:37.770
<v Wes>And then a computer.

00:02:37.770 --> 00:02:41.960
<v Chris>And without them, it's big microphones and stands and separate headphones and

00:02:41.960 --> 00:02:47.300
<v Chris>wires for all of that to work. And it's nuts. It's nuts. So thank you so much.

00:02:47.300 --> 00:02:48.463
<v Chris>We just wanted to take a moment.

00:02:49.210 --> 00:02:53.210
<v Chris>And it's like every time we use them, we're like, oh, so, so freaking grateful,

00:02:53.210 --> 00:02:56.077
<v Chris>the members and the listeners, too. People contributed from all around.

00:02:57.650 --> 00:03:01.420
<v Brent>I want to thank you two boys And the Mumble Room for doing a nice little send

00:03:01.420 --> 00:03:07.680
<v Brent>off Of my beloved studio That was nice That thing has done quite a few episodes

00:03:07.680 --> 00:03:12.244
<v Brent>So I want to say thanks for your One last hurrah in there It was really great.

00:03:15.716 --> 00:03:21.305
<v Chris>Seven kernels on a Saturday. Greg KH shipped a bunch of stable kernels in one

00:03:21.305 --> 00:03:23.959
<v Chris>window. I'm hoping he's taking a summer vacation after this.

00:03:24.418 --> 00:03:29.329
<v Chris>Six of them were LTS point releases and some big numbers in here, boys. Check this out.

00:03:29.903 --> 00:03:32.399
<v Chris>6.12.100.

00:03:33.305 --> 00:03:38.065
<v Chris>6.1.180. Get ready for this. It's still kicking.

00:03:38.419 --> 00:03:41.345
<v Chris>Linux 5.10.262.

00:03:42.925 --> 00:03:46.495
<v Wes>Yeah, those are basically point release numbers, right? so those get bumped

00:03:46.495 --> 00:03:50.755
<v Wes>up as Greg releases new ones so you can kind of tell how long he's been doing those.

00:03:50.755 --> 00:03:51.105
<v Chris>Yeah.

00:03:51.105 --> 00:03:53.430
<v Brent>I'm glad he's keeping track because we're not.

00:03:53.987 --> 00:04:00.576
<v Chris>Linus also tagged Linux 7.2 RC5 over the weekend, so he called it quite the massive RC5.

00:04:00.912 --> 00:04:03.925
<v Chris>This really kind of brings it up to a total of seven. So we got these six stable

00:04:03.925 --> 00:04:08.592
<v Chris>point releases, and then the new 7.2, which kills AppleTalk, is reaching RC5.

00:04:09.144 --> 00:04:12.945
<v Chris>And it has quite a bit of changes in it because there's been a lot of AI-assisted

00:04:12.945 --> 00:04:14.827
<v Chris>patching that's been hitting the kernel recently.

00:04:15.779 --> 00:04:21.076
<v Chris>It's a lot. What do you say, Wes? You want to break some of it down for us?

00:04:21.076 --> 00:04:24.526
<v Wes>Yeah, I guess just take it to handle on what kernels we're talking about here.

00:04:24.526 --> 00:04:28.906
<v Wes>Well, sort of before the big push, Greg released 7.1.5. 7.2 is not out,

00:04:28.906 --> 00:04:30.566
<v Wes>right? So we're doing the 7.1 thing.

00:04:30.566 --> 00:04:31.126
<v Chris>Yes, thank you.

00:04:31.466 --> 00:04:36.646
<v Wes>And then, of course, as you said, Linus released 7.2 RC5. We're expecting 7.2

00:04:36.646 --> 00:04:39.586
<v Wes>to come out maybe sometimes around August 16th, somewhere in there.

00:04:41.306 --> 00:04:43.886
<v Wes>Obviously, depending on how many RCs Linus deems necessary.

00:04:46.446 --> 00:04:52.986
<v Wes>And then, so that was July 26, and then on July 30, yeah, six LTS point releases.

00:04:52.986 --> 00:04:55.826
<v Wes>So we got, we'll go from the newest and then kind of get older.

00:04:56.166 --> 00:04:58.486
<v Wes>We got 618.41.

00:04:58.486 --> 00:04:58.946
<v Chris>Wow.

00:04:58.946 --> 00:05:02.246
<v Wes>That's the newest, quote unquote, active LTS, right? 618.

00:05:02.246 --> 00:05:02.406
<v Chris>Okay.

00:05:02.826 --> 00:05:07.206
<v Wes>That has an end of life coming up in December 2028. Then we had,

00:05:07.706 --> 00:05:16.426
<v Wes>let's see here, 612.100, Debian 13 Trixie and RHEL 10 base. That EOL is also December 2028.

00:05:16.426 --> 00:05:19.706
<v Chris>That's, I mean, 2028's not that far away, but pretty good. So these are going

00:05:19.706 --> 00:05:22.105
<v Chris>to, this will be the kernel that ends up in people's RHEL 10.

00:05:22.320 --> 00:05:24.926
<v Chris>So this will be pretty widely used kernel 612-100.

00:05:24.926 --> 00:05:29.076
<v Wes>And it's the first time we start seeing the involvement of the civil infrastructure

00:05:29.076 --> 00:05:36.664
<v Wes>platforms SuperLTS that's going to try and keep this thing alive until December 2035.

00:05:38.406 --> 00:05:39.091
<v Chris>I'm sorry.

00:05:39.973 --> 00:05:40.652
<v Chris>What did you say?

00:05:41.117 --> 00:05:42.069
<v Wes>Yeah, 2035.

00:05:43.294 --> 00:05:45.399
<v Chris>Wow, yeah, yeah. That's incredible.

00:05:45.399 --> 00:05:49.079
<v Wes>So basically, it's a Linux Foundation project, the civil infrastructure platform,

00:05:49.459 --> 00:05:51.949
<v Wes>with a bunch of industry folks, right? Like Siemens, Toshiba,

00:05:51.949 --> 00:05:53.199
<v Wes>Hitachi, Mux, so people that.

00:05:53.199 --> 00:05:54.719
<v Chris>Build like- I hope Google's in there with Android.

00:05:54.719 --> 00:06:00.069
<v Wes>Right? Long-term embedded industrial systems. And so it kind of exists to extend

00:06:00.069 --> 00:06:02.799
<v Wes>kernel.org, which often does it for like roughly two years.

00:06:03.539 --> 00:06:07.772
<v Wes>But they're trying to offer stuff more like 10 plus, 20, you know?

00:06:08.155 --> 00:06:13.329
<v Chris>So if you want to run 612-100, you can say that you're running a super LTS kernel.

00:06:13.329 --> 00:06:19.589
<v Wes>Yeah, that's right. Okay, we also got 66147. That has an end of life of 2027.

00:06:19.589 --> 00:06:21.359
<v Wes>That's getting pretty close, December as well.

00:06:23.379 --> 00:06:28.949
<v Wes>61180, that's a Debian 12 bookworm base. That AOL is December 2027 as well.

00:06:28.959 --> 00:06:29.680
<v Chris>Also coming up.

00:06:30.005 --> 00:06:34.639
<v Wes>And would you believe it? We are still pushing updates to the 5 series kernel.

00:06:34.639 --> 00:06:38.115
<v Wes>Yes, we're on 7 now. that's like two giant numbers ago uh,

00:06:38.919 --> 00:06:46.359
<v Wes>so this is 5 15 213 that's the ubuntu 2204 lts base that's coming up soon though

00:06:46.359 --> 00:06:50.349
<v Wes>end of life december 2026 as far as obviously ubuntu does their own work but

00:06:50.349 --> 00:06:52.029
<v Wes>yeah in terms of kernel.org.

00:06:52.029 --> 00:06:53.867
<v Chris>Right right then they're on their own after that.

00:06:54.018 --> 00:07:00.119
<v Wes>And then the last but the least i don't know that's up to you uh 5 10 262 that's

00:07:00.119 --> 00:07:05.549
<v Wes>the debian 11 era kernel.org end of life December 2026 coming right up but this

00:07:05.549 --> 00:07:08.089
<v Wes>one is also under that super long term support

00:07:08.449 --> 00:07:10.493
<v Wes>to January 2031.

00:07:11.439 --> 00:07:14.585
<v Chris>When you see that, when you see they get the super long-term support,

00:07:15.473 --> 00:07:18.985
<v Chris>I think the obvious giveaway here is like these have ended up in some sort of,

00:07:19.589 --> 00:07:24.229
<v Chris>widely deployed corporate system, some image that's on a bunch of consumer devices

00:07:24.229 --> 00:07:25.819
<v Chris>or control devices, something like that.

00:07:25.819 --> 00:07:29.369
<v Wes>Yeah, and things shipped that like aren't easy to update or maybe are certified.

00:07:29.369 --> 00:07:32.039
<v Wes>And so you need, if you change the kernel, you got to do a whole new certification.

00:07:32.039 --> 00:07:34.049
<v Wes>You might not be able to do updates in place.

00:07:34.752 --> 00:07:41.539
<v Chris>But a lot of these drop off in 2027. A couple of drop off in December of this year.

00:07:41.539 --> 00:07:46.789
<v Chris>Two of them drop off. So like Greg's list, I don't know if he's responsible

00:07:46.789 --> 00:07:50.569
<v Chris>for the super long term, but like Greg's list does shorten a little bit in a year or two.

00:07:50.569 --> 00:07:53.389
<v Wes>And that's part of sort of the two-year thing, right? It's like the kernel.org

00:07:53.389 --> 00:07:57.879
<v Wes>team has to maintain stable kernels that like, you know, actual people pull from.

00:07:57.879 --> 00:08:00.089
<v Wes>And they work on whatever the latest kernel is all the time.

00:08:00.089 --> 00:08:02.679
<v Wes>It's just, you know, you have to handle who's going to actually support this,

00:08:02.679 --> 00:08:07.199
<v Wes>which is where it is nice to see the companies involved in wanting to run ancient

00:08:07.199 --> 00:08:10.457
<v Wes>kernels stepping up to sort of take on some of that ownership.

00:08:10.771 --> 00:08:14.349
<v Chris>So, Brent, I think last time we were looking at some of the patch sets that

00:08:14.349 --> 00:08:18.569
<v Chris>were hitting 7.2, there was a lot of stuff in video, a lot of video drivers.

00:08:18.569 --> 00:08:23.164
<v Chris>What are we seeing that got your attention in 7.2 RC5? The new freshness.

00:08:23.890 --> 00:08:28.598
<v Brent>There is new freshness. There's AMD GPU compute stuff in there.

00:08:28.801 --> 00:08:35.479
<v Brent>that's a 42x regressions though on some of the 7.0 point releases so stable

00:08:35.479 --> 00:08:42.949
<v Brent>diffusion xl via comfy ui went from a nine second to uh 388 seconds.

00:08:42.949 --> 00:08:44.589
<v Chris>That's a pretty significant regression.

00:08:45.109 --> 00:08:45.569
<v Brent>Okay so.

00:08:46.049 --> 00:08:49.477
<v Chris>All right so maybe 7.2 don't don't use it on amg compute systems just yet.

00:08:49.982 --> 00:08:54.699
<v Brent>I mean some of those are fixed upstream in 7.0.13 but not every single distro

00:08:54.699 --> 00:08:59.682
<v Brent>has picked them up yet so So take your chances or do some research, I would say.

00:09:00.361 --> 00:09:04.789
<v Chris>I also saw a fair amount of pent-up networking work. Wes had a stat here that

00:09:04.789 --> 00:09:08.030
<v Chris>over a third of the patches that landed were networking alone.

00:09:08.883 --> 00:09:12.109
<v Chris>And again, I think, Brent, that's more of like the AI-assisted code stuff only

00:09:12.109 --> 00:09:15.094
<v Chris>sitting in the networking branch. It just, to me, seems like...

00:09:16.006 --> 00:09:19.030
<v Chris>We're going to need, like, a spring cleaning next year or something.

00:09:20.214 --> 00:09:22.481
<v Brent>How much are you hoping to clear out? As much as we cleared out?

00:09:22.481 --> 00:09:25.791
<v Chris>Well, if we're willing to get rid of AppleTalk, then where is the line, boys?

00:09:26.591 --> 00:09:29.711
<v Wes>I think you're right. We're probably going to see more of that as basically

00:09:29.711 --> 00:09:32.291
<v Wes>every subsystem in the kernel gets more and more pressure.

00:09:32.731 --> 00:09:37.600
<v Wes>The stuff that is no longer load-bearing is just the desire to cut it is going to increase.

00:09:38.065 --> 00:09:43.300
<v Chris>But to your point about, like, that massive 42x regression compared to Linux 7.0,

00:09:44.553 --> 00:09:48.731
<v Chris>So that stuff stings, but most people that are using that stuff in a production

00:09:48.731 --> 00:09:51.901
<v Chris>workload where they're using the actual AMD compute infrastructure,

00:09:51.901 --> 00:09:53.991
<v Chris>I doubt they're going to install 7.2.

00:09:53.991 --> 00:09:58.731
<v Chris>And AMD does seem to be actively contributing upstream, so I imagine they're

00:09:58.731 --> 00:09:59.611
<v Chris>going to be working on that.

00:09:59.611 --> 00:10:05.921
<v Wes>I think part of the story here is kind of like what and why do you choose a particular kernel?

00:10:05.921 --> 00:10:08.691
<v Wes>How do you go about doing that, right? So it's like some of these things are,

00:10:08.691 --> 00:10:12.181
<v Wes>yeah, you hit it if you are upgrading, but do you need to upgrade for hardware

00:10:12.181 --> 00:10:15.131
<v Wes>enablement? Do you need some sort of new feature? Are you really looking for

00:10:15.131 --> 00:10:16.461
<v Wes>a potential performance improvement?

00:10:16.461 --> 00:10:22.191
<v Chris>There's another wrinkle to it as well, as sometimes the drivers or system support

00:10:22.191 --> 00:10:24.581
<v Chris>do get backported to these older releases.

00:10:24.581 --> 00:10:29.441
<v Chris>So you might see that they started contributing drivers at the 7.0 series,

00:10:29.441 --> 00:10:31.696
<v Chris>but sometimes, like the NVIDIA stuff...

00:10:32.583 --> 00:10:37.420
<v Chris>IOMMU stuff, that stuff gets backported. And so the older kernels can sometimes

00:10:37.420 --> 00:10:40.651
<v Chris>end up with that. So I think you could think about it in tiers here, right?

00:10:41.556 --> 00:10:45.950
<v Chris>If you're looking through an LTS lens and you're just looking at long-term stable

00:10:45.950 --> 00:10:49.030
<v Chris>kernels, you want to set up a box and forget about it for as long as possible.

00:10:49.030 --> 00:10:51.090
<v Chris>I mean, you still need to update, but you won't have to redo your kernel.

00:10:51.870 --> 00:10:54.763
<v Chris>Then that's, I think, right off the bat, that's Linux 6.18.

00:10:55.750 --> 00:10:59.410
<v Chris>It is the current, quote-unquote, bleeding-edge LTS. It has some of the newer

00:10:59.410 --> 00:11:01.438
<v Chris>AMD, NVIDIA stuff backported.

00:11:02.330 --> 00:11:06.150
<v Chris>And it will last until 2028. That gets you a pretty long runway.

00:11:06.150 --> 00:11:09.980
<v Wes>Yeah, I suppose that comes down to like what are you supporting and how many

00:11:09.980 --> 00:11:12.710
<v Wes>updates are you willing to do? How long can you go without changing kernels?

00:11:13.090 --> 00:11:19.760
<v Chris>Yeah. Or like you said, is it just doing stupid file serving and maybe DNS?

00:11:19.760 --> 00:11:24.322
<v Chris>And it's like something you run on a Raspberry Pi or it's a low-end networking box.

00:11:24.769 --> 00:11:31.961
<v Chris>Then you don't need 6.18. Something like 6.12 will be around until possibly 2035.

00:11:32.118 --> 00:11:35.770
<v Chris>So talk about a box for networking infrastructure you could just set and forget

00:11:35.770 --> 00:11:38.091
<v Chris>and just do quarterly updates on.

00:11:38.460 --> 00:11:41.420
<v Chris>And you're not going to have to worry about a new kernel. So 6.12 could potentially

00:11:41.420 --> 00:11:44.340
<v Chris>be around until 2035. That's the one for those machines.

00:11:44.340 --> 00:11:47.390
<v Wes>It's funny it feels old, right? 6.12 kind of sounds a little old.

00:11:47.390 --> 00:11:51.050
<v Wes>But, I mean, it was a kernel we really talked about a lot on the show.

00:11:51.050 --> 00:11:53.530
<v Wes>It was a big one. Preempt RT stuff.

00:11:54.070 --> 00:11:56.860
<v Wes>I mean, there's just a bunch of stuff. And I think it was pretty widely deployed,

00:11:56.860 --> 00:11:59.070
<v Wes>which is why it's getting that long-term support.

00:11:59.070 --> 00:12:03.670
<v Chris>Right. Preempt RT. Right. Also, the note in here that it's considered one of

00:12:03.670 --> 00:12:06.098
<v Chris>the most battle-tested kernels of all of them.

00:12:06.876 --> 00:12:10.560
<v Chris>And that's their opinion. So, okay. Let's go with that. So, 6.12 seems like

00:12:10.560 --> 00:12:14.480
<v Chris>a real winner if you don't need super modern hardware and you're cool with the

00:12:14.480 --> 00:12:15.392
<v Chris>setup and forget it kernel.

00:12:15.763 --> 00:12:18.710
<v Chris>Then after that, like, I think it sort of just drops off and it's,

00:12:18.710 --> 00:12:21.270
<v Chris>okay, well, you're just going to go with whatever distro you want.

00:12:21.270 --> 00:12:23.881
<v Chris>This is really if you're even making an active decision, right?

00:12:23.970 --> 00:12:26.330
<v Chris>Right, because Debian's going to manage their kernel release.

00:12:26.330 --> 00:12:29.910
<v Chris>Ubuntu will manage theirs. There's going to be stuff that they're just going

00:12:29.910 --> 00:12:33.150
<v Chris>to take care of for you, and you may end up on a different kernel at some point

00:12:33.150 --> 00:12:34.078
<v Chris>when you just upgrade the distro.

00:12:34.937 --> 00:12:37.577
<v Chris>But if you are actively making a choice, and I'd like to know how many of you

00:12:37.577 --> 00:12:42.427
<v Chris>really are actively making a choice, which kernel do you actually pick?

00:12:42.427 --> 00:12:45.437
<v Chris>Like, I'd like to know how many of you are actually doing that. I mean, we do.

00:12:45.437 --> 00:12:47.807
<v Wes>Yeah, we definitely do. I mean, we're running this end kernel.

00:12:48.467 --> 00:12:51.567
<v Wes>And then back in the day when this was a KDE Neon box here in the studio,

00:12:52.007 --> 00:12:54.567
<v Wes>you were doing the mainline tool to just kind of get the freshest kernels.

00:12:54.567 --> 00:12:58.177
<v Chris>And on FakeNez, we're doing the LTS kernel. We're doing one of the LTS kernels

00:12:58.177 --> 00:13:03.316
<v Chris>just because we hardly ever update that box and we don't want it to break when we do ZFS updates.

00:13:03.775 --> 00:13:07.693
<v Chris>And so we did go to the LTS gear for the rolling arch-based server.

00:13:08.338 --> 00:13:11.443
<v Chris>And so I wonder how many people out there are, A, actively choosing their kernel.

00:13:12.273 --> 00:13:15.227
<v Chris>I bet it's a minority. And I wonder, B, which kernels they're choosing.

00:13:15.227 --> 00:13:17.637
<v Chris>So boostin, boost.jupiterbroadcasting.com and let us know.

00:13:17.637 --> 00:13:21.117
<v Wes>Yeah, I like that. It turns out you can have a rolling distro with a stable

00:13:21.117 --> 00:13:22.987
<v Wes>kernel or a stable distro with a rolling kernel.

00:13:22.987 --> 00:13:28.227
<v Chris>I like it. I mean, on our desktop boxes, we just go full rolling with everything.

00:13:28.227 --> 00:13:33.407
<v Chris>But on the server, it's not that crazy, I think, to have an LTS kernel and a

00:13:33.407 --> 00:13:36.127
<v Chris>rolling user land. I mean, we've been proving it for how many years on that

00:13:36.127 --> 00:13:39.144
<v Chris>fake NAS box, abusing it, doing rando updates.

00:13:40.148 --> 00:13:42.687
<v Brent>Isn't it just lots of luck, though? I don't know.

00:13:42.687 --> 00:13:45.967
<v Wes>I think the cottonwood is structural. It helps at this point.

00:13:45.967 --> 00:13:50.881
<v Chris>It's really about, well, for us, right, it was down to we wanted rock solid ZFS support.

00:13:51.955 --> 00:13:56.287
<v Chris>And sometimes ZFS doesn't keep up with the current kernel. And if you load the

00:13:56.287 --> 00:13:59.497
<v Chris>current kernel, you can sometimes not have a loadable ZFS. And so for us,

00:13:59.497 --> 00:14:04.418
<v Chris>it just made a lot of sense. I think if we were doing Bcache FS or ButterFS on that machine.

00:14:04.831 --> 00:14:05.617
<v Wes>Probably wouldn't be a big deal.

00:14:05.617 --> 00:14:09.817
<v Chris>It probably wouldn't matter. But then if we were trying to use an NVIDIA driver or an AMD driver.

00:14:09.817 --> 00:14:10.437
<v Wes>Then it could be.

00:14:10.437 --> 00:14:13.654
<v Chris>It could be. So again, I'd like to know how you pick and what you pick.

00:14:14.061 --> 00:14:17.927
<v Chris>Let us know. But let's talk about 7.2 because I feel like we've been building

00:14:17.927 --> 00:14:20.587
<v Chris>to this for weeks, especially since we learned about the death of AppleTalk

00:14:20.587 --> 00:14:23.047
<v Chris>coming at 7.2. So what stands out to you, Wes?

00:14:23.552 --> 00:14:24.933
<v Wes>Yeah, there's a lot of exciting stuff.

00:14:25.968 --> 00:14:30.668
<v Wes>A few highlights for today, though. The cache-aware task scheduler.

00:14:30.668 --> 00:14:31.108
<v Chris>Yeah, buddy.

00:14:31.108 --> 00:14:34.498
<v Wes>The scheduler now knows which cores share a cache.

00:14:34.498 --> 00:14:38.788
<v Wes>It groups tasks that share data onto the same cache domain, so you stop paying

00:14:38.788 --> 00:14:43.288
<v Wes>cache miss penalties across cores. Now, we should be clear, this really only

00:14:43.288 --> 00:14:47.008
<v Wes>counts if you are on a system like Epic or Xeon that has multiple cache domains.

00:14:47.008 --> 00:14:49.063
<v Wes>You're not going to see it on a single cache domain device.

00:14:49.470 --> 00:14:53.738
<v Wes>But if you have that, this is basically like a free performance when you don't

00:14:53.738 --> 00:14:56.428
<v Wes>do anything except upgrade your kernel and things get faster.

00:14:56.428 --> 00:14:58.708
<v Chris>See all those Xeon CPUs, boys?

00:14:58.708 --> 00:14:59.298
<v Brent>Sweet.

00:14:59.298 --> 00:15:03.582
<v Chris>I'm going to go dust off that old Mac Pro upstairs that's like 15 years old that's got Xeons in it.

00:15:04.023 --> 00:15:08.618
<v Chris>And I'm going to... Actually, I do have an active Xeon system in production that I think about it.

00:15:08.618 --> 00:15:09.268
<v Wes>Oh. So I love it.

00:15:09.268 --> 00:15:09.625
<v Chris>I love it.

00:15:09.834 --> 00:15:10.838
<v Wes>Well, time to update.

00:15:10.838 --> 00:15:11.384
<v Chris>Mm-hmm.

00:15:11.494 --> 00:15:12.848
<v Wes>Or it will be in August.

00:15:12.848 --> 00:15:13.218
<v Chris>Yeah.

00:15:14.068 --> 00:15:16.358
<v Wes>Okay. Not the only work on the scheduler, though.

00:15:16.388 --> 00:15:16.838
<v Chris>Okay.

00:15:16.838 --> 00:15:19.368
<v Wes>And scheduler stuff. I mean, not only is it one of the trickiest areas,

00:15:19.368 --> 00:15:22.508
<v Wes>I think, of the whole kernel, but it can tend to really, you know,

00:15:22.508 --> 00:15:24.968
<v Wes>it can have regressions pretty easily. It can be very noticeable,

00:15:24.968 --> 00:15:27.690
<v Wes>or it can have a lot of performance impact.

00:15:28.056 --> 00:15:30.923
<v Wes>So another change is a fairer GPU scheduler.

00:15:31.583 --> 00:15:35.368
<v Wes>The kernel's DRM scheduler used to default to high priority for GPU jobs.

00:15:36.028 --> 00:15:40.188
<v Wes>Now it defaults to fair. So GPU time gets distributed more evenly when you've

00:15:40.188 --> 00:15:41.736
<v Wes>got multiple things competing for it.

00:15:42.276 --> 00:15:45.208
<v Wes>And if you're running GPU pass-through to a VM or something like that,

00:15:45.208 --> 00:15:50.687
<v Wes>while also running all your fancy desktop compositing as you do, this should help.

00:15:51.180 --> 00:15:55.278
<v Wes>if you've just got like one gpu you know churning away at like a ml task or

00:15:55.278 --> 00:15:59.058
<v Wes>just rendering one thing specifically you probably won't notice but again these

00:15:59.058 --> 00:16:03.679
<v Wes>are hardware specific but that even makes them you know a little more challenging to do yeah,

00:16:04.352 --> 00:16:05.947
<v Wes>So it's impressive we're seeing the changes.

00:16:05.947 --> 00:16:09.887
<v Chris>Okay, you got anything for a guy that's just got a regular old computer that

00:16:09.887 --> 00:16:14.116
<v Chris>doesn't have like Xeons or, you know, multiple Goopoos?

00:16:14.609 --> 00:16:17.587
<v Wes>Well, we do have memory reclaiming. How about that?

00:16:17.587 --> 00:16:19.447
<v Chris>All right. I like that.

00:16:19.447 --> 00:16:22.939
<v Wes>The kernel's page reclaim got a lot smarter in 7.2.

00:16:23.677 --> 00:16:28.797
<v Wes>MGLRU improvements are showing 30 to 100% higher throughput on things like MongoDB,

00:16:29.277 --> 00:16:30.847
<v Wes>which is kind of just a test workload.

00:16:30.847 --> 00:16:31.210
<v Chris>All right.

00:16:31.466 --> 00:16:35.837
<v Wes>And your page allocator isn't stuck and always handing out 2MB anymore.

00:16:35.837 --> 00:16:40.173
<v Wes>It can hand out 16K, 32K, 64K pages, smaller bits.

00:16:40.382 --> 00:16:44.427
<v Wes>It means less overhead on every memory lookup. And that means instead of having

00:16:44.427 --> 00:16:49.014
<v Wes>to allocate more stuff than you actually need, programs can request and get

00:16:49.246 --> 00:16:50.017
<v Wes>more reasonable amounts.

00:16:50.837 --> 00:16:52.577
<v Chris>I can't believe that wasn't a thing already.

00:16:52.577 --> 00:16:55.707
<v Wes>Yeah. There's definitely some of that in here.

00:16:55.707 --> 00:17:00.131
<v Chris>You're telling me the huge page allocator in Linux has been stuck at 2 megabytes forever?

00:17:00.729 --> 00:17:01.106
<v Wes>Yeah.

00:17:02.702 --> 00:17:06.341
<v Chris>Wow. Okay. That's a big one. That's a big one. All right. You got me.

00:17:06.351 --> 00:17:11.341
<v Wes>And it should mean container startup and teardown in particular should be noticeably faster.

00:17:11.341 --> 00:17:13.731
<v Chris>All right. All right. You got me on board, Wes.

00:17:13.731 --> 00:17:16.331
<v Wes>And maybe you don't want to be using it, but if you do...

00:17:16.751 --> 00:17:16.994
<v Chris>What?

00:17:17.552 --> 00:17:19.241
<v Wes>Your pal swap also got faster.

00:17:19.241 --> 00:17:21.201
<v Chris>Oh, you know, you never know. Sometimes you got to swap.

00:17:21.201 --> 00:17:25.111
<v Wes>Yeah. Back in the old days, the bad old days, swap used to route different memory

00:17:25.111 --> 00:17:28.678
<v Wes>types through different code paths. That's gone, cleaned up, unified.

00:17:28.893 --> 00:17:30.855
<v Wes>Less bookkeeping, less bloat.

00:17:31.598 --> 00:17:34.118
<v Wes>and at the end of the day that just makes it faster.

00:17:34.321 --> 00:17:39.156
<v Chris>I like to put my swap on a ram disc so i'm glad to see that performance has been improved.

00:17:39.429 --> 00:17:44.514
<v Wes>Now it's not all good news necessarily there are some regressions here um that,

00:17:45.461 --> 00:17:48.881
<v Wes>you know that's being worked on though but rfs in particular is in a bit of

00:17:48.881 --> 00:17:54.121
<v Wes>active surgery um large folio supports on by default now okay and they've improved

00:17:54.121 --> 00:17:58.510
<v Wes>things there was a previous direct io regression that got a fix

00:17:58.940 --> 00:18:01.581
<v Wes>a 59 throughput fix no less.

00:18:01.581 --> 00:18:02.493
<v Chris>Jeez, okay.

00:18:02.783 --> 00:18:06.521
<v Wes>But, as a result of that, you know, so you had to do that to get the new fix.

00:18:06.521 --> 00:18:08.234
<v Wes>You had to get the performance improvement.

00:18:08.495 --> 00:18:11.334
<v Wes>We got large folio support that speeds things up. Right. But,

00:18:11.589 --> 00:18:13.354
<v Wes>it did also introduce regression itself.

00:18:13.824 --> 00:18:18.161
<v Wes>In particular, if you're running KVM guess with RAM backed by a ButterFS file,

00:18:18.161 --> 00:18:21.127
<v Wes>so it's like a particular setup, it can cause a deadlock.

00:18:22.845 --> 00:18:22.951
<v Chris>Hmm.

00:18:23.501 --> 00:18:27.171
<v Wes>But they're working on the patch. I don't know yet if that's going to land in

00:18:27.171 --> 00:18:30.441
<v Wes>7.2 ultimately. I hope so. But, we haven't gotten there yet.

00:18:30.441 --> 00:18:34.697
<v Chris>And then they will backport it to Linux 6.12.

00:18:35.121 --> 00:18:40.141
<v Wes>And perhaps in a way where if this is only in the RC, then perhaps then it's

00:18:40.141 --> 00:18:42.395
<v Wes>a way that you just never have a possibility of getting it at all.

00:18:43.471 --> 00:18:47.061
<v Brent>I'm like working through all my VMs and like, is this going to hit me?

00:18:47.061 --> 00:18:48.551
<v Brent>And I think actually one of them does.

00:18:49.231 --> 00:18:55.061
<v Chris>Yeah, I could see that getting me. What you need is a super fast external storage

00:18:55.061 --> 00:18:56.843
<v Chris>in a different file system.

00:18:57.611 --> 00:19:01.787
<v Chris>Maybe some new stack for the universal serial bus could enable this,

00:19:01.787 --> 00:19:03.637
<v Chris>Wes? Maybe a new iteration?

00:19:03.637 --> 00:19:07.817
<v Wes>Oh, maybe. Yeah, we are seeing USB 4 streaming support coming.

00:19:08.457 --> 00:19:11.557
<v Wes>There's not hardware really, I think, out there a ton of it yet that you could

00:19:11.557 --> 00:19:13.847
<v Wes>actually use. So this is the case where the kernel sort of leads the way with,

00:19:14.777 --> 00:19:17.907
<v Wes>people doing upstream development, right? Where before the hardware exists,

00:19:17.907 --> 00:19:20.677
<v Wes>it's in the kernel. So then when the hardware does exist, you just plug it in

00:19:20.677 --> 00:19:21.557
<v Wes>and the kernel supports it.

00:19:21.557 --> 00:19:22.537
<v Brent>That's so great.

00:19:23.137 --> 00:19:26.037
<v Wes>Also stuff that isn't super used yet and isn't a little more experimental,

00:19:26.037 --> 00:19:30.377
<v Wes>but fun to watch because we've been paying attention is sub scheduler support

00:19:30.377 --> 00:19:34.338
<v Wes>in the sketch X system that's, that enables you to write your own scheduler.

00:19:34.703 --> 00:19:38.767
<v Chris>What's the difference between a scheduled task and a sub scheduled task, Wes?

00:19:38.924 --> 00:19:42.437
<v Wes>Well, like you can, you have a finer grain on, you know, because,

00:19:42.917 --> 00:19:47.317
<v Wes>and you can change, you can basically have tasks that have their own schedulers, right?

00:19:47.317 --> 00:19:50.687
<v Wes>So you can have, instead of one scheduler that has to know about how to schedule

00:19:50.687 --> 00:19:54.297
<v Wes>everything for every type of task, it can then have its own subscheduler that

00:19:54.297 --> 00:19:56.037
<v Wes>can schedule just that type of task.

00:19:56.037 --> 00:19:56.827
<v Chris>That's awesome.

00:19:56.827 --> 00:19:59.457
<v Wes>And then you can optimize it more, like maybe specifically you're trying to

00:19:59.457 --> 00:20:02.597
<v Wes>run a database server, right? And the database does all kinds of stuff that

00:20:02.597 --> 00:20:05.757
<v Wes>other kinds of applications don't do. And so you might need a scheduler that's

00:20:05.757 --> 00:20:08.157
<v Wes>aware, like, oh, give the database priority on this kind of thing.

00:20:08.157 --> 00:20:10.027
<v Chris>Dang it. You're going to make me run 7.2.

00:20:10.027 --> 00:20:11.307
<v Wes>Well, that was the idea.

00:20:11.307 --> 00:20:12.140
<v Chris>Dang it.

00:20:12.575 --> 00:20:16.217
<v Wes>I don't know why. I just like the number 7.2. It's got a good round shape in my brain.

00:20:16.217 --> 00:20:17.037
<v Chris>Yeah, it does.

00:20:17.097 --> 00:20:20.177
<v Wes>It's got a nice color, so we should all be running it.

00:20:20.177 --> 00:20:24.102
<v Chris>There has been. I mean, I was teasing earlier, But there has been a bit of cleanup

00:20:24.432 --> 00:20:26.116
<v Chris>in the 7.2 kernel release as well.

00:20:26.261 --> 00:20:29.997
<v Brent>Quite a bit of cleanup. You mentioned the networking stack.

00:20:30.317 --> 00:20:30.667
<v Chris>Mm-hmm.

00:20:30.859 --> 00:20:36.857
<v Brent>And you mentioned a third of the patch of RC5 is networking alone.

00:20:37.257 --> 00:20:41.147
<v Brent>So mostly driver-side stuff. And Linus himself said, nothing in there strikes

00:20:41.147 --> 00:20:42.654
<v Brent>me as particularly strange or scary.

00:20:44.037 --> 00:20:44.977
<v Brent>So don't worry, guys.

00:20:47.171 --> 00:20:47.977
<v Chris>Oh, man.

00:20:48.988 --> 00:20:52.186
<v Brent>Also, there's a, hey, you remember the Sega Dreamcast? Yeah.

00:20:52.355 --> 00:20:56.157
<v Chris>Did you guys play that? Yeah. That was like a peak late nineties, really.

00:20:56.302 --> 00:20:58.688
<v Brent>Oh, I played the heck out of that. Yeah. That was 1998.

00:20:58.798 --> 00:20:58.935
<v Chris>Wow.

00:20:59.529 --> 00:21:04.835
<v Brent>Well, the Dreamcast is still getting driver fixes. So there's a mouse driver

00:21:04.835 --> 00:21:05.655
<v Brent>null pointer dereference.

00:21:05.655 --> 00:21:06.629
<v Wes>It had drivers at all?

00:21:07.215 --> 00:21:08.195
<v Chris>And a mouse? Okay.

00:21:08.615 --> 00:21:13.585
<v Brent>I mean, we should investigate maybe. So there was a null pointer dereference

00:21:13.585 --> 00:21:16.068
<v Brent>since 2017 and that's been fixed.

00:21:16.695 --> 00:21:18.195
<v Chris>That's got to be an LLM fix.

00:21:18.535 --> 00:21:18.925
<v Wes>For sure.

00:21:18.925 --> 00:21:19.615
<v Chris>That's got to be.

00:21:21.215 --> 00:21:24.285
<v Wes>I mean, it's kind of interesting almost that this happened. And are people on

00:21:24.285 --> 00:21:26.755
<v Wes>the list being like, why do we still support the Dreamcast?

00:21:27.315 --> 00:21:28.705
<v Brent>You can't have AppleTalk.

00:21:28.705 --> 00:21:30.335
<v Wes>But the Dreamcast is totally fine.

00:21:30.335 --> 00:21:33.475
<v Chris>I like to think there's a couple of load-bearing Dreamcasts out there running

00:21:33.475 --> 00:21:36.555
<v Chris>the LAMP stack. That's what I like.

00:21:36.555 --> 00:21:40.035
<v Wes>Look, it's been hosting my personal website since 1998.

00:21:40.035 --> 00:21:43.065
<v Chris>Or it's like some kernel developer's email server from like,

00:21:43.065 --> 00:21:44.715
<v Chris>yeah, 99 or something like that.

00:21:45.315 --> 00:21:48.371
<v Chris>Like in 2000, he gave up on it and just turned into a Linux mail server.

00:21:49.103 --> 00:21:50.107
<v Chris>And they're still maintaining it.

00:21:51.116 --> 00:21:56.265
<v Brent>Well, they might be running off disks, so GDROMs, those disks,

00:21:56.904 --> 00:22:00.442
<v Brent>mount properly now in the Gamecast, just in case you're having that problem.

00:22:01.942 --> 00:22:05.571
<v Brent>But don't forget, i486 is also gone from that.

00:22:06.900 --> 00:22:08.122
<v Chris>Wow, right.

00:22:08.122 --> 00:22:08.525
<v Brent>Yeah.

00:22:08.885 --> 00:22:11.056
<v Wes>Hey, 14,000 lines removed, though.

00:22:11.753 --> 00:22:16.062
<v Brent>It's true. That's quite a few. That's 80 whole files.

00:22:16.402 --> 00:22:23.740
<v Brent>And Linus says here, zero real reason for anybody to waste one second of development effort on this.

00:22:24.419 --> 00:22:30.782
<v Brent>It launched in 1989, supported for 37 years in total, which is 18 years after

00:22:30.782 --> 00:22:32.598
<v Brent>Intel stopped making them.

00:22:33.375 --> 00:22:38.582
<v Brent>6.12 LTS still supports it, though, till 2036. So don't worry, Chris.

00:22:38.942 --> 00:22:41.922
<v Chris>That 6.12 is the MVP kernel, guys.

00:22:43.222 --> 00:22:46.838
<v Wes>Yeah, you want your Apple talk, you want your 486.

00:22:48.662 --> 00:22:51.556
<v Chris>Honestly, if we're still going in 2035, 2036,

00:22:55.782 --> 00:23:00.342
<v Chris>hand to sky, I hope, we should load up 612 and get a 486 box that we can still get booting going.

00:23:00.342 --> 00:23:00.562
<v Brent>Yeah.

00:23:00.562 --> 00:23:02.030
<v Chris>That would be pretty great.

00:23:03.068 --> 00:23:05.975
<v Chris>And the Dreamcast, right? All right. I mean, this is pretty solid,

00:23:05.975 --> 00:23:08.575
<v Chris>right? We've got a lot of kernel releases here. I mean, a lot of times you're

00:23:08.575 --> 00:23:11.025
<v Chris>not even going to have to think about this. We like to think about it.

00:23:11.025 --> 00:23:14.236
<v Chris>We like to pick. But I think a lot of us don't actually have to think about it that much.

00:23:14.695 --> 00:23:17.376
<v Chris>We hope that maybe you're the kind of person that does give it some thought.

00:23:17.765 --> 00:23:21.648
<v Chris>Seven kernels. Two of them are finally aging out at the end of this year.

00:23:22.755 --> 00:23:25.131
<v Chris>And one that does kind of break your GPU performance, so be careful.

00:23:25.294 --> 00:23:30.195
<v Chris>But the clear MVPs for home labs, if you need modern graphics hardware,

00:23:30.195 --> 00:23:33.990
<v Chris>is 618. and if you just want to set it and forget it forever, is 6.12.

00:23:34.553 --> 00:23:39.121
<v Chris>I mean, 6.12 is getting the fixes that we talked about for the performance regressions.

00:23:39.400 --> 00:23:43.974
<v Chris>It's getting support until 2035, and it's going to support 486.

00:23:44.369 --> 00:23:47.435
<v Chris>Probably also has AppleTalk in there. I mean, probably has AppleTalk, right?

00:23:47.435 --> 00:23:48.035
<v Wes>It does.

00:23:48.035 --> 00:23:50.592
<v Chris>Oh, my goodness. What an MVP of a kernel.

00:23:50.923 --> 00:23:52.624
<v Brent>Are we calling it the legacy kernel?

00:23:54.069 --> 00:23:57.935
<v Chris>I think we should call it the MVP super kernel. I mean, that's what they call it. It's the MVP super.

00:23:58.371 --> 00:23:58.771
<v Brent>Let's do it.

00:23:59.236 --> 00:24:02.165
<v Chris>We got all kinds of links in the show notes. if you would like to nerd out and

00:24:02.165 --> 00:24:05.485
<v Chris>read more. And there is some good reading in there. And you know where to find

00:24:05.485 --> 00:24:07.171
<v Chris>those show notes over at linuxunplugged.com.

00:24:17.925 --> 00:24:21.805
<v Brent>Well, we got a really nice email into the show this week, or more accurately,

00:24:21.805 --> 00:24:24.440
<v Brent>into my personal email. And here's the title.

00:24:24.759 --> 00:24:28.143
<v Brent>Serious Security Advisory for Your Cold Card.

00:24:29.188 --> 00:24:32.671
<v Brent>And I thought this was a scam at first because I've been getting a lot of really,

00:24:33.466 --> 00:24:37.617
<v Brent>quite sophisticated spam into my email. And it's been very entertaining to watch.

00:24:37.617 --> 00:24:39.399
<v Brent>But nope, this one's real.

00:24:39.881 --> 00:24:45.285
<v Brent>And it got me a little nervous about what the heck is happening out there.

00:24:45.744 --> 00:24:48.797
<v Brent>Do you guys have any idea why I got this email?

00:24:48.797 --> 00:24:51.717
<v Chris>This is really a tragic story.

00:24:52.217 --> 00:24:59.057
<v Chris>As of this weekend, almost 2,000 addresses have been drained of nearly $90 million worth of Bitcoin,

00:25:00.057 --> 00:25:03.907
<v Chris>affecting cold card wallets, initially the cold card Mark III devices,

00:25:04.610 --> 00:25:08.277
<v Chris>and then later expanded to include certain Mark IV, Mark V, and cold card Q

00:25:08.617 --> 00:25:11.557
<v Chris>firmware versions, basically everything but the most current emergency firmware

00:25:11.557 --> 00:25:12.743
<v Chris>that was released over the weekend.

00:25:13.478 --> 00:25:18.424
<v Chris>And it comes down to an issue in how the cold card generated random numbers.

00:25:19.271 --> 00:25:24.887
<v Chris>You know, we're going to get into this. Randomness has been a real challenge

00:25:24.887 --> 00:25:29.482
<v Chris>and a challenge for Linux, too, that has gone wrong in catastrophe kind of ways.

00:25:30.370 --> 00:25:35.517
<v Chris>So in this case, the cold card had a firmware bug that sent the seed generation down the wrong path.

00:25:35.517 --> 00:25:41.717
<v Chris>Instead of using the hardware that was built in to derive a seed phrase or a

00:25:41.717 --> 00:25:45.736
<v Chris>key that had low entropy, it was falling back to like a Python script.

00:25:45.922 --> 00:25:50.997
<v Chris>In fact, a micro Python script that roughly generated an entropy of 40 bits

00:25:50.997 --> 00:25:53.898
<v Chris>on the Mark III and 72 bits on the later devices.

00:25:54.090 --> 00:25:57.807
<v Wes>Yeah, it's essentially the micro Python runtime provides sort of like a random,

00:25:57.807 --> 00:26:00.138
<v Wes>a basic random generated. It'd be fine if you were using it for,

00:26:00.272 --> 00:26:03.527
<v Wes>like, you know, an offset in a cron job or something like that.

00:26:03.527 --> 00:26:06.497
<v Wes>But it is not meant to be cryptographically secure.

00:26:06.497 --> 00:26:10.779
<v Chris>Yeah, it doesn't generate complex enough cryptography that it can't be figured out.

00:26:11.365 --> 00:26:14.327
<v Chris>So the hardware was designed to generate strong randomness. The hardware was

00:26:14.327 --> 00:26:19.183
<v Chris>present. It was working, but it just wasn't being used, which is really a tragedy.

00:26:19.735 --> 00:26:25.133
<v Chris>And so because people can now mathematically derive the...

00:26:25.993 --> 00:26:29.681
<v Chris>the seeds, they are able to essentially restore wallets on remote systems and

00:26:29.681 --> 00:26:33.671
<v Chris>drain the cold cards without ever having your cold card connected to the internet

00:26:33.671 --> 00:26:34.681
<v Chris>or your computer active.

00:26:35.171 --> 00:26:38.341
<v Wes>Yeah. So essentially without the hardware part that was supposed to be like

00:26:38.341 --> 00:26:43.021
<v Wes>the secure random entropy, the fallback random number generator was seeded from

00:26:43.021 --> 00:26:46.811
<v Wes>the chip's UID, which is like a unique ID on the chip that has a limited possible

00:26:46.811 --> 00:26:50.101
<v Wes>amount of numbers, and a boot time timer state.

00:26:50.542 --> 00:26:55.301
<v Wes>And neither of those are truly secret. And a lot of them, it turns out to be

00:26:55.301 --> 00:26:58.461
<v Wes>kind of closer to a predictable range than something random.

00:26:58.821 --> 00:27:02.441
<v Wes>And then so if you can kind of constrain the space of things that the initial

00:27:02.441 --> 00:27:05.951
<v Wes>secrets generated from, then you can explore that space and the rest of it's

00:27:05.951 --> 00:27:07.110
<v Wes>all just deterministic.

00:27:07.585 --> 00:27:11.352
<v Wes>And then you can generate a whole bunch of private keys at once and then just go check them.

00:27:11.642 --> 00:27:15.241
<v Chris>Yeah. And before the computing machine became easily accessible to us,

00:27:15.241 --> 00:27:18.211
<v Chris>analysis confirmed in the past that the hardware worked. That's what people

00:27:18.211 --> 00:27:21.441
<v Chris>really focused on in their audits is that the hardware did what the hardware said it did.

00:27:21.481 --> 00:27:27.601
<v Chris>But they didn't test if the actual path to activate it was working until LLM-assisted

00:27:27.601 --> 00:27:30.160
<v Chris>security reviews came along and discovered it.

00:27:30.874 --> 00:27:35.181
<v Wes>Yeah, because the code to use the hardware is in the binary.

00:27:35.181 --> 00:27:38.252
<v Wes>Like it's built in, it's available. It's just never called.

00:27:38.443 --> 00:27:44.481
<v Chris>Yeah, yeah. So the code exists, it works, but they failed to verify it was actually being used.

00:27:45.113 --> 00:27:49.369
<v Chris>And so as a result, attackers have been able to access people's funds.

00:27:50.106 --> 00:27:52.661
<v Chris>And that's a tragedy because people thought they were doing the best thing they

00:27:52.661 --> 00:27:54.919
<v Chris>could for themselves. They were keeping them offline and all of that.

00:27:55.661 --> 00:28:01.951
<v Chris>And it got us thinking about some of the previous times in Linux where random

00:28:01.951 --> 00:28:03.638
<v Chris>number generation has gone horribly wrong.

00:28:04.137 --> 00:28:09.063
<v Chris>It's not necessarily a hardware story itself. It's really about the difficulty,

00:28:09.551 --> 00:28:12.631
<v Chris>of generating true randomness on deterministic systems, right?

00:28:12.631 --> 00:28:15.051
<v Chris>Because if you give a computer the same input, you're going to get the same

00:28:15.051 --> 00:28:16.053
<v Chris>output every single time.

00:28:16.430 --> 00:28:20.001
<v Chris>So the limitation then is how do you generate something that is truly uniquely

00:28:20.001 --> 00:28:21.708
<v Chris>random on a deterministic system?

00:28:22.461 --> 00:28:27.094
<v Chris>And it has to be something that's sound and secure and hopefully as future-proof as possible.

00:28:27.570 --> 00:28:31.053
<v Chris>So when something like this happens, well, you don't get rugged.

00:28:31.587 --> 00:28:35.739
<v Chris>And that is more difficult than it seems. And it's something that Linux has

00:28:35.739 --> 00:28:39.349
<v Chris>been working on since the very early days, like since 1994.

00:28:39.349 --> 00:28:42.569
<v Wes>Yeah. It's essentially cryptographic security is essentially a bet,

00:28:42.569 --> 00:28:44.991
<v Wes>right? It's like not a law of physics. It's not a guarantee.

00:28:45.327 --> 00:28:50.249
<v Wes>You are just trying to do everything you can to have a giant pool of randomness to pull from.

00:28:50.778 --> 00:28:55.879
<v Wes>and then keep that hidden and secret and intact across the entire chain.

00:28:55.879 --> 00:28:59.579
<v Wes>And there really is a chain. Like it's not just, you know, give me number and

00:28:59.579 --> 00:29:01.529
<v Wes>done. It takes a lot of setup.

00:29:02.214 --> 00:29:06.299
<v Wes>So kind of how it works today, the very first step is some of the most important

00:29:06.299 --> 00:29:09.969
<v Wes>and that's getting quote unquote unpredictable inputs. And this is stuff that

00:29:09.969 --> 00:29:12.388
<v Wes>comes from a large space that's really hard to guess.

00:29:12.788 --> 00:29:17.279
<v Wes>So Linux, the kernel is continuously collecting small little timing variations

00:29:17.279 --> 00:29:20.179
<v Wes>and environmental noise and pieces of the system that are sensitive to things

00:29:20.179 --> 00:29:23.649
<v Wes>like that. So when does a hardware interrupt fire? Which one fired?

00:29:23.649 --> 00:29:28.759
<v Chris>It can even be like noise from the disk, user input, just things that the system

00:29:28.759 --> 00:29:29.979
<v Chris>generates that are unique.

00:29:29.979 --> 00:29:34.180
<v Wes>Totally. CPU timing, bootloader provided seeds you can use if you want to try,

00:29:34.627 --> 00:29:36.769
<v Wes>to bootstrap randomness in a VM.

00:29:37.065 --> 00:29:41.989
<v Wes>You can also use hardware things either like included by your CPU manufacturer

00:29:41.989 --> 00:29:44.106
<v Wes>or an add-on device or something like that.

00:29:44.600 --> 00:29:48.319
<v Wes>And part of the idea here is that no, you're not trying to make sure to have

00:29:48.319 --> 00:29:52.249
<v Wes>every single source needing to be perfect on its own, you can try to mix them

00:29:52.249 --> 00:29:55.439
<v Wes>together so that even if some don't have as much randomness in there as you

00:29:55.439 --> 00:29:59.478
<v Wes>think, you're still getting a good final randomness on the other side.

00:30:00.401 --> 00:30:04.842
<v Wes>So after you're able to find a bunch of different sources, you mix that into your entropy pool.

00:30:05.375 --> 00:30:10.161
<v Wes>And you need to be careful because the most dangerous time is when you boot something up fresh.

00:30:10.161 --> 00:30:13.251
<v Wes>Because there hasn't been a lot of time for environmental noise to get into

00:30:13.251 --> 00:30:15.721
<v Wes>the system. There hasn't been that you haven't really done anything yet.

00:30:15.721 --> 00:30:20.111
<v Wes>It's all kind of starting code cold from the very non-random initial firmware

00:30:20.111 --> 00:30:22.633
<v Wes>and like, you know, first code that runs on the system.

00:30:23.062 --> 00:30:27.021
<v Wes>And so a lot of work over the years has been around like, do we need to block

00:30:27.021 --> 00:30:30.431
<v Wes>if there's not enough randomness or not? What does it mean to have enough randomness or not?

00:30:30.611 --> 00:30:33.981
<v Chris>And Intel has tried to solve it with their RAND kind of built-in stuff that's

00:30:33.981 --> 00:30:36.611
<v Chris>trying to generate some noise. But, of course, that thing's a black box.

00:30:36.611 --> 00:30:38.711
<v Chris>You can't use it as the one source of truth.

00:30:38.711 --> 00:30:41.001
<v Wes>Yes. And that's where, like, the kernel folks have said, like,

00:30:41.001 --> 00:30:44.291
<v Wes>it's OK to use, we think, but we're not going to rely on it in terms of being

00:30:44.291 --> 00:30:46.951
<v Wes>the only option. We're going to make sure we mix it into a bunch of other stuff.

00:30:46.951 --> 00:30:49.371
<v Wes>So even if it is compromised, that limits the damage.

00:30:49.371 --> 00:30:55.361
<v Chris>Yeah, I would say, in a way, the random generator in Linux is a story of learning

00:30:55.361 --> 00:31:00.644
<v Chris>that we need multiple sources and we need to make sure that we don't trust any one particular source.

00:31:01.149 --> 00:31:05.861
<v Chris>We have a clip from Jason Donfeld, and he took over the Linux random generation

00:31:05.861 --> 00:31:08.967
<v Chris>system from Theodore So, who originally created it in 94.

00:31:09.472 --> 00:31:13.901
<v Chris>And this was some of Jason's observations when he started working on it.

00:31:13.901 --> 00:31:17.811
<v Chris>And, you know, he's a developer and he tells it like it is. But I think if you

00:31:17.811 --> 00:31:19.751
<v Chris>look through that, it's a fair assessment.

00:31:19.751 --> 00:31:23.481
<v Clips>It's in Random.c, which is really old code. It dates back, as far as I could

00:31:23.481 --> 00:31:26.181
<v Clips>find, to version 1.3.30. I

00:31:26.181 --> 00:31:29.604
<v Clips>mean, it's really ancient code. There's a copyright date on it from 1994.

00:31:30.266 --> 00:31:33.998
<v Clips>So I think that even the code was living someplace else before there.

00:31:35.188 --> 00:31:39.511
<v Clips>But actually, considering when it was written, it's not so bad.

00:31:40.436 --> 00:31:45.817
<v Clips>it's held up remarkably well despite the knowledge that was around in that time,

00:31:47.460 --> 00:31:52.905
<v Clips>and I think for all intents and purposes it's okay, it's held up it's been done,

00:31:53.874 --> 00:31:56.783
<v Clips>with some reasonable intelligence but yeah,

00:31:57.967 --> 00:32:01.640
<v Clips>Still, over time, there's been a lot of complexity added to it.

00:32:02.116 --> 00:32:06.022
<v Chris>But that complexity is kind of necessary in order to generate randomness that

00:32:06.022 --> 00:32:07.932
<v Chris>doesn't have one single point of failure as well.

00:32:07.932 --> 00:32:11.172
<v Wes>Yeah, I think his point, too, is sort of identifying, like, what's the essential

00:32:11.172 --> 00:32:14.412
<v Wes>complexity and what's sort of the complexity that's just crept in over years

00:32:14.412 --> 00:32:18.951
<v Wes>of maintenance? And how do we keep what we need, but also keep it simple enough to understand?

00:32:19.206 --> 00:32:24.338
<v Chris>And so on Linux, as an end user, you perceive this as there's dev random and there's dev u random.

00:32:24.854 --> 00:32:28.062
<v Chris>And when I was reading about this, one of the things that I thought was really

00:32:28.062 --> 00:32:32.502
<v Chris>fascinating is early on, DevRandom, or maybe it was DevURandom,

00:32:32.502 --> 00:32:36.813
<v Chris>I can't remember, but one of them would essentially let an application ask for a random number.

00:32:37.679 --> 00:32:41.220
<v Chris>but wouldn't force the application to wait for the correct answer.

00:32:41.376 --> 00:32:44.617
<v Chris>And so applications would query, but this thing would take a minute to generate,

00:32:44.617 --> 00:32:47.327
<v Chris>and then they would be like, okay, got it, when they didn't actually have like

00:32:47.327 --> 00:32:51.895
<v Chris>a truly random number generated. And so later on, they had to create an API,

00:32:52.365 --> 00:32:55.262
<v Chris>that would force the application.

00:32:55.807 --> 00:32:58.315
<v Chris>It's just called get random. It's the get random API on the Linux kernel.

00:32:58.768 --> 00:33:02.237
<v Chris>They had to create this API that would essentially manage all of that for the

00:33:02.237 --> 00:33:05.397
<v Chris>application so they could, in a sense, force the application to wait for true

00:33:05.397 --> 00:33:06.499
<v Chris>randomness to be generated.

00:33:06.743 --> 00:33:11.097
<v Chris>but then for compatibility reasons they had to like allow the api to also keep

00:33:11.097 --> 00:33:13.467
<v Chris>that working in the background and just allow the application to move on and

00:33:13.467 --> 00:33:16.267
<v Chris>think it had everything it needed like it's it's this funny kind of line they

00:33:16.267 --> 00:33:21.324
<v Chris>have to walk every time they try to make a change to the system so i imagine complexity does seep in.

00:33:21.853 --> 00:33:25.887
<v Wes>Yeah and i think part of it was just being confused around like the intentions

00:33:25.887 --> 00:33:30.277
<v Wes>like you random versus random was like never super clear but what the new interface

00:33:30.277 --> 00:33:34.189
<v Wes>is able to do and get random is it has um underneath there's crng ready

00:33:34.421 --> 00:33:38.427
<v Wes>and so the kernel now tracks whether its random number generator has been seeded with enough

00:33:38.803 --> 00:33:42.767
<v Wes>quote-unquote real entropy to be trusted and that's the gate you want

00:33:43.187 --> 00:33:46.327
<v Wes>to wait for it doesn't really matter if you've generated a bunch after that

00:33:46.327 --> 00:33:50.170
<v Wes>which is sort of where the you random versus random didn't ultimately make sense

00:33:50.466 --> 00:33:52.584
<v Wes>but what does matter is especially at early boot

00:33:53.009 --> 00:33:57.527
<v Wes>has the pool itself had enough mixed in entropy yet and that you probably do

00:33:57.527 --> 00:34:00.152
<v Wes>want to wait for and that's where it becomes important to like,

00:34:00.750 --> 00:34:04.757
<v Wes>you know not roll your own stuff to rely on standard apis to rely on trusted

00:34:04.757 --> 00:34:09.027
<v Wes>audited libraries that are using the correct code paths because that can and

00:34:09.027 --> 00:34:10.630
<v Wes>does change over the years.

00:34:11.356 --> 00:34:13.962
<v Chris>There's been improvements. Is there anything else you want to touch on before

00:34:13.962 --> 00:34:15.402
<v Chris>we talk about when it went horribly wrong?

00:34:16.110 --> 00:34:18.942
<v Wes>No, I guess just the rough idea is,

00:34:21.402 --> 00:34:25.662
<v Wes>you grab random bits, you mix them into a pool, you wait until that pool has

00:34:25.662 --> 00:34:30.402
<v Wes>sufficient entropy, then you use deterministic pseudo-random number generator

00:34:30.402 --> 00:34:33.943
<v Wes>stuff like cha-cha 20 in the current kernel and that sort of stretches that value.

00:34:34.234 --> 00:34:39.232
<v Wes>it can't add more stuff, but it can turn like initial secret seeds into big

00:34:39.232 --> 00:34:40.729
<v Wes>long streams of random numbers.

00:34:40.956 --> 00:34:43.572
<v Wes>And that's what you actually pull from. And they sort of generate ephemeral

00:34:43.572 --> 00:34:46.282
<v Wes>keys and then generate stuff and then throw them away. And there's a whole process

00:34:46.282 --> 00:34:49.162
<v Wes>around that, but it's not adding new entropy. It's just using the entropy you

00:34:49.162 --> 00:34:52.728
<v Wes>have to get as many random bits as you actually need for user space.

00:34:54.286 --> 00:34:57.696
<v Chris>Okay, so when you don't get enough random bits, you have situations like the

00:34:57.696 --> 00:35:05.966
<v Chris>cold card or a situation that lasted multiple years, CVE 2008-0166,

00:35:05.966 --> 00:35:08.690
<v Chris>also known as Debian's OpenSSL bug.

00:35:09.826 --> 00:35:14.926
<v Chris>I remember this one. And it started very innocently. A Debian package maintainer

00:35:14.926 --> 00:35:19.806
<v Chris>was trying to silence a memory analysis tool, a Valgrant warning about OpenSSL

00:35:20.166 --> 00:35:22.059
<v Chris>utilizing uninitialized memory.

00:35:22.366 --> 00:35:25.913
<v Chris>And it seemed like, okay, well, this is an easy two-line fix. Clean that up.

00:35:26.145 --> 00:35:29.466
<v Wes>And normally that's good, right? Because why are you reading from memory that

00:35:29.466 --> 00:35:32.146
<v Wes>hasn't been initialized? It can't possibly have a value you want.

00:35:32.146 --> 00:35:37.140
<v Chris>Right. So they remove those lines of code. They ship it. Everything seems to be fine.

00:35:37.691 --> 00:35:42.606
<v Chris>The issue was is that they had basically really cut down the entropy of the

00:35:42.606 --> 00:35:47.866
<v Chris>keys that were getting generated for things like OpenSSL, which you can imagine what that impacts.

00:35:47.866 --> 00:35:51.426
<v Chris>In fact, it didn't just impact OpenSSL. It was like everything that needed a

00:35:51.426 --> 00:35:57.996
<v Chris>cert. So SSH, all your X509 keys, like everything got affected by this.

00:35:58.385 --> 00:36:03.691
<v Chris>And the worst part was it was out in the wild for two years before researchers discovered it.

00:36:04.606 --> 00:36:12.625
<v Clips>So this bug, which affected OpenSSL, the random number generator,

00:36:13.726 --> 00:36:19.875
<v Clips>was introduced two years ago due to a Debian-specific patch.

00:36:20.467 --> 00:36:22.632
<v Clips>So it's a Tebian-specific bug,

00:36:24.780 --> 00:36:31.836
<v Clips>and remained undiscovered for two years, almost exactly two years until Luciano

00:36:31.836 --> 00:36:38.503
<v Clips>discovered this, and it was published on May of 2008.

00:36:39.217 --> 00:36:43.996
<v Chris>Think about the scope of this for a moment, right? You've got to reissue and

00:36:43.996 --> 00:36:50.549
<v Chris>revoke every key that was created from 2006 to 2008.

00:36:51.083 --> 00:36:52.759
<v Chris>There were, I mean, just...

00:36:53.817 --> 00:36:56.503
<v Chris>Maybe millions, could have been in the millions that were affected by that.

00:36:56.503 --> 00:36:58.853
<v Chris>It was a massive, massive issue.

00:36:58.853 --> 00:37:04.219
<v Wes>Yeah, it also affected a chunk of live Tor relay nodes at the time, which isn't great.

00:37:05.063 --> 00:37:09.103
<v Wes>Under the hood, what was happening is that OpenSSL was actually intentionally

00:37:09.103 --> 00:37:14.403
<v Wes>using uninitialized memory as an unpredictability source. The idea is on different

00:37:14.403 --> 00:37:17.713
<v Wes>systems, other processes, whatever has been in that system, how it came up in

00:37:17.713 --> 00:37:19.388
<v Wes>the hardware, all of that will be different.

00:37:19.642 --> 00:37:24.936
<v Wes>And so it's one of the very few times you might actually legitimately read from uninitialized memory.

00:37:25.081 --> 00:37:28.323
<v Wes>Valgrind doesn't know that. And there hadn't been any infrastructure or communication

00:37:28.323 --> 00:37:31.343
<v Wes>or clearly comments around it or whatever to, like, make it clear.

00:37:31.343 --> 00:37:34.543
<v Wes>And so when you remove that, it wasn't like there was no other sources,

00:37:34.543 --> 00:37:38.663
<v Wes>but it was essentially only the process ID that was left in the pool of entropy.

00:37:38.663 --> 00:37:42.161
<v Wes>And so that's like a number between 1 and, like, 32K at the time.

00:37:43.443 --> 00:37:46.733
<v Wes>And that's not enough, right? Right. You'll start having. And so what how they

00:37:46.733 --> 00:37:50.263
<v Wes>found it is that they found real world collisions out there.

00:37:50.263 --> 00:37:50.553
<v Brent>Right.

00:37:50.553 --> 00:37:55.473
<v Wes>And that's the only way you can, because if you just look at output from this

00:37:55.473 --> 00:37:58.313
<v Wes>random number generator, you can do statistical tests on it.

00:37:58.313 --> 00:38:01.713
<v Wes>You can look at just sampling that one value won't tell you.

00:38:01.713 --> 00:38:04.833
<v Wes>It doesn't tell you how big of a space it came from you. The only way to do

00:38:04.833 --> 00:38:09.337
<v Wes>it is by looking at huge samples of the outputs in the real world, effectively.

00:38:09.674 --> 00:38:13.143
<v Wes>And so it's it's really hard to do, especially for a developer making a change.

00:38:13.143 --> 00:38:15.258
<v Wes>And it's kind of the thing that tends to favor the attacker.

00:38:16.773 --> 00:38:22.195
<v Chris>It strikes me, too, that if an automation tool led to a mistake like this today,

00:38:22.683 --> 00:38:26.003
<v Chris>we would probably spend 90 percent of the discussion having an existential panic

00:38:26.003 --> 00:38:29.266
<v Chris>about automation tools and 10 percent of the discussion about the actual bug.

00:38:29.794 --> 00:38:32.083
<v Chris>But back then, it wasn't that wasn't the conversation at all.

00:38:32.083 --> 00:38:36.139
<v Chris>And it was so it was so massive. And there was a lot of downstream issues as well.

00:38:37.127 --> 00:38:41.143
<v Chris>And it's reminiscent of the cold card issue.

00:38:41.683 --> 00:38:46.021
<v Chris>When you dig through it, you know, it looks like this person that made this

00:38:46.021 --> 00:38:48.741
<v Chris>commitment, I don't know for sure, but it looks like maybe they were a Python

00:38:48.741 --> 00:38:51.701
<v Chris>person and they didn't understand the C code and they didn't really know what they were looking at.

00:38:52.125 --> 00:38:56.511
<v Chris>They thought they applied a fix that solved an error that was happening when

00:38:56.511 --> 00:38:58.361
<v Chris>they were compiling the firmware.

00:38:58.361 --> 00:39:01.891
<v Chris>They would get this compiler error over and over again, and the guy went in,

00:39:01.891 --> 00:39:05.781
<v Chris>or the gal, I don't know who it was, went in and made the change that ultimately

00:39:05.781 --> 00:39:09.058
<v Chris>bypassed the hardware and used the MicroPython.

00:39:09.991 --> 00:39:13.441
<v Chris>And they resolved the build error and considered it fixed.

00:39:13.713 --> 00:39:19.761
<v Wes>And all the tests were making sure that the build flag was there to say enable

00:39:19.761 --> 00:39:21.551
<v Wes>the hardware RNG, and it was there.

00:39:21.891 --> 00:39:25.041
<v Wes>It was just supposed to be a one, and it was a zero. And there was no check

00:39:25.041 --> 00:39:27.931
<v Wes>on the value. There was only ever a check that the var existed.

00:39:28.551 --> 00:39:33.595
<v Chris>So I just sat there for 20 months just waiting for somebody to come along with a tool to find it.

00:39:34.623 --> 00:39:37.821
<v Wes>And it is a case, right, if you did add your own passphrase thing on top,

00:39:37.821 --> 00:39:40.321
<v Wes>if you had brought in your own sources of randomness.

00:39:40.321 --> 00:39:43.145
<v Chris>Yeah, which you can with a cold card. You can provide your own entropy.

00:39:43.458 --> 00:39:46.421
<v Chris>But if you didn't. You have to do that, right? And if you're buying a device

00:39:46.421 --> 00:39:47.411
<v Chris>like that, you assume it's...

00:39:47.411 --> 00:39:49.461
<v Wes>Part of the value was like, well, this has a hardware source.

00:39:49.461 --> 00:39:51.091
<v Wes>That's part of why I'm buying it.

00:39:51.751 --> 00:39:55.392
<v Brent>It's so sad that the exact thing they were promising is the thing they didn't do.

00:39:56.951 --> 00:39:57.171
<v Chris>Yes.

00:39:57.491 --> 00:39:58.181
<v Brent>Unintentionally.

00:39:58.181 --> 00:40:02.288
<v Chris>And it was for people that had all the best intentions. But it makes me realize,

00:40:02.445 --> 00:40:04.761
<v Chris>you said at the beginning, or towards the middle there, Wes,

00:40:04.761 --> 00:40:08.337
<v Chris>you said, you know, don't reinvent the wheel. Try to use things that exist.

00:40:09.531 --> 00:40:14.721
<v Chris>In a crazy twist of fate, people that rolled on a Linux box and used the Linux

00:40:14.721 --> 00:40:17.509
<v Chris>random number generator are better off.

00:40:18.707 --> 00:40:22.747
<v Chris>And I think there's a lesson in that. And it's why Linux is so important to

00:40:22.747 --> 00:40:27.727
<v Chris>us as a society is that it is a general technology platform where there are

00:40:27.727 --> 00:40:31.916
<v Chris>people with mutual incentives that are improving the system and making it and testing it.

00:40:32.305 --> 00:40:37.147
<v Chris>And every time we go outside of that and we recreate something, you take on risk.

00:40:37.147 --> 00:40:41.457
<v Chris>And this time it's a type of risk that was at the firmware provider level when

00:40:41.457 --> 00:40:46.317
<v Chris>a lot of people were thinking about physical security and air gapping and 9-volt

00:40:46.317 --> 00:40:47.896
<v Chris>batteries and all this kind of stuff.

00:40:49.047 --> 00:40:50.740
<v Chris>And we're not really focused on the actual threat.

00:40:50.978 --> 00:40:55.877
<v Wes>And it also speaks to open source is not enough. Maybe that will help in our

00:40:55.877 --> 00:40:59.007
<v Wes>new era of automated reviews. But the code was out there, right?

00:40:59.007 --> 00:41:02.877
<v Wes>It wasn't that it was, obviously the hardware is somewhat hidden, but the code was there.

00:41:02.877 --> 00:41:05.837
<v Chris>You know, it wasn't like a truly open source license. And I think if it had

00:41:05.837 --> 00:41:09.697
<v Chris>been like a GPL license, maybe more people would have built off of it and discovered

00:41:09.697 --> 00:41:12.657
<v Chris>this. But because they didn't want people doing that, they did like some sort

00:41:12.657 --> 00:41:14.895
<v Chris>of like read only you can view license kind of crap.

00:41:15.400 --> 00:41:18.204
<v Chris>And this is also one of the side effects of that.

00:41:18.598 --> 00:41:22.097
<v Chris>And it just goes back to like, that's why Linux is so important,

00:41:22.097 --> 00:41:25.127
<v Chris>is we have solved some of these problems and they continue to be monitored and

00:41:25.127 --> 00:41:27.307
<v Chris>maintained and it's done right.

00:41:27.307 --> 00:41:32.117
<v Chris>And it really comes back to like we invented it once and we've continued to iterate on it.

00:41:32.117 --> 00:41:36.617
<v Chris>And what started back in 1994 as kind of a simple system has developed into

00:41:36.617 --> 00:41:44.287
<v Chris>this truly robust multi-source of noise and entropy, truly great as we can get

00:41:44.287 --> 00:41:46.901
<v Chris>on these determined systems, random number generator.

00:41:47.483 --> 00:41:52.727
<v Chris>And that's just one of the many gifts of Linux is that these things like networking

00:41:52.727 --> 00:41:56.977
<v Chris>and disk IO and random number generation and cryptographic signals,

00:41:56.977 --> 00:42:00.307
<v Chris>all this stuff is handled by Linux for us. Such a gift.

00:42:00.307 --> 00:42:04.307
<v Wes>We get a world-class product for free. You don't have to go buy a proprietary,

00:42:06.067 --> 00:42:10.907
<v Wes>cryptographic enhanced private OS from Microsoft or from Qualcomm or for whatever.

00:42:10.907 --> 00:42:12.767
<v Chris>And just trust that they got that aspect right.

00:42:12.767 --> 00:42:16.507
<v Wes>Right. No, you just use the standard kernel that is open source and anyone can download.

00:42:25.622 --> 00:42:29.216
<v Brent>Oh my goodness, gents, there are some boosts here. We're going to start with

00:42:29.216 --> 00:42:31.172
<v Brent>our baller, Greg the Lawyer.

00:42:35.426 --> 00:42:39.406
<v Brent>Greg came in with 133,333,

00:42:42.506 --> 00:42:42.586
<v Brent>sets.

00:42:42.586 --> 00:42:42.948
<v Chris>Whoa!

00:42:52.328 --> 00:42:54.923
<v Chris>Thank you, Greg. Appreciate that.

00:42:55.236 --> 00:42:59.477
<v Brent>Greg is also adhering by the rules of the show. One of the boosts is a row of sticks.

00:43:00.322 --> 00:43:00.717
<v Chris>Was that a row?

00:43:00.717 --> 00:43:03.497
<v Brent>And it said, well, the other one is actually.

00:43:03.497 --> 00:43:03.937
<v Wes>It is now.

00:43:05.777 --> 00:43:10.377
<v Brent>We've said that, I think, twice. He wants to reward early movers on Buzz.

00:43:10.757 --> 00:43:16.047
<v Brent>Not for me, but as a Mac user since 1984, I appreciate those early adopters.

00:43:16.047 --> 00:43:16.807
<v Chris>Aw, thank you.

00:43:16.807 --> 00:43:17.497
<v Wes>Aw, sweet.

00:43:17.497 --> 00:43:22.367
<v Chris>Yeah, Greg came coming in with a live boost here because we got low support

00:43:22.367 --> 00:43:25.467
<v Chris>for last week's episode and we realized we probably should have waited a year

00:43:25.467 --> 00:43:26.937
<v Chris>to cover Buzz, and so thank you.

00:43:26.937 --> 00:43:27.057
<v Brent>Greg.

00:43:27.557 --> 00:43:29.217
<v Wes>And thanks for hanging with us, audience.

00:43:29.217 --> 00:43:33.177
<v Chris>Also a few Satoshis in there to feed those chickens. I do have,

00:43:33.577 --> 00:43:36.527
<v Chris>I wonder how I could get those public in a way that wouldn't drain my internet.

00:43:37.015 --> 00:43:41.100
<v Chris>But I do have a few cameras set up on those chickens. But do I want to dedicate,

00:43:42.575 --> 00:43:46.284
<v Chris>one to two megabits of my precious Starlink upload link? I don't know.

00:43:46.551 --> 00:43:47.487
<v Chris>But if I can think of a way.

00:43:47.537 --> 00:43:49.878
<v Brent>Isn't that why you got the mini?

00:43:50.069 --> 00:43:53.037
<v Chris>Well, no, I do the backup. Oh. The connecting backup.

00:43:53.037 --> 00:43:54.427
<v Brent>We've been planning this for months, really.

00:43:54.427 --> 00:43:57.607
<v Chris>And then if I have to switch to it for production, maybe I pause the streams or something.

00:43:57.607 --> 00:44:01.197
<v Wes>What about a system where people, it's like you boost and then the stream is

00:44:01.197 --> 00:44:02.877
<v Wes>opened for a certain amount of time?

00:44:02.877 --> 00:44:04.417
<v Chris>Opens the Ngrok tunnel to your knees.

00:44:04.417 --> 00:44:07.657
<v Wes>Yeah, so you get like 10, you know, send in a couple sets and you get like 10

00:44:07.657 --> 00:44:08.507
<v Wes>minutes of chicken camp.

00:44:08.507 --> 00:44:11.426
<v Chris>That's great. They are the best chickens. You would not believe.

00:44:12.277 --> 00:44:14.627
<v Chris>Like Labradors. Like they get on our lap and they just snuggle.

00:44:14.627 --> 00:44:19.287
<v Chris>It's ridiculous. And Boss, the rooster, he's got a routine now in the evening

00:44:19.287 --> 00:44:21.741
<v Chris>around sunset. He comes in and watches TV on the couch with us.

00:44:22.856 --> 00:44:23.674
<v Brent>What's his favorite show?

00:44:24.481 --> 00:44:27.860
<v Chris>I mean, mostly it's Magnum, but last night he was watching YouTube.

00:44:29.117 --> 00:44:32.977
<v Chris>He doesn't mind. He just likes the colors. Nice. Turd Ferguson comes.

00:44:32.977 --> 00:44:34.157
<v Chris>And thank you very much, Greg.

00:44:34.837 --> 00:44:35.707
<v Chris>You basically brought up the

00:44:35.707 --> 00:44:40.031
<v Chris>whole trend for the episode. Turd Ferguson comes in with a row of McDucks.

00:44:42.081 --> 00:44:48.222
<v Chris>That's 22,222 Satoshis. Oh, it's a live boost.

00:44:48.617 --> 00:44:52.721
<v Chris>The cold card mess has me tired. We trusted the hardware because it was offline,

00:44:53.081 --> 00:44:57.063
<v Chris>but the bug was already baked in and waiting fun times ahead.

00:44:58.246 --> 00:45:01.526
<v Wes>Yeah, pretty brutal. And then it can just sort of disappear out from under you.

00:45:01.526 --> 00:45:04.166
<v Wes>You don't have to do anything. It's just moved in a transaction,

00:45:04.166 --> 00:45:05.496
<v Wes>and the next time you check, it's gone.

00:45:05.496 --> 00:45:07.814
<v Chris>You're like Brent and you take a few days, you go check, and it's gone.

00:45:09.046 --> 00:45:11.646
<v Brent>I did check this morning because I thought that was a responsible thing to do.

00:45:11.646 --> 00:45:16.766
<v Brent>Not gone yet. Don't try anything on me. But I've got some homework to do after the show.

00:45:17.266 --> 00:45:18.466
<v Wes>Can you describe your gold card more to me?

00:45:19.026 --> 00:45:24.706
<v Chris>You know, it makes me think like, yeah, what else? That is a good point.

00:45:25.166 --> 00:45:26.096
<v Brent>Oh, that's a good question.

00:45:26.096 --> 00:45:29.696
<v Chris>We're just getting this thing rolling, right? Because what do you think the

00:45:29.696 --> 00:45:36.216
<v Chris>coincidence is that it happened a few days after Kimmy K3 with Open Weights came out publicly?

00:45:36.216 --> 00:45:40.006
<v Chris>And it's one of the only really current top tier models that doesn't restrict

00:45:40.006 --> 00:45:43.438
<v Chris>you from doing cybersecurity stuff. And then three days later, this exploit's found.

00:45:44.553 --> 00:45:48.816
<v Wes>I think it depends on how long it took to do some of the pre-work.

00:45:48.816 --> 00:45:50.326
<v Wes>But it's a good question.

00:45:50.326 --> 00:45:54.146
<v Chris>We may find they were cooking for months. Or we may find that they slammed it

00:45:54.146 --> 00:45:57.516
<v Chris>in 10 minutes with K3. Because the reason why I bring that up is now people

00:45:57.516 --> 00:46:00.786
<v Chris>have tried it, and it finds it in 5, 10 minutes. It's just immediate.

00:46:00.786 --> 00:46:03.916
<v Wes>Yeah, I think the main question is from finding it, how long does it take to

00:46:03.916 --> 00:46:05.666
<v Wes>generate all of the private keys?

00:46:05.666 --> 00:46:07.773
<v Chris>It's a massive sweep and all of that. Yeah, yeah, for sure.

00:46:08.016 --> 00:46:11.824
<v Wes>And I assume there was some staging before you actually submit all the transactions.

00:46:11.981 --> 00:46:13.699
<v Wes>but who knows that's a great question.

00:46:14.007 --> 00:46:18.206
<v Chris>I'm sure we'll be i mean that's the thing about the blockchain people are already putting it all.

00:46:18.206 --> 00:46:23.719
<v Wes>Together well e scott boosts in with 2371 sats,

00:46:24.926 --> 00:46:29.779
<v Wes>what what what what happened with nextcloud i have two separate instances running

00:46:29.988 --> 00:46:34.416
<v Wes>i even moved slash data off my windows 7 ntfs share to a proper zfs mirror with

00:46:34.416 --> 00:46:36.446
<v Wes>backups also this is a star trek.

00:46:41.278 --> 00:46:46.522
<v Chris>So a quick version is I had like a cold stop will not be using xCloud ever again

00:46:46.522 --> 00:46:52.806
<v Chris>moment just because the data it wiped out was some of the most valuable data possible.

00:46:53.166 --> 00:46:58.262
<v Chris>And so what happened is I went to view a text file just using the viewer like

00:46:58.262 --> 00:47:01.618
<v Chris>it's in the web interface and you click on a .txt file,

00:47:02.280 --> 00:47:06.432
<v Chris>and it opened and the instant it opened, it wiped the document,

00:47:06.432 --> 00:47:09.502
<v Chris>it put some escape characters in the top left corner and then it immediately

00:47:09.502 --> 00:47:10.721
<v Chris>wrote that to the file system.

00:47:11.824 --> 00:47:14.792
<v Chris>and it should have just been a document viewer. It shouldn't have been writing,

00:47:14.792 --> 00:47:17.752
<v Chris>and it did it instantly. And Wes, you looked it up, and it turned out to be

00:47:17.752 --> 00:47:23.834
<v Chris>some sort of in-browser issue that is very rare but happened on the client-side rendering.

00:47:24.931 --> 00:47:28.502
<v Chris>And I realized for what I need, there was just too much going on there.

00:47:28.502 --> 00:47:32.092
<v Chris>And the fact that by just viewing my most important document,

00:47:32.092 --> 00:47:35.252
<v Chris>which is what I used NextCloud for, was for its privacy, totally offline,

00:47:35.252 --> 00:47:38.340
<v Chris>off the Internet, by just viewing that document, I wiped it out.

00:47:38.943 --> 00:47:43.242
<v Chris>And that was when I was like, I don't need any of this. And I decided at that

00:47:43.242 --> 00:47:45.683
<v Chris>moment I was going to stop using it, which has been a real pain in my butt.

00:47:48.005 --> 00:47:53.512
<v Chris>But when something fails that catastrophically on you, sometimes it just leaves

00:47:53.512 --> 00:47:54.202
<v Chris>a bad taste in your mouth.

00:47:54.902 --> 00:47:57.032
<v Chris>And that's after it worked for me for a long, long time.

00:47:57.032 --> 00:47:59.432
<v Wes>And it doesn't mean it still couldn't be a great CalDev suite.

00:47:59.432 --> 00:48:02.432
<v Wes>There's lots of roles it still makes sense for, especially if you have robust

00:48:02.432 --> 00:48:04.312
<v Wes>backups and it's just one place to look at them.

00:48:04.312 --> 00:48:06.902
<v Chris>It was just sort of the last straw, honestly, because it's been a lot to upgrade

00:48:06.902 --> 00:48:10.859
<v Chris>and manage over the years. and I sort of have rolled back what I use it for to some degree.

00:48:11.342 --> 00:48:14.603
<v Chris>And so that was sort of the last thing I was really, really relying on it for and it bit me.

00:48:14.760 --> 00:48:16.293
<v Wes>And made you reconsider. Do I even need it?

00:48:16.484 --> 00:48:16.890
<v Chris>Yeah.

00:48:17.906 --> 00:48:23.232
<v Wes>I did look it up. 2371 is a well-known year in Star Trek. So we got a few things.

00:48:23.232 --> 00:48:25.650
<v Wes>Well, third season DS9 begins then.

00:48:26.312 --> 00:48:30.062
<v Wes>It's also the year USS Voyager launched on its ill-fated mission.

00:48:31.042 --> 00:48:35.682
<v Wes>And it's Star Trek Generations is set in that year when Captain Kirk meets Captain Picard.

00:48:35.682 --> 00:48:39.024
<v Chris>That was such a great time for Star Trek. That was such a great time.

00:48:41.230 --> 00:48:42.445
<v Chris>Thank you, sir. Appreciate the boost.

00:48:42.445 --> 00:48:42.885
<v Wes>Thank you, E-Scott.

00:48:43.035 --> 00:48:43.232
<v Brent>Unicorn,

00:48:45.395 --> 00:48:48.718
<v Brent>1999 came in with 6,000 sats.

00:48:54.860 --> 00:48:59.565
<v Brent>At some points in open source and with some projects who had to sign off that

00:48:59.565 --> 00:49:04.827
<v Brent>you were the author of the code and had not used any source that was also not clean.

00:49:05.587 --> 00:49:11.515
<v Brent>But now with AI, that doesn't really matter. It seems the who owns AI code question

00:49:11.515 --> 00:49:13.232
<v Brent>is not completely solved.

00:49:13.761 --> 00:49:15.369
<v Chris>Wait, why is that? Why is that?

00:49:15.990 --> 00:49:20.125
<v Wes>Well, there's still active legal debates around it as one. So,

00:49:20.125 --> 00:49:23.765
<v Wes>like, for instance, some courts have said that pure, like, if all you did was

00:49:23.765 --> 00:49:26.247
<v Wes>one-shot code, it can't be copyrighted at all.

00:49:27.883 --> 00:49:32.919
<v Wes>So I think the question of, you know, exactly the law has not caught up with

00:49:32.919 --> 00:49:35.199
<v Wes>the current tool set is sort of one aspect of it.

00:49:35.199 --> 00:49:39.519
<v Wes>Like we have some cases that mostly dealt with code in the era of browser tabs

00:49:39.519 --> 00:49:43.129
<v Wes>and nothing that's really dealt with the case of you're doing project management

00:49:43.129 --> 00:49:46.769
<v Wes>on an agentic harness and then you edited some parts of it or you reviewed it.

00:49:47.648 --> 00:49:50.979
<v Wes>So I think that's where some camps concerns are coming from,

00:49:50.979 --> 00:49:53.119
<v Wes>just in that it is still an open legal question.

00:49:53.119 --> 00:49:57.679
<v Chris>But it seems like if my self-driving car runs into Brent and smashes his van

00:49:57.679 --> 00:49:59.972
<v Chris>up, I'm legally responsible for that.

00:50:00.320 --> 00:50:02.596
<v Chris>It doesn't matter if the AI degenerated that.

00:50:03.182 --> 00:50:08.209
<v Wes>Yeah, but that's a legal sort of – it's a separate set of law essentially,

00:50:08.209 --> 00:50:12.949
<v Wes>right? Like this was a judge making a case about if you could copyright pure AI-generated content.

00:50:13.169 --> 00:50:13.749
<v Chris>Oh, copyright, copyright.

00:50:13.749 --> 00:50:16.709
<v Wes>Yes. So like when you make something – not everything is copyrightable,

00:50:16.709 --> 00:50:20.516
<v Wes>but if it is a copyrightable expression, not just the idea but the expression,

00:50:21.869 --> 00:50:23.149
<v Wes>you get to sign copyright.

00:50:23.149 --> 00:50:26.229
<v Wes>to it that's how you add a license to your code files but they're saying if

00:50:26.229 --> 00:50:30.969
<v Wes>all you did was prompt a single ai to generate code that cannot currently be.

00:50:30.969 --> 00:50:36.639
<v Chris>Copyrighted i just think in the context of most most not all but most free software

00:50:36.639 --> 00:50:39.799
<v Chris>project this is really ant humping because who's responsible is the person who

00:50:39.799 --> 00:50:41.894
<v Chris>submits it and this is sort of full stop,

00:50:42.922 --> 00:50:46.029
<v Chris>i mean this anything else is just sort of ant humping now when you're working

00:50:46.029 --> 00:50:49.389
<v Chris>on a giant international project maybe that's really where things matter like

00:50:49.389 --> 00:50:51.129
<v Chris>that i think but that's my opinion.

00:50:51.129 --> 00:50:55.869
<v Brent>There were some explorations of laws in europe though that recently suggested

00:50:55.869 --> 00:51:01.260
<v Brent>that open source software might be responsible if people use it in certain contexts so,

00:51:02.212 --> 00:51:07.359
<v Brent>that's an interesting angle unicorn 99 here wants to clarify though i'm not

00:51:07.359 --> 00:51:10.500
<v Brent>anti-ai i'm anti-corporate exploitation.

00:51:10.786 --> 00:51:14.999
<v Chris>Boy sure the corporate ai aspect is so obnoxious so tiring i agree with you

00:51:14.999 --> 00:51:19.129
<v Chris>there it's the worst about it it's the worst thing about it and yet We need

00:51:19.129 --> 00:51:22.065
<v Chris>their precious GPUs, at least for now.

00:51:22.604 --> 00:51:26.405
<v Chris>Hey, Mr. Mayhem's back with 16,000 Satoshis.

00:51:28.622 --> 00:51:31.606
<v Chris>Look at that. Boost the roost, boost the roost, boost the roost.

00:51:31.734 --> 00:51:34.770
<v Chris>Something broke. It's a fill-in boost. Well, boost the roost indeed. Thank you.

00:51:36.424 --> 00:51:42.189
<v Chris>Appreciate that. And that is all of the paid boosts, but we do have some member

00:51:42.189 --> 00:51:43.909
<v Chris>boosts. Would you like to kick that off, Wes?

00:51:44.329 --> 00:51:46.374
<v Wes>Oh, you know how I love a good member boost.

00:51:47.036 --> 00:51:47.789
<v Chris>Hey, Unicorn's back.

00:51:47.789 --> 00:51:51.669
<v Wes>Oh, Unicorn1999 comes in with a member boost.

00:51:51.669 --> 00:51:52.069
<v Chris>Hey!

00:51:53.845 --> 00:51:57.099
<v Wes>I think tech people bringing up the copyright issue is not only crap,

00:51:57.099 --> 00:52:00.422
<v Wes>but partially how copyright is always used by corporations against us users.

00:52:00.869 --> 00:52:03.979
<v Wes>Like, it was okay back in the day for ISPs to host Usenet servers full of TV

00:52:03.979 --> 00:52:06.149
<v Wes>shows, but not okay for people to download and share.

00:52:08.489 --> 00:52:11.719
<v Chris>We don't talk about Usenet. We don't talk about Usenet. Yeah,

00:52:11.719 --> 00:52:15.399
<v Chris>no, I think it's like we're talking about two different things here, Unicorn.

00:52:16.043 --> 00:52:19.329
<v Chris>Because everything you just said I completely agree with. I just think there's

00:52:19.329 --> 00:52:23.699
<v Chris>hypocrisy in folks that, you know, have their RAR stack set up or whatever,

00:52:23.699 --> 00:52:28.689
<v Chris>or rip DVDs, then now concerned that LLMs are ripping content,

00:52:28.689 --> 00:52:30.346
<v Chris>right? There's just hypocrisy in that.

00:52:30.758 --> 00:52:34.426
<v Chris>But yeah, using copyright as a kludge is never good.

00:52:34.746 --> 00:52:39.269
<v Wes>There's also sort of like, we're seeing projects now, which is perhaps reasonable

00:52:39.269 --> 00:52:40.669
<v Wes>in that they are much more established,

00:52:41.271 --> 00:52:44.510
<v Wes>projects, but we see projects now that are having concerns over copyright questions

00:52:44.945 --> 00:52:48.609
<v Wes>that maybe were different than how Linux was treated and being actively developed

00:52:48.609 --> 00:52:51.749
<v Wes>in the ESCO era, where there were similar sort of copyright questions.

00:52:51.749 --> 00:52:55.319
<v Chris>Mm-hmm, mm-hmm, mm-hmm, mm-hmm, yeah.

00:52:55.319 --> 00:52:57.406
<v Brent>Mm-hmm.

00:52:57.406 --> 00:53:02.269
<v Chris>All right, well, Greg, the lawyer's here with a memboost. Welcome back to the

00:53:02.269 --> 00:53:05.469
<v Chris>States. I hope the trip was flock-free. You know, I'm not sure.

00:53:06.009 --> 00:53:07.178
<v Chris>I doubt it, though. I doubt it.

00:53:08.169 --> 00:53:11.209
<v Chris>He says, I got fed up with Dario's nonsense and switched back to Codex.

00:53:11.209 --> 00:53:13.668
<v Chris>I figure their model is better because they broke out first.

00:53:16.149 --> 00:53:21.458
<v Chris>The weird feeling when switching VC-funded frontier models is how I fight in part for open source.

00:53:22.171 --> 00:53:24.929
<v Chris>Yeah, although if it makes you feel better, the Codex is open source.

00:53:25.449 --> 00:53:27.756
<v Chris>The backend isn't, but the Codex client is open source.

00:53:28.383 --> 00:53:29.956
<v Wes>Amadeus member boosts in.

00:53:32.726 --> 00:53:37.915
<v Wes>My workflow of cleaning up my own drives is using a great Rust tool called Dust.

00:53:38.625 --> 00:53:42.605
<v Wes>Find out what takes up space, old hugging face models, old Proton versions from

00:53:42.605 --> 00:53:44.395
<v Wes>Steam, Podman containers, et cetera.

00:53:44.755 --> 00:53:48.095
<v Wes>Works great, and I'm using it on every machine I control or manage.

00:53:48.615 --> 00:53:49.755
<v Chris>The Podman containers makes me chocolate.

00:53:50.595 --> 00:53:54.035
<v Wes>Thank you for concluding the very realistic selection of actual disk usage.

00:53:54.035 --> 00:53:55.336
<v Chris>Yeah, yeah, really, yeah.

00:53:56.451 --> 00:53:59.225
<v Wes>And Dust is a Apache 2 license.

00:53:59.225 --> 00:54:01.535
<v Chris>Good to see. Nice little extra pick there.

00:54:01.535 --> 00:54:05.402
<v Brent>We've got Joshua here with a free members boost.

00:54:07.387 --> 00:54:11.275
<v Brent>I'm a software engineer and always have ideas for side projects,

00:54:11.275 --> 00:54:13.796
<v Brent>but no time to actually make the most of them.

00:54:14.446 --> 00:54:19.085
<v Brent>Cloud Code has really changed that, though, but I worry about making my new

00:54:19.085 --> 00:54:23.545
<v Brent>projects open source because of public backlash, since they're all written with

00:54:23.545 --> 00:54:26.020
<v Brent>AI. Do you have any advice?

00:54:26.728 --> 00:54:32.025
<v Chris>I would bet Joshua that you would actually find the reverse problem is going

00:54:32.025 --> 00:54:35.065
<v Chris>to be your issue is that if you open source it and it's popular,

00:54:35.065 --> 00:54:38.605
<v Chris>you're going to have a lot of people that are contributing back with AI assistant code development.

00:54:38.930 --> 00:54:41.455
<v Chris>You're going to have a lot more of that than your people that drive by your

00:54:41.455 --> 00:54:42.599
<v Chris>repo and get upset at you.

00:54:42.762 --> 00:54:45.745
<v Wes>Yeah. Like I think it would be different. Like if you if you vibe something

00:54:45.745 --> 00:54:49.655
<v Wes>up and go share it on three subreddits at once. And like there's there are versions

00:54:49.655 --> 00:54:51.995
<v Wes>of that where you can get yourself in trouble. But if all you're doing is sort

00:54:51.995 --> 00:54:55.852
<v Wes>of putting it out there, I don't think you'll receive too much backlash.

00:54:56.252 --> 00:54:58.235
<v Chris>Anonymous comes in with a member boost.

00:55:01.013 --> 00:55:04.595
<v Chris>It never occurred to me that a nutcase might not only have a thousand tabs open,

00:55:04.595 --> 00:55:08.449
<v Chris>but that nutcase might also have them scattered across dozen of windows.

00:55:08.756 --> 00:55:10.771
<v Chris>Absolute madness!

00:55:18.244 --> 00:55:19.774
<v Chris>I know, I know.

00:55:19.774 --> 00:55:23.214
<v Wes>Are we, it says anonymous, but I don't know. I kind of smell the PJ booze.

00:55:27.174 --> 00:55:31.314
<v Brent>I don't think I've been called a nutcase before and certainly not for my tab habits.

00:55:31.654 --> 00:55:33.374
<v Wes>Well, I came from the whole squirrel thing.

00:55:33.374 --> 00:55:36.524
<v Chris>Yeah, as a squirrel father, I think you would put yourself in the nutcase category.

00:55:36.524 --> 00:55:40.170
<v Brent>Yeah, that's fair. That's actually kind of a compliment. Thank you, anonymous.

00:55:40.833 --> 00:55:43.630
<v Wes>Well, SensorSmile comes in with our last member boost.

00:55:49.331 --> 00:55:53.737
<v Wes>I'm finally ready to start playing with AI. However, I'm not sure where to start.

00:55:54.125 --> 00:55:55.524
<v Wes>I have a local Quen model up with

00:55:55.524 --> 00:55:59.454
<v Wes>Lama CPP. The built-in chat interface is boring. How do I code with this?

00:55:59.794 --> 00:56:04.284
<v Wes>Hermes? How do you do long-running agent? A beginner's guide for the tech experienced.

00:56:04.284 --> 00:56:07.964
<v Chris>This is SeniorSmile. You're like, you're starting with Bitcoin by installing

00:56:07.964 --> 00:56:10.640
<v Chris>a node before you've acquired sats.

00:56:11.534 --> 00:56:14.914
<v Chris>I mean, not necessarily a bad way to go to truly learn from the ground up, but,

00:56:16.456 --> 00:56:21.953
<v Chris>you might You might just spend a month with OpenCode and OpenCode Go subscription,

00:56:22.452 --> 00:56:25.814
<v Chris>and learn that because what they're going to have for you is agents that are,

00:56:25.814 --> 00:56:27.214
<v Chris>A, optimized for coding, B,

00:56:27.949 --> 00:56:29.708
<v Chris>work right out of the box with tool calls.

00:56:30.062 --> 00:56:33.114
<v Chris>And when you're going to do your own Quinn and your Lama CPP,

00:56:33.114 --> 00:56:36.314
<v Chris>I love it, but you're going to need to use a front-end interface.

00:56:36.314 --> 00:56:38.564
<v Chris>You're going to have to pick one that understands all that stuff,

00:56:38.564 --> 00:56:42.044
<v Chris>that knows how to work with that stuff. And that, when you're just getting into

00:56:42.044 --> 00:56:44.774
<v Chris>all of this, feels like a little extra complexity before you've even really

00:56:44.774 --> 00:56:46.212
<v Chris>figured out what they can even do for you.

00:56:46.601 --> 00:56:50.544
<v Wes>And they could also help like if you do get open code going or whatever.

00:56:50.544 --> 00:56:51.544
<v Chris>Then you can have it set it up for.

00:56:51.544 --> 00:56:57.674
<v Wes>You exactly you can have open code talk to Lama CPP no problem but that's just

00:56:57.674 --> 00:57:00.294
<v Wes>more stuff you kind of get in that isn't actually playing with AI but you can

00:57:00.294 --> 00:57:03.654
<v Wes>have the AI sort of bridge the gap and then try out both local and cloud hosted.

00:57:03.654 --> 00:57:07.394
<v Chris>Not too bad there Westpain alright thank you everybody who supported this episode

00:57:07.394 --> 00:57:12.504
<v Chris>with a boost we had 18 of you stream sats as you listened along and collectively

00:57:12.504 --> 00:57:16.727
<v Chris>you all stacked 17,625 Satoshis for the show.

00:57:19.775 --> 00:57:25.491
<v Chris>And you bring it all together with everybody who boosted. We stacked a humble

00:57:25.491 --> 00:57:30.567
<v Chris>but very grateful 198,570 Satoshis.

00:57:30.845 --> 00:57:34.041
<v Chris>Not the best hourly rate when you split it four ways, as we do,

00:57:34.041 --> 00:57:38.119
<v Chris>or five ways, really. I think it was like five in there, but we still appreciate the support.

00:57:38.252 --> 00:57:41.625
<v Chris>It is a lean season. When you hear the dynamic ads, you know we're hurting.

00:57:42.136 --> 00:57:43.061
<v Chris>But we really appreciate the

00:57:43.061 --> 00:57:46.072
<v Chris>members and the boost. It's also one of our favorite segments on the show.

00:57:46.333 --> 00:57:50.153
<v Chris>It's stuff we never really plan to talk about, but often is great conversation.

00:57:50.420 --> 00:57:55.681
<v Chris>And you can send a boost by going to boost.jupyterbroadcasting.com or jupyterbroadcasting.com

00:57:55.681 --> 00:57:59.162
<v Chris>slash membership or linuxunplugged.com slash membership to be a member.

00:57:59.655 --> 00:58:02.181
<v Chris>That's it from us for the boost. Thank you, everybody who supported us.

00:58:27.013 --> 00:58:30.453
<v Chris>And we got a couple of pics before we get out of here. This is one I've been

00:58:30.453 --> 00:58:34.693
<v Chris>sitting on for a while because I thought maybe we would use it for our Texas trip.

00:58:35.604 --> 00:58:39.733
<v Chris>But I think I'd like to put it out there and get a sense if the audience likes

00:58:39.733 --> 00:58:42.344
<v Chris>it and if anybody deploys it before we use it.

00:58:42.617 --> 00:58:45.233
<v Chris>But I could see this being very useful for us in the future.

00:58:45.233 --> 00:58:47.058
<v Chris>It's called Trek. I already like the name.

00:58:47.876 --> 00:58:51.963
<v Chris>It's a self-hostable travel trip planner with real-time collab features,

00:58:52.483 --> 00:58:57.043
<v Chris>interactive maps, progressive web support, single sign-on, planning budgets,

00:58:57.043 --> 00:58:59.190
<v Chris>packing lists, and more.

00:58:59.579 --> 00:59:04.083
<v Chris>I mean, this thing, and it looks good. It looks like a top-grade commercial

00:59:04.083 --> 00:59:05.483
<v Chris>application that you can self-host.

00:59:05.912 --> 00:59:11.044
<v Chris>And then you can work with your friends, your family, whatever it might be, together to plan a trip.

00:59:11.160 --> 00:59:14.346
<v Chris>And, like, you know, make your big plans, put your budgets in there,

00:59:14.671 --> 00:59:17.493
<v Chris>get it all on a calendar. You can subscribe to the calendars.

00:59:17.493 --> 00:59:18.340
<v Chris>Like, you know what I'm saying?

00:59:18.635 --> 00:59:21.433
<v Chris>Like, this is a real tool with interactive maps and stuff like that.

00:59:21.433 --> 00:59:23.715
<v Chris>So you get a journal for every trip.

00:59:24.040 --> 00:59:27.494
<v Chris>You get real-time collaborative planning. You see it all on a map.

00:59:27.696 --> 00:59:29.322
<v Chris>It has lists and categories.

00:59:29.635 --> 00:59:32.063
<v Chris>It has – you can put in, like, we're going to go on a vacation.

00:59:32.063 --> 00:59:35.284
<v Chris>You can have it pre-visualize that. You can track costs per person.

00:59:35.650 --> 00:59:41.213
<v Chris>You can drag things around and drop them on the calendar. And Wes, it's got an API.

00:59:41.213 --> 00:59:43.416
<v Wes>Ooh, okay. Okay.

00:59:44.868 --> 00:59:46.237
<v Wes>This looks really nice.

00:59:46.976 --> 00:59:48.866
<v Chris>Yeah, I'm pretty excited about it. Like I said, I haven't had a chance to try

00:59:48.866 --> 00:59:51.416
<v Chris>it myself, but I think somebody out there in the audience might be willing to

00:59:51.416 --> 00:59:52.316
<v Chris>give it a go and let us know.

00:59:52.693 --> 00:59:57.383
<v Chris>It is AGPL3.0, and it is primarily TypeScript.

00:59:58.121 --> 01:00:03.136
<v Wes>It's got a Docker Compose setup, Kubernetes if that's your style. Yeah, okay.

01:00:03.136 --> 01:00:04.286
<v Chris>Yeah, yeah.

01:00:04.424 --> 01:00:07.976
<v Wes>The real-time collab part sounds quite interesting. We could just be on a call,

01:00:07.976 --> 01:00:10.031
<v Wes>workshopping a trip, trying things out.

01:00:10.739 --> 01:00:13.206
<v Chris>Teasing Brent about how long he has to drive, because we'll just put it right

01:00:13.206 --> 01:00:14.076
<v Chris>there on the map in front of him.

01:00:14.376 --> 01:00:14.576
<v Wes>Right.

01:00:15.436 --> 01:00:20.156
<v Brent>It'll probably help me with that part. One of the big questions I have is, will it nix?

01:00:21.292 --> 01:00:24.207
<v Chris>Well, of course. It does also have a Docker if you just want to go that way.

01:00:24.723 --> 01:00:29.216
<v Chris>But from that, you could get to a declarative Podman configuration and about

01:00:29.216 --> 01:00:30.936
<v Chris>two licks and two shakes of a lamp's tail.

01:00:31.256 --> 01:00:33.816
<v Wes>Oh, it includes built-in MCP as well as an API. Great.

01:00:35.236 --> 01:00:38.556
<v Chris>I mean, you could see how maybe our agents use this to have a plan and they

01:00:38.556 --> 01:00:39.396
<v Chris>just tell us when they're done.

01:00:40.056 --> 01:00:43.656
<v Chris>All right, Brentley, you got a little sneaky pick. I believe that you wanted

01:00:43.656 --> 01:00:46.120
<v Chris>to pull forward, as they said.

01:00:46.544 --> 01:00:52.860
<v Brent>I'm representing this sneaky pick as producer Jeff actually brought this up to me and he said, Brent.

01:00:53.789 --> 01:00:56.964
<v Brent>This is perfect for me and therefore probably perfect for you.

01:00:57.092 --> 01:01:01.794
<v Brent>It's a to-do app that is called C'est Fait, which is French,

01:01:01.794 --> 01:01:06.879
<v Brent>but I'm going to declare that everybody else can probably just say C-Fit.

01:01:07.094 --> 01:01:08.194
<v Chris>Oh, yeah. I would have sold it.

01:01:08.194 --> 01:01:09.182
<v Brent>You tell me what you should call it.

01:01:09.339 --> 01:01:10.454
<v Wes>Can we get the French one more time?

01:01:10.454 --> 01:01:11.731
<v Chris>I would have said C'est Fait.

01:01:12.594 --> 01:01:13.154
<v Brent>Or C'est Fait.

01:01:13.154 --> 01:01:16.084
<v Chris>C'est Fait. I know, because it's got a cat. So I would have gone with cat,

01:01:16.880 --> 01:01:18.064
<v Chris>you know, because it has a cat logo.

01:01:18.064 --> 01:01:21.924
<v Brent>Yeah, yeah. Yeah, that works too. A silent F, right? In French,

01:01:21.924 --> 01:01:24.174
<v Brent>that really means it's done, which I think it's kind of clever.

01:01:24.174 --> 01:01:25.576
<v Chris>Ah, I gotcha. Okay.

01:01:26.121 --> 01:01:30.044
<v Brent>But it's built for people who, quote, want keyboard-centric efficiency,

01:01:30.044 --> 01:01:33.494
<v Brent>which I have been looking for forever. Jeff, you know me so well.

01:01:33.981 --> 01:01:37.514
<v Brent>It looks like you can use it comfortably from the command line via TUI.

01:01:37.994 --> 01:01:43.684
<v Brent>You can use a desktop GUI if you want or on the go with a native Android app.

01:01:43.684 --> 01:01:45.266
<v Brent>Ain't no Electron in here.

01:01:46.061 --> 01:01:49.044
<v Chris>It's got a TUI and a graphical app and an Android app.

01:01:49.044 --> 01:01:50.096
<v Wes>This is impressive.

01:01:50.974 --> 01:01:53.274
<v Brent>I don't know how none of us found this It's also.

01:01:53.594 --> 01:01:56.864
<v Wes>It's apparently available in FlatHub already, FreeBSD There's obviously,

01:01:56.864 --> 01:02:00.714
<v Wes>it's in FDroid and Google Play There's Windows releases maybe There's Mac OS

01:02:00.714 --> 01:02:03.044
<v Wes>stuff, the only thing I'm not seeing is Nix really, but we can.

01:02:03.044 --> 01:02:08.671
<v Chris>Get that done As a long time, and slightly ashamed Todoist user This,

01:02:09.002 --> 01:02:13.814
<v Chris>this cooks I think this is blowing Todoist away Even at the UI layer.

01:02:14.226 --> 01:02:17.854
<v Wes>To find shortcuts on the fly Wow Yeah.

01:02:17.854 --> 01:02:22.417
<v Brent>It's nice, there's a little detail here It's 69.5% rust.

01:02:23.351 --> 01:02:24.396
<v Chris>All right. You know what?

01:02:24.884 --> 01:02:25.331
<v Brent>Does that count?

01:02:26.203 --> 01:02:30.308
<v Chris>We'll give it to it. It's over 50%. It's over 50%. Everyday usage.

01:02:30.308 --> 01:02:32.350
<v Chris>Press the question mark and navigate to the help tab.

01:02:32.855 --> 01:02:35.108
<v Chris>Configurations in the CLI-2E under the hood.

01:02:35.968 --> 01:02:39.026
<v Chris>All right. So, PJ, you've been trying this? Like, what's the dealio? What do you think?

01:02:39.676 --> 01:02:43.758
<v Mumble>It really did catch my eye. I found it in F-Droid just going to do some updates,

01:02:43.758 --> 01:02:44.728
<v Mumble>and it was right there on the front.

01:02:46.050 --> 01:02:51.248
<v Mumble>Yeah. I really do like it. I like that the Linux desktop app and the phone app,

01:02:51.248 --> 01:02:56.197
<v Mumble>they look very similar. They're not these giant, there's no giant changes between the two.

01:02:56.313 --> 01:02:56.615
<v Chris>Right.

01:02:57.428 --> 01:03:01.008
<v Mumble>So you don't need to necessarily learn all the key bindings because I never

01:03:01.008 --> 01:03:02.635
<v Mumble>will remember them anyways.

01:03:03.122 --> 01:03:07.358
<v Mumble>And I really like the subtasks. You can tree out things. I dream of an idea

01:03:07.358 --> 01:03:09.065
<v Mumble>of having dependency tasks.

01:03:09.367 --> 01:03:12.988
<v Mumble>This ain't quite that, but the subtasks kind of get you there. So I've been using it.

01:03:12.988 --> 01:03:15.778
<v Chris>So it's like a, it's like subtasks isn't quite a project, but you can have a

01:03:15.778 --> 01:03:18.353
<v Chris>task with a bunch of things you got to do to complete it.

01:03:19.236 --> 01:03:22.538
<v Mumble>Yeah, exactly. So I have, I'm kind of using it for goals.

01:03:22.538 --> 01:03:25.998
<v Mumble>Like I have, you know, truck repairs, right. And then a bunch of subtasks under

01:03:25.998 --> 01:03:28.788
<v Mumble>that of the different things I want to do for my truck, you know,

01:03:28.788 --> 01:03:32.238
<v Mumble>house repairs or home things I want to do. And I can have a bunch of subtasks

01:03:32.238 --> 01:03:34.422
<v Mumble>for that. And it's been working out pretty well for that. I like that a lot.

01:03:34.793 --> 01:03:38.323
<v Mumble>Just a dedicated place. I can put the things I want to get done or,

01:03:38.671 --> 01:03:41.488
<v Mumble>oh, I've got 15 minutes to kill. What kind of thing can I do?

01:03:41.488 --> 01:03:44.527
<v Mumble>Well, here's a whole list of things I want to try. I want to do.

01:03:44.760 --> 01:03:45.018
<v Chris>Right.

01:03:45.018 --> 01:03:46.270
<v Mumble>And I'll forget about them otherwise.

01:03:47.208 --> 01:03:49.370
<v Chris>How is the self-hosting side set up the server side?

01:03:50.634 --> 01:03:52.957
<v Mumble>I'm using NextCloud to sync everything up.

01:03:53.211 --> 01:03:57.021
<v Chris>Oh, so you don't have to run a backend in particular? You could just have it sync?

01:03:57.021 --> 01:03:59.266
<v Mumble>Whatever CalDev server you want to use, yeah.

01:03:59.901 --> 01:04:07.851
<v Chris>Oh, okay. I see. I see. So they include Radical, a self-hosted lightweight feature

01:04:07.851 --> 01:04:11.497
<v Chris>complete thing you can use, or, yeah, NextCloud. Huh.

01:04:12.610 --> 01:04:17.001
<v Chris>This is great, Jeff. Nice find. I'm glad Brent, I'm glad he pulled it forward.

01:04:17.641 --> 01:04:18.050
<v Brent>Mm-hmm.

01:04:19.366 --> 01:04:22.572
<v Chris>I may give this a try afterwards. Especially if I could store it,

01:04:22.740 --> 01:04:25.103
<v Chris>of course, I don't know. If I could store it in something, we'll see.

01:04:25.470 --> 01:04:27.801
<v Wes>Yeah, especially if we can compose it with a few other things.

01:04:27.801 --> 01:04:31.681
<v Wes>The fact that it's got the Android layer solved, there's a lot of promise.

01:04:31.681 --> 01:04:35.411
<v Chris>There's a lot I like about it. And the client's in Flathub, which is nice.

01:04:35.411 --> 01:04:36.973
<v Chris>And the Android version's in F-Droid.

01:04:37.166 --> 01:04:42.675
<v Wes>Which is nice. Okay, so PJ's now game correspondent, right? And I guess he's also like a...

01:04:42.872 --> 01:04:43.585
<v Chris>Productivity.

01:04:43.830 --> 01:04:45.021
<v Wes>Yeah, productivity expert.

01:04:46.240 --> 01:04:50.061
<v Chris>Productivity John. PJ still works for that. Productivity John.

01:04:50.841 --> 01:04:52.001
<v Wes>Lifestyle expert.

01:04:52.001 --> 01:04:57.494
<v Chris>Yeah. And a few other things. Solar, long hair, floor showers.

01:04:57.977 --> 01:04:59.741
<v Wes>Oh, floor showers. He's got that down.

01:04:59.741 --> 01:05:01.161
<v Chris>He does have the floor showers down.

01:05:01.161 --> 01:05:03.879
<v Brent>Also our on-site Californian expert.

01:05:04.354 --> 01:05:07.841
<v Chris>It's true. If you want to know anything about California, you just ask PJ. All right.

01:05:07.841 --> 01:05:12.921
<v Chris>Well, we'll have links to everything we talked about at linuxunplugged.com slash 678.

01:05:12.921 --> 01:05:16.348
<v Chris>We're slowly working our way to 700, so we hope you stick with us and join us

01:05:16.666 --> 01:05:20.401
<v Chris>live. You can make it a Tuesday on a Sunday, 10 a.m. Pacific,

01:05:20.401 --> 01:05:22.872
<v Chris>1 p.m. Eastern, over at jblive.tv.

01:05:23.400 --> 01:05:25.811
<v Chris>I say before we go, we tell people some pro tips. We should always,

01:05:25.811 --> 01:05:27.504
<v Chris>maybe we should start the show with these.

01:05:28.481 --> 01:05:30.501
<v Wes>Instead of burying it all the way at the absolute end of the show?

01:05:30.501 --> 01:05:30.831
<v Chris>Right.

01:05:30.831 --> 01:05:34.006
<v Brent>We should, like, do a reverse show sometime. We should start from the bottom.

01:05:35.306 --> 01:05:37.686
<v Wes>Flip the duck. Surely a bot could flip the duck.

01:05:38.573 --> 01:05:40.013
<v Chris>We should flip the show.

01:05:40.473 --> 01:05:41.413
<v Brent>All right, next week.

01:05:41.593 --> 01:05:44.983
<v Chris>We should think about that. That could be a lot of fun. Don't you think?

01:05:44.983 --> 01:05:45.513
<v Wes>Probably.

01:05:45.513 --> 01:05:45.941
<v Brent>Oh, yeah.

01:05:46.103 --> 01:05:48.443
<v Wes>At least tell us what we like and don't like about doing it.

01:05:48.443 --> 01:05:51.653
<v Chris>How do you handle the intro and the outro? Do you do the outro at the beginning?

01:05:51.653 --> 01:05:54.993
<v Chris>Because that would really screw with new folks. Like, you lose them immediately.

01:05:54.993 --> 01:05:57.363
<v Brent>Oh, go for it. Come on. What's one episode?

01:05:57.363 --> 01:06:00.702
<v Chris>I don't know. I think if we could, the intro is the only thing.

01:06:00.858 --> 01:06:05.203
<v Chris>We need some input on that, but I would totally be down for a reverso episode. That could be fun.

01:06:05.203 --> 01:06:09.063
<v Brent>No, it works perfectly. You start and you say, about the same bat time,

01:06:09.063 --> 01:06:13.183
<v Brent>same bat channel, you know, make it a Linux on a Tuesday, on a Sunday, and join us Sunday.

01:06:13.183 --> 01:06:14.802
<v Chris>But then we play the outro music in what?

01:06:16.369 --> 01:06:17.503
<v Wes>No, it starts with the outro music.

01:06:17.503 --> 01:06:18.093
<v Brent>We'll figure it out.

01:06:20.433 --> 01:06:22.753
<v Wes>I don't think we will. And then you intro the show at the end.

01:06:22.753 --> 01:06:23.753
<v Chris>I think we need help.

01:06:24.073 --> 01:06:25.213
<v Brent>Drew will save us.

01:06:25.573 --> 01:06:28.013
<v Chris>Oh, yeah, sure. Yeah. All right. Okay, very good.

01:06:28.013 --> 01:06:31.673
<v Wes>But in the meantime, JSON. It's in the cloud and in the feed.

01:06:31.673 --> 01:06:37.083
<v Wes>We put JSON in our XML, but then we also put like text in there in the form of a VTT.

01:06:37.083 --> 01:06:38.498
<v Chris>That's true. So you can have it either way.

01:06:38.643 --> 01:06:43.333
<v Wes>And we put in a link. It's not the whole MP4 but there's a link to an MP4 embedded within.

01:06:43.333 --> 01:06:46.783
<v Chris>Yeah. So you could watch it in video version and you may be surprised there's

01:06:46.783 --> 01:06:50.693
<v Chris>visuals but because we're such effing pros you can just listen to the audio

01:06:50.693 --> 01:06:53.823
<v Chris>version and it never detracts from that to such a degree you wouldn't even know

01:06:53.823 --> 01:06:56.911
<v Chris>there's a video version. How about that? Ha!

01:06:57.914 --> 01:07:01.943
<v Chris>So yeah, you can find that MP4 in the feed as well and our Mumble Room is always

01:07:01.943 --> 01:07:05.583
<v Chris>going every single Sunday. So do join us live. It's fun. It's unique.

01:07:05.583 --> 01:07:06.854
<v Chris>And not a lot of podcasts do it.

01:07:11.540 --> 01:07:14.419
<v Chris>And, of course, links to everything we talked about at our website,

01:07:14.419 --> 01:07:17.969
<v Chris>linuxunplugged.com. And the back catalog and all the other great shows over

01:07:17.969 --> 01:07:20.989
<v Chris>at jupiterbroadcasting.com. As long as you want to check it out,

01:07:20.989 --> 01:07:24.044
<v Chris>you might as well go to the calendar. It's over there in a contact page as well.

01:07:25.152 --> 01:07:28.359
<v Chris>Would you believe it? And last but not least, you can get a message and support

01:07:28.359 --> 01:07:32.309
<v Chris>the show at boost.jupiterbroadcasting.com. And you members, don't you forget

01:07:32.309 --> 01:07:36.623
<v Chris>you get a free boost every single episode because we appreciate you so much.

01:07:36.826 --> 01:07:38.626
<v Chris>In fact, we appreciate you just for listening.

01:07:38.852 --> 01:07:42.521
<v Chris>Thank you so much for listening to this week's episode of your Unplugged program.

01:07:42.730 --> 01:07:43.560
<v Chris>And you know what we're going to do?

01:07:44.071 --> 01:07:46.809
<v Chris>We're going to work on a show right after this, get cooking on another one,

01:07:46.809 --> 01:07:50.828
<v Chris>and we're going to see you right back here next Tuesday, as in Sunday.

